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

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

我现在的情况是:

  • 16GB 或 RAM。大部分情况下,大约有 10~12GB 未使用

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

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

  • /usr大约 8GB

  • HDD 速度很慢,而且近期没有预算来改变这一现状

  • 安装效果/tmptmpfsfstab

我有了一个疯狂的想法:

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

在那里,当启动时,它会/usr从 HDD 读取当前内容并将其复制到tmpfs并将其安装为/usr

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

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

谢谢!

答案1

这是可能的,但毫无意义。内核保留一个缓存磁盘中的数据被保存在 RAM 中。您最近使用的数据保存在 RAM 中。您自然会将经常使用的数据保存在/usrRAM 中,而您不使用的数据则不会占用任何 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 &

答案2

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

无法运行,因为库中有很多目录。尝试查找:

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

它生成的所有内容都会进入 /dev/null,因此不会有任何内容打扰您。

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

rc.local 中的这一行应该可以解决已经选择的答案的问题。

[编辑] 按照评论中的建议删除了第二个“ionice”。

相关内容