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

我有当前的情况:

  • 16GB或RAM。 在大多数情况下,大约10~12GB未使用

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

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

  • /usr大约8GB

  • 硬盘很慢,没有预算可以在不久的将来改变它

  • fstab中将tmpfs挂载/tmp作为性能的奇迹

我只是有这个疯狂的想法:

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

在那个,启动时,它从HDD读取当前/usr内容并将其复制到tmpfs并将其挂载为/usr

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

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

谢谢!

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

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

 cat /path/to/file >/dev/null 

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

 cat /bin/* /lib/* /usr/bin/* /usr/lib/* >/dev/null 

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

 ionice -c 3 cat /bin/* /lib/* /usr/bin/* /usr/lib/* >/dev/null & 

要同时加载/usr/lib*子目录中的所有库,运行find会很有用:

 ionice -c 3 find /bin /usr/bin /usr/lib* -type f -exec ionice -c 3 cat '{}' ';' > /dev/null & 
 ionice -c 3 cat /bin/* /lib/* /usr/bin/* /usr/lib/* >/dev/null & 

不会运行,因为libs中有很多目录。 试试找:

 ionice -c 3 find /bin /usr/bin /usr/lib* -type f -exec cat '{}' ';' > /dev/null & 

它产生的一切都是/ dev / null,所以什么都不会让你烦恼。

我认为两个都是必需的,因为find在自己的进程中执行命令。 如果我错了,请纠正我。 (看起来我错了。)

rc.local中的这一行应该对已经选择的答案起作用。

[edit]删除了评论中建议的第二个“ionice”。