Impossibile eseguire i dati SMART e l'autotest su disco rigido esterno


13

In questo momento il mio disco esterno non ha errori ma voglio solo controllare manualmente per assicurarmi.
Come mostrato nell'immagine seguente, l'opzione per i dati SMART e l'autotest è disattivata. Vedi anche i dettagli sul disco rigido nell'immagine stessa.

  1. Ho provato a correre gksu gnome-disksma l'opzione è ancora disattivata.
  2. Ho corso sudo smartctl --all /dev/sdb --test=short -T permissiveho ricevuto questo errore:

smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.19.0-15-generic] (build locale) Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

Lettura identità dispositivo non riuscita: campo scsi errore non supportato nel comando scsi

=== INIZIO SEZIONE INFORMATIVA ===

Modello dispositivo: [Nessuna informazione trovata]

Numero di serie: [Nessuna informazione trovata]

Versione firmware: [Nessuna informazione trovata]

Il dispositivo è: non nel database smartctl [per dettagli usare: -P showall]

La versione ATA è: [Nessuna informazione trovata]

L'ora locale è: Mer 17 giu 11:33:46 2015 IST

Il supporto SMART è: Ambiguo: le parole 82-83 del DISPOSITIVO IDENTIFICAZIONE ATA non vengono visualizzate se SMART è supportato.

Il supporto SMART è: Ambiguo: le parole 85-87 di DISPOSITIVO IDENTIFICAZIONE ATA non vengono visualizzate se SMART è abilitato.

Un comando SMART obbligatorio non è riuscito: in uscita. Per continuare, aggiungi una o più opzioni '-T permissive'.

inserisci qui la descrizione dell'immagine


Lo stesso problema qui. Posso aggiungere che succede in Ubuntu 14.04 , ma NON in Ubuntu 12.04 in cui SMART viene letta correttamente sia dalla GUI che dalla riga di comando. Qualche idea?
Alvaro Gutierrez Perez,

1
Ho trovato la soluzione, vedi la mia risposta
Alvaro Gutierrez Perez,

Risposte:


13

Ho avuto lo stesso problema. Nel mio caso, SMART ha funzionato correttamente sul dispositivo per anni durante l'utilizzo di Ubuntu 12.04 , e quindi in Ubuntu 14.04 è successo esattamente ciò che dici nella domanda.

Il problema è legato a un nuovo modulo del kernel introdotto in Linux Kernel 3.15 chiamato uas(USB Attached SCSI ) (vedere l' annuncio di rilascio ).

Tale modulo è ora responsabile della gestione dei dispositivi di archiviazione di massa USB. C'è un thread in cui le persone si lamentano che uasnel kernel 3.15 sta causando il fallimento dei loro dispositivi USB. Un altro afferma che potrebbe essere la causa di problemi SMART.

Fortunatamente, questi problemi sembrano essere scomparsi nel kernel 3.19 (che sto usando), poiché il mio dispositivo viene rilevato correttamente. Rimane solo il problema SMART.

Per risolverlo, è necessario disabilitare l'uso del uasmodulo per il dispositivo specificato.

Disabilita uassenza riavviare

Innanzitutto, scollegare tutti i dispositivi USB che potrebbero utilizzarlo. Quindi, rimuovere i moduli uase usb-storage:

sudo modprobe -r uas
sudo modprobe -r usb-storage

Quindi, caricare il usb-storagemodulo con un parametro che gli dice di non utilizzare uasper un determinato dispositivo:

sudo modprobe usb-storage quirks=VendorId:ProductId:u

VendorIde ProductIddevono essere sostituiti dal fornitore del dispositivo e dall'ID del prodotto, che possono essere ottenuti con il lsusbcomando (sono i caratteri dopo ID).

Ad esempio, ho il seguente dispositivo:

Bus 002 Device 011: ID 0bc2:3320 Seagate RSS LLC SRD00F2 [Expansion Desktop Drive]

Quindi il mio ID fornitore è 0bc2e il mio ID prodotto lo è 3320. Il mio comando è:

sudo modprobe usb-storage quirks=0bc2:3320:u

L'ultimo udice usb-storagedi ignorare uasper il dispositivo (vedi sorgente ).

A questo punto, è possibile inserire il dispositivo USB e saprà di non utilizzarlo uas, facendo funzionare SMART in modo corretto. Vedrai linee come queste dmesgquando inserisci il dispositivo USB:

usb 2-2: UAS is blacklisted for this device, using usb-storage instead
usb-storage 2-2:1.0: USB Mass Storage device detected
usb-storage 2-2:1.0: Quirks match for vid 0bc2 pid 3320: 800000
scsi host12: usb-storage 2-2:1.0

Rendi permanente la modifica

Il quirk precedente durerà solo fino al riavvio del sistema. Per renderlo persistente, è necessario seguire i passaggi descritti qui , che copio di seguito:

Innanzitutto, crea un file denominato ignore_uas.confnella /etc/modprobe.d/directory con il seguente contenuto:

options usb-storage quirks=VendorId:ProductId:u

Come in precedenza, sostituire VendorIde ProductIddal fornitore del dispositivo e dall'ID prodotto ottenuto da lsusb.

Quindi, rigenera il tuo ramdisk iniziale:

mkinitcpio -p linux

oppure, nelle versioni più recenti di Ubuntu:

sudo update-initramfs -u

Infine, riavvia il computer.


Modifica: ulteriori informazioni sul problema e un altro modo per aggirare il problema senza disabilitare uas (che ha un throughput migliore rispetto allo storage USB) è disponibile qui: https://www.smartmontools.org/ticket/971#comment:12

Sembra che il kernel stia SAT ATA PASS-THROUGHinserendo una lista nera su alcuni dispositivi quando è in esecuzione in modalità utente, poiché hanno un firmware rotto.

Quindi, la lista nera può essere disabilitata (a proprio rischio) usando il metodo precedente che menziono nella risposta, ma rimuovendo il finale udalla stranezza, ovvero:

quirks=VendorId:ProductId:

Si noti, tuttavia, che non ho testato questo approccio.


Sto usando Ubuntu 15.10 con il kernel 4.2 di Linux, ho fatto quello che hai detto, ma non funziona per me
Edward Torvalds,

@edwardtorvalds è la GUI che cosa non funziona, o anche smartctl? Nel mio caso la GUI rimane disattivata (non ho ancora riavviato), ma smartctlfunziona.
Alvaro Gutierrez Perez,

2
Nessun mkinitcpio nel 16.04. Non è "sudo update-initramfs -u" invece adesso?
filofel,

1
Bella risposta! Sono in grado di accedere al mio drive USB Seagate e ottenere tutti i dati smartctl da esso. Ho provato la tua modifica lì con la rimozione di ue che purtroppo ha bloccato l'unità in modo da non poter ottenere alcun dato SMART e il tempo di avvio è stato lento. Tuttavia, ho aggiunto di nuovo ue funziona perfettamente.
Terrance

1
Per più di uno, sembra:quirks=0bc2:ab24:u,0bc2:ac30:u
Tom Hale,

6

Le unità esterne (tramite USB, presumo) sono difficili con SMART. Alcuni non funzionano affatto. Le smartmontoolspersone hanno pubblicato un elenco di dischi rigidi con opzioni da riga di comando da aggiungeresmartctl (vedere la quinta colonna).


Per le unità di espansione Seagate in particolare, sembra che sia necessario -d sato -d sat,12. Prova quanto segue:

sudo smartctl -d sat --all /dev/sdb
sudo smartctl -d sat,12 --all /dev/sdb

Se uno di questi funziona, ti dice quale -dopzione aggiungere ai tuoi smartctlcomandi.


entrambi mi danno un link di
Edward Torvalds,

il nome di hdd esterno è: Seagate Expansion External. sembra essere supportato ma le opzioni continuano a dare errori
Edward Torvalds,

3

Solo un aggiornamento che sto aggiungendo alla risposta di Alvaro

Ho appena provato questo in Ubuntu 18.04 per un'unità Seagate esterna che ho dove non sono riuscito smartctla leggere affatto l'unità. Richiedeva un riavvio perché non volevo rimanere indietro con il mio sistema e pasticciare con le connessioni USB.

Prima lsusbho eseguito e ottenuto tutte le mie informazioni per l'unità:

terrance@terrance-ubuntu:~$ lsusb
Bus 006 Device 002: ID 0bc2:a0a4 Seagate RSS LLC Backup Plus Desktop Drive
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 1532:0118 Razer USA, Ltd 
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 003: ID 046d:c215 Logitech, Inc. Extreme 3D Pro
Bus 003 Device 002: ID 1532:005b Razer USA, Ltd 
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Come puoi vedere il mio disco ha il nome Seagate, quindi tutto quello che dovevo fare è eseguire la seguente riga per aggiungere le informazioni al /etc/modprode.d/ignore_uas.conffile:

echo options usb-storage quirks=$(lsusb | awk '/Seagate/ {print $6}'):u | sudo tee -a /etc/modprobe.d/ignore_uas.conf

Ricorda solo di sostituire Seagatecon il nome dell'unità. Ora quando guardo /etc/modprode.d/ignore_uas.conflo vedo come:

~$ cat /etc/modprobe.d/ignore_uas.conf 
options usb-storage quirks=0bc2:a0a4:u

Quindi esegui il update-initramfscomando per rendere permanenti le modifiche:

sudo update-initramfs -u

Quindi riavviare il sistema. Ora lo smartctl è in grado di leggere il mio disco esterno.

$ sudo smartctl -a /dev/sdf
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.15.0-43-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.14 (AF)
Device Model:     ST3000DM001-1E6166
Serial Number:    W1F3DNG2
LU WWN Device Id: 5 000c50 06a323610
Firmware Version: SC47
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Fri Jan 11 23:07:43 2019 MST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (  592) seconds.
Offline data collection
capabilities:            (0x73) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   1) minutes.
Extended self-test routine
recommended polling time:    ( 336) minutes.
Conveyance self-test routine
recommended polling time:    (   2) minutes.
SCT capabilities:          (0x3081) SCT Status supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   108   099   006    Pre-fail  Always       -       19766104
  3 Spin_Up_Time            0x0003   094   091   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   097   097   020    Old_age   Always       -       3944
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   052   048   030    Pre-fail  Always       -       231936780154
  9 Power_On_Hours          0x0032   058   058   000    Old_age   Always       -       36793
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   097   097   020    Old_age   Always       -       3942
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   092   000    Old_age   Always       -       894 897 1362
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   056   039   045    Old_age   Always   In_the_past 44 (Min/Max 44/44 #237)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   099   099   000    Old_age   Always       -       3909
193 Load_Cycle_Count        0x0032   020   020   000    Old_age   Always       -       161838
194 Temperature_Celsius     0x0022   044   061   000    Old_age   Always       -       44 (0 13 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       8558h+07m+38.053s
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       14574986552
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       18776308038

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Spero che questo ti aiuti!


Dopo questa modifica il mio disco non si monterà più. Perché ?
Philippe Delteil,

@PhilippeDelteil Non ne ho mai sentito parlare e ciò non causa il corretto montaggio dell'unità. Puoi provare a askubuntu.com/a/952275/231142 per impostare un dispositivo più permanente se l'unità viene visualizzata gnome-disks.
Terrance

3

Avevo due unità Seagate collegate, quindi ho modificato il comando @Terrance in:

echo "options usb-storage quirks=$(lsusb | awk '/Seagate/ {print $6":u"}' | tr '\n' ',' | head -c-1)" | sudo tee -a /etc/modprobe.d/ignore_uas.conf

Che fornisce un separatore corretto (e ripetizione flag) per più elementi:

options usb-storage quirks=0bc2:3320:u,0bc2:2323:u

Questa sostituzione di caratteri 'newline' con ',' probabilmente non viene fatta nel modo più elegante (richiede di rimuovere il separatore extra usando head), ma sembra funzionare.

Poi:

sudo update-initramfs -u

E riavvia come nella risposta originale.


Buona scoperta! Non ho pensato a più unità al momento in cui ho provato il mio. Mi piace molto questo! +1
Terranza

1

controlla la tabella con i dispositivi USB supportati ...

lo switch -d satindica che dovrebbe essere un'unità con porta SATA.

ci sono switch specifici per alcuni bridge USB - lsusbpotrebbe mostrare il nome concreto. se il controller bridge potrebbe avere un'implementazione errata, prova a connetterlo nativo tramite SATA anziché USB.

SCSI e ATA (secondo l'output della shell) probabilmente non sono quello che stai cercando :)


Sto usando il cavo fornito con HDD quando l'ho comprato. potresti voler vedere questi errori: link
Edward Torvalds,

il nome di hdd esterno è: Seagate Expansion External. sembra essere supportato ma le opzioni continuano a dare errori
Edward Torvalds,

@edwardtorvalds ci sono due presupposti di base ... avere SMART abilitato nel BIOS / UEFI per la porta (se applicabile) e averlo abilitato tramite il software, prima di provare a leggerlo ... smartctl -T permissive --smart=on /dev/sdb(mentre i log sembrano parlare alla porta sbagliata)
Martin Zeitler il

non esiste alcuna opzione di avvio per questo, ho provato sopra il comando ho ricevuto questo errore
Edward Torvalds,

@edwardtorvalds sembra che stia ancora inviando comandi SCSI ... manca -d sat switch smartctl -d sat -T permissive --smart=on /dev/sdb... e come ho scritto sopra lsusbdovrebbe elencare quale bridge è.
Martin Zeitler,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.