[LinuxFocus-icon]
Início  |  Mapa  |  Índice  |  Procura

Novidades | Arquivos | Links | Sobre LF
Este artigo está disponível em: English  Castellano  Deutsch  Francais  Nederlands  Portugues  Russian  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
por Mark Nielsen

Sobre o autor:
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.
Conteúdo:

 

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

[illustration]

Abstrato:

O RamFs é um sistema de ficheiro com alguns aspectos interessantes. É uma coisa nova no Kernel 2.4.



 

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

 

Forma de respostas para este artigo

Todo artigo tem sua própria página de respostas. Nesta página você pode enviar um comentário ou ver os comentários de outros leitores:
 página de respostas 

Páginas Web mantidas pelo time de Editores LinuxFocus
© Mark Nielsen, FDL
LinuxFocus.org

Clique aqui para reportar uma falha ou para enviar um comentário para LinuxFocus
Informação sobre tradução:
en -> -- Mark Nielsen
en -> pt Bruno Sousa

2001-09-05, generated by lfparser version 2.17