2

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

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

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

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  +

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

1 ответ1

0

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

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

$ 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 решил, что он должен продолжаться с середины диска, как если бы первая половина уже была заполнена. Таким образом, таблица разделов осталась нетронутой.


Зачем […]?

Честно говоря, я не могу сказать. Мои тесты с ddrescue 1.19 показывают, что это происходит, когда current_status внутри map-файла имеет значение 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .