Letzte Aktualisierung:
Ich wusste bereits, was ich tun musste, um dieses Problem zu beheben. Ich wusste einfach nicht, wie ich es machen sollte. Ich hatte gehofft, dass es ein fertiges Tool geben würde, das das automatisch erledigt - aber ich konnte keines finden. Ich akzeptiere Rods Antwort, da sie, obwohl sie mein Problem nicht direkt löst, einen sehr guten Hintergrund zum Problem der Sektorgröße liefert und mir die Gewissheit gibt, dass das Problem wirklich die Ausrichtung und Adressierung der Partitionen war. Wenn Sie zu dieser Frage mit demselben Problem kommen, lesen Sie sie gründlich und sorgfältig durch, einschließlich Kommentaren, bevor Sie etwas unternehmen.
Am Anfang
Ich hatte einen Computer und brauchte mehr Platz. Ich habe ein neues 500-GB-Laufwerk und ein USB-Gehäuse gekauft. Bald habe ich festgestellt, dass wenn ich das Laufwerk im Gehäuse partitioniert und auf den Computer verschoben habe, es die Partitionen nicht erkennt (und umgekehrt). Ich nahm an, dass es ein Problem mit dem Gehäuse war und machte mir darüber keine Sorgen.
Dann die Tragödie
Ein wunderschöner Tag, mein Computer hat beschlossen, sich nicht mehr einzuschalten. Es stellt sich heraus, dass das Motherboard (ohne Marke, nur ein großer MADE IN CHINA-Aufdruck) tot ist. Ich habe es als Dateiserver verwendet und dieses 500-GB-Laufwerk ist jetzt voll mit Daten, die ich mir nicht leisten kann, zu verlieren. Ich bin jetzt pleite und kann mir keinen neuen Computer leisten, daher war meine einzige Hoffnung das "defekte" USB-Gehäuse.
Die Ermittlung
Ausgerüstet mit mehreren Linux-Distributionen, einem Laptop, VirtualBox und dem Gehäuse habe ich eine forensische Analyse zu diesem Thema durchgeführt. dmesg meldete, dass die Partitionsgröße das Laufwerksende überschritten hat. Also habe ich die Datenblätter der Festplatte durchgesehen, die Anzahl der Sektoren von Grund auf berechnet, die Laufwerksgrenzen manuell mit dd getestet und alles sah in Ordnung aus, bis ich fdisk gestartet habe und es stand:
Note: Sector size is 4096 (not 512).
Wie bescheiden von fdisk. Diese "Notiz" war die Wurzel aller Probleme. Nach einigem Hin und Her wurden folgende Schlussfolgerungen gezogen:
Das USB-Gehäuse ist nicht defekt.
Der SATA-Controller auf dem nun toten Motherboard war zumindest "komisch". Es wurden keine 4096-Byte-Sektoren an das Betriebssystem gemeldet, daher erstellte das Betriebssystem den MBR mit 512-Byte-Sektoradressen.
Wenn ich jetzt versuche, auf die Partition zuzugreifen, versucht das Betriebssystem, die 512-Byte-basierten Adressen auf einem 4096-Byte-Sektorenlaufwerk zu verwenden, und das wird natürlich nicht funktionieren.
Die Frage
Wie kann ich also die Adressen im MBR korrigieren, damit sie für eine Sektorgröße von 4096 Byte gültig sind, abgesehen von der manuellen Bearbeitung des MBR in einem Hex-Editor, und
Die Partitionen sind nicht für 4096-Byte-Sektoren ausgerichtet. Gibt es ein Werkzeug, um sie auszurichten, abgesehen vom Kopieren in und aus einem anderen Laufwerk? (Ich habe keine Ersatzlaufwerke), oder muss ich ein Tool erstellen, mit dem die Daten Stück für Stück zur Seite verschoben werden? Partitionen sind ext3.
Vielen Dank!
Aktualisieren:
In der folgenden Frage habe ich herausgefunden, dass es eine clevere Möglichkeit gibt, mit dd die Partition direkt zu verschieben: Wie verschiebe ich eine Partition unter GNU / Linux? Aber ich weiß nicht, ob es auf einem Sektorabschnitt funktionieren wird. Ich kann es momentan nicht testen, werde es aber tun, wenn ich etwas Zeit habe.
Update 2:
Also habe ich die Partition mit der obigen Methode erfolgreich ausgerichtet und den MBR auf einem Hex-Editor von Hand bearbeitet. Sobald ich die Festplatte wieder eingesteckt habe, wird die Auslegerpartition automatisch montiert! Ich kann dies jedoch nicht empfehlen, da während des Vorgangs E / A-Fehler aufgetreten sind und ich möglicherweise alles verloren habe (siehe Kommentar zu Rods Antwort). Für die andere Partition gehe ich kein Risiko ein und verwende eine alte Festplatte und richte die Blöcke nacheinander aus, indem ich die Daten kopiere und sie dann wieder an einer anderen Position einfüge.
fdisk
den MBR unter Linux bearbeiten (das habe ich später erfahren, es sind keine Hex-Editoren erforderlich :)). Sie können den Startpunkt und die Größe jedes Eintrags ändern und die Änderungen überprüfen, bevor Sie sie anwenden. Also: Start fdisk
, notieren Sie sich die aktuelle Konfiguration (oder sichern Sie den MBR mit dd
), multiplizieren Sie die Werte für Startadresse und Größe mit 8 und ändern Sie sie. Überprüfen Sie alles mit einem Taschenrechner und verstehen Sie, was die Werte bedeuten. Sie werden sehen, dass Size = End - Start + 1 ist und dass fdisk
die Größe in Einheiten von 1000 Sektoren angezeigt wird. Daher müssen Sie möglicherweise den Expertenmodus aktivieren, um den tatsächlichen Wert usw. zu sehen.