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/RAMDisk
pasta não exista ou exista como umtmpfs
sistema de arquivos sem conteúdo nele.
A /media/RAMDisk
pasta existe sem conteúdo, mas surpreendentemente como um /dev/sda1
sistema 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 .bashrc
e 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/sda1
qual está montado /
.
Isso ocorre porque o efeito do seu mount
comando não é permanente, ele não sobrevive à reinicialização. Por outro lado, o mkdir
comando criou um diretório dentro do sistema de arquivos /dev/sda1
e esse sistema de arquivos é montado após cada reinicialização para que o próprio diretório sobreviva, mas como parte do /dev/sda1
sistema de arquivos.
Você precisa montar RAMDisk
após (ou durante) cada inicialização de alguma forma.
Como montar?
Fugir mount
de dentro .bashrc
não é uma boa ideia porqueeste arquivo pode ser obtido várias vezesdurante uma única sessão. Como você precisa sudo
de qualquer maneira, será melhor usar /etc/rc.local
o 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 user
as noauto
opções (consulte Recursos man 5 fstab
) e talvez você queira usá-las e invocá-las mount /media/RAMDisk
apenas sob demanda.
systemd
?
Esse siteme faz acreditar que você pode executar uma systemd
unidade 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 .mount
o unit.
Mas se você usar systemd
então você já deve ter um arquivo pessoal tmpfs
montado /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 udisks2
que seja o responsável). Eles podem parecer assim, /media/<username>/<label>
acho que /media/RAMDisk
nã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.