无法在外部硬盘驱动器上执行SMART数据和自检


13

现在,我的外部驱动器没有任何错误,但我只想手动检查以确保。
如下图所示,SMART数据和自测的选项显示为灰色。另请参阅映像本身中有关硬盘驱动器的详细信息。

  1. 我尝试运行,gksu gnome-disks但该选项仍显示为灰色。
  2. 我跑了sudo smartctl --all /dev/sdb --test=short -T permissive我得到这个错误:

smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.19.0-15-generic](本地版本)版权所有(C)2002-14,Bruce Allen,Christian Franke,www.smartmontools.org

读取设备身份失败:scsi命令中不支持scsi错误字段

===信息部分===

设备型号:[未找到信息]

序列号:[找不到信息]

固件版本:[未找到信息]

设备为:不在smartctl数据库中[有关详细信息,请使用:-P showall]

ATA版本为:[找不到信息]

当地时间是:2015年6月17日星期三11:33:46

SMART支持为:模糊-ATA IDENTIFY DEVICE字词82-83不显示是否支持SMART。

SMART支持为:模糊-ATA IDENTIFY DEVICE字样85-87不显示是否启用了SMART。

强制性SMART命令失败:正在退出。要继续,请添加一个或多个“ -T允许”选项。

在此处输入图片说明


这里同样的问题。我可以添加它在Ubuntu 14.04中发生,但在Ubuntu 12.04中则不会,在GUI和命令行都可以正确读取SMART的情况下。有任何想法吗?
2015年

1
找到了解决方案,请参阅我的答案
Alvaro Gutierrez Perez 2015年

Answers:


13

我有同样的问题。就我而言,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设备。然后,删除uasusb-storage模块:

sudo modprobe -r uas
sudo modprobe -r usb-storage

然后,usb-storage使用参数告诉模块不要将其uas用于给定设备,以加载模块:

sudo modprobe usb-storage quirks=VendorId:ProductId:u

VendorIdProductId必须替换为您的设备供应商和产品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:

但是请注意,我尚未测试此方法。


我正在将Ubuntu 15.10与Linux内核4.2配合使用,我按照您说的做了,但我对它不起作用
Edward Torvalds

@edwardtorvalds是GUI不起作用,还是smartctl?就我而言,GUI仍然是灰色的(我还没有重启),但是smartctl可以工作。
2015年

2
16.04中没有mkinitcpio。现在不是“ sudo update-initramfs -u”吗?
filofel

1
好答案!我能够访问Seagate USB驱动器并从中获取所有smartctl数据。我确实尝试过删除u该驱动器并在那里进行了编辑,但是不幸的是,该驱动器挂起了,所以我无法获取任何SMART数据,并且启动时间很慢。但是,我又添加了u,效果很好。
Terrance

1
对于多个而言,它看起来像:quirks=0bc2:ab24:u,0bc2:ac30:u
Tom Hale

6

外部驱动器(我想通过USB)在使用SMART时比较棘手。有些根本不起作用。该smartmontools人贴开关添加到带命令行的硬盘驱动器的列表smartctl(见第五列)。


特别是对于Seagate Expansion驱动器,您似乎需要-d sat-d sat,12。请尝试以下操作:

sudo smartctl -d sat --all /dev/sdb
sudo smartctl -d sat,12 --all /dev/sdb

如果其中一项有效,它将告诉您-d要添加到smartctl命令中的哪个开关。


两者都给了我错误链接
Edward Torvalds 2015年

外部硬盘的名称是:Seagate Expansion External。它似乎受到支持,但选项仍然出错
Edward Torvalds

3

只是更新,我补充了阿尔瓦罗的答案

刚刚在Ubuntu 18.04中针对外部Seagate驱动器进行了测试,但我根本无法smartctl读取该驱动器。确实需要重新启动,因为我不想落后于系统并弄乱USB连接。

首先运行lsusb并获得了我所有的驱动器信息:

terrance@terrance-ubuntu:~$ lsusb
Bus 006 Device 002: ID 0bc2:a0a4 Seagate RSS LLC Backup Plus Desktop Drive
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 1532:0118 Razer USA, Ltd 
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 003: ID 046d:c215 Logitech, Inc. Extreme 3D Pro
Bus 003 Device 002: ID 1532:005b Razer USA, Ltd 
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

如您所见,我的驱动器中有名称Seagate,所以我要做的就是运行以下行以将信息添加到/etc/modprode.d/ignore_uas.conf文件中:

echo options usb-storage quirks=$(lsusb | awk '/Seagate/ {print $6}'):u | sudo tee -a /etc/modprobe.d/ignore_uas.conf

只要记住Seagate用驱动器的名称替换即可。现在,当我查看时,/etc/modprode.d/ignore_uas.conf它显示为:

~$ cat /etc/modprobe.d/ignore_uas.conf 
options usb-storage quirks=0bc2:a0a4:u

然后只需运行update-initramfs以使更改永久生效:

sudo update-initramfs -u

然后重新启动系统。现在,smartctl能够读取我的外部驱动器。

$ sudo smartctl -a /dev/sdf
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-43-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.14 (AF)
Device Model:     ST3000DM001-1E6166
Serial Number:    W1F3DNG2
LU WWN Device Id: 5 000c50 06a323610
Firmware Version: SC47
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Fri Jan 11 23:07:43 2019 MST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (  592) seconds.
Offline data collection
capabilities:            (0x73) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   1) minutes.
Extended self-test routine
recommended polling time:    ( 336) minutes.
Conveyance self-test routine
recommended polling time:    (   2) minutes.
SCT capabilities:          (0x3081) SCT Status supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   108   099   006    Pre-fail  Always       -       19766104
  3 Spin_Up_Time            0x0003   094   091   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   097   097   020    Old_age   Always       -       3944
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   052   048   030    Pre-fail  Always       -       231936780154
  9 Power_On_Hours          0x0032   058   058   000    Old_age   Always       -       36793
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   097   097   020    Old_age   Always       -       3942
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   092   000    Old_age   Always       -       894 897 1362
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   056   039   045    Old_age   Always   In_the_past 44 (Min/Max 44/44 #237)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   099   099   000    Old_age   Always       -       3909
193 Load_Cycle_Count        0x0032   020   020   000    Old_age   Always       -       161838
194 Temperature_Celsius     0x0022   044   061   000    Old_age   Always       -       44 (0 13 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       8558h+07m+38.053s
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       14574986552
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       18776308038

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

希望这可以帮助!


更改之后,我的驱动器将不再挂载。为什么呢
菲利普·德尔泰伊

@PhilippeDelteil我从未听说过导致驱动器无法正确安装的情况。如果在中看到驱动器,则可以尝试askubuntu.com/a/952275/231142设置一个更永久的驱动器gnome-disks
Terrance

3

我连接了两个希捷驱动器,因此我将@Terrance命令修改为:

echo "options usb-storage quirks=$(lsusb | awk '/Seagate/ {print $6":u"}' | tr '\n' ',' | head -c-1)" | sudo tee -a /etc/modprobe.d/ignore_uas.conf

可以为多个元素提供正确的分隔符(和标志重复):

options usb-storage quirks=0bc2:3320:u,0bc2:2323:u

用','替换'newline'字符可能不是最优雅的方式(要求使用来删除多余的分隔符head),但似乎可行。

然后:

sudo update-initramfs -u

然后按照原始答案重新启动。


好发现!在我测试我的时候,我没有考虑过多个驱动器。我真的很喜欢这个!+1
Terrance

1

使用支持的USB设备检查表...

开关-d sat表明它应该是带有SATA端口的驱动器。

某些USB桥接器有特定的开关- lsusb可能会显示具体名称。如果网桥控制器的实现方式不佳-只需尝试通过SATA而不是USB本地连接即可。

SCSI和ATA(根据shell输出)可能不是您想要的:)


我使用的是HDD随附的电缆。您可能想看到这些错误:链接
Edward Torvalds 2015年

外部硬盘的名称是:Seagate Expansion External。它似乎受到支持,但选项仍然出错
Edward Torvalds

@edwardtorvalds有两个基本的先决条件...在BIOS / UEFI中为端口启用SMART(如果适用),并在尝试读取它之前通过软件启用它... smartctl -T permissive --smart=on /dev/sdb(日志看上去像是在说话)到错误的端口)
Martin Zeitler

没有启动选项,我尝试了上面的命令,但出现此错误
Edward Torvalds

@edwardtorvalds似乎仍在发送SCSI命令... -d sat开关丢失了smartctl -d sat -T permissive --smart=on /dev/sdb...正如我上面所写的,lsusb应该列出它是哪个桥。
Martin Zeitler
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.