So konnte ich das Problem selbst beheben. Ich habe einige Nachforschungen über die Struktur von MFT-Datensätzen im Allgemeinen und die besondere Struktur der 3 beschädigten Datensätze durchgeführt, die ich neu erstellen musste (siehe den verknüpften HDDGuru-Thread für Details), während ich sie auf mehreren gültigen Partitionen untersuchte. Dann habe ich sie im Grunde von einer gültigen Partition in eine temporäre Datei in WinHex kopiert, einige Schlüsselwerte geändert, die sich von einer Partition zur anderen unterschieden, dann die 3072-Byte-Datei direkt auf die Partition kopiert, CHKDSK ausgeführt, die fortfahren und (nach einem Einige Versuche und Fehler) berichteten, dass das Volume keinen Fehler hatte und nun normalerweise auf die Partition wieder zugegriffen werden kann. Ich weiß immer noch nicht wie es passiert ist, aber es ist behoben!
Die Werte, die ich ändern musste, waren:
- die Zeitstempel: Alle Systemdateien haben die gleichen Zeitstempel. Daher habe ich die Zeitstempelfelder des ersten MFT-Datensatzes (der auf den MFT selbst verweist) auf die beschädigte Partition kopiert. - die erste Cluster-LBA für den $ LogFile-Datensatz (ich wusste dank des alten WinHex-Volume-Snapshots, wo er sich befand, ansonsten hätte ich die Datei anhand ihres Headers suchen müssen, um diesen Wert zu erhalten; ihre Standardgröße ist genau 64 MB, oder 67108864 Bytes (auf allen untersuchten Partitionen gleich);
- Bei jedem Datensatz gibt es ein 1-Byte-Feld namens "Fixup" in DMDE, das an drei verschiedenen Stellen vorhanden ist. Dies ist, wie mir jemand im HDDGuru-Thread erklärt hat, "nur eine Überprüfung, um sicherzustellen, dass der Datensatz gültig und nicht beschädigt ist ”Und kann auf einen beliebigen Wert gesetzt werden, solange er in allen drei Instanzen dieses Feldes gleich ist;
- Für den $ Volume-Datensatz (der auch die eigentliche $ Volume-Datei enthält, da diese Datei "resident" ist, dh vollständig in ihrem MFT-Datensatz enthalten ist), musste ich die ursprüngliche 16-Byte-ID (oder "Objektkennung") von finden Das Volume war der schwierigste Teil: Nach einigen erfolglosen Versuchen fand ich diesen Wert in der Datei "tracking.log", im Verzeichnis "System Volume Information" (Ich hatte ihn zuerst auf eine gültige Partition geprüft, der Wert passte dazu das in $ Volume angezeigt wurde, also habe ich das entsprechende Feld aus "tracking.log" auf der beschädigten Partition kopiert und in $ Volume) in das Volume-ID-Feld eingefügt.
- Auch in $ Volume habe ich den Namen des Volumes geändert, um den gleichen Namen wie zuvor zu haben. Dies war jedoch nicht erforderlich. Ich hätte den Namen von der anderen Partition lassen können und ihn später in den Eigenschaften des Volumes ändern können, sobald er wieder verfügbar war (Eigentlich habe ich hier einen kleinen Trick benutzt: Ich habe das Ende des $ Volume-Datensatzes von einer Partition mit dem Namen "TEMP" kopiert). Statt diesen Namen mit "Stockage" zu ändern, da die Partition zuvor aufgerufen wurde, habe ich "Stoc" gesetzt. so dass es die gleiche Anzahl von Zeichen hätte, um einen unerwarteten Versatz zu vermeiden und um sicherzustellen, dass der Wert für "used size" übereinstimmt, da ich die Struktur des Datensatzes noch nicht vollständig verstanden habe);
- Da ich den Namen des Volumes geändert habe, war die Länge des tatsächlich verwendeten Dateisatzes unterschiedlich. Daher musste ich das Feld entsprechend der verwendeten Größe ändern, um dies wiederzugeben und die Konsistenz beizubehalten (ich habe die gleiche "verwendete Größe" wie bei eine von der Partition namens "TEMP");
- Zu Beginn des $ Volume-Datensatzes gab es einen anderen Wert, der in DMDE "LSNlo" genannt wird: Basierend auf meiner Recherche steht "LSN" für "$ LogFile Sequence Number" und es ist ein Hinweis auf die letzte aufgezeichnete Änderung In der $ LogFile-Datei in Bezug auf einen bestimmten Dateisatz in der $ MFT ist dies nicht ausschlaggebend für die Konsistenz, und ich fand heraus, dass die Größe der $ LogFile-Datei in der Regel begrenzt ist, dh alte Datensätze werden regelmäßig gelöscht, da ich das nicht verwendet habe Laufwerk in Monaten, der Datensatz, der dem Wert entspricht, der vor dem Löschen vorhanden war, wurde gelöscht. Daher füge ich nur Nullen in dieses Feld ein.
@DrMoishe Pippik: Aus Sicherheitsgründen habe ich den gesamten Inhalt mit R-Studio auf ein anderes Laufwerk extrahiert, bevor ich dieses In-Place-Update versuchte. Ich habe auch eine Teilsicherung der ersten 5 GB gemacht (was ausreicht, um alle relevanten Dateisystemstrukturen zu enthalten - obwohl betont werden sollte, dass es nicht immer ausreicht, die gesamte MFT zu erhalten, ich habe es auf die harte Tour gelernt !). Ich habe nicht versucht, auf das Laufwerk von einem anderen Computer aus zuzugreifen, aber ich sehe nicht, wie es anders gewesen wäre (auf einem Windows-System ohnehin - vielleicht wäre es auf einem Linux-System trotzdem erkannt und zugänglich gewesen), seit diesen drei MFT-Datensätze wurden in WinHex effektiv gelöscht und das Problem blieb nach einem Neustart bestehen.
@cybernard: Ich habe TestDisk ausprobiert, das war eine meiner ersten Ideen, nachdem ich den SMART-Status (was war und noch in Ordnung ist) überprüft hatte: Er hat die Partition gefunden und konnte die Dateien auflisten (genau wie die anderen von mir genannten Softwares), aber Das Problem konnte nicht behoben werden, da im Falle einer MFT-Korruption nur die ersten vier Datensätze repariert werden können, indem sie aus $ MFTMirr kopiert werden. Diese drei beschädigten Datensätze wurden jedoch ebenfalls in $ MFTMirr auf dieselbe Weise beschädigt .
@Andrea Lazzarotto: Nach meinen Beobachtungen befindet sich $ MFTMirr immer im Sektor 16, also ganz am Anfang der Lautstärke, weit vor der eigentlichen $ MFT, die standardmäßig um die 3 GB-Marke liegt. CHKDSK funktionierte wahrscheinlich nicht, weil $ MFTMirr ebenfalls beschädigt war und daher nicht auf die anscheinend wichtige $ Volume-Datei zugreifen konnte, die ebenfalls gelöscht wurde, da sie Teil des MFT-Datensatzes ist.