Files
du/df 和 ls 報告不同的磁碟使用情況
上週末,我的一位同事在我們的一台共享計算伺服器上發現了一些奇怪的東西。
我們有一個目錄,其中
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-img
util 檢查: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
如果您的伺服器不是虛擬化主機,請參閱以下主題: