On the official Xen.org Community blog George Dunlap, Senior Engineer at Citrix posted two articles explaining the different types of virtualization, from full virtualization to full paravirtualized virtualization. Dunlap explains what the terms Hardware Virtual Machine (HVM), Para Virtualized (PV), Para Virtualized Hardware Virtual Machine (PVHVM) and PV in a HVM container (PVH) mean and what the differences, advantages and disadvantages of each of them.
With full virtualization the assumption in the early days was that the Virtual Machine (VM) was functionally identical to a real machine, meaning that it provided:
- Disk and network devices
- Interrupts and timers
- Emulated platform: motherboard, device buses, BIOS
- “Legacy” boot: i.e., starting in 16-bit mode and bootstrapping up to 64-bit mode
- Privileged instructions
- Pagetables (memory access)
Later Intel and AMD introduced Hardware Virtual Machine (HVM), which provided hardware emulation, a set of extensions that make it easier to virtualize the processor. Other components though still needed to be virtualized.
Full paravirtualized VMs run with fully paravirtualized disk and network interfaces; interrupts and timers are paravirtualized; there is no emulated motherboard or device bus; guests boot directly into the kernel in the mode the kernel wishes to run in (32-bit or 64-bit), without needing to start in 16-bit mode or go through a BIOS; all privileged instructions are replaced with paravirtualized equivalents (hypercalls), and access to the page tables was paravirtualized as well.
Currently there are many solutions which partially are virtualized and other parts are paravirtualized, see figure below.
The articles can be found here:
The Paravirtualization Spectrum, part 1: The Ends of the Spectrum
The Paravirtualization Spectrum, Part 2: From poles to a spectrum