Software RAID1 auf einem laufenden System (Inkl. GRUB Konfiguration) (Debian Etch) einrichten
9 Testen
Lass uns nun einen Ausfall der Festplatte simulieren. Es spielt keine Rolle ob Du /dev/sda oder /dev/sdb auswählst. In diesem Beispiel nehme ich an, dass /dev/sdb ausgefallen ist.
Um einen Ausfall der Festplatte zu simulieren, kannst Du entweder das System runter fahren und /dev/sdb aus dem System entfernen oder Du entfernst es wie folgt:
mdadm –manage /dev/md0 –fail /dev/sdb1
mdadm –manage /dev/md1 –fail /dev/sdb2
mdadm –manage /dev/md2 –fail /dev/sdb3
mdadm –manage /dev/md0 –remove /dev/sdb1
mdadm –manage /dev/md1 –remove /dev/sdb2
mdadm –manage /dev/md2 –remove /dev/sdb3
Fahre das System runter:
shutdown -h now
Baue dann eine neue /dev/sdb Festplatte ein (falls Du ein Versagen von /dev/sda simulierst, solltest Du jetzt /dev/sdb da einbauen, wo vorher /dev/sda war und die neue Festplatte als /dev/sdb einbauen!) und das System starten. Es sollte immer noch ohne Probleme starten.
Führe nun Folgendes aus
cat /proc/mdstat
und Du müsstest sehen, dass wir ein fehlgeschlagenes array haben:
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[0]
4594496 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
497920 blocks [2/1] [U_]
md0 : active raid1 sda1[0]
144448 blocks [2/1] [U_]
unused devices: <none>
server1:~#
Die Ausgabe von
fdisk -l
sollte wie folgt aussehen:
server1:~# fdisk -l
Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 18 144553+ fd Linux raid autodetect
/dev/sda2 19 80 498015 fd Linux raid autodetect
/dev/sda3 81 652 4594590 fd Linux raid autodetect
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn’t contain a valid partition table
Disk /dev/md0: 147 MB, 147914752 bytes
2 heads, 4 sectors/track, 36112 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md0 doesn’t contain a valid partition table
Disk /dev/md1: 509 MB, 509870080 bytes
2 heads, 4 sectors/track, 124480 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md1 doesn’t contain a valid partition table
Disk /dev/md2: 4704 MB, 4704763904 bytes
2 heads, 4 sectors/track, 1148624 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md2 doesn’t contain a valid partition table
server1:~#
Nun kopieren wir die Partitionstabelle von /dev/sda zu /dev/sdb:
sfdisk -d /dev/sda | sfdisk /dev/sdb
(Wenn Du eine Fehlermeldung erhältst, kannst Du die –force Option versuchen:
sfdisk -d /dev/sda | sfdisk –force /dev/sdb
)
server1:~# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now …
OK
Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 63 289169 289107 fd Linux raid autodetect
/dev/sdb2 289170 1285199 996030 fd Linux raid autodetect
/dev/sdb3 1285200 10474379 9189180 fd Linux raid autodetect
/dev/sdb4 0 – 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table …
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
server1:~#
Entferne danach alle Reste eines vorhergehenden RAID array von /dev/sdb…
mdadm –zero-superblock /dev/sdb1
mdadm –zero-superblock /dev/sdb2
mdadm –zero-superblock /dev/sdb3
… und füge /dev/sdb dem RAID array hinzu:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
mdadm -a /dev/md2 /dev/sdb3
Sieh Dir nun Folgendes an
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[2] sda3[0]
4594496 blocks [2/1] [U_]
[======>…………..] recovery = 30.8% (1416256/4594496) finish=0.6min speed=83309K/sec
md1 : active raid1 sdb2[1] sda2[0]
497920 blocks [2/2] [UU]
md0 : active raid1 sdb1[1] sda1[0]
144448 blocks [2/2] [UU]
unused devices: <none>
server1:~#
Warte bis die Synchronisation abgeschlossen ist:
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[1] sda3[0]
4594496 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
497920 blocks [2/2] [UU]
md0 : active raid1 sdb1[1] sda1[0]
144448 blocks [2/2] [UU]
unused devices: <none>
server1:~#
Dann führe aus:
grub
und installiere den Bootloader auf beiden Festplatten:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Das war’s. Du hast gerade eine ausgefallene Festplatte in Deinem RAID1 array ersetzt.
10 Links
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- Debian: http://www.debian.org