XFS文件系统原生支持目录级配额,需启用prjquota挂载选项,并通过/etc/projects和/etc/projid绑定project ID,再用xfs_quota设置空间与文件数限制。

Linux 系统中,**标准 quota(ext4/ext3)不支持目录级配额**,只有 XFS 文件系统原生支持针对任意目录(而非仅挂载点)的配额管理,这叫 目录配额(directory quota) 或 项目配额(project quota)。如果你需要“为特定目录单独配置子目录级别的配额”,必须满足两个前提:使用 XFS 文件系统,并启用 project quota 功能。
确认文件系统类型与 project quota 支持
先检查目标目录所在分区是否为 XFS:
- 运行
df -T /path/to/dir,确认 Type 列显示xfs - XFS 内核模块默认已启用,无需额外编译;但挂载时需显式开启 project quota 支持
- 查看当前挂载参数:
mount | grep $(df -P /path/to/dir | tail -1 | awk '{print $1}'),输出中必须含prjquota(不是 usrquota/grpquota)
若无 prjquota,需编辑 /etc/fstab,在对应 XFS 分区行的挂载选项中加入 prjquota(例如:defaults,prjquota),再执行 sudo mount -o remount /mount/point。
为目录分配唯一 project ID 并启用 project 配额
XFS 目录配额本质是绑定到一个 project ID(整数),每个 project ID 可关联一个或多个目录:
- 编辑
/etc/projects,添加一行:123:/path/to/target/dir(123 是你指定的 project ID,必须唯一) - 编辑
/etc/projid,添加一行:myproject:123(给 project ID 起个易记名) - 运行
sudo xfs_quota -x -c 'project -s myproject' /mount/point,将该目录标记为 project 123 的根,并扫描当前使用量
设置该目录的磁盘空间与文件数限制
使用 xfs_quota 设置 project 级别限制(单位默认为 KiB 和个数):
- 进入交互模式:
sudo xfs_quota -x -c 'limit -p bsoft=524288 bhard=5767168 ihard=10000 myproject' /mount/point
→ 表示:软限 512 MiB、硬限 5.5 GiB、最多 10000 个文件 - 也可用
-c 'timer -p'查看宽限期(project 默认 7 天),或'timer -p 3days'修改 - 注意:project quota 不区分用户,只要写入该目录(无论哪个用户),都计入此 project 总用量
验证与日常管理
配额生效后可快速验证:
- 查用量:
xfs_quota -x -c 'report -h -P' /mount/point(-P 显示 project,-h 人性化单位) - 查单个 project:
xfs_quota -x -c 'report -h -P -p myproject' /mount/point - 临时禁用:
xfs_quota -x -c 'disable -p' /mount/point;重新启用:enable -p - 注意:ext4 用户若强行想“模拟”目录配额,只能靠 bind mount + 单独挂载小分区,无法真正实现子目录粒度控制


















