在 RAM 中挂载 /usr(启动时从硬盘加载,关闭时保存到)

Mes*_*ion 5 mount tmpfs

我有当前的场景:

  • 16GB 或内存。大多数情况下,大约有 10~12GB 未使用

  • 几乎从不安装/删除软件,这是一个成熟的系统

  • 每周只重启一次,所以(重新)启动时间无关紧要

  • /usr 大约 8GB

  • HDD 很慢,在不久的将来没有预算来改变它

  • 安装/tmptmpfsfstab没有奇迹般的表现

我刚刚有了一个疯狂的想法:

是否有可能以某种方式使用我的 RAM 来“存储” /usr

也就是说,在启动时,它/usr从 HDD读取当前内容并将其复制到 atmpfs并将其挂载为/usr?

如果可能,关闭时是否还将(可能已更新)内容刷新回 HDD?或者也许让我在最终需要安装/删除新软件或更新时轻松“暂时切换回 HDD”?

欢迎任何方法,即用型命令将受到高度重视。

谢谢!

Gil*_*il' 8

这是可能的,但毫无意义。内核将磁盘中的数据缓存保存在 RAM 中。您最近使用的数据保存在 RAM 中。您自然/usr会在 RAM 中使用您经常使用的部分,而您不使用的部分将不会占用任何 RAM。

如果您希望在启动应用程序时有更好的反应时间,可以为缓存设定种子。文件在您第一次使用时被加载到内存中,并保持在那里,直到内存被重用于其他用途。您可以强制加载文件:

cat /path/to/file >/dev/null
Run Code Online (Sandbox Code Playgroud)

例如,要将所有可执行文件和库预加载到 RAM 中:

cat /bin/* /lib/* /usr/bin/* /usr/lib/* >/dev/null
Run Code Online (Sandbox Code Playgroud)

这可能需要一段时间才能完成,因此您应该在后台执行此操作。您可以将以下命令放入/etc/rc.local

ionice -c 3 cat /bin/* /lib/* /usr/bin/* /usr/lib/* >/dev/null &
Run Code Online (Sandbox Code Playgroud)

还加载/usr/lib*它的子目录中的所有库可能很有用运行find

ionice -c 3 find /bin /usr/bin /usr/lib* -type f -exec ionice -c 3 cat '{}' ';' > /dev/null &
Run Code Online (Sandbox Code Playgroud)