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.
Para ver a partição swap ativa, execute:
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:
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.
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:
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
.
Para criar um arquivo de troca de 1 GB, use este comando:
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.
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:
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Para verificar se o novo arquivo de troca está em uso, execute:
swapon -s
A saída deve ser algo assim:
Filename Type Size Used Priority
/swapfile file 5242876 0 -2
/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:
sudo nano /etc/fstab
E neste arquivo adicione a seguinte linha:
/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:
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:
sudo update-initramfs -u
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
How To Use A Swap File Instead Of A Swap Partition On Linux