Home / Linux / Debian / Linux defektes Software RAID reparieren – defekte Festplatte tauschen
terminal-icon

Linux defektes Software RAID reparieren – defekte Festplatte tauschen

Anleitung zum Tausch einer defekten Festplatte in einem Software RAIDController unter Linux

RAIDs sind eine tolle Sache um sich gegen Totalausfälle bei Festplattencrashes zu schützen, indem eine Platte auf die andere gespiegelt wird. Unter Linux ist es mit wenig Aufwand möglich ein Software Raid einzurichten ohne einen RAID Controller zu benötigen. Fällt Festplatte eins aus übernimmt in der Regel Festplatte zwei. Dieses Raid1 System kommt auf den meisten dedizierten Webservern zum Einsatz. Es können natürlich verschiedene Varianten von RAIDs konfiguriert werden, das würde aber diesen Artikel sprengen.

Ich möchte hier darauf eingehen was grundsätzlich zu tun ist wenn einmal eine Festplatte ausfällt und es zu Problemen mit dem Software RAID bzw. der Festplatten kommt.

Software Raid Status überprüfen

Mit folgendem Befehl wird der Status des Software Raids unter Linux überprüft:

[bash]cat /proc/mdstat[/bash]

Ausgabe von einem „gesunden“ RAID1. Die Darstellung [UU] zeigt den erfolgreichen Status beider verfügbarer Devices an:

[bash highlight=“3,6,9,12″]Personalities : [raid1] md3 : active raid1 sda4[0] sdb4[1] 1847608639 blocks super 1.2 [2/2] [UU]

md2 : active raid1 sda3[0] sdb3[1] 1073740664 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1] 524276 blocks super 1.2 [2/2] [UU]

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

unused devices: <none>[/bash]

Defekter Raid Status auf einer oder mehreren Partitionen

Hier ein Weg zur Analyse der Probleme, um keine Fehler zu machen:

[bash]cat /proc/mdstat[/bash]

Ausgabe:

[bash highlight=“3,6,9,11-12″]Personalities : [raid1] md3 : active raid1 sda4[0] sdb4[1](F)
1843414335 blocks super 1.2 [2/1] [U_]

md2 : active raid1 sda3[0] sdb3[1](F)
1073740664 blocks super 1.2 [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1](F)
524276 blocks super 1.2 [2/1] [U_]

md0 : active (auto-read-only) raid1 sda1[0] sdb1[1] 12581816 blocks super 1.2 [2/2] [UU]

unused devices: <none>[/bash]

Die Ausgabe zeigt an, dass md0 in Ordnung ist und md1, md2, md3 Probleme haben. Das (F) markiert die entsprechenden Devices als Failed.

S.M.A.R.T Status der Festplatten überprüfen:

So kann man den SMART Status der Festplatten abfragen.

Schlägt der Smart Check fehl, dann sollte die Festplatte als defekt angesehen werden und es ist dringend empfohlen diese durch eine neue Platte auszutauschen. Amazon* bietet hier eine gute und vor allem günstige Auswahl.

Defekte Festplatte aus dem RAID entfernen

Damit die Festplatte aus dem RAID entfernt werden kann, sollte diese zuvor sauber aus dem RAIDVerbund entfernt werden. In unserem Beispiel ist die defekte Festplatte sda mit der Partition sda1 nur noch mit md0 verbunden. Dieses sollte nun noch entfernt werden:

Dazu wird im ersten Schritt die Partition auf „fail“ gesetzt:

[bash]mdadm –manage /dev/md0 –fail /dev/sdb1[/bash]

Ein weiterer Aufruf von /proc/mdstat sollte nun folgende Ausgabe anzeigen:

[bash]cat /proc/mdstat[/bash]

Ausgabe:

[bash highlight=“3,6,9″]Personalities : [raid1] md3 : active raid1 sda4[0] sdb4[1](F)
1843414335 blocks super 1.2 [2/1] [U_]

md2 : active raid1 sda3[0] sdb3[1](F)
1073740664 blocks super 1.2 [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1](F)
524276 blocks super 1.2 [2/1] [U_]

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

unused devices: <none>[/bash]

Alle Devices sind nun mit einem (F) als Fail markiert. Die Partitionen müssen nun einzeln aus dem RAID Verbund entfernt werden:

[bash]mdadm /dev/md0 -r /dev/sdb1
mdadm /dev/md1 -r /dev/sdb2
mdadm /dev/md2 -r /dev/sdb3
mdadm /dev/md3 -r /dev/sdb4[/bash]

Ein erneuter Aufruf von /proc/mdstat sollte nun die Partitionen ohne einem (F) anzeigen weil nur mehr eine Festplatte im Raid verwendet wird.

Defekter Raid Status [U_] auf allen Partitionen

Wenn der Status wie hier bei allen Partitionen auf [U_] oder [_U] steht, ohne mit einem (F) markiert zu sein, kann die defekte Festplatte getauscht werden.

[bash]cat /proc/mdstat[/bash]

Ausgabe:

[bash highlight=“3,6,9,12″]Personalities : [raid1] md3 : active raid1 sda4[0] 1843414335 blocks super 1.2 [2/1] [U_]

md2 : active raid1 sda3[0] 1073740664 blocks super 1.2 [2/1] [U_]

md1 : active raid1 sda2[0] 524276 blocks super 1.2 [2/1] [U_]

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

unused devices: <none>[/bash]

Der „degraded“ Raid Status könnte im Detail wie folgt aussehen:

[bash]mdadm –detail /dev/md0[/bash]

Ausgabe:

[bash highlight=“23,24″]/dev/md0:
Version : 1.2
Creation Time : Tue Dec 4 11:06:41 2012
Raid Level : raid1
Array Size : 12581816 (12.00 GiB 12.88 GB)
Used Dev Size : 12581816 (12.00 GiB 12.88 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent

Update Time : Thu Jul 11 10:36:08 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0

Name : rescue:0
UUID : 41488824:9fe70d56:29797b88:18dae177
Events : 452

Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 0 0 1 removed[/bash]

Die letzten beiden Zeilen zeigen an, dass nur mehr eine Festplatte (/dev/sda1) im Raid erkannt wird. Die zweite Platte wird als „removed“ markiert.

Im nächsten Schritt sollte man sich anzeigen lassen welche Festplatten vom System wirklich noch erkannt werden:

[bash]cat /proc/partitions[/bash]

Ausgabe:

[bash]major minor #blocks name

8 0 2930266584 sda
8 1 12582912 sda1
8 2 524288 sda2
8 3 1073741824 sda3
8 4 1843415495 sda4
8 5 1024 sda5
9 0 12581816 md0
9 1 524276 md1
9 2 1073740664 md2
9 3 1843414335 md3[/bash]

Die Ausgabe zeigt nur noch eine Festplatte (sda) an. Normalerweise sollte hier ein zweite Festplatte angezeigt werden (sdb). Das bedeutet also, dass die zweite Festplatte defekt ist und ersetzt werden sollte. Auf einem gemieteten, dedizierten Root Server sollte nun vom entsprechenden Provider ein Tausch der Festplatte organisiert werden. Diese bieten meist ein Formular im Support Bereich an.

Wenn es den eigenen Rechner bzw. Server betrifft, sollte eine neue Festplatte angeschafft werden. Idealerweise in der selben Größe, wie die defekte bzw. die gute Disk. Amazon* bietet hier eine gute und vor allem günstige Auswahl.

Neue Festplatte nach dem Tausch in den Raid einbinden

Sobald die Festplatte getauscht wurde sollte erneut „cat /proc/partitions“ ausgeführt werden um die neue Platte zu sehen. Eine neue sdb Festplatte sollte nun erscheinen. Anschließend müssen die Partitionen der funktionierenden RAID Festplatte 1:1 auf die neue Festplatte übertragen werden. Dies geschieht, je nach verwendeter Partitionstabelle (MBR oder GUID) unterschiedlich.

[bash]cat /proc/partitions[/bash]

Ausgabe:

[bash highlight=“9″]major minor #blocks name

8 0 2930266584 sda
8 1 12582912 sda1
8 2 524288 sda2
8 3 1073741824 sda3
8 4 1843415495 sda4
8 5 1024 sda5
8 16 2930266584 sdb
9 0 12581816 md0
9 1 524276 md1
9 2 1073740664 md2
9 3 1843414335 md3[/bash]

A: Partitionen kopieren mit GUID (GPT)

Wenn die GUID Partitionstabelle verwendet wird, kann das Tool sgdisk verwendet werden. Wer es noch nicht auf seinem System hat, kann es bequem via apt-get installieren (Unter den gängigsten Linux Distributionen sollte das gdisk Paket verfügbar sein):

[bash]apt-get install gdisk[/bash]

Partitionen von sda auf sdb kopieren. Bitte unbedingt die Reihenfolge beachten! (sgdisk -R Zielsystem Quellsystem):

[bash]sgdisk -R /dev/sdb /dev/sda[/bash]

Der Vorgang dauert in der Regel nur wenigen Sekunden. Nun muss für die Platte noch eine neue zufällige UUID generiert werden:

[bash]sgdisk -G /dev/sdb[/bash]

B: Partitionen kopieren mit MBR

Wer die MBR Partitionstabelle verwendet, kann das Tool fsdisk verwendet. (sollte auf jeden System installiert sein)

Partitionen von sda auf sdb kopieren. Bitte unbedingt die Reihenfolge beachten! (sfdisk -d Quellsystem | sfdisk Zielsystem):

[bash]sfdisk -d /dev/sda | sfdisk /dev/sdb[/bash]

Partitionstabelle vom Kernel neu einlesen:

[bash]sfdisk -R /dev/sdb[/bash]

Partitionierung überprüfen:

[bash]cat /proc/partitions[/bash]

Ausgabe:

[bash]major minor #blocks name

8 0 2930266584 sda
8 1 12582912 sda1
8 2 524288 sda2
8 3 1073741824 sda3
8 4 1843415495 sda4
8 5 1024 sda5
8 16 2930266584 sdb
8 17 12582912 sdb1
8 18 524288 sdb2
8 19 1073741824 sdb3
8 20 1843415495 sdb4
8 21 1024 sdb5
9 0 12581816 md0
9 1 524276 md1
9 2 1073740664 md2
9 3 1843414335 md3[/bash]

Die beiden Festplatten sda und sdb zeigen nun wieder die gleichen Partitionsgrößen an und können somit für den RAID verwendet werden.

Neue Partitionen in den RAID einbinden

Da nun wieder alle Partitionen vorhanden sind, können diese in den Raid zurück eingebunden werden. Jede Partition einzeln, in diesem Fall für sdb:

[bash]mdadm /dev/md0 -a /dev/sdb1
mdadm /dev/md1 -a /dev/sdb2
mdadm /dev/md2 -a /dev/sdb3
mdadm /dev/md3 -a /dev/sdb4[/bash]

Die Partitionen werden nun nach der Reihe synchronisiert. Der Vorgang kann je nach verwendeten Daten einige Zeit in Anspruch nehmen, läuft aber automatisch im Hintergrund ab. Ein Status kann allerdings jederzeit abgefragt werden:

[bash]cat /proc/mdstat[/bash]

Ausgabe:

[bash]Personalities : [raid1] md3 : active raid1 sdb4[2] sda4[0] 1843414335 blocks super 1.2 [2/1] [U_] [==>………………] recovery = 10.2% (188885184/1843414335) finish=255.5min speed=107885K/sec

md2 : active raid1 sdb3[2] sda3[0] 1073740664 blocks super 1.2 [2/1] [U_] resync=DELAYED

md1 : active raid1 sdb2[2] sda2[0] 524276 blocks super 1.2 [2/1] [U_] resync=DELAYED

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

unused devices: <none>[/bash]

GRUB Bootloader neu installieren

Der Grub Bootloader muss noch auf der ausgetauschten Festplatte verankert werden. Hierfür genügt ein simpler Befehl:

[bash]grub-install /dev/sdb[/bash]

Auch cool

Computer im Alltag

Egal wohin man schaut, Computer findet man heute überall. In der Tat haben Computer der …

Ein Kommentar

  1. Danke für diese äußerst nützlichen Ausführungen! Hat mir einiges an googlen erspart 😉

    Gruß,
    Justus