[CRIU] system configuration for dumping/restoring LXC
Andrew Vagin
avagin at parallels.com
Thu Sep 11 13:55:46 PDT 2014
On Thu, Sep 11, 2014 at 11:02:36AM -0700, Krystof Zmudzinski wrote:
> I removed the -d option from the criu dump command line in run.sh and it looks
> like I went farther but I still don't see the restore container. See attached
> restore2.log. I also had /root/test-lxc-root mounted.
Could you add --manage-cgroups for dump and restore commands.
>
> This is what appeared in the terminal when I executed run.sh:
>
> ./run.sh test-lxc
> Name: test-lxc
> State: RUNNING
> PID: 2508
> CPU use: 0.60 seconds
> BlkIO use: 56.00 KiB
> Memory use: 8.35 MiB
> KMem use: 0 bytes
> Link: vethUV6JSY
> TX bytes: 508 bytes
> RX bytes: 2.44 KiB
> Total bytes: 2.94 KiB
> The CT's "init" process has PID of 2508
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
> default
> link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> inet 127.0.0.1/8 scope host lo
> valid_lft forever preferred_lft forever
> inet6 ::1/128 scope host
> valid_lft forever preferred_lft forever
> 35: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
> group default qlen 1000
> link/ether f6:21:d7:ea:ab:6f brd ff:ff:ff:ff:ff:ff
> inet6 fe80::f421:d7ff:feea:ab6f/64 scope link
> valid_lft forever preferred_lft forever
> mkdir: cannot create directory \u2018data\u2019: File exists
> Dump the CT test-lxc (2508)
> vethUV6JSY<=>eth0
> Detach vethUV6JSY to the bridge lxcbr0
> The CT test-lxc was dumped successfully
> Press Enter for restoring CT
> Restore the CT test-lxc
> The CT test-lxc was restored successfully
> The CT's "init" process has PID of 3044
> Cannot open network namespace "test-lxc": No such file or directory
>
>
> Krystof
>
> From: Krystof Zmudzinski <krystof_zmudzinski at yahoo.com>
> To: Andrey Wagin <avagin at gmail.com>
> Cc: "criu at openvz.org" <criu at openvz.org>
> Sent: Thursday, September 11, 2014 10:50 AM
> Subject: Re: system configuration for dumping/restoring LXC
>
> The bottom line is that I can dump but I can't restore. I'm still confused how
> rootfs should be used. I still would like to know what your system
> configuration was in the example described on CRIU/LXC. I'm using 64-bit
> Ubuntu desktop 14.04 but I'm willing to switch to whatever worked for you.
> Same goes for the LXC tools.
>
> Krystof
>
> The following are some of the steps I performed to get to that point:
> 1. apt-get install lxc installs bridge and changes interfaces file (there are
> no ifcfg-* files in Ubuntu) it also installs lxcbr0 instead of br0.
> 2. lxc-checkconfig shows everything is enabled so mounting cgroup is not
> required
> 3. lxc-create -t ubuntu -n cn_01 and lxc-start -n cn_01 work
> 4. I downloaded centos-6-x86_64.tar.gz and extracted it to /root/test-lxc
> 5. I copied the test-lxc.conf and fstab from the website.
> 6. lxc-create -n test-lxc -f test-lxc.conf fails; there is no specific error
> but I'm assuming it is because of the wrong rootfs = /root/test-lxc-root
> 7. When I created /root/test-lxc-root I was able to create the container but it
> wouldn't start
> 8. When I changed rootfs to /root/test-lxc, I was able to create the container
> and to start it
> 9. lxc-stop took a long time to stop the container
> 10. Since I didn't have to execute mount --bind test-lxc test-lxc-root/ to run
> the container I thought that maybe that step should be executed with original
> configuration but before the container is created so I destroyed the container
> 11. I restored test-lxc.conf to what is on the website, restored test-lxc
> folder, created test-lxc-root and executed mount --bind test-lxc test-lxc-root/
> 12. I created the container again and it worked this time
> 13. I started the container and it also worked
> 14. However, this time, after lxc-attach -n test-lxc, mount produced this
> output:
> /dev/disk/by-uuid/a1b2c830-cce3-4373-a598-9702ef6d8f69 on / type ext4
> (rw,relatime,errors=remount-ro,data=ordered)
> none on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
> none on /proc type proc (rw,relatime)
> none on /sys type sysfs (rw,relatime)
> none on /dev/shm type tmpfs (rw,relatime)
> none on /dev type tmpfs (rw,relatime,mode=755)
> none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
>
> While originally it only produced this:
> /dev/disk/by-uuid/a1b2c830-cce3-4373-a598-9702ef6d8f69 on / type ext4
> (rw,relatime,errors=remount-ro,data=ordered)
> none on /proc type proc (rw,nosuid,nodev,noexec,relatime)
> none on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
> none on /dev type tmpfs (rw,relatime,mode=755)
> none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
>
> 15. lxc-stop still takes long time
>
> 16. Installing criu-1.3
> 17. apt-get install libprotobuf-dev libprotoc-dev protobuf-c-compiler
> libprotobuf-c0 libprotobuf-c0-dev
> 18. make
> 19. cd test/app-emu/lxc
> 20. /run.sh test-lxc produces an error:
> Name: test-lxc
> State: RUNNING
> PID: 25189
> CPU use: 0.64 seconds
> BlkIO use: 56.00 KiB
> Memory use: 8.33 MiB
> KMem use: 0 bytes
> Link: vethJ8MR0R
> TX bytes: 648 bytes
> RX bytes: 4.18 KiB
> Total bytes: 4.81 KiB
> The CT's "init" process has PID of
> kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill
> -l [sigspec]
> root at se:~/criu-1.3/test/app-emu/lxc#
>
> 21. I changed pid to PID in pid=$(lxc-info --name $name | awk '/PID:/ { print
> $2 }')
> 22. This time I got: bridge br0 does not exist!
> 23. I edited network-script.sh accordingly
> 24. Dump doesn't work. See attached dump1.log.
> 25. So I went back to the way I originally created the container. I changed
> rootfs in test-lxc.conf to /root/test-lxc
> 26. I created the container and started it and I was able to dump it; see
> attached dump2.log
> 27 However, the restore hangs. ps a shows these processes but there is no
> init; see attached restore.log
>
> 413 pts/1 S+ 0:00 /bin/bash ./run.sh test-lxc
> 498 pts/1 S+ 0:00 /root/criu-1.3/criu restore --evasive-devices
> --tcp-e
> 499 pts/1 t+ 0:00 /root/criu-1.3/criu restore --evasive-devices
> --tcp-e
>
> From: Krystof Zmudzinski <krystof_zmudzinski at yahoo.com>
> To: Andrey Wagin <avagin at gmail.com>
> Cc: "criu at openvz.org" <criu at openvz.org>
> Sent: Thursday, September 11, 2014 7:57 AM
> Subject: Re: system configuration for dumping/restoring LXC
>
> Thanks for the fast reply. I will reinstall Ubuntu 14.04, LXC tools and
> criu-1.3 as before. I will let you know what I had to do along the way when I
> encounter problems. Maybe at the end you will be able to post this somewhere
> on your website for somebody like me who is not a Linux expert. :-)
>
> Speaking of not being a Linux expert, I'm not sure if I understand the point
> about the rootfs mounts. I do recall that one of the error messages on restore
> was something about same rootfs can't be used so I can see how it makes sense
> what you said about different rootfs there. But I don't understand how the
> configuration on the website can work when lxc-create is executed.
>
> Krystof
>
> From: Andrey Wagin <avagin at gmail.com>
> To: Krystof Zmudzinski <krystof_zmudzinski at yahoo.com>
> Cc: "criu at openvz.org" <criu at openvz.org>
> Sent: Wednesday, September 10, 2014 11:59 PM
> Subject: Re: system configuration for dumping/restoring LXC
>
>
> Hi Krystof,
>
> I added criu at openvz.org in CC
>
> 2014-09-11 5:03 GMT+04:00 Krystof Zmudzinski <krystof_zmudzinski at yahoo.com>:
>
> Andrew,
>
> I've spent some time trying to build a system, which would allow me to dump
> and restore a Linux container using criu. I started by reading
> instructions on this page LXC but the information seems buggy. For
> example, test-lxc.conf has these 2 seemingly incompatible lines in it:
> lxc.mount = /root/test-lxc/etc/fstab
> lxc.rootfs = /root/test-lxc-root/
>
> So is the rootfs in /root/test-lxc or /root/test-lxc-root>
>
>
> It can't be buggy, because I have copied this config from my test node. I think
> you can use /root/test-lxc and don't bind-mount /root/test-lxc to /root/
> test-lxc-root, but you will need to do this bind-mount to restore the CT.
>
>
>
> When I tried executing lxc-create -n test-lxc -f test-lxc.conf with the
> configuration as presented on that page, lxc-create failed. When I changed
> rootfs to /root/test-lxc everywhere, it worked. I was even able to dump
> the container using the criu-1.3 but restore never worked. That was on
> Ubuntu 14.04. When I switched to Fedora 20, even dump didn't work.
>
>
> If you are able to dump the CT, you must able to restore it. If you can't to do
> that, it's bug and we are ready to fix it. So could you show how you execute
> criu and logs from "criu dump" and "criu restore"?
>
>
>
>
>
> I don't really care what system I have to use and how simple my container
> is. I can tell that there are other people on the net who talk about
> successfully dumping and restoring containers but I can't figure out what
> system/container configurations they use.
>
> Could you provide me with a pointer to the host configuration and container
> configuration -- even if I have to go some older versions -- that allow for
> a successful dump/restore of a Linux container?
>
> BTW, I have been able to use criu-1.3 to dump/restore single processes.
>
> Thanks in adavance,
>
> Krystof
>
>
>
>
> LXC
> This article describes how to perform checkpoint-restore for an
> LXC container.
> View on criu.org Preview by Yahoo
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu
More information about the CRIU
mailing list