我有同样的问题。就我而言,SMART在使用Ubuntu 12.04的情况下已经在设备上正常工作了多年,然后在Ubuntu 14.04下它确实发生了您所提问题。
该问题与Linux内核3.15中引入的新内核模块有关,该模块称为uas
(USB Attached SCSI)(请参阅发行公告)。
该模块现在负责管理USB大容量存储设备。有一个线程,人们抱怨说,uas
在内核3.15是造成其USB设备出现故障。另一个人说,这可能是SMART问题的原因。
幸运的是,这些问题似乎在内核3.19(我正在使用)上消失了,因为可以正确检测到我的设备。仅存在SMART问题。
要修复此问题,您需要uas
针对给定的设备禁用模块的使用。
禁用uas
而不重启
首先,拔出所有可能正在使用它的USB设备。然后,删除uas
和usb-storage
模块:
sudo modprobe -r uas
sudo modprobe -r usb-storage
然后,usb-storage
使用参数告诉模块不要将其uas
用于给定设备,以加载模块:
sudo modprobe usb-storage quirks=VendorId:ProductId:u
VendorId
且ProductId
必须替换为您的设备供应商和产品ID,可以通过lsusb
命令获取(它们是后面的字符ID
)。
例如,我有以下设备:
Bus 002 Device 011: ID 0bc2:3320 Seagate RSS LLC SRD00F2 [Expansion Desktop Drive]
所以我的供应商ID是0bc2
,我的产品ID是3320
。我的命令是:
sudo modprobe usb-storage quirks=0bc2:3320:u
最后一个u
告诉usb-storage
忽略uas
该设备(请参阅参考资料)。
此时,您可以插入USB设备,它将知道不使用USB设备uas
,从而使SMART正常工作。dmesg
插入USB设备时,您会看到类似以下的行:
usb 2-2: UAS is blacklisted for this device, using usb-storage instead
usb-storage 2-2:1.0: USB Mass Storage device detected
usb-storage 2-2:1.0: Quirks match for vid 0bc2 pid 3320: 800000
scsi host12: usb-storage 2-2:1.0
使更改永久生效
直到您重新引导系统,上一次的怪癖才会持续。为了使其持久,您需要按照此处描述的步骤进行操作,我在下面进行了复制:
首先,ignore_uas.conf
在/etc/modprobe.d/
目录中创建一个包含以下内容的文件:
options usb-storage quirks=VendorId:ProductId:u
与以前一样,用VendorId
并替换ProductId
为您的设备供应商和从获得的产品ID lsusb
。
接下来,重新生成您的初始虚拟磁盘:
mkinitcpio -p linux
或者,在较新的Ubuntu版本上:
sudo update-initramfs -u
最后,重新启动计算机。
编辑:关于此问题的更多背景信息,以及在不禁用uas的情况下解决该问题的另一种方法(吞吐量比usb存储更好)可以在以下位置找到:https ://www.smartmontools.org/ticket/971#comment:12
SAT ATA PASS-THROUGH
在某些以uas模式运行的设备上,内核似乎已被列入黑名单,因为它们的固件已损坏。
因此,可以使用我在答案中提到的先前方法将黑名单禁用(后果自负),但可以u
从怪癖中删除最终列表,即:
quirks=VendorId:ProductId:
但是请注意,我尚未测试此方法。