df 显示磁盘满了,du 却找不到大文件?先查这三处
【摘要】 磁盘告警来了,df -h 显示根分区用了 100%,但 du -sh /* 加起来却远不到这个数。先别急着删东西——两者口径本来就不一样,差出来的空间通常藏在下面三处。第一处:已删除但仍被占用的文件。进程删了文件、句柄还没关,du 看不到它,df 照算。查:lsof +L1 | headSIZE/OFFSET 列就是被"删了但还占着"的大小。常见凶手是正在写日志的进程:日志被轮转工具删了,写...
磁盘告警来了,df -h 显示根分区用了 100%,但 du -sh /* 加起来却远不到这个数。先别急着删东西——两者口径本来就不一样,差出来的空间通常藏在下面三处。
第一处:已删除但仍被占用的文件。进程删了文件、句柄还没关,du 看不到它,df 照算。查:
lsof +L1 | head
SIZE/OFFSET 列就是被"删了但还占着"的大小。常见凶手是正在写日志的进程:日志被轮转工具删了,写日志的进程没重启,空间一直不释放。解决办法是重启对应进程或让它重新打开文件,而不是再删一遍。
第二处:挂载点被遮住的目录。某个目录本来写了不少数据,后来上面又挂了一个分区,du 走挂载点只能看到新分区里的数据,旧数据被盖在下面、还占着磁盘。查:把可疑分区临时卸载(或用 mount --bind / /mnt 从根视角看),再 du 一次对比。
第三处:inode 耗尽。df -i 看一眼:inode 用满了也会报"磁盘满",但 df -h 的已用空间可能并不高。小文件海(比如没清的 session 文件、碎片化缓存)是典型成因。解决办法是按目录数文件个数定位,清掉产生小文件的源头,只删文件治标不治本。
排查顺序总结:df -h 确认是空间满还是 inode 满 → lsof +L1 查已删未释放 → 怀疑挂载遮挡就换视角 du → 最后才是按大小排序删文件。删之前先确认文件归属和进程,删错正在写的文件,服务会比磁盘先出问题。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)