在 Linux 上创建 RAM 磁盘,重启后文件系统不会改变

在 Linux 上创建 RAM 磁盘,重启后文件系统不会改变

我使用以下命令在 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

调查usernoauto选项(参见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>,从未遇到任何问题。

相关内容