我有同样的问题。就我而言,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:
但是请注意,我尚未测试此方法。