Como posso montar / desmontar automaticamente um ramdisk em um servidor Ubuntu de 64 bits?

4

Meu servidor Ubuntu tem 24 GB de RAM. Eu quero criar automaticamente um ramdisk na inicialização e carregar arquivos da pasta /home/user1/ramdisk . Quando o sistema é desligado, preciso carregar arquivos de ramdisk de volta para esse diretório.

Como posso conseguir isso?

    
por user68740 02.03.2011 / 20:24

2 respostas

0

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 podem 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ê deseja montá-lo, você precisa de privilégios de superusuário, o que significa que você também pode armazenar os dados voláteis diretamente em /dev/shm , que é criado no início do sistema.

    
por 02.03.2011 / 20:51
0

Como o status_access_denied aponta em sua resposta, isso não é seguro para os dados, pois eles serão perdidos se ocorrer um desligamento de energia ou outro desligamento descontrolado.

Além disso, muitas vezes você é melhor deixar o SO decidir o que manter na 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 VM, bancos de dados e qualquer outra coisa que seu servidor esteja fazendo.

Se você quiser ter certeza de que os dados estão em cache na inicialização (onde permanecerá se a memória realmente não for necessária para mais nada, você poderá executar algo como:

find /path/to/directory -type f | xargs cat > /dev/null

na inicialização. O comando acima resultará em todos os arquivos sendo lidos e, portanto, passados pelo subsistema de armazenamento em cache. O Debian e o Ubuntu (e provavelmente outras distros) executam o script /etc/rc.local no final do processo de boot, então esse é provavelmente o lugar mais simples para colocar o comando. Se a quantidade de dados que está sendo carregada for grande e / ou distribuída em 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:

find /path/to/directory -type f | xargs pv --rate-limit 1M --quiet > /dev/null

Você encontrará pv nos repositórios padrão. a opção --rate-limit 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 você quiser que o servidor releia os arquivos ocasionalmente para replantá-los no cache caso eles tenham sido enviados por outra coisa.

    
por 02.03.2011 / 22:11