Como Criar Memória Swap no Linux

Para criar um arquivo de swap no Linux, prepare um arquivo no seu armazenamento, inicialize-o com mkswap e então ative-o com swapon. O swap ajuda a reduzir a pressão de memória, mas é mais lento que a RAM e não resolve todos os problemas de escassez de memória nem garante o funcionamento normal dos programas.

O que é Swap?

Swap é um espaço que permite que parte das páginas de memória em uso seja colocada no armazenamento. Você pode usar um arquivo de disco ou uma partição separada. Este artigo explica como adicionar um arquivo, e os 2 GiB no exemplo são para fins de prática. O tamanho necessário deve ser determinado considerando a RAM, a carga de trabalho, o espaço disponível e se a hibernação é usada.

O sistema pode já estar utilizando swap. Verifique os itens atualmente ativados e o status da memória com o seguinte comando.

swapon --show
free -h

Verifique o nome, tamanho e uso em swapon --show, e observe o uso total na linha Swap de free -h. Mesmo que você aumente o swap, o desempenho pode diminuir se houver acesso frequente ao armazenamento. Se a memória estiver constantemente insuficiente, considere também a carga de trabalho e a expansão da RAM.

Coisas para verificar antes de começar

O procedimento a seguir é um exemplo para Linux usando ferramentas GNU e util-linux, onde o sistema de arquivos raiz é o comum ext4 e possui espaço livre suficiente. Privilégios de administrador são necessários. Containers ou servidores gerenciados podem restringir a ativação de swap, então verifique as políticas de operação primeiro.

findmnt -T / -o TARGET,FSTYPE,SOURCE,OPTIONS
df -h /

Verifique o tipo de sistema de arquivos e o espaço disponível. Além do arquivo de swap de 2 GiB, deixe espaço livre suficiente para a operação normal. Não use o caminho do exemplo /swap-manualfactory se um arquivo ou link simbólico já existir lá. Reinicializar ou sobrescrever um arquivo de swap existente pode causar perda de dados e problemas em um sistema em execução.

O Btrfs possui restrições separadas relacionadas a Copy-on-Write e snapshots, portanto, não aplique diretamente o procedimento do ext4 abaixo. Para métodos e condições específicos de criação no Btrfs, verifique o documento sobre arquivo de swap no Btrfs . Sistemas de arquivos de rede ou outros tipos de sistemas de arquivos também podem ter condições de suporte diferentes.

Criando e ativando um arquivo de swap

A seguir está um exemplo de criação de um arquivo de 2GiB quando /swap-manualfactory não existe. O conv=excl no GNU dd falhará se o destino já existir, prevenindo sobrescrita. Se falhar ou for interrompido, não prossiga para o próximo passo; verifique a causa e o arquivo gerado.

sudo dd if=/dev/zero of=/swap-manualfactory bs=1M count=2048 conv=excl status=progress

Se o comando for bem-sucedido, verifique o tamanho e o caminho do arquivo, configure-o para que apenas o administrador possa ler e escrever, e então inicialize-o como uma área de swap. mkswap modifica o arquivo especificado, portanto, certifique-se de verificar que o caminho é o arquivo que você acabou de criar.

sudo ls -lh /swap-manualfactory
sudo chmod 600 /swap-manualfactory
sudo mkswap /swap-manualfactory

Execute o próximo passo apenas se cada passo anterior for bem-sucedido. Após ativar com o comando abaixo, verifique se o novo caminho aparece na lista.

sudo swapon /swap-manualfactory
swapon --show
free -h

O tamanho do arquivo exibido pode não corresponder exatamente ao tamanho do arquivo criado devido ao cabeçalho de swap e outros fatores. Se swapon falhar, verifique o erro e não o adicione às configurações de inicialização. Um arquivo de swap não deve ter lacunas e, dependendo do sistema de arquivos, um arquivo criado com fallocate pode não ser adequado. O manual util-linux swapon explica as restrições para cada sistema de arquivos.

Ativando após a inicialização

Adicione itens ao /etc/fstab somente após ativá-lo com sucesso. Como este arquivo também contém outras configurações de montagem, faça um backup antes de editar e garanta que os caminhos não dupliquem entradas de swap existentes. Se o caminho de backup abaixo já existir, escolha um novo nome diferente.

sudo cp -a -n /etc/fstab /etc/fstab.before-swap
sudo nano /etc/fstab

Mantenha o conteúdo existente no editor e adicione a linha abaixo, depois salve. Se você criou um caminho de exemplo com outro nome, use o caminho real.

/swap-manualfactory none swap defaults 0 0

Após salvar, verifique novamente o conteúdo do arquivo e, em sistemas onde disponível, revise as configurações com o seguinte comando. Esta verificação não garante reinicialização bem-sucedida.

sudo findmnt --verify --verbose
sudo systemctl daemon-reload

daemon-reload faz com que sistemas que utilizam systemd recarreguem as configurações alteradas. Se houver erros de validação, corrija-os e garanta que você não alterou acidentalmente outras entradas. Reinicie o sistema em um momento de manutenção apropriado e então confirme com swapon --show que o arquivo foi reativado. Você também pode verificar os procedimentos de registro e validação em Documentação de Gerenciamento de Swap da Red Hat.

Desativar e reverter

Antes de desligar a troca (swap), verifique o uso e a memória disponível com swapon --show e free -h. Se não houver espaço suficiente para mover as páginas em uso para outra memória ou swap, a desativação pode falhar ou sobrecarregar o sistema. Em um sistema em operação, prossiga após garantir capacidade disponível e tempo de manutenção.

sudo swapoff /swap-manualfactory
swapon --show

Certifique-se de que o item alvo não esteja mais na lista ativa. Para impedir que ele seja reativado na inicialização, remova apenas a linha adicionada por esta operação em /etc/fstab e, em um ambiente systemd, execute sudo systemctl daemon-reload. Para excluir o arquivo de swap, primeiro confirme que a desativação foi bem-sucedida e que a linha de configuração adicionada foi removida, depois exclua apenas o arquivo que você criou. Deixe outros itens de swap ou configurações existentes como estão.