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