XFS project配额通过目录路径绑定唯一ID实现目录级限额,需挂载时启用prjquota选项,配置/etc/projects与/etc/projid后执行project -s扫描,并用limit命令设置空间及文件数限制。

直接用 XFS 的 project 配额,比用户或组配额更贴合目录级管理需求——它不依赖用户身份,而是绑定目录路径,天然支持“一个目录一套限额”。
启用 project 配额支持
挂载时必须显式开启,否则 xfs_quota 会报“函数未实现”。不能仅靠安装配额工具或修改 fstab 就生效。
- 临时启用:运行
mount -o remount,prjquota /mount/point - 永久生效:在
/etc/fstab对应行的挂载选项中加入prjquota,例如:/dev/sdb1 /data xfs defaults,prjquota 0 0 - 验证是否成功:执行
mount | grep /data,输出中应含prjquota,而非noquota
为目录分配唯一 project ID
project 配额的核心是把目录和一个数字 ID 关联起来,后续所有限制都基于该 ID 生效。
- 编辑
/etc/projects,添加一行:100:/data/project_a(ID 和路径用冒号分隔) - 编辑
/etc/projid,添加对应映射:project_a:100 - 执行
xfs_quota -x -c 'project -s -d project_a' /data扫描并标记该目录及其子目录归属此 project - 注意:project ID 必须全局唯一;路径必须是已存在且属于该文件系统的绝对路径
设置并验证目录空间限制
限制直接作用于 project ID,对目录内所有用户透明,无需为每个用户单独配置。
- 设定硬限 5GB、软限 4GB,文件数硬限 10000:
xfs_quota -x -c 'limit -p bsoft=4g bhard=5g ihard=10000 100' /data - 查看效果:
xfs_quota -x -c 'report -p' /data,输出中会显示 project 100 的已用、软限、硬限 - 测试写入:普通用户在
/data/project_a下创建大文件,达到 4GB 后收到警告,超 5GB 时写入失败(返回 Disk quota exceeded)
日常维护与排障要点
project 配额易用但细节决定成败,几个关键习惯能避免多数问题。
- 每次修改
/etc/projects或/etc/projid后,必须重新运行project -s才能生效 - 删除目录前,先用
xfs_quota -x -c 'project -d project_a' /data解除 project 绑定,否则残留元数据影响新目录 - 配额统计有延迟,刚写入的数据可能未立即计入;用
xfs_info /data可确认配额功能是否真正激活 - 不要混用 user/group 和 project 配额在同一挂载点,逻辑容易冲突,排查困难

















