2

Я наблюдаю странное поведение 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

2 ответа2

3

Может быть, я нашел объяснение. Это не оптимистично для вас. Первоначально я собирался противостоять подходу -d sat,0 (потому что я думаю, что он не может решить проблему), написав несколько длинных комментариев к ответу harrymc. После изучения исходного кода smartmontools я решил сделать свои выводы отдельным ответом.

Я скачал smartmontools-6.7-0-20180419-r4731.src.tar.gz. Я плохо разбираюсь в коде, но то, что я читаю (в основном в scsiata.cpp), указывает на то, что -d sat,N , где N - число, вступает в силу только для N равного 12 или 16 . Для других значений эффективное значение по умолчанию равно 16 . N выбирает только вариант команд SCSI: 12-байтовый или 16-байтовый. Это делает эти попытки с -d sat,0 бесполезными.

Код соответствует man 8 smartctl который говорит:

-d TYPE , --device=TYPE

sat[,auto][,N] - тип устройства - перевод SCSI в ATA (SAT). Это для дисков ATA, которые имеют уровень перевода SCSI в ATA (SATL) между диском и операционной системой. SAT определяет две команды ATSI PASS THROUGH SCSI, одна длиной 12 байтов, а другая длиной 16 байтов. По умолчанию используется 16-байтовый вариант, который можно переопределить с помощью -d sat,12 или -d sat,16 .

Однако самая интересная часть - это комментарий (он находится в конце начального блока комментариев в scsiata.cpp, выделено мое):

С большим количеством транспортов, "скрывающих" диски SATA (и другие устройства S-ATAPI) за набором команд SCSI, доступ к специальным функциям, таким как информация SMART, становится проблемой. Стандарт SAT предлагает команды ATA PASS THROUGH для специального использования. Обратите внимание, что уровень SAT может быть внутри общего уровня ОС (например, libata в linux), в микропрограмме хост-адаптера (HA или HBA) или где-то на межсоединении между главным компьютером и устройствами SATA (например, RAID-массив из SATA). диски и RAID говорит "SCSI" с хост-компьютером). Обратите внимание, что в последнем случае этот код не решает проблему адресации (т. Е. Какой диск SATA следует адресовать за логическим интерфейсом SCSI (RAID)).

Я думаю, что технически ваш WD My Book Duo - это RAID, сделанный из дисков SATA, который передает "SCSI" на хост-компьютер, даже если вы используете режим JBOD и позволяете вашему компьютеру видеть два отдельных диска. Приведенный выше комментарий как бы объясняет ваш опыт.

Я бы хотел, чтобы кто-то нашел для вас подход к работе. Пока я бы не ожидал многого от smartctl хотя (но, возможно, кто-то докажет, что я не прав). В качестве последнего средства вы можете физически отсоединить один из дисков от WD My Book Duo и запустить тесты SMART на другом диске. Поскольку ваша установка представляет собой программный RAID, я думаю, что вы можете временно переместить один диск на другой корпус, чтобы он работал и не мешал RAID.

2

Smartctl работает должным образом, если устройство /dev/sda соответствует одному физическому жесткому диску. Однако 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

Что касается типа контроллера, то в FAQ по smartmontools сказано :

Могу ли я отслеживать диски за RAID-контроллерами?

Поддержка дисков за RAID-контроллерами сильно зависит как от платформы, так и от типа контроллера. Подробности смотрите на нашей странице о поддержке RAID-контроллера smartmontools .

Поддерживаемые типы из вики Smartmontools:

образ

Из вашего файла /proc/devices кажется, что вашим контроллером является устройство метадиска (RAID) (md), которое не поддерживается smartctl. Таким образом, smartctl не может использоваться на вашем компьютере для мониторинга дисков за вашим RAID-контроллером.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .