Smartctl meldet identische Ergebnisse für zwei Laufwerke in einem WD My Book Duo-Laufwerkgehäuse

630
Witiko

Ich beobachte ein merkwürdiges Verhalten von smartctlzwei WD Red 3TiB-Laufwerken, die in ein WD My Book Duo-Laufwerksgehäuse eingesetzt und über USB mit dem Computer verbunden sind. Das Ausführen eines Tests auf einem der Laufwerke startet nämlich auch einen Test auf dem anderen Laufwerk:

$ 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 

Dies lässt vermuten, dass das Laufwerkgehäuse die SMART-Befehle abfängt und zusammengefasste Ergebnisse für beide Laufwerke gleichzeitig meldet. Gibt es eine bekannte Möglichkeit, dieses Problem zu umgehen, als das Laufwerkgehäuse loszuwerden?

BEARBEITEN: Hinzufügen des Inhalts von /etc/fstab, /etc/mdadm/mdadm.confund der Ausgabe von blkid(8)wie in den Kommentaren angefordert:

$ 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: Hinzufügen des Inhalts /proc/deviceswie in den Kommentaren der Antwort von @ harrymc angefordert:

$ 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
Könnten Sie Ihre `/ etc / fstab` einbinden? Sind die Festplatten in einem RAID? Ich frage mich, ob das Problem dadurch entsteht, dass beide Festplatten dieselbe UUID haben, die sich nur durch UUID_SUB unterscheidet und somit smartctl verwirrt. Ich weiß, dass man mit tune2fs eine neue UUID zuweisen kann, aber ich weiß nicht, ob dies hier ratsam ist. harrymc vor 5 Jahren 0
Ich habe `/ etc / fstab` wie gewünscht hinzugefügt sowie` / etc / mdadm / mdadm.conf`. Die Festplatten befinden sich in Software-RAID 1 und sind als `/ dev / md0` verfügbar. Die Geräte "/ dev / sda" und "/ dev / sdb" sollten den beiden physischen WD Red-Laufwerken entsprechen. Witiko vor 5 Jahren 0
Ich denke, Sie sind auf etwas mit Ihrer UUID und UUID_SUB-Anmerkungen, siehe die Ausgabe von `blkid`, die ich hinzugefügt habe. Könnte dies das Problem sein? Witiko vor 5 Jahren 0
Das RAID erstellt praktisch eine virtuelle Festplatte. Versuchen Sie die Syntax von '-d sat, 1' für Slot 1. Ich bin ein bisschen unklar, ob die Slot-Nummern mit 0 oder 1 beginnen. harrymc vor 5 Jahren 0
Ich kann Probleme in Gehäusen mit USB-zu-SATA-Bridges bezüglich SMART-Befehlen bestätigen: Der ATA-Passthrough-Befehl funktioniert manchmal einfach nicht wie erwartet. Der naheliegendste Weg, um herauszufinden, ob es sich um ein RAID-Artefakt oder ein Problem der USB-zu-SATA-Bridge handelt, besteht darin, READ vorübergehend zu deaktivieren und zu prüfen, ob das Senden von SMART-Befehlen dann funktioniert. Das `sg3-utils`-Paket kann hilfreich sein, um den ATA-Passthrough-Befehl zu testen. dirkt vor 5 Jahren 0

2 Antworten auf die Frage

3
Kamil Maciorowski

Vielleicht habe ich die Erklärung gefunden. Es ist nicht optimistisch für dich. Ursprünglich wollte ich dem -d sat,0Ansatz entgegenwirken (weil ich denke, dass er das Problem nicht lösen kann), indem ich einige lange Kommentare zur Antwort von harrymc schrieb . Nachdem ich den Quellcode von studiert hatte, smartmontoolsentschied ich mich, meine Schlussfolgerungen zu einer separaten Antwort zu machen.

Ich habe smartmontools-6.7-0-20180419-r4731.src.tar.gz heruntergeladen . Ich bin nicht gut in Code zu lesen, noch was ich gelesen (meist in scsiata.cpp) gibt an, dass -d sat,N, wo Neine Zahl ist, wirksam wird nur für Nsein 12oder 16. Bei anderen Werten ist der effektive Wert 16standardmäßig. Nwählt nur eine Variante der SCSI-Befehle: 12 Byte oder 16 Byte. Das macht diese Versuche mit -d sat,0vergeblich.

Der Code entspricht dem man 8 smartctlwas sagt:

-d TYPE. --device=TYPE

sat[,auto][,N]- Der Gerätetyp ist SCSI to ATA Translation (SAT). Dies gilt für ATA-Festplatten, die zwischen der Festplatte und dem Betriebssystem eine SCSI-zu-ATA-Übersetzungsebene (SATL) haben. SAT definiert zwei ATA PASS THROUGH SCSI-Befehle, einer ist 12 Byte lang und der andere 16 Byte lang. Die Standardeinstellung ist die 16-Byte-Variante, die entweder mit -d sat,12oder überschrieben werden kann -d sat,16.

Der interessanteste Teil ist jedoch dieser Kommentar (er ist am Ende des anfänglichen Kommentarblocks in der scsiata.cppHervorhebung meines):

Da mehr Transporte SATA-Festplatten (und andere S-ATAPI-Geräte) hinter einem SCSI-Befehlssatz "verbergen", wird der Zugriff auf spezielle Funktionen wie SMART-Informationen zu einer Herausforderung . Der SAT-Standard bietet ATA PASS THROUGH-Befehle für spezielle Anwendungen. Beachten Sie, dass sich die SAT-Schicht in einer generischen OS-Schicht (z. B. libata in linux), in einer Firmware eines Hostadapters (HA oder HBA) oder an einer beliebigen Stelle in der Verbindung zwischen dem Hostcomputer und den SATA-Geräten befinden kann (z. B. ein RAID aus SATA) Festplatten und das RAID spricht "SCSI" an den Host-Computer ). Beachten Sie, dass im letzteren Fall dieser Code das Adressierungsproblem nicht löst (dh, welche SATA-Festplatte hinter der logischen SCSI-Schnittstelle (RAID-Schnittstelle) anzusprechen ist).

Technisch gesehen ist Ihr WD My Book Duo ein aus SATA-Festplatten bestehendes RAID, das "SCSI" mit dem Host-Computer kommuniziert, auch wenn Sie den JBOD-Modus verwenden und Ihrem Computer zwei separate Festplatten anzeigen lassen. Der obige Kommentar erklärt irgendwie Ihre Erfahrung.

Ich wünschte, jemand findet einen funktionierenden Ansatz für Sie. Für den Moment würde ich nicht viel erwarten smartctl(aber vielleicht wird mich jemand falsch beweisen). Als letzte Möglichkeit können Sie eine der Festplatten physisch von WD My Book Duo trennen und SMART-Tests auf der anderen Festplatte ausführen. Da es sich bei Ihrem Setup um ein Software-RAID handelt, können Sie meiner Meinung nach vorübergehend eine Festplatte in ein anderes Gehäuse verschieben, um den Betrieb aufrecht zu erhalten, und das RAID wird dadurch nicht beeinträchtigt.

Leider scheint dies der Fall zu sein. Witiko vor 5 Jahren 0
2
harrymc

Smartctl funktioniert wie erwartet, solange das Gerät /dev/sdaeiner physischen Festplatte entspricht. RAID verbindet jedoch mehrere physische Festplatten logisch zu einer virtuellen Festplatte. Dies ist an der Tatsache zu erkennen, dass blkid die beiden Festplatten eine UUID gemeinsam nutzen und sich nur durch UUID_SUB unterscheiden.

Für RAID ist smartctl /dev/sdaeine Abkürzung für die gesamte virtuelle Festplatte, das RAID-Array. Es kann immer noch die Details für eine Festplatte angeben, aber es muss über das RAID-Setup informiert werden - die Technologie, der Steckplatz, in dem sich die physische Festplatte befindet, und das Linux-Gerät, das der virtuellen Festplatte entspricht.

Die Syntax zum Verweisen auf den ersten Slot / das erste Laufwerk:

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

Und ähnlich für den zweiten Slot / die zweite Platte:

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

In Bezug auf den Controller-Typ sagt die smartmontools-FAQ :

Kann ich Festplatten hinter RAID-Controllern überwachen?

Die Unterstützung von Festplatten hinter RAID-Controllern hängt stark von der Plattform und dem Controller-Typ ab. Weitere Informationen finden Sie auf unserer Seite zur Unterstützung der RAID-Controller von smartmontools .

Die unterstützten Typen aus dem smartmontools-Wiki sind:

Bild

Aus Ihrer /proc/devicesDatei scheint es sich bei Ihrem Controller um das Metadisk (RAID) -Gerät (md) zu handeln, das von smartctl nicht unterstützt wird. Daher kann smartctl auf Ihrem Computer nicht zur Überwachung der Festplatten hinter Ihrem RAID-Controller verwendet werden.

@KamilMaciorowski Das WD My Book Duo-Laufwerkgehäuse enthält zwei SATA-WD-Red-Laufwerke, das Gehäuse selbst ist jedoch über SCSI über USB mit dem Host verbunden. Daher ist der Befehlssatz SCSI to ATA Translation (SAT). Witiko vor 5 Jahren 0
@ harrymc Ihr Link beschreibt Hardware-RAIDs. Meine beiden Laufwerke befinden sich in einem Software-RAID, dh "/ dev / sda" entspricht einem einzelnen physischen Gerät, das über SAT angeschlossen ist. Die Dateisystem-UUID von / dev / sda ist identisch mit der Dateisystem-UUID von / dev / sdb, da der Dateisystem-Superblock Informationen enthält, damit Linux die beiden Laufwerke automatisch zu einem Array zusammenstellen kann. Im Gegensatz zu Hardware-RAID (MegaRAID) sollte es nicht erforderlich sein, den Befehlssatz ("-d") mit Software-RAID zu ändern. Abgesehen vom Dateisystem UUIDs sollte "smartctl" sich nicht wirklich darum kümmern. Witiko vor 5 Jahren 0
Gibt es eigentlich einen Grund für `smartctl`, sich überhaupt um UUIDs zu kümmern? UUIDs werden Dateisystemen zugewiesen. Ich nahm an, dass "smartctl" auf Blockgeräteebene funktioniert. Witiko vor 5 Jahren 0
Ich habe "sat" nur verwendet, weil Sie es getan haben, "megaraid" scheint korrekter zu sein, aber andere Werte sind möglicherweise noch möglich. Syntaxunterschiede bei Smartctl-Versionen sind möglich, die Möglichkeit, RAID-Steckplätze anzugeben, muss jedoch vorhanden sein. Ich habe auch herausgefunden, dass die Slot-Nummern bei 0 beginnen. Ich denke, dass identische UUIDs nur ein Zeichen der RAID-Mitgliedschaft sind, was `smartctl` interessiert (natürlich kann dieses Verhalten auch ein Fehler sein). harrymc vor 5 Jahren 0
"sat" sollte der richtige Wert sein, da das Laufwerkgehäuse so mit dem Host verbunden ist. Witiko vor 5 Jahren 0
Was bewirkt die Verwendung von `sat, 0 'oder` megaraid, 0`? Bitte fügen Sie auch die Auflistung von 'smartctl --scan' und die Daten Ihres RAID-Controllers in `/ proc / devices 'bei. Ich warf einen Blick auf `man smartctl` (wahrscheinlich nicht identisch mit Ihrem) und kann sehen, dass die Syntax` -d controller-type, node` für viele Controller-Typen verfügbar ist. harrymc vor 5 Jahren 0
`# sudo smartctl -d megaraid, 0 -a / dev / sdb` liefert die Meldung„ Smartctl open device: / dev / sdb [megaraid_disk_00] ist fehlgeschlagen: Öffnen Sie / dev / megaraid_sas_ioctl_node oder / dev / megadev0 “nicht. Die Angabe von "-d sat, 0" scheint sich nicht von "-d sat" zu unterscheiden. Die Manpage gibt nur die Bedeutung von `-d sat, 12 'und` -d sat, 16' an. `# smartctl --scan` liefert` # scan_smart_devices: glob (3) das übereinstimmende Muster / dev / discs / disc * `abgebrochen. Witiko vor 5 Jahren 0
smartctl wirkt etwas enttäuschend. Die Manpage gibt "megaraid, N" sowie die Syntax für nvme, usbjmicron, aacraid und andere an. Die Daten von `/ proc / devices` können dabei helfen, den Typ Ihres Controllers zu finden, um zu sehen, ob er für diese Syntax unterstützt wird. Alte Informationen zu unterstützten RAID-Controllern finden Sie [hier] (https://www.smartmontools.org/wiki/Supported_RAID-Controllers). harrymc vor 5 Jahren 0
Die [FAQ sagt] (https://www.smartmontools.org/wiki/FAQ#CanImonitordisksbehindRAIDcontroller): "Die Unterstützung von Festplatten hinter RAID-Controllern hängt stark von der Plattform und dem Controller-Typ ab". harrymc vor 5 Jahren 0
Ich habe den Inhalt von `/ proc / devices` zur ursprünglichen Antwort hinzugefügt. Witiko vor 5 Jahren 0
Ich habe meine Antwort basierend auf dieser Datei aktualisiert. harrymc vor 5 Jahren 0
Wie sind Sie zu dem Schluss gekommen, dass "md" für * Metadisk (RAID) device * steht? Witiko vor 5 Jahren 0
Ich habe den [Linux-Quellcode: Documentation / devices.txt] (https://elixir.bootlin.com/linux/v3.4/source/Documentation/devices.txt) nach allen Gerätetypen in Ihrem `/ proc durchsucht / devices` und nur "md" war ein RAID-Gerät. harrymc vor 5 Jahren 0
Die Metadisk sollte jedoch keinem tatsächlichen Gerät entsprechen. Es sollte dem vom Linux-Kernel bereitgestellten Software-RAID entsprechen. Ich führe smartctl nicht auf dem "md" -Gerät (Nummer 9) aus, sondern auf den "sd" -Geräten (Nummer 8). Witiko vor 5 Jahren 0
Ich weiß nicht, wie Software / Virtual RAID intern in Linux implementiert wird. Möglicherweise haben Sie eine virtuelle MD und einige physische SD-Geräte. Diese Theorie fällt aus, wenn Sie einen physischen Metadisk-RAID-Controller in Ihrem Computer haben. Ich hielt es jedoch für unwahrscheinlich, dass Sie ein physisches RAID zur Verfügung haben, stattdessen ein Software-RAID verwenden. harrymc vor 5 Jahren 0