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

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

Eu crio um disco RAM no Ubuntu 16.10 (rodando em 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 recebo o seguinte

tmpfs 2097152 0 2097152 0% /media/RAMDisk

Até agora tudo bem.

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

Após a reinicialização, espero que a /media/RAMDiskpasta não exista ou exista como umtmpfssistema de arquivos sem conteúdo nele.

A /media/RAMDiskpasta existe sem conteúdo, mas surpreendentemente como um /dev/sda1sistema de arquivos. Quando faço df .with /media/RAMDisk, vejo isso:

    /dev/sda1 17413904 9577448 6928836 59% /

Agora, eu poderia facilmente colocar os comandos dentro do meu .bashrce fazê-los executar e fazer as coisas certas sempre, mas preciso saber o que está acontecendo.

Além disso, meu gerenciador de máquina virtual – Workstation Pro – poderia estar fazendo alguma coisa?

Responder1

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 no /dev/sda1qual está montado /.

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

Você precisa montar RAMDiskapós (ou durante) cada inicialização de alguma forma.


Como montar?

Fugir mountde dentro .bashrcnão é uma boa ideia porqueeste arquivo pode ser obtido várias vezesdurante uma única sessão. Como você precisa sudode qualquer maneira, será melhor usar /etc/rc.localo que é executado uma vez quando o sistema operacional é iniciado.

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

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

Investigue useras noautoopções (consulte Recursos man 5 fstab) e talvez você queira usá-las e invocá-las mount /media/RAMDiskapenas sob demanda.


systemd?

Esse siteme faz acreditar que você pode executar uma systemdunidade quando um determinado usuário efetua login pela primeira vez e encerrá-la assim que a última sessão do usuário for encerrada. Não estou muito familiarizado com o systemd, então não posso dizer como (se) você pode fazer isso com .mounto unit.

Mas se você usar systemdentão você já deve ter um arquivo pessoal tmpfsmontado /run/user/<UID>. O de todo o sistema deve estar ativado /dev/shm.


Sobre/media/

Observe também /media/que é usado pelo Ubuntu para criar pontos de montagem, por exemplo, para unidades USB externas (acredito udisks2que seja o responsável). Eles podem parecer assim, /media/<username>/<label>acho que /media/RAMDisknão vão colidir com nada. Em geral, eu evitaria usar esse local. Nos meus sistemas (Debian, Kubuntu, Raspbian, OpenWRT) que utilizo /mnt/<something>e nunca tive problemas.

informação relacionada