Upon completion, be sure to remove all User:Egberts/Drafts from all Wiki links.
Virtualization is 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.
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 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 subcategories are broken down into:
- Software-assisted virtualization
- (Pure) hardware-assisted (native) virtualization
- Hybrid hardware-assisted virtualization
Virtualization concept is shown below:
- 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"
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.
|Virtualizer||Accelerator||Virtualization type||Description||Gentoo package name|
|qemu||tcg||full/software-emulation||QEMU's own Tiny Code Generator. This is the default. More frequently denoted as qemu and not qemu/tcg so often.||app-emulation/qemu|
|qemu||hvf||paravirtualization||Apple's Hypervisor.framework based on Intel VT.|
|qemu||whpx||hybrid||Microsoft's Windows Hypervisor Platform based on Intel VT or AMD-V.|
|qemu||kvm||paravirtualization||Linux Type-2 Hypervisor. This is the common choice for host using amd64, arm64, or mips. Supports Microsoft Windows.||app-emulation/qemu|
|qemu||haxm||paravirtualization||Intel VT, by Intel Corporation.|
|VMware ESXi||n/a||native||VMware, Inc. sells a variety of closed-source hypervisors. Type-1 virtualization. Also uses libvirt driver.||app-emulation/open-vm-tools|
|Xen||kvm||native||Native, bare-metal, hypervisor that allows multiple distinct virtual machines (referred to as domains) to share a single physical machine. Type-1 Virtualization; supports Microsoft Windows guest OS||app-emulation/xen|
|Xen||n/a||paravirtualization||Type-2 Virtualization; does not support Microsoft Windows guest OS||app-emulation/xen|
|VirtualBox||n/a||paravirtualization||Cross-platform virtualization software that allows users to run guest operating systems inside a Virtualbox host operating system.||app-emulation/virtualbox|
|Bhyve (FreeBSD)||n/a||paravirtualization||bhyve, the "BSD hypervisor" is a hypervisor/virtual machine manager available on FreeBSD, macOS, and Illumos.|
|User-Mode Linux (UML)||n/a||paravirtualization||The UML driver for libvirt allows use and management of paravirtualized guests built for User Mode Linux. UML is a software-assist, Type-2 virtualization.||incorporated into mainstream Linux repository in 2016|
Wikipedia has more on virtualization this over at Libvirt#Supported Hypervisors.
|Virtualizer||Virtualization type||Description||Gentoo package name|
|Docker||OS||Container virtualization environment which can establish development or runtime environments without modifying the environment of the base operating system.||app-containers/docker|
|LXC (Linux Containers)||OS||Virtualization system making use of the cgroups feature of the Linux kernel.||app-containers/lxc|
|LXD||OS||Next generation system container manager.||app-containers/lxd|
|Podman||OS||Daemonless container engine for developing, managing, and running OCI Containers on linux.||app-containers/podman|
- User:Egberts/Drafts/Virtualization — the concept and technique that permits running software in an environment separate from a computer operating system.
- User:Egberts/Drafts/QEMU — a generic, open source hardware emulator and virtualization suite.
- User:Egberts/Drafts/QEMU/QEMU front-ends — user interface application to the QEMU/libvirt API/library.
- User:Egberts/Drafts/Libvirt — a virtualization management toolkit.
- User:Egberts/Drafts/Libvirt/QEMU_networking — details the setup of Gentoo networking by Libvirt for use by guest containers and QEMU-based virtual machines.
- User:Egberts/Drafts/Libvirt/QEMU_guest — covers libvirt and its creation of a virtual machine (VM) for use under the soft-emulation mode QEMU hypervisor Type-2, notably using virsh command.
- User:Egberts/Drafts/Virt-manager — desktop user interface for management of virtual machines and containers through the libvirt library
- User:Egberts/Drafts/Virt-manager/QEMU_networking — setup of networking using a virt-manager GUI frontend tool
- User:Egberts/Drafts/Virt-manager/QEMU_guest — QEMU creation of a guest (VM or container)
- User:Egberts/Drafts/QEMU/Linux guest — describes the creation of the Gentoo Linux OS in a QEMU VM.
- Comparison of virtual machines — compares the features of several platform virtual machines.
- GPU passthrough with libvirt qemu kvm — directly present an internal PCI GPU to a virtual machine
- Recommended applications — applications recommended for use in a graphical environment (X11, Wayland)
- Libvirt#Supported Hypervisors (Wikipedia)
- QEMU / KVM CPU model configuration