Migration from VMware

From Xen

As time passes, we are finding more and more people interested in migrating to Xen Project from VMware. The reasons for this migration include cost reduction and increased flexibility in cloud orchestration.

Scheduled for inclusion in a future release, Xen Project will include the ability to use VMware VMDK files natively to ease migration. But people who need to transition now should find this guide useful.

Conversion Scenario

In early versions of VMware, they used a simpler file format. If you are running an older version of VMware, conversion is pretty simple; just jump to the Disk Conversion section. Newer versions can take more work (e.g., multipart files, VM datastores, etc.). If you are running a newer version and you find that these instructions come up short, please let us know. We don't have access to the VMware software, so we rely heavily on the community to give us the information we need. If you discover a new or better way to convert VMware images, please edit this page so we can share this with others.

  • First Step: Stop the VM you want to convert. You need it in a static state so it can be successfully converted.

Extract the VM from the VMware Datastore

If the VM in question is located within a VMware datastore, this post suggests a method for making a local copy of the VM to convert:

I would navigate to the datastore where the VM is located.

In the vSphere Client, the datastore is listed under the "Resources" section.

Right-Click the Datastore and choose "Browse Datastore" which should be at the
top of the menu.

Once the Datastore Browser is up, find the VM's folder.

Highlight the folder... Right-Click and choose "Download..."

Flattening the VMDK File

VMware sometimes uses multipart VMDKs which can grow in size. If yours is set up that way, you'll need to consolidate the multipart file into one file. One approach to this is to use the VMware utility 'vdiskmanager':

vmware-vdiskmanager -r original.vmdk -t 0 flattened.vmdk

Another article suggests a Linux-based technique for combining a multipart VMDK file:

# for i in `ls *[0-9].vmdk`; do qemu-img convert -f vmdk $i -O raw ${i/vmdk/raw} ; done
# cat *.raw >> flattened.img

Disk Conversion

  • Examine the type of file used by the VM:
# qemu-img info vm1.vmdk
image: vm1.vmdk
file format: raw
virtual size: 23G
disk size: 23G
  • In the case above, the file format is raw, so it needs no conversion. Just rename the file to ".raw". However, most of the time, that will not be the case. You will need to use qemu-img to do the conversion.
# qemu-img convert vm1.vmdk -O raw /vms/vm1/vm1.img

Create a new Xen Project configuration file

  • Create an appropriate Xen Project VM configuration file in /etc/xen/vm1/, with a line specifying the converted file as disk:
disk = [ ‘file:/vms/vm1/vm1.img,hda,w’ ]
  • Now boot up the converted VM and go!

More Detailed Information

  • Converting VMware Image to Xen includes some specific considerations for converting Windows VMs
  • Convert a CentOS 5 VMware image to Xen includes information on modifying the resulting image before booting; while no longer needed for the purpose specified (no longer need a Xen Project-specific kernel for most distributions), it is useful to know if you want to modifying the image without booting
  • It is possible virt-v2v might be able to help convert images to Xen Project servers running the libvirt toolstack. Can anyone verify this?

Using the OVF Format

The folks over at XenServer have documented a way to convert VMware images to XenServer using the OVF format and the XenConvert utility:

Commercial Options

A number of commercial offerings exist that simplify the task of moving VMs to the Xen Project hypervisor. If you are planning to move large quantities of VMs, these may make life easier: