Files

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

  • January 6, 2019

上週末,我的一位同事在我們的一台共享計算伺服器上發現了一些奇怪的東西。

我們有一個目錄,其中ls -l包含一個大小為 132G 的文件。

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

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

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

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

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

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

範例

可能您使用 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!讓我們用qemu-imgutil 檢查:

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

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

引用自:https://unix.stackexchange.com/questions/406526