Aumentando a Memória de Swap no Linux via Arquivo

Tempo de leitura: 4 minutos

Basicamente, existem duas forma de se aumentar o espaço de swap no Linux, utilizando uma partição do seu HD para swap ou utilizando um arquivo. Nesse artigo vamos ver como podemos aumentar a memória de swap utilizando um arquivo para tal.

Pois bem, a curiosidade surgiu quando instalei o Elementary OS em meu laptop, que já estava com o Mint instalado. Utilizando o Elementary percebi que existia apenas a opção de suspender o laptop, mas não tinha disponível a opção de hibernar o computador e quando tentava forçar a hibernação via linha de comando (sudo pm-hibernate) eu recebia uma mensagem de memória de swap insufuciente.

Memória de Swap no Linux

Verificando a quantidade de memória no sistema obtive o resultado abaixo.

$ free -m
total used free shared buffers cached
Mem: 5876 2395 3481 0 15 865
-/+ buffers/cache: 1514 4362
Swap: 1905 170 1735

Ou seja, meu laptop estava com uma swap de 1.9G e sua memória RAM era de aproximadamente 6G. E aí estava o motivo pelo qual eu não estava conseguindo hibernar.

Lembrete – Suspender x Hibernar:
Suspender irá parar a operação de todas as aplicações e o estado do sistema é salvo na memória RAM. A máquina entra em modo de “baixa potência” e o sistema ainda necessita de uma fonte de alimentação. Para voltar a máquina em operação podemos utilizar vários gatilhos, entre eles pressionar qualquer tecla ou botão de ligar. O comando para colocar uma máquina linux no modo suspend é “sudo pm-suspend”.

Já ao hibernar o conteúdo é salvo na memória de swap e nesse modo o sistema não precisa de fonte de alimentação externa. Para colocar a máquina em operação novamente devemos utilizar o botão de liga/desliga, o que irá fazer com que o kernel recarregue todo o conteúdo da memória de swap. O comando para colocarmos uma máquina no modo hibernate é “sudo pm-hibernate”.

Bom, a solução então seria aumentar minha memória de swap. Só que eu não queria reparticionar meu HD e, então, optei por utilizar um arquivo como espaço de swap. Vamos ver como fazer???

Passo 01: Abrir o terminal como root

Passo 02: Criar um arquivo para ser utilizado como swap no tamanho desejado.
Aqui vamos utilizar o comando dd e criar um arquivo com o nome “meuswap” no diretório /root. Vou criar um arquivo de 6G, que quando somando aos meus 1.9G de swap atuais vão dar espaço suficiente para que o sistema possa ser hibernado.

dd if=/dev/zero of=/root/meuswap bs=1024 count=6291456

dica:
Como eu queria 6G de swap, count=6291456 (1024x1024x6)

root@alexei-elementary:~# dd if=/dev/zero of=/root/meuswap bs=1024 count=6291456

6291456+0 records in
6291456+0 records out
6442450944 bytes (6.4 GB) copied, 50.0641 s, 129 MB/s
root@alexei-elementary:~#
root@alexei-elementary:~# ls -l
total 6291460
-rw-r–r– 1 root root 6442450944 Apr 22 16:52 meuswap
root@alexei-elementary:~#

Passo 03: Agora vamos definir esse arquivo para ser utilizado como swap.

root@alexei-elementary:~# mkswap meuswap
Setting up swapspace version 1, size = 6291452 KiB
no label, UUID=289f77c0-8f31-4b72-b446-072bb8c5fa18
root@alexei-elementary:~#

Passo 04: Configurar as permissões corretas. Dessa forma garantimos que somente o root poderá ler/escrever nesse arquivo de swap.

root@alexei-elementary:~# chown root:root meuswap
root@alexei-elementary:~# chmod 0600 meuswap

Passo 05: Finalmente, vamos ativar esse arquivo como espaço de swap.

root@alexei-elementary:~# swapon meuswap

Passo 06: Por último, mas não menos importante, vamos tornar essa partição de swap ativa ao reinicializarmos o sistema.

Para isso, vamos alterar o arquivo /etc/fstab. Basta abrir com o seu editor preferido e adicionar a linha abaixo. Veja como ficou meu arquivo /etc/fstab.

# arquivo de swap no diretorio root
/root/meuswap swap swap defaults 0 0

E pronto…nosso sistema já está com um espaço maior de swap e agora deverá ser possível hibernar o sistema. Para verificar, basta utilizarmos o comando free novamente.

root@alexei-elementary:~# free -m
total used free shared buffers cached
Mem: 5876 5720 155 0 8 3995
-/+ buffers/cache: 1716 4159
Swap: 8049 161 7888
root@alexei-elementary:~#

Ainda podemos também conferir como o sistema utiliza o swap, para isso utilizamos o comando swapon com a opção -s. Veja abaixo que temos nossa partição de swap original de 1.9G e nosso arquivo que acabamos de criar com 6G.

root@alexei-elementary:~# swapon -s
Filename Type Size Used Priority
/dev/sda6 partition 1951740 165384 -1
/root/meuswap file 6291452 0 -2
root@alexei-elementary:~#

Espero que a dica seja útil. Abraços…

DLTEC ACESSO PREMIUM

Acesse o curso “Linux Essentials” em nossa área premium.

Aprenda como dar seus primeiros passos no Linux e a dominar a linha de comandos (CLI).

Clique aqui para ativar o curso!

Não é membro premium? Clique aqui e saiba mais sobre a DlteC Premium.

Sobre Alexei C Tavares

Graduado em Engenharia Eletrônica/Telecomunicações pela UTFPR, é Co-Fundador da DlteC do Brasil e trabalha com Telecomunicações e Redes desde 1997. É autor de livros, tais como Roteadores e Switches - Guia para Certificação CCNA e CCENT - 2a. Edição.

Fique em contato através das redes sociais - Facebook, Google+.

  • Ewerton Silva

    Muito bom!