Zum Hauptinhalt springen

Defekte Festplatte ersetzen

Das Vorgehen sieht kurz zusammengefasst etwa folgendermassen aus:

  1. Defekte Festplatte aus dem RAID entfernen
  2. Festplatte durch Nine austauschen lassen
  3. Neue Festplatte fürs RAID vorbereiten
  4. Festplatte zum RAID hinzufügen
  5. Bootloader schreiben

Einleitung​

Diese Anleitung bezieht sich auf Dedicated Server mit mindestens zwei Festplatten und Software-RAID 1 (mit von Nine vorinstalliertem Ubuntu). Für Server mit Hardware-RAID, siehe RAID Konfiguration mit StorCLI. Ob bei deinem System ein Software-RAID zum Einsatz kommt, kannst du mit cat /proc/mdstat prüfen. Siehst du dort mehr als nur unused devices: , ist dein System mit einem Software-RAID ausgestattet.

Auf Software-RAID prüfen:

root@server:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sda2[1] sdb2[0]
972443840 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[1] sdb1[0]
208640 blocks super 1.2 [2/2] [UU]

unused devices:

Gesundes RAID

Das obige Bild zeigt die Ausgabe von cat /proc/mdstat bei einem funktionsfähigen, gesunden RAID.

Vom System als "fehlerhaft" erkannte Partitionen werden mit (F) gekennzeichnet.

Defekte Partition im RAID

1. Festplatte aus dem RAID entfernen​

Eine Partition in einem RAID wird über den Befehl mdadm --manage /dev/mdX -f /dev/sdY als fehlerhaft markiert. X steht für das spezifische RAID-Device, Y für die spezifische "echte" Partition. Wenn dies für alle Partitionen derselben Festplatte erfolgt ist, kann die Festplatte nun mit dem Befehl mdadm --manage /dev/mdX -r /dev/sdY - wieder mit den gleichen Nummern für jede Partition - aus dem RAID entfernt werden.

Um beispielsweise die Festplatte /dev/sdb aus dem RAID zu entfernen, kann dies mit den folgenden Befehlen erreicht werden:

root@server:~# mdadm --manage /dev/md1 -f /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md1

root@server:~# mdadm --manage /dev/md1 -r /dev/sdb2
mdadm: hot removed /dev/sdb2 from /dev/md1

root@server:~# mdadm --manage /dev/md0 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0

root@server:~# mdadm --manage /dev/md0 -r /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0

2. Festplatte tauschen lassen​

Sende uns eine Anfrage an unsere Support-Adresse zu. Wir benötigen die IP-Adresse deines Servers und zur Sicherheit die Seriennummer der fehlerhaften Festplatte.

Anzeigen der Seriennummer der fehlerhaften Festplatte, zum Beispiel /dev/sda:

root@server:~# hdparm -I /dev/sda | grep -i serial
Model=WDC WD1003FBYX-01Y7B1, FwRev=01.01V02, SerialNo=WD-WCAW35284076

3. Festplatte fürs RAID vorbereiten​

Die neue Festplatte muss nun zum RAID-Verbund hinzugefügt werden. Sie hat gegebenenfalls einen anderen Festplatten-Buchstaben als die ersetzte Festplatte. Die Festplatten-"Nummerierung" findet man unter den Partitionsinformationen in /proc/partitions, indem man die Festplatten-Buchstaben mit den im RAID vorhandenen Partitionen vergleicht. So hat man beispielsweise /dev/sdc als die neue Festplatte ausfindig gemacht und möchte diese nun ins RAID aufnehmen:

root@server:~# cat /proc/partitions
major minor #blocks name

8 0 976762584 sda
8 1 208813 sda1
8 2 972575100 sda2
9 0 208640 md0
9 1 972443840 md1
252 0 10485760 dm-0
252 1 8388608 dm-1
252 2 485490688 dm-2
252 3 104857600 dm-3
252 4 10485760 dm-4
8 16 976762584 sdc

Anfangs muss die Partitionierung einer bestehenden Festplatte auf die neue Festplatte übernommen werden. Für Festplatten mit MBR-Partitionstabellen ist dies mit dem Befehl sfdisk möglich. Mit sfdisk lässt sich mithilfe des folgenden Befehls die Partitionstabelle von /dev/sda auf /dev/sdc kopieren:

root@server:~# sfdisk -d /dev/sda | sfdisk /dev/sdc

Disk /dev/sdc: 121601 cylinders, 255 heads, 63 sectors/track
Old situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start End #cyls #blocks Id System
/dev/sdc1 0 - 0 0 0 Empty
/dev/sdc2 0 - 0 0 0 Empty
/dev/sdc3 0 - 0 0 0 Empty
/dev/sdc4 0 - 0 0 0 Empty
New situation:
Units = sectors of 512 bytes, counting from 0

Device Boot Start End #sectors Id System
/dev/sdc1 * 63 417689 417627 fd Linux raid autodetect
/dev/sdc2 417690 1945567889 1945150200 fd Linux raid autodetect
/dev/sdc3 0 - 0 0 Empty
/dev/sdc4 0 - 0 0 Empty
Successfully wrote the new partition table

Re-reading the partition table ...

Mit einer GPT-Partitionstabelle bewerkstelligst du das Kopieren wie folgt: sgdisk -R=/dev/sdc /dev/sda (beachte die Reihenfolge!). Bei GPT ist es notwendig, den "GUID"-Wert mit einem zufälligen Wert zu füllen, damit die Festplatte - im gleichen Server - nutzbar ist: sgdisk -G /dev/sdc.

Nun hast du zwei identisch partitionierte Festplatten und kannst mit dem Hinzufügen der neuen Festplatte zum bestehenden RAID fortfahren.

4. Festplatte zum RAID hinzufügen​

Als Referenz dient wiederum die Ausgabe von cat /proc/mdstat, um die richtige Partition zum korrekten RAID-Device zu ermitteln. In diesem Beispiel würde die Partition /dev/sdc1 zum RAID-Device /dev/md0 hinzugefügt werden sowie /dev/sdc2 zu /dev/md1:

root@server:~# mdadm --manage /dev/md0 -a /dev/sdc1
mdadm: added /dev/sdc1
root@server:~# mdadm --manage /dev/md1 -a /dev/sdc2
mdadm: added /dev/sdc2

Das RAID beginnt nun damit, die Daten auf die neue Festplatte zu synchronisieren. Dies nimmt je nach Festplattengrösse und Serverlast einige Zeit in Anspruch:

root@server:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc2[2] sda2[1]
972443840 blocks super 1.2 [2/1] [_U]
[>....................] recovery = 0.0% (659456/972443840) finish=860.5min speed=18819K/sec

md0 : active raid1 sdc1[2] sda1[1]
208640 blocks super 1.2 [2/1] [_U]
resync=DELAYED

unused devices:

5. Bootloader schreiben​

Als letzter Schritt muss der Bootloader auf der neuen Festplatte installiert werden, damit der Server beim nächsten Neustart wieder korrekt bootet. Der Befehl dazu lautet:

root@server:~# grub-install /dev/sdc
Installation finished. No error reported.

Tipps​

Geschwindigkeit erhöhen​

Die Geschwindigkeit der Wiederherstellung ist gedrosselt, damit der Server im laufenden Betrieb weiterarbeiten kann. Um die Wiederherstellung zu beschleunigen, kann das Limit manuell erhöht werden.

Ermitteln des aktuellen Limits:

root@server:~# sysctl dev.raid.speed_limit_min
dev.raid.speed_limit_min = 40000

Setzen eines neuen Limits:

root@server:~# sysctl -w dev.raid.speed_limit_min=400000
dev.raid.speed_limit_min = 400000

Festplatte wird nicht erkannt​

In einigen Fällen kommt es vor, dass die Festplatte nicht erkannt wird. Abhilfe schafft ein "Rescan" des SCSI-Adapters. Dies kann durch folgenden Befehl erreicht werden - die Nummerierung des host Teils kann variieren (0, 1, 2, 3 usw.):

root@server:~# echo "- - -" > /sys/class/scsi_host/host0/scan