“disk quota exceeded”表示用户级磁盘配额超限,非物理空间不足;需四步排查:确认挂载启用usrquota、quotaon已开启、repquota定位超限用户、检查aquota文件完整性并重建。

遇到用户写入失败,不能直接假设是磁盘空间满了——很多情况下,df -h 显示还有空间,但报错仍是 “Disk quota exceeded”。这说明问题出在用户级配额限制,而非物理磁盘容量。排查要从“配额是否启用、是否生效、谁超了、超了多少”四步切入。
确认目标分区是否启用了配额功能
配额不是默认打开的,必须显式配置。先检查挂载参数:
- 运行
mount | grep quota,看对应分区(如/home)是否带usrquota或grpquota参数 - 或查
/etc/fstab,确认该挂载项末尾有usrquota(用户配额)或grpquota(组配额) - 若没有,说明根本没启用配额机制,错误来源另有他因(比如权限、inode 耗尽等)
验证配额开关是否真正开启
即使 fstab 配了 usrquota,也必须执行 quotaon 才会生效。这是最容易被忽略的一环:
- 运行
quotaon -p查看所有已挂载文件系统的配额状态,“on” 表示已启用,“off” 表示虽挂载但未开开关 - 若目标分区显示为 off,用
sudo quotaon /mount/point手动开启(例如sudo quotaon /home) - 开机自动启用需确保
/etc/rc.local或 systemd 服务中包含该命令,否则重启后又失效
定位具体是哪个用户/组超限
不要只查当前操作用户,要全面扫描:
- 用
sudo repquota -augs /mount/point(如/home)生成全量报告,一眼看出谁的 Used 接近或超过 Hard limit - 对单个用户快速确认:
quota -uvs username,重点关注 “space” 列(已用)和 “limit” 列(硬限制) - 注意:有些系统对 root 用户默认不设限,但普通用户可能被误配了极小限额(如 100MB),一存日志就爆
检查配额数据库是否完整且最新
配额统计依赖 aquota.user 和 aquota.group 文件,损坏或过期会导致误判:
- 进入挂载点根目录(如
/home),确认存在aquota.user(用户配额)和/或aquota.group(组配额)文件 - 若缺失或损坏,用
sudo quotacheck -cug /mount/point重建(-c创建新文件,-u用户,-g组) - 重建后务必再执行
quotaon,否则新数据仍不生效










