将 /tmp 移动到 RAM

Mas*_*imo 28 mount tmpfs ram

我正在尝试转向/tmpRAM 并遵守良好做法:

  • /var/tmp不应放置在 中tmpfs,因为它必须在重新启动后存活

  • 不是/tmp作为独立安装tmpfs,而是依赖/dev/shm/run/shm

然而,事情在 2.6 和 3.2 内核之间发生了变化:

更改 tmpfs 文件系统的配置和默认值

在 3.2 内核上,RAMTMP=yes/etc/default/tmpfs.

我的问题是:如何使用旧内核实现这一目标?

我的选择不是修改 /etc/fstab 也不是:

mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp
Run Code Online (Sandbox Code Playgroud)

RAMTMP2.6 内核有类似的东西吗?

Chr*_*own 30

你不必做这一切,你可以安装/tmptmpfs通过使用像下面一行/etc/fstab

tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0
Run Code Online (Sandbox Code Playgroud)

您也可以实时执行(但请记住,/tmp除非通过 inode 和当前打开的文件描述符,否则将无法访问当前文件系统中当前存在的内容,因此您应该通过修改/etc/fstab和重新启动来执行此操作):

mount -o mode=1777,nosuid,nodev -t tmpfs tmpfs /tmp
Run Code Online (Sandbox Code Playgroud)

注意atmpfs可以交换。如果你想要一个真正只有 RAM 的文件系统,请使用ramfs.

  • @Massimo 你在哪里找到这个“最佳实践”?我认为反对将 `/tmp` 挂载为 tmpfs 的唯一原因是因为您现在有 2 个潜在的 tmpfs 文件系统可以填满并使用更多内存(`/tmp` 和 `/dev/shm`)。但是,如果您真的担心填满 2 个 tmpfs 挂载,则可以减小 tmpfs 挂载的最大大小。 (5认同)
  • @Massimo 我的意见是最好的做法是*不*绑定安装。它增加了不必要的复杂性。 (3认同)
  • @CMCDragonkai Bind mounts 在内部绝非简单,它们带有很多你可能不想要的不直观的警告(一个特别公开的警告是围绕需要重新安装只读坐骑的戏剧)。只需使用两个 `tmpfs` 安装。 (2认同)

Llu*_*uís 24

/etc/default/tmpfs是 for sysvinit, for systemd(Debian 默认自 jessie) 你只需要做:

systemctl enable tmp.mount
Run Code Online (Sandbox Code Playgroud)

在 Debian Stretch 或更高版本上:

cp /usr/share/systemd/tmp.mount /etc/systemd/system/
systemctl enable tmp.mount
Run Code Online (Sandbox Code Playgroud)

查看变更日志

有关 RAMDISK/tmpfs 的更多详细信息,请参见SSD 优化Debian Wiki 页面。


lui*_*son 5

我知道这很旧,但在 Debian 类型的发行版中,在 /etc/default/tmpfs(/etc/default/rcS 或之前 wheezy)设置 RAMTMP、RAMRUN 和 RAMLOCK 执行相同的工作。