使用 xen 映像获取目录大小

Get directory size with xen image

我想检查我的目录的大小。

目录是xen domU镜像。

目录名为 xendisk

du -sh ./xendisk

returns5.4G.

但是xen domU镜像大小是10G。

ls -alh and du -sh image

发生了什么事?

您已经为您的图片创建了 sparse file。如果您使用像 truncate -s 10G domU.img 这样的命令来创建图像,那么这就是结果。

我链接的 wiki 有更多信息,但基本上是一个稀疏文件,其中文件的空部分没有 space。这在处理 VM 时很有用,因为在大多数情况下,您的 VM 只会占用可用的 space 的一小部分,因此使用稀疏文件将意味着它在您的文件系统上占用的 space 少得多(因为你已经观察到)。文章指出这是使用以下机制实现的:

When reading sparse files, the file system transparently converts metadata representing empty blocks into "real" blocks filled with zero bytes at runtime. The application is unaware of this conversion.

如果您需要使用 du 检查大小,您可能对 --apparent-size 选项感兴趣,该选项将在计算中包括所有未分配的块。因此,如果您需要输出匹配 ls 告诉您的内容,您可以使用此命令:

du -sh --apparent-size ./xendisk