最近一台服务器空间总是报警,磁盘空间不足。
使用 df 命令查看,磁盘空间耗用接近 100%,将机器上过期的数据以及日志清理掉,但是空间很快又是接近 100%。
使用 du 查看,想找出磁盘空间被耗用在哪里了,结果发现他输出的结果和df命令输出的结果相差很大,离100%空间占用还远着呢。
丢失的空间跑哪了,是磁盘损坏了吗?
使用google搜索了一下,发现两个可能的原因:
1. 磁盘文件删除后,但是原先对应写文件的进程还在,仍然抓着那个文件,在往里面写数据,空间继续被他耗用,同时删除后的空间得不到释放,du 命令也看不到这个文件占用的空间。
2. 使用mount命令,挂载到一个原本有数据的目录,之前目录下的文件不可见也不会被du看到统计
因为这台服务器没有做特殊目录挂载,所以按照问题1查找丢失的空间。
使用 lsof | grep deleted 查找被删除的文件,果然发现一个巨大的日志文件
在外面kill掉写这个日志文件的进程,发现磁盘空间一点一点被释放回来了
重新运行进程,发现日志也被正常写入。
原文转自:http://blogread.cn/it/article/6565?f=wxq