Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
smartmontools [Le 04/05/2022, 15:09]
geole [Traduire l'alerte]
smartmontools [Le 03/04/2024, 14:03] (Version actuelle)
37.174.27.231 [Cas d'un disque interne]
Ligne 1: Ligne 1:
- 
 {{tag>​Xenial système disque_dur}} {{tag>​Xenial système disque_dur}}
  
Ligne 15: Ligne 14:
  
 //​Étonnament,​ le paquet __smartmontools__ n'est pas installé par défaut et fait l'​objet de relativement peu de publicité.//​ //​Étonnament,​ le paquet __smartmontools__ n'est pas installé par défaut et fait l'​objet de relativement peu de publicité.//​
-</​note> ​+</​note>​
  
 ===== Installation ===== ===== Installation =====
Ligne 34: Ligne 33:
 =====  Utilisation ===== =====  Utilisation =====
  
-<note important>​Il est inutile de tester un SSD car les secteurs testés sont virtuels. Cela ne ferait que l'user de façon prématurée !</​note>​ +<note important>​Il est inutile de tester un SSD car les secteurs testés sont virtuels. Cela ne ferait que l'user de façon prématurée ! 
-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'​obtenir par : + 
 +Évidemment,​ il reste possible de récupérer les données S.M.A.R.T sans causer d'​usure au SSD, heureusement 8-)</​note>​ 
 +Pour les SSD **NVME**, il est nécessaire d'​installer un paquet supplémentaire : 
 +<​code>​sudo apt install nvme-cli</​code>​ 
 + 
 + 
 +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'​obtenir par :
   sudo fdisk -l    sudo fdisk -l 
 )) ou // /dev/sg1 // ((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 : )) ou // /dev/sg1 // ((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 :
Ligne 51: Ligne 56:
    sudo smartctl -H -i /dev/sdX    sudo smartctl -H -i /dev/sdX
  
-  ​* Pour obtenir toutes les infos disponibles par SMART sur le disque :+**  ​* Pour obtenir toutes les infos disponibles par SMART sur le disque :**
  
    sudo smartctl -s on -a /dev/sdX    sudo smartctl -s on -a /dev/sdX
Ligne 113: Ligne 118:
  
 La connaissance de l'​état actuel d'un disque peut être importante pour comprendre une erreur de lecture-écriture. 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. ​+Cette information est souvent demandée dans le forum.
  
 <note warning>​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]].</​note>​ <note warning>​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]].</​note>​
Ligne 125: Ligne 130:
 === Cas d'un disque non NVMe === === Cas d'un disque non NVMe ===
 La commande est : La commande est :
-<code bash>​sudo smartctl -s on -a /​dev/​sdX</​code>​Rappel : Mettre un chiffre après la lettre **X** est (sauf montage en RAID, voir note) **nuisible**.+<code bash>​sudo smartctl -s on -a /​dev/​sdX</​code>​Rappel : Mettre un chiffre après la lettre **X** est **nuisible** ​(sauf montage en RAID, voir note)
 +<note important>​Prière de ne pas oublier ​**-s on** afin d'​avoir les données de suivi.</​note>​
 === Cas d'un disque NVMe === === Cas d'un disque NVMe ===
-Le retour de la commande ​précédente ​peut identifier que le disque est un [[https://​fr.wikipedia.org/​wiki/​NVM_Express|NVMe]] +Le retour de la commande ​**lsblk** ​peut identifier que le disque est un [[https://​fr.wikipedia.org/​wiki/​NVM_Express|NVMe]]. Dans ce cas la commande précédante devient: 
 +<code bash>​sudo smartctl -s on -a /​dev/​nvmeXXX</​code>​
 Un suivi plus spécifique est alors possible en installant le logiciel dédié à ce type de matériel. Un suivi plus spécifique est alors possible en installant le logiciel dédié à ce type de matériel.
 <code bash>​sudo apt install nvme-cli </​code>​ <code bash>​sudo apt install nvme-cli </​code>​
Ligne 143: Ligne 149:
 ==== Cas des boîtiers et autres adaptateurs USB ==== ==== 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.\\ +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**. 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 +a) Ce complément est en général fourni par
 <​code>​sudo smartctl --scan</​code>​ <​code>​sudo smartctl --scan</​code>​
 qui va retourner quelque chose comme qui va retourner quelque chose comme
Ligne 163: Ligne 169:
 <​code>​Unknown USB bridge [0x</​code>​ <​code>​Unknown USB bridge [0x</​code>​
 De cette ligne, on copie **0xyyyy:​0xzzzz**,​ sans les crochets et on va le chercher dans la page 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 :\\  +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 supportés et donne l'​option "​-d"​ opérationnelle de chacun,
  - La plupart des adaptateurs non supportés.  - La plupart des adaptateurs non supportés.
  
-Sur cette page-là on va donc récupérer la bonne option **-d machin-truc**,​ et +Sur cette page-là on va donc récupérer la bonne option **-d machin-truc**,​ et
 <​code>​sudo smartctl -s on -a -d machin-truc /​dev/​sdX</​code>​ <​code>​sudo smartctl -s on -a -d machin-truc /​dev/​sdX</​code>​
 en remplaçant X par la lettre trouvée juste avant, ce qui fournira le rapport smartctl complet. en remplaçant X par la lettre trouvée juste avant, ce qui fournira le rapport smartctl complet.
Ligne 195: Ligne 201:
   - Décharger le module **uas** : <​code>​sudo modprobe -r uas</​code>​   - Décharger le module **uas** : <​code>​sudo modprobe -r uas</​code>​
   - Décharger le module **usb-storage** : <​code>​sudo modprobe -r usb-storage</​code>​   - Décharger le module **usb-storage** : <​code>​sudo modprobe -r usb-storage</​code>​
-  - 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 : <​code>​sudo modprobe usb-storage quirks=<​id vendeur>:<​id produit>:​u</​code> ​+  - 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 : <​code>​sudo modprobe usb-storage quirks=<​id vendeur>:<​id produit>:​u</​code>​
   - Si les partitions du disque ne sont pas montées automatiquement,​ débrancher l'​adaptateur USB et le rebrancher **connecté avec le disque dur**   - Si les partitions du disque ne sont pas montées automatiquement,​ débrancher l'​adaptateur USB et le rebrancher **connecté avec le disque dur**
   - Réessayer les commandes ''​smartctl''​   - Réessayer les commandes ''​smartctl''​
Ligne 205: Ligne 211:
   * Tester la commande initiale : <​code>​sudo smartctl -s on -d sat  -a /​dev/​sdc</​code>​   * Tester la commande initiale : <​code>​sudo smartctl -s on -d sat  -a /​dev/​sdc</​code>​
  
-> smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-71-generic] (local build) +>​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 +>​Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org 
->  +
-> **Read Device Identity failed: scsi error unsupported field in scsi command** +>**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.+>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 : <​code>​lsusb -t | grep uas</​code>​   * Recherche du périphérique USB utilisant le pilote UAS : <​code>​lsusb -t | grep uas</​code>​
  
-     |%%__%% Port **3**: Dev **35**, If 0, Class=Mass Storage, Driver=**uas**,​ 480M+   |%%__%% 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 <​code>​lsusb -s 3:​35</​code>​   * Relever la valeur après Port (ici 3) et Dev (ici 35), et rechercher les identifiants USB pour ce périphérique <​code>​lsusb -s 3:​35</​code>​
  
-> Bus 003 Device 035: ID **2109:​0711** VIA Labs, Inc.+>Bus 003 Device 035: ID **2109:​0711** VIA Labs, Inc.
  
   * Dans l'​exemple,​ noter pour la suite <id vendeur>​=2109 et <id produit>​=0711   * Dans l'​exemple,​ noter pour la suite <id vendeur>​=2109 et <id produit>​=0711
-  * Démonter les partitions du disque : <​code>​ sudo umount -v /​dev/​sdc*</​code>​+  * Démonter les partitions du disque : <​code>​sudo umount -v /​dev/​sdc*</​code>​
  
-> umount: /dev/sdc: not mounted +>umount: /dev/sdc: not mounted 
-> umount: /​media/​ubuntu/​Linux (/dev/sdc1) unmounted+>umount: /​media/​ubuntu/​Linux (/dev/sdc1) unmounted
  
   * Décharger les différents modules :(Les commandes sont sans retour.) <​code>​sudo modprobe -r uas   * Décharger les différents modules :(Les commandes sont sans retour.) <​code>​sudo modprobe -r uas
Ligne 232: Ligne 238:
   * Vérifier que le pilote n'est plus **uas** mais **usb-storage**((le numéro de //Device// change à chaque reconnexion))<​code>​lsusb -t | grep usb-storage</​code>​   * Vérifier que le pilote n'est plus **uas** mais **usb-storage**((le numéro de //Device// change à chaque reconnexion))<​code>​lsusb -t | grep usb-storage</​code>​
  
-    ​|%%__%% Port 3: Dev 36, If 0, Class=Mass Storage, Driver=**usb-storage**,​ 480M+  ​|%%__%% 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 : <code bash>​sudo smartctl -s on -d sat  -a /dev/sdc   * Relancer la commande smartctl et constater qu'il n'y a plus d'​erreur : <code bash>​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) +>​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 +>​Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org 
->  +
-> === START OF INFORMATION SECTION === +>=== START OF INFORMATION SECTION === 
-> Model Family: ​    ​Western Digital Caviar Blue Serial ATA +>Model Family: ​    ​Western Digital Caviar Blue Serial ATA 
-> Device Model: ​    WDC WD1600AAJS-75M0A0 +>Device Model: ​    WDC WD1600AAJS-75M0A0 
-> [...]+>[...]
 </​code>​ </​code>​
 === Blacklister le module UAS === === Blacklister le module UAS ===
Ligne 255: Ligne 261:
  
 === Test plus facile === === Test plus facile ===
-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  +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 
-<code bash> sudo touch /​etc/​modprobe.d/​blacklist-usb.conf+<code bash>​sudo touch /​etc/​modprobe.d/​blacklist-usb.conf
 sudo echo  "​blacklist uas" ​ /​etc/​modprobe.d/​blacklist-usb.conf</​code>​ sudo echo  "​blacklist uas" ​ /​etc/​modprobe.d/​blacklist-usb.conf</​code>​
 Puis on reboote et on vérifie que le problème est résolu. Puis on reboote et on vérifie que le problème est résolu.
Ligne 263: Ligne 269:
 ===== Notification automatique d'un problème ===== ===== 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'​état des disques durs et de votre matériel. ​+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. 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.
Ligne 284: Ligne 290:
 systemctl status ​ smartd </​code>​ systemctl status ​ smartd </​code>​
 - à l'​ancienne :​ - à l'​ancienne :​
-<code bash> ​ sudo /​etc/​init.d/​smartmontools start  </​code>​+<code bash>​sudo /​etc/​init.d/​smartmontools start  </​code>​
  
  
Ligne 293: Ligne 299:
   ​   ​
 Pour vérifier que les futurs messages d'​anomalies seront expédiés, il suffit de lancer ces commandes :​ Pour vérifier que les futurs messages d'​anomalies seront expédiés, il suffit de lancer ces commandes :​
-<code bash>​echo "​DEVICESCAN -a -m root -M test" > /​tmp/​FIC ​ && sudo smartd -n -q onecheck -c /tmp/FIC </​code>​+<code bash>​echo "​DEVICESCAN -a -m root -M test" >/​tmp/​FIC ​ && sudo smartd -n -q onecheck -c /tmp/FIC </​code>​
   ​   ​
 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 : 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 :
-<code bash> echo "​DEVICESCAN -a -m destinataire@exemple.com -M test" > /​tmp/​FIC ​ && sudo smartd -n -q onecheck -c /​tmp/​FIC</​code>​+<code bash>​echo "​DEVICESCAN -a -m destinataire@exemple.com -M test" >/​tmp/​FIC ​ && sudo smartd -n -q onecheck -c /​tmp/​FIC</​code>​
 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 :​ 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 :​
 <​code>​DEVICESCAN -a -r 9! -d  removable -n standby -m destinataire@exemple.com,​root ​ -M exec /​usr/​share/​smartmontools/​smartd-runner</​code>​ <​code>​DEVICESCAN -a -r 9! -d  removable -n standby -m destinataire@exemple.com,​root ​ -M exec /​usr/​share/​smartmontools/​smartd-runner</​code>​
Ligne 302: Ligne 308:
  
  
-À signaler aussi le paquet [[apt://​smart-notifier|smart-notifier]] qui vous préviendra de tout problème imminent. ​+À signaler aussi le paquet [[apt://​smart-notifier|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. 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.
  
Ligne 311: Ligne 317:
 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...). 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 === === Pour tester que smart-notifier fonctionne ===
-<code bash> sudo sh -c 'echo test de message | smart-notifier --notify'​ </​code>​+<code bash>​sudo sh -c 'echo test de message | smart-notifier --notify'​ </​code>​
  
 Ce qui affichera : Ce qui affichera :
Ligne 319: Ligne 325:
 Le message peut aussi être affiché au démarrage de l'​ordinateur. Le message peut aussi être affiché au démarrage de l'​ordinateur.
    
-{{:​smartmontools:​harddiskproblemsdetected.png?​600 |}}+{{ :​smartmontools:​harddiskproblemsdetected.png?​600 |}} 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
  
  
Ligne 329: Ligne 346:
  
 Trouver le nom du fichier contenant les messages d'​avertissement :​ Trouver le nom du fichier contenant les messages d'​avertissement :​
-<code bash> ls -ls  /​usr/​share/​smart-notifier/​smart_notifier </​code>​+<code bash>ls -ls  /​usr/​share/​smart-notifier/​smart_notifier </​code>​
 ==== Première possibilité ==== ==== Première possibilité ====
-Sauvegarder l'​original en cas de boulette en tapant dans [[terminal]] : ​+Sauvegarder l'​original en cas de boulette en tapant dans [[terminal]] :​
 <​code>​ <​code>​
 sudo cp /​usr/​share/​smart-notifier/​smart_notifier/​smart-notifier.glade /​usr/​share/​smart-notifier/​smart_notifier/​smart-notifier.glade.old sudo cp /​usr/​share/​smart-notifier/​smart_notifier/​smart-notifier.glade /​usr/​share/​smart-notifier/​smart_notifier/​smart-notifier.glade.old
Ligne 365: Ligne 382:
   * [[http://​smartlinux.sourceforge.net/​smart/​attributes.php|Index des SMART Attributes]]   * [[http://​smartlinux.sourceforge.net/​smart/​attributes.php|Index des SMART Attributes]]
   * [[http://​www.lea-linux.org/​documentations/​index.php/​Hardware-hard_plus-smart|Tuto sur le système smart]] : tutoriel de Lea-linux   * [[http://​www.lea-linux.org/​documentations/​index.php/​Hardware-hard_plus-smart|Tuto sur le système smart]] : tutoriel de Lea-linux
-  * [[wpfr>​Self-Monitoring%2C_Analysis_and_Reporting_Technology|Wikipédia : SMART]] (en français et très succinct). +  * [[wpfr>​Self-Monitoring,​_Analysis_and_Reporting_Technology|Wikipédia : SMART]] (en français et très succinct).
-  * [[wp>​S.M.A.R.T.]] (en anglais mais beaucoup moins abrégé).+
   * [[http://​valaurea.free.fr/​documents/​sig11_smart.html|Tout savoir de ses disques durs avec smartmontools (sig-11.org)]]   * [[http://​valaurea.free.fr/​documents/​sig11_smart.html|Tout savoir de ses disques durs avec smartmontools (sig-11.org)]]
   * [[https://​www.smartmontools.org/​browser/​trunk/​www/​badblockhowto.xml|Bad block HOWTO for smartmontools]] : pour aller plus loin lorsqu'​une erreur est détectée.   * [[https://​www.smartmontools.org/​browser/​trunk/​www/​badblockhowto.xml|Bad block HOWTO for smartmontools]] : pour aller plus loin lorsqu'​une erreur est détectée.
  • smartmontools.1651669753.txt.gz
  • Dernière modification: Le 04/05/2022, 15:09
  • par geole