S.M.A.R.T. (Français)
Le composant S.M.A.R.T. (technique d'auto-diagnostic, d'analyse et de signalement) est incorporé à la plupart des dispositifs de stockage modernes. Les données de fonctionnement du périphérique de stockage (température, nombre de secteurs ré-alloués, erreurs de localisation...) sont collectées pour permettre au système d'exploitation de vérifier la fiabilité et l'état d'un support de données, prédire ses modes de défaillance et, le cas échéant, adresser des notifications à l'utilisateur.
Avec Arch Linux : le paquetage Smartmontools
Le paquetage smartmontools comporte deux utilitaires permettant d'analyser et de contrôler des périphériques de stockage : smartctl
et smartd
.
Il faut bien sûr que les clefs USB ou disques que vous voulez examiner possèdent des attributs SMART actifs. Vous pouvez utiliser #smartctl pour détecter si la technologie SMART est présente sur le support et, dans l'affirmative, l'activer. De là, vous pourrez #Faire un test manuellement et #examiner le diagnostic, ou vous servir de #smartd pour lancer automatiquement des tests et recevoir les notifications associées par e-mail.
smartctl
smartctl
est une commande en ligne qui contrôle le dispositif SMART natif de la plupart des disques ATA/SATA et SCSI/SAS, ainsi que des mémoires flash.
L'option -i
/--info
affiche une quantité d'informations à propos du support mémoire, et en premier lieu indique si le dispositif SMART est disponible, voire activé :
# smartctl --info /dev/sda | grep 'SMART support is:'
SMART support is: Available - device has SMART capability. SMART support is: Enabled
Si le dispositif SMART est disponible mais inactif, vous pouvez l'amorcer :
# smartctl --smart=on /dev/<device>
Vous devrez peut-être préciser le type de périphérique. Par exemple, le mot-clef --device=ata
indique à smartctl
qu'il s'agit d'un port ATA, ce qui dissuade smartctl
d'envoyer des commandes SCSI sur ce port.
Faire un test
Un périphérique de stockage peut effectuer trois types d'auto-tests (tous préserveront les données utilisateur!) :
- Short: des tests de recherche d'anomalie avec une durée d'exécution arbitrairement limitée, et portant sur un nombre de secteurs échantillonnés ;
- Extended ou Long: mêmes tests que short mais sans limitation sur le temps de réponse et avec examen exhaustif des secteurs,
- Conveyance: identifie les dommages physiques survenus pendant le transport du périphérique.
L'option -c
/--capabilities
affiche les tests disponibles pour le périphérique et leur durée d'exécution approximative. Par exemple:
# smartctl -c /dev/sda
... Short self-test routine recommended polling time: ( 1) minutes. Extended self-test routine recommended polling time: ( 74) minutes. Conveyance self-test routine recommended polling time: ( 2) minutes. ...
Pour lancer le test, utilisez l'option -t
/--test=<test_name>
:
# smartctl -t short /dev/<device> # smartctl -t long /dev/<device> # smartctl -t conveyance /dev/<device>
examiner le diagnostic
L'examen des résultats se fait avec l'option -H
# smartctl -H /dev/<device>
Vous pouvez aussi relire les résultats des derniers tests et les données detaillées relative à ce support de stockage:
# smartctl -l selftest /dev/<device> # smartctl -a /dev/<device>
smartd
Le démon smartd assure le suivi des statuts SMART et déclenche des avis de notification à chaque anomalie. Il est géré par systemd et configuré par le fichier /etc/smartd.conf
. La syntaxe de ce fichier de configuration est à vrai dire plutôt ésotérique, et nous n'en donnons ici qu'un aperçu ; vous trouverez toutes les informations et des exemples dans les sections commentées de /etc/smartd.conf
et dans man 5 smartd.conf
.
Utilisation du démon
Pour lancer le démon, vérifier son état, programmer son auto-démarrage au boot de GNU/Linux et lire les dernières lignes du registre-journal, appliquez simplement l'option start/enable de systemd à smartd.service
.
smartd reconnaît toutes les commandes courantes des commandes systemctl
et journalctl
.
Identification des disques à contrôler
En vue de contrôler tous les périphériques de stockage possibles, il faut ajouter ceci au fichier de configuration :
/etc/smartd.conf
DEVICESCAN -a
Notez qu'il s'aigt-là de la configuration par défaut de smartd et qu'on peut omettre la directive -a
(présente par défaut).
Pour ne suivre que les disques /dev/sda
et /dev/sdb
, codez ceci :
/etc/smartd.conf
/dev/sda -a /dev/sdb -a
Pour suivre avec la technologie SMART les périphériques de stockage externes (des clefs USB par exemple), il vaut mieux indiquer à smartd le code UUID plutôt que son adresse /dev/sdX, susceptible de changer à chaque redémarage du système.
Il vous faut donc d'abord récupérer l'UUID du périphérique en question ; cherchez dans les lignes afichées par la commande ls -lah /dev/disk/by-uuid/
:
ls -lah /dev/disk/by-uuid/
lrwxrwxrwx 1 root root 9 Nov 5 22:41 820cdd8a-866a-444d-833c-1edb0f4becac -> ../../sde lrwxrwxrwx 1 root root 10 Nov 5 22:41 b51b87f3-425e-4fe7-883f-f4ff1689189e -> ../../sdf2 lrwxrwxrwx 1 root root 9 Nov 5 22:42 ea2199dd-8f9f-4065-a7ba-71bde11a462c -> ../../sda lrwxrwxrwx 1 root root 10 Nov 5 22:41 fe9e886a-8031-439f-a909-ad06c494fadb -> ../../sdf1
Suposons qu'ici la clef USB que nous voulions contrôler soit celle adressée par /dev/sde au démarrage. Il faut maintenant indiquer au démon smartd qu'il doit suivre cette unité de stockage en utilisant l'adresse /dev/disk/by-uuid/
.
/etc/smartd.conf
/dev/disk/by-uuid/820cdd8a-866a-444d-833c-1edb0f4becac -a
Ainsi la clef USB sera suivie même si son adresse /dev/sdX change au cours d'un redémarrage.
Réception des messages d'alerte
Pour recevoir un e-mail de notification en cas de problème, utilisez l'option -m
:
/etc/smartd.conf
DEVICESCAN -m address@domain.com
Pour que l'e-mail parvienne à un compte utilisateur (et non au compte root), il faut que vous ayez préalablement installé et configuré un service MTA (Mail Transport Agent) ou MUA (Mail User Agent). Les MTA les plus connus sont Msmtp (en) et sSMTP (en), mais un simple dma (en) suffira sans doute. Les MTU les plus connus sont sendmail et Postfix (en). Si vous n'avez pas d'autres usages, il vous suffit de configurer S-nail (en), mais en suivant ces instructions.
L'option -M test
envoie un e-mail à chaque lancement du démont smartd :
/etc/smartd.conf
DEVICESCAN -m address@domain.com -M test
Ces e-mails peuvent mettre du temps à vous parvenir. Si donc vous voulez être prévenu imédiatement en cas de crash disque, il vaut mieux prévoir l'exécution d'un script parallèlement à l'envoi du mail :
/etc/smartd.conf
DEVICESCAN -m address@domain.com -M exec /usr/local/bin/smartdnotify
Pour envoyer un mail et une alerte systèmn, ajouter dans /usr/local/bin/smartdnotify
quelque chose du genre :
#!/bin/sh # Envoyer le mail echo "$SMARTD_MESSAGE" | mail -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS" # Notification a l'utilisateur wall "$SMARTD_MESSAGE"
Si vous utilisez un environnement de bureau, vous préfèrerez sans-doute que le message apparaisse dans une boîte po-up. Voici un script (remplacez X_user
et X_userid
par le nom et l'identifants du client X) :
/usr/local/bin/smartdnotify
#!/bin/sh sudo -u X_user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/X_userid/bus notify-send "S.M.A.R.T Error ($SMARTD_FAILTYPE)" "$SMARTD_MESSAGE" --icon=dialog-warning
Ce script nécessite l'installation du paquetage libnotify et un environnement de bureau compatible.
Vous pouvez aussi placer vos scripts utilisateurs dans le répertoire /usr/share/smartmontools/smartd_warning.d/
:
Ce script prévient tous les utilisateurs conectés au systàme via libnotify.
/usr/share/smartmontools/smartd_warning.d/smartdnotify
#!/bin/sh IFS=$'\n' for LINE in `w -hs` do USER=`echo $LINE | awk '{print $1}'` USER_ID=`id -u $USER` DISP_ID=`echo $LINE | awk '{print $8}'` sudo -u $USER DISPLAY=$DISP_ID DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USER_ID/bus notify-send "S.M.A.R.T Error ($SMARTD_FAILTYPE)" "$SMARTD_MESSAGE" --icon=dialog-warning done
Ce script nécessite l'installation des paquetages libnotify et procps-ng ainsi qu'un environnement de bureau compatible avec ces applications.
Vous pouvez lancer ces scripts à la main par
/etc/smartd.conf
DEVICESCAN -m @smartdnotify
.
En mode console
- skdump — utilitaire d'interrogation du composant SMART des supports de stockage.
Avec un GUI
- DisKMonitor — Outil KDE d'interrogation des composants SMART et MDRaid.
- Plasma Disks — Système de contrôle des disques de KDE Plasma.
- Gnome Disks — Interface GNOME exploitant l'API libatasmart (Gnome Disks, avec l’utilitaire d'alerte gsd-disk-utility-notify, est inclus natif dans l'environnement de bureau gnome).
- GSmartControl — Interface GNOME à smartctl.