Aufsetzen von Software RAID1 auf einem bereits installierten System (Inkl. GRUB Konfiguration) (Mandriva 2008.0) - Seite 2

4 Unsere RAID Arrays erstellen

Lass uns nun unsere RAID Arrays /dev/md0, /dev/md1 und /dev/md2 erstellen. /dev/hdb1 wird /dev/md0 hinzugefügt, /dev/hdb5 zu /dev/md1 und /dev/hdb6 zu /dev/md2. /dev/hda1, /dev/hda5, und /dev/hda6 können noch nicht gleich hinzugefügt werden (da 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/hdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/hdb5
mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/hdb6

Der Befehl

cat /proc/mdstat

sollte nun zeigen, dass Du drei degraded RAID Arrays hast ([_U] or [U_] bedeutet, dass ein Array degraded ist, wohingegen [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 hdb6[1]
4642688 blocks [2/1] [_U]

md1 : active raid1 hdb5[1]
417536 blocks [2/1] [_U]

md0 : active raid1 hdb1[1]
176576 blocks [2/1] [_U]

unused devices: <none>
[root@server1 ~]#

Als Nächstes erstellen wir auf unseren RAID Arrays Dateisysteme (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 müssen wir /etc/mdadm.conf (das noch keinerlei Informationen über unsere neuen RAID arrays enthält) an die neue Situation anpassen:

cp /etc/mdadm.conf /etc/mdadm.conf_orig
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 unsere drei (degraded) RAID Arrays sehen:
# mdadm configuration file
# # mdadm will function properly without the use of a configuration file, # but this file is useful for keeping track of arrays and member disks. # In general, a mdadm.conf file is created, and updated, after arrays # are created. This is the opposite behavior of /etc/raidtab which is # created prior to array construction. # # # the config file takes two types of lines: # # DEVICE lines specify a list of devices of where to look for # potential member disks # # ARRAY lines specify information about how to identify arrays so # so that they can be activated # # You can have more than one device line and use wild cards. The first # example includes SCSI the first partition of SCSI disks /dev/sdb, # /dev/sdc, /dev/sdd, /dev/sdj, /dev/sdk, and /dev/sdl. The second # line looks for array slices on IDE disks. # #DEVICE /dev/sd[bcdjkl]1 #DEVICE /dev/hda1 /dev/hdb1 # # If you mount devfs on /dev, then a suitable way to list all devices is: #DEVICE /dev/discs/*/* # # # # ARRAY lines specify an array to assemble and a method of identification. # Arrays can currently be identified by using a UUID, superblock minor number, # or a listing of devices. # # super-minor is usually the minor number of the metadevice # UUID is the Universally Unique Identifier for the array # Each can be obtained using # # mdadm -D <md> # #ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371 #ARRAY /dev/md1 super-minor=1 #ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1 # # ARRAY lines can also specify a "spare-group" for each array. mdadm --monitor # will then move a spare between arrays in a spare-group if one array has a failed # drive but no spare #ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df spare-group=group1 #ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 spare-group=group1 # # When used in --follow (aka --monitor) mode, mdadm needs a # mail address and/or a program. This can be given with "mailaddr" # and "program" lines to that monitoring can be started using # mdadm --follow --scan & echo $! > /var/run/mdadm # If the lines are not found, mdadm will exit quietly #MAILADDR root@mydomain.tld #PROGRAM /usr/sbin/handle-mdadm-events ARRAY /dev/md0 level=raid1 num-devices=2 UUID=6b4f013f:6fe18719:5904a9bd:70e9cee6 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=63194e2e:c656857a:3237a906:0616f49e ARRAY /dev/md2 level=raid1 num-devices=2 UUID=edec7105:62700dc0:643e9917:176563a7

5 Das System an RAID1 anpassen

Lass uns nun /dev/md0 und /dev/md2 einhängen (das swap array /dev/md1 brauchen wir nicht einhängen):

mkdir /mnt/md0
mkdir /mnt/md2

mount /dev/md0 /mnt/md0
mount /dev/md2 /mnt/md2

Beide Arrays solltest Du nun in der Ausgabe von folgendem Befehl sehen

mount


[root@server1 ~]# mount
/dev/hda6 on / type ext3 (rw,relatime)
none on /proc type proc (rw)
/dev/hda1 on /boot type ext3 (rw,relatime)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (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 /dev/hda1 mit /dev/md0, /dev/hda5 mit /dev/md1 und /dev/hda6 mit /dev/md2 sodass die Datei wie folgt aussieht:

vi /etc/fstab


/dev/md2 / ext3 relatime 1 1
/dev/md0 /boot ext3 relatime 1 2 /dev/cdrom /media/cdrom auto umask=0022,users,iocharset=utf8,noauto,ro,exec 0 0 /dev/fd0 /media/floppy auto umask=0022,users,iocharset=utf8,noauto,exec,flush 0 0 none /proc proc defaults 0 0 /dev/md1 swap swap defaults 0 0
Ersetze als Nächstes /dev/hda1 mit /dev/md0 und /dev/hda6 mit /dev/md2 in /etc/mtab (Du kannst die beiden /dev/md Zeilen am Ende der Datei ignorieren):

vi /etc/mtab


/dev/md2 / ext3 rw,relatime 0 0
none /proc proc rw 0 0 /dev/md0 /boot ext3 rw,relatime 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0 /dev/md0 /mnt/md0 ext3 rw 0 0 /dev/md2 /mnt/md2 ext3 rw 0 0
Nun zum GRUB Boot Loader. Öffne /boot/grub/menu.lst und füge fallback 1 direkt nach default 0 hinzu:

vi /boot/grub/menu.lst


[...]
default 0 fallback 1 [...]
Das bewirkt, wenn der erste Kernel fehlschlägt (das Zählen beginnt bei 0, also ist der erste Kernel 0), dass Kernel #2 gestartet wird.

Gehe in der gleichen Datei ans Ende, wo sich die Kernel Zeilen befinden. Kopiere den ersten Bereich und füge diese Kopie am Anfang ein; ersetze root=/dev/hda6 mit root=/dev/md2 und (hd0,0) mit (hd1,0). Falls Du etwas wie resume=/dev/hda5 in Deiner Kernel Zeile stehen hast, ersetze es mit resume=/dev/md1:
[...]
title linux kernel (hd1,0)/vmlinuz BOOT_IMAGE=linux root=/dev/md2 resume=/dev/md1 initrd (hd1,0)/initrd.img title linux kernel (hd0,0)/vmlinuz BOOT_IMAGE=linux root=/dev/hda6 resume=/dev/hda5 initrd (hd0,0)/initrd.img
Die gesamte Datei sollte so ähnlich wie Folgendes aussehen:
timeout 10
color black/cyan yellow/cyan default 0 fallback 1 title linux kernel (hd1,0)/vmlinuz BOOT_IMAGE=linux root=/dev/md2 resume=/dev/md1 initrd (hd1,0)/initrd.img title linux kernel (hd0,0)/vmlinuz BOOT_IMAGE=linux root=/dev/hda6 resume=/dev/hda5 initrd (hd0,0)/initrd.img title failsafe kernel (hd0,0)/vmlinuz BOOT_IMAGE=failsafe root=/dev/hda6 failsafe initrd (hd0,0)/initrd.img
(hd1,0) verweist auf /dev/hdb was bereits Teil unseres RAID Arrays ist. In wenigen Minuten werden wir das System neu starten; das System wird dann versuchen von unseren (immer noch degraded) RAID Arrays aus zu starten; wenn es fehlschlägt, wird es von /dev/hda (-> fallback 1) aus starten.

Als Nächstes passen wir unsere Ramdisk an die neue 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/hda1 und /dev/hda6 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

0 Kommentar(e)

Zum Posten von Kommentaren bitte