On 11/27/2013 10:54 AM, Pavel Emelyanov wrote: > On 11/27/2013 06:19 AM, Qiang Huang wrote: >> On 2013/11/27 0:19, Marian Marinov wrote: >>> >>> On my test setup it works for processes like apache, dovecot and mysql. >>> >>> However it does not work with containers: >>> >>> root@s321:~# criu dump -D deb1 -t 19332 --file-locks >>> (00.004962) Error (namespaces.c:155): Can't dump nested pid namespace for >>> 28352 >>> (00.004985) Error (namespaces.c:321): Can't make pidns id >>> (00.005327) Error (cr-dump.c:1811): Dumping FAILED. >>> root@s321:~# >>> When I try to dump the init process(which I believe I should not do), here >>> is what I see: >>> http://pastebin.com/DFC0ADpp >>> >>> (00.291294) Error (tty.c:222): tty: Unexpected format on path /dev/tty1 >>> (00.291315) Error (cr-dump.c:1491): Dump files (pid: 29702) failed with -1 >>> (00.291892) Error (cr-dump.c:1811): Dumping FAILED. >>> >>> This is my setup: >>> 19332 ? Ss 0:00 lxc-start -n deb1 -d >>> 28352 ? Ss 0:00 \_ init [3] >>> 28393 ? Ss 0:00 \_ /usr/sbin/apache2 -k start >>> 28419 ? S 0:00 | \_ /usr/sbin/apache2 -k start >>> 28422 ? Sl 0:00 | \_ /usr/sbin/apache2 -k start >>> 28423 ? Sl 0:00 | \_ /usr/sbin/apache2 -k start >>> 28489 ? S 0:00 \_ /bin/sh /usr/bin/mysqld_safe >>> 28620 ? Sl 0:00 | \_ /usr/sbin/mysqld --basedir=/usr >>> --datadir=/var/lib/mysql --user=mysql >>> --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock >>> --port >>> 28621 ? S 0:00 | \_ logger -t mysqld -p daemon.error >>> 28598 ? Ss 0:00 \_ /usr/sbin/sshd >>> 29702 pts/0 Ss+ 0:00 \_ /sbin/getty 38400 tty1 linux >>> >>> I rebooted the container without getty on tty1 and then I got this: >>> >>> (00.260757) Error (mount.c:255): 86:/dev/tty4 doesn't have a proper root >>> mount > > This is the reason. That's container's console which is a bind mounted tty > from > the host. And since this is an external connection, CRIU doesn't dump one. > > There are two ways to resolve this. The first is disable container's console. > It's > fast, but ugly. The second way is supporting one, but it would require criu > hacking. > We should detect, that this is an external tty, decide, that we're OK to > disconnect > it after dump and on restore -- connect it back.
The ugly fix does not work either. Because even if you comment the lxc.tty option criu is complaining: (00.243390) Error (mount.c:255): 82:/dev/console doesn't have a proper root mount (00.243626) Error (namespaces.c:445): Namespaces dumping finished with error 65280 (00.244029) Error (cr-dump.c:1811): Dumping FAILED. > >>> (00.261007) Error (namespaces.c:445): Namespaces dumping finished with >>> error 65280 >>> (00.261454) Error (cr-dump.c:1811): Dumping FAILED. >>> >>> This ithe relevant container config >>> ## Device config >>> lxc.cgroup.devices.deny = a >>> # /dev/null and zero >>> lxc.cgroup.devices.allow = c 1:3 rwm >>> lxc.cgroup.devices.allow = c 1:5 rwm >>> # consoles >>> lxc.cgroup.devices.allow = c 5:1 rwm >>> lxc.cgroup.devices.allow = c 5:0 rwm >>> lxc.cgroup.devices.allow = c 4:0 rwm >>> lxc.cgroup.devices.allow = c 4:1 rwm >>> # /dev/{,u}random >>> lxc.cgroup.devices.allow = c 1:9 rwm >>> lxc.cgroup.devices.allow = c 1:8 rwm >>> lxc.cgroup.devices.allow = c 136:* rwm >>> lxc.cgroup.devices.allow = c 5:2 rwm >>> # rtc >>> lxc.cgroup.devices.allow = c 254:0 rm >>> >>> # mounts point >>> lxc.mount.entry = devpts dev/pts devpts gid=5,mode=620 0 0 >>> lxc.mount.auto = proc:mixed sys:ro >>> >>> >>> Am I doing something wrong? >> >> According to the criu TODO list: http://criu.org/Todo >> cgroups in container is not supported yet, so I doubt it would work for >> normal containers. Pavel, can you give me some pointers for this? I would be interested in helping out with this part. > > AFAIK cgroups are used _inside_ containers only with recent guest templates. > In OpenVZ we use more old ones (and more stable) so haven't meet this yet. > And yes, cgroups are in plans for the nearest future :) > >> I'm interested in this too, so let's cc CRIU list and find out what is wrong >> :) >> >>> >>> Marian >>> > > Thanks, > Pavel > > > ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel