Назад | Перейти на главную страницу

ddrescue неисправный жесткий диск; получение тупика модуля ядра

Я нахожусь в процессе восстановления умирающего жесткого диска с помощью ddrescue. Утилита очень хорошо работает в тех частях диска, у которых нет проблем, но в тех частях диска, где есть проблемы, она работает очень медленно и, похоже, вызывает тупик в каком-то модуле ядра.

Во-первых: моя система,

$ uname -a
Linux 3.16.2-1-ARCH #1 SMP PREEMPT Sat Sep 6 13:12:51 CEST 2014 x86_64 GNU/Linux

Вот что происходит, сейчас нахожусь на первом этапе восстановления с помощью ddrescue -dn /dev/sdd ddrescue.img ddrescue.log В моих журналах ядра снова появляются следующие журналы

[ 1160.113936] end_request: critical target error, dev sdd, sector 520968448
[ 1191.145082] usb 3-2: reset SuperSpeed USB device number 3 using xhci_hcd
[ 1191.159792] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf00
[ 1191.159797] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf48
[ 1222.107631] usb 3-2: reset SuperSpeed USB device number 3 using xhci_hcd
[ 1222.122490] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf00
[ 1222.122495] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf48
[ 1346.337324] sd 17:0:0:0: [sdd] Unhandled error code
[ 1346.337329] sd 17:0:0:0: [sdd]  
[ 1346.337332] Result: hostbyte=0x05 driverbyte=0x00
[ 1346.337334] sd 17:0:0:0: [sdd] CDB: 
[ 1346.337336] cdb[0]=0x28: 28 00 1f 0d 59 80 00 00 01 00
[ 1346.337345] end_request: I/O error, dev sdd, sector 520968576
[ 1377.408091] usb 3-2: reset SuperSpeed USB device number 3 using xhci_hcd
[ 1377.422946] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf00
[ 1377.422951] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf48

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

Это будет продолжаться некоторое время и работать нормально, пока в конечном итоге я не получу то, что выглядит как тупик.

[ 4132.846802] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.866845] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.886878] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.906841] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.926928] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.946948] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.966935] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.986990] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4133.007033] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4133.027030] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300

^ эти сообщения никогда не перестают приходить

Когда он блокирует все связанные блокировки io и завершение процесса не работает - мое единственное решение - перезапуск системы (иногда принудительно) - это кажется мне способом вызвать потенциальное повреждение данных в данных, которые я пытаюсь восстановить. Мне не нужно перезагружать систему несколько раз, чтобы восстановить этот диск.

  1. Я понимаю, что этот диск выходит из строя, но почему этот модуль в конечном итоге блокируется?
  2. Как мне сообщить об этой ошибке или исправить ее?
  3. Существуют ли определенные модули ядра, которые я могу перезапустить, чтобы исправить эту ошибку без перезагрузки? (Моей лучшей попыткой было принудительное удаление uas который останавливает ddrescue, но я не могу запустить его снова)

Заранее благодарю