#783901 doesn't pick up xl managed domains

Package:
libvirt-daemon
Source:
libvirt
Description:
Virtualization daemon
Submitter:
Gerald Turner
Date:
2015-08-13 14:36:10 UTC
Severity:
wishlist
#783901#5
Date:
2015-05-01 04:48:12 UTC
From:
To:
Dear Maintainer,

I have a server setup with Xen and 12 domU's strictly using Debian,
since squeeze, wheezy, and now jessie.  I had been minimally using
libvirt with munin-node to poll statistics.  After upgrading to jessie,
and converting Xen configuration to xl.cfg format, libvirt no longer
enumerates any of the domU's, and does not report any errors other than
information being empty.

For example:

  # virsh -c 'xen:///' list --all
   Id    Name                           State
  ----------------------------------------------------

Attached is "LIBVIRT_DEBUG=1 libvirtd" output.  At line 10640 is a
conneection from the aforementioned 'virsh' command.  Shortly thereafter
there are logs like:

  2015-05-01 04:15:52.835+0000: 23215: debug : do_open:1145 : trying driver 5 (xenlight) ...
  2015-05-01 04:15:52.835+0000: 23211: debug : virEventPollRunOnce:642 : EVENT_POLL_RUN: nhandles=10 timeout=4999
  2015-05-01 04:15:52.835+0000: 23215: debug : virObjectRef:296 : OBJECT_REF: obj=0x7f4ec3c232c0
  2015-05-01 04:15:52.835+0000: 23215: debug : virAccessManagerCheckConnect:218 : manager=0x7f4ec3c232c0(name=stack) driver=xenlight perm=0
  2015-05-01 04:15:52.835+0000: 23215: debug : virAccessManagerCheckConnect:218 : manager=0x7f4ec3c26940(name=none) driver=xenlight perm=0
  2015-05-01 04:15:52.835+0000: 23215: debug : virObjectUnref:259 : OBJECT_UNREF: obj=0x7f4ec3c232c0
  2015-05-01 04:15:52.835+0000: 23215: debug : do_open:1152 : driver 5 xenlight returned SUCCESS

AFAICT this looks like the new libxl driver is getting used.

#783901#10
Date:
2015-05-01 17:59:54 UTC
From:
To:
Hi,

See:

https://libvirt.org/drvxen.html

you might still have xend running, but

...this looks like xenlight indeed but you need to create xenlight
configs as described at the above URL.
Cheers,
 -- Guido

#783901#15
Date:
2015-05-01 19:51:37 UTC
From:
To:
I read that before reporting.  xend is no longer included in jessie (was
in wheezy xen-utils-4.1 package, no longer in jessie xen-utils-4.4
package).  I rebooted after dom0 dist-upgrade.  Definitely no xend
running.

Interesting.  I had been running libvirt thru the lifetime of squeeze
and wheezy without customizing anything under /etc/libvirt, given my
use-case of minimally using libvirt to report stats.  AIUI libvirt was
able to communicate with xend (4.0 and 4.1) and enumerate the domU's
managed by xend, however under Xen 4.4 and the switch to libxl, libvirt
requires configuration.  If that is true then this bug should probably
be closed or at the very least changed to priority 'wishlist'.

The operations side of things seems a bit under-documented, so pardon me
for being verbose, as this may be helpful to someone.

Following the “Converting from XM config files to domain XML”, it's not
obvious where to store the converted config.

Running libvirtd with LIBVIRT_DEBUG=1, I see the following message:

  info : virDomainObjListLoadAllConfigs:19450 : Scanning for configs in /etc/libvirt/libxl

Looks like libvirtd expects configuration in this directory.

  # mkdir /etc/libvirt/libxl
  # virsh -c xen:/// domxml-from-native xen-xm /etc/xen/host1.cfg \
     > /etc/libvirt/libxl/host1.xml

Then restart libvirtd.  Nothing has changed.  More debug output:

  info : virDomainObjListLoadAllConfigs:19450 : Scanning for configs in /etc/libvirt/libxl
  info : virDomainObjListLoadAllConfigs:19474 : Loading config file 'host1.xml'
  error : virDomainDiskDefParseXML:5949 : internal error: Invalid harddisk device name: raw

Inspecting the converted domain XML, I see disk declarations like:

  <disk type='block' device='disk'>
    <driver name='phy'/>
    <source dev='/dev/vg-ssd/lv-host1-root'/>
    <target dev='raw' bus='xen'/>
  </disk>

… dev=raw should probably be dev=xvda, etc.  Otherwise everything else
looks okay.  The libvirt Xen driver documentation speaks of 'XM', while
Xen 4.4 has changed to 'XL' configiration files.  Looking at the libvirt
ChangeLog, I see upstream versions that probably fix this problem:

  * 1.2.12: Jan 27 2015
      libxl: Add support for parsing/formating Xen XL config (Kiarie Kahurani)
      Introduce support for parsing/formatting Xen xl config format (Jim Fehlig)

After correcting the domain XML, and restarting libvirtd once more,
things start progressing:

  # virsh -c xen:/// list --all
   Id    Name                           State
  ----------------------------------------------------
   -     host1                          shut off

… however “shut off” is incorrect.

Not sure how to proceed, other than abandon libvirt, for Xen anyway.
Maybe look at it again during 'stretch'.

#783901#20
Date:
2015-05-08 17:02:54 UTC
From:
To:
On Fri, May 01, 2015 at 12:51:37PM -0700, Gerald Turner wrote:
[..snip..]

We could cherry pick those to our stable release.

Stupid question but did you start the domain via virsh beforehand? If
so, is there anything interesting in the daemon log? AFAIK
configurations are now managed entierly via /etc/libvirt/libxl/ .

Cheers,
 -- Guido

#783901#25
Date:
2015-05-08 18:55:28 UTC
From:
To:
Control: severity -1 wishlist

Nice!  However unless somebody else comes along and has the same
expectations that I had (i.e. libvirt recognizing Xen guests with little
or no configuration), I wouldn't put any effort into this.

Not stupid because that's part of the point I've subtly been trying to
make - I'm sticking with domU's started by /etc/init.d/xendomains and
/usr/sbin/xl, the "Xen way".  For four years during squeeze and wheezy,
I had dropped in munin-libvirt-plugins and libvirt-bin (0.8.3 and
0.9.12) for the sole purpose of monitoring the domU's memory/cpu/io.
This worked without any configuration other than specifying "uri
xen:///" in the munin-node plugin configuration.  During the
"heartbleed" panic, after hastily reacting to the output of
checkrestart, I accidently discovered that "service libvirt-guests
restart" actually handles restarts of these "unmanaged" domU's.
Fantastic!  Consequently I've been telling sysadmin colleagues that
libvirt is great because it integrates non-intrusively and can handle
heterogeneous VM environments.

Sorry - I was too quick to react after upgrading to jessie and opening
this bug.  FWICT libvirt+Xen/xl no longer supports this "unmanaged"
use-case like the way libvirt+Xen/xend was able to in previous releases.
In the meantime I've dropped in a non-Debian-packaged Xen munin plugin¹
and have stopped relying on libvirt.

Perhaps one day I'll experiment with a managed libvirt+Xen setup on a
non-Production system and report some real bugs ;-)

¹ http://munin-monitoring.org/browser/munin-contrib/plugins/virtualization/xen-multi

#783901#32
Date:
2015-05-11 06:57:00 UTC
From:
To:
retitle 783901 libvirtd does not recognize Xen guests managed via /usr/sbin/xl

Hi,

Could you attach a configuration to this bug that shows he conversion
errors. I'll try to get this fixed so we ease the migration. That said
there are lots of libxl changes in newer libvirt so running a backported
1.2.15 might make more sense.
managed xen domains aren't picked up by /usr/sbin/xl and vice versa.

It's bad that this isn't true for Jessie anymore but looking at the
uptream list it seems most distros are switching over to libvirt managed
xen domains.

I think the bug is valid and we should leave it open since others might
stomp on it as well.

Cheers,
 -- Guido

#783901#37
Date:
2015-05-16 21:02:01 UTC
From:
To:
Attached example.cfg in xl.cfg(5) format, and the produced example.xml
when running ‘virsh domxml-from-native xen-xm example.cfg >|
example.xml’.

The only problem seems to be parsing the disks, which is specified in
the xl-disk-configuration.txt¹ document, wherein it looks like the
<vdev> and <format> positional parameters were swapped from the older xm
format.

Not quite.

xl managed xen domains aren't picked up by libvirt.

As for vice-versa, sorry but I haven't tried whether libvirt managed xen
domains are picked up by xl.

Interesting.  I wonder if systemd-machined has been integrated with
libvirt - yet another compelling reason to change management stacks.

¹ http://xenbits.xen.org/docs/4.4-testing/misc/xl-disk-configuration.txt

#783901#42
Date:
2015-05-16 23:27:46 UTC
From:
To:
libvirt/libxl with libvirt managed domU a bit further:

  * shutdown a particular domU (xl shutdown host)
  * removed it's /etc/xen/host.cfg file (no way it's xl managed anymore)
  * created /etc/libvirt/libxl/host.xml file
  * restarted libvirtd
  * started the domU with libvirt (virsh start host)

This worked fine.  The ‘virsh list’ output properly reports ‘running’.
This also answers your earlier vice-versus question: the xl tool *does*
recognize the libvirt managed domU just fine.  In other words, the
best-of-both-worlds setup.

However after doing this I discovered that there are many features in
the libvirt/libxl driver that are unimplemented¹, in particular, missing
functions that the originally sought after munin-libvirt-plugins
requires, for example:

  virsh # domblkstat host
  error: Failed to get block stats host
  error: this function is not supported by the connection driver: virDomainBlockStats

Scanning through git logs², I see no indication that these missing
features are being worked on.

Given that nothing has been gained, and that I'm not using any libvirt
software that doesn't depend on unimplemented features of the
libvirt/libxl driver, I'll be reverting back to xl managed.

BTW, to answer my off-topic question about whether the libvirt stack
integrates with systemd-machined, apparently not - nothing changed with
machinectl output: systemd is unaware of the libvirt managed domU.

¹ https://libvirt.org/hvsupport.html
² http://libvirt.org/git/?p=libvirt.git;a=history;f=src/libxl/libxl_driver.c