![tmpfs 上的 tmp:fstab 与 tmp.mount 使用 systemd](https://linux22.com/image/212555/tmpfs%20%E4%B8%8A%E7%9A%84%20tmp%EF%BC%9Afstab%20%E4%B8%8E%20tmp.mount%20%E4%BD%BF%E7%94%A8%20systemd.png)
要/tmp
在 tmpfs 上使用,我知道我可以使用 中的条目/etc/fstab
,但我不明白 的作用/etc/default/tmpfs
提及有时,以及在什么情况下我需要创建或修改它。
最近,我经常看到建议使用systemdtmp.mount
配置。例如,在 Debian 上:
$ sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/
$ sudo systemctl enable tmp.mount
这两种方法哪一种更适合日常使用?在什么情况下,一种比另一种更好?我什么时候需要处理/etc/default/tmpfs
?
答案1
在某些系统上,/tmp
是tmpfs
默认的,这是配置由 systemd 的“API 文件系统”提供。基于 Fedora 的系统在不同程度上遵循这种模式; Fedora 本身附带/usr/lib/systemd/system/tmp.mount
并启用了它,但 RHEL 8 附带了它但没有启用它。在此类系统上,屏蔽和取消屏蔽设备是禁用或启用tmpfs
/tmp
、如 API 文件系统文档中所述。
其他系统,例如 Debian不要运送tmp.mount
到可直接使用的位置;这就是为什么/etc/systemd/system
如果你想使用它,你需要将其复制到。这有一个不幸的副作用,即创建对tmp.mount
in的完全覆盖/etc
,这意味着如果包将来systemd
发布不同版本的tmp.mount
in ,它将被忽略。/lib/systemd/system
在这样的系统上我建议使用/etc/fstab
。
在这两种设置中,/etc/fstab
仍然是推荐的方式定制安装/tmp
座,例如改变它们的大小;man systemd.mount
说
一般来说,通过配置挂载点
/etc/fstab
是管理人类挂载的首选方法。
使用安装单元是推荐用于工具,IE对于自动配置:
对于工具,编写安装单元应优先于编辑
/etc/fstab
。
(这意味着想要自动设置挂载的工具不应该尝试编辑/etc/fstab
,这很容易出错,而应该安装一个挂载单元,它可以原子地完成,也可以由系统管理员使用 systemd 覆盖特征。)
/etc/default/tmpfs
由 Debian 使用sysvinit
,因此与 systemd 无关。
答案2
我总是禁用 /tmp 作为 /tmpfs,因为它会占用宝贵的 RAM,尤其是在 Raspberry Pi 等系统上。
因此,我使用systemctl 掩码 tmp.mount在 systemd 上禁用它。
另外,我不希望每次启动时都清除 /tmp,也不希望考虑在 /var/tmp 中存储半临时文件。
临时对我来说意味着“不是系统关键”,但并不意味着“启动之间不必要”。
因此,我将 /tmp 用于生命周期较短的所有内容,并对其进行管理。
因此,如果您在系统上主要以单个用户身份工作,我建议将 /tmp 保留在根分区上,并且根本不要将其分开。
这还允许在 /tmp 中临时保存大文件,例如压缩档案、下载等,而不会耗尽内存或仅为 /tmp 保留大部分磁盘空间。