命令是干什么的
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/Hard | inode 用量,需加 -i 查看 | 小文件业务必须盯这一组 |
XFS 的配额必须在挂载阶段启用:改完 fstab 要么 remount 要么重启,没生效时 xfs_quota 会提示配额未启用、报表为空,先看 findmnt 的挂载参数再动手。
ext4 用 quota 与 tune2fs 加 usrquota/grpquota 挂载选项,命令和 XFS 完全不同;同一台机器两种文件系统并存时,排查口径要分开,别拿一套命令去套另一种。
软限并不等于没有限制:超出软限后进入宽限期,宽限期结束仍然超用就会按硬限处理,后续写入失败,所以软限也要有人盯。