1,798
edits
Changes
no edit summary
When deciding on the best approach to implementing virtualization it is important to have a clear understanding of the different virtualization solutions which 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.
As outlined in the above diagram, the guest operating systems operate in virtual machines with in within 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 hardware 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 (, in simplistic simple terms) , 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:
Linux VServer, Solaris Zones and Containers, FreeVPS and OpenVZ are all examples shared kernel virtualization solutions.
== Kernel Level Virtualization ==
Under kernel level virtualization the host operating system runs on a specially modified kernel is responsible for running which contains extensions designed to manage and controlling the various control multiple guest opearting systems running virtual machines. Guest Unlike shared kernel virtualization each guest runs its own kernel although similar restrictions apply in that the guest operating systems must have been compiled for the same hardware as the kernel in which they are running. Examples of kernel level virtualization technologies include user Mode Linux (UML) and KVM.
The following diagram provides an overview of the kernel level virtualization architecture:
== Hypervisor Virtualization ==
- '''Paravirtualization''' - Under paravirtualization the guest operating systems must be kernels are modified specifically to run on the hypervisor. This typically involves replacing any code that will only run in ring 0 of the CPU with calls to the hypervisor (known as ''hypercalls''). The hypervisor in turn performs the task on behalf of the guest kernel. This typically limits support to open source operating systems such as Linux and proprietary operating systems where the respective owners have agreed to target a specific hypervisor. The These issues not withstanding, the ability of the guest system kernel to communicate directly with the hypervisor results in greater performance levels than other virtualization approaches.
- '''Full Virtualization''' - Full virtualization provides support for unmodifed unmodified guest operating systems. The term ''unmodified'' refers to operating system kernels which have not be altered to run on a hypervisor and therefore still execute privileged operations as though running in ring 0 of the CPU. In this scenario, the hypervisor provides CPU emulation to handle and modify privileged and protected CPU operations made by unmodified guest operating systemssystem kernels. As a result of Unfortunately this emulation the process requires both time and system resources to operate resulting in inferior performance levels are lower than when compared to those provided by paravirtualization.
- '''Hardware Virtualization''' - Hardware virtualization is a hypervisor based solution that leverages Intel VT and AMD-V CPU virtualization support, using features of these technologies to handle any privileged and protected CPU operations of unmodified guests.
In addition to the virtual machines, an administrative operating system and/or management console also runs on top of the hypervisor allowing the virtual machines to be managed.
The following figure illustrates the hypervisor approach to virtualization: