SMART - Monitoring du Disque Dur

Les disques SMART (Self-Monitoring, Analysis and Reporting Technology) disposent d’un système d’auto-surveillance. SMART permet de faire un diagnostic selon plusieurs indicateurs de fiabilité dans le but d’anticiper les erreurs.

Smartmontools (SMART Monitoring Tools) est un ensemble de programmes utilitaires (smartctl et smartd) permettant de contrôler et de surveiller le stockage à l’aide du système de SMART qui est intégré à la plupart des disques (SATA, NVMe, SCSI, …)

Fonctionnement de SMART

Avec SMART, les disques :

  • Liste 30 attributs disque
  • renvoient une réponse OK ou NOT OK à une demande concernant leur état de santé
  • possèdent des logs d’erreurs
  • possèdent des commandes d’autotests

Un NOT OK indique que le disque est susceptible de tomber en panne.

Manuels

Si vous rencontrez des difficultés pour comprendre le résultat de smartctl ou smartd :

# man 8 smartctl
# man 8 smartd
# man 8 update-smart-drivedb
# man 5 smartd.conf

Utilitaire Smartmontools

Activer SMART

Si SMART n’est pas activé sur le disque, il faut l’activer avec l’option -s on|off :

# smartctl -s on /dev/hda

Commandes SMART

Listing général

Lister les informations du disque avec smartctl -a /dev/hda, ici sur un IBM/Hitachi GXP-180. À noter que Smartmontools dispose d’une base de données de types de disques et peut interpréter les valeurs brutes des attributs.

# smartctl -i /dev/hda

Device Model: IC35L120AVV207-0
Serial Number: VNVD02G4G3R72G
Firmware Version: V24OA63A
Device is: In smartctl database [for details use: -P show]
ATA Version is: 6
ATA Standard is: ATA/ATAPI-6 T13 1410D revision 3a
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Rapport de synthèse

Afficher un rapport de synthèse du disque avec smartctl -Hc /dev/hda. Ici le test disque est “PASSED”, dans le cas d’un “ÉCHEC”, il faudra le plus rapidement possible sauvegarder les données.
Le reste de la sortie fournit des informations sur les capacités du disque et la durée estimée pour effectuer des autotests.

# smartctl -Hc /dev/hda

SMART overall-health self-assessment test result: PASSED

General SMART Values:
Off-line data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Off-line 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 off-line
data collection: (2855) seconds.
Offline data collection
capabilities: (0x1b) SMART execute Offline immediate.
Automatic timer ON/OFF support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
No 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: ( 48) minutes.

Afficher les attributs

La commande smartctl -A /dev/hda affiche les 30 premiers attributs du disque (sur un ensemble maximum de 255).

Note : les attributs ne font plus partie de la norme ATA, mais que la plupart des fabricants les prennent toujours en charge. Bien que SFF-8035i ne définisse pas la signification ou l’interprétation des attributs, beaucoup ont une interprétation standard de facto. Par exemple, le 13ème attribut de ce disque (ID #194) suit sa température interne.

Les 30 premiers attributs du disque :

# smartctl -A /dev/hda

Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 060 Pre-fail Always - 0
2 Throughput_Performance 0x0005 155 155 050 Pre-fail Offline - 225
3 Spin_Up_Time 0x0007 097 097 024 Pre-fail Always - 293 (Average 270)
4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 10
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 125 125 020 Pre-fail Offline - 36
9 Power_On_Hours 0x0012 100 100 000 Old_age Always - 3548
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 10
192 Power-Off_Retract_Count 0x0032 100 100 050 Old_age Always - 158
193 Load_Cycle_Count 0x0012 100 100 050 Old_age Always - 158
194 Temperature_Celsius 0x0002 189 189 000 Old_age Always - 29 (Lifetime Min/Max 23/33)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0

Chaque attribut possède plusieurs valeurs :

  • ATTRIBUTE_NAME : le nom de l’attribut
  • FLAG : le flag
  • VALUE : valeur normalisée d’un octet. converti par le micrologiciel en utilisant la RAW_VALUE
  • WORST : Indique la plus petite (la pire pour SMART donc) valeur enregistrée
  • THRESH : Si VALUE est inférieure ou égale au THRESH, l’attribut est considéré comme ayant échoué
  • TYPE :
    • Old_age : indique si le périphérique a atteint la fin de sa durée de vie de conception
    • Pre-fail : indique s’il s’agit d’une panne de disque imminente
  • UPDATED :
  • WHEN_FAILED : Indique que l’attribut à échoué
  • RAW_VALUE : valeur brute de six octets

Interpretation de quelques attributs

Ici la RAW_VALUE stocke 3 températures, celle du disque en Celsius (29) ainsi que ses valeurs minimales (23) et maximales (33)
Le micrologiciel du disque convertit la RAW_VALUE en une valeur normalisée allant de 1 à 253 :

  • Si cette valeur normalisée (VALUE) est inférieure ou égale au THRESH, l’attribut est considéré comme ayant échoué, comme indiqué dans le Colonne WHEN_FAILED. La colonne est vide car aucun de ces attributs n’a échoué.
  • La valeur normalisée la plus basse WORST est également affichée, il s’agit de la plus petite valeur atteinte depuis l’activation de SMART sur le disque.

Dans cet exemple, le TYPE de l’attribut sue temps de rotation du disque (3 Spin_Up_Time) est en Pre-fail. Si cela échoue, une panne de disque est prévue dans moins de 24 heures.

Attributs SMART importants

Les paramètres suivants peuvent fournir des informations concernant une panne imminente du disque dur.

  • Reallocated Sectors Count : nombre de secteurs qui ont été réaffectés en raison d’erreurs de lecture (remappés)
  • Spin Retry Count : nombre de tentatives nécessaires pour amener la broche à la vitesse de fonctionnement
  • Reallocation Event Count : nombre de remappages qui ont été effectués (réussis et échoués)
  • Current Pending Sector Count : nombre de secteurs en attente de remappage
  • Offline_Uncorrectable: Nombre d’erreurs non corrigibles lors de l’accès (lecture/écriture) aux secteurs

Customisation d’attributs

Les noms/significations des attributs et l’interprétation de leurs valeurs brutes ne sont spécifiés par aucune norme. Différents fabricants utilisent parfois le même ID d’attribut à des fins différentes. Pour cette raison, l’interprétation d’attributs spécifiques peut être modifiée en utilisant l’option -v de smartctl (Voir le MAN)

Par exemple, certains disques utilisent l’attribut 9 pour stocker l’heure de mise sous tension du disque en minutes, smartctl -v 9,minutes modifie correctement l’interprétation de l’attribut. Si votre modèle de disque se trouve dans la base de données smartmontools, les options -v sont définies automatiquement.

Afficher les Logs

La commande smartctl -a permet d’afficher les logs d’erreurs de disque.

En règle générale, il ne faut s’inquiéter que si des erreurs apparaissent en grand nombre. Une erreur occasionnelle et ponctuelle est généralement bénigne.

# smartctl -l /dev/hda

SMART Error Log Version: 1
No Errors Logged

Afficher le rapport des autotests

Pour afficher un rapport des autotests, on utilise les commandes :

Test :

# smartctl -l selftest /dev/hda

Test court (~5min) :

# smartctl -t short /dev/hda

Test court (~1h) :

# smartctl -t long /dev/hda

La colonne LifeTime indique l’âge de mise sous tension du disque lorsque l’autotest a été exécuté. Si un autotest détecte une erreur, l’adresse de bloc logique LBA indique où l’erreur s’est produite sur le disque.
La colonne Remaining indique le pourcentage d’autotest restant lorsque l’erreur a été détectée. Il est conseillé de faire un autotest long en cas d’erreur.

# smartctl -l selftest /dev/hda

SMART Self-test log, version number 1
Num Test_Description Status Remaining LifeTime(hours)
LBA_of_first_error
# 1 Extended off-line Completed 00% 3525 -
# 2 Extended off-line Completed 00% 3357 -
# 3 Short off-line Completed 00% 3059 -

Daemon smartd

Le démarrage se fait via :

# /etc/rc.d/init.d/smartd start|stop

Le daemon smartd effectue une surveillance régulière en surveillant les données SMART du disque.
Il peut être configuré pour envoyer des e-mails aux utilisateurs ou aux administrateurs système ou pour exécuter des scripts arbitraires si des problèmes sont détectés.
Par défaut, lorsque smartd est démarré, il enregistre les disques du système et vérifie leur état toutes les 30 minutes pour déceler les attributs défaillants, l’état de santé défaillant ou le nombre accru d’erreurs ATA ou d’autotests échoués et enregistre ces informations avec SYSLOG dans /var/log/messages par défaut.

Il est possible de contrôler et d’affiner le comportement de smartd à l’aide du fichier de configuration /etc/smartd.conf lu au démarrage de smartd.

Exemple :

# /etc/smartd.conf config file
/dev/hda -S on -o on -a -I 194 -m [email protected]
/dev/hdc -S on -o on -a -I 194 -m [email protected]

Dans cet exemple :
/dev/hda : indique le disque à surveiller
-S on : permet la sauvegarde automatique des attributs
-o on : active les tests hors ligne automatiques
-a : surveille toutes les fonctionnalités SMART du disque
-I 194 : ignorer les modifications de l’attribut n° 194 (ici température)
-m : adresse e-mail

De plus amples informations sur le smartd et son fichier de configuration peuvent être trouvées dans la page de manuel (man smartd), et des résumés peuvent être trouvés avec les commandes smartd -D et smartd -h.

Afficher toutes les Attributs SMART

Pour afficher toutes les informations SMART, on utilise :

# smartctl -a /dev/sdc

Exemple de sortie :

# smartctl -a /dev/sdc

smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.5.0-39-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family: Western Digital RE4 Serial ATA
Device Model: WDC WD5003ABYX-01WERA1
Serial Number: WD-WMAYP5453158
LU WWN Device Id: 5 0014ee 00385d526
Firmware Version: 01.01S02
User Capacity: 500,107,862,016 bytes [500 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Tue Sep 3 09:05:27 2013 CEST
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

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: ( 8160) 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: ( 83) minutes.
Conveyance self-test routine
recommended polling time: ( 5) minutes.
SCT capabilities: (0x303f) 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 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 144 143 021 Pre-fail Always - 3775
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 28
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 098 098 000 Old_age Always - 2090
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 27
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 24
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 3
194 Temperature_Celsius 0x0022 117 103 000 Old_age Always - 26
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0

SMART Error Log Version: 1
No Errors Logged

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% 2089 -
# 2 Extended offline Completed without error 00% 2087 -
# 3 Short offline Completed without error 00% 2084 -

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.

Autres exemples

SMART en background et en short :

- disk 0 -

Serial number: 4242ABCD
SMART Health Status: OK
Current Drive Temperature: 31 C
Elements in grown defect list: 0
Errors Corrected by Total Correction Gigabytes Total
ECC rereads/ errors algorithm processed uncorrected
read: 0 0 0 0 0 888716.836 0
write: 0 0 0 0 0 808952.918 0
Non-medium error count: 4584
SMART Self-test log
Num Test Status segment LifeTime LBA_first_err [SK ASC ASQ]
# 1 Background short Completed - 55741 - [- - -]
# 2 Background short Completed - 55717 - [- - -]
# 3 Background short Completed - 55693 - [- - -]
# 4 Background short Completed - 55669 - [- - -]

- disk 1 -

Serial number: 4242DEFG
SMART Health Status: OK
Current Drive Temperature: 31 C
Elements in grown defect list: 0
Errors Corrected by Total Correction Gigabytes Total
ECC rereads/ errors algorithm processed uncorrected
read: 0 41 0 0 0 782370.063 0
write: 0 0 0 0 0 935040.159 0
Non-medium error count: 7931
SMART Self-test log
Num Test Status segment LifeTime LBA_first_err [SK ASC ASQ]
# 1 Background short Completed - 55741 - [- - -]
# 2 Background short Completed - 55717 - [- - -]
# 3 Background short Completed - 55693 - [- - -]
# 4 Background short Completed - 55669 - [- - -]

SMART avec des résultats en pre-failed et old-age :

--- Arbiter Disk ---

Serial Number: ABCDEF0123456
SMART overall-health self-assessment test result: PASSED
Self-test execution status: ( 0) The previous self-test routine completed
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
1 Raw_Read_Error_Rate 0x000b 100 100 062 Pre-fail Always - 0
9 Power_On_Hours 0x0012 026 026 000 Old_age Always - 32761
194 Temperature_Celsius 0x0002 222 222 000 Old_age Always - 27 (Min/Max 5/40)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 1
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% 32759 -
# 2 Short offline Completed without error 00% 32734 -
# 3 Short offline Completed without error 00% 32711 -
# 4 Short offline Completed without error 00% 32687 -

Documentation

https://www.linuxjournal.com/article/6983
https://www.mesoutils.com/ordi/smart.php
https://alexandre-laurent.developpez.com/articles/hardware-disque-smart/
https://fr.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology
https://www.malekal.com/smartl-prevenir-pannes-disque-dur-ssd/
https://www.hdsentinel.com/smart/
https://www.hdsentinel.com/smart/smartattr.php
https://www.real-world-systems.com/docs/smartctl.1.html
https://www.smartmontools.org/wiki/TocDoc
https://www.thomas-krenn.com/en/wiki/Smartctl_Tool

Manuels en ligne :
https://www.smartmontools.org/browser/trunk/smartmontools/smartd.conf.5.in
https://www.smartmontools.org/browser/trunk/smartmontools/update-smart-drivedb.8.in
https://www.smartmontools.org/browser/trunk/smartmontools/smartd.8.in
https://www.smartmontools.org/browser/trunk/smartmontools/smartctl.8.in

> Partager <