Восстановить неисправный жесткий диск; получить тупик модуля ядра
Я нахожусь в процессе восстановления умирающего жесткого диска с помощью 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
^ эти сообщения никогда не перестают приходить
Когда он блокирует все связанные блокировки ввода-вывода и уничтожение процесса не работает - мое единственное решение - перезапуск системы (иногда принудительно)- мне кажется, это способ вызвать потенциальное повреждение данных в данных, которые я пытаюсь выздороветь. Мне не нужно перезагружать систему несколько раз, чтобы восстановить этот диск.
- Я понимаю, что этот диск выходит из строя, но почему этот модуль в итоге заходит в тупик?
- Как мне сообщить об исправлении этой ошибки?
- Существуют ли определенные модули ядра, которые я могу перезапустить, чтобы восстановить эту ошибку без перезагрузки? (Моя лучшая попытка была силой удаления
uas
который останавливает ddrescue, но я не могу запустить его снова)
Заранее благодарю