|
||||||||||||||
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 "Linux-Kernel compilieren" 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
| |||||||||||||||||||||||