Grub, Raid1 Ausfallsicherheit
Hinweis: Dieser Artikel handelt explizit von der Version GRUB Legacy. Das Programm wurde weiterentwickelt. Die Weiterentwicklung wird aufgrund von Inkompatibilitäten auf einer eigenen Seite behandelt: GRUB 2 |
Wie alles hier ist auch das ohne Gewähr!! Wer seine Platten und oder Controller schrottet hat selbst Schuld !!!!
Inhaltsverzeichnis
Vorbemerkungen
Ausgangssituation ist ein PC mit 2 Festplatten im RAID1-Verbund (Soft-RAID), der aber im Fehlerfall der Platte 1 (hier sda2) nicht von der Spiegelplatte (hier sdb2) bootet. Ziel ist, daß bei Fehlern an beiden Platten jeweils von der anderen Platte gebootet und gearbeitet werden kann.
Bootloader GRUB auf beiden Platten installieren
Dazu eine Konsole öffnen und eingeben
grub
Damit öffnet man die Konsole von grub.
Nun eingeben:
grub>root (hd0,1) grub>setup (hd0) grub>root (hd1,1) grub>setup (hd1)
Damit wird grub in die MBR's der zweiten Partitionen der beiden Festplatten geschrieben. Ist bei mir, siehe oben, halt so. Kann natürlich auch anders partitioniert werden, dann müssen eben die Einträge geändert werden.
Was nun noch fehlt, ist der Hinweis für grub, dass er, sollte von der ersten Platte nicht gebootet werden können, automatisch auf der zweiten Platte nach einer Bootmöglichkeit suchen soll.
Dazu wird folgende Datei geändert: /boot/grub/menu.lst
# Booten automatisch nach 10 Sekunden timeout 10 # Standard Booten von hd0 default 0 # Fallback auf hd1, falls hd0 scheitert fallback 1 # Booten disc 0 kernel title Booten Platte 1 kernel (hd0,1)/boot/vmlinuz root=/dev/md0 initrd (hd0,1)/boot/initrd # Booten disc 1 kernel title Booten Platte 2 kernel (hd1,1)/boot/vmlinuz root=/dev/md0 initrd (hd1,1)/boot/initrd
Damit weiß grub, von welcher Platte/Partition er alternativ booten soll.
RAID-Funktion testen
Um sicher zu sein, dass erst mal alles richtig läuft, kann man sich den Status des RAID-Arrays so anzeigen lassen:
mdadm --detail /dev/md0
Da müssten oben 2 Raid-Devices und der Status "Clean" sowie ganz unten die beiden Platten mit Status "active sync" stehen. Ist das der Fall, läuft das RAID ordnungsgemäß.
Jetzt geht's los: Den Stromstecker der ersten Platte ziehen und den Server neu starten. SCSI-Platten und Controller sollten das verkraften. Bei IDE-Platten unbedingt VORHER runterfahren und ausschalten!! Läuft alles richtig, dann bootet die Kiste trotzdem ohne Probleme.
Dann wieder neu starten aber vorher die abgehängte Platte wieder anschließen. Auch jetzt muß die Kiste ohne Probleme booten. Am System anmelden und eingeben:
mdadm --detail /dev/md0
Das zeigt den Status des RAIDs "md0". Ganz unten sieht man jetzt, dass nur noch eine Platte den Status "active sync /dev/sda2" hat. In meinem Fall ist also nur noch die Partition sda2 im RAID aktiv.
Eine weitere Partition wird noch als Zeile aufgeführt, steht aber auf Status "removed". Das heißt, dass durch das Abstöpseln dieser Platte diese aus dem RAID-Verbund fällt. Der wird auch nicht automatisch wiederhergestellt, nur wenn man den Stecker wieder einsteckt.
Steckt man die Platte im noch laufenden System wieder ein, dann wird sie im RAID zwar angezeigt aber als nicht mehr synchron deaktiviert. Ist das der Fall, dann muss die Platte erst aus dem RAID entfernt werden mit
mdadm /dev/md0 -r /dev/sdb2
Ist sie draussen, dann kann sie mit
mdadm /dev/md0 -a /dev/sdb2
wieder in den RAID-Verbund eingehängt werden und wird automatisch synchronisiert. Mit
mdadm --detail /dev/md0
kann man den Stand der Synchronisierung sehen. Da steht dann nämlich z.B.:
Rebuid Status : 52% complete
und ganz unten sieht man eine neue Platte mit Status "spare rebuilding".
Ist der Rebuild abgeschlossen, hat man wieder ein schönes RAID1 mit zwei Platten und Status "active sync".
Das ganze funktioniert tatsächlich nun bei beiden Platten, d.h. egal welche ausfällt, ob im laufenden Betrieb oder beim Reboot, die Kiste läuft weiter. Jetzt muß ich nur noch rauskriegen, wie man mdadm dazu bekommt, das RAID online zu überwachen und hübsch per mail laut zu geben, wenn sich eine Platte verabschiedet. Dann bin ich glücklich und zufrieden - mindestens was das Thema RAID angeht.
Und hier noch die Ergänzung zum Thema automatische Benachrichtigung:
Automatische Benachrichtigung einrichten
Postfix
In meinem Fall übernimmt der Server normalerweise keinerlei Mail-Funktionen. Das soll auch so bleiben. Damit er aber immerhin interne Mails korrekt verschicken kann, muß trotzdem eine Minimalkonfiguration in der Datei /etc/postfix/main.cferfolgen.
Die folgenden drei Zeilen zu ändern bzw. zu aktivieren (# entfernen) reichte in meinem Fall aus:
myorigin = $myhostname mynetworks = Mein.IP.Adresskreis.0/24, 127.0.0.0/8 relayhost = [IP.Adresse.meines.Mailservers]
Nicht vergessen: Nach der Änderung der main.cf muß die Konfiguration noch in der Konsole mit
postfix reload
geladen werden.
Postfix wird bei Suse standardmäßig mit installiert und gestartet. Da braucht man sonst nichts zu machen. Der Schritt hier ist also nicht unbedingt notwendig.
mdadm konfigurieren
Sehr einfach: In der Datei /etc/mdadm.conf wird die Zeile
MAILADDR admin@meine.domain.de
angehängt. Kann natürlich jede x-beliebige Mail-Adresse sein. Allerdings nur eine einzige.
Falls diese Datein nicht vorhanden ist kann die Mailadresse auch im sysconfig-Editor bei system/File Systems/Mdadm/Mdadm_Mail eingetragen werden. Wenn weiterhin eine Weiterleitung von root-mails an den Hauptbenutzer eingerichtet ist reicht als Adresse root@localhost
mdadm als Daemon starten
Einfach in YaST über den Yast/System/Runlevel-Editor den Dienst mdadmd starten
Erfolg: Fällt jetzt eine Platte aus, geht eine Fehlermeldung per Mail an die oben eingestellte Mail-Adresse raus, die freundlicherweise mitteilt, welches Array an welchem Server betroffen ist.
PMBOSS