3.7.4 用户与组配额机制

用户与组配额机制用于限制单个用户或用户组在文件系统上的资源占用,避免个体资源滥用影响整体可用性。配额以文件系统为单位生效,内核基于文件属主/属组统计资源占用并在写入前校验阈值。配额与权限互补:权限决定“能否访问”,配额决定“能否继续占用”。

文章图片

配额核心指标包括块配额(磁盘空间)与 inode 配额(文件/目录数量),每项又分软限制与硬限制。软限制允许短期超用并受宽限期控制,硬限制为不可突破的上限。用户配额统计文件所有者占用,组配额统计文件所属组占用;chgrp 改变属组会触发组配额重新统计。

安装与启用(以 ext4 为例)#

# 1) 安装配额工具
sudo yum -y install quota      # RHEL/CentOS
# sudo apt -y install quota    # Ubuntu/Debian

# 2) 挂载时启用配额(示例:/data)
sudo mkdir -p /data
sudo mount /dev/sdb1 /data

# 3) 修改 /etc/fstab 以启用用户/组配额
# /dev/sdb1  /data  ext4  defaults,usrquota,grpquota  0 2

# 4) 重新挂载生效
sudo mount -o remount /data

# 5) 创建配额数据库并开启
sudo quotacheck -cugm /data
sudo quotaon /data

# 6) 查看配额状态
sudo quotaon -p /data

用户与组配额设置示例#

# 1) 设置用户配额(对用户 alice)
sudo edquota -u alice
# 会打开编辑器,设置块与 inode 的软/硬限制

# 2) 设置组配额(对组 dev)
sudo edquota -g dev

# 3) 设置宽限期(全局或按文件系统)
sudo edquota -t

示例:通过命令直接设置用户配额(适合脚本化)

# -u 用户  -f 文件系统  -s 表示以 MB/GB 计
sudo setquota -u alice 5G 6G 200000 250000 /data
# 解释:软限制5G,硬限制6G;inode软限制20万,硬限制25万

配额统计与验证#

# 查看用户配额使用情况
quota -u alice

# 查看组配额使用情况
quota -g dev

# 查看文件系统配额总览
repquota -a

排错与诊断要点#

1) 配额未生效

# 检查挂载参数是否包含 usrquota/grpquota
mount | grep /data

2) quotacheck 报错或配额文件缺失

# 确认文件系统支持配额
tune2fs -l /dev/sdb1 | grep -i quota

# 重新生成配额文件
sudo quotacheck -cugm /data

3) 用户超软限制但未限制写入

# 检查宽限期
sudo edquota -t
# 宽限期未到期前允许超用

4) 变更属组后组配额统计异常

# 重新统计
sudo quotacheck -ug /data

练习(可验证效果)#

# 1) 创建用户与组
sudo groupadd dev
sudo useradd -m -g dev alice

# 2) 设置配额
sudo setquota -u alice 100M 120M 1000 1200 /data
sudo setquota -g dev  500M 600M 5000 6000 /data

# 3) 模拟写入并观察限制
sudo -u alice dd if=/dev/zero of=/data/bigfile bs=1M count=130

# 4) 查看配额报告
quota -u alice
repquota -a

在多用户环境中,可按角色制定差异化策略:开发用户限制 inode,数据分析用户限制块配额;组配额用于团队级资源分配。配额机制确保共享环境中资源公平与稳定。