Linux磁盘占用100%实际查看并没有占满
今天在升级应用的时候,发现服务无法正常运行,检查了下服务部署情况,最后查看日志发现是磁盘写满了
df -h 查看发现使用到100%
du -sh / 在清理数据时发现并没有比较大的文件 / 目录也只使用了95G
lsof | grep deleted 查看是否有已经删除的文件在占用(果然是已删除文件在占用)
是因为已删除文件,被应用程序占用无法彻底释放掉,可以通过重启解决,会影响业务
我这里找到的业务测, 直接kill -9 392404 结束掉了
df -h查看正常
服务重启正常,问题解决
补充
当文件被 rm,目录项被删除,如果其对应的 inode 节点的引用计数为 0,则删除对应的 inode 节点,其对应磁盘可被再申请;但如果此文件被其他进程打开,则其对应的 inode 节点的引用计数不为 0,则不会删除对应的 inode 节点,其对应磁盘不能被再申请;只有当前文件被所有使用进程 close 后,系统才会删除对应的 inode 节点,其对应磁盘可被再申请。
一个被某进程打开的文件 被 rm 后,其目录项被删除了,在 du 命令下是不能被统计到,而其 inode 没有被删除,在 df 命令下是可以被统计到的,这也是 du 和 df 存在差别的原因。