Usando Disco RAM com Linux :: Admirável Mundo Novo




Muito Bem Vindo

Prezado Leitor, a proposta desse Blog é compartilhar conhecimento com as pessoas que trabalham com Linux, Asterisk, OpenSER, e com tecnologia de voz sobre a rede IP em geral, através de tutoriais, dicas, howto, notícias entre outros assuntos.

Atente para termo de uso do conteúdo do blog no rodapé da página.

quarta-feira, 30 de julho de 2008

Usando Disco RAM com Linux



Da mesma forma que as duas opções tmpfs e ramfs já publicada aqui, o disco RAM ou RAM disk, é o mecanismo do Linux que permite criar discos virtuais na memória física de modo que um sistema em produção pode ganhar peformance pelo simples fato de não precisar fazer muito I/O com o disco rígido.

Isso é muito útil no Asterisk quando você usa ele como URA e até mesmo quando voce usa-o como PABX que toca bastante guia ou prompt de voz.

O método a escolher depende do gosto do cliente. Sinta-se a vontade para escolher o seu ...

O conteúdo de ajuda a seguir está conforme aparece nos fontes do Linux.



Usando o dispositivo de bloco RAM disk com Linux



/Documentation/ramdisk.txt

----------------------------------------


Conteúdo:


1) Visão Geral

2) Parâmetros da Linha de Comando do Kernel

3) Usando o comando “rdev -r"

4) Um Exemplo de Criação de um RAM Disk Comprimida



1) Visão Geral

--------------------


O driver do RAM disk é uma forma de usar a memória principal do sistema como um dispositivo de bloco. É exigido pelo initrd, um sistema de arquivo de início usado se você precisa carregar os módulos a fim de acessar o sistema de arquivo root (veja Documentation/initrd.txt). Pode também ser usado como um sistema de arquivo temporário para funcionamento do crypto, desde que os conteúdos sejam apagados no reboot.


O RAM disk cresce dinamicamente quando mais espaço é requerido. Ele faz isso usando a RAM a partir do cache buffer. O driver marca os buffers que ele está usando como demarcados de sorte que o subsistema VM não tentará reclamá-los depois.


Também, o driver RAMdisk suporta até 16 RAMdisks brilhantemente, e pode ser reconfigurados para suportar até 255 RAMdisks – alterando-se a linha "#define NUM_RAMDISKS" no arquivo fonte drivers/block/rd.c. Para usar o suporte à RAM disk com o seu sistema, execute './MAKEDEV ram' a partir do diretório /dev. Todos os RAM disks tem número major 1, e starta com o número minor 0 para o /dev/ram0, etc. Se for usado, os kernels modernos usam o /dev/ram0 para um initrd.


O parâmetro antigo "ramdisk=" foi alterado para "ramdisk_size=" para tornar mais claro. O "ramdisk=" original foi mantido para contornar as questões de compatibilidade, mas ele pode ser retirado no futuro.


O novo diver RAMdisk também tem a capacidade de carregar imagens comprimidas da RAMdisk, permitindo espremer mais programas numa instalação mediana ou em um disco flexível de restauração.




2) Parâmetros de Linha de Comando do Kernel

---------------------------------------------------------------------------------


ramdisk_size=N

==============


Esse parâmetro diz ao driver do RAM disk para definir o tamanho de N KBytes das RAMdisks. O padrão é 4096 (4 MB) (8192 (8 MB) no S390).


ramdisk_blocksize=N

===================


Esse parâmetro diz ao driver do RAM disk quantos bytes usar por bloco. O padrão é 512.




3) Usando o Comando "rdev -r"

------------------------------------------------------


O uso da palavra (de dois bytes) que "rdev -r" define na imagem do kernel está a seguir. Os 11 bits inferiores (0 -> 10) especificam um offset (em blocos de 1 kB) de até 2 MB (2^11) de onde achar a RAM disk (isso usado para ser o tamanho). O bit 14 indica que uma RAM disk é para ser carregada, e o bit 15 indica se uma seqüência prompt/wait é pra ser dado antes de tentar ler a RAM disk. Já que a RAM disk cresce dinamicamente enquanto os dados estão sendo escritos nela, um campo tamanho não é preciso. Os bits de 11 a 13 não são usados atualmente e podem ser zero também. Esses números não são de magia secreta, como visto abaixo:


./arch/i386/kernel/setup.c:#define RAMDISK_IMAGE_START_MASK 0x07FF

./arch/i386/kernel/setup.c:#define RAMDISK_PROMPT_FLAG 0x8000

./arch/i386/kernel/setup.c:#define RAMDISK_LOAD_FLAG 0x4000


Considere uma instalação de dois disquetes típicos, onde você terá o kernel em um disco, e já tem que colocar uma imagem da RAMdisk no disco #2.


Portanto, você deseja definir os bits de 0 a 13 como 0, significa que sua RAM disk inicia com um offset igual 0 KB do começo do disquete.


A linha de comando equivalente é: "ramdisk_start=0"


Você deseja que o bit 14 igual a um, indicando que uma RAM disk é pra ser carregado. A linha de comando equivalente é: "load_ramdisk=1"


Você deseja que o bit 15 igual a um, para indicar que você deseja uma seqüência de prompt/keypress de modo que você tenha uma chance para trocar os disquetes.


A linha de comando equivalente é: "prompt_ramdisk=1"


Colocando isso junto permite 2^15 + 2^14 + 0 = 49152 para um palavra de rdev. Então para criar um do conjunto, você faria:


/usr/src/linux# cat arch/i386/boot/zImage > /dev/fd0

/usr/src/linux# rdev /dev/fd0 /dev/fd0

/usr/src/linux# rdev -r /dev/fd0 49152



Se você criar um disco de boot que tenha o LILO, então para ponto acima, você usaria:


append = "ramdisk_start=0 load_ramdisk=1 prompt_ramdisk=1"



Já o start padrão = 0 e o prompt padrão = 1, você poderia usar:


append = "load_ramdisk=1"



> Usando uma RamDisk Comprimida ...





Nenhum comentário:




Creative Commons License
Admirável Mundo Novo: Tudo Sobre Asterisk, OpenSER, Linux e Tecnologias de Voz sobre IP
by Cléviton Mendes de Araújo is licensed under a Creative Commons Atribuição 2.5 Brasil License.