Linux (Debian, CentOS, etc.) defekte Festplatte im SW RAID1 austauschen.

Wir gehen davon aus, dass 2 Festplatten verbaut sind. Also /dev/sda und /dev/sdb.
Folgende Partitionen sind vorhanden:

/dev/sda1 und /dev/sdb1 enthalten das RAID1 Array /dev/md0
/dev/sda2 and /dev/sdb2 enthalten das RAID1 Array /dev/md1

Um zu prüfen, welche Festplatte defekt ist, geben wir als root

cat /proc/mdstat

ein. Anstelle von [UU] steht dann z.B. [U_] da.

/dev/sdb ist in unserem Beispiel defekt und soll ausgetauscht werden.

Zuerst müssen wir die Seriennnummer der Festplatte herausfinden, damit wir nachher wissen, welche Festplatte wir ausbauen bzw. austauschen müssen.
Dafür installieren wir hdparm

Unter Debian:

apt-get install hdparm

Mit folgendem Befehl lesen wir nun die Seriennummer aus:

hdparm -i /dev/sdb | grep SerialNo

Die Ausgabe sieht dann so ungefähr aus:

root@ded105:~# hdparm -i /dev/sda | grep SerialNo
 Model=ST500DM002-1BD142, FwRev=KC45, <strong>SerialNo=Z2APRL6N</strong>
root@ded105:~#

Die Seriennummer notieren wir uns und entfernen die Partitionen als Nächstes aus ihren RAID Arrays.
Dafür markieren wir /dev/sdb1 und /dev/sdb2 als defekt bzw. ausgefallen:

mdadm –manage /dev/md0 –fail /dev/sdb1
mdadm –manage /dev/md1 –fail /dev/sdb2

Die Ausgabe sollte nun so ungefähr aussehen:

root@ded101:~# mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0
root@ded101:~# mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md1
root@ded101:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1](F)
      945510264 blocks super 1.2 [2/1] [U_]

md0 : active raid1 sda1[0] sdb1[1](F)
      31248312 blocks super 1.2 [2/1] [U_]

unused devices: <none>
root@ded101:~#

Nun entfernen wir sdb1 und sdb2 noch aus Ihren RAID Arrays:

mdadm --manage /dev/md0 --remove /dev/sdb1

und

mdadm --manage /dev/md1 --remove /dev/sdb2

Die Konsole sollte dabei folgendes ausgeben:

root@ded101:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0
root@ded101:~# mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2 from /dev/md1
root@ded101:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda2[0]
      945510264 blocks super 1.2 [2/1] [U_]

md0 : active raid1 sda1[0]
      31248312 blocks super 1.2 [2/1] [U_]

unused devices: <none>
root@ded101:~#

Nun fahren wir das System herunter:

shutdown -h now

Wir tauschen nun die /dev/sdb welche wir anhand der Seriennummer identifizieren durch eine mindestens genauso große Festplatte aus.

Nun fahren wir das System wieder hoch.

Zuerst müssen wir auf der neuen Festplatte die selben Partitionen erstellen wie auf /dev/sda

Das machen wir am einfachsten mit:

sfdisk -d /dev/sda | sfdisk /dev/sdb

Um die Partitionierung zu überprüfen geben wir

fdisk -l

ein.
Jetzt fügen wir /dev/sdb1 wieder zu /dev/md0 und /dev/sdb2 wieder zu /dev/md1 hinzu:

mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2

Die beiden RAID Arrays werden nun automatisch wieder Synchronisiert.

Mit cat /proc/mdstat sollte dieser Vorgang sichtbar gemacht werden.

Und schon sind wir fertig! /dev/sdb wurde erfolgreich ersetzt und das System ist wieder komplett einsatzbereit.