Virtualization: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Caesar Schinas
m (Bot: Update image code)
imported>Eric M Gearhart
No edit summary
Line 9: Line 9:


There are several distinct types of virtualization. A description of several common ways of implementing virtualization follows.
There are several distinct types of virtualization. A description of several common ways of implementing virtualization follows.
==Full Virtualization==
Where the virtualization software being used completely encapsulates its guests - the guests are unaware that they are running on top of another host. This can have a negative impact on performance, but may be the only option for older operating systems that are virtualized, because they don't have the capability to be "host aware" as guests are in Paravirtualization.


==OS Level Virtualization==
==OS Level Virtualization==
Line 15: Line 18:
==Paravirtualization==
==Paravirtualization==
{{Image|Simple_Paravirtualization_Diagram.png|right|275px|A very simple illustration of several virtual machines running on top of a host (called the dom0 in this example)}}
{{Image|Simple_Paravirtualization_Diagram.png|right|275px|A very simple illustration of several virtual machines running on top of a host (called the dom0 in this example)}}
When several 'virtual machines' run on top of a 'host' operating system, this is known as paravirtualization. When an operating system runs inside a virtual machine in this way it runs a completely separate kernel, and in fact can be an entirely different operating system.  There are real world examples of virtual machines running [[Microsoft Windows]] that run on top of a [[Linux]] server, for example. The reverse is also possible - Linux could run inside a virtual machine that runs on top of Windows Server for example.
When several 'virtual machines' run on top of a 'host' operating system this is known as paravirtualization. If a guest is completely virtualized and is unaware that it is in fact running in a VM, this can have a performance impact. Certain [[Linux] [kernel|kernels]] have been created that are "virtuzliation aware" for example, and they run faster in a VM because they have been optimized to run in a virtual machine.
 
When an operating system runs inside a virtual machine in this way it runs a completely separate kernel, and in fact can be an entirely different operating system.  There are real world examples of virtual machines running [[Microsoft Windows]] that run on top of a [[Linux]] Xen host, for example. The reverse is also possible - Linux can run inside a virtual machine that runs on top of Windows Server for example.  
 
[[Microsoft|Microsoft's]] flagship virtualization platform, [[Hyper-V]], supports running Linux Xen guests. Currently only [[SUSE Linux Enterprise Server]] version 10 is fully supported.<ref>http://www.microsoft.com/windowsserver2008/en/us/hyperv-supported-guest-os.aspx</ref>


[[Xen]] and [[VMware]] are two examples of software products that implement paravirtualization.  
[[Xen]], [[VMware]] and Microsoft Hyper-V are examples of software products that implement paravirtualization.  


==Virtual Machines built in to Operating Systems==
==Virtual Machines built in to Operating Systems==

Revision as of 11:57, 4 July 2009

This article is developed but not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable, developed Main Article is subject to a disclaimer.
A "computer running in a computer"

In Computing, Virtualization is a broad term that usually refers to the abstraction of resources on a computer. Usually this is accomplished using either a virtual machine or an operating system that has tools to enable virtual environments to run inside it.

A simple way of looking at virtualization is that you run a "computer in a computer." As a simple example of this, you can run a Nintendo emulator on a computer running Linux, Windows or Mac OS, allowing you to play games originally designed to run on a Nintendo Entertainment System (NES) on your computer. This is one example of virtualization - you're running a "virtual" NES on your (Intel x86) computer.

Terms used in this article refer to 'guests' and a 'host.' The host system is what runs the software that makes virtualization possible. A guest is an operating system that runs inside a host.

There are several distinct types of virtualization. A description of several common ways of implementing virtualization follows.

Full Virtualization

Where the virtualization software being used completely encapsulates its guests - the guests are unaware that they are running on top of another host. This can have a negative impact on performance, but may be the only option for older operating systems that are virtualized, because they don't have the capability to be "host aware" as guests are in Paravirtualization.

OS Level Virtualization

Generally OS level virtualization involves one running kernel in a system, but several virtual environments running inside that kernel. OpenVZ, User Mode Linux and Solaris Zones are examples of virtualization solutions that utilize OS level virtualization.

Paravirtualization

A very simple illustration of several virtual machines running on top of a host (called the dom0 in this example)

When several 'virtual machines' run on top of a 'host' operating system this is known as paravirtualization. If a guest is completely virtualized and is unaware that it is in fact running in a VM, this can have a performance impact. Certain [[Linux] [kernel|kernels]] have been created that are "virtuzliation aware" for example, and they run faster in a VM because they have been optimized to run in a virtual machine.

When an operating system runs inside a virtual machine in this way it runs a completely separate kernel, and in fact can be an entirely different operating system. There are real world examples of virtual machines running Microsoft Windows that run on top of a Linux Xen host, for example. The reverse is also possible - Linux can run inside a virtual machine that runs on top of Windows Server for example.

Microsoft's flagship virtualization platform, Hyper-V, supports running Linux Xen guests. Currently only SUSE Linux Enterprise Server version 10 is fully supported.[1]

Xen, VMware and Microsoft Hyper-V are examples of software products that implement paravirtualization.

Virtual Machines built in to Operating Systems

For backwards compatibility, newer operating systems use virtualization to support older software products that otherwise would have to be rewritten in order to run.

Newer versions of Microsoft Windows (those based on the Windows NT Core) automatically start a behind-the-scenes built-in virtual machine called NTVDM (the NT Virtual DOS Machine) when DOS programs are run. The NTVDM runs DOS in a virtual machine on top of Windows. This can be observed by going to Start -> Run, typing in command.com and hitting "OK". If you run Task Manager, you can also see the NTVDM.EXE process running.

Another example of virtual machine implementation is in versions of Apple's Mac OS X. As with Windows NT, OS X was a complete redesign from scratch, and programs written for its predecessor OS 9 could not run natively. A virtual machine called the Blue box was created to run a full copy of OS 9 on top of OS X, in order to allow older programs to execute. When Apple changed their hardware from the PowerPC architecture to an Intel x86-based system architecture, the blue box was deprecated.