Logical Volume Manager
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
LVM steht für Logical Volume Manager und ist ein Verfahren, um Speicherplatz über mehrere Festplatten dynamisch zu verwalten. Es wird sozusagen eine zusätzliche logische Schicht zwischen Partitionen und Dateisystemen eingefügt.
LVM bietet die Möglichkeit, mehrere Partitionen logisch zusammenzufassen (Volume Group) und in diesem logischen Verbund neue "logische Partitionen" (Logical Volume) anzulegen. Der Volume Group können dynamisch weitere Geräte hinzugefügt werden, wodurch sich der verfügbare Speicherplatz erhöht. Freier Speicherplatz kann ebenfalls dynamisch den 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.
Vorteile:
Volumes können im laufenden Betrieb vergrößert, angelegt und verkleinert werden
Probleme durch falsche Partitionierung können vermieden werden
Höhere Flexibilität
Die Kapazität mehrerer Festplatten kann zu einem Volume zusammengefasst werden
Verschiedene Versionen von Daten sind durch sogenannte "Snapshots" möglich
Die Datensicherung ("backup") wird durch diese "Snapshots" vereinfacht
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, ähnlich wie bei RAID0
Zugriff auf LVM-Partitionen ist nur mit Linux möglich
Um auf Logical Volumes zugreifen zu können, benötigen sog. Rescue CDs auch LVM-Unterstützung
Hinweis:
Grundlagen¶
Vier Begriffe sind beim LVM essentiell und sollen zunächst erklärt werden:
"Physical Extent"
"Physical Volume"
"Volume Group" und
"Logical Volume"
Physical Extent¶
Das Physical Extent (PE) ist die kleinste mögliche Speichergröße in einem LVM. Das PE ist vergleichbar mit den Sektoren von normalen Festplatten bzw. Partitionen. Es ist nicht möglich, die Größe der PEs nachträglich zu verändern. Dies ist aber auch nicht nötig, da die Anzahl der PEs seit LVM2 unbegrenzt ist, die Standardgröße beträgt 4 MByte.
Physical Volume¶
Ein Physical Volume (PV) ist der eigentliche Datenspeicher eines LVMs. Ein PV kann eine Partition oder ein ganzes Laufwerk sein. Es ist auch möglich, sogenannte "Loop-Dateien" zu verwenden.
Volume Group¶
Eine Volume Group (VG) ist eine Art Container für mindestens ein PV.
Logical Volume¶
Ein Logical Volume (LV oder auch Volume) ist im LVM Kontext für den Anwender eine Art Partition innerhalb einer Volume Group. Es ist nicht möglich Logical Volumes außerhalb einer VG zu erstellen. Das LV kann wie eine normale Partition verwendet werden, d.h. es können Dateisysteme darauf angelegt werden und es kann gemounted werden.
Skalierbarkeit¶
Im LVM können alle Elemente (PV, VG, LV), außer der PE, 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. Weitere Informationen sind unter Dateisystemgrößen verändern verfügbar.
Hinweis:
GParted kann mit LVM Partitionen umgehen. Andere Programme wie z.B. Partition Magic können mit LVM Partitionen nichts anfangen, mit diesem Programm ist also ein Vergrößern oder Verkleinern der LVM-Partition nicht möglich.
Mindestanforderungen¶
Zusammengefasst lässt sich also sagen, dass zum Aufbau eines minimalen LVMs mindestens ein Physical Volume erforderlich ist, aus dem eine Volume Group erstellt wird. In dieser Volume Group können jetzt die einzelnen Logical Volumes angelegt werden. Es ist jedoch nicht erforderlich und sinnvoll, mit diesen Logical Volumes den gesamten Platz einer Volume Group auszunutzen, da man so leichter auf spätere Veränderungen reagieren kann. Als Faustregel kann man den aktuellen bzw. geplanten Platzbedarf + 25% nehmen.
Installation¶
Um LVM unter Ubuntu verwenden zu können, müssen folgende Pakete installiert sein [1]:
lvm2
Befehl zum Installieren der Pakete:
sudo apt-get install lvm2
Oder mit apturl installieren, Link: apt://lvm2
Einrichten eines LVM¶
Neben der Möglichkeit, ein LVM im Terminal einzurichten, gibt es auch grafische Lösungen für KDE und GNOME.
KDE¶
Für KDE ist das "KVPM - KDE-Manager für Laufwerkspartitionen", das durch folgendes Paket installiert werden kann [1]:
kvpm (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install kvpm
Oder mit apturl installieren, Link: apt://kvpm
GNOME¶
Für GNOME gibt es die GUI Anwendung "Verwaltung für logische Medien", sie gilt jedoch als veraltet 🇬🇧. Weitere Details finden sich auf der Projektseite 🇬🇧.
system-config-lvm (universe, nur bis einschließlich Xenial)
Befehl zum Installieren der Pakete:
sudo apt-get install system-config-lvm
Oder mit apturl installieren, Link: apt://system-config-lvm
Manuell¶
Im Folgenden wird die Einrichtung eines LVM im Terminal erläutert. Um ein LVM einzurichten, muss zuerst jede zu verwendende Partition mittels pvcreate
als Physical Volume initialisiert werden. Alle Physical Volumes müssen nun mittels vgcreate
zu einer Volume Group zusammengefasst werden. In dieser Gruppe können nun mittels lvcreate
die Logical Volumes erzeugt werden. Folgende Befehle zeigen das Vorgehen zum Einrichten eines LVM:
pvcreate /dev/PARTITION /dev/PARTITION2 # PARTITION und PARTITION2 als Physical Volume initialisieren vgcreate GROUP /dev/PARTITION /dev/PARTITION2 # Erstellt Volume Group GROUP, bestehend aus /dev/PARTITION und /dev/PARTITION2 lvcreate -L 2G -n VOL GROUP # Erzeugt ein 2 GB großes Logical Volume mit dem Namen VOL in der Volume Group GROUP
Für jedes Logical Volume wird eine Datei der Art /dev/GROUP/VOL angelegt. Das Logical Volume kann verwendet werden wie jedes andere Block-Device. So kann ein Dateisystem darauf erzeugt werden, und das Dateisystem kann eingebunden werden.
Hinweis:
Eine mit pvcreate initialisierte Partition sollte vom Typ 0x8e
bzw. "Linux LVM" sein, da es sonst zu Problemen mit der Erkennung der PVs kommt. Wenn das LVM auf einem RAID liegt, ist dies natürlich nicht nötig, genauso als ob das LVM direkt auf eine Festplatte ohne Partitionstabelle aufgesetzt wird.
Dies kann man z.B. via parted mit "set x lvm on" erreichen, wobei x die Partitionsnummer ist.
Administration eines LVM¶
Informationen abfragen¶
Informationen über Physical Volumes abfragen¶
Um Informationen über vorhandene Physical Volumes abzufragen, gibt es den Befehl pvs
:
sudo pvs
Die Ausgabe sieht dann ungefähr so aus:
PV VG Fmt Attr PSize PFree /dev/sda2 main lvm2 a- 465,57G 311,57G
Für jedes Physical Volume gibt es eine Zeile. Wenn das Physical Volume einer Volume Group zugeordnet ist, wird diese unter VG angezeigt. Die aktuelle Größe eines Physical Volumes steht unter PSize, der freie Platz innerhalb des Physical Volumes steht unter PFree.
Alternativ gibt es auch den Befehl pvdisplay
:
sudo pvdisplay
Dieser liefert Informationen in folgendem Format:
--- Physical volume --- PV Name /dev/sda6 VG Name osvg PV Size 68.27 GiB / not usable 1.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 17477 Free PE 5821 Allocated PE 11656 PV UUID qb8pns-Zj94-JFWl-HpQ6-BRBQ-V2RO-WPCeD9
Informationen über Volume Groups abfragen¶
sudo vgs
Das sieht aus wie z.B.:
VG #PV #LV #SN Attr VSize VFree main 1 6 0 wz--n- 465,57G 311,57G
Für jede Volume Group gibt es eine Zeile. Unter #PV
steht die Anzahl der Physical Volumes, unter #LV
die Anzahl der Logcial Volumes und unter dem Feld #SN die Anzahl der "Snapshots", die es in dieser Volume Group gibt. VSize
bezeichnet die gesamte Größe der VG, wohingegen VFree
für den noch nicht zugeordneten Platz in der VG
steht.
Die Alternative vgdisplay
:
sudo vgdisplay
listet die Volume-Group auf, z.B.:
--- Volume group --- VG Name osvg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 68.27 GiB PE Size 4.00 MiB Total PE 17477 Alloc PE / Size 11656 / 45.53 GiB Free PE / Size 5821 / 22.74 GiB VG UUID GY8Uou-MFzC-JkWf-ZP1g-JATj-9NUd-mlHcqK
Informationen über Logical Volumes abfragen¶
sudo lvs
Die Ausgabe sieht z.B. so aus:
LV VG Attr LSize Origin Snap% Move Log Copy% home main -wi-ao 70,00G music main -wi-ao 20,00G root main -wi-ao 20,00G swap main -wi-ao 2,00G tmp main -wi-ao 2,00G virtualbox main -wi-ao 40,00G
Für jedes Logical Volume (LV) gibt es eine Zeile, unter LV
selbst steht der Name des Volumes, VG
steht für die Volume Group und LSize
für die Größe des Volumes.
Auch hier gibt es die Alternative lvdisplay
:
sudo lvdisplay
Die Ausgabe sieht in etwa so aus:
--- Logical volume --- LV Name /dev/osvg/lvroot VG Name osvg LV UUID F9hXgF-gj8B-Rdgh-efVD-p1Er-SkKN-qWx18U LV Write Access read/write LV Status available # open 1 LV Size 18.62 GiB Current LE 4768 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:1
Verwaltung von Physical Volumes¶
Physical Volume initialisieren¶
sudo pvcreate /dev/PARTITION
Dies erstellt ein Physical Volume auf der Partition /dev/PARTITION. Diese kann dann einer Volume Group zugewiesen werden.
Achtung!
Dieser Befehl löscht die Daten auf dem angegebenen Gerät ohne Nachfrage!
Physical Volume leeren oder verschieben¶
sudo modprobe dm-mirror # Lädt den "mirror"-Treiber welcher für pvmove notwendig ist sudo pvmove /dev/PARTITION
Mit pvmove /dev/PARTITION
wird der Inhalt des Physical Volumes auf die restlichen Volumes verschoben. Dies ist nötig, um z.B. das Physical Volume aus einer Volume Group zu entfernen.
Hinweis:
Um ein Physical Volume mit pvmove
zu leeren, muss genügend Platz auf den restlichen Physical Volumes vorhanden sein!
Verwaltung von Volume Groups¶
Volume Groups erstellen¶
sudo 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¶
sudo vgextend GROUP /dev/PARTITION
Das Physical Volume PARTITION
wird der Volume Group GROUP
hinzugefügt.
Volume Groups verkleinern¶
sudo modprobe dm-mirror sudo pvmove /dev/PARTITION sudo vgreduce GROUP /dev/PARTITION
Lädt den Mirror-Treiber, verschiebt alle Daten von dem Physical Volume PARTITION
und entfernt das Volume aus der Volume Group.
Hinweis:
Um ein Physical Volume mit pvmove
zu leeren, muss genügend Platz auf den restlichen Physical Volumes vorhanden sein!
Volume Groups löschen¶
sudo vgremove GROUP
Hier wird eine Volume Group mit dem Namen GROUP
gelöscht.
Verwaltung von Logical Volumes¶
Logical Volumes erstellen¶
sudo lvcreate -L 2G -n VOLUME GROUP
Erstellt ein Logical Volume der Größe 2 Gigabyte mit dem Namen VOLUME
in der Volume Group GROUP
. Im Anschluss daran kann mit z.B.
sudo mkfs.ext4 /dev/GROUP/VOLUME
ein Dateisystem auf dem Volume erstellt werden (siehe Formatieren).
Logical Volumes vergrößern¶
sudo lvextend --resizefs -L 5G /dev/GROUP/VOLUME
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 (relative Vergrößerung des Volumes, ausgehend von der aktuellen Größe).
sudo 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¶
sudo 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; in diesem Fall wird die Partition dann um diesen Wert verkleinert (relative Verkleinerung des Volumes, ausgehend von der aktuellen Größe).
Snapshots¶
Ein Snapshot eines Logical Volumes VOLUME
hält die Daten zum Zeitpunkt der Erstellung in einem neuen Logical Volume NAME
fest:
sudo 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
sudo 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¶
sudo lvremove /dev/GROUP/VOLUME
Hier wird ein Logical Volume mit dem Namen VOLUME
in der Gruppe GROUP
gelöscht.
Problembehebung¶
Logical Volume Management manuell starten¶
Unter Ubuntu werden nach Installation der benötigten Pakete normalerweise alle Logical Volumes beim Systemstart mitgestartet. Dies ist jedoch bei vielen Live- bzw. Rescue-CDs nicht der Fall. Mit den nachfolgenden Befehlen können Logical Volumes manuell gestartet werden.
modprobe dm-mod pvscan vgscan lvscan vgchange -a y
Mit
vgchange -a n
können die Logical Volumes wieder deaktiviert werden. Dies geschieht bei Ubuntu automatisch während des Herunterfahrens des Rechners.
LVs anzulegen oder zu vergrößern bricht wegen zu weniger Extents ab¶
Sollte beim Versuch, Logical Volumes mit lvcreate
anzulegen oder mit lvextend
zu vergrößern, die Fehlermeldung xxxx extents needed, but only 0 available
erscheinen (xxxx
= Anzahl), obwohl pvdisplay
genügend freie Extents hinter Free PE
meldet, kann es an der Option Allocatable NO
liegen, welche ebenfalls von pvdisplay
angezeigt wird. Um die PV für Änderungen freizuschalten, dient folgender Befehl:
pvchange -x y /dev/PARTITION
Nach Durchführung der Änderungen wird die PV wieder auf unveränderlich geschaltet:
pvchange -x n /dev/PARTITION
Die betreffende PARTITION
wird mittels pvdisplay
hinter PV Name
angezeigt.
Verschieben einer PV mit pvmove funktioniert nicht¶
Sollte beim Verschieben von Daten mit pvmove
eine Fehlermeldung kommen, dass ein Kernel-Modul nicht vorhanden sei, so kann dies so behoben werden:
sudo modprobe dm-mirror
Snapshot lässt sich nicht anlegen¶
Beim Anlegen eine Snapshots kann es passieren, dass dies wegen eines nicht geladenen Kernel-Moduls nicht möglich ist. Das notwendige Modul kann wie folgt nachgeladen werden:
sudo modprobe dm-snapshot
Links¶
intern¶
extern¶
Linux optimal partitionieren 🇩🇪 - Pro-Linux, 04/2012
LVM Vortrag von Stefan Betz 🇩🇪 - Ubucon, 10/2014