Fixing slow IDE drives in XenExpress


A few days ago I wrote about how XenExpress was an exciting Xen distribution that was hindered by a few little bugs. In my case my IDE drives performed very slowly because DMA flags were not being set correctly. This was caused by the fact the generic-ide kernel module had been compiled directly into the Linux kernel (rather than being left as a module).

Thanks to a tip from Partha Ramachandran on the XenSource user forum I added ide0=0 ide1=0 to /boot/grub/grub.conf which stopped generic-ide from grabbing the two IDE channels. This allowed the amd74xx module to correctly connect to and configure the drives.

XenExpress - the fast lane of Xen virtualisation

The open source Xen virtualisation suite has caused a bit of a stir within the Linux world because it combines the power of VMWare without the proprietary code and cost hassles. Unfortunately Xen is not the most user friendly thing in the world to setup or configure. For a large organisation this is not so much of a problem because they can afford to hire expensive consultants or train their in-house staff. For smaller players or individuals interested in the concept but unwilling to invest hours into training XenSource have released XenExpress.

XenExpress fits on a single CD and can be downloaded without charge from the XenSource website (they do however ask for a few contact details). To setup your very own Xen host you just boot the computer from the CD, answer a few configuration questions like time and network setup and then just sit back and watch as XenExpress turns your computer into a fully functional Xen platform (for further instructions checkout this howto). After installation is complete configuration of the Xen host occurs remotely via a Java desktop application that runs on Windows, Linux or after a little hacking OSX. Most of the basic Xen tasks like virtual instance management and system maintenance can be accomplished through the interface without much effort or reference to the user guide. If you are an advanced user you can also bring up a terminal on the Xen host and run your normal Linux commands as at its heart XenExpress appears to be a slimmed down Red Hat distribution.

Sharing disk partitions between Xen instances

Picture this, you have your Xen server and a couple of virtual instances configured and you are very happy. That is however until you want two or more of those instances to read or write files from the same disk partition. One way to get around this problem is to use a network file sharing protocol like NFS or CIFS and have one instance operate as a file server whilst the others connect as clients. Sure, a configuration like this works but it requires quite a bit of time to setup and more importantly it drains precious processor cycles as many extra, resource intensive processes must be run.

The Art of Xen

In order to install Zimbra without issues I had to setup Xen on my server. This was actually a good thing because I had been thinking of doing so for a while after experimenting with it last year.

Setting up Xen on OpenSUSE is relatively straightforward if you follow the Xen howto on the Wiki:

Zimbra migration thanks to Xen

After the comments from Kevin H about Zimbra to one of my last postings I thought I had better take another look at Zimbra. The last time I downloaded and played with Zimbra was when it was in Beta. It has changed significantly since then and now provides packages for OpenSUSE 10 which is really good to see.

The last time I tried Zimbra I was not too happy to see it installed its own versions of services like MySQL and Postfix. I started a thread on the Zimbra forum back then and it sparked a bit of debate. Unfortunately Zimbra 3.0 still assumes the install system is only going to be running Zimbra which makes it difficult to install on a system already running most of these services. Although I specified different ports to avoid conflicts my test install did not work at all very well and to top it off it managed to break the existing OpenLDAP installation (something to do with missing shared libraries).