linux 文件已經刪除,但是空間沒有釋放的原因


  監控系統報告一台服務器的空間滿了,登陸后發現/tmp下有大量access_log文件,分析是Apache的日志文件很久沒有清理了,確認並執行刪除操作。

但是,問題來了,執行 rm /tmp/access_log 操作后,再次查看發現磁盤分區的空間並沒有釋放,這是怎么回事?

 

  經查閱資料發現: 當文件進程鎖定,或者有進程一直在向這個文件寫數據,就會出現這種刪除文件后空間不釋放的情況。

深入理解相關Linux文件的存儲機制和存儲結構:

    一個文件在文件系統中存放分為兩個部分:數據部分和指針部分,指針位於文件系統的meta-data中,在將數據刪除后,這個指針就從meta-data中清除了,而數據部分存儲在磁盤中。在將數據對應的指針從meta-data中清除后,文件數據部分占用的空間就可以被覆蓋並寫入新的內容,之所以出現刪除access_log文件后,空間沒有釋放,就是因為httpd進程還在一直向這個文件寫入內容,進程被鎖定,則文件對應的指針部分並未從meta-data中清除,而由於指針並未刪除,系統內核就認為文件並未被刪除。所以出現上述現象。

  解決:    最優解決方案  echo “ ” >/tmp/access_log 在線清空日志文件,直接寫入 空內容 然后覆蓋整個文件,該方法常用來在線清理Apache、Tomcat、Nginx等web服務產生的日志。

    當然也可以重啟進程,重啟系統。  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM