CentOS 7怎么修改具体的文件系统配额
修改XFS文件系统配额时,需先在/etc/fstab挂载点启用uquota或gquota选项,然后重新挂载文件系统使配额生效。之后以xfs_quota-x专家模式为用户或组设置软硬限制。修改后务必执行report命令验证,并检查输出确保限制值已写入且用量被正确统计。
文件系统配额这件事,看起来简单,但坑不少。很多人在CentOS 7上折腾XFS配额,来回改了好几次,发现用户照样能把磁盘塞满,最后查了半天才发现是最基础的挂载参数没弄对。今天就把这套流程掰开揉碎讲清楚。
修改 XFS 文件系统配额必须先启用 uquota/gquota 挂载选项
直接运行 xfs_quota 命令去修改配额之前,/etc/fstab 里对应的挂载点必须加上 uquota(用户)或 gquota(组)选项——少这一步,所有的 limit 设置都不会真的生效。XFS 不像 ext4 需要额外创建配额文件,但它依赖内核在挂载时就加载配额支持。
一个特别容易踩的坑是:改完 /etc/fstab 后忘了重新挂载或重启。mount -o remount /home 这条命令只在某些场景下有效;如果 /home 正在被多个用户使用,remount 可能直接失败,这时候要么重启,要么进单用户模式处理。
/dev/mapper/centos-home /home xfs defaults,uquota,gquota 0 0是标准写法,defaults已经包含了rw,suid,dev,exec,auto,nouser,async,不需要额外补全- 别把
prjquota和uquota混着用:前者负责目录级配额(需要配合/etc/projects文件),后者管的是用户/组维度,两者不兼容 - 如果 SELinux 处于
enforcing状态,它可能会拦截配额的写入操作。可以临时设成permissive,或者检查sestatus输出有没有拒绝日志
用 xfs_quota -x 修改用户或组的软硬限制
xfs_quota 的普通模式(不带 -x 参数)只能查询,改不了任何限制。所有修改操作必须进入专家模式:xfs_quota -x /home。进去之后命令不需要加 sudo,因为 shell 本身已经以 root 权限运行了。
举个修改用户配额的例子(把用户 kass 的容量软限设为 50MB、硬限设成 60MB):
xfs_quota -x /home xfs_quota> limit -u bsoft=50m bhard=60m kass
如果是修改组配额(比如组 kasstest 的文件数硬限设为 25000):
xfs_quota> limit -g ifhard=25000 kasstest
几个关键点:
bsoft/bhard控制的是磁盘块(空间),单位可以用k、m、g;isoft/ihard控制的是 inode(文件数)- 把值设为
0就等于取消了该维度的限制,比如isoft=0 ihard=0表示只限制空间大小,不限文件数量 - 修改后立刻生效,不需要重启服务或等待扫描——这是 XFS 配额和 ext4 之间最本质的区别之一
修改后必须用 report 或 quota 验证,别信 limit 命令的返回
limit 命令执行成功只能说明语法通过了,并不代表数据真的写入了。真正生效与否,要看 report 的输出里是不是显示了新值,同时 Used 列不能是 0(说明已经有用量被统计进来了)。
验证用户配额的命令:
xfs_quota -x -c "report -h -u" /home
验证组配额的命令:
xfs_quota -x -c "report -h -g" /home
需要注意的情况:
- 如果输出里
Soft和Hard列还是0,那就说明挂载选项没生效,或者路径错了(比如误对/执行——XFS 不支持根目录配额) quota -u kass会显示当前用量,但不会显示设定的值;quota -v kass才会列出软硬限制,不过它依赖/etc/passwd解析用户名,如果用户不存在会直接报错- 宽限期(grace period)默认是 7 天,可以通过
timer命令调整,不过大多数场景下保持默认就够用了
ext4 文件系统配额修改流程完全不同
如果你把 XFS 那套方法直接搬到 ext4 上,第一步就会卡住。ext4 必须先运行 quotacheck -ug /mountpoint 生成 aquota.user 和 aquota.group,然后用 quotaon 启用配额,最后才能用 edquota -u username 进行编辑。
ext4 配额修改的几个关键差异:
edquota -u username会打开 vi 编辑器,修改blocks下面的 soft/hard 值(单位是 KB),保存退出后就直接生效了- 修改之后必须跑一遍
quotacheck -a vug强制刷新配额数据库,否则repquota显示的可能是旧数据 quotaon和quotaoff是开关指令,重启之后需要再次quotaon——不像 XFS 那样靠挂载选项持久化- ext4 不支持目录级配额(project quota),也不支持实时生效:新写入的文件可能会延迟几秒才被计入
说到底,配额从来不是“设完就稳”的事。XFS 这边重点盯挂载选项和 report 输出,ext4 那边则要注意配额文件是否存在、quotaon 是否启用。但凡漏了其中一环,用户该撑爆磁盘还是能撑爆。


































