Smartmontools permet de monitorer ses disques durs ou SSD. Sur son serveur, il est surtout utile de configurer le daemon afin d’être averti d’un problème de disque avant que celui-ci ne meurt tragiquement….

Utilisation de smartctl

Il permet d’interroger les données SMART à la commande :

  • Lancer un test rapide : smartctl -t short /dev/sdX
  • Lancer un test long : smartctl -t long /dev/sdX
  • accéder au résultats/statistiques de ces tests : smartctl -l selftest /dev/sdX
  • Pour les erreurs : smartctl -l error /dev/sdX
  • résumé : smartctl -q errorsonly -H -l selftest /dev/sdX
  • tout : smartctl -a /dev/sdX
  • uniquement les infos des disques : smartctl -i /dev/sda
  • Activer le test online : -s on

Configurer le disque pour faire le test uniquement quand le disque est démarré, pratique quand ses disques sont mis en pause.

-n POWERMODE, --nocheck=POWERMODE
[ATA only] Specifies if smartctl should exit before performing any checks when the device is in a low-power mode. It may be used to prevent a disk from being spun-up by smartctl. The power mode is ignored by default. A nonzero exit status is returned if the device is in one of the specified low-power modes (see RETURN VALUES below). never|sleep|standby|idle Maximum number of skipped checks (in a row) can be specified by appending positive number ´,N´ to POWERMODE (like ´-n standby,15´). After N checks are skipped in a row, powermode is ignored and the check is performed anyway When a periodic test is skipped, smartd normally writes an informal log message. The message can be suppressed by appending the option ´,q´ to POWERMODE (like ´-n standby,q´). This prevents a laptop disk from spinning up due to this message

Options conseillées :

smartctl -s on -o off -S on -n standby /dev/sda

Test automatique récurrent mais je préfère déconseiller pour les disques mis en veille : le test automatique en offline (-o) et autosave (-S) :

smartctl -o on -S on /dev/sda

Voici les informations du MAN à ce sujet :

SMART Attribute Autosave Enabled.
SMART Automatic Offline Testing Enabled every four hours.

ATTENTION que c’est fait toutes les 4 heures, et cela peut potentiellement remettre le disque dur en marche s’il est en sleep avec hdparm.

Je conseille de ne pas faire de test offline pour les données non critiques, et de mettre une tâche crontab pour faire un « smartctl -t offline /dev/sdX » tous les X temps. Un autre piste est d’utiliser l’option « -n sleep » pour vérifier que le disque ne démarre pas pour faire son test.

Voici le script que l’utilise pour la tâche cron. Si vous ne renseignez pas de disques dans la variable « DISKS » alors tous les disques sont vérifiés.

DISKS=""
if [ "$DISKS" == "" ] ; then DISKS="$(ls /dev/sd? )" ; fi
for disk in $DISKS ; do
echo "Disk : $disk"
smartctl -t offline -n sleep $disk || echo "Error disk $disk"
echo -e "\n\n\n"
done
exit 0

Daemon smartmontools

Décommenter ceci dans le fichier /etc/default/smartmontools pour un démarrage automatique du service :

start_smartd=yes

Éditer /etc/smartd.conf :

/dev/sda -H -l error -l selftest -t
  • -M exec /usr/share/smartmontools/smartd-runner –> -M test : pour tester la notification
  • -i 167 permet d’ignorer un check de l’attribut 167
  • -I 167 permet d’ignorer un traking de l’attribut 167

Dans le cadre d’un SSD industriel en SATA, j’ai utilisé ces paramètres:

/dev/disk/by-id/ata-TS8GHSD310_20120110487551106286 -H -l error -l selftest -n standby,10,q -i 160 -i 161 -i 163 -i 164 -i 165 -i 166 -i 167 -m root -M exec /usr/share/smartmontools/smartd-runner

Pour un disque dur, ces paramètres sont suffisants :

/dev/disk/by-id/ata-WDC_WD20EARX-00PASB0_WD-WCAZAH488299 -H -l error -l selftest -n standby,10,q -m root -M exec /usr/share/smartmontools/smartd-runner

Pour paramétrer la vérification par défaut de tous les disques et pour tous les nouveaux disques du serveur :

DEVICESCAN -d removable -H -l error -l selftest -n standby,10,q -m root -M exec /usr/share/smartmontools/smartd-runner

Ensuite on redémarre le daemon :

/etc/init.d/smartmontools restart

Une source intéressante sur le sujet.