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

Damit das System startbar wird, wird der Bootloader grub2 eingerichtet. Dazu wird eine chroot-Umgebung gestartet und die Bootsektoren neu initialisiert.
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>