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 Devices and Virtualization

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