Smartctl relata resultados idênticos para duas unidades em um gabinete de unidade WD My Book Duo

2

Estou observando um comportamento estranho de smartctl com duas unidades WD Red 3TiB inseridas em um gabinete de unidade WD My Book Duo e conectadas ao computador via USB. Ou seja, executar um teste em uma das unidades também inicia um teste na outra unidade:

$ 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

Isso me leva a acreditar que o gabinete da unidade intercepta os comandos SMART e reporta resultados agregados para ambas as unidades simultaneamente. Existe alguma maneira conhecida de contornar isso além de se livrar do compartimento da unidade?

EDITAR: Adicionando o conteúdo de /etc/fstab , /etc/mdadm/mdadm.conf e a saída de blkid(8) conforme solicitado nos comentários:

$ 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"

EDIT2: Adicionando o conteúdo de /proc/devices conforme solicitado nos comentários da resposta do @ 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
    
por Witiko 06.05.2018 / 16:20

2 respostas

3

Talvez eu tenha encontrado a explicação. Não é otimista para você. Originalmente eu estava indo para contrariar a abordagem -d sat,0 (porque eu acho que não pode resolver o problema), escrevendo alguns comentários longos para resposta de harrymc . Depois que estudei o código-fonte de smartmontools , decidi fazer de minhas conclusões uma resposta separada.

Eu baixei smartmontools-6.7-0-20180419-r4731.src .tar.gz . Eu não sou bom em ler código, ainda o que eu li (principalmente em scsiata.cpp ) indica que -d sat,N , onde N é um número, tem efeito apenas para N sendo 12 ou 16 . Para outros valores, o valor efetivo é 16 por padrão. N escolhe apenas uma variante dos comandos SCSI: 12 bytes ou 16 bytes. Isso faz com que essas tentativas com -d sat,0 fútil.

O código corresponde a man 8 smartctl que diz:

-d TYPE, --device=TYPE

sat[,auto][,N] - the device type is SCSI to ATA Translation (SAT). This is for ATA disks that have a SCSI to ATA Translation Layer (SATL) between the disk and the operating system. SAT defines two ATA PASS THROUGH SCSI commands, one 12 bytes long and the other 16 bytes long. The default is the 16 byte variant which can be overridden with either -d sat,12 or -d sat,16.

No entanto, a parte mais interessante é esse comentário (no final do bloco de comentários inicial em scsiata.cpp , ênfase minha):

With more transports "hiding" SATA disks (and other S-ATAPI devices) behind a SCSI command set, accessing special features like SMART information becomes a challenge. The SAT standard offers ATA PASS THROUGH commands for special usages. Note that the SAT layer may be inside a generic OS layer (e.g. libata in linux), in a host adapter (HA or HBA) firmware, or somewhere on the interconnect between the host computer and the SATA devices (e.g. a RAID made of SATA disks and the RAID talks "SCSI" to the host computer). Note that in the latter case, this code does not solve the addressing issue (i.e. which SATA disk to address behind the logical SCSI (RAID) interface).

Eu acho que tecnicamente seu WD My Book Duo é um RAID feito de discos SATA que fala "SCSI" para o computador host , mesmo se você usar o modo JBOD e permitir seu computador para ver dois discos separados. O comentário acima explica a sua experiência.

Eu gostaria que alguém encontrasse uma abordagem de trabalho para você. Por enquanto eu não esperaria muito de smartctl (mas talvez alguém me provará errado). Como último recurso, você pode separar fisicamente um dos discos do WD My Book Duo e executar o (s) teste (s) SMART no outro disco. Como sua configuração é RAID de software, acredito que você possa mover temporariamente um disco para outro compartimento para mantê-lo operacional e não interferirá no RAID.

    
por 13.05.2018 / 11:09
2

O Smartctl funciona como esperado, desde que o dispositivo /dev/sda corresponda a um disco rígido físico. No entanto, o RAID une vários discos físicos logicamente juntos em um disco virtual. Isso pode ser visto pelo fato de que blkid mostra os dois discos como compartilhando um UUID e diferindo apenas por UUID_SUB.

Para o RAID, o smartctl trata /dev/sda como uma abreviação para todo o disco virtual que é o array RAID. Ainda pode dar os detalhes para um disco, mas precisa ser informado sobre a configuração RAID - a tecnologia, o slot que abriga o disco físico, e o dispositivo Linux correspondente ao disco virtual.

A sintaxe para se referir ao primeiro slot / disco:

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

E, da mesma forma, para o segundo slot / disco:

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

Em relação ao tipo de controlador, o smartmontools FAQ diz :

Can I monitor disks behind RAID controllers?

Support for disks behind RAID controllers is highly dependent on both platform and controller type. See our page about smartmontools RAID controller support for the details.

Os tipos suportados no wiki do smartmontools são:

Do seu arquivo /proc/devices , parece que o seu controlador é o Dispositivo Metadisk (RAID) (md), que não é suportado pelo smartctl. Então smartctl não pode ser usado no seu computador para monitorar os discos por trás seu controlador RAID.

    
por 12.05.2018 / 20:54