我现在的情况是:
16GB 或 RAM。大部分情况下,大约有 10~12GB 未使用
几乎从不安装/删除软件,这是一个成熟的系统
每周仅重启一次,因此(重新)重启时间无关紧要
/usr
大约 8GBHDD 速度很慢,而且近期没有预算来改变这一现状
安装效果
/tmp
显tmpfs
著fstab
我有了一个疯狂的想法:
是否可以以某种方式使用我的 RAM 来“存储” /usr
?
在那里,当启动时,它会/usr
从 HDD 读取当前内容并将其复制到tmpfs
并将其安装为/usr
?
如果可能的话,关机时是否也可以将(可能已更新的)内容刷新回 HDD?或者,当最终需要安装/删除新软件或更新时,是否允许我轻松“暂时切换回 HDD”?
欢迎任何方法,即用型命令将受到高度重视。
谢谢!
答案1
这是可能的,但毫无意义。内核保留一个缓存磁盘中的数据被保存在 RAM 中。您最近使用的数据保存在 RAM 中。您自然会将经常使用的数据保存在/usr
RAM 中,而您不使用的数据则不会占用任何 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”。