天天看點

生産問題一:生産磁盤分區滿了,但是du檢視,顯示該分區隻占用了2.9G原因分析

生産場景:通過df -h顯示分區挂載,發現/apps目錄,使用率100%,此時,我進行檢視該目錄,查找大檔案,但是通過du -sh指令,發現隻占用2.9G

百度查詢:通過lsof |grep delete  發現删除檔案中占用大小17.03G,加上已經使用的,差不多20G,剛好是磁盤分區挂載的大小

分析:使用者删除了大量的檔案後,du指令就不會在檔案系統目錄中統計這些檔案。如果此時還在運作中的程序持有這個已經被删除的檔案句柄,那麼這個檔案就不會真正在磁盤中被删除,分區超級塊中的資訊也就不會更改,df指令仍會統計這個被删除的檔案。 通過lsof指令查詢處于deleted狀态的檔案,被删除的檔案在系統中被标記為deleted。如果系統有大量deleted狀态的檔案,會導緻du和df指令統計結果不一緻。

       lsof |grep delete 

解決方法:根據lsof列出的程序号,終止相應程序或者重新開機相應的服務(首先要了解該程序啟動的服務,确定梳理清楚後再決定是否可以終止程序,防止使用者出現無法通路)。也可以重新開機執行個體,重新開機執行個體系統會退出現有的程序,開機後重新加載過程中,會釋放調用的deleted檔案的句柄。

備注:因為是生産環境,因安全政策無法截圖,原理參見分析,