我正在将一些虚拟机从 vSphere 转换为 KVM/QEMU,但每次它都会增加精简配置的磁盘空间。
在将图像从 转换vmdk
为之前qcow2
,我首先从 vSphere 导出 OVA 或 OVF,以确保磁盘已合并并准备就绪。
在 中qemu-img --help
,有一个-c
“压缩”选项,但该文档介于模棱两可和彻头彻尾令人困惑之间,它没有指定它是通用选项还是快照选项,它说它是用于“qcow”,但这是否意味着qcow
&qcow2
或专门只是qcow
? - 它在列表项中讨论了两者,该列表项在子列表中无警告地进行转换。
此外,compress
除了之外,也被列为一种格式qcow2
。
我认为 qcowX 格式的主要功能之一就是创建精简配置磁盘(没有稀疏文件)。
你能帮我找到正确的语法吗?目前我正在使用:
qemu-img convert -f vmdk -O qcow2 image.vmdk image.qcow2
这是我取自OpenStack 文档。
谢谢。
更新
使用:
qemu-img convert -cp -O qcow2 image.qcow2 image-compressed.qcow2
我得到了一个几乎与导出的 VMDK 大小完全相同的磁盘——但它的速度不如零冲压那么快vmkfstools
。我还没有测试过,但似乎可能就是这样。
更新2
这是正确的选择,但是:
- 我忘了在导出虚拟机之前添加驱动程序,本来我可以做到的,但
- ...我的问题是如何从 VMDK 转换为 QCOW2,而不是从 QCOW2 转换为精简版 QCOW2。因此,我必须进行验证。
命令是:
qemu-img convert -cpf vmdk -O qcow2 <source-file> <output-file>
在哪里:
-c
表示压缩,我猜是将零压缩为零,因为输入与输出的大小相同。-p
显示进度。这需要很长时间,因此需要这样做,以免变得疯狂,或者至少可以防止因认为它已冻结而取消它。-f
指定输入格式。-O
指定输出格式。
顺便说一句,操作系统是什么并不重要,Linux 原生支持 VirtIO,而 Windows,嗯……就是 Windows。一个像样的虚拟机管理程序不会导出会产生不可用输出的虚拟机。如果无论如何都无法正常工作,只需更改目标虚拟机管理程序中的存储总线,例如 SCSI、SATA、VirtIO、NVMe、VMware Paravirtual、IDE 等。
希望这对某人有帮助。