Convert qcow2 to vmdk and make it ESXi 6.0 Compatible

别说谁变了你拦得住时间么 提交于 2021-02-06 04:48:31

问题


I am currently working on VMWare virtualization; I am trying to make a converted image from qcow2 to vmdk work with ESXi Server 6.0.

I have myImage.qcow2 with a disk which is thin provisioned for 300GB.

I used the image converter tool qemu with the following command

qemu-img convert -f qcow2 myImage.qcow2 -O vmdk myNewImage.vmdk 

This command gives me a vmdk image which is only VMWare Workstation compatible. Therefore, in order to make it ESXi compatible I have to use the vmkfstools with the following command.

vmkfstools -i myImage.vmdk outputName.vmdk -d thin

The vmkfstools command gives me two files, an metadata.vmdk and the actual data.vmdk.

As mentioned above my disk is thin provisioned for 300GB and when I apply vmkfstools it expands the disk and gives me a size of 300GB.

Deploying the image through the vSphere Client works without any problem; however, for the purpose of this project I want to use the ovftool and doing so with such a large image is not feasible.

Is there a way for me to make my .vmdk ESXi compatible without vmkfstools expanding my image to 300GB?

Or Is there any other method for me to deploy those 300GB using the ovftool while the disk image is on the datastore, so that it doesn't have to be downloaded/uploaded through the deployment process?

I have been stuck on this for weeks and any help will be highly appreciated.


回答1:


FYI: This support has been added in Qemu 2.1 and above as per changelogs

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



回答2:


This worked for me with VMware 6.7

The TL;DR is

qemu-img convert -f qcow2 -O vmdk -o subformat=streamOptimized source_qcow_image_path destination_path_to_vmdk

For example:

qemu-img convert -f qcow2 -O vmdk -o subformat=streamOptimized \
 CentOS-7-x86_64-GenericCloud-1503.qcow2 \
 CentOS-7-x86_64-GenericCloud-1503.vmdk

Update the vmdk version setting embedded in the converted image using this script:

* This is what actually worked for me *

printf '\x03' | dd conv=notrunc of=<vmdk file name> bs=1 seek=$((0x4))

For example:

printf '\x03' | dd conv=notrunc of=CentOS-7-x86_64-GenericCloud-1503.vmdk bs=1 seek=$((0x4))

source: https://kb.vmware.com/s/article/2144687



来源:https://stackoverflow.com/questions/37794846/convert-qcow2-to-vmdk-and-make-it-esxi-6-0-compatible

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!