Datenträgertausch bei Software Raid
Datenträger haben eine begrenzte Lebensdauer. Es kommt irgendwann der Zeitpunkt, wo Fehler auftreten und das Medium ersetzt werden muss. Die meisten Server verwenden mindestens ein Raid der Stufe 1, wo die Daten auf 2 Datenträgern gespiegelt werden. Fällt ein Datenträger aus, kann das System mit dem 2. Datenträger weiterlaufen.
Austausch des defekten Datenträgers
Nach dem Tausch des defekten Datenträgers muss das Software-RAID wieder aufgebaut werden. Dazu startet man ein Rettungssystem. Zuerst prüft man den Status das Raids und welcher Datenträger neu hinzugekommen ist.
# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb4[0]
1944880960 blocks super 1.2 [2/1] [U]
md0 : active raid1 sdb2[0]
499392 blocks super 1.2 [2/1] [U]
md1 : active (auto-read-only) raid1 sdb3[0]
7996352 blocks super 1.2 [2/1] [U]
unused devices
In diesem Beispiel wurde der erste Datenträger (sda) ersetzt. Zuerst muss die Partitionstabelle kopiert werden.
#MBR
sfdisk -d /dev/sdb | sfdisk -f /dev/sda
#GPT
sgdisk --backup=table /dev/sdb
sgdisk --load-backup=table /dev/sda
sgdisk -G /dev/sda
#Tabellen neu einlesen
partprobe
Datenträger dem RAID Verbund hinzufügen
Ist der RAID-Verbund noch im Status inactive, so muss dieses vorher gestartet werden. Das Beispiel muss für den Eigenbedarf angepasst werden.
mdadm --run /dev/md0
mdadm --run /dev/md1
mdadm --run /dev/md2
Jetzt kann der neue Datenträger dem bestehenden RAID-Verbund hinzugefügt werden
mdadm /dev/md0 -a /dev/sda2
mdadm /dev/md1 -a /dev/sda3
mdadm /dev/md2 -a /dev/sda4
Installation des Bootloaders
mount /dev/md2 /mnt
mount /dev/md0 /mnt/boot
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys
chroot /mnt
grub-install /dev/sda
grub-install /dev/sdb
exit
Nachdem die chroot-Umgebung verlassen ist, werden die Partitionen ausgehangen und das System kann normal gestartet werden.
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt/boot
umount /mnt
Synchronisierung
Nach dem Neustart wird das RAID automatisch abgeglichen. Den aktuellen Status kann man sich anzeigen lassen.
# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda4[2] sdb4[0]
1944880960 blocks super 1.2 [2/1] [U_]
[=====>...............] recovery = 26.1% (508464128/1944880960) finish=201.5min speed=118786K/sec
md0 : active raid1 sda2[2] sdb2[0]
499392 blocks super 1.2 [2/2] [UU]
md1 : active (auto-read-only) raid1 sda3[2] sdb3[0]
7996352 blocks super 1.2 [2/2] [UU]
unused devices: <none>