First of all I would like to introduce Xen, in case you haven’t heard of: Link to Xen homepage
In essence, Xen is a way of virtualizing the hardware for the operating system. Xen doesn’t do this like WMWare GSX and Microsoft virtual PC. Those products emulate the hardware, which means that resources (like CPU, Memory, disk, network) inside a virtual machine are operating system processes instead of the real hardware. This enlarges the codepath (the number of machine code instructions to get something done) so tremendously that a slowdown is noticeable when processes running in such a virtual machine and get resource intensive. Xen lets the virtual machines use the hardware as good as directly, using what is called a ‘hypervisor’, eg. a program which schedules the access to hardware resources.
I’ve used Xen 3.0.0 and installed it in a ubuntu ‘breezy’ install. I am using LVM, because it is the most easy way to use partitions for the virtual machines. The administration or ‘Domain-0’ virtual machine starts the ubuntu installation. It appears to work nice and speedy in 128M (!). All other virtual machines are called ‘Domain-U’ machines, user domains. The first virtual machine I made is an ubuntu install using debootstrap which does DNS and DHCP. Without X, it runs happy in just 64M. (debootstrap is a tool to do an installation of in a directory, instead of on a filesystem)
For the oracle domain-U’s I wanted to use RHEL4. Because RHEL4 is not freely available, I’ve used centos. This seemed troublesome, because RHEL/Centos is not installable using debootstrap. Luckily, there is a tool which can do the same, but uses the centos repositories: rpmstrap. I’ve used version 0.5.1, which I needed to modify because the rpm’s in the centos depository had been updated. There is a newer version on the rpmstrap website.
Starting the virtual machine first did not succeed, due to udev. This was easily resolved by making two devices in /dev: null and console. Before I started installation, I’ve made a backup logical volume, and copied the freshly installed operating system to it.
First test is: the installation of oracle 126.96.36.199. Because we are (except for the kernel; which is 188.8.131.52-xenU) as good as the same as RHEL4, we need to fulfill the requirements for running 184.108.40.206 on RHEL4. I’ve used werner puschitz’s page.
As for now, I’ve just done an installation (using the installer, which means also relinking of the executables) and the creation of a database. I didn’t encounter any single issue.
Second test is: the installation of oracle 10.2.0.1. I copied the operating system from the backup logical volume to the logical volume my 10.2.0.1 installation is going to use, and started it. This process involves editting the configuration file of the new domain-U (set new hostname ‘oracle102’, pointing the configuration file to the new logical volume and specify a unique MAC address for the virtual LAN interface) which takes about three minutes (how’s that for an install!). Next I followed the guide on werner puschitz’s page again, which also went seamless and easy. I did the same, so it all relinked fine and created a database with all options set default (it did work with memory set to 128M, but not that speedy 🙂