Logical Volume Manager (LVM)

> # Eine einfache Anfangskonfiguration

> Die erste und zwingende Voraussetzung für LVM ist, dass der Kernel dieses Feature unterstützt. LVM kann sowohl fest in den Kernel eingebaut werden, oder als Modul kompiliert und nachträglich geladen werden. Dazu müssen die beiden folgenden Punkte in der Kernelkonfiguration aktiviert sein:

>       [*] Multiple device driver support (RAID and LVM)
>       ...
>       [*] Logical volume manager (LVM) support

> Mit einem aktuellen 2.4 Kernel ist das kein Problem, für Kernel der 2.2 Familie gibt es entsprechende Patches unter www.sistina.com

> Um das Prinzip von LVM zu begreifen werden wir hier eine einfache Konfiguration durchspielen und uns so einen ersten Überblick über die Fähigkeiten von LVM verschaffen. Dazu gehören die wesentlichen Schritte, die notwendig sind, um das LVM-System überhaupt betreiben zu können:

> - Physikalische Volumes einrichten
> - Volume Groups einrichten
> - Logische Volumes anlegen

> ### Physikalische Volumes

> Die physikalischen Volumes sind die verschiedenen "echten" Speichermedien, wie wir sie bisher benutzt haben. Folgende Geräte können als physikalische Volumes benutzt werden:

> - Bestehende Partitionen auf beliebigen Platten
> - Ganze Festplatten ohne eingerichtete Partitionen
> - Raid Arrays (Soft- und Hardware Raid)
> - Dateien, die über ein loop-Device gemountet wurden

> Wir werden uns hier auf Partitionen und ganze Platten beschränken, die Einrichtung der anderen Medien ist aber auch nichts anderes...

> #### Partitionen als Physical Volumes Wenn eine Partition als physikalisches Volume benutzt werden soll, so muß sie als Partitionstyp den (hexadezimalen) Wert 8e zugewiesen bekommen. Mit fdisk kann das über den t-Befehl erledigt werden. Der bisherige Inhalt der Partition wird durch die Aufnahme der Partition in eine Volume Group vernichtet. Es sollten also nur leere (oder nicht mehr gebrauchte/auf Backup gespeicherte) Partitionen verwendet werden.

> #### Ganze Platten als Physical Volume Wird eine ganze Platte ohne Partitionen als physikalisches Volume eingerichtet, so darf sie keine Partitionstabelle mehr besitzen. Es ist sehr einfach möglich, bestehende Partitionstabellen zu überschreiben, etwa mit dd(1). Wir müssen nur den ersten Block mit Nullen überschreiben:

>      linux:~# dd if=/dev/zero of=/dev/gerät bs=512 count=1

> Statt gerät steht hier natürlich die entsprechende Angabe der Platte, also etwa hda, sdc, ...

> Vorsicht: Der obige Befehl macht die Daten auf der Platte unwiederbringlich dahin! Nicht experimentieren!

> Wenn dann so unsere gewünschten Geräte (Partitionen oder Platten) soweit sind, können wir sie darauf vorbereiten, in eine Gruppe aufgenommen zu werden. Dazu dient der Befehl pvcreate(8). Nehmen wir an, wir wollen die Partitionen `/dev/hda6, /dev/sdb3` und die gesamte Platte `/dev/sdc` so vorbereiten, dann schreiben wir

>      linux:~# pvcreate /dev/hda6 /dev/sdb3 /dev/sdc

> Damit sind die drei Geräte vorbereitet, jetzt können sie in Volume Groups aufgenommen werden.

> ### Volume Groups

> Um unsere drei Geräte in eine solche Gruppe aufzunehmen, müssen wir zunächst einmal eine Gruppe erstellen. Am Einfachsten machen wir das in einem Aufwasch mit dem Programm vgcreate(8). Dieser Befehl legt eine Gruppe an und weist ihr gleich die ersten Physikalischen Volumes zu:

>      linux:~# vgcreate testgrp /dev/hda6 /dev/sdb3 /dev/sdc

> Damit haben wir eine neue Gruppe mit dem Namen `testgrp` angelegt. Sie ist jetzt im Verzeichnis `/dev` als Unterverzeichnis mit diesem Namen zu finden, enthält aber noch keine Logischen Volumes. Man könnte sagen, wir haben jetzt eine logische Riesenplatte, die sich aus den Speicherkapazitäten der drei Geräte zusammensetzt, die in ihr integriert sind.

> Aus einer solchen Gruppe können jederzeit Physikalische Volumes entfernt (mit vgreduce(8)) oder neue hinzugefügt(vgextend(8)) werden.

> ### Logische Volumes erstellen

> Um jetzt schließlich die logischen Volumes zu erstellen wird der Befehl lvcreate(8) verwendet. Er legt Volumes mit einem Namen an, die eine bestimmte Größe haben. Zum Beispiel:

>      linux:~# lvcreate -n volume1 -L 1G testgrp
>      linux:~# lvcreate --name volume2 --size 100M testgrp

> Wir haben jetzt zwei logische Volumes, volume1 und volume2. Das erste hat ein GigaByte Speicher, das zweite 100 MegaByte. Beide sind Teil der VolumeGroup testgrp. Die jeweiligen Gerätedateien heißen jetzt `/dev/testgrp/volume1` und `/dev/testgrp/volume2`. Auf sie können wir jetzt einfach zugreifen, wir können Dateisysteme darauf anlegen und sie an beliebige Stellen mounten.

>       linux:~# mke2fs /dev/testgrp/volume1
>       linux:~# mkreiserfs /dev/testgrp/volume2
>       linux:~# mount /dev/testgrp/volume1 /usr1
>       linux:~# mount /dev/testgrp/volume2 /usr2

> Das obige Beispiel zeigt, dass sowohl ein ext2, als auch ein Reiser Dateisystem auf logischen Volumes angelegt werden kann.

> Damit auch beim nächsten Booten die Volumes zur Verfügung stehen, sollte in die entsprechende Start-Datei (meist `/etc/init.d/lvm`) die folgenden Befehle eingetragen sein. Bei den meisten Distributionen ist das bereits automatisch der Fall. Beim Start des Systems sollten die Befehle

>       /sbin/vgscan
>       /sbin/vgchange -a y

> ausgeführt werden, beim Herunterfahren reicht

>       /sbin/vgchange -a n