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):

[root@server1 ~]# mdadm –zero-superblock /dev/sdb1
mdadm: Unrecognised md component device – /dev/sdb1
[root@server1 ~]#

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):

[root@server1 ~]# 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>
[root@server1 ~]#

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

[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 ~]#

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

Das könnte Dich auch interessieren …