linux磁盘满,清理后空间占用率还是很高,解决方案
问题现象
之前由于日志文件,导致磁盘满了.删除log日志后,查看发现磁盘占用率还是很满
问题分析
通常不会出现删除文件后空间不释放的情况,但是也存在例外,比如文件进程锁定,或者有进程一直在向这个文件写数据,要明白这个问题,首先需要知道 linux 下文件的存储机制和存储结构。
一个文件在文件系统中存放分为两个部分:
指针部分:指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了。
数据部分:而数据部分存储在磁盘中。
将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容。之所以出现删除log文件后,空间还没有释放,就是因为进程还在一直向这个文件写入内容,导致虽然删除了log文件,但是由于进程锁定,文件对应的指针部分并未从meta-data中清除,而由于指针并未删除,系统内核就默认文件并未被删除,因此查询文件系统使用率时,显示空间并未释放。
解决方案
输入命令lsof -n |grep delete
可以看到进程被锁住了.所以我们只需要kill掉进程就好了.