Como usar um arquivo de troca em vez de uma partição de troca no Linux

10 de dezembro de 2020

Este artigo explica como fazer a transição de uma partição de troca para um arquivo de troca. Se você não precisa desabilitar nenhuma partição swap existente e tudo que você precisa é criar um arquivo swap e ativá-lo, simplesmente pule as etapas 1 e 2.

No meu desktop Ubuntu 18.04, eu tinha uma partição de swap bastante grande que queria usar para outros propósitos e mover a swap para um arquivo. O Ubuntu 18.04 já usa um arquivo de troca por padrão em vez de uma partição de troca, no entanto, eu atualizei para a última versão do Ubuntu em vez de fazer uma instalação limpa, então meu sistema continuou a usar uma partição de troca. Portanto, eu mesmo tive que mover a troca para um arquivo.

Como resultado, as instruções abaixo foram testadas em meu desktop Ubuntu 18.04. Eles devem funcionar em qualquer distribuição Linux.

É importante mencionar que você não pode usar um arquivo de swap com um sistema de arquivos BTRFS (obrigado a Isaac por mencionar isso nos comentários).

Além disso, hibernar (para o disco) não funcionará mais fora da caixa ao usar um arquivo de troca. Isso pode ser feito, mas não posso testá-lo porque retomar da hibernação não funcionava no meu sistema antes de alternar para um arquivo de swap, então desisti de usar a hibernação. Além do mais, a maioria das distribuições Linux usa suspender (para RAM) em vez de hibernar (para disco) por padrão. Se você precisa habilitar a hibernação com um arquivo de swap, há algumas informações aqui. Suspender (para ram) não é afetado por isso.

Como mover a troca para um arquivo em seu sistema de arquivos Linux

1. Desligue sua partição swap atual

Para ver a partição swap ativa, execute:

Comandos para usar no terminal

swapon -s

A saída do comando é assim no meu caso:

Filename    Type        Size       Used   Priority
/dev/sda5   partition   15624188   0      -2

Agora você pode desligar o dispositivo de troca atual usando este comando:

Comandos para usar no terminal

sudo swapoff /dev/sdXX

Onde /dev/sdXX é o dispositivo listado pelo comando swapon -s (na seção Nome do arquivo - /dev/sda5 no meu caso do exemplo acima), portanto, certifique-se de substituí-lo pela partição swap.

2. Remova sua entrada de troca antiga do arquivo/etc/fstab

Para remover a entrada de troca antiga, abra o arquivo /etc/fstab como root com um editor de texto e remova a linha de troca. Não modifique mais nada no arquivo /etc/fstab! Alterar qualquer outra coisa neste arquivo pode impedir o sistema de inicializar!

Você pode abrir o arquivo com o editor Nano a partir da linha de comando, assim:

Comandos para usar no terminal

sudo nano /etc/fstab

E remova a entrada que contém as informações da partição swap (você também pode comentar a linha adicionando um # na frente dela). Por exemplo, no meu caso, a entrada de troca se parece com isto:

UUID=d1b17f9c-9c5e-4471-854a-3ccaf358c30b none swap sw 0 0

Como você pode ver, a entrada de troca deve conter swap e sw - é assim que você sabe qual linha remover (ou comentar).

Em seguida, pressione Ctrl + O e, em seguida, Enter para salvar o arquivo. Para sair do editor Nano após salvar o arquivo, pressione Ctrl + X.

3. Crie um arquivo de troca

Para criar um arquivo de troca de 1 GB, use este comando:

Comandos para usar no terminal

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Onde:

  • /swapfile é o caminho e o nome do arquivo de troca. Você pode alterar isso para outra coisa.

  • o número após count (1048576) é igual a 1 GB. Aumente-o se quiser usar um arquivo de troca maior. Por exemplo, multiplique esse número por 5 se quiser usar um arquivo de permuta de 5 GB (portanto, use 5242880 como o valor count= para um arquivo de permuta de 5 GB).

Se você usar um caminho e nome de arquivo de troca diferente, certifique-se de usá-lo em vez de /swapfile em todas as instruções a seguir.

4. Defina a permissão de troca de arquivo para 600

Use isso para que outros usuários não consigam ler seu arquivo de troca, que pode conter informações confidenciais.

Para definir a permissão de troca de arquivo para 600, use este comando:

Comandos para usar no terminal

sudo chmod 600 /swapfile

5. Formate o arquivo recém-criado como swap

Comandos para usar no terminal

sudo mkswap /swapfile

6. Ative o arquivo de troca recém-criado

Comandos para usar no terminal

sudo swapon /swapfile

Para verificar se o novo arquivo de troca está em uso, execute:

Comandos para usar no terminal

swapon -s

A saída deve ser algo assim:

Filename    Type   Size      Used   Priority
/swapfile   file   5242876   0      -2

7. Adicione o arquivo de troca recém-criado a /etc/fstab

Para usar o novo arquivo de troca sempre que inicializar, você precisará adicioná-lo ao arquivo /etc/fstab. Abra /etc/fstab com um editor de texto (como root) como o Nano:

Comandos para usar no terminal

sudo nano /etc/fstab

E neste arquivo adicione a seguinte linha:

Comandos para usar no terminal

/swapfile none swap sw 0 0

Para salvar o arquivo (se você usou o editor de linha de comando do Nano), pressione Ctrl + O e Enter. Para sair do editor Nano depois de salvar o arquivo, pressione Ctrl + X. Novamente, lembre-se de não modificar mais nada no arquivo /etc/fstab! Alterar qualquer outra coisa neste arquivo pode impedir o sistema de inicializar!

8. Esta etapa é necessária para distribuições Linux baseadas em Ubuntu e Debian (não tenho certeza se outras pessoas também precisam disso). O arquivo mencionado abaixo existe apenas se você hibernou seu sistema pelo menos uma vez, então você pode pular esta etapa se não o tiver.

Você precisa editar o arquivo /etc/initramfs-tools/conf.d/resume e comentar (adicionar um # no início da linha) a linha RESUME=UUID=.... No meu caso, não fazer isso resultou em cerca de 15-20 segundos de tempo extra de inicialização. O comando systemd-analyze blame não deu nenhuma informação sobre por que isso está acontecendo, então eu tive que pesquisar um pouco para descobrir que é isso que está causando o atraso na inicialização.

Felizmente, notei uma mensagem "Gave up waiting for suspend/resume device" sendo exibida por um breve momento durante a inicialização, o que pode ser causado por não ter o UUID de troca correto em /etc/initramfs-tools/conf.d/resume.

Este arquivo é usado ao retomar da hibernação e causou atrasos na inicialização porque não temos mais uma partição swap.

Para comentar esta linha em /etc/initramfs-tools/conf.d/resume, tudo que você precisa fazer é executar o comando abaixo:

Comandos para usar no terminal

sudo sed -i 's/^RESUME=UUID/#RESUME=UUID/g' /etc/initramfs-tools/conf.d/resume

Você também precisará atualizar o initramfs e depois disso:

Comandos para usar no terminal

sudo update-initramfs -u

Esse post foi traduzido do site LinuxUprising.com pela rtland.team.

Linux Uprising Blog

Confira a versão original desse post em inglês:

How To Use A Swap File Instead Of A Swap Partition On Linux
Propaganda
Propaganda