用心打造
VPS知识分享网站

Linux写入报Disk quota exceeded,磁盘配额定位教程

本文于 2026-10-03 09:18 更新,部分内容具有时效性,如有失效,请留言

Linux创建文件、上传数据或写日志时提示 Disk quota exceeded,并不一定是磁盘空间已经用完。文件系统可能仍有大量空闲空间,但当前用户、组或项目已经达到块数或inode配额。

先确认报错路径所在的文件系统与配额类型,不能看到df有空间就盲目删除系统文件。

Linux用户写入文件时达到磁盘配额限制的示意图

先确认空间和inode是否真的耗尽

对报错路径执行:

df -h /srv/app/data
df -i /srv/app/data
findmnt -no TARGET,SOURCE,FSTYPE,OPTIONS /srv/app/data

df -h 检查数据块,df -i 检查inode。两者都充足而写入仍返回配额错误时,应继续查看用户、组或项目配额。

查询当前用户的配额

普通用户可查看自己的额度,管理员可以指定用户:

quota -s
sudo quota -vs appuser
id appuser

输出中的soft是软限制,hard是硬限制,grace表示超过软限制后剩余的宽限期。硬限制不能继续突破,软限制在宽限期结束后也会阻止写入。

查看整个文件系统的配额报告

ext4等使用Linux quota工具的文件系统可执行:

sudo repquota -as
sudo repquota -ugs /srv

XFS还可能启用用户、组或项目配额:

sudo xfs_quota -x -c 'state' /srv
sudo xfs_quota -x -c 'report -h' /srv

命令应针对报错路径所在挂载点,检查根分区无法代表独立数据盘。

区分块配额与inode配额

大量小文件可能先耗尽inode配额,单个大文件则更容易触发块配额。定位占用时可用:

sudo du -xhd1 /srv/app | sort -h
sudo find /srv/app -xdev -type f -user appuser | wc -l

扫描大目录会产生I/O压力,生产服务器应降低优先级并避开业务高峰。不要直接对整个根目录运行无边界的find。

安全释放或迁移占用

先处理可确认的缓存、旧构建产物、过期备份和已归档日志。删除仍被进程打开的文件后,空间可能不会立即释放,可检查:

sudo lsof +L1

需要保留的数据应迁移到容量充足且配额正确的文件系统。清理前要确认备份和保留策略,不能用批量删除掩盖持续增长的问题。

调整配额前核对业务边界

管理员可使用 edquota 或 setquota 修改额度,但应先记录原值和用户归属:

sudo edquota -u appuser
sudo repquota -us /srv

需要演练配额、日志轮转或多租户目录时,可以在 萤光云 或 LightNode 创建隔离测试机。提高额度前要确认文件系统仍有整体容量,不能把用户限制改成宿主机磁盘耗尽。

修复后怎样验收

重新检查配额并执行最小写入测试:

sudo -u appuser sh -c 'touch /srv/app/data/.quota-test && rm /srv/app/data/.quota-test'
sudo quota -vs appuser
df -h /srv/app/data
df -i /srv/app/data

验收标准是目标用户可以写入,块数和inode均未达到硬限制,宽限期状态清晰,文件系统仍保留足够余量。

FAQ

df显示有空间为什么仍然报错? df反映文件系统整体容量,用户、组或项目配额可以在整体空间用完前阻止特定主体继续写入。

关闭quota能立即解决吗? 可能解除限制,但会破坏多租户资源边界,不应作为生产环境的首选方案。

温馨提示

调整配额属于资源策略变更,应记录修改人、原值和新值。先找出增长来源,再决定清理、迁移还是扩额。

赞(0)
未经允许不得转载;国外VPS测评网 » Linux写入报Disk quota exceeded,磁盘配额定位教程
分享到