LVM Logical Volume Manager
Inhaltsverzeichnis
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
- Linux LVM HOWTO
- Diese Doku wurde mit Hilfe des Linux LVM HOWTO erstellt.
- Teile der Texte sind aus dem LINUX LVM HOWTO kopiert
- HowTo Softwareraid 1 mit LVM
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:
- Physical Volume (Festplatte, Partition)
- Volume Group (Gruppe mehrerer Festplatten, Partitionen)
- 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
- pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
- 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
- LV - Logical Volume
- VG - Volume-Group
- 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