Meu servidor Ubuntu tem 24 GB de RAM. Eu quero criar automaticamente um ramdisk na inicialização e carregar arquivos do /home/user1/ramdisk
pasta. Quando o sistema é desligado, eu preciso carregar arquivos de ramdisk
de volta para esse diretório.
Como posso conseguir isso?
fstab
arquivo e adicionar em uma nova entrada, com o caminho de sua escolha, eo sistema de arquivos definido comoramfs
outmpfs
, sendo este último preferido para você não ter limites de tamanho (veja esta entrada no Arch Linux Wiki para mais detalhes).Respostas:
Mesmo que o upstart possa ser usado para fazer coisas como essa, isso só pode ser recomendado sob a premissa de que o usuário está ciente de que os dados são voláteis e pode se perder .
Considere o caso em que a energia é perdida. Não há nenhuma maneira possível de a máquina reagir a isso e mover rapidamente seus dados do ramdisk para o outro armazenamento.
Isso significa: não será seguro para os dados.
Dado que você quer montá-lo, você precisa de privilégios de superusuário, o que significa que você também pode armazenar os dados voláteis diretamente
/dev/shm
que é criado no início do sistema.fonte
Como o status_access_denied aponta em sua resposta, isso não é seguro para os dados, já que eles serão perdidos se ocorrer um desligamento de energia ou outro desligamento descontrolado.
Além disso, muitas vezes você é melhor deixar o sistema operacional decidir o que manter na memória RAM. Se você dedicar um pedaço de memória RAM a arquivos específicos como esse, não poderá usá-lo para outras coisas, como armazenamento em cache de outros arquivos, memória da VM, bancos de dados e o que mais seu servidor estiver fazendo.
Se você quiser ter certeza de que os dados estão no cache na inicialização (onde permanecerá se a memória realmente não for necessária para qualquer outra coisa, você pode executar algo como:
na inicialização. O comando acima resultará em todos os arquivos sendo lidos e, portanto, passados pelo subsistema de armazenamento em cache. Debian e Ubuntu (e provavelmente outras distros) executam o script
/etc/rc.local
no final do processo de inicialização, de modo que é provavelmente o lugar mais simples para colocar o comando. Se a quantidade de dados que está sendo carregada for grande e / ou distribuída por muitos arquivos grandes, convém limitar a taxa na qual ela é lida, para que isso não interfira em nada que esteja acontecendo (ou seja, se você estiver efetuando login diretamente após a inicialização ou outros serviços ainda estão sendo iniciados) com algo como:Você vai encontrar
pv
nos repositórios padrão. a--rate-limit
opção faz o que diz na lata (neste caso, limitando a taxa para 1Mbyte / seg) e--quiet
diz para não se incomodar com a barra de progresso e outra exibição.Você poderia mandar o comando em um cron job se quiser que o servidor releia ocasionalmente os arquivos para propagá-los novamente no cache caso eles tenham sido enviados por outra coisa.
fonte