Smartmontools
Faire des sauvegardes c'est bien mais surveiller ces disques c'est vital et nombreux sont ceux qui l'oublie.
Pour ce faire, il existe un utilitaire très simple disponible sur la quasi-totalité des distributions GNU/Linux : Smartmontools.
Pour ceux qui connaissent déjà, cet article n'apporte que peu de choses par rapports à l'existant et pour beaucoup une impression de déjà vu se fera sentir.
Cependant pour les autres, il est toujours bon de rappeler qu'une solution de surveillance des disques durs existe.
Smartmontools est basé sur la technologie S.M.A.R.T intégré sur la plupart des disques durs récents. SMART c'est une création de Compaq dans le but de fournir plusieurs indicateurs sur l'état d'un disque dur de manière instantanée. Les disques durs sont mécaniques (exceptés les SSD) et malheureusement ils veillissent et s'usent, l'idée c'est que les pannes matérielles sont dues en majorité à cette vieillesse et qu'elles deviennent prévisibles si on y prend garde.
Il n'y a pas vraiment de standard pour SMART, seulement des règles de bonnes conduites entre constructeurs et il sera parfois impossible d'utiliser SMART pour cause d'implémentations différentes. Wikipedia pourra vous en dire plus et mieux le sujet. (Faites des dons à Wikipedia !)
Néanmoins smartmontools gère correctement la plupart d'entre eux et c'est tant mieux pour nous. Cet outil fonctionne de deux manières :
- Sporadiquement via la ligne de commande pour connaitre la qualité d'un disque dur avant de l'installer ou par exemple en cas de maintenance du matériel.
- En continu grâce a un démon qui surveillera les dégradations du ou des disques. Exemple pour un serveur en production.
1. Utilisation manuelle
Ici tout est fait en root mais sudo marche tout autant
Comme d'habitude l'installation via votre gestionnaire de paquet n'est pas bien méchant :
# apt-get install smartmontools
L'outil smartctl permet de lancer des tests, d'en visualiser les résultats et d'avoir tout un tas d'informations sur un device.
L'option -t permet de lancer des tests court ou long. Dans chacun des cas, l'outil vous informe de la durée approximative du test. Il peut se tromper mais c'est assez rare et est plutôt un signe précurseur d'une panne.
# smartctl -t long /dev/sda [...] "Please wait xx minutes for test to complete." # smartctl -t short /dev/sda [...]
Il y a d'autres tests, par exemple vérifier seulement une portion du disque, mais le plus pertinent dans le cadre d'un check est, à mon avis, le test long. Pour tout le reste, il y a le man
C'est difficile de connaitre la fin exacte d'un test mais on peut, de temps à autres vérifier l'avancement de celui-ci :
# smartctl -a /dev/sda | grep "Self-test execution" -A 1 Self-test execution status: ( 247) Self-test routine in progress... 70% of test remaining.
L'option -l liste des résultats suite à ces tests :
# smartctl -l selftest /dev/sda smartctl 5.39 2009-09-20 r2920 [x86_64-unknown-linux-gnu] (local build) Copyright (C) 2002-9 by Bruce Allen, http://smartmontools.sourceforge.net === START OF READ SMART DATA SECTION === SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed without error 00% 7113 - # 2 Short offline Completed without error 00% 0 -
Ici aussi d'autres choix que selftest sont possibles, j'apprécie "-l error" pour ma part mais "-l selftest" est suffisant dans beaucoup de cas.
Une fois vos tests passés et s'il n'y a pas d'erreur vous pouvez vous arrêter là.
En revanche, en cas d'alerte ou tout simplement si vous êtes un peu curieux (mais vous ne seriez pas ici autrement) alors vous pouvez utiliser les options -a et -A.
L'option -a est très verbeuse et pas forcément lisible. Je ne l'utilise que rarement et préfère -A qui fournit toutes les mesures supportées par le disque :
$ smartctl -A /dev/sda smartctl 5.39 2009-09-20 r2920 [x86_64-unknown-linux-gnu] (local build) Copyright (C) 2002-9 by Bruce Allen, http://smartmontools.sourceforge.net === START OF READ SMART DATA SECTION === 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 0x000f 100 100 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0007 253 253 025 Pre-fail Always - 4544 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 413 5 Reallocated_Sector_Ct 0x0033 253 253 010 Pre-fail Always - 0 7 Seek_Error_Rate 0x000e 253 253 000 Old_age Always - 0 8 Seek_Time_Performance 0x0024 253 253 000 Old_age Offline - 0 9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 7302 10 Spin_Retry_Count 0x0032 253 253 000 Old_age Always - 0 11 Calibration_Retry_Count 0x0012 253 253 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 231 13 Read_Soft_Error_Rate 0x000e 100 100 000 Old_age Always - 19266754 184 Unknown_Attribute 0x0033 253 253 099 Pre-fail Always - 0 187 Reported_Uncorrect 0x0032 253 253 000 Old_age Always - 0 188 Unknown_Attribute 0x0032 253 253 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0022 148 148 000 Old_age Always - 30 (Lifetime Min/Max 8/30) 194 Temperature_Celsius 0x0022 148 148 000 Old_age Always - 30 (Lifetime Min/Max 8/30) 195 Hardware_ECC_Recovered 0x001a 100 100 000 Old_age Always - 19266754 196 Reallocated_Event_Count 0x0032 253 253 000 Old_age Always - 0 197 Current_Pending_Sector 0x0012 253 253 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 253 253 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x000a 100 100 000 Old_age Always - 0 201 Soft_Read_Error_Rate 0x000a 100 100 000 Old_age Always - 0 202 TA_Increase_Count 0x0032 253 253 000 Old_age Always - 0
On trouve un tas de façon de lire ces chiffres, tout le monde y va de son petit commentaire. Certains vous diront de surveiller particulièrement Power_On_Hours ou Reallocated_Sector_Ct ou encore Uncorrectable Sector Count ... Ce n'est pas faux mais je crois que l'ensemble des indicateurs doit être lue et l'analyse de ceux-ci doit rester personnelle. Pour des détails la page Wikipedia de S.M.A.R.T traduit et commente très bien ces messages.
2. Utilisation démoniaque
La seconde façon d'utiliser smartmontools est de le daemon-iser et pour cela, point n'est nécessaire un quelconque sortilège puisque le démon est installé en même temps que l'outil de base smartcl (partie 1). Il ne reste donc qu'à le configurer.
L'activation du démon se fait dans le fichier /etc/default/smartmontools en décommentant la ligne :
start_smartd=yes
Tout le reste de la configuration dépend de /etc/smartd.conf . Par défaut une configuration est présente sur Debian. Pour les autres distributions, je ne saurais dire. Celle-ci consiste en une seule ligne qui scannes les disques pour connaitre ceux sur lesquels SMART est activé et les analysera en transmettant les résultats à root.
DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner
Pour ma part, je préfère lister explicitement les disques à surveiller et commenter la ligne par défaut, d'une part parce que je veux pas analyser certains dinosaures et d'autres part parce que les indicateurs de température ne m'intéressent pas :
/dev/sda -d ata -a -m hinault@gmail.com -I 194 /dev/sdb -d ata -a -m hinault@gmail.com -I 194 /dev/sdc -d ata -a -m hinault@gmail.com
L'option -I ignore l'attribut 194 qui correspond à la température sur deux des disques.
L'option -d force le type de device a "ata" parce qu'il m'est arrivé que smartmontools n'arrive pas à me détecter le type de disque.
L'option -a lance la batterie complète de tests. Paramétrer cette partie au millimètre est souvent plus judicieux mais je ne détaillerais pas ça ici : le fichier d'exemple installé avec le paquet est truffé d'explications.
L'option -m permet bien sûr d'envoyer des rapports d'erreurs par mail.
Pensez à redémarrer le démon pour qu'il prenne en compte ses changements :
# /etc/init.d/smartmontools restart Restarting S.M.A.R.T. daemon: smartd.
3. Bonus
Sur tout mes disques, SMART était activé mais dans le cas contraire, il suffit apparemment de l'activer avec cette simple commande :
smartctl --smart=on --offlineauto=on --saveauto=on /dev/sdX
ou l'équivalent simplifié :
smartctl -s -o -S /dev/sdX
Dans le cas où des errors surviendrait un jour sur vos disques, il semble exister un outil efficace pour réparer les blocs corrompus : badblock. Je n'ai jamais eu l'occasion de le tester mais on ne m'en dit que du bien
Article sous CC-by excepté le logo.