Menu Fermer

smartctl : vérifier son disque en ligne de commandes Linux

smartctl est une commande disponible sur Linux dans le package smartmontools.
Comme son nom l’indique l’outil interroge les entrées S.M.A.R.T. de vos disques.
Cela permet de vérifier si le disque dur rencontre des erreurs internes sur Linux.
Enfin on peut configurer ce dernier pour effectuer des vérifications automatiques et envoyer un mail d’alerte.

Cet article vous présente smartctl.
Comment l’utiliser ? Comment vérifier si le disque dur a un problème matériel avec S.MA.R.T.
En clair donc comment vérifier la santé de son disque dur en ligne de commandes sur Linux.

smartctl : vérifier son disque en ligne de commandes Linux
Created with GIMP

Qu’est-ce que smartctl et smartmontools ?

Pour rappel la technologie S.M.A.R.T ( (Self-Monitoring, Analysis and Reporting Technology) permet à un disque dur ou SSD un auto-test et vérification du bon fonctionnement.
Elle fonctionne avec divers attributs (température, état de la surface du disque, etc).
Lorsqu’un attribut dépasse un seuil, il est alors considéré en erreur.
Smartmontools est un ensemble d’outil en ligne de commandes pour interroger ces entrées SMART.
L’article suivant détaille tout cela : Vérifier l’état de santé de son disque dur avec la technologie SMART

Les outils proposés par le package smartmontools :

  • smartctl : interroge les entrées SMART d’un disque en ligne de commandes.
  • smartd : daemon qui monitore vos disques et permet d’alerter par mail lorsque des erreurs sont rencontrées. Elles peuvent aussi être reportées dans les journaux systèmes : /var/log/messages ou /var/log/syslog

Cet outils de disque ne sont pas installés par défaut sur Linux
L’installation de smartmontools dépend de votre distribution Linux.
Pour celles à base de Debian, vous pouvez utiliser apt-get :

apt-get install smartmontools

A partir de là, la commande smartctl devient disponible depuis un terminal.

Avec cette dernière, vous pouvez :

  • Lancer un auto-test court ou long puis attendre le résultat
  • Lister les erreurs du disque ou obtenir le contenu du rapport
  • Configurer smartmontools pour effectuer des vérifications automatiques vos disques et vous alerter par mail.

Smartctl : vérifier son disque en ligne de commandes sur Linux

Afficher les informations du disque

La première commande donne les informations du disque (modèle, marque, vitesse, type) et si Smart est activée.
Il faut alors utiliser le paramètre -i :

smartctl -i /dev/sda
Afficher les informations du disque avec smartctl

Par exemple quand SMART n’est pas supporté (pas activé dans le BIOS par exemple).
Vous pouvez avoir une erreur : Unavalaible – device lacks SMART capability.

Afficher les informations du disque avec smartctl

Il se peut alors que SMART soit désactivé sur le périphérique, vous pouvez alors tenter :

smartctl --smart=on /dev/sda

Lancer un test Smart avec smartctl

Smartctl permet de lancer un test et vérification du disque au moment souhaité.
Trois types d’auto-test du disque sont possibles.

  • Offline : Cela démarre immédiatement un test. Cette commande peut être exécutée pendant le fonctionnement normal du système. Les effets de ce test ne sont visibles que dans la mesure où il met à jour les valeurs d’attribut SMART, et si des erreurs sont détectées.
  • short : Il s’agit d’un test dans une catégorie différente de celle des tests hors ligne immédiats ou automatiques. Les tests “Self” vérifient les performances électriques et mécaniques ainsi que les performances de lecture du disque. Leurs résultats sont consignés dans le journal des erreurs.
  • long : Il s’agit d’une version plus longue et plus approfondie de l’autotest court. Cela prend une dizaine de minutes

Pour lancer l’autotest, on utilise la commande -t.
Par exemple pour lancer un autotest court.

smartctl -t short /dev/sda
Lancer un auto-test court du disque avec smartctl

Vérifier les erreurs SMART avec smartctl

L’option -l permet d’afficher les journaux du disque dur.
Plusieurs paramètres peuvent être utilisés dont voici les deux principaux :

  • error : imprime les pages du journal du compteur d’erreurs pour les lectures, les écritures et vérifications. La ligne de vérification n’est sortie que si elle a un élément autre que zéro.
  • selftest : affiche les informations d’autotest du disque dur. Le disque conserve un journal d’autotest montrant les résultats des autotests, qui peuvent être exécutés à l’aide de l’option ‘-t’. Pour chacun des vingt et un autotests les plus récents, le journal indique le type de test (court ou étendu, hors ligne ou captif) et l’état final du tester. Si le test ne s’est pas terminé avec succès, le pourcentage du test restant s’affiche. L’heure à laquelle le test a eu lieu, mesurée en heures de disque.

Ainsi pour afficher les erreurs de disque :

smartctl -l error /dev/sda

Ci-dessous aucune erreur détecté : No erreurs logged.

Vérifier les erreurs SMART avec smartctl

Mais on peut aussi afficher les résultats des auto-tests du disque :

smartctl -l selftest /dev/sda

Ici aucune erreur détecté. Remaining est à 0% ce qui indique que les auto-tests vont bien jusqu’au bout.

Vérifier les erreurs SMART avec smartctl

Lorsque l’auto-test détecte des erreurs, on obtient alors ceci.
Par exemple ici il indique Error : UNC at LBA.

Vérifier les erreurs SMART avec smartctl

On voit alors que l’auto-test ne va pas au bout car à 90%.

Vérifier les erreurs SMART avec smartctl

Enfin lorsque SMART n’est pas supporté, on obtient un message : Error Counter logging not supported

Vérifier les erreurs SMART avec smartctl

Afficher les données complètes du disque

Enfin smartctl donne la possibilité d’afficher les informations complètes du disque.
La commande à utiliser pour obtenir les informations SMART :

smartctl --all /dev/sda

On obtient une section avec les informations sur le disque (smart, modèle, taille, vitesse, etc).
Puis une section sur la lecture des entrées SMART.

Afficher les données complètes du disque : identification et SMART

On trouve alors les attributs puis cela termine par des erreurs.
Lorsque le disque ne rencontre aucune erreur, il vous retourne alors : Completed without error.
Remaining est alors à 0% car les auto-tests vont jusqu’au bout.

Afficher les données complètes du disque : identification et SMART

Afficher la température du disque

Enfin smartctl est aussi capable d’afficher la température d’un disque.
Pour ce faire, on utilise la commande :

smartctl -l scttemp /dev/sda
Afficher la température du disque avec smartctl

Smartmontools et test automatique des disques

Smartmontools se configure pour effectuer des tests de disques à intervalles réguliers.
Enfin on peut le paramétrer pour vous prévenir par mail lors de défaillances.
Cela permet donc de prévenir des pannes mais surtout de la perte de données.

Pour ce faire, Smartmontools fonctionne en daemon.
Sur Debian, vous pouvez éditer le fichier /etc/default/smartmontools.
Puis activez le start_smarted et enfin indiquer les périphériques à surveiller.

Smartmontools en daemon pour vérifier les disques et alerter par mail

Mais on peut aussi aller plus loin en éditant le fichier /etc/smartd.conf
En activant l’option DEVICESCAN, cela va analyser tous les disques branchés.
Ici un mail d’alerte est envoyé à root mais l’option -m prend aussi les adresses emails.

Smartmontools en daemon pour vérifier les disques et alerter par mail

Enfin pour les utilisateurs avancés, vous pouvez ne pas utiliser DEVICESCAN et configurer chaque disque indépendamment.
On indique alors le périphérique et l’option -s permet de configurer les tests.

Smartmontools en daemon pour vérifier les disques et alerter par mail

La syntaxe étant T/MM/DD/d/HH où :

  • T est le type de Test. ‘L’ pour un long auto-test (Long Self-Test), ‘S’ pour un auto-test court (Short Self-Test), ‘C’ un auto-test de transmission (Conveyance Self-Test) et enfin ‘O’ pour un test immédiat hors ligne (Offline Immediate Test).
  • MM est le mois de l’année en numérique 01 à 12.
  • DD est le jour du mois en numérique 01 à 31.
  • d est le jour de la semaine en numérique de 01 à 7.
  • HH est l’heure du jour soit donc de 01 à 23.

Par exemple pour effectuer un auto-test court à 13h chaque jour :

/dev/sda -a -S on -m [email protected] -s S/../.././01

Smartmontools : alerte de disque par mail

Enfin voici un exemple de mail d’alerte de smartmontools lors de défaillances SMART.
Le mail vous indique la machine, l’erreur et le périphérique concerné.

SMART error (SelfTest) detected on host: nomdelamachine
Exemple de mail d'erreur smart (Smart error) envoyé par Smartmontools

Il est donc essentiel de mettre en place ce monitoring afin de prévenir de la perte de données en cas de panne de disque.
Bien sûr les sauvegardes permettent d’aider ou encore la mise en place d’un RAID.