An Overview of Virtualization Techniques

Revision as of 19:50, 28 May 2008 by Neil (Talk | contribs) (Shared Kernel Virtualization)

Revision as of 19:50, 28 May 2008 by Neil (Talk | contribs) (Shared Kernel Virtualization)

This book uses the term Virtualization in the context of running multiple operating systems on a single physical computer system. As such, the term does not refer to a single technology, but rather refers to a group of techniques and technologies which achieve operating system virtualization using a variety of different approaches.

When deciding on the best approach to implementing virtualization it is important to have a clear understanding of the different virtualization approaches that are currently available. The purpose of this chapter, therefore, is to describe in general terms the four virtualization techniques in common use today, namely guest operating system, shared kernel, hypervisor and kernel level.

Guest Operating System Virtualization

Guest OS virtualization is perhaps the easiest concept to understand. In this scenario the physical host computer system runs a standard unmodified operating system such as Windows, Linux, Unix or MacOS X. Running on this operating system is a virtualization application which executes in much the same way as any other application such as a word processor or spreadsheet would run on the system. It is within this virtualization application that one or more virtual machines are created to run the guest operating systems on the host computer. The virtualization application is responsible for starting, stopping and managing each virtual machine and essentially controlling access to physical hardware resources on behalf of the individual virtual machines. Some examples of guest OS virtualization technologies include VMWare Server and VirtualBox.

The following figure provides an illustration of guest OS based virtualization.


Guest os diagram.jpg


As outlined in the above diagram, the guest operating systems operate in virtual machines with in the virtualization application which in turn runs on top of the host operating system in the same way as any other application. Clearly, the multiple layers of abstraction between the guest operating systems and the underlying host hardware are not conducive to high levels of virtual machine performance. This technique does, however, have the advantages that no changes are necessary to either host or guest operating systems and no special CPU virtualization support is required.


Shared Kernel Virtualization

Shared kernel virtualization (also known as system level or operating system virtualization) takes advantage of the architectural design of Linux and UNIX based operating systems. In order to understand how shared kernel virtualization works it helps to first understand the two main components of Linux or UNIX operating systems. At the core of the operating system is the kernel. The kernel handles all the interactions between the operating system and the physical hardware. The second key component is the root filesystem which contains all the libraries, files and utilities necessary for the operating system to function. Under shared kernel virtualization the virtual operating systems each have their own root filesystem but share the kernel of the host operating system. This structure is illustrated in the following architectural diagram:

Shared kernel diagram.jpg