配置nginx之後,檢視磁碟空間,通過df -lh檢視發現系統空間滿了。。。。。
/dev/xvda1 20g 20g 0g 100% /
然後,通過du --max-depth=1 -h / 查詢對應的大檔案,發現只占用了2.3g的空間
各種方法找,都找不到大檔案,後來在一篇文章中看到,可能是在apache或者tomcat執行的時候刪除了對應的日誌檔案導致的,突然想起來,前幾天有乙個小夥伴說空間滿了,我讓他刪除了一下tomcat下面的日誌,然後沒有重啟。。。。。。
產生問題的原因:
在apache/tomcat服務在執行狀態下,清空了執行服務的日誌,從而導致了/dev/xvda1 滿了的問題。一般情況下,大多數服務(包括指令碼)在執行時,是不能刪除當前正在寫入的日誌檔案的。
原理分析:
1. 當前access.log日誌正在被apache程序占用。
2. 通過rm命令刪除access.log,實際只刪除了檔名(該日誌檔案應用記數不為0,因此空間不會被釋放)。
3. 通過rm命令刪除了access.log後,apache依然寫日誌到access.log中,當開啟apache程序時,已經通過access.log定位到該檔案的inode了,就是說再寫日誌是不通過access.log,因此即使刪除了access.log,apache依然寫日誌到access.log所在的inode節點,所以導致硬碟空間增加。
4. 因為刪除了access.log,所以我們就找不到該檔案了,du也查不到,就會出現硬碟滿了但看不到究竟是哪些檔案占用的。
解決方法:
重啟該日誌檔案的相關服務或程式,如:為apache日誌檔案則重啟apache(如下圖,重啟後才硬碟空間占用正常)。
參考:
系統磁碟空間 dev xvda1佔滿原因分析
由於專案原因需要定期檢查磁碟空間占用情況,常用檢查命令如下 1 檢視磁碟空間大小 df lh 2 檢視對應檔案大小 du max depth 1 h 於一日發現在使用flume kafka進行資料同步時,某一局點資料無法進行消費,通過df lh檢視發現系統空間滿了,如下 dev xvda1 20g ...
docker把系統盤佔滿後的恢復
docker報 error response from daemon error running devicecreate createsnapdevice dm task run failed 錯 docker預設資料都儲存在 var lib docker目錄下,預設情況下根分割槽空間都不大,在網...
如何擴大系統盤空間
實現方法 使用acronis true image server v9.1來完全轉殖c盤 操作步驟 在目標機器上安裝acronis true image server v9.1的enterprise版本 將新磁碟做刪除分割槽操作,把它變成完全沒有任何分割槽的未初始化的磁碟 非常重要,必須這樣 選擇好...