Como Criar Arquivo Swap na VPS Linux com Fallocate e Swapon

12 min de leitura Linux
Como Criar Arquivo Swap na VPS Linux com Fallocate e Swapon

O gerenciamento eficiente de recursos é um dos pilares fundamentais para a estabilidade de qualquer ambiente de infraestrutura, seja ele dedicado ou virtualizado. Em ambientes de vps, onde os limites de hardware são frequentemente compartilhados ou rigidamente definidos pelo plano contratado, a falta de memória RAM pode ser o gatilho para falhas críticas em serviços essenciais, como bancos de dados MySQL/MariaDB, servidores web Nginx/Apache e processos em background. Quando a memoria ram física se esgota, o kernel do Linux entra em pânico ou inicia o processo de "kill" aleatório de processos para liberar espaço, resultando em indisponibilidade do serviço.

A solução tradicional para mitigar esse gargalo é a configuração de uma área de troca, conhecida comumente como swap linux. O Swap funciona como uma extensão da memória RAM, utilizando espaço no disco (SSD ou HDD) para armazenar páginas de memória que não estão sendo usadas ativamente. Embora o disco seja significativamente mais lento que a memória física, ter um swap configurado corretamente atua como uma rede de segurança vital, impedindo o colapso total do sistema durante picos de demanda.

Neste tutorial técnico, detalharemos o processo completo de criação e ativação de um arquivo de swap utilizando a ferramenta fallocate. Diferente da abordagem antiga que envolvia criar arquivos vazios byte por byte (o que era extremamente lento), o fallocate aloca espaço diretamente no sistema de arquivos, tornando o processo quase instantâneo. Este guia é essencial para qualquer sysadmin ou desenvolvedor buscando otimizar o desempenho servidor em ambientes Linux modernos.

Pré-requisitos e Verificação do Ambiente

Antes de prosseguir com a modificação da estrutura de memória, é crucial entender o estado atual do seu servidor. A maioria das distribuições modernas (Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux) suporta a criação de swap via arquivo sem necessidade de partições dedicadas no disco. No entanto, existem algumas verificações preliminares que devem ser realizadas para garantir que não haja conflitos com áreas de troca já existentes.

O primeiro passo é acessar o servidor via SSH com privilégios de root ou um usuário com permissões sudo. Em seguida, verifique se existe algum espaço de swap já ativo. Utilize o comando swapon sem argumentos ou a ferramenta free para visualizar o uso de memória.

swapon --show

Se o retorno for vazio, significa que não há swap ativo. Caso contrário, você verá informações sobre o dispositivo ou arquivo de swap existente. É recomendável remover qualquer swap antigo antes de criar um novo para evitar confusões na gestão de memória.

sudo swapoff -a

O comando acima desativa todas as áreas de swap ativas. Agora, verifique o espaço disponível no disco rígido ou SSD. O arquivo de swap não deve ocupar mais do que 50% da sua RAM física em sistemas com pouca memória (menos de 2GB), ou até 4GB como teto máximo em sistemas com muita RAM. Em servidores modernos, um arquivo de 1 a 2 GB é geralmente suficiente para lidar com picos esporádicos.

df -h /

Certifique-se de que há espaço livre suficiente no diretório raiz / ou em outro ponto de montagem adequado. Lembre-se de que o Swap reside no disco; portanto, a velocidade do seu armazenamento impacta diretamente a eficiência da troca de memória. Em VPSs com discos SSD NVMe, a penalidade de performance é mínima comparada a HDDs tradicionais.

Criação do Arquivo de Swap com Fallocate

Agora que o ambiente está limpo e verificado, procederemos à criação do arquivo de swap. Utilizaremos o comando fallocate, que é muito mais eficiente que dd para este propósito específico. O fallocate reserva o espaço no sistema de arquivos imediatamente, sem precisar escrever zeros no disco.

Para este exemplo, criaremos um arquivo de 2 Gigabytes no diretório raiz. Você pode nomear o arquivo como preferir, mas é comum utilizar nomes como swapfile ou swap.disk. Execute o seguinte comando:

sudo fallocate -l 2G /swapfile

O parâmetro -l 2G instrui o sistema a alocar exatamente 2 Gigabytes. Após a execução, verifique se o arquivo foi criado corretamente e qual é o seu tamanho real:

ls -lh /swapfile

A saída deve indicar um arquivo de 2.0G. Em alguns sistemas de arquivos específicos ou versões antigas do kernel, o fallocate pode falhar ou criar um arquivo "esparsa" (sparse file) que não ocupa espaço físico real até ser preenchido. Se isso ocorrer, use o comando alternativo baseado em dd:

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

No entanto, para a vasta maioria das VPSs modernas com XFS ou EXT4, o método com fallocate é o padrão recomendado pela sua velocidade e simplicidade.

Configuração de Permissões de Segurança

Um erro comum cometido por administradores iniciantes é deixar o arquivo de swap com permissões abertas. Como o Swap pode conter dados sensíveis da memória, incluindo senhas e chaves criptográficas em texto claro, é imperative restringir o acesso ao root.

Defina as permissões corretas para que apenas o usuário root possa ler e escrever no arquivo de swap. Utilize o comando chmod:

sudo chmod 600 /swapfile

Verifique as permissões novamente com ls -lh /swapfile. A saída deve começar com -rw-------, indicando que apenas o proprietário (root) tem acesso de leitura e escrita. Qualquer outra configuração pode resultar em alertas de segurança do kernel ou, em casos extremos, vazamento de dados.

Inicialização e Ativação do Swap

Com o arquivo criado e as permissões ajustadas, o próximo passo é transformar esse arquivo bruto em uma área de troca funcional. Utilizaremos o comando mkswap, que configura a estrutura de dados necessária para o kernel reconhecer o arquivo como swap.

sudo mkswap /swapfile

A saída do comando mostrará um "Setting up swapspace version 1" e um UUID único associado ao arquivo. Este identificador é importante para o sistema operacional gerenciar a área de troca.

Imediatamente após configurar o arquivo, precisamos ativá-lo. Para isso, utilizamos o comando swapon:

sudo swapon /swapfile

Agora, o espaço de disco alocado está sendo utilizado pelo kernel como memória virtual. Você pode confirmar a ativação executando novamente o swapon --show ou verificando o uso geral de memória com o comando free -h. Na coluna "Swap", você deverá ver os 2GB disponíveis e, possivelmente, algum uso se houver processos trocando memória.

Diferença entre Swapon e Swapfile

É importante notar a distinção técnica: /swapfile é o recurso físico (o arquivo no disco), enquanto swapon é a ação lógica de ativar esse recurso. O comando swapon pode ser usado para ativar múltiplos dispositivos ou arquivos, e também aceita flags como --priority para definir a prioridade da área de troca em relação a outras existentes.

Permanência do Swap no Boot (fstab)

Até este momento, o swap está ativo e funcionando. No entanto, há uma limitação crítica: essa configuração é volátil. Se você reiniciar a VPS, o arquivo /swapfile ainda existirá no disco, mas não estará ativado automaticamente. O servidor iniciará sem memória de troca, voltando à vulnerabilidade inicial.

Para garantir que o swap seja montado automaticamente em cada boot do sistema, devemos adicionar uma entrada ao arquivo /etc/fstab. Este arquivo é responsável por definir como os sistemas de arquivos e dispositivos são montados durante a inicialização.

Antes de editar qualquer arquivo de configuração crítica, faça um backup da cópia atual:

sudo cp /etc/fstab /etc/fstab.bak

Agora, abra o editor de texto de sua preferência (como nano ou vim) e edite o arquivo:

sudo nano /etc/fstab

No final do arquivo, adicione a seguinte linha:

/swapfile none swap sw 0 0

Vamos analisar os campos desta linha:

  • /swapfile: O caminho completo para o arquivo de troca.
  • none: Indica que não há dispositivo específico (como /dev/sda1) associado, pois é um arquivo.
  • swap: O tipo de sistema de arquivos/partição.
  • sw: As opções padrão para swap.
  • 0 0: Opções de dump e fsck (verificação de disco). Para swap, ambos devem ser zero, pois não faz sentido fazer backup ou verificar integridade de um arquivo de troca dinâmico.

Salve o arquivo e saia do editor. Para testar se a configuração está correta sem precisar reiniciar o servidor, desative o swap atual e tente remontar todas as entradas do /etc/fstab:

sudo swapoff -a
sudo swapon -a

Se não houver erros, significa que o sistema consegue ler a configuração do fstab e ativar o swap corretamente. Verifique novamente com swapon --show para confirmar que tudo está operacional.

Otimização do Kernel: Swappiness

A configuração básica de swap está completa, mas há um parâmetro crucial no kernel Linux que determina como o sistema gerencia a memória: o swappiness. Esse valor define a preferência do kernel entre manter processos na RAM ou movê-los para o disco.

O valor padrão da maioria das distribuições Linux é 60. Isso significa que o kernel começará a mover dados para o swap quando o uso de RAM atingir aproximadamente 40%. Para servidores de banco de dados e aplicações web, onde a latência do disco é prejudicial ao desempenho, esse valor é geralmente muito alto.

O valor de swappiness varia de 0 a 100:

  • 0: Diz ao kernel para evitar o swap o máximo possível (apenas se a RAM estiver completamente cheia).
  • 10-20: Recomendado para servidores de banco de dados e caches.
  • 60: Padrão do sistema, aceitável para desktops ou cargas variadas.

Para verificar o valor atual:

cat /proc/sys/vm/swappiness

Para alterar o valor temporariamente (até a próxima reinicialização) para 10, use:

sudo sysctl vm.swappiness=10

Para tornar essa alteração permanente, adicione ou modifique a seguinte linha no arquivo /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

Adicione ao final do arquivo:

vm.swappiness=10

Salve e feche. Essa configuração forçará o kernel a manter as aplicações na RAM sempre que houver espaço disponível, utilizando o swap apenas como último recurso, o que melhora significativamente o desempenho servidor em cargas de trabalho sensíveis a latência.

Monitoramento e Boas Práticas

Agora que seu ambiente está configurado, é responsabilidade do administrador monitorar o comportamento do swap. O uso excessivo de swap não é necessariamente ruim (pois indica que a RAM está sendo usada ativamente), mas o uso constante e alto pode indicar que sua VPS precisa de um upgrade de plano ou otimização das aplicações.

Ferramentas como htop, vmstat e monitoramento via Prometheus/Grafana são essenciais. Observe a coluna "si" (swap in) e "so" (swap out) no vmstat. Valores consistentemente altos indicam "thrashing", onde o sistema gasta mais tempo trocando dados entre RAM e disco do que executando tarefas reais.

Além disso, mantenha um olho na saúde do seu SSD. Escrever continuamente em um arquivo de swap pode desgastar o disco mais rapidamente do que uma operação normal. Em VPSs com discos de baixa qualidade ou limite de IOPS rigoroso, monitore essas métricas de perto.

Conclusão

A configuração de swap é uma etapa fundamental na administração de servidores Linux, especialmente em ambientes de virtualização onde os recursos são finitos. Ao utilizar o comando fallocate, garantimos um processo rápido e eficiente, enquanto a configuração correta no /etc/fstab assegura a persistência da solução após reinicializações.

Lembre-se de que o Swap não é uma solução mágica para falta de memória. Ele serve como uma tábua de salvação contra picos de carga e falhas inesperadas. Para um desempenho servidor ideal, o objetivo final deve ser sempre ter RAM física suficiente para suas necessidades, utilizando o swap apenas como amortecedor. Com as configurações de swappiness ajustadas e as permissões de segurança aplicadas, sua VPS estará mais resiliente e preparada para lidar com demandas variáveis.

Aplique estas técnicas em seus ambientes de produção com cautela e sempre realize testes em ambiente de staging antes de implementar mudanças críticas. Um bom sysadmin não apenas reage a problemas, mas prevê gargalos e prepara a infraestrutura para escalar com segurança.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000