我使用以下命令在 Ubuntu 16.10(在虚拟机中运行)上创建 RAM 磁盘
sudo mkdir -p /media/RAMDisk sudo mount -t tmpfs -o size=2048M tmpfs /media/RAMDisk
之后,如果我进入 RAMDisk 并执行此操作
df。
我得到以下
tmpfs 2097152 0 2097152 0%/媒体/RAMDisk
到目前为止,一切都很好。
然后我重新启动 Ubuntu(重新启动通过 Workstation Pro 运行的 VM)。
重新启动后,我预计该/media/RAMDisk
文件夹要么根本不存在,要么作为tmpfs
其中没有内容的文件系统。
该/media/RAMDisk
文件夹确实存在,但没有内容,但令人惊讶的是它是一个/dev/sda1
文件系统。当我使用df .
时/media/RAMDisk
,我看到了以下内容:
/dev/sda1 17413904 9577448 6928836 59% /
现在,我可以轻松地将命令放入我的命令中.bashrc
并让它们每次运行并执行正确的事情,但我需要知道发生了什么。
另外,我的虚拟机管理器——Workstation Pro——可以做些什么吗?
答案1
到底是怎么回事?
没什么不寻常的。
df /media/RAMDisk
当它提到时/dev/sda1
,会告诉您当前目录属于/dev/sda1
挂载在的文件系统/
。
这是因为您的命令的效果mount
不是永久性的,它在重启后不会消失。另一方面,该mkdir
命令在文件系统内创建了一个目录/dev/sda1
,并且该文件系统在每次重启后都会挂载,因此目录本身会保留下来,但作为文件系统的一部分/dev/sda1
。
您需要RAMDisk
在每次启动后(或启动时)以某种方式进行挂载。
如何挂载?
mount
从内部逃跑.bashrc
并不是一个好主意,因为该文件可能被多次引用在单个会话期间。由于sudo
无论如何您都需要,因此最好使用/etc/rc.local
在操作系统启动时运行一次的选项。
但更好的方法可能是将以下行添加到您的/etc/fstab
:
tmpfs /media/RAMDisk tmpfs defaults,nosuid,nodev,size=2048M 0 0
调查user
和noauto
选项(参见man 5 fstab
),也许您想使用它们并mount /media/RAMDisk
仅在需求时调用。
systemd
?
本网站让我相信您可以systemd
在给定用户首次登录时运行一个单元,并在用户的最后一个会话关闭后立即终止它。我不太熟悉systemd
,所以我不能告诉你如何(如果)用.mount
单元做到这一点。
但是如果你使用,那么你应该已经在 上安装systemd
了个人版。系统版应该在 上。tmpfs
/run/user/<UID>
/dev/shm
关于/media/
另请注意,/media/
Ubuntu 使用它来创建挂载点,例如用于外部 USB 驱动器(我相信udisks2
是负责任的)。它们可能看起来像/media/<username>/<label>
,所以我猜/media/RAMDisk
不会与任何东西发生冲突。一般来说,我会避免使用此位置。在我的系统(Debian、Kubuntu、Raspbian、OpenWRT)中,我使用过/mnt/<something>
,从未遇到任何问题。