磁盘明明没满,写入却报 No space left?先查这三处

举报
yd_227538180 发表于 2026/10/29 10:21:24 2026/10/29
【摘要】 df 显示还有空间,写入却报 No space left on device,很多人第一反应是删文件腾空间。但“磁盘满了”有三种不同的满:空间满、inode 满、保留块挡路,删文件不一定管用,按下面三处顺序查。第一处:是不是被删除却没释放的文件占着空间rm 删掉的文件,如果还有进程拿着句柄不放,空间不会释放,df 看到的已用空间不会下降。用 lsof | grep deleted 找出来,重...

df 显示还有空间,写入却报 No space left on device,很多人第一反应是删文件腾空间。但“磁盘满了”有三种不同的满:空间满、inode 满、保留块挡路,删文件不一定管用,按下面三处顺序查。
第一处:是不是被删除却没释放的文件占着空间
rm 删掉的文件,如果还有进程拿着句柄不放,空间不会释放,df 看到的已用空间不会下降。用 lsof | grep deleted 找出来,重启那个进程或让它关闭句柄,空间立刻回来。日志文件尤其常见:直接 rm 日志不如先 truncate,echo > /var/log/app.log 这样清零不断句柄。
第二处:是不是 inode 用完了
小文件特别多的目录(缓存、session、临时文件)会先把 inode 耗尽:df -h 看空间还剩不少,df -i 一看 inode 已用 100%,新建文件照样失败。df -i 确认后,清理小文件碎片目录才是正解,扩容磁盘一点用都没有。
第三处:是不是保留块在挡路
ext4 默认给 root 预留 5% 的空间,普通用户写满到 95% 就报 No space left,df 却显示还剩 5%。这是保护机制不是故障:确认是保留块问题后,可以用 tune2fs -m 1 把预留比例调小,但生产盘别直接调到 0,留一点给 root 应急。
一句话总结:报 No space left 先分清是“删了没释放”“inode 满了”还是“保留块挡路”——lsof 查 deleted、df -i 查 inode、tune2fs 查预留比例,对症下药,别只会删文件。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。