Migration from VMware
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:
- How to Export VMware Virtual Machine to OVF Package
- How to Convert VMware Virtual Machines to XenServer Virtual Machines
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: