Einführung in LVM

Tortenstück

Feste Partitionen auf Linux-Systemen lassen sich mit Tools wie Fdisk schnell erstellen, erscheinen aber immer im schlechtestmöglichen Moment auf einmal falsch aufgeteilt oder zu klein. LVM verursacht bei der Installation ein wenig mehr Aufwand, der sich bald auszahlt.
Wer sein System permanent überwacht, hat den Grundstein dafür gelegt Engpässe zu vermeiden und Fehler frühzeitig zu erkennen. Neben dem Platzhirsch Nagios ... (mehr)

Wenn auf einem klassisch partitionierten System der Platz in einer Partition knapp wird, hat der Admin zunächst zwei Möglichkeiten. Er kann einen weiteren Datenträger auf einem neuen Mountpunkt einbinden und sich damit abfinden, dass er seine Pfade anpassen oder mit Alias-Konstruktionen arbeiten muss. Oder er ersetzt die Platte(n) durch größere und spielt ein Backup des Gesamtsystems auf die neuen Datenträger ein. Bei dieser Vorgehensweise steht das System für eine längere Zeit nicht zur Verfügung, und die Wahrscheinlichkeit ist hoch, dass auch die neuen Platten irgendwann wieder zu klein sind. LVM eröffnet einen Ausweg aus diesem Dilemma. Es legt sich als logische Schicht zwischen die physischen Datenträger oder Partitionen und das Dateisystem.

Bevor dieser Artikel das an einem praktischen Beispiel demonstriert, lernen Sie die wichtigsten Begriffe der LVM-Welt kennen. Physical Volumes (PVs) sind Block-Devices, also eine ganze Festplatte oder eine Partition. Damit LVM ein PV nutzen kann, muss es mit einem Befehl initialisiert werden, den wir gleich kennenlernen werden. Dabei wird ein LVM-Label und einige Metadaten auf das PV geschrieben. Das PV wird dabei in gleich große Einheiten unterteilt (4 MByte per Default), die Physical Extents (PE) heißen. Ein PE stellt die kleinstmögliche allokierbare Datenmenge dar. Abbildung 1 zeigt die Zusammenhänge grafisch.

Wenn ein oder mehrere Physical Volumes existieren, können Sie daraus eine Volume Group (VG) erstellen. Auch sie besteht aus vielen kleinen Einheiten, den Logical Extents. In der Volume Group können die Logical Extents auf Physical Extents verweisen, die auf unterschiedlichen physischen Datenträgern liegen – genau diese Fähigkeit macht die Flexibilität und den Charme von LVM aus.

Die fertige Volume Group ist der Speicherplatz-Pool, aus dem Sie später den Platz für Ihre logischen Partitionen (Logical Volumes, LV) schöpfen werden. Ein Logical Volume wird mit einem Dateisystem formatiert und steht dann dem Betriebssystem zur Verfügung.

Die Befehle für die Arbeit mit den drei Ebenen PV, VG und LV sind konsequent nach dem gleichen Schema benannt, etwa »pvcreate« , »vgcreate« , »lvcreate« oder »pvscan« , »vgscan« und »lvscan« .

Ein praktisches Beispiel

Das Beispiel-System hat zwei Festplatten (oder SSDs, für LVM ist das unerheblich) zu je 100 GByte. Sie hören auf »/dev/sda« und »/dev/sdb« . Auf »/dev/sda« sind drei Partitionen angelegt. Die erste, »sda1« , wird für den Auslagerungsspeicher (Swap) genutzt und ist fünf GByte groß. Das Wurzel-Dateisystem »/« liegt auf »sda2« und bekommt 20 GByte. Die restlichen 75 Gigabyte bekommt die Partition »sda3« . Sie soll per LVM mit der gesamten zweiten Festplatte »sdb« zusammengefasst werden. Das so entstandene Logical Volume mit einer Größe von 175 GBbyte soll dem System unter »/backup« zur Verfügung gestellt werden.

Wichtig ist, dass auf den Platten oder Partitionen, die LVM benutzen soll, noch kein Dateisystem angelegt ist. Ist das der Fall, müssen Sie es zunächst mithilfe von »fdisk« wieder entfernen. Jetzt bereiten Sie mit dem Kommando »pvcreate« die Partitionen »/dev/sda3« und »/dev/sbd« für die Benutzung mit LVM vor:

pvcreate /dev/sda3 /dev/sdb

Im Erfolgsfall antwortet das System mit:

Physical volume "/dev/sda3" successfullycreated
Physical volume "/dev/sdb" successfullycreated

Wenn an dieser Stelle etwas schiefgeht, liegt es fast immer daran, dass bereits ein Dateisystem auf der Partition existiert. Der Befehl »pvscan« gibt eine Liste aller Physical Volumes aus ( Listing 1 ).

Listing 1

pvscan

 

Wer mehr Details sehen möchte, benutzt den Befehl »pvdisplay« . Er liefert zusätzlich Informationen über die Anzahl der Physical Extents, wie viel Platz die Metadaten belegen, die UUID und mehr.

Im nächsten Schritt fassen Sie die frisch erstellten Physical Volumes zu einer Volume Group zusammen, das Kommando dazu lautet – wenig überraschend – »vgcreate« .

vgcreate vg_backup /dev/sda3 /dev/sdb

Vgcreate erwartet als ersten Parameter den Namen der Volume Group, den Sie frei wählen können – jedenfalls in gewissen Grenzen. Auf Umlaute und exotische Sonderzeichen sollte man verzichten, Binde- und Unterstriche sind aber erlaubt. Nach dem Namen folgen in beliebiger Reihenfolge die Bezeichner der Physical Volumes, die der neuen Volume Group hinzugefügt werden sollen. Analog zu den Befehlen »pvscan« und »pvdisplay« , die Sie schon kennengelernt haben, können Sie sich mit »vgscan« und »vgdisplay« Informationen über die Volume Groups anzeigen lassen.

Aus dem Platz, den die Volume Group bietet, können Sie nun ein oder mehrere Logical Volumes anlegen – im Beispiel soll es ein einziges LV ein, das den Namen »lv_backup« erhalten soll, mit einer Größe von 170 GByte. Die vollen 175 GByte stehen nicht zur Verfügung, weil LVM etwas Platz für seine Verwaltungsinformationen benötigt.

lvcreate -L 170G -n lv_backup vg_backup

Und selbstredend gibt es auch auf dieser Ebene auskunftsfreudige Helferlein, nämlich »lvscan« und »lvdisplay« . Der letzte Schritt besteht im Anlegen eines Dateisystems. In diesem Beispiel soll Ext4 zum Einsatz kommen:

mkfs -t ext4 /dev/vg_backup/lv_backup

Das Dateisystem können Sie jetzt mounten und sofort benutzen. Damit das Ganze auch reboot-fest ist, tragen Sie es aber besser in die Datei »/etc/fstab« ein.

/dev/vg_backup/lv_backup /backup ext4 errors=remount-ro 0 1

Mehr Platz

Irgendwann reichen die 170 GByte nicht mehr aus, eine Erweiterung steht an. Sie bauen also eine weitere Platte ein – im Beispiel soll sie 500 GByte groß sein – und nutzen LVM, um den zusätzlichen Plattenplatz unterbrechungsfrei zur Verfügung stellen zu können.

Die folgenden Schritte sind in der Praxis erprobt und erfahrungsgemäß unproblematisch, ein aktuelles Backup zu haben, ist aber immer eine gute Idee. Das neue Laufwerk, es heißt »/dev/sdc« , muss zunächst für LVM initialisiert werden:

pvcreate /dev/sdc

Danach fügen Sie es zur bereits exisitierenden Volume Group »vg_backup« hinzu. Dazu benutzen Sie den Befehl »vgextend« (extend = erweitern):

vgextend vg_backup /dev/sdc

Mit dem Kommando »vgdisplay« können Sie sich davon überzeugen, dass die Erweiterung der Volume Group geklappt hat:

vgdisplay -v vg_backup

Das Logical Volume und das Dateisystem wissen davon aber noch nichts. Dem Logical Volume fügen Sie den frischen Speicherplatz mit

lvextend -L 500G /dev/vg_backup/lv_backup

hinzu. Zuletzt kommt das Filesystem an die Reihe. Zum Glück lassen sich die meisten modernen Dateisysteme im laufenden Betrieb vergrößern. Für Ext4 erledigt das der Befehl

resize2fs /dev/vg_backup/lv_backup

Wenn der Befehl, wie hier, ohne weitere Parameter angegeben wird, vergrößert er das Filesystem auf die maximale Größe, die das logische Volume hergibt.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023