Erweiterte Wiederherstellungstechniken für NTFS-Partitionsdateien für beschädigte Laufwerke (E / A-Fehler)?


8

Ich habe kürzlich einen unglaublich kleinen, aber ziemlich wichtigen Schaden an einer Festplatte auf einem ESXi-Host erlitten, der einige VMs betrifft. Es gibt eine Datei, die ich sehr gerne wiederherstellen würde, und natürlich wurde sie irgendwie von meiner regulären Sicherung weggelassen. Die neuesten Exemplare sind 6 Monate alt. Es stellt sich heraus, dass ich das brauche ... oops.

Einzelheiten:

1) Ich habe ddrescue (AWESOME-Tool) in einer bootfähigen ISO von Parted Magic verwendet, um 99,98% des betreffenden VM-Laufwerks wiederherzustellen. Leider scheinen die Fehler fast ausschließlich auf das Schreiben von RECENT-Dateien zurückzuführen zu sein. Natürlich sind dies genau die Sektoren, die ich am meisten wiederherstellen muss.

2) Das Laufwerk gibt E / A-Fehler bei fehlerhaften Sektorlesevorgängen aus, ERFOLGT jedoch gelegentlich beim Lesen eines zuvor fehlerhaften Sektors! Eine Wiederherstellung ist also weiterhin möglich. Etwas häufiger kommt es zu einer größeren Fehlfunktion, und das Laufwerk wird herunter- und wieder hochgefahren. Oh, und ungefähr 1/4 dieser Spin-Downs werden nicht wieder hochkommen. (Hard Power Cycle erforderlich, Herunterfahren funktioniert nicht) Zuletzt kommt fast jeder fehlerhafte Sektor mit einem schönen hörbaren Klickgeräusch.

3) Die wichtige VM-Festplatte ist NTFS-formatiert.

4) Ich kann das beschädigte NTFS-Volume (normalerweise) schreibgeschützt bereitstellen und (etwas seltener) zu dem Ordner navigieren, der die benötigte Datei enthält. Die betreffende Datei scheint jedoch immer einen E / A-Fehler zu geben, wenn ich ein 'ls' des Ordners mache. Die anderen Dateien im Ordner geben keinen E / A-Fehler aus.

5) Ich habe versucht, ntfsinfo / etc ... zu verwenden, was genau so klingt, wie ich es brauche ... aber die Partition wird überhaupt nicht geöffnet. (Frustrierend, da "Mount" normalerweise wird)

6) Die Datei ist eine XLS-Datei aus der Excel 2003-Ära, daher bin ich mir nicht sicher, ob ich Zeichenfolgen für die Suche im Raw-Disk-Image finden kann. (Möglicherweise Teile der 6 Monate alten Version?)

Ich würde wirklich gerne so etwas wie die Einrichtungen von Debugfs nutzen. Aus den Manpages geht jedoch hervor, dass die ntfs-Tools die Arbeit erledigen könnten, wenn nur die Partition geöffnet werden könnte. Insbesondere frage ich mich, ob die E / A-Fehler möglicherweise nur innerhalb der Metadaten für die Datei liegen und ob der Verzeichnisdatensatz gut genug wiederhergestellt werden kann, um den Dateiinhalt zu kopieren. Als letztes Mittel wäre jeder Teil der Datei, den ich abrufen kann, großartig.

Ich habe bereits (relativ einfache) Kernelmodule geschrieben, damit ich ein spezielles NTFS-Modul mit mehr aktivierten (oder hinzugefügten) Debug-Informationen kompilieren kann. (Die Datei ist mindestens ein paar Tage wert, um zu versuchen, sie wiederherzustellen ... und ich lerne dabei coole Sachen)

Irgendwelche Hinweise?

BEARBEITEN:

Weitere Informationen zu Laufwerksfehlern:

Die / var / log / messages zeigt natürlich viele NTFS-fs-Fehler an ... aber ich habe mich schließlich die Mühe gemacht, die unbehandelte Sense-Code-Nachricht zu übersetzen, die ich normalerweise bekomme: Sense-Schlüssel 0x3, ASC = 0x11, ASCQ = 0x4. (Dies scheint zu UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED zu führen).

Wenn sich das Laufwerk herunterfährt, wird die Meldung "scsi0: * BusLogic BT-958 Initialized" angezeigt. Ich bin nicht sicher, ob es der Linux SCSI-Treiber, der ESXi-Treiber oder das Laufwerk selbst ist, das entscheidet, das Laufwerk herunterzufahren. Wenn es der Linux-Treiber wäre, könnte ich den Treiber möglicherweise ändern, um ein Herunterfahren zu vermeiden. Diese ganze Ddrescue-Sache wird durch diese Spindowns, die einen Stromzyklus erfordern, massiv schmerzhafter.

EDIT2:

Mit der Protokollmeldung "end_request: E / A-Fehler, dev sda, Sektor 7238859" habe ich meine ddrescue-Operation auf diesen Sektor ausgerichtet, nachdem ich das Verzeichnis mit der betreffenden Datei gefunden habe. Ich plane derzeit, mein Risiko einzugehen und diesen Sektor zurück auf die Live-Festplatte zu schreiben, wenn dies erfolgreich ist. Vielleicht kann ich auf diese Weise langsam meinen Weg zu der fraglichen Datei wiederherstellen. Dennoch werden die meisten wiederherstellbaren schlechten Sektoren in weniger als 20 Wiederholungsversuchen wiederhergestellt ... dieser ist bisher über 150 ... * seufz *

EDIT3:

Der Sektorfehler von 'ls' in der Datei, die ich benötige, ist völlig unkooperativ (1000+ Versuche über Nacht und kein Glück). Ich hoffe, das sind nur Metadaten, wenn Sie ein 'ls' machen? :) :)

Ich habe den größten Teil einer Ddrescue-Kopie, aber diese wird nicht gemountet (oder ohne Dateien gemountet). Das beschädigte Laufwerk wird die meiste Zeit korrekt montiert ... Möglicherweise fallen E / A-Fehler an der beschädigten Laufwerkskraft auf den Spiegel zurück, der funktioniert.

** EDIT4: **

Ich habe vorerst aufgegeben, bis weitere Vorschläge vorliegen. Ich habe das Laufwerk entfernt und die Box neu aufgebaut. Ich werde die Fahrt behalten, falls etwas auftaucht.


3
Als erstes müssen Sie eine Kopie der Festplatte erstellen ddrescueoder ein ähnliches Tool verwenden, um so viele Sektoren wie möglich zu kopieren. Führen Sie keine Wiederherstellung auf Dateisystemebene von der beschädigten Festplatte durch, sondern von der Kopie.
Gilles 'SO - hör auf böse zu sein'

1
@ Gilles Ich habe erwähnt, dass ich ddrescue verwendet habe. Es gibt anscheinend Fehler nur an den falschen Stellen, an denen eine Kopie gemountet werden kann. Es ist nicht klar, auf welche Offsets ich mich mit ddrescue konzentrieren muss, um dieses Problem zu beheben ... daher die Frage nach etwas wie Debugfs (oder einer ntfsinfo, die mit einer Partition mindestens so gut funktionieren kann wie die reguläre 'Mount'-Dose). An dieser Stelle ist es am besten, / var / log / messages auf Sektorfehler zu überwachen, wenn ich in einem schreibgeschützten Mount auf das fehlerhafte Laufwerk zugreife und versuche, diese auf die Kopie zu übertragen, bis sie funktioniert.
Darron

1
Haben Sie das Laufwerk während dieses Vorgangs aktiv gekühlt? Das Laufwerk so kalt wie möglich zu halten, hilft erheblich.
Nathan V

Antworten:


4

Ein paar Anmerkungen aus meiner Erfahrung:

  1. (die Ursache) Wenn Sie bei HD-Zugriffsversuchen ein ungewöhnliches Geräusch hören und Probleme nicht an (mehr oder weniger) zufälligen Speicherorten auftreten, liegt die Hauptursache höchstwahrscheinlich auf der Festplattenoberfläche (nicht auf der Elektronik) - leider Das ist das traurige Szenario. Wenn es "nur" die Elektronik wäre, hätten Sie möglicherweise die Möglichkeit gehabt, die meisten oder sogar alle Ihre Daten wiederherzustellen.
  2. (fehlerhafte Sektoren) Wenn Sie dies noch nicht getan haben, suchen Sie im Internet nach dem bootfähigen Diagnose- / Wiederherstellungstool des Festplattenherstellers, laden Sie es herunter, booten Sie, führen Sie einen ausführlichen Test durch und lassen Sie es versuchen, fehlerhafte Sektoren neu zuzuordnen - das ist die beste unter den kostenlosen Methoden. Beachten Sie, dass fehlerhafte Sektoren tendenziell wachsen. Selbst wenn Sie nach einem 2314-ten Leseversuch einen Teil Ihrer Datei abfangen, besteht die Möglichkeit, dass diese Versuche nur dazu geführt haben, dass fehlerhafte Sektoren in der Nähe wachsen, wodurch die Wahrscheinlichkeit, andere Teile wiederherzustellen, effektiv verringert wird der Datei.
  3. (Wiederherstellen von NTFS) Nichts kann ein NTFS-Dateisystem sowie native MS Windows-Tools reparieren. Wenn das NTFS-Image nicht gemountet werden kann (stellen Sie auch sicher, dass Sie versucht haben, die Partition und nicht die gesamte Festplatte zu mounten!), Können Sie Dinge wie testdiskunter Linux versuchen , aber wenn diese fehlschlagen, kann Windows chkdiskhelfen. Wenn Sie Windows unter einer virtuellen Maschine installiert haben, können Sie das erhaltene Raw-Image ddrescuein ein von dieser virtuellen Maschine unterstütztes Format (z. B. VDIoder VMDK) konvertieren , es der VM hinzufügen und Windows im Befehlszeilenmodus starten, um das Dateisystem zu reparieren. Wenn Sie VirtualBox verwenden, ist der Befehl zum Konvertieren eines solchen Bildes VBoxManage convertfromraw <filename> <outputfile>optional mit --format VDI|VMDK|VHD, um das angegebene Ausgabeformat zu erhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.