Smartctl 报告 WD My Book Duo 驱动器外壳中两个驱动器的相同结果

Smartctl 报告 WD My Book Duo 驱动器外壳中两个驱动器的相同结果

我观察到smartctl将两个 WD Red 3TiB 硬盘插入 WD My Book Duo 硬盘盒并通过 USB 连接到计算机时出现了奇怪的行为。也就是说,在其中一个硬盘上运行测试也会启动另一个硬盘上的测试:

$ blkid /dev/sda /dev/sdb
/dev/sda: UUID="7eca647d-ef1b-c354-3ab2-9c9a364a7303" UUID_SUB="5fca7ab9-2343-ca70-5d25-84739858c883" LABEL="wd:0" TYPE="linux_raid_member"
/dev/sdb: UUID="7eca647d-ef1b-c354-3ab2-9c9a364a7303" UUID_SUB="ef3895d7-ff13-0a89-91b9-a3f01a6744dc" LABEL="wd:0" TYPE="linux_raid_member"

# smartctl -d sat -t short /dev/sda
smartctl 6.6 2016-05-31 r4324 [armv6l-linux-4.9.80+] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Sun May  6 16:12:07 2018

Use smartctl -X to abort test.

# smartctl -d sat -a /dev/sda      
smartctl 6.6 2016-05-31 r4324 [armv6l-linux-4.9.80+] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Red
Device Model:     WDC WD30EFRX-68N32N0
Serial Number:    WD-WCC7K0HLK0TR
LU WWN Device Id: 5 0014ee 2b9c88d08
Firmware Version: 82.00A82
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5400 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sun May  6 16:10:16 2018 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

... snip

Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
... snip

# smartctl -d sat -a /dev/sdb
smartctl 6.6 2016-05-31 r4324 [armv6l-linux-4.9.80+] (local build)

... snip

Self-test execution status:      ( 249) Self-test routine in progress...
                                        70% of test remaining.
... snip

这让我相信驱动器外壳会拦截 SMART 命令并同时报告两个驱动器的汇总结果。除了拆除驱动器外壳外,还有其他已知的方法可以规避这种情况吗?

编辑:按照评论中的要求添加/etc/fstab、的内容/etc/mdadm/mdadm.conf和 的输出:blkid(8)

$ cat /etc/fstab 
proc                  /proc  proc    defaults                       0       0
PARTUUID=5cb553c4-01  /boot  vfat    defaults                       0       2
PARTUUID=5cb553c4-02  /      ext4    defaults,noatime               0       1
/dev/md0              /mnt   btrfs   relatime,compress,autodefrag   0       0

$ cat /etc/mdadm/mdadm.conf 
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# This configuration was auto-generated on Sat, 21 Apr 2018 13:55:00 +0200 by mkconf
ARRAY /dev/md0 metadata=1.2 name=inspiron:0 UUID=7eca647d:ef1bc354:3ab29c9a:364a7303

$ blkid
/dev/mmcblk0p1: LABEL="boot" UUID="5DB0-971B" TYPE="vfat" PARTUUID="5cb553c4-01"             
/dev/mmcblk0p2: LABEL="rootfs" UUID="060b57a8-62bd-4d48-a471-0d28466d1fbb" TYPE="ext4" PARTUUID="5cb553c4-02"                                                                             
/dev/sda: UUID="7eca647d-ef1b-c354-3ab2-9c9a364a7303" UUID_SUB="5fca7ab9-2343-ca70-5d25-84739858c883" LABEL="inspiron:0" TYPE="linux_raid_member"                                         
/dev/sdb: UUID="7eca647d-ef1b-c354-3ab2-9c9a364a7303" UUID_SUB="ef3895d7-ff13-0a89-91b9-a3f01a6744dc" LABEL="inspiron:0" TYPE="linux_raid_member"

编辑2:/proc/devices添加@harrymc 的答案的评论中要求的内容:

$ cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  5 ttyprintk
  7 vcs
 10 misc
 13 input
 14 sound
 21 sg
 29 fb
116 alsa
128 ptm
136 pts
162 raw
180 usb
189 usb_device
204 ttyAMA
244 bcm2835-gpiomem
245 uio
246 vcsm
247 vchiq
248 hidraw
249 vcio
250 vc-mem
251 bsg
252 watchdog
253 rtc
254 gpiochip

Block devices:
  1 ramdisk
259 blkext
  7 loop
  8 sd
  9 md
 65 sd
 66 sd
 67 sd
 68 sd
 69 sd
 70 sd
 71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
179 mmc
253 device-mapper
254 mdp

答案1

也许我已经找到了解释。这对你来说并不乐观。最初我打算-d sat,0通过写几条长评论来反驳这种方法(因为我认为它不能解决问题)。harrymc 的回答。在我研究了的源代码之后smartmontools我决定将我的结论作为一个单独的答案。

我下载了smartmontools-6.7-0-20180419-r4731.src.tar.gz。我不擅长阅读代码,但我读到的(主要是scsiata.cpp)表明-d sat,N,其中N是数字,仅N12或时有效。对于其他值,默认16有效值为。仅选择 SCSI 命令的变体:12 字节或 16 字节。这使得这些尝试毫无意义。16N-d sat,0

代码对应man 8 smartctl其中写道:

-d TYPE--device=TYPE

sat[,auto][,N]- 设备类型为 SCSI 到 ATA 转换 (SAT)。这适用于在磁盘和操作系统之间具有 SCSI 到 ATA 转换层 (SATL) 的 ATA 磁盘。SAT 定义了两个 ATA PASS THROUGH SCSI 命令,一个长 12 字节,另一个长 16 字节。默认值为 16 字节变体,可以使用 或-d sat,12覆盖-d sat,16

然而最有趣的部分是这个评论(它位于scsiata.cpp(重点是我的):

随着越来越多的传输将 SATA 磁盘(和其他 S-ATAPI 设备)“隐藏”在 SCSI 命令集后面,访问 SMART 信息等特殊功能成为一项挑战。SAT 标准提供 ATA PASS THROUGH 命令用于特殊用途。请注意,SAT 层可能位于通用操作系统层(例如 Linux 中的 libata)内、主机适配器(HA 或 HBA)固件中,或主机计算机与 SATA 设备之间的互连上的某个位置(例如由 SATA 磁盘组成的 RAID,该 RAID 与主机计算机进行“SCSI”通信)。请注意,在后一种情况下,此代码不能解决寻址问题(即,在逻辑 SCSI(RAID)接口后面寻址哪个 SATA 磁盘)。

我认为从技术上讲你的 WD My Book Duo 是由 SATA 磁盘组成的 RAID与主机对话“SCSI”,即使您使用 JBOD 模式并允许您的计算机查看两个单独的磁盘。上面的评论有点解释了您的经历。

我希望有人能找到一种可行的方法。目前我对此不抱太大希望smartctl(但也许有人会证明我错了)。作为最后的手段,您可以从 WD My Book Duo 中物理分离其中一个磁盘,然后在另一个磁盘上运行 SMART 测试。由于您的设置是软件 RAID,我认为您可以暂时将一个磁盘移动到另一个机箱以保持其正常运行,并且不会干扰 RAID。

答案2

只要设备/dev/sda对应一个物理硬盘,Smartctl 就能正常工作。但是,RAID 会将多个物理磁盘在逻辑上合并为一个虚拟磁盘。这可以从blkid 两个磁盘共享一个 UUID 且仅 UUID_SUB 不同这一事实中看出。

对于 RAID,smartctl 可将其/dev/sda视为整个虚拟磁盘(即 RAID 阵列)的简写。它仍然可以给出一个磁盘的详细信息,但需要告知 RAID 设置 - 技术、容纳物理磁盘的插槽以及与虚拟磁盘对应的 Linux 设备。

引用第一个插槽/磁盘的语法:

smartctl -d <controller-type>,0 -t short /dev/sda

对于第二个插槽/磁盘也类似:

smartctl -d <controller-type>,1 -t short /dev/sda

关于控制器类型,请参阅smartmontools FAQ

我可以监控 RAID 控制器后面的磁盘吗?

对 RAID 控制器后面的磁盘的支持高度依赖于平台和控制器类型。请参阅我们的页面 smartmontools RAID 控制器支持 了解详情。

smartmontools wiki 支持的类型有:

图像

从你的/proc/devices文件来看,你的控制器似乎是 元磁盘 (RAID) 设备(md),smartctl 不支持此功能。因此,smartctl 无法在您的计算机上用于监控 RAID 控制器后面的磁盘。

相关内容