在qemu-img转换上使用动态而不是固定分配

时间:2017-05-06 19:02:53

标签: linux ubuntu qemu hyper-v kvm

为了将Hyper-V VM迁移到KVM,我使用qemu-img convert实用程序将vhdx磁盘转换为兼容格式,如qcow(OS)和raw(数据分区)。原始的Hyper-V磁盘使用动态分配。转换后,这似乎改为固定分配。

一个例子:

-rw-r--r-- 1 root root 300G May  6 20:30 IIS-Daten.raw
-rw-r--r-- 1 root root 3.5G May  6 18:17 IIS-Daten.vhdx

IIS-Daten.vhdx是原始光盘。它的动态分配限制为300GB。实际上,还有3.5 / 300GB使用。如您所见,转换后的原始文件的固定大小为300GB。

与OS磁盘相同

-rw-r--r-- 1 root         root 24G May  6 20:53 IIS.qcow2
-rw-r--r-- 1 libvirt-qemu kvm  36G May  6 19:16 IIS.vhdx

如何将类型更改为动态?根据文档,似乎没有可用于控制此行为的转换。

更新

使用df -h我检查了驱动器,发现只使用了89GB / 1.8TB。由于两个虚拟硬盘都在那些驱动器上,似乎linux欺骗了我:根据ls -lh至少324GB被用于qcow2 / raw磁盘。旧版vhdx文件大约加40GB。

我认为ls -lh会显示hdd的最大大小,而不是当前的大小。我以前从未见过这个。为什么会发生这种情况?如何查看这些文件的实际使用大小?

1 个答案:

答案 0 :(得分:2)

IIS-Daten.raw是一个稀疏文件,并非所有块都实际分配在磁盘上。当您读取未分配的块时,您将返回零,当您编写它们时,内核将分配块来存储您编写的内容。这是几十年来标准的unix行为。您可以使用“du $ file”查看文件在磁盘上的实际使用量。

如果你想要动态磁盘,qcow2格式通常效果更好,它支持动态文件分配而不依赖于稀疏文件。