gddrescue --fill-mode = + с файлом карты 0x00000000 0x608336000 + оставил таблицу разделов без изменений?

417
zenerguy

Я сначала выполнил эту команду:

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

Я просто хотел файл карты для гашения (поэтому /dev/null). И вот как .mapвыглядит мой файл до того, как я прервал прогон к концу ( Ctrl+ Cd it):

ddrescueview

Тогда я решил очистить диск ( /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  

Затем я побежал:

$ 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 

Вот как выглядит начальный бит моего файла карты:

# 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 + 

По моей собственной оценке таблица разделов должна была быть стерта из-за

0x00000000 0x608336000 + 

Почему этого не произошло и что было закрыто?

2

1 ответ на вопрос

0
Kamil Maciorowski

Что было заглушено?

Подсказка здесь:

$ 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 … 

По какой-то причине ddrescueрешил, что это должно продолжаться с середины диска, как если бы первая половина уже была заполнена. Таким образом, таблица разделов осталась нетронутой.


Зачем […]?

Честно говоря, я не могу сказать. Мои тесты с ddrescue1.19 показывают, что это происходит, когда current_statusвнутри mapfile имеется в Fвиду «заполнение указанных блоков». Это тот случай, когда вы прерываете операцию заполнения. Продолжение кажется нормальным, я бы ожидал этого.

Но согласно вашему ddrescueviewскриншоту, это current_statusбыло *«обрезка необрезанных блоков». С этим статусом я не могу повторить проблему, моя ddrescueзаполняет все здоровые блоки, как и должна. Опять же, это нормально и ожидаемо.

Либо вы нажали на ошибку, либо изменили файл (ы) (и не упомянули об этом здесь), что вводит в заблуждение ddrescue. Например, если вы случайно запустите это:

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

и понял вашу ошибку («Подожди! Почему он пишет так быстро?»), прерванный на полпути с Ctrl+ C, тогда ваш файл карты будет содержать Fкак current_status. Затем вы запускаете правильную команду, и она «продолжается» с середины /dev/sda.

Похожие вопросы