CentOS 7默认是不启用磁盘配额的。首先,你得检查一下挂载选项里有没有usrquota或者grpquota。确认有之后,接着执行quotacheck来初始化数据库,再用quotaon启用配额。最后,通过quota -u $USER -p /mountpoint就能查看了。如果输出为空或者是“none”,这一般是因为数据库还没初始化,或者是执行了quotaoff。

查看当前目录是否启用配额
CentOS 7 默认不启用磁盘配额(quota),所以直接查配额几乎总是返回“no quota”或报错。先确认配额是否已启用,比盲目执行 quota 或 repquota 更关键。
运行以下命令检查挂载选项:
mount | grep $(df . | tail -1 | awk '{print $1}')
如果输出中不含 usrquota 或 grpquota,说明该文件系统未启用用户/组配额,后续所有配额命令都无效。
- 配额必须在
/etc/fstab中为对应分区添加usrquota,grpquota选项,并重新挂载(或重启)才生效 quotacheck -cugm /mountpoint是初始化配额数据库的必要步骤,但仅当挂载选项已启用时才有意义- 普通用户无法查看他人配额,
quota命令默认只显示当前用户在启用了配额的挂载点上的限制
当前用户在当前目录所在挂载点的配额信息
即使配额已启用,quota 不认“当前目录”,它只看该目录所属的文件系统挂载点。所以先用 df . 确认挂载点,再查配额:
df . | tail -1 | awk '{print $1}' && quota -u
更稳妥的做法是:
- 运行
df .查出当前目录所在的挂载设备(如/dev/sda1) - 用
findmnt -n -o SOURCE,TARGET /dev/sda1找到对应挂载点(如/home) - 执行
quota -u $USER -p /home(-p强制显示单位,避免 KB/MB 混乱)
若提示 quota: no filesystem mounted with quota support,说明该挂载点未启用配额,不是命令写错。
为什么 quota 显示 “none” 或空白
常见现象:命令无报错但输出为空,或显示 none、disk quotas for user xxx (uid xxx) 下面全是 0。
- 根本原因:配额数据库(
aquota.user或aquota.group)不存在或未更新 —— 即使挂载选项正确,也需手动运行quotacheck -vum /mountpoint初始化 quotaon /mountpoint必须执行,否则内核不强制配额规则(quotaoff后数据仍保留,但不生效)- 用户 UID 在配额数据库中无记录:新用户需等首次写入文件后由
quotacheck或内核自动补录,或手动edquota -u username设置
快速验证配额是否真起作用
光看 quota 输出容易误判。最直接的验证方式是尝试突破软限制:
- 用
dd if=/dev/zero of=testfile bs=1M count=100写一个大文件 - 若配额生效,超过软限制且宽限期(grace period)过期后,会报
Disk quota exceeded - 若始终能写入,说明配额未启用、未开启(
quotaon)、或数据库未初始化
注意:du 和 df 显示的是物理占用,不反映配额限制;只有 quota 和实际写入行为才能验证配额是否真实生效。