Vor einiger Zeit hatte ich ein RAID5-System zu Hause. Eine der 4 Festplatten ist ausgefallen, aber nachdem sie entfernt und wieder eingesetzt wurde, schien es in Ordnung zu sein, und ich habe eine erneute Synchronisierung gestartet. Als es fertig war, stellte ich zu meinem Entsetzen fest, dass 3 von 4 Festplatten ausfielen. Ich glaube jedoch nicht, dass das möglich ist. Auf den Festplatten befinden sich mehrere Partitionen, die jeweils Teil eines anderen RAID-Arrays sind.
- md0 ist ein RAID1-Array, das aus sda1, sdb1, sdc1 und sdd1 besteht.
- md1 ist ein RAID5-Array, das aus sda2, sdb2, sdc2 und sdd2 besteht.
- md2 ist ein RAID0-Array, das aus sda3, sdb3, sdc3 und sdd3 besteht.
md0 und md2 melden alle Festplatten, während md1 meldet, dass 3 fehlgeschlagen ist (sdb2, sdc2, sdd2). Ich verstehe, dass nicht nur die mittleren Partitionen verloren gehen sollten, wenn Festplatten ausfallen.
Zu diesem Zeitpunkt schaltete ich den Computer aus und steckte die Laufwerke aus. Seitdem habe ich diesen Computer mit einer kleineren neuen Festplatte verwendet.
Gibt es Hoffnung, die Daten wiederherzustellen? Kann ich mdadm irgendwie davon überzeugen, dass meine Festplatten tatsächlich funktionieren? Die einzige Festplatte, die wirklich ein Problem hat, ist sdc, aber auch diese wird von den anderen Arrays gemeldet.
Aktualisieren
Endlich hatte ich die Möglichkeit, die alten Festplatten anzuschließen und diese Maschine von SystemRescueCd zu booten. Alles oben wurde aus dem Gedächtnis geschrieben. Jetzt habe ich einige harte Daten. Hier ist die Ausgabe vonmdadm --examine /dev/sd*2
/dev/sda2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:40:48 2010
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Checksum : 68b48835 - correct
Events : 53204
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 0 8 2 0 active sync /dev/sda2
0 0 8 2 0 active sync /dev/sda2
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
/dev/sdb2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:44:54 2010
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Checksum : 68b4894a - correct
Events : 53205
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 18 1 active sync /dev/sdb2
0 0 0 0 0 removed
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
/dev/sdc2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:44:54 2010
State : clean
Active Devices : 1
Working Devices : 2
Failed Devices : 2
Spare Devices : 1
Checksum : 68b48975 - correct
Events : 53210
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 2 8 34 2 active sync /dev/sdc2
0 0 0 0 0 removed
1 1 0 0 1 faulty removed
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
/dev/sdd2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:44:54 2010
State : clean
Active Devices : 1
Working Devices : 2
Failed Devices : 2
Spare Devices : 1
Checksum : 68b48983 - correct
Events : 53210
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 4 8 50 4 spare /dev/sdd2
0 0 0 0 0 removed
1 1 0 0 1 faulty removed
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
Es scheint, dass sich die Dinge seit dem letzten Start geändert haben. Wenn ich das richtig lese, funktionieren sda2, sdb2 und sdc2 und enthalten synchronisierte Daten und sdd2 ist frei. Ich erinnere mich noch genau, wie ich 3 ausgefallene Festplatten gesehen habe, aber das sind gute Neuigkeiten. Das Array funktioniert jedoch immer noch nicht:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md125 : inactive sda2[0](S) sdb2[1](S) sdc2[2](S)
1875194880 blocks
md126 : inactive sdd2[4](S)
625064960 blocks
md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
64128 blocks [4/4] [UUUU]
unused devices: <none>
md0 scheint in md127 umbenannt worden zu sein. md125 und md126 sind sehr seltsam. Sie sollten ein Array sein, nicht zwei. Früher hieß das md1. md2 ist komplett weg, aber das war mein Swap, das ist mir egal.
Ich kann die verschiedenen Namen verstehen und es ist nicht wirklich wichtig. Aber warum ist ein Array mit 3 "Active Sync" -Datenträgern nicht lesbar? Und was ist los mit sdd2 in einem separaten Array?
Aktualisieren
Nach dem Sichern der Superblöcke habe ich Folgendes versucht:
root@sysresccd /root % mdadm --stop /dev/md125
mdadm: stopped /dev/md125
root@sysresccd /root % mdadm --stop /dev/md126
mdadm: stopped /dev/md126
So weit, ist es gut. Da sdd2 frei ist, möchte ich es noch nicht hinzufügen.
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2 missing
mdadm: cannot open device missing: No such file or directory
mdadm: missing has no superblock - assembly aborted
Anscheinend kann ich das nicht.
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2
mdadm: /dev/md1 assembled from 1 drive - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : inactive sdc2[2](S) sdb2[1](S) sda2[0](S)
1875194880 blocks
md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
64128 blocks [4/4] [UUUU]
unused devices: <none>
Das hat auch nicht funktioniert. Versuchen wir es mit allen Festplatten.
mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c,d}2
mdadm: /dev/md1 assembled from 1 drive and 1 spare - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : inactive sdc2[2](S) sdd2[4](S) sdb2[1](S) sda2[0](S)
2500259840 blocks
md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
64128 blocks [4/4] [UUUU]
unused devices: <none>
Kein Glück. Aufgrund dieser Antwort plane ich, Folgendes zu versuchen:
mdadm --create /dev/md1 --assume-clean --metadata=0.90 --bitmap=/root/bitmapfile --level=5 --raid-devices=4 /dev/sd{a,b,c}2 missing
mdadm --add /dev/md1 /dev/sdd2
Ist es sicher?
Aktualisieren
Ich veröffentliche das Superblock-Parser-Skript, mit dem ich diese Tabelle in meinem Kommentar erstellt habe. Vielleicht findet es jemand nützlich. Danke für deine Hilfe.
quelle
mdadm --re-add
nicht, wonach du suchst. Haben Sie kürzlich einen Gedächtnistest durchgeführt? Haben Sie eine Protokollmeldung zum Array-Fehler?mdadm -A /dev/md1 /dev/sd{b,c,d}2
(vielleicht--force
) wieder zusammenzusetzen? (Wenn nicht, sichern Sie zuerst die Superblöcke.)/dev/sdd2
in einem separaten Array trotz der gleichen UUID wie sein kannsd{a,b,c}2
.Antworten:
Überprüfen Sie zuerst die Festplatten und führen Sie den Smart-Selbsttest durch
Es kann einige Stunden dauern, bis der Vorgang abgeschlossen ist. Überprüfen Sie jedoch den Teststatus jedes Laufwerks alle paar Minuten, z
Wenn der Status eines Datenträgers aufgrund von Lesefehlern als nicht abgeschlossen gemeldet wird, sollte dieser Datenträger beim erneuten Zusammenbau von md1 als unsicher eingestuft werden. Nach dem Selbsttest können Sie versuchen, Ihr Array wieder zusammenzusetzen. Wenn Sie besonders vorsichtig sein möchten, können Sie die Festplatten auch auf einen anderen Computer verschieben, bevor Sie fortfahren (nur im Fall eines fehlerhaften RAM / Controllers / usw.).
Kürzlich hatte ich genau diesen Fall. Ein Laufwerk ist ausgefallen, ich habe es erneut in das Array eingefügt, aber während der Wiederherstellung sind 3 von 4 Laufwerken insgesamt ausgefallen. Der Inhalt von / proc / mdadm war derselbe wie der von Ihnen (möglicherweise nicht in derselben Reihenfolge)
Aber ich hatte Glück und habe das Array damit wieder zusammengesetzt
Anhand der von Ihnen angegebenen --examine-Ausgabe kann ich feststellen, dass folgendes Szenario eingetreten ist: sdd2 ist fehlgeschlagen, Sie haben es entfernt und neu hinzugefügt. Es wurde also ein Ersatzlaufwerk, das versucht, neu zu erstellen. Aber während der Wiederherstellung schlug sda2 fehl und dann schlug sdb2 fehl. Daher ist der Ereigniszähler in sdc2 und sdd2, die die letzten aktiven Laufwerke im Array sind, größer (obwohl sdd nicht die Möglichkeit hatte, neu zu erstellen, ist dies das veralteteste von allen). Aufgrund der Unterschiede in den Ereigniszählern ist --force erforderlich. Sie könnten das also auch versuchen
Abschließend denke ich, dass Sie versuchen sollten, das Array wie folgt neu zu erstellen, wenn der obige Befehl fehlschlägt:
Wenn Sie dies tun
--create
, ist dasmissing
Teil wichtig. Versuchen Sie nicht, dem Array ein viertes Laufwerk hinzuzufügen, da dann der Aufbau beginnt und Sie Ihre Daten verlieren . Wenn Sie ein Array mit einem fehlenden Laufwerk erstellen, ändert sich der Inhalt nicht und Sie haben die Möglichkeit, eine Kopie an einer anderen Stelle abzurufen (raid5 funktioniert nicht wie raid1).Wenn das Array dadurch nicht angezeigt wird, probieren Sie diese Lösung (Perl-Skript) hier aus. Erstellen Sie ein Array neu
Wenn Sie es endlich schaffen, das Array aufzurufen, wird das Dateisystem unsauber und möglicherweise beschädigt. Wenn eine Festplatte während der Neuerstellung ausfällt, wird erwartet, dass das Array stoppt und einfriert und keine Schreibvorgänge auf die anderen Festplatten ausführt. In diesem Fall sind zwei Festplatten ausgefallen. Vielleicht hat das System Schreibanfragen ausgeführt, die nicht abgeschlossen werden konnten. Es besteht also eine geringe Wahrscheinlichkeit, dass Sie Daten verloren haben, aber auch die Möglichkeit, dass Sie es nie bemerken :-)
bearbeiten: einige Klarstellungen hinzugefügt.
quelle
mdadm --assemble /dev/md1 /dev/sd[abc]2 --force
hat funktioniert. Vielen Dank. Du hast meine Daten gespeichert! :) Ich werde nicht versuchen, die vierte Festplatte hinzuzufügen, da die erste 3 nicht so gut ist, wie ich es vorher gedacht habe. Der Selbsttest ergab jeweils 10-20 unlesbare Blöcke. Ich fühle mich dumm, das nicht zuerst zu überprüfen.--assume-clean
(hast du), wird es nicht.Ich habe während der Benutzung viele Probleme gehabt
mdadm
, aber nie Daten verloren. Sie sollten diese--force
Option meiden oder sehr vorsichtig verwenden, da Sie sonst alle Ihre Daten verlieren können. Bitte posten Sie Ihre/etc/mdadm/mdadm.conf
quelle