quota不是开箱即用功能,必须按挂载选项修改→数据库生成→配额启用三步顺序执行;确认支持需检查mount输出含usrquota(ext4)或uquota(XFS),并用quotaon -p验证状态为“is on”。

配额不是装完 quota 包就自动生效的,必须按顺序完成挂载选项修改、数据库生成、配额启用三步,缺一不可;否则 quota -u username 永远显示 “none”。
怎么确认当前分区支持并已启用配额
先看挂载参数是否含配额选项:运行 mount | grep /home(把 /home 换成你的目标挂载点),输出里必须出现 usrquota(ext4)或 uquota(XFS)——注意名字不能混用,XFS 写 usrquota 会静默失效。
再检查配额服务状态:sudo quotaon -p,对应分区应显示 user quota on /home ... is on。如果显示 off 或没这一行,说明还没启用。
常见错误现象:quota -u test 输出 Disk quotas for user test (1001): none,基本就是这三步里漏了某一个。
ext4 分区配额怎么配才不踩坑
关键在三个命令的顺序和参数:
-
sudo mount -o remount /home:改完/etc/fstab后必须执行,不能只靠重启;若失败,检查df -T /home确认文件系统类型,再查mount输出是否真更新了 -
sudo quotacheck -cugm /home:-c强制创建新数据库,-m跳过挂载状态检查(避免因分区忙报错),-u和-g对应你启用了哪些配额类型 -
sudo quotaon -uv /home:-u开用户配额,-v显示详细信息;别漏掉这步,否则edquota设的值只是内存里的草稿,不生效
注意:aquota.user 是二进制文件,不能手动 touch 或 chmod 后填内容——必须由 quotacheck 或 edquota 写入,否则校验失败。
XFS 分区为什么不用 quotacheck 和 edquota
XFS 原生管理配额,不用维护 aquota.* 文件,直接用 xfs_quota:
- 初始化:
sudo xfs_quota -x -c "print" /home(-x进专家模式,print触发数据库初始化) - 设限:
sudo xfs_quota -x -c "limit bsoft=51200 bhard=102400 isoft=80 ihard=100 testuser" /home(单位都是 block,默认 512 字节;bsoft是软限,bhard是硬限) - 查用量:
xfs_quota -x -c "report -uh" /home(-u用户,-h人性化单位)
坑点:XFS 的 /etc/fstab 必须写 uquota,不是 usrquota;且 setquota 命令对 XFS 无效,只能用 xfs_quota。
edquota 编辑时单位到底是 KB 还是 block
对 ext4 来说,edquota -u username 里填的数字单位是 KB,不是 MB,也不是 block:
- 想设 50MB 软限 → 填
51200(50 × 1024) - 想设 100MB 硬限 → 填
102400(100 × 1024) - inode 限制单位是“个”,直接填数字,比如
soft=80 hard=100
容易错:有人填 50 当 50MB,结果变成 50KB,写几个日志就超限;也有人误以为是 block(512B),导致实际限额偏差两倍。务必用 KB 换算,别猜。
最常被忽略的是宽限期(grace period)——它决定软限超限后还能撑多久才触发硬限。不设的话默认是 7 天,但 edquota -t 才能调,而且得在 quotaon 之后设,否则不生效。


















