O uso de Wacky para Raid, /dev/ram, e ramfs
ArticleCategory:
Kernel Corner
AuthorImage:
![[Photo of the Author]](../../common/images/Mark-Nielsen.jpg)
TranslationInfo:[Author and translation history]
original in en Mark
Nielsen
en to pt Bruno Sousa
AboutTheAuthor:
O Mark trabalha como um consultor independente doando o seu tempo a
causas como GNUJobs.com, escrevendo artigos, escrevendo software livre e
trabalhando como volunt�rio em eastmont.net.
Abstract:
O RamFs � um sistema de ficheiro com alguns aspectos interessantes.
� uma coisa nova no Kernel 2.4.
ArticleIllustration:[This is the title picture for your
article]
ArticleBody:
Introdu��o ao RamDisk
Por Favor, veja o meu artigo original acerca do velha ramdisk. Est�
localizado aqui: Linuxfocus: November1999/article124.html
N�o entrarei em detalhes acerca do velho estilo do ramdisk neste
artigo.
O que � o RamDisk? A RamDisk � uma por��o de mem�ria que pode alocar
para usar como uma parti��o. Ou, por outras palavras, pode tirar um pouco
da sua mem�ria e pretender que � um disco r�gido que pode formatar, montar,
guardar ficheiros, etc.
Existem dois tipos de ramdisk que falaremos acerca de. O primeiro �
o ramdisk que pode formatar e montar. O segundo � um ramdisk que n�o pode
formatar, mas tem algumas especifica��es simp�ticas. Eis aqui um detalhe:
A velha abordagem de /dev/ram1:
- MAU: O tamanho do ramdisk � fixo ao arrancar com o computador.
- BOM: Pode formatar a ramdisk do modo que desejar.
- MAU: Uma vez formatado (N�o acredito que o tenha de montar),
consome uma por��o de mem�ria e n�o estou certo como a pode reaver.
- BOM: Pode ter mais do que ramdisk ao mesmo tempo.
O Novo ramdisk "ramfs":
- MAU: N�o consegui formatar de outro modo que n�o o predefinido.
Est� na camada VFS, ou que isto quer dizer.
- BOM: Pode ter mais do que um.
- BOM: Pode alterar o seu tamanho m�ximo na linha de comandos.
- MUITO BOM: S� utiliza a mem�ria que necessita. Por outras
palavras pode ter alocados 64 megas de ram, mas se s� tem ficheiros de 2k
nela, s� usar� 2k de mem�ria. Mal um ficheiro seja apagado fica logo com
mais mem�ria para o seu computador.
- MAU: N�o � bem por culpa sua. N�o caia no erro de preenchar
dois ramdisks ramfs sen�o esgotar� toda a sua mem�ria. Mais acerca
disto.
Como usar o RamDisk do velho modo
Por favor leia o artigo: Como usar a Ramdisk para Linux.
Para usar as ramdisks para os kernels 2.0 e 2.2, digite os seguintes
comandos:
mkfs -t ext2 /dev/ram1
mkdir -p /RAM1
mount /dev/ram1 /RAM1
como root, e est� feito. Em muitos sistemas o tamanho est� limitado
para 4 megs. Mas isto pode ser alterado na altura de arranque ou se
recompilar o Kernel, mas leia o meu artigo para tal. Pode adicionar ainda
mais como isto,
mkfs -t ext2 /dev/ram2
mkdir -p /RAM2
mount /dev/ram2 /RAM2
Como usar o RamDisk com o ramfs para o kernel 2.4
Primeiro de tudo, Eu assumo que possui o Kernel 2.4 com o ramfs
compilado nele. A maioria das distribui��es que usam o novo kernel 2.4
devem ter o ramfs compilado nelas. Eu utilizei o RedHat 7.1 para este
artigo.
Muito simples. Crie um direct�rio e monte nele o ramfs.
mkdir -p /RAM1
mount -t ramfs none /RAM1
Se pretende um segundo, muito simples. Crie o direct�rio e monte nele o
ramfs.
mkdir -p /RAM2
mount -t ramfs none /RAM2
Alterando o tamanho dos ramdisks e outras op��es.
Aqui est� um exemplo em como fazer um ramdisk de 10 meg.
mkdir -p /RAM1
mount -t ramfs none /RAM1 -o maxsize=10000
Tirado directamente de
http://www.linuxhq.com/kernel/v2.4/patch/patch-2.4.3-ac2/linux.ac_Documentation_filesystems_ramfs.txt.html
+ ramfs - Um sistema de ficheiro que permite um ajuste autom�tico da
+mem�ria
+
+
+ Ramfs � um sistema de ficheiros que conserva todos os ficheiros na RAM.
+ Permite acessos de leitura-escrita. Em contraste ao discos RAM, que
+ alocam uma quantidade fixa de RAM, ramfs adapta-se ao seu conte�do.
+
+ Pode montar o ramfs com:
+ mount -t ramfs none /mnt/wherever
+
+ Depois � s� criar e usar os ficheiros. Quando o sistema de ficheiros �
+ desmontado, todo o seu conte�do � perdido.
+
+ NOTE! Este sistema de ficheiros � provavelmente muito �til n�o como um
+ sistema de ficheiros real mas como um exemplo do funcionamento dos
+ sistemas de ficheiro virtuais pode ser escrito.
+
+Limites de Recursos:
+
+ Por defeito um ramfs ser� limitado para usar metade da mem�ria (f�sica)
+ para armazenar o conte�do de ficheiros, e mais um bit para os metadados
+ inclu�dos. A utiliza��o dos limites dos recursos do ramfs podem ser
+ controlados com as seguintes op��es de montagem:
+
+ maxsize=NNN
+ Define o m�ximo de mem�ria utilizada pelo sistema de
+ ficheiros para NNN kilobytes. Este ser� arredondado por defeito para um
+ m�ltiplo do tamanho de p�gina. Por defeito � metade da mem�ria f�sica. NB.
+ ao contr�rio de outros limites, definindo-o para zero n�o limita nada, mas
+ limitar� o limite actual do sistema de ficheiros de dados para zero
+ p�ginas. Pode haver uso disto numa situa��o perversa.
+
+ maxfilesize=NNN
+ Define o tamanho m�ximo de um simples ficheiro num sistema
+ de ficheiros para NNN kilobytes. Ser� arredondado para um m�ltiplo do
+ tamanho da p�gina. Se NNN=0 n�o existe limite. Por defeito n�o existe
+ limite.
+
+ maxdentries=NNN
+ Define o n�mero m�ximo de entradas (liga��es f�sicas) de
+ direct�rios no sistema de ficheiros para NNN. Se NNN=0 ent�o n�o existe
+ limite. Por defeito est� definido para maxsize/4.
+
+ maxinodes=NNN
+ Define o n�mero m�ximo de inodes (ficheiros distintos) no
+ sistema de ficheiros para NNN. Se NNN=0 n�o existe limite. Por defeito n�o
+ h� limite (mas nunca pode haver mais inodes que dentries).
Correndo Servi�os no Ramdisk
Tive uma ideia. Escute-me com aten��o. N�o seria bom se pudesse correr
os seus servi�os (como um servidor web, um servidor de base de dados, ou um
servidor DNS) na ramdisk? Normalmente, um servidor web padr�o n�o tem
ficheiros muito grandes incorporados. Normalmente, um servidor DNS n�o tem
muitos ficheiros nele. Pode at� p�r um servidor de base de dados na
mem�ria, s� precisa de armazenar a informa��o tempor�ria.
A Ram est� mais barata estes dias. Eu comprei recentemente 128 megas
por $120 e imagino que o pre�o vai continuar a descer. Para 128 megas, eu
posso facilmente carregar os meus servidores neles. Se o meu servidor web
n�o tem ficheiros grandes, eu posso configurar o http.conf para procurar
noutro direct�rio que n�o o ramdisk. O servidor de DNS � muito pequeno. O
meu maior servidor de base de dados tem s� 28 megas. Considerando o facto
de voc� conseguir 1 giga de mem�ria de computador estes dias muito barato,
eu penso que seria extraordin�rio correr tudo que tenho na ram. O �nico
truque com o servidor de base de dados � que deve guardar todas as
modifica��es para um servidor de base de dados � parte antes de escrever
para o servidor na ram. Isto � lento, mas considerando que a maior parte do
tempo � passado a ler e n�o a escrever, devia melhorar a performance.
Talvez se consegu�ssemos fazer mirror de um ramdisk para um disco r�gido.
Eu j� expliquei isto num meu outro artigo, por favor leia-o aqui:
http://www.gnujobs.com/mark/articles/Ramdisk.html#Example.
Substitua somente estes comandos
### Make the ramdisk partitions
/sbin/mkfs -t ext2 /dev/ram0
/sbin/mkfs -t ext2 /dev/ram1
/sbin/mkfs -t ext2 /dev/ram2
### Mount the ramdisks to their appropriate places
mount /dev/ram0 /home/httpd/cgi-bin
mount /dev/ram1 /home/httpd/icons
mount /dev/ram2 /home/httpd/html
por estes comandos (aumente o n�mero se os 10 megas n�o s�o
suficientes):
mount -t ramfs none /home/httpd/cgi-bin -o maxsize=10000
mount -t ramfs none /home/httpd/icons -o maxsize=10000
mount -t ramfs none /home/httpd/html -o maxsize=10000
O Ramdisk e o Raid
Porqu� combinar uma parti��o do disco r�gido e um ramdisk numa parti��o
raid? N�o sei. Mas talvez haja um uso ao longo da sua continua��o. Sistemas
operativos inteligentes n�o evitam algo s� por n�o ter benef�cio imediato.
Isto � porque muitos sistemas operativos comerciais est�o a tornar-se
impopulares e porque o software livre est� a substituir aplica��es escritas
por idiotas interessados no dinheiro e n�o na tecnologia.
Existem tr�s problemas ao combinar um ramdisk com uma parti��o do
disco r�gido.
- N�o sei como faz�-lo com a ramfs, mas posso faz�-lo com o
/dev/ram. Talvez se conseguisse formatar uma parti��o do disco r�gido com o
sistema de ficheiros que o ramfs utiliza, conseguia faz�-lo. N�o tenho
ideia o que � o VFS e, provavelmente estud�-lo-ei mais tarde.
- Se o raid est� em mirror paralelo, ent�o a velocidade extra da
mem�ria n�o ajudar�. N�o sei se � poss�vel fazer um raid em mirror para ser
s� de leitura a partir do ramdisk, em cada caso, se for poss�vel, haver�
benef�cios.
- Ap�s o reboot, tem de reconstruir o ramdisk.
No sentido de configurar o raid eu configurei o meu /etc/raidtab como
este.
raiddev /dev/md3
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/hdb6
raid-disk 1
device /dev/ram3
raid-disk 0
E depois executei,
mkraid /dev/md3
mkfs -t ext2 /dev/md3
mkdir -p /RAID1
mount /dev/md3 /RAID1
Problema, at� ao reboot, o ramdisk fica confuso. Ent�o no reboot,
on reboot,
raidstart /dev/md3
raidhotadd /dev/md3 /dev/ram3
mount /dev/md3 /RAID1
Agora lembre-se, se n�o configurou o seu velho ramdisk para ser maior
que 4 megas, � escusado que a parti��o do disco r�gido seja superior a 4
megas.
Seria bom ter um raid em mirror com 3 parti��es. 1 sendo a ramdisk
e 2 sendo as parti��es do disco r�gido e a ramdisk � s� de leitura para os
ciclos de leitura. N�o sei se � poss�vel isolar uma das parti��es raid para
ser s� de leitura, mas se conseguisse seira bom.
Coment�rios
Esta �, provavelmente, a sec��o mais importante deste artigo. Eu adoro
o Linux porque lhe permite atirar-se para os riscos. N�o existe nada como a
dor porque lhe permite aprender.
- Por Defeito o Ramfs � metade da mem�ria f�sica (sem contar com o
espa�o swap). Ent�o se criar duas coisas destas e as preencher, o seu
computador ficar� sem mem�ria e bloquear�, como o meu fez. POR FAVOR
especifique a quantidade m�xima de mem�ria que o ramdisk deve ter, como
descrito em cima.
- Eu acredito que o ramfs � o seu pr�prio sistema de ficheiros e
n�o ext2, ent�o se copiar ambos os sentidos com o rsync ou tar, n�o
espere que tenham o mesmo tamanho. De resto n�o deve notar grandes
diferen�as, mas como n�o � ext2, as propriedades podem ser diferentes
nalguns n�veis.
- Estive a ler a documenta��o para o ramfs no kernel e n�o parece
que o ramfs foi desenhado para uso geral, mas n�o vejo porqu�. Trabalha do
modo que eu quero.
Eu ainda n�o terminei os ramdisks.
- Quero ver se consigo utilizar o ramfs e raid num disco r�gido.
- Se o conseguir fazer, ent�o que seja um raid s� de leitura
isolado das outras parti��es.
-
P�r um servi�o como um servidor web, na ramdisk com raid. O Truque �
utilizar o raid, para o caso de ocorrer alguma altera��o voc� n�o a perca.
� por isto que o raid � estupidamente importante para mim ---- Conseguirei
por servi�os na ram SEGURAMENTE e adquirir toda a performance da velocidade
da mem�ria sobre o disco r�gido assumindo:
- Que consigo p�r o raid a ler somente da parti��o do ramdisk e
n�o de outra.
- Ler ficheiros a partir de um disco r�gido s�o postos na
cache. E s� se s�o retirados da cache � que notar� uma diferen�a na
velocidade. Tamb�m o arranque inicial � mais r�pido, a primeira vez que o
ficheiro � lido.
- Pode utilizar o servidor web constru�do nos novos kernels.
Devem rodar r�pido tamb�m. Talvez combin�-lo com a ramdisk?
- Definindo o computador para arrancar a partir do cdrom, iniciar um
servi�o e fazer download atrav�s da rede. N�o � preciso disco r�gido. Isto
era bom. Ent�o opte ter um servidor web (ou algo do g�nero) a correr num
computador sem disco r�gido, somente com um cdrom e mem�ria. Se aumentar a
mem�ria do seu sistema para 1 giga, n�o vejo porque � que n�o corre todo o
seu sistema a partir do cdrom. Isto seria bom por raz�es de seguran�a.
Reinicie o computador, fa�a-o carregar as altera��es de uma fonte segura,
ent�o inicie os servi�os e o seu computador est� bom, "limpo" e livre de
piratas. O servidor web nunca deve guardar as altera��es para o computador
local, mas guardar os logs e informa��o para um computador � parte, numa
liga��o segura, ou numa rede interna. Eu fiz cdroms de arranque de network
com o ramdisk no passado. Seria simp�tico combinar o meu primeiro projecto
para alcan�ar isto.
Recursos
-
kernel/v2.4/patch/patch-2.4.3-ac2/linux.ac_Documentation_filesystems_ramfs.txt.html
- http://genericbooks.com/LDP/HOWTO/Software-RAID-HOWTO.html
- Optimizando a
velocidade de pequenas base de dados no Linux
- Como usar o ramdisk no
Linux
- Neste artigo as altera��es ficaram dispon�veis aqui:
http://www.gnujobs.com/Articles/21/Ramdisk2.html
Obrigado � Katja pela ajuda!
Copyright © 4/2001 Mark Nielsen
Vers�o do Artigo 1.3 : Data da �ltima modifica��o Sat May 19
06:04:06 2001