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:
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:
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. | ||
Ein Physical Volume ist der physikalische Datenspeicher eines LVMs, also eine Festplatte oder eine Partition auf einer Festplatte. | ||
Eine Volume Group ist der Verbund einer oder mehrerer physikalischer Datenspeicher. | ||
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 (( ͡° ͜ʖ ͡°))!