LVM (Logical Volume Manager) ist eine Abstraktionsschicht für Speicher unter Linux. Sie schiebt sich zwischen die physischen Datenträger und das Dateisystem und erlaubt, Volumes dynamisch zu vergrößern, zu verkleinern, zu spiegeln und mit Snapshots zu versehen – Vorgänge, die auf einer klassischen Partition nur mit umständlichen Werkzeugen möglich sind.
Die drei Ebenen
- Physical Volume (PV): ein Datenträger oder eine Partition, die LVM verwaltet – etwa
/dev/sdb1. Sie wird mitpvcreatevorbereitet. - Volume Group (VG): der Pool aus einem oder mehreren PVs. Freier Platz in einer VG lässt sich frei verteilen, ohne an die Grenzen einzelner Platten gebunden zu sein.
- Logical Volume (LV): das logische Volume, das als Blockgerät erscheint (
/dev/vg0/data) und ein Dateisystem trägt.
Diese Trennung ist der eigentliche Vorteil: Speicher ist nicht mehr an eine feste Platte gebunden, sondern an einen Pool.
Wichtige Spielarten
- Thin Provisioning: LVs werden mit einer größeren nominellen Größe angelegt, als physisch vorhanden ist; Speicher wird erst bei Schreiben zugeteilt. Voraussetzung für viele Snapshots und die Grundlage der Snapshot-Funktion in Proxmox VE.
- Snapshots: ein sofortiger, kostengünstiger Zustandspunkt über Copy-on-Write. Ideal vor Updates – aber ein Snapshot ist kein Backup: Er liegt auf denselben Datenträgern und stirbt mit ihnen.
- RAID über LVM: LVM kann Volumes spiegeln (
raid1), streifen (raid0) oder mit Parität schützen (raid5,raid6). Für reine Ausfallsicherheit ist mdadm oder ZFS aber meist die passendere Ebene. - Cache und Writeback: Eine schnelle SSD (oder NVMe) kann langsame Datenträger beschleunigen, wahlweise nur lesend (Cache) oder auch schreibend (Writeback).
- Dünne Snapshots und Merge: Ein Thin-Snapshot lässt sich in das Ursprungs-Volume zurückschreiben (merge), was Updates sehr risikoarm macht.
Befehle im Alltag
# Aufbau
pvcreate /dev/sdb /dev/sdc
vgcreate vg0 /dev/sdb /dev/sdc
lvcreate -L 200G -n data vg0
mkfs.ext4 /dev/vg0/data
# Übersicht
pvs ; vgs ; lvs
lvdisplay /dev/vg0/data
# Vergrößern (online, ohne Ausfall)
lvextend -L +50G /dev/vg0/data
resize2fs /dev/vg0/data # bei ext4
xfs_growfs /data # bei XFS
# Snapshot
lvcreate -L 10G -s -n data_snap /dev/vg0/data
# Thin-Pool
lvcreate --type thin-pool -L 1T -n pool vg0
lvcreate -V 500G --thin -n thin1 vg0/pool
Worauf man achten sollte
Die Reihenfolge beim Vergrößern ist entscheidend: erst das Volume, dann das Dateisystem – beim Verkleinern umgekehrt, und bei XFS gibt es gar keine Online-Verkleinerung. Ein Thin-Pool kann überlaufen, wenn mehr Speicher zugeteilt als physisch vorhanden ist; dann werden Schreibvorgänge abgelehnt und Dateisysteme können beschädigt werden. Ein Monitoring auf die Pool-Belegung ist deshalb Pflicht. Und bei Snapshots gilt: Sie wachsen mit jedem Schreibzugriff auf das Ursprungsvolume und fressen damit selbst Speicher – wer sie vergisst, findet irgendwann einen vollen Pool.
Verwandte Grundlagen: Snapshot, RAID, ZFS, NVMe, SATA und SAS im Vergleich.