linux清除磁盤空間不足,刪除大文件后,還是顯示占用空間,咋辦?我很急!!!來看這里


博主身為測試,但是目前兼職半個運維,最近查看阿里雲的服務器在群內報警已有多次,提醒磁盤空間已到達設置閾值

 

 

 

一、處理辦法

登錄服務器之后,通過命令

1. df -h 查看當前服務器磁盤占用情況,已經到達了設定范圍

2.cd 到對應的目錄后,開始查找占用比較大的文件

3.命令---du -sh * 查看當前目錄下所有文件占用大小,然后通過這種方式一個個的去檢查文件夾大小,最后找到日志文件比較大,日志嘛比較早先的可以先給干掉

4.刪除日志文件,rm -f xxx

 

二、發現問題並解決問題

 

1.但是這么做之后,繼續df  -h發現磁盤空間還是94%,去看下那個刪除的文件還在不在,結果發現文件確實是刪除了,但是為啥磁盤占用還是這么多,后來還是查詢了相關資料

2.問題原因---看下面解釋,簡單來講就是刪除的文件還是占用進程,不會主動釋放

一般說來不會出現刪除文件后空間不釋放的情況,但是也存在例外,比如文件被進程鎖定,或者有進程一直在向這個文件寫數據等等,要理解這個問題,就需要知道Linux下文件的存儲機制和存儲結構。

一個文件在文件系統中的存放分為兩個部分:數據部分和指針部分,指針位於文件系統的meta-data中,數據被刪除后,這個指針就從meta-data中清除了,而數據部分存儲在磁盤中,數據對應的指針從meta-data中清除后,文件數據部分占用的空間就可以被覆蓋並寫入新的內容,之所以出現刪除access_log文件后,空間還沒釋放,就是因為httpd進程還在一直向這個文件寫入內容,導致雖然刪除了access_log文件,但文件對應的指針部分由於進程鎖定,並未從meta-data中清除,而由於指針並未被刪除,那么系統內核就認為文件並未被刪除,因此通過df命令查詢空間並未釋放也就不足為奇了

 3.解決問題

  最簡單的方法是關閉或重啟httpd進程,當然也可以重啟操作系統,不過這些並不是最好的方法。對待這種進程不停對文件寫日志的操作,要釋放文件占用的磁盤空間,最好的方法是在線清空這個文件,具體可以通過如下命令完成

  3.1 博主是通過重啟服務的方式來釋放資源,重啟服務之后,果然磁盤占用就降下來了,但是也有另外一種方法

  3.2 另外一個辦法就是在線清空下那個對應的日志文件

   echo "" > xxx.log,這算是一個取巧的操作,直接把文件置空,服務也可以用,文件大小也可以控制下來了

 

希望博主寫的內容可以幫到各位~


免責聲明!

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



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