将 qcow2 转换为 vmdk 并使其兼容 ESXi 6.0

问题描述 投票:0回答:3

我目前正在研究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,这样就不必在部署过程中下载/上传?

我已经坚持这个问题好几个星期了,任何帮助将不胜感激。

virtual-machine vmware virtualization esxi hypervisor
3个回答
11
投票

仅供参考:此支持已根据变更日志添加到 Qemu 2.1 及更高版本中

qemu-img convert -f qcow2 -O vmdk -o adapter_type=lsilogic,subformat=streamOptimized,compat6 SC-1.qcow2 SC-1.vmdk

4
投票

这对我在 VMware 6.7 上有用

TL;DR 是

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

使用此脚本更新嵌入在转换后的映像中的 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))

来源:https://kb.vmware.com/s/article/2144687


0
投票

作为@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

 文件可能需要一些编辑:

    为了兼容 ESXi 6.7,需要在
  • virtualHW.version
     文件中将 
    .vmx
     属性设置为 15。请参阅 
    VMWare 硬件版本
  • .vmdk
    文件的路径需要更改为要转换的VMDK,例如
    nvme0:0.fileName = "/path/to/image.vmdk
    。参数名称取决于附加磁盘的存储类型等,因此请查阅您自己的VMX文件。
  • 我们必须完全删除声卡。
© www.soinside.com 2019 - 2024. All rights reserved.