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.
quelle
Antworten:
Um Ihre Fragen zu beantworten,
Kann es wiederhergestellt werden?
Da sdc neu ist, würde ich weiterhin versuchen, die Assemblierung manuell über die fehlende Klausel durchzuführen, und ja, sde muss in der richtigen Reihenfolge vorliegen, damit die Assemblierung im herabgesetzten Modus erfolgt. Sobald Sie das richtige Layout gefunden haben, kopieren Sie alle Daten aus dem Array und beginnen Sie erneut, um das Layout zu dokumentieren (damit Sie dieses Problem nicht erneut angehen).
Viel Glück
quelle
Bevor Sie etwas anderes tun, sollten Sie in der Lage sein, für jedes der Laufwerke, die sich in Ihrem Array befanden, ein "mdadm --examine / dev / sdX1" und daraus ein "mdadm --detail / dev / md0" zu bestimmen das genaue Layout.
Ich musste dies nur selbst tun, um ein Synology-Array in einer separaten Frage wiederherzustellen:
Wie stelle ich ein mdadm-Array auf einem Synology NAS mit Laufwerk im Status "E" wieder her?
Edit: Sorry, habe gerade gesehen, dass du gesagt hast, dass du die Superblocks auf allen Laufwerken verloren hast.
Ihre späteren Befehle sehen korrekt aus. Am einfachsten ist es möglicherweise, die Erstellungen bei jeder möglichen Reihenfolge auszuführen und dann zu prüfen, ob Sie das Dateisystem einbinden und schreibgeschützt darauf zugreifen können.
quelle
Diese Frage ist alt und ich bin sicher, niemand kann Ihnen jetzt helfen, aber für andere lesen:
Der gefährlichste Fehler, den Sie gemacht haben, ist nicht der, den Sie nummeriert haben.
auf den Originaldisketten, bevor Sie wissen, was zu tun ist. Dadurch wurden die Metadaten überschrieben, sodass Sie keine Aufzeichnungen über Laufwerksreihenfolge, Datenoffset, Blockgröße usw. haben.
Um dies zu beheben, müssen Sie diese erneut mit den richtigen Werten überschreiben. Der einfachste Weg, dies zu erfahren, besteht darin, sich die Metadaten anzusehen, die Sie jedoch bereits zerstört haben. Der nächste Weg ist zu raten. Erraten Sie die verschiedenen Kombinationen eines solchen Befehls mit unterschiedlichen Werten für eine der Optionen, außer dem, was Sie wissen (4 Geräte, Stufe 5), und auch unterschiedlicher Festplattenreihenfolge:
Da Sie jedoch das richtige Ergebnis NICHT kennen, sollten Sie es nicht auf den alten Festplatten ausführen, um sie weiter zu zerstören, und dabei den gleichen schwerwiegenden Fehler machen. Verwenden Sie stattdessen eine Überlagerung. zum Beispiel dieses Verfahren sollte die Originale sicher zu halten arbeiten.
Wenn Sie einige Argumente gefunden haben, die ein funktionierendes Array erzeugen, das Sie prüfen oder einbinden und überprüfen können (z. B. die Prüfsumme einer Datei prüfen, die groß genug ist, um sich über alle Raid-Mitglieder zu erstrecken, wie eine ISO, die Sie mit ihrer Prüfsumme / pgp hätten speichern sollen Signatur, oder entpacken -t oder gunzip -ta großes Archiv)
quelle