Более быстрое восстановление с диска с поврежденными секторами

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

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

3 ответа:

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


Edit

в случае, если сам жесткий диск занимает слишком много времени, вы можете попробовать включить функцию под названием TLER (T ime Lограниченная E rror Recovery) или CCTL ( Command C ompletion T ime LИМИТ). Не все жесткие диски имеют его, но вы можете использовать его, чтобы ограничить время на самом контроллере жесткого диска. Этот подход можно комбинировать с использованием ddrecue, конечно.

Linux имеет инструмент под названием smartctlsmartmontools пакет).

для проверки текущей настройки ("отключено" означает неограниченное время, которое вы не хотите):

# smartctl -l scterc /dev/sda

для установки фиксированного значения (5.0 секунд в данном примере. Установка значения 0 отключает TLER):

# smartctl -l scterc,50,50 /dev/sda

источник для TLER:http://en.wikipedia.org/wiki/TLER

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

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

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

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

для быстрого и быстрого восстановления диска вы можете использовать файл сценария 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 : прямой I / O
  • -n : без царапины

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