PC-Welt: Anleitung Raid-Verbund unter Linux reparieren
Eine meiner Raid5-Platten war defekt (nicht physikalisch, sondern Stomausfall trotz UPS (Netzteil)).
Sicherheitshalber habe ich nicht die 'defekte' Platte, sondern die Ersatzplatte eingebaut. Da Debian derzeit nicht in Raid5 booten kann, ist das OS auf einem Raid1, deren Spiegelung auch auf der defekten Platte lag. Das Wiederherstellen ging (nach Partitionieren der neuen Platte problemlos mit mdadm /dev/md0 -a /dev/sdb1
. Nach 5 Minuten war die Platte wieder gespiegelt.
Anders mit Raid 5. Ein mdadm /dev/md1 -a /dev/sdb2
hat zwar die Partition ins Array eingefügt, allerdings als 'Spare'. Das ist jedoch normal. Aus der mdadm man page:
When creating a RAID5 array, mdadm will automatically create a degraded array with an extra spare drive. This is because building the spare into a degraded array is in general faster than resyncing the parity on a non-degraded, but not clean, array. This feature can be over-ridden with the --force option.
Jedoch sollte das Raid nun beginnen, selbsttätig mit dem Wiederherstellen/Syncen der Partition zu beginnen. Tat es aber nicht. dmesg hat auch eine Fehlermeldung ausgegeben: „cannot start dirty degraded array for /dev/md1
.
Bei mir hat es geholfen, das Raid komplett zu stoppen, dann manuell den start erzwingen. Das Rebuild hat sofort begonnen.
[root@ornery ~]# mdadm -S /dev/md1 [root@ornery ~]# mdadm --assemble --force --scan /dev/md1
Hätte das nichts gebracht, dann wäre ein weiterer Versuch gewesen:
[root@ornery ~]# cat /sys/block/md0/md/array_state inactive [root@ornery ~]# echo "clean" > /sys/block/md0/md/array_state [root@ornery ~]# cat /sys/block/md0/md/array_state clean
Auch hat es jemanden geholfen 1), den Array dann zu mounten (Read only!!!), wieder zu entmouten und neu zu builden:
mount -o ro /dev/md0 /data umount /data mdadm /dev/md0 -a /dev/sdb1
den Status checken:
cat /proc/mdstat mdadm --detail /dev/md1
bzw. beim Rebuild (um ihn zu verfolgen, Aktualisierung alle 5 Sek.)
watch -n5 cat /proc/mdstat