我观察到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
是数字,仅N
在12
或时有效。对于其他值,默认16
有效值为。仅选择 SCSI 命令的变体:12 字节或 16 字节。这使得这些尝试毫无意义。16
N
-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 控制器后面的磁盘。