gddrescue --fill-mode = + mit einer Kartendatei von 0x00000000 0x608336000 + hat die Partitionstabelle intakt gelassen?

473
zenerguy

Ich habe zuerst diesen Befehl ausgeführt:

ddrescue --force /dev/sda /dev/null HGST_RMA.map 

Ich wollte nur eine Map-Datei zum Ausblenden (deshalb /dev/null). Und so .mapsieht meine Datei aus, bevor ich den Lauf gegen Ende unterbrochen habe ( Ctrl+ C).

ddrescueview

Dann entschloss ich mich, die Platte zu leeren ( /dev/zero):

$ sudo ddrescue --force --fill-mode=+ /dev/zero /dev/sda HGST_RMA.map GNU ddrescue 1.21 Press Ctrl-C to interrupt Initial status (read from mapfile) filled size: 266742 MB, filled areas: 43 remaining size: 233363 MB, remaining areas: 151 Current status filled size: 500106 MB, filled areas: 194, current rate: 55115 kB/s remain size: 0 B, remain areas: 0, average rate: 71200 kB/s current pos: 500107 MB, run time: 54m 37s Finished  

Dann lief ich:

$ fdisk -l /dev/sda Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0xbf7dbd9f  Device Boot Start End Sectors Size Id Type /dev/sda1 2048 62916607 62914560 30G 83 Linux /dev/sda2 62916608 67110911 4194304 2G 82 Linux swap / Solaris /dev/sda3 67110912 976773167 909662256 433.8G 83 Linux 

Das erste Bit meiner Map-Datei sieht folgendermaßen aus:

# Mapfile. Created by GNU ddrescue version 1.21 # Command line: ddrescue --force --fill-mode=+ /dev/zero /dev/sda HGST_RMA.map # Start time: 2017-12-28 17:37:14 # Current time: 2017-12-28 18:31:57 # Finished # current_pos current_status 0x7470BFD000 + # pos size status 0x00000000 0x608336000 + 0x608336000 0x00001000 - 0x608337000 0x380B8DD000 + 0x3E13C14000 0x00001000 - 0x3E13C15000 0x00224000 + 

Nach meiner eigenen Einschätzung sollte die Partitionstabelle wegen der Fehler gelöscht worden sein

0x00000000 0x608336000 + 

Warum ist das nicht passiert und was wurde ausgeblendet?

2

1 Antwort auf die Frage

0
Kamil Maciorowski

Was wurde ausgeblendet?

Der Hinweis ist hier:

$ sudo ddrescue --force --fill-mode=+ /dev/zero /dev/sda HGST_RMA.map … Initial status (read from mapfile) filled size: 266742 MB, filled areas: 43 remaining size: 233363 MB, remaining areas: 151 … 

Aus irgendeinem Grund ddrescueentschied er, dass er von der Mitte der Platte aus fortgesetzt werden sollte, als ob die erste Hälfte bereits gefüllt worden wäre. Auf diese Weise wurde die Partitionstabelle intakt gelassen.


Warum […]?

Ehrlich gesagt kann ich es nicht sagen. Meine Tests mit ddrescue1.19 zeigen an, dass dies current_statusder Fall ist, wenn das Innere der Map-Datei F"Ausfüllen von angegebenen Blöcken" bedeutet. Dies ist der Fall, nachdem Sie den Füllvorgang unterbrochen haben. Die Fortsetzung scheint vernünftig, ich würde das erwarten.

Aber nach Ihrem ddrescueviewScreenshot, das current_statuswar *„Trimmen nicht getrimmten Blöcke“. Mit diesem Status kann ich das Problem nicht replizieren. Mein ddrescueBlock füllt alle gesunden Blöcke wie gewünscht. Auch dies ist gesund und erwartet.

Entweder haben Sie einen Fehler gefunden oder Sie haben die Datei (en) geändert (und es versäumt, es hier zu erwähnen) auf eine irreführende Weise ddrescue. ZB wenn Sie versehentlich das ausführen:

sudo ddrescue --force --fill-mode=+ /dev/zero /dev/null HGST_RMA.map 

und realisiert Ihre Fehler ( „Warte! Warum ist es so schnell zu schreiben?“), unterbrochen zur Hälfte mit Ctrl+ C, dann mapfile enthalten würde Fwie current_status. Als Nächstes führen Sie den richtigen Befehl aus und es wird von der Mitte aus fortgesetzt /dev/sda.