如何使用 qemu-img 将 VMDK 磁盘转换为 QCOW2,而无需扩充磁盘?

如何使用 qemu-img 将 VMDK 磁盘转换为 QCOW2,而无需扩充磁盘?

我正在将一些虚拟机从 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

这是正确的选择,但是:

  1. 我忘了在导出虚拟机之前添加驱动程序,本来我可以做到的,但
  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 等。

希望这对某人有帮助。

相关内容