Supported Virtualization Modes
Full virtualization allows any x86 operating system, including Solaris, Linux, or Windows systems, to run in a guest domain.
Paravirtualization requires changes to the operating system. Only specific operating systems can be hosted in a paravirtualized guest domain. Currently these systems are limited to Solaris, Linux, and FreeBSD.
A system can have both paravirtualized and fully virtualized domains running simultaneously.
For paravirtualized mode and for all types of operating systems, the only requirement is that the operating system be modified to support the virtual device interfaces.
Overview of Paravirtualization
The paravirtualized guest domain operating system is ported to run on top of the hypervisor, and uses virtual network, disk, and console devices.
Since the control domain must work closely with the hypervisor layer, control domain is always paravirtualized. Guest domains can be either paravirtualized or fully virtualized, and a system can have both types running simultaneously.
Devices and Drivers in the Paravirtualization Mode
With paravirtualization, each device, such as a networking interface, is presented as a fully virtual interface, and specific drivers are required for it. Each virtual device is associated with a physical device and the driver is split into two drivers.
A frontend driver runs in the guest domain and communicates over a virtual data interface to a backend driver. The backend driver currently runs in domain 0 and communicates with both the frontend driver and the physical device the driver controls. This enables a guest domain to make use of a network card on the host, store data on a host disk drive, and other such tasks.
xVM in Solaris currently supports two main split drivers used for I/O. Networking is done by using the xVM networking backend (xnb) drivers. Solaris or other operating system guest domains use xnb to transmit and receive networking traffic. Typically, a physical NIC, either shared or dedicated, is used for communicating with the guest domains. Solaris xVM provides networking access to guest domains by means of MAC-based virtual network switching.
Block I/O is provided by the xVM disk backend (xdb) driver, which provides virtual disk access to guest domains. In the control domain, the disk storage can be in a file, a ZFS volume, or a physical device.
A single physical NIC can be carved into multiple VNICs, which can be assigned to different zones or Solaris xVM instances running on the same system. VNICs are managed using the dladm command line utility described in the dladm(1M) man page.
Drivers for Solaris Running as a Guest
When running as a guest domain, Solaris xVM uses the xVM networking frontend (xnf ) and xVM disk frontend (xdf) drivers to talk to the relevant backend drivers.
In addition to these drivers, the Solaris console is virtualized when the Solaris system is running as a guest domain. The console driver interacts with the xenconsoled(1M) daemon running in domain 0 to provide console access.
Overview of Full Virtualization
In a full virtualization, the operating system is not aware that it is running in a virtualized environment under xVM. A fully virtualized guest domain is referred to as a hardware-assisted virtual machine (HVM). An HVM guest domain runs an unmodified operating system.
Fully-virtualized guest domains are supported under xVM with virtualization extensions available on Intel-VT or AMD Secure Virtual Machine (SVM) processors. These extensions must be present and enabled. Some BIOS versions disable the extensions by default.
Note - Full virtualization requires that the hypervisor transparently intercept many operations that an operating system typically performs directly on the hardware. This interception allows the hypervisor to ensure that a domain cannot read or modify another domain's memory, cannot interfere with its device access, and cannot shut down the CPUs it is using.