Como criar uma unidade RAM no Linux

Conteúdo

Caso você esteja se perguntando, Drives RAM e instâncias tmpfs não são iguais. Este post irá explicar a diferença e mostrar como criar um drive RAM no Linux usando a linha de comando. Configure uma unidade de RAM rápida em minutos!

Que e um Unidade de 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 a de um disco normal (e especialmente em comparação com um disco rotativo de tipo antigo, uma vez que o movimento físico das peças dentro de um disco giratório causa atrasos adicionais), Os chips de RAM não se desgastam tão rápido quanto os discos, e de novo especialmente e ainda mais com drives físicos de tipo mais antigo.

Parece bom demais para ser verdade? Nós vamos, há realmente uma advertência; Se você acidentalmente reiniciar seu computador, ou se falhar, todos os seus dados irão desaparecer. RAM (memória de acesso aleatório), 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. Como um exemplo, quando usamos servidores de teste para testar software, configuramos uma unidade de RAM para permitir que muitos testes simultâneos sejam mais rápidos. E mesmo se o servidor perder energia, você não perderia muito; nós apenas começaríamos outro teste.

Outra aplicação é o pré-carregamento de dados que são acessados ​​muitas vezes em uma unidade RAM. Como um exemplo, se você tiver um servidor acessando constantemente um determinado banco de dados somente leitura (leitura e escrita podem ser mais complexas se os dados precisarem ser preservados), que reside regularmente no disco, então você pode copiar o banco de dados somente leitura para RAM automaticamente (com alguns scripts automatizados na inicialização do servidor, como um exemplo, ou com um cron job), e deixe o servidor de banco de dados usar esses dados.

Em outras palavras, pode-se resumir dois casos de uso principais, um está armazenando em cache (como nosso exemplo de banco de dados R / O), el otro es el almacenamiento de datosinvaluable” (como nosso exemplo de teste). Subseqüentemente, pode dar um passo adiante (um terceiro caso de uso se você quiser) e sincronizar dados para o disco em intervalos especificados. Como um exemplo, com exemplo de teste, que também inclui gravações no armazenamento RAM, você poderia escrever o resumo e / ou dados de teste em disco (armazenamento permanente) no final de cada teste completo.

Outra ressalva com as unidades de RAM é que elas são limitadas ao tamanho da memória do seu sistema e provavelmente menos do que isso., uma vez que precisa de outra memória para executar o sistema operacional e outro software.

Dimensionando uma unidade de RAM maior que, vamos dizer um 80-85% memória arbitrária do sistema, pode estar procurando por problemas. De qualquer forma, se tem 256 GB de RAM em seu servidor, incluindo o 90% alocado para uma unidade de RAM deixaria mais do que 25 GB para sistema operacional e aplicativos. Com apenas 4 GB, uma atribuição do 90% para a RAM eu deixaria 0,4 GB (400 MB), o que pode causar problemas. Por tanto, Depende, até certo ponto, qual é a memória total da máquina e quanto será necessário para outro software.

Ao mesmo tempo, uma unidade de RAM não funciona da mesma forma que a alocação / Instancia tmpfs.

Unidade RAM vs instância tmpfs

Um tmpfs também pode ser armazenado, mas não tem que ser, nos chips de RAM do seu computador. O usual /dev/shm O mapeamento tmpfs configurado automaticamente com a instalação da maioria, se não todos os sistemas operacionais Linux, é útil, mas não funciona da mesma forma que uma unidade de RAM.

A diferença entre os dois é que uma unidade de RAM (o fim rígido Vem à mente) está armazenado em 100% em chips de RAM reais, enquanto tmpfs é armazenado no pool de memória do kernel Linux, que pode incluir coisas como espaço de troca, encontrado regularmente no disco. Embora o kernel provavelmente otimizasse todo o acesso ao grupo, aún ofrece la oportunidad de que los datos se escriban en la RAM física o en el DISCO físico. E, si va al disco, será más lento.

Creando un Unidade de RAM

Crear una unidad de RAM es relativamente sencillo. Puede crear un pequeño script llamado ramdrive.sh, con el siguiente código:

#!/bin/bash
if [ "$(monte | grep -o "/mnt/ram")" != "/mnt/ram" ]; then
  sudo mkdir -p /mnt/ram
  sudo mount -t ramfs -o size=1g ramfs /mnt/ram
  sudo chown -R $(Quem sou eu):$(Quem sou eu) /mnt/ram
fi
mount | grep ram

Y otro guion umount_ram.sh, con el siguiente código:

#!/bin/bash
sudo umount /mnt/ram

Echemos un vistazo al primer guión. Primeiro, indicamos que queremos Bash como nosso interpretador de comandos com o símbolo Shebang (#!). Para obter mais informações sobre Shebang, dê uma olhada no Bash Automation & Scripting Basics, nossa postagem de 3 partes sobre automação e script bash.

Depois disso, verificamos se já temos uma montagem embaixo /mnt/ram (o diretório que usaremos para montar nossa unidade de memória RAM), usando apenas grep (grep -o) a partir de /mnt/ram na lista completa de 'montados hoje', como é mostrado em mount. Se o mesmo não for encontrado, continuamos com três comandos sudo. Todos os três requerem sudo, mesmo quando por vários motivos.

O primeiro comando precisa de sudo, uma vez que cria um diretório possivelmente raiz e pelo menos em /mnt, que são diretórios privilegiados / protegido. O seguinte comando, nossa montagem e criação de disco RAM real, você precisa do 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 (como o segundo indica ramfs), e, em resumo, listamos o ponto de montagem como /mnt/ram.

No terceiro comando habilitado para sudo, nós mudamos o dono do /mnt/ram diretório (agora nossa unidade de RAM, nosso ponto de montagem ramfs) o usuário atual e o próprio grupo do usuário atual usando o whoami comando duas vezes. Você pode querer mudar isso para o grupo específico e / ou específico para usar ramdrive ou para um grupo mais amplo se mais usuários usarem ramdrive.

Depois disso, nós terminamos nosso condicional if .. fi comando e fazer uma chamada final para mount com um grep para ram para garantir que o script relata o que já foi montado em termos de RAM, ou o que foi montado agora mesmo quando o script foi executado. Esta é uma verificação prática / rápido que o script foi bem sucedido quando foi executado.

Nosso sub-script, umount_ram.sh, desmontar unidade baseada em RAM com ponto de montagem /mnt/ram, Em outras palavras, o drive ramfs que acabamos de criar. AVISO: execute este remove / apague imediatamente todos os dados armazenados na memória volátil e remontar a unidade RAMFS não trará isso de volta; ele apenas criará um novo, mas vazio drive de RAM. Tenha cuidado!

Final

Neste post, discutimos drives de RAM / ramfs (o mesmo) e as instâncias / atribuições tmpfs. Mais tarde, criamos uma unidade ramfs de 1 GB sob /mnt/ram usando um pequeno script para montar ou uma unidade RAM.

Se você quiser continuar lendo no Linux, dê uma olhada em nossas postagens Gravação de tela no Linux com SimpleScreenRecorder ou Bits, Bytes y Binário o De 0 para F: Hexadecimal!

Desfrutar!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.