Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| smartmontools [Le 04/05/2018, 16:00] – [Installation] 88.182.40.86 | smartmontools [Le 12/01/2021, 13:43] (Version actuelle) – [Cas d'un disque interne] 88.122.224.21 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---------- | ||
| + | ====== SMARTMONTOOLS ====== | ||
| + | |||
| + | Smartmontools est un paquet regroupant un ensemble d' | ||
| + | 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. | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | En configurant correctement le daemon **smartd** (fichier __/ | ||
| + | |||
| + | // | ||
| + | </ | ||
| + | |||
| + | ===== Installation ===== | ||
| + | ==== Pour une instance opérationnelle ==== | ||
| + | Commencez par [[: | ||
| + | |||
| + | Si vous souhaitez utiliser une interface graphique pour smartmontools, | ||
| + | Le site officiel est ici : [[http:// | ||
| + | On trouvera des copies d' | ||
| + | |||
| + | ==== Pour une installation en mode dépannage sur une clé USB non-persistante ==== | ||
| + | Au lieu de cliquer sur les liens ci-dessus, utilisez la commande suivante pour n' | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Utilisation ===== | ||
| + | |||
| + | <note important> | ||
| + | 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 liste des noms de disques durs de votre système peut s' | ||
| + | sudo fdisk -l | ||
| + | )) ou // /dev/sg1 // ((les périphériques du type // /dev/sg# // permettent d' | ||
| + | sudo smartctl -a -d sat /dev/sg1 | ||
| + | Référence : | ||
| + | )) | ||
| + | |||
| + | * 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 | ||
| + | |||
| + | |||
| + | |||
| + | Au moins deux types de tests sont possibles, les courts (~1 min) et les longs (~10 min à 90 min)((Une estimation de la durée prise par ces tests est visible dans la sortie de : | ||
| + | sudo smartctl -a /dev/sdX | ||
| + | )). | ||
| + | |||
| + | * Pour lancer l' | ||
| + | |||
| + | sudo smartctl -t short /dev/sdX | ||
| + | sudo smartctl -t long /dev/sdX | ||
| + | |||
| + | |||
| + | * Pour accéder ensuite au résultats/ | ||
| + | |||
| + | |||
| + | sudo smartctl -l selftest /dev/sdX | ||
| + | |||
| + | ou en plus bref (retourne un message seulement si le disque retourne un indicateur SMART " | ||
| + |  | ||
| + | sudo smartctl -q errorsonly -H -l selftest /dev/sdX | ||
| + |  | ||
| + | |||
| + | |||
| + | * Pour relancer un test long  qui s'est arrêté | ||
| + | |||
| + | sudo smartctl | ||
| + | |||
| + | |||
| + | |||
| + | * Pour suivre l' | ||
| + | <code bash> | ||
| + |  | ||
| + | Cela permet de visualiser le LBA début et le LBA fin de l' | ||
| + | |||
| + | * Exécution d'un test long sur un disque de grande capacité. | ||
| + | |||
| + | 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 | ||
| + | sudo smartctl | ||
| + | ou | ||
| + | sudo smartctl | ||
| + | ou | ||
| + | sudo smartctl | ||
| + | |||
| + | 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' | ||
| + | sudo smartctl | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + |  | ||
| + | |||
| + | |||
| + | ===== Informations sur l' | ||
| + | |||
| + | **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' | ||
| + | Cette information est souvent demandée dans le forum. | ||
| + | |||
| + | <note warning> | ||
| + | |||
| + | |||
| + | Pour connaître les lettres des disques connectés, utilisez la commande suivante : | ||
| + | <code bash> | ||
| + | |||
| + | |||
| + | ==== Cas d'un disque interne | ||
| + | === Cas d'un disque non NVMe === | ||
| + | La commande est : | ||
| + | <code bash> | ||
| + | === Cas d'un disque NVMe === | ||
| + | Le retour de la commande précédente peut identifier que le disque est un [[https:// | ||
| + | |||
| + | Un suivi plus spécifique est alors possible en installant le logiciel dédié à ce type de matériel. | ||
| + | <code bash> | ||
| + | Puis donner le retour de quelques commandes : | ||
| + | <code bash> | ||
| + | sudo nvme nvme-smart-log / | ||
| + | ou | ||
| + | <code bash> | ||
| + | sudo nvme smart-log / | ||
| + | |||
| + | |||
| + | |||
| + | ==== 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 | ||
| + | < | ||
| + | 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 à | ||
| + | < | ||
| + | b) Si ça ne marche pas, c'est dans le retour de | ||
| + | < | ||
| + | en remplaçant X par la lettre trouvée juste avant, qu'il faut chercher la ligne contenant | ||
| + | < | ||
| + | De cette ligne, on copie **0xyyyy: | ||
| + | https:// | ||
| + | - La plupart des adaptateurs supportés et donne l' | ||
| + | - La plupart des adaptateurs non supportés. | ||
| + | |||
| + | Sur cette page-là on va donc récupérer la bonne option **-d machin-truc**, | ||
| + | < | ||
| + | en remplaçant X par la lettre trouvée juste avant, ce qui fournira le rapport smartctl complet. | ||
| + | |||
| + | |||
| + | Exceptionnellement, | ||
| + | |||
| + | \\ c) Dans ce cas, certaines des commandes suivantes peuvent être essayées, toujours en remplaçant " | ||
| + | <code bash> | ||
| + | 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 / | ||
| + | |||
| + | |||
| + | ==== 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 [[wpfr> | ||
| + | |||
| + | === Test avec déchargement du module === | ||
| + | |||
| + | - Brancher l' | ||
| + | - Relever les identifiants USB vendeur: | ||
| + | * lister les périphériques USB utilisant le pilote UAS < | ||
| + | * noter la valeur de Port et Dev, puis afficher ce périphérique USB avec XXX //'' | ||
| + | * noter la valeur après ID sous le format <id vendeur>:< | ||
| + | - Démonter les partitions du disque : < | ||
| + | - Décharger le module **uas** : < | ||
| + | - Décharger le module **usb-storage** : < | ||
| + | - Recharger le module **usb-storage** __sans le support uas pour l' | ||
| + | - Si les partitions du disque ne sont pas montées automatiquement, | ||
| + | - Réessayer les commandes '' | ||
| + | |||
| + | === Exemple concret === | ||
| + | |||
| + | Exemple avec un adaptateur de marque U-Green avec le chipset VIA qui se charge en /dev/sdc. | ||
| + | |||
| + | * Tester la commande initiale : < | ||
| + | |||
| + | > 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' | ||
| + | |||
| + | * Recherche du périphérique USB utilisant le pilote UAS : < | ||
| + | |||
| + | >      |%%__%% Port **3**: Dev **35**, If 0, Class=Mass Storage, Driver=**uas**, | ||
| + | |||
| + | * Relever la valeur après Port (ici 3) et Dev (ici 35), et rechercher les identifiants USB pour ce périphérique < | ||
| + | |||
| + | > Bus 003 Device 035: ID **2109: | ||
| + | |||
| + | * Dans l' | ||
| + | * Démonter les partitions du disque : < | ||
| + | |||
| + | > umount: /dev/sdc: not mounted | ||
| + | > umount: / | ||
| + | |||
| + | * Décharger les différents modules : < | ||
| + | sudo modprobe -r usb-storage</ | ||
| + | * Recharger le module usb-storage sans le support UAS pour l' | ||
| + | * Les partitions du disque sont remontées automatiquement, | ||
| + | * Vérifier que le pilote n'est plus **uas** mais **usb-storage**((le numéro de //Device// change à chaque reconnexion))< | ||
| + | |||
| + | > | ||
| + | |||
| + | * Relancer la commande smartctl et constater qu'il n'y a plus d' | ||
| + | |||
| + | > 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: | ||
| + | > Device Model: | ||
| + | > [...] | ||
| + | </ | ||
| + | === Blacklister le module UAS === | ||
| + | |||
| + | Si le test précédent est concluant, il est possible de rendre le changement permanent. | ||
| + | |||
| + | * [[: | ||
| + | * Ajouter la ligne suivante en remplaçant //<id vendeur>// | ||
| + | * Sauvegarder le fichier | ||
| + | * Redémarrer l' | ||
| + | * Brancher l' | ||
| + | ===== Notification automatique d'un problème ===== | ||
| + | |||
| + | Grâce au service (daemon) **smartd** il est possible de faire une analyse régulière et ainsi suivre sur le long terme l' | ||
| + | |||
| + | Il est aussi possible de paramétrer des alertes automatiques (envoi de mail, messages utilisateur par wall, syslog…) en cas de détections d' | ||
| + | **smartd** est inclus dans le paquet // | ||
| + | |||
| + | Le fichier de configuration est __/ | ||
| + | |||
| + | |||
| + | ==== Mettre en place le paramètrage du daemon smartd==== | ||
| + | <note important> | ||
| + | |||
| + | [[tutoriel: | ||
| + | |||
| + | Si nécessaire, | ||
| + | |||
| + | Démarrez ou relancez ensuite le service en tapant dans un [[terminal]]: | ||
| + | |||
| + | - avec __systemctl__ : | ||
| + | <code bash> | ||
| + | systemctl status | ||
| + | - à l' | ||
| + | <code bash> | ||
| + | |||
| + | |||
| + | |||
| + | === Pour tester que smartd | ||
| + | |||
| + | Le but de smartd est de surveiller les disques et de prévenir l' | ||
| + |  | ||
| + | Pour vérifier que les futurs messages d' | ||
| + | <code bash> | ||
| + |  | ||
| + | Pour expédier les messages à un autre destinataire, | ||
| + | <code bash> echo " | ||
| + | Il  faut alors modifier le fichier / | ||
| + | < | ||
| + | Il faut ensuite relancer l' | ||
| + | |||
| + | |||
| + | À signaler aussi le paquet [[apt:// | ||
| + | L' | ||
| + | |||
| + | <note tip>Pour que **smart-notifier** lance ces messages d' | ||
| + | </ | ||
| + | |||
| + | |||
| + | 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 === | ||
| + | <code bash> sudo sh -c 'echo test de message | smart-notifier --notify' | ||
| + | |||
| + | Ce qui affichera : | ||
| + | |||
| + | {{:: | ||
| + | |||
| + | |||
| + | ===== Traduire l' | ||
| + | Lorsque vous installez smart-notifier sur un autre ordinateur que le vôtre, il serait dommage qu' | ||
| + | |||
| + | Trouver le nom du fichier contenant les messages d' | ||
| + | <code bash> ls -ls  / | ||
| + | ==== Première possibilité ==== | ||
| + | Sauvegarder l' | ||
| + | < | ||
| + | sudo cp / | ||
| + | </ | ||
| + | puis avec les [[: | ||
| + | et modifiez les lignes indiquées ci-dessous : | ||
| + | * __Titre de la fenêtre__, //ligne 31//:< | ||
| + | * __Titre du message__, //ligne 56//:< | ||
| + | < | ||
| + | </ | ||
| + | * __ Corps du message__, //ligne 69//: < | ||
| + | < | ||
| + | </ | ||
| + | * __Message de smartd__, //ligne 92//:< | ||
| + | < | ||
| + | </ | ||
| + | ==== Seconde possibilité ==== | ||
| + | Faire la même action | ||
| + | <code bash> | ||
| + | |||
| + | sudo sed -i -e " | ||
| + | sudo sed -i -e " | ||
| + | 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./ | ||
| + | |||
| + | |||
| + | |||
| + | =====Interprétation des résultats ===== | ||
| + | L' | ||
| + | =====Voir aussi ==== | ||
| + | |||
| + | * [[probleme_de_disque|Problème de disque ou partition]] | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[wpfr> | ||
| + | * [[wp> | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * **Vidéo : | ||
| + | * **Vidéo : | ||
| + | * Quelques explications des normales SMART sont disponibles dans Wikipédia, ainsi que dans ce lien : [[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | // | ||
