项目场景:
今天在群里收到相关同事线上服务器磁盘空间使用率100%的告警,
问题描述
提示信息如下:
02.Item values:
1. /data: Space utilization (loyalty-VM-AppNode003:vfs.fs.size[/data,pused]): 100 %
原因排查:
1、使用命令 df -h 查看所有文件空间的存储情况,显示 /data 目录总容量504G, 已用455G
2、使用命令 du -h --max-depth=1 / 查看根目录下面的所有文件大小,显示 /data 目录是 78G, 与第1步中的已用容量大小不一致;
3、通过以上截图信息查看,磁盘空间莫名被系统吃掉了的感觉,最后通过运维同学咨询阿里售后人员提供了以下信息
解决方案:
1、通过指令:lsof | grep deleted 指令,查看当前系统句柄未释放情况
通过结果可以发现,当前系统存在大量文件已经被删除(deleted),可是文件句柄并没有被释放的情况。
2、两种解决方案:
- 将当前进程进行重启,关闭进程,从而让句柄释放,释放空间
- 找到指定的文件句柄,将当前文件句柄的大小设置为空
所以基于以上2种方案,评估服务重启对于整体业务流程无影响,所以选择了重启服务解决以上问题
3、解决后得效果如下,空间释放了83%;
不管三七二十一的命令
lsof | grep deleted | awk ‘{print $2}’ | xargs -I {} kill -9 {}
Linux查看文件大小超过1G的文件
find . -type f -size +1G