由于对linux系统操作命令不是很熟悉才引发的此问题:
问题描述:由于日志文件太大,占用空间太多,所以就在服务运行的情况下把日志文件给删除了,但是几天后 主机空间老是虚涨,查看后并没有很多的文件占用空间,实在是蛋疼要命。
经过思考 所有可能引起的原因 最后定位在了 我所删除的那个日志文件上,最后了解了下 linux 删除日志和清空日志的区别 恍然大悟!
问题解决方案:
首先确认是否是因为所删除的日志引起的:lsof |grep delete 命令查看后,果然是。
最后重启了下服务,空间瞬间降了下来。
总结:
文件删除时 如果被某个进程锁定或者一直有进程再向这个文件写数据,那么文件虽然被删除,但是空间并未释放。
Linux下文件的存储机制和存储结构:
一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,数据被删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中,数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除日志文件后,空间还没释放,就是因为某进程还在一直向这个文件写入内容,导致虽然删除了日志文件,但文件对应的指针部分由于进程锁定,并未从meta-data中清除,而由于指针并未被删除,那么系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放也就很正常了。