首页/系统/Linux 运维命令速查/XFS 项目配额(xfs_quota)
磁盘与文件系统51 条

XFS 项目配额(xfs_quota)

XFS 用 xfs_quota 做用户/组/项目配额;项目配额(prjquota)适合「一个目录一个配额」的共享存储场景。

Linux 运维命令速查系统更新于 2026-10-13

命令是干什么的

XFS 文件系统的磁盘配额由 xfs_quota 统一管理,与 ext4 的 quota 工具链完全不通用。XFS 支持三种口径:用户配额、组配额和项目配额。项目配额(prjquota)把一棵目录树当作配额对象,适合共享存储里一个团队、一个服务、一份额度的场景,这是 ext4 传统配额不容易做到的。配额能力由挂载选项决定,没有在挂载时启用对应口径,xfs_quota 既看不到用量也强制不了限制。

基本信息

适用平台XFS 文件系统(RHEL/CentOS 7 起、SLES、Ubuntu 常见默认文件系统)
核心语法xfs_quota -x -c 子命令 挂载点,-x 进入专家模式才允许改配置
配额口径-u 用户、-g 组、-p 项目;块用量用 -b,inode 用量用 -i
启用前提挂载选项 usrquota/grpquota/prjquota,旧写法 uquota/gquota/pquota,加 noenforce 前缀则只统计不强制
关联文件/etc/projects 记录项目编号与路径,/etc/projid 记录项目编号与名字
权限要求查看用量普通用户可读,设置与修改配额需要 root

典型使用场景

  • 共享存储按项目或团队分目录,给每个目录设独立容量上限,而不是逐个用户设
  • 备份盘与日志盘限流:防止单个服务把整个文件系统写满,拖垮同机其他业务
  • 文件数配额:小文件海量写入会先耗尽 inode,容量还剩不少却已经写不进去
  • 先只统计不强制,摸清各项目真实用量再决定限额,避免上线即触发告警
  • 交付与运营报表:report 直接出人类可读的用量数字,不用再去目录上 du

启用与配置

启用与配置
# 1) 挂载时启用配额:XFS 配额是挂载选项,不是创建文件系统时的参数
# UUID=xxx /data xfs defaults,prjquota 0 0       写入 /etc/fstab
sudo mount -o remount /data             # 已挂载的文件系统先 remount 让选项生效
findmnt -no OPTIONS /data               # 复核 prjquota 是否真的在挂载参数里
# 2) 声明项目编号并绑定目录:-s 会遍历目录树打标
sudo xfs_quota -x -c 'project -s -p /data/team1 101' /data
sudo xfs_quota -x -c 'project -c -p /data/team1 101' /data   # -c 只检查不修改
# 3) 设限额:b 是块数量,i 是 inode 数量,soft 软限 hard 硬限
sudo xfs_quota -x -c 'limit -p bsoft=45g bhard=50g isoft=20000 ihard=25000 101' /data

查看用量与状态

查看用量与状态
sudo xfs_quota -x -c 'report -h -p' /data    # 项目配额报表,-h 输出 G/M 单位
sudo xfs_quota -x -c 'report -h -u' /data    # 用户配额报表
sudo xfs_quota -x -c 'report -h -i -p' /data # 只看 inode 用量
sudo xfs_quota -x -c 'state -p' /data        # 配额开关状态与宽限期设置
sudo xfs_quota -x -c 'df -h' /data           # 站在配额视角看文件系统整体用量
sudo xfs_quota -x -c 'quota -h -p 101' /data # 单看 101 号项目的额度与用量

report 输出逐列读法

列名含义正常与异常
ID项目编号,可在 /etc/projid 里映射成名字应与 project -s 时指定的编号一致
Used该项目树已用块数,加 -h 显示为 G/M 单位持续逼近 Soft 就该预警
Soft软限,超出后进入宽限期显示 0 表示没有设置软限
Hard硬限,达到后写入直接失败只有设置了硬限才真正拦得住写入
Warn/Grace超出软限后的剩余宽限时间或告警计数出现具体天数说明已经超软限
第二组 Used/Soft/Hardinode 用量,需加 -i 查看小文件业务必须盯这一组
XFS 的配额必须在挂载阶段启用:改完 fstab 要么 remount 要么重启,没生效时 xfs_quota 会提示配额未启用、报表为空,先看 findmnt 的挂载参数再动手。
ext4 用 quota 与 tune2fs 加 usrquota/grpquota 挂载选项,命令和 XFS 完全不同;同一台机器两种文件系统并存时,排查口径要分开,别拿一套命令去套另一种。
软限并不等于没有限制:超出软限后进入宽限期,宽限期结束仍然超用就会按硬限处理,后续写入失败,所以软限也要有人盯。

易错点

  • 挂载参数里没有 prjquota 就去设限额:命令会报错或返回空报表,配额根本没落地,动手前先用 findmnt -no OPTIONS 确认口径已经生效
  • 只配软限不配硬限:超限只记警告和宽限期,容量照样被写满,要真正限制必须设置 bhard 或 ihard
  • 改了 fstab 忘记 remount 或重启:报表一直是空的,容易被误判成配额数据损坏,白白排查方向
  • 新建的项目目录没有重新执行 project -s 打标:这些目录不在项目范围内,用量统计漏算,额度形同虚设

数据来源与参考

  • man 8 xfs_quota
  • XFS 官方文档:project quota

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌