用于将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格式通常效果更好,它支持动态文件分配而无需依赖稀疏文件。