为什么我的外置USB硬盘有时完全无法访问?

我有一个外部USB硬盘驱动器,由一个1英寸SATA驱动器组成,配有一个Rosewill RX35-AT-SU SLV铝制3.5“silverlightUSB 2.0外置机箱 ,插入我的SONY VAIO VGN-NS310F笔记本电脑 。它直接插入电脑(不是通过集线器)。机箱内的驱动器是7200转的Western Digital,但我不记得确切的型号。如果人们认为有必要知道这个细节我可以从机箱中移除驱动器(再次) 。

驱动器格式为ext4。 我在我的Lubuntu 11.10系统上使用udisks动态安装它,通常通过PCManFM自动安装。 (我在这台机器上安装了Lubuntu 12.04,并且也经历了所有这些相同的行为。)每隔一段时间 – 每天一次或两次 – 它变得难以接近,并且难以卸下。 尝试使用sudo umount ...卸载它sudo umount ...会显示一条错误消息,指出驱动器正在使用中并建议使用fuserlsof查找正在使用它的内容。 发现使用带有fuserlsof的驱动器的杀戮过程有时足以让我卸下它,但通常不会。

卸载驱动器或重新启动计算机后,驱动器将无法装入。 插入驱动器并打开它会在计算机上注册任何内容。 dmesg没有变化。 驱动器的访问指示灯通常会强烈闪烁,就好像驱动器不断访问一样。 最后,在我关闭驱动器一段时间(半小时)后,我能够再次安装它。

虽然驱动器暂时无法在此计算机上运行,但它将立即在运行相同版本的Ubuntu的另一台计算机上运行。 有时从另一台机器上重新启动它似乎“修复”它。 有时它没有。

在安装之前,驱动器并不总是无法访问,然后才能变为无法安装有时它工作正常,我关闭电脑,我重新打开电脑,我无法安装驱动器。

目前这是我遇到这个问题的唯一驱动器,但是我遇到了一些问题,我认为在不同的Ubuntu机器上有不同的驱动器。 这台笔记本电脑定期插入另一个外置USB驱动器,没有这个问题。 在插入“问题”驱动器之前拔下该驱动器并不能解决问题。

我打开了驱动器并确保过去的连接很紧,这似乎没有帮助(只是等待打开和关闭驱动器所花费的相同时间,然后再尝试重新安装它)。

有没有人对可能导致这种情况的原因,我应该执行哪些故障排除步骤,和/或我如何完全解决这个问题有任何想法?

更新:我尝试更换USB数据线(从机箱到笔记本电脑),正如Merlin建议的那样。 我应该在很久以前尝试过,因为它完全符合这些症状(驱动器在另一台机器上工作,这是有意义的,因为电缆会以不同的角度弯曲,可能完成一个磨损的电线电路)。 不幸的是,这没有帮助 – 我对新电缆有同样的问题。 我将尝试提供有关机箱内驱动器的更多详细信息,下次我能够使驱动器正常工作。 (目前我还没有其他机器可以连接它。)

主要更新(2012年6月28日)

驱动器似乎已大大恶化。 我认为是这样的,因为我已经将它附加到另一台机器上,并且在从中复制文件时会收到很多关于无效字符的错误。 我对从驱动器恢复数据的兴趣不如我弄清楚它有什么问题。 我特别想知道问题是驱动器还是机箱。

现在,当我将驱动器插入我遇到问题的原始机器时,它仍然没有出现(包括使用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 

以下是dmesg所有行,从识别驱动器开始。 请注意:

  • 我回到这台机器上运行Lubuntu 12.04(也许这是更好的错误消息的一个因素)。
  • 现在驱动器已插入另一台机器并重新进入此机器,现在该机器又恢复运行12.04,驱动器的访问指示灯不会像我所描述的那样闪烁。 看看驱动器,它看起来好像工作正常,访问量很低或没有访问权限。
  • 在插入驱动器的情况下重新启动计算机时,以及手动插入驱动器时,会发生此行为(错误)。
  • 一些消息是关于/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 

并且你仍然会得到关于stdout上任何错误大小的报告

使用/ dev / sdb2(1MB交换分区)在这个简短的例子中使用GNU ddrescue 1.17在Ubuntu 14.04上进行了测试

 $ 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 

当我运行12.04 Ubuntu桌面时,我有类似的经历。 我的硬盘驱动器shell有2个电源选项,我可以购买一个空调适配器或使用1个mini usb连接普通usb电缆,或者使用mini usb电缆连接两根usb电缆。 理想情况下,它需要连接到两个USB端口以提供充足的电力。 它可以通过USB电缆或通过eSata传输数据。

当使用eSata连接时,我需要首先提供驱动器电源,以便磁盘旋转然后启动系统,以便BIOS可以识别已经旋转的磁盘。 否则它将无法及时看到磁盘。 我相信这与机箱的控制器有关。

当我安装USB时,我首先将电缆插入机箱,然后插入USB端口,结果非常复杂。 也许大概有一半的时间它会正确安装。 如果我首先将usb电缆插入PC端口然后再插入机箱中,那么我的结果会更好,大约70%。 我使用USB选项获得的最佳结果是使用外部电源(a / c适配器)作为机箱,以确保磁盘在我将其插入机器之前旋转和稳定。 工作差不多100%

并不是说这正是你的问题,但对我而言,它有助于提供机箱电源并在连接之前使磁盘旋转以使其读取为系统。 也许你的一个系统上的bios或总线速度比另一个更好,它给了机箱控制器在尝试读取磁盘之前开始工作的时间? 也许在机箱拔出后的一段时间内,控制器会重置?

也许控制器需要时间来决定它是从电源或电源和数据中获取电力。 也许是电压或安培问题? 无论如何,机箱控制器看起来很挑剔。

对于您的USB驱动器,请尝试以下步骤(如果您尚未执行此操作):

  1. sudo fdisk -l #get info
  2. sudo mkdir /media/external #create挂载点
  3. sudo mount -t vfat /dev/sdb1 /media/external -o uid=1000,gid=1000,utf8,dmask=027,fmask=137 #mount。

或者尝试使用pmount来安装USB。

我建议您的USB总线驱动芯片或类似产品也可能存在问题。 您是否有任何工具可以列出所有USB设备? 尝试在驱动器正常工作时以及驱动器无法访问时运行这些工具。 你看到有什么不同吗?

较旧(和更便宜)的驱动器经历一个称为“热重新校准”(TACL)的过程,该过程每小时左右发生一次,并且它们可能在几秒钟内无法访问,而驱动器估计磁盘头部因热量积聚而弯曲的程度在驱动器中。 在TCL期间,步进电机和线圈寻找每个轨道,并且头部在每个轨道上对齐,并且存储结果。 这是固件的内部function。 听起来这个过程要么卡住了,要么就是产生了错误的答案,这使得热重新校准后无法访问驱动器。

您从dmesg发布的错误表明sdc,扇区0,逻辑块0存在问题。这些低编号块通常包含驱动器的几何形状(即硬格式或软格式)。 如果这些块坏了,整个驱动器可能会永久无法访问。 媒体故障可能与热量有关,这可能解释了为什么一段时间不活动(将驱动器移动到另一台机器)有时会修复它,有时无法修复它。

要确定问题是否与热相关,请打开计算机并启动秒表,但不要真正使用驱动器 – 只需等待它失败,并记录失败所需的时间。 然后,关闭它并将其关闭几个小时以冷却,然后重新运行测试,打开计算机和驱动器,但启动一个巨大的数据密集型驱动器驱动器副本(相同的驱动器)。 使用步进电机做更多工作可能会导致驱动器加热更快,并导致驱动器更快失效。 如果故障延迟有很大的变化,那么驱动器就是吐司,我会得到另一个。 祝好运!

很多时候这种类型的问题是由于USB电缆没有足够的电力传输到驱动器造成的,而且外部驱动器不是现成的,而是自组装的。 (您希望外部驱动器的制造商能够确保USB端口能够支持它。)

设备可以从USB 2.0规范中的端口抽取高达500 mA的电流,在USB 3.0中抽取高达900 mA的电流。 通过检查制造商的外部驱动器规格,您可以确认驱动器的最大功率要求。

问题通常可以通过尝试USB3端口(如果你有一个,你还没有尝试过)来解决,因为它们提供比USB2更多的电源,或者获得USB Y电缆,以便驱动器可以从2个端口而不是1个。这些在eBay或亚马逊上都很便宜。

虽然已经指出了问题的真正原因,但我想添加相同的答案,因为我有4个外置硬盘。

制造的任何计算机都假定电源将根据配置的规格使用,最多20%的过载

任何外部USB设备都必须从外接电源中心供电,以保护计算机的电源。 所描述的行为是功率过载的典型行为。 假设你还有一张外置DVD,这也会使你的录音失败,甚至可能使你的设备无法恢复,甚至你的电脑也无法恢复。 笔记本电脑通常以这种方式制动,因为用户倾向于使用无源USB集线器或计算机供电的设备,包括HDD,DVD等。

购买外部供电的USB集线器并通过有源USB端口连接USB设备 ,而不是从计算机的电源中耗尽电源,因为这种方法会比硬盘损坏更多。 电源浪涌与动力不足的计算机或外部设备大致相同。 USB标准与function不足的设备无关。 可以这样想:如果你想从汽车那里获得动力,你会用什么燃料? 任何燃烧的东西,或制造商指定的燃料? 这里完全一样。 使用UNPOWERED USB设备,从计算机的内部电源中断电。 它已经有足够的设备连接到它!