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



用于将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

如何将类型更改为动态?根据文档,似乎没有任何开关可以控制这种行为。

update

使用df -h,我检查了我的驱动器,发现仅使用了89GB/1.8TB。由于两个虚拟HDD都在这些驱动器上,因此Linux似乎欺骗了我:根据ls -lh,QCOW2/RAW磁盘至少使用了324GB。加上旧VHDX文件的约40GB。

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

iis-daten.raw是一个稀疏的文件,并非所有块实际上分配在磁盘上。当您阅读未分配的块时,您会恢复零,当您编写内核时,内核将分配块以存储您写的内容。这是几十年来的标准Unix行为。您可以使用" du $ file"来查看文件实际在磁盘上使用的数量。

如果您想要动态磁盘,QCOW2格式通常效果更好,它支持动态文件分配而无需依赖稀疏文件。

最新更新