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 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?

user68740
fonte
@user, esta questão está bem aqui, mas só para você saber, as pessoas que executam o Super User também têm um site apenas para perguntas sobre o Ubuntu: askubuntu.com .
Pops
Não faça isso sem uma fonte de alimentação ininterrupta. Dito isto, eles são relativamente baratos (um sub-$ 100 um seria mais que suficiente para este propósito), e eu tenho certeza que você pode apenas editar o seu fstab arquivo e adicionar em uma nova entrada, com o caminho de sua escolha, eo sistema de arquivos definido como ramfs ou tmpfs, sendo este último preferido para você não ter limites de tamanho (veja esta entrada no Arch Linux Wiki para mais detalhes).
Breakthrough

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 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.

0xC0000022L
fonte
Eu entendo sobre o problema de perda de dados. Eu pretendo ter seguinte configuração. Instale o sistema operacional Ubuntu no Intel 80GB SSD, tem dois discos rígidos de 1 TB no RAID 1 para backups e armazenamento. Então eu quero que o aplicativo carregue e descarregue automaticamente do armazenamento para o RAMDISK. Eu não consigo descobrir como fazer isso manualmente. P.S. O aplicativo grava e lê muito os dados. Eu não quero usar meu SSD com essas leituras
user68740
@ user68740: uma leitura não tem efeito em um SSD, e um SSD moderno e decente não tem mais probabilidade de falhar devido ao desgaste da atividade normal do que uma unidade baseada em disco giratório.
David Spillett
Estou preocupado em escrever. O aplicativo faz muitas gravações. Tanto quanto sei, o SSD tem quantidade limitada de gravações.
user68740
Design / construção otimizada de célula flash (aumentando consideravelmente o limite de gravação) e algoritmos de wear-leveling (que impedem que as gravações sejam distribuídas de maneira desigual) significam que um SSD moderno decente não tem mais probabilidade de falhar devido ao desgaste da atividade normal do que uma unidade baseada em disco giratório. É provável que haja alguma degradação no desempenho de gravação ao longo do tempo, que pode ser minimizada com o suporte a TRIM. Se o seu kernel não é recente o suficiente (2.6.33+ IIRC) para suportar TRIM diretamente, existem ferramentas que podem ser programadas para enviar os comandos relevantes em intervalos apropriados.
David Spillett
Não seja tão rápido em ignorar as preocupações sobre operações de gravação em excesso usando um SSD. Eu apoio as preocupações do OP em relação a um aplicativo que escreve muito. Os SSD mais antigos tinham NAND que era bom para 10.000 ciclos de gravação. Agora, o MAND NAND de 34nm é bom para 5.000 ciclos de gravação, enquanto o MLC NAND de 25nm dura apenas 3.000 ciclos de gravação.
MountainX
0

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:

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. 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:

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

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.

David Spillett
fonte