掛了一塊50G到/data目錄下
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb1 50G 46G 1.2G 98% /data
顯示已經使用快50G空間了服務器
但是在/data 下用 du -sh . 只顯示使用了19Gspa
致使這個兩個命令查看磁盤容量不一致的緣由是,用戶刪除了大量的文件被刪除後,在文件系統目錄中已經不可見了,因此du就不會再統計它。然而若是此時還有運行的進程持有這個已經被刪除的文件句柄,那麼這個文件就不會真正在磁盤中被刪除,分區超級塊中的信息也就不會更改,df仍會統計這個被刪除的文件。進程
可經過 lsof命令查詢處於deleted狀態的文件,被刪除的文件在系統中被標記爲deleted。若是系統有大量deleted狀態的文件,會致使du和df統計結果不一致。sed
# lsof |grep deleted #在opt目錄下執行lsof |grep deletedgrep
解決方法:方法
一、根據lsof列出的pid直接kill相應進程或者重啓對應的服務。示例:
# kill -9 692
注:若是服務器正在運行業務,kill 會致使進程直接終止,可能會影響到業務,請慎重操做。統計
二、重啓服務器。查詢
重啓服務器系統會退出現有的進程,開機後從新加載。該過程會釋放調用的deleted文件的句柄。db