02:linux 磁盘满了,却找不到大文件问题处理 lsof命令
今天,上午收到zabbix 报警。
报警内容:一台服务器,磁盘满了。
故障排查步骤:
之前磁盘满了,一般都是由于服务器上面再跑的服务日志引起的占用太多空间,服务器上有java程序,去删除多余的日志就可以了。但是我记得这台服务器我是做过日志自动清理机制的。
因此登录服务器,df -h 发现磁盘91% , df -i 索引正常。
我首先想到是不是日志清理出问题了,去每个服务下面log查看发现正常,日志量只有几百兆。
于是使用du找下大文件,于是在根目录下,看下各个目录的磁盘占用情况。
du -sh /
出来的结果是一共使用了6G多,没有一个目录有大文件的。
这就很奇怪了,查看剩余空间和已用空间数据对不上,还相差40多个G。
于是,百度了下,原来有的文件可能删除了,但是并没有被释放,就像进入回收站一样,于是用lsof命令查看那些删除了但是还打开着文件句柄的文件,并按照大小顺序排列。
lsof | grep deleted | sort -nr
结果发现有一个java日志文件,有40多G,状态为删除,但是文件句柄仍然被打开了。还在不停的写入数据,
于是群里面找到开发,让帮忙重启服务,再df -h,空间瞬间空闲了40多个G。
运维