# Disco cheio em servidor Linux: descubra o que está usando o espaço

Um disco cheio geralmente tem uma ou duas causas óbvias. Trabalhe de cima para baixo, leia antes de apagar e nunca remova arquivos em /var/lib manualmente, a menos que saiba a qual serviço eles pertencem.

## 1. Confirme qual sistema de arquivos está cheio

Execute df -h. Observe a coluna Use% e a coluna Mounted on: o sistema de arquivos cheio pode ser o / ou uma montagem separada, como /var, /home ou /data, e limpar o errado não muda nada.
Execute também df -i. Um sistema de arquivos pode ter espaço livre, mas nenhum inode livre, o que acontece quando milhões de arquivos pequenos se acumulam (sessões, filas de e-mail, arquivos de cache). Se IUse% estiver perto de 100%, você está procurando muitos arquivos pequenos, não alguns arquivos grandes.

## 2. Encontre os maiores diretórios

Execute sudo du -xh --max-depth=1 / | sort -h e leia as últimas linhas. A opção -x permanece em um único sistema de arquivos, então discos montados e sistemas de arquivos virtuais não distorcem o resultado. Repita dentro do maior diretório, por exemplo sudo du -xh --max-depth=1 /var | sort -h.
Se o ncdu estiver instalado (sudo apt install ncdu no Debian e no Ubuntu), sudo ncdu -x / permite navegar pelos mesmos dados de forma interativa.

## 3. Verifique se há arquivos excluídos que ainda estão abertos

Se o du mostra bem menos que o df, algum processo pode ainda estar mantendo aberto um arquivo excluído, geralmente um log grande. sudo lsof +L1 lista os arquivos abertos com contagem de links igual a zero. O espaço é liberado quando esse processo fecha o arquivo, o que normalmente significa reiniciar o serviço responsável por ele. Faça isso em um momento tranquilo, não no meio de um pico de requisições.

## 4. Revise os suspeitos de sempre

Logs: verifique /var/log e consulte o journal com journalctl --disk-usage. Veja nosso guia sobre como limitar o tamanho do journald se ele estiver grande.
Pacotes: sudo apt clean remove os arquivos de pacotes baixados; sudo apt autoremove lista pacotes e kernels antigos que não são mais necessários e mostra o que será removido antes de você confirmar. Mantenha o kernel em execução e uma versão anterior.
Docker: docker system df mostra imagens, contêineres, volumes e cache de build. docker system prune remove contêineres parados, redes não utilizadas e imagens pendentes (dangling); não remove volumes, a menos que você adicione --volumes, então leia o aviso antes de responder.
Snap: snap list --all mostra revisões antigas de snaps que estão desativadas e que podem ser removidas uma a uma com snap remove NAME --revision=NUMBER.

## 5. Depois de liberar espaço

Execute df -h novamente e verifique se os serviços que pararam por causa do disco cheio estão em execução (systemctl --failed). Um banco de dados que chegou a um disco cheio pode precisar de uma reinicialização ou de uma verificação antes de você confiar nele.
Em seguida, defina um limite para que isso não se repita: rotação de logs, um limite do journald e um alerta antes que o disco chegue a 90%.

## FAQ

**É seguro excluir arquivos em /var/log?**

Logs rotacionados e compactados (por exemplo, syslog.1 ou arquivos .gz) geralmente podem ser apagados quando você não precisar mais deles. Não exclua o arquivo de log atual de um serviço em execução; trunque-o com cuidado ou deixe o logrotate cuidar disso, e verifique antes o que o serviço espera.

**Por que o df mostra o disco cheio, mas o du não bate?**

Normalmente, um arquivo excluído ainda está aberto por um processo em execução (veja lsof +L1), ou os números vêm de sistemas de arquivos diferentes. Use du -x e compare com o df para o mesmo ponto de montagem.

**Devo executar docker system prune em um servidor de produção?**

Somente depois de usar docker system df e verificar o que não está em uso. Ele pode remover imagens que você ainda pretende iniciar. Os volumes são mantidos por padrão, mas verifique se você tem backups de tudo o que é importante.

Source: https://raincleaner.eu/pt/guides/linux-server-disk-full-find-what-is-using-space