Lassen Sie mich zunächst feststellen, dass ich Fehler gemacht habe und ein Backup für die meisten, aber nicht alle Daten auf diesem RAID erstellt habe. Ich habe immer noch die Hoffnung, den Rest der Daten wiederherzustellen. Ich habe nicht das Geld, um die Laufwerke zu einem Recovery-Experten zu bringen.
Fehler # 0, keine 100% ige Sicherung. Ich kenne.
Ich habe ein mdadm
RAID5-System mit 4 x 3 TB. Laufwerke / dev / sd [be], alle mit einer Partition /dev/sd[b-e]1
. Mir ist bewusst, dass RAID5 auf sehr großen Laufwerken riskant ist, aber ich habe es trotzdem getan.
Die jüngsten Ereignisse
Das RAID wird nach einem Ausfall von zwei Laufwerken herabgesetzt. Ein Laufwerk [/ dev / sdc] ist wirklich nicht mehr vorhanden, das andere [/ dev / sde] wurde nach einem Aus- und Wiedereinschalten wiederhergestellt, dem RAID jedoch nicht automatisch neu hinzugefügt. So blieb mir ein RAID mit 4 Geräten mit nur 2 aktiven Laufwerken [/ dev / sdb und / dev / sdd].
Fehler Nr. 1: Verwenden Sie keine Festplattenkopien zum Wiederherstellen des RAID. Ich hatte weder die Laufwerke noch die Zeit. Fehler Nr. 2: Der Superblock und mdadm -E
die verbleibenden Laufwerke werden nicht gesichert .
Wiederherstellungsversuch
Ich habe das RAID im herabgesetzten Modus mit wieder zusammengebaut
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Ich konnte dann auf meine Daten zugreifen. Ich habe es durch /dev/sdc
ein Ersatzteil ersetzt. leeren; identisches Laufwerk.
Ich habe die alte /dev/sdc1
aus dem RAID entfernt
mdadm --fail /dev/md0 /dev/sdc1
Fehler 3: Tun Sie dies nicht, bevor Sie das Laufwerk austauschen
Ich habe dann das neue partitioniert /dev/sdc
und es dem RAID hinzugefügt.
mdadm --add /dev/md0 /dev/sdc1
Dann wurde begonnen, das RAID wiederherzustellen. ETA 300 min. Ich verfolgte den Prozess /proc/mdstat
bis zu 2% und machte dann andere Sachen.
Überprüfen Sie das Ergebnis
Einige Stunden (aber weniger als 300 Minuten) später überprüfte ich den Prozess. Es hatte auf Grund eines Lesefehlers aufgehört /dev/sde1
.
Hier fängt der Ärger erst richtig an
Ich habe dann /dev/sde1
aus dem RAID entfernt und es wieder hinzugefügt. Ich kann mich nicht erinnern, warum ich das getan habe. es war spät.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
Wurde /dev/sde1
jetzt jedoch als Reserve markiert. Also entschied ich mich, das gesamte Array mit --assume-clean neu zu erstellen, wobei ich dachte, es sei die richtige Reihenfolge und es /dev/sdc1
fehlte.
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
Das hat funktioniert, aber das Dateisystem wurde beim Einhängen nicht erkannt. (Es sollte EXT4 gewesen sein).
Gerätebestellung
Ich habe dann ein kürzlich erstelltes Backup überprüft /proc/mdstat
und die Laufwerksreihenfolge ermittelt.
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
Ich erinnerte mich dann, dass dieses RAID vor etwa einem Jahr einen Laufwerksverlust erlitten hatte und erholte sich, indem das fehlerhafte Laufwerk durch ein Ersatzlaufwerk ersetzt wurde. Das hat die Gerätereihenfolge möglicherweise ein wenig durcheinander gebracht ... also gab es kein Laufwerk [3], sondern nur [0], [1], [2] und [4].
Ich habe versucht, die Laufwerksreihenfolge mit dem Permute_array-Skript zu finden: https://raid.wiki.kernel.org/index.php/Permute_array.pl, aber das hat nicht die richtige Reihenfolge gefunden.
Fragen
Ich habe jetzt zwei Hauptfragen:
Ich habe alle Superblöcke auf den Laufwerken vermasselt, aber nur Folgendes gegeben:
mdadm --create --assume-clean
Befehle (also hätte ich die Daten selbst nicht überschreiben dürfen)
/dev/sd[bde]1
. Habe ich recht, dass das RAID theoretisch wiederhergestellt werden kann (vorausgesetzt, es ist für einen Moment in/dev/sde1
Ordnung), wenn ich nur die richtige Gerätereihenfolge finde?Ist es wichtig,
/dev/sde1
dass die Gerätenummer [4] im RAID angegeben wird? Wenn ich es mit schaffemdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
es wird die Nummer [3] zugewiesen. Ich frage mich, ob das für die Berechnung der Paritätsblöcke relevant ist. Wie kann ich das Array mit
/dev/sdb1[0]
fehlender [1] neu erstellen, wenn es sich als wichtig herausstellt/dev/sdd1[2]
/dev/sde1[4]
? Wenn ich das zum Laufen bringen könnte, könnte ich es im herabgesetzten Modus starten und das neue Laufwerk hinzufügen/dev/sdc1
und es erneut synchronisieren lassen.
Es ist in Ordnung, wenn Sie mich darauf hinweisen möchten, dass dies möglicherweise nicht die beste Vorgehensweise war, aber Sie werden feststellen, dass ich dies erkannt habe. Es wäre toll, wenn jemand irgendwelche Vorschläge hat.