Contents

Introdução

Plataformas mínimas de software e hardware

Descrição do recurso e passo a passo

Overview

FMC Diskcleaner

Diskcleaner FTD

Exibir os scripts disponíveis do Diskcleaner

Execução manual do Diskcleaner

Excluir logs girados

Drenagem de Partição do Gerenciador de Disco

Drenagem de silo do Gerenciador de Discos

Truncar arquivos excluídos

Interrompendo e iniciando o Diskcleaner

Tecnologia de software

Diskcleaner.py

Diskcleaner.sh

Sob as capas

Troubleshooting do Diskcleaner

Arquivos de sistema

Etapas para solucionar problemas

Introdução

Este documento descreve como limpar arquivos do disco do sistema.

Plataformas mínimas de software e hardware

Gerente(s) e Versão(ões): CLI do FMC/FDM 7.6.0 executada no FMC ou FTD CLI

Aplicação (ASA/FTD) e versão mínima da aplicação: FTD 7.6.0

Plataformas suportadas: Todos os dispositivos FMC e FTD têm esse recurso.

Descrição do recurso e passo a passo

Overview

O diskcleaner e seus scripts são instalados na instalação/atualização. Ele não faz parte dos scripts de atualização. O processo diskcleaner.py é iniciado pelo Gerenciador de processos na inicialização do sistema. Ele é executado como um processo daemon gerenciado pelo Gerenciador de processos e é executado até que o sistema seja desligado. O limpador de disco tem scripts de disco que são chamados quando a porcentagem de uso do volume de disco= excede os limites configurados. Por exemplo, atualmente há scripts de limpeza de disco que são chamados quando a integridade do uso do volume atinge 85% e outros que são chamados quando a integridade do uso do disco atinge 95%. Se a integridade do disco atingir 95%, ele executará os scripts de limpeza de integridade de 95% e se a integridade do disco permanecer maior que 85%, ele executará os scripts de limpeza de integridade de 85%.

FMC Diskcleaner

Isso é o que o diskcleaner está configurado atualmente para executar no FMC:

- 85% de ações de limpeza de uso de disco:

- Truncar (para 0 bytes) todos os arquivos excluídos (arquivos que foram excluídos, mas ainda estão abertos por um processo em execução). Esses arquivos podem ser mostrados com o comando lsof +L1.

- Force o gerenciador de disco a drenar todos os silos.

- Exclua todos os arquivos de registro girados (aqueles com extensões de arquivo xxxxxxxx.n.gz, como messages.1.gz)

- 95% de ações de limpeza de uso do disco:

- Force o gerenciador de disco a fazer um consumo máximo de todos os silos. Isso drena os silos para 25% de sua marca de água baixa normal.

Diskcleaner FTD

Isso é o que o diskcleaner está configurado atualmente para executar no FTD:

- 85% de ações de limpeza de uso de disco:

- Truncar (para 0 bytes) todos os arquivos excluídos (arquivos que foram excluídos, mas ainda estão abertos por um processo em execução). Esses arquivos podem ser mostrados com o comando lsof +L1.

- Force o gerenciador de disco a drenar todos os silos.

- Exclua todos os arquivos de registro girados (aqueles com extensões de arquivo xxxxxxxx.n.gz, como messages.1.gz)

- 95% de ações de uso do disco:

- Force o gerenciador de disco a fazer um consumo máximo de todos os silos. Isso drena os silos para 25% de sua marca de água baixa normal.

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

Exibir os scripts disponíveis do Diskcleaner

Use o comando system support diskcleaner-show para ver os scripts de limpeza de disco disponíveis para execução. Os scripts exibidos aqui podem ser executados manualmente usando o comando diskcleaner-run para liberar espaço em disco manualmente. Cada um desses scripts de limpeza de disco é descrito nesses slides com exemplos de chamada.

> 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

Execução manual do Diskcleaner

Digite o comando diskcleaner. Os métodos existentes do gerenciador de disco e da remoção de disco são insuficientes para esta nova tarefa. O gerenciador de discos foi projetado para controlar os níveis de integridade do disco em tempo real, à medida que os arquivos são abertos e fechados. Os arquivos de configuração do diskmanager são seletivos, complicados e frágeis. O processo de remoção foi projetado para reduzir o uso de espaço de arquivos para componentes de recursos individuais sem conhecer os níveis gerais de integridade de disco do sistema. A nova estrutura do diskcleaner foi criada para fornecer a capacidade de remover arquivos com base nos níveis de integridade de disco do sistema, semelhantes ao diskmanager, com a simplicidade de usar uma linguagem de script semelhante à do processo de remoção de disco.

Use o comando diskcleaner-run para executar manualmente um script do diskcleaner. O comando é:

system support diskcleaner-run

onde nome do arquivo é o nome do script do diskcleaner a ser executado. Pode ser um caminho completo com nome de diretório e arquivo, um caminho relativo (de /etc/sf/dc) ou o nome de um script (como é nomeado em /etc/sf/dc). Globos de arquivo padrão são aceitos. O nome do arquivo está sujeito a requisitos de segurança que podem restringir o conjunto de caracteres permitidos (como o não uso de backticks `). Lembre-se de que o diskcleaner está apenas executando scripts cegamente. Assim, você pode criar um novo script que executa vários scripts do diskcleaner e, em seguida, executar esse novo script (para que todos os scripts do diskcleaner incluídos sejam executados).

Excluir logs girados

Excluir todos os arquivos de log girados no ponto de montagem especificado.

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

Excluir todos os arquivos de log girados no ponto de montagem 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.

Drenagem de Partição do Gerenciador de Disco

Faça com que o gerenciador de discos execute uma drenagem máxima em todas as partições

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

Faça com que o gerenciador de disco faça o máximo de drenagem de todas as suas partições.

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

...

>

Drenagem de silo do Gerenciador de Discos

Faça com que o gerenciador de discos execute um consumo máximo em todos os silos

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

Faça com que o gerenciador de disco faça um consumo máximo de todos os seus 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 arquivos excluídos

Truncar para zero bytes todos os arquivos excluídos ocultos que estão presentes devido a identificadores de arquivo abertos.

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

>

Interrompendo e iniciando o Diskcleaner

Use o comando pmtool para parar e iniciar o diskcleaner.

> pmtool disablebyid diskcleaner

>

> pmtool status

...

diskcleaner (normal) - User Disabled

...

> pmtool enablebyid diskcleaner

>

> pmtool status

...

diskcleaner (normal) – Running 17086

...

Tecnologia de software

Diskcleaner.py

Este script é o programa principal do diskcleaner. Este programa em Python é executado da seguinte forma:

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

onde, se a depuração for especificada, o script gerará as informações de depuração e a ajuda serão as informações de uso de saída e a saída.

O intervalo (em segundos) entre os ciclos de limpeza de disco. Se não for especificado, o padrão é 600 segundos. O diskcleaner.py é iniciado pelo Gerenciador de processos na inicialização do sistema. Ele é executado como um processo daemon gerenciado pelo Gerenciador de processos e é executado até que o sistema seja desligado. Quando o diskcleaner é iniciado, ele executa um loop que é executado a cada intervalo segundos. A cada ciclo, o diskcleaner examina todos os pontos de montagem (/, /Volume, ...) especificados pelo comando df -a e obtém o uso atual do disco (conforme medido pelo comando df ).

O diskcleaner percorre cada nível de limpeza, começando no nível 0, e vai subindo até que o número do nível seja maior que a porcentagem de uso do disco daquele ponto de montagem. Você só precisa fazer a limpeza de um nível se o uso do ponto de montagem estiver no número do nível ou for maior do que ele. Portanto, se o uso for 55%, execute cada nível de limpeza de disco na ordem 0, 1, 2, ..., 55.

Quando a limpeza precisa ser feita, o script de shell diskcleaner.sh (veja abaixo) é chamado para fazer a limpeza real. Esse script simplesmente chama cegamente cada script encontrado no diretório do diskcleaner do ponto de montagem para o nível limpo especificado.

- Por exemplo, digamos que o ponto de montagem / esteja atualmente em 96% de uso. Quando o diskcleaner inicia seu ciclo, ele executa o comando df e descobre que o ponto de montagem / está em uso de 96%. O nível de uso para limpeza de nível 0 está definido como 0%, portanto o diskcleaner executa todos os scripts de nível 0 especificados para o ponto de montagem /. Nesse ponto, o diskcleaner executa novamente o comando df. Suponha que a limpeza de nível 0 não tenha feito nada, portanto o uso ainda é 96%. O diskcleaner agora executa todos os scripts de nível 1, depois nível 2 e assim por diante.

- Digamos que haja scripts no nível 50 que reduzem o uso do ponto de montagem / para 90%. O limpador de disco continua com nível 51, 52, ....

- Digamos que existam scripts no nível 80 que reduzem o uso do ponto de /montagem para 75%. Agora, o diskcleaner termina com o ponto de montagem / porque 75% é menos que o próximo nível, que é 81.

Diskcleaner.sh

O diskcleaner.sh é um script bash que inicia o evento de limpeza de disco.

diskcleaner.sh <mount point> <level>

onde o ponto de montagem é o ponto de montagem a ser limpo e o nível se refere ao nível de limpeza a ser executado. Esta é a porcentagem na qual a limpeza é feita. Por exemplo, se 85 fossem inseridos, ele executaria o diskcleaner em 85%.

Todos os scripts de limpeza de disco presentes no diretório:

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

que correspondem ao glob de arquivo DC* são executados (em ordem alfabética).

Observe que, como os nomes dos pontos de montagem normalmente possuem barras (/), o uso do nome real do ponto de montagem no caminho do diretório é estranho (ou ilegal). Portanto, altere qualquer / para _. Portanto, para limpar o ponto de montagem /dev/shm no nível de limpeza 85 (para 85% de uso do disco), os scripts devem corresponder: [/ngfw]/etc/sf/dc/_dev_shm/85/DC*

Esse paradigma é baseado no paradigma de script rc init pelo qual todos os scripts correspondentes no diretório rcn.d são cegamente executados. O prefixo DC também é um remanescente do paradigma rc init - todos esses scripts começam com S (início) ou K (fim). Acho que isso te impede de pegar arquivos de lixo que acabaram de ser deixados no diretório. Portanto, use um prefixo DC.

Sob as capas

O diskcleaner usa o comando linux df para verificar o uso do disco:

Troubleshooting do Diskcleaner

Arquivos de sistema

- A solução de problemas do diskcleaner pode ser feita observando:

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

- As entradas registradas pelo diskcleaner contêm diskcleaner como o nome do processo e o PID do diskcleaner.

- Essa é a maneira padrão de se observar o registro de um processo baseado em PM.

Etapas para solucionar problemas

O que o diskcleaner faz é registrado em process_stdout.log. Geralmente, não há saída porque não há limpeza de disco a ser feita. Mas se a limpeza do disco precisar ser feita, os arquivos excluídos serão registrados em process_stdout.log. Na próxima página há um exemplo do que process_stdout.log pode conter. Grep no diskcleaner. ̌Exemplo de saída em 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%.