VM Servers

Converting Xen Appliances for XenServer Import

It is no secret that we use many Novell technologies at Martin Luther College to enable our faculty, staff, and students to get their work done. I’ve blogged about such things many times and I’ll be continuing to do so in the future. I have plans to bring Filr and ZENworks on campus soon to alleviate some specific needs we have and I have already deployed the new iPrint here to serve as part of our printing solution.

All three of these solutions have one things in common: they are available as virtual appliances for ease of deployment.

However, one hitch is that Novell only provides appliances for three virtualization platforms: VMware, Hyper-V, and Xen. XenServer, our platform of choice, is the one that is missing. The bare Xen image won’t do, initially, because it provides nothing more than a raw disk image and a configuration file.

Initially I just used the VMware image provided as an OVF which imported into our XenServer infrastructure just fine but was incomplete. I could not easily get the XenServer Tools installed and I still wanted to get the paravirtualized kernel so that I get some optimizations within XenServer. I also cannot easily take advantage of the high availability features of XenServer without the tools installed.

Workable, but no ideal.

This is how we are currently running the latest iPrint appliance (currently version 1.1). It has been working extremely well, but if I can find a way to run things in a more optimized way, I’m all for it. So I spent a day in IRC asking how I might be able to convert a Xen image to something more amenable to XenServer import.

Enter xva.py. A simple Python script “… to aid the migration of xend based Xen virtual machines to XenServer and Xen Cloud Platform.” That would do it! So I moved onto attempting the conversion of the Filr 1.1 appliance that was just released!

All of these steps are being done on Apple OS X but most steps should be transferable to any UNIX-like system. So let’s do this!

  1. Download the wanted Xen appliance from the Novell site. I chose Filr 1.1 as my test appliance because I want to test Filr.
  2. Unarchive the download. You should have a folder with a raw disk image and a xenconfig file. My Filr disk image is 21+ GB in size once it is expanded. The xenconfig file is only 179 bytes.
  3. Open your terminal application of choice and move into that newly created appliance folder.
  4. Grab xva.py and drop it into your appliance folder. I used curl http://www-archive.xenproject.org/files/xva/xva.py > xva.py to just grab it directly from the site. I have also made a local copy so that I have it for the future.
  5. Now is the fun part. Make sure you have enough free disk space to handle making a copy of the disk image. Also, make sure that xva.py is within that appliance folder. It will just make things easier.
  6. Next I ran the following: python xva.py -c Filr.x86_64-1.1.0.653.xenconfig -f Filr.x86_64-1.1.0.653.xva which will inspect the image and then output the whole thing as an XVA for import into XenServer. The xenconfig file contains the name of the disk image and other parameters needed, so you don’t need to include those.
  7. Now you wait.

When it is complete you will have a new XVA file that you can import through XenCenter into your XenServer infrastructure. Logging into the appliance later will allow you to install the XenServer Tools.