Connaitre l’état de santé de son disque dur

Même avec de bonnes sauvegardes sous le coude, il est important d’avoir une petite idée de l’état de ses disques durs. Bien sur, il n’y a pas de miracles. On ne pourra jamais prévoir à coup sur une panne avant qu’elle ne se produise. Mais dans le cas des disques dur, il existe tout de même de très bons indicateurs. Cela peut aussi servir si vous achetez un disque d’occasion à un particulier etc.

Je pars du principe que vous êtes sous linux en ligne de commandes. Mais les informations données ici restent valables quelque soit le logiciel utilisé. Les commandes suivantes nécessitent les droits root. Donc commencer par passer root, ou n’oubliez pas de rajouter sudo devant chacune des commandes.

Installation du logiciel

apt-get install smartmontools

A adapter bien sur en fonction de votre distribution. Peut être même que le logiciel est déjà installé. (Vérifier la présence de la commande smartctl).

Utilisation

Il est possible de lancer deux type de diagnostiques automatique sur les disques dur. Un « auto diagnostique » court, qui prend généralement moins de 5 minutes. Et un long, qui prend facilement plusieurs heures (en fonction de la capacité du disque). Pour commencer, on va lancer un diagnostique court (pour la version longue, remplacer short par long)

smartctl –test=short /dev/sda
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-62-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.

Comme vous pouvez le voir, la commande vous indique combien de temps il faudra patientez. Une fois que c’est terminé, il est temps d’aller voir le résultat. Comme vous allez le voir, les rapports sont assez verbeux, nous allons examiner tout cela paragraphe par paragraphe, mais pas forcément dans l’ordre ou ils ont affichés. La commande permettant de connaitre l’état du disque à un instant t est :

smartctl -a /dev/sda

Interprétation des résultats

Informations matérielles

Le premier paragraphe donne simplement des informations sur le disque (constructeur, modèle, numéro de série, firmware etc).

=== START OF INFORMATION SECTION ===
Model Family: Hitachi/HGST Travelstar Z7K500
Device Model: HGST HTS725050A7E630
Serial Number: TF1501WHKD1TZP
LU WWN Device Id: 5 000cca 77fefc1be
Firmware Version: GH2OA440
User Capacity: 500 107 862 016 bytes [500 GB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: 7200 rpm
Form Factor: 2.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2, ATA8-ACS T13/1699-D revision 6
SATA Version is: SATA 3.0, 3.0 Gb/s (current: 3.0 Gb/s)
Local Time is: Fri May 19 10:25:55 2017 CEST
SMART support is: Available – device has SMART capability.
SMART support is: Enabled

Informations logicielles

Le second donne des informations sur les capacités logiciels du disque. En général il n’y a rien de bien passionnant dans cette section:

=== 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: ( 45) seconds.
Offline data collection
capabilities: (0x51) SMART execute Offline immediate.
No Auto Offline data collection support.
Suspend Offline collection upon new
command.
No 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: ( 86) minutes.
SCT capabilities: (0x003d) SCT Status supported.
SCT Error Recovery Control supported.
SCT Feature Control supported.
SCT Data Table supported.

Rapport des diagnostiques

Avant de passer à la partie la plus intéressante, allons jeter un coup d’œil aux résultats du test lancé, qui se trouve tout en bas du rapport :

Num Test_Description Status                  Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline    Completed without error 00%       18838           -
# 2 Short offline    Completed without error 00%       3               -

La ligne en gras est celle qui correspond au dernier test effectué. (Les tests les plus récents sont en haut). On voit donc que le test (court) s’est bien terminé (il reste 0% du test à accomplir), que le disque dur à fonctionné pendant 18838 heures depuis sa sortie d’usine, et qu’aucune erreur n’a été rencontré lors de ce test.

Etat de santé du disque

Passons maintenant à son état de santé général (ce n’est pas parce que le disque n’a pas rencontré d’erreurs bloquantes qu’il n’a pas de soucis… Il peut parfaitement fonctionner mais être en très mauvais état). Le paragraphe qui nous intéresse est le suivant:

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   100     100   062    Pre-fail Always    -              0
 2 Throughput_Performance   0x0025   100     100   040    Pre-fail Offline   -              0
 3 Spin_Up_Time             0x0023   246     100   033    Pre-fail Always    -              1
 4 Start_Stop_Count         0x0032   090     090   000    Old_age  Always    -              16044
 5 Reallocated_Sector_Ct    0x0033   100     100   005    Pre-fail Always    -              0
 7 Seek_Error_Rate          0x002f   100     100   067    Pre-fail Always    -              0
 8 Seek_Time_Performance    0x0025   100     100   040    Pre-fail Offline   -              0
 9 Power_On_Hours           0x0032   057     057   000    Old_age  Always    -              18838
 10 Spin_Retry_Count        0x0033   100     100   060    Pre-fail Always    -              0
 12 Power_Cycle_Count       0x0032   100     100   000    Old_age  Always    -              529
183 Runtime_Bad_Block       0x0032   100     100   000    Old_age  Always    -              0
184 End-to-End_Error        0x0033   100     100   097    Pre-fail Always    -              0
187 Reported_Uncorrect      0x0032   100     100   000    Old_age  Always    -              38655164417
188 Command_Timeout         0x0032   100     100   000    Old_age  Always    -              502524215296
190 Airflow_Temperature_Cel 0x0022   064     040   045    Old_age  Always In_the_past 36 (Min/Max 30/38)
191 G-Sense_Error_Rate      0x0032   099     099   000    Old_age  Always    -              292
192 Power-Off_Retract_Count 0x0032   100     100   000    Old_age  Always    -              4718664
193 Load_Cycle_Count        0x0032   088     088   000    Old_age  Always    -              123472
196 Reallocated_Event_Count 0x0032   100     100   000    Old_age  Always    -              0
197 Current_Pending_Sector  0x0032   100     100   000    Old_age  Always    -              0
198 Offline_Uncorrectable   0x0030   100     100   000    Old_age  Offline   -              0
199 UDMA_CRC_Error_Count    0x0036   100     100   000    Old_age  Always    -              0
223 Load_Retry_Count        0x002a   100     099   000    Old_age  Always    -              0

Ici j’ai mis en gras la colonne la plus importante (value). Le fonctionnement est très simple. Plus cette valeur est basse, et plus votre disque à un soucis. 100 est la valeur normale, et 0 c’est quand c’est tout cassé. Ici, en jetant un rapide coup d’oeil, on voit que le disque est plutôt en bonne forme. La valeur la plus faible est 57. Cela correspond au « power on hours ». Donc oui, le disque est vieux et à beaucoup tourné, mais il fonctionne toujours à la perfection. L’un des indicateurs qui le montre très bien est le nombre de secteurs qui ont eu besoin d’être ré-alloués (déplacés) sur le disque, ici zéro. (Sur la ligne rellocated Sector Ct, voir la colonne RAW Value qui donne la valeur réelle de ce paramètre).

Prenons un autre exemple, la température du disque. Son « état de santé » est à 64. Ce n’est pas génial mais ce n’est pas catastrophique. Le constructeur n’a prévu de lever une alarme que si cette valeur tombe en dessous de 45 (Threshold). (Je rappel que l’on parle toujours d’un indicateur, pas d’une température dans les premières colonnes). Or, la pire des valeurs enregistré est 40. Autrement dit, le disque à déjà « trop chauffé » au moins une fois dans sa vie.

Dernier exemple, la ligne « Power cycle count », comme son nom l’indique, compte le nombre de fois ou le disque à été mis sous tension. Ici ce n’est arrivé que 529 fois. En comparant avec le nombre d’heures d’activités, on en conclue que ce disque se trouve dans un ordinateur qui reste le plus souvent allumé.

Globalement ce disque est en parfaite condition (ne vous inquiétez pas si le votre montre un peu plus d’erreurs partout, tant que les valeurs de la colonne « value » ne sont pas trop basses, pas de panique.

Le log d’erreur

Il reste encore une partie qui peut vous inquiéter (souvent à tord), le log d’erreurs. Sur mon disque j’ai ceci :

SMART Error Log Version: 1
ATA Error Count: 1
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 1 occurred at disk power-on lifetime: 9390 hours (391 days + 6 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
— — — — — — —
10 41 80 40 cd b2 00 Error: IDNF at LBA = 0x00b2cd40 = 11717952

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 a0 00 c9 b7 40 00 6d+04:12:18.164 READ FPDMA QUEUED
60 00 48 00 c8 b7 40 00 6d+04:12:18.163 READ FPDMA QUEUED
60 00 40 00 c7 b7 40 00 6d+04:12:18.162 READ FPDMA QUEUED
60 00 38 00 c6 b7 40 00 6d+04:12:18.161 READ FPDMA QUEUED
60 00 30 00 c5 b7 40 00 6d+04:12:18.158 READ FPDMA QUEUED

Notez tout de suite qu’il s’agit d’une très vieille erreur, qui s’est produite lorsque le disque avait tourné 93390 heures. Bref, cela s’est produit il y a longtemps, et à pu être provoqué par n’importe quoi (perte brutale d’électricité ou autre). Rien d’affolant la dedans.

Conclusion

Voila, vous savez maintenant comment vérifier l’état de santé d’un disque dur. Je compléterai surement ce billet un jour avec des explications sur la commande « badblocks » qui permet de faire des tests beaucoup plus poussés (mais aussi beaucoup plus long) sur vos disques. Cette commande permet aussi de continuer à utiliser des disques très abîmés, mais c’est une chose que je vous déconseille très fortement. Si votre disque est trop fatigué, changez le ! (Avant que ce ne soit lui qui vous lâche. Car c’est toujours à ce moment la qu’on découvre que les sauvegardes ne contiennent tout ce qu’il aurait fallu conserver…)

Publié dans Geekitude