sudo fdisk -l
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.
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.
Étonnament, le paquet smartmontools n'est pas installé par défaut et fait l'objet de relativement peu de publicité.
Commencez par installer le paquet smartmontools et éventuellement smart-notifier.
Si vous souhaitez utiliser une interface graphique pour smartmontools, installez le paquet gsmartcontrol.
Le site officiel est ici : GSmartControl.
On trouvera des copies d'écran ici : Copies d'écran.
Au lieu de cliquer sur les liens ci-dessus, utilisez la commande suivante pour n'installer que les paquets nécessaires :
sudo apt-get install --no-install-recommends smartmontools
Évidemment, il reste possible de récupérer les données S.M.A.R.T sans causer d'usure au SSD, heureusement
Pour les SSD NVME, il est nécessaire d'installer un paquet supplémentaire :
sudo apt install nvme-cli
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)
sudo smartctl --smart=on --offlineauto=on --saveauto=on /dev/sdX
sudo smartctl -H -i /dev/sdX
* Pour obtenir toutes les infos disponibles par SMART sur le disque :
sudo smartctl -s on -a /dev/sdX
Au moins deux types de tests sont possibles, les courts (~1 min) et les longs (~10 min à 90 min)3).
sudo smartctl -t short /dev/sdX sudo smartctl -t long /dev/sdX
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
sudo smartctl -t select,N-max /dev/sdX
sudo smartctl -a /dev/sdX | grep left
Cela permet de visualiser le LBA début et le LBA fin de l'intervalle de 65536 secteurs en cours de test. Ne pas se fier au pourcentage indiqué.
Le test long peut durer des heures. S'il y a un arrêt pour une cause externe, le LBA en cours de traitement peut ne pas être mémorisé. Une solution consiste à lancer un test sur les 500 premiers Gio ( ou le premier Tio) du disque avec cette commande :
sudo smartctl -t select,0-999999999 /dev/sdX ou sudo smartctl -t select,0-1999999999 /dev/sdX ### pour 1 Tio ou sudo smartctl -t select,0-499999999 /dev/sdX ### pour 250 Gio
Lorsque ce test est terminé, on fait un test de la suite quand on le désire avec cette commande qu'il faudra répéter autant de fois que nécessaire après s'être assuré que la précédente s'est correctement terminée et que la fin du disque n'a pas été atteinte. Sinon cela repart depuis le début du disque jusqu'à la fin !
sudo smartctl -t select,next /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.
Pour connaître les lettres des disques connectés, utilisez la commande suivante :
lsblk -d | grep -Ev "NAME|loop|sr0|zram"
La commande est :
sudo smartctl -s on -a /dev/sdX
Rappel : Mettre un chiffre après la lettre X est nuisible (sauf montage en RAID, voir note).
Le retour de la commande lsblk peut identifier que le disque est un NVMe. Dans ce cas la commande précédante devient:
sudo smartctl -s on -a /dev/nvmeXXX
Un suivi plus spécifique est alors possible en installant le logiciel dédié à ce type de matériel.
sudo apt install nvme-cli
Puis donner le retour de quelques commandes :
sudo nvme error-log /dev/nvmeXXX | grep -A2 Entry | grep -v "................." sudo nvme smart-log /dev/nvmeXXX sudo nvme sanitize-log /dev/nvmeXXX
Voir un cas concret
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
qui va retourner quelque chose comme
/dev/sdb -d sat # /dev/sdb [SAT], ATA device
(même pour de l'usb) ou bien 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, ce qui fournira le rapport smartctl complet.
Exceptionnellement, il peut arriver que ni a) ni b) ne suffise.
c) Dans ce cas, certaines des commandes suivantes peuvent être essayées, toujours en remplaçant "X" par la bonne lettre, vérifiée juste avant. Il faut faire les cinq commandes, ne vous arrêtez pas à la première surtout si elle n'a renvoyé 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
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).
lsusb -t | grep uas
valeur de Port
et YYY valeur de Dev
lsusb -s XXX:YYY
sudo umount -v /dev/sdX*
sudo modprobe -r uas
sudo modprobe -r usb-storage
sudo modprobe usb-storage quirks=<id vendeur>:<id produit>:u
smartctl
Exemple avec un adaptateur de marque U-Green avec le chipset VIA qui se charge en /dev/sdc.
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.
lsusb -t | grep uas
|__ Port 3: Dev 35, If 0, Class=Mass Storage, Driver=uas, 480M
lsusb -s 3:35
Bus 003 Device 035: ID 2109:0711 VIA Labs, Inc.
sudo umount -v /dev/sdc*
umount: /dev/sdc: not mounted
umount: /media/ubuntu/Linux (/dev/sdc1) unmounted
sudo modprobe -r uas sudo modprobe -r usb-storage
sudo modprobe usb-storage quirks=2109:0711:u
lsusb -t | grep usb-storage
|__ Port 3: Dev 36, If 0, Class=Mass Storage, Driver=usb-storage, 480M
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 >[...]
Si le test précédent est concluant, il est possible de rendre le changement permanent.
/etc/modprobe.d/ignore-uas.conf
avec les droits d'administration.options usb-storage quirks=<id vendeur>:<id produit>:u
Afin de savoir si le module UAS est responsable du problème, il est possible d'interdire son utilisation pour tous les disques externes en fabriquant un fichier
sudo touch /etc/modprobe.d/blacklist-usb.conf sudo echo "blacklist uas" /etc/modprobe.d/blacklist-usb.conf
Puis on reboote et on vérifie que le problème est résolu. On supprime alors le fichier puis on part à la recherche du id vendeur et du id produit. Si ceux-ci ne sont pas obtenus, la seule solution est de refabriquer le fichier! https://bugs.launchpad.net/ubuntu/+source/linux/+bug/828471/comments/13
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.
Éditez le fichier /etc/default/smartmontools et décommentez start_smartd=yes si présent.
Si nécessaire, décommentez #smartd_opts="–interval=1800" en mettant la fréquence de surveillance souhaitée.
Démarrez ou relancez ensuite le service en tapant dans un terminal:
- avec systemctl :
systemctl restart smartd systemctl status smartd
- à l'ancienne :
sudo /etc/init.d/smartmontools start
Le but de smartd est de surveiller les disques et de prévenir l'utilisateur par messagerie des nouvelles anomalies survenues depuis peu de temps. Le paramétrage standard est de 30 minutes.
Pour vérifier que les futurs messages d'anomalies seront expédiés, il suffit de lancer ces commandes :
echo "DEVICESCAN -a -m root -M test" >/tmp/FIC && sudo smartd -n -q onecheck -c /tmp/FIC
Pour expédier les messages à un autre destinataire, il faut d'abord vérifier qu'il peut recevoir les messages. Il faut faire ces commandes en remplaçant l'adresse mail :
echo "DEVICESCAN -a -m destinataire@exemple.com -M test" >/tmp/FIC && sudo smartd -n -q onecheck -c /tmp/FIC
Il faut alors modifier le fichier /etc/smartd.conf pour ajouter cette adresse juste avant l'adresse root. Exemple de codification de la ligne d'activation de la surveillance :
DEVICESCAN -a -r 9! -d removable -n standby -m destinataire@exemple.com,root -M exec /usr/share/smartmontools/smartd-runner
Il faut ensuite relancer l'application pour que le changement de paramétrage soit pris en compte.
À 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.
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…).
sudo sh -c 'echo test de message | smart-notifier --notify'
Ce qui affichera :
Le message peut aussi être affiché au démarrage de l'ordinateur.
Lorsque vous installez smart-notifier sur un autre ordinateur que le vôtre, il serait dommage qu'elle soit ignorée parce que l'utilisateur ne parle pas anglais…
Trouver le nom du fichier contenant les messages d'avertissement :
ls -ls /usr/share/smart-notifier/smart_notifier
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 :
<property name="title" context="True" translatable="True">Alerte disque dur</property>
<property name="label" context="True" translatable="True"><big><b>Alerte, disque dur défaillant !</b></big></property>
<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. Veuillez planifier rapidement vos sauvegardes et le remplacement de vos disques durs.</property>
<property name="label" context="True" translatable="True">Message original de smartd :</property>
Faire la même action en utilisant les commandes suivantes :
sudo cp /usr/share/smart-notifier/smart_notifier/smart-notifier.xml /usr/share/smart-notifier/smart_notifier/smart-notifier.xml.old sudo sed -i -e "s/gt;Hard Disk Health Warning/gt;Alerte, disque dur défaillant !/" /usr/share/smart-notifier/smart_notifier/smart-notifier.xml sudo sed -i -e "s/Hard Disk Health Warning/Alerte disque dur/" /usr/share/smart-notifier/smart_notifier/smart-notifier.xml sudo sed -i -e "s/The hard disk health status has changed. This could mean that hard drive failure is imminent. It is always a good idea to have up to date backups./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. Veuillez planifier rapidement vos sauvegardes et le remplacement de vos disques durs./" /usr/share/smart-notifier/smart_notifier/smart-notifier.xml
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.
sudo fdisk -l
sudo smartctl -a -d sat /dev/sg1Référence : http://www.cyberciti.biz/faq/linux-checking-sas-sata-disks-behind-adaptec-raid-controllers/
sudo smartctl -a /dev/sdX