11

Недавно я пытался dd от нездорового HDD в файл. Я использовал dd if=/dev/sdb of=somefile bs=4096 conv=noerror,sync . Моя проблема заключалась в том, что dd потратил много времени, когда обнаружил плохой блок. В моем случае я бы с радостью заплатил бы за некоторую потерю данных для более быстрого результата.

Есть ли способ ускорить обработку ошибок? Может быть, настройка ядра (указание жесткому диску приложить меньше усилий для чтения блока)? Или другая программа?

3 ответа3

24

Во-первых, для использования программного обеспечения: вы можете попробовать использовать 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

3

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

http://www.cgsecurity.org/wiki/TestDisk

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

http://www.cgsecurity.org/wiki/PhotoRec

2

Для быстрого и быстрого восстановления диска вы можете использовать файл сценария sh и запустить файл с помощью sh. Он содержит эту строку, просто повторите sudo ddrescue и sleep 3 раза. Спящий режим используется, чтобы привод отдыхал несколько секунд:

#! /bin/sh -e 
sudo ddrescue -d -r0 -e +0 -T 1s -n /dev/drivepartition file.img log.logfile 
sleep 3

Опции, использованные выше:

  • -r0: без повторов
  • -e +0: выход при первой ошибке
  • -T 1s: выйти с ошибкой чтения в 1 секунду
  • -d: прямой ввод / вывод
  • -n: нет царапин

Вы можете использовать -R после финиша с опцией -A один раз, чтобы развернуть и удалить все ошибки и снова начать обратно. Значит он будет читать ошибки по-разному.

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