size
我对使用 tmpfs 的 /tmp 是否遵守我在以下位置提供给它的参数感到困惑/etc/fstab
:
我的 fstab 条目现在显示为:
root_pool/var/tmp /tmp /var/tmp zfs rw,nodev,nosuid 0 0
tmpfs /tmp tmpfs rw,nodev,nosuid,noexec,nr_inodes=5k,size=2G,mode=1777 0 0
tmpfs /dev/shm tmpfs defaults,nodev,nosuid,nr_inodes=5k,mode=700,size=4G 0 0
但根据 du 的说法,它使用了我一半的内存(我理解这是默认值),而不是我想要分配给它的大小。
~ df /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 65921428 0 65921428 0% /tmp
那么这个size
参数根本不起作用吗?我正在使用 Ubuntu 20.04
编辑我可以使用手动安装它
sudo mount -oremount,size=4G /tmp
当我这样做时,/tmp
预期的是20.04 GB。
编辑:systemd 状态:
● tmp.mount - Temporary Directory (/tmp)
Loaded: loaded (/etc/systemd/system/tmp.mount; enabled; vendor preset: enabled)
Active: active (mounted) since Wed 2020-06-17 13:30:35 EDT; 8min ago
Where: /tmp
What: tmpfs
Docs: https://systemd.io/TEMPORARY_DIRECTORIES
man:file-hierarchy(7)
https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
Tasks: 0 (limit: 154317)
Memory: 76.0K
CGroup: /system.slice/tmp.mount
Jun 17 13:30:35 virtland systemd[1]: Mounting Temporary Directory (/tmp)...
Jun 17 13:30:35 virtland systemd[1]: Mounted Temporary Directory (/tmp).
和journalctl -u tmp.mount
-- Reboot --
Jun 17 13:27:50 virtland systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting an>
Jun 17 13:27:50 virtland systemd[1]: Mounting Temporary Directory (/tmp)...
Jun 17 13:27:50 virtland systemd[1]: Mounted Temporary Directory (/tmp).
Jun 17 13:29:43 virtland systemd[1]: Unmounting Temporary Directory (/tmp)...
Jun 17 13:29:43 virtland systemd[1]: tmp.mount: Succeeded.
Jun 17 13:29:43 virtland systemd[1]: Unmounted Temporary Directory (/tmp).
-- Reboot --
Jun 17 13:30:35 virtland systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting an>
Jun 17 13:30:35 virtland systemd[1]: Mounting Temporary Directory (/tmp)...
Jun 17 13:30:35 virtland systemd[1]: Mounted Temporary Directory (/tmp).
编辑2:设置 tmpfs 的大小/dev/shm
按预期工作:
# in fstab
tmpfs /dev/shm tmpfs defaults,nodev,nosuid,nr_inodes=5k,mode=700,size=4G 0 0
tmpfs 13184288 2328 13181960 1% /run
tmpfs 4194304 41056 4153248 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 65921432 0 65921432 0% /sys/fs/cgroup
tmpfs 65921432 0 65921432 0% /tmp
tmpfs 13184284 8 13184276 1% /run/user/1000
此外,尽管许多安全指南都推荐使用 noexec 选项,但它似乎存在问题,因为有些程序(包括 apt)需要从 /tmp 执行。我知道这可以绕过,但我不想弄清楚每个需要例外的程序。
答案1
在 Ubuntu 20.04 中,该单元tmp.mount
最初位于/usr/share/systemd/tmp.mount
。
系统管理员(用户)所做的修改/etc/systemd/system/
可能会影响到这些修改的优先级。
我不确定您的单位为何位于/etc/systemd/system/
。
我猜测您的tmp.mount
单位/etc/systemd/system/
正在干扰 fstab 中的条目。
为了确认这一点,请更改以下行/etc/systemd/system/tmp.mount
Options=mode=1777,strictatime,nosuid,nodev
进入
Options=mode=1777,strictatime,nosuid,nodev,size=YOURSIZE
为了获得您想要的行为,请禁用并删除中定义的单元/etc/systemd/system/tmp.mount
。