GPT-Tabelle, Erholung

Ich habe mich in die Reihen der Benutzer aufgenommen, die ihre eigenen Sachen nicht lesen und brechen können.

Letzten Sonntag habe ich beim Versuch, eine größere Windows 7 NTFS-Partition auf eine kleinere zu kopieren, die Partitionstabelle auf einer 3-TB-Festplatte ausgeblasen. Für Kontext:

sdb (3TB drive/partition)
sdh2 (1.57 TB partition)(2TB drive)

Ich habe PartedMagic 2018 ausgeführt (und bin es immer noch) und Folgendes eingegeben:

sgdisk -R /dev/sdb /dev/sdh2

Beim Öffnen von Gparted wurde mir klar, dass ich den Befehl falsch eingegeben habe. Es war in einer SE-Frage als Antwort zum Beheben eines Problems beim Verschieben einer größeren Partition in eine kleinere aufgeführt. Die Antwort wurde wie folgt eingegeben:

sgdisk -R /dev/sdY /dev/sdX
where:
sdX = Disk A
sdY = Disk B

Bonehead bewegt sich zur Seite, ich bin jetzt in Schadensbegrenzung. Ich habe begonnen, diesem [[24]}Ubuntu Forums-Handbuch zu folgen und habe derzeit damit begonnen, das Laufwerk nach Partitionskopfzeilen zu durchsuchen, damit ich das gesamte Laufwerk wiederherstellen kann.

Ich habe bisher den folgenden Befehl eingegeben: gpart /dev/sdb. Es scannt das Laufwerk seit ungefähr 4 Tagen, 20 Öffnungszeit.

Ich habe hier ein paar Fragen zu meinem Verfahren:

  1. Wie lange wird das dauern? Meine besten Schätzungen betrachteten das HDD-Aktivitätslicht und zählten maximal ein Blinken pro Sekunde. Ich nahm an, dass Single Blink ein Sektor gelesen wurde und dass jeder Sektor 4096 war (es ist auf einem Flash-Laufwerk). 2,720.000 MB auf dem 3TB-Laufwerk bei einer Lesezeit von 4 MB pro Sekunde geben mir etwa 7,87 Tage. Die kürzeste Zeit wäre doppelt so schnell, und es wäre jetzt erledigt. Die letzte Ausgabe der "möglichen Partition" war vor zwei Tagen und ergab einen Offset von 1421742 MB, während der erste mögliche Offset 1 MB betrug. Ich habe irgendwo gesehen, dass Sektorgrößen kleiner sein könnten. Bin ich nah?

  2. Ergreife ich eine geeignete Vorgehensweise, um mein Laufwerk zu retten? Der Ubuntu Forums Guide scheint solide und sehr relatable. Ich habe nur eine Partition, die ich auf dem Laufwerk hatte, es gab mehr zuvor, aber ich hatte es abgewischt und begann mit nur der einen. Es war das einzige, partition vor dem Unfall aufgeführt und verwendet das gesamte Laufwerk, wie ich mich erinnere. Ich bin mir nicht sicher, ob einer dieser nicht verwendeten MB-Abschnitte vorhanden war oder nicht (diese seltsame leere, nicht partitionierte Stelle, die manchmal in GParted ausgeführt wird, wenn Sie eine Partition erstellen, wird mit 1mib unbenutzt vorgetragen.)

  3. Wenn ich die Partition mit parted wiederherstelle und nicht alle Sektoren hinzufüge oder zu viele hinzufüge, werden dann immer noch Daten auf dieser Partition angezeigt? Der Leitfaden sagt, die Einheiten der Sektoren zu verwenden, um wieder aufzubauen Partitionstabelle. Wenn ich zu wenige oder zu viele Einheiten verwende, werden beim Mounten und Lesen des Laufwerks immer noch Daten angezeigt?

  4. Ich habe gelesen, dass es eine primäre und sekundäre Partitionstabelle gibt oder so, gibt es diese, kann ich sie kopieren, wie würde ich sie anzeigen, um zu bestätigen, welche ich für die Wiederherstellung haben möchte?

Ich brauche eine zweite Schadensbegrenzungsoption, abgesehen davon, dass ich sie an einen professionellen Service schicke. Dies ist kein Business-Computer, aber es gibt einige wichtige Dinge zu erholen.

Endziel: Stellen Sie die einzelne Partition auf dem 3TB-Laufwerk wieder her.

Update: Post-gpart scan

Wie in den Referenzbildern zu sehen ist, ist der Scan am Ende des Laufwerks fehlgeschlagen. Ich habe das Laufwerk seitdem auf einem neueren Computer abgelegt, auf dem ich TestDisk ausgeführt habe. Der schnelle Scan fand etwas von dem, was gpart gesehen hat, aber nicht das, was ich weiß. Ich habe die Deeper-Scan-Option verwendet, bei der innerhalb weniger Minuten die betreffende Partition mit dem Namen Big Mongo. Dies ist, was ich die genannt hatte Laufwerk in Windows.

Update 2: Post TestDisk Scannen

TestDisk abgeschlossen (siehe zusätzliche ref Bilder) und identifiziert meine fehlende Partition. Ich kann es Dateien innerhalb des Programms auflisten lassen. Beachten Sie die Größe am unteren Rand des abgeschlossenen Scans. Der Scan abgeschlossen in einem kühlen 10 Stunden vs 8 Tage von gpart.

Fazit: Für den Forschenden Geist

Nach dem Ausführen von TestDisk wurde die Partition gefunden, die Tabelle jedoch falsch erstellt, sodass ich gdisk und baute es mit 2048 als Start und maximaler Größe als Ende neu auf (siehe markierte Antwort). Hatte es im Ruhezustand, ohne Probleme gebootet.

Referenzbilder
gdisk -l für Kommentare https://i.stack.imgur.com/9znYj.jpg
gpart scan 1/2 https://i.stack.imgur.com/rWxuC.jpg
gpart scan 2/2 https://i.stack.imgur.com/HQYJ8.jpg

TestDisk Quick-scan

geben Sie hier die Bildbeschreibung ein

TestDisk Tiefer scannen Vorläufige Ergebnisse[12]}

geben Sie hier die Bildbeschreibung ein

TestDisk abgeschlossen

geben Sie hier die Bildbeschreibung ein

Author: ConductedForce, 2019-12-06

1 answers

Analyse

Der Befehl, den Sie verwendet haben

sgdisk -R /dev/sdb /dev/sdh2

Kopierte die GUID-Partitionstabelle (GPT) von /dev/sdh2 nach /dev/sdb.

Ein Problem ist, dass /dev/sdh2 eine Partition ist. Jede Partition hat keine oder Partitionstabelle. Oder zumindest sollte es nicht haben. Ich kann mir eine aussagekräftige Partitionstabelle innerhalb einer Partition vorstellen (und sie sogar irgendwie zum Laufen bringen), aber das ist umständlich, exotisch, nicht wirklich nützlich.

Die resultierende Kopie ist ein leerer GPT weil anscheinend die relevanten (aber nicht aussagekräftigen) Werte in /dev/sdh2 zu einer solchen Tabelle geführt haben. Das ist nicht wirklich wichtig.

Was zählt, ist, dass du den ursprünglichen GPT auf /dev/sdb überschrieben hast. Der Befehl, den Sie verwendet haben, hat nur die Partitionstabelle geändert, alle anderen Strukturen werden voraussichtlich noch vorhanden sein. Das Dateisystem selbst sollte in Ordnung sein (es sei denn, Ihr späterer Wiederherstellungsversuch war unglücklich genug, um es zu beschädigen). Sie haben nur eine bequeme Möglichkeit verloren, zum Dateisystem zu gelangen. Bitte lesen diese Antwort von mir, sein Anfangsteil fasst den Unterschied zwischen Partition und Dateisystem zusammen.

Ihr Ziel ist es nun, das ursprüngliche GPT irgendwie wiederherzustellen. Beachten Sie, dass Ihre Situation so ist, als befänden Sie sich mitten in der in der genannten Antwort beschriebenen Prozedur: Sie haben den Partitionstabelleneintrag zerstört, aber noch keinen neuen erstellt. Der Unterschied besteht darin, dass Sie nicht unbedingt eine größere Partition erstellen möchten und den Offset (Startsektor), in dem sich die Partition befindet, nicht kennen sollte beginnen.

GPT besteht aus primären und sekundären (Backup) Tabelle. Die sekundäre Tabelle kann Ihnen beim Wiederherstellen des alten Status nicht helfen, da sgdisk -R beide Tabellen geändert hat, um den gesamten GPT in einem konsistenten Zustand zu belassen.


Offset finden

Es gibt Tools, mit denen Sie eine Festplatte scannen, Dateisystemsignaturen finden, die Dateisystemgröße aus der Signatur lesen und einen Partitionstabelleneintrag vorschlagen können, der das Dateisystem ordnungsgemäß in eine neu definierte Partition einbetten kann, so kann es leicht montiert werden. Ein solches Werkzeug ist testdisk. Wenn nur die alte Partitionstabelle ausgelöscht wurde, sollte testdisk in der Lage sein, das Dateisystem zu finden und einen vernünftigen GPT zu erstellen. Das Scannen kann eine Weile dauern.

Alternativ können Sie versuchen, den richtigen Offset zu erraten. Die Tatsache, dass Sie nur eine Partition hatten, ist ein Vorteil.

Bitte lesen Sie dies ist eine andere Antwort von mir. In Ihrem Fall (logische Sektorgröße von 512) ist der wahrscheinlichste Startsektor 2048 und der Befehl, der Arbeit ist:

mount -o ro,offset=$((512*2048)) /dev/sdb /some/mountpoint/

Das Einbinden von schreibgeschützten Daten wirkt sich nicht auf Daten aus, die bisher überlebt haben, daher sollte es sicher sein, es zu versuchen. Wenn der Befehl erfolgreich ist und Sie überprüfen, ob Dateien und Verzeichnisse unter /some/mountpoint/ angezeigt werden, bedeutet dies, dass der Versatz richtig ist.

Hinweis: 512*2048 ist genau 1-MiB. In einem der Screenshots haben Sie:

Possible partition … offset(1mb)

Ich denke, das ist der eine. Es würde höchstwahrscheinlich auch von testdisk gefunden, wenn Sie dieses Tool verwenden würden.


Partitionstabelleneintrag erstellen manuell

Wenn Sie sich entschieden haben, testdisk (oder ähnliches) nicht zu verwenden, den Offset gefunden haben, der richtig erscheint, können Sie eine Partitionstabelle mit Sane-Eintrag manuell erstellen (mit gdisk, sgdisk oder jedes Werkzeug in der Lage, dies zu tun). Folgen Sie diesen Hinweisen:

Nachdem Sie einen richtigen Eintrag erstellt und die neue Partitionstabelle auf das Gerät geschrieben haben, /dev/sdb1 sollte angezeigt werden. Wenn es nicht angezeigt wird, rufen Sie partprobe auf.

Bestätigen Sie, dass Sie /dev/sdb1 mounten können.


Größe anpassen

Wenn /dev/sdb1 verfügbar ist, können Sie das Dateisystem einfach nach seiner Größe abfragen. Ich meine, was das Dateisystem weiß, ist seine Größe. Im Allgemeinen ist dies anders als die Größe der entsprechenden Partition. Es gibt mindestens zwei Werkzeuge, die Sie verwenden können:

  • file -s /dev/sdb1
    

    Sie interessieren sich dafür, wo es steht sectors NNNNNN. Keine Sorge über hidden sectors (vergleiche ähnliche Zweifel für FAT).

  • ntfsresize --info /dev/sdb1
    

    Sie interessieren sich für "Aktuelle Volumengröße". Drücken Sie es in 512-Byte-Sektoren aus (dh dividieren durch 512).

Die Zahl, die aus der Ausgabe von ntfsresize berechnet wird, unterscheidet sich möglicherweise kaum von dem, was file sagt. Ich denke, das hat etwas mit der Clustergröße zu tun. In meinen Tests scheint es, nachdem mkfs.ntfs aufgefordert wurde, eine ganze Partition zu verwenden, berichtet file einen Sektor weniger als die Anzahl der Sektoren in der partition. Verwenden Sie also eher file, nicht ntfsresize, identifizieren Sie sectors NNNNNN, fügen Sie einen hinzu. So groß muss die Partition sein. Fügen Sie im Zweifelsfall 2048 Sektoren hinzu. Es ist overkill, aber nur 1 MiB verschwendeten Platz, nicht viel; es wird Sie sicher sicher halten.

Wenn die Partition (die im vorherigen Absatz erstellt wurde) größer ist, möchten Sie sie möglicherweise verkleinern. Ich Stelle fest, Ihr Endziel war es, kopieren Sie die Dateisystem auf eine kleinere Scheibe; und es ist dies Possible partition … size(764432mb) … in einem der screenshots. Das macht mich glauben Sie, dass das Dateisystem tatsächlich kleiner ist als die neue Partition. Dies ist für sich genommen kein Problem, aber wenn Sie nach dem Ende des Dateisystems eine weitere Partition erstellen oder das Setup dennoch auf eine kleinere Festplatte kopieren möchten, ist das Verkleinern der Partition eine gute Idee.

Das Verfahren:

  1. umount das Dateisystem, falls gemountet.
  2. Entfernen Sie den Eintrag aus der Partitionstabelle.
  3. Erstellen Sie einen neuen Eintrag wie im vorherigen Absatz, aber diesmal geben Sie die Anzahl der gerade berechneten Sektoren an. Beachten Sie, dass wir über die Größe der neuen Partition sprechen, nicht über den Endsektor. Wenn Sie den Endsektor kennen müssen, verwenden Sie diese Formel: start+size-1=end. Die Ausrichtung des Endes einer Partition sollte keine Rolle spielen (es ist wichtig für den Anfang), aber wenn das Tool darauf besteht, das Ende leicht zum Ende der Festplatte zu bewegen, lassen Sie es.
  4. Speichern Sie die Partitionstabelle, führen Sie partprobe für alle Fälle aus.
  5. Stellen Sie sicher, dass /dev/sdb1 fehlerfrei montiert wird. Auf den ersten Berg schreibgeschützt (mount -o ro …) nur für den Fall.

Wenn das Dateisystem gut mountet wird, sind Sie im Grunde fertig. Die Partitionstabelle ist jetzt gesund.


Mögliche Probleme

  • Die neue Partition hat eine neue eindeutige Partitions-GUID. Andererseits bleibt die im Dateisystem gespeicherte "UUID" erhalten. Möglicherweise müssen Sie jedes Tool/Betriebssystem neu konfigurieren, das auf der ersteren basiert (oder den alten Wert aus einer Konfiguration abrufen und auf die neue Partition anwenden, diese einzelne move wird alle diese Konfigurationen wieder gültig machen). Ich weiß nicht, mit welcher ID Windows angibt, ob es die Partition/das Dateisystem zuvor gesehen hat.
  • Ich kann die logische/physische Sektorgröße des Datenträgers als 512/4096 anzeigen. Bitte Lesen Sie diese Frage und die Erklärung in meiner Antwort darauf. Wenn mindestens ein USB-Gehäuse beteiligt ist und die Festplatte früher anders angeschlossen wurde als jetzt (d. H. In einem anderen Gehäuse; oder über SATA jetzt, in einem früheren Gehäuse; oder umgekehrt) und sie haben nicht überprüft, dass /dev/sdb1 mountet, bevor Sie sgdisk -R aufgerufen haben, dann vielleicht Die ursprüngliche (verlorene) Partitionstabelle war gültig für die logische Größe von 4096; und wenn Sie versucht haben, die Partition vor dem Missgeschick zu mounten, würde das gleiche Problem auftreten wie in der verknüpften Frage. Mein Punkt ist, dass meine Antwort Ihnen hilft, eine Partitionstabelle zu erstellen, die für das aktuelle - Setup gültig ist. Wenn dieses Problem Sie treffen würde, wird es Sie treffen, wenn Sie das Laufwerk im ursprünglichen Setup anschließen. Dann sie müssten die Partitionstabelle erneut anpassen. Meine Antwort auf die verknüpfte Frage wird helfen.
  • Wenn das obige Aufzählungszeichen zutrifft und wenn size(764432mb) falsch ist, ist es möglich, dass Sie eine DOS-Partitionstabelle in MBR (nicht GPT) überschreiben (und überschreiben), die eine große Partition definiert hat, die sich bis zum Ende der Festplatte erstreckt, und das Dateisystem selbst erstreckt sich bis (fast) bis zum Ende der Festplatte. In diesem Fall hat sgdisk -R den sekundären (Sicherungs -) GPT am Ende erstellt, an dem ein Teil des Dateisystems sein sollte sein. Wenn das Dateisystem gut mountet, ist dies wahrscheinlich nicht der Fall. Im Allgemeinen kann es sein. Dies ist ein Szenario, in dem Sie möglicherweise Daten verloren haben.und Sie können mehr verlieren, wenn Sie es nicht beheben (stellen Sie bei Bedarf eine separate Frage).

    Hinweis Wenn Sie sicher sind, dass Sie GPT hatten, sind Sie sicher (weil die sekundäre Tabelle "immer" dort war). Und wenn Sie sicher sind, dass das vorherige Aufzählungszeichen nicht zutrifft, sind Sie sicher (da bei der logischen Sektorgröße von 512 und bei der DOS-Partitionstabelle im MBR die partition beginnend bei Sektor 2048 konnte nicht Spannweite, um das Ende Ihrer großen Festplatte).

Nachdem Sie die Partitionstabelle repariert haben, möchten Sie wahrscheinlich mit Ihrem ursprünglichen Plan fortfahren. Dann:

  • Die andere Festplatte kann eine andere logische Sektorgröße haben. Ich bin nicht sicher, ob (richtig verwendet) sgdisk -R Einträge zwischen verschiedenen Größen neu berechnet. Ich erwarte es. Falls nicht, Sie wissen, was zu tun ist.
  • Aber vielleicht sie wollten die einzige Partition von /dev/sdb (dh /dev/sdb1 oder so) nach /dev/sdh2 klonen; und es gibt /dev/sdh1, die Sie behalten möchten. Wenn ja, ist sgdisk -R nicht was Sie tun möchten. Wenn Sie die Partitionstabelle von /dev/sdb nach /dev/sdh2 (eine Partition) kopieren, erhalten Sie nichts. Wenn Sie es in /dev/sdh kopieren, wird die aktuelle Partitionstabelle dort ersetzt und mit dem aktuellen /dev/sdh2 (und /dev/sdh1 falls vorhanden) durcheinander gebracht. Verwenden Sie sgdisk -R nur, wenn die Zielfestplatte keine Daten enthält, die Sie behalten möchten. Fragen Sie im Zweifelsfall einen separaten frage nachdem Sie die Partitionstabelle von /dev/sdb behoben haben. Die neue Frage sollte die Ausgabe von gdisk -l (oder fdisk -l) für beide Festplatten enthalten und Sie sollten klar angeben, auf welche Partition(en) Sie wo klonen möchten, welche Partition(en) entbehrlich sind und welche Partition(en) sollte intakt bleiben.
 1
Author: Kamil Maciorowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-12-11 15:45:27