Como configurar swap no Linux Ubuntu: quando precisa e como dimensionar

Aprenda a configurar swap no Linux Ubuntu como buffer pra VPS com pouca RAM. Veja quando precisa, como dimensionar o swapfile e ajustar swappiness pra produção.

VPS com 1 ou 2 GB de RAM frequentemente entra em situações onde um build do npm, uma query pesada no PostgreSQL ou um spike de tráfego empurra a memória pro limite. Sem swap configurado, o kernel Linux dispara o OOM killer e mata o processo que estiver consumindo mais — geralmente o serviço que você mais precisa rodando. Com swap, o sistema tem um buffer pra absorver picos esporádicos antes de chegar nesse extremo.

Swap não é mágica e não substitui RAM. Quando o kernel começa a paginar ativamente, performance degrada brutalmente — leitura de swap em SSD NVMe ainda é centenas de vezes mais lenta que RAM. Mas como rede de segurança, swap previne crashes que arruinariam o uptime do servidor por causa de uma exceção momentânea.

Este tutorial cobre o fluxo completo: identificar se sua VPS precisa de swap, criar e ativar um swapfile dimensionado corretamente, ajustar swappiness pra workloads de servidor e remover ou redimensionar se necessário. Alvo: sysadmin Linux administrando Ubuntu 22.04 ou 24.04 em VPS com pouca RAM. Tempo de execução: 10-15 minutos.

Pré-requisitos

Pré-requisitos

Ubuntu 22.04 LTS ou 24.04 LTS com acesso sudo, sessão SSH ativa e pelo menos 2 GB livres em disco (pra um swapfile de 2 GB com folga). Você também precisa saber a memória RAM atual da VPS — free -h mostra.

Antes de criar swap, confirme o estado atual de memória e swap da máquina. VPS modernas frequentemente já vêm com swap configurado pelo provedor ou pela imagem base — verificar antes evita criar swap duplicado.

RAM mínima recomendada 1 GB
Swap default Ubuntu cloud 0 (não vem)
Path do swapfile /swapfile
Permissão do swapfile 600 (root only)

Quando criar swap na sua VPS

Nem toda VPS precisa de swap. A decisão depende da RAM disponível e do perfil da carga. Para servidores com 8 GB+ de RAM rodando aplicações dimensionadas corretamente, swap raramente é tocado e pode até atrapalhar (ver seção de swappiness).

Cenários onde swap faz sentido:

  • VPS com 1-4 GB de RAM rodando stack web (nginx + PHP-FPM + MySQL/Postgres)
  • Servidor que faz builds esporádicos (npm install, composer install, docker build) que consomem RAM acima do steady-state
  • Aplicações com picos imprevisíveis (importação de arquivo grande, processamento de imagem, geração de relatório)
  • Bancos de dados pequenos rodando junto com app na mesma VPS sem cgroups isolando recursos

Cenários onde swap não resolve:

  • Aplicação que precisa de RAM constante acima do disponível — adicione RAM ou faça upgrade da VPS
  • Servidor latency-sensitive (gateway, proxy reverso de alto QPS) onde qualquer swap mata o p99
  • Banco de dados grande em produção — configure cgroups e swappiness=1 ou desative swap completamente pra evitar latência de I/O imprevisível
01

Verifique RAM e swap atuais:

free -h

Output típico de VPS sem swap:

               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       420Mi       180Mi       2.0Mi       1.3Gi       1.4Gi
Swap:             0B          0B          0B

Se a linha Swap mostra valores diferentes de zero, swap já existe — pule pra seção “Ajustando swappiness”.

02

Verifique espaço livre em disco antes de alocar o swapfile:

df -h /

Confirme que / tem pelo menos 3-4 GB livres. O swapfile vai consumir o tamanho alocado integralmente — não é arquivo esparso.

Criando o swapfile

Vamos criar um swapfile de 2 GB em /swapfile. Esse tamanho cobre a grande maioria dos casos de VPS de 2-4 GB de RAM. Se sua VPS tem só 1 GB de RAM, ajuste pra 1 GB. Para 4 GB+ de RAM, 2 GB de swap continua sendo suficiente — não escale linearmente.

01

Aloque o arquivo com fallocate:

sudo fallocate -l 2G /swapfile

fallocate reserva o espaço instantaneamente sem zerar bloco a bloco (diferente de dd, que demoraria minutos). Em sistemas de arquivos modernos (ext4, xfs), funciona sem problemas.

02

Restrinja permissões do arquivo:

sudo chmod 600 /swapfile

Swap contém conteúdo de memória de processos — incluindo senhas, tokens e dados sensíveis que estavam em RAM. Deixar legível por outros usuários é uma falha grave de segurança.

03

Formate o arquivo como área de swap:

sudo mkswap /swapfile

Output esperado:

Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=abc123...
04

Ative o swap:

sudo swapon /swapfile

Sem output em sucesso. Confirme com:

sudo swapon --show
free -h

A linha Swap em free -h agora mostra 2.0Gi total.

Persistência no boot

O comando swapon ativa o swap imediatamente, mas a configuração não sobrevive ao reboot. Sem editar /etc/fstab (próximo passo), você perde o swap toda vez que a VPS reinicia.

05

Adicione o swap ao /etc/fstab pra montar automaticamente no boot:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Reveja o arquivo:

sudo cat /etc/fstab

A última linha deve ser exatamente /swapfile none swap sw 0 0.

Cuidado ao editar fstab

Erro de sintaxe em /etc/fstab impede o boot da VPS — você precisa de acesso ao console serial do provedor pra recuperar. Use sudo tee -a (append) em vez de editor pra evitar substituir o arquivo inteiro acidentalmente.

Ajustando swappiness pra workloads de servidor

Swappiness controla quão agressivamente o kernel paginará memória pra swap. Valores vão de 0 (evita swap ao máximo) a 100 (paginiza tão cedo quanto possível). Default do Ubuntu é 60, otimizado pra desktop onde swap libera RAM pra cache de disco que melhora UX. Em servidor, esse comportamento é contraprodutivo — você quer que apps rodem em RAM real, mesmo que custe um pouco de cache.

01

Verifique o valor atual:

cat /proc/sys/vm/swappiness

A maioria das instalações Ubuntu retorna 60.

02

Reduza temporariamente pra 10 (até o próximo reboot):

sudo sysctl vm.swappiness=10

Output:

vm.swappiness = 10
03

Persista a mudança em /etc/sysctl.conf pra sobreviver ao reboot:

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

Confira a configuração após o próximo boot rodando cat /proc/sys/vm/swappiness — deve mostrar 10.

Swappiness pra bancos de dados

Em VPS rodando PostgreSQL, MySQL ou MongoDB como serviço principal, considere swappiness=1. Bancos gerenciam buffer pool próprio em RAM e perdem performance brutalmente quando o kernel decide paginar páginas quentes. Valor 0 é mais agressivo ainda mas pode causar OOM em picos — 1 é o equilíbrio prático.

Verificação

Confirme que o swap está ativo, dimensionado corretamente e configurado pra persistir.

01

Estado completo de memória e swap:

free -h
swapon --show
cat /proc/sys/vm/swappiness

Você deve ver swap de 2 GB ativo, prioridade -2 (default), e swappiness=10.

02

Verifique se vai montar no boot:

grep swapfile /etc/fstab

Linha esperada: /swapfile none swap sw 0 0.

03

Monitore uso real durante carga. Use vmstat pra ver atividade de swap:

vmstat 1 5

Foque nas colunas si (swap in, KB/s lidos do swap) e so (swap out, KB/s escritos no swap). Em VPS saudável, ambas ficam em 0 a maior parte do tempo. Atividade ocasional em picos é normal. Atividade constante de centenas de KB/s indica falta de RAM real.

Resolução de problemas

”swapon: /swapfile: insecure permissions 0644”

Permissão do arquivo está aberta demais. Corrija com sudo chmod 600 /swapfile e tente ativar de novo. Erro comum se você usou dd em vez de fallocate sem ajustar permissão depois.

”fallocate: fallocate failed: Operation not supported”

Algumas VPS usam sistemas de arquivos antigos ou filesystem em camada (overlay no Docker, por exemplo) que não suportam fallocate. Substitua pelo método clássico com dd:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

Demora 30-60s em SSD. Depois segue normalmente com chmod, mkswap e swapon.

Swap ativo mas free -h ainda mostra 0B

Confirme que o swapfile foi formatado com mkswap antes do swapon. Se você pulou a etapa de formatação, swapon falha silenciosamente em alguns kernels. Rode sudo swapoff /swapfile, sudo mkswap /swapfile, sudo swapon /swapfile.

Sistema lento após habilitar swap

Provavelmente swappiness está alto e o kernel está paginando páginas quentes. Reduza pra 10 conforme a seção anterior. Se o sistema continua lento mesmo com swappiness baixo e vmstat mostra si/so constante, a RAM é genuinamente insuficiente — considere upgrade da VPS.

Próximos passos

Com swap configurado, o servidor ganha resiliência contra picos esporádicos de memória. Próximos pontos pra fechar a base de uma VPS de produção:

  • Configure limites de memória por serviço com systemd (MemoryMax= em unit files) pra evitar que um processo derrube outros
  • Monitore swap usage continuamente via Netdata, Grafana ou sistema próprio — alertar quando si/so ultrapassa threshold
  • Em VPS rodando containers, configure --memory e --memory-swap no Docker pra isolar workloads
  • Avalie se a aplicação tem leak real de memória — swap mascara o sintoma mas não resolve a causa
  • Se você está colocando isso em produção, uma VPS Hostini já vem com NVMe rápido (latência baixa de swap quando precisa) e dimensionamento de RAM transparente, evitando a maioria dos cenários onde swap salva o servidor.

Perguntas frequentes

Swap substitui a RAM em servidores de produção?

Não. Swap é storage (SSD/NVMe) usado como extensão da memória — ordens de magnitude mais lento que RAM real (latência em centenas de microssegundos contra dezenas de nanossegundos). Serve como buffer pra picos esporádicos e pra evitar OOM kill, não pra rodar a carga normal. Se a aplicação está em swap constante, falta RAM — adicione memória física.

Qual o tamanho ideal de swap pra uma VPS?

Regra prática moderna: 1 GB de swap pra VPS com 1-2 GB de RAM, 2 GB pra VPS com 2-4 GB, e 2-4 GB pra qualquer servidor com 4+ GB. A regra antiga de '2x a RAM' veio da era do hibernate em desktops e não faz sentido em servidor. Não passe de 4 GB de swap em VPS de produção — se está usando isso, falta RAM.

Devo usar swapfile ou partição de swap?

Swapfile. Em VPS provisionada com layout de disco pronto, criar partição é complicado (envolve repartition) e oferece zero vantagem de performance moderna. Swapfile é redimensionável, removível e funciona idêntico em workload real. Use partição de swap só em servidor físico com disco dedicado pra swap.

O que é swappiness e qual valor usar em servidor?

Swappiness (0-100) controla a agressividade do kernel ao mover páginas inativas pra swap. Default do Ubuntu é 60, otimizado pra desktop. Em servidor, use 10 — só faz swap quando pressão de memória é real, mantendo cache de disco em RAM o máximo possível. Para banco de dados (PostgreSQL, MySQL), use 1 ou até 0 com cgroups configurados.

Como remover o swap se não precisar mais?

Desative com sudo swapoff /swapfile, remova a linha do /etc/fstab pra não montar no boot, e apague o arquivo com sudo rm /swapfile. Confirme com swapon --show — não deve retornar nada. Faça isso antes de redimensionar (não dá pra resize um swapfile ativo).

Por que minha VPS está usando swap mesmo com RAM livre?

Comportamento normal. O kernel move páginas inativas pra swap proativamente pra liberar RAM pra cache de disco, mesmo sem pressão imediata. Com swappiness=60 (default), isso é bem agressivo. Reduza pra 10 se incomoda. Só vire alerta quando swap está sendo lido/escrito ativamente (vmstat mostrando si/so > 0 constante) — aí sim falta RAM.

Tópicos:
Próximos passos Cloud Ryzen com NVMe e proteção DDoS sempre ativa.Coloque em produção numa VPS Hostini →
Esse tutorial foi útil?
Falar no WhatsApp