先看现象。虚拟主机的用户上传时报 Disk quota exceeded,可 df 显示分区还有四十 G 空闲,同一台机器上其他用户完全正常。

把日志和配置对完,能解释这个现象的基本就这几处。用户的块配额已经满了,与分区剩余空间没有关系。还有一种是inode 配额先到了上限,文件数被卡住。

还有一种情况,fstab 里加了 quota 参数但没有重新挂载,配额压根没生效。

上来先查该用户的配额使用

repquota -u /home | grep www

接着确认挂载参数里带 quota

findmnt -o TARGET,OPTIONS /home

调整块与 inode 的软硬限

setquota -u www 5G 6G 0 0 /home

剩下的就是重新统计配额使用量

quotacheck -cum /home

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

手上没有现成的复现脚本,就照着线上请求手工拼了一个。

改完先别撤,确认这几项。repquota 显示该用户使用量低于软限制,上传恢复正常,也不再触发配额告警。

XFS 要用另一套配额工具,参数完全不同,别混着用;改完配额记得让应用日志轮转,不然很快又会被打满。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189