我目前正在研究VMWare虚拟化;我正在尝试将 qcow2 转换为 vmdk 的映像与 ESXi Server 6.0 一起使用。
我有 myImage.qcow2,其磁盘精简配置为 300GB。
我使用图像转换器工具 qemu 和以下命令
qemu-img convert -f qcow2 myImage.qcow2 -O vmdk myNewImage.vmdk
此命令为我提供了一个仅与 VMWare Workstation 兼容的 vmdk 映像。因此,为了使其与 ESXi 兼容,我必须使用 vmkfstools 和以下命令。
vmkfstools -i myImage.vmdk outputName.vmdk -d thin
vmkfstools 命令为我提供了两个文件,一个是metadata.vmdk,另一个是实际的data.vmdk。
如上所述,我的磁盘精简配置为 300GB,当我应用 vmkfstools 时,它会扩展磁盘并为我提供 300GB 的大小。
通过 vSphere Client 部署映像没有任何问题;然而,出于该项目的目的,我想使用 ovftool,但对于如此大的图像来说这样做是不可行的。
有没有办法让我的 .vmdk ESXi 兼容,而无需 vmkfstools 将我的映像扩展至 300GB?
或者,当磁盘映像位于数据存储上时,我是否有其他方法可以使用 ovftool 部署这 300GB,这样就不必在部署过程中下载/上传?
我已经坚持这个问题好几个星期了,任何帮助将不胜感激。
仅供参考:此支持已根据变更日志添加到 Qemu 2.1 及更高版本中
qemu-img convert -f qcow2 -O vmdk -o adapter_type=lsilogic,subformat=streamOptimized,compat6 SC-1.qcow2 SC-1.vmdk
这对我在 VMware 6.7 上有用
qemu-img convert -f qcow2 -O vmdk -o subformat=streamOptimized source_qcow_image_path destination_path_to_vmdk
例如:
qemu-img convert -f qcow2 -O vmdk -o subformat=streamOptimized \
CentOS-7-x86_64-GenericCloud-1503.qcow2 \
CentOS-7-x86_64-GenericCloud-1503.vmdk
*这对我来说确实有效*
printf '\x03' | dd conv=notrunc of=<vmdk file name> bs=1 seek=$((0x4))
例如:
printf '\x03' | dd conv=notrunc of=CentOS-7-x86_64-GenericCloud-1503.vmdk bs=1 seek=$((0x4))
作为@pj_gineste,我们收到错误消息
Unsupported or invalid disk type 22
(或Invalid disk type 2
),并且qemu-img
中的任何选项或通过使用vmware-vdiskmanager
进行转换都无法修复该问题。 ESXi VM 中的存储适配器设置也没有效果。
VMWare 提供了 OVF 工具(CLI 工具,在 Linux/Mac/Windows 上运行),可将 VMWare 计算机转换为 OVF/OVA。
它需要.vmx
文件以及
.vmdk
文件。要创建初始(纯文本)
.vmx
文件,可以在 VMWare Workstation 中创建一个具有合适 ESXi 硬件兼容性的新虚拟机,并将该虚拟机的
.vmx
文件与
.vmdk
文件一起使用。我们将其用于最终输出 OVA 的构建管道。该管道首先使用 Yocto 和
qemu-img
生成 VMDK,然后与预先生成的 VMX 文件一起生成 OVA。
.vmx
文件可能需要一些编辑:
virtualHW.version
文件中将
.vmx
属性设置为 15。请参阅VMWare 硬件版本。
.vmdk
文件的路径需要更改为要转换的VMDK,例如
nvme0:0.fileName = "/path/to/image.vmdk
。参数名称取决于附加磁盘的存储类型等,因此请查阅您自己的VMX文件。