[CRIU] [lxc-devel] LXC live migrate

Qiang Huang h.huangqiang at huawei.com
Tue Nov 26 18:19:25 PST 2013


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 at 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 at 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
> (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.

I'm interested in this too, so let's cc CRIU list and find out what is wrong :)

> 
> Marian
> 





More information about the CRIU mailing list