Virtualization
What is Hyperconverged Infrastructure (HCI)
Your resources: compute, storage, networking.
HCI: uses software to abstract, pool and manage those resources. (i.e. just another term for virtualized / software-defined compute, storage and networking.)
- virtualized computing: hypervisor
- virtualized storage: software defined storage (SDS)
- virtualized networking: software defined networking (SDN)
The Virtualization Stack in Linux
- KVM: Linux kernel module that allows a user space program access to the hardware virtualization features of various processors; allows the kernel to function as a hypervisor. KVM itself emulates very little hardware, instead deferring to a higher level client application such as QEMU.
- QEMU: provides a set of different hardware and device models for the machine, supports the emulation of various architectures; can boot many guest operating systems. QEMU = Quick Emulator.
libvirt: the lib to manage KVM, Xen, VMware ESXi, QEMU.virt-manager: usinglibvirt; included in many linux distros.kubevirt: brining VMs to k8s. Usinglibvirt+ QEMU + KVM.
Live Migration
KVM has included LM (Live Migration) for over a decade.
KubeVirt has been supporting Live Migration functionality out of the box since CY2020 (see https://kubevirt.io/2020/Live-migration.html)
Azure: https://docs.microsoft.com/en-us/azure/virtual-machines/maintenance-and-updates
Cloud Init
cloud-init is a widely adopted project used for early initialization of a VM. Used by cloud providers such as AWS and GCP, cloud-init has established itself as the defacto method of providing startup scripts to VMs.
It can also be used for generating and setting up SSH private keys.
Solutions
- VMware: losing popularity, especially after its acquisition by Broadcom (price hike, licensing change, etc).
- Microsoft Hyper-V: integrated into Windows Server.
- Nutanix AHV hypervisor integrated into the Nutanix hyperconverged infrastructure platform.
- Red Hat Virtualization (RHV): An open-source platform based on KVM, providing enterprise-grade features and support.
- Proxmox VE: An open-source hypervisor combining KVM and LXC containerization.
- Oracle VM VirtualBox: A popular desktop virtualization solution known for its ease of use and cross-platform support.
- Citrix Hypervisor: An enterprise-level hypervisor
Software Defined Data Center (SDDC)
Redfish: specs for APIs.
E.g. Netapp ONTAP: Compute nodes are all RedFish API-compatible.
CR3
In x86, the page table root address of a process is stored in CR3. In VM exit, the content of the cr3 register is stored in the VMCS. A ring buffer can be used to cache cr3 registers for each guest process during VM exit handling.