Linux“No space left on device”系统磁盘空间不足问题排查处理

发布时间 2023-12-05 20:26:58作者: pjgyr

Linux“No space left on device”系统磁盘空间不足问题排查处理

1 问题

今天项目测试环境自动发版失败,确认日志发现提示磁盘空间不足,不能正常生成war包,无法正常启动。

2 排查和处理

2.1 第一次排查处理

首先使用磁盘空间查询命令

df -h

发现磁盘300G全满。。。然后再用磁盘空间查询命令

du -h

查看根目录下所有文件的大小,发现隔壁共用一个测试服务器的项目stdout日志输出由于长期忘记清理,从上线起一直累积,达到了惊人的两百多G的大小。。。赶紧联系了同事处理,他把stdout日志文件直接给删了。我再用du -h命令查看,空间占用直接100G不到了,完事,重启,收工!

2.2 第二次排查处理

结果一点也不顺利,再次打包依然失败,原因还是磁盘空间不足。我用du命令查看,确认有空间;但是用df命令查看,还是300G全满。我查了一些资料,知道了对于一些正被占用的文件,删除操作只是对其进行deleted标记,表面上看起来文件已经删除,实际上只是被隐藏,直到占用结束才会删除。看起来,du命令会略过被隐藏的deleted标记文件,但是df还是会把实际的占用情况展示出来。

接下来使用文件关联查询命令

lsof | grep deleted

查看deleted标记文件相关联的进程,发现同事只是直接删除日志,并没有终止项目,所以项目依然在占用日志文件,导致文件没法真正删除。我又让同事把他们的项目重启了一下,再用两个磁盘空间查询命令确认空间情况,这次两个命令显示空间状态一致都已腾出空间,我的项目也可以正常启动了。