Logical Volume ManagerDer Logical Volume Manager (LVM) ist ein hauptsächlich im Unix- und Linux-Umfeld verbreitetes Partitionsschema, das eine Abstraktionsebene zwischen Festplatten, Partitionen und Dateisystemen bietet. Durch den LVM ist es möglich, dynamisch veränderbare Partitionen (Logical Volumes, kurz LV) zu bilden, die sich auch über mehrere Festplatten hinweg erstrecken können. Die Größe dieser virtuellen Datenträger lässt sich auch nach dem Anlegen eines Dateisystems noch ändern, selbst wenn schon Daten darin gespeichert wurden. Sowohl der Name LVM als auch die Implementierung unter Linux haben ihren Ursprung bei AIX und sind von diesem abgeleitet. Es wurde später Teil von OSF/1 und andere haben es dann ebenfalls übernommen. SoftwarearchitekturDer Ausdruck „Manager“ ist leicht irreführend, denn der Logical Volume Manager besteht im Wesentlichen aus zwei Komponenten: einer Verwaltungsebene (dem Manager) mit CLI und/oder GUI sowie einem in den Kernel integrierten Treiber, welcher die eigentliche Implementierung realisiert. Der LVM fasst Festplatten beziehungsweise Partitionen (Physical Volume, PV) zu einem Pool (Volume Group, VG) zusammen, aus dem dynamisch LV-„Partitionen“ (die Logical Volumes, LV) angefordert werden können. Auf diesen Logical Volumes werden die Dateisysteme angelegt. Unter Windows entspricht dies in etwa den „Dynamischen Datenträgern“, welche seit Windows 2000 verfügbar sind.[1] Eine Volume Group kann durch Hinzufügen von Physical Volumes erweitert werden, und Logical Volumes können sich innerhalb der Volume Group über mehrere Physical Volumes erstrecken. Somit kann ein Logical Volume um ein Vielfaches größer sein als die größte im System vorhandene Festplatte. Die wichtigsten Vorteile des LVM gegenüber der traditionellen statischen Partitionierung von Festplatten liegen in der Möglichkeit, ein Dateisystem nachträglich vergrößern zu können. Hierzu werden die auch nachträglich erweiterbaren Volume Groups durch Hinzufügen von Physical Volumes (Festplatten) erweitert. Der nun zusätzlich verfügbare Speicherplatz kann anschließend bedarfsgerecht den ebenfalls nachträglich erweiterbaren Logical Volumes zugeteilt werden. Anschließend muss das Dateisystem um den neu verfügbaren Speicherplatz erweitert werden – wobei das nicht bei allen Dateisystemen ohne Probleme nachträglich möglich ist. Unter den meisten Betriebssystemen ist die Vergrößerung eines Logical Volumes und des darauf angelegten Dateisystems auch im laufenden Betrieb möglich, ohne dass darauf laufende Applikationen durch die Vergrößerung beeinträchtigt werden. Grundsätzlich ist es nicht erforderlich, den genauen Überblick darüber zu behalten, auf welchen Physical Volumes ein Logical Volume zu liegen kommt, denn die Verteilung auf die Physical Volumes innerhalb einer Volume Group wird vom LVM automatisch vorgenommen. Bei leistungskritischen Anwendungen kann jedoch darauf geachtet werden, dass simultane Plattenzugriffe auf verschiedene Physical Volumes verteilt werden, um die Bewegung der Schreib- und Leseköpfe zu optimieren. Darüber hinaus ist es in der Praxis üblich, die Verteilung so zu steuern, dass ein Logical Volume sich nicht auf zu viele Physical Volumes verteilt. So können die Auswirkungen eines Festplattenausfalls begrenzt werden. LVMs besitzen üblicherweise entsprechende Befehle, um die Verteilung der Daten auf den Physical Volumes im laufenden Betrieb zu prüfen und zu ändern. RAID-Unterstützung durch den LVMViele LVMs unterstützen die Organisation der Logical Volumes als RAID-Verbund, sodass die Daten gegen Plattenausfälle geschützt werden können oder der Zugriff beschleunigt wird. In der Regel implementieren die Betriebssystemhersteller dazu lediglich gemeinsame Verwaltungsfunktionen, welche die weitestgehend unabhängig voneinander arbeitenden Volume Manager und Software-Raid-Implementierungen steuern. Die Bezeichnung Software-RAID (auch SoftRAID) rührt daher, dass dieses Verfahren ohne zusätzliche Hardware arbeitet. Je nach System werden typischerweise RAID 0 (Striping, kein Schutz gegen Plattenausfälle) und RAID 1 (Mirroring, Spiegeln) unterstützt. In einigen versierteren Implementierungen unterstützen die LVMs auch RAID 5 (Redundanz durch Paritätsbildung). Da Letzteres auch nennenswert Rechenkapazität benötigt, kommt es nur bei ausreichend ausgestatteten Systemen in Frage. In einigen Systemen (z. B. HP-UX oder Linux) sind Software-RAID und LVM optionale Erweiterungen und können völlig unabhängig voneinander installiert und genutzt werden. Manche Hersteller lizenzieren daher Volume-Management und RAID (Mirroring und/oder RAID 5) auch separat. Eine bemerkenswerte andere, aber zum Teil auch kritisierte Herangehensweise zeigen das in Solaris integrierte ZFS sowie das freie btrfs. Beide implementieren in einem Guss eine Zusammenfassung aus hochentwickeltem Dateisystem mit LVM und Software-RAID. Das in das Dateisystem integrierte RAID-Subsystem bietet gegenüber klassischen Hardware- oder Software-RAID-Implementierungen beispielsweise den Vorteil, dass durch das integrierte RAID-System zwischen belegten und freien Datenblöcken unterschieden werden kann und somit bei der Rekonstruktion eines RAID-Volumes nur belegter Plattenplatz gespiegelt werden muss, hieraus resultiert im Schadensfall, besonders bei wenig gefüllten Dateisystemen, eine enorme Zeitersparnis. Abgrenzung von LVM und RAIDDie Arbeits- und Wirkungsweise eines Logical Volume Managers wird oft mit der eines RAID-Systems vermischt. Dabei gibt es eine klare Abgrenzung. Echte RAID-Systeme bieten immer (bis auf RAID-0) Redundanz und verfügen folglich immer über eine RAID-Engine, welche die zusätzlichen, für die Redundanz benötigten Datenströme erzeugt. Die häufigsten Engine-Varianten sind bei RAID 1 die Datenduplizierung und bei RAID 5 und den meisten anderen Verfahren die XOR-Bildung. Es werden bei RAID also immer zusätzliche Daten in erheblichem Umfang erzeugt, der Datendurchsatz der RAID-Engine ist folglich ein wichtiger Performancefaktor. Aufgabe eines LVMs ist es, physische Volumes auf logischen abzubilden. Einer der häufigsten Anwendungsfälle ist das nachträgliche Vergrößern von Partitionen und Dateisystemen, die durch den LVM verwaltet werden. Ein LVM erzeugt dabei aber keine zusätzlichen Datenströme; er hat auch keine Engine und bietet daher auch keine Redundanz, somit erzeugt er auch nur minimalen Rechenaufwand. Daher hat er praktisch keinen Einfluss auf die Performance (wenngleich auch einige Systeme in die LVM-Implementierung integrierte RAID-0-Erweiterungen besitzen). Die Aufgabe des LVMs besteht also im Wesentlichen darin, die Datenströme aus den Dateisystemen auf die jeweils zugehörigen physischen Datenträger zu verteilen, sie ähnelt am ehesten der Arbeitsweise einer MMU. Ein RAID-System verteilt zwar ebenfalls Datenströme, es erzeugt aber aus Redundanzgründen auch immer einen oder mehrere zusätzliche Datenströme. Physical und Logical ExtentsDer Physical Extent (implementationsabhängig auch: Physical Partition) ist die Speichereinheit, in der die Daten der Volume Group organisiert werden. Die Größe eines Logical Volume entspricht immer dem Vielfachen der Größe eines Physical Extent in der Volume Group. Der Logical Extent (implementationsabhängig auch: Logical Partition) fasst bei LVMs, die die Spiegelung von Logical Volumes auf mehreren Festplatten unterstützen, die Anzahl der Spiegel zusammen. Liegen zwei Spiegelhälften vor, entspricht ein Logical Extent zwei Physical Extents. Bei LVM-Implementationen, die keine Spiegelung unterstützen, entspricht ein Logical Extent immer genau einem Physical Extent. SnapshotsEinige Implementierungen unterstützen Snapshots. Dabei handelt es sich um ein Logical Volume, welches an ein weiteres Logical Volume angehängt wird. Bevor Änderungen an einer Datei auf das Logical Volume geschrieben werden wird eine Kopie der Datei im Snapshot Logical Volume angelegt. Erst dann werden die Änderungen in die Datei des eigentlichen Logical Value geschrieben. Dadurch ist es leicht Änderungen in Dateien rückgängig zu machen. Ist man mit den Änderungen an der Datei zufrieden dann löscht man einfach die Kopie im Snapshot Logical Volume.[2] Natürlich haben Snapshots ihren Preis. Snapshots können die Performanz eines Systems erheblich beeinflussen.[3] So sank bei einem Testsystem die Schreibgeschwindigkeit um 80 %.[4] Ein Snapshot Logical Volume kann jederzeit wieder gelöscht werden. Mit dem Befehl „lvconvert --merge“ können die beiden Logical Volumes wieder zusammengefasst werden. Manchmal ist ein reboot dafür notwendig. Das ist praktisch wenn man mit Layouts experimentieren will.[5] Betriebssysteme mit LVM-Unterstützung
Sonstige LVM-Unterstützung
GeschichteFür Linux-Betriebssysteme gibt es LVM-Implementierungen seit 1997. Das erste LVM für Linux wurde von Heinz Mauelshagen von der Sistina Software geschrieben. Als Vorlage diente ihm die Implementierung von HP-Unix. Seit 2002 gibt es mit LVM2 ein neues Metadatenformat mit einem Satz zugehöriger neuer Kommandozeilenprogramme. Es war zu Beginn der Arbeiten am Kernel-Versionszweig 2.5 neben dem Enterprise Volume Management System (EVMS) von IBM eine zweite Implementierung eines LVM, die schließlich für Kernel 2.6 übernommen wurde. EVMS bietet jedoch weitergehende Fähigkeiten und lebte danach ohne die eigenen Kernel-Teile als ein Benutzer-Modus-Frontend zu LVM2 weiter und wurde 2006 schließlich aufgegeben.[11] Weblinks
Einzelnachweise
|