上周末,我的一位同事注意到我们的一台共享计算服务器上出现了奇怪的情况。
我们有一个目录,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
如果您的服务器不是虚拟化主机,请参阅以下主题: