Ein Linux-Benutzerhandbuch zur Verwaltung logischer Volumes
Die Verwaltung von Festplattenplatz war schon immer eine wichtige Aufgabe für Systemadministratoren. Wenn der Speicherplatz auf der Festplatte knapp wurde, war das früher der Beginn einer langen und komplexen Reihe von Aufgaben, um den verfügbaren Platz auf einer Festplattenpartition zu vergrößern. Außerdem war es erforderlich, das System vom Netz zu nehmen. Dazu gehörte in der Regel der Einbau einer neuen Festplatte, das Booten in den Wiederherstellungs- oder Einzelbenutzermodus, das Anlegen einer Partition und eines Dateisystems auf der neuen Festplatte, die Verwendung von temporären Einhängepunkten, um die Daten von dem zu kleinen Dateisystem auf das neue, größere zu verschieben, das Ändern des Inhalts der Datei /etc/fstab, um den korrekten Gerätenamen für die neue Partition wiederzugeben, und ein Neustart, um das neue Dateisystem am korrekten Einhängepunkt wieder einzuhängen.
Ich muss Ihnen sagen, dass ich mich, als LVM (Logical Volume Manager) zum ersten Mal in Fedora Linux auftauchte, ziemlich stark dagegen gewehrt habe. Meine erste Reaktion war, dass ich diese zusätzliche Abstraktionsebene zwischen mir und den Festplatten nicht brauche. Es stellte sich heraus, dass ich falsch lag und dass die logische Datenträgerverwaltung sehr nützlich ist.
LVM ermöglicht eine sehr flexible Verwaltung des Festplattenplatzes. Es bietet Funktionen wie die Möglichkeit, einem logischen Volume und seinem Dateisystem Speicherplatz hinzuzufügen, während das Dateisystem gemountet und aktiv ist, und es erlaubt die Zusammenfassung mehrerer physischer Festplatten und Partitionen zu einer einzigen Volume-Gruppe, die dann in logische Volumes unterteilt werden kann.
Der Volume-Manager erlaubt auch die Reduzierung des einem logischen Volume zugewiesenen Speicherplatzes, aber es gibt ein paar Voraussetzungen. Erstens muss das Volume ausgekoppelt sein. Zweitens muss das Dateisystem selbst verkleinert werden, bevor das Volume, auf dem es sich befindet, verkleinert werden kann.
Es ist wichtig zu beachten, dass das Dateisystem selbst eine Größenänderung zulassen muss, damit diese Funktion funktioniert. Die Dateisysteme EXT2, 3 und 4 erlauben alle sowohl offline (nicht eingehängt) als auch online (eingehängt) eine Größenänderung, wenn die Größe eines Dateisystems erhöht wird, und eine offline Größenänderung, wenn die Größe reduziert wird. Sie sollten die Details der Dateisysteme, die Sie verwenden wollen, überprüfen, um sicherzustellen, ob sie überhaupt in der Größe verändert werden können und vor allem, ob sie online in der Größe verändert werden können.
Erweiterung eines Dateisystems im laufenden Betrieb
Ich lasse neue Distributionen immer gerne ein paar Tage oder Wochen in einer virtuellen VirtualBox-Maschine laufen, um sicherzustellen, dass ich keine verheerenden Probleme bekomme, wenn ich sie auf meinen Produktionsmaschinen installiere. Eines Morgens vor ein paar Jahren begann ich, eine neu veröffentlichte Version von Fedora in einer virtuellen Maschine auf meiner primären Workstation zu installieren. Ich dachte, dass ich dem Host-Dateisystem, in dem die VM installiert wurde, genügend Festplattenplatz zugewiesen hatte. Dem war aber nicht so. Ungefähr nach einem Drittel der Installation ging mir der Speicherplatz auf dem Dateisystem aus. Glücklicherweise erkannte VirtualBox den Zustand des fehlenden Speicherplatzes und hielt die virtuelle Maschine an und zeigte sogar eine Fehlermeldung an, die auf die genaue Ursache des Problems hinwies.
Bei diesem Problem handelte es sich nicht um eine zu kleine virtuelle Festplatte, sondern um das logische Volume auf dem Host-Computer, dem der Speicherplatz ausging, so dass die virtuelle Festplatte, die zur virtuellen Maschine gehörte, nicht genug Platz hatte, um sich auf dem logischen Volume des Hosts zu erweitern.
Da die meisten modernen Distributionen standardmäßig das Logical Volume Management verwenden und ich auf der Volume Group noch etwas freien Platz zur Verfügung hatte, konnte ich dem entsprechenden logischen Volume zusätzlichen Speicherplatz zuweisen und dann das Dateisystem des Hosts on the fly erweitern. Das bedeutet, dass ich nicht die gesamte Festplatte neu formatieren und das Betriebssystem neu installieren oder gar neu starten musste. Ich habe einfach einen Teil des verfügbaren Speicherplatzes dem entsprechenden logischen Volume zugewiesen und die Größe des Dateisystems geändert – und das alles, während das Dateisystem online war und das laufende Programm, die virtuelle Maschine, noch das Dateisystem des Hosts verwendete. Nachdem ich die Größe des logischen Volumens und des Dateisystems angepasst hatte, nahm ich die virtuelle Maschine wieder in Betrieb und die Installation wurde fortgesetzt, als ob keine Probleme aufgetreten wären.
Auch wenn Ihnen diese Art von Problem vielleicht noch nie passiert ist, ist es schon vielen Leuten passiert, dass der Speicherplatz knapp wurde, während ein wichtiges Programm lief. Und obwohl viele Programme, insbesondere Windows-Programme, nicht so gut geschrieben und belastbar sind wie VirtualBox, ermöglichte das Linux Logical Volume Management eine Wiederherstellung, ohne dass Daten verloren gingen und ohne dass die zeitaufwändige Installation neu gestartet werden musste.
LVM-Struktur
Die Struktur einer Logical Volume Manager-Festplattenumgebung ist in Abbildung 1 unten dargestellt. Logical Volume Management ermöglicht die Zusammenfassung mehrerer einzelner Festplatten und/oder Plattenpartitionen zu einer einzigen Volume-Gruppe (VG). Diese Volume-Gruppe kann dann in logische Volumes (LV) unterteilt oder als ein einziges großes Volume verwendet werden. Auf einem logischen Volume können dann reguläre Dateisysteme wie EXT3 oder EXT4 erstellt werden.
In Abbildung 1 wurden zwei komplette physische Festplatten und eine Partition einer dritten Festplatte zu einer einzigen Volume-Gruppe zusammengefasst. Aus dem Platz in der Volume-Gruppe wurden zwei logische Volumes erstellt, und auf jedem der beiden logischen Volumes wurde ein Dateisystem, z. B. ein EXT3- oder EXT4-Dateisystem, erstellt.
Abbildung 1: LVM erlaubt es, Partitionen und ganze Festplatten zu Volume Groups zusammenzufassen.
Das Hinzufügen von Speicherplatz zu einem Host ist relativ einfach, wird aber meiner Erfahrung nach relativ selten gemacht. Die grundlegenden Schritte, die benötigt werden, sind im Folgenden aufgeführt. Sie können entweder eine komplett neue Volume-Gruppe erstellen oder den neuen Speicherplatz zu einer bestehenden Volume-Gruppe hinzufügen und entweder ein bestehendes logisches Volume erweitern oder ein neues erstellen.
Hinzufügen eines neuen logischen Volumes
Es gibt Zeiten, in denen es notwendig ist, ein neues logisches Volume zu einem Host hinzuzufügen. Nachdem ich zum Beispiel bemerkt hatte, dass das Verzeichnis mit den virtuellen Festplatten für meine virtuellen VirtualBox-Maschinen das /home-Dateisystem füllte, beschloss ich, ein neues logisches Volume zu erstellen, in dem die Daten der virtuellen Maschinen, einschließlich der virtuellen Festplatten, gespeichert werden sollten. Dies würde eine Menge Platz in meinem /home-Dateisystem freigeben und mir außerdem erlauben, den Speicherplatz für die VMs unabhängig zu verwalten.
Die grundlegenden Schritte zum Hinzufügen eines neuen logischen Volumes sind wie folgt.
- Wenn nötig, installieren Sie eine neue Festplatte.
- Optional: Erstellen Sie eine Partition auf der Festplatte.
- Erstellen Sie ein physisches Volume (PV) der kompletten Festplatte oder eine Partition auf der Festplatte.
- Zuordnen Sie das neue physische Volume zu einer bestehenden Volume-Gruppe (VG) oder erstellen Sie eine neue Volume-Gruppe.
- Erstellen Sie ein neues logisches Volume (LV) aus dem Platz in der Volume-Gruppe.
- Erstellen Sie ein Dateisystem auf dem neuen logischen Volume.
- Fügen Sie geeignete Einträge in /etc/fstab zum Einhängen des Dateisystems hinzu.
- Mounten Sie das Dateisystem.
Nun zu den Details. Die folgende Sequenz ist einem Beispiel entnommen, das ich als Laborprojekt verwendet habe, als ich über Linux-Dateisysteme unterrichtete.
Beispiel
Dieses Beispiel zeigt, wie man die Befehlszeilenschnittstelle (CLI) verwendet, um eine vorhandene Volume-Gruppe zu erweitern, um ihr mehr Speicherplatz hinzuzufügen, ein neues logisches Volume in diesem Speicherplatz anzulegen und ein Dateisystem auf dem logischen Volume zu erstellen. Dieser Vorgang kann auf einem laufenden, gemounteten Dateisystem durchgeführt werden.
WARNUNG: Nur die Dateisysteme EXT3 und EXT4 können auf einem laufenden, gemounteten Dateisystem im laufenden Betrieb in der Größe verändert werden. Viele andere Dateisysteme, einschließlich BTRFS und ZFS, können nicht in der Größe verändert werden.
Festplatte einbauen
Wenn auf der/den vorhandenen Festplatte(n) im System nicht genügend Platz in der Volume-Gruppe vorhanden ist, um die gewünschte Menge an Speicherplatz hinzuzufügen, kann es notwendig sein, eine neue Festplatte hinzuzufügen und den Platz zu schaffen, um ihn dem Logical Volume hinzuzufügen. Installieren Sie zunächst die physische Festplatte und führen Sie dann die folgenden Schritte aus.
Physikalisches Volume von Festplatte erstellen
Zunächst muss ein neues Physikalisches Volume (PV) erstellt werden. Verwenden Sie dazu den folgenden Befehl, der davon ausgeht, dass die neue Festplatte als /dev/hdd zugewiesen ist.
pvcreate /dev/hdd
Es ist nicht notwendig, eine wie auch immer geartete Partition auf der neuen Festplatte anzulegen. Die Erstellung des physikalischen Volumens, das vom Logical Volume Manager erkannt wird, kann auf einer neu installierten Raw-Disk oder auf einer Linux-Partition vom Typ 83 erfolgen. Wenn Sie die gesamte Festplatte nutzen wollen, bietet das vorherige Anlegen einer Partition keine besonderen Vorteile und verbraucht Speicherplatz für Metadaten, der ansonsten als Teil des PV genutzt werden könnte.
Existierende Volume-Gruppe erweitern
In diesem Beispiel werden wir eine bestehende Volume-Gruppe erweitern, anstatt eine neue zu erstellen; Sie können dies auf beide Arten tun. Nachdem das physische Volume erstellt wurde, erweitern Sie die bestehende Volume Group (VG), um den Speicherplatz auf dem neuen PV aufzunehmen. In diesem Beispiel heißt die bestehende Volume Group MyVG01.
vgextend /dev/MyVG01 /dev/hdd
Erstellen des Logical Volume
Erstellen Sie zunächst das Logical Volume (LV) aus dem vorhandenen freien Speicherplatz innerhalb der Volume Group. Der folgende Befehl erstellt ein LV mit einer Größe von 50 GB. Der Name der Volume-Gruppe ist MyVG01 und der Name des logischen Volumes ist Stuff.
lvcreate -L +50G --name Stuff MyVG01
Erstellen des Dateisystems
Beim Erstellen des logischen Volumes wird das Dateisystem nicht erstellt. Diese Aufgabe muss separat durchgeführt werden. Der folgende Befehl erstellt ein EXT4-Dateisystem, das zu dem neu erstellten Logical Volume passt.
mkfs -t ext4 /dev/MyVG01/Stuff
Ein Dateisystem-Label hinzufügen
Das Hinzufügen eines Dateisystem-Labels erleichtert die spätere Identifizierung des Dateisystems im Falle eines Absturzes oder anderer Probleme mit der Festplatte.
e2label /dev/MyVG01/Stuff Stuff
Dateisystem einhängen
An dieser Stelle können Sie einen Einhängepunkt erstellen, einen entsprechenden Eintrag in die Datei /etc/fstab einfügen und das Dateisystem einhängen.
Sie sollten auch überprüfen, ob das Volume korrekt erstellt wurde. Dazu können Sie die Befehle df, lvs und vgs verwenden.
Anpassen der Größe eines logischen Volumes in einem LVM-Dateisystem
Die Notwendigkeit, die Größe eines Dateisystems zu ändern, gibt es seit den Anfängen der ersten Unix-Versionen und ist auch unter Linux nicht verschwunden. Mit dem Logical Volume Management ist es jedoch einfacher geworden.
- Bei Bedarf installieren Sie eine neue Festplatte.
- Optional: Erstellen Sie eine Partition auf der Festplatte.
- Erstellen Sie ein physisches Volume (PV) der kompletten Festplatte oder eine Partition auf der Festplatte.
- Zuordnen Sie das neue physische Volume zu einer bestehenden Volume-Gruppe (VG) oder erstellen Sie eine neue Volume-Gruppe.
- Erstellen Sie ein oder mehrere logische Volumes (LV) aus dem Speicherplatz in der Volume-Gruppe oder erweitern Sie ein vorhandenes logisches Volume mit einem Teil oder dem gesamten neuen Speicherplatz in der Volume-Gruppe.
- Wenn Sie ein neues logisches Volume erstellt haben, erstellen Sie ein Dateisystem darauf. Wenn Sie einem vorhandenen logischen Volume Speicherplatz hinzufügen, verwenden Sie den Befehl resize2fs, um das Dateisystem zu vergrößern, um den Speicherplatz im logischen Volume zu füllen.
- Fügen Sie entsprechende Einträge in /etc/fstab zum Einhängen des Dateisystems hinzu.
- Mounten Sie das Dateisystem.
Beispiel
In diesem Beispiel wird beschrieben, wie Sie die Größe eines vorhandenen logischen Volumes in einer LVM-Umgebung mithilfe der Befehlszeile ändern. Es fügt dem Dateisystem /Stuff etwa 50 GB an Speicherplatz hinzu. Dieses Verfahren kann auf einem gemounteten, aktiven Dateisystem nur mit dem Linux 2.6-Kernel (und höher) und EXT3- und EXT4-Dateisystemen verwendet werden. Ich empfehle Ihnen nicht, dies auf einem kritischen System zu tun, aber es ist möglich und ich habe es schon oft getan; sogar auf dem Root-Dateisystem (/). Verwenden Sie Ihr Urteilsvermögen.
WARNUNG: Nur die Dateisysteme EXT3 und EXT4 können auf einem laufenden, gemounteten Dateisystem im laufenden Betrieb in der Größe verändert werden. Viele andere Dateisysteme, einschließlich BTRFS und ZFS, können nicht in der Größe verändert werden.
Installieren der Festplatte
Wenn auf der/den vorhandenen Festplatte(n) im System nicht genug Platz ist, um die gewünschte Menge an Speicherplatz hinzuzufügen, kann es notwendig sein, eine neue Festplatte hinzuzufügen und den Platz zu schaffen, um ihn dem Logical Volume hinzuzufügen. Installieren Sie zunächst die physische Festplatte und führen Sie dann die folgenden Schritte durch.
Erstellen eines physischen Volumens von der Festplatte
Zunächst muss ein neues physisches Volumen (PV) erstellt werden. Verwenden Sie dazu den folgenden Befehl, der davon ausgeht, dass die neue Festplatte als /dev/hdd zugewiesen ist.
pvcreate /dev/hdd
Es ist nicht notwendig, auf der neuen Festplatte irgendeine Partition zu erstellen. Die Erstellung des physikalischen Volumens, das vom Logical Volume Manager erkannt wird, kann auf einer neu installierten Raw-Disk oder auf einer Linux-Partition vom Typ 83 erfolgen. Wenn Sie die gesamte Festplatte nutzen wollen, bietet das vorherige Anlegen einer Partition keine besonderen Vorteile und verbraucht Speicherplatz für Metadaten, der ansonsten als Teil des PV genutzt werden könnte.
PV zu bestehender Volume Group hinzufügen
Für dieses Beispiel werden wir das neue PV zur Erweiterung einer bestehenden Volume Group verwenden. Nachdem das Physical Volume erstellt wurde, erweitern Sie die bestehende Volume Group (VG), um den Platz auf dem neuen PV aufzunehmen. In diesem Beispiel heißt die vorhandene Volume Group MyVG01.
vgextend /dev/MyVG01 /dev/hdd
Erweitern Sie das logische Volume
Erweitern Sie das logische Volume (LV) aus dem vorhandenen freien Speicherplatz innerhalb der Volume Group. Der folgende Befehl erweitert das LV um 50 GB. Der Name der Volume-Gruppe ist MyVG01 und der Name des logischen Volumes ist Stuff.
lvextend -L +50G /dev/MyVG01/Stuff
Erweiterung des Dateisystems
Die Erweiterung des logischen Volumes erweitert auch das Dateisystem, wenn Sie die Option -r verwenden. Wenn Sie die Option -r nicht verwenden, muss diese Aufgabe separat durchgeführt werden. Der folgende Befehl passt die Größe des Dateisystems an das neu vergrößerte Logical Volume an.
resize2fs /dev/MyVG01/Stuff
Sie sollten überprüfen, ob die Größenänderung korrekt durchgeführt wurde. Dazu können Sie die Befehle df, lvs und vgs verwenden.
Tipps
Im Laufe der Jahre habe ich ein paar Dinge gelernt, die die Verwaltung von logischen Volumes noch einfacher machen können, als sie ohnehin schon ist. Hoffentlich können Ihnen diese Tipps von Nutzen sein.
- Benutzen Sie die erweiterten Dateisysteme, es sei denn, Sie haben einen klaren Grund, ein anderes Dateisystem zu verwenden. Nicht alle Dateisysteme unterstützen die Größenänderung, aber EXT2, 3 und 4 schon. Die EXT-Dateisysteme sind außerdem sehr schnell und effizient. In jedem Fall können sie von einem sachkundigen Systemadministrator so eingestellt werden, dass sie den Anforderungen der meisten Umgebungen gerecht werden, wenn die standardmäßigen Tuning-Parameter nicht ausreichen.
- Verwenden Sie aussagekräftige Volume- und Volume-Gruppen-Namen.
- Verwenden Sie EXT-Dateisystem-Bezeichnungen.
Ich weiß, dass sich viele Systemadministratoren, so wie ich, gegen die Umstellung auf Logical Volume Management gewehrt haben. Ich hoffe, dass dieser Artikel Sie dazu ermutigt, LVM zumindest auszuprobieren. Ich bin wirklich froh, dass ich es getan habe; meine Festplattenverwaltungsaufgaben sind viel einfacher, seit ich den Wechsel vorgenommen habe.