Chapitre 1114 minIntermédiaire
Superviser et maintenir un NAS : scrub, SMART, alertes et Zabbix
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- distinguer scrub, resilver et test SMART ;
- configurer les alertes de TrueNAS ;
- remplacer un disque en panne sans perdre le pool ;
- superviser TrueNAS en SNMPv3 depuis Zabbix ;
- choisir les indicateurs et les seuils d'un NAS.
4 exercices corrigés
Superviser un NAS, c'est vérifier en permanence que ses disques sont sains, que ses pools sont redondants, qu'il reste de la place et que ses tâches de protection (snapshots, réplication, scrubs) réussissent, pour intervenir avant la perte de données. Ce chapitre explique les vérifications que fait ZFS lui-même, la surveillance SMART des disques, les alertes de TrueNAS, le remplacement d'un disque en panne, puis l'intégration de srv-nas à la supervision Zabbix de Sorbier et le choix des indicateurs. La supervision en général (SNMP, Zabbix, Grafana) est traitée dans le cours Supervision.
Scrub, resilver et test SMART
Trois opérations de maintenance se ressemblent et se confondent souvent.
| Opération | Ce qu'elle fait | Qui la lance | Fréquence |
|---|---|---|---|
| Scrub | Lit tous les blocs occupés du pool, vérifie leurs sommes de contrôle et répare ceux qui sont corrompus grâce à la redondance | Une tâche planifiée de TrueNAS | Tous les mois au moins ; par défaut, chaque dimanche avec un seuil de 35 jours |
| Resilver | Reconstruit le contenu d'un disque remplacé à partir des autres disques du vdev | ZFS, automatiquement, quand un disque est remplacé ou revient | À chaque remplacement |
| Test SMART | Le disque se teste lui-même : test court (quelques minutes), test long (lecture de toute la surface, plusieurs heures) | Le disque, à la demande du système | Test long tous les mois, décalé du scrub |
Le scrub est la seule façon de découvrir la corruption silencieuse des données qu'on ne lit jamais : une archive de 2019 abîmée par un secteur défaillant ne serait détectée qu'au jour où quelqu'un l'ouvre, peut-être après la mort d'un second disque. Le scrub la trouve et la répare tant que la redondance existe. Data Protection > Scrub Tasks liste les tâches : pour chaque pool, le seuil en jours (Threshold Days) empêche un nouveau scrub tant que le précédent date de moins de ce nombre de jours, et la planification dit quand vérifier. Un multiple de sept garde le scrub sur le même jour de la semaine.
La surveillance SMART des disques
SMART (Self-Monitoring, Analysis and Reporting Technology) est le système d'autodiagnostic des disques : chaque disque tient des compteurs sur sa santé. TrueNAS surveille SMART sur tous les disques et lève une alerte quand un disque échoue à un test ou franchit un seuil. Pour lire les compteurs d'un disque (System > Shell) :
smartctl -A /dev/sda
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
9 Power_On_Hours 0x0032 097 097 000 Old_age Always - 21874
194 Temperature_Celsius 0x0002 185 185 000 Old_age Always - 35 (Min/Max 22/41)
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0
Lis surtout la dernière colonne, la valeur brute (RAW_VALUE) :
| Attribut | Ce qu'il compte | Que faire si la valeur monte |
|---|---|---|
5 Reallocated_Sector_Ct | Secteurs défaillants remplacés par des secteurs de réserve | Quelques-uns stables : surveiller. Une hausse continue : commander le remplacement |
197 Current_Pending_Sector | Secteurs illisibles en attente de réallocation | Toute valeur non nulle mérite un test long et une surveillance rapprochée |
198 Offline_Uncorrectable | Secteurs illisibles découverts pendant un test | Idem : signe d'usure de la surface |
199 UDMA_CRC_Error_Count | Erreurs de transmission entre le disque et le contrôleur | En général un câble ou un fond de panier, pas le disque : vérifier la connexion |
194 Temperature_Celsius | Température du disque | Au-delà de 45 à 50 °C en permanence, vérifier la ventilation de la baie |
9 Power_On_Hours | Heures de fonctionnement | 21 874 h, c'est 2 ans et demi de fonctionnement continu : utile pour planifier le renouvellement |
Les noms et le sens exact des attributs varient un peu d'un fabricant à l'autre, et les SSD ont leurs propres indicateurs d'usure (pourcentage d'endurance consommée). La version 25.10 de TrueNAS a retiré de l'interface la planification des tests SMART : les tests programmés avant la mise à jour continuent de s'exécuter, et sur une nouvelle installation on programme un test long mensuel par une tâche Cron Job (System > Advanced Settings), qui lance par exemple smartctl -t long /dev/sda pour chaque disque de données.
Les alertes de TrueNAS
La cloche en haut à droite de l'interface affiche les alertes en cours : pool dégradé, disque en échec, espace presque plein, tâche de réplication ou de snapshots en échec, certificat qui expire, mise à jour disponible. Une alerte que personne ne lit ne sert à rien : il faut la faire sortir du NAS.
- System > General Settings, widget Email : le serveur SMTP de Sorbier, l'adresse d'expédition, puis l'adresse de destination du compte d'administration.
- System > Alert Settings : les Alert Services (courriel, interruption SNMP, messageries d'équipe, outils d'astreinte) et, pour chaque catégorie d'alerte, le niveau de gravité qui déclenche l'envoi.
- Envoie une alerte de test pour vérifier que le courriel arrive, puis documente qui la reçoit et sous quel délai il doit réagir.
Remplacer un disque en panne
Mercredi, l'alerte tombe : le disque n° 3 de tank est en panne. Le pool continue de fonctionner, mais sans plus qu'une parité de marge.
pool: tank
state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
repaired.
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
6f1c2a7e-3b4d-4e8f-9a0b-1c2d3e4f5a61 ONLINE 0 0 0
0b9e4d21-77c3-4a5e-8f10-2e3d4c5b6a72 ONLINE 0 0 0
c4d5e6f7-1a2b-4c3d-9e8f-3a4b5c6d7e83 FAULTED 38 0 0 too many errors
5e6f7a8b-2c3d-4e5f-8a9b-4c5d6e7f8a94 ONLINE 0 0 0
a1b2c3d4-3e4f-4a5b-9c8d-5e6f7a8b9ca5 ONLINE 0 0 0
d7e8f9a0-4f5a-4b6c-8d9e-6f7a8b9cadb6 ONLINE 0 0 0
errors: No known data errors
- Identifier le disque. Storage, widget du pool, Manage Devices : déplier le vdev, sélectionner le disque en échec et relever son numéro de série. Compare-le avec l'étiquette du tiroir avant d'en retirer un : retirer le mauvais disque d'un RAIDZ2 déjà dégradé laisse le pool sans aucune redondance.
- Mettre le disque hors ligne : bouton Offline dans le détail du disque (s'il n'est pas déjà retiré par ZFS).
- Échanger physiquement le disque. Les baies du serveur sont échangeables à chaud : on retire le tiroir, on visse le disque de rechange, on le remet.
- Remplacer : dans le détail de l'ancien disque, bouton Replace, choisir le nouveau disque dans la liste, valider. ZFS lance le resilver.
- Suivre la reconstruction dans le widget du pool ou par
zpool status tank(pourcentage effectué, temps restant estimé). Le pool redevientONLINEà la fin. - Renvoyer l'ancien disque sous garantie, après effacement si possible, et racheter un disque de rechange.
Superviser srv-nas depuis Zabbix
TrueNAS est un système fermé : on n'y installe pas l'agent Zabbix. On l'interroge en SNMP, dans sa version 3 qui authentifie et chiffre les échanges.
Sur TrueNAS : System > Services, ligne SNMP, bouton de modification.
| Champ | Valeur |
|---|---|
| Location, Contact | Lyon, baie serveurs, informatique@sorbier.example |
| SNMP v3 Support | Coché |
| Username | zabbix |
| Authentication Type | SHA |
| Password | Une phrase de passe longue |
| Privacy Protocol | AES |
| Privacy Passphrase | Une autre phrase de passe longue |
| Community | Laisser vide : pas de SNMP v1 ou v2c, dont la communauté circule en clair |
Coche Start Automatically et démarre le service. srv-journaux (192.168.10.180), qui porte Zabbix, est dans le même VLAN 20 que srv-nas : la requête ne traverse pas pfSense, et aucune règle de pare-feu ne la filtre. C'est SNMPv3 en authPriv (compte, authentification SHA, chiffrement AES) qui protège l'accès. Si le serveur Zabbix était dans un autre VLAN, il faudrait en plus une règle pfSense UDP 161 de ce serveur vers 192.168.10.183. Teste depuis srv-journaux :
snmpget -v3 -l authPriv -u zabbix -a SHA -A 'phrase-auth' -x AES -X 'phrase-priv' \
192.168.10.183 SNMPv2-MIB::sysName.0
SNMPv2-MIB::sysName.0 = STRING: srv-nas
Dans Zabbix 7.0 LTS : Data collection > Hosts > Create host, nom srv-nas, groupe Stockage, une interface SNMP sur 192.168.10.183, port 161, version SNMPv3, niveau authPriv, avec les mêmes identifiants. Comme modèles :
- Linux by SNMP, livré avec Zabbix : processeur, mémoire, interfaces réseau, systèmes de fichiers ;
- pour l'état des pools et des disques, pas de modèle officiel : le modèle TrueNAS CORE by SNMP de Zabbix vise l'ancienne édition CORE et ne s'applique pas à la Community Edition. On s'appuie sur les alertes de TrueNAS (courriel, interruptions SNMP), ou on construit et teste ses propres éléments sur la maquette. Le cours Supervision détaille la méthode.
Grafana, branché sur Zabbix par son greffon, affiche ensuite un tableau de bord du stockage : occupation des pools dans le temps, débit, ARC, températures. TrueNAS peut aussi exporter lui-même ses métriques vers un serveur Graphite (écran Reporting, bouton Exporters).
Les indicateurs et leurs seuils
| Indicateur | Seuil d'avertissement | Seuil critique | Pourquoi |
|---|---|---|---|
| État du pool | — | DEGRADED, FAULTED ou UNAVAIL | Plus de redondance, ou pool perdu |
| Occupation d'un pool de fichiers | 80 % | 90 % | Au-delà, le copy-on-write fragmente et ralentit ; à 100 %, plus rien ne s'écrit |
| Occupation d'un pool en bloc (iSCSI) | 50 % | 80 % | Le stockage en bloc souffre plus tôt du remplissage |
| Secteurs réalloués ou en attente | Toute hausse | Hausse rapide, test SMART en échec | Disque qui s'use |
| Température des disques | 45 °C | 50 °C | Durée de vie et risque de panne |
| Âge du dernier scrub | 35 jours | 60 jours | Corruption silencieuse non détectée |
| Dernière réplication réussie | 26 heures | 48 heures | La copie de Marseille vieillit : le RPO réel dérive |
| Dernière tâche de snapshots | Échec | Deux échecs consécutifs | Plus de versions récentes |
| Taux de succès de l'ARC | Sous 80 % durablement | — | Manque de RAM pour la charge |
| Espace écrit par heure | Le double de l'habitude, la nuit | Le décuple | Possible chiffrement en cours (chapitre 10) |
Exercices
Exercice 1 sur 4 Scrub, resilver ou SMART ? Réussi À revoir
Pour chaque phrase, nomme l'opération.
- « Le disque lit toute sa surface et note les secteurs qu'il n'arrive pas à lire. »
- « ZFS relit les 9 TiB du pool et répare trois blocs dont la somme de contrôle était fausse. »
- « Après l'échange du disque n° 3, ZFS reconstruit son contenu à partir des cinq autres. »
Voir la réponseMasquer la réponse de l'exercice 1
- Test SMART long : c'est le disque qui se teste lui-même.
- Scrub : vérification complète des sommes de contrôle, avec réparation par la redondance.
- Resilver : reconstruction du disque remplacé.
Tu avais trouvé ?
Exercice 2 sur 4 Lire les compteurs SMART Réussi À revoir
Voici les valeurs brutes de deux disques de tank, relevées à un mois d'intervalle. Que conclus-tu pour chacun, et que fais-tu ?
| Disque | Attribut | 1er octobre | 1er novembre |
|---|---|---|---|
| A | Reallocated_Sector_Ct | 8 | 8 |
| A | UDMA_CRC_Error_Count | 0 | 412 |
| B | Reallocated_Sector_Ct | 0 | 96 |
| B | Current_Pending_Sector | 0 | 24 |
Voir la réponseMasquer la réponse de l'exercice 2
Disque A : ses 8 secteurs réalloués sont stables depuis un mois, ce qui n'est pas inquiétant. En revanche, 412 erreurs CRC sont apparues : ce sont des erreurs de transmission, presque toujours dues au câble, au connecteur ou au fond de panier, pas à la surface du disque. Vérifier ou changer le câble (ou le tiroir), puis surveiller que le compteur cesse d'augmenter.
Disque B : 96 secteurs réalloués et 24 en attente en un mois, partant de zéro : la surface se dégrade rapidement. Lancer un test SMART long, préparer le disque de rechange et remplacer le disque B sans attendre sa panne complète, de préférence pendant que le pool est encore entièrement redondant.
Tu avais trouvé ?
Exercice 3 sur 4 Remplacer le bon disque Réussi À revoir
Le pool tank est DEGRADED, disque c4d5e6f7-… en FAULTED. Un technicien propose de retirer « le troisième tiroir en partant de la gauche », puisque c'est le troisième disque de la liste. Qu'en penses-tu ? Décris la bonne méthode.
Voir la réponseMasquer la réponse de l'exercice 3
L'ordre de la liste de zpool status ne correspond pas forcément à l'ordre physique des tiroirs. Retirer un disque sain d'un RAIDZ2 déjà dégradé laisserait le pool sans aucune redondance, et une erreur de lecture pendant la reconstruction ferait perdre des données.
La bonne méthode : relever le numéro de série du disque en échec dans Storage > Manage Devices, le comparer à l'étiquette du tiroir (ou allumer le voyant de l'emplacement si le serveur le permet), mettre le disque Offline, l'échanger, puis Replace avec le nouveau disque et suivre le resilver jusqu'au retour à ONLINE.
Tu avais trouvé ?
Exercice 4 sur 4 Superviser en SNMPv3 Réussi À revoir
- Pourquoi laisser le champ Community vide sur TrueNAS ?
- Faut-il une règle de pare-feu pour que Zabbix interroge
srv-nas? Pourquoi ? - Quelle commande lancer depuis le serveur Zabbix pour vérifier la configuration avant de créer l'hôte ?
Voir la réponseMasquer la réponse de l'exercice 4
- La communauté sert à SNMP v1 et v2c, qui la transmettent en clair et ne chiffrent rien : n'importe qui sur le chemin peut la lire et interroger le NAS. SNMPv3 en authPriv authentifie par un compte et chiffre les échanges (SHA et AES).
- Aucune :
192.168.10.180et192.168.10.183sont dans le même réseau192.168.10.176/28, le flux ne passe pas par pfSense. La protection vient de SNMPv3 authPriv. Si Zabbix était dans un autre VLAN : règle sur l'interface de ce VLAN, source le serveur Zabbix, destination192.168.10.183, UDP 161, autoriser (et UDP 162 vers Zabbix pour les interruptions SNMP). - Un
snmpget(ousnmpwalk) en v3 avec les mêmes identifiants, par exemplesnmpget -v3 -l authPriv -u zabbix -a SHA -A '…' -x AES -X '…' 192.168.10.183 SNMPv2-MIB::sysName.0, qui doit renvoyersrv-nas.
Tu avais trouvé ?