Line 1: |
Line 1: |
− | =Prepare a Linux Container=
| + | This article describes how to perform checkpoint-restore for an LXC container. |
− | ==Requirements==
| |
− | * A console should be disabled (lxc.console = none)
| |
− | * udev should not run inside containers ($ mv /sbin/udevd{,.bcp})
| |
| | | |
− | == Preparing a host environment == | + | == Preparing a Linux Container == |
| + | |
| + | === Requirements === |
| + | |
| + | * A console should be disabled (<code>lxc.console = none</code>) |
| + | * udev should not run inside containers (<code>mv /sbin/udevd{,.bcp}</code>) |
| + | |
| + | === Preparing a host environment === |
| | | |
| * Mount cgroupfs | | * Mount cgroupfs |
| $ mount -t cgroup c /cgroup | | $ mount -t cgroup c /cgroup |
| + | |
| * Create a network bridge | | * Create a network bridge |
| # cat /etc/sysconfig/network-scripts/ifcfg-br0 | | # cat /etc/sysconfig/network-scripts/ifcfg-br0 |
Line 21: |
Line 26: |
| ONBOOT="yes" | | ONBOOT="yes" |
| BRIDGE=br0 | | BRIDGE=br0 |
− | ==Create and start a container== | + | |
| + | === Create and start a container === |
| * Download an OpenVZ template and extract it. | | * Download an OpenVZ template and extract it. |
− | curl http://download.openvz.org/template/precreated/centos-6-x86_64.tar.gz | tar -xz -C test-lxc
| + | <pre><nowiki>curl http://download.openvz.org/template/precreated/centos-6-x86_64.tar.gz | tar -xz -C test-lxc |
− | | + | </nowiki></pre> |
| * Create config files | | * Create config files |
| $ cat ~/test-lxc.conf | | $ cat ~/test-lxc.conf |
Line 49: |
Line 55: |
| $ lxc-start -n test-lxc | | $ lxc-start -n test-lxc |
| | | |
− | = Checkpoint and restore an LXC Container = | + | == Checkpoint and restore an LXC Container == |
− | == Preparations == | + | |
| + | === Preparations === |
| + | |
| You not only need to [[Installation | install]] the crtools, but also check that the iproute2 utility (<code>ip</code>) is not v3.5.1 or earlier. | | You not only need to [[Installation | install]] the crtools, but also check that the iproute2 utility (<code>ip</code>) is not v3.5.1 or earlier. |
| + | |
| Since v3.5.2 is not yet released (as per 20 Sept 2012), you should compile it from [http://git.kernel.org/?p=linux/kernel/git/shemminger/iproute2.git;a=summary sources]. In order to tell to crtools where the proper ip tool is set the <code>CR_IP_TOOL</code> environment variable. | | Since v3.5.2 is not yet released (as per 20 Sept 2012), you should compile it from [http://git.kernel.org/?p=linux/kernel/git/shemminger/iproute2.git;a=summary sources]. In order to tell to crtools where the proper ip tool is set the <code>CR_IP_TOOL</code> environment variable. |
| | | |
− | == Dump and restore == | + | === Dump and restore === |
| Dumping and restoring an LXC contianer means -- dumping a subtree of processes starting from container init plus all kinds of namespaces. | | Dumping and restoring an LXC contianer means -- dumping a subtree of processes starting from container init plus all kinds of namespaces. |
| Restoring is symmetrical. The way LXC container works imposes some more requirements on crtools usage. | | Restoring is symmetrical. The way LXC container works imposes some more requirements on crtools usage. |
Line 89: |
Line 98: |
| More details on the option mentioned can be found in [[Usage]] and [[Advanced usage]] pages. | | More details on the option mentioned can be found in [[Usage]] and [[Advanced usage]] pages. |
| | | |
− | == Example == | + | === Example === |
| We have [http://git.criu.org/?p=crtools.git;a=tree;f=test/app-emu/lxc;hb=HEAD an application test] for dumping/restoring an LXC Container. You may look at it for better understanding how to dump and restore your container with crtools. | | We have [http://git.criu.org/?p=crtools.git;a=tree;f=test/app-emu/lxc;hb=HEAD an application test] for dumping/restoring an LXC Container. You may look at it for better understanding how to dump and restore your container with crtools. |
| | | |