Como criar uma unidade RAM no Linux

Projeto Shutterstock / Suncheli
Caso você esteja se perguntando, as unidades de RAM e as instâncias do tmpfs não são iguais. Este artigo explicará a diferença e mostrará como criar uma unidade RAM no Linux usando a linha de comando. Configure uma unidade de RAM rápida em minutos!
O que é uma unidade RAM?
Os chips de RAM do seu computador podem ser usados para armazenar uma unidade virtual. Esta unidade não é armazenada no disco rígido, mas na RAM. Não só a velocidade deste disco virtual será significativamente mais rápida do que um disco normal (e especialmente quando comparado com um disco giratório de tipo mais antigo, pois o movimento físico das partes dentro de um disco giratório causa atrasos adicionais), os chips de RAM não se desgastam tão rápido como discos e, novamente, especialmente e ainda mais com unidades físicas de tipo mais antigo.
Parece bom demais para ser verdade? Bem, há de fato uma advertência; se você acidentalmente reiniciar seu computador ou se ele travar, seus dados serão perdidos. RAM (Random Access Memory), os chips de memória em seu computador, requerem energia constante para reter suas informações. O armazenamento de RAM é considerado volátil.
Em outras palavras, as unidades de RAM se prestam a aplicativos temporários ou otimizações específicas. Por exemplo, quando usamos servidores de teste para testar software, configuramos uma unidade de RAM para permitir que muitos testes simultâneos sejam realizados mais rapidamente. E, mesmo se o servidor perdesse energia, não haveria muita perda; nós simplesmente iniciaríamos outra execução de teste.
Outro aplicativo está pré-carregando os dados acessados com frequência em uma unidade RAM. Por exemplo, se você tiver um servidor que acessa constantemente um determinado banco de dados somente leitura (leitura-gravação pode ser mais complexo se os dados precisarem ser mantidos), que normalmente reside no disco, você pode copiar o banco de dados somente leitura para RAM automaticamente (com alguns scripts automatizados na inicialização do servidor, por exemplo, ou com um cron job) e, em seguida, deixe o servidor de banco de dados usar esses dados.
Em outras palavras, pode-se resumir dois casos de uso primários, um sendo o cache (como nosso exemplo de banco de dados R / O), o outro sendo “ inestimável ” armazenamento de dados (como nosso exemplo de teste). Você pode então dar um passo adiante (um terceiro caso de uso, se preferir) e sincronizar os dados de volta ao disco em determinados intervalos. Por exemplo, com o exemplo de teste, que também inclui gravações no armazenamento RAM, pode-se gravar o resumo e / ou os dados de teste de volta no disco (armazenamento permanente) ao final de cada conclusão de teste.
Outra advertência com as unidades de RAM é que elas são limitadas ao tamanho da memória do seu sistema e provavelmente menos do que isso, pois você precisa de outra memória para executar o sistema operacional e outro software.
Dimensionando uma unidade de RAM para mais de – digamos um 80-85% arbitrário da memória do sistema – pode estar pedindo problemas. Obviamente, se você tiver 256 GB de RAM em seu servidor, mesmo 90% alocado para uma unidade de RAM ainda deixaria mais de 25 GB para o sistema operacional e os aplicativos. Com apenas 4 GB, 90% da RAM deixaria 0,4 GB (400 MB), o que provavelmente causaria problemas. Portanto, depende, em certa medida, qual é a memória total da máquina e quanto será necessário para outro software.
Além disso, uma unidade de RAM não funciona da mesma forma que a alocação / instância do tmpfs.
Unidade RAM vs instância tmpfs
Um tmpfs também pode ser, mas não precisa ser, armazenado nos chips de RAM do seu computador. O mapeamento comum / dev / shm tmpfs configurado automaticamente com a instalação da maioria, senão de todos os sistemas operacionais Linux, é útil, mas não funciona da mesma forma que uma unidade RAM.
A diferença entre os dois é que uma unidade de RAM (o termo rígido vem à mente) é 100% armazenado em chips de RAM reais, enquanto o tmpfs é armazenado no pool de memória do kernel do Linux, que pode incluir coisas como espaço de troca, que está regularmente localizado no disco. Embora o kernel provavelmente otimizasse todo o acesso ao pool, ele ainda dá a possibilidade de os dados serem gravados na RAM física ou no DISCO físico. E, se for para o disco, será mais lento.
Criando uma unidade RAM
Criar uma unidade RAM é relativamente simples. Você pode criar um pequeno script chamado ramdrive. sh, com o seguinte código:
#! / bin / bash if ["$ (mount | grep -o" / mnt / ram ")"! = "/ mnt / ram"]; então sudo mkdir -p / mnt / ram sudo mount -t ramfs -o size = 1g ramfs / mnt / ram sudo chown -R $ (whoami): $ (whoami) / mnt / ram montagem fi | grep ram
E outro script umount_ram. sh, com o seguinte código:
#! / bin / bash sudo umount / mnt / ram
Vamos dar uma olhada no primeiro script. Primeiro, indicamos que queremos Bash como nosso interpretador de comandos com o símbolo Shebang (#!). Se você quiser saber mais sobre Shebang, dê uma olhada em Bash Automation & Scripting Basics, nosso artigo de 3 partes sobre automação e script de Bash.
Depois disso, verificamos se já temos uma montagem em / mnt / ram (o diretório que usaremos para montar nosso drive ram), usando um grep-only (grep -o) de / mnt / ram na íntegra & # 8216; atualmente montado &’ lista, conforme exibido pela montagem. Se o mesmo não for encontrado, procedemos com três comandos sudo. Todos os três requerem sudo, embora por vários motivos.
O primeiro comando requer sudo, pois cria um diretório possivelmente root e pelo menos em / mnt, que são diretórios privilegiados / protegidos. O próximo comando, nossa montagem e criação de disco RAM real, requer sudo, pois a montagem é uma operação privilegiada. Definimos o tamanho para 1 GB usando size = 1g. Também indicamos que queremos uma unidade do tipo ramfs (-t ramfs) vindo do dispositivo ramfs (conforme indicado pelo segundo ramfs) e, finalmente, listamos o ponto de montagem como / mnt / ram.
No terceiro comando habilitado para sudo, mudamos o proprietário do diretório / mnt / ram (agora nossa unidade RAM, nosso ponto de montagem ramfs) para o usuário atual e o próprio grupo do usuário atual usando o comando whoami duas vezes. Você pode querer mudar isso para o grupo específico e / ou específico que usará o ramdrive ou para um grupo mais amplo se mais usuários usarem o ramdrive.
Depois disso, finalizamos nosso comando condicional if .. fi e fazemos uma chamada final para montar com um grep para ram para garantir que o script relata de volta o que já foi montado em termos de RAM, ou o que foi montado agora, enquanto o script era executado. Esta é uma verificação útil / rápida de que o script foi bem-sucedido ao ser executado.
Nosso script secundário, umount_ram. sh, desmonta a unidade baseada em RAM com o ponto de montagem / mnt / ram, ou seja, a unidade ramfs que acabamos de criar. AVISO: executar isso imediatamente elimina / exclui todos os dados armazenados na memória volátil e remontar a unidade RAMFS não trará isso de volta; ele simplesmente criará uma unidade de RAM totalmente nova, mas vazia. Por favor, esteja avisado!
Concluindo
Neste artigo, discutimos unidades RAM / ramfs (a mesma coisa) e instâncias / alocações tmpfs. Em seguida, criamos uma unidade ramfs de 1 GB em / mnt / ram usando um pequeno script para montar ou unidade RAM.
Se você gosta de continuar lendo no Linux, dê uma olhada em nossa Gravação de tela no Linux com SimpleScreenRecorder ou Bits, Bytes e Binário ou de 0 a F: artigos hexadecimais!
Divirta-se!
Nenhum comentário