即使超过软限制,配额也不会报告任何警告。只报告硬限制的警告
Quota doesn't report any warning even if the soft limit is crossed. Only reports the warning for hard limit
我在云机上安装了linux配额包并启用了磁盘配额。 Linux 版本是 Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-112-generic x86_64)。机器是域的一部分。
fstab 的内容:
LABEL=cloudimg-rootfs / ext4 usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
/dev/vdb /data ext4 usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 0
sudo repquota -ugsCv /data 的结果:
Report for user quotas on device /dev/vdb
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20329M 0K 0K 476k 0 0
[username1] -- 2172M 0K 0K 221k 0 0
systemd-network -- 228K 0K 0K 57 0 0
[username2] -- 7104K 0K 0K 212 0 0
systemd-resolve -- 4054M 0K 0K 49404 0 0
[username3] +- 201M 200M 220M 6days 4 0 0
我明白了,我的 username3 已达到配额和软限制,但我 没有收到任何警告 执行任何文件操作时控制台,直到达到硬限制,然后我看到:
cp: error writing '/data/testquota/testfile2': Disk quota exceeded
如何修复此行为或错误,我希望在控制台中显示警告,否则这是不可能的?
配额开发者的回答 |创作者 Jan Kara:
您看到的只是来自 cp(1) 的一条消息,它从 write(2) 系统调用中获得了 EDQUOT 错误。有关达到软限制(和硬限制)的警告由内核打印到进程的控制终端,您似乎看不到任何警告。现在的问题是你的云机器中cp(1)进程的控制终端是什么,为什么看不到消息。您可以找到控制终端,例如来自 ps(1) 输出(TTY 列)。还可以从您的计算机的 /proc/config.gz 中找到这些行:
CONFIG_QUOTA
CONFIG_QUOTA_NETLINK_INTERFACE
CONFIG_PRINT_QUOTA_WARNING
如果未设置 CONFIG_PRINT_QUOTA_WARNING,则编译内核时不支持将配额警告打印到控制台。如果你有 CONFIG_QUOTA_NETLINK_INTERFACE=y,那么内核是用 CONFIG_QUOTA_NETLINK_INTERFACE 编译的,所以你可以 运行 quota_nld 守护进程(来自 quota-tools 包)将消息打印到控制台。
所以我 运行 sudo quota_nld -b
并将其放入 cron 中,所有用户开始收到警告。
我在云机上安装了linux配额包并启用了磁盘配额。 Linux 版本是 Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-112-generic x86_64)。机器是域的一部分。
fstab 的内容:
LABEL=cloudimg-rootfs / ext4 usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
/dev/vdb /data ext4 usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 0
sudo repquota -ugsCv /data 的结果:
Report for user quotas on device /dev/vdb
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20329M 0K 0K 476k 0 0
[username1] -- 2172M 0K 0K 221k 0 0
systemd-network -- 228K 0K 0K 57 0 0
[username2] -- 7104K 0K 0K 212 0 0
systemd-resolve -- 4054M 0K 0K 49404 0 0
[username3] +- 201M 200M 220M 6days 4 0 0
我明白了,我的 username3 已达到配额和软限制,但我 没有收到任何警告 执行任何文件操作时控制台,直到达到硬限制,然后我看到:
cp: error writing '/data/testquota/testfile2': Disk quota exceeded
如何修复此行为或错误,我希望在控制台中显示警告,否则这是不可能的?
配额开发者的回答 |创作者 Jan Kara:
您看到的只是来自 cp(1) 的一条消息,它从 write(2) 系统调用中获得了 EDQUOT 错误。有关达到软限制(和硬限制)的警告由内核打印到进程的控制终端,您似乎看不到任何警告。现在的问题是你的云机器中cp(1)进程的控制终端是什么,为什么看不到消息。您可以找到控制终端,例如来自 ps(1) 输出(TTY 列)。还可以从您的计算机的 /proc/config.gz 中找到这些行:
CONFIG_QUOTA
CONFIG_QUOTA_NETLINK_INTERFACE
CONFIG_PRINT_QUOTA_WARNING
如果未设置 CONFIG_PRINT_QUOTA_WARNING,则编译内核时不支持将配额警告打印到控制台。如果你有 CONFIG_QUOTA_NETLINK_INTERFACE=y,那么内核是用 CONFIG_QUOTA_NETLINK_INTERFACE 编译的,所以你可以 运行 quota_nld 守护进程(来自 quota-tools 包)将消息打印到控制台。
所以我 运行 sudo quota_nld -b
并将其放入 cron 中,所有用户开始收到警告。