Logical Volume Manager (LVM)

Wir haben uns dazu entschlossen, sämtliche Linux-Maschinen als LVM-System aufzusetzen. Es erleichtert in Zukunft die Vergrößerung der Partitions. Unter den von uns favorisierten Distributionen SUSE bzw. openSUSE ist die Verwaltung eines LVM dank YAST ja auch für Laien ein Kinderspiel, dennoch geht es auch mit Linux-typischen Befehlen, die wir Ihnen hier näher bringen möchten.

Doch zu Beginn eine Definition bzw. Erklärung - was ist ein LVM!?

LVM steht für Logical Volume Manager und ist ein Verfahren, um Partitionen — auch über mehrere Festplatten hinweg — dynamisch zu verwalten. Es wird eine zusätzliche logische Schicht zwischen Partitionstabelle und den Dateisystemen hinzugefügt.

Mittels LVM kann im Gegensatz zur klassischen Partitionierung ein Speicherbereich nachträglich mit wenig Aufwand vergrößert oder verkleinert werden. Daneben bietet es die Möglichkeit, mehrere Partitionen oder Festplatten ("Physical Volumes") zu einer logischen Einheit zusammenzufassen und somit die physikalischen Größenbegrenzungen aufzuheben. Einem solchen Verbund ("Volume Group") können im laufenden Betrieb weitere Geräte hinzugefügt werden, wodurch sich der verfügbare Speicherplatz erhöht. Freier Speicherplatz kann ebenfalls dynamisch den Partitionen des Verbundes ("Logical Volumes") zugewiesen werden. Dadurch erreicht man eine höhere Flexibilität als beim klassischen Partitionierungsansatz. Dies ist vor allem für Server interessant, bei denen dynamisch auf das Wachsen der Datenbestände reagiert werden muss, hilft aber auch beim Verwalten des heimischen Rechners.

Zum Aufbau eines minimalen LVMs ist mindestens ein "Physical Volume" erforderlich, auf welchem eine "Volume Group" erstellt wird. In dieser "Volume Group" werden die einzelnen "Logical Volumes" angelegt. Es ist jedoch nicht erforderlich oder sinnvoll, diesen "Logical Volumes" den gesamten Platz einer "Volume Group" zuzuweisen, um leichter auf spätere Veränderungen reagieren zu können. Als Faustregel kann man den aktuellen bzw. geplanten Platzbedarf +25% nehmen.

Vorteile:

  • Höhere Flexibilität
  • Volumes können im laufenden Betrieb vergrößert, angelegt und verkleinert werden
  • Probleme durch falsche Partitionierung können vermieden werden
  • Die Kapazität mehrerer Festplatten kann zusammengefasst werden
  • Verschiedene Versionen von Daten sind durch sogenannte "Snapshots" möglich
  • Die Datensicherung ("Backup") wird durch diese "Snapshots" vereinfacht, die Downtime verringert
  • LVM hat einen hohen Datendurchsatz ("performance") und beeinträchtigt das System nur unwesentlich

  • Nachteile:

  • Liegen die Logical Volumes auf mehreren Festplatten, so wird das Risiko des "Single-Point-of-Failure" größer, da beim Ausfall einer Platte alle Daten verloren sind, vergleichbar mit einem RAID0.
  • Um auf Logical Volumes zugreifen zu können, benötigen Live-Systeme LVM-Unterstützung, welche teilweise über Kernelmodule manuell nachgeladen werden muss.

  • Bei einer Volume Group über mehrere Festplatten hinweg gilt: Wegen der erhöhten Gefahr des Datenverlustes beim Ausfall einer Festplatte sollte das LVM in einem RAID-Verbund installiert werden, der Datensicherheit bietet (mindestens also RAID-Level 1).

    Zentrale Begriffe:

    Begriff
    Kürzel
    Beschreibung
    Physical Extent
    PE
    Das Physical Extent ist die kleinste mögliche Speichergröße eines LVM. Das PE ist vergleichbar mit den Sektoren von normalen Festplatten bzw. Partitionen. Sie kann nachträglich geändert werden.
    Physical Volume
    PV
    Ein Physical Volume ist der physikalische Datenspeicher eines LVMs, also eine Festplatte oder eine Partition auf einer Festplatte.
    Volume Group
    VG
    Eine Volume Group ist der Verbund einer oder mehrerer physikalischer Datenspeicher.
    Logical Volume
    LV
    Ein Logical Volume entspricht der klassischen Partition, enthält das Dateisystem, ist immer Teil einer Volume Group und kann ein- und ausgehängt werden.

    Im LVM können alle Elemente außer der Größenzuweisung des "Physical Extent" im laufenden Betrieb vergrößert und verkleinert werden. Doch die Erweiterbarkeit des LVM allein hilft noch nicht weiter, auch das darin liegende Dateisystem muss verändert werden, um es tatsächlich an die neue Größe anpassen zu können. Nicht jedes Dateisystem beherrscht das Vergrößern oder Verkleinern. Mit ext2/ext3/ext4 haben Sie da aber beim Vergrößern keine Probleme (Online/Offline). Eine Verkleinerung können Sie allerdings nur Offline (nicht gemountet) durchführen.

    Administration eines LVM
    Informationen abfragen

    Es gibt für jede relevante Einheit zwei Methoden, Informationen abzufragen. Die Kurzbefehle sind das Einheitenkürzel mit angehängtem s, also pvs, vgs und lvs; die Detailausgaben erhält man mit dem Kürzel und angehängtem display: pvdisplay, vgdisplay und lvdisplay.

    Verwaltung von Physical Volumes
    Physical Volumes initalisieren

    pvcreate /dev/PARTITION
    Dies erstellt ein Physical Volume auf der Partition /dev/PARTITION. Diese kann dann einer Volume Group zugewiesen werden.

    Verwaltung von Volume Groups
    Volume Groups erstellen

    vgcreate GROUP /dev/PARTITION1 /dev/PARTITION2
    Hier wird eine Volume Group mit dem Namen GROUP erstellt. Diese bekommt die Physical Volumes PARTITION1 und PARTITION2 zugewiesen.

    Volume Groups vergrößern
    vgextend GROUP /dev/PARTITION3
    Das Physical Volume PARTITION3 wird der Volume Group GROUP hinzugefügt.

    Volume Groups verkleinern
    pvmove /dev/PARTITION3
    vgreduce GROUP /dev/PARTITION3

    Verschiebt alle Daten von dem Physical Volume PARTITION3 und entfernt das Volume aus der Gruppe GROUP.

    Volume Groups löschen
    vgremove GROUP
    Hier wird eine Volume Group mit dem Namen GROUP gelöscht.

    Verwaltung von Logical Volumes
    Logical Volumes erstellen

    lvcreate -L 2G -n VOLUME GROUP
    Erstellt ein Logical Volume der Größe 2 Gigabyte mit dem Namen VOLUME in der Volume Group GROUP.

    Logical Volumes vergrößern
    lvextend --resizefs -L 5G /dev/GROUP/VOLUME # Größe von insgesamt 5G festlegen
    lvextend -r -L +3G /dev/GROUP/VOLUME        # um 3G vergrößern

    Vergrößert das Logical Volume VOLUME der Volume Group GROUP und das Dateisystem auf 5 Gigabyte. Als Alternative kann auch ein + vor den Wert hinter -L gestellt werden; in diesem Fall wird die Partition dann um diesen Wert vergrößert.

    lvextend --resizefs -l +100%FREE /dev/GROUP/VOLUME
    Vergrößert das Logical Volume VOLUME der Volume Group GROUP und das Dateisystem auf die maximal mögliche Größe. Die Volume Group hat im Anschluss keinen freien Speicher mehr!

    Logical Volumes verkleinern
    lvreduce --resizefs -L 5G /dev/GROUP/VOLUME
    Verkleinert das Logical Volume VOLUME der Volume Group GROUP und das Dateisystem auf 5 Gigabyte. Als Alternative kann auch ein - vor den Wert hinter -L gestellt werden, siehe lvextend.

    Das Verkleinern von Volumes kann u.U. zu Datenverlust führen! Daher sollte vorher der verfügbare und verwendete Platz geprüft werden!

    Snapshots
    Snapshots sind Logical Volumes, die an ein bestehendes Logical Volume gebunden sind. Wird im Original-LV eine Datei verändert, so wird zunächst die bestehende Version auf den Snapshot kopiert, bevor die Änderungen im LV angewendet werden. Dadurch ist es leicht Änderungen rückgängig zu machen. Möchte man die Änderungen behalten, kann der Snapshot einfach gelöscht werden. Wird die angegebene Größe eines Snapshot erreicht oder überschritten, werden die Änderungen wieder direkt auf das Original-LV angewendet!
    lvcreate --size 100M --snapshot --name NAME /dev/GROUP/VOLUME
    Dies legt einen Snapshot NAME an, welcher auf VOLUME der Volume Group GROUP basiert. Finden Schreibvorgänge auf das originale LV VOLUME statt, so werden die betroffenen Blöcke vorher physisch auf das LV NAME kopiert, erst danach werden die Änderungen auf VOLUME durchgeführt. Deshalb ist der Snapshot so lange gültig, wie sich das Original um nicht mehr als den hinter --size angegebenen Wert verändert (hier 100 MB). Daraus resultiert auch, dass die Schreibrate auf VOLUME geringer ist, solange ein Snapshot davon existiert.

    Um das LV wieder auf den Stand bei der Erstellung des Snapshots zurückzusetzen, wird mit dem Befehl
    lvconvert --merge /dev/GROUP/NAME

    das originale LV und der Snapshot zusammengeführt. Gegebenenfalls erfolgt die Zusammenführung erst beim Neustarten des Computers (z.B. bei root). Nachdem der Vorgang erfolgreich abgeschlossen wurde, wird der Snapshot gelööscht.

    Snapshots sind z.B. nützlich, wenn man mit der Möglichkeit, ohne größeren Aufwand zum vorherigen Stand eines Dateisystems zurückkehren zu können, etwas ausprobieren will. Aber auch als Hilfsmittel zur Datensicherung dienen Snapshots, denn nachdem ein Snapshot erstellt wurde, kann ein Backuptool den eingehängten Snapshot in aller Ruhe klonen, ohne dass man sich um während des Sicherungsvorgangs stattfindende Dateiänderungen sorgen muss. Gerade hierfür ist ein read-only Snapshot geeignet, welches man über die Option -p r oder -permission r erstellt, wobei r für "read-only" und rw für "read-write" steht, die Standardeinstellung ist rw. Nach der Datensicherung auf eine externe Festplatte kann das Snapshot wieder verworfen werden.

    Logical Volumes löschen
    lvremove /dev/GROUP/VOLUME
    Hier wird ein Logical Volume mit dem Namen VOLUME in der Gruppe GROUP gelöscht.

    So, jetzt sind Sie fit ((ง •̀_•́)ง) oder erschlagen (¯\_(ツ)_/¯) von den vielen Befehlen zur Erstellung bzw. Änderung eines LVM. Probieren Sie zunächst einmal alles auf einem Testsystem aus, Sie können viel mit diesen Befehlen anrichten! Oder bleiben Sie bei den Möglichkeiten die Ihnen die Distribution von SUSE bzw. openSUSE bietet (( ͡° ͜ʖ ͡°))!