上周末,我的一位同事在我们的一台共享计算服务器上发现了一些奇怪的东西。
我们有一个目录,其中ls -l
包含一个大小为 132G 的文件。
但是,运行df -h
显示磁盘上使用的总空间量为128G。此外du -h --max-depth=1
在驱动器的根目录上运行还报告 128G.
最初我想知道这个问题是否可能是由于打开文件句柄或类似原因导致这些二进制文件报告不同的信息。但是,我已经厌倦了卸载和重新安装磁盘,并且所有二进制文件都报告了与以前相同的结果。
要提供有关驱动器配置的更多信息:
- 该卷在 LUKS 加密之上使用 EXT4 进行格式化。
- 磁盘不通过 NFS 或类似方式共享。
- 我检查了有问题的文件,它似乎没有链接。
- 卸载和重新安装卷时,我通过在卷上运行强制进行磁盘检查,
fsck -f
并且没有返回任何问题。 - 磁盘所在的服务器不是虚拟化主机,而是运行 Ubuntu 14.04 作为操作系统。
你的服务器是虚拟化主机吗?
不同的实际文件和磁盘空间大小是动态扩展虚拟磁盘的正常行为。该磁盘具有不同的实际文件大小和头文件大小数据
示例:
可能您使用 qemu 虚拟磁盘(qcow2 扩展或其他),您可以通过以下方式找到:
让我们检查
vm-105-disk-1.qcow2
大小stat
:79728541696 - 大约 64GB
检查
wc
:相同的结果...检查
du
:只有15GB!让我们用
qemu-img
util 检查:注意这两行,一切都应该清楚:
如果您的服务器不是虚拟化主机,请参阅以下主题:
du -h 和 ls -lh 有什么区别?
du -b
显示不同的大小ls
而最后一个为什么 ls 和 du 显示不同的大小?