Eli*_*gan 12 usb mount storage hard-drive external-hdd
我有一个外部 USB 硬盘驱动器,由Rosewill RX35-AT-SU SLV 铝制 3.5" 银色 USB 2.0 外置机箱中的 1 TB SATA 驱动器组成,插入我的SONY VAIO VGN-NS310F 笔记本电脑。它直接插入计算机(不是通过集线器)。机箱内的驱动器是 7200 rpm 西部数据,但我不记得确切的型号。如果人们认为有必要了解详细信息,我可以(再次)从机箱中卸下驱动器.
驱动器格式化为 ext4。我udisks在 Lubuntu 11.10 系统上动态安装它,通常通过 PCManFM 自动安装。(我在这台机器上安装了 Lubuntu 12.04,并且也经历了所有相同的行为。)每隔一段时间 - 每天一两次 - 它变得无法访问,并且难以卸载。尝试卸载它sudo umount ...会给出一条错误消息,指出驱动器正在使用中,并建议fuser并lsof找出正在使用它的内容。发现杀进程使用该驱动器与fuser和lsof有时足以让我卸载它,但通常并非如此。
卸载驱动器或重新启动机器后,驱动器将不会安装。插入驱动器并打开它在计算机上没有任何记录。dmesg不变。驱动器的访问指示灯通常会剧烈闪烁,就好像驱动器一直在被访问一样。然后最终,在我将驱动器关闭一段时间(半小时)后,我能够再次安装它。
虽然驱动器在这台机器上暂时无法工作,但它会立即在另一台运行相同版本 Ubuntu 的机器上工作。有时从另一台机器上拿回来似乎可以“修复”它。有时不会。
在无法安装之前,驱动器并不总是在安装时停止访问。有时它工作正常,我关闭计算机,然后重新打开计算机,但无法安装驱动器。
目前这是我遇到此问题的唯一驱动器,但我认为在不同的 Ubuntu 机器上使用不同的驱动器时,我遇到的问题与此相同。这台笔记本电脑有另一个定期插入的外部 USB 驱动器,它没有这个问题。在插入“问题”驱动器之前拔下该驱动器并不能解决问题。
我已经打开驱动器并确保过去连接紧密,但这似乎没有帮助(在尝试重新安装之前等待打开和关闭驱动器所需的时间相同它)。
有没有人对可能导致此问题的原因,我应该执行哪些故障排除步骤和/或我如何完全解决此问题有任何想法?
更新:我尝试更换 USB 数据线(从外壳到笔记本电脑),正如梅林建议的那样。我早就应该尝试过,因为它完全符合症状(驱动器在另一台机器上工作,这是有道理的,因为电缆会以不同的角度弯曲,可能会形成一条磨损的电线电路)。不幸的是,这并没有帮助——我对新电缆有同样的问题。我将尝试提供有关机箱内驱动器的其他详细信息,下次我可以使驱动器正常工作。(目前我没有另一台机器可以连接它。)
驱动器似乎已经大大恶化。我认为是这样,因为我已经将它附加到另一台机器上,并在从中复制文件时遇到了很多关于无效字符的错误。我对从驱动器中恢复数据的兴趣不大,而对弄清楚它有什么问题更感兴趣。我特别想弄清楚问题是驱动器还是机箱。
现在,当我将驱动器插入出现问题的原始机器时,它仍然没有出现(包括sudo fdisk -l),但它被内核识别并且消息被添加到dmesg. 大多数消息包含这样的错误,重复多次:
[ 7.707593] sd 5:0:0:0: [sdc] Unhandled sense code
[ 7.707599] sd 5:0:0:0: [sdc] Result: hostbyte=invalid driverbyte=DRIVER_SENSE
[ 7.707606] sd 5:0:0:0: [sdc] Sense Key : Medium Error [current]
[ 7.707614] sd 5:0:0:0: [sdc] Add. Sense: Unrecovered read error
[ 7.707621] sd 5:0:0:0: [sdc] CDB: Read(10): 28 00 00 00 00 00 00 00 08 00
[ 7.707636] end_request: critical target error, dev sdc, sector 0
[ 7.707641] Buffer I/O error on device sdc, logical block 0
Run Code Online (Sandbox Code Playgroud)
/dev/sdb. 该驱动器工作正常。坏的驱动器是/dev/sdc。我只是不想从中间编辑任何东西。要确定问题是驱动器还是机柜问题,请从机柜中取出驱动器,将其安装在具有足够电源的桌面上,然后检查智能状态。
要进行更深入的测试,您可以使用诸如ddrescue. ddrescue在此过程中将报告错误大小,您可以同时尝试数据恢复,如下所示:sudo ddrescue /dev/sdb2 /path/to/recovery.image logfile。sudo lsblk使用或 classic列出分区fdisk -l。
如果您确实对数据不感兴趣,您可以强制输出文件如下/dev/null:
sudo ddrescue --force /dev/sdc /dev/null logfile
Run Code Online (Sandbox Code Playgroud)
您仍然会在标准输出上收到有关任何错误大小的报告
在 Ubuntu 14.04 上使用 GNU ddrescue 1.17 进行测试,如下所示,在这个简短的示例中使用 /dev/sdb2 (一个 1MB 交换分区)
$ sudo ddrescue --force /dev/sdb2 /dev/null logfile
GNU ddrescue 1.17
Press Ctrl-C to interrupt
rescued: 1024 B, errsize: 0 B, current rate: 1024 B/s
ipos: 0 B, errors: 0, average rate: 1024 B/s
opos: 0 B, time since last successful read: 0 s
Run Code Online (Sandbox Code Playgroud)