![恢复损坏的 USB:在 lsblk 和 lsusb 中可见,在其他地方不可见](https://linux22.com/image/902379/%E6%81%A2%E5%A4%8D%E6%8D%9F%E5%9D%8F%E7%9A%84%20USB%EF%BC%9A%E5%9C%A8%20lsblk%20%E5%92%8C%20lsusb%20%E4%B8%AD%E5%8F%AF%E8%A7%81%EF%BC%8C%E5%9C%A8%E5%85%B6%E4%BB%96%E5%9C%B0%E6%96%B9%E4%B8%8D%E5%8F%AF%E8%A7%81.png)
我有一个 LUKS 加密的 USB 驱动器,直到几天前它还正常工作。有一天,在启动系统并尝试访问驱动器后,它一遍又一遍地要求我输入解密密码,但未能成功挂载。我尝试重新启动,但现在情况更糟了:使用lsusb
和lsblk
命令可以看到磁盘/dev/sdc
,但是,如果我尝试使用dd
、fdisk
、fsck
或gparted
重新分区磁盘,它会导致我的终端挂起(gparted
永远显示其“扫描”消息)。
我不在乎磁盘上的数据,因为它安全地备份在其他地方。但是,我想创建一个新的分区表并继续使用该驱动器。dmesg
输出如下:
[1813.162291] 信息:任务 blkid:20469 被阻止超过 120 秒。 [1813.162292] 受污染:P OE 4.15.0-29-通用#31-Ubuntu [ 1813.162293] “echo 0 > /proc/sys/kernel/hung_task_timeout_secs”禁用此消息。 [1813.162294] blkid D 0 20469 4989 0x00000004 [ 1813.162296] 呼叫追踪: [ 1813.162298] __计划+0x291/0x8a0 [ 1813.162300] ?__update_load_avg_blocked_se.isra.37+0xd1/0x150 [ 1813.162301] ?获取工作池+0x40/0x40 [1813.162303]时间表+0x2c/0x80 [1813.162304]计划超时+0x1cf/0x350 [ 1813.162306] ?ttwu_do_activate+0x77/0x80 [1813.162308]?获取工作池+0x40/0x40 [1813.162309]等待完成+0xba/0x140 [1813.162310]?唤醒_q+0x80/0x80 [ 1813.162311]刷新工作+0x126/0x1e0 [ 1813.162313] ? worker_detach_from_pool+0xa0/0xa0 [ 1813.162314] __cancel_work_timer+0x131/0x1b0 [ 1813.162316] ?精确锁+0x11/0x20 [1813.162318]取消延迟工作同步+0x13/0x20 [1813.162320]磁盘块事件+0x78/0x80 [ 1813.162321] __blkdev_get + 0x69/0x4c0 [ 1813.162323] ? __follow_mount_rcu.isra.26+0x6e/0xf0 [1813.162324]blkdev_get + 0x129/0x320 [ 1813.162326] blkdev_open + 0x95/0xf0 [1813.162328]do_dentry_open+0x1c2/0x310 [1813.162329]?__inode_permission+0x5b/0x160 [ 1813.162330] ?bd_获取+0xd0/0xd0 [ 1813.162332] vfs_open+0x4f/0x80 [1813.162333]路径打开+0x66e/0x1770 [ 1813.162335] ?文件名查找+0xf2/0x190 [ 1813.162337] do_filp_open + 0x9b/0x110 [1813.162338]?__check_object_size+0xaf/0x1b0 [1813.162341]?__alloc_fd + 0x46/0x170 [ 1813.162342] do_sys_open + 0x1bb/0x2c0 [ 1813.162344] ?do_sys_open + 0x1bb/0x2c0 [1813.162345]?_cond_resched+0x19/0x40 [ 1813.162347] SyS_openat + 0x14/0x20 [1813.162349]do_syscall_64 + 0x73/0x130 [1813.162350]entry_SYSCALL_64_after_hwframe+0x3d/0xa2 [1813.162351] RIP:0033:0x7f253855bc8e [1813.162352] RSP:002b:00007fff359f6ed0 EFLAGS:00000246 ORIG_RAX:0000000000000101 [1813.162353] RAX:ffffffffffffffda RBX:0000557f50560590 RCX:00007f253855bc8e [1813.162354] RDX:0000000000080000 RSI:0000557f5049a650 RDI:00000000ffffff9c [1813.162355]RBP:0000557f504992b0 R08:0000000000000000 R09:0000000000000000 [1813.162356] R10:0000000000000000 R11:0000000000000246 R12:00007f2538a88944 [1813.162356] R13:00000000db611429 R14:0000000000000000 R15:00007f25388754c8 [1933.994414] 信息:任务 scsi_eh_3:20306 被阻止超过 120 秒。 [1933.994419] 受污染:P OE 4.15.0-29-通用#31-Ubuntu [ 1933.994421] “echo 0 > /proc/sys/kernel/hung_task_timeout_secs”禁用此消息。 [1933.994423] scsi_eh_3 D 0 20306 2 0x80000000 [ 1933.994429] 呼叫追踪: [ 1933.994441] __时间表+0x291/0x8a0 [1933.994444]时间表+0x2c/0x80 [ 1933.994446] schedule_preempt_disabled+0xe/0x10 [ 1933.994447] __mutex_lock.isra.2+0x18c/0x4d0 [1933.994449]?__switch_to_asm+0x40/0x70 [1933.994451]?__switch_to_asm+0x40/0x70 [1933.994453]?__switch_to_asm+0x34/0x70 [1933.994455] __mutex_lock_slowpath+0x13/0x20 [1933.994456]?__mutex_lock_slowpath+0x13/0x20 [1933.994458]互斥锁+0x2f/0x40 [1933.994463]设备重置+0x22/0x50 [usb_存储] [ 1933.994466] scsi_eh_ready_devs+0x333/0xbf0 [1933.994469]?__pm_runtime_resume+0x5b/0x80 [1933.994471]?scsi_try_target_重置+0x90/0x90 [ 1933.994473] scsi_error_handler+0x4c3/0x5b0 [1933.994476] k线程+0x121/0x140 [1933.994479]?scsi_eh_get_sense+0x200/0x200 [1933.994481]?kthread_create_worker_on_cpu+0x70/0x70 [1933.994483]从_fork+0x35/0x40返回 [ 2047.504998] perf:中断时间过长(2540 > 2500),将 kernel.perf_event_max_sample_rate 降低至 78500
任何帮助表示感谢
答案1
连接不牢,或者驱动器本身已损坏,无法读取或写入数据。如果拔下 USB 再重新插入不起作用,则可能是您的 USB 设备不再工作。您看到的挂起任务错误是由于计算机尝试从设备读取数据,失败并反复尝试而导致的。在执行此操作时,它会告诉请求数据的进程等待,因为它认为读取错误是暂时的并会自行解决。如果由于驱动器实际上有故障或损坏而导致此等待时间过长,则操作系统会认为任务已“挂起”,并输出错误。
设备仍显示为设备的原因是驱动器上的内部微控制器仍在工作。它正确地向计算机宣告自己,并正确地报告其大小和其他参数,但一旦尝试访问数据,就会失败。
这是 USB 闪存驱动器还是外部 USB 硬盘驱动器?如果是后者,您可以使用以下方法测试设备的运行状况智能工具。此包可用于指示驱动器进行自检以扫描问题。如果设备是闪存驱动器,则它将不起作用。