TL;DR — Kurzzusammenfassung
LVM-Anleitung für Linux: logische Volumes erweitern, Disks hinzufügen, Dateisysteme vergrößern und Root-Partitionen in Cloud-VMs ohne Neustart ausdehnen.
Die Verwaltung von Speicher auf Linux-Produktionsservern bedeutet, dass Sie früher oder später mit einem vollen Disk konfrontiert werden. Der Logical Volume Manager (LVM) wurde genau für diesen Moment entwickelt: Er ermöglicht das Online-Erweitern, Verkleinern, Erstellen von Snapshots und Migrieren von Speicher — oft ohne jegliche Ausfallzeit. Diese Anleitung deckt den vollständigen LVM-Workflow ab, von den Architekturgrundlagen bis zur Root-Partition-Erweiterung in Cloud-VMs, mit echten Befehlen die Sie sofort ausführen können.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher dass Sie haben:
- Ein Linux-System mit installiertem
lvm2(apt install lvm2oderdnf install lvm2) - Root- oder sudo-Zugriff
- Grundlegende Vertrautheit mit Linux-Block-Geräten (
lsblk,fdisk,df) - Für Cloud-Szenarien: Möglichkeit, den Disk im Azure-Portal oder in der AWS-Konsole zu skalieren, bevor Sie Linux anfassen
LVM-Architektur: PV → VG → LV
LVM fügt drei Abstraktionsschichten zwischen physische Disks und das Dateisystem ein:
| Schicht | Befehlspräfix | Beschreibung |
|---|---|---|
| Physical Volume (PV) | pv* | Eine rohe Disk oder Partition, die für LVM initialisiert wurde (pvcreate) |
| Volume Group (VG) | vg* | Ein Pool aus einem oder mehreren PVs (vgcreate, vgextend) |
| Logical Volume (LV) | lv* | Ein Ausschnitt des VG-Speicherplatzes, der wie eine Partition fungiert (lvcreate, lvextend) |
Das Dateisystem (ext4, XFS usw.) befindet sich innerhalb eines LV. Das Betriebssystem sieht den LV als Block-Gerät (z.B. /dev/myvg/data) und hat keine Kenntnis von den zugrunde liegenden physischen Disks. Diese Indirektion ermöglicht Online-Skalierung und transparente Migration zwischen Disks.
Aktuelles LVM-Layout prüfen
Beginnen Sie immer damit, zu verstehen was Sie haben:
# Alle Physical Volumes auflisten
pvs
# Alle Volume Groups auflisten
vgs
# Alle Logical Volumes auflisten
lvs
# Vollständige Details einer bestimmten VG
vgdisplay myvg
# Vollständige Details eines bestimmten LV
lvdisplay /dev/myvg/mylv
# Block-Gerätebaum anzeigen
lsblk
# Eingehängte Dateisystemnutzung anzeigen
df -h
Die Spalte PFree in der Ausgabe von pvs zeigt den nicht zugewiesenen Speicher in der VG — das ist es, wovon lvextend schöpft.
Neue Disk als Physical Volume hinzufügen
Wenn Sie eine neue Disk anschließen (z.B. /dev/sdb in einer VM oder eine neue EBS/Managed Disk), initialisieren Sie diese als PV:
# Bestätigen, dass der Kernel die neue Disk sieht
lsblk
# Disk als Physical Volume initialisieren
pvcreate /dev/sdb
# Überprüfen
pvs
Sie müssen die Disk nicht zuerst partitionieren — die gesamte Disk (/dev/sdb) zu verwenden ist gültig und einfacher.
VG und LV erweitern
Schritt 1 — PV zur VG hinzufügen
vgextend myvg /dev/sdb
Schritt 2 — LV erweitern
Den gesamten verbleibenden freien Speicher der VG verbrauchen:
lvextend -l +100%FREE /dev/myvg/mylv
Eine feste Menge hinzufügen (z.B. 10 GB):
lvextend -L +10G /dev/myvg/mylv
Das Flag -r kombiniert lvextend mit der Dateisystem-Skalierung in einem Schritt (funktioniert für ext4 und XFS):
lvextend -l +100%FREE -r /dev/myvg/mylv
Dateisystem skalieren
Nach der Erweiterung des LV muss das Dateisystem über den neuen Speicher informiert werden. Dieser Schritt ist auf einem eingehängten, aktiven Dateisystem sicher.
ext4 (die meisten Ubuntu/Debian-Systeme)
resize2fs /dev/myvg/mylv
Kein Größenargument erforderlich — resize2fs füllt den gesamten LV. Kann mit eingehängtem Dateisystem ausgeführt werden.
XFS (die meisten RHEL/CentOS/Rocky-Systeme)
XFS verwendet den Einhängepunkt, nicht das Gerät:
xfs_growfs /mountpoint
# oder für Root:
xfs_growfs /
Wichtig: XFS kann nur wachsen, nie schrumpfen. Das Verkleinern eines XFS-Dateisystems wird nicht unterstützt.
Root-Partition in Cloud-VMs erweitern (Ohne Neustart)
Dies ist das häufigste reale Szenario. Sie haben eine Cloud-VM (Azure oder AWS) deren OS-Disk knapp wird. Hier ist die vollständige Sequenz — kein Neustart erforderlich.
1. Disk in der Cloud-Konsole skalieren
- Azure: Speicher → Disks → OS-Disk auswählen → Disk-Größe → erhöhen → Speichern
- AWS: EC2 → Volumes → Modify Volume → neue Größe festlegen → Modify
Warten Sie, bis die Skalierung abgeschlossen ist, bevor Sie fortfahren.
2. Partition auf Linux-Seite erweitern
# Bestätigen, dass der Kernel die neue Größe sieht
lsblk
# Partition erweitern (z.B. Partition 2 auf /dev/sda)
sudo growpart /dev/sda 2
# Überprüfen, dass die Partition jetzt größer ist
lsblk
growpart befindet sich im cloud-utils- oder cloud-guest-utils-Paket. Es erweitert die Partition ohne Daten zu zerstören.
3. LVM über die neue PV-Größe informieren
sudo pvresize /dev/sda2
4. LV erweitern
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
Ersetzen Sie ubuntu-vg / ubuntu-lv durch die tatsächlichen VG- und LV-Namen aus lvs.
5. Dateisystem vergrößern
Für ext4:
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
Für XFS:
sudo xfs_growfs /
6. Bestätigen
df -h /
Das Root-Dateisystem zeigt jetzt die erweiterte Größe an. In keinem Schritt war ein Neustart erforderlich.
Logical Volume verkleinern (Gefährlich — Nur ext4)
Das Verkleinern ist riskanter als das Erweitern und sollte nur durchgeführt werden, wenn Sie ein aktuelles Backup haben. XFS kann nicht verkleinert werden — dieses Verfahren gilt nur für ext4.
# 1. Dateisystem aushängen (Root kann nicht live verkleinert werden)
umount /dev/myvg/data
# 2. Dateisystem vor dem Verkleinern prüfen und reparieren
e2fsck -f /dev/myvg/data
# 3. Dateisystem ZUERST verkleinern (auf Zielgröße, z.B. 20G)
resize2fs /dev/myvg/data 20G
# 4. LV entsprechend verkleinern (muss >= Dateisystemgröße sein)
lvreduce -L 20G /dev/myvg/data
# 5. Wieder einhängen
mount /dev/myvg/data /mnt/data
Warnung: Verkleinern Sie immer zuerst das Dateisystem, dann den LV. Den LV zuerst zu verkleinern zerstört Daten durch Abschneiden des Dateisystems.
LVM-Snapshots
Snapshots erfassen den Zustand eines LV zu einem bestimmten Zeitpunkt. Sie sind unverzichtbar vor riskanten Operationen (OS-Upgrades, Datenbankmigrationen).
# 5-GB-Snapshot von /dev/myvg/mylv erstellen
lvcreate --snapshot -L 5G -n mylv_snap /dev/myvg/mylv
# Snapshot nur lesend einhängen zur Inspektion
mount -o ro /dev/myvg/mylv_snap /mnt/snapshot
# Zurückrollen (Snapshot mit Ursprung zusammenführen)
lvconvert --merge /dev/myvg/mylv_snap
# Snapshot ohne Zurückrollen entfernen
lvremove /dev/myvg/mylv_snap
Daten zwischen Physical Volumes verschieben
pvmove migriert Extents zwischen PVs während der LV online bleibt. Verwenden Sie dies, um eine Disk vor der Entfernung zu leeren.
# Alle Extents von /dev/sdb zu einem anderen PV in der VG verschieben
pvmove /dev/sdb
# Nach Abschluss den PV aus der VG entfernen
vgreduce myvg /dev/sdb
# LVM-Metadaten von der Disk entfernen
pvremove /dev/sdb
LVM vs ZFS vs Btrfs vs Einfache Partitionen
| Funktion | LVM | ZFS | Btrfs | Einfache Partitionen |
|---|---|---|---|---|
| Online-Erweiterung | Ja | Ja | Ja | Nein |
| Online-Verkleinerung | Nur ext4 (aushängen) | Nein | Ja | Nein |
| Snapshots | Ja (CoW) | Ja (CoW) | Ja (CoW) | Nein |
| Integriertes RAID | Via dm-raid | Ja | Ja (begrenzt) | Via mdadm |
| Transparente Kompression | Nein | Ja | Ja | Nein |
| Selbstheilung (Checksums) | Nein | Ja | Teilweise | Nein |
| Komplexität | Mittel | Hoch | Mittel | Niedrig |
| Cloud-Standard | Ja (RHEL/Ubuntu) | Nur Proxmox | Nur Fedora | Legacy |
Wann LVM verwenden: Sie benötigen flexible Skalierung auf Standard-Distributionen ohne ein neues Speichermodell zu erlernen.
Wann ZFS verwenden: Sie benötigen Checksums, integriertes RAID oder Kompression und sind auf Ubuntu oder einem Speichergerät.
Häufige Fallstricke
- Dateisystem nach LV verkleinern zerstört Daten. Verkleinern Sie immer zuerst das Dateisystem.
- Voller Snapshot = ungültiger Snapshot. Überwachen Sie die Nutzung mit
lvsund erweitern Sie bei Bedarf. - XFS kann nicht verkleinert werden. Der Versuch schlägt mit einem klaren Fehler fehl.
pvresizenach Cloud-Disk-Skalierung vergessen bedeutet, dass LVM immer noch die alte PV-Größe sieht.- LVM Thin Pools haben separate Werkzeuge. Überprovisioning ohne Monitoring führt zu stillem Datenverlust.
Zusammenfassung
- LVM fügt drei Schichten hinzu (PV, VG, LV) und ermöglicht flexible Online-Speicherverwaltung.
- Verwenden Sie
pvs / vgs / lvsundlsblkzur Prüfung des aktuellen Layouts vor Änderungen. - Erweitern ist immer sicher:
pvcreate → vgextend → lvextend → resize2fs / xfs_growfs. - Cloud-VM-Root-Erweiterung erfordert
growpart → pvresize → lvextend → resize2fsohne Neustart. - Verkleinern ist nur auf ext4 möglich und erfordert Aushängen; erstellen Sie immer zuerst ein Backup.
- Snapshots sind günstige CoW-Erfassungen — erstellen Sie einen vor jeder wichtigen Änderung.
- XFS wächst nur; ZFS und Btrfs bieten reichhaltigere Funktionen bei höherer Komplexität.