Package: lxc Version: 1:1.0.6-6+deb8u1
Hi, On a D8 host server with D7 containers upgraded to D8 with systemd - following the instructions from the LXC Debian page. When I use lxc-stop command to cleanly stop a container, it waits, times out and finally kills the container instead of issuing a clean shutdown. The pb does not happen on native D8 containers. Here is a transcript: #lxc-stop -n mylxcbox This is what lxc-checkconfig returns: [all green] =================================================== # lxc-checkconfig Kernel configuration not found at /proc/config.gz; searching... Kernel configuration found at /boot/config-3.16.0-4-amd64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled File capabilities: enabled =================================================== This is the configuration of the container [nothing really fancy here] =================================================== cat /var/lib/lxc/mylxcbox/config lxc.network.type = empty lxc.rootfs = /var/lib/lxc/mylxcbox/rootfs # Common configuration lxc.include = /usr/share/lxc/config/debian.common.conf # Container specific configuration lxc.mount = /var/lib/lxc/mylxcbox/fstab lxc.utsname = mylxcbox lxc.arch = amd64 lxc.autodev = 1 lxc.kmsg = 0 lxc.network.type = veth lxc.network.flags = up lxc.network.link = vbr0 lxc.network.ipv4 = 192.168.10.200/24 lxc.network.hwaddr = 00:1E:62:CH:NG:ME # RAM lxc.cgroup.memory.limit_in_bytes = 2G =================================================== # lxc-monitor -n mylxcbox --logpriority=DEBUG 'mylxcbox' exited with status [0] 'mylxcbox' changed state to [STOPPING] 'mylxcbox' changed state to [STOPPED] status 0 indicates the container was successfully stopped but it does it after timing out: I can verify this starting the container in non deamon mode [lxc-start -n mylxcbox] The services are not stopping, everything is killed after 60 seconds. # time lxc-stop -n mylxcbox real 1m0.146s user 0m0.000s sys 0m0.004s It takes 60 seconds which means the container is killed after a 60 seconds timeout. With the --nokill option added, the command times out but the container remains up and running [ie: not killed]. As per manpage documentation: DESCRIPTION lxc-stop reboots, cleanly shuts down, or kills all the processes inside the container. By default, it will request a clean shutdown of the container by sending lxc.haltsig nal (defaults to SIGPWR) to the container's init process, waiting up to 60 seconds for the container to exit, and then returning. If the container fails to cleanly exit in 60 seconds, it will be sent the lxc.stopsignal (defaults to SIGKILL) to force it to shut down. What could prevent lxc.haltsignal (defaults to SIGPWR) to reach an upgraded D7 container to D8 with systemd ? This is the solution/workaround I have found [took me 2 days] and which will hopefully help you resolve the matter: Changing the halt signal from the default (SIGPWR) to SIGRTMIN+4 by adding the following configuration in the container config file: allows me to shutdown the container with lxc-stop but also in a clean manner with services being stopped as expected. The two identified signals to request a clean shutdown [#1] and an immediate halt[#2] for the D7 to D8 systemd containers are: # modified signals for D7 containers upgraded to D8 lxc.haltsignal = SIGRTMIN+4 #1 lxc.stopsignal = SIGRTMIN+14 #2 I am using Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux The server and containers are frequently updated, all stable with debian-security. -- Cheers, Nulld1g1t Nulld1g1t Blog: http://www.yourprog.com Nulld1g1t Youtube channel: https://www.youtube.com/user/nulld1g1t Twitter: https://twitter.com/nulld1g1t
0x6CF19A40.asc
Description: application/pgp-keys
signature.asc
Description: OpenPGP digital signature