Espaço em disco: para onde vai
Como encontrar o que encheu o disco, por que um arquivo excluído mas aberto é perigoso, o que é seguro limpar e por que o anel de uso no painel pode mostrar a coisa errada.
Atualizado em 23 de agosto de 2026
Ficar sem espaço é uma indisponibilidade que se manifesta de todas as formas: o banco de dados não grava, o site retorna erro, os contêineres reiniciam. O disco de um VDS vai de 40 GB no plano de entrada a 250 GB no plano mais alto, e quase sempre ele enche pelas mesmas coisas.
Primeiros comandos
df -h
df -i
sudo du -x -h -d1 / | sort -h | tail -15
Não pule o df -i: você pode ter espaço, mas ficar sem inodes — aí aparece “disco cheio” com gigabytes livres. O culpado costuma ser milhões de pequenos arquivos de cache.
Depois, aprofunde no diretório maior:
sudo du -x -h -d1 /var | sort -h | tail
sudo du -x -h -d1 /var/lib | sort -h | tail
A flag -x mantém a contagem dentro de um único sistema de arquivos e não entra em diretórios montados.
Culpados comuns
| O que | Como verificar | O que fazer |
|---|---|---|
| Logs de contêiner | du -sh /var/lib/docker/containers/*/*-json.log | Limite o tamanho, veja logs |
| Imagens e cache de build | docker system df | docker image prune, docker builder prune |
| Journal do sistema | journalctl --disk-usage | journalctl --vacuum-size=200M |
Kernels antigos em /boot | df -h /boot | apt autoremove --purge |
| Cache de pacotes | du -sh /var/cache/apt | apt clean |
| Cópias deixadas no lugar | du -sh /backup | Mova para fora do servidor, veja outro local |
| Uploads de usuários | du -sh /var/www/uploads | Armazenamento externo ou um disco maior |
Um arquivo excluído que ainda ocupa espaço
Um enigma clássico: o du mostra 5 GB, o df mostra 30 GB usados. Isso significa que o arquivo foi excluído, mas um processo ainda o mantém aberto, e o espaço só será liberado após um reinício.
sudo lsof +L1 | head -20
A saída vai mostrar os processos e os tamanhos. A solução é reiniciar o culpado:
sudo systemctl restart <service>
docker compose restart <service>
Nunca libere espaço com
rmem um arquivo de log que está em uso. O jeito certo é truncá-lo:sudo truncate -s 0 /var/log/big.log. Excluí-lo vai deixar o espaço ocupado e ainda vai custar o log.
O anel de uso no painel
Na aba “Visão geral” há um anel de uso de disco. Ele é calculado pelo agente convidado qemu-guest-agent. Se o agente for removido ou não estiver em execução, os dados não serão atualizados — o painel vai mostrar o comando de instalação. Para verificar dentro da máquina:
systemctl status qemu-guest-agent
As leituras do agente e o df -h devem bater. Uma divergência geralmente significa que parte do espaço está ocupada em uma partição montada separadamente — veja partições e sistemas de arquivos.
Prevenção
Configure uma tarefa agendada com limpeza e um alerta:
#!/bin/bash
USED=$(df --output=pcent / | tail -1 | tr -dc '0-9')
if [ "$USED" -gt 85 ]; then
journalctl --vacuum-size=200M
apt clean
docker image prune -f
echo "Disk is ${USED}% full" | mail -s "VDS: low disk space" you@example.com
fi
Um limite de 85% dá margem para reagir. Não dá para esperar os 100%: quando o disco enche, alguns serviços não conseguem nem gravar um log sobre o que aconteceu.
Se não houver espaço nenhum
- Libere alguns gigabytes com medidas rápidas:
journalctl --vacuum-size=100M,apt clean,docker builder prune -f. - Encontre a causa real com os comandos acima — caso contrário, tudo vai se repetir em uma semana.
- Se os dados realmente cresceram, você precisa aumentar o disco mudando para um plano mais alto. Não há downgrade: o disco não pode ser reduzido.