h1

Software RAID 1 für Ubuntu Server

9. September 2007

Spiegelung von Platten (RAID1) für Ubuntu Server

Einige Notizen, die beim Einrichten eines SW-RAIDs nützlich sein können. Alles auf Basis des Ubuntu Server 6.06 LTS. Die folgenden Schritte gehen davon aus, dass man die Installation eines Ubuntu-Servers auf eine einzelne Partition bereits beherrscht. Weiters gehe ich davon aus, dass man sich im Installationsprozess befindet, also die Ubuntu-Server CD eingelegt hat und das Setup begonnen hat. Relativ früh schon wird man in diesem Prozess mit der Frage der Partitionierung konfrontiert, und das ist der richtige Zeitpunkt, um die nun folgenden Notizen abzuarbeiten.

RAID1 erstmalig einrichten

  1. Man erstellt zunächst drei primäre Partitionen je Platte und definiere alle sechs zur Verwendung als RAID-Gerät.
  2. Nun spiegle man diese jeweils (sda1 mit sdb1, sda2 mit sdb2, etc) unter Zuhilfenahme des Menüpunktes Software RAID konfigurieren.
  3. Die somit erhaltenen Geräte RAID1 #0, RAID1 #1 und RAID1 #2 werden wie normale Partitionen dann als /, Swap und daten partitioniert und formatiert.

Bootloader

Sehr wichtig ist, dass der Bootloader Grub auf beiden Platten installiert wird! Auf der primären (sda) macht dies der Ubuntu-Installer. Auf der sekundären (sdb) muss das manuell geschehen.

# grub
grub> device (hd1) /dev/sdb
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

Weiters ist die grub-config (menu.lst) durch einen Fallback-Eintrag zu ergänzen:

fallback=1

RAID1 Wartung

Einige Punkte, die im laufenden Betrieb nicht vergessen werden sollten.

Kernelupdates

Ein Kernelupdate schreibt die menu.lst um. Daher muss diese nach einem Kernelupdate sofort angepasst werden, da sonst das Fallbackentry nicht mehr stimmt.

Statusabfrage des RAID1

# mdadm --detail /dev/md0

Ausgabe State : active bedeutet ok
Ausgabe State : active,resyncing bedeutet Wiederherstellung läuft
Weiters gibt es in diesem Fall einen Rebuild Status : 2% complete

Wiederherstellen

Zunächst ist zu klären, ob die primäre oder sekundäre Platte ausgefallen ist:

cat /proc/mdstat

[_U] bedeutete die primäre ist weg.
Weiters zeigt mdadm –detail /dev/md0 in den letzten beiden Zeilen an, ob die sda oder die sdb ausgfallen ist.

Schritte zur Wiederherstellung

  1. Die neue Platte einbauen (bzw. die alte reaktivieren, wenn sie zB. nur nicht angesteckt war).
  2. Partitionen (wenn nötig) definieren (das entfällt, wenn die alte nur wieder anzustecken war)
  3. und zum RAID hinzufügen. Dazu die folgenden Komandos sinngemäss ausführen
     # mdadm /dev/md0 --add /dev/sdb1
     # mdadm /dev/md2 --add /dev/sdb3

Am Ende Grub neu konfigurieren und installieren – sehr wichtig, sonst bootet der Server beim nächsten Ausfall vielleicht nicht mehr.

Im konkreten Fall, waren die Partitionen natürlich noch vorhanden, da die Platte ja nur abgesteckt war. Realistisch wird wohl eine neue Platte verbaut werden, die dann zuvor partitioniert werden muss. Zur Erinnerung: Es werden zuerst die Partitionen auf der Festplatte eingerichtet und zur Verwendung als RAID-Geräte gekennzeichnet und dann werden diese zu einem RAID-Gerät zusammengefasst bzw. im konkreten Fall zu einem „degraded“ RAID hinzugefügt.

Links

http://wiki.kartbuilding.net/index.php/Base_Install_of_Debian_Sarge_with_RAID

Serverguide von Ubuntu

https://help.ubuntu.com/ubuntu/serverguide/C/index.html

Fallback-Einträge in Grub

http://www.gnu.org/software/grub/manual/grub.html#Booting-fallback-systems

8 Kommentare

  1. hi ingo,

    danke für dieses howto – hat mir heute tolle dienste geleistet. war meine erste raid-1 konfiguration unter linux.

    schöne grüße aus österreich,
    michael


  2. Kann mich Michael nur anschliessen. Dank der Anleitung hat es auf Anhieb geklappt. Nur der Bootprozess bleibt hängen, wenn ich eine Platte abziehe.
    Ist aber erstmal egal, die Daten sind sicher…

    Gruß Tom.


  3. Hallo Tom,
    interessant wäre welche Platte du abgezogen hast (primäre/sekundäre) und ob auf beiden wirklich der Bootloader installiert war und ob der Fallbackeintrag gesetzt war – wie oben in Bootloader beschrieben. Ich kann zur Zeit selber nicht testen, mangels HW. Denn wesentlicher Sinn und Zweck eines RAID1 ist schon, dass man sofort wieder booten kann.


  4. OK, habs mit beiden Platten versucht. Bootloader war auf beiden installiert und wurde ja auch gestartet. Der Fallback-Eintrag existierte. Was bedeutet die 1 dabei? Die Nummer einer Platte oder steht die 1 für „enabled“?


  5. Zum Fallbackeintrag: Ich erinnere mich dunkel, dass es sich hier um eine Konfigurationsnummer in der menu.lst handelt. Was sagt man grub dazu? Google?
    Wenn du es hinbekommst, poste doch bitte die menu.lst hier als Kommentar.


  6. Meine menu.lst hat folgende Titel:

    title Ubuntu 7.10, kernel 2.6.22-14-server
    root (hd0,0)
    kernel /vmlinuz-2.6.22-14-server root=/dev/md2 ro quiet splash
    initrd /initrd.img-2.6.22-14-server
    quiet

    title Ubuntu 7.10, kernel 2.6.22-14-server (recovery mode)
    root (hd0,0)
    kernel /vmlinuz-2.6.22-14-server root=/dev/md2 ro single
    initrd /initrd.img-2.6.22-14-server

    title Ubuntu 7.10, memtest86+
    root (hd0,0)
    kernel /memtest86+.bin
    quiet

    Wenn ich also den Fallback hier auf 1 setze, wird der 2. Eintrag verwendet. Na ob das richtig ist? Da sollte doch ein Eintrag stehen, der mit md u.s.w. nichts zu tun hat. Weil im Fallbackfall wahrscheinlich ja kein md zur Verfügung steht.


  7. Danke auch von mir, für diesen Beitrag.

    Wäre schön, wenn das mit dem Fallback noch zu klären wäre … also was muss man eintragen, damit der Fallback auch wirklich klappt.

    danke, maeck


  8. Ich denke dieser Link könnte bei den Fragen zum Fallback helfen:
    http://www.gnu.org/software/grub/manual/grub.html#Booting-fallback-systems

    Weiters habe ich dankenswerter Weise folgende Rückmeldung von Marcel ECKERT bekommen: „Ich habe mich mit dem Raid-Thema noch etwas intensiver beschäftigt und bin auf diese – sehr gute – Doku gestoßen:
    http://howtoforge.com/software-raid1-grub-boot-debian-etch-p2

    Neben dem fallback-Eintrag muss auch noch die /boot/grub/menu.lst angepasst werden. Es muss ein neue Eintrag geschrieben werden, der auf die sdb-Platte verweist, damit der Kernel auch weiß, was er bei einem fallback booten soll.“ (Anm. Ingo: Somit ist also die menu.lst an zwei Stellen zu ergänzen: 1. der Fallbackeintrag; 2. ein weiterer Eintrag, der auf die zweite Platte verweist und von dem fallback-Eintrag „referenziert“ wird.)



Hinterlasse einen Kommentar