14 min de leitura · Guia técnico
Solucionar problemas de espaço em disco no VPS Linux envolve identificar arquivos que consomem muito espaço, limpar logs antigos, remover pacotes desnecessários e otimizar o armazenamento. Quando o disco de um servidor virtual fica cheio, serviços podem parar de funcionar, sites ficam inacessíveis e bancos de dados podem corromper. Este guia apresenta métodos eficazes para diagnosticar e resolver problemas de espaço em disco no seu VPS Linux.
Pré-requisitos
- Acesso SSH ao seu VPS Linux com privilégios de root ou sudo
- Conhecimentos básicos de comandos Linux
- Terminal ou cliente SSH (PuTTY para Windows, Terminal para macOS/Linux)
- Backup recente dos dados importantes (por precaução)
Verificando o uso atual do espaço em disco
Antes de iniciar qualquer limpeza, é fundamental entender quanto espaço está sendo usado e onde estão os arquivos que mais consomem armazenamento. O Linux oferece várias ferramentas nativas para analisar o uso de disco.
Para verificar o uso geral de espaço em disco e a porcentagem de utilização, use o comando df:
df -h
O resultado será semelhante a este:
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 30G 28G 1.2G 96% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
/dev/vdb1 100G 45G 55G 45% /data
Para identificar quais diretórios estão consumindo mais espaço, utilize o comando du:
du -sh /* 2>/dev/null | sort -rh
Este comando mostrará os diretórios de primeiro nível ordenados por tamanho:
/var 12G
/home 8.5G
/usr 5.2G
/opt 2.1G
/root 1.8G
/tmp 450M
/etc 120M
/boot 110M
/bin 80M
/sbin 50M
/lib 45M
Para uma análise mais detalhada, instale a ferramenta ncdu, que oferece uma interface interativa para explorar o uso de disco:
apt-get update && apt-get install ncdu -y # Para Debian/Ubuntu
# ou
yum install ncdu -y # Para CentOS/RHEL
Execute o ncdu para analisar o sistema de arquivos:
ncdu /
Limpando arquivos de log e temporários
Os arquivos de log frequentemente são os principais responsáveis pelo consumo excessivo de espaço em disco no VPS Linux. Eles se acumulam ao longo do tempo e podem ocupar gigabytes de armazenamento se não forem gerenciados adequadamente.
Primeiro, verifique o tamanho dos arquivos de log:
du -sh /var/log/*
Para limpar logs específicos que estão muito grandes, você pode usar o comando truncate:
truncate -s 0 /var/log/syslog
truncate -s 0 /var/log/apache2/access.log
truncate -s 0 /var/log/apache2/error.log
Atenção: O comando truncate apaga o conteúdo do arquivo mantendo o arquivo em si. Certifique-se de que não precisa das informações contidas nos logs antes de executá-lo.
Para comprimir logs antigos e economizar espaço:
find /var/log -type f -name "*.log" -exec gzip -9 {} \;
Configure o logrotate para gerenciar automaticamente seus arquivos de log. Edite o arquivo de configuração:
nano /etc/logrotate.conf
Adicione ou ajuste as configurações para rotacionar logs com mais frequência:
# Configuração global para rotação de logs
rotate 7
weekly
compress
delaycompress
missingok
notifempty
Limpe os arquivos temporários que podem estar acumulados:
rm -rf /tmp/*
rm -rf /var/tmp/*
Gerenciando pacotes e caches do sistema
Gerenciadores de pacotes como APT (Debian/Ubuntu) e YUM/DNF (CentOS/RHEL) armazenam caches de pacotes que podem ocupar espaço considerável. Limpar esses caches é uma maneira eficaz de recuperar espaço em disco no VPS Linux.
Para sistemas Debian/Ubuntu, limpe o cache de pacotes APT:
apt-get clean
apt-get autoremove --purge
Para sistemas CentOS/RHEL, limpe o cache de pacotes YUM/DNF:
yum clean all
# ou
dnf clean all
Remova kernels antigos que não estão mais em uso (para Debian/Ubuntu):
dpkg -l 'linux-*' | awk '/^ii/{ print $2}' | grep -v -e "$(uname -r | cut -f1,2 -d"-")" | grep -e '[0-9]' | xargs apt-get -y purge
Atenção: Verifique cuidadosamente a lista de kernels a serem removidos antes de confirmar a operação.
Para CentOS/RHEL, use o comando:
package-cleanup --oldkernels --count=1
Limpe o cache do systemd journal, que pode crescer significativamente:
journalctl --vacuum-time=7d
Este comando mantém apenas os logs dos últimos 7 dias. Você pode ajustar o período conforme necessário.
Identificando e removendo arquivos grandes e desnecessários
Encontrar arquivos grandes que podem ser removidos ou movidos para armazenamento externo é uma estratégia eficiente para liberar espaço em disco no VPS Linux. Utilize comandos específicos para localizar esses arquivos.
Para encontrar arquivos maiores que 100MB em todo o sistema:
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5,5rh
Para localizar arquivos que não foram acessados nos últimos 180 dias:
find /home -type f -atime +180 -exec ls -lh {} \; 2>/dev/null
Procure por backups antigos ou arquivos compactados que podem ser transferidos para armazenamento externo:
find / -type f \( -name "*.tar.gz" -o -name "*.zip" -o -name "*.bak" \) -size +50M -exec ls -lh {} \; 2>/dev/null
Verifique diretórios de download e temporários dos usuários:
du -sh /home/*/Downloads /home/*/tmp 2>/dev/null
Se você estiver executando servidores web, verifique os diretórios de cache:
du -sh /var/cache/nginx/* /var/cache/apache2/* 2>/dev/null
Para servidores de banco de dados, verifique arquivos de dump e logs de transações:
find /var/lib/mysql -name "*.sql" -o -name "*.gz" -o -name "*.log" -size +50M -exec ls -lh {} \; 2>/dev/null
Otimizando bancos de dados
Bancos de dados podem consumir muito espaço em disco, especialmente se houver tabelas fragmentadas ou logs de transações extensos. Otimizar seus bancos de dados pode liberar espaço significativo no VPS Linux.
Para MySQL/MariaDB, verifique o tamanho dos bancos de dados:
mysql -e "SELECT table_schema AS 'Database', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)' FROM information_schema.TABLES GROUP BY table_schema;"
Otimize todas as tabelas para recuperar espaço:
mysqlcheck --optimize --all-databases -u root -p
Para PostgreSQL, verifique o tamanho dos bancos de dados:
sudo -u postgres psql -c "SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database ORDER BY pg_database_size(pg_database.datname) DESC;"
Execute o VACUUM para recuperar espaço:
sudo -u postgres psql -c "VACUUM FULL;"
Se você estiver usando MongoDB, verifique o tamanho das coleções:
mongo --eval "db.stats()"
Execute o compact para recuperar espaço:
mongo --eval "db.runCommand({ compact: 'collection_name' })"
Expandindo o espaço em disco
Quando as técnicas de limpeza não são suficientes, expandir o armazenamento do seu VPS Linux pode ser necessário. A maioria dos provedores de VPS permite aumentar o espaço em disco sem reiniciar o servidor.
Após aumentar o disco no painel de controle do seu provedor, você precisará estender a partição e o sistema de arquivos:
1. Verifique o nome do dispositivo e partição:
lsblk
2. Para discos com particionamento GPT, use o comando growpart:
apt-get install cloud-guest-utils -y # Para Debian/Ubuntu
# ou
yum install cloud-utils-growpart -y # Para CentOS/RHEL
growpart /dev/vda 1 # Substitua vda pelo seu dispositivo e 1 pelo número da partição
3. Redimensione o sistema de arquivos:
Para ext4:
resize2fs /dev/vda1 # Substitua vda1 pela sua partição
Para XFS:
xfs_growfs / # Se montado em /
4. Verifique se o espaço foi expandido:
df -h
Problemas comuns e como resolver
Sintoma: O sistema mostra "No space left on device" mesmo com espaço disponível
Causa: Provavelmente você está sem inodes, não sem espaço em disco.
Solução: Verifique o uso de inodes com df -i. Se estiver próximo de 100%, procure e remova arquivos pequenos e numerosos, como arquivos temporários ou caches. Diretórios como /tmp, /var/tmp e /var/cache são bons lugares para começar.
Sintoma: Serviços param de funcionar quando o disco fica cheio
Causa: Muitos serviços precisam de espaço para criar arquivos temporários ou logs.
Solução: Libere pelo menos 10-15% do espaço em disco usando os métodos descritos acima. Configure alertas de monitoramento para notificá-lo quando o uso do disco ultrapassar 80%.
Sintoma: Banco de dados MySQL/MariaDB não inicia
Causa: Arquivos de log de transações ou tabelas temporárias não podem ser criados devido à falta de espaço.
Solução: Libere espaço em /var/lib/mysql ou no diretório onde o banco de dados está armazenado. Verifique e limpe os logs binários com PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY); no cliente MySQL.
Sintoma: O sistema fica lento após limpar espaço em disco
Causa: A fragmentação do sistema de arquivos pode ocorrer após muitas operações de exclusão.
Solução: Para sistemas de arquivos ext4, execute e4defrag / para desfragmentar. Para sistemas XFS, a desfragmentação ocorre automaticamente, mas você pode executar xfs_fsr para acelerar o processo.
Sintoma: Diretório /boot está cheio
Causa: Acúmulo de kernels antigos.
Solução: Identifique o kernel atual com uname -r e remova os kernels antigos. Em sistemas Debian/Ubuntu, use apt autoremove --purge. Em CentOS/RHEL, use package-cleanup --oldkernels --count=2 para manter apenas o kernel atual e um anterior.
Perguntas frequentes sobre solucionar problemas de espaço em disco no VPS Linux
Como identificar quais arquivos estão ocupando mais espaço no VPS Linux?
Use o comando 'du -sh /* | sort -rh' para listar diretórios por tamanho ou 'find / -type f -size +100M' para localizar arquivos maiores que 100MB. Para análise visual, instale ferramentas como ncdu que oferecem interface interativa para explorar o uso de disco.
O que fazer quando o diretório /var está consumindo muito espaço?
Verifique os logs em /var/log com 'du -sh /var/log/*' e limpe os mais volumosos com 'truncate -s 0'. Configure logrotate adequadamente para rotação automática. Também verifique /var/lib para caches de aplicações e /var/spool para filas de email que podem estar acumulando mensagens.
Como configurar alertas para evitar que o disco fique cheio novamente?
Instale e configure ferramentas como Monit ou Nagios para monitorar o uso de disco e enviar alertas quando atingir limites predefinidos (ex: 80%). Alternativamente, crie um script bash com df e envio de email via cron para executar verificações periódicas de espaço disponível.
É possível aumentar o espaço em disco sem reiniciar o VPS?
Sim, em muitos provedores de VPS é possível aumentar o espaço de armazenamento sem reiniciar o sistema. Após expandir o disco no painel de controle, use comandos como 'growpart' seguido de 'resize2fs' (para ext4) ou 'xfs_growfs' (para XFS) para que o sistema operacional reconheça o novo espaço sem reinicialização.
Quais são as melhores práticas para gerenciamento de espaço em disco no VPS Linux?
Implemente rotação de logs com logrotate, configure limpeza automática de arquivos temporários, monitore regularmente o uso com ferramentas como ncdu, mantenha apenas backups necessários, e use compressão para arquivos de log antigos. Considere também mover dados volumosos para armazenamento externo quando apropriado.
Automatizando a limpeza de disco
Para evitar problemas recorrentes de espaço em disco, automatize as tarefas de limpeza com scripts e agendamentos. Isso garante que seu VPS Linux mantenha espaço livre consistentemente.
Crie um script de limpeza básico:
#!/bin/bash
# Script para limpeza automática de disco
# Limpar logs antigos
find /var/log -type f -name "*.gz" -mtime +30 -delete
find /var/log -type f -name "*.log.*" -mtime +15 -delete
# Limpar arquivos temporários
find /tmp -type f -atime +7 -delete
find /var/tmp -type f -atime +7 -delete
# Limpar cache de pacotes
if command -v apt-get &> /dev/null; then
apt-get clean
apt-get autoremove -y
elif command -v yum &> /dev/null; then
yum clean all
fi
# Limpar journal
journalctl --vacuum-time=7d
# Enviar relatório
df -h | mail -s "Relatório de espaço em disco - $(hostname)" [email protected]
Salve este script como /usr/local/bin/disk-cleanup.sh e torne-o executável:
chmod +x /usr/local/bin/disk-cleanup.sh
Configure um agendamento cron para executar o script semanalmente:
crontab -e
Adicione a seguinte linha:
0 2 * * 0 /usr/local/bin/disk-cleanup.sh
Para monitoramento contínuo, crie um script de alerta:
#!/bin/bash
# Script para alertar sobre uso elevado de disco
THRESHOLD=85
EMAIL="[email protected]"
for mount in $(df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $6 " " $5 }'); do
dir=$(echo $mount | awk '{ print $1 }')
percent=$(echo $mount | awk '{ print $2 }' | cut -d'%' -f1)
if [ $percent -ge $THRESHOLD ]; then
echo "ALERTA: Partição $dir está com $percent% de uso." | mail -s "Alerta de disco - $(hostname)" $EMAIL
fi
done
Salve como /usr/local/bin/disk-alert.sh, torne-o executável e adicione ao cron para execução diária:
0 8 * * * /usr/local/bin/disk-alert.sh
Conclusão
- Mantenha um monitoramento regular do espaço em disco do seu VPS Linux para evitar interrupções nos serviços.
- Implemente rotação de logs e limpeza automática de arquivos temporários para prevenir o acúmulo de dados desnecessários.
- Considere expandir o armazenamento do seu VPS quando as necessidades de espaço aumentarem consistentemente, mesmo após otimizações.
Precisa de ajuda com seu servidor VPS Linux?
A AviraHost oferece servidores VPS Linux otimizados com monitoramento proativo de recursos e suporte técnico especializado para garantir que seu servidor opere sempre com desempenho ideal.