pense-bête de bruno sanchiz

Accueil > Linux > en cas de problème > smart - vérifier les disques durs

smart - vérifier les disques durs

Publié le 20 août 2015, dernière mise-à-jour le 19 décembre 2025, > 83 visites, >> 184382 visites totales.

gsmartcontrol : dans une fenêtre
smartctl : en ligne de commande

smart

on peut faire deux type de tests :

  • court ( 2 min )
  • long ( 2 heures )

Ensuite on regarde le résultat :

  • on doit avoir VALUE > THRESH
  • avec gsmartcontrol, si on a du rouge c’est mauvais signe

gsmartcontrol

  • installer gsmartcontrol ( apt-get install gsmartcontrol )
  • taper gsmartcontrol dans un terminal root
    • ou par le menu
      • avec cinnamon : Administration::GsmartControl
      • avec mate : Logiciels::Outils Système::GsmartControl
  • sélectionner un disque dur
  • choisissez l’onglet Perform Tests
  • lancer au moins le test court

Lecture :
Si un truc est rouge, il y a un problème, comme sur l’exemple en dessous, MAIS le problème peut être très vieux ( vérifier les heures )

On voit par exemple que le disque dur n’a que 285 heures sur la ligne 9 power-on-time ( un disque peut avoir plusieurs 1=dizaines de milliers d’heures )
Ensuite on peut aller voir dans l’onglet error log si l’heure correspond, s’il y a plusieurs erreurs

smartctl : en ligne de commande (2007->2024)

Optionnel, mais doit avoir été fait une fois : lancer le programme sur tous les disques :
for devsd in $(blkid|sed 's#[0-9]\:.*##'|sort -u);do sudo smartctl --smart=on --offlineauto=on --saveauto=on $devsd ; done

TESTS COURTS ET RESULTATS SUR TOUS LES DISQUES ( les résultats apparaissent à la fin de tous les tests , 2min par disque + 2 minutes )
for devsd in $(blkid |grep 'TYPE="ext'|sed 's#[0-9]\:.*##'|sort -u);do echo $devsd ; date ; smartctl -t short $devsd ; done ;  sleep 4m; for devsd in $(blkid |grep 'TYPE="ext'|sed 's#[0-9]\:.*##'|sort -u);do echo $devsd ;   smartctl -A $devsd |grep "Power_On_Hours" |sed "s#.* \([0-9]*\)#\1 heures#" ; smartctl -H $devsd ;smartctl --quietmode=errorsonly --all $devsd ; done

pour précision de mon script :

  • il cherche les partitions du type ext, mais sort la variable devsd=/dev/sda qui contient le disque pas la partition
    -* il fait le test court sur le disque ( smartctl -t short $devsd) correspondant .
  • il attend 4 minutes pour assurer que les tests ont été faits
  • pour chaque disque, il donne le temps d’utilisation smartctl -A grep "Power_On_Hours"
  • pour chaque disque, il donne des informations minimales smartctl -H
  • pour chaque disque, il donne les erreurs smartctl —quietmode=errorsonly —all

exemple de résultat :

dev/sdf
11940 heures

SMART overall-health self-assessment test result: PASSED

ATA Error Count: 8 (device log contains only the most recent five errors)
Error 8 occurred at disk power-on lifetime: 8224 hours (342 days + 16 hours)
Error 7 occurred at disk power-on lifetime: 8224 hours (342 days + 16 hours)
Error 6 occurred at disk power-on lifetime: 8224 hours (342 days + 16 hours)
Error 5 occurred at disk power-on lifetime: 8224 hours (342 days + 16 hours)
Error 4 occurred at disk power-on lifetime: 8224 hours (342 days + 16 hours)

On voit que la dernière erreur a eu lieu au bout de 8224 heures alors que le disque a été en marche pendant 11940 heures et qu’jourd’hui il est PASSED donc bien.

LANCER UN TEST RAPIDE sur le disque sdc :
sudo smartctl -t short /dev/sdc

LANCER UN TEST LONG sur le disque sdc
sudo smartctl -t long /dev/sdc

RÉSULTATS DES TESTS sur le disque sdc

smartctl --quietmode=errorsonly --all /dev/sdc

heures pendant lesquelles le disque tourne :

smartctl -A /dev/sdc |grep "Power_On_Hours" |sed "s#.* \([0-9]*\)#\1 heures#"

liste des attributs et valeurs

smartctl -A /dev/sdc
exemple :

ID ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
7 Seek_Error_Rate 0x000f 077 060 045 Pre-fail Always - 51130987

(RAW), la valeur brute, représente la valeur mesurée de l’attribut.
THRESH représente la valeur limite
VALUE représente un indice de fiabilité actuelle de cet attribut
WORST représente la plus petite valeur de VALUE enregistrée

on doit avoir VALUE > THRESH

SI VALUE < THRESH et type = OLD-AGE : le produit est en fin de vie, usure normale
SI VALUE < THRESH et type = Pre-Fail : PANNE IMMINENTE

Nom de l’attribut Rôle Raw_Read_Error_Rate Fréquence d’apparition d’erreurs pendant la lecture de données brutes

Spin_Up_Time Temps de mise en rotation du disque

Start_Stop_Count Nombre de cycles arrêt/démarrage de l’axe de rotation

Reallocated_Sector_Ct Nombre de secteurs ré-alloués

Seek_Error_Rate Fréquence d’erreurs pendant le positionnement de la tête magnétique

Power_On_Hours Nombre d’heures de fonctionnement

Spin_Retry_Count Nombre de mises en rotation forcée du disque

Power_Cycle_Count Nombre de cycles de mise sous tension

Temperature_Celsius Température interne du disque en degrés Celsius

Hardware_ECC_Recovered Nombre de corrections ECC réalisées

Current_Pending_Sector Nombre de secteurs en attente de ré-allocation Offline_Uncorrectable Nombre de secteurs non ré-allouables

UDMA_CRC_Error_Count Nombre d’erreurs de CRC pendant un accès Ultra DMA

Il existe deux méthodes pour mettre à jour les valeurs des attributs. La première dite « always » est la plus commune. Le composant électronique observe en permanence cet attribut. A chaque consultation de l’attribut, on peut y lire la valeur en cours. Ainsi, la température, le nombre d’erreurs ECC sont à jour en permanence. Les attributs dits « offline » ne seront remis à jour que lors d’un test du disque avec l’un des quatre modes : offline, short, long, conveyance.

lea linux

[bruno sanchiz]