O uso de Wacky para Raid, /dev/ram, e ramfs

ArticleCategory:

Kernel Corner

AuthorImage:

[Photo of the Author]

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]

[illustration]

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:

  1. MAU: O tamanho do ramdisk � fixo ao arrancar com o computador.
  2. BOM: Pode formatar a ramdisk do modo que desejar.
  3. 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.
  4. BOM: Pode ter mais do que ramdisk ao mesmo tempo.
O Novo ramdisk "ramfs":
  1. MAU: N�o consegui formatar de outro modo que n�o o predefinido. Est� na camada VFS, ou que isto quer dizer.
  2. BOM: Pode ter mais do que um.
  3. BOM: Pode alterar o seu tamanho m�ximo na linha de comandos.
  4. 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.
  5. 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.

  1. 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.
  2. 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.
  3. 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.
  1. 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.
  2. 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.
  3. 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.
  1. Quero ver se consigo utilizar o ramfs e raid num disco r�gido.
  2. Se o conseguir fazer, ent�o que seja um raid s� de leitura isolado das outras parti��es.
  3. 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:
  4. 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

  1. kernel/v2.4/patch/patch-2.4.3-ac2/linux.ac_Documentation_filesystems_ramfs.txt.html
  2. http://genericbooks.com/LDP/HOWTO/Software-RAID-HOWTO.html
  3. Optimizando a velocidade de pequenas base de dados no Linux
  4. Como usar o ramdisk no Linux
  5. 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