Projekt »Virtueller hochverfügbarer Linux-Server«, Teil 2
Hardware-Auswahl und Aufbau
Endlich - ein neuer Kernel
Im Verlauf der Installation werden wir mehrere Kernel-Patches benötigen, vorläufig genügt aber der Patch für dm-raid 4/5. Zusätzlich benötigen wir die kompletten Kernelquellen für den aktuellen Kernel (2.6.17.8 zum Zeitpunkt der Installation). Beim Auspacken der Kernelquellen kam dann die erste Überraschung: Partition voll. Normalerweise belegen die Kernelquellen rund 200 MB, doch xfs wollte wohl etwas mehr. Eine spätere Untersuchung zeigte aber, dass xfs nicht viel mehr Platz braucht als ext2. Vorläufig benötigte ich aber eine Lösung, die dann so aussah: Ich nahm die vorerst ungenutzte Partition /dev/mapper/vg02-rootc (1,5 GB), formatierte sie mit ext2 und hängte sie unter /var/src/linux
ein.
Das Patchen, Konfigurieren, Compilieren und Installieren des Kernels sollte reibungslos verlaufen. Ob man die Debian-Tools dafür nutzt oder alles von Hand macht, ist Geschmackssache. Ich verwendete letzteres. Man muss nur daran denken, auch die Initial Ramdisk zu aktualisieren. Dafür stellt Debian ein Kommando bereit, das ungefähr so aufgerufen wird:
update-initramfs -c -k 2.6.17.8
DM-RAID
Nach einem entsprechenden Eintrag in der GRUB-Konfigurationsdatei /boot/grub/menu.lst sollte der neue Kernel problemlos booten. Nun kann man aus den drei vorbereiteten Volumes /dev/vg00/appa, /dev/vg01/appb und /dev/vg02/appc ein RAID5-Array über den Device-Mapper konstruieren. Dazu legt man eine Datei /etc/dmtab an, die nur eine Zeile enthält (hier auf zwei Zeilen verteilt):
0 1433600000 raid45 core 1 8192 raid5_la 0 3 2 /dev/vg00/appa 0 /dev/vg01/appb 0 /dev/vg02/appc 0
Diese Zeile herauszufinden, kostete mich einige Stunden an Recherchen. Es gibt zwar eine Dokumentation von Heinz Mauelshagen in Form einer Vortragsfolie, doch die Einzelheiten muss man sich zusammenreinen. So ist die zweite Zahl die Anzahl der Sektoren der neuen Partition. Den Rest kann man anhand der Folie nachvollziehen.
Mit folgendem Kommando wird die Partition zum Leben erweckt:
dmsetup create app /etc/dmtab
Zuvor muss man dmsetup mit apt-get dmsetup
installiert haben. Das Resultat ist eine neue Partition /dev/mapper/app mit rund 700 GB Größe. Diese kann man mit einem Dateisystem seiner Wahl formatieren, z.B. mkfs.xfs /dev/mapper/app
. Ich mounte die Partition nach /app, und df -T
meldet den Erfolg:
/dev/mapper/app xfs 716668928 528 716668400 1% /app
Um das Array permanent zu machen, müssen wir in einer init-Datei festlegen, dass dmsetup
aufgerufen werden muss. Dies scheint von Debian noch nicht vorgesehen zu sein, so dass ich mir damit behalf, dass ich die obige Zeile mit dmsetup
in /etc/init.d/lvm einbaute, und zwar ans Ende des start-Zweiges.
Funktionstests
Online-Resizing der Partitionen
Ursprünglich hatte ich die Root-Partition nur 1 GB groß gemacht. Selbst ich war erstaunt, als ich feststellte, dass ich die Root-Partition ohne Unmount oder Reboot vergrößern konnte, also im laufenden Betrieb:
# df /dev/mapper/vg00-roota Dateisystem 1K-Blöcke Benutzt Verfügbar Ben% Eingehängt auf /dev/mapper/vg00-roota 1019200 610992 408208 60% / # lvresize -L 1500 /dev/vg00/roota # xfs_growfs -d / df /dev/mapper/vg00-roota Dateisystem 1K-Blöcke Benutzt Verfügbar Ben% Eingehängt auf /dev/mapper/vg00-roota 1531200 695936 835264 46% /
Wiederherstellung des RAID
Was passiert, wenn das RAID einen Schaden hat? Diesen Test muss ich auf später verschieben, da ich bisher nicht herausfinden konnte, wie man in diesem Fall vorgeht.