Como configurar swap em servidores Linux de produção
1. Introdução ao swap em servidores de produção
Swap é uma área de armazenamento em disco que o kernel do Linux utiliza como extensão da memória RAM. Quando a memória física é insuficiente, páginas de memória pouco utilizadas são movidas para o swap, liberando RAM para processos ativos. Em servidores de produção, o swap atua como uma rede de segurança crítica contra o temido OOM Killer (Out Of Memory Killer), que pode derrubar processos essenciais como bancos de dados, servidores web ou aplicações em tempo real.
Diferente de ambientes de desenvolvimento, onde um servidor travado pode ser reiniciado sem grandes consequências, em produção cada segundo de downtime representa perda financeira e de reputação. O swap não substitui RAM insuficiente — ele é um mecanismo de contingência que evita falhas catastróficas enquanto você dimensiona os recursos adequadamente.
2. Planejamento do tamanho e tipo de swap
O dimensionamento de swap em produção requer análise cuidadosa. Regras antigas sugeriam o dobro da RAM, mas workloads modernos com memória abundante tornaram essa abordagem obsoleta. A recomendação atual da Red Hat e Canonical para servidores de produção é:
- RAM ≤ 2 GB: swap = 2x RAM
- RAM 2-8 GB: swap = 1x RAM
- RAM 8-64 GB: swap = 0,5x RAM
- RAM > 64 GB: swap = 4-8 GB (dependendo da workload)
Para servidores de produção, a escolha entre partição dedicada e arquivo swap depende do cenário:
- Partição swap: desempenho ligeiramente superior, isolamento físico, mas difícil de redimensionar
- Arquivo swap: flexível, fácil de criar/remover, ideal para ambientes cloud e containers
Em discos SSD, a latência do swap é menor, mas o desgaste por escritas frequentes deve ser monitorado. Em HDDs, o swap pode tornar-se um gargalo severo — evite usar swap em discos rotacionais para servidores com alta demanda de memória.
3. Pré-requisitos e verificação do sistema
Antes de configurar swap, verifique o estado atual do sistema:
# Verificar swap ativo
swapon --show
# Verificar memória e swap
free -h
# Verificar partições e espaço disponível
df -h
# Verificar arquivos de swap existentes
cat /proc/swaps
Para criar um arquivo swap com segurança, você precisa de espaço em disco suficiente e permissões adequadas. O arquivo swap deve ter permissão 600 (apenas root pode ler/escrever) para evitar que usuários maliciosos explorem dados sensíveis que possam estar presentes nas páginas de memória trocadas.
4. Criação de swap em arquivo (método recomendado para produção)
O método com arquivo swap é o mais flexível e seguro para servidores de produção modernos. Prefira fallocate para sistemas de arquivos que o suportam (ext4, xfs), pois é mais rápido que dd:
# Criar arquivo swap de 4 GB (exemplo para servidor com 8 GB RAM)
fallocate -l 4G /swapfile
# Ajustar permissões
chmod 600 /swapfile
# Formatar como área de swap
mkswap /swapfile
# Ativar swap
swapon /swapfile
# Verificar ativação
swapon --show
free -h
Se fallocate não estiver disponível ou seu sistema de arquivos não suportar, use dd:
dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
A diferença prática é que fallocate aloca espaço sem escrever dados (alocação esparsa), enquanto dd realmente escreve zeros, sendo mais lento mas compatível com todos os sistemas de arquivos.
5. Criação de swap em partição dedicada
Para servidores onde o desempenho máximo é crítico, uma partição swap dedicada pode ser preferível:
# Identificar o disco (exemplo: /dev/sdb)
fdisk /dev/sdb
# Criar partição do tipo 82 (Linux swap)
# Exemplo de comandos dentro do fdisk:
# n (nova partição)
# p (primária)
# 1 (número da partição)
# Enter (primeiro setor - padrão)
# +4G (tamanho)
# t (mudar tipo)
# 82 (Linux swap)
# w (escrever e sair)
# Formatar como swap
mkswap /dev/sdb1
# Ativar
swapon /dev/sdb1
6. Configuração de persistência no boot
Para que o swap seja ativado automaticamente após reinicializações, adicione a entrada no /etc/fstab:
Para arquivo swap:
# Editar /etc/fstab e adicionar:
/swapfile none swap sw 0 0
Para partição swap (usando UUID para maior segurança):
# Obter UUID
blkid /dev/sdb1
# Adicionar no /etc/fstab:
UUID=seu-uuid-aqui none swap sw 0 0
Ajuste o parâmetro vm.swappiness para controlar a agressividade do swap. Valores baixos (0-10) priorizam RAM, valores altos (60-100) priorizam swap:
# Adicionar no /etc/sysctl.conf
vm.swappiness=10
vm.vfs_cache_pressure=50
# Aplicar imediatamente
sysctl -p
Para servidores de produção com RAM suficiente, swappiness=10 é recomendado — o sistema só usará swap quando estiver realmente necessário.
7. Monitoramento e ajustes finos em produção
Monitore o uso de swap continuamente:
# Verificar uso de swap por processo
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file 2>/dev/null; done | sort -k 2 -n -r | head -10
# Monitorar com vmstat (swap in/out)
vmstat 5
# Monitorar com sar
sar -S 5
Para remover swap com segurança sem interromper serviços:
# Desativar swap (move páginas de volta para RAM)
swapoff /swapfile
# Verificar se há RAM suficiente antes
free -h
# Remover arquivo
rm /swapfile
# Remover entrada do /etc/fstab
8. Boas práticas e cenários avançados
Múltiplas áreas de swap com prioridades:
# Adicionar no /etc/fstab
/swap1 none swap sw,pri=10 0 0
/swap2 none swap sw,pri=5 0 0
Swap em ambientes cloud (AWS, GCP, Azure):
- Use discos efêmeros (instance store) para swap, não EBS volumes (custo e latência)
- Em instâncias com RAM suficiente, considere desabilitar swap completamente
- Configure scripts de inicialização (cloud-init) para criar swap automaticamente
Swap em containers e VMs:
- Em containers Docker, o swap é herdado do host — configure no nível do host
- Em VMs KVM, aloque swap dentro do guest, não no hypervisor
- Para Kubernetes, use limits.memory e evite swap nos nós (kubelet requer swap desabilitado)
Remoção segura em servidores em produção:
# Verificar processos usando swap
# Desativar gradualmente
swapoff -a
# Se falhar por falta de RAM, aumente RAM ou adicione swap temporário
# Reativar com novo tamanho
Lembre-se: swap não é solução para falta de RAM. Se seu servidor está usando swap constantemente, é sinal de que precisa de mais memória física. Use swap como segurança, não como muleta.
Referências
- Red Hat Enterprise Linux - Swap Space — Documentação oficial da Red Hat sobre dimensionamento e configuração de swap no RHEL 8/9
- Ubuntu Server Guide - Swap — Guia oficial da Canonical para configurar swap em servidores Ubuntu
- Linux Kernel Documentation - Swap — Documentação do kernel Linux sobre parâmetros vm.swappiness e vfs_cache_pressure
- DigitalOcean - How To Add Swap on Ubuntu — Tutorial prático e detalhado sobre criação de swap em arquivo
- AWS - Swap Space on EC2 Instances — Recomendações oficiais da AWS para configurar swap em instâncias EC2
- Kubernetes Documentation - Swap — Documentação oficial do Kubernetes sobre requisitos de swap em clusters
- SUSE Linux Enterprise - Swap Configuration — Guia da SUSE para configuração de swap em servidores empresariais