![]() |
SIG 11 | ARTICLES | DOCUMENTS | MEMBRES | LIENS |
Tout savoir de ses disques durs avec smartmontoolsProfesseur de physique à l'université de Milwaukee, Bruce Allen s'est retrouvé aux commandes d'une ferme de 600 disques durs ATA, garnis de 50 To de données dont il valait mieux assurer la pérennité. Voilà pourquoi il s'est intéressé à SMART, cet ensemble de routines présentes en gros depuis 1996 dans les disques durs ATA comme SCSI et qui, analysant leurs paramètres physiques les plus critiques, permettent de prévoir une éventuelle défaillance avec une étonnante efficacité. Et, pour sortir de l'ombre une fonction plutôt méconnue malgré son utilité, et aider à l'interprétation des messages obscurs qu'elle délivre, il a développé smartmontools. Élémentaire à configurer, très simple à utiliser, smartmontools fournit sur le comportement intime de son disque dur une quantité d'informations qui frôle l'indécence. le daemon : smartdPour exécuter sa tâche, smartmontools se divise en deux : un daemon, smartd, analyse périodiquement, toutes les 30 minutes par défaut, les paramètres fournis par le disque dur, chacun étant répertorié sous un numéro d'attribut qui lui est propre ; notons au passage que, puisque le fabricant ne publie pas toujours la documentation nécessaire, smartmontools échouera parfois à interpréter certains paramètres d'un disque. On le configure simplement à l'aide du fichier smartd.conf, classiquement situé dans le répertoire /etc. Au départ, ce fichier se compose d'une directive unique : DEVICESCAN.Il vaut mieux éviter d'en rester là, car elle ordonne à smartd de rechercher les 12 disques ATA, et les 26 SCSI, potentiellement présent sur son système, et de faire un compte-rendu scrupuleux de ses trouvailles dans /var/log/messages, ce qui produit un résultat de cet ordre : Dec 22 14:57:37 lazare smartd[1007]: smartd version 5.1-18 Copyright (C) 2002-3 Bruce Allen Dec 22 14:57:37 lazare smartd[1007]: Home page is http://smartmontools.sourceforge.net/ Dec 22 14:57:37 lazare smartd[1007]: Opened configuration file /etc/smartd.conf Dec 22 14:57:38 lazare smartd[1007]: Drive: DEVICESCAN, implied '-a' Directive on line 9 of file /etc/smartd.conf Dec 22 14:57:38 lazare smartd[1007]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices Dec 22 14:57:38 lazare smartd[1007]: Device: /dev/hda, opened Dec 22 14:57:38 lazare smartd[1007]: Device: /dev/hda, found in smartd database. Dec 22 14:57:38 lazare smartd[1007]: Device: /dev/hda, is SMART capable. Adding to "monitor" list. Dec 22 14:57:38 lazare smartd[1007]: Device: /dev/hdb, opened Dec 22 14:57:38 lazare smartd[1007]: Device: /dev/hdb, not found in smartd database. Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdb, does not support SMART Self-test Log. Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdb, does not support SMART Error Log. Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdb, is SMART capable. Adding to "monitor" list. Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdc, opened Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdc, not found in smartd database. Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdc, appears to lack SMART, use '-T permissive' Directive to try anyway. Dec 22 14:57:39 lazare smartd[1007]: Unable to register ATA device /dev/hdc at line 9 of file /etc/smartd.conf Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdd, opened Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdd, not found in smartd database. Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdd, appears to lack SMART, use '-T permissive' Directive to try anyway. Dec 22 14:57:39 lazare smartd[1007]: Unable to register ATA device /dev/hdd at line 9 of file /etc/smartd.conf Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hde, no such device or address, open() failed Dec 22 14:57:39 lazare smartd[1007]: Unable to register ATA device /dev/hde at line 9 of file etc/smartd.conf Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdf, No such device or address, open() failed Dec 22 14:57:39 lazare smartd[1007]: Unable to register ATA device /dev/hdf at line 9 of file /etc/smartd.conf Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdg, No such device or address, open() failed Dec 22 14:57:39 lazare smartd[1007]: Unable to register ATA device /dev/hdg at line 9 of file /etc/smartd.conf Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdh, No such device or address, open() failed Dec 22 14:57:39 lazare smartd[1007]: Unable to register ATA device /dev/hdh at line 9 of file /etc/smartd.conf Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdi, No such device or address, open() failed Dec 22 14:57:39 lazare smartd[1007]: Unable to register ATA device /dev/hdi at line 9 of file /etc/smartd.conf Dec 22 14:57:39 lazare smartd[1007]: Device: /dev/hdj, No such device or address, open() failedEt ainsi de suite, jusqu'à épuisement. Pour mettre fin à ces bavardages inutiles, une petite configuration s'impose ; elle est très simple. Au minimum, il suffit, après avoir supprimé ou commenté avec un # DEVICESCAN, d'indiquer, chacun sur sa propre ligne, les périphériques à surveiller, /dev/hda et /dev/hdb par exemple, si l'on dispose de deux disques ATA en maître et esclave sur la première interface IDE. Il ne sera pas inutile d'ajouter quelques paramètres, comme ceux-ci :
/dev/hda -d ata -a -m moi@chez.moi -I 194 /dev/hdb -d ata -a -m moi@chez.moi -I 231Si tout était aussi facile, Linux serait beaucoup moins amusant. la commande : smartctlGuère plus difficile d'emploi, smartcl implique de posséder les privilèges du super-utilisateur ; la syntaxe reste classique, la commande étant suivie des options appropriées, puis de l'identification du périphérique concerné. Commençont par le commencement, avec :smartctl -i /dev/hdaqui nous permettra d'identifier notre disque : smartctl version 5.0-24 Copyright (C) 2002 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Device Model: IC35L120AVVA07-0 Serial Number: VNC605A6GG8W8A Firmware Version: VA6OA52A ATA Version is: 5 ATA Standard is: ATA/ATAPI-5 T13 1321D revision 1 SMART support is: Available - device has SMART capability. SMART support is: EnabledLes routines SMART du disque sont actives ; on peut donc passer à l'étape suivante, la collecte des données : smartctl -t long /dev/hdaFort obligeamment, smartmontools traduit en langage humain la commande que l'on a lancée, et nous prévient que son exécution prendra un certain temps. === 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 13 minutes for test to complete. Use smartctl -X to abort test.En fait, l'option -t lance un test qui peut connaître plusieurs valeurs : offline, qui va simplement mettre à jour les valeurs des paramètres, short, qui vérifiera en plus l'état électrique et mécanique du disque, et ajoutera une entrée dans le journal des tests du disque, long, plus approfondi, et dont la durée peut, en fonction de la taille du disque, dépasser les trente minutes, et conveyance, spécialement destiné à repérer si le disque a été endommagé durant son transport, et qui marche visiblement seulement sur du matériel très récent. Chaque type de test est mutuellement exclusif, et peut sans danger être lancé sur un équipement en cours d'utilisation. Il ne reste plus qu'à prendre connaissance des résultats, avec l'option -l pour log. Celle-ci s'accompagne de deux attributs principaux : pour les pressés, selftest dira en une ligne si le test s'est terminé sans erreur : quant aux inquiets, error leur montrera que même un disque en parfait état connaît un petit souci de temps à autre : smatctl -l error /dev/hda smartctl version 5.1-18 Copyright (C) 2002-3 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF READ SMART DATA SECTION === 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] Timestamp = decimal seconds since the previous disk power-on. Note: timestamp "wraps" after 2^32 msec = 49.710 days. Error 3 occurred at disk power-on lifetime: 4023 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 05 e0 90 fe af Commands leading to the command that caused the error were: CR FR SC SN CL CH DH DC Timestamp Command/Feature_Name -- -- -- -- -- -- -- -- --------- -------------------- fe a2 05 e0 90 fe ef 02 27872.000 [VENDOR SPECIFIC] fe a1 00 00 00 00 a0 02 27872.000 [VENDOR SPECIFIC] fe a6 50 60 00 00 a1 02 27871.800 [VENDOR SPECIFIC] fe a6 50 60 00 00 a1 02 27871.600 [VENDOR SPECIFIC] fe a6 50 60 00 00 a1 02 27871.400 [VENDOR SPECIFIC] Error 2 occurred at disk power-on lifetime: 4022 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 05 e0 90 fe af Commands leading to the command that caused the error were: CR FR SC SN CL CH DH DC Timestamp Command/Feature_Name -- -- -- -- -- -- -- -- --------- -------------------- fe a2 05 e0 90 fe ef 02 26491.000 [VENDOR SPECIFIC] fe a1 00 00 00 00 a0 02 26491.000 [VENDOR SPECIFIC] fe a6 50 60 00 00 a1 02 26490.800 [VENDOR SPECIFIC] fe a6 50 60 00 00 a1 02 26490.600 [VENDOR SPECIFIC] fe a6 50 60 00 00 a1 02 26490.400 [VENDOR SPECIFIC] Error 1 occurred at disk power-on lifetime: 1457 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 05 e0 90 fe af Commands leading to the command that caused the error were: CR FR SC SN CL CH DH DC Timestamp Command/Feature_Name -- -- -- -- -- -- -- -- --------- -------------------- fe a2 05 e0 90 fe ef 02 15590.300 [VENDOR SPECIFIC] fe a1 00 00 00 00 a0 02 15590.300 [VENDOR SPECIFIC] fe a6 50 60 00 00 a1 02 15590.100 [VENDOR SPECIFIC] fe a6 50 60 00 00 a1 02 15589.900 [VENDOR SPECIFIC] fe a6 50 60 00 00 a1 02 15589.700 [VENDOR SPECIFIC]Bon, trois erreurs en 4023 heures de fonctionnement, on a vu pire. que faire quand tout va malVoyons, justemment, quelques exemples de disques en bien moins bon état. A tout seigneur tout honneur, commençont par un exemplaire de la fameuse série des IBM Dekstar 75GXP, qui causa tant d'angoisse chez tant d'utilisateurs, et que l'on soupçonne d'avoir conduit l'inventeur du disque dur à revendre son activité à Hitachi. Smartmontools dispose d'une option simple, -a pour all, qui permet à smartctl de recueillir toutes les informations possibles sur le disque. On peut en fournir un extrait révélateur :smartctl -a /dev/hda Error 663 occurred at disk power-on lifetime: 3964 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 59 01 6a 35 17 e0 Commands leading to the command that caused the error were: CR FR SC SN CL CH DH DC Timestamp Command/Feature_Name -- -- -- -- -- -- -- -- --------- -------------------- 20 00 01 6a 35 17 e0 00 7845.000 READ SECTOR(S) 10 00 01 01 ff ff a0 00 7844.900 RECALIBRATE [OBS-4] 20 00 01 01 00 00 a0 04 7844.700 READ SECTOR(S) 20 00 01 69 35 17 e0 00 7842.500 READ SECTOR(S) 10 00 01 01 00 00 a0 00 7842.400 RECALIBRATE [OBS-4] Error 662 occurred at disk power-on lifetime: 3964 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 59 01 69 35 17 e0 Commands leading to the command that caused the error were: CR FR SC SN CL CH DH DC Timestamp Command/Feature_Name -- -- -- -- -- -- -- -- --------- -------------------- 20 00 01 69 35 17 e0 00 7836.700 READ SECTOR(S) 10 00 01 01 ff ff a0 00 7836.600 RECALIBRATE [OBS-4] 20 00 01 01 00 00 a0 04 7836.400 READ SECTOR(S) 20 00 01 68 35 17 e0 00 7834.200 READ SECTOR(S) 10 00 01 01 00 00 a0 00 7834.100 RECALIBRATE [OBS-4] Error 661 occurred at disk power-on lifetime: 3964 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 59 01 68 35 17 e0 Commands leading to the command that caused the error were: CR FR SC SN CL CH DH DC Timestamp Command/Feature_Name -- -- -- -- -- -- -- -- --------- -------------------- 20 00 01 68 35 17 e0 00 7828.400 READ SECTOR(S) 10 00 01 01 ff ff a0 00 7828.300 RECALIBRATE [OBS-4] 20 00 01 01 00 00 a0 04 7828.100 READ SECTOR(S) 20 00 01 67 35 17 e0 00 7825.900 READ SECTOR(S) 10 00 01 01 00 00 a0 00 7825.800 RECALIBRATE [OBS-4] Error 660 occurred at disk power-on lifetime: 3964 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 59 01 67 35 17 e0 Commands leading to the command that caused the error were: CR FR SC SN CL CH DH DC Timestamp Command/Feature_Name -- -- -- -- -- -- -- -- --------- -------------------- 20 00 01 67 35 17 e0 00 7820.100 READ SECTOR(S) 10 00 01 01 ff ff a0 00 7820.000 RECALIBRATE [OBS-4] 20 00 01 01 00 00 a0 04 7819.800 READ SECTOR(S) 20 00 01 66 35 17 e0 00 7817.600 READ SECTOR(S) 10 00 01 01 00 00 a0 00 7817.500 RECALIBRATE [OBS-4] Error 659 occurred at disk power-on lifetime: 3964 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 59 01 66 35 17 e0 Commands leading to the command that caused the error were: CR FR SC SN CL CH DH DC Timestamp Command/Feature_Name -- -- -- -- -- -- -- -- --------- -------------------- 20 00 01 66 35 17 e0 00 7811.800 READ SECTOR(S) 10 00 01 01 ff ff a0 00 7811.700 RECALIBRATE [OBS-4] 20 00 01 01 00 00 a0 04 7811.500 READ SECTOR(S) 20 00 01 65 35 17 e0 00 7809.300 READ SECTOR(S) 10 00 01 01 00 00 a0 00 7809.200 RECALIBRATE [OBS-4]Seules, les cinq dernières erreurs sont détaillées par smartctl, ce qui vaut mieux, compte tenu de leur nombre. On constate qu'elles se produisent toutes au même moment, et concernent toute le recalibrage des têtes. Ceux qui en ont fait l'expérience identifieront là ce terrible grincement, signe de mort certaine pour une quantité indéterminée de données. Cela dit, pour autant, le disque n'est pas considéré comme inutilisable. Voyons donc, toujours avec la même commande, le compte-rendu de mort clinique d'un Maxtor 2B020H1 : === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: FAILED! Drive failure expected in less than 24 hours. SAVE ALL DATA. See vendor-specific Attribute list for failed 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: ( 64) The previous self-test completed having a test element that failed and the test element that failed is not known. Total time to complete Offline data collection: ( 30) seconds. Offline data collection capabilities: (0x1b) 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. 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. No General Purpose Logging support. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 13) minutes. 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 3 Spin_Up_Time 0x0027 234 234 063 Pre-fail Always - 5199 4 Start_Stop_Count 0x0032 253 253 000 Old_age Always - 216 5 Reallocated_Sector_Ct 0x0033 016 016 063 Pre-fail Always FAILING_NOW 598 6 Read_Channel_Margin 0x0001 253 253 100 Pre-fail Offline - 0 7 Seek_Error_Rate 0x000a 253 216 000 Old_age Always - 1 8 Seek_Time_Performance 0x0027 250 241 187 Pre-fail Always - 64201 9 Power_On_Hours 0x0032 253 251 000 Old_age Always - 154 10 Spin_Retry_Count 0x002b 253 252 223 Pre-fail Always - 0 11 Calibration_Retry_Count 0x002b 253 252 223 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 251 251 000 Old_age Always - 811 192 Power-Off_Retract_Count 0x0032 253 253 000 Old_age Always - 1 193 Load_Cycle_Count 0x0032 253 253 000 Old_age Always - 2158 194 Temperature_Celsius 0x0032 253 253 000 Old_age Always - 0 195 Hardware_ECC_Recovered 0x000a 253 252 000 Old_age Always - 34 196 Reallocated_Event_Count 0x0008 253 253 000 Old_age Offline - 0 197 Current_Pending_Sector 0x0008 253 253 000 Old_age Offline - 0 198 Offline_Uncorrectable 0x0008 253 253 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0008 199 199 000 Old_age Offline - 0 200 Multi_Zone_Error_Rate 0x000a 253 252 000 Old_age Always - 0 201 Soft_Read_Error_Rate 0x000a 253 249 000 Old_age Always - 23 202 TA_Increase_Count 0x000a 253 251 000 Old_age Always - 0 203 Run_Out_Cancel 0x000b 253 252 180 Pre-fail Always - 0 204 Shock_Count_Write_Opern 0x000a 253 252 000 Old_age Always - 0 205 Shock_Rate_Write_Opern 0x000a 253 252 000 Old_age Always - 0 207 Spin_High_Current 0x002a 253 252 000 Old_age Always - 0 208 Spin_Buzz 0x002a 253 252 000 Old_age Always - 0 209 Offline_Seek_Performnce 0x0024 253 253 000 Old_age Offline - 0 99 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0 100 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0 101 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0Le résultat, un brin alarmiste, fournit un tableau d'ensemble des attributs mesurés, et permet d'identifier le fautif, dans la colonne WHEN_FAILED : le quota de secteurs tenus en réserve pour remplacer les secteurs défectueux est épuisé, ce qui est quand même profondément anormal sur un disque à peine vieux de plus d'un an, et signale probablement une dégradation accélérée de la surface des plateaux. Que faire alors ? Sur le site du fabricant, télécharger son utilitaire de test, confirmer que le disque est bien hors service, noter le numéro d'erreur et suivre la procédure de retour de marchandise. Sauf exception, les disques IDE sont garantis trois ans ; d'après mon expérience, Maxtor comme Seagate assurent la réparation ou le remplacement de l'objet défectueux dans un délai de quatre semaines, sans autre frais que l'expédition du disque dans un emballage approprié, en Irlande pour Maxtor, aux Pays-Bas pour Seagate. En général, ça vaut le coup. Denis Berger, 29 janvier 2004 |
SIG 11 | ARTICLES | DOCUMENTS | MEMBRES | LIENS |