Hello! Try to use libvirt with lxc. I use latest centos6 amd64 as a libvirt host (libvirt from xen4 repo) libvirt-daemon-1.2.15-3.el6.x86_64 In container I also use latest centos6 amd64. Container starts with /sbin/init. CentOS 6 came with upstart as default init. My problem is that I could not shutdown container correctly with libvirt. virsh -c lxc:/// shutdown test Domain test is being shutdown In container I see only: "init: Re-executing /sbin/init" in syslog messages Why it is happened? lxcDomainShutdownFlags [1] send SIGTERM to initpid. Upstart got it and reloaded himself instead shutdown. It's default behavior... [2] The question is why libvirt send SIGTERM? As I can see lxc-stop [3] send SIGPWR (that works correctly with upstart) and also have ability to change default signals. I can understand that when container start with some script not /sbin/init that handle SIGTERM this situation is ok. But then container use /sbin/init it is not. So, is this a bug?-) [1] https://github.com/libvirt/libvirt/blob/master/src/lxc/lxc_driver.c#L3681 [2] https://bazaar.launchpad.net/~upstart-devel/upstart/trunk/view/head:/init/main.c#L945 [3] http://man7.org/linux/man-pages/man1/lxc-stop.1.html -- Boris
Daniel P. Berrange
2015-Nov-20 15:19 UTC
Re: [libvirt-users] signal for shutdown in lxc driver
On Fri, Nov 20, 2015 at 04:19:59PM +0300, Boris Savelev wrote:> Hello! > > Try to use libvirt with lxc. > I use latest centos6 amd64 as a libvirt host (libvirt from xen4 repo) > libvirt-daemon-1.2.15-3.el6.x86_64 > In container I also use latest centos6 amd64. Container starts with > /sbin/init. CentOS 6 came with upstart as default init. > > My problem is that I could not shutdown container correctly with libvirt. > virsh -c lxc:/// shutdown test > Domain test is being shutdown > In container I see only: > "init: Re-executing /sbin/init" > in syslog messages > > Why it is happened? > lxcDomainShutdownFlags [1] send SIGTERM to initpid. Upstart got it and > reloaded himself instead shutdown. It's default behavior... [2] > The question is why libvirt send SIGTERM? As I can see lxc-stop [3] > send SIGPWR (that works correctly with upstart) and also have ability > to change default signals. > > I can understand that when container start with some script not > /sbin/init that handle SIGTERM this situation is ok. But then > container use /sbin/init it is not.The choice of signal is essentially abitrary, since there is no common standard used across different init systems. As such we chose signal numbers that were useful in the context of containers running applications (ie containers with an init). We then added logic to be able to use /dev/initctl to trigger shutdown of init based containers. This works with sysvinit and with systemd, and various other init systems, but it seems upstart does not support this. If there is another mechanism for instructing upstart to shutdown that we can reliably detect, then we could use that. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
2015-11-20 18:19 GMT+03:00 Daniel P. Berrange <berrange@redhat.com>:> On Fri, Nov 20, 2015 at 04:19:59PM +0300, Boris Savelev wrote: >> Hello! >> >> Try to use libvirt with lxc. >> I use latest centos6 amd64 as a libvirt host (libvirt from xen4 repo) >> libvirt-daemon-1.2.15-3.el6.x86_64 >> In container I also use latest centos6 amd64. Container starts with >> /sbin/init. CentOS 6 came with upstart as default init. >> >> My problem is that I could not shutdown container correctly with libvirt. >> virsh -c lxc:/// shutdown test >> Domain test is being shutdown >> In container I see only: >> "init: Re-executing /sbin/init" >> in syslog messages >> >> Why it is happened? >> lxcDomainShutdownFlags [1] send SIGTERM to initpid. Upstart got it and >> reloaded himself instead shutdown. It's default behavior... [2] >> The question is why libvirt send SIGTERM? As I can see lxc-stop [3] >> send SIGPWR (that works correctly with upstart) and also have ability >> to change default signals. >> >> I can understand that when container start with some script not >> /sbin/init that handle SIGTERM this situation is ok. But then >> container use /sbin/init it is not. > > The choice of signal is essentially abitrary, since there is no > common standard used across different init systems. As such we > chose signal numbers that were useful in the context of containers > running applications (ie containers with an init). We then added > logic to be able to use /dev/initctl to trigger shutdown of init > based containers. This works with sysvinit and with systemd, > and various other init systems, but it seems upstart does not > support this. If there is another mechanism for instructing > upstart to shutdown that we can reliably detect, then we could > use that. >Yes, I agree. In this case signal could be configurable (like in generic lxc). You are right, upstart doesn't support /dev/initctl ( But upstart shutdown correct with SIGPWR (30). -- Boris