I/O 错误不会涌入 ddrescue

I/O 错误不会涌入 ddrescue

我正在尝试使用 ddrescue 从损坏的 USB 棒获取映像。该过程在驱动器的前 100MB 上有效,然后完全卡住了:ddrescue 输出冻结(甚至几个小时都没有动静)。

ddrescue 进程处于“D”——不间断睡眠(通常是 IO)状态,信号不会停止它,只有拔下 USB 驱动器才会停止。

似乎 I/O 错误没有到达 ddrescue,因此它无法继续处理下一个块。有没有办法确保内核向 ddrescue 返回 I/O 错误,以便它继续处理?

我使用默认选项运行了 ddrescue:

sudo ddrescue /dev/sdc /tmp/image_usb_rescue.img /myt/image_usb_rescue.log

使用dd而不是ddrescue会导致相同的结果(流程卡住)。

我在 dmesg 上收到以下消息:

[ 2247.230715] usb 1-2: reset high-speed USB device number 15 using xhci_hcd
[ 2247.381353] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_TIME_OUT driverbyte=DRIVER_OK cmd_age=1s
[ 2247.381377] sd 0:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 05 eb 00 00 00 f0 00
[ 2247.381385] blk_update_request: I/O error, dev sda, sector 387840 op 0x0:(READ) flags 0x84700 phys_seg 30 prio class 0
[ 2252.054160] usb 1-2: reset high-speed USB device number 15 using xhci_hcd
[ 2252.203889] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_TIME_OUT driverbyte=DRIVER_OK cmd_age=1s
[ 2252.203912] sd 0:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 06 19 00 00 00 f0 00
[ 2252.203920] blk_update_request: I/O error, dev sda, sector 399616 op 0x0:(READ) flags 0x84700 phys_seg 15 prio class 0
[ 2254.610160] usb 1-2: reset high-speed USB device number 15 using xhci_hcd

为了确保这不是 USB 控制器驱动程序问题,我尝试在两个不同的系统(AMD 台式机和 Intel 笔记本电脑)上进行修复。结果相同。

我尝试拔下电源,再插入 USB 驱动器并再次启动 ddrescue,并选择--input-position跳过坏区域,虽然它可以工作,但是问题的数量使得无法手动完成。

相关内容