Supported Virtualization Modes
There are two basic types of virtualization, full virtualization and paravirtualization. The hypervisor
supports both 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
In the more lightweight paravirtualization, the operating system is both aware of the
virtualization layer and modified to support it, which results in higher performance.
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
Since paravirtualization requires changes to the OS, only specific operating systems can be
hosted in a paravirtualized guest domain. Currently those are limited to Solaris, Linux,
and FreeBSD.
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.
Virtual NICs
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.