Arch Linux Tux

[ENC]BladeXP's Blog

Was die Welt nicht alles braucht!

Defekte Festplatten im Linux Software RAID ersetzen

2015-09-06 09:00 | Kategorien: arch debian hardware homeserver linux opensource software ubuntu

In einer idealisierten Welt würden Festplatten nicht ausfallen, aber in der Realität müssen wir damit Leben das von Menschen geschaffene Dinge auch mal kaputt gehen. Ärgerlich ist dies vor allem bei Datenträgern, um hier einen Ausfall zu kompensieren werden auch im SOHO-Bereich zunehmend RAID-Systeme verbaut. Eine gerne verwendete Lösung ist hierbei das in Linux integrierte Software-RAID, es ist zuverlässig und erfordert keinerlei spezielle (und damit teure) Hardware.

Vorwort

Um ein RAID mit einer oder mehreren defekten Platten wieder in den gewünschten redundanten Status zu bekommen sind bestimmte Aktionen erforderlich, diese möchte ich nachfolgend erklären. Wie bei allen Operationen am laufenden System sollte man aber vorher sicherstellen das ausreichend aktuelle und funktionierende Backups vorhanden sind. Wer die nachfolgenden Operationen nicht aus dem bestehenden System heraus ausführen möchte, kann dafür auch eine der vielen Rescue Systeme nehmen, je nach Distribution und verwendeter Hardware kann dies sogar erforderlich sein. Der Vorteil eines Rescue Systems ist das man nicht auf die Bootfähigkeit seines Systems angewiesen ist, um nachträglich noch Korrekturen durchführen zu können.

RAID Status

Den Status eines RAIDs können wir mittels cat /proc/mdstat prüfen:

Personalities : [raid1] 
md0 : active raid1 sdc1[0] sda1[2]
      976628736 blocks super 1.1 [2/2] [UU]
      bitmap: 2/8 pages [8KB], 65536KB chunk

unused devices: <none>

Auf meinem Homeserver ist natürlich alles bestens, wenn eine Platte ausgefallen wäre, würde man in der dritten Zeile statt [UU] ein [U_] oder [_U] sehen, eine ausgefallene Platte wird durch ein _ dargestellt. Wie viele Festplatten ausfallen dürfen, hängt vom verwendeten RAID-Level ab.

Neben dem offensichtlichen Ausfall einer Platte gibt es aber auch noch den schleichenden Tod, dazu zählen z.B. auch die S.M.A.R.T. Werte und Selbsttests einer Festplatte. Gefallen einem die Werte seiner Festplatte nicht mehr kann man diese manuell auf den failed Status setzen:

mdadm /dev/mdX --fail /dev/alt1

Defekte Platten aus dem Verbund entfernen

Im Anschluss können alle Festplatten mit diesem Status aus dem Verbund entfernt werden:

mdadm /dev/mdX --remove failed

Defekte Platte tauschen

Im nächsten Schritt muss die defekte Festplatte aus dem System entfernt werden (physikalisch), dies geht einfach, wenn ein Wechselrahmen mit LEDs vorhanden ist. In diesem Fall genügt es einfach etwas Aktivität auf dem RAID zu erzeugen, die defekte Festplatte ist diejenige, bei welcher die Aktivitäts-LED unbeeindruckt bleibt.

Schwerer wird es, wenn kein derartiger Wechselrahmen vorhanden ist, den dort hilft es oft nur durch smartctl -i /dev/alt1 die Seriennummer der Platte auszulesen und mit dem Aufdrucken auf der Platte zu vergleichen. Wer etwas Feingefühl hat, kann auch mit den Fingern die Platten bei Aktivität erfühlen, eine inaktive Platte brummt gleichmäßig vor sich hin, eine aktive Platte vibriert passend zur ausgeführten Aktion. In jedem Fall sollte es vermieden werden den Server auszuschalten, den nicht jede Distribution fährt mit einem unvollständigen RAID wieder hoch.

Wurde die alte Platte entfernt, kann die neue Platte an das System angeschlossen werden, hierzu genügt zur Not auch ein externes USB-Gehäuse. Eleganter ist natürlich wieder der Wechselrahmen, schneller als USB geht zur Not auch das öffnen des Gehäuses und direktes anschließen der Platte an das Mainboard und Netzteil, zumindest sofern noch ein SATA-Anschluss vorhanden ist.

Partitionierung

Der nächste Schritt ist es die frisch eingebaute Platte mit einer Partitionstabelle zu versehen, da wir faul sind, lassen wir dies natürlich automatisch durch geeignete Tools erledigen:

# MBR/BIOS Partitionstabellen:
sfdisk -d /dev/master | sfdisk /dev/neu
# GPT/UEFI Partitionstabellen:
sgdisk -R /dev/neu /dev/master
sgdisk -G /dev/neu

Im oben genannten Codeblock ist /dev/master eine Platte mit passender Partitionierung, da bei einem RAID meist alle Platten gleich Partitioniert sind, kann jede aus dem Verbund als Master genommen werden. Die Festplatte /dev/neu ist die neue Festplatte. Zu beachten ist natürlich auch, ob GPT oder MBR für die Paritionstabellen verwendet wird.

RAID wiederherstellen

Wenn die Partitionstabellen passend sind, kann man die neue Platte auch schon dem vorhanden RAID-Verbund hinzufügen:

mdadm /dev/mdX --add /dev/neu1

Damit wären alle Arbeiten erledigt, das RAID führt nun einen sog resync durch, das bedeutet, die neue Platte wird mit den Daten bespielt und im Anschluss wäre unser RAID auch wieder redundant. Der resync kann mittels cat /proc/mdstat beobachtet werden. Wenn auf der ausgefallenen Platte auch ein Bootloader installiert war, sollte dieser auch wieder installiert werden, was je nach Bootloader unterschiedlich funktioniert und außerhalb des Umfangs dieses Artikels ist.