今天登录后端服务器查看,发现程序报错日志中存在磁盘空间不足的情况
df -h后发现磁盘空间充足
df -ih发现/app分区inode使用率100%。开始查找原因
进到 /app 下 然后 for i in /*; do echo $i; find $i | wc -l; done
逐层递进,最后是发现docker overlay2中某个容器中的某目录下有大量的临时文件。
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "bbed8c4cd32f640601c976229c610a5d3ef0ddc5be274acda3699f425dff884a"
通过上述命令可以查看overlay2中对应的哪个容器,联系开发,定位根本原因。
定位完成后,停止程序,优先清理inode占用过多的文件,不影响程序运行。
由于文件数量非常多,直接使用rm无法删除。
需要使用rm分组删除,按照1000个文件一组进行删除。
切换到指定目录下,执行命令:ls | xargs -n 1000 rm -fr ls