Dynamische Dateisysteme mit LVM

Linux Dynamische Dateisysteme mit LVM

Bereits während der Installation eines Linux-Systems muss man sich auf eine feste Partitionierung der Festplatte festlegen. Stellt man nach einigen Monaten/Jahren fest, dass die gewählten Partitionen falsch dimensioniert sind, kommt man schnell ins Grübeln. Soll ein Backup angefertigt und das aufwändig eingerichtete Linux-System neuinstalliert werden oder kauft man eine zusätzliche Festplatte?

Wurde bereits bei der Installation der Logical Volume Manager (LVM) eingesetzt, kann man dieser Situation etwas entspannter entgegensehen. Dieser Artikel beschreibt den Betrieb des Logical Volume Managers am Beispiel von Debian GNU/Linux 3.0 mit einem 2.4er Kernel.

So funktioniert der Logical Volume Manager

Nachdem eine Festplattenpartition für den LVM vorbereitet wurde, wird eine Volume Gruppe (VG) erzeugt. Innerhalb dieser Volume Gruppe können ein oder mehrere Logical Volumes (LV) erzeugt werden, die mit dem Dateisystem ReiserFS formatiert werden. Die Logical Volumes können mitsamt Dateisystem im laufenden Betrieb vergrößert werden.

1. Kernel konfigurieren und compilieren

Im Kernel "2.4.18-bf2.4" (von Debian) ist bereits der Logical Volume Manager (Modul "lvm-mod") und das Dateisystem ReiserFS (Modul "reiserfs") enthalten. Möchte man hingegen einen neueren Kernel verwenden (z. B. 2.4.23), so müssen bei der Kernel-Konfiguration die folgenden Parameter aktiviert werden:

 

Multi-device support (RAID and LVM)  --->
  [*] Multiple devices driver support (RAID and LVM)
  <M>  Logical volume manager (LVM) support

File systems  --->
  <M> Reiserfs support

 

Danach muss der Kernel wie in der Anleitung "[DOC:START:21]Linux-Kernel compilieren[DOC:END]" compiliert und installiert werden.

2. Software installieren

Zur Administration müssen mit dem folgenden Kommando zwei Debian-Pakete installiert werden:

 

apt-get install lvm10 reiserfsprogs

 

3. Festplatte partitionieren

Der Logical Volume Manager benötigt eine eigene große Festplattenpartition vom Typ "8e". Diese muss ggf. noch mit fdisk erzeugt werden (hier: /dev/hda3).

 

$ fdisk -l /dev/hda

Disk /dev/hda: 255 heads, 63 sectors, 9729 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       122    979933+  82  Linux swap
/dev/hda2   *       123       244    979965   83  Linux
/dev/hda3           245      9729  76188262+  8e  Linux LVM

 

4. LVM initialisieren

Mit dem folgenden Kommando werden die Dateien "/etc/lvmtab" und "/etc/lvmtab.d/*" erzeugt:

 

vgscan

 

5. Partition vorbereiten

Wurde der LVM initialisiert, kann die bei Schritt 3 erzeugte Partition als Physical Volume initialisiert werden:

 

pvcreate /dev/hda3

 

6. Volume Gruppe "vg0" erzeugen

In diesem Beispiel wird auf die Spiegelung der Daten verzichtet und nur eine Partition der Volume Gruppe hinzugefügt.

 

vgcreate vg0 /dev/hda3

 

7. Logical Volume erzeugen

Für diese Anleitung habe ich in der Volume Gruppe "vg0" ein Logical Volume namens "lvopt" erzeugt. Den Namen des Logical Volumes kann man zwar frei wählen, allerdings sollte er die spätere Verwendung widerspiegeln. Das folgende Kommando erzeugt ein 1000 MByte großes Logical Volume "lvopt":

 

lvcreate --size 1000M --name lvopt vg0

 

Als Ausgabe erscheinen folgende Zeilen:

 

lvcreate -- doing automatic backup of "vg0"
lvcreate -- logical volume "/dev/vg0/lvopt" successfully created

 

8. Dateisystem auf logischem Volume "lvopt" anlegen

Nun existiert ein neues Logical Volume, welches mit dem Dateisystem "ReiserFS" formatiert wird:

 

mkreiserfs /dev/vg0/lvopt

 

9. Eintrag in /etc/fstab

Damit das Logical Volume "/dev/vg0/lvopt" bei jedem Neustart automatisch als "/opt" eingebunden wird, muss die folgende Zeile an die Datei "/etc/fstab" gehängt werden:

 

/dev/vg0/lvopt  /opt    reiserfs        defaults        0       0

 

10. Logical Volume einbinden

Mit dem folgenden Befehl kann das Logical Volume "lvopt" als "/opt" eingebunden werden.

 

mount /opt

 

Und wie gehts weiter?

Die Schritte 7 bis 10 können für alle weiteren Dateisysteme wiederholt werden. Im Folgenden möchte ich demonstrieren, wie einfach das Dateisystem "/opt" vergrößert werden kann. Das Vergrößern besteht immer aus zwei Schritten: Zunächst muss das Logical Volume vergrößert werden, anschließend das Dateisystem.

DiskFree aufrufen (vorher)

 

$ df /opt

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/vg0/lvopt         1023964     32840    991124   4% /opt

 

Logical Volume vergrößern

Stellt man fest, dass die Größe von "/opt" nicht ausreicht und deshalb um 1 GByte vergrößert werden muss, so erweitert man das Logical Volume "lvopt" mit dem Befehl:

 

lvextend --size +1G /dev/vg0/lvopt

 

Ausgabe des Programms:

 

lvextend -- extending logical volume "/dev/vg0/lvopt" to 1.98 GB
lvextend -- doing automatic backup of volume group "vg0"
lvextend -- logical volume "/dev/vg0/lvopt" successfully extended

 

Dateisystem vergrößern

Wie bereits angedeutet muss nun noch das Dateisystem "/dev/vg0/lvopt" vergrößert werden:

 

resize_reiserfs /dev/vg0/lvopt

Ausgabe des Programms:

 

<-------------resize_reiserfs, 2002------------->
reiserfsprogs 3.x.1b

 

DiskFree aufrufen (nachher)

 

$ df /opt

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/vg0/lvopt         2072508     32840   2039668   2% /opt

 

Hier sieht man sofort die Änderung: Vorher war knapp 1 GByte verfügbar, hinterher etwa 2 GByte.

Weitere Kommandos

Hier möchte ich noch schnell zwei weitere nützliche Kommandos vorstellen. Mit vgdisplay kann man sich allgemeine Informationen zur Volume Group "vg0" anzeigen lassen:

 

vgdisplay vg0

 

Ausgabe des Programms:

 

--- Volume group ---
VG Name               vg0
VG Access             read/write
VG Status             available/resizable
VG #                  0
MAX LV                256
Cur LV                6
Open LV               6
MAX LV Size           255.99 GB
Max PV                256
Cur PV                1
Act PV                1
VG Size               72.65 GB
PE Size               4 MB
Total PE              18599
Alloc PE / Size       7626 / 29.79 GB
Free  PE / Size       10973 / 42.86 GB
VG UUID               UGJaHg-zJl0-1CK3-KSJK-yI9Q-5XWC-4TIFL2

 

Die vorletzte Zeile "Free PE / SIZE" gibt Aufschluss über den verfügbaren Speicherplatz (hier 42,86 GByte). Das zweite Kommando "lvdisplay" zeigt einige Informationen zum angegebenen Logical Volume an:

 

lvdisplay /dev/vg0/lvopt

 

Ausgabe des Programms:

 

--- Logical volume ---
LV Name                /dev/vg0/lvopt
VG Name                vg0
LV Write Access        read/write
LV Status              available
LV #                   6
# open                 1
LV Size                1.98 GB
Current LE             506
Allocated LE           506
Allocation             next free
Read ahead sectors     1024
Block device           58:5

 

Logical Volume verkleinern

Zum Schluss möchte ich noch anmerken, dass man zurzeit Logical Volumes vergrößern, aber (noch) nicht sicher verkleinern kann. Wer es trotzdem ausprobieren möchte, kann wie folgt verfahren:

Zunächst müsste man das Dateisystem unmounten, das Dateisystem verkleinern (Größe A), anschließend das Logical Volume um etwas weniger als A verkleinern (Größe B), dann das Dateisystem an die tatsächliche Größe (B) anpassen und schließlich das Dateisystem wieder einbinden. Achtung: Datenverlust nicht ausgeschlossen !!!

 

umount /opt
resize_reiserfs -s -1000M /dev/vg0/lvopt
lvreduce --size -950M /dev/vg0/lvopt
resize_reiserfs /dev/vg0/lvopt
mount /opt

 

Artikelbewertung: 
4
Average: 4 (1 vote)
War dieser Artikel hilfreich?