文件已经删除但空间未释放排查记录
生产环境一台服务器磁盘使用率达到百分之90,出现告警,此系统盘一共40G,但是通过du -sh |sort -h 看到实际使用空间并没有那么多,如图:
接着我们通过lsof命令查找运行中的进程占用已经删除的文件(僵死文件。这些文件实际上已经被删除,但是有服务程序在使用这些文件,导致这些文件一直被占用,无法释放磁盘空间,使用如下命令可以查看死文件占用情况),使用命令:
lsof | grep delete |sort -nrk 7|more
# sort -nrk 7是将已经删除的文件进行大小排序
# -n:按数值排序(因为文件大小是数字)
# -r:降序(从大到小)
# -k 7:按第7列(文件大小)排序
如上图,可以看到有一个tar包被删除了但一直被某个进程调用,大小有28G左右。
重启机器或找到那个进程重启进程即可。