
Disco e memória: quando o servidor fica lento ou cheio
Objetivos desta aula
- Diagnosticar disco cheio com df e du
- Encontrar os maiores arquivos e pastas
- Interpretar uso de memória e swap
- Identificar processos que consomem CPU e RAM
- Resolver o caso clássico de log que enche o disco
Dois dos incidentes mais comuns em produção são disco cheio e falta de memória. Quando o disco enche, bancos param de gravar e aplicações caem; quando a memória acaba, o kernel mata processos.
Comece pelo panorama: df -h mostra cada partição, quanto está usado e quanto sobra, em formato legível (-h = human). Acima de 90%, acenda o alerta.
Depois descubra quem ocupa espaço: du -sh /var/* | sort -h soma o tamanho de cada pasta e ordena. Vá descendo pelas maiores até achar o culpado — quase sempre logs, imagens Docker antigas ou backups esquecidos.
Caso clássico: você apaga um log gigante, mas o espaço não volta. Motivo: o processo ainda tem o arquivo aberto. Veja com lsof +L1 e reinicie o serviço, ou esvazie o arquivo com truncate -s 0 arquivo.log em vez de apagá-lo.
A solução definitiva é o logrotate, que gira, comprime e apaga logs antigos automaticamente. No Docker, limpe com docker system prune (com cuidado) e configure limites de log.
Para memória use free -h. A coluna importante é available (quanto pode ser usado de fato). O Linux usa RAM livre como cache, então “used” alto nem sempre é problema.
Swap é memória extra no disco — muito mais lenta. Swap muito usado indica falta de RAM. Para achar o vilão, top ou htop ordenados por memória (M) ou CPU (P).
Se o kernel mata processos por falta de memória, aparece no log: journalctl -k | grep -i oom. Em Kubernetes, isso vira o famoso status OOMKilled.
Na prática
Investigando disco cheio
bash
df -h # visão geral das partições
sudo du -sh /var/* 2>/dev/null | sort -h | tail
sudo find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null
sudo lsof +L1 # arquivos apagados ainda abertos
sudo truncate -s 0 /var/log/app.log # esvazia sem apagarMemória e processos
bash
free -h # olhe a coluna 'available'
ps aux --sort=-%mem | head -5 # top 5 por memória
journalctl -k | grep -i "out of memory"Por que isso importa
Disco e memória causam incidentes recorrentes; saber investigar rápido evita horas de indisponibilidade.
Erro comum
Apagar arquivos aleatórios de /var ou /usr para liberar espaço, quebrando o sistema.
Dica de produção
Crie alertas em 80% de disco e configure logrotate em todo servidor desde o primeiro dia.
Pergunta de entrevista
Você apagou um log de 20 GB, mas o df continua mostrando o disco cheio. Por quê e como resolver?
Glossário
- df
- Mostra o uso de espaço por partição.
- du
- Mostra o tamanho de pastas e arquivos.
- Swap
- Área do disco usada como memória extra (lenta).
- OOM killer
- Mecanismo do kernel que mata processos sem memória.
- logrotate
- Ferramenta que gira e limpa logs automaticamente.
Conexão com o CloudShop
O Boss do reino Linux simula um servidor CloudShop com disco 100% cheio por logs.
Quiz da aula
1. Qual comando mostra o uso por partição?
2. Na saída do `free`, qual coluna indica a memória realmente disponível?
3. Por que o espaço não volta após apagar um log aberto?
Minhas anotações
Salvo automaticamente neste navegador.
