Cos'è S.M.A.R.T.?
INTELIGENTE. –per la tecnologia di automonitoraggio, analisi e reportistica— è una tecnologia incorporata in dispositivi di archiviazione come unità disco rigido o SSD e il cui obiettivo è monitorarne lo stato di salute.
In pratica, S.M.A.R.T. monitorerà diversi parametri del disco durante le normali operazioni dell'unità, come il numero di errori di lettura, i tempi di avvio dell'unità o anche le condizioni ambientali. Inoltre, S.M.A.R.T. e può anche eseguire test su richiesta sull'unità.
Idealmente, S.M.A.R.T. consentirebbe di anticipare prevedibile guasti come quelli causati dall'usura meccanica o dal degrado della superficie del disco, nonché imprevedibili guasti causati da un difetto imprevisto. Poiché le unità di solito non si guastano all'improvviso, S.M.A.R.T. offre un'opzione per il sistema operativo o l'amministratore di sistema per identificare le unità che si guastano presto in modo che possano essere sostituite prima che si verifichi qualsiasi perdita di dati.
Cosa non è S.M.A.R.T.?
Tutto ciò sembra meraviglioso. Tuttavia, S.M.A.R.T. non è una sfera di cristallo. Non può prevedere con una precisione del 100% un guasto né, d'altra parte, garantire che un'unità non si guasti senza alcun preavviso. Nel migliore dei casi, S.M.A.R.T. dovrebbe essere utilizzato per stimare la probabilità di un fallimento.
Data la natura statistica della previsione dei guasti, S.M.A.R.T. la tecnologia interessa in particolare l'azienda che utilizza un gran numero di unità di archiviazione e sono stati condotti studi sul campo per stimare l'accuratezza di S.M.A.R.T. problemi segnalati per anticipare le esigenze di sostituzione del disco nei data center o nelle server farm.
Nel 2016, Microsoft e la Pennsylvania State University hanno condotto uno studio incentrato sugli SSD.
Secondo tale studio, sembra che alcuni S.M.A.R.T. gli attributi sono buoni indicatori di un fallimento imminente. Il documento menziona specificamente:
Conteggio settore riallocato (Realloc):
Sebbene la tecnologia di base sia radicalmente diversa, tale indicatore sembra significativo nel mondo degli SSD rispetto a quello dei dischi rigidi. Vale la pena ricordare che a causa degli algoritmi di livellamento dell'usura utilizzati negli SSD, quando diversi blocchi iniziano a non funzionare, è probabile che molti altri falliscano presto. Conteggio errori programma/cancellazione (P/E):
Questo è un sintomo di un problema con l'hardware flash sottostante in cui l'unità non è stata in grado di cancellare o archiviare i dati in un blocco. A causa delle imperfezioni nel processo di fabbricazione, è possibile prevedere pochi errori di questo tipo. Tuttavia, le memorie flash hanno un numero limitato di cicli di cancellazione/scrittura. Quindi, ancora una volta, un improvviso aumento del numero di eventi potrebbe indicare che l'unità ha raggiunto il limite di fine vita e possiamo anticipare che molte altre celle di memoria si guasteranno presto. Errori CRC ed Uncorrectable ("Errore dati"):
Questi eventi possono essere causati da un errore di archiviazione o da problemi con il collegamento di comunicazione interno dell'unità. Questo indicatore tiene conto di entrambi corretti errori (quindi senza alcun problema segnalato al sistema host) nonché non corretti errori (quindi blocca l'unità ha segnalato di non essere in grado di leggere sul sistema host). In altre parole, correggibile gli errori sono invisibili al sistema operativo host, ma hanno comunque un impatto sulle prestazioni dell'unità poiché i dati devono essere corretti dal firmware dell'unità e potrebbe verificarsi un possibile trasferimento del settore. Conteggio downshift SATA:
A causa di disturbi temporanei, problemi con il collegamento di comunicazione tra l'unità e l'host oa causa di problemi interni dell'unità, l'interfaccia SATA può passare a una velocità di segnalazione inferiore. Il declassamento del collegamento al di sotto del tasso di collegamento nominale ha l'evidente impatto sulle prestazioni dell'azionamento osservate. La selezione di una velocità di segnalazione più bassa non è rara, specialmente su unità meno recenti. Quindi questo indicatore è più significativo se correlato alla presenza di uno o più dei precedenti.
Secondo lo studio, il 62% dell'SSD guasto ha mostrato almeno uno dei sintomi di cui sopra. Tuttavia, se inverti questa affermazione, significa anche che il 38% degli SSD studiati ha fallito senza mostrando uno qualsiasi dei sintomi di cui sopra. Lo studio non ha menzionato se le unità guaste hanno mostrato altri S.M.A.R.T. segnalato guasto o meno. Quindi questo non può essere confrontato direttamente con il 36% di guasti senza preavviso menzionato per i dischi rigidi nel documento di Google.
Il documento della Microsoft/Pennsylvania State University non rivela gli esatti modelli di unità studiati, ma secondo gli autori, la maggior parte delle unità proviene dallo stesso fornitore che copre diverse generazioni.
Lo studio ha rilevato differenze significative nell'affidabilità tra i diversi modelli. Ad esempio, il modello "peggiore" studiato mostra un tasso di guasto del 20% nove mesi dopo il primo errore di riposizionamento e un tasso di guasto fino al 36% nove mesi dopo la prima occorrenza di errori di dati. Il modello "peggiore" è anche la vecchia generazione di unità studiata nel documento.
D'altra parte, per gli stessi sintomi, i drive appartenenti alla generazione più giovane di dispositivi mostrano rispettivamente solo il 3% e il 20% di tasso di guasto per gli stessi errori. È difficile dire se queste cifre possono essere spiegate da miglioramenti nella progettazione e nel processo di produzione dell'unità o se questo è semplicemente un effetto dell'invecchiamento dell'unità.
In modo più interessante, e ho fornito alcune possibili ragioni in precedenza, il documento afferma che, anziché il valore grezzo, si tratta di un improvviso aumento del numero di errori segnalati che dovrebbe essere considerato un indicatore allarmante:
“”” C'è una maggiore probabilità che i sintomi precedano i guasti degli SSD, con un'intensa manifestazione e una rapida progressione che ne impediscono la sopravvivenza oltre alcuni mesi “””
In altre parole, un occasionale S.M.A.R.T. l'errore riportato non è probabilmente da considerarsi come un segnale di imminente guasto. Tuttavia, quando un SSD integro inizia a segnalare sempre più errori, è necessario prevedere un guasto a breve e medio termine.
Ma come sapere se il tuo disco rigido o SSD è sano? O per soddisfare la tua curiosità o perché vuoi iniziare a monitorare da vicino le tue unità, è ora di introdurre lo smartctl
strumento di monitoraggio:
Utilizzo di smartctl per monitorare lo stato del tuo SSD in Linux
Ci sono modi per elencare i dischi in Linux ma per monitorare l'S.M.A.R.T. stato del tuo disco, ti suggerisco il smartctl
strumento, parte di smartmontool
pacchetto (almeno su Debian/Ubuntu).
sudo apt install smartmontools
smartctl
è uno strumento da riga di comando, ma è perfetto, soprattutto se desideri automatizzare la raccolta dei dati, in particolare sui tuoi server.
Il primo passaggio quando si utilizza smartctl
è controllare se il tuo disco ha S.M.A.R.T. abilitato ed è supportato dallo strumento:
sh$ sudo smartctl -i /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Seagate Momentus 7200.4
Device Model: ST9500420AS
Serial Number: 5VJAS7FL
LU WWN Device Id: 5 000c50 02fa0b800
Firmware Version: D005SDM1
User Capacity: 500,107,862,016 bytes [500 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: 7200 rpm
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 4
SATA Version is: SATA 2.6, 3.0 Gb/s
Local Time is: Mon Mar 12 15:54:43 2018 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Come puoi vedere, il disco rigido interno del mio laptop ha effettivamente S.M.A.R.T. capacità e S.M.A.R.T. il supporto è abilitato. Quindi, che dire ora dello S.MA.R.T. stato? Sono stati registrati degli errori?
Segnalare "tutte le informazioni SMART sul disco" è compito del -a
opzione:
sh$ sudo smartctl -i -a /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Seagate Momentus 7200.4
Device Model: ST9500420AS
Serial Number: 5VJAS7FL
LU WWN Device Id: 5 000c50 02fa0b800
Firmware Version: D005SDM1
User Capacity: 500,107,862,016 bytes [500 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: 7200 rpm
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 4
SATA Version is: SATA 2.6, 3.0 Gb/s
Local Time is: Mon Mar 12 15:56:58 2018 CET
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: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
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: ( 0) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
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: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 110) minutes.
Conveyance self-test routine
recommended polling time: ( 3) minutes.
SCT capabilities: (0x103f) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table 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 111 099 006 Pre-fail Always - 29694249
3 Spin_Up_Time 0x0003 100 098 085 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 095 095 020 Old_age Always - 5413
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 3
7 Seek_Error_Rate 0x000f 071 060 030 Pre-fail Always - 51710773327
9 Power_On_Hours 0x0032 070 070 000 Old_age Always - 26423
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 096 037 020 Old_age Always - 4836
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 072 072 000 Old_age Always - 28
188 Command_Timeout 0x0032 100 096 000 Old_age Always - 4295033738
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 056 042 045 Old_age Always In_the_past 44 (Min/Max 21/44 #22)
191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 184
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 104
193 Load_Cycle_Count 0x0032 001 001 000 Old_age Always - 395415
194 Temperature_Celsius 0x0022 044 058 000 Old_age Always - 44 (0 13 0 0 0)
195 Hardware_ECC_Recovered 0x001a 050 045 000 Old_age Always - 29694249
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 1
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 1
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 25131 (246 202 0)
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 3028413736
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 1613088055
254 Free_Fall_Sensor 0x0032 100 100 000 Old_age Always - 0
SMART Error Log Version: 1
ATA Error Count: 3
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Error 3 occurred at disk power-on lifetime: 21171 hours (882 days + 3 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 00 ff ff ff 0f Error: UNC at LBA = 0x0fffffff = 268435455
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 00 08 ff ff ff 4f 00 00:45:12.580 READ FPDMA QUEUED
60 00 08 ff ff ff 4f 00 00:45:12.580 READ FPDMA QUEUED
60 00 08 ff ff ff 4f 00 00:45:12.579 READ FPDMA QUEUED
60 00 08 ff ff ff 4f 00 00:45:12.571 READ FPDMA QUEUED
60 00 20 ff ff ff 4f 00 00:45:12.543 READ FPDMA QUEUED
Error 2 occurred at disk power-on lifetime: 21171 hours (882 days + 3 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 00 ff ff ff 0f Error: UNC at LBA = 0x0fffffff = 268435455
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 00 00 ff ff ff 4f 00 00:45:09.456 READ FPDMA QUEUED
60 00 00 ff ff ff 4f 00 00:45:09.451 READ FPDMA QUEUED
61 00 08 ff ff ff 4f 00 00:45:09.450 WRITE FPDMA QUEUED
60 00 00 ff ff ff 4f 00 00:45:08.878 READ FPDMA QUEUED
60 00 00 ff ff ff 4f 00 00:45:08.856 READ FPDMA QUEUED
Error 1 occurred at disk power-on lifetime: 21131 hours (880 days + 11 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 00 ff ff ff 0f Error: UNC at LBA = 0x0fffffff = 268435455
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 00 00 ff ff ff 4f 00 05:52:18.809 READ FPDMA QUEUED
61 00 00 7e fb 31 45 00 05:52:18.806 WRITE FPDMA QUEUED
60 00 00 ff ff ff 4f 00 05:52:18.571 READ FPDMA QUEUED
ea 00 00 00 00 00 a0 00 05:52:18.529 FLUSH CACHE EXT
61 00 08 ff ff ff 4f 00 05:52:18.527 WRITE FPDMA QUEUED
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 10904 -
# 2 Short offline Completed without error 00% 12 -
# 3 Short offline Completed without error 00% 0 -
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.
Comprendere l'output del comando smartctl
Si tratta di molte informazioni e non è sempre facile interpretare quei dati. La parte più interessante è probabilmente quella etichettata come "Attributi SMART specifici del fornitore con soglie" . Riporta varie statistiche raccolte dalla S.M.A.R.T. dispositivo e ti consente di confrontare quei valori (attuale o peggiore di tutti i tempi) con una soglia definita dal fornitore.
Ad esempio, ecco come il mio disco segnala i settori spostati:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 3
Puoi vederlo come un attributo "pre-fallito". Ciò significa solo che l'attributo corrisponde ad anomalie. Quindi, se quell'attributo supera la soglia, che potrebbe essere un indicatore di un guasto imminente. L'altra categoria è "Old_age" per gli attributi corrispondenti agli attributi di "usura normale".
L'ultimo campo (qui “3”) corrisponde al valore grezzo per quell'attributo come riportato dal drive. Di solito, questo numero ha un significato fisico. Qui, questo è il numero effettivo di settori trasferiti. Tuttavia, per altri attributi, potrebbe essere una temperatura in gradi Celsius, un tempo in ore o minuti o il numero di volte in cui l'unità ha riscontrato una condizione specifica.
Oltre al valore grezzo, un S.M.A.R.T. l'azionamento abilitato deve riportare i valori “normalizzati” (campi valore, peggiore e soglia). Questi valori sono normalizzati nell'intervallo 1-254 (0-255 per la soglia). Il firmware del disco esegue tale normalizzazione utilizzando un algoritmo interno. Inoltre, diversi produttori possono normalizzare lo stesso attributo in modo diverso. La maggior parte dei valori sono riportati in percentuale, maggiore è il migliore, ma questo non è obbligatorio. Quando un parametro è inferiore o uguale alla soglia fornita dal produttore, si dice che il disco non è riuscito per quell'attributo. Con tutte le riserve menzionate nella prima parte di quell'articolo, quando un attributo "pre-fail" ha fallito, presumibilmente un guasto del disco è imminente.
Come secondo esempio, esaminiamo il "tasso di errore di ricerca":
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
7 Seek_Error_Rate 0x000f 071 060 030 Pre-fail Always - 51710773327
In realtà, e questo è un problema con S.M.A.R.T. reporting, il significato esatto di ciascun valore è specifico del fornitore. Nel mio caso, Seagate utilizza una scala logaritmica per normalizzare il valore. Quindi "71" significa circa un errore per 10 milioni di ricerche (da 10 alla 7,1a potenza). Abbastanza divertente, il peggiore di tutti i tempi è stato un errore per 1 milione di ricerche (10 alla 6,0a potenza). Se lo interpreto correttamente, significa che le mie testine del disco sono posizionate in modo più accurato ora rispetto al passato. Non ho seguito da vicino quel disco, quindi questa analisi è soggetta a cautela. Forse l'unità necessitava solo di un periodo di rodaggio quando è stata inizialmente messa in servizio? A meno che questa non sia una conseguenza dell'usura delle parti meccaniche, e quindi dell'opposizione a un minore attrito oggi? In ogni caso, e qualunque sia la ragione, questo valore è più un indicatore di performance che un avviso di guasto. Quindi non mi infastidisce molto.
Oltre a ciò, e tre errori sospetti registrati circa sei mesi fa, quell'unità appare in condizioni sorprendentemente buone (secondo S.M.A.R.T.) per un'unità laptop di serie che è stata accesa per più di 1100 giorni (26423 ore):
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
9 Power_On_Hours 0x0032 070 070 000 Old_age Always - 26423
Per curiosità, ho eseguito lo stesso test su un laptop molto più recente dotato di SSD:
sh$ sudo smartctl -i /dev/sdb
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model: TOSHIBA THNSNK256GVN8
Serial Number: 17FS131LTNLV
LU WWN Device Id: 5 00080d 9109b2ceb
Firmware Version: K8XA4103
User Capacity: 256 060 514 304 bytes [256 GB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: Solid State Device
Form Factor: M.2
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: ACS-3 (minor revision not indicated)
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Tue Mar 13 01:03:23 2018 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
La prima cosa da notare, anche se quel dispositivo è S.M.AR.T. abilitato, non è nel smartctl
Banca dati. Ciò non impedirà allo strumento di raccogliere dati dall'SSD, ma non sarà in grado di segnalare il significato esatto dei diversi attributi specifici del fornitore:
sh$ sudo smartctl -a /dev/sdb
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
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: ( 120) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No 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: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 11) minutes.
SCT capabilities: (0x003d) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000a 100 100 000 Old_age Always - 0
2 Throughput_Performance 0x0005 100 100 050 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 100 100 050 Pre-fail Always - 0
5 Reallocated_Sector_Ct 0x0013 100 100 050 Pre-fail Always - 0
7 Unknown_SSD_Attribute 0x000b 100 100 050 Pre-fail Always - 0
8 Unknown_SSD_Attribute 0x0005 100 100 050 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 100 100 000 Old_age Always - 171
10 Unknown_SSD_Attribute 0x0013 100 100 050 Pre-fail Always - 0
12 Power_Cycle_Count 0x0012 100 100 000 Old_age Always - 105
166 Unknown_Attribute 0x0012 100 100 000 Old_age Always - 0
167 Unknown_Attribute 0x0022 100 100 000 Old_age Always - 0
168 Unknown_Attribute 0x0012 100 100 000 Old_age Always - 0
169 Unknown_Attribute 0x0013 100 100 010 Pre-fail Always - 100
170 Unknown_Attribute 0x0013 100 100 010 Pre-fail Always - 0
173 Unknown_Attribute 0x0012 200 200 000 Old_age Always - 0
175 Program_Fail_Count_Chip 0x0013 100 100 010 Pre-fail Always - 0
192 Power-Off_Retract_Count 0x0012 100 100 000 Old_age Always - 18
194 Temperature_Celsius 0x0023 063 032 020 Pre-fail Always - 37 (Min/Max 11/68)
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
240 Unknown_SSD_Attribute 0x0013 100 100 050 Pre-fail Always - 0
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.
Questo è in genere l'output che puoi aspettarti per un SSD nuovo di zecca. Anche se, a causa della mancanza di normalizzazione o metainformazioni per i dati specifici del fornitore, molti attributi vengono segnalati come "Attributo_SSD_sconosciuto". Posso solo sperare nelle versioni future di smartctl
incorporerà i dati relativi a quel particolare modello di unità nel database degli strumenti, in modo da poter identificare più accuratamente possibili problemi.
Testa il tuo SSD in Linux con smartctl
Finora abbiamo esaminato i dati raccolti dall'unità durante il suo normale funzionamento. Tuttavia, lo S.M.A.R.T. il protocollo supporta anche diversi comandi di "autotest" per avviare la diagnosi su richiesta.
Se non espressamente richiesto, gli autotest possono essere eseguiti durante le normali operazioni del disco. Poiché sia il test che le richieste di I/O dell'host competono per l'unità, le prestazioni del disco si degraderanno durante il test. L'S.M.A.R.T. specificazione specifica diversi tipi di autotest. I più importanti sono:
Autotest breve (-t short
)
Questo test verificherà le prestazioni elettriche e meccaniche, nonché le prestazioni di lettura dell'azionamento. L'autotest breve richiede in genere solo pochi minuti per essere completato (di solito da 2 a 10). Autotest esteso (-t long
)
Questo test richiede uno o due ordini di grandezza in più per essere completato. Di solito, questa è una versione più approfondita del breve autotest. Inoltre, quel test analizzerà l'intera superficie del disco per errori di dati senza limiti di tempo. La durata del test sarà proporzionale alla dimensione del disco. Autotest del trasporto (-t conveyance
)
questa suite di test è progettata come un modo relativamente rapido per verificare eventuali danni subiti durante il trasporto del dispositivo.
Ecco degli esempi presi dagli stessi dischi di cui sopra. Ti lascio indovinare quale è quale:
sh$ sudo smartctl -t short /dev/sdb
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (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 Mon Mar 12 18:06:17 2018
Use smartctl -X to abort test.
Il test è stato ora dichiarato. Aspettiamo fino al completamento per mostrare il risultato:
sh$ sudo sh -c 'sleep 120 && smartctl -l selftest /dev/sdb'
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.10.0-32-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 171 -
Facciamo ora lo stesso test sull'altro mio disco:
sh$ sudo smartctl -t short /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (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 Mon Mar 12 21:59:39 2018
Use smartctl -X to abort test.
Ancora una volta, dormi per due minuti e visualizza l'esito del test:
sh$ sudo sh -c 'sleep 120 && smartctl -l selftest /dev/sdb'
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 26429 -
# 2 Short offline Completed without error 00% 10904 -
# 3 Short offline Completed without error 00% 12 -
# 4 Short offline Completed without error 00% 0 -
È interessante notare che, in tal caso, sembra che sia l'unità che i produttori di computer abbiano eseguito alcuni test rapidi sul disco (a vita 0h e 12h). Io era decisamente molto meno preoccupato di monitorare personalmente la salute dell'unità. Quindi, dal momento che sto eseguendo alcuni test automatici per quell'articolo, iniziamo un esteso prova a come va:
sh$ sudo smartctl -t long /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (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 Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 110 minutes for test to complete.
Test will complete after Tue Mar 13 00:09:08 2018
Use smartctl -X to abort test.
Apparently, this time we will have to wait much longer than for the short test. So let’s do it:
sh$ sudo bash -c 'sleep $((110*60)) && smartctl -l selftest /dev/sdb'
[sudo] password for sylvain:
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed: read failure 20% 26430 810665229
# 2 Short offline Completed without error 00% 26429 -
# 3 Short offline Completed without error 00% 10904 -
# 4 Short offline Completed without error 00% 12 -
# 5 Short offline Completed without error 00% 0 -
In that latter case, pay special attention to the different outcomes obtained with the short and extended tests, even if they were performed one right after the other. Well, maybe that disk is not that healthy after all! An important thing to notice is the test will stop after the first read error. So if you want an exhaustive diagnosis of all read errors, you will have to continue the test after each error. I encourage you to take a look at the very well written smartctl(8) manual page for the more information about the options -t select,N-max
and -t select,cont
for that:
sh$ sudo smartctl -t select,810665230-max /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (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 Selective self-test routine immediately in off-line mode".
SPAN STARTING_LBA ENDING_LBA
0 810665230 976773167
Drive command "Execute SMART Selective self-test routine immediately in off-line mode" successful.
Testing has begun.
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Selective offline Completed without error 00% 26432 -
# 2 Extended offline Completed: read failure 20% 26430 810665229
# 3 Short offline Completed without error 00% 26429 -
# 4 Short offline Completed without error 00% 10904 -
# 5 Short offline Completed without error 00% 12 -
# 6 Short offline Completed without error 00% 0 -
Conclusion
Definitely, S.M.A.R.T. reporting is a technology you can add to your tool chest to monitor your servers disk health. In that case, you should also take a look at the S.M.A.R.T. Disk Monitoring Daemon smartd(8) that could help you automate monitoring through syslog reporting.
Given the statistical nature of failure prediction, I am a little bit less convinced however than aggressive S.M.A.R.T. monitoring is of great benefit on a personal computer. Finally, don’t forget whatever is its technology, a drive will fail— and we have seen earlier, in one-third of the case, it will fail without prior notices. So nothing will replace RAIDand offline backups to ensure your data integrity!
This article was written by Sylvain Leroux