客戶反映云主機數據盤就放了幾個網站,可是統計資源占用了90%以上的空間。如下圖,df統計數據盤已使用35G,可是du統計出來的數據不足10G。
問題原因
用戶刪除了大量的文件后,du命令就不會在文件系統目錄中統計這些文件。如果此時還在運行中的進程持有這個已經被刪除的文件句柄,那么這個文件就不會真正在磁盤中被刪除,分區超級塊中的信息也就不會更改,df命令仍會統計這個被刪除的文件。 通過lsof命令查詢處于deleted狀態的文件,被刪除的文件在系統中被標記為deleted。如果系統有大量deleted狀態的文件,會導致du和df命令統計結果不一致。
可執行如下命令查看lsof |grep deleted
解決方法
根據lsof列出的進程號,終止相應進程或者重啟相應的服務。也可以重啟實例,重啟實例系統會退出現有的進程,開機后重新加載過程中,會釋放調用的deleted文件的句柄。