Linux 磁盘满了别急着删文件:四步排查套路

举报
yd_227538180 发表于 2026/10/23 17:11:42 2026/10/23
【摘要】 服务器上最常见的半夜报警之一:“磁盘使用率 95%”。很多人第一反应就是 rm -rf 一顿删,结果删完空间没释放,或者一不小心删错了东西。这里分享一套排查套路,按顺序走四步,基本十分钟内定位问题。第一步:确认是哪块盘满了df -h看 Use% 最高的那一行。注意 tmpfs 和容器里的 overlay 容易误导,重点看 /、/var、/data 这类真实磁盘挂载点。第二步:定位吃空间的大目...

服务器上最常见的半夜报警之一:“磁盘使用率 95%”。很多人第一反应就是 rm -rf 一顿删,结果删完空间没释放,或者一不小心删错了东西。这里分享一套排查套路,按顺序走四步,基本十分钟内定位问题。

第一步:确认是哪块盘满了

df -h

看 Use% 最高的那一行。注意 tmpfs 和容器里的 overlay 容易误导,重点看 /、/var、/data 这类真实磁盘挂载点。

第二步:定位吃空间的大目录

du -sh /var/* | sort -rh | head -10

逐层往下钻:发现 /var/log 占了 30G,就继续 du -sh /var/log/* | sort -rh | head。日志目录通常是头号嫌疑犯,其次是备份目录和没人管的下载目录。

第三步:删了文件空间却没释放?查 deleted

这是最经典的坑:日志文件被 rm 删了,但写日志的进程还开着,文件句柄没释放,空间照样被占着。症状就是 df 看满了,du 却算不出那么多——差值就是被这些"已删除但未释放"的文件吃了:

lsof | grep deleted

解法不是继续删文件,而是让进程释放句柄:用 > /var/log/app.log 清空文件(而不是 rm),或者重启对应的服务。生产环境优先用清空,别手起刀落。

第四步:空间明明还有却写不进去?查 inode

df -i

如果 IUse% 到了 100% 而磁盘空间还有剩余,说明 inode 耗尽——通常是某个目录下有海量小文件,比如失控的 PHP session、邮件队列、解压了一半的包:

find /var/spool -type f | wc -l

找到肇事目录后批量清理。预防办法:日志轮转配好 logrotate,给小文件目录加上数量监控,别只盯着磁盘容量。

一句话总结:df 定盘、du 定位、lsof 查 deleted、df -i 查 inode。按这个顺序走,磁盘报警基本能快速定位;少删错一个文件,都是赚的。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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