du/df 和 ls 報告不同的磁碟使用情況

du/df 和 ls 報告不同的磁碟使用情況

上週末,我的一位同事注意到我們的一台共享計算伺服器上出現了奇怪的情況。

我們有一個目錄,ls -l顯示包含一個大小為 132G 的檔案。

但運行df -h顯示磁碟已使用空間總量為128G。此外,du -h --max-depth=1在驅動器根目錄上運行也會報告 128G.

最初我想知道這個問題是否可能是由於開啟的檔案句柄或類似的原因導致這些二進位檔案報告不同的資訊。但是,我已經厭倦了卸載和重新安裝磁碟,並且所有二進位檔案都報告與以前相同的結果。

提供有關驅動器配置的更多資訊:

  • 此磁碟區使用 LUKS 加密之上的 EXT4 進行格式化。
  • 磁碟不透過 NFS 或類似方式共用。
  • 我已經檢查了有問題的文件,它似乎沒有連結。
  • 卸載並重新安裝該磁碟區時,我透過在該磁碟區上執行來強制執行磁碟檢查fsck -f,並且沒有傳回任何問題。
  • 磁碟所在的伺服器不是虛擬化主機,並且運行 Ubuntu 14.04 作為作業系統。

答案1

你的伺服器是虛擬化主機嗎?

不同的實際檔案和磁碟空間大小是動態擴展虛擬磁碟的正常行為。該磁碟具有不同的實際檔案大小和頭文件大小數據

例子

您可能使用 qemu 虛擬磁碟(qcow2 副檔名或其他),您可以透過以下方式找到它:

find / -regex '.*\.qcow.*$'

/var/lib/vz/images/105/vm-105-disk-1.qcow2
...

讓我們檢查vm-105-disk-1.qcow2尺寸stat

stat vm-105-disk-1.qcow2

  File: vm-100-disk-1.qcow2
  Size: 68745560064

79728541696 - 約 64GB

檢查wc

wc -c <vm-105-disk-1.qcow2

68745560064

相同的結果...檢查du

du -sh vm-105-disk-1.qcow2

15G        vm-105-disk-1.qcow2

僅15GB!讓我們用 util 檢查一下qemu-img

qemu-img info vm-105-disk-1.qcow2

image: vm-105-disk-1.qcow2
file format: qcow2
virtual size: 64G (68719476736 bytes)
disk size: 14G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

注意這兩行,一切都應該很清楚:

virtual size: 64G (68719476736 bytes)
disk size: 14G

如果您的伺服器不是虛擬化主機,請參閱下列主題:

相關內容