RAID1: Arrays erstellen und GRUB vorbereiten
Übersicht
Diese Anleitung beschreibt das Erstellen degradierter RAID1-Arrays, das Anlegen von Dateisystemen, das Anpassen von /etc/mdadm.conf, das Mounten und Umschreiben von fstab/mtab sowie das Vorbereiten und Installieren von GRUB auf beiden Festplatten. Ziel ist ein System, das auch bei Ausfall einer Platte von der zweiten Platte booten kann.
Wichtige Begriffe in einer Zeile
- RAID1: Spiegelung zweier Festplatten; Daten werden auf beiden Platten geschrieben.
- degraded: Ein RAID-Laufwerk ist unvollständig, weil ein oder mehrere Member fehlen.
- mdadm: Linux-Tool zum Verwalten softwarebasierter RAID-Arrays.
4 Erstellen der RAID-Arrays
Nun erstellen wir die RAID-Arrays /dev/md0, /dev/md1 und /dev/md2. /dev/sdb1 wird zu /dev/md0 hinzugefügt, /dev/sdb2 zu /dev/md1 und /dev/sdb3 zu /dev/md2. /dev/sda1, /dev/sda2 und /dev/sda3 können derzeit nicht hinzugefügt werden (das System läuft darauf), deshalb verwenden wir in den folgenden Befehlen den Platzhalter missing:
mdadm –create /dev/md0 –level=1 –raid-disks=2 missing /dev/sdb1
mdadm –create /dev/md1 –level=1 –raid-disks=2 missing /dev/sdb2
mdadm –create /dev/md2 –level=1 –raid-disks=2 missing /dev/sdb3
Der Befehl
cat /proc/mdstat
sollte jetzt anzeigen, dass drei degradierte RAID-Arrays vorhanden sind ([U] oder [U] bedeutet degraded, [UU] bedeutet in Ordnung):
[root@server1 ~]# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdb3[1]
9759360 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
522048 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
200704 blocks [2/1] [_U]
unused devices:
[root@server1 ~]#
Hinweis: Degradierte Arrays sind normal, solange die zweite Festplatte später hinzugefügt wird. Stelle sicher, dass du die korrekten Partitionen ansprichst, um Datenverlust zu vermeiden.
Dateisysteme anlegen
Anschließend legen wir die Dateisysteme auf den RAID-Arrays an (ext3 auf /dev/md0 und /dev/md2, swap auf /dev/md1):
mkfs.ext3 /dev/md0
mkswap /dev/md1
mkfs.ext3 /dev/md2
mdadm-Konfiguration erzeugen
Erzeuge /etc/mdadm.conf mit einer Scan-Ausgabe:
mdadm --examine --scan > /etc/mdadm.conf
Zeige den Inhalt an:
cat /etc/mdadm.conf
In der Datei sollten jetzt Details zu den drei (degradierten) RAID-Arrays stehen:
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=78d582f0:940fabb5:f1c1092a:04a55452
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8db8f7e1:f2a64674:d22afece:4a539aa7
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=1baf282d:17c58efd:a8de6947:b0af9792
Wichtig: Prüfe die UUIDs; sie helfen beim späteren automatischen Zusammensetzen der Arrays beim Boot.
5 System an RAID1 anpassen
Jetzt mounten wir /dev/md0 und /dev/md2 (das Swap-Array /dev/md1 muss nicht gemountet werden):
mkdir /mnt/md0
mkdir /mnt/md2
mount /dev/md0 /mnt/md0
mount /dev/md2 /mnt/md2
Prüfe mit
mount
ob die Arrays eingebunden sind. Beispielausgabe:
[root@server1 ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /mnt/md0 type ext3 (rw)
/dev/md2 on /mnt/md2 type ext3 (rw)
[root@server1 ~]#
/etc/fstab anpassen
Ersetze LABEL=/boot mit /dev/md0, LABEL=SWAP-sda2 mit /dev/md1 und LABEL=/ mit /dev/md2 in /etc/fstab, sodass die Datei etwa so aussieht:
/dev/md2 / ext3 defaults 1 1
/dev/md0 /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/md1 swap swap defaults 0 0
Speichere die Datei und achte darauf, dass Einträge korrekt formatiert sind. Fehler in fstab können den Boot verhindern.
/etc/mtab anpassen
Ersetze /dev/sda1 mit /dev/md0 und /dev/sda3 mit /dev/md2 in /etc/mtab (temporäre Laufzeitdatei):
/dev/md2 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/md0 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
Hinweis: /etc/mtab wird häufig bei Reboot automatisch neu geschrieben; diese Änderung ist vorübergehend, aber nützlich für Tests.
GRUB anpassen
Öffne /boot/grub/menu.lst und füge fallback=1 direkt nach default=0 hinzu:
default=0
fallback=1
fallback=1 sorgt dafür, dass beim Fehlschlag des ersten Kernel-Eintrags der zweite Eintrag gestartet wird.
Finde am Ende die Kernel-Stanzas, kopiere den ersten Eintrag und füge ihn an den Anfang ein. Ersetze root=LABEL=/ mit root=/dev/md2 und root (hd0,0) mit root (hd1,0):
title CentOS (2.6.18-128.el5)
root (hd1,0)
kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/md2
initrd /initrd-2.6.18-128.el5.img
title CentOS (2.6.18-128.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/
initrd /initrd-2.6.18-128.el5.img
root (hd1,0) bezieht sich auf /dev/sdb, die bereits Teil der RAID-Arrays ist. Nach dem Reboot versucht das System, von den (noch degradierten) RAID-Arrays zu booten; falls das fehlschlägt, wird von /dev/sda (fallback) gestartet.
Ramdisk anpassen
Verschiebe die bestehende initrd und erzeuge eine neue:
mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
mkinitrd /boot/initrd-`uname -r`.img `uname -r`
Daten kopieren
Kopiere den Inhalt von /dev/sda1 und /dev/sda3 zu /dev/md0 und /dev/md2 (die auf /mnt/md0 und /mnt/md2 gemountet sind):
cp -dpRx / /mnt/md2
cd /boot
cp -dpRx . /mnt/md0
Prüfe anschließend, ob die Dateien korrekt kopiert wurden (z. B. mittels ls -la, df -h, oder md5sum einzelner Dateien).
6 GRUB vorbereiten (Teil 1)
Nun muss der GRUB-Bootloader auf die zweite Festplatte /dev/sdb installiert werden. Starte die GRUB-Shell:
grub
Gib in der GRUB-Shell nacheinander die folgenden Befehle ein:
root (hd0,0)
Beispielausgabe:
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub>
setup (hd0)
Beispielausgabe:
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub>
root (hd1,0)
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd
grub>
setup (hd1)
Beispielausgabe:
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub>
quit
Zurück in der normalen Shell, starte das System neu und prüfe, ob der Boot von den RAID-Arrays funktioniert:
reboot
Wenn der Boot fehlschlägt, schaut GRUB auf die Fallback-Einträge und versucht, von /dev/sda zu starten.
Wichtige Hinweise und Checks vor jedem Schritt
- Backup: Ein vollständiges, überprüftes Backup ist Pflicht vor diesen Änderungen.
- Partitionen prüfen: Verwende fdisk -l oder lsblk, um sicherzustellen, dass du die richtigen Geräte/Partitionen auswählst.
- mdadm-Version: Prüfe die mdadm-Version; Befehle können leicht variieren.
- Logs: Überwache /var/log/messages bzw. dmesg nach Bootversuchen.
Wann diese Vorgehensweise fehlschlägt
- hardware-spezifische Bootloader-Eigenheiten: Manche BIOS/UEFI-Setups erlauben nicht das Booten von bestimmten RAID-Layouts.
- inkonsistente Partitionstabellen: Unterschiedliche Partitionstabellen auf sda/sdb können GRUB-Installationen verhindern.
- beschädigte Bootsektoren: Wenn Stage1/Stage2 nicht vorhanden oder beschädigt sind, schlägt setup fehl.
Alternative Ansätze
- Verwendung von LVM auf RAID: Leg das RAID unter LVM, um flexible Volumes zu haben.
- Boot via UEFI und GRUB2: Bei moderner Hardware kann UEFI+GRUB2 sinnvoller sein; Vorgehen unterscheidet sich.
- Hardware-RAID: Nutze einen Controller, wenn Hardware-RAID bevorzugt wird (anders zu verwalten).
Entscheidungsheuristik (Mental Model)
- Verfügbarkeit über Redundanz: RAID1 bietet sofortige Redundanz; wenn du Snapshots oder einfache Rollbacks brauchst, kombiniere mit LVM oder Dateisystemen, die Snapshots unterstützen.
- Komplexität vs. Kontrolle: Software-RAID mit mdadm ist flexibel und transparent, aber erfordert manuelle Eingriffe beim Boot.
Kurzanleitung / Checkliste vor dem Reboot
- Backups erstellt und überprüft
- /etc/mdadm.conf aktualisiert
- /etc/fstab und /etc/mtab angepasst
- initrd neu erzeugt
- GRUB auf beiden Platten installiert
- Dateien zu /mnt/md0 und /mnt/md2 kopiert
- Logs geprüft und ggf. Fehler behoben
Kriterien für Erfolg
- System bootet ohne Eingreifen von /dev/md2 (primärer RAID-Boot).
- Bei Ausfall einer Platte bootet das System weiterhin (Spiegel funktioniert).
- Arrays werden beim Start automatisch mit mdadm zusammengesetzt (UUIDs in /etc/mdadm.conf vorhanden).
Kurzes Glossar
- fallback: GRUB-Option, die angibt, welcher Eintrag bei Fehlschlag als nächstes gewählt wird.
- initrd: Initial RAM Disk, enthält Treiber/Module für den frühen Bootprozess.
Zusammenfassung
Dieses Dokument führt durch das Erstellen degradierter RAID1-Arrays, das Anlegen von Dateisystemen und das Anpassen von Boot- und Systemkonfiguration, damit ein System sicher von seinen RAID-Containern booten kann. Teste jeden Schritt, halte Backups bereit und dokumentiere UUIDs und Partitionen vor Änderungen.
Wichtig: Wenn während der Installation von GRUB oder beim Erzeugen des initrd Fehler auftreten, dokumentiere die Fehlermeldungen und behebe diese schrittweise. Bei Unsicherheit Systeme nicht neu starten, sondern die Konfiguration offline überprüfen.
Ähnliche Materialien

FFXI: Packet Loss erkennen und reduzieren

Office 365 E‑Mail‑Backup: Anleitung & Entscheidungshilfe

Verborgene Facebook‑Nachrichten finden
Ubuntu 8.04: Software-RAID1 installieren
RAID1 Arrays erstellen und GRUB vorbereiten
