Grub, Raid1 Ausfallsicherheit

Aus Linupedia
Wechseln zu: Navigation, Suche
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 !!!!

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.

Konfigurationsdatei /boot/grub/menu.lst ändern

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

Weiterführende Links