Como adicionar um arquivo de swap no Ubuntu

Você já sabe a importância de utilizar swap no Ubuntu, veja aqui os comandos e o passo a passo para configurar.

Como adicionar um arquivo de swap no Ubuntu
🟡
Nível: Intermediário
Pré-requisitos: Conhecimentos básicos de Linux, sistemas operacionais. Além disso, é necessário entender o é swap.
TL;DR ↪ Se você precisar apenas dos comandos, clique aqui para rolar a página direto para o resumo TL;DR!

📖 Índice

Me lembro de quando eu ainda estava começando com Linux lá o que já tem bem uns 20 anos. Eu estava estudando para a LPI101 (que até mudou de nome) e eu sempre lia que era muito importante deixar um swap configurado logo depois de uma nova instalação de Linux.

Embora seja algo simples e que eu já fiz várias vezes, não é uma coisa que faço todo dia. Em casos como esse, mesmo eu entendendo todo o conceito, eu nem sempre gravo de cabeça todos os comandos.

De forma simplificada, o swap é uma area de disco para ser utilizada pelo Kernel em casos que a memória RAM física está cheia.

Antigamente era muito comum, durante a instalação do Linux, criar uma partição exclusiva para o swap. Entretanto, nas versões mais modernas do Kernel, temos um resultado bem proximo utilizando um arquivo de swap ao invés de um partição ou de um outro disco.

💡
Existem casos específicos que faz mais sentido um disco ou partição exclusiva para swap. Mas para casos de usos mais comuns, um arquivo swap atende super bem!

Além disso, atualmente é muito comum contratarmos instancias na nuvem, imagens prontas e sistemas virtualizados, o que torna o gerenciamento de discos e partições uma coisa mais difícil e em alguns casos até indisponível.

Como definir o tamanho do swap?

Uma boa prática que eu aprendi e que atende a maioria dos casos é sempre criar o swap com o dobro do tamanho da quantidade de memória RAM. Ou seja, se você tem 1GB de memória RAM, é uma boa prática criar um swap de 2GB.

Entretanto, essa métrica faz mais sentido para maquinas com pouca memória. É contra-prudente você considerar um swap de 256GB para uma máquina com 128GB de RAM.

Sendo assim, utilize a seguinte métrica que vai atender a maioria de casos de uso gerais. Eu montei essa tabela com dados de um artigo no opensource.com.

Memória RAM Tamanho SWAP
até 2GB 2x RAM
2GB até 8GB 1x RAM
8GB até 64GB 0.5x RAM
mais que 64GB depende

Nos exemplos que vou utilizo abaixo, eu estou considerando um Ubuntu 20.04 em uma instancia na DigitalOcean com 1GB de RAM. Sendo assim, estou criando um swap de 2GB.

Verificar se já existe swap configurado

A maneira mais fácil de você verificar se já existe algum swap configurado no seu ambiente é utilizar o comando free -m. Se tiver swap configurado ele sairá discriminado conforme abaixo:

free -m

#Output
               total        used        free      shared  buff/cache   available
Mem:             971         663          64           0         243         152
Swap:           2047        1076         971
Comando para listar a memória livre. Parâmetro -m é para mostrar em megabytes.

Outra maneira de verificar se já existe swap configurado é executando o comando  swapon --show ou  swapon -s . Se tiver swap configurado ele será listado conforme abaixo:

swapon --show

#Output
NAME      TYPE SIZE USED PRIO
/swapfile file   2G   1G   -2


swapon -s

#Output
Filename				Type		Size		Used		Priority
/swapfile               file		2097148		1101172		-2
Comando para listar os arquivos de swap configurados.

Como ativar o swap no Ubuntu

Antes de começar tenha em mente que executaremos o seguintes fluxo:

Criar arquivo para swapAjustar permissõesAtivar swapConfigurar montagem

Segue o passo a passo completo com todos os comandos abaixo.

Criar arquivo para swap

Antes de iniciar, você precisa de um arquivo para onde o swap será direcionado. Você precisa criar um arquivo vazio de um tamanho já pre-definido para ser utilizado como swap. A forma mais simples é usando o comando dd.

dd if=/dev/zero of=/swapfile bs=1M count=2048
Comando para copiar caracteres nulos para um determinado destino

No comando acima, estamos criando um arquivo /swapfile com 2GB de tamanho. Basicamente estamos gravando 2048 vezes (count=2048) um bloco com o tamanho de 1MB (bs=1M) de caracteres nulos (if=/dev/zero), o que resulta em um arquivo de 2048MB ou 2GB de tamanho.

Ajustar permissões no arquivo de swap

Após ter o arquivo criado, você precisa ajustar as permissões. Embora esse arquivo terá apenas fragmentos de informações relevantes apenas para o kernel, o ideal é que, por segurança, apenas o usuário root tenha acesso a esse arquivo.  

sudo chmod 600 /swapfile
Comando para definir apenas acesso para o usuário root

Como ativar o swap no Ubuntu

Antes de efetivamente ativar o swap, você precisa transformar o arquivo que você criou (/swapfile) em um formato reconhecido pelo Linux como swap. Para isso, utilize o comando abaixo:

sudo mkswap /swapfile
Comando para transformar o arquivo para um formato válido de swap

Em seguida, ative o swap no Linux para o arquivo criado. Para isso, utilize o comando abaixo:

sudo swapon /swapfile
Comando para ligar o swap do Linux em um determinado arquivo

Prontinho, o seu Ubuntu já está com o swap. Você pode verificar se deu certo utilizando os comandos free -m ou o swapon -s que falei lá no começo do artigo.

Configurar montagem automática do swap

O passo anterior, de ativar o swap vale apenas para a execução atual do Linux. Caso você reinicie o sistema, você precisa ativar o swap novamente. É mais conveniente deixar o swap já montando automaticamente. É muito simples e basta adicionar o ponto de montagem no seu fstab conforme o procedimento abaixo:

sudo vim /etc/fstab
Eu gosto de utilizar o vim, mas utilize o editor de sua preferência 🙂

Em seguida, adicione na última linha do arquivo /etc/fstab a seguinte informação:

/swapfile  none swap    sw    0 0
Arquivo de configuração /etc/fstab

Prontinho, agora é só reiniciar para validar se deu tudo certo!

Como desativar o swap no Ubuntu

Caso você precise por algum motivo desativar o swap, seja para adicionar swap maior, ou trocar local para um outro disco, você pode fazer utilizando o comando abaixo:

sudo swapoff /swapfile
Comando para desativar um arquivo de swap

Em seguida, você pode validar se deu tudo certo utilizando algum dos comandos que falei acima, por exemplo o free -m ou o swapon -s .

TL;DR | Resumo

# Criar um arquivo de swap de 2GB
dd if=/dev/zero of=/swapfile bs=1M count=2048

# Ajustar permissões do arquivo
sudo chmod 600 /swapfile

# Transformar o arquivo no tipo swap
sudo mkswap /swapfile

# Ativar o swap no sistema
sudo swapon /swapfile

# Verificar se deu tudo certo
free -m
swapon -s

#Desativar o swap no sistema
sudo swapoff /swapfile

Espero que essa dica tenha sido útil, valeu!