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

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