Como investigar "No Space Left on Device" no Ubuntu
O que voce vai aprender
- Como identificar rapidamente o que esta consumindo espaco em disco quando o servidor Ubuntu reporta "disco cheio"
- Entender quando usar
dfvsdu - Passos para resolver logs inflados (Nginx/Apache, WordPress, Docker, systemd journal)
Resumo Rapido
- Use
df -hpara identificar qual ponto de montagem esta cheio - Use
dunessa area para localizar diretorios grandes -> arquivos grandes - Verifique
/var/loge uso dojournalctlpara determinar se e inchacho de logs
Pre-requisitos
- SO: Ubuntu (Servidor)
- Shell: bash
- Permissoes: Acesso
sudoassumido (pule areas restritas se indisponivel)
1. Primeiro, verifique qual area esta cheia (df)
Conclusao: Execute
df -hedf -ihprimeiro para identificar o ponto de montagem cheio.
$ df -h
Pontos-chave para observar
- Linhas com
Use%alto (acima de 90%) Mounted on(onde esta montado)
Padroes comuns
/(raiz) esta cheio/varesta em uma particao separada e esta cheio (logs e dados de servicos se acumulam aqui)/var/lib/dockeresta inflado ao usar Docker
Verifique tambem esgotamento de inodes (muitos arquivos)
Se voce ainda recebe erros "no space" apesar de ter capacidade disponivel, pode ser esgotamento de inodes.
$ df -ih
Se IUse% esta alto (proximo de 100%), voce provavelmente tem muitos arquivos pequenos.
2. Descubra o que esta crescendo (du)
Conclusao: Execute
du -x -h -d 1a partir da montagem cheia e aprofunde ate o maior diretorio.
Uma vez que voce sabe qual ponto de montagem esta cheio pelo df, use du para restringir a causa.
Obter visao geral dos grandes diretorios sob a raiz
(Quando a raiz / esta cheia)
$ sudo du -x -h -d 1 / | sort -h
-x: Nao cruzar limites de montagem (mais facil de isolar a causa)-d 1: Profundidade de 1 nivel (comece de forma ampla)sort -h: Ordenar por tamanho
Se voce ver diretorios grandes (ex.: /var, /home), aprofunde neles a seguir.
Quando /var e grande (logs, Docker, banco de dados se acumulam aqui)
$ sudo du -x -h -d 1 /var | sort -h
Candidatos comuns de inchacho
/var/log(logs)/var/lib(Docker, dados de banco)/var/cache(cache)
3. Resolver logs inflados (/var/log e systemd journal)
Conclusao: Verifique
/var/logcom find ejournalctl --disk-usageantes de qualquer exclusao.
Verificar tamanho de /var/log
$ sudo du -h -d 1 /var/log | sort -h
Encontrar arquivos grandes:
$ sudo find /var/log -type f -printf "%s %p\n" | sort -n | tail -n 20
Causadores comuns
- Nginx:
/var/log/nginx/access.logerror.log - Apache:
/var/log/apache2/access.logerror.log - Sistema:
/var/log/syslogauth.log
O objetivo aqui e identificar o que esta crescendo. Nao exclua nada imediatamente.
Verificar tamanho do journal do systemd (journalctl)
No Ubuntu, o journal (logs binarios) pode ficar inflado.
$ sudo journalctl --disk-usage
4. Verificacao do ambiente Docker (ponto de entrada para inchacho de log/imagem)
Conclusao: Execute
docker system df— identifique qual categoria do Docker e grande antes de limpar.
Ambientes Docker tendem a consumir espaco com logs, imagens e volumes.
Verificar uso geral do Docker
$ docker system df
- Identifique qual de
Images/Containers/Local Volumese grande
Limpeza detalhada pode ser arriscada, entao neste estagio apenas identifique a direcao do problema.
5. Resposta de emergencia (abordagem segura): libere espaco primeiro
Conclusao: Use
journalctl --vacuum-size=1Gpara alivio rapido, depois corrija a causa raiz.
Sem resolver a causa raiz (logging continuo, erros persistentes), o problema vai se repetir. Porem, em emergencias, voce precisa liberar espaco primeiro para restaurar os servicos.
Excluir journal antigo para limitar a capacidade (relativamente seguro)
Exemplo para limitar a 1GB no maximo:
$ sudo journalctl --vacuum-size=1G
Abordagem por dias (excluir logs com mais de 7 dias):
$ sudo journalctl --vacuum-time=7d
Se nao tiver certeza, --vacuum-size e mais facil de gerenciar.
Quando os logs continuam crescendo de forma anormal (entrada da causa raiz)
Se Nginx/Apache/WordPress continua gerando erros, os logs vao continuar crescendo e o problema vai se repetir.
- Logs de erro do Nginx/Apache (
error.log) - Logs de erro do WordPress/PHP-FPM
- Logs de excecao da aplicacao
Primeiro identifique quais erros estao se repetindo, depois pare/corrija o servico causador.
6. Verificacao
Conclusao: Execute
df -hedf -ihnovamente apos a correcao para confirmar que o uso melhorou.
Apos fazer alteracoes, sempre verifique a melhoria com df.
$ df -h $ df -ih
Dicas importantes de seguranca
- Nao exclua antes de identificar a causa (excluir pode piorar as coisas)
/var/libcontem dados do Docker/banco de dados - nao mexa sem cuidado- Exclusao de logs e temporaria se a causa raiz persistir (corrija a causa raiz)