linux中df和du查看磁盤大小不一致解決方法


 

掛了一塊50G到/data目錄下
#  df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvdb1 50G 46G 1.2G 98% /data
顯示已經使用快50G空間了

可是在/data 下用 du -sh . 只顯示使用了19G

導致這個兩個命令查看磁盤容量不一致的原因是,用戶刪除了大量的文件被刪除后,在文件系統目錄中已經不可見了,所以du就不會再統計它。然而如果此時還有運行的進程持有這個已經被刪除的文件句柄,那么這個文件就不會真正在磁盤中被刪除,分區超級塊中的信息也就不會更改,df仍會統計這個被刪除的文件。

 

可通過 lsof命令查詢處於deleted狀態的文件,被刪除的文件在系統中被標記為deleted。如果系統有大量deleted狀態的文件,會導致du和df統計結果不一致。

# lsof |grep deleted        #在opt目錄下執行lsof |grep deleted

 

解決方法:

1、根據lsof列出的pid直接kill相應進程或者重啟對應的服務。示例:
# kill -9 692
注:如果服務器正在運行業務,kill 會導致進程直接終止,可能會影響到業務,請慎重操作。


2、重啟服務器。

重啟服務器系統會退出現有的進程,開機后重新加載。該過程會釋放調用的deleted文件的句柄。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM