Surveillance de l'état du disque avec smartctl et smartd
Introduction
smartctl est un utilitaire de console du package smartmontools, conçu pour fonctionner avec la technologie S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) implémentée dans les disques de stockage modernes.
Cas d'utilisation :
- serveurs des sociétés d'hébergement ;
- nœuds VPS/VDS ;
- serveurs dédiés ;
- serveurs de fichiers ;
- systèmes de sauvegarde ;
- infrastructures d'entreprise.
Quelles tâches il résout :
- détection précoce de la dégradation des disques ;
- prédiction des pannes de disques ;
- réduction du risque de perte de données ;
- automatisation de la surveillance de la santé des HDD, SSD, NVMe ;
- analyse des problèmes physiques dans le sous-système de disque.
La surveillance proactive SMART permet d'identifier un problème avant une panne réelle du disque, ce qui est d'une importance critique pour les environnements de production.
Exigences et prérequis
Systèmes d'exploitation et versions pris en charge :
Linux :
- Debian 10+
- Ubuntu 18.04+
- RHEL / AlmaLinux / Rocky Linux 8+
- CentOS 7 (pris en charge, mais obsolète)
- FreeBSD 12+
Windows (via smartmontools, utilisation limitée)
Les exemples ci-dessous sont fournis pour Linux.
Logiciels et packages requis :
- package smartmontools
- accès à /dev/sdX, /dev/nvmeX
- systemd installé (pour smartd)
Droits d'accès :
- privilèges root requis
- ou accès via sudo
Vérifications préliminaires
Affichage de la liste des disques dans le système :
lsblk -d -o NAME,MODEL
Aperçu et concepts de base
Termes clés
- SMART – système de diagnostic intégré des disques
- Attributs – attributs d'état (Reallocated_Sector_Ct, Pending_Sectors, etc.)
- Auto-test – tests intégrés au disque
- smartctl – utilitaire CLI pour la gestion SMART
- smartd – démon de surveillance automatique
Comment ça fonctionne
- Le disque collecte indépendamment des statistiques
- smartctl lit ces données
- smartd analyse les valeurs seuils et les événements
- Des notifications sont envoyées en cas de problèmes
Logique de flux de travail
Disque > Attributs SMART > smartctl > smartd > journal / email / surveillance
Configuration de base et utilisation de smartctl
Installation de l'utilitaire smartmontools
Travailler avec SMART est impossible sans le package smartmontools installé, qui inclut les utilitaires smartctl (travail manuel avec les disques) et smartd (démon de surveillance en arrière-plan).
L'installation est effectuée à l'aide des outils de gestion de packages standard de la distribution.
Debian / Ubuntu
sudo apt update
sudo apt install smartmontools
RHEL / AlmaLinux / Rocky Linux
sudo dnf install smartmontools
Après l'installation, les utilitaires deviennent disponibles dans le système et sont prêts à être utilisés sans initialisation supplémentaire.
Vérification de la version et de la disponibilité de smartctl
Comme première étape, il est recommandé de vérifier que l'utilitaire est correctement installé et disponible dans le système :
smartctl --version
La commande affiche la version du package et une liste des technologies prises en charge.
Cela vous permet de :
- s'assurer qu'une version à jour est utilisée ;
- vérifier la prise en charge de NVMe, RAID et d'autres types de périphériques.
Vérification de la prise en charge de SMART sur un disque spécifique
Ensuite, il est nécessaire de vérifier si le disque lui-même prend en charge la technologie SMART et si elle est activée au niveau du périphérique.
sudo smartctl -i /dev/sda
Exemple de sortie correcte :
SMART support is: Available - device has SMART capability. SMART support is: Enabled
Available – le disque prend physiquement en charge SMART ;
Enabled – la collecte de données SMART est activée et disponible pour la lecture.
Si SMART est pris en charge mais désactivé, cela est souvent observé sur les disques neufs ou précédemment inutilisés. Dans ce cas, il doit être activé manuellement :
sudo smartctl -s on /dev/sda
Après cela, il est recommandé de relancer la commande smartctl -i pour s'assurer que SMART est activé.
Affichage des attributs SMART et évaluation initiale de la santé
La principale valeur pratique de SMART réside dans ses attributs – des valeurs numériques reflétant l'état de la surface, de la mécanique et de l'électronique du disque.
Pour afficher les attributs, utilisez la commande :
sudo smartctl -A /dev/sda
La sortie contient un tableau d'attributs avec leurs valeurs actuelles et leur historique. Avant tout, il convient de prêter attention aux indicateurs suivants :
Champs clés dans la sortie :
- VALUE (Valeur actuelle) : La valeur normalisée de l'attribut (généralement de 1 à 100, 100 étant idéal). Le disque est considéré comme défectueux si VALUE ≤ THRESH.
- WORST (Pire valeur) : La pire valeur atteinte pendant le fonctionnement du disque.
- THRESH (Seuil) : La valeur minimale admissible pour VALUE. Dépasser le seuil (VALUE ≤ THRESH) est un signe de condition critique.
- RAW_VALUE : La valeur "brute", non normalisée de l'attribut. C'est ce qui doit être analysé pour évaluer l'usure et compter les événements.
Attributs clés pour les HDD (disques durs traditionnels) :
- Reallocated_Sector_Ct : Une augmentation indique une dégradation physique de la surface.
- Current_Pending_Sector (Secteurs en attente de réallocation) : Secteurs instables. Même une seule valeur non nulle est un signe d'avertissement.
- Offline_Uncorrectable (Erreurs non corrigibles) : Secteurs qui n'ont pas pu être lus.
- Power_On_Hours : Le temps total de fonctionnement du disque.
Attributs clés pour les SSD :
- Retired_Block_Count : L'équivalent de Reallocated_Sector_Ct pour les HDD. Montre le nombre de blocs mis hors service. Même une faible valeur avec VALUE=100 peut être normale.
- Reallocated_Event_Count : Le nombre d'événements de réallocation.
- SSD_Life_Left ou Percentage Used/Media Wearout Indicator : Le pourcentage de vie restante (ou d'usure). Une faible valeur (par exemple, <10%) est un signe de défaillance imminente.
- Wear_Range_Delta : Un indicateur de l'uniformité de l'usure des cellules de mémoire.
- Power_On_Hours_and_Msec : Le temps total de fonctionnement.
- Lifetime_Writes_GiB / Lifetime_Reads_GiB (Attributs 241, 242) : Le volume total de données écrites/lues.
Attributs clés pour NVMe (via smartctl -a /dev/nvme0) :
- Percentage Used : Le pourcentage de l'endurance d'écriture consommée. L'indicateur principal de l'usure.
- Media and Data Integrity Errors : Erreurs d'intégrité des données.
- Critical Warning : Drapeaux d'avertissement critique.
- Temperature : Température actuelle.
À ce stade, l'administrateur obtient une compréhension générale de l'état du disque et peut identifier des signes évidents de problèmes.
Configuration avancée et scénarios pratiques
SMART prend en charge les auto-tests intégrés, qui sont effectués par le disque lui-même sans intervention du système d'exploitation.
Le test court est conçu pour une vérification rapide des composants clés :
sudo smartctl -t short /dev/sda
Le test long effectue un balayage complet de la surface et prend beaucoup plus de temps :
sudo smartctl -t long /dev/sda
Après la fin du test, les résultats doivent être vérifiés :
sudo smartctl -l selftest /dev/sda
La sortie indique :
- le type de test ;
- le statut de complétion ;
- la présence ou l'absence d'erreurs.
Un test infructueux est une raison directe de se préparer au remplacement du disque.
Travailler avec les contrôleurs RAID
Les contrôleurs RAID matériels cachent souvent les données SMART du système. Dans de tels cas, le type de périphérique doit être spécifié explicitement.
Exemple pour un contrôleur LSI :
smartctl -a -d megaraid,0 /dev/sda
Où :
- -a – clé pour afficher toutes les informations SMART disponibles (attributs, journaux, erreurs, évaluation globale de la santé).
- -d – clé pour spécifier le type de périphérique.
- megaraid – indique au pilote SMART que le disque est derrière un contrôleur LSI/Broadcom (couramment utilisé dans les serveurs).
- 0 – le numéro de disque physique (PD, Physical Drive) dans la matrice RAID. Ce n'est pas sda, mais un ID unique attribué par le contrôleur. Il peut être trouvé à l'aide de l'utilitaire de gestion du contrôleur (par exemple, storcli ou MegaCLI).
- /dev/sda – dans ce contexte, ce n'est pas le vrai disque, mais un pseudo-périphérique représentant le contrôleur RAID lui-même dans le système. Typiquement, c'est /dev/sgX (SCSI Generic) ou simplement /dev/sda si le contrôleur a créé un disque virtuel.
Erreur typique lorsque le type de périphérique n'est pas spécifié :
SMART support is: Unavailable
Cela ne signifie pas que SMART n'est pas disponible – seulement que smartctl n'a pas pu déterminer automatiquement le chemin vers le disque physique. La solution est de spécifier correctement le paramètre -d.
Diagnostics et dépannage
Signes de dysfonctionnements possibles :
- augmentation de la valeur Reallocated_Sector_Ct ;
- Current_Pending_Sector non nul ;
- erreurs de programme/effacement (Program_Fail_Count, Erase_Fail_Count) ;
- erreurs d'auto-test ;
- augmentation de la latence I/O ;
- messages d'erreur dans les journaux système.
Analyse des journaux :
journalctl -u smartd
dmesg | grep -i error
Explication :
Pending Sectors > 0 – risque élevé de panne ;
Reallocated Sectors augmentent – dégradation progressive ;
Auto-test FAILED – le disque doit être remplacé.
Identification des sources de problèmes
Pour exclure les faux positifs, il est important de corréler les données SMART avec la charge réelle.
iostat -x 1
iotop
Vérification de l'emplacement de montage du disque :
lsblk -o NAME,SERIAL,MOUNTPOINT
Identification des contrôleurs :
lspci | grep -i raid
Métriques supplémentaires :
- température supérieure à 50 °C ;
- augmentation des erreurs CRC ;
- valeurs SMART instables.
Configuration des notifications administrateur lorsque les métriques SMART approchent des valeurs seuils
La simple présence de données SMART ne garantit pas encore la sécurité de l'infrastructure. Un élément clé de la surveillance est la notification en temps opportun de l'administrateur au moment où l'état du disque commence à se détériorer, mais qu'une panne n'a pas encore eu lieu.
Le mécanisme de notification vous permet de :
- détecter la dégradation du disque à un stade précoce ;
- planifier le remplacement du disque à l'avance ;
- éviter les temps d'arrêt d'urgence et la perte de données ;
- opérer dans les fenêtres de maintenance planifiées.
Dans smartmontools, le démon smartd est responsable de l'envoi des notifications. Il suit automatiquement les changements dans les attributs SMART et réagit aux écarts par rapport à la norme.
Principe de fonctionnement des notifications smartd
Le démon smartd fonctionne comme un service en arrière-plan et effectue les tâches suivantes :
- Sonde périodiquement les attributs SMART des disques.
- Compare les valeurs actuelles avec : les seuils d'usine, les valeurs précédentes (dynamique des changements).
- Détecte : croissance des attributs critiques, apparition de nouvelles erreurs, échecs d'auto-test.
- Génère une notification et l'envoie à l'administrateur.
Exigences pour que les notifications fonctionnent
Avant la configuration, il est nécessaire de s'assurer des éléments suivants :
- un MTA (Postfix, Exim, Sendmail, ssmtp) est installé et correctement configuré dans le système ;
- le serveur est capable d'envoyer des mails sortants ;
- l'adresse email de l'administrateur pour recevoir les notifications est définie.
Exemple de configuration de ssmtp – un MTA léger et simple pour envoyer des mails depuis le système.
Installation :
Debian/Ubuntu :
sudo apt update && sudo apt install ssmtp mailutils -y
RHEL :
sudo dnf install ssmtp mailx
Créer le fichier de configuration :
sudo nano /etc/ssmtp/ssmtp.conf
et éditer le contenu :
# Adresse de l'expéditeur par défaut [email protected] # Serveur SMTP et port de votre fournisseur de messagerie mailhub=smtp.your-domain.com:587 # Exemple alternatif : # mailhub=smtp.gmail.com:587 # Pour Gmail # Identifiants d'authentification [email protected] AuthPass=your-password # Paramètres de chiffrement UseSTARTTLS=YES # Utiliser STARTTLS UseTLS=YES # Utiliser TLS FromLineOverride=YES # Autoriser le remplacement de l'adresse de l'expéditeur # Nom d'hôte (spécifiez le nom de votre serveur) hostname=server1.your-domain.com # vous pouvez utiliser hostname=localhost ou spécifier le nom réel du système
Enregistrez le fichier et configurez les permissions d'accès :
sudo chmod 640 /etc/ssmtp/ssmtp.conf
sudo chown root:mail /etc/ssmtp/ssmtp.conf
Configurer les expéditeurs (revaliases) :
sudo nano /etc/ssmtp/revaliases
root:[email protected]:smtp.your-domain.com:587 www-data:[email protected]:smtp.your-domain.com:587
Pour un envoi de message réussi, les ports suivants doivent être ouverts sur le serveur : 587 (principal pour l'envoi avec chiffrement STARTTLS), ou 25 (SMTP standard), 465 (SMTP sécurisé avec SSL), s'ils sont fournis par la configuration.
Test de base de l'envoi de mail :
echo "Message de test SMART" | mail -s "Test de notification SMART" [email protected]
Vous pouvez spécifier explicitement l'expéditeur :
echo "Message de test SMART" | mail -s "Test de notification SMART" -a "From: [email protected]" [email protected]
Ou via ssmtp directement :
echo "Message de test SMART" | ssmtp [email protected]
[email protected] – l'adresse du destinataire où le message sera envoyé.
Si l'email n'est pas livré, une configuration ultérieure de smartd est inutile tant que les problèmes de livraison de mail ne sont pas résolus.
La configuration des notifications SMART se fait dans le fichier :
/etc/smartd.conf
Exemple de configuration simple fonctionnelle :
/dev/sda -a -o on -S on -m [email protected]
Paramètres :
- /dev/sda – le disque surveillé ;
- -a – ensemble complet de vérifications ;
- -S on – la sauvegarde des attributs entre les redémarrages est activée ;
- -o on – la collecte automatique de données hors ligne est activée ;
- -m – les notifications sont envoyées à l'email spécifié.
À partir de ce moment, smartd commencera à surveiller l'état du disque en arrière-plan.
Notifications lors de l'approche des valeurs seuils
Une caractéristique clé de smartd est qu'il surveille les changements dans les valeurs des attributs, pas seulement leur dépassement critique.
En pratique, cela signifie qu'une notification peut être envoyée :
- lors de la première apparition de Current_Pending_Sector ;
- lors d'une augmentation de Reallocated_Sector_Ct, même si le seuil n'est pas encore atteint ;
- lors de la détection d'erreurs d'auto-test ;
- lors de la dégradation des paramètres NVMe.
Les attributs les plus significatifs d'une défaillance précoce :
- Reallocated_Sector_Ct
- Current_Pending_Sector
- Offline_Uncorrectable
- Media and Data Integrity Errors (NVMe)
- Percentage Used (SSD/NVMe)
Même des changements minimes dans ces paramètres doivent être considérés comme une raison d'attention.
Utilisation des auto-tests comme source de notification
Pour augmenter l'informativité, il est recommandé de combiner la surveillance des attributs avec des auto-tests réguliers.
Exemple de configuration avec un calendrier :
/dev/sda -a -o on -S on \ -s (S/../.././02|L/../../6/03) \ -m [email protected]
Logique de fonctionnement :
- un test court est effectué quotidiennement ;
- un test complet est effectué une fois par semaine ;
- en cas d'échec de tout test, l'administrateur reçoit une notification.
Gestion de la fréquence et du volume des notifications
Pour éviter les alertes excessives, le paramètre -M once est utilisé :
/dev/sda -a -m [email protected] -M once
Dans ce mode :
- une notification est envoyée lors de la première détection d'un problème ;
- les messages suivants ne sont pas dupliqués tant que la cause n'est pas résolue.
Pour tester le système de notification, vous pouvez utiliser -M test. Cela vous permet de vérifier que smartd est capable d'envoyer des messages sans attendre une erreur réelle.
Conclusion
Dans le cadre de ce manuel, le cycle complet de mise en œuvre et de fonctionnement de smartctl et du démon smartd en tant qu'outil de surveillance proactive de la santé des disques a été systématiquement examiné. Les principes de base du fonctionnement de SMART, les méthodes pratiques d'analyse des attributs, le lancement et l'interprétation des auto-tests, les spécificités du travail avec les disques NVMe et les contrôleurs RAID, ainsi que les méthodes de diagnostic et les techniques d'identification des causes profondes des problèmes ont été couverts. Une attention particulière a été accordée à la configuration des notifications, qui permettent de détecter la dégradation des disques à un stade précoce, même avant qu'une panne critique ne se produise.
Une surveillance SMART correctement configurée est une partie intégrante d'une infrastructure serveur fiable et doit être considérée comme une norme opérationnelle obligatoire. L'utilisation de smartctl et smartd permet à l'administrateur système de passer de la résolution réactive des incidents à une maintenance consciente et gérable du sous-système de disque, réduisant les risques de temps d'arrêt, de perte de données et d'incidents non planifiés, tout en créant une base solide pour une automatisation ultérieure et une intégration avec des systèmes de surveillance centralisés.