Crie um disco RAM no Linux que não mude o sistema de arquivos após a reinicialização

0

Eu crio um disco RAM no Ubuntu 16.10 (rodando dentro de uma VM) com os seguintes comandos

sudo mkdir -p /media/RAMDisk
sudo mount -t tmpfs -o size=2048M tmpfs /media/RAMDisk

Depois disso, se eu entrar no RAMDisk e fizer isso

df .

Eu obtenho o seguinte

tmpfs            2097152     0   2097152   0% /media/RAMDisk

Até aí tudo bem.

Então eu reinicio o Ubuntu (que reinicia a VM rodando via Workstation Pro).

Após a reinicialização, espero que a pasta /media/RAMDisk não exista ou que exista como um tmpfs sistema de arquivos sem conteúdo.

A pasta /media/RAMDisk existe sem conteúdo, mas surpreendentemente como um sistema de arquivos /dev/sda1 . Quando faço df . com /media/RAMDisk , vejo isto:

    /dev/sda1       17413904 9577448   6928836  59% /

Agora, posso facilmente colocar os comandos no meu .bashrc e executá-los e fazer as coisas certas sempre, mas preciso saber o que está acontecendo.

Além disso, meu gerenciador de máquinas virtuais - Workstation Pro - poderia estar fazendo alguma coisa?

    
por treecoder 02.10.2017 / 00:23

1 resposta

1

O que está acontecendo?

Nada incomum.

df /media/RAMDisk , quando se refere a /dev/sda1 , informa que o diretório no momento pertence ao sistema de arquivos em /dev/sda1 , que está montado em / .

Isso ocorre porque o efeito do seu comando mount não é permanente, ele não sobrevive à reinicialização. Por outro lado, o comando mkdir criou um diretório dentro do sistema de arquivos de /dev/sda1 e este sistema de arquivos é montado após cada reinicialização para que o próprio diretório sobreviva, mas como parte do sistema de arquivos /dev/sda1 .

Você precisa montar RAMDisk após (ou em) cada inicialização de alguma forma.

Como montar?

Executar mount de .bashrc não é uma boa ideia porque esse arquivo pode ser originado várias vezes durante uma única sessão. Como você precisa de sudo , será melhor usar /etc/rc.local , que é executado uma vez quando o sistema operacional é iniciado.

Mas a melhor maneira ainda é adicionar a seguinte linha ao seu /etc/fstab :

tmpfs /media/RAMDisk tmpfs defaults,nosuid,nodev,size=2048M 0 0

Investigue as opções user e noauto (consulte man 5 fstab ) e talvez você queira usá-las e invocar mount /media/RAMDisk somente sob demanda.

systemd ?

Este site me faz acreditar que você pode executar uma systemd unidade quando um determinado usuário fizer login pela primeira vez e terminá-lo assim que a última sessão do usuário for encerrada. Eu não estou muito familiarizado com systemd , então eu não posso te dizer como (se) você pode fazer isso com .mount unit.

Mas se você usar systemd , já deverá ter um tmpfs montado em /run/user/<UID> . O sistema deve estar em /dev/shm .

Sobre /media/

Observe também que /media/ é usado pelo Ubuntu para criar pontos de montagem. para drives USB externos (acredito que udisks2 seja responsável). Eles podem parecer com /media/<username>/<label> , então eu acho que /media/RAMDisk não vai colidir com nada. Em geral, eu evitaria usar esse local embora. Nos meus sistemas (Debian, Kubuntu, Raspbian, OpenWRT) eu uso /mnt/<something> e nunca tive problemas.

    
por 03.10.2017 / 10:43