Zum Hauptinhalt springen

Disks: Wie wird eine defekte Festplatte ausgetauscht?

Das Vorgehen sieht kurz zusammengefasst etwa folgendermassen aus:

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

Einleitung

Diese Anleitung bezieht sich auf Dedicated Server mit mindestens zwei Festplatten und Software-RAID 1 (mit von Nine vorinstalliertem Ubuntu/Debian). Ob bei Ihrem System ein Software-RAID zum Einsatz kommt, können Sie mit cat /proc/mdstat prüfen. Sehen Sie dort mehr als nur unused devices: , ist Ihr 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:

Uploaded Image

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.

Uploaded Image

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 Partition 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

Senden Sie uns eine Anfrage auf unsere Support-Adresse Support zu. Wir benötigen die IP-Adresse Ihres Servers und zur Sicherheit die Seriennummer der noch funktionierenden Festplatte.

Anzeigen der Seriennummer der funktionierenden 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 im RAID eingefü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 im RAID erfassen:

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 bewerkstelligen Sie das Kopieren wie folgt: sgdisk -R=/dev/sdc /dev/sda (beachten Sie 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 haben Sie zwei identisch partitionierte Festplatten und können 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