Virtualization Concepts

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Virtualization

Virtualization represents running software, usually multiple operating systems, concurrently and in isolation from other programs on a single system, called host. The software entity that controls virtualization is called hypervisor. The virtual machines executing on the host under the control of the hypervisor are known as guests or guest operating systems.

There are several types of virtualization: full virtualization allows for an unmodified version of the guest operating system. The guest addresses the host's CPU and other hardware resources via a channel created by the hypervisor. This is the most performant virtualization type, because the guest operating system communicates directly with the physical CPU. Paravirtualization requires a modified guest operating system, which communicates with the hypervisor. The hypervisor passes the unmodified calls from the guest to the CPU and other devices. Software virtualization or emulation uses binary translation and other emulation techniques to run unmodified guest operating systems. The hypervisor translated the guest calls to a format that can be understand by the host operating system.

Virtualization Platforms

Hypervisor

The software entity that controls virtualization is referred to as hypervisor. The hypervisor manages the hardware resources of the host system and makes them available to the guest operating systems.

Hypervisors: KVM, Xen, VMware ESX.

Host Operating System

The host operating system (or the host OS) is the operating system of the physical computer on which the hypervisor is installed.

Guest Operating System

The guest operating system (or the guest OS) is the operating system that is running inside the virtual machine.

Virtual Machine

Hardware Virtualization Extensions

RHEL 7 Virtualization Administration Guide - Hardware Extensions in BIOS

Hardware virtualization extensions provide hardware assist to the virtualization software, reducing the size and complexity of the virtualization software. Areas that are especially interesting are CPU virtualization, allowing software in the VM to run without any performance or compatibility hit, as if it was running natively on a dedicated CPU, memory virtualization, I/O virtualization for offloading of packet processing to network adapters, etc. Intel packages its hardware virtualization extensions as "Intel Virtualization Technology (VT-x) Extensions", and AMD as "AMD-V".

Checking/Enabling Virtualization Extensions

Linux CPU Info - Virtualization Extensions

Hardware Devices and Virtualization

The host's physical hardware can e exposed to the guest operating systems in at least three different ways: emulated (or virtualized) devices, paravirtualized devices and physically shared devices. All these hardware devices appear as being physically attached to the virtual machine, but the device drivers exposing them to the guest operating system work in different ways.

Emulated Devices

An emulated (or virtualized) device

Paravirtualized Devices

A paravirtualized device

Physically Shared Devices

A physically shared device

Migration

Migration describes the process of moving a guest virtual machine from one host to another. There are two types of migration: Offline migration suspends the guest virtual machine and then moves the image to the destination host. The virtual machine is then resumed on the destination host. Live migration is the process of migrating an active virtual machine from one host to another.

Overcommitting

Overcommitting represents allocation to guests of more virtualized CPU and memory than actual physical resources available on the host system. This way, resources are dynamically swapped when needed by one guest and not used by another. Overcommitting can improve resource utilization efficiency, but it also poses risks to the system stability.

RHEL 7 Virtualization Administration Guide

Kernel Same-page Merging (KSM)

Kernel Same-page Merging (KSM) is a technique enabling guests to share identical memory pages. These shared pages are usually common libraries or other similar high-use data. KSM allows for greater guest density of identical or similar guests operating on the same host, by avoiding memory duplication.

RHEL 7 Virtualization Tuning and Optimization Guide

Disk I/O Throttling

Disk I/O throttling provides the ability to set a limit on disk I/O requests sent from individual VMs to the host machine. This prevents a virtual machine from over-utilizing shared resources, and thus impacting the performance of other VMs.

RHEL 7 Virtualization Tuning and Optimization Guide

Automatic NUMA Balancing

Automatic non-uniform memory access (NUMA) balancing is a technique involving moving tasks, which can be threads or processes, closer to the memory they are accessing. This improves the performance of application running on non-uniform memory access (NUMA) hardware systems, without the need for manual tuning.

RHEL 7 Virtualization Tuning and Optimization Guide

Virtual CPU Hot Add

Virtual CPU hot add is the capability to increase processing power allocated to virtual machines without shutting down the quests.

RHEL 7 Virtualization Administration Guide

Linux Virtualization Concepts

Linux Virtualization Concepts