21x9.org | System Administration | Home Automation | Smart Home
12.07.2023

Logical Volume Manager (LVM)

LVM (Logical Volume Manager) erlaubt im Grunde die flexiblere Verwaltung von "Partitionen" einer Festplatte. Anstatt die Partitionen beim Einrichten eines Datenträgers (z.B. mittels fdisk) einmal - mehr oder weniger - fix festzulegen, erzeugt man mit LVM sog. Volume Groups (VG). Eine solche Volume Group kann mehrere physikalische Datenträger umfassen1. Innerhalb der Volume Groups werden dann die eigentlichen Logical Volumes (LV) erzeugt. Diese können dann wie physikalische Datenträger behandelt und mit beliebigen Dateisystemen versehen werden.

Ein weiteres Feature von LVM sind sog. Snapshots. Ein Snapshot friert den Zustand des Dateisystems zum Zeitpunkt der Erstellung des Snapshots quasi ein. Die Daten im Snapshot verändern sich nicht mehr. Technisch funktioniert dies über das sog. Copy on write2. Dies ist sehr hilfreich um konsistente Backups erstellen zu können.

Einrichtung

Die VG(s) und ersten LVs richtet man bestenfalls bereits bei der Installation von Debian mittels debian-installer ein. Nachträglich ist es eigentlich nur bei neuen, zusätzlichen Datenträgern sinnvoll, diese können entweder einer bestehenden VG hinzugefügt oder für eine ganz neue VG genutzt werden.

Da LVM unterhalb des Dateisystems agiert, müssen die Datenträger neu formatiert werden. Hierbei gehen alle Daten auf den jeweiligen Datenträgern verloren.

Physical Volumes

Bevor man Datenträger mit LVM verwalten kann, müssen sie mit dem Befehl pvcreate3 für die Verwendung vorbereitet werden:

pvcreate /dev/sd[X]

Volume Groups

Um eine Volume-Group zu erzeugen wird der Befehl vgcreate4 genutzt:

vgcreate -n <VGNAME> /dev/sd[X] [/dev/sd[X], /dev/sd[X]]

<VGNAME> wird durch den gewünschten Namen der Volume Group ersetzt (z.B. vg1). Mittels vgdisplay kann man sich die vorhandenen VGs anzeigen lassen:

  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  143
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <450.24 GiB
  PE Size               4.00 MiB
  Total PE              115261
  Alloc PE / Size       109195 / 426.54 GiB
  Free  PE / Size       6066 / <23.70 GiB
  VG UUID               Wpoj93-0L3O-CMHW-c5oQ-g37D-zy1c-WCyIbH

[!TIP] Es sollte immer ein gewisser freier Speicherplatz vorhanden bleiben. Zum einen ist man so flexibel, wenn sich Anforderungen an das System ändern und z.B. eine neue "Partition" für bestimmte Daten sinnvoll würde. Aber auch für die Nutzung von Snapshots wird freier Speicherplatz in der VG benötigt.

Logical Volumes

Innerhalb der VGs können LVs angelegt werden. Dies erfolgt mit dem Befehl lvcreate5:

lvcreate -L <X>G vg1

<X>G gibt die Größe des Volumes in Gigabyte an. Mit dem Befehl lvdisplay können die vorhandenen Volumes angezeigt werden:

  --- Logical volume ---
  LV Path                /dev/vg1/data
  LV Name                data
  VG Name                vg1
  LV UUID                1LgNPe-J1ge-K5Kv-e81W-tP8Z-8utM-f13nLF
  LV Write Access        read/write
  LV Creation host, time (none), 2023-06-08 02:49:42 +0200
  LV Status              available
  # open                 1
  LV Size                <922.01 GiB
  Current LE             236034
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:4

Snapshots

Wie bereits erwähnt sind Snapshots u.a. bei der Erzeugung von Backups sehr praktisch. Normalerweise müsste man für ein konsistentes Backup z.B. einer Datenbank spezielle Tools nutzen, die sicherstellen, dass während des Backups keine Änderungen an den gerade zu kopierenden Daten vorgenommen werden. Eine Datei deren Anfang nicht um Ende passt, hat schließlich wenig Wert. Ein Snapshot macht die Nutzung spezieller Tools überflüssig und kann so das Backup erheblich vereinfachen.

Ein Snapshot wird mit dem Befehl lvcreate erzeugt:

lvcreate -l100%FREE -s -n backup-snapshot /dev/<VG>/<LV>

Der Parameter -l100%FREE sorgt dafür, dass 100% des freien Speicherplatzes in der angegebenen <VG> für den Snapshot genutzt werden. Alternativ kann auch eine feste Größe angegeben werden:

lvcreate -L 1G -s -n backup-snapshot /dev/<VG>/<LV>

In diesem Beispiel wird ein Snapshot mit einer Größe von einem Gigabyte erzeugt. In beiden Beispielen trägt der Snapshot den Namen backup-snapshot. Er kann mit folgenden Befehl eingebunden werden:

mkdir -p /mnt/snapshot/<LV>
mount /dev/<VG>/backup-snapshot /mnt/snapshot/<LV>

Der Inhalt von /mnt/snapshot/<LV> kann dann mit einen beliebigen Backuptool gesichert werden. Nach Abschluss des Backups kann (und sollte) der Snapshot wieder entfernt werden:

umount /mnt/snapshot/<LV>
lvremove -f /dev/<VG>/backup-snapshot

Die Größe des Snapshots sollte so gewählt werden, dass genügend Speicherplatz für alle Daten vorhanden ist, die ggf. während der gesamten Backupdauer beschrieben werden. Läuft der Snapshot über, kann er gemäß der Einstellungen in /etc/lvm/lvm.conf6 7 automatisch vergrößert werden, bis kein weiterer Speicherplatz in seiner VG verfügbar ist. Ist kein Speicherplatz mehr vorhanden, wird er "gedropped" und kann nicht weiter genutzt werden.


  1. Ich nutze diese Möglichkeit in der Regel nicht, da es bei der späteren Nutzung nicht sonderlich transparent ist, welche Daten sich auf welchem physikalischen Datenträger befinden. ↩

  2. https://de.wikipedia.org/wiki/Copy-On-Write ↩

  3. https://man7.org/linux/man-pages/man8/pvcreate.8.html ↩

  4. https://man7.org/linux/man-pages/man8/vgcreate.8.html ↩

  5. https://man7.org/linux/man-pages/man8/lvcreate.8.html ↩

  6. snapshot_autoextend_threshold  ↩

  7. snapshot_autoextend_percent ↩

Tags: linux lvm lvcreate vgcreate lvdisplay snapshots

Mehr

  • ZFS
  • Flexible, bootfähige USB-Sticks mit Ventoy
  • Heimserver mit Debian
  • Backups mit Borg und ZFS/LVM Snapshots
  • Aufräumarbeiten nach Scriptabbrüchen

Tags

linux lvm lvcreate vgcreate lvdisplay snapshots

Archiv

  • Mar 2025 (2)
  • May 2024 (2)
  • Oct 2023 (1)
  • Aug 2023 (5)
  • Jul 2023 (31)

  • Ältere Einträge (95)

Feeds

Atom 1.0 RSS JSON
  • Datenschutz
  • Impressum
  • Archiv