Smartctl сообщает об идентичных результатах для двух накопителей в корпусе накопителя WD My Book Duo

548
Witiko

Я наблюдаю странное поведение 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 и выдает сводные результаты для обоих дисков одновременно. Есть ли какой-нибудь известный способ обойти это, кроме как избавиться от корпуса диска?

EDIT: Добавление содержания /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
Не могли бы вы включить ваш `/ etc / fstab`? Диски в RAID? Интересно, возникает ли проблема, потому что оба диска имеют одинаковый UUID, отличающийся только UUID_SUB, что вводит в заблуждение smartctl. Я знаю, что можно использовать tune2fs для назначения нового UUID, но я не знаю, рекомендуется ли это здесь. harrymc 5 лет назад 0
Я включил `/ etc / fstab` в соответствии с запросом, а также` / etc / mdadm / mdadm.conf`. Диски в программном RAID 1, доступны как `/ dev / md0`. Устройства `/ dev / sda` и` / dev / sdb` должны соответствовать двум физическим дискам WD Red. Witiko 5 лет назад 0
Я думаю, что вы на что-то со своим UUID, и замечания UUID_SUB, смотрите вывод `blkid`, который я добавил. Может ли это быть проблемой? Witiko 5 лет назад 0
RAID создает фактически один виртуальный диск. Попробуйте синтаксис `-d sat, 1` для слота 1. Мне немного неясно, начинаются ли номера слотов с 0 или 1. harrymc 5 лет назад 0
Я могу подтвердить неполадки в корпусах с мостами USB-SATA, касающиеся команд SMART: иногда команда ATA passthrough просто не работает должным образом. Очевидный способ выяснить, является ли это артефактом RAID или проблемой моста USB-SATA, состоит в том, чтобы временно отключить READ и посмотреть, работает ли тогда отправка команд SMART. Пакет `sg3-utils` может быть полезен для проверки команды ATA passthrough. dirkt 5 лет назад 0

2 ответа на вопрос

3
Kamil Maciorowski

Может быть, я нашел объяснение. Это не оптимистично для вас. Первоначально я собирался противостоять -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.

К сожалению, похоже, это так. Witiko 5 лет назад 0
2
harrymc

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:

image

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

@KamilMaciorowski В корпусе накопителя WD My Book Duo находятся два накопителя SATA WD Red, но сам корпус подключен к хосту через SCSI через USB. Таким образом, набор команд - перевод SCSI в ATA (SAT). Witiko 5 лет назад 0
@harrymc Ваша ссылка обсуждает аппаратные RAID. Мои два диска находятся в программном RAID, то есть `/ dev / sda` соответствует одному физическому устройству, подключенному через SAT. UUID файловой системы `/ dev / sda` идентичен UUID файловой системы` / dev / sdb`, поскольку суперблок файловой системы содержит информацию для Linux, позволяющую автоматически собирать два диска в массив. В отличие от аппаратного RAID (MegaRAID), нет необходимости изменять набор команд (`-d`) с помощью программного RAID, и, кроме UUID файловой системы,` smartctl` не должен заботиться об этом. Witiko 5 лет назад 0
На самом деле, есть ли причина для smartctl вообще заботиться о UUID? UUID присваиваются файловым системам, я предположил, что smartctl работает на уровне блочных устройств. Witiko 5 лет назад 0
Я использовал `sat`, потому что вы это сделали,` megaraid` кажется более правильным, но другие значения все еще возможны. Различия в синтаксисе с версиями smartctl возможны, но возможность указывать слоты RAID все еще должна присутствовать. Я также обнаружил, что номера слотов начинаются с 0. Я думаю, что идентичные UUID являются лишь признаком членства в RAID, о котором заботится `smartctl` (конечно, такое поведение также может быть ошибкой). harrymc 5 лет назад 0
`sat` должно быть правильным значением, поскольку именно так корпус диска подключается к хосту. Witiko 5 лет назад 0
Каковы эффекты использования `sat, 0` или` megaraid, 0`? Также включите список `smartctl --scan` и данные о вашем RAID-контроллере в` / proc / devices`. Я взглянул на `man smartctl` (вероятно, не идентичный вашему) и увидел, что синтаксис` -d controller-type, node` доступен для многих типов контроллеров. harrymc 5 лет назад 0
`# sudo smartctl -d megaraid, 0 -a / dev / sdb` выдает« Smartctl open device: ошибка / dev / sdb [megaraid_disk_00]: невозможно открыть / dev / megaraid_sas_ioctl_node или / dev / megadev0 ». Задание `-d sat, 0` не похоже на` -d sat`; Страница man определяет только значения `-d sat, 12` и` -d sat, 16`. `# smartctl --scan` возвращает` # scan_smart_devices: glob (3) прервал сопоставление с шаблоном / dev / discs / disc * `. Witiko 5 лет назад 0
smartctl кажется немного разочаровывающим. Страница man определяет `megaraid, N`, а также синтаксис для nvme, usbjmicron, aacraid и других. Данные из `/ proc / devices` могут помочь найти тип вашего контроллера, чтобы увидеть, поддерживается ли он для этого синтаксиса. Старая информация о поддерживаемых RAID-контроллерах находится здесь [https://www.smartmontools.org/wiki/Supported_RAID-Controllers). harrymc 5 лет назад 0
В [FAQ говорится] (https://www.smartmontools.org/wiki/FAQ#CanImonitordisksbehindRAIDcontrollers): «Поддержка дисков за RAID-контроллерами сильно зависит как от платформы, так и от типа контроллера». harrymc 5 лет назад 0
Я добавил содержание `/ proc / devices` в исходный ответ. Witiko 5 лет назад 0
Я обновил свой ответ на основе этого файла. harrymc 5 лет назад 0
Как вы пришли к выводу, что `md` означает * устройство метадиска (RAID) *? Witiko 5 лет назад 0
Я искал [исходный код Linux: Documentation / devices.txt] (https://elixir.bootlin.com/linux/v3.4/source/Documentation/devices.txt) для всех типов устройств в вашем `/ proc / devices`, и только `md` был RAID-устройством. harrymc 5 лет назад 0
Но Метадиск не должен соответствовать реальному устройству. Он должен соответствовать программному RAID, предоставленному ядром Linux. Я не запускаю smartctl не на устройстве `md` (номер 9), а на устройствах` sd` (номер 8). Witiko 5 лет назад 0
Я не знаю, как программно-виртуальный RAID реализован внутри Linux. Вполне возможно, что у вас есть виртуальный MD и некоторые физические устройства SD. Эта теория рушится, если у вас есть физический контроллер Metadisk RAID на вашем компьютере, но я подумал, что для вас вряд ли будет доступен физический RAID, а вместо этого будет использоваться программный. harrymc 5 лет назад 0