Hier soll exemplarisch die Einrichtung eines md-basierten Software-RAID-Systems bei (Neu-)Installation von CentOS auf einem Root Server gezeigt werden. Die ‘Geschmacksrichtung’ (lies: 32Bit oder 64Bit, deutsch oder englisch) ist hierbei — abgesehen von den abweichenden Formulierungen und Bezeichnungen zum Beispiel während der Installation — irrelevant, das beschriebene Prozedere funktioniert so auf allen zur Verfügung stehenden CentOS-Images der Root Server, die eine manuelle (benutzerdefinierte) Installation durchführen lassen.
Schritt eins
Anstoßen einer benutzerdefinierten Installation von CentOS dem Root Server. Folgen Sie hier den Hinweisen im Interface.
Schritt zwei
Die Installation auf dem Root Server ‘wie üblich’ durchführen, beim Partitionieren der Festplatten jedoch den Punkt ‘Create custom layout’ wählen.
Schritt drei
Sowohl auf Laufwerk /dev/sda wie auch /dev/sdb ein Dateisystem des Typs ‘Software RAID’ anlegen; hier wird beispielsweise ein 4097MiByte großer Bereich auf dem Root Server angelegt, auf dem später die swap-Partition zu Hause sein soll. Das Anlegen dieses Dateisystems muß für beide Festplatten getrennt erfolgen (ansonsten beschwert sich die Installationsroutine sofort).
So sollte es aussehen sobald alles fertig eingerichtet ist:
Schritt vier
Abbildung vier zeigt das Anlegen eines den Rest der Festplatte einnehmenden Bereiches auf dem Root Server; das Auswählen der Option ‘Fill to maximum allowable size’ weist den Partitionierer an, den kompletten Rest der Festplatte zu nutzen. Auch dies ist für beide Geräte, sowohl /dev/sda wie /dev/sdb durchzuführen.
Schritt fünf
Jetzt kommt der interessante Part, in dem aus den angelegten RAID-Partitionen die RAID Devices ‘gebaut’ werden; ein Klick auf den Button ‘RAID’ (siehe Abbildung fünf) führt zur (schon standardmäßig ausgewählten) Option, ein RAID device zu bauen (hier: /dev/md0). Ein Klick auf ‘OK’ führt uns in das nächste Fenster (Abbildung sechs), wo schlußendlich der vom System später zu sehende/nutzende Dateisystemtyp (hier: swap) und die Art des RAIDs (RAID0 — Striping, Beschleunigung ohne Redundanz; RAID1 — Spiegelung) einstellbar ist. Für den swap-Bereich, der nicht zwingend von Redundanz profitiert, mehr dafür aber von Geschwindigkeit, haben wir einfach mal RAID0 gewählt.
Für die das größere RAID, welches den Rest der Festplatte(n) einnimmt, soll dann doch eher RAID1 (Spiegelung) gewählt werden — siehe Abbildung sieben. Um das Beispiel möglichst einfach zu halten, platzieren wir das Root-Dateisystem “/” hier — die einfachste Art, das System korrekt aufzusetzen.
(Hier mögen sich die Geschmäcker unterscheiden: Ein einfaches Setup wie dieses birgt Risiken, zum Beispiel das unbemerkte Vollaufen von /tmp oder /var/tmp über längere Zeiträume und anschließende Probleme des Systems mit vollgelaufener Root-Partition, unter anderem. Komplexere Setups reichen über weitere RAID-Devices bis hin zum Einsatz von LVM, um dann auf einem RAID-Device Volume Groups und Logische Laufwerke einzurichten. Da dies außerhalb dessen liegt, was in diesem Artikel gezeigt werden soll, möge hierauf verzichtet werden.)
Schritt sechs
Die Installation auf dem Root Server wie üblich weiter durchgehen — nach Fertigstellen der Installation und anschließendem Neustart hat man ein System mit Software-RAID. Den Status des RAID-Systems kann man mit dem Befehl
[root@n112h113 ~]# cat /proc/mdstat
prüfen, der beispielsweise folgendes zeigen könnte:
Personalities : [raid1] [raid0]
md0 : active raid0 sdb2[1] sda2[0]
8385536 blocks 256k chunks
md1 : active raid1 sdb1[1] sda1[0]
152087232 blocks [2/2] [UU]
[>....................] resync = 0.8% (1302400/152087232) finish=146.7min speed=17125K/sec
unused devices: <none>
Hier wird der RAID-Spiegel nach dem ersten Neustart (direkt nach der Installation des Systems) aufgebaut.
Schritt sieben
Um schließlich nach dem Ausfall beispielsweise von /dev/sda, also der ersten Festplatte des Root Server, das System bei einem Neustart wieder sauber hochfahren zu können, darf man jetzt nicht vergessen, den Bootloader grub noch auf der zweiten Festplatte zu installieren. Das BIOS Ihres Atom-Servers ist so eingerichtet, daß es im Falle einer defekten ersten Festplatte (was alles mögliche sein kann, zum Beispiel hardwareseitig defekte Festplatte oder zerstörtes Dateisystem) versucht, von der zweiten zu starten. Findet das System hier keinen funktionierenden Bootloader (in diesem Falle der erwähnte grub), passiert gar nichts mehr.
Um den Bootloader zu installieren, wechseln Sie als root in die grub shell:
/sbin/grub
Dann sollte sich grub wie folgt melden:
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub>
evice (hd0) /dev/sda
device (hd1) /dev/sdb
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Das war es schon. Ihr System kann nun von beiden Festplatten booten, sollte eine davon — aus welchen Gründen auch immer — ausfallen.
Test des Setups
Falls man der ganzen Sache mißtraut und vielleicht auch ein bißchen Zeit hat, sich damit näher zu befassen, kann man das Setup recht einfach ‘auf die Probe stellen’.
Man sollte sich natürlich sicher sein, daß man o.g. Schritte ausgeführt hat und das System die RAID-Partitionen aufgebaut/erkannt hat (mit cat /proc/mdstat prüfbar, siehe oben).
Ein klein wenig Mut zusammennehmen und ein
dd if=/dev/zero of=/dev/sda bs=1024k count=10
zerschießt galant die ersten 10MiByte der ersten Festplatte — ‘Totalschaden im Dateisystem’. Daraufhin gibt man dem System ein
reboot
und versucht ein paar Minuten später, sich erneut einzuloggen — hat man beim Setup alles richtig gemacht, funktioniert das auch problemlos.
# cat /proc/mdstat
wird dann ein nicht-redundantes RAID1 zeigen und ein zerlegtes RAID0 (swap):
Personalities : [raid1] [raid0]
md0 : inactive sdb2[1]
4192768 blocks
md1 : active raid1 sdb1[1]
152087232 blocks [2/1] [_U]
unused devices: <none>
Damit ist bewiesen: Das RAID ist eingesprungen, das System ist von der zweiten Festplatte gebootet. Nun sollte man sich an die Wiederherstellung der Redundanz machen, dafür hat man schließlich zwei Festplatten. (Im Falle eines wirklichen Festplattenschadens wende man sich vertrauensvoll an den Snafu-Support, das defekte Teil wird zügig ausgetauscht werden.)
Mit
# fdisk -l /dev/sdb
kann man sich die Geometrie der verbliebenen, funktionierenden Festplatte darstellen lassen:
isk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 18934 152087323+ fd Linux raid autodetect
/dev/sdb2 18935 19456 4192965 fd Linux raid autodetect
und anhand dieser Daten mit fdisk /dev/sda die erste Festplatte dementsprechend partitionieren. Ist man damit fertig, stößt
mdadm -a /dev/md1 /dev/sda1
den Wiederaufbau des RAID-Systems an, den man ebenfalls beobachten kann (cat /proc/mdstat):
Personalities : [raid1] [raid0]
md0 : inactive sdb2[1]
4192768 blocks
md1 : active raid1 sda1[2] sdb1[1]
152087232 blocks [2/1] [_U]
[====>................] recovery = 24.2% (36808896/152087232) finish=99.6min speed=19286K/sec