Choice of Toolstacks: Difference between revisions

From Xen
Jump to navigationJump to search
(add CLI tool table)
(Add Toolstack Feature Comparison Table)
Line 3: Line 3:
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 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.


===Libxenlight===
===Libxenlight (libxl)===


Libxenlight is a small lower-level library written in C. It is meant to be simple to understand and easy to modify and extend. Basically, it is meant to be the common bottom third of any Xen toolstack. It was created to provide a simple and robust API for all the toolstack to use (instead of all of the toolstacks each implemented 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 meant to be simple to understand and easy to modify and extend. Basically, it is meant to be the common bottom third of any Xen toolstack. It was created to provide a simple and robust API for all the toolstack to use (instead of all of the toolstacks each implemented this common functionality). It was also created to be a common codebase to do Xen operations.


====(Libxenlight) Design Principles====
====libxl Design Principles====
* Implement Mechanisms, not policies
* Implement Mechanisms, not policies
* Stateless
* Stateless
Line 50: Line 50:
|}
|}


==Toolstack Feature Comparison==
===Discussion===

{| border="1" cellpadding="2" cellspacing="0"
| '''Features'''
| '''libxl'''
| '''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
|-
|Host Pools
|
|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
|-
|Flexible, Advanced Storage Types
|
|align="center" | X
|
|-
|Built-in advanced performance monitoring ([[XAPI_RRDs|RRD]])
|
|align="center" | X
|

|}

==Discussion==


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 is an important feature. Users have a choice to use xl, XAPI, libvirt, or other toolstack to manage their Xen system(s).
Line 64: Line 114:
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 OpenStack and CloudStack use to interact with Xen. It is available to be installed on standard Linux distributions such as Debian and Ubuntu ([[Project_Kronos|Project_Kronos]]). With support for Fedora and CentOS coming soon too ([[Project_Zeus_Fedora_Spec| 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?]].
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 OpenStack and CloudStack use to interact with Xen. It is available to be installed on standard Linux distributions such as Debian and Ubuntu ([[Project_Kronos|Project_Kronos]]). With support for Fedora and CentOS coming soon too ([[Project_Zeus_Fedora_Spec| 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?]].


===References===
==References==
* 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.
* [[http://wiki.openstack.org/XenAPI Why XAPI?]] discussion section includes comparison to libvirt
* [[http://wiki.openstack.org/XenAPI Why XAPI?]] discussion section includes comparison to libvirt

Revision as of 13:54, 13 February 2012

Choice of Toolstacks

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.

Libxenlight (libxl)

Libxenlight is a small lower-level library written in C. It is meant to be simple to understand and easy to modify and extend. Basically, it is meant to be the common bottom third of any Xen toolstack. It was created to provide a simple and robust API for all the toolstack to use (instead of all of the toolstacks each implemented 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

xl

The xl command line tool is the command line interface to libxenlight and the default toolstack for Xen as of Xen 4.1

XAPI

The Xen management API (xapi) is the default toolstack for Citrix XenServer and 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 [the XAPI source code], the [the XAPI mailing list], or the IRC channel (#xen-api on Freenode).

libvirt

libvirt is a virtualization API/toolkit used to manage various virtualization technologies. There is a libxenlight port of libvirt.

XEND

As of Xen 4.1, the xend toolstack is deprecated. xl should be used instead.


Command Line Interface (CLI) Tools

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

Toolstack CLI Tools
Toolstack libxl XAPI libvirt xend (deprecated)
CLI toool xl xe virsh xm (deprecated)

Toolstack Feature Comparison

Features libxl xapi libvirt
Purpose-built for Xen X X
Basic VM Operations X X X
Managed Domains X X
Host Pools X
Live Migration X X X
PCI Passthrough X X X
Flexible, Advanced Storage Types X
Built-in advanced performance monitoring (RRD) X

Discussion

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).

  • xl is very lightweight and is a great choice for develpers or users that need basic functionality only.
  • 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.
  • libvirt is a generalized virtualization layer for managing various virtualization technlogies with a common toolkit (or toolstack).

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 OpenStack and CloudStack use to interact with Xen. It is available to be installed on standard Linux distributions such as Debian and Ubuntu (Project_Kronos). With 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 [Why XAPI?].

References

  • Stefano's libxenlight [video] and [slides] at Xen Summit NA 2010.
  • [Why XAPI?] discussion section includes comparison to libvirt