Niveau :      
Résumé : smartctl

La dernière fois, nous avons trouvé un outil tout fait pour surveiller nos disques. C'est bien, mais nous allons maintenant nous plonger un peu plus dans SMART.

Lecture des infos

Il est possible de gérer à la main les commandes smart. Le but étant d'avoir les détails de ce qui va ou ne va pas. La commande de base est smartctl. Pour tout savoir sur les données smart :

$ smartctl -a /dev/hda

Tout d'abord parlons des attributs (le plus intéressant) :

$ smartctl -A /dev/hda
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   051   046   006    Pre-fail  Always       -       230474091
  3 Spin_Up_Time            0x0003   096   096   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   099   099   020    Old_age   Always       -       1105
...
194 Temperature_Celsius     0x0022   049   060   000    Old_age   Always       -       49

Maintenant il faut savoir lire ces valeurs. Le type Old_age indique qu'un erreur n'est pas grave, c'est seulement un indicateur de vieillesse. Au contraire Pre-fail indique que le disque risque de vous causer des soucis très bientôt. Updated indique si la valeur est mise à jour fréquemment (Always) du simple fait que smart soit activé sur le disque, ou seulement lorsque des tests sont lancés (Offline). En effet, smart doit être activé sur votre disque si vous voulez avoir des valeurs correctes. S'il ne l'est pas :

$ smartctl -s on /dev/hda
# pour savoir si smart est activé
$ smartctl -i /dev/hda

Enfin les 3 valeurs "value", "worst" et "thresh" indiquent l'état du disque. Value est la valeur actuelle (sans unité et sans interprétation), worst est la valeur enregistrée la plus proche de l'erreur, et enfin thresh indique un seuil au dessous duquel valeur ne devrait jamais descendre (sinon alerte). Raw_value vous donnera l'interprétation de value si vous connaissez les unités (doc constructeur toussa).

La liste des attributs possible est bien décrite par wikipedia.

Les tests

En plus des données collectées en continu par smart, il est possible de lancer des tests plus longs. Il existe 4 types de test :

  • offline : test court mettant à jour les attributs "offline".
  • short et long selftest : test court ou long sur les performances, les problèmes électriques et les lectures physiques.
  • conveyance (disponible uniquement sur certains disques ATA) : test sur d'éventuels problèmes liés au transport du disque.
  • select (disponible uniquement sur certains disques ATA) : semblable à un test long mais sur une seule partie du disque

Les tests offline peuvent être faits automatiquement par le disque toutes les 4 heures grâce à la commande suivante :

$ smartctl -o on /dev/hda

Contrairement à ce qui est dit dans la documentation, il faut s'attendre à quelques ralentissements des accès disques pendant un test (surtout pendant un test long). Pour lancer un test manuellement, on demande à smartctl :

$ smartctl -t long /dev/hda

La durée estimée du test est alors indiquée. Selon les disques le fait qu'un test est en cours se voit soit dans les capabilities, soit dans les logs :

# lecture des capabilities
$ smartctl -c /dev/hda
# lecture des logs de test
$ smartctl -l selftest /dev/hda

Une fois le test terminé, les éventuelles erreurs apparaissent dans les logs (et les valeurs offline des attributs sont mis à jour) :

$ smartctl -l selftest /dev/hda
$ smartctl -l error /dev/hda
$ smartctl -A /dev/hda

Si comme moi vous avez des informations comme celles-ci :

Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
195 Hardware_ECC_Recovered  0x001a   051   046   000    Old_age   Always       -       75004710
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     18071         24102132
# 2  Extended offline    Completed: read failure       90%     18070         24099461

C'est que vous avez déjà perdu quelques octets. Tout n'est pas perdu, puisque le disque est capable de réallouer dynamiquement la position de ses secteurs pour allonger sa propre durée de vie. Disons que votre disque est sur la mauvaise pente et que c'est à vous de décider ce qu'il faut en faire.

Notez donc ces erreurs sur certains secteurs du disque. Le texte suivant vous expliquera comment retrouver quel fichier est affecté, voire comment forcer le disque à réallouer ce secteur.