Estou incluindo nesta mensagem colaborações e comentários de vários
leitores sobre mensagens veiculadas na Dicas-L:
Lista sobre software Microsiga
Linux Swap - Comentários
Backup Pessoal - Comentários
Gnu Linux Swap - Comentários
Fernando M. Roxo da Motta [<ss51 (a) ep-ba petrobras com br>]
> Linux Swap
> ---------------------------------------------------------------------
> Colaboracao: Ricardo [engel@ruralrj.com.br]
>
> Quando um usuario novato pretende instalar o Linux, a primeira
> coisa que e dita para nos e que temos que particionar o nosso HD (isto
===================8<---------------------------------
> No unix, temos os chamados dispositivos de loopback, que sao
> arquivos comuns em discos que podem ser "disfarcados" como um novo
> dispositivo de disco, como um CD-ROM, disquete ou um proprio HD. Muitos
> "queimadores" de CD-ROM criam uma imagem desse tipo no HD e depois
> copiam-na por completo para o CD. Igualmente se faz com um disco de boot
> (que e muito bem descrito no Bootdisk-HOWTO). Mas para voce usar um
> dispositivo loopback, tem que ter acionado esta opcao Kernel (que muitas
> distribuicoes o fazem por default). Para saber e so ver se aparece uma
> mensagem do tipo no texto do boot. No Kernel 2.2.14, a mensagem aparece
> assim: "". Caso nao apareca nem algo parecido na hora em que voce inicia o
^
Faltou a mensagem aqui.
> seu linux, e provavel que voce tenha que recompilar o kernel (que esta
> fora do escopo desta dica. Procure o Kernel-HOWTO para maiores
> informacoes).
De qualquer forma, é pouco provável que seja necessário recompilar o
cerne, as distribuições atuais trazem (praticamente) todos os recursos
disponíveis como módulos. Para ativar qualquer destas funcionalidades
basta carregar os módulos correspondentes. Estes módulos podem ser
carregados manualmente ou usando o suporte do cerne para a carga
automática. Para saber as configurações automáticas atuais podemos usar o
comando :
prompt$ /sbin/modprobe -c
# This file was generated by: modprobe -c (2.1.121)
path[misc]=/lib/modules/2.2.12-5cl
path[pcmcia]=/lib/modules/2.2.12-5cl
==============8<--------- trecho cortado ------------
alias iso9660 isofs
alias block-major-7 loop
alias block-major-8 sd_mod
alias block-major-11 sr_mod
==============8<--------- trecho cortado ------------
Veja o "loop" acima, ele corresponde ao dispositivo de bloco do "tipo 7":
prompt$ ls -l /dev/loop*
brw-rw---- 1 root disk 7, 0 May 5 1998 /dev/loop0
brw-rw---- 1 root disk 7, 1 May 5 1998 /dev/loop1
brw-rw---- 1 root disk 7, 2 May 5 1998 /dev/loop2
brw-rw---- 1 root disk 7, 3 May 5 1998 /dev/loop3
brw-rw---- 1 root disk 7, 4 May 5 1998 /dev/loop4
brw-rw---- 1 root disk 7, 5 May 5 1998 /dev/loop5
brw-rw---- 1 root disk 7, 6 May 5 1998 /dev/loop6
brw-rw---- 1 root disk 7, 7 May 5 1998 /dev/loop7
^ ^
| |
| +---- "tipo 7"
==-------------- Dispositivo de bloco.==
Se vale uma dica ( hmmm.... Vou ficar te devendo esta ;)) são poucas as
justificativas (hoje) para um usuário recompilar o cerne.
>
> Bem, com a certeza que voce tem essa opcao acionada o kernel,
> vamos para o proximo passo: desligar a sua area de swap (nao causa nenhum
> problema para a maquina. No maximo ela ficara um pouco mais lenta). Inicie
> uma sessao como usuario root e digite o seguinte comando:
>
> % swapoff -a
Hmmm.... Na verdade não há necessidade de desativar o "swap" para
estas experiências ( muito interessantes ), você pode ter vários
dispositivos de "swap" ativos ao mesmo tempo.
> Isso fara com que seu todas as particoes de swap sejam desligadas. Agora
> e a fase de criar o arquivo de swap:
>
> % dd if=/dev/zero of=/dev/swap bs=1k count=20k
>
> O comando "dd" faz uma copia bit-a-bit de um despositivo de origem (if)
> para o despositivo de destino (of). O parametro "bs" indica o tamanho de
=========================8<------------------------------
> de "megas" que voce quer e coloque um "k" depois do numero (p.ex
> count=100k).
>
> Agora nosso arquivo de swap ja esta criado, e so liga-lo. Edite
Antes de "ligá-lo" será preciso formatá-lo como uma
partição "swap" :
prompt# mkswap /dev/swap
Configurando versão do swapspace 0, tamanho = 20967424 bytes
> o arquivo /etc/fstab e procure a linha em que a palavra swap aparece e
> apague-a completamente (se voce quiser ficar com duas particoes de swap,
> nao precisa apagar). Agora so nos resta adicionar a linha para o arquivo
> que acabamos de criar (sem as aspas, por favor):
>
> "/dev/swap swap swap defaults,loop 0 0"
Aqui temos outro ponte de reparo, o Linux pode usar um arquivo de
"swap", em lugar de uma partição. Na verdade o sistema não vai usar a
informação "loop" da linha acima. Se a linha ficar :
/dev/swap swap swap defaults 0 0
Vai funcionar igualmente bem, já que o parâmetro "loop" é simplesmente
desprezado :
prompt# cat /etc/fstab
#
# Sistemas de arquivo nativos
/dev/hda1 / ext2 defaults 1 1
/dev/hda6 /home ext2 defaults 1 2
/dev/hda5 /usr/local ext2 defaults 1 2
#
# Sistemas de arquivo e arquivos de "swap"
/dev/hda2 swap swap defaults 0 0
/dev/swap swap swap defaults 0 0
#
# Outros sistemas de arquivos
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0
> E agora e so religar o swap com o comando "swapon -a". Assim, voce nao
> precisa nem reiniciar o linux para as alteracoes fazerem efeito.
prompt# free
total used free shared buffers cached
Mem: 63196 61244 1952 14020 15552 17848
-/+ buffers/cache: 27844 35352
Swap: 136544 13548 122996
prompt# swapon -a
swapon: /dev/hda2: Device or resource busy
prompt# free
total used free shared buffers cached
Mem: 63196 60664 2532 11324 15552 17928
-/+ buffers/cache: 27184 36012
Swap: 157020 13548 143472
Como pode ser visto eu não tive necessidade nem mesmo de desabilitar a
"partição" ativa de "swap". ;))
Para destivar um dispositivo/arquivo de "swap" em particular, basta usar
o comando "swapoff" :
prompt# swapoff /dev/swap
prompt# free
total used free shared buffers cached
Mem: 63196 60652 2544 11328 15552 17928
-/+ buffers/cache: 27172 36024
Swap: 136544 13548 122996
>
> Pronto! Voce agora tem um arquivo novinho em folha e pode ate se
> quiser apagar aquela particao do swap (eu usei a minha para colocar as
> contas dos usuarios la. Entao, na hora da inicializacao do linux,
> ele monta a particao do ex-swap no diretorio /home).
O ideal do "swap" é que ele nunca seja utilizado, já que acesso a disco
é muito mais lento que o acesso direto à memória, conforme Ricardo
<<engel (a) ruralrj com br>> já havia sugerido. Mas qual a diferença entre
"swap" em uma partição própria e em um arquivo. Um "swap" em um arquivo
comum, do sistema de arquivos nativo do Linux, precisará usar o método de
acesso deste (ext2) e mais uma simulação do método de acesso ao
dispositivo "swap". Em uma partição própria, formatada ( via 'mkswap' )
para isto, o sistema apenas usará o método de acesso para um dispositivo
de "swap". Eu não fiz nenhum teste, mas desconfio que uma partição
própria terá uma performance maior que um arquivo, e isto me faz preferir
uma partição.
De toda forma é interessante notar que em alguma situação especial um
arquivo de "swap" pode nos socorrer para correr algum processo
anormalmente grande. Não devemos esquecer, também, que os dispositivos de
"swap" não têm mais a limitação de 128M e que podemos ter vários
dispositivos de "swap" ativos ao mesmo tempo.