Zimbra : disk snap... 100% full
Zimbra : disk snap... 100% full jppVoir en fin de page pour le téléchargement ds scripts "correcteurs" qui fonctionnent très bien sur la nouvelle VM en Ubuntu 20.04.
Mon installation de Zimbra est assez ancienne sur une Ubunto 16.04 LTS, mais maintenue régulièrement à jour avec le repository de Zimbra dans mon /etc/apt/sources.list.z/zimbra.list qui content :
deb [arch=amd64] https://repo.zimbra.com/apt/87 xenial zimbra
deb [arch=amd64] https://repo.zimbra.com/apt/8815 xenial zimbra
deb-src [arch=amd64] https://repo.zimbra.com/apt/87 xenial zimbra
Lors de la dernière mise à jour apt m'a proposé d'installer un paquet (...) pour bénéficier des mises à jour étendues (livepatch) de ma version 16.04 LTS.
Après m'être inscrit sur le site de Canonical (gratuit jusqu'à 3 machines) j'ai installé la clef fournie et relancé une mise à jour qui m'a proposé plus de 100 paquets à mettre à jour, ce que je me suis empressé de lancer.
A la suite de cette installation je reçois de Zimbra une multitude de messages signalant des disques pleins à 100%. Ces disques sont respectivement /dev/loop0 et /dev/loop1 sur lesquels sont montés (cf snap) les répertoires nécessaires à "livepatch".
J'ai ainsi reçu plus de 800 messages en deux jours me signalant ces disques "pleins".
Or c'est parfaitement normal que ces "disques" soient à 100%, c'est le fonctionnement normal de "snap",il faut donc inhiber la procédure "Zimbra" qui génère ces alertes.
On dirait que les auteurs de Zimbra ont prévu le coup car il est possible très simplement de mettre à jour le paramètre "zmstat_df_exclude" qui doit régler ce problème.
1) Voyons voir le paramètre "ad hoc"
zmlocalconfig | grep zmstat_df_excludes
qui renvoie
zmstat_df_excludes =
soit : aucune exclusion enregistrée.
1) commencer par établir la liste de ces devices "loop..."
df | grep loop
/dev/loop0 101888 101888 0 100% /snap/core/11993
/dev/loop1 9344 9344 0 100% /snap/canonical-livepatch/119
Ensuite lancer la commande suivante (user "zimbra") :
zmlocalconfig -e zmstat_df_excludes="/dev/loop0:/dev/loop1"
Bien utiliser ":" comme séparateur.
Et le tour est joué, plus de messages inutiles et ennuyeux, tout en gardant les alertes pour les autres systèmes de fichiers.
Pour vérifier :
zmlocalconfig | grep zmstat_df_excludes
qui, maintenant renvoie :
zmstat_df_excludes = /dev/loop0:/dev/loop1
ce qui semble parfait et d'ailleurs je n'ai pas reçu d'autres messages au sujet de ces deux "disques".
Note : il faut surveiller l'apparition de nouveaux "/dev/loopN" et les ajouter illico à la liste.
J'ai eu la surprise, quelques jours après de recevoir une salve de mail pour un nouveau "livepatch" qui m'a créé un nouveau "loop" :
/dev/loop2 9344 9344 0 100% /snap/canonical-livepatch/126
J'ai donc du l'ajouter avec (en user "zimbra") :
zmlocalconfig -e zmstat_df_excludes="/dev/loop0:/dev/loop1:/dev/loop2"
A vérifier immédiatement par :
zmlocalconfig | grep zmstat_df_excludes
zmstat_df_excludes = /dev/loop0:/dev/loop1:/dev/loop2
.... A surveiller après chaque mise à jour ... Mais que fait-on après 20 mises à jour, a-t-on 21 /dev/loopNN ?
Suite à un problème de gestion de certificat j'ai monté une nouvelle machine virtuelle en Ubuntu 20.04, évidemment elle "souffrait" du même problème que la précédente ... mais, rien n'y fait, même en appliquant cette méthode cette fichue machine m'inonde de mails signalant que le disque /dev/snapxx est à 100%.
C'est toutes les 10 minutes et il y a actuellement 13 "disques" snap. J'ai signalé cette anomalie sans avoir de réponse pour le moment ...
Dernières nouvelles : après quelques jours la configuration des "df_exclude" est enfin active et je n'ai plus des centaines/milliers de mails intempestifs ... Mais pourquoi cela a mis plusieurs jours pour s'activer reste un mystère.
En fait il semble qu'il faille effectuer un restart complet de zimbra pour que la nouvelle configuration soit activée.
Note 2022
Je suis depuis "passé" sur Ubuntu 20.04 LTS puisque le 16.04 est tombé hors "LTS".
Mais le résultat est le même, zimbra s'entête à me déclarer tous les disques /dev/snap/... (nom du "répertoire" où sont montés les /dev/loopNN au nombre de 14 à ce jour.
J'utilise deux petits scripts qui :
- RECUP_LOOP récupère les "loop" et les répertoires associés sous forme de liste et appelle le script suivant, télécharger.
- SNAP_EXCLUDE qui met en forme les données et lance l'exécution de la commande zimbra "zmlocalconfig" avec la liste des "loop" et répertoires transmise par le premier script, télécharger.
J'ai mis dans la crontab l'exécution de RECUP_LOOP tous les soirs.
Zimbra : script cool snap
Zimbra : script cool snap jppCes scripts, très courts, permettent de régler le problème des message inutiles dus aux disques "snap" qui sont, par définition pleins à 100%.
Ces mini scripts peuvent être exécuté après n'importe quelle mise à jour et même être lance par "cron", c'est vraiment très simple et court. Le "travail" est découpé en deux scripts :
- Faire la liste des "snaps" et des points de montage liés.
- Lancer la fonction d'enregistrement, mise en forme des données et exécution par le user "zimbra".
#!/bin/bash df | grep '/dev/loop' | awk '{print $1;}' >/root/bin/SNAP_LISTE_A df | grep '/dev/loop' | awk '{print $6;}' >>/root/bin/SNAP_LISTE_A sort -k 1 /root/bin/SNAP_LISTE_A >/root/bin/SNAP_LISTE |
# SNAP_EXCLUDE #!/bin/bash LISTE=$(echo $LISTE | sed 's/ /:/g') |
Le script 1 appelle le script 2; on peut donc se contenter de lancer le script 1 pour recréer la liste et la transmettre à Zimbra ou n'exécuter que le script 2 en utilisant la liste existante.