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?
Lets 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
tinit presents virtual hardware to the guest operating system with no need for
patching or modification. The hosted operating system has no idea that its being
run on virtual hardware! There are two ways of implementing hardware
virtualisationeither 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 identicalthis 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 platformlets say, for example,
Linux running an Oracle server, Windows running an Exchange service, and BSD
running an SMTP relayHardware virtualisation would be the natural choice. If I
were looking to provide LAMP web hosting services, all running the same flavour
of LinuxOS 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,
Ill 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.