Table des matières

Introduction

Plates-formes logicielles et matérielles minimales

Description des fonctionnalités et procédure pas à pas

Aperçu

Nettoyeur de disque FMC

Nettoyeur de disque FTD

Afficher les scripts Diskcleaner disponibles

Exécution manuelle du nettoyeur de disque

Supprimer les journaux pivotés

Drain de partition du gestionnaire de disques

Drain de silo du gestionnaire de disques

Tronquer les fichiers supprimés

Arrêt et démarrage du nettoyeur de disque

Technologie logicielle

Nettoyeur de disque.py

Nettoyeur de disque.sh

Sous les couvertures

Dépannage du nettoyeur de disque

Fichiers système

Étapes de dépannage

Introduction

Ce document décrit comment nettoyer les fichiers du disque système.

Plates-formes logicielles et matérielles minimales

Responsable(s) et version(s) : CLI FMC/FDM 7.6.0 exécutée sur CLI FMC ou FTD

Application (ASA/FTD) et version minimale de l'application : DFT 7.6.0

Plates-formes prises en charge: Tous les périphériques FMC et FTD disposent de cette fonctionnalité.

Description des fonctionnalités et procédure pas à pas

Aperçu

Le nettoyeur de disque et ses scripts sont installés lors de l'installation/mise à niveau. Il ne fait pas partie des scripts de mise à niveau. Le processus diskclean.py est démarré par Process Manager au démarrage du système. Il s'exécute en tant que processus démon géré par Process Manager et s'exécute jusqu'à ce que le système soit arrêté. Le nettoyeur de disque comporte des scripts de disque qui sont appelés lorsque le pourcentage d'utilisation du volume de disque dépasse les seuils configurés. Par exemple, il existe actuellement des scripts de nettoyage de disque qui sont appelés lorsque l'utilisation du volume atteint 85 % et d'autres qui sont appelés lorsque l'utilisation du disque atteint 95 %. Si le taux de remplissage du disque atteint 95 %, il exécute les scripts de nettoyage à 95 % et s'il reste supérieur à 85 %, il exécute les scripts de nettoyage à 85 %.

Nettoyeur de disque FMC

Voici ce que le nettoyeur de disque est actuellement configuré pour s'exécuter sur le FMC :

- 85 % d'actions de nettoyage de l'utilisation du disque :

- Tronque (à 0 octet) tous les fichiers supprimés (fichiers qui ont été supprimés mais sont encore ouverts par un processus en cours d'exécution). Ces fichiers peuvent être affichés avec la commande lsof +L1.

- Forcez le gestionnaire de disques à vider tous les silos.

- Supprimez tous les fichiers journaux pivotés (ceux dont l'extension est xxxxxxx.n.gz, tels que messages.1.gz)

- Actions de nettoyage de 95 % d'utilisation du disque :

- Forcez le gestionnaire de disques à purger au maximum tous les silos. Les silos sont ainsi drainés à 25 % de leur niveau normal de basse mer.

Nettoyeur de disque FTD

C'est ce que le nettoyeur de disque est actuellement configuré pour exécuter sur le FTD :

- 85 % d'actions de nettoyage de l'utilisation du disque :

- Tronque (à 0 octet) tous les fichiers supprimés (fichiers qui ont été supprimés mais sont encore ouverts par un processus en cours d'exécution). Ces fichiers peuvent être affichés avec la commande lsof +L1.

- Forcez le gestionnaire de disques à vider tous les silos.

- Supprimez tous les fichiers journaux pivotés (ceux dont l'extension est xxxxxxx.n.gz, tels que messages.1.gz)

- 95 % d'actions d'utilisation du disque :

- Forcez le gestionnaire de disques à purger au maximum tous les silos. Les silos sont ainsi drainés à 25 % de leur niveau normal de basse mer.

NOTE: At the current time, FXOS files and logs are outside of the scope of the diskcleaner!!!

Afficher les scripts Diskcleaner disponibles

Utilisez la commande system support diskcleanshow pour afficher les scripts de nettoyage de disque disponibles à l'exécution. Les scripts affichés ici peuvent être exécutés manuellement à l'aide de la commande diskcleanrun-run pour libérer manuellement de l'espace disque. Chacun de ces scripts de nettoyage de disque est décrit dans ces diapositives avec des exemples d'invocation.

> system support diskcleaner-show

sfims-file-mgmnt-infra-delete-rotated-logs.sh

sfims-file-mgmnt-infra-diskmanager-partition-drain-max.sh

sfims-file-mgmnt-infra-diskmanager-silo-drain-all.sh

sfims-file-mgmnt-infra-truncate-deleted-files.py

Exécution manuelle du nettoyeur de disque

Entrez la commande diskcleaner. Les méthodes existantes du gestionnaire de disques et de l'élageur de disque sont insuffisantes pour cette nouvelle tâche. Diskmanager a été conçu pour contrôler les niveaux de remplissage des disques en temps réel lors de l'ouverture et de la fermeture des fichiers. Les fichiers de configuration du gestionnaire de disques sont sélectifs, complexes et fragiles. Le processus d'élagage est conçu pour réduire l'utilisation de l'espace de fichiers pour les composants de fonctionnalité individuels sans tenir compte des niveaux de remplissage du disque système global. Le nouveau cadre de nettoyage de disque a été créé pour fournir la possibilité de supprimer des fichiers sur la base des niveaux de remplissage de disque système similaires au gestionnaire de disque avec la simplicité d'utiliser un langage de script similaire à celui du processus d'élagage de disque.

Utilisez la commande diskcleaner-run pour exécuter manuellement un script diskcleaner. La commande est la suivante :

system support diskcleaner-run

où nom de fichier est le nom du script diskcleaner à exécuter. Il peut s'agir d'un chemin complet avec un nom de répertoire et de fichier, d'un chemin relatif (à partir de /etc/sf/dc) ou du nom d'un script (tel que nommé dans /etc/sf/dc). Les fichiers globs standard sont acceptés. Le nom de fichier est soumis à des exigences de sécurité qui peuvent limiter le jeu de caractères autorisé (comme l'absence de backticks `). N'oubliez pas que le nettoyeur de disque exécute simplement des scripts à l'aveugle. Ainsi, vous pouvez créer un nouveau script qui exécute plusieurs scripts diskcleaners, puis simplement exécuter ce nouveau script (de sorte que tous les scripts diskcleaners inclus dans celui-ci soient exécutés).

Supprimer les journaux pivotés

Supprimez tous les fichiers journaux pivotés sur le point de montage spécifié.

> system support diskcleaner-run sfims-file-mgmnt-infra-delete-rotated-logs.sh --help

Supprimez tous les fichiers journaux pivotés sur le point de montage spécifié.

sfims-file-mgmnt-infra-delete-rotated-logs.sh [--debug] [--help] <mount point>

> system support diskcleaner-run sfims-file-mgmnt-infra-delete-rotated- logs.sh --debug /ngfw/Volume

Deleting all rotated log files on mount point '/ngfw/Volume'.

Deletion of all rotated log files on mount point '/ngfw/Volume' has

completed - 0 bytes.

Drain de partition du gestionnaire de disques

Faire en sorte que le gestionnaire de disques effectue un drainage maximal sur toutes les partitions

> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-partition-drain-max.sh --help

Configurez le gestionnaire de disques pour qu'il procède à une purge maximale de toutes ses partitions.

sfims-file-mgmnt-infra-diskmanager-partition-drain-max.sh [--debug] [--help]

> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-partition-drain-max.sh

Performing a maximum drain on all disk manager partitions - current disk usage:

Partition:Silo Used Minimum Maximum

/ngfw/var:Temporary Files 0 KB 121.704 MB 486.817 MB

...

Performing a maximum drain on disk manager partition '/ngfw/var'.

Partition /ngfw/var has been drained.

Maximum drain on all disk manager partitions has completed - current disk usage:

Partition:Silo Used Minimum Maximum

/ngfw/var:Temporary Files 0 KB 121.704 MB 486.817 MB

...

>

Drain de silo du gestionnaire de disques

Faites en sorte que le gestionnaire de disques exécute une purge maximale sur tous les silos

> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-silo-drain-all.sh --help

Faites en sorte que le gestionnaire de disques procède à une purge maximale de tous ses silos.

sfims-file-mgmnt-infra-diskmanager-silo-drain-all.sh [--debug] [--help]

> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-silo-drain-all.sh

Draining all disk manager silos to their low-water mark - current disk usage:

Partition:Silo Used Minimum Maximum

/ngfw/var:Temporary Files 0 KB 121.704 MB 486.817 MB

...

Draining all disk manager silos..

All silos have been drained.

Draining all disk manager silos to their low-water mark has completed - current disk usage:

Partition:Silo Used Minimum Maximum

/ngfw/var:Temporary Files 0 KB 121.704 MB 486.817 MB

>

Tronquer les fichiers supprimés

Tronque à zéro octet tous les fichiers supprimés masqués qui sont présents en raison des handles de fichiers ouverts.

> system support diskcleaner-run sfims-file-mgmnt-infra-truncate-deleted-files.py -h

usage: sfims-file-mgmnt-infra-truncate-deleted-files.py [-h] [--debug]

[ignored]

Truncate all deleted (zombie) files to zero-length.

positional arguments:

ignored

optional arguments:

-h, --help show this help message and exit

--debug If specified, the script will output lots of debug information.

> system support diskcleaner-run sfims-file-mgmnt-infra-truncate-deleted-files.py

Truncating all deleted (zombie) files.

Deleted file '/run/nscd/dbGG9F8K' is on the deleted files exclude list - NOT truncating.

All deleted (zombie) files have been truncated - total size = 0 bytes.

>

Arrêt et démarrage du nettoyeur de disque

Utilisez la commande pmtool pour arrêter et démarrer le nettoyeur de disque.

> pmtool disablebyid diskcleaner

>

> pmtool status

...

diskcleaner (normal) - User Disabled

...

> pmtool enablebyid diskcleaner

>

> pmtool status

...

diskcleaner (normal) – Running 17086

...

Technologie logicielle

Nettoyeur de disque.py

Ce script est le programme principal du nettoyeur de disque. Ce script python est exécuté comme ceci :

diskcleaner.py [--debug] [--help] [--interval <interval>]

où si debugging est spécifié, le script affiche les informations de débogage, et help les informations d'utilisation et exit.

Intervalle (en secondes) entre les cycles de nettoyage de disque. Si aucune valeur n'est spécifiée, la valeur par défaut est 600 secondes. diskclean.py est démarré par Process Manager au démarrage du système. Il s'exécute en tant que processus démon géré par Process Manager et s'exécute jusqu'à l'arrêt du système. Lorsque le nettoyeur de disque est démarré, il exécute une boucle qui s'exécute toutes les secondes d'intervalle. À chaque cycle, le nettoyeur de disque analyse tous les points de montage (/, /Volume, ...) spécifiés par la commande df -a et obtient leur utilisation actuelle du disque (mesurée par la commande df).

Le nettoyeur de disque parcourt chaque niveau de nettoyage à partir du niveau 0 et remonte jusqu'à ce que le numéro de niveau soit supérieur au pourcentage d'utilisation du disque de ce point de montage. Vous n'avez besoin d'effectuer un nettoyage pour un niveau que si l'utilisation du point de montage est égale ou supérieure au numéro de niveau. Ainsi, si l'utilisation est de 55 %, exécutez chaque niveau de nettoyage de disque dans l'ordre - 0, 1, 2, ..., 55.

Lorsque le nettoyage doit être effectué, le script shell diskcleaner.sh (voir ci-dessous) est appelé pour effectuer le nettoyage proprement dit. Ce script appelle simplement aveuglément tous les scripts trouvés dans le répertoire diskcleandu point de montage pour le niveau de nettoyage spécifié.

- Par exemple, supposons que le point de montage / soit actuellement utilisé à 96 %. Lorsque le nettoyeur de disque démarre son cycle, il exécute la commande df et découvre que le point de /montage est à 96% d'utilisation. Le niveau d'utilisation pour le nettoyage de niveau 0 est défini sur 0 %, de sorte que le nettoyeur de disque exécute tous les scripts de niveau 0 spécifiés pour le point de montage /. À ce stade, le nettoyeur de disque exécute à nouveau la commande df. Supposez que le nettoyage de niveau 0 n'a rien fait, donc l'utilisation est toujours de 96%. Le nettoyeur de disque exécute maintenant tous les scripts de niveau 1, puis de niveau 2, etc.

- Supposons qu'il existe des scripts au niveau 50 qui réduisent l'utilisation de / point de montage à 90 %. Le nettoyeur de disque continue avec le niveau 51, 52, ...

- Supposons qu'il existe des scripts au niveau 80 qui réduisent l'utilisation de /point de montage à 75 %. Le nettoyeur de disque est maintenant terminé avec le point de montage / car 75 % est inférieur au niveau suivant qui est 81.

Nettoyeur de disque.sh

Le fichier diskclean.sh est un script bash qui lance l'événement de nettoyage de disque.

diskcleaner.sh <mount point> <level>

où le point de montage est le point de montage à nettoyer et le niveau fait référence au niveau de nettoyage à effectuer. Il s'agit du pourcentage auquel le nettoyage est effectué. Par exemple, si vous entrez 85, le nettoyage de disque sera exécuté à 85 %.

Tous les scripts de nettoyage de disque présents dans le répertoire :

[/ngfw]/etc/sf/dc/<mount point>/dc<clean level>

qui correspondent au fichier glob DC* sont exécutés (par ordre alphabétique).

Notez que comme les noms de point de montage comportent généralement des barres obliques (/), l'utilisation du nom de point de montage réel dans le chemin d'accès au répertoire est maladroite (ou illégale). Par conséquent, remplacez any / par _. Ainsi, pour nettoyer le point de montage /dev/shm au niveau 85 (pour une utilisation du disque de 85 %), les scripts doivent correspondre : [/ngfw]/etc/sf/dc/_dev_shm/85/DC*

Ce paradigme est basé sur le paradigme de script rc init dans lequel tous les scripts correspondants dans le répertoire rcn.d sont exécutés aveuglément. Le préfixe DC est également un holdover du paradigme rc init - ces scripts commencent tous par S (start) ou K (kill). Je suppose qu'il vous empêche de ramasser des fichiers de merde qui sont juste laissés dans le répertoire. Par conséquent, utilisez le préfixe DC.

Sous les couvertures

Le nettoyeur de disque utilise la commande linux df pour vérifier l'utilisation du disque :

Dépannage du nettoyeur de disque

Fichiers système

- Le dépannage du nettoyeur de disque peut être effectué en consultant :

/var/log/process_stdout.log and /var/log/process_stderr.log

- Les entrées consignées par diskcleaner contiennent diskcleanen tant que nom de processus et le PID de diskcleanet.

- Il s'agit de la méthode standard d'analyse de la journalisation pour un processus PM.

Étapes de dépannage

La fonction du nettoyeur de disque est consignée dans process_stdout.log. Généralement, il n'y a pas de sortie car il n'y a pas de nettoyage de disque à effectuer. Mais si le nettoyage du disque doit être fait, tous les fichiers supprimés sont consignés dans process_stdout.log. La page suivante est un exemple de ce que process_stdout.log peut contenir. Grep sur diskcleaner. ̌Exemple de résultat dans process_stdout.log :

Feb 9 04:10:23 uhura diskcleaner[2639]: Starting level 85 disk cleaning for mount point '/ngfw/Volume': current usage = 97%.

Feb 9 04:10:23 uhura diskcleaner[2639]: Starting disk cleaning scripts in directory '/etc/sf/dc/_ngfw_Volume/dc85' for mount point '/ngfw/Volume'.

Feb 9 04:10:23 uhura diskcleaner[2639]: Filesystem 1K-blocks Used Available Use% Mounted on

Feb 9 04:10:23 uhura diskcleaner[2639]: /dev/sda5 40511148 39040764 1470384 97% /ngfw/Volume

Feb 9 04:10:23 uhura diskcleaner[2639]: Executing '/etc/sf/dc/_ngfw_Volume/dc85/DC660-truncate-deleted- files.py' ...

Feb 9 04:10:23 uhura diskcleaner[2639]: Truncating all deleted (zombie) files.

Feb 9 04:10:23 uhura diskcleaner[2639]: Deleted file '/run/nscd/dbZ5hobS' is on the deleted files exclude list - NOT truncating.

Feb 9 04:10:23 uhura diskcleaner[2639]: All deleted (zombie) files have been truncated - total size = 0 bytes.

Feb 9 04:10:23 uhura diskcleaner[2639]: Filesystem 1K-blocks Used Available Use% Mounted on

Feb 9 04:10:23 uhura diskcleaner[2639]: /dev/sda5 40511148 39040764 1470384 97% /ngfw/Volume

Feb 9 04:10:23 uhura diskcleaner[2639]: '/etc/sf/dc/_ngfw_Volume/dc85/DC660-truncate-deleted-files.py' completed in 0.43 seconds - status = 0.

Feb 9 04:10:23 uhura diskcleaner[2639]: Executing '/etc/sf/dc/_ngfw_Volume/dc85/DC663-delete-rotated- logs.sh' ...

Feb 9 04:10:23 uhura diskcleaner[2639]: Deleting all rotated log files on mount point '/ngfw/Volume'.

Feb 9 04:10:24 uhura diskcleaner[2639]: Deleted file '/ngfw/Volume/root1/ngfw/var/log/top.log.1.gz' - 2771386 bytes.

Feb 9 04:10:24 uhura diskcleaner[2639]: Deleted file '/ngfw/Volume/root1/ngfw/var/log/test/fake-rotated- log.log.1.gz' - 1073741824 bytes.

Feb 9 04:10:24 uhura diskcleaner[2639]: Deleted file '/ngfw/Volume/root1/ngfw/var/log/test/fake-rotated- log.log.2.gz' - 1073741824 bytes.

Feb 9 04:10:24 uhura diskcleaner[2639]: Deleted file '/ngfw/Volume/root1/ngfw/var/log/test/fake-rotated- log.log.3.gz' - 1073741824 bytes.

Feb 9 04:10:24 uhura diskcleaner[2639]: Deletion of all rotated log files on mount point '/ngfw/Volume' has completed - 25772575162 bytes.

Feb 9 04:10:24 uhura diskcleaner[2639]: Filesystem 1K-blocks Used Available Use% Mounted on

Feb 9 04:10:24 uhura diskcleaner[2639]: /dev/sda5 40511148 13872228 26638920 35% /ngfw/Volume

Feb 9 04:10:24 uhura diskcleaner[2639]: '/etc/sf/dc/_ngfw_Volume/dc85/DC663-delete-rotated-logs.sh' completed in 0.21 seconds - status = 0.

Feb 9 04:10:24 uhura diskcleaner[2639]: Completed disk cleaning scripts in directory '/etc/sf/dc/_ngfw_Volume/dc85' for mount point '/ngfw/Volume' in 0.69 seconds.

Feb 9 04:10:24 uhura diskcleaner[2639]: Finished level 85 disk cleaning for mount point '/ngfw/Volume': current usage = 35%.