Как исправить ошибку ввода / вывода, используя dd?

Привет! Я пытаюсь починить систему Windows 7 со сломанным жестким диском, но он все еще работает.

Я пытаюсь скопировать все данные на новый диск для переустановки Windows 7. Диск с именем SQSERVICE.

Я вообще не могу копировать - см. Ниже:

$ sudo dd if=/dev/sdc1 of=/dev/sda1
dd: reading `/dev/sdc1': Input/output error
11233976+0 records in
11233976+0 records out
5751795712 bytes (5.8 GB) copied, 187.731 s, 30.6 MB/s

Как исправить эту «ошибку ввода / вывода»?

13
задан 9 February 2013 в 17:32

3 ответа

Ты сам сказал: твой диск сломан. Вы можете попробовать ddrescue, он может обойти сломанный путь. Остерегайтесь, однако, что вы потеряете данные.

Восстановление из резервной копии будет проще:)

Правильное использование ddrescue выглядит следующим образом:

sudo apt-get install gddrescue
sudo ddrescue /dev/sdc1 /dev/sda1

или если вы хотите передать stdout в мониторинг процесса. инструмент:

sudo ddrescue /dev/sdc1 /dev/sda1 | pv
0
ответ дан 9 February 2013 в 17:32

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

ddrescue может быть лучшим выбором в этом случае для восстановления данных (отличается от «исправления» ошибки / диска, как было сформулировано в первоначальном вопросе), как предложил Деннис.

Кроме того, вы также можете смонтировать диск и скопировать файлы. Это НАМНОГО быстрее, если есть много пустого пространства, или если вам нужны только определенные файлы. ВНИМАНИЕ: сделано с машины Linux, при этом теряются все расширенные атрибуты, такие как права доступа к файлам, поэтому это очень плохой выбор для файлов ОС, но допустимый для файлов пользователя. Выполнение этого из окон должно сохранить их, но может не обрабатывать ошибки плавно, возможно, делая это очень медленно.

Еще один вариант «исправить» сектора, а не просто обойти их, - перераспределить поврежденные сектора. Если вы знаете номер сектора (в вашем случае 11233976, при условии, что размер вашего блока в dd и размер сектора 512), просто запустите его и повторите для каждого нового поврежденного сектора:

hdparm –write-sector 11233976 –yes-i-know-what-i-am-doing /dev/sdb

ВНИМАНИЕ: Это уничтожит данные в этом секторе. Поэтому убедитесь, что вы действительно знаете, что делаете. Если этот сектор не может быть прочитан, его перезапись остановит ошибки, но это будет означать, что сектор будет содержать мусор, возможно, испортит важный файл.

См. Это для получения дополнительной информации: http://www.sjvs.nl/forcing-a-hard-disk-to-reallocate-bad-sectors/

И если ваш На диске имеется большое количество (возможно, тысячи) поврежденных секторов (либо обозначенных как Current_Pending_Sector, Offline_Uncorrectable или Reallocated_Sector_Ct), либо, если он новый и все еще находится на гарантии, либо если число постоянно увеличивается с течением времени, тогда вы должны заменить диск в любом случае. Не позволяйте им сказать вам, что перераспределение исправляет диск. Он только исправляет известные плохие сектора и использует сектора, зарезервированные для перераспределения. Если диск подвержен развитию большего количества плохих секторов, проблема просто будет возвращаться, каждый раз повреждая некоторые данные.

0
ответ дан 9 February 2013 в 17:32

Хотя некоторые части диска сломаны, вы все равно можете копировать хорошие части диска.

$ dd --help
...
 noerror   continue after read errors
...
sudo dd if=/dev/sdc1 of=/dev/sda1 conv=noerror
5
ответ дан 3 January 2020 в 12:23

Другие вопросы по тегам:

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