LVM Grundlagen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
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

lvm-1

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 mit vgchange -s nur 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.