我可以将/ tmp和/ var / log放在OS X上的ramdisk中吗?

Modified on: Tue, 19 Mar 2019 02:20:02 +0800

对于非关键Linux系统,我经常将/ tmp和/ var / log之类的东西移到tmpfs来节省一些磁盘写入。我已经这样做了一年左右,如果我需要重新启动日志,我只需在/ etc / fstab中注释掉一行,然后开始调试。

无论如何,我想在OS X上做同样的事情。我看过有关为OS X创建ramdisk的帖子,但我正在寻找一种更加永久的解决方案,适用于每次启动。我总是希望将/ tmp和/ var / log安装在ramdisk中,如果必须的话,可以在vi中通过一些命令行编辑来关闭它。

作者:,kbyrd

最佳答案

编辑:我只是接受我自己的答案,因为它确实为我解决了问题的一部分。如果有人在Linux中发布了更像--bind的内容,我会接受这个答案。

为了激发更多答案,我将开始回答我自己的问题。

第1步是每次都在启动时安装ramdisk。为此,我创建了一个bash脚本,然后是一个launchd条目,用于在启动时调用bash脚本。

写一个像这样的bash脚本:

RD=ramdisk if [ ! -e "/Volumes/$RD" ]; then diskutil erasevolume HFS+ "$RD" `hdiutil attach -nomount` fi mkdir -p /Volumes/$RD/private/tmp mkdir -p /Volumes/$RD/private/var/log mkdir -p /Volumes/$RD/private/var/tmp

然后通过创建名为/Library/LaunchDaemons/com.my.ramdisk.plist的文件将其添加到launchd来启动它,其中包含以下内容:

RD=ramdisk
if [ ! -e "/Volumes/$RD" ];  then
    diskutil erasevolume HFS+ "$RD" `hdiutil attach -nomount`
fi

mkdir -p /Volumes/$RD/private/tmp
mkdir -p /Volumes/$RD/private/var/log
mkdir -p /Volumes/$RD/private/var/tmp

我遇到的问题是在/ tmp,/ var / log和/ var / tmp中对ramdisk内的目录进行符号链接或挂载的方法。这三个目录都在我的系统上符号链接到/ private / tmp,/ private / var / log和/ private / var / tmp。当我将符号链接更改为指向/ Volumes / ramdisk / ...时,系统将无法启动。我希望这是因为在启动时,在我的com.my.ramdisk脚本安装ramdisk之前需要/ tmp和/ var / log。在安装root之前,我需要一种方法来安装ramdisk,然后再运行任何东西。

注意如果在临时空间中挂载/ var / log(内核,守护程序和其他关键用户空间日志),则会在下一个空间中丢失其内容重启。这可能会影响您的诊断能力。


相关问答

添加新评论