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

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

现在我的外部驱动器没有任何错误,但我只是想手动检查以确保。
如下图所示,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] (local build)
    Copyright (C) 2002-14, Bruce Allen, Christian Franke,
    www.smartmontools.org
    
    Read Device Identity failed: scsi error unsupported field in scsi
    command
    
    === START OF INFORMATION SECTION ===
    Device Model:     [No Information Found]
    Serial Number:    [No Information Found]
    Firmware Version: [No Information Found]
    Device is:        Not in smartctl database [for details use: -P
    showall]
    ATA Version is:   [No Information Found]
    Local Time is:    Wed Jun 17 11:33:46 2015 IST
    SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 82-83 don't
    show if SMART supported.
    SMART support is: Ambiguous - ATA IDENTIFY DEVICE words 85-87 don't
    show if SMART is enabled.
    
    A mandatory SMART command failed: exiting. To continue, add one or
    more '-T permissive' options.
    

截屏

答案1

我也遇到了同样的问题。就我而言,SMART 在设备上运行多年,使用Ubuntu 12.04,然后在Ubuntu 14.04事情正如你在问题中所说的那样发生了。

该问题与引入的新内核模块有关Linux 内核 3.15称为uas(USB 连接 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

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 设备,它会知道不要使用,从而使 SMART 正常工作。插入 USB 设备时,uas您将看到类似以下几行:dmesg

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

接下来,重新生成初始 ramdisk:

mkinitcpio -p linux

或者,在较新的 Ubuntu 版本上:

sudo update-initramfs -u

最后,重新启动计算机。


编辑:可以在此处找到有关该问题的更多背景信息以及无需禁用 uas(其吞吐量比 usb-storage 更好)的另一种解决方法:https://www.smartmontools.org/ticket/971#comment:12

似乎内核SAT ATA PASS-THROUGH在 uas 模式下运行时在某些设备上被列入黑名单,因为它们的固件已损坏。

因此,可以使用我在答案中提到的先前方法来禁用黑名单(风险自负),但u要从怪癖中删除最后一个,即:

quirks=VendorId:ProductId:

但请注意,我尚未测试过这种方法。

答案2

外部驱动器(我猜是通过 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命令中。

答案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.

希望这可以帮助!

答案4

检查表格支持的 USB 设备...

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

有特定的开关用于某些USB 桥接器-lsusb可能会显示具体的名称。如果桥接控制器可能有错误的实现 - 只需尝试通过 SATA 而不是 USB 将其本地连接。

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

相关内容