Der Logical Volume Manager (LVM) ermöglicht eine abstrahierte und flexible Verwaltung von Datenspeichern eines Computer-Systems. Gegenüber dem traditionellem Weg über Partitionen wird eine weitere, höhere Abstraktionsschicht eingeführt, die eine einfache und effiziente Verwaltung und Konfiguration der Datenträger ermöglichen soll. So können zum Beispiel mehrere Festplatten zu einem Logical Volume zusammengefasst und als ein gesamter Datenspeicher verwendet werden. Eine weitere Vereinfachung bietet die Möglichkeit der Gruppierung von Logical Volumes in Volume Groups, denen auch Bezeichnungen gegeben werden können. Durch diese Einordnungen und Namensgebungen ensteht für den Administrator auch ein logischer Bezug zu den sich in den Logical Volumes befindlichen Daten.
Dieser Artikel zeigt wie LVM unter Linux implementiert ist.
Ein PV wird immer durch ein Block-Device repräsentiert - z.B. eine Festplatte (Device) oder eine Partition. Wird eine Partition bzw. ein Device als PV initialistiert, so wird das Block-Device mit einem LVM-Label gekennzeichent und mit Metadaten versehen. Das LVM-Label identifiziert das Block-Device als PV, es beinhaltet den Random Unique Identifier (UUID), es speichert die Größe des Devices in Bytes und es zeichnet auf, wo sich die Metadaten befinden.
Die Metadaten werden für die genaue Beschreibung der Konfiguration der Volume Groups benötigt. Standardmäßig wird eine identische Kopie der Metadaten auf den PVs einer VG gespeichert. Beim Anlegen einer PV ist es möglich zu definieren, dass 0,1 oder 2 Kopien von Metadaten gespeichert werden - ist diese Zahl einmal definiert, kann sie nicht mehr geändert werden. Die mehrfache Speicherung der Metadaten soll vor einer irrtümlichen Überschreibung schützen. Auch die Größe des Metadatenbereichs kann beim Anlegen eines PVs geändert werden. Unter Umständen kann dieser Bereich nämlich zu klein werden, was zu Problemen führen kann, da die Größe nachträglich nicht mehr geändert werden kann: LVM VG vgname metadata too large for circular buffer beheben.
Ein PV wird bei der Erstellung in lauter kleine, gleich große Stückchen unterteilt, den sogenannten Physical Extents (PEs). Diese PEs sind die kleinst mögliche Datenmenge, die allokiert werden kann und beträgt standardmäßig 4 MiB, kann aber beim anlegen der darauf aufsetzenden Volume Group geändert werden. Seit dem lvm2-Format ist die Anzahl der PEs nicht mehr beschränkt, laut Man-Page von vgcreate kann eine hohe Anzahl an PEs die bereit gestellten Tools verlangsamen. Die I/O-Performance wird aber nicht beeinträchtigt.
Eine oder mehrerere PVs können zu einer oder mehreren VGs zusammengefasst werden. Diese VG stellt einen Pool an Datenspeicher dar, aus dem später Logical Volumes allokiert werden können. Der verfügbare Speicher einer VG wird dabei in kleine, gleich groß bleibende Teile unterteilt - den Logical Extents. Diese stellen das Pendant zu den PEs auf PV-Ebene dar. Die Aufgabe der VG ist es, die Logical Extents den Physical Extents richtig zuzuordnen. Durch diese Gruppierung in einer Zwischenschicht können auch PEs von unterschiedlichen Devices in einer VG zusammengefasst werden.
VGs werden in eine oder mehrere LVs aufgeteilt, auf denen anschließend die Dateisysteme aufsetzen. Von LVs können drei verschiedene Arten angelegt werden:
Seit dem Linux Kernel 2.6 ist LVM mithilfe des Device Mappers implementiert. LVM verwendet dabei das linear Device Mapper Target.
Flexible Kapazitäten | Mehrere Festplatten können zu einem LV zusammengefasst werden. |
Änderungen der Größe | LVs können erweitert bzw. verkleinert werden, ohne dass die darunter liegenden Devices neu formatiert oder partitioniert werden müssen. |
Reallokierung von Daten im laufenden Betrieb | Daten können im laufenden Betrieb neu angeordnet werden. Dies kann z.B. hilfreich sein, wenn eine hot-swapable Disk getauscht wird. |
Disk Striping | Daten können über mehrere Devices verteilt werden („Gestriped“), was die Performance erhöhen kann, aber nicht zur Ausfallssicherheit beiträgt. |
Data Mirror | Daten können einfach gespiegelt werden. |
Volume Snapshots | Es können von einem Device Snapshots erstellt werden, z.B. um von den Snapshots Sicherungen zu erstellen |
— Marko Oldenburg 2023/02/11 08:23