openstack-manuals/doc/config-reference/compute/section_introduction-to-xen.xml
Tom Fifield c9b312102f Add a note that Xen section is out of date
Patch adds a note that the Xen section is out of date, and
links to the blueprint to fix it. Xen still looks to devstack
for install items, and hasn't been updated for three releases
or so.

Change-Id: Ib2fa68e307cf465f496c43d345a5aa3a052d43fe
bp:redocument-xen
2014-04-17 12:45:00 +08:00

261 lines
14 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:id="introduction-to-xen">
<?dbhtml stop-chunking?>
<title xml:id="introduction-to-xen.title">Xen, XenAPI, XenServer,
and XCP</title>
<warning><title>This section needs help</title>
<para>This section is low quality, and contains out of date information.
The Documentation Team is currently looking for individuals with
experience with the hypervisor to
<link xlink:href="https://blueprints.launchpad.net/openstack-manuals/+spec/redocument-xen">Re-document
Xen integration with OpenStack</link>.</para>
</warning>
<para>This section describes Xen, XenAPI, XenServer, and XCP,
their differences, and how to use them with OpenStack. After
you understand how the Xen and KVM architectures differ, you
can determine when to use each architecture in your OpenStack
cloud.</para>
<section xml:id="basic-terminology">
<title>Xen terminology</title>
<para><emphasis role="bold">Xen</emphasis>. A hypervisor that
provides the fundamental isolation between virtual
machines. Xen is open source (GPLv2) and is managed by
Xen.org, an cross-industry organization.</para>
<para>Xen is a component of many different products and
projects. The hypervisor itself is very similar across all
these projects, but the way that it is managed can be
different, which can cause confusion if you're not clear
which tool stack you are using. Make sure you know what
tool stack you want before you get started.</para>
<para><emphasis role="bold">Xen Cloud Platform
(XCP)</emphasis>. An open source (GPLv2) tool stack
for Xen. It is designed specifically as a platform for
enterprise and cloud computing, and is well integrated
with OpenStack. XCP is available both as a binary
distribution, installed from an iso, and from Linux
distributions, such as <link
xlink:href="http://packages.ubuntu.com/precise/xcp-xapi"
>xcp-xapi</link> in Ubuntu. The current versions of
XCP available in Linux distributions do not yet include
all the features available in the binary distribution of
XCP.</para>
<para><emphasis role="bold">Citrix XenServer</emphasis>. A
commercial product. It is based on XCP, and exposes the
same tool stack and management API. As an analogy, think
of XenServer being based on XCP in the way that Red Hat
Enterprise Linux is based on Fedora. XenServer has a free
version (which is very similar to XCP) and paid-for
versions with additional features enabled. Citrix provides
support for XenServer, but as of July 2012, they do not
provide any support for XCP. For a comparison between
these products see the <link
xlink:href="http://wiki.xen.org/wiki/XCP/XenServer_Feature_Matrix"
> XCP Feature Matrix</link>.</para>
<para>Both XenServer and XCP include Xen, Linux, and the
primary control daemon known as <emphasis role="bold"
>xapi</emphasis>.</para>
<para>The API shared between XCP and XenServer is called
<emphasis role="bold">XenAPI</emphasis>. OpenStack
usually refers to XenAPI, to indicate that the integration
works equally well on XCP and XenServer. Sometimes, a
careless person will refer to XenServer specifically, but
you can be reasonably confident that anything that works
on XenServer will also work on the latest version of XCP.
Read the <link
xlink:href="http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/sdk.html#object_model_overview"
> XenAPI Object Model Overview</link> for definitions
of XenAPI specific terms such as SR, VDI, VIF and
PIF.</para>
<section xml:id="privileged-and-unprivileged-domains">
<title>Privileged and unprivileged domains</title>
<para>A Xen host runs a number of virtual machines, VMs,
or domains (the terms are synonymous on Xen). One of
these is in charge of running the rest of the system,
and is known as "domain 0," or "dom0." It is the first
domain to boot after Xen, and owns the storage and
networking hardware, the device drivers, and the
primary control software. Any other VM is
unprivileged, and are known as a "domU" or "guest".
All customer VMs are unprivileged of course, but you
should note that on Xen the OpenStack control software
(<systemitem class="service"
>nova-compute</systemitem>) also runs in a domU.
This gives a level of security isolation between the
privileged system software and the OpenStack software
(much of which is customer-facing). This architecture
is described in more detail later.</para>
<para>There is an ongoing project to split domain 0 into
multiple privileged domains known as <emphasis
role="bold">driver domains</emphasis> and
<emphasis role="bold">stub domains</emphasis>.
This would give even better separation between
critical components. This technology is what powers
Citrix XenClient RT, and is likely to be added into
XCP in the next few years. However, the current
architecture just has three levels of separation:
dom0, the OpenStack domU, and the completely
unprivileged customer VMs.</para>
</section>
<section xml:id="paravirtualized-vs-hvm-domains">
<title>Paravirtualized versus hardware virtualized
domains</title>
<para>A Xen virtual machine can be <emphasis role="bold"
>paravirtualized (PV)</emphasis> or <emphasis
role="bold">hardware virtualized (HVM)</emphasis>.
This refers to the interaction between Xen, domain 0,
and the guest VM's kernel. PV guests are aware of the
fact that they are virtualized and will co-operate
with Xen and domain 0; this gives them better
performance characteristics. HVM guests are not aware
of their environment, and the hardware has to pretend
that they are running on an unvirtualized machine. HVM
guests do not need to
modify the guest operating system, which is essential
when running Windows.</para>
<para>In OpenStack, customer VMs may run in either PV or
HVM mode. However, the OpenStack domU (that's the one
running <systemitem class="service"
>nova-compute</systemitem>) <emphasis role="bold"
>must</emphasis> be running in PV mode.</para>
</section>
</section>
<section xml:id="xenapi-deployment-architecture">
<title xml:id="xenapi-deployment-architecture.title">XenAPI
Deployment Architecture</title>
<para>When you deploy OpenStack on XCP or XenServer, you get
something similar to this: <informalfigure>
<mediaobject>
<imageobject>
<imagedata
fileref="../../common/figures/xenserver_architecture.png"
contentwidth="140mm"/>
</imageobject>
</mediaobject>
</informalfigure></para>
<para>Key things to note: <itemizedlist>
<listitem>
<para>The hypervisor: Xen</para>
</listitem>
<listitem>
<para>Domain 0: runs xapi and some small pieces
from OpenStack (some xapi plug-ins and network
isolation rules). The majority of this is
provided by XenServer or XCP (or yourself
using Kronos).</para>
</listitem>
<listitem>
<para>OpenStack VM: The <systemitem
class="service">nova-compute</systemitem>
code runs in a paravirtualized virtual
machine, running on the host under management.
Each host runs a local instance of <systemitem
class="service">nova-compute</systemitem>.
It will often also be running nova-network
(depending on your network mode). In this
case, nova-network is managing the addresses
given to the tenant VMs through DHCP.</para>
</listitem>
<listitem>
<para>Nova uses the XenAPI Python library to talk
to xapi, and it uses the Management Network to
reach from the domU to dom0 without leaving
the host.</para>
</listitem>
</itemizedlist></para>
<para>Some notes on the networking: <itemizedlist>
<listitem>
<para>The above diagram assumes FlatDHCP
networking (the DevStack default).</para>
</listitem>
<listitem>
<para>There are three main OpenStack Networks:<itemizedlist>
<listitem>
<para>Management network - RabbitMQ,
MySQL, etc. Please note that the VM
images are downloaded by the XenAPI
plug-ins, so make sure that the
images can be downloaded through
the management network. It usually
means binding those services to the
management interface.</para>
</listitem>
<listitem>
<para>Tenant network - controlled by
nova-network. The parameters of
this network depend on the
networking model selected (Flat,
Flat DHCP, VLAN).</para>
</listitem>
<listitem>
<para>Public network - floating IPs,
public API endpoints.</para>
</listitem>
</itemizedlist></para>
</listitem>
<listitem>
<para>The networks shown here must be connected
to the corresponding physical networks within
the data center. In the simplest case, three
individual physical network cards could be
used. It is also possible to use VLANs to
separate these networks. Please note, that the
selected configuration must be in line with
the networking model selected for the cloud.
(In case of VLAN networking, the physical
channels have to be able to forward the tagged
traffic.)</para>
</listitem>
</itemizedlist></para>
</section>
<section xml:id="pools">
<title>XenAPI pools</title>
<para>The host-aggregates feature enables you to create pools
of XenServer hosts to enable live migration when using
shared storage. However, you cannot configure shared
storage.</para>
</section>
<section xml:id="further-reading">
<title>Further reading</title>
<para>Here are some of the resources available to learn more
about Xen: <itemizedlist>
<listitem>
<para>Citrix XenServer official
documentation:<link
xlink:href="http://docs.vmd.citrix.com/XenServer/6.0.0/1.0/en_gb/"
>
http://docs.vmd.citrix.com/XenServer</link>.</para>
</listitem>
<listitem>
<para>What is Xen? by Xen.org: <link
xlink:href="http://xen.org/files/Marketing/WhatisXen.pdf"
>
http://xen.org/files/Marketing/WhatisXen.pdf</link>.</para>
</listitem>
<listitem>
<para>Xen Hypervisor project: <link
xlink:href="http://xen.org/products/xenhyp.html"
>
http://xen.org/products/xenhyp.html</link>.</para>
</listitem>
<listitem>
<para>XCP project: <link
xlink:href="http://xen.org/products/cloudxen.html"
>
http://xen.org/products/cloudxen.html</link>.</para>
</listitem>
<listitem>
<para>Further XenServer and OpenStack information:
<link
xlink:href="http://wiki.openstack.org/XenServer"
>
http://wiki.openstack.org/XenServer</link>.</para>
</listitem>
</itemizedlist></para>
</section>
<xi:include href="../../common/section_xen-install.xml"/>
<xi:include href="section_compute-configure-xen.xml"/>
</section>