3.7.5 配额配置、管理与监控

本节给出配额从安装、启用、设置到监控告警的完整操作链路,包含原理草图、可执行示例、命令解释、排错与练习,确保可落地。

1) 原理草图:配额控制链路

文章图片

2) 安装与启用(ext4示例)
- 安装工具quota/quota-tools
- 挂载参数usrquota,grpquota
- 生成配额文件quotacheck
- 启用配额quotaon

# 1. 安装(RHEL/CentOS)
yum install -y quota

# 2. 修改 /etc/fstab 增加配额参数
# 设备    挂载点   类型   参数                           dump fsck
/dev/vdb1 /data   ext4  defaults,usrquota,grpquota     0    2

# 3. 重新挂载使参数生效
mount -o remount /data

# 4. 初始化配额文件(-a全部,-v详细,-u用户,-g组)
quotacheck -avug

# 5. 开启配额
quotaon -av

# 6. 验证
repquota -a

3) xfs配额启用示例
xfs不使用aquota.*,用xfs_quota管理。

# /etc/fstab
/dev/vdb1 /data xfs defaults,uquota,gquota 0 0

mount -o remount /data

# 进入xfs_quota交互
xfs_quota -x -c 'report -h' /data

4) 配额设置与命令解释(含示例)
- edquota:交互式编辑软/硬限制
- setquota:脚本化批量设置
- edquota -t:设置宽限期
- quota -s:查看用户配额(人类可读)

# 1. 设置用户alice软/硬限制(块与inode)
edquota -u alice
# 打开后示例含义:
# Filesystem  blocks  soft   hard   inodes  soft  hard
# /dev/vdb1   10240   20480  25600  1000    1500  2000
# 解释:blocks为已用,soft/hard为软硬限制;inodes为文件数限制

# 2. 设置宽限期(软限超限可用期)
edquota -t
# 示例输出:
# Time units may be: days, hours, minutes, or seconds
# Filesystem  Block grace period  Inode grace period
# /dev/vdb1   7days               7days

# 3. 批量设置(setquota)
# setquota -u 用户 块软 块硬 inode软 inode硬 挂载点
setquota -u bob 20480 25600 1500 2000 /data

# 4. 快速复制模板用户
edquota -p alice bob

# 5. 查看用户配额
quota -s -u alice

5) 监控与告警落地(脚本示例)
repquota转换为指标,输出超限用户列表,可接入Prometheus/告警系统。

#!/bin/bash
# /usr/local/bin/quota_check.sh
# 输出:超软限/硬限用户列表
repquota -a | awk '
NR>2 && $1 ~ /^\/dev/ {fs=$1}
NR>2 && $1 !~ /^\/dev/ && $1 != "block" {
  user=$1; used=$3; soft=$4; hard=$5; grace=$7
  if (used > soft && soft > 0) {
    printf("WARN user=%s used=%s soft=%s hard=%s grace=%s fs=%s\n", user, used, soft, hard, grace, fs)
  }
  if (used > hard && hard > 0) {
    printf("CRIT user=%s used=%s soft=%s hard=%s grace=%s fs=%s\n", user, used, soft, hard, grace, fs)
  }
}'

预期效果:超软限输出WARN,超硬限输出CRIT,可被监控采集。

6) 常见排错清单(含命令)
- 配额未生效:检查挂载参数
bash mount | grep /data # 预期包含 usrquota,grpquota 或 uquota,gquota
- quotacheck失败:确认文件系统只读/损坏
bash dmesg | tail fsck -f /dev/vdb1
- xfs配额无效:确认uquota/gquota参数并重挂载
bash xfs_quota -x -c 'state' /data
- 配额文件丢失:重新生成
bash quotacheck -avug quotaon -av

7) 维护建议与最佳实践
- 扩容或修复后执行quotacheck校验一致性。
- 将配额配置变更纳入变更记录。
- 与用户目录规划结合,避免配额过细导致管理复杂。

8) 练习
1. 在/data对用户alice设置软限20G、硬限25G、inode软限1500、硬限2000。
2. 让alice写入超过软限的数据,观察quota -s输出与宽限期效果。
3. 用setquota批量给bobcarol设置相同配额。
4. 在xfs上用xfs_quota生成报告并导出为文本。