Для копирования, использования 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
Не забудьте указать файл карты для записи плохих областей.
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
(Я не знаю, поддерживает ли этот инструмент возобновление / повтор со вторым вызовом, но, по крайней мере, он выводит журнал 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
части и поместите цель "error" в качестве устройства для блоков 0 - 8 (вместоsdb1
), чтобы создать диск с чистой ошибкой.См. Также приложение Device Mapper из «Администрирование менеджера логических томов RHEL 5».
- Питер Кордес, https://stackoverflow.com/questions/1870696/simulate-a-faulty-block-device-with-read-errors
(Преобразование журнала поврежденных блоков или файла карты ddrescue в синтаксис таблицы dmsetup оставлено читателю в качестве упражнения ...)