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…)