Archived/Xen Overview

__NOTOC__
= What is Xen? =
Xen is a robust, secure, high performance type 1 baremetal hypervisor, or a virtual machine monitor (VMM). Xen can securely execute multiple virtual machines, each running its own OS, on a single physical system with close-to-native performance. Xen is open source, and it's used as the core virtualization engine for many vendors products.
Xen is usually used as a server virtualization platform, running on headless servers without graphical console and controlled through the network. Some advanced users also run Xen on their graphical desktops.
Xen is a baremetal hypervisor, so it's the first program that gets loaded after BIOS. Xen will then start a special privileged guest called Domain-0.
For more information check http://xen.org or the wiki Main Page, Xen FAQ's or HowTo's. Also check the following PDF documents:
* http://www.xen.org/files/Marketing/WhatisXen.pdf
* http://www.xen.org/files/Marketing/WhyXen.pdf
* http://www.xen.org/files/Marketing/NewtoXenGuide.pdf
* http://www.xen.org/files/Marketing/HowDoesXenWork.pdf
* Excellent presentation covering the core concepts of Xen
= Xen Features =
You may also want to check out:
* Introduction to Xen 3.x
= Xen Domain-0 =
Domain-0 (dom0 for short) is a special privileged guest (virtual machine) Xen hypervisor always loads on host startup. Dom0 has some special privileges like access to the physical hardware, so it's able to load and use device drivers to access disk controllers and network adapters. Dom0 also has some duties. Dom0 is used to run the Xen management toolstack to control and manage the Xen hypervisor, and dom0 provides virtual disks and networks for other unprivileged guests (=domUs).
Dom0 is usually Linux, but it can also be NetBSD or OpenSolaris. Dom0 needs to have special Xen dom0 enabled kernel.
Xen dom0 can be thought as the "service console" for Xen.
See XenDom0Kernels wiki page for more information about available Linux dom0 enabled kernels.
= Xen supported virtualization types =
Xen supports running two different types of guests. Xen guests are often called as domUs (unprivileged domains). Both guest types (PV, HVM) can be used at the same time on a single Xen system.
== Xen Paravirtualization (PV) ==
Paravirtualization is an efficient and lightweight virtualization technique introduced by Xen, later adopted also by other virtualization solutions. Paravirtualization doesn't require virtualization extensions from the host CPU. However paravirtualized guests require special kernel that is ported to run natively on Xen, so the guests are aware of the hypervisor and can run efficiently without emulation or virtual emulated hardware. Xen PV guest kernels exist for Linux, NetBSD, FreeBSD, OpenSolaris and Novell Netware operating systems. Upstream kernel.org Linux kernels since Linux 2.6.24 include Xen PV guest (domU) support based on the Linux pvops framework, so every upstream Linux kernel can be automatically used as Xen PV guest kernel without any additional patches or modifications.
Also see:
* More Information...
* XenParavirtOps for information about Xen support in Linux
== Xen Full Virtualization (HVM) ==
Fully virtualized aka HVM (Hardware Virtual Machine) guests require CPU virtualization extensions from the host CPU (Intel VT, AMD-V). Xen uses modified version of Qemu to emulate full PC hardware, including BIOS, IDE disk controller, VGA graphic adapter, USB controller, network adapter etc for HVM guests. CPU virtualization extensions are used to boost performance of the emulation. Fully virtualized guests do not require kernel support, so for example Windows operating systems can be used as Xen HVM guest. Fully virtualized guests are usually slower than paravirtualized guests, because of the required emulation.
== PV on HVM ==
To boost performance fully virtualized HVM guests can use special paravirtual device drivers (PVHVM or PV-on-HVM drivers). PV-on-HVM drivers are optimized PV drivers for HVM environments that bypass the emulation for disk and network IO, thus giving you PV like (or better) performance on HVM systems. This means that you can get optimal performance on guests operating systems such as Windows.
Note that Xen PV (paravirtual) guests automatically use PV drivers: there is thus no need for these drivers - you are already automatically using the optimized drivers. PVHVM drivers are only required for Xen HVM (fully virtualized) guest VMs.
Also see:
* More Information...
* Information about using PV-on-HVM drivers
* HowTo on PV-on-HVM drivers
* Xen Windows HVM guests can use the opensource GPLPV drivers
= Xen dom0 kernel vs. PV guest kernel versions =
Xen dom0 kernel version can be different than Xen PV guest/domU kernel version. The interface/layer between domains is Xen hypervisor, not dom0 kernel, so the important part is that Xen hypervisor supports the ABI your PV guest kernel is using. New Xen hypervisor versions maintain backwards compabitility with older versions (PV guest kernel ABIs).
Examples:
* Xen hypervisor 3.4.1, dom0 kernel Linux 2.6.18.8-xen, PV domU guest kernel upstream vanilla Linux 2.6.31 pv_ops.
* Xen hypervisor 3.5-unstable, Dom0 kernel Linux 2.6.31 pv_ops, and PV domU guest kernel Debian 2.6.26-2-xen.
* Xen hypervisor 3.1.2, dom0 kernel RHEL5/CentOS5 kernel-xen-2.6.18-164.el5 and PV domU guest kernel Debian etch 2.6.18-6-xen.
Xen hypervisor <-> dom0 kernel has more dependencies than Xen hypervisor <-> PV guest kernel. You should always match Xen hypervisor and dom0 kernel versions more closely, so that dom0 is able to utilize all the features Xen hypervisor provides.
Many people prefer running the PV domU guest kernel provided by the guest distribution, to be able to easily upgrade it and get security updates automatically with all the other updates provided by the guest distribution. Pygrub or more secure pvgrub can be used in dom0 to load the guest kernel from guest /boot filesystem. Some people prefer providing the PV guest kernel from dom0, and not let the guest distribution root to change/update it.
= Xen management =
The default management tools in Xen are command line (CLI) based. Xen is managed from dom0 shell using "xm" commandline tools or through the network using management APIs. Xen is usually thought as the core "engine", so the included management tools are pretty basic. Many people use additional management tools (scripts or web-based tools) on top of the standard Xen management tools.
= Additional management tools =
There are many external or 3rdparty management tools for Xen. Redhat has developed virsh, virt-install and virt-manager for managing hypervisors. These tools are included in RHEL5 (Redhat Enterprise Linux 5), CentOS5 and Debian 5.0. There are also numerous web-based Xen control panels.
More information about various Xen management tools and (web) interfaces available from XenManagementTools wiki page.
= Xen management APIs =
Please see:
* Toolstack choices
* Xen Management Tools
= Installing new guests =
== Installing new Paravirtual (PV) guests ==
Installing new Xen PV guests can be tricky because PV guests are lightweight and don't have things like BIOS to boot from CD/DVD. Also most Linux distribution installer CD/DVDs don't contain Xen PV enabled domU kernels so you cannot usually start operating system installer from a CD/DVD or from .ISO image.
* RHEL 4 and 5, CentOS 4 and 5, and Fedora distributions have Xen PV guest kernels included and they also contain netinstall images that can be booted as Xen PV guest allowing the new guest to be installed easily using the normal distribution installer.
* If you are running RHEL5/CentOS5/Fedora on dom0 you can use "virt-install" or graphical "virt-manager" to easily install new RHEL/CentOS/Fedora Xen PV guests. Note that both of these tools open graphical console for the guest installation (as a default), so make sure you have ssh X11 forwarding enabled to be able to display the console on your desktop. You don't need to run graphical X server on the Xen host/server, it's enough to have xorg-x11-xauth package installed and ssh X11 forwarding enabled.
* For more information about virt-install and/or virt-manager please see: http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/index.html
* Ubuntu 10.04 ("Lucid Lynx") installer can be booted as a Xen PV guest and installed easily that way.
* Debian 6.0 ("Squeeze") installer can be booted as a Xen PV guest and installed easily that way.
* Debian provides "xen-tools" package that can be used to easily install new Debian/Ubuntu Xen PV guests
* Debian also provides "debootstrap" utility which can be used to manually setup new Debian/Ubuntu Xen PV guest. Note that you need to configure absolutely everything manually, so this method is only recommended if you are familiar with Debian/Ubuntu and Xen internals.
* Debian "debootstrap" is also available as RPM package for users running RHEL/CentOS/Fedora on dom0. Fedora 12 contains version 1.0.10 of debootstrap. Newer version (1.0.19 etc) are available from Fedora koji build service: http://koji.fedoraproject.org/koji/packageinfo?packageID=5292
* You can always deploy new PV guests from a ready-made images.
== Installing new HVM guests ==
Since Xen HVM guests emulate full PC hardware and BIOS, normal operating system installers can be booted and started from a normal CD/DVD or from .ISO image.
= Linux Xen PV guest kernel availability =
Upstream kernel.org Linux kernels contain "pv_ops" Xen paravirtual guest support out-of-the-box since Linux 2.6.23, so all the latest Linux kernels have Xen PV domU support available. See XenParavirtOps wiki page for more information. There's also the old-style Xenlinux PV domU support available for Linux 2.6.18 from mercurial here: http://xenbits.xen.org/linux-2.6.18-xen.hg 
= Linux distributions that include Xen domU support =
For a list of Linux distributions that support Xen as domU guest kernel see XenDomUSupport.
= Linux distributions that include Xen dom0 support =
For a list of Linux distributions that support Xen as dom0 kernel see XenDom0Kernels.
= New to Xen? What's the best way to try Xen virtualization? =
The follwing documents provide a good start. 
* HostConfiguration
* XenBestPractices
* :Category:FAQ
* :Category:HowTo
* :Category:Tutorial
= Citrix XenServer / XenCenter =
Citrix XenServer is a Linux distribution (based on CentOS 5) that includes Xen hypervisor, and additional closed source proprietary management tools. The "xm" management tool from opensource Xen is replaced with "xe" (Xen Enterprise) tool. There's a version of XenServer that you can use for free (without paying).
XenCenter is a Windows based centralized management tool that can be used to manage multiple XenServer hosts. XenCenter can be compared to VMware's Virtual Center. XenCenter cannot be used to manage hosts running opensource Xen.
Citrix provides commercial support for XenServer / XenCenter.
Citrix XenServer (not XenCenter) was opensourced in 11/2009 as Xen Cloud Platform (XCP)! Opensourcing includes the XAPI management toolstack used in XenServer/XCP.
= Xen Cloud Platform (XCP) =
For more information about XCP please see: http://www.xen.org/products/cloudxen.html
= Xen Client Initiative (XCI) and Hosted Xen (HXEN) =
For more information about XCI please see: http://www.xen.org/products/xci.html
For more information about HXEN please see: http://www.xen.org/products/projects.html
= Xen development =
If you're interesting in developing Xen please check out the XenDevelopmentProjects wiki page. It has a list of projects that anyone can pick up and work with!
== Links to more information about Xen ==
* Xen 4.0 release notes: Xen4.0
* Common problems: XenCommonProblems
* FAQ: XenFaq
* Xen wiki main page: http://wiki.xensource.com/xenwiki/
Category:Xen
Category:Overview
Category:Users
Category:Beginners
Category:Archived