LVM Grundlagen: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| Zeile 187: | Zeile 187: | ||
==Physical Volume leeren oder verschieben== | ==Physical Volume leeren oder verschieben== | ||
*Es muss genügend freier Platz auf den restlichen Physical Volumes vorhanden sein! | *Es muss genügend freier Platz auf den restlichen Physical Volumes vorhanden sein! | ||
;pvmove schiebt die Daten weg vom Device | |||
*pvmove /dev/sdb1 | *pvmove /dev/sdb1 | ||
/dev/sdb1: Moved: 0,51% | /dev/sdb1: Moved: 0,51% | ||
Aktuelle Version vom 21. Oktober 2026, 10:01 Uhr
Schaubild
Animation zum Durchklicken: LVM in der Praxis
Was ist LVM
- LVM steht für Logical Volume Manager.
- Es ist ein Verfahren, um Speicherplatz auf mehreren Festplatten dynamisch zu verwalten.
- Es bildet eine zusätzliche logische Schicht zwischen Dateisystem und Partitionen.
- LVM bietet die Möglichkeit, mehrere Partitionen logisch zusammenzufassen (Volume Group)
- und in diesem logischen Verbund neue „logische Partitionen“ (Logical Volume) anzulegen.
- Der Volume Group können dynamisch weitere Geräte hinzugefügt werden, wodurch sich der verfügbare Speicherplatz erhöht.
- Freier Speicherplatz kann ebenfalls dynamisch den Logical Volumes zugewiesen werden.
- Dadurch erreicht man eine höhere Flexibilität als mit einem klassischen Partitionierungsansatz.
- Dies ist vor allem interessant für Server, bei denen dynamisch auf das Wachsen der Datenbestände reagiert werden muss.
- Vier Begriffe sind beim LVM essentiell und sollen zunächst erklärt werden:
- Physical Extent, Physical Volume, Volume Group und Logical Volume.
Physical Extent
- Das Physical Extent (PE) ist die kleinste Einheit, in der LVM Speicher vergibt.
- Ein Logical Volume besteht immer aus einer ganzen Zahl von Extents; seine Größe wird auf ein Vielfaches der PE-Größe gerundet.
- Die PE-Größe wird beim Anlegen der Volume Group festgelegt (
vgcreate -s), Standard sind 4 MiB. Nachträglich lässt sie sich mitvgchange -snur eingeschränkt ändern. - Die Anzahl der PEs ist seit LVM2 nicht mehr begrenzt.
Physical Volume
- Ein Physical Volume (PV) ist der eigentliche Datenspeicher eines LVMs.
- Ein PV kann eine Partition, ein ganzes Laufwerk, ein RAID-Array oder ein Loop-Gerät sein.
Volume Group
- Eine Volume Group (VG) ist ein Speicherpool aus einem oder mehreren PVs. Ihr Platz ist in Physical Extents eingeteilt.
Logical Volume
- Ein Logical Volume (LV oder auch Volume) ist im LVM-Kontext für den Anwender eine Art Partition innerhalb einer Volume Group.
- Es ist nicht möglich, Logical Volumes außerhalb einer VG zu erstellen.
- Das LV kann wie eine normale Partition verwendet werden,
- d. h. es können Dateisysteme darauf angelegt werden und es kann gemountet werden.
- Ein LV muss nicht zusammenhängend liegen: Es kann aus mehreren Stücken (Segmenten) auf verschiedenen PVs bestehen.
LVM einrichten
Installation
- apt install lvm2
Um ein LVM einzurichten, muss zuerst jede zu verwendende Partition mittels pvcreate als Physical Volume initialisiert werden.
Alle Physical Volumes werden dann mittels vgcreate zu einer Volume Group zusammengefasst. In dieser Gruppe können nun
mittels lvcreate die Logical Volumes erzeugt werden.
Für jedes Logical Volume legt LVM die Gerätedatei /dev/<group>/<vol> an, dazu /dev/mapper/<group>-<vol> – beide zeigen auf dasselbe Gerät. Das Logical Volume kann verwendet werden wie
jedes andere Block-Device. So kann ein Dateisystem darauf erzeugt und eingebunden werden.
Hinweis:
Den Partitionstyp 0x8e (MBR) bzw. 8e00 (GPT, „Linux LVM“) setzt man zur Kennzeichnung. LVM selbst erkennt seine Physical Volumes am LVM-Label auf dem Gerät, nicht am Partitionstyp – pvcreate funktioniert auch auf Typ 83.
Vorbereiten der Physical Volumes
In diesem Beispiel hat /dev/sdb vier Partitionen zu je 6 GiB. Zunächst werden drei davon verwendet.
- pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. Physical volume "/dev/sdb3" successfully created.
Erstellen der Volumegroup
- vgcreate daten /dev/sdb1 /dev/sdb2 /dev/sdb3
Volume group "daten" successfully created
Erstellen der Logical Volumes
- lvcreate -L 5G -n misc daten
Logical volume "misc" created.
- lvcreate -L 1G -n video daten
Logical volume "video" created.
Mit kleinem -l gibt man Extents oder Prozentangaben an. 100%FREE nimmt den restlichen Platz:
- lvcreate -l 100%FREE -n audio daten
Logical volume "audio" created.
Formatieren der Logical Volumes
- mkfs.ext4 /dev/daten/misc
- mkfs.ext4 /dev/daten/video
- mkfs.ext4 /dev/daten/audio
Verwenden der Logical Volume
Einbinden der LV in das Dateisystem
- Mountpunkte erstellen
- mkdir -v /mnt/{misc,video,audio}
- Mounten
- mount /dev/daten/misc /mnt/misc
- mount /dev/daten/video /mnt/video
- mount /dev/daten/audio /mnt/audio
Kontrolle, z. B. durch Anzeigen des freien Speichers
- df -h | grep mapper
/dev/mapper/daten-misc 4,9G 24K 4,6G 1% /mnt/misc /dev/mapper/daten-video 974M 24K 907M 1% /mnt/video /dev/mapper/daten-audio 12G 24K 11G 1% /mnt/audio
In der fstab trägt man das LV als /dev/mapper/daten-misc oder /dev/daten/misc ein – anders als bei /dev/sdb1 ändern sich diese Namen nicht.
Erweitern einer Volume Group
- pvcreate /dev/sdb4
- vgextend daten /dev/sdb4
Volume group "daten" successfully extended
Anzeigen der vergrößerten Volume Group
- vgs
VG #PV #LV #SN Attr VSize VFree daten 4 3 0 wz--n- <23,98g <6,00g
Vergrößern des Logical Volumes
Auf eine feste Größe:
- lvextend -L 3G /dev/daten/video
oder um 2 GiB vergrößern:
- lvextend -L +2G /dev/daten/video
Size of logical volume daten/video changed from 1,00 GiB (256 extents) to 3,00 GiB (768 extents). Logical volume daten/video successfully resized.
Das LV ist jetzt größer, das Dateisystem darauf noch nicht.
Vergrößern des Dateisystems online
Anzeigen des momentanen Status
- df -h /mnt/video
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf /dev/mapper/daten-video 974M 24K 907M 1% /mnt/video
Vergrößern
ext4 lässt sich im eingehängten Zustand vergrößern:
- resize2fs /dev/daten/video
resize2fs 1.47.2 (1-Jan-2025) Filesystem at /dev/daten/video is mounted on /mnt/video; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/daten/video is now 786432 (4k) blocks long.
Anzeigen des momentanen Status
- df -h /mnt/video
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf /dev/mapper/daten-video 2,9G 24K 2,8G 1% /mnt/video
LV und Dateisystem in einem Schritt
Mit -r (--resizefs) vergrößert lvextend das Dateisystem gleich mit – für ext4 ebenso wie für XFS:
- lvextend -r -L +2G /dev/daten/video
Bei XFS heißt das Werkzeug sonst xfs_growfs und bekommt den Mountpunkt: xfs_growfs /mnt/video.
Vergrößern des Logical Volumes auf Maximalwert
- lvextend -r -l +100%FREE /dev/daten/audio
Löschen eines Logical Volumes
- umount /mnt/misc
- lvremove /dev/daten/misc
Do you really want to remove active logical volume daten/misc? [y/n]: y Logical volume "misc" successfully removed.
Verkleinern
Reihenfolge ist entscheidend: erst das Dateisystem verkleinern, dann das Logical Volume. Andersherum schneidet lvreduce dem Dateisystem das Ende ab – die Daten dort sind verloren. XFS lässt sich gar nicht verkleinern.
Der sichere Weg: beides in einem Schritt
lvreduce -r prüft und verkleinert zuerst das Dateisystem und danach das LV:
- umount /mnt/video
- lvreduce -r -L 2G /dev/daten/video
Von Hand: Dateisystem verkleinern
- umount /mnt/video
- e2fsck -f /dev/daten/video
e2fsck 1.47.2 (1-Jan-2025) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/daten/video: 11/196608 files (0.0% non-contiguous), 31152/786432 blocks
- resize2fs /dev/daten/video 2G
resize2fs 1.47.2 (1-Jan-2025) Resizing the filesystem on /dev/daten/video to 524288 (4k) blocks. The filesystem on /dev/daten/video is now 524288 (4k) blocks long.
Von Hand: Logisches Volume verkleinern
Auf dieselbe Größe wie das Dateisystem, nie kleiner:
- lvreduce -L 2G /dev/daten/video
WARNING: Reducing active logical volume to 2,00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce daten/video? [y/n]: y Size of logical volume daten/video changed from 3,00 GiB (768 extents) to 2,00 GiB (512 extents). Logical volume daten/video successfully resized.
- mount /dev/daten/video /mnt/video
- lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert audio daten -wi-ao---- 15,98g video daten -wi-ao---- 2,00g
Physical Volume entfernen
Physical Volume leeren oder verschieben
- Es muss genügend freier Platz auf den restlichen Physical Volumes vorhanden sein!
- pvmove schiebt die Daten weg vom Device
- pvmove /dev/sdb1
/dev/sdb1: Moved: 0,51% /dev/sdb1: Moved: 100,00%
pvmove arbeitet im laufenden Betrieb; die Dateisysteme bleiben eingehängt.
Physical Volume aus der VG entfernen
- vgreduce daten /dev/sdb1
Removed "/dev/sdb1" from volume group "daten"
LVM-Label entfernen
- pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
LV auflösen
Umounten
- umount /mnt/{video,audio}
Löschen der Logical Volumes
lvremove fragt nach und deaktiviert das LV selbst; ein vorheriges lvchange -a n ist nicht nötig.
- lvremove /dev/daten/video
- lvremove /dev/daten/audio
VG auflösen
Stoppen
- vgchange -a n daten
Entfernen
- vgremove daten
PV auflösen
- pvremove /dev/sdb[2-4]
Physical Volume vergrößern
Typischer Fall: Die virtuelle Platte einer VM wurde vergrößert, auf ihr liegt die Partition /dev/sda5 als PV. Erst die Partition vergrößern, dann das PV, dann das LV samt Dateisystem:
- growpart /dev/sda 5
- pvresize /dev/sda5
Physical volume "/dev/sda5" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized
- lvextend -r -l +100%FREE /dev/vg_test/root
Size of logical volume vg_test/root changed from <241,52 GiB (61829 extents) to <341,52 GiB (87429 extents). Logical volume vg_test/root successfully resized. resize2fs 1.44.5 (15-Dec-2018) Dateisystem bei /dev/mapper/vg_test-root ist auf / eingehängt; Online-Größenänderung ist erforderlich old_desc_blocks = 31, new_desc_blocks = 43 Das Dateisystem auf /dev/mapper/vg_test-root ist nun 89527296 (4k) Blöcke lang.
growpart stammt aus dem Paket cloud-guest-utils (Debian) bzw. cloud-utils-growpart (Rocky). Liegt das PV direkt auf der ganzen Platte, entfällt dieser Schritt.
Kurzinfos
Die Ausgaben zeigen den Stand nach dem Erweitern um /dev/sdb4 und dem Vergrößern von video und audio.
Informationen über Physical Volumes abfragen
- pvs
PV VG Fmt Attr PSize PFree /dev/sdb1 daten lvm2 a-- <6,00g 0 /dev/sdb2 daten lvm2 a-- <6,00g 0 /dev/sdb3 daten lvm2 a-- <6,00g 0 /dev/sdb4 daten lvm2 a-- <6,00g 0
Informationen über Volume Groups abfragen
- vgs
VG #PV #LV #SN Attr VSize VFree daten 4 3 0 wz--n- <23,98g 0
Informationen über Logical Volumes abfragen
- lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert audio daten -wi-ao---- 15,98g misc daten -wi-ao---- 5,00g video daten -wi-ao---- 3,00g
Wo die Extents eines LV tatsächlich liegen, zeigt:
- lvs -o +devices
- pvdisplay -m /dev/sdb4
Detailierte Infos
Beispielausgaben eines anderen Standes: vier PVs zu 6 GiB, vollständig belegt mit misc (5 GiB), video (7 GiB) und audio (11,98 GiB).
Informationen über Physical Volumes abfragen
- pvdisplay
--- Physical volume --- PV Name /dev/sdb1 VG Name daten PV Size 6.00 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 1535 Free PE 0 Allocated PE 1535 PV UUID bFu5lR-NZCh-3JXc-Ri4y-TcIB-Nkr3-tjGyrg --- Physical volume --- PV Name /dev/sdb2 VG Name daten PV Size 6.00 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 1535 Free PE 0 Allocated PE 1535 PV UUID VNJGe3-nI7c-4mOi-qmqE-EZqL-epXP-1i7qy1 --- Physical volume --- PV Name /dev/sdb3 VG Name daten PV Size 6.00 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 1535 Free PE 0 Allocated PE 1535 PV UUID HbDzxt-2cLa-L1jh-Cen8-8DbB-aW1y-3Ps72S --- Physical volume --- PV Name /dev/sdb4 VG Name daten PV Size 6.00 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 1535 Free PE 0 Allocated PE 1535 PV UUID W2Cg8y-Rw1j-ANyZ-T6AS-55tD-zR11-tKLY2M
Informationen über Volume Groups abfragen
- vgdisplay
--- Volume group --- VG Name daten System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 9 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 4 Act PV 4 VG Size 23.98 GiB PE Size 4.00 MiB Total PE 6140 Alloc PE / Size 6140 / 23.98 GiB Free PE / Size 0 / 0 VG UUID vxYO0U-hfOW-A6BC-vzdl-B6lm-c9yR-3PFcVx
Informationen über Logical Volumes abfragen
- lvdisplay
--- Logical volume --- LV Path /dev/daten/misc LV Name misc VG Name daten LV UUID XxGoSt-VMGt-tP9b-P8b2-SeI4-6QHQ-mfyyXT LV Write Access read/write LV Creation host, time debian13.sec-labs.de, 2026-08-26 11:31:37 +0200 LV Status available # open 1 LV Size 5.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/daten/video LV Name video VG Name daten LV UUID 8GtlnY-wkEb-8jBx-Jw3P-4cet-xNEh-0sZg3y LV Write Access read/write LV Creation host, time debian13.sec-labs.de, 2026-08-26 11:32:07 +0200 LV Status available # open 1 LV Size 7.00 GiB Current LE 1792 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Path /dev/daten/audio LV Name audio VG Name daten LV UUID UvJjbN-cFBu-ZIRN-r71e-pade-CoKn-LoeJpv LV Write Access read/write LV Creation host, time debian13.sec-labs.de, 2026-08-26 11:32:38 +0200 LV Status available # open 1 LV Size 11.98 GiB Current LE 3068 Segments 4 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2
Segments 2 bei video heißt: Das LV liegt in zwei getrennten Stücken, etwa nach einem lvextend, als hinter dem ersten Stück kein Platz mehr frei war.
Aufgaben zu: lvm
- Installieren Sie das entsprechende Paket zur LVM-Verwaltung.
- Partitionieren Sie /dev/sdd mit drei Partitionen zu je 8 GiB, Typ 8e (MBR) bzw. 8e00 (GPT).
- Bereiten Sie zwei dieser Partitionen zur Verwendung mit dem LVM vor.
- Erstellen Sie eine Volume Group mit dem Namen "daten" aus diesen zwei Partitionen.
- Erstellen Sie ein Logical Volume mit dem Namen "speicher" (z. B. 10 GiB) und formatieren Sie es.
- Mounten Sie das Logical Volume an /daten/speicher.
- Kopieren Sie /usr/bin nach /daten/speicher.
- Lassen Sie sich die Größe des Logical Volumes und den freien Platz im Dateisystem anzeigen.
- Prüfen Sie das Dateisystem des Logical Volumes auf Fehler.
- Bereiten Sie die dritte Partition zur Verwendung mit dem LVM vor.
- Erweitern Sie die Volume Group mit dieser Partition.
- Vergrößern Sie das Logical Volume um 5 GiB.
- Vergrößern Sie das Dateisystem des Logical Volumes – im eingehängten Zustand.
- Lassen Sie sich Größe und freien Platz erneut anzeigen.
- Verkleinern Sie das Dateisystem sowie das Logical Volume selbst auf 12 GiB.
- Überprüfen Sie die erfolgte Verkleinerung.
- Verkleinern Sie die Volume Group, um eine Partition herauslösen zu können.
- Überprüfen Sie die Entnahme der Partition.
