Die traditionelle Linux-Partitionierung zwingt Sie dazu, Festplattengroessen bei der Installation festzulegen. Brauchen Sie sechs Monate spaeter mehr Platz auf /var? Dann heisst es: Backup, Neupartitionierung und Wiederherstellung. LVM (Logical Volume Manager) beseitigt diese Starrheit, indem es eine Abstraktionsschicht zwischen physischen Festplatten und Dateisystemen einfuegt. So koennen Sie Volumes vergroessern, Speicher hinzufuegen und Snapshots auf einem laufenden System erstellen — ohne Ausfallzeit.

Dieser Leitfaden behandelt den vollstaendigen LVM-Workflow: Erstellen physischer Volumes, Gruppieren in Volume-Gruppen, Zuweisen logischer Volumes und Durchfuehren der Groessenaenderungs- und Snapshot-Operationen, die LVM fuer die Serveradministration unverzichtbar machen.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:

  • Ein Linux-System mit systemd (Ubuntu 20.04+, Debian 11+, RHEL/CentOS 8+, oder aehnlich)
  • Terminal-Zugang mit sudo-Berechtigungen
  • Eine oder mehrere verfuegbare Festplatten oder Partitionen (ungenutzte Blockgeraete)
  • Grundlegende Kenntnisse der Linux-Festplattenkonzepte (Partitionen, Dateisysteme, Mountpoints)

Warnung: Die Befehle in diesem Leitfaden werden Partitionstabellen aendern und Dateisysteme erstellen. Ueberpruefen Sie immer sorgfaeltig die Geraetnamen, bevor Sie Befehle ausfuehren. Die Verwendung des falschen Geraets kann Daten zerstoeren.

LVM-Architektur

LVM arbeitet in drei Schichten:

┌─────────────────────────────────────────┐
│       Dateisysteme (ext4, XFS)          │
├─────────────────────────────────────────┤
│      Logische Volumes (LV)              │
│      /dev/vg_name/lv_name               │
├─────────────────────────────────────────┤
│      Volume-Gruppen (VG)                │
│      Speicherpool aus einem oder        │
│      mehreren physischen Volumes        │
├─────────────────────────────────────────┤
│      Physische Volumes (PV)             │
│      /dev/sdb, /dev/sdc, usw.           │
├─────────────────────────────────────────┤
│      Physische Festplatten / Partitionen│
└─────────────────────────────────────────┘
  • Physisches Volume (PV): Eine Festplatte oder Partition, die fuer LVM initialisiert wurde
  • Volume-Gruppe (VG): Ein Speicherpool aus einem oder mehreren PVs
  • Logisches Volume (LV): Eine virtuelle Partition aus einer VG, auf der Sie Dateisysteme erstellen

Der entscheidende Vorteil: VGs koennen sich ueber mehrere physische Festplatten erstrecken, und LVs koennen im laufenden Betrieb in der Groesse geaendert werden.

LVM installieren

LVM ist auf den meisten Server-Distributionen vorinstalliert. Ueberpruefen oder installieren Sie es:

# Debian/Ubuntu
sudo apt update && sudo apt install lvm2

# RHEL/Fedora/CentOS
sudo dnf install lvm2

# Installation ueberpruefen
lvm version

Verfuegbare Festplatten identifizieren

Bevor Sie physische Volumes erstellen, identifizieren Sie Ihre verfuegbaren Blockgeraete:

# Alle Blockgeraete auflisten
lsblk

# Detaillierte Festplatteninformationen anzeigen
sudo fdisk -l

# Pruefen, welche Festplatten bereits von LVM verwendet werden
sudo pvs

Beispiel einer lsblk-Ausgabe mit zwei ungenutzten Festplatten:

NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda       8:0    0    50G  0 disk
├─sda1    8:1    0   512M  0 part /boot
└─sda2    8:2    0  49.5G  0 part /
sdb       8:16   0   100G  0 disk
sdc       8:32   0   100G  0 disk

In diesem Beispiel sind sdb und sdc fuer LVM verfuegbar.

Physische Volumes erstellen

Initialisieren Sie die Festplatten fuer die LVM-Nutzung:

sudo pvcreate /dev/sdb /dev/sdc

Ausgabe:

  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

Ueberpruefen Sie die physischen Volumes:

# Zusammenfassende Ansicht
sudo pvs

# Detaillierte Ansicht
sudo pvdisplay /dev/sdb

Die pvs-Ausgabe zeigt:

  PV         VG     Fmt  Attr PSize   PFree
  /dev/sdb          lvm2 ---  100.00g 100.00g
  /dev/sdc          lvm2 ---  100.00g 100.00g

Hinweis: Sie koennen auch Partitionen anstelle von ganzen Festplatten verwenden. Zum Beispiel funktioniert sudo pvcreate /dev/sdb1, wenn Sie die Festplatte zuerst mit fdisk oder parted partitionieren moechten. Die Verwendung ganzer Festplatten ist einfacher und empfohlen, wenn die gesamte Festplatte fuer LVM bestimmt ist.

Eine Volume-Gruppe erstellen

Kombinieren Sie die physischen Volumes zu einer Volume-Gruppe:

sudo vgcreate vg_data /dev/sdb /dev/sdc

Ausgabe:

  Volume group "vg_data" successfully created

Ueberpruefen Sie die Volume-Gruppe:

# Zusammenfassende Ansicht
sudo vgs

# Detaillierte Ansicht
sudo vgdisplay vg_data

Die vgs-Ausgabe zeigt den kombinierten Speicher:

  VG      #PV #LV #SN Attr   VSize   VFree
  vg_data   2   0   0 wz--n- 199.99g 199.99g

Sie verfuegen nun ueber einen 200-GB-Speicherpool (aus zwei 100-GB-Festplatten), den Sie flexibel zuweisen koennen.

Logische Volumes erstellen

Weisen Sie Speicherplatz aus der Volume-Gruppe zu, um logische Volumes zu erstellen:

# Ein 50-GB-logisches Volume fuer Anwendungen erstellen
sudo lvcreate -L 50G -n lv_apps vg_data

# Ein 30-GB-logisches Volume fuer Datenbanken erstellen
sudo lvcreate -L 30G -n lv_databases vg_data

# Ein Volume mit Prozentanteil des verbleibenden freien Speicherplatzes erstellen
sudo lvcreate -l 50%FREE -n lv_logs vg_data

Gaengige Groessenoptionen:

OptionBedeutungBeispiel
-L 50GExakte Groesse50 Gigabyte
-L 500MExakte Groesse500 Megabyte
-l 100%FREEGesamter verbleibender SpeicherNutzt alles, was uebrig ist
-l 50%VGProzentanteil der VGHaelfte der Volume-Gruppe
-l 50%FREEProzentanteil des freien SpeichersHaelfte des verbleibenden Speichers

Ueberpruefen Sie Ihre logischen Volumes:

# Zusammenfassende Ansicht
sudo lvs

# Detaillierte Ansicht
sudo lvdisplay /dev/vg_data/lv_apps

Formatierung und Einhaengen

Erstellen Sie Dateisysteme auf den logischen Volumes:

# Mit ext4 formatieren
sudo mkfs.ext4 /dev/vg_data/lv_apps
sudo mkfs.ext4 /dev/vg_data/lv_databases

# Oder mit XFS formatieren (bevorzugt fuer grosse Volumes)
sudo mkfs.xfs /dev/vg_data/lv_logs

Erstellen Sie Mountpoints und haengen Sie ein:

sudo mkdir -p /srv/apps /srv/databases /var/log/central

sudo mount /dev/vg_data/lv_apps /srv/apps
sudo mount /dev/vg_data/lv_databases /srv/databases
sudo mount /dev/vg_data/lv_logs /var/log/central

Persistentes Einhaengen mit fstab

Fuegen Sie Eintraege in /etc/fstab hinzu, damit die Volumes automatisch beim Booten eingehaengt werden:

# UUIDs ermitteln (zuverlaessiger als Geraetepfade)
sudo blkid /dev/vg_data/lv_apps
sudo blkid /dev/vg_data/lv_databases
sudo blkid /dev/vg_data/lv_logs

Zu /etc/fstab hinzufuegen:

/dev/vg_data/lv_apps       /srv/apps         ext4 defaults 0 2
/dev/vg_data/lv_databases  /srv/databases    ext4 defaults 0 2
/dev/vg_data/lv_logs       /var/log/central  xfs  defaults 0 2

Tipp: Fuer LVM-Volumes ist die Verwendung des Pfads /dev/vg_name/lv_name in fstab ueblich und zuverlaessig, da LVM konsistente Device-Mapper-Symlinks erstellt. UUIDs funktionieren ebenfalls, wenn Sie diese bevorzugen.

Testen Sie die fstab-Eintraege ohne Neustart:

sudo umount /srv/apps
sudo mount -a
df -h /srv/apps

Erweitern (Vergroessern) eines logischen Volumes

Dies ist die wertvollste Operation von LVM. Wenn einem Volume der Platz ausgeht, erweitern Sie es ohne Ausfallzeit.

Mit freiem Platz in der Volume-Gruppe erweitern

# 20 GB zum Anwendungs-Volume hinzufuegen
sudo lvextend -L +20G /dev/vg_data/lv_apps

# Dann das Dateisystem vergroessern
# Fuer ext4:
sudo resize2fs /dev/vg_data/lv_apps

# Fuer XFS:
sudo xfs_growfs /srv/apps

Oder beides in einem Befehl:

# Die Option -r aendert die Groesse des Dateisystems automatisch
sudo lvextend -r -L +20G /dev/vg_data/lv_apps

Eine neue Festplatte zur Volume-Gruppe hinzufuegen

Wenn der Volume-Gruppe der Platz ausgeht, fuegen Sie eine weitere physische Festplatte hinzu:

# Die neue Festplatte initialisieren
sudo pvcreate /dev/sdd

# Zur bestehenden Volume-Gruppe hinzufuegen
sudo vgextend vg_data /dev/sdd

# Die neue Kapazitaet ueberpruefen
sudo vgs

Jetzt koennen Sie logische Volumes mit dem neu hinzugefuegten Speicherplatz erweitern.

Verkleinern (Schrumpfen) eines logischen Volumes

Warnung: Das Verkleinern von Volumes birgt das Risiko eines Datenverlusts. Sichern Sie immer vor dem Verkleinern. XFS-Dateisysteme koennen nicht verkleinert werden — nur ext4 unterstuetzt diese Operation.

Fuer ext4-Volumes:

# Volume zuerst aushaengen
sudo umount /srv/apps

# Dateisystem pruefen
sudo e2fsck -f /dev/vg_data/lv_apps

# Dateisystem zuerst verkleinern, dann das LV (-r macht beides)
sudo lvreduce -r -L 30G /dev/vg_data/lv_apps

# Wieder einhaengen
sudo mount /dev/vg_data/lv_apps /srv/apps

Die Option -r stellt sicher, dass das Dateisystem vor dem logischen Volume verkleinert wird, um Datenbeschaedigung zu verhindern.

LVM-Snapshots

Snapshots erstellen eine Momentaufnahme eines logischen Volumes mittels Copy-on-Write. Sie sind ideal fuer Backups auf laufenden Systemen.

Einen Snapshot erstellen

# Einen 5-GB-Snapshot von lv_databases erstellen
sudo lvcreate -L 5G -s -n snap_databases /dev/vg_data/lv_databases

Die Snapshot-Groesse (5 GB) stellt die maximale Menge geaenderter Daten dar, die verfolgt werden kann. Wenn sich das Original-Volume um mehr als 5 GB aendert, waehrend der Snapshot existiert, wird der Snapshot ungueltig.

Einen Snapshot fuer Backup verwenden

# Snapshot einhaengen (nur lesen)
sudo mkdir -p /mnt/snap
sudo mount -o ro /dev/vg_data/snap_databases /mnt/snap

# Vom Snapshot sichern
sudo tar czf /backup/databases-$(date +%Y%m%d).tar.gz -C /mnt/snap .

# Aushaengen und Snapshot entfernen
sudo umount /mnt/snap
sudo lvremove /dev/vg_data/snap_databases

Aus einem Snapshot wiederherstellen

# Einen Snapshot zurueck ins Original zusammenfuehren (Rollback)
sudo lvconvert --merge /dev/vg_data/snap_databases

Hinweis: Die Zusammenfuehrung erfordert, dass das Original-Volume ausgehaengt ist (oder das System neu gestartet wird, wenn das Volume das Root-Dateisystem ist). Der Snapshot wird nach der Zusammenfuehrung automatisch geloescht.

Ueberwachung und Wartung

Speicherplatznutzung pruefen

# Nutzung der physischen Volumes
sudo pvs -o +pv_used,pv_free

# Zusammenfassung der Volume-Gruppe
sudo vgs -o +vg_free

# Details der logischen Volumes
sudo lvs -o +lv_size,seg_count

Daten zwischen physischen Volumes verschieben

Wenn Sie eine Festplatte ausser Betrieb nehmen muessen:

# Alle Extents von /dev/sdb auf andere PVs der Gruppe verschieben
sudo pvmove /dev/sdb

# Das PV aus der Volume-Gruppe entfernen
sudo vgreduce vg_data /dev/sdb

# Das PV-Label loeschen
sudo pvremove /dev/sdb

Vollstaendige Konfiguration anzeigen

# Vollstaendige Systemuebersicht
sudo lvm fullreport

Fehlerbehebung

Volume-Gruppe nach Neustart nicht gefunden

# Alle physischen Volumes scannen
sudo pvscan

# Alle Volume-Gruppen aktivieren
sudo vgchange -ay

# Wenn gefunden, initramfs aktualisieren
sudo update-initramfs -u

Snapshot laeuft voll

# Snapshot-Nutzung pruefen
sudo lvs -o +snap_percent

# Wenn sich 100% naehert, Snapshot erweitern
sudo lvextend -L +5G /dev/vg_data/snap_databases

Wenn ein Snapshot 100% Kapazitaet erreicht, wird er ungueltig und muss entfernt werden.

Volume kann nicht verkleinert werden

  • XFS: Kann nicht verkleinert werden. Sie muessen sichern, das LV in kleinerer Groesse neu erstellen, das Dateisystem neu erstellen und wiederherstellen.
  • ext4: Muss zuerst ausgehaengt werden. Fuehren Sie e2fsck -f vor jeder Groessenaenderung aus.
  • Volume noch aktiv: Verwenden Sie sudo umount oder pruefen Sie Prozesse, die den Mount verwenden, mit lsof +D /mount/point.

LVM-Befehlsreferenz

BefehlBeschreibung
pvcreateFestplatte fuer LVM initialisieren
pvs / pvdisplayPhysische Volumes anzeigen
vgcreateVolume-Gruppe erstellen
vgs / vgdisplayVolume-Gruppen anzeigen
vgextendEin PV zu einer VG hinzufuegen
vgreduceEin PV aus einer VG entfernen
lvcreateLogisches Volume erstellen
lvs / lvdisplayLogische Volumes anzeigen
lvextend -rLV erweitern und Dateisystem vergroessern
lvreduce -rLV verkleinern und Dateisystem verkleinern
lvcreate -sSnapshot erstellen
lvremoveLogisches Volume loeschen
pvmoveDaten von einem physischen Volume verschieben

Zusammenfassung

LVM ist ein unverzichtbares Werkzeug fuer die flexible Festplattenverwaltung auf Linux-Servern:

  • Drei-Schichten-Architektur: Physische Volumes → Volume-Gruppen → Logische Volumes
  • Erweitern Sie Volumes im laufenden Betrieb mit lvextend -r — ohne Ausfallzeit
  • Fuegen Sie neue Festplatten zu bestehenden Volume-Gruppen mit vgextend hinzu, um Ihren Speicherpool zu vergroessern
  • Verwenden Sie Snapshots fuer konsistente Backups auf laufenden Systemen ohne Dienste anzuhalten
  • Verkleinern Sie Dateisysteme immer vor den logischen Volumes, um Datenverlust zu vermeiden
  • LVM ist kein Ersatz fuer RAID — verwenden Sie es auf RAID fuer sowohl Flexibilitaet als auch Redundanz
  • Ueberwachen Sie die Snapshot-Nutzung, um eine Invalidierung bei 100% Kapazitaet zu vermeiden

Fuer verwandte Themen lesen Sie unsere Anleitungen zu ZFS Storage und Snapshots und Rsync Backup und Synchronisation.