Like any technology, virtualization
covers a minefield of new terminology, features, and capabilities. To
make things even more complicated, different vendors often use different
terms for the same item. To help remove that ambiguity, this section
covers the main terms and features commonly used by virtualization
software currently being deployed.
Host Server
The host server, shown in Figure 1,
is called the physical server deployed within the virtual environment.
Today people use standard x64-based servers, such as an HP DL360, which
are usually configured with a large number of CPU cores, large amounts
of memory, some local disks for the hypervisor, and host bus adapters
for access to storage area network (SAN) storage. The only difference
between a host server and other servers is that its installed operating
system’s only function is to manage the physical server’s resources to
allow multiple virtual servers to run concurrently on the same physical
hardware, rather than directly run application software such as SQL
Server.
Hypervisor
You will
be familiar with the term virtualization software which we’ve used, and
you will have seen how important that is to providing virtual servers.
One of the components of that software is the hypervisor.
The hypervisor’s role is to coordinate the hosting
and running of a number of virtual servers and manage the allocation of
the host server’s physical resources between them. For example, on a
host server with 4 physical CPU cores, the hypervisor enables a number
of currently running virtual servers to behave as though each one has
access to four physical CPU cores, known as virtual CPUs (see Figure 2).
What happens during periods of high workloads when
there isn’t enough physical CPU resource to satisfy all of the virtual
server requests for CPU time is perhaps one of the most performance
sensitive qualities of a hypervisor. The last thing you want is for
virtual servers to become slow just because one specific virtual server
is busy, although this problem has yet to be eliminated and can still
happen with some hypervisors.
How the hypervisor manages these situations varies
between vendors. At a high level, they track how much CPU time a
virtual server has used recently, and use that data, along with system
administrator configured priority information known as shares or
weighting, to determine in what order a queue of requests for CPU time
should be processed during periods of high demand.
VMware has an extra feature built into their
hypervisor’s CPU scheduling algorithms called relaxed co-scheduling. The
purpose of this is to identify which particular virtual CPUs in a
multi-CPU virtual server are the ones needing to do the work so it can
avoid supplying un-required physical CPU time to the virtual server; the
principle being that lots of smaller workloads are easier to find CPU
resources for than a single large workload.
When installing VMware’s server virtualization
software, the hypervisor is installed directly on the host server as its
operating system; you don’t, for example, install Windows first. Those
who deploy VMware’s hypervisor will actually see a custom Linux
installation boot to then run a set of VMware services, but it’s a
self-contained environment that doesn’t allow application software to be
installed. Meanwhile, users of Hyper-V will install a regular
installation of the Windows Server software and then add the Hyper-V
role to the server. Installing this role is more than just adding some
components to the operating system; though, when the Hyper-V hypervisor
gets installed it actually becomes the server’s operating system. The
Windows installation that was installed on the server now gets converted
to become a virtual server that is run by the newly installed Hyper-V
hypervisor. This all happens transparently, but it is why Microsoft
recommends not using the host server’s operating system for anything
other than Hyper-V services.
Virtual Server (or Guest Server or Virtual Machine)
The running of virtual servers, also called guest servers or virtual machines,
is the sole purpose of a virtual environment. Each virtual server has
very similar properties to a traditional physical server in that it will
have a number of virtual CPUs, an amount of memory, and a quantity of
virtual hard drives assigned to it. “Inside” the guest server, a regular
operating system such as Windows Server 2008 will be installed on drive
C: — just like a physical server would. Figure 3 shows a diagram representing the relationship between the hypervisor and the guest servers.
Inside virtual servers the hypervisor normally has
a set of tools installed, often called client, or integration,
services. These provide a level of integration between the virtual
server and its hypervisor that wouldn’t otherwise be possible, such as
sharing files between hypervisor and client or perhaps synchronizing the
system time with the host server.
However, also installed is a driver that, on
command from the hypervisor, can begin consuming specific quantities of
memory within the virtual server.
It’s called a balloon driver because it inflates
as needed to consume memory within the virtual server’s operating
system. Its purpose is not to actually use the memory but to set it
aside to ensure that nothing else within the virtual server is using it.
In comparison with the virtualization software and
technology, there’s very little to say about virtual servers, and
that’s a good thing, as the idea of virtualization is to make the fact
they’re not running on a physical server invisible to them.
While virtual servers can be configured to “run”
on different physical host servers using technologies like online
migration that we’ll cover in the next section, at any point in time, a
running virtual server is assigned to a specific physical host server.
Virtual servers cannot be allocated and use physical server resources,
such as memory, from multiple physical host servers.