Why?
廢話不多說直接來圖,可以看出磁盤已經快要滿了
未清之前
What?
可以看出mnt文件夾占用的最大,然后進入mnt目錄里通過命令,根據文件大小對該路徑下文件排序
du -h --max-depth=1
我們服務器出現磁盤快滿了的原因是因為,服務器部署了多個tomcat,然后tomcat系統日志忘記屏蔽了,時間一久,導致catalina.out記錄的系統日志過多,然后文件就很大,最大的一個居然占了28G,找到了原因就解決吧
How?
當然是刪除文件了,但是刪除之后通過命令查看當前路徑各文件大小
du -sh *
刪除后
發現已經小了很多了,但是奇怪的是,通過df命令查看,空間并未清理出來
奇怪
通過查資料發現一個文件在文件系統中的存放分為兩個部分:數據部分和指針部分,指針位于文件系統的meta-data中,數據被刪除后,這個指針就從meta-data中清除了,而數據部分存儲在磁盤中,數據對應的指針從meta-data中清除后,文件數據部分占用的空間就可以被覆蓋并寫入新的內容,之所以出現刪除access_log文件后,空間還沒釋放,就是因為httpd進程還在一直向這個文件寫入內容,導致雖然刪除了access_log文件,但文件對應的指針部分由于進程鎖定,并未從meta-data中清除,而由于指針并未被刪除,那么系統內核就認為文件并未被刪除,因此通過df命令查詢空間并未釋放也就不足為奇了。
最簡單粗暴的解決辦法就是重啟,當然如果你知道那個進程占用著呢也可以重啟指定進程,我們是tomcat占用,然后重啟tomcat,問題就解決啦
重啟后
謝謝觀看,希望能幫到你