Zum Inhalt springen

Diskussion:Linux/RAID/Recovery

Aus Foxwiki


Ersetzen einer ausgefallenen Festplatte in einem Software-RAID1-Array

Diese Anleitung zeigt, wie man eine ausgefallene Festplatte aus einem Linux RAID1-Verbund (Software-RAID) entfernt und eine neue Festplatte ohne Datenverlust in den RAID1-Verbund einfügt.

Ich übernehme keine Garantie, dass dies bei Ihnen funktioniert!

Vorbemerkung

In diesem Beispiel habe ich zwei Festplatten, /dev/sda und /dev/sdb, mit den Partitionen /dev/sda1 und /dev/sda2 sowie /dev/sdb1 und /dev/sdb2.

/dev/sda1 und /dev/sdb1 bilden den RAID1-Verbund /dev/md0.

/dev/sda2 und /dev/sdb2 bilden den RAID1-Verbund /dev/md1.

/dev/sda1 + /dev/sdb1 = /dev/md0

/dev/sda2 + /dev/sdb2 = /dev/md1

/dev/sdb ist ausgefallen, und wir wollen es ersetzen.

2 Wie erkenne ich, ob eine Festplatte ausgefallen ist?

Wenn eine Festplatte ausgefallen ist, werden Sie wahrscheinlich viele Fehlermeldungen in den Protokolldateien finden, z. B. in /var/log/messages oder /var/log/syslog.

Sie können auch Folgendes ausführen

cat /proc/mdstat

ausführen und statt der Zeichenkette [UU] werden Sie [U_] sehen, wenn Sie ein degradiertes RAID1-Array haben.

3 Entfernen der ausgefallenen Festplatte

Um /dev/sdb zu entfernen, markieren wir /dev/sdb1 und /dev/sdb2 als ausgefallen und entfernen sie aus ihren jeweiligen RAID-Verbänden (/dev/md0 und /dev/md1).

Zuerst markieren wir /dev/sdb1 als ausgefallen:

mdadm --manage /dev/md0 --fail /dev/sdb1

Die Ausgabe von

cat /proc/mdstat

sollte wie folgt aussehen:

server1:~# cat /proc/mdstat

Eigenschaften : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]

md0 : aktiv raid1 sda1[0] sdb1[2](F)
 24418688 Blöcke [2/1] [U_]
md1 : aktives raid1 sda2[0] sdb2[1]
 24418688 Blöcke [2/2] [UU]

unbenutzte Geräte: <Keine>

Dann entfernen wir /dev/sdb1 aus /dev/md0:

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

Die Ausgabe sollte wie folgt aussehen:

server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: heiß entfernt /dev/sdb1

Und

cat /proc/mdstat

sollte dies zeigen:

server1:~# cat /proc/mdstat

Eigenschaften : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]

md0 : aktiv raid1 sda1[0]

24418688 Blöcke [2/1] [U_]

md1 : aktives raid1 sda2[0] sdb2[1]

24418688 Blöcke [2/2] [UU]

unbenutzte Geräte: <Keine>

Nun führen wir die gleichen Schritte noch einmal für /dev/sdb2 durch (das Teil von /dev/md1 ist):

mdadm --manage /dev/md1 --fail /dev/sdb2

cat /proc/mdstat

server1:~# cat /proc/mdstat

Eigenschaften : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]

md0 : aktiv raid1 sda1[0]

 24418688 Blöcke [2/1] [U_]

md1 : aktives Raid1 sda2[0] sdb2[2](F)

24418688 Blöcke [2/1] [U_]

unbenutzte Geräte: <keine>
mdadm --manage /dev/md1 --remove /dev/sdb2
server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2

mdadm: heiß entfernt /dev/sdb2
cat /proc/mdstat

server1:~# cat /proc/mdstat
Eigenschaften : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]

md0 : aktiv raid1 sda1[0]

 24418688 Blöcke [2/1] [U_]

md1 : aktives raid1 sda2[0]

 24418688 Blöcke [2/1] [U_]

unbenutzte Geräte: <Keine>

Schalten Sie dann das System aus:

shutdown -h now

und ersetzen Sie die alte Festplatte /dev/sdb durch eine neue (sie muss mindestens die gleiche Größe wie die alte haben - wenn sie nur ein paar MB kleiner ist als die alte, schlägt der Wiederaufbau der Arrays fehl).

4 Hinzufügen der neuen Festplatte

Nachdem Sie die Festplatte /dev/sdb ausgetauscht haben, booten Sie das System.

Das erste, was wir jetzt tun müssen, ist, genau die gleiche Partitionierung wie auf /dev/sda zu erstellen. Dies können wir mit einem einfachen Befehl tun:

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

Sie können Folgendes ausführen

fdisk -l

ausführen, um zu überprüfen, ob beide Festplatten jetzt die gleiche Partitionierung haben.

Als nächstes fügen wir /dev/sdb1 zu /dev/md0 und /dev/sdb2 zu /dev/md1 hinzu:

mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --verwalten /dev/md0 --add /dev/sdb1

mdadm: hat /dev/sdb1 wieder hinzugefügt
mdadm --manage /dev/md1 --add /dev/sdb2

server1:~# mdadm --verwalten /dev/md1 --add /dev/sdb2
mdadm: hat /dev/sdb2 wieder hinzugefügt

Jetzt werden beide Arrays (/dev/md0 und /dev/md1) synchronisiert. Führen Sie aus.

cat /proc/mdstat

um zu sehen, wann die Synchronisation abgeschlossen ist.

Während der Synchronisation sieht die Ausgabe wie folgt aus:

server1:~# cat /proc/mdstat

Persönlichkeiten : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]

md0 : aktiv raid1 sda1[0] sdb1[1]

 24418688 blocks [2/1] [U_]

 [=>...................] Wiederherstellung = 9.9% (2423168/24418688) finish=2.8min speed=127535K/sec

md1 : aktives raid1 sda2[0] sdb2[1]

 24418688 blocks [2/1] [U_]

 [=>...................] Wiederherstellung = 6.4% (1572096/24418688) finish=1.9min speed=196512K/sec

unbenutzte Geräte: <keines>

Wenn die Synchronisierung abgeschlossen ist, sieht die Ausgabe wie folgt aus:

server1:~# cat /proc/mdstat

Personalien : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]

md0 : aktiv raid1 sda1[0] sdb1[1]

 24418688 Blöcke [2/2] [UU]

md1 : aktives raid1 sda2[0] sdb2[1]

 24418688 Blöcke [2/2] [UU]

unbenutzte Geräte: <keine>

Das war's, Sie haben /dev/sdb erfolgreich ersetzt!