LVM Logical Volume Manager

Aus Doku-Wiki
Zur Navigation springenZur Suche springen

Anmerkung

LVM ist die Abkürzung für »Logical Volume Manager«. LVM lässt sich eine logische Schicht zwischen Dateisystem und der Partition einer physikalischen Festplatte schieben. So ist es möglich, ein Dateisystem über mehrere Partitionen und Festplatten zu strecken.

Version

  • Debian 5.0 Lenny
  • LVM (Debian origina Pakete)

Links

Installation

aptitude install lvm2

Konfiguration

/etc/lvm/lvm.conf

Als erstes müssen wir die Konfiguration (/etc/lvm/lvm.conf) von LVM2 anpassen, da sie standardmässig jedes Gerät zulässt.

vi /etc/lvm/lvm.conf

Nun die Zeile

filter = [ "a/.*/" ]

durch diese ersetzen.

filter = [ "a|^/dev/sd[bcdefghijklmnopqrst]|", "r/.*/" ]

Was passiert hier? In diesem Beispiel werden die Geräte sdb bis sdt zugelassen. Hier noch ein paar Beispiele:

filter = [ "a|^/dev/sdb|", "r/.*/" ]   // nur das Geräte sdb
filter = [ "a|^/dev/hda7|", "r/.*/" ]  // nur das Geräte hda7

Einrichten

  • LVM basiert auf drei Stufen:
  1. Physical Volume (Festplatte, Partition)
  2. Volume Group (Gruppe mehrerer Festplatten, Partitionen)
  3. Logical Volume [Virtuelle Partition die aus mehreren Volume Groups bestehen kann]

Physical Volume einrichten

Partition anlegen

  • Hier wird eine (oder auch mehrere) Partition(en) mit dem Type 8e (LVM) angelegt.
cfdisk /dev/sdb

Nachdem der Schritt für alle verwendet Partitionen durchgeführt wurde, können diese eingebunden werden.

vgscan

Mit vgscan werden vorhandene Partitionen gesucht.

vgscan -v

Pysical Volume anlegen

  1. pvcreate /dev/sdb1
 Physical volume "/dev/sdb1" successfully created
  1. pvcreate /dev/sdc1
 Physical volume "/dev/sdc1" successfully created

Volume Group einrichetn

Die Volume-Group stellt ein Speicherpool dar in dem Pysical Volumes eingebunden werden. Beim anlegen wird ein Name für die Volume-Group vergeben.

# vgcreate volgr1 /dev/sdb1 /dev/sdc1
  Volume group "volgr1" successfully created

Logical Volume

LV einrichetn

Nun kann man mit der gesamten Volume Group volg1, oder auch nur mit einem Teil davon ein Logical Volume erstellen. Zum Kommando lvcreate muss man die gewünschte Größe, den Namen von dem Logical Volume und die Volume Group angeben. Hier wird der Name logv1 und die Größe 1000 MByte verwendet:

# lvcreate -n logvol1 -L 1000M volgr1
 Logical volume "logvol1" created
  • Dieses Logical Volume muss nun noch formatiert und in das Filesystem eingebunden werden.

LV formatieren und mounten

Wie bei herkömmliche Partitionen wird nun das LV formatiert. Hier z.B mitext3:

# mkfs.ext3 /dev/volgr1/logvol1

Jetzt kann das LV in das Filesystem eingebunden werden:

# mount /dev/volgr1/logvol1 /testvolume/

Umgang mit LVM

Volume Groupe

vgdisplay

# vgdisplay /dev/volgr1
 --- Volume group ---
 VG Name               volgr1
 System ID
 Format                lvm2
 Metadata Areas        2
 Metadata Sequence No  2
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                1
 Open LV               1
 Max PV                0
 Cur PV                2
 Act PV                2
 VG Size               3,99 GB
 PE Size               4,00 MB
 Total PE              1022
 Alloc PE / Size       250 / 1000,00 MB
 Free  PE / Size       772 / 3,02 GB
 VG UUID               4qdUw9-oPce-j8aO-E0iQ-rkIh-6ITV-ZqCFl2

Volume Group erweitern

# cfdisk /dev/sdd
# pvcreate /dev/sdd
   Physical volume "/dev/sdd" successfully created
# vgextend volgr1 /dev/sdd1
 Volume group "volgr1" successfully extended
# vgdisplay /dev/volgr1

Volume Group verkleinern

Mit vgreduce kann eine Volume-Group verkleinert werden.

  • Der folgende Befehl reduziert die Volume-Group und entfernt alle ungenutzten pysikalischen Volumes
# vgreduce -a volgr1
    Physical volume "/dev/sdb1" still in use
    Removed "/dev/sdc1" from volume group "volgr1"
    Removed "/dev/sdd1" from volume group "volgr1"
  • Man kann auch geziehlt einzelne pysikalische Volumes entfernen solange sie keine Daten enthalten. Mit pwdisplay kann man das überprüfen.
# pvdisplay /dev/sdd1
 --- Physical volume ---
 PV Name               /dev/sdd1
 VG Name               volgr1
 PV Size               2,00 GB / not usable 3,32 MB
 Allocatable           yes
 PE Size (KByte)       4096
 Total PE              511
 Free PE               511
 Allocated PE          0
 PV UUID               fPrPhA-rMoP-jeqd-tzaC-Ny4g-VKJO-SjBzgx

# vgreduce volgr1 /dev/sdd1

Logical Volume

LV erweitern

# lvextend -L 6000 /dev/volgr1/logvol1
  • Dann auf Filesystemeben die Partition erweitern
# umount /testvolume
# e2fsck -f /dev/volgr1/logvol1
# resize2fs /dev/volgr1/logvol1
  The filesystem on /dev/hdb11 is now 512064 blocks long.

Informationen auslesen

Pysikalischen Partitionen anzeigen

pvdisplay 
pvdisplay /dev/sdc1

Scan PV, VG und LV

pwscan  // Zeigt die verwendetet Partitionen und Ihre Belegung
vgscan  // Scannt nach Volume-Groups und legt einen Cache der Infos an
lvscan  // Scannt nach logischen Volumes

Volum-Groups anzeigen

vgdisplay
vgdisplay volgr1

Logische Volumes anzeigen

lvdisplay
lvdisplay /dev/volgr1/logvol1

Filesystem anlegen

Das logische Volume muss noch Formatiert werden. Folgen ein Beispiel für XPS:

 mkfs -t xfs -f /dev/volgr1/logvol1

Links zu XFS

Beispiele

  1. LV - Logical Volume
  2. VG - Volume-Group
  3. PV - Pysical-Volume

LV und VG löschen dann die PV in bestehnde VG und LV einbinden

Erläuterung: Es bestehen zwei Logical Volume auf einem Server. Hinter jeder Logical Volume steht eine SAN. Nun soll das ein Logical Volume aufgelöst werden um mit den freiwerdenden Partitionen die zweite Volume-Group zu erweitern. Als Filesystem wird XFS verwendet.

umount der LV

umount /[VERZ-Voulum-Group]

Nicht vergessen, den eintrage in der /etcTfstab zu löschen

LV löschen

lvdisplay
lvremove /dev/volgr2/logvol2

VG löschen

vgdisplay
vgremove /dev/volgr2

Frei geworden PV anzeigen

  • Anzeigen der PV. Bei nicht zugeordneten PVs ist der VG Name leer
pvdisplay | less

 PV Name               /dev/sdp1
 VG Name
 PV Size               8,00 GiB
 Allocatable           NO
 PE Size               0
 Total PE              0
 Free PE               0
 Allocated PE          0
 PV UUID               mkYMhD-rWCh-J4w5-wujK-DmP2-dtRr-dhdTFu

Freie PVs zu der VG hinzufügen

vgextend volgr1 /dev/sdl1
vgextend volgr1 /dev/sdm1
vgextend volgr1 /dev/sdn1
vgextend volgr1 /dev/sdo1
vgextend volgr1 /dev/sdp1

pvdisplay | less

LV erweitern

  • Die VG hat nun mehr Speicher. Jetz kann das LV erweitert werden. Hier kann man entwerde die Gesamtgröße angeben, die das LV haben soll oder man gibt nur den neu hizugekommenen Speicherplatz an.
* Gesamtgröße
lvextend -L 1240[G|T] /dev/vlgr/lgvol  || G=Giga T= Tera
* Neu hizugefügter Speicherplatz
lvextend -L +40[G|T] /dev/vlgr/lgvol   || G=Giga T= Tera

Das Dateisystem vergrößern

  • Im Bespiel mit XFS
xfs_growfs /MOUNTPOINT
  • Um den unterschied zu sehen kann man vor und nach diesem Befehl ein df setzen
df -h               | oder
df --block-size=1M  | oder
df --block-size=1G  | oder
df --block-size=1T  | 

Große Partitionen vorbereiten

Mit parted können sehr große Partitionen angelegt werden die mit den üblichen Programmen (fdisk, cfdisk) nicht angelegt werden können.

  • Festplatte mit parted öffnen
parted /dev/sdx
  • neues Disklabel erstellen
mktable gpt
  • Ganze Platte verwenden (block 1 bis zum letzten -1)
mkpart primery 1 -1
  • Setzt den Status der Partition 1
set 1 lvm on
  • Parted beenden
quit