Skip to content
VDS · Backups e disco

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 queComo verificarO que fazer
Logs de contêinerdu -sh /var/lib/docker/containers/*/*-json.logLimite o tamanho, veja logs
Imagens e cache de builddocker system dfdocker image prune, docker builder prune
Journal do sistemajournalctl --disk-usagejournalctl --vacuum-size=200M
Kernels antigos em /bootdf -h /bootapt autoremove --purge
Cache de pacotesdu -sh /var/cache/aptapt clean
Cópias deixadas no lugardu -sh /backupMova para fora do servidor, veja outro local
Uploads de usuáriosdu -sh /var/www/uploadsArmazenamento 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 rm em 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

  1. Libere alguns gigabytes com medidas rápidas: journalctl --vacuum-size=100M, apt clean, docker builder prune -f.
  2. Encontre a causa real com os comandos acima — caso contrário, tudo vai se repetir em uma semana.
  3. 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.