Клонирование диска без потери информации на ошибки IO

Я хочу проверить программное обеспечение для создания разделов, как parted.

Я нашел старый USB-модем, который зависает программа, когда я пытаюсь читать это. Чтобы сохранить этот тестовый случай, мне нужно скопировать USB-накопитель как можно точнее,консервирование ошибки IO.

Я знаю, что, вероятно, невозможно заставить мой HDD бросить ошибку IO при чтении некоторых байтов этого файла, но, возможно, его можно эмулировать какой-то программой, которая имеет все содержимое USB-накопителя жестко запрограммирован и запоминает, когда выдать ошибку ввода-вывода?

Я использую Arch Linux и предпочел бы решение, которое может быть адаптировано к нему (возможно, через какой-то VM или эмулятор машины).

7
задан styrofoam fly
12.02.2023 12:33 Количество просмотров материала 2830
Распечатать страницу

2 ответа

для копирования, использование ddrescue,safecopy или dd_rescue. Все они ведут журнал отказавших областей,а также автоматически повторяют попытку, пока не смогут получить данные.

использование:

  • ddrescue: (не путайте со старым dd_rescue)

    ddrescue /dev/sdc3 sdc3.img sdc3.map
    

    если хотите, повторите с --retrim или ' --try-again:

    ddrescue --try-again /dev/sdc3 sdc3.img sdc3.map
    

    не забудьте указать Map-файл для записи плохих областей в.

  • safecopy:

    safecopy --stage1 /dev/sdc3 sdc3.img
    safecopy --stage2 /dev/sdc3 sdc3.img
    safecopy --stage3 /dev/sdc3 sdc3.img
    

    после стадии 3, Вы будете иметь stage3.badblocks файл с перечнем отдельных поврежденных секторов.

    если вы хотите повторить попытку, используйте:

    mv stage3.badblocks stage2.badblocks
    safecopy --stage3 /dev/sdc3 sdc3.img
    
  • dd_rescue: (не путать с более способным ddrescue)

    dd_rescue -o sdc3.badblocks /dev/sd3 sdc3.img
    

    (Я понятия не имею, поддерживает ли этот инструмент возобновление / повторную попытку со 2-м вызовом, но, по крайней мере, он выводит badblocks бревно.)

эти программы подчеркивают, получить как можно больше данных быстро по мере того как они могут, и держащ медленное спасение для более поздно. Поэтому не удивляйтесь, если" Этап 1 " пропустит целые мегабайты только из – за одного плохого блока-он вернется к этому на этапе 2.

для эмуляции плохого диска возьмите журнал badblocks, который вы только что получили, и примените его к этому сообщению:

использовать dmsetup создать устройство резервного по цели "error". Он появится в /dev/mapper/<name>.

Страница 7 презентация device mapper (PDF) имеет именно то, что вы ищете:

dmsetup create bad_disk << EOF
  0 8       linear /dev/sdb1 0
  8 1       error
  9 204791 linear /dev/sdb1 9
EOF

и оставить sdb1 части и поставить цель" ошибка " в качестве устройства для блоков 0-8 (вместо sdb1) сделать чистый диск ошибок.

см. также Устройство Mapper приложение из " RHEL 5 Администрирование Диспетчера Логических Томов".

- Питер Кордес, https://stackoverflow.com/questions/1870696/simulate-a-faulty-block-device-with-read-errors

(преобразование журнала badblocks или файла карты ddrescue в синтаксис таблицы dmsetup оставляется в качестве упражнения для читателя...)

4
отвечен grawity 2023-02-13 20:21

dd может быть сказано, чтобы продолжить при возникновении ошибок, это будет просто писать нули в пространствах, которые он не может прочитать с исходного диска...

dd bs=<blocksize here> conv=sync,noerror if=/dev/sdc123 of=/home/me/testFile

вы также можете попробовать использовать ddrescue, чтобы попытаться восстановить данные, однако я не уверен, насколько хорошо он будет работать на USB (flash) диске.

предупреждение - если вы испортите размер блока, вы испортите все данные после первого блока без чтения-вы хотите установить размер блока на устройстве ты копируешь С.

1
отвечен djsmiley2k 2023-02-13 22:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх