Ist es möglich, die Partition auf dem Disk-Image zu bearbeiten?

1

Ich versuche, ein abgestürztes 2-TB-Laufwerk mit ddrescue wiederherzustellen. Es läuft jetzt seit über einer Woche und ist kurz vor dem Ende angelangt und hat anscheinend keinen Platz mehr mit diesem Fehler:

ddrescue: write error: No space left on device

Es war ein leeres 2-TB-Laufwerk, auf das ich kopiert habe. Vermutlich gab es also Unterschiede im tatsächlichen Speicherplatz von einem Hersteller zum nächsten. Das Laufwerk war nicht voll, nur etwa 600 GB wurden zum Zeitpunkt des Absturzes verwendet, und es gab nur 20 Fehler mit insgesamt 254 MB. Ich schätze also, ich habe tatsächlich den größten Teil der Daten, die sich auf dem wiederhergestellten Festplatten-Image befanden.

Wenn ich versuche, das Image mit diesem Befehl zu mounten:

sudo mount -o loop,ro,offset=0 rimage /mnt/resc

es schlägt fehl und dies wird im dmesg angezeigt:

[999150.073373] EXT4-fs (loop0): bad geometry: block count 488378646 exceeds size of device (480723271 blocks)

1) Gibt es eine Möglichkeit, die Blockanzahl des Images zu bearbeiten, damit ich es mounten kann?

2) Ist es in diesem Fall möglich, die Partitionsgröße des Disk-Image anschließend zu verkleinern?

Michael VanDeMar
quelle

Antworten:

1

Speicherplatzproblem

Ihr Wiederherstellungsziel verfügt wahrscheinlich nicht über genügend Speicherplatz, da Sie in eine Image-Datei auf einem Dateisystem auf dem Ziel geschrieben haben und das Dateisystem einen Overhead aufweist. Möglicherweise ist es Ihnen gelungen, das Speicherplatzproblem mit der --sparseMarkierung in zu beheben ddrescue.

Ich empfehle nachdrücklich, ein anderes Image zu erstellen , um dieses Mal das Platzproblem mit einer größeren Festplatte oder mithilfe von zu vermeiden ddrescue --sparse.

Sie können damit tatsächlich ddrescueüber die gesamte Festplatte des Wiederherstellungsziels schreiben und ein Dateisystem überspringen. Wenn das Wiederherstellungsziel die Festplatte ist /dev/sdc, würden Sie angeben, in diese ddrescuezu schreiben, anstatt in rimage. Die Festplatte des Wiederherstellungsziels verhält sich dann wie ein Klon der ausgefallenen Festplatte, abzüglich der nicht wiederherstellbaren Teile.

Größe eines Geräte-Images ändern

Wenn das ddrescueImage des gesamten ausgefallenen Laufwerks sein soll, führen Sie diesen Befehl aus und ersetzen Sie ihn /dev/sdbdurch den Gerätepfad des ausgefallenen Laufwerks:

sudo blockdev --getsize64 /dev/sdb

Nehmen Sie die Ausgabe (z. B. 500107862016) und ändern Sie die Größe Ihres Wiederherstellungsabbilds /path/to/rimagemit truncate:

truncate -s 500107862016 /path/to/rimage

VORSICHT: Wenn Sie auf eine Größe kürzen, die kleiner als die Größe von ist, /path/to/rimage gehen Daten verloren.

Stellen Sie sicher, dass Sie die aktuelle Größe von /path/to/rimagemit überprüfen du -b --apparent-size /path/to/imageund bestätigen, dass die zurückgegebene Größe kleiner ist als die, blockdevdie Sie erhalten haben.

Jetzt nimmt das wiederhergestellte Image mount.ext4die erwartete Größe an .

Ändern der Größe eines Partitionsabbilds

Wenn Sie ddrescueauf einer Partition im ausgefallenen Laufwerk ausgeführt haben, verwenden Sie stattdessen diesen Befehl, um die Größe der Partition abzurufen, und ersetzen Sie ihn /dev/sdb1durch den Gerätepfad der Partition:

sudo blockdev --getsize64 /dev/sdb1

Nehmen Sie dann die Ausgabe (z. B. 500106788864) und ändern Sie die Größe Ihres Wiederherstellungsabbilds /path/to/rimagemit truncate:

truncate -s 500106788864 /path/to/rimage

VORSICHT: Wenn Sie auf eine Größe kürzen, die kleiner als die Größe von ist, /path/to/rimage gehen Daten verloren.

Stellen Sie sicher, dass Sie die aktuelle Größe von /path/to/rimagemit überprüfen du -b --apparent-size /path/to/imageund bestätigen, dass die zurückgegebene Größe kleiner ist als die, blockdevdie Sie erhalten haben.

Deltik
quelle
Vielen Dank, dass ich mithilfe von "Truncate" einsteigen und das Image nun erfolgreich einbinden konnte und die Daten dort anzeigen kann (obwohl einige definitiv fehlgeschlagen sind, da ich einige Elemente nicht löschen kann, wird ein Fehler angezeigt). Bei meiner Frage zur Größenänderung der Partition ging es nicht darum, die Größe eines Images einer Partition zu ändern. Es gibt eine Möglichkeit, die Partition mit parted oder einem anderen Tool auf dem Image selbst zu verkleinern, sodass ich die Daten von dort verschieben kann das Image auf das Laufwerk, ohne ein drittes Laufwerk zu benötigen. Es ist sehr unattraktiv, ddrescue für eine weitere Woche erneut auszuführen.
Michael VanDeMar
@MichaelVanDeMar: Was Sie vorschlagen, birgt das Risiko eines Datenverlusts, da das Dateisystem beim Ändern der Größe keine Integrität garantieren kann, insbesondere bei Lücken in den Daten. Wenn Ihre Daten für Sie wichtig sind, sollten Sie versuchen, jedes einzelne Bit beizubehalten, bis Sie sicher sind, dass Sie alles haben, was Sie bekommen können. (Es hört sich jedoch so an, als hätten Sie das Image bereits geändert.) Ich empfehle nicht, die Größe der wiederhergestellten Daten zu ändern.
Deltik
Ich kann es jedoch erst kopieren, wenn ich es verkleinere, da es derzeit die gesamte Festplatte belegt. Gibt es eine Möglichkeit, die Partition im Image mit parted oder gparted oder einem anderen Festplatten-Dienstprogramm zu verkleinern? Wenn ich das Dienstprogramm "Fedora's Disks" verwende, ist die Option zum Bearbeiten der Partition abgeblendet, und ich weiß nicht, wie ich das auf ein nicht bereitgestelltes Image verweisen soll. Im schlimmsten Fall, wenn etwas nicht stimmt und ich es unbedingt tun musste, könnte ich immer wieder von vorne anfangen, entweder mit --sparse, wie Sie vorgeschlagen haben, oder auf die Festplatte selbst anstatt auf ein Image.
Michael VanDeMar
@MichaelVanDeMar: Kurz gesagt, nein, da das Dateisystem für die Größenänderung zuständig ist, beschädigte Daten jedoch bedeuten, dass dem Dateisystem nicht allein vertraut werden kann. Aus diesem Grund möchte ich betonen, dass Sie so viele Originaldaten wie möglich erhalten müssen. Wenn Sie eine externe Festplatte qemu-img convert -O qcow2 -cp /path/to/rimage /path/to/exthdd/rimage.qcow2sparen können , können Sie möglicherweise Speicherplatz sparen, während alle Daten erhalten bleiben. Wenn dies nicht möglich ist, müssen Sie möglicherweise auf fsckdie Partition im Inneren zurückgreifen /path/to/rimage.
Deltik