在Linux中用xfs_quota实现用户或项目磁盘硬上限限制,核心是绑定UID/GID/Project ID而非路径,硬限制(bhard)为不可突破绝对值,且须在XFS启用uquota/gquota/prjquota前提下操作:一、限用户需挂载含uquota、scan -u初始化、limit -u bhard=2g alice;二、限组需建组并chgrp、挂载含gquota、init初始化、limit -g bhard=5g proj-ai;三、限目录需挂载含prjquota、xfs_io设projid、scan -p初始化、limit -p bhard=3g 100;所有硬限生效后超限写入即报“Disk quota exceeded”。

在 Linux 中用 xfs_quota 实现针对特定用户或项目的磁盘硬上限限制,核心在于:配额必须绑定到 UID、GID 或 Project ID,而非路径;硬限制(bhard)设为不可突破的绝对值;所有操作需在 XFS 文件系统启用对应配额选项的前提下进行。
下面分三类常见场景说明关键步骤和要点:
一、限制单个用户(按 UID)
适用于为运维、开发等独立账号设定专属空间上限。
- 确认挂载时已启用 uquota:运行
mount | grep xfs,输出中应含uquota;若无,编辑/etc/fstab,在对应行添加,uquota,再执行mount -o remount /data - 初始化配额数据库:
xfs_quota -x -c 'scan -u' /data(首次启用必做,否则 limit 会失败) - 设置硬限制(例如 2 GB):
xfs_quota -x -c 'limit -u bhard=2g alice' /data(单位支持k/m/g,默认 KB) - 验证:
xfs_quota -x -c 'report -u -h' /data,查看 alice 行的 hard 列是否为 2.0G
二、限制项目团队(按 GID)
适合多人协作目录(如 /data/project-ai),统一管控总用量。
- 创建专用组:
groupadd proj-ai,并将项目目录归属该组:chgrp -R proj-ai /data/project-ai && chmod -R g+s /data/project-ai(确保新文件继承组) - 挂载选项需含 gquota(可与 uquota 共存),如:
/dev/sdb1 /data xfs defaults,uquota,gquota 0 0 - 初始化:
xfs_quota -x -c 'init' /data(init自动扫描并建库,比scan -g更稳妥) - 设组硬限(5 GB):
xfs_quota -x -c 'limit -g bhard=5g proj-ai' /data - 检查:
xfs_quota -x -c 'report -g' /data,确认 proj-ai 的 hard 值生效
三、限制指定目录(按 Project ID)
XFS 独有的“目录级”配额方式,真正按路径控制,但需手动分配 project ID。
- 挂载时启用 prjquota(不是 uquota/gquota):
/dev/sdb1 /data xfs defaults,prjquota 0 0 - 为目录设置 project ID:
xfs_io -c 'projid 100' /data/project-web(100 是自定义 ID,需唯一) - 初始化:
xfs_quota -x -c 'scan -p' /data - 设 project 硬限:
xfs_quota -x -c 'limit -p bhard=3g 100' /data(注意此处用数字 ID,非名称) - 验证:
xfs_quota -x -c 'report -p' /data,看 ID 100 对应的 hard 是否匹配
硬限制生效后,用户/组/目录一旦写满,再尝试创建或追加文件会直接报错 Disk quota exceeded。它不清理已有数据,只阻断新增——这点和软限制+宽限期有本质区别。











