Migrating from xend to libxl
xend and libxl
xend is a daemon, written in python, for managing Xen domains. Beginning in Xen 4.1, work began on a replacement, called libxl. libxl has several advantages over xend:
- It is a library with well-defined IDL bindings, making it easy for other higher-level programs to link against
- It has a stable API, guaranteeing backwards-compatibility with existing applications
- It has a well-defined event model, which makes concurrent operations possible.
The command-line tool which administrators could use to issue commands to xend was called xm. This has been replaced with xl, a toolstack which links against libxl.
libxl/xl has been the preferred toolstack since Xen 4.2. As of 4.5, xend has been removed from the tree; so Xen 4.4 (the current Xen4CentOS version) is the last release that contains xend. Users should transition over to xl/libxl as soon as possible.
Migrating from xm to xl
xl has designed to be command-line compatible with xm. For the most part, you should be able to use your old xm config files and commands with xl instead, as below:
xl create vm.cfg xl list xl shutdown vm
There are a few exceptions, mentioned in the xenproject xl wiki page. Notable exceptions are as follows:
Unlike xm, xl cannot parse python code in the config file.
xl does not do "managed domains". If you require this kind of funcitonality, please use a higher-level tool like libvirt.
Any xm functionality not in the list of "antifeatures" on the above webpage should be supported by xl. If you find functionality of xm that does not work, and is not on that list, please report it to the centos-virt or xen-user lists so it can be fixed.
To use xl/libxl, you only need to disable xend:
chkconfig xend off service xend stop
Migrating from libvirt with xend to libvirt with libxl
When the libvirt daemon libvirtd is started, it will automatically determine whether to use xend or libxl.
Unfortunately, because of differences in the driver implementation, you cannot simply migrate back and forth by stopping xend and restarting libvirtd. You have to manually migrate your VM configurations from xend to libxl
Luckily, that's not too difficult. First, export the libvirt xml configuration for each of your VMs:
virsh shutdown ${vmname} virsh dumpxml ${vmname} > ${vmname}.xml
Then shutdown xend and restart libvirtd (so it switches to libxl):
chkconfig xend off service xend stop service libvirtd restart
Finally, import the libvirt xml configurations again for each domain:
virsh define ${vmname}.xml
The majority of functionality supported by libvirt/xend should also work in libvirt/libxl without any further issue. If you find something that doesn't work, please report it to the centos-virt or xen-user list.