net-it.de |
|
Dieses Dokument beschreibt, wie wichtige Partitionen eines RedHat 7.1 Samba-Fileservers nach dem Einbau einer zusätzlichen Festplatte mit Hilfe von LVM (s.u.) komplett auf ReiserFS umgestellt wurden. Eine der Partitionen wurde dann um den Speicherplatz der neuen Festplatte erweitert. Während der gesamten Prozedur blieben die Daten auf den betroffenen Partitionen erhalten. Ausgangszustand des Servers:
Endzustand des Servers:physisch:
logisch:
Begriffe / Abkürzungen
Vorbereitungen und Einbau der FestplatteDie Unterstützung von LVM und ReiserFS hängt von der Existenz je zweier Komponenten ab: Die Kernel-Unterstützung in Form von Modulen und die sogenannten Userspace-Tools. Nach dem Update des Kernels auf die aktuellste Version (2.4.18-18.7.x) wurden die Pakete reiserfs-utils-3.x.0j-3.rpm und lvm-1.0.3-4.rpm nachinstalliert. Diese befinden sich z.B. auf den CD's 1 (reiserfs-utils) und 3 (lvm) der Distribution RedHat 7.3. Nach der Datensicherung aller essentiellen Daten des Servers erfolgte das Herunterfahren und der Einbau der zweiten Festplatte. Da auf dem Mainboard dieses Beispiels nur der erste IDE-Kanal mit Ultra-DMA-Unterstützung läuft, wurde die neue Festplatte als Slave an den ersten IDE-Bus mitangeschlossen - unter Beachtung der korrekten Jumper-Stellung beider Festplatten. AblaufNach dem Wiederhochfahren des Servers wurde mit # init 1 in den Einzelbenutzermodus gewechselt. Die komplette neue Festplatte wurde ohne Partitionierung wird mit # pvcreate -v /dev/hdb zum PV gemacht. über # pvdisplay /dev/hdb lassen sich der Zustand und die Daten des PV überprüfen. Um einer Einschränkung der VG auf die maximale Grösse von 256 GB vorzubeugen wurde mit # vgcreate -s 32M -v vg01 /dev/hdb eine VG mit dem Namen "vg01" erzeugt, deren Zuordnungseinheit (PE) 32 MB groß ist und die zunächst nur die neue Festplatte umfasst. Damit hat diese VG eine maximale Größe von 2 TB. Das lässt sich mit # pvdisplay jederzeit nachprüfen. Mit # vgscan wird die VG aktiviert und dem Kernel bekannt gemacht. vgscan erzeugt dazu in /etc Dateien und Verzeichnisse (/ect/lvmtab, /etc/lvmtab.d und /etc/lvmconf), die die aktuelle Struktur abbilden. Nach einem Neustart betrachtet der LVM trotz der Existenz dieser Dateien alle VG's als deaktiviert. Daher finden sich diese Befehle auch im Systemstartskript /etc/rc.sysinit wieder. Außerdem existiert jetzt ein Verzeichnis /dev/vg01, in dem die device-Dateien der LV's und die device-Datei group abgelegt werden. Mit # lvcreate -v -C -L 192M vg01 wurden in der VG drei LV's mit den Namen "lvol1", "lvol2" und "lvol3" mit fortlaufender Belegung des Speicherplatzes erzeugt. Von der Erzeugung des großen LV als Striped LV wurde wegen der fehlenden späteren Erweiterungsmöglichkeiten mittels LVM 1 abgesehen - die bequeme Erweiterbarkeit von Striped LV'S wird erst in LVM 2 implementiert sein. Da die Belegung immer in ganzen PE's erfolgt, haben diese LV's eine Größe von 6, 8 und 1600 PE's. Nach dem Formatieren mit # mkreiserfs /dev/vg01/lvol1 wurden die Dateisysteme /usr und /var sowie die Swappartition in die neuen LV's verlagert: # mkdir /mnt/newusr Da jetzt bis auf die Größe von "lvol3" der Endzustand bereits erreicht ist, wurden alle notwendigen Änderungen an den Scriptdateien vorgenommen, die beim Systemstart bzw. beim Herunterfahren beteiligt sind. In der Datei /etc/fstab sind die drei betroffenen Zeilen zu ändern: vorher
/dev/hda8 /usr ext2 defaults 1 2 nachher
/dev/vg01/lvol3 /usr reiserfs defaults 1 0 Die Änderung des sechsten Feldes auf den Wert 0 bewirkt, das diese Dateisysteme bei einem Neustart nicht automatisch durch "fsck" überprüft werden. Das Systemstartskript /etc/rc.sysinit rechnet nicht mit einer logischen Swap-Partition, daher muss die Initialisierung des Swapspace erst nach dem Aktivieren von LVM erfolgen. Nach dem Auskommentieren der Zeile an ihrer ursprünglichen Position wurde sie direkt hinter der Initialisierung von LVM neu eingefügt. Der Test -e /proc/lvm (existiert die Datei oder das Verzeichnis /proc/lvm?) in der if-Bedingung der LVM-Initialisierung soll testen, ob der Kernel LVM kann (LVM ist entweder fest einkompiliert oder das Modul wurde geladen). Da aber der jetzt erst folgende Aufruf von "vgscan" das Modul erst lädt, schlägt dieser Test u.U. fehl. Daher wurde dieser Test geändert. vorher
[...] nachher
[...] Im Skript /etc/init.d/halt wurde unmittelbar vor dem Neustart bzw. Ausschalten die Deaktivierung der VG eingefügt. vorher
[...] nachher
[...] Nach einem Neustart zur Überprüfung des Bootvorgangs wurden mit # init 1 im Einzelbenutzermodus die drei jetzt überflüssigen Partitionen (6,7, und 8) gelöscht und an deren Stelle eine neue (6) erzeugt. Dieser wurde die Partitionskennung "8e (Linux LVM)" zugewiesen. Mit # pvcreate /dev/hda6 wurde diese als PV deklariert. In die VG wurde sie mit # vgextend -v vg01 /dev/hda6 aufgenommen. Anschließend wurden alle drei LV's an den Anfang vom PV /dev/hda6 verschoben: # pvmove -v -n lvol1 /dev/hdb /dev/hda6 (Ein einfacher Aufruf von "pvmove -v /dev/hdb" hätte dasselbe Ergebnis gehabt - Die Vorgehensweise in Schritten macht jedoch deutlicher, was geschieht) Durch Addition der noch freien PE's auf beiden PV's (zu ermitteln über pvdisplay) und Multiplikation mit 32 ergibt sich der Wert in Megabyte, um den jetzt "lvol3" vergrößert werden muss. Mit # lvextend -v -L +158112M /dev/vg01/lvol3 wurden das LV und das Dateisystem im laufenden Betrieb (mounted) vergrößert. |
zuletzt geändert am 8.11.2004: joerg trawinski |
|
© 2004 net-it.de impressum |