Contenido

Introducción

Plataformas mínimas de software y hardware

Descripción de características y tutorial

Overview

Limpiador de discos FMC

FTD Diskcleaner

Ver las secuencias de comandos del limpiador de discos disponibles

Ejecución manual del limpiador de discos

Eliminar registros girados

Drenaje de partición del Administrador de discos

Desagüe del silo del administrador de discos

Truncar archivos eliminados

Detención e inicio del limpiador de discos

Tecnología de software

Limpiador de discos.py

Diskcleaner.sh

Debajo de las tapas

Solución de problemas del limpiador

Archivos del sistema

Pasos para Solucionar Problemas

Introducción

Este documento describe cómo limpiar archivos del disco del sistema.

Plataformas mínimas de software y hardware

Administrador(es) y versión(es): FMC/FDM 7.6.0 CLI se ejecuta en FMC o FTD CLI

Aplicación (ASA/FTD) y versión mínima de la aplicación: FTD 7.6.0

Plataformas Soportadas: Todos los dispositivos FMC y FTD cuentan con esta función.

Descripción de características y tutorial

Overview

El limpiador de discos y sus secuencias de comandos se instalan durante la instalación o actualización. No forma parte de los scripts de actualización. El administrador de procesos inicia el proceso diskclean.py al iniciar el sistema. Se ejecuta como un proceso daemon administrado por el Administrador de procesos y se ejecuta hasta que se cierra el sistema. El limpiador de discos tiene secuencias de comandos de disco que se invocan cuando el porcentaje de uso volume= excede los umbrales configurados. Por ejemplo, actualmente hay scripts de limpieza de disco que se invocan cuando el uso total del volumen alcanza el 85% y otros que se invocan cuando el uso total del disco alcanza el 95%. Si la capacidad completa del disco alcanza el 95%, ejecuta los scripts de limpieza de la capacidad completa del 95% y si la capacidad completa del disco permanece por encima del 85%, ejecuta los scripts de limpieza de la capacidad completa del 85%.

Limpiador de discos FMC

Esto es lo que el limpiador de discos está configurado actualmente para ejecutar en el FMC:

- 85% de acciones de limpieza de uso de disco:

- Truncar (a 0 bytes) cualquier archivo eliminado (archivos que se han eliminado pero que aún están abiertos por un proceso en ejecución). Estos archivos se pueden mostrar con el comando lsof +L1.

- Obligar al administrador de discos a vaciar todos los silos.

- Eliminar todos los archivos de registro girados (aquellos con extensiones de archivo xxxxxxxxx.n.gz como messages.1.gz)

- 95% de acciones de limpieza de uso de disco:

- Obligar al administrador de discos a realizar un drenaje máximo de todos los silos. Esto drena los silos hasta el 25% de su nivel normal de agua baja.

FTD Diskcleaner

Esto es lo que el limpiador de discos está configurado actualmente para ejecutar en el FTD:

- 85% de acciones de limpieza de uso de disco:

- Truncar (a 0 bytes) cualquier archivo eliminado (archivos que se han eliminado pero que aún están abiertos por un proceso en ejecución). Estos archivos se pueden mostrar con el comando lsof +L1.

- Obligar al administrador de discos a vaciar todos los silos.

- Eliminar todos los archivos de registro girados (aquellos con extensiones de archivo xxxxxxxxx.n.gz como messages.1.gz)

- 95% de acciones de uso de disco:

- Obligar al administrador de discos a realizar un drenaje máximo de todos los silos. Esto drena los silos hasta el 25% de su nivel normal de agua baja.

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

Ver las secuencias de comandos del limpiador de discos disponibles

Utilice el comando system support diskclean-show para ver las secuencias de comandos del limpiador de discos que están disponibles para ejecutarse. Las secuencias de comandos que se muestran aquí se pueden ejecutar manualmente mediante el comando diskcleanrun para liberar espacio en disco manualmente. Cada una de estas secuencias de comandos de limpieza de disco se describe en estas diapositivas con ejemplos de invocación.

> 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

Ejecución manual del limpiador de discos

Ingrese el comando diskclean. Los métodos existentes de diskmanager y de recorte de disco no son suficientes para esta nueva tarea. El diskmanager fue diseñado para controlar los niveles de llenado de disco en tiempo real a medida que los archivos se abren y cierran. Los archivos de configuración de diskmanager son selectivos, complicados y frágiles. El proceso de recorte está diseñado para recortar el uso del espacio de archivos de componentes de funciones individuales sin tener en cuenta los niveles de llenado de disco del sistema en general. La nueva estructura del limpiador de discos se ha creado para proporcionar la capacidad de eliminar archivos basados en los niveles de llenado del disco del sistema similares al diskmanager con la sencillez de utilizar un lenguaje de scripting similar al del proceso de recorte de discos.

Utilice el comando diskclean-run para ejecutar manualmente un script de diskclean. El comando es el siguiente:

system support diskcleaner-run

donde nombre de archivo es el nombre de la secuencia de comandos del limpiador de discos que se ejecutará. Puede ser una ruta completa con el nombre del directorio y del archivo, una ruta relativa (de /etc/sf/dc) o el nombre de una secuencia de comandos (como se le denomina en /etc/sf/dc). Se aceptan globos de archivos estándar. El nombre de archivo está sujeto a requisitos de seguridad que pueden restringir el conjunto de caracteres permitido (como no usar marcas de retroceso `). Recuerde que el limpiador de discos sólo ejecuta scripts a ciegas. Por lo tanto, puede crear una nueva secuencia de comandos que ejecute varias secuencias de comandos del limpiador de discos y, a continuación, ejecutar la nueva secuencia de comandos (de modo que se ejecuten todas las secuencias de comandos del limpiador de discos incluidas en ella).

Eliminar registros girados

Eliminar todos los archivos de registro girados en el punto de montaje especificado.

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

Eliminar todos los archivos de registro girados en el punto de montaje especificado.

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.

Drenaje de partición del Administrador de discos

Hacer que el administrador de discos realice una purga máxima en todas las particiones

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

Haga que el administrador de discos realice una purga máxima de todas sus particiones.

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

...

>

Desagüe del silo del administrador de discos

Hacer que el administrador de discos realice una purga máxima en todos los silos

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

Haga que el administrador de discos realice un drenaje máximo de todos sus 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

>

Truncar archivos eliminados

Truncar a cero bytes todos los archivos eliminados ocultos que están presentes debido a identificadores de archivo abiertos.

> 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.

>

Detención e inicio del limpiador de discos

Utilice el comando pmtool para detener e iniciar el limpiador de discos.

> pmtool disablebyid diskcleaner

>

> pmtool status

...

diskcleaner (normal) - User Disabled

...

> pmtool enablebyid diskcleaner

>

> pmtool status

...

diskcleaner (normal) – Running 17086

...

Tecnología de software

Limpiador de discos.py

Esta secuencia de comandos es el programa principal del limpiador de discos. Esta secuencia de comandos de Python se ejecuta de la siguiente manera:

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

donde si se especifica debugging, la secuencia de comandos genera información de depuración y help es la información de uso de salida y exit.

Intervalo (en segundos) entre los ciclos de limpieza de disco. Si no se especifica, el valor predeterminado es 600 segundos. diskclean.py es iniciado por el Administrador de procesos al inicio del sistema. Se ejecuta como un proceso daemon administrado por el Administrador de procesos y se ejecuta hasta que se apaga el sistema. Cuando se inicia el limpiador de discos, ejecuta un loop que se ejecuta cada intervalo de segundos. Cada ciclo, el limpiador de discos escanea todos los puntos de montaje (/, /Volume, ...) especificados por el comando df -a y obtiene su uso actual del disco (medido por el comando df).

El limpiador de discos recorre cada nivel de limpieza comenzando en el nivel 0 y se abre camino hasta que el número de nivel sea mayor que el porcentaje de uso de disco de ese punto de montaje. Sólo es necesario limpiar un nivel si el uso del punto de montaje es igual o superior al número de nivel. Por lo tanto, si el uso es del 55%, ejecute cada nivel de limpieza de disco en orden - 0, 1, 2, ..., 55.

Cuando la limpieza debe realizarse, se invoca la secuencia de comandos del shell diskcleanr.sh (ver a continuación) para realizar la limpieza real. Ese script llama ciegamente a cada script encontrado en el directorio del limpiador de discos del punto de montaje para el nivel limpio especificado.

- A modo de ejemplo, supongamos que el punto de montaje / tiene actualmente un uso del 96%. Cuando el limpiador de discos inicia su ciclo, ejecuta el comando df y descubre que el /punto de montaje tiene un uso del 96%. El nivel de uso para la limpieza de nivel 0 está establecido en 0%, por lo que el limpiador de discos ejecuta todas las secuencias de comandos de nivel 0 especificadas para el punto de montaje /. En este punto, el limpiador de discos vuelve a ejecutar el comando df. Supongamos que la limpieza de nivel 0 no hizo nada, por lo que el uso sigue siendo del 96%. El limpiador de discos ahora ejecuta todos los scripts de nivel 1, luego el nivel 2 y así sucesivamente.

- Supongamos que hay scripts en el nivel 50 que reducen el uso del / punto de montaje al 90%. El limpiador de discos continúa con el nivel 51, 52, ...

- Supongamos que hay scripts en el nivel 80 que reducen el uso de /punto de montaje al 75%. Ahora el limpiador de discos está terminado con el / punto de montaje porque el 75% es menos que el siguiente nivel que es 81.

Diskcleaner.sh

diskclean.sh es una secuencia de comandos bash que inicia el evento de limpieza de disco.

diskcleaner.sh <mount point> <level>

donde el punto de montaje es el punto de montaje que se va a limpiar y el nivel se refiere al nivel de limpieza que se va a realizar. Este es el porcentaje en el que se realiza la limpieza. Por ejemplo, si se ingresan 85, se ejecutaría el limpiador de discos al 85%.

Todas las secuencias de comandos de limpieza de disco presentes en el directorio:

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

que coincidan con el DC* del globo de archivos se ejecutan (en orden alfabético).

Tenga en cuenta que, dado que los nombres de los puntos de montaje suelen incluir barras diagonales (/), el uso del nombre del punto de montaje real en la ruta de acceso del directorio es incómodo (o no es válido). Por lo tanto, cambie cualquiera / a _. Por lo tanto, para limpiar el punto de montaje /dev/shm en el nivel limpio 85 (para un uso de disco del 85%), las secuencias de comandos deben coincidir: [/ngfw]/etc/sf/dc/_dev_shm/85/DC*

Este paradigma se basa en el paradigma de script rc init por el cual todos los scripts coincidentes en el directorio rcn.d se ejecutan ciegamente. El prefijo DC también es una retención del paradigma rc init - todos esos scripts comienzan con S (start) o K (kill). Supongo que te impide recoger archivos de mierda que acaban de ser dejados en el directorio. Por lo tanto, utilice un prefijo de DC.

Debajo de las tapas

El limpiador de discos utiliza el comando linux df para verificar el uso del disco:

Solución de problemas del limpiador

Archivos del sistema

- La resolución de problemas del limpiador de discos se puede realizar mirando:

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

- Las entradas registradas por el limpiador de discos contienen el limpiador de discos como el nombre del proceso y el PID del limpiador de discos.

- Esta es la forma estándar de observar el registro para un proceso basado en PM.

Pasos para Solucionar Problemas

Lo que hace el limpiador de discos se registra en process_stdout.log. Por lo general, no hay salida porque no hay limpieza de disco que hacer. Pero si necesita limpiar el disco, los archivos que se eliminen se registran en process_stdout.log. En la siguiente página se muestra un ejemplo de lo que process_stdout.log puede contener. Grep en diskclean. ̌Ejemplo de resultado en 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%.