Ceci est une ancienne révision du document !


SMARTMONTOOLS

Smartmontools est un paquet regroupant un ensemble d'outils basés sur la "technologie" SMART. Cette technologie est un protocole qui permet de suivre et contrôler l'état des disques durs entiers. Les données SMART ignorent les partitions et le partitionnement.

le protocole SMART est reconnu et implémenté sur la plupart des disques durs depuis la fin des années 1990.

L'intérêt principal de ces outils et de la technologie SMART est de déceler des signes précurseurs de vieillissement et de pannes des disques durs avant qu'ils ne soient définitivement en panne.

En configurant correctement le daemon smartd (fichier /etc/smartd.conf, il est possible d'être prévenu automatiquement si des problèmes sont détectés).

De façon incompréhensible, le paquet smartmontools n'est pas installé par défaut et fait l'objet de relativement peu de publicité

Sur système installé

Commencez par installer le paquet smartmontools et éventuellement smart-notifier.

Si vous souhaitez une une interface graphique à smartmontools Installez le paquet gsmartcontrol.
Le site officiel est ici : GSmartControl. On trouvera des copies d'écran ici : Copies d'écran.

Sur support d'installation, en session "live"

Mettez d'abord votre clavier en azerty s'il ne l'est pas. Si vous partez d'un clavier qwerty, il vous faudra taper :

setxkb,qp fr

pour que s'affiche :

setxkbmap fr

installez le paquet smartmontools Vous pouvez aussi Installer le paquet en ligne de commande si le logiciel firefox ne propose pas de choisir apturl. ( Voir ).

- Installer le dépot universe en copiant/collant la commande suivante:

sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"

- Activer ce dépot avec la commande suivante::

sudo apt-get update

- Installer smartcl avec la commande suivante:

sudo apt-get install --no-install-recommends smartmontools

**Avec ubuntu 18.04**

Frapper simplement smartclt. La suite se fera enfin naturellement.

a@a:~$ smartctl
Le programme « smartctl » n'est pas encore installé. Vous pouvez l'installer en tapant :
sudo apt install smartmontools
a@a:~$ sudo apt install smartmontools
[sudo] Mot de passe de a : 
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants vont être installés :
  libgsasl7 libkyotocabinet16v5 libmailutils5 libmysqlclient20 libntlm0
  mailutils mailutils-common mysql-common postfix
Paquets suggérés :
  mailutils-mh mailutils-doc procmail postfix-mysql postfix-pgsql postfix-ldap
  postfix-pcre postfix-lmdb postfix-sqlite sasl2-bin dovecot-common resolvconf
  postfix-cdb postfix-doc gsmartcontrol smart-notifier
Les NOUVEAUX paquets suivants seront installés :
  libgsasl7 libkyotocabinet16v5 libmailutils5 libmysqlclient20 libntlm0
  mailutils mailutils-common mysql-common postfix smartmontools
0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 3 714 ko dans les archives.
Après cette opération, 16,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de:1 http://fr.archive.ubuntu.com/ubuntu bionic/universe amd64 libntlm0 amd64 1.4-8 [13,6 kB]
Réception de:2 http://fr.archive.ubuntu.com/ubuntu bionic/universe amd64 libgsasl7 amd64 1.8.0-8ubuntu3 [118 kB]
Réception de:3 http://fr.archive.ubuntu.com/ubuntu bionic/universe amd64 libkyotocabinet16v5 amd64 1.2.76-4.2 [292 kB]
Réception de:4 http://fr.archive.ubuntu.com/ubuntu bionic/universe amd64 mailutils-common all 1:3.4-1 [269 kB]
Réception de:5 http://fr.archive.ubuntu.com/ubuntu bionic/main amd64 mysql-common all 5.8+1.0.2ubuntu1 [5 782 B]
Réception de:6 http://fr.archive.ubuntu.com/ubuntu bionic/main amd64 libmysqlclient20 amd64 5.7.20-1ubuntu1 [815 kB]
Réception de:7 http://fr.archive.ubuntu.com/ubuntu bionic/universe amd64 libmailutils5 amd64 1:3.4-1 [457 kB]
Réception de:8 http://fr.archive.ubuntu.com/ubuntu bionic/main amd64 postfix amd64 3.2.4-1 [1 139 kB]
Réception de:9 http://fr.archive.ubuntu.com/ubuntu bionic/universe amd64 mailutils amd64 1:3.4-1 [140 kB]
Réception de:10 http://fr.archive.ubuntu.com/ubuntu bionic/main amd64 smartmontools amd64 6.5+svn4324-1 [464 kB]
3 714 ko réceptionnés en 2s (1 341 ko/s)
Préconfiguration des paquets...
Sélection du paquet libntlm0:amd64 précédemment désélectionné.
(Lecture de la base de données... 128192 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../0-libntlm0_1.4-8_amd64.deb ...
Dépaquetage de libntlm0:amd64 (1.4-8) ...
Sélection du paquet libgsasl7:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../1-libgsasl7_1.8.0-8ubuntu3_amd64.deb ...
Dépaquetage de libgsasl7:amd64 (1.8.0-8ubuntu3) ...
Sélection du paquet libkyotocabinet16v5:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../2-libkyotocabinet16v5_1.2.76-4.2_amd64.deb ...
Dépaquetage de libkyotocabinet16v5:amd64 (1.2.76-4.2) ...
Sélection du paquet mailutils-common précédemment désélectionné.
Préparation du dépaquetage de .../3-mailutils-common_1%3a3.4-1_all.deb ...
Dépaquetage de mailutils-common (1:3.4-1) ...
Sélection du paquet mysql-common précédemment désélectionné.
Préparation du dépaquetage de .../4-mysql-common_5.8+1.0.2ubuntu1_all.deb ...
Dépaquetage de mysql-common (5.8+1.0.2ubuntu1) ...
Sélection du paquet libmysqlclient20:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../5-libmysqlclient20_5.7.20-1ubuntu1_amd64.deb ...
Dépaquetage de libmysqlclient20:amd64 (5.7.20-1ubuntu1) ...
Sélection du paquet libmailutils5:amd64 précédemment désélectionné.
Préparation du dépaquetage de .../6-libmailutils5_1%3a3.4-1_amd64.deb ...
Dépaquetage de libmailutils5:amd64 (1:3.4-1) ...
Sélection du paquet postfix précédemment désélectionné.
Préparation du dépaquetage de .../7-postfix_3.2.4-1_amd64.deb ...
Dépaquetage de postfix (3.2.4-1) ...
Sélection du paquet mailutils précédemment désélectionné.
Préparation du dépaquetage de .../8-mailutils_1%3a3.4-1_amd64.deb ...
Dépaquetage de mailutils (1:3.4-1) ...
Sélection du paquet smartmontools précédemment désélectionné.
Préparation du dépaquetage de .../9-smartmontools_6.5+svn4324-1_amd64.deb ...
Dépaquetage de smartmontools (6.5+svn4324-1) ...
Traitement des actions différées (« triggers ») pour ufw (0.35-5) ...
Traitement des actions différées (« triggers ») pour ureadahead (0.100.0-20) ...
ureadahead will be reprofiled on next reboot
Paramétrage de mysql-common (5.8+1.0.2ubuntu1) ...
update-alternatives: utilisation de « /etc/mysql/my.cnf.fallback » pour fournir « /etc/mysql/my.cnf » (my.cnf) en mode automatique
Paramétrage de smartmontools (6.5+svn4324-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/smartd.service → /lib/systemd/system/smartd.service.
Paramétrage de libntlm0:amd64 (1.4-8) ...
Traitement des actions différées (« triggers ») pour libc-bin (2.26-0ubuntu2) ...
Traitement des actions différées (« triggers ») pour systemd (235-3ubuntu2) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-4) ...
Paramétrage de libmysqlclient20:amd64 (5.7.20-1ubuntu1) ...
Paramétrage de libkyotocabinet16v5:amd64 (1.2.76-4.2) ...
Traitement des actions différées (« triggers ») pour rsyslog (8.16.0-1ubuntu10) ...
Paramétrage de postfix (3.2.4-1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /lib/systemd/system/postfix.service.
Ajout du groupe « postfix » (GID 128)...
Fait.
Ajout de l'utilisateur système « postfix » (UID 121) ...
Ajout du nouvel utilisateur « postfix » (UID 121) avec pour groupe d'appartenance « postfix » ...
Le répertoire personnel « /var/spool/postfix » n'a pas été créé.
Creating /etc/postfix/dynamicmaps.cf
Ajout du groupe « postdrop » (GID 129)...
Fait.
setting myhostname: a
setting alias maps
setting alias database
mailname is not a fully qualified domain name.  Not changing /etc/mailname.
setting destinations: $myhostname, a-smartctl, a, localhost.localdomain, localhost
setting relayhost: 
setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
setting mailbox_size_limit: 0
setting recipient_delimiter: +
setting inet_interfaces: all
setting inet_protocols: all
/etc/aliases does not exist, creating it.
WARNING: /etc/aliases exists, but does not have a root alias.

Postfix (main.cf) is now set up with a default configuration.  If you need to 
make changes, edit /etc/postfix/main.cf (and others) as needed.  To view 
Postfix configuration values, see postconf(1).

After modifying main.cf, be sure to run 'service postfix reload'.

Running newaliases
Paramétrage de mailutils-common (1:3.4-1) ...
Paramétrage de libgsasl7:amd64 (1.8.0-8ubuntu3) ...
Paramétrage de libmailutils5:amd64 (1:3.4-1) ...
Paramétrage de mailutils (1:3.4-1) ...
update-alternatives: utilisation de « /usr/bin/frm.mailutils » pour fournir « /usr/bin/frm » (frm) en mode automatique
update-alternatives: utilisation de « /usr/bin/from.mailutils » pour fournir « /usr/bin/from » (from) en mode automatique
update-alternatives: utilisation de « /usr/bin/messages.mailutils » pour fournir « /usr/bin/messages » (messages) en mode automatique
update-alternatives: utilisation de « /usr/bin/movemail.mailutils » pour fournir « /usr/bin/movemail » (movemail) en mode automatique
update-alternatives: utilisation de « /usr/bin/readmsg.mailutils » pour fournir « /usr/bin/readmsg » (readmsg) en mode automatique
update-alternatives: utilisation de « /usr/bin/dotlock.mailutils » pour fournir « /usr/bin/dotlock » (dotlock) en mode automatique
update-alternatives: utilisation de « /usr/bin/mail.mailutils » pour fournir « /usr/bin/mailx » (mailx) en mode automatique
Traitement des actions différées (« triggers ») pour ureadahead (0.100.0-20) ...
Traitement des actions différées (« triggers ») pour libc-bin (2.26-0ubuntu2) ...
Traitement des actions différées (« triggers ») pour systemd (235-3ubuntu2) ...
Traitement des actions différées (« triggers ») pour rsyslog (8.16.0-1ubuntu10) ...
Traitement des actions différées (« triggers ») pour ufw (0.35-5) ...

Dans les exemples suivants, on va considérer le disque dur nommé /dev/sdX , qu'il faudra remplacer par le nom du disque que vous voulez tester, par exemple /dev/hda, /dev/sdc 1) ou /dev/sg1 2)

  • Pour activer SMART sur un disque, taper la commande suivante (nécessaire une seule fois seulement pour chaque disque, mais peut être répétée sans danger) :
 sudo smartctl --smart=on --offlineauto=on --saveauto=on /dev/sdX
  • Pour obtenir quelques infos disponibles par SMART sur le disque
 sudo smartctl -H -i /dev/sdX

Pour obtenir toutes les infos disponibles par SMART sur le disque

 sudo smartctl -s on -a /dev/sdX
  • Pour faire des tests

Au moins deux types de tests sont possibles, les courts (~1 min) et les longs (~10 min à 90 min)3).

Pour lancer l'exécution des tests

sudo smartctl -t short /dev/sdX
sudo smartctl -t long  /dev/sdX
  • Ensuite pour accéder au résultats/statistiques de ces tests :
sudo smartctl -l selftest /dev/sdX

ou en plus bref (retourne un message seulement si le disque retourne un indicateur SMART "failing" ou si des autotests ont enregistré des erreurs)

sudo smartctl -q errorsonly -H -l selftest /dev/sdX

Dans les exemples suivants, on va considérer le disque dur nommé /dev/sdX qu'il faudra remplacer par le nom du disque que vous voulez tester ; par exemple /dev/hda, /dev/sdc

La connaissance de l'état actuel d'un disque peut être importante pour comprendre une erreur de lecture-écriture. Cette information est souvent demandée dans le forum.

Comme les données SMART ignorent les partitions et le partitionnement, il est absurde (sauf cas de RAID, voir note) de mettre un nombre après /dev/sdX. C'est même nuisible quand le disque est branché en usb, cf. cet exemple https://forum.ubuntu-fr.org/viewtopic.php?pid=21841415#p21841415.

Cas d'un disque interne

La commande est:

sudo smartctl -s on -a /dev/sdX

Rappel : Mettre un chiffre après la lettre X est (sauf montage en RAID, voir note) nuisible.

Cas des boîtiers et autres adaptateurs USB

La commande ci-dessus peut nécessiter un complément si le disque est connecté en usb.
Rappel : Mettre un chiffre après la lettre X est (sauf montage en RAID, voir note) nuisible.

a) Ce complément est en général fourni par

sudo smartctl --scan | grep -i usb

qui va retourner quelque-chose comme

/dev/sdb -d usbsunplus # /dev/sdb [USB Sunplus], ATA device

On récupère alors -d usbsunplus et sdb, et on obtient le retour complet grâce à

sudo smartctl -s on -a -d usbsunplus /dev/sdb



b) Si ça ne marche pas, c'est dans le retour de

sudo smartctl -s on -a /dev/sdX

en remplaçant X par la lettre trouvée juste avant, qu'il faut chercher la ligne contenant

Unknown USB bridge [0x

De cette ligne, on copie 0xyyyy:0xzzzz, sans les crochets et on va le chercher dans la page https://www.smartmontools.org/wiki/Supported_USB-Devices qui référence :
- La plupart des adaptateurs supportés et donne l'option "-d" opérationnelle de chacun,
- La plupart des adaptateurs non supportés.

Sur cette page-là on va donc récupérer la bonne option -d machin-truc, et

sudo smartctl -s on -a -d machin-truc /dev/sdX

en remplaçant X par la lettre trouvée juste avant, fournira le rapport smartctl complet.

Exceptionnellement, il peut arriver que ni a) ni b) ne suffise.


c) En ce cas, certaines des commandes suivantes peuvent être essayées, toujours en remplaçant "X" par la bonne lettre, vérifiée juste avant :

Merci de faire la totalité des cinq commandes et de ne pas vous arrêter à la première surtout si elle n'a répondu que quelques lignes.

sudo smartctl -s on -d ata  -a /dev/sdX
sudo smartctl -s on -d sat  -a /dev/sdX
sudo smartctl -s on -d scsi -a /dev/sdX
sudo smartctl -s on -d auto -T verypermissive -a /dev/sdX
sudo smartctl -s on -d test -T verypermissive -a /dev/sdX

Cas du pilote UAS

Si aucune commande précédente ne fonctionne avec un adaptateur USB, il peut être nécessaire de désactiver le support de UAS(P)4).

Test avec déchargement du module

  1. brancher l'adaptateur
  2. relever les identifiants USB vendeur:produit pour l'adaptateur :
    • lister les périphériques USB utilisant le pilote UAS
      lsusb -t | grep uas
    • noter la valeur de Port et Dev, puis afficher ce périphérique USB avec XXX valeur de Port et YYY valeur de Dev
      lsusb -s XXX:YYY
    • noter la valeur après ID sous le format <id vendeur>:<id produit>
  3. démonter les partitions du disque :
    sudo umount -v /dev/sdX*
  4. décharger le module uas :
    sudo modprobe -r uas
  5. décharger le module usb-storage :
    sudo modprobe -r usb-storage
  6. recharger le module usb-storage sans le support uas pour l'adaptateur en remplaçant <id vendeur> et <id produit> par les valeurs relevée précédemment :
    sudo modprobe usb-storage quirks=<id vendeur>:<id produit>:u
  7. si les partitions du disque ne sont pas montées automatiquement, débrancher l'adaptateur USB et le rebrancher connecté avec le disque dur
  8. réessayer les commandes smartctl

Exemple concret

Exemple avec un adaptateur de marque U-Green avec le chipset VIA qui se charge en /dev/sdc

  • tester la commande initiale :
    $ sudo smartctl -s on -d sat  -a /dev/sdc
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-71-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

Read Device Identity failed: scsi error unsupported field in scsi command

A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.
  • recherche du périphérique USB utilisant le pilote UAS :
    $ lsusb -t | grep uas
|__ Port 3: Dev 35, If 0, Class=Mass Storage, Driver=uas, 480M
  • relever la valeur après Port (ici 3) et Dev (ici 35), et rechercher les identifiants USB pour ce périphérique
    $ lsusb -s 3:35
Bus 003 Device 035: ID 2109:0711 VIA Labs, Inc.
  • dans l'exemple, noter pour la suite <id vendeur>=2109 et <id produit>=0711
  • démonter les partitions du disque :
    $ sudo umount -v /dev/sdc*
umount: /dev/sdc: not mounted
umount: /media/ubuntu/Linux (/dev/sdc1) unmounted
  • décharger les différents modules :
    $ sudo modprobe -r uas
    $ sudo modprobe -r usb-storage
  • recharger le module usb-storage sans le support UAS pour l'adaptateur :
    $ sudo modprobe usb-storage quirks=2109:0711:u
  • les partitions du disque sont remontées automatiquement, sinon débrancher et rebrancher l'adaptateur avec le disque connecté
  • vérifier que le pilote n'est plus uas mais usb-storage5)
    $ lsusb -t | grep usb-storage
|__ Port 3: Dev 36, If 0, Class=Mass Storage, Driver=usb-storage, 480M
  • relancer la commande smartctl et constater qu'il n'y a plus d'erreur :
    $ sudo smartctl -s on -d sat  -a /dev/sdc
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-71-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar Blue Serial ATA
Device Model: WDC WD1600AAJS-75M0A0
[…]

Blacklister le module UAS

Si le test précédent est concluant, il est possible de rendre le changement permanent.

  • créer le fichier /etc/modprobe.d/ignore-uas.conf avec les droits d'administration.
  • ajouter la ligne suivante en remplaçant <id vendeur> et <id produit> par les valeurs relevée précédemment :
    /etc/modprobe.d/ignore-uas.conf
    options usb-storage quirks=<id vendeur>:<id produit>:u
  • sauvegarder le fichier
  • redémarrer l'ordinateur
  • brancher l'adaptateur directement

Grâce au service (daemon) smartd il est possible de faire une analyse régulière et ainsi suivre sur le long terme l'état des disques durs et de votre matériel.

Il est aussi possible de paramétrer des alertes automatiques (envoi de mail, messages utilisateur par wall, syslog, … ) en cas de détections d'erreurs ou de signes de vieillissement. smartd est inclus dans le paquet smartmontools

Le fichier de configuration est /etc/smartd.conf Par défaut, il est configuré pour scanner tous les disques. Une configuration de ce fichier est donc nécessaire pour obtenir des alertes pertinentes.

activer le daemon smartd

Par défaut, le demon smart n'est pas activé. Il est indispensable de le faire manuellement.

Éditez le fichier /etc/default/smartmontools et décommenter start_smartd=yes puis démarrer le service en tapant dans un terminal:

sudo /etc/init.d/smartmontools start 

A signaler aussi le paquet smart-notifier qui vous préviendra de tout problème imminent. L'action de ce programme est de se mettre à l'écoute des messages de tests et d'ouvrir une fenêtre d'avertissement s'il détecte un problème.

Pour que smart-notifier lance ces messages d'alertes, il faut que smartd soit actif, paramétré, et que la session en cours ait été redémarrée.

Si vous voyez une alerte SMART, il y a de fortes chances pour que votre disque soit en train de flancher. Dans votre intérêt, faites immédiatement une copie de vos fichiers ailleurs (clé USB, disque dur externe, gravure sur CD/DVD…).

Pour tester que smart-notifier fonctionne :

sudo sh -c 'echo test de message | smart-notifier --notify'

Ce qui affichera :

smart-notifier sous Ubuntu 15.10

Lorsque vous équipez un autre pc que le vôtre de la notification, il serait dommage qu'elle soit ignorée pour une bête impossibilité de compréhension du message…

Sauvegarder l'original en cas de boulette en tapant dans terminal:

sudo cp /usr/share/smart-notifier/smart_notifier/smart-notifier.glade /usr/share/smart-notifier/smart_notifier/smart-notifier.glade.old

puis avec les droits d'administration, éditez le fichier /usr/share/smart-notifier/smart_notifier/smart-notifier.glade et modifiez les lignes indiquées ci-dessous.

  • Titre de la Fenêtre, ligne 31:
    <property name="title" context="True" translatable="True">Alerte Disque-dur !</property>
  • Titre du Message, ligne 56:
    <property name="label" context="True" translatable="True">&lt;big&gt;&lt;b&gt;Alerte ! Disque-dur en Danger !&lt;/b&gt;&lt;/big&gt;</property>
  • Corps du Message, ligne 69:
    <property name="label" context="True" translatable="True">S.m.a.r.t. surveille en permanence les disques-durs et donne l'alerte en cas de variation importante dans les normales relevées. 60% des pannes de disques-durs sont mécaniques, s.m.a.r.t. peut en détecter 30%. Cette alerte n'est pas à prendre à la légère et peut annoncer une panne imminente. Planifier rapidement vos sauvegardes et le remplacement de vos disques-durs.</property>
  • Message de smartd, ligne 92:
    <property name="label" context="True" translatable="True">Message original de smartd :</property>

L'interprétation des résultats demande de l'expérience ; postez-les dans le forum.


Contributeurs : didrocks, fnx, .amalric. pour la traduction, furious-therapy : DEB pour Jaunty.


1)
la liste des noms de disques durs de votre système peut s'obtenir par :
sudo fdisk -l 
2)
les périphériques du type /dev/sg# permettent d'atteindre les disques qui composent un volume géré par un contrôleur RAID hardware. Dans un tel cas, les périphériques du type /dev/sdX ne sont pas utilisables car à ce niveau l'OS ne voit que le volume géré par le contrôleur RAID (un disque logique sans information SMART) et non des disques qui le composent (disques physiques avec information SMART). Par exemple, pour obtenir les informations SMART sur un disque SATA faisant partie d'un volume RAID 5 géré par un contrôleur Adaptec :
sudo smartctl -a -d sat /dev/sg1
Référence: http://www.cyberciti.biz/faq/linux-checking-sas-sata-disks-behind-adaptec-raid-controllers/
3)
Une estimation de la durée prise par ces tests est visible dans la sortie de :
 sudo smartctl -a /dev/sdX
4)
USB Attached SCSI
5)
le numéro de Device change à chaque reconnexion
  • smartmontools.1513892939.txt.gz
  • Dernière modification: Le 21/12/2017, 22:48
  • par 88.182.40.86