Aufsetzen von Software RAID1 auf einem bereits installierten System (inkl. GRUB Konfiguration) (Fedora 8)
Um sicher zu stellen, dass keine Reste von vorherigen RAID Installationen auf /dev/sdb vorhanden sind, führen wir folgende Befehle aus:
mdadm –zero-superblock /dev/sdb1
mdadm –zero-superblock /dev/sdb2
mdadm –zero-superblock /dev/sdb3
Gibt es keine Reste von vorherigen RAID Installationen, wird jeder der obigen Befehlen einen Fehler wie diesen anzeigen (worüber Du Dir aber keine Sorgen machen musst):
[[email protected] ~]# mdadm –zero-superblock /dev/sdb1
mdadm: Unrecognised md component device – /dev/sdb1
[[email protected] ~]#
Anderenfalls werden die Befehle gar nichts anzeigen.
4 Unsere RAID Arrays erstellen
Lass uns nun unsere RAID arrays /dev/md0, /dev/md1 und /dev/md2 erstellen. /dev/sdb1 wird zu /dev/md0, /dev/sdb2 zu /dev/md1 und /dev/sdb3 zu /dev/md2 hinzugefügt. /dev/sda1, /dev/sda2 und /dev/sda3 können jetzt nicht hinzugefügt werden (das das System derzeit darauf ausgeführt wird), daher verwenden wir den Platzhalter missing in den folgenden drei Befehlen:
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 nun anzeigen, dass Du drei degraded RAID Arrays hast ([_U] oder [U_] bedeutet, dass ein Array degraded ist, während [UU] bedeutet, dass das Array in Ordnung ist):
[[email protected] ~]# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdb3[1]
4618560 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
513984 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
104320 blocks [2/1] [_U]
unused devices: <none>
[[email protected] ~]#
Als Nächstes legen wir auf unseren RAID Arrays Dateisysteme an (ext3 auf /dev/md0 und /dev/md2 und swap auf /dev/md1):
mkfs.ext3 /dev/md0
mkswap /dev/md1
mkfs.ext3 /dev/md2
Als Nächstes erstellen wir /etc/mdadm.conf wie folgt:
mdadm –examine –scan > /etc/mdadm.conf
Lass Dir die Inhalte der Datei anzeigen:
cat /etc/mdadm.conf
In der Datei müsstest Du nun Angaben über die drei (degraded) RAID Arrays sehen:
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=2848a3f5:cd1c26b6:e762ed83:696752f9 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8a004bac:92261691:227767de:4adf6592 ARRAY /dev/md2 level=raid1 num-devices=2 UUID=939f1c71:be9c10fd:d9e5f8c6:a46bcd49 |
5 Das System an RAID1 anpassen
Lass uns nun /dev/md0 und /dev/md2 einhängen (wir müssen das Swap Array /dev/md1 nicht einhängen):
mkdir /mnt/md0
mkdir /mnt/md2
mount /dev/md0 /mnt/md0
mount /dev/md2 /mnt/md2
Beide Arrays müsstest Du nun in der Ausgabe des folgenden Befehls sehen
mount
[[email protected] ~]# 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)
[[email protected] ~]#
Als Nächstes bearbeiten wir /etc/fstab. Ersetze LABEL=/boot mit /dev/md0, LABEL=SWAP-sda2 mit /dev/md1 und LABEL=/ mit /dev/md2 sodass die Datei wie folgt aussieht:
vi /etc/fstab
/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 |
Ersetze nun LABEL=/boot mit /dev/md0 und LABEL=/ mit /dev/md2 in /etc/mtab:
vi /etc/mtab
/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 |
Weiter mit dem GRUB Boot loader. Öffne /boot/grub/menu.lst und fügen fallback=1 direkt nach default=0 an:
vi /boot/grub/menu.lst
[...] default=0 fallback=1 [...] |
Das hat zur Folge, dass wenn der erste Kernel (das Zählen beginnt bei 0, also ist der erste Kernel 0) ausfällt, Kernel #2 gestartet wird.
Begib Dich ans Ende der (gleichen) Datei, dort siehst Du einige Kernel Zeilen. Kopiere den ersten Bereich und füge diese Kopie am Anfang ein; ersetze root=LABEL=/ mit root=/dev/md2 und root (hd0,0) mit root (hd1,0):
[...] title Fedora (2.6.23.1-42.fc8) root (hd1,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet initrd /initrd-2.6.23.1-42.fc8.img title Fedora (2.6.23.1-42.fc8) root (hd0,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet initrd /initrd-2.6.23.1-42.fc8.img |
Die ganze Datei sollte in etwa so aussehen:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda3 # initrd /initrd-version.img #boot=/dev/sda default=0 fallback=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Fedora (2.6.23.1-42.fc8) root (hd1,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet initrd /initrd-2.6.23.1-42.fc8.img title Fedora (2.6.23.1-42.fc8) root (hd0,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet initrd /initrd-2.6.23.1-42.fc8.img |
root (hd1,0) verweist auf /dev/sdb was bereits Teil unseres RAID Arrays ist. In wenigen Minuten werden wir unser System neu starten; das System wird dann versuchen von unseren (immer noch degraded) RAID Arrays zu starten; wenn dies fehlschlägt, wird es von /dev/sda (-> fallback 1) starten.
Als Nächstes passen wir unsere Ramdisk der neuen Situation an:
mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
mkinitrd /boot/initrd-`uname -r`.img `uname -r`
Nun kopieren wir die Inhalte von /dev/sda1 und /dev/sda3 nach /dev/md0 und /dev/md2 (die auf /mnt/md0 und /mnt/md2 eingehängt sind):
cp -dpRx / /mnt/md2
cd /boot
cp -dpRx . /mnt/md0