27 Mar 2010

Debian 5.04 auf Software Raid-1 (gespiegelt) installieren

Man kaufe zwei gleichgrosse Festplatten, z. B. 1,5 TB, natürlich verschiedenen Herstellers. Diese zwei Festplatten werden per SATA-Kabel an das Motherboard angeschlossen und im folgenden nur noch als sda und sdb referenziert. Natürlich ist das ganze auch mit IDE-Platten (hda / hdb) möglich, etc…

  • Debian Installieren via Installer Von der Debian-5.0-i386-cd1.iso booten und den Install auswählen (Keinen grafischer Installer nutzen!) Land, Tastatur, … auswählen. Wir wechseln bei der Aufforderung zu “Partition Disks” auf eine andere Konsole, indem wir CTRL-ALT-F2 drücken und mit Enter aktivieren. Hier geben wir die Kommandos zum Partitionieren der Festplatten und erzeugen des RAIDs manuell ein.
    # fdisk /dev/sdb
    
     1. sda1 200 MB (/boot)
     2. sda2 2 GB (swap)
     3. sda3 20 GB (/)
     4. sda4 Rest (/home)
    

Es kann natürlich auch ein anderes Partitions-Schema gewählt werden, der Fantasie sind keine Grenzen gesetzt. Jetzt gilt es, genau diese Partitionstabelle auf die zweite Festplatte zu übertragen. Das geht mit:

# sfdisk -d /dev/sda | sfdisk /dev/sdb

Der Swap-Speicher kann danach sofort aktiviert werden:

# mkswap /dev/sda2
# mkswap /dev/sdb2
# swapon /dev/sda2
# swapon /dev/sdb2

Bevor wir das RAID zum erstenmal erzeugen, setzen wir noch das minimale Speed-Limit nach oben, um die Zeit zu sparen. Der Wert wird nach dem Reboot wieder auf default gesetzt. Bei mir hat das leider nichts gebracht :-)

# echo 200000 > /proc/sys/dev/raid/speed_limit_min

jetzt erzeugen wir die einzelnen RAID-Devices:

# mdadm --create /dev/md0 --level 1 --raid-devices=2 /dev/sda1 /dev/sdb1
# mdadm --create /dev/md1 --level 1 --raid-devices=2 /dev/sda3 /dev/sdb3
# mdadm --create /dev/md2 --level 1 --raid-devices=2 /dev/sda4 /dev/sdb4

mit

# cat /proc/mdstat

kann man den Fortschritt des Aufbauens des RAIDs begutachten. Warten, bis das komplett durch ist. Mann kann zwar bereits ein Filesystem auf md0… md2 erzeugen, jedoch dauert der Vorgang dann noch länger. Jetzt wieder auf die Konsole 1 (CTRL-ALT-F1) wechseln und die RAID-Partitionen im Debian-Partition-Manager richtig einbinden.

UPDATE: des SWAP-Speicher sollte man auch auf einer mit RAID gespiegelte Partition erstellen. Der Linux-Kernel geht immer davon aus, dass eine ausgelagerte Speicher-Seite auch wieder verfügbar ist. Sollte also die Festplatte im Bereich SWAP ausfallen, so wird der Server einfach abstürzen.

Die Debian-Installation kann nun wie gewohnt fortgesetzt werden.

Zum Schluss muss man nochmals auf die Shell-Konsole mit CTRL-ALT-F2 wechseln, und den Boot-Loader auf dem RAID installieren.

  • Boot-Loader auf RAID installieren Da unser /boot unter /dev/md0 liegt, lassen wir grub-install darauf los:
    # grub-install --no-floppy /dev/md0 
    

Dann grub Konsole starten:

# grub --no-floppy 

/boot liegt auf (hd0,0) (für sda1), also liegt der Kernel hier: (hd0,0)/vmlinuz-2.6.18-4-k7 Für sda2 wird dementsprechend das gleiche angenommen.

Deswegen sagen wir in der grub shell:

root (hd0,0)
setup (hd0) 
root (hd1,0) 
setup (hd1) 
quit 

Dann noch die Datei /boot/grub/menu.lst editieren und aktualisieren:

timeout 2 # which config to boot from default 0
fallback 0 # using boot partition from 1st disk title Linux (hd0,0)
kernel (hd0,0)/vmlinuz-2.6.18-4-k7 root=/dev/md1 
initrd (hd0,0)/initrd.img-2.6.18-4-k7 # using boot partition from 2nd disk title Linux (hd1,0) 
kernel (hd1,0)/vmlinuz-2.6.18-4-k7 root=/dev/md1 initrd (hd1,0)/initrd.img-2.6.18-4-k7
  • Retten via GRUB Rescue Mode Wenn der Reboot nicht klappt, kann man im Debian Rescue Mode debuggen und Korrekturen vornehmen:

Wenn man die Stelle mit dem Festplatten-Partitionieren erreicht, ESC drücken und “Execute a Shell” aus der Liste auswählen. Nun das Boot-Device mounten, z. B. mit

# mount /dev/md0 /mnt

Nun grub verwenden, um den MBR richtig auf md0 zu schreiben. Wenn man nach der Eingabe von grub in diesem Modus die Meldung erhält: Error opening terminal: bterm’ so muss man einfach das Terminal mit diesem Kommando richtig setzen:

# export TERM=linux