segunda-feira, 6 de agosto de 2012

Redimensionar a SWAP

De forma bem simplória, entenda que a memória SWAP no Linux é uma memória RAM no HD. Ou seja, o sistema separa um espaço no HD para fins de utilização similar à memória RAM do micro. Certamente, se houver necessidade de utilizar essa memória para atender uma alta demanda de recursos de memória, o sistema ficará, em geral, mais lento - pense que ao invez do sistema utilizar a memória RAM para guardar dados voláteis, ele estará utilizando o HD. Geralmente separamos algo em torno de duas vezes o tamanho da RAM de SWAP. Esse processo é realizado na formatação do sistema. Mas o que ocorre quando precisamos aumentar esse espaço SWAP? Formatar o micro? Não! Esse é o objetivo deste tutorial: mostrar como podemos redimensionar o espaço destinado à SWAP sem precisar formatar o computador.

Material
O conteúdo deste estudo foi retirado de:

Quanto temos de SWAP?
Podemos buscar essa informação de várias formas:
Como root, execute:

cat /proc/meminfo

A linha SwapTotal irá apresentar (em KB) o total de memória SWAP disponível (configurado).
Podemos também utilizar o comando (como root):

fdisk -l

Neste caso, são mostradas todas as partições. Aquele que possuir o Sistema de Arquivos igual à "Linux swap / Solaris" representa a partição definida para a memória SWAP. Pela coluna Blocos, obtemos o tamanho.
A forma mais simples, é através do comando free (como root):

free

Neste caso, a coluna total mostra o tamanho. No meu caso particular, tenho 979924 KB de SWAP. Quero estendê-la para no mínimo 1024 MB - exigência da instalação do Oracle Express Edition 10g que vou instalar no sistema (clique aqui e veja como instalar este aplicativo).

Configurações iniciais
Vamos criar um diretório no sistema com objetivo de utilizá-lo para SWAP space. Por opção, criei um diretório em /mnt. Este diretório, por definição, seria utilizado para pontos de montagem de partições e dispositivos do sistema (junto com o /media). Talvez você não ache conveniente indicar nele, um espaço para armazear a SWAP. Eu preferi criá-lo ali por organização própria. Fique à vontade para definir outro caminho - pode-se inclusive, utilizar o /. Utilize como root, os comandos abaixo (adaptando-os de acordo com sua preferência):

cd /mnt/
mkdir swap

Pronto. Vamos à criação da mesma.

Redimensionar a SWAPPossuo 979924 KB. Pretendo ter no mínimo 1024 MB (1048576 KB). Então, para ficar com um pouco mais, optei em adicionar 579 MB (592940 KB). Ou seja, ficarei com 1572864 KB (aproximadamente 1536 MB, igual a 1024 MB + 512 MB). O que é suficiente para minha necessidade.
Para criar a SWAP adicional, execute (como root) os seguinte comandos (Atenção,  o conteúdo em itálico cinza representa a saída do sistema - não digite-o):

cd /mnt/swap
dd if=/dev/zero of=/mnt/swap/swapfile bs=1024 count=592940
592940+0 registros entrando
592940+0 registros saindo
607170560 byte (607 MB) copiados, 20,6878 s, 29,3 MB/s
mkswap /mnt/swap/swapfile
Configurando área de troca versão 1, tamanho = 607166 kB
sem rótulo, UUID=2f6ef4f9-9ef1-47f0-b03d-57b7c863b360
swapon /mnt/swap/swapfile

Pronto. Basicamente, no comando dd, "of" indica o diretório onde será configurada a SWAP e "count" a quantidade a ser configurada em KB.
Para conferir, digite (como root):

free

No meu caso, como esperado, obtive 1572856 KB de SWAP (1536 MB). O seu resultado poderá variar de acordo com a quantidade que você configurou. Essa configuração não ficará estática no sistema. Ela permenecerá enquanto o mesmo estiver ligado. Para mantê-la válida após o boot, precisaremos configurar o arquivo de partições.

Redimensionar a SWAP (permanentemente - na verdade, para torná-la fixa após o boot)
As configurações dos pontos de montagem na inicialização do sistema são feitas no arquivo /etc/fstab. Para configurar o redimensionamento da SWAP de forma estática, também utilizaremos esse arquivo. Com o editor "vi" (ou outro de sua preferência), execute:

vi /etc/fstab

Meu arquivo /etc/fstab é exatamente igual ao mostrado abaixo:

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/sda7 /mnt/arquivos ext3 defaults 0 0
# /dev/sda4
UUID=f3711610-08ac-4b62-ab87-b3d0f3ed7c4b / ext3 relatime,errors=remount-ro 0 1
# /dev/sda6
UUID=6261c84e-9d17-4090-b828-c6773e1a91ff none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0

Observe que na nona linha, temos o comando de configuração da memória SWAP default. Devemos acrescentar a linha abaixo logo após a linha de configuração da SWAP.

/mnt/swap/swapfile swap swap defaults 0 0

Isso significa que meu arquivo /etc/fstab ficará:

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/sda7 /mnt/arquivos ext3 defaults 0 0
# /dev/sda4
UUID=f3711610-08ac-4b62-ab87-b3d0f3ed7c4b / ext3 relatime,errors=remount-ro 0 1
# /dev/sda6
UUID=6261c84e-9d17-4090-b828-c6773e1a91ff none swap sw 0 0
/mnt/swap/swapfile swap swap defaults 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0

Após essa configuração, salve o arquivo (se tratando do vi, ESC+:wq+ENTER). Agora a configuração permanecerá mesmo após o micro ser reiniciado.

"Às vezes é melhor ser o rabo da baleia que a cabeça da formiga.", Eike Batista
Att, Guilherme Pontes

Nenhum comentário:

Postar um comentário