Virtualisation (“virtualization” across the pond)

is seeing a huge increase in uptake recently with the subject of hardware and

application consolidation becoming a very hot topic within the industry press.

The questions this raises are: Why would one want to consolidate multiple

servers/applications on to one hardware platform? What are the potential

dangers? What are the differences between various virtualisation platforms?

Let’s start by considering the differences between various methods

of virtualisation. While trawling the web for information on the varying models

for virtualisation, I came across a very informative


paper written by Werner Fischer and Christoph Mitasch. The paper


is geared towards explaining various methods of clustering with

virtualisation technology, and it also gives a wonderfully simple overview of

the types of virtualisation and how they work. There are three major groups into

which virtualisation technology can be segregated:

 

  • Hardware
    Virtualisation (VMware)
  • Para-Virtualisation
    (Xen)
  • OS-Virtualisation
    (Linux Vserver)

 

Hardware virtualisation does exactly what it says on the

tin—it presents virtual hardware to the guest operating system with no need for

patching or modification. The hosted operating system has no idea that it’s being

run on virtual hardware! There are two ways of implementing hardware

virtualisation—either with a base (host) operating system or without. VMware Workstation and Server are examples of the

former, requiring a host operating system and drivers to provide the virtual

hardware. VMware ESX


server installs on ‘bare metal’, creating virtual platforms at a lower

level, thus reducing the overheads required by a host operating system. Guest

operating systems run their own kernel and have their own memory/disk space

pre-allocated.

Rather than providing a full virtual hardware interface to

the guest operating system, para-virtualisation provides a virtual hardware

layer which is similar to the underlying platform, but not identical—this means

that the guest operating systems will require some modification. Like hardware

virtualisation, each guest operating system has its own allocation of resources

and runs its own kernel.

OS-Virtualisation differs from Hardware and

Para-Virtualisation in that only one kernel runs on each physical system. It is

seen as being more efficient to have all guest systems running on the same host

kernel. This cuts unnecessary duplication of system and I/O calls. Guest

operating systems also share memory; this means there are less wasted unused

resources at any given time. A minimum amount of RAM can be allocated to each

machine, ensuring that if multiple guest systems come under heavier than

average load, they still have the minimum resources needed to run; however, the

shared memory pool means that additional memory can be used as and when

required if available. OS-Virtualisation therefore offers some advantages in

terms of efficiency but at the expense of flexibility (while different systems

compatible with the host kernel can be run, different flavours of OS cannot be

mixed (e.g., Windows/Linux). The Linux-Vserver project is a prime example of OS

virtualisation.

So which type of virtualisation is best? I think the answer

to that question is dictated purely by project requirements. If I wanted to run

various operating systems on one physical platform—let’s say, for example,

Linux running an Oracle server, Windows running an Exchange service, and BSD

running an SMTP relay—Hardware virtualisation would be the natural choice. If I

were looking to provide LAMP web hosting services, all running the same flavour

of Linux—OS virtualisation would be the natural choice allowing me to run more

virtual machines on a given hardware base with less wasted overheads and

greater flexibility in terms of memory allocation (to iron out spikes in

demand). There is also no reason for an organisation to stick exclusively to

one type of virtualisation; different demands in different areas of operations

may favour diversity.

Although rather simplistic, I hope this has given an idea as

to the differences between various virtualisation models. In next week’s blog,

I’ll answer the other questions of why one would want to consolidate multiple

servers/applications on to one hardware platform and the potential dangers or

problems which can be posed in doing this. Please feel free to add your own

comments on the various virtualisation options appearing on the market and your

feelings on their pros/cons.