{"id":701,"date":"2017-05-19T12:50:22","date_gmt":"2017-05-19T10:50:22","guid":{"rendered":"https:\/\/hoper.dnsalias.net\/atdc\/?p=701"},"modified":"2019-07-12T16:44:49","modified_gmt":"2019-07-12T14:44:49","slug":"connaitre-letat-de-sante-de-son-disque-dur","status":"publish","type":"post","link":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/2017\/05\/19\/connaitre-letat-de-sante-de-son-disque-dur\/","title":{"rendered":"Connaitre l&rsquo;\u00e9tat de sant\u00e9 de son disque dur"},"content":{"rendered":"<p>M\u00eame avec de bonnes sauvegardes sous le coude, il est important d&rsquo;avoir une petite id\u00e9e de l&rsquo;\u00e9tat de ses disques durs. Bien sur, il n&rsquo;y a pas de miracles. On ne pourra jamais pr\u00e9voir \u00e0 coup sur une panne avant qu&rsquo;elle ne se produise. Mais dans le cas des disques dur, il existe tout de m\u00eame de tr\u00e8s bons indicateurs. Cela peut aussi servir si vous achetez un disque d&rsquo;occasion \u00e0 un particulier etc.<\/p>\n<p>Je pars du principe que vous \u00eates sous linux en ligne de commandes. Mais les informations donn\u00e9es ici restent valables quelque soit le logiciel utilis\u00e9. Les commandes suivantes n\u00e9cessitent les droits root. Donc commencer par passer root, ou n&rsquo;oubliez pas de rajouter sudo devant chacune des commandes.<\/p>\n<h2>Installation du logiciel<\/h2>\n<p><strong>apt-get install\u00a0smartmontools<\/strong><\/p>\n<p>A adapter bien sur en fonction de votre distribution. Peut \u00eatre m\u00eame que le logiciel est d\u00e9j\u00e0 install\u00e9. (V\u00e9rifier la pr\u00e9sence de la commande smartctl).<\/p>\n<h2>Utilisation<\/h2>\n<p>Il est possible de lancer deux type de diagnostiques automatique sur les disques dur. Un \u00ab\u00a0auto diagnostique\u00a0\u00bb court, qui prend g\u00e9n\u00e9ralement moins de 5 minutes. Et un long, qui prend facilement plusieurs heures (en fonction de la capacit\u00e9 du disque). Pour commencer, on va lancer un diagnostique court (pour la version longue, remplacer <strong>short<\/strong> par <strong>long<\/strong>)<\/p>\n<p><strong>smartctl &#8211;test=short \/dev\/sda<\/strong><br \/>\nsmartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-62-generic] (local build)<br \/>\nCopyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org<\/p>\n<p>=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===<br \/>\nSending command: \u00ab\u00a0Execute SMART Short self-test routine immediately in off-line mode\u00a0\u00bb.<br \/>\nDrive command \u00ab\u00a0Execute SMART Short self-test routine immediately in off-line mode\u00a0\u00bb successful.<br \/>\nTesting has begun.<br \/>\nPlease wait 2 minutes for test to complete.<\/p>\n<p>Comme vous pouvez le voir, la commande vous indique combien de temps il faudra patientez. Une fois que c&rsquo;est termin\u00e9, il est temps d&rsquo;aller voir le r\u00e9sultat. Comme vous allez le voir, les rapports sont assez verbeux, nous allons examiner tout cela paragraphe par paragraphe, mais pas forc\u00e9ment dans l&rsquo;ordre ou ils ont affich\u00e9s. La commande permettant de connaitre l&rsquo;\u00e9tat du disque \u00e0 un instant t est :<\/p>\n<p><strong>smartctl -a \/dev\/sda<\/strong><\/p>\n<h2>Interpr\u00e9tation des r\u00e9sultats<\/h2>\n<h3>Informations mat\u00e9rielles<\/h3>\n<p>Le premier paragraphe donne simplement des informations sur le disque (constructeur, mod\u00e8le, num\u00e9ro de s\u00e9rie, firmware etc).<\/p>\n<p>=== START OF INFORMATION SECTION ===<br \/>\nModel Family: Hitachi\/HGST Travelstar Z7K500<br \/>\nDevice Model: HGST HTS725050A7E630<br \/>\nSerial Number: TF1501WHKD1TZP<br \/>\nLU WWN Device Id: 5 000cca 77fefc1be<br \/>\nFirmware Version: GH2OA440<br \/>\nUser Capacity: 500 107 862 016 bytes [500 GB]<br \/>\nSector Sizes: 512 bytes logical, 4096 bytes physical<br \/>\nRotation Rate: 7200 rpm<br \/>\nForm Factor: 2.5 inches<br \/>\nDevice is: In smartctl database [for details use: -P show]<br \/>\nATA Version is: ACS-2, ATA8-ACS T13\/1699-D revision 6<br \/>\nSATA Version is: SATA 3.0, 3.0 Gb\/s (current: 3.0 Gb\/s)<br \/>\nLocal Time is: Fri May 19 10:25:55 2017 CEST<br \/>\nSMART support is: Available &#8211; device has SMART capability.<br \/>\nSMART support is: Enabled<\/p>\n<h3>Informations logicielles<\/h3>\n<p>Le second donne des informations sur les capacit\u00e9s logiciels du disque. En g\u00e9n\u00e9ral il n&rsquo;y a rien de bien passionnant dans cette section:<\/p>\n<p>=== START OF READ SMART DATA SECTION ===<br \/>\nSMART overall-health self-assessment test result: PASSED<br \/>\nSee vendor-specific Attribute list for marginal Attributes.<\/p>\n<p>General SMART Values:<br \/>\nOffline data collection status: (0x00) Offline data collection activity<br \/>\nwas never started.<br \/>\nAuto Offline Data Collection: Disabled.<br \/>\nSelf-test execution status: ( 0) The previous self-test routine completed<br \/>\nwithout error or no self-test has ever<br \/>\nbeen run.<br \/>\nTotal time to complete Offline<br \/>\ndata collection: ( 45) seconds.<br \/>\nOffline data collection<br \/>\ncapabilities: (0x51) SMART execute Offline immediate.<br \/>\nNo Auto Offline data collection support.<br \/>\nSuspend Offline collection upon new<br \/>\ncommand.<br \/>\nNo Offline surface scan supported.<br \/>\nSelf-test supported.<br \/>\nNo Conveyance Self-test supported.<br \/>\nSelective Self-test supported.<br \/>\nSMART capabilities: (0x0003) Saves SMART data before entering<br \/>\npower-saving mode.<br \/>\nSupports SMART auto save timer.<br \/>\nError logging capability: (0x01) Error logging supported.<br \/>\nGeneral Purpose Logging supported.<br \/>\nShort self-test routine<br \/>\nrecommended polling time: ( 2) minutes.<br \/>\nExtended self-test routine<br \/>\nrecommended polling time: ( 86) minutes.<br \/>\nSCT capabilities: (0x003d) SCT Status supported.<br \/>\nSCT Error Recovery Control supported.<br \/>\nSCT Feature Control supported.<br \/>\nSCT Data Table supported.<\/p>\n<h3>Rapport des diagnostiques<\/h3>\n<p>Avant de passer \u00e0 la partie la plus int\u00e9ressante, allons jeter un coup d\u2019\u0153il aux r\u00e9sultats du test lanc\u00e9, qui se trouve tout en bas du rapport :<\/p>\n<pre>Num Test_Description Status                  Remaining LifeTime(hours) LBA_of_first_error\r\n<strong># 1 Short offline    Completed without error 00%       18838           -<\/strong>\r\n# 2 Short offline    Completed without error 00%       3               -<\/pre>\n<p>La ligne en gras est celle qui correspond au dernier test effectu\u00e9. (Les tests les plus r\u00e9cents sont en haut). On voit donc que le test (court) s&rsquo;est bien termin\u00e9 (il reste 0% du test \u00e0 accomplir), que le disque dur \u00e0 fonctionn\u00e9 pendant 18838 heures depuis sa sortie d&rsquo;usine, et qu&rsquo;aucune erreur n&rsquo;a \u00e9t\u00e9 rencontr\u00e9 lors de ce test.<\/p>\n<h3>Etat de sant\u00e9 du disque<\/h3>\n<p>Passons maintenant \u00e0 son \u00e9tat de sant\u00e9 g\u00e9n\u00e9ral (ce n&rsquo;est pas parce que le disque n&rsquo;a pas rencontr\u00e9 d&rsquo;erreurs bloquantes qu&rsquo;il n&rsquo;a pas de soucis&#8230; Il peut parfaitement fonctionner mais \u00eatre en tr\u00e8s mauvais \u00e9tat). Le paragraphe qui nous int\u00e9resse est le suivant:<\/p>\n<pre>SMART Attributes Data Structure revision number: 16\r\nVendor Specific SMART Attributes with Thresholds:\r\nID# ATTRIBUTE_NAME          FLAG     <strong>VALUE<\/strong>   WORST THRESH   TYPE   UPDATED   WHEN_FAILED   RAW_VALUE\r\n 1 Raw_Read_Error_Rate      0x002f   <strong>100<\/strong>     100   062    Pre-fail Always    -              0\r\n 2 Throughput_Performance   0x0025   <strong>100<\/strong>     100   040    Pre-fail Offline   -              0\r\n 3 Spin_Up_Time             0x0023   <strong>246<\/strong>     100   033    Pre-fail Always    -              1\r\n 4 Start_Stop_Count         0x0032   <strong>090<\/strong>     090   000    Old_age  Always    -              16044\r\n 5 Reallocated_Sector_Ct    0x0033   <strong>100<\/strong>     100   005    Pre-fail Always    -              0\r\n 7 Seek_Error_Rate          0x002f   <strong>100<\/strong>     100   067    Pre-fail Always    -              0\r\n 8 Seek_Time_Performance    0x0025   <strong>100<\/strong>     100   040    Pre-fail Offline   -              0\r\n 9 Power_On_Hours           0x0032   <strong>057<\/strong>     057   000    Old_age  Always    -              18838\r\n 10 Spin_Retry_Count        0x0033   <strong>100<\/strong>     100   060    Pre-fail Always    -              0\r\n 12 Power_Cycle_Count       0x0032   <strong>100<\/strong>     100   000    Old_age  Always    -              529\r\n183 Runtime_Bad_Block       0x0032   <strong>100<\/strong>     100   000    Old_age  Always    -              0\r\n184 End-to-End_Error        0x0033   <strong>100<\/strong>     100   097    Pre-fail Always    -              0\r\n187 Reported_Uncorrect      0x0032   <strong>100<\/strong>     100   000    Old_age  Always    -              38655164417\r\n188 Command_Timeout         0x0032   <strong>100<\/strong>     100   000    Old_age  Always    -              502524215296\r\n190 Airflow_Temperature_Cel 0x0022   <strong>064<\/strong>     040   045    Old_age  Always In_the_past 36 (Min\/Max 30\/38)\r\n191 G-Sense_Error_Rate      0x0032   <strong>099<\/strong>     099   000    Old_age  Always    -              292\r\n192 Power-Off_Retract_Count 0x0032   <strong>100<\/strong>     100   000    Old_age  Always    -              4718664\r\n193 Load_Cycle_Count        0x0032   <strong>088<\/strong>     088   000    Old_age  Always    -              123472\r\n196 Reallocated_Event_Count 0x0032   <strong>100<\/strong>     100   000    Old_age  Always    -              0\r\n197 Current_Pending_Sector  0x0032   <strong>100<\/strong>     100   000    Old_age  Always    -              0\r\n198 Offline_Uncorrectable   0x0030   <strong>100<\/strong>     100   000    Old_age  Offline   -              0\r\n199 UDMA_CRC_Error_Count    0x0036   <strong>100<\/strong>     100   000    Old_age  Always    -              0\r\n223 Load_Retry_Count        0x002a   <strong>100<\/strong>     099   000    Old_age  Always    -              0<\/pre>\n<p>Ici j&rsquo;ai mis en gras la colonne la plus importante (value). Le fonctionnement est tr\u00e8s simple. Plus cette valeur est basse, et plus votre disque \u00e0 un soucis. 100 est la valeur normale, et 0 c&rsquo;est quand c&rsquo;est tout cass\u00e9. Ici, en jetant un rapide coup d&rsquo;oeil, on voit que le disque est plut\u00f4t en bonne forme. La valeur la plus faible est 57. Cela correspond au \u00ab\u00a0power on hours\u00a0\u00bb. Donc oui, le disque est vieux et \u00e0 beaucoup tourn\u00e9, mais il fonctionne toujours \u00e0 la perfection. L&rsquo;un des indicateurs qui le montre tr\u00e8s bien est le nombre de secteurs qui ont eu besoin d&rsquo;\u00eatre r\u00e9-allou\u00e9s (d\u00e9plac\u00e9s) sur le disque, ici z\u00e9ro. (Sur la ligne rellocated Sector Ct, voir la colonne RAW Value qui donne la valeur r\u00e9elle de ce param\u00e8tre).<\/p>\n<p>Prenons un autre exemple, la temp\u00e9rature du disque. Son \u00ab\u00a0\u00e9tat de sant\u00e9\u00a0\u00bb est \u00e0 64. Ce n&rsquo;est pas g\u00e9nial mais ce n&rsquo;est pas catastrophique. Le constructeur n&rsquo;a pr\u00e9vu de lever une alarme que si cette valeur tombe en dessous de 45 (Threshold). (Je rappel que l&rsquo;on parle toujours d&rsquo;un indicateur, pas d&rsquo;une temp\u00e9rature dans les premi\u00e8res colonnes). Or, la pire des valeurs enregistr\u00e9 est 40. Autrement dit, le disque \u00e0 d\u00e9j\u00e0 \u00ab\u00a0trop chauff\u00e9\u00a0\u00bb au moins une fois dans sa vie.<\/p>\n<p>Dernier exemple, la ligne \u00ab\u00a0Power cycle count\u00a0\u00bb, comme son nom l&rsquo;indique, compte le nombre de fois ou le disque \u00e0 \u00e9t\u00e9 mis sous tension. Ici ce n&rsquo;est arriv\u00e9 que 529 fois. En comparant avec le nombre d&rsquo;heures d&rsquo;activit\u00e9s, on en conclue que ce disque se trouve dans un ordinateur qui reste le plus souvent allum\u00e9.<\/p>\n<p>Globalement ce disque est en parfaite condition (ne vous inqui\u00e9tez pas si le votre montre un peu plus d&rsquo;erreurs partout, tant que les valeurs de la colonne \u00ab\u00a0value\u00a0\u00bb ne sont pas trop basses, pas de panique.<\/p>\n<h3>Le log d&rsquo;erreur<\/h3>\n<p>Il reste encore une partie qui peut vous inqui\u00e9ter (souvent \u00e0 tord), le log d&rsquo;erreurs. Sur mon disque j&rsquo;ai ceci :<\/p>\n<p>SMART Error Log Version: 1<br \/>\nATA Error Count: 1<br \/>\nCR = Command Register [HEX]<br \/>\nFR = Features Register [HEX]<br \/>\nSC = Sector Count Register [HEX]<br \/>\nSN = Sector Number Register [HEX]<br \/>\nCL = Cylinder Low Register [HEX]<br \/>\nCH = Cylinder High Register [HEX]<br \/>\nDH = Device\/Head Register [HEX]<br \/>\nDC = Device Command Register [HEX]<br \/>\nER = Error register [HEX]<br \/>\nST = Status register [HEX]<br \/>\nPowered_Up_Time is measured from power on, and printed as<br \/>\nDDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,<br \/>\nSS=sec, and sss=millisec. It \u00ab\u00a0wraps\u00a0\u00bb after 49.710 days.<\/p>\n<p>Error 1 occurred at disk power-on lifetime: 9390 hours (391 days + 6 hours)<br \/>\nWhen the command that caused the error occurred, the device was active or idle.<\/p>\n<p>After command completion occurred, registers were:<br \/>\nER ST SC SN CL CH DH<br \/>\n&#8212; &#8212; &#8212; &#8212; &#8212; &#8212; &#8212;<br \/>\n10 41 80 40 cd b2 00 Error: IDNF at LBA = 0x00b2cd40 = 11717952<\/p>\n<p>Commands leading to the command that caused the error were:<br \/>\nCR FR SC SN CL CH DH DC Powered_Up_Time Command\/Feature_Name<br \/>\n&#8212; &#8212; &#8212; &#8212; &#8212; &#8212; &#8212; &#8212; &#8212;&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n60 00 a0 00 c9 b7 40 00 6d+04:12:18.164 READ FPDMA QUEUED<br \/>\n60 00 48 00 c8 b7 40 00 6d+04:12:18.163 READ FPDMA QUEUED<br \/>\n60 00 40 00 c7 b7 40 00 6d+04:12:18.162 READ FPDMA QUEUED<br \/>\n60 00 38 00 c6 b7 40 00 6d+04:12:18.161 READ FPDMA QUEUED<br \/>\n60 00 30 00 c5 b7 40 00 6d+04:12:18.158 READ FPDMA QUEUED<\/p>\n<p>Notez tout de suite qu&rsquo;il s&rsquo;agit d&rsquo;une tr\u00e8s vieille erreur, qui s&rsquo;est produite lorsque le disque avait tourn\u00e9 93390 heures. Bref, cela s&rsquo;est produit il y a longtemps, et \u00e0 pu \u00eatre provoqu\u00e9 par n&rsquo;importe quoi (perte brutale d&rsquo;\u00e9lectricit\u00e9 ou autre). Rien d&rsquo;affolant la dedans.<\/p>\n<h2>Conclusion<\/h2>\n<p>Voila, vous savez maintenant comment v\u00e9rifier l&rsquo;\u00e9tat de sant\u00e9 d&rsquo;un disque dur. Je compl\u00e9terai surement ce billet un jour avec des explications sur la commande \u00ab\u00a0badblocks\u00a0\u00bb qui permet de faire des tests beaucoup plus pouss\u00e9s (mais aussi beaucoup plus long) sur vos disques. Cette commande permet aussi de continuer \u00e0 utiliser des disques tr\u00e8s ab\u00eem\u00e9s, mais c&rsquo;est une chose que je vous d\u00e9conseille tr\u00e8s fortement. Si votre disque est trop fatigu\u00e9, changez le ! (Avant que ce ne soit lui qui vous l\u00e2che. Car c&rsquo;est toujours \u00e0 ce moment la qu&rsquo;on d\u00e9couvre que les sauvegardes ne contiennent tout ce qu&rsquo;il aurait fallu conserver&#8230;)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00eame avec de bonnes sauvegardes sous le coude, il est important d&rsquo;avoir une petite id\u00e9e de l&rsquo;\u00e9tat de ses disques durs. Bien sur, il n&rsquo;y a pas de miracles. On ne pourra jamais pr\u00e9voir \u00e0 coup sur une panne avant qu&rsquo;elle ne se produise. Mais dans le cas des disques dur, il existe tout de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1567,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-701","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-geekitude"],"_links":{"self":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts\/701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/comments?post=701"}],"version-history":[{"count":9,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts\/701\/revisions"}],"predecessor-version":[{"id":1262,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts\/701\/revisions\/1262"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/media\/1567"}],"wp:attachment":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/media?parent=701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/categories?post=701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/tags?post=701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}