Во-первых, для использования программного обеспечения: вы можете попробовать использовать ddrescue
вместо dd
.
ddrescue
есть переключатель для выполнения ограниченного числа попыток. Он также может использовать файл журнала, поэтому он записывает, какие блоки были плохими. Если позже вам захочется сделать больше попыток, вы можете использовать тот же файл журнала, чтобы снова запустить ddrescue
с другими параметрами (например, больше попыток), и он будет повторять только необходимые блоки.
Пример использования:
# ddrescue -n /dev/sda /dev/sdb rescue.log
# ddrescue -r1 /dev/sda /dev/sdb rescue.log
С информационной страницы ddrescue
:
-n, --no-scrape
Skip the scraping phase. Avoids spending a lot of time
trying to rescue the most difficult parts of the file.
-r, --retry-passes=<n>
Exit after given number of retry passes. Defaults to 0.
-1 means infinity. Every bad sector is tried only once
in each pass. To retry bad sectors detected on a previous
run, you must specify a non-zero number of retry passes.
Вот несколько дополнительных источников использования ddrescue
:
редактировать
В случае , если сам HDD занимает слишком много времени, вы можете попытаться включить функцию под названием TLER (T IME L imited E rror R ecovery) или КЦТЛИ (C ommand C ompletion T IME L IMIT). Не все жесткие диски имеют его, но вы можете использовать его для ограничения времени на самом контроллере жесткого диска. Конечно , такой подход можно сочетать с использованием ddrecue
.
В Linux есть инструмент под названием smartctl
(в пакете smartmontools
).
Чтобы проверить текущие настройки ("отключено" означает неограниченное время, которое вы не хотите):
# smartctl -l scterc /dev/sda
Чтобы установить его на фиксированное значение (5,0 секунд в этом примере. Установка в 0 отключает TLER):
# smartctl -l scterc,50,50 /dev/sda
Источник для TLER: http://en.wikipedia.org/wiki/TLER