Getty Images/iStockphoto

So verwalten Sie Storage mit Linux Logical Volume Manager

Mit dem Linux Logical Volume Manager lässt sich Speicher flexibel verwalten, was für Server essenziell ist, die eine große Anzahl von Dateien oder anderen Ressourcen hosten.

Seit Jahrzehnten sind Systemadministratoren gezwungen, die Speicherkapazität auf Basis der physischen Festplatten und Partitionen zu betrachten. Das änderte sich mit der Einführung des Logical Volume Manager (LVM) von Linux.

Wenn Sie zuvor einen Speicherbereich von 120 GB benötigten, brauchten Sie eine physische Festplatte mit einer Partition von mindestens 120 GB. Der Linux Logical Volume Manager bietet Administratoren weitaus mehr Flexibilität bei der Speicherverwaltung.

Der vorliegende Ratgeber beleuchtet die Konzepte und Komponenten des Logical Volume Managers, darunter physische und logische Volumes, sowie Beispielbefehle, die Ihnen bei der Verwaltung Ihres Speicherplatzes helfen.

Ein Tipp vorweg: Benutzer benötigen Root- oder Sudo-Rechte auf dem System.

Was ist der Logical Volume Manager?

Der Linux Logical Volume Manager ermöglicht es, Speicherplatz über mehrere Partitionen und Laufwerke hinweg zu verteilen, um eine flexiblere Nutzung zu ermöglichen. Speicherlaufwerke bestimmen nicht mehr die Größe des logischen Speicherbereichs, und Administratoren können Kapazitäten einfach hinzufügen oder entfernen.

Der Logical Volume Manager ordnet Geräte im Hintergrund zu und zeigt den Benutzern einen einheitlichen Speicherbereich an. Administratoren können ein 90-GB-Speichervolumen aus drei Festplatten mit jeweils 30 GB oder einer anderen verfügbaren Speicheraufteilung erstellen, zum Beispiel einer Festplatte mit 10 GB, einer weiteren mit 20 GB und einer dritten mit 60 GB.

Anforderungen

Zu den Anforderungen für den Linux Logical Volume Manager gehören eine aktuelle Linux-Distribution und mindestens ein Laufwerk. Um jedoch die Flexibilität des Logical Volume Managers voll auszuschöpfen, benötigen Sie mindestens zwei Laufwerke.

Wenn Sie einen bestehenden Server von einem Standard-Partitionierungsschema auf den Logical Volume Manager migrieren, sichern Sie die Benutzerdaten, implementieren Sie den Manager und stellen Sie anschließend den Inhalt wieder her. Wenn Sie nur mit Test-VMs oder -Computern experimentieren, installieren Sie Linux und stellen Sie mindestens zwei Speicherfestplatten zur Verfügung.

Komponenten

Die Struktur des Linux Logical Volume Managers besteht aus drei Hauptkomponenten:

1. Physische Volumes (Physical Volumes, PVs). Die Speicherkapazität wird dem Logical Volume Manager Device Mapper zugewiesen. Dabei kann es sich um physische Festplatten, Festplattenpartitionen oder SAN-LUNs handeln.

2. Volume-Gruppen (Volume Groups, VGs). Sie bestehen aus einem oder mehreren PVs, die einen potenziellen Gesamtspeicherplatz darstellen, der sich über mehrere Speicherlaufwerke erstrecken kann. Sie weisen diesen potenziellen Speicherplatz logischen Volumes zu.

3. Logische Volumes (Logical Volumes, LVs). Diese virtuellen Partitionen werden aus einer VG herausgelöst. Fügen Sie ein Dateisystem wie ext4 oder XFS hinzu und mounten Sie dann den Speicherplatz, auf den Benutzer zugreifen können.

Benutzer können sich die Komponenten als Schichten vorstellen. Die Grundlage bilden ein oder mehrere PVs, denen Speicherplatz auf Speicherlaufwerken zugewiesen wird. Als Nächstes kommen VGs, die aus mindestens einem PV bestehen. Der Speicherplatz wird aus den VGs in LVs aufgeteilt, die Benutzer als nutzbaren Speicherplatz sehen.

Verwenden Sie den Befehl lsblk, um die verfügbaren Speicherlaufwerke anzuzeigen.

Abbildung 1: Hier sind die Ergebnisse von lsblk mit dem sdb-Laufwerk hervorgehoben.
Abbildung 1: Hier sind die Ergebnisse von lsblk mit dem sdb-Laufwerk hervorgehoben.

So erstellen Sie physische Volumes

Sie erstellen Ihren Linux Logical Volume Manager-Speicherplatz von der physischen Ebene aus. Beginnen Sie mit freiem Speicherplatz auf einer physischen Festplatte oder Partition. Sichern Sie vorhandene Daten, um sie nach Abschluss des Vorgangs wiederherzustellen.

Sie müssen die Kapazität als Speicherplatz festlegen, den der Device Mapper verwalten soll. Die PV-Befehle beginnen mit der Zeichenfolge pv und sind recht logisch:

  • pvcreate. Initialisieren Sie Speicherplatz als PV.
  • pvdisplay. Listen Sie die physischen Attribute eines PV auf.
  • pvs. Zeigt PV-Informationen an.
  • pvscan. Sucht nach als PVs konfiguriertem Speicher.
  • pvremove. Entfernt ein PV aus der Verwaltung durch den Logical Volume Manager.

Wenn Sie beispielsweise zwei physische Festplatten als PVs für die Verwaltung durch den Logical Volume Manager festlegen müssen, geben Sie die folgenden Befehle ein.

sudo pvcreate /dev/sdb
sudo pvcreate /dev/sdc

Überprüfen Sie Ihre Arbeit mit den Befehlen pvs und pvdisplay.

Abbildung 2: Der Befehl pvcreate weist eine Partition als physisches LVM-Volume zu.
Abbildung 2: Der Befehl pvcreate weist eine Partition als physisches LVM-Volume zu.

Sichern Sie vorhandene Daten, wenn Sie Änderungen an Partitionen oder Festplattenstrukturen vornehmen. In diesem Fall löscht der Befehl pvcreate alle Daten auf /dev/sdb1.

So erstellen Sie eine Volume-Gruppe

Nachdem der Linux Logical Volume Manager nun über PVs verfügt, besteht der nächste Schritt darin, diesen Speicherplatz in einer VG zusammenzufassen. VG-Befehle beginnen mit vg.

Hier sind einige gängige VG-Verwaltungsbefehle:

  • vgcreate. Erstellen Sie eine VG aus einem oder mehreren PVs.
  • vgdisplay. Listen Sie VG-Attribute auf.
  • vgs. Zeigen Sie VG-Informationen an.
  • vgremove. Entfernen Sie eine VG aus der Verwaltung des Logical Volume Managers, um die PVs für andere Zwecke freizugeben.

Die Syntax des Befehls vgcreate umfasst einen Namen für die neue VG und die darin enthaltenen PVs. Verwenden Sie den folgenden Befehl, um eine neue VG mit dem Namen projects_vg aus dem vorhandenen PV /dev/sdb1 zu erstellen.

sudo vgcreate projects_vg /dev/sdb1

Zeigen Sie die Ergebnisse mit den Befehlen vgs und vgdisplay an.

Ein einzelnes System unterstützt mehrere VGs, was für große Dateiserver ein wichtiger Aspekt ist.

Abbildung 3: Die Befehle vgcreate und vgs erstellen und zeigen eine neue Volume-Gruppe an.
Abbildung 3: Die Befehle vgcreate und vgs erstellen und zeigen eine neue Volume-Gruppe an.

So erstellen Sie logische Volumes

Erstellen Sie ein oder mehrere LVs aus dem aggregierten Speicherplatz einer VG. Sie behandeln diese LVs wie herkömmliche Partitionen, indem Sie ein Dateisystem hinzufügen und sie für den Benutzerzugriff an einen Mount-Punkt (Mount Point) anhängen. Wie PVs und VGs beginnen auch die LV-Verwaltungsbefehle mit lv.

Hier sind einige gängige Befehlsbeispiele:

  • lvcreate. Erstellen Sie ein LV aus einer VG.
  • lvdisplay. Zeigen Sie LV-Attribute an.
  • lvs. Zeigt LV-Informationen an.
  • lvremove. Hebt die Zuweisung eines LV auf und gibt die Kapazität an die VG zurück, aus der es erstellt wurde.

Sie können mehrere LVs auf einem einzigen System konfigurieren. Jedes kann Speicherplatz aus derselben oder aus verschiedenen VGs verwenden.

Geben Sie die folgenden Befehle ein, um ein LV aus einer vorhandenen VG zu erstellen und anzuzeigen.

sudo lvcreate --name projects --size 3G projects_vg
sudo lvdisplay

Die Option --name benennt das neue LV, wählen Sie daher einen aussagekräftigen Namen. Das Flag --size legt die Gesamtkapazität fest. Es gibt viele Möglichkeiten, die Größe festzulegen, lesen Sie daher diese Dokumentation.

Den Speicherplatz formatieren und mounten

Verwalten Sie die LVs für die verbleibenden Schritte wie Standardpartitionen. Um sie als Speicher zu verwenden, müssen Sie ein Dateisystem hinzufügen, einen Mount-Punkt erstellen und sie mounten.

Zeigen Sie zunächst die LV-Einstellungen mit dem Befehl lvdisplay an.

sudo lvdisplay
Abbildung 4: Der Befehl lvdisplay zeigt LV-Informationen an. Notieren Sie sich den LV-Pfad für den nächsten Schritt.
Abbildung 4: Der Befehl lvdisplay zeigt LV-Informationen an. Notieren Sie sich den LV-Pfad für den nächsten Schritt.

Identifizieren Sie den Wert LV Path. Sie verwenden diesen im nächsten Schritt mit dem Befehl mkfs.

Installieren Sie das Dateisystem ext4 auf dem LV /dev/projects_vg/projects mit diesem Befehl.

sudo mkfs.ext4 /dev/projects_vg/projects
Abbildung 5: Der Standardbefehl mkfs installiert ein Dateisystem auf dem LV.
Abbildung 5: Der Standardbefehl mkfs installiert ein Dateisystem auf dem LV.

Erstellen Sie einen Mount Point mit den folgenden Befehlen.

sudo mkdir /projects

Mounten Sie das LV manuell im Verzeichnis /projects.

mount /dev/projects_vg/projects /projects

Überprüfen Sie mit den Befehlen du -h und df -h, ob der neue Speicherplatz verfügbar ist.

sudo du -h /projects
sudo df -h /projects
Abbildung 6: Erstellen Sie einen Mount-Punkt und mounten Sie dort das neue LV.
Abbildung 6: Erstellen Sie einen Mount-Punkt und mounten Sie dort das neue LV.

Erweitern und Verkleinern des Speicherplatzes

Einer der größten Vorteile des Linux Logical Volume Managers ist die Möglichkeit, die Speicherkapazität zu verkleinern oder zu erweitern, ohne Daten zu verlieren oder das System neu zu starten.

Angenommen, Sie haben den benötigten Speicherplatz unterschätzt und müssen nun ohne Ausfallzeiten mehr Speicherplatz hinzufügen. Dazu sind folgende Schritte erforderlich:

1. Installieren Sie physisch ein Laufwerk und identifizieren Sie es mit lsblk – nehmen wir in diesem Beispiel an, es handelt sich um /dev/sdc.

2. Weisen Sie das Laufwerk mit dem Befehl pvcreate als PV zu.

3. Entkoppeln Sie das vorhandene LV mit dem Befehl umount vom Mount-Punkt ab.

4. Fügen Sie das neue PV mit dem Befehl vgextend zur vorhandenen VG hinzu.

5. Erweitern Sie das vorhandene LV mit dem Befehl lvextend.

6. Erweitern Sie das ext4-Dateisystem mit dem Befehl resize2fs.

7. Mounten Sie das LV mit dem Befehl mount wieder am Mount-Punkt.

8. Überprüfen Sie mit den Befehlen df -h und lvdisplay, ob der Vorgang erfolgreich war.

Die Befehle des Logical Volume Managers zum Erweitern des Speichers unter Verwendung von 100 Prozent der Größe des neuen PV sehen wie folgt aus.

sudo pvcreate /dev/sdc1
sudo vgextend /dev/projects_vg /dev/sdc
sudo lvextend -l +100%FREE /dev/projects_vg/projects
sudo resize2fs /dev/projects_vg/projects

Das Beste daran ist, dass keiner dieser Schritte einen Neustart des Systems erfordert, abgesehen von der möglichen physischen Installation der neuen Festplatte. Das XFS-Dateisystem verfügt über ähnliche Funktionen mit dem Befehl xfs_growfs. Das Dateisystem XFS kann ohne spezielle Tools nicht verkleinert werden, nur vergrößert, ein Verkleinern ist nativ nicht möglich.

Wenn Sie einem LV mehr Speicherplatz zugewiesen haben, als es benötigt, können Sie entscheiden, wie viel Speicherplatz entfernt werden soll, das Dateisystem verkleinern und das LV reduzieren. Verwenden Sie zunächst den Befehl resize2fs, um das Dateisystem zu verkleinern, und verkleinern Sie dann das LV mit dem Befehl lvreduce. Bei Verkleinerungen (resize2fs, lvreduce) ist allerdings Vorsicht geboten, da Datenverlust drohen kann, wenn der Ablauf nicht korrekt durchgeführt wird.

Es gilt generell zu beachten, dass sich eine vollständige Datensicherung für produktive Systeme empfiehlt, bevor PVs erstellt oder LV-Größen geändert werden. Manche Distributionen verwenden standardmäßig die systemd-automount-Funktion und die Verwaltung von Mount Points sollte dazu passen.

Erfahren Sie mehr über Storage Management