fstab 中 tmpfs 的“size”参数不起作用吗?

Sto*_*aft 5 fstab mount tmp tmpfs shm

我对使用 tmpfs 的 /tmp 是否尊重size我在以下文件中提供给它的参数感到困惑/etc/fstab

\n

我的 fstab 条目现在显示为:

\n
root_pool/var/tmp  /tmp /var/tmp zfs rw,nodev,nosuid 0 0\ntmpfs /tmp tmpfs rw,nodev,nosuid,noexec,nr_inodes=5k,size=2G,mode=1777 0 0\ntmpfs /dev/shm tmpfs   defaults,nodev,nosuid,nr_inodes=5k,mode=700,size=4G 0 0\n\n
Run Code Online (Sandbox Code Playgroud)\n

但根据 du 的说法,它使用了我的一半内存(我理解这是默认值),而不是我打算分配给它的大小。

\n
 ~ df /tmp\nFilesystem     1K-blocks  Used Available Use% Mounted on\ntmpfs           65921428     0  65921428   0% /tmp\n
Run Code Online (Sandbox Code Playgroud)\n

那么该size参数根本没有任何作用吗?\n我正在使用 Ubuntu 20.04

\n

编辑我可以手动安装它

\n
sudo mount -oremount,size=4G /tmp\n
Run Code Online (Sandbox Code Playgroud)\n

当我这样做时,/tmp预期是 20.04 GB。

\n

编辑:系统状态:

\n
\xe2\x97\x8f tmp.mount - Temporary Directory (/tmp)\n     Loaded: loaded (/etc/systemd/system/tmp.mount; enabled; vendor preset: enabled)\n     Active: active (mounted) since Wed 2020-06-17 13:30:35 EDT; 8min ago\n      Where: /tmp\n       What: tmpfs\n       Docs: https://systemd.io/TEMPORARY_DIRECTORIES\n             man:file-hierarchy(7)\n             https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems\n      Tasks: 0 (limit: 154317)\n     Memory: 76.0K\n     CGroup: /system.slice/tmp.mount\n\nJun 17 13:30:35 virtland systemd[1]: Mounting Temporary Directory (/tmp)...\nJun 17 13:30:35 virtland systemd[1]: Mounted Temporary Directory (/tmp).\n
Run Code Online (Sandbox Code Playgroud)\n

journalctl -u tmp.mount

\n
-- Reboot --\nJun 17 13:27:50 virtland systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting an>\nJun 17 13:27:50 virtland systemd[1]: Mounting Temporary Directory (/tmp)...\nJun 17 13:27:50 virtland systemd[1]: Mounted Temporary Directory (/tmp).\nJun 17 13:29:43 virtland systemd[1]: Unmounting Temporary Directory (/tmp)...\nJun 17 13:29:43 virtland systemd[1]: tmp.mount: Succeeded.\nJun 17 13:29:43 virtland systemd[1]: Unmounted Temporary Directory (/tmp).\n-- Reboot --\nJun 17 13:30:35 virtland systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting an>\nJun 17 13:30:35 virtland systemd[1]: Mounting Temporary Directory (/tmp)...\nJun 17 13:30:35 virtland systemd[1]: Mounted Temporary Directory (/tmp).\n
Run Code Online (Sandbox Code Playgroud)\n

Edit2:设置 tmpfs 的大小按/dev/shm预期工作:

\n
# in fstab\ntmpfs /dev/shm tmpfs   defaults,nodev,nosuid,nr_inodes=5k,mode=700,size=4G 0 0\n
Run Code Online (Sandbox Code Playgroud)\n
tmpfs                                  13184288       2328   13181960   1% /run\ntmpfs                                   4194304      41056    4153248   1% /dev/shm\ntmpfs                                      5120          4       5116   1% /run/lock\ntmpfs                                  65921432          0   65921432   0% /sys/fs/cgroup\ntmpfs                                  65921432          0   65921432   0% /tmp\ntmpfs                                  13184284          8   13184276   1% /run/user/1000\n
Run Code Online (Sandbox Code Playgroud)\n

另外,尽管许多安全指南都推荐使用 noexec 选项,但它似乎是有问题的,因为某些程序(包括 apt)需要从 /tmp 执行。我知道这是可以解决的,但我不想弄清楚每个需要例外的程序。

\n

Oxy*_*yra 4

在 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
Run Code Online (Sandbox Code Playgroud)

进入

Options=mode=1777,strictatime,nosuid,nodev,size=YOURSIZE
Run Code Online (Sandbox Code Playgroud)

要获得您想要的行为,请禁用并删除 中定义的单元/etc/systemd/system/tmp.mount