Disco cheio na VPS: como identificar e liberar espaço
Quando o disco da VPS chega a 100%, containers Docker param de escrever logs e travam, bancos de dados recusam escritas e o sistema pode ficar inacessível. A causa mais comum em VPS com Docker são imagens e volumes não utilizados — docker system prune resolve em segundos. Veja como diagnosticar e liberar espaço rapidamente.
Diagnóstico: encontrar o que está ocupando espaço
Antes de deletar qualquer coisa, identifique os maiores consumidores de disco:
# Verificar espaço total e disponível
df -h /
# Encontrar os diretórios mais pesados (nível 1)
du -sh /* 2>/dev/null | sort -rh | head -15
# Aprofundar no diretório mais pesado (ex: /var)
du -sh /var/* 2>/dev/null | sort -rh | head -10
# Encontrar arquivos maiores que 500 MB
find / -xdev -size +500M -type f 2>/dev/null \
| xargs ls -lh 2>/dev/null | sort -k5 -rh
# Disco ocupado por Docker (imagens, containers, volumes)
docker system dfLimpeza do Docker (maior ganho)
Em VPS com Docker, imagens antigas, containers parados e volumes órfãos são o principal gargalo. Libere tudo de uma vez:
# Ver o que será removido antes de remover
docker system df -v
# Remover imagens sem uso, containers parados e cache de build
docker system prune -f
# Output: "Total reclaimed space: X.X GB"
# Remover também volumes não utilizados (CUIDADO: verifique antes)
docker system prune -af --volumes
# Remover apenas imagens antigas (não as atuais)
docker image prune -f
# Remover apenas containers parados
docker container prune -f
# Remover imagens de um repositório específico
docker images | grep "nome_da_imagem" | awk '{print $3}' | xargs docker rmiLimpar logs do sistema
Logs do journald e de aplicações podem crescer indefinidamente sem rotação configurada:
# Ver tamanho total dos logs do journald
journalctl --disk-usage
# Manter apenas os últimos 7 dias de log
sudo journalctl --vacuum-time=7d
# Manter máximo de 500 MB de logs
sudo journalctl --vacuum-size=500M
# Configurar limite permanente no journald
sudo nano /etc/systemd/journald.conf
# Adicionar/descomentar:
# SystemMaxUse=500M
# MaxRetentionSec=7day
sudo systemctl restart systemd-journald
# Limpar logs de aplicações em /var/log
sudo find /var/log -name "*.gz" -mtime +30 -delete
sudo find /var/log -name "*.log.*" -mtime +30 -deleteLimpar cache de pacotes e arquivos temporários
O cache do APT e arquivos temporários acumulam com o tempo:
# Cache do APT (pacotes baixados mas não mais necessários)
sudo apt autoremove -y # remover pacotes órfãos
sudo apt autoclean # remover pacotes baixados desnecessários
sudo apt clean # limpar todo o cache de pacotes
du -sh /var/cache/apt/archives/
# Arquivos temporários
sudo rm -rf /tmp/* /var/tmp/*
# Thumbnails e cache de usuário
rm -rf ~/.cache/thumbnails/*
du -sh ~/.cache/
# Logs de crash do sistema
sudo rm -rf /var/crash/*
# Cores de dump
sudo sysctl -w kernel.core_pattern=/dev/nullConfigurar logrotate para logs de containers
Logs de containers Docker crescem indefinidamente por padrão. Configure rotação para evitar disco cheio no futuro:
# Configurar log driver do Docker globalmente
sudo nano /etc/docker/daemon.json
# Adicionar configuração de log:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
# Reiniciar Docker para aplicar
sudo systemctl restart docker
# Por container (no docker-compose.yml):
services:
meu_app:
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.