linux 文件已经删除,可是空间没有释放的缘由

  监控系统报告一台服务器的空间满了,登录后发现/tmp下有大量access_log文件,分析是Apache的日志文件好久没有清理了,确认并执行删除操做。web

可是,问题来了,执行 rm /tmp/access_log 操做后,再次查看发现磁盘分区的空间并无释放,这是怎么回事?服务器

 

  经查阅资料发现: 当文件进程锁定,或者有进程一直在向这个文件写数据,就会出现这种删除文件后空间不释放的状况。指针

深刻理解相关Linux文件的存储机制和存储结构:日志

    一个文件在文件系统中存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中。在将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就能够被覆盖并写入新的内容,之因此出现删除access_log文件后,空间没有释放,就是由于httpd进程还在一直向这个文件写入内容,进程被锁定,则文件对应的指针部分并未从meta-data中清除,而因为指针并未删除,系统内核就认为文件并未被删除。因此出现上述现象。进程

  解决:    最优解决方案  echo “ ” >/tmp/access_log 在线清空日志文件,直接写入 空内容 而后覆盖整个文件,该方法经常使用来在线清理Apache、Tomcat、Nginx等web服务产生的日志。监控

    固然也能够重启进程,重启系统。  meta

相关文章
相关标签/搜索