Software RAID 1 für Ubuntu Server
9. September 2007Spiegelung 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
- Man erstellt zunächst drei primäre Partitionen je Platte und definiere alle sechs zur Verwendung als RAID-Gerät.
- Nun spiegle man diese jeweils (sda1 mit sdb1, sda2 mit sdb2, etc) unter Zuhilfenahme des Menüpunktes Software RAID konfigurieren.
- 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
- Die neue Platte einbauen (bzw. die alte reaktivieren, wenn sie zB. nur nicht angesteckt war).
- Partitionen (wenn nötig) definieren (das entfällt, wenn die alte nur wieder anzustecken war)
- 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
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,
von Michael 8. April 2008 at 19:56michael
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.
von Tom 19. April 2008 at 10:11Hallo Tom,
von lanti 19. April 2008 at 11:04interessant 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.
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“?
von Tom 19. April 2008 at 11:40Zum Fallbackeintrag: Ich erinnere mich dunkel, dass es sich hier um eine Konfigurationsnummer in der menu.lst handelt. Was sagt man grub dazu? Google?
von lanti 19. April 2008 at 11:53Wenn du es hinbekommst, poste doch bitte die menu.lst hier als Kommentar.
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.
von Tom 19. April 2008 at 12:52Danke 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
von maeck 1. Juli 2008 at 19:04Ich 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:
von lanti 11. Juli 2008 at 9:00http://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.)