Em servidores como o Debian, é comum encontrar swap configurado em partição com pouco espaço, o que pode causar lentidão, travamentos ou uso excessivo de memória.
Uma solução moderna, simples e flexível é substituir essa partição por um arquivo de swap (swapfile).
Neste post iremos aprender um passo a passo como:
- Identificar o swap atual
- Remover um swap antigo pequeno
- Criar um swapfile maior
- Ativar e configurar o swap para iniciar automaticamente no boot
Sobre Memória Swap
O swap é uma área no disco rígido (HD ou SSD) que o sistema operacional usa como memória RAM adicional. Quando a RAM está cheia, o sistema move dados menos usados para o swap, liberando espaço para novos processos.
Vantagens:
- Evita crashes por falta de memória
- Permite executar mais processos simultaneamente
Desvantagens:
- Mais lento que RAM (pode causar lentidão)
- Pode reduzir vida útil do disco (mais I/O)
Tipos de swap:
- Partição swap (dedicada)
- Arquivo swap (em uma partição existente)
Gerenciamento:
- Ajuste o swappiness para controlar uso do swap
- Monitore uso com free, top, etc.
Cenário Existente
Vamos supor, para aprendizagem, que atualmente temos um swap pequeno, que não atende a demanda. O swap está configurado em uma partição dedicada /dev/sdc5 e tem menos de 1GB. Iremos configurar em um arquivo.
Usando o comando swapon --show podemos ver detalhes:
elder@servidor04:~$ sudo swapon --show NAME TYPE SIZE USED PRIO /dev/sdc5 partition 976M 899,4M -2
Desativando o swap antigo
Execute sudo swapoff /dev/sdc5 para desativar o swap acima.
sudo swapoff /dev/sdc5
Removendo o swap antigo do boot
Agora é preciso impedir que o sistema tente montar esse swap ao iniciar.
Edite o arquivo /etc/fstab usando editor nano ou vim:
sudo nano /etc/fstab
Remova a linha de montagem automática /dev/sdc5 none swap sw 0 0
/dev/sdc5 none swap sw 0 0
Opcional: Se você pretende reutilizar essa partição para outra finalidade, é recomendado apagar a assinatura de swap:
sudo wipefs -a /dev/sdc5
Atenção: não execute este comando se a partição tiver dados importantes.
Criando o novo arquivo de swap
Usei muito o comando dd para criar arquivos de imagem, mas aqui irei usar fallocate é um comando Linux usado para pré-alocar espaço em disco para um arquivo de forma rápida.
Agora vamos criar um swapfile maior. Neste exemplo, será criado um swap de 4 GB.
Cuidado: o fallocate não funciona em todos os sistemas de arquivos (ex: FAT32)
Obs.: se quisesse usar o comando dd bastaria executar: sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
Ajustando permissões do swapfile
Por segurança, o arquivo de swap deve ser acessível apenas pelo root:
sudo chmod 600 /swapfile ls -lh /swapfile
O resultado do comando ls será: -rw------- 1 root root 4.0G /swapfile
Formate o arquivo como swap
Transforme o arquivo em swap:
sudo mkswap /swapfile
Ative o novo swap
Ative o swap recém-criado:
sudo swapon /swapfile
Verifique:
swapon --show free -h
O resultado deverá ser algo como:
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -2
Configurando o swap para iniciar no boot
Para garantir que o swap seja ativado automaticamente após reiniciar o servidor, edite novamente o fstab:
sudo nano /etc/fstab
adicione:
/swapfile none swap sw 0 0
Teste a configuração
Teste se o sistema consegue ativar o swap automaticamente:
sudo swapoff /swapfile sudo swapon -a
Use swapon --show para ver o resultado
Bônus: Ajustando o uso do swap (swappiness)
Para servidores, é recomendado reduzir a agressividade do uso de swap.
Verifique o valor atual:
cat /proc/sys/vm/swappiness
Defina um valor mais equilibrado (exemplo: 10):
sudo sysctl vm.swappiness=10
Para tornar permanente:
sudo nano /etc/sysctl.conf
Adicione:
vm.swappiness=10
Mais sobre swapiness
Aqui concluimos. Mas irei falar um pouco sobre o porquê que em servidores, é comum reduzir a agressividade do uso de swap. Razões:
- Melhorar desempenho: swap é mais lento que RAM
- Reduzir desgaste do disco: swap pode causar mais I/O
O parâmetro /proc/sys/vm/swappiness controla isso. Valores:
- 0: swap só quando necessário (OOM – Out of Memory)
- 1: mínimo uso de swap (recomendado para servidores)
- 100: máximo uso de swap (padrão em alguns sistemas)
Como ajustar:
sudo sysctl -w vm.swappiness=1
Para persistir após reboot, adicione a /etc/sysctl.conf:
vm.swappiness = 1
Por que 1 e não 0?
- 0 pode causar problemas em alguns kernels antigos
- 1 é mais seguro e ainda reduz uso de swap
Veja também: FreeBSD: Adicionando uma Partição de Disco como SWAP