sexta-feira, 14 de março de 2008

Como Criar HDs virtuais na memória RAM

Você deve saber que a velocidade de escrita / leitura na memória RAM é muito maior do que em dispositivos mecânicos, como o HD, ou mesmo memória flash (como a utilizada nos pen drives e discos de estado sólido - SSD). Se seu computador tem muita memória RAM, não seria interessante usar parte dessa memória como se fosse um disco, uma partição, para realizar algumas tarefas especiais?


Pense bem. Durante a gravação de CDs, muitas vezes a lenta velocidade atingida não é apenas devido à mídia ou à gravadora – e sim a um terceiro item que pode colocar altos gargalos, o HD. Gravar dados da memória RAM para um CD ou DVD é uma tarefa muito, muito mais rápida. Os programas de gravação normalmente gravam uma imagem temporária, salva no HD. Isso facilita a gravação na mídia, pois os dados estarão contínuos, não fragmentados (a menos que o espaço livre esteja muito fragmentado no seu sistema).


Mas ainda assim, o HD será acessado durante todo o tempo da gravação – o que atrapalha bastante se você usar outros programas que usam constantemente o HD, como abrir um arquivo grande enquanto grava o CD, ou deixar um programa de compartilhamento de arquivos via redes P2P aberto.


Se essa imagem temporária fosse copiada para a memória, ou melhor, se os arquivos fossem gravados diretamente a partir da memória, o processo seria muito mais rápido, estável e transparente – você inclusive poderia desativar a “criação de imagem” que os programas de gravação oferecem, alguns chamam de “cache” (não confunda com o cache da unidade gravadora). Durante a cópia de discos então, nem se fala. Quem tem uma gravadora só, precisa criar uma imagem do disco no HD, depois gravá-la numa mídia, e finalmente apagar a imagem temporária do HD. Você pode fazer o mesmo processo, mas salvando a imagem num disco virtual na memória RAM – será bem mais rápido, e você nem precisará “gastar” o HD só para copiar imagens de disco temporárias.


Além dessa situação, algumas outras dariam uma boa folga ao HD. Quantos arquivos você não baixa apenas para testar, por exemplo, de coisas que você mesmo fez o upload? Ou então, aqueles ZIPs enormes que você precisa extrair o conteúdo apenas para ver, mantendo o arquivo original no HD? Acabou de gravar um CD, quer testar os dados, e copia tudo para uma pasta no HD para depois apagar? Todas estas situações, entre muitas outras, se beneficiariam muito se o HD fosse tão rápido quanto a memória RAM.


A dica é, então, criar um disco virtual na memória RAM. Ele será visto pelo sistema como se fosse uma partição ou pen drive, você poderá ler e gravar coisas – a uma velocidade assustadora. Como é na RAM, o conteúdo será volátil, sendo perdido quando o computador for reiniciado – ou se acabar a energia. Tudo bem, na maioria das situações que citei, manter os dados para sempre não seria importante. Antes de gravar um CD, por exemplo, você copiaria os dados desejados para o disco virtual na RAM, e faria a gravação a partir dali – mantendo os dados originais no HD.


O disco virtual na RAM é chamado de ramdisk, e é comum seu uso em sistemas que rodam a partir de disquetes ou CDs, sem precisar de instalação no HD – como as várias distros de Linux que rodam como liveCD, por exemplo.


No caso, o objetivo é criar uma ramdisk num sistema que você já tenha instalado – seja Windows ou Linux. A ramdisk pode ser temporária ou “permanente”, sendo recriada a toda inicialização do sistema. Vamos ver como fazer isso no Linux e também no Windows, porém, neste último com o auxílio de softwares proprietários.


O recomendável antes de qualquer coisa é ter muita memória RAM, por exemplo, de 2 GB para cima, caso você pretenda usar para gravação de CDs – podendo criar uma ramdisk de uns 710 MB, por exemplo.



  • No Linux


O Linux possui mais de um recurso “nativo” para criação da ramdisk, entre eles, o poderoso e versátil comando dd, presente em praticamente qualquer distribuição, e um sistema de arquivos próprio para isso, o tempfs (também presente em praticamente toda distro).


O tempfs já foi projetado para isso: criar um sistema de arquivos temporário na memória RAM, montando-o em uma pasta. A sintaxe é bastante curta e direta:


# mount -t tmpfs -o size=512m tmpfs /mnt/hdram


Como root, use o comando mount, seguido de -t que especifica o tipo de sistema de arquivos (tmpfs, aqui sem o “e” de “tempfs”). O parâmetro -o define as opções, no caso apenas foi usado o size, que indica o tamanho. Coloque um número seguido da letra k para medi-lo em kilobytes, ou m para megabytes. No exemplo, size=512m criará uma ramdisk de 512 MB. No último parâmetro, como de praxe, informe o caminho onde a ramdisk será montada – a pasta na qual você deverá salvar e acessar os arquivos. A velocidade de escrita nessa pasta será muito superior à velocidade de escrita nas outras pastas do sistema, que são montadas em partições do HD :)


A pasta /mnt/hdram citada já deverá existir. Você pode usar qualquer pasta vazia, ou então, criar uma para isso:


# mkdir /mnt/hdram

# chmod -R 777 /mnt/hdram


É bom dar chmod recursivo com o valor 777 para liberar acesso geral na ramdisk, afinal você provavelmente estará no terminal como root, mas desejará salvar dados na ramdisk com sua conta de usuário padrão :)


Algumas distros já montam um sistema de arquivos como ramdisk, no diretório /dev/shm, configurando isso diretamente no arquivo /etc/fstab. Se você quiser, pode salvar coisas nele, e estará usando na verdade a memória RAM. O tamanho padrão, caso não informado ao usar o tempfs, é uma ramdisk com o tamanho de metade da quantidade da memória RAM instalada.


O dd usa uma abordagem diferente: ele serve para trabalhar com imagens de disco, permitindo fazer desde backup e restauração de partições, até a criação de imagens ISO a partir de CDs ou DVDs de dados. No caso, cria-se uma imagem de disco vazia na memória RAM, depois deve-se formatá-la, assim como você faria com uma partição no HD – dando um pouco mais de trabalho e gastando mais tempo, do que seria se usado o tempfs. Pelo dd, conectado como root (por ser necessário ter acesso especial à memória RAM), bastaria isso:


# dd if=/dev/zero of=/dev/ram0 bs=1k count=524288

# mke2fs -v -m 0 /dev/ram0 524288

# mkdir /mnt/hdram

# chmod -R 777 /mnt/hdram

# mount -t ext2 /dev/ram0 /mnt/hdram


Basicamente cria-se a imagem de disco na RAM, um disco com dados zerados (copiados do buraco negro do Linux, rs), depois faz-se a formatação desse “disco” (usando seu programa e sistema de arquivos preferido), e por fim, monta-se a imagem numa pasta vazia qualquer, como se fosse uma partição local.


Tudo o que for gravado neste ponto de montagem, será “gravado” na memória RAM, e perdido a cada reboot – ou queda de energia. Você precisará lembrar de copiar as coisas para uma partição física, caso deseje guardá-las seguramente.


Comentando os comandos:


# dd if=/dev/zero of=/dev/ram0 bs=1k count=524288


Aqui criamos uma imagem de disco na memória RAM (/dev/ram0), com dados nulos (extraídos do /dev/zero). O parâmetro “count” informa o tamanho da imagem, no caso, o tamanho da ramdisk desejada, em kilobytes (KB), devido o parâmetro bs=1k.


1024 equivale a 1 MB, 2048 a 2 MB, e por aí vai. No exemplo foi usado 524288 KB, que são 512 MB. Tendo o tamanho desejado em megabytes, basta multiplicar por 1024 para obter o número que você deseja em kilobytes. Por exemplo, para 1 GB seria 1024 vezes 1024 KB = 1048576 KB. E para 710 MB (uma imagem de CD, com uma pequena folga), seriam 710 vezes 1024 KB = 727040 KB. Você pode especificar o valor em megabytes, se quiser, trocando o bs=1k por bs=1M.


# mke2fs -v -m 0 /dev/ram0 524288


Usamos o mke2fs para criar uma partição ext2, note que informamos no final novamente o tamanho, em KB. Não é necessário usar ext3 nem reiserfs, pois a imagem está na memória RAM, e será perdida assim que o sistema for reiniciado; então nem se preocupe com integridade dos dados.


# mkdir /mnt/hdram

# chmod -R 777 /mnt/hdram


Aqui criamos uma pasta para montar a nossa ramdisk. Você pode usar qualquer pasta existente, se estiver vazia, dispensando estas duas linhas de comando. Assim como no caso anterior, sugeri o chmod com valor 777 para liberar acesso para todos :) Como nada vai ficar guardado “para sempre” nesse disco virtual, não tem problema de segurança liberar acesso para todos.


# mount -t ext2 /dev/ram0 /mnt/hdram


Por fim, montamos a partição na pasta criada. Com ela montada, basta usar como bem quiser, curtindo a alta velocidade do seu novo “dispositivo de armazenamento” :)


Para desmontar o disco virtual na ramdisk, use o umount seguido do ponto de montagem, como na forma tradicional:


# umount /mnt/hdram


Vale tanto para a criação com o tempfs como com o dd.


Se quiser que essa ramdisk seja “permanente”, você pode editar algum arquivo de inicialização ou serviço da distro que você usa, adicionando estes comandos. Mostrei o uso do dd apenas para exemplificar, pois fazer com o tempfs é muito mais prático.



  • No Windows


O Windows não fornece um meio próprio para isso, apesar de usar ramdisk durante a instalação. Há softwares que permitem fazer isso de maneira fácil, mas a maioria são comerciais (nem tão caros, mas não são gratuitos). Você pode baixar as versões demo ou sharewares, normalmente limitadas a alguns dias de uso – e nada impede que você opte por usar algum serial ou crack encontrado por aí.


Um bom é o Virtual Hard Drive, da Farstone. Ele pode ser encontrado em:

http://www.farstone.com/software/virtual-hard-drive.htm


Um outro, só como sugestão, é o DiskBoost, da Everstrike, disponível para demonstração em:

http://www.everstrike.com/ramdisk/


Comentando sobre o primeiro. A instalação é muito fácil, o tradicional NNF (“Next > Next > Finish”). Após a instalação, é necessário reiniciar o Windows, devido a instalação de alguns drivers. Feito isso, a criação da ramdisk pode ser feita chamando o programa pelo atalho no menu Iniciar:



index_html_md75a46d


Não tem jeito, ele precisa ser executado como administrador (então no Windows Vista, o UAC pedirá sua confirmação, se ativo).


É bem intuitivo, basta clicar em “Create a RAM disk”, informar o sistema de arquivos desejado, a letra da unidade no Windows, e o tamanho (em MB):



index_html_53ce50


Ao clicar em “Next”, a ramdisk será criada e “formatada”, e poderá ser acessada por qualquer programa na letra de unidade indicada. Ele oferece opções para salvar ou restaurar a imagem da ramdisk (com todo o seu conteúdo), para evitar que você perca algo que tenha gravado nela. Você deve recuperar os dados imediatamente antes de “desmontá-la” ou reiniciar o computador :)


Com a velocidade da memória RAM, você pode fazer as ações comentadas aqui e muito mais, ficando satisfeito com a rapidez e, ao mesmo tempo, ajudando a aumentar a vida útil do seu HD, gravando menos dados inúteis nele.


Crédito: GuiadoHardware


Nenhum comentário: