需启用并配置磁盘配额功能,通过修改/etc/fstab添加usrquota/grpquota、运行quotacheck初始化数据库、用edquota设置用户/组软硬限制、edquota -t配置宽限期,并可选warnquota实现邮件告警。

如果您在统信UOS系统中需要限制特定用户或用户组对磁盘空间的使用量,防止个别账户无节制占用存储资源,则需启用并配置磁盘配额(quota)功能。该机制支持对ext4文件系统实施块配额(block quota)与inode配额(inode quota)的双重控制。以下是实现此目标的多种方法:
一、启用文件系统级配额支持
配额功能依赖于文件系统挂载选项,必须在/etc/fstab中为对应分区添加usrquota和/或grpquota参数,并重新挂载。此步骤是所有后续操作的前提。
1、执行df -Th确认目标分区(如/home)的挂载点及文件系统类型,确保其为ext4。
2、运行sudo nano /etc/fstab编辑挂载配置文件。
3、找到对应分区行(例如/dev/sda3 /home ext4 defaults 0 2),在defaults后添加,usrquota,grpquota,修改为:/dev/sda3 /home ext4 defaults,usrquota,grpquota 0 2。
4、保存退出后,执行sudo mount -o remount /home使新挂载参数立即生效。
5、验证是否启用成功:mount | grep home,输出中应包含usrquota和grpquota字样。
二、初始化配额数据库并扫描现有使用量
首次启用配额后,系统需构建配额数据库(aquota.user与aquota.group),并统计当前各用户/组已使用的磁盘块与inode数量。此过程不可跳过,否则配额将无法准确追踪。
1、切换至目标分区根目录:cd /home。
2、执行sudo quotacheck -cugm /home,其中-c创建新数据库、-u启用用户配额、-g启用组配额、-m即使文件系统未标记为启用也强制检查。
3、运行sudo quotaon /home激活配额功能。
4、确认状态:sudo quotaon -p /home,输出中user与group字段应显示on。
三、为单个用户设置硬性与软性空间限制
通过edquota命令可为指定用户设定块限制(磁盘空间)与inode限制(文件数量),支持软限制(允许临时超额)与硬限制(绝对上限)。
1、执行sudo edquota -u username(将username替换为实际用户名)。
2、在打开的vi编辑器中,修改以下字段:
第一列blocks为已用块数(只读,勿改);
第二列soft为软限制(单位KB);
第三列hard为硬限制(单位KB);
第四列inodes同理为inode数量限制。
3、例如设定用户最多使用2GB空间且不可超过,软限制设为1.8GB,输入:
1800000 2000000 0 0(分别对应soft blocks、hard blocks、soft inodes、hard inodes)。
4、保存退出(按Esc,输入:wq回车)。
5、立即应用限制:sudo quota -u username查看当前配额状态。
四、批量为用户组设置统一配额策略
当需对多个用户实施相同磁盘策略时,可基于用户组统一配置,避免逐个设定。组配额作用于该组所有成员累计使用的空间总和。
1、确认目标组存在且用户已加入:getent group groupname。
2、执行sudo edquota -g groupname(将groupname替换为实际组名)。
3、在编辑界面中,仅修改第二列(soft blocks)与第三列(hard blocks),其余保持为0;例如限制开发组总空间为10GB:
9500000 10000000 0 0。
4、保存退出后,运行sudo quota -g groupname验证配置是否加载。
5、注意:组配额需配合用户主组或附加组权限生效,非主组成员需显式加入该组并重新登录。
五、配置宽限期与告警阈值
软限制允许用户在宽限期内临时超出限额,超期未清理则自动锁定写入。可通过edquota -t设定全局宽限期,并结合warnquota服务发送邮件告警。
1、执行sudo edquota -t打开宽限期设置界面。
2、修改Block grace period行,将默认7天改为所需天数(如3天),格式为3 days。
3、保存退出后,该设置对所有启用软限制的用户/组生效。
4、启用邮件告警前,需确保系统已配置MTA(如ssmtp或postfix);安装warnquota包:sudo apt install warnquota。
5、编辑/etc/warnquota.conf,设置ADMIN = root及邮件地址,再启用服务:sudo systemctl enable --now warnquota.timer。










