Difference between revisions of "Choice of Toolstacks"

From Xen
m (XAPI / XE)
 
(32 intermediate revisions by 5 users not shown)
Line 1: Line 1:
One really great feature of Xen is that there are several choices of toolstacks that can be used to manage it. Before the introdcution of libxenlight, there was a complicated and inefficient toolstack situation. The issue was that xend, xapi, libvirt, etc. all needed to manage many common low-level operations, which led to code duplication, ineffeciences, bugs, and wasted effort (e.g fixing the same bug in all of of the toolstacks). Further, the default toolstack at the time (xend) was difficult to understand, modify, and extend.
+
One really great feature of the Xen Project hypervisor is that there are several choices of toolstacks that can be used to manage it. Before the introduction of libxenlight, there was a complicated and inefficient toolstack situation. The issue was that xend, xapi, libvirt, etc. all needed to manage many common low-level operations, which led to code duplication, inefficiences, bugs, and wasted effort (e.g fixing the same bug in all of the toolstacks). Further, the default toolstack at the time (xend) was difficult to understand, modify, and extend.
  +
  +
[[File:ToolStacks.png|800x190px]]
  +
  +
Each toolstack exposes an API, which will run different tools. The figure below gives a very brief overview over the choices you have, which commercial products use which stack and examples of hosting vendors using specific APIs.
   
 
==Libxenlight (libxl)==
 
==Libxenlight (libxl)==
   
Libxenlight is a small lower-level library written in C. It is simple to understand and easy to modify and extend. Libxl is (or will be) shared by all Xen toolstacks. It was created to provide a simple and robust API for all the toolstack to use (instead all of the toolstacks each implementing this common functionality). It was also created to be a common codebase to do Xen operations.
+
Libxenlight is a small lower-level library, written in C. It is simple to understand; and easy to modify, and extend. Libxl is (or will be) shared by all Xen Project toolstacks. It was created to provide a simple and robust API for all the toolstacks to use (instead all of the toolstacks each implementing this common functionality). It was also created to be a common codebase to do Xen operations.
   
 
===libxl Design Principles===
 
===libxl Design Principles===
* Implement Mechanisms, not policies
+
* Implement mechanisms, not policies
 
* Stateless
 
* Stateless
 
* Hide xenstore, libxenctrl, and libxenguest from higher levels
 
* Hide xenstore, libxenctrl, and libxenguest from higher levels
Line 12: Line 16:
   
 
=== Also see ===
 
=== Also see ===
  +
* [[Xen_Man_Pages|Man Pages (including pages for XL)]]
* [[Libxl_event_API_improvements|Libxl improvements (in Xen 4.2)]]
 
 
* Stefano's libxenlight [[http://vimeo.com/12307386 video]] and [[http://www.slideshare.net/xen_com_mgr/xen-summit-amd2010v3 slides]] at Xen Summit NA 2010.
 
* Stefano's libxenlight [[http://vimeo.com/12307386 video]] and [[http://www.slideshare.net/xen_com_mgr/xen-summit-amd2010v3 slides]] at Xen Summit NA 2010.
   
Line 21: Line 25:
 
=== Default / XL ===
 
=== Default / XL ===
   
[[XL|xl]] is a lightweight command line toolstack built using libxenlight. [[XL|xl]] is shipped along with Xen and is the default toolstack for Xen as of Xen 4.1.
+
[[XL|xl]] is a lightweight command line toolstack built using libxenlight. [[XL|xl]] is shipped along with Xen and is the default toolstack as of Xen Project 4.1.
   
[[XL|xl]] was designed to be backwards compatible with the '''xm''' CLI for xend.
+
[[XL|xl]] was designed to be backwards compatible with the '''xm''' CLI for xend. It provides a straightforward command line interface to Xen's facilities for guest creation and management.
   
 
'''Also see:'''
 
'''Also see:'''
  +
* [[XL]]
* [http://xen.org/community/vendors/XenProjectsPage.html Open source projects interfacing/using the default stack]
 
  +
* [[XL vs Xend Feature Comparison]]
* [http://xen.org/community/vendors/XenProductsPage.html Commercial products interfacing/using the default stack]
 
  +
* [http://xen.org/community/vendors/XenProjectsPage.html Open source projects interfacing/using the default stack (page is deprecated)]
  +
* [http://xen.org/community/vendors/XenProductsPage.html Commercial products interfacing/using the default stack (page is deprecated)]
  +
* [http://xenproject.org/directory/directory.html Projects and Products employing Xen Project software]
  +
* [[Xen Management Tools|Xen Project Management Tools]] - Duplicates some of the info above
   
 
===XAPI / XE ===
 
===XAPI / XE ===
   
  +
The Xen Project management API ([[XAPI|xapi]]) is the default toolstack for [http://www.xenserver.org/ XenServer] and [https://xcp-ng.org/ XCP-ng]. It is also used in some installations of [[:Category:CloudStack|CloudStack]].
The Xen management API ([[XAPI|xapi]]) is the default toolstack for Citrix [[XenServer]] and [[:Category:XCP|XCP]]. XAPI is fully open source and has been ported to Linux distributions (see [[Project Kronos]]). At the time of this writing, work is in progress to port XAPI to use libxenlight. For more information see [https://github.com/xen-org/xen-api the XAPI source code], the [http://lists.xen.org/mailman/listinfo/xen-api the XAPI mailing list], or the IRC channel (#xen-api on Freenode).
 
  +
It has Free Software licence. The now-abandoned [[:Category:XCP|XCP]] project was an attempt to provide a community-developed, Open Source style distribution of XAPI which would be available in distros.
 
'''Also see:'''
 
* [http://wiki.openstack.org/XenAPI Why XAPI?] discussion section includes comparison to libvirt
 
* [[XCP:_Nuts_and_Bolts|Nuts and Bolts from Steven Maresca]] (not only why XAPI, but how to use it)
 
* [http://xen.org/community/vendors/XCPProjectsPage.html Open source projects interfacing with/using XAPI]
 
* [http://xen.org/community/vendors/XCPProductsPage.html Commercial products interfacing with/using XAPI]
 
* [[XCP Management Tools]] - duplicates some of the info above
 
* [[:Category:XCP|More info on XCP]]
 
 
'''Why Choose XAPI?'''
 
 
By far the most versatile and feature-complete Xen toolstack is XAPI. XAPI is production-ready and purpose-built for Xen. It is default in Citrix XenServer and XCP. It is the API that cloud orchestration software such as
 
* [[:Category:CloudStack|CloudStack]]
 
* [[OpenNebulaXCP|OpenNebula]]
 
* [[:Category:OpenStack|OpenStack]]
 
use to interact with Xen. XCP comes in two flavours:
 
* As ISO in a defined and pre-configures set-up that is installed on bare-metal systems ([http://xen.org/download/xcp/index.html download])
 
* As packages to be installed on standard Linux distributions:
 
** [http://www.debian.org/News/2012/20120425 Debian Info]]
 
** [http://xen.org/news/2012/05_xcp_in_ubuntu_server_12_04_LTS.html Ubuntu Info]]
 
** [[XAPI_on_Debian|XCP toolstack on a Debian-based distribution]]
 
** Support for Fedora and CentOS coming soon too ([[Project Zeus Fedora Spec]]).
 
 
Finally, there are several design decisions that make it a better choice than libvirt (see [[http://wiki.openstack.org/XenAPI Why XAPI?]]).
 
   
 
=== libvirt / VIRSH===
 
=== libvirt / VIRSH===
   
[[libvirt]] is a virtualization API/toolkit used to manage various virtualization technologies. There is a libxenlight port of libvirt.
+
[[Libvirt]] is a virtualization API/toolkit used to manage various virtualization technologies. Originally designed to interface with xm, there is a libxenlight port of libvirt.
   
 
'''Also see:'''
 
'''Also see:'''
  +
* [http://libvirt.org/drvxen.html libvirt Xen Project hypervisor driver]
 
* [http://libvirt.org/apps.html Applications using libvirt]
 
* [http://libvirt.org/apps.html Applications using libvirt]
  +
* [http://libvirt.org/architecture.html libvirt Xen Project architecture]
  +
* [http://unixfoo.blogspot.co.uk/2008/09/xen-management-virsh-commands.html You can use virsh to manage xen virtual servers: here are some basic commands using virsh]
  +
* [http://bderzhavets.wordpress.com/2010/01/07/virsh-libvirt-0-7-2-managing-domus-on-opensuse-11-2/ Virsh & managing Xen DomUs on openSUSE 11.2]
   
=== Default / XEND (Deprecated in Xen 4.1) ===
+
=== Default / XEND (Deprecated in Xen 4.1; Removed in 4.5) ===
   
XEND is the previous toolstack and continues to be included as part of the Xen source releases. However as of Xen 4.1 XEND is now deprecated and will likely be removed in a future release. It is recommended that new deployments use one of the other toolstacks discussed above.
+
[[XEND]] is the previous toolstack and continues to be included as part of the Xen source releases. However as of Xen 4.1 XEND is now deprecated and will likely be removed in a future release. It is recommended that new deployments use one of the other toolstacks discussed above.
   
 
[[XL|xl]] was designed to be command line compatible with the '''xm''' CLI to xend and this should provide the easiest upgrade path.
 
[[XL|xl]] was designed to be command line compatible with the '''xm''' CLI to xend and this should provide the easiest upgrade path.
  +
  +
== Also See ==
  +
* [[XL vs Xend Feature Comparison]]
  +
* [[XEND]]
  +
* [https://tipstricks.itmatrix.eu/?p=2131 Switching from xm to xl in Debian Wheezy] blog post
   
 
==Command Line Interface (CLI) Tools==
 
==Command Line Interface (CLI) Tools==
Line 74: Line 68:
 
The table shows the command line tools to use with each of the toolstacks.
 
The table shows the command line tools to use with each of the toolstacks.
   
  +
{| class="prettytable"
{| border="1" cellpadding="20" cellspacing="0"
 
|+ align="bottom" |''Toolstack CLI Tools''
 
 
|-
 
|-
|'''Toolstack'''
+
!style="width:150px;"|Toolstack
  +
!style="width:50px;"|xl
|xl
 
  +
!style="width:50px;"|XAPI
|XAPI
 
|libvirt
+
!style="width:50px;"|libvirt
  +
!style="width:50px;"|xend
|xend
 
 
|-
 
|-
|'''CLI tool'''
+
!CLI tool
  +
![[XL]]
|xl
 
  +
![[XCP Command Line Interface|xe]]
|xe
 
|virsh
+
!virsh
  +
![[XM]]
|xm
 
 
|}
 
|}
   
 
''Note: xl does not have a toolstack/cli split since the toolstack is the cli. Hence it appears under both headings.''
 
''Note: xl does not have a toolstack/cli split since the toolstack is the cli. Hence it appears under both headings.''
   
  +
''Note: xm has been removed in Xen 4.5.''
==Toolstack Feature Comparison==
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
| '''Features'''
 
| '''xl'''
 
| '''xapi'''
 
| '''libvirt'''
 
|-
 
|Purpose-built for Xen
 
|align="center" | X
 
|align="center" | X
 
|
 
|-
 
|Basic VM Operations
 
|align="center" | X
 
|align="center" | X
 
|align="center" | X
 
|-
 
|Managed Domains
 
|
 
|align="center" | X
 
|align="center" | X
 
|-
 
|Live Migration
 
|align="center" | X
 
|align="center" | X
 
|align="center" | X
 
|-
 
|PCI Passthrough
 
|align="center" | X
 
|align="center" | X
 
|align="center" | X
 
|-
 
|Host Pools
 
|
 
|align="center" | X
 
|
 
|-
 
|Flexible, Advanced Storage Types
 
|
 
|align="center" | X
 
|
 
|-
 
|Built-in advanced performance monitoring ([[XAPI_RRDs|RRDs]])
 
|
 
|align="center" | X
 
|
 
|-
 
|Host Plugins ([[XAPI_Host_Plugins|XAPI]])
 
|
 
|align="center" | X
 
|
 
|}
 
   
==Discussion==
+
==Summary==
   
The power and flexibility of the management of Xen is an important feature. Users have a choice to use xl, XAPI, libvirt, or other toolstack to manage their Xen system(s).
+
The power and flexibility of the management of Xen Project is an important feature. Users have a choice to use xl, XAPI, libvirt, or another toolstack to manage their Xen system(s).
   
 
* xl is very lightweight and is a great choice for develpers or users who are most comfortable with Unix like CLI tools.
 
* xl is very lightweight and is a great choice for develpers or users who are most comfortable with Unix like CLI tools.
   
* XAPI is a powerful toolstack that provides domain life-cycle management, pool-awareness (multiple Xen systems added to a central logical pool), and many other advanced features available with Xen.
+
* XAPI is a powerful toolstack that provides domain life-cycle management, pool-awareness (multiple Xen systems added to a central logical pool), and many other advanced features available with Xen Project software.
   
 
* libvirt is a generalized virtualization layer for managing various virtualization technlogies with a common toolkit (or toolstack).
 
* libvirt is a generalized virtualization layer for managing various virtualization technlogies with a common toolkit (or toolstack).
Line 163: Line 104:
 
[[Category:Users]]
 
[[Category:Users]]
 
[[Category:Xen]]
 
[[Category:Xen]]
[[Category:XCP]]
+
[[Category:XAPI]]
  +
[[Category:Fundamentals]]

Latest revision as of 18:39, 5 November 2018

One really great feature of the Xen Project hypervisor is that there are several choices of toolstacks that can be used to manage it. Before the introduction of libxenlight, there was a complicated and inefficient toolstack situation. The issue was that xend, xapi, libvirt, etc. all needed to manage many common low-level operations, which led to code duplication, inefficiences, bugs, and wasted effort (e.g fixing the same bug in all of the toolstacks). Further, the default toolstack at the time (xend) was difficult to understand, modify, and extend.

ToolStacks.png

Each toolstack exposes an API, which will run different tools. The figure below gives a very brief overview over the choices you have, which commercial products use which stack and examples of hosting vendors using specific APIs.

Libxenlight (libxl)

Libxenlight is a small lower-level library, written in C. It is simple to understand; and easy to modify, and extend. Libxl is (or will be) shared by all Xen Project toolstacks. It was created to provide a simple and robust API for all the toolstacks to use (instead all of the toolstacks each implementing this common functionality). It was also created to be a common codebase to do Xen operations.

libxl Design Principles

  • Implement mechanisms, not policies
  • Stateless
  • Hide xenstore, libxenctrl, and libxenguest from higher levels
  • Be as simple as possible

Also see

Choice of Toolstacks

This section describes the various toolstacks (and the console that is used to run it).

Default / XL

xl is a lightweight command line toolstack built using libxenlight. xl is shipped along with Xen and is the default toolstack as of Xen Project 4.1.

xl was designed to be backwards compatible with the xm CLI for xend. It provides a straightforward command line interface to Xen's facilities for guest creation and management.

Also see:

XAPI / XE

The Xen Project management API (xapi) is the default toolstack for XenServer and XCP-ng. It is also used in some installations of CloudStack. It has Free Software licence. The now-abandoned XCP project was an attempt to provide a community-developed, Open Source style distribution of XAPI which would be available in distros.

libvirt / VIRSH

Libvirt is a virtualization API/toolkit used to manage various virtualization technologies. Originally designed to interface with xm, there is a libxenlight port of libvirt.

Also see:

Default / XEND (Deprecated in Xen 4.1; Removed in 4.5)

XEND is the previous toolstack and continues to be included as part of the Xen source releases. However as of Xen 4.1 XEND is now deprecated and will likely be removed in a future release. It is recommended that new deployments use one of the other toolstacks discussed above.

xl was designed to be command line compatible with the xm CLI to xend and this should provide the easiest upgrade path.

Also See

Command Line Interface (CLI) Tools

The table shows the command line tools to use with each of the toolstacks.

Toolstack xl XAPI libvirt xend
CLI tool XL xe virsh XM

Note: xl does not have a toolstack/cli split since the toolstack is the cli. Hence it appears under both headings.

Note: xm has been removed in Xen 4.5.

Summary

The power and flexibility of the management of Xen Project is an important feature. Users have a choice to use xl, XAPI, libvirt, or another toolstack to manage their Xen system(s).

  • xl is very lightweight and is a great choice for develpers or users who are most comfortable with Unix like CLI tools.
  • XAPI is a powerful toolstack that provides domain life-cycle management, pool-awareness (multiple Xen systems added to a central logical pool), and many other advanced features available with Xen Project software.
  • libvirt is a generalized virtualization layer for managing various virtualization technlogies with a common toolkit (or toolstack).