User:Egberts/Drafts/Virtualization

Virtualization is Article description::the concept and technique that permits running software in an environment separate from a computer operating system.

The operating system actually running on the hardware is referred to as the host. On this host resides a hypervisor (aka virtual machine manager), which runs virtual machines containing guest software.

Concepts
There are two types of hypervisors:


 * Type-1 hypervisors are installed directly on hardware. (VMware ESXi, Xen)
 * Type-2 hypervisors are installed on top of an operating system. (VMware Workstation, QEMU/KVM)

Type-1 hypervisor
Type 1 hypervisors provide a higher level of performance as there is no overhead from the interaction of the hypervisor with the guest OS.

Type-2 hypervisor
Type-2 hypervisor subcategories are broken down into:


 * Software-assisted virtualization
 * (Pure) hardware-assisted (native) virtualization
 * Hybrid hardware-assisted virtualization

Virtualization concept is shown below:



Software-assisted virtualization

 * use of machine code translator (qemu/tcg, (VMware Workstation <7)

(Pure) hardware-assisted (native) virtualization
Hardware-assisted virtualization provides virtual machines with high performance because the physical CPU is partly mapped directly to the virtual CPU (vCPU); machine codes within guest VM are directly executed on host CPU.


 * CPU VT flag enables direct execution of binary code.

Hybrid hardware-assisted virtualization
By mitigating some performance hit, guest drivers are deployed to replace the direct-PCI drivers and allow multiple guest to share the same host devices.

This combination has been called "hybrid virtualization"

Virtualization software
There is a comparison table of virtualization software that can handle virtual machines and containers. QEMU is also broken out by its supported accelerators add-ons as well as its default software-emulation mode.

Virtual machines
Wikipedia has more on virtualization this over at Libvirt#Supported Hypervisors.

AMD CPUs
To inspect hardware for virtualization support issue the following command:

The running kernel supports hardware virtualization when "svm" is visible in the output.

Intel CPUs
Hardware virtualization support for Intel based systems can be tested by running the following command:

The running kernel supports hardware virtualization when "vmx" is visible in the output.

External resources

 * Libvirt#Supported Hypervisors (Wikipedia)