Filesystems

du -sh 和 df -h 不一致

  • January 9, 2014

我知道當 的結果du -sh小於文件系統返回的df -h. (因為有些文件仍然在程序等中打開。)但在我的情況下,我有相反的情況。

我正在執行 Ubuntu 12.04 並嘗試獲取 NFS 掛載的使用大小

df -h返回270G usedwhiledu -sh已安裝的文件夾返回320G used.

更新:我正在使用以下選項安裝分區:

nas-server:/path/to/mount /mnt/mount/point  nfs proto=tcp,rsize=8192,wsize=8192,hard,intr,exec

有誰知道這可能來自哪裡?磁碟上的正確數量應該是270G~

謝謝你的幫助。我會提供任何必要的額外資訊。

感謝大家的精彩回答和建議。我發帖是為了回答我自己的具體問題。只是偶然它可以幫助某人(考慮到情況,它很可能不會)

我從中獲取文件系統資訊的 NAS - 如果我沒記錯的話 - 就分區而言(HP X9000)具有一定程度的虛擬化。因此df,如果一切順利,應該返回一個準確的“估計”。

然而,由於 NAS 的一個 bug 已經被修復,虛擬分區的大小沒有被更新,因此df會返回一個無效(過時的)值。顯示 270Go 而不是 320Go 的實際正確值(我在評論中犯了一個錯誤)

以上所有問題都源於此。從那時起,當 NAS 一直以降級模式工作(無論出於何種原因)時,有時也會發生這種情況

再次感謝各位。

du計算一次硬連結文件使用的塊,而不是每個硬連結一次。但是,這種重複數據刪除可能會在某些方面失敗:

  1. 用於對硬連結文件進行重複數據刪除的表 du 是固定大小的。如果您的硬連結文件數量超過了表可以儲存的數量,則重複數據刪除可能不會成功。(有些版本du有一個動態大小的表,沒有這個問題。)
  2. 重複數據刪除基於 inode 值。如果 NAS 伺服器為硬連結的文件顯示不同的 inode 編號,則無法進行重複數據刪除。一些 NAS 伺服器在顯示 inode 方面做得很好,因為它們使用具有 inode 的文件系統。別人只好“假裝”,做的不好。

順便一提…

du只計算文件數據。

df計算用於文件數據的塊以及所有元數據:目錄、超級塊、inode 表、直接/間接/雙間接塊等。

因此,df應該返回比du. 如果發生相反的情況,我會假設此重複數據刪除已損壞或 NAS 伺服器做了一些導致df顯示無效資訊的事情。

引用自:https://serverfault.com/questions/539177