mirror_lxc/doc/lxc-checkpoint.sgml.in
Tycho Andersen 735f2c6e50 Add support for checkpoint and restore via CRIU
This patch adds support for checkpointing and restoring containers via CRIU.
It adds two api calls, ->checkpoint and ->restore, which are wrappers around
the CRIU CLI. CRIU has an RPC API, but reasons for preferring exec() are
discussed in [1].

To checkpoint, users specify a directory to dump the container metadata (CRIU
dump files, plus some additional information about veth pairs and which
bridges they are attached to) into this directory. On restore, this
information is read out of the directory, a CRIU command line is constructed,
and CRIU is exec()d. CRIU uses the lxc-restore-net callback (which in turn
inspects the image directory with the NIC data) to properly restore the
network.

This will only work with the current git master of CRIU; anything as of
a152c843 should work. There is a known bug where containers which have been
restored cannot be checkpointed [2].

[1]: http://lists.openvz.org/pipermail/criu/2014-July/015117.html
[2]: http://lists.openvz.org/pipermail/criu/2014-August/015876.html

v2: fixed some problems with the s/int/bool return code form api function
v3: added a testcase, fixed up the man page synopsis
v4: fix a small typo in lxc-test-checkpoint-restore
v5: remove a reference to the old CRIU_PATH, and a bad error about the same

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2014-08-26 10:40:05 -04:00

195 lines
4.8 KiB
Plaintext

<!--
(C) Copyright Canonical Ltd. 2014
Authors:
Tycho Andersen <tycho.andersen@canonical.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<!DOCTYPE refentry PUBLIC @docdtd@ [
<!ENTITY commonoptions SYSTEM "@builddir@/common_options.sgml">
<!ENTITY seealso SYSTEM "@builddir@/see_also.sgml">
]>
<refentry>
<docinfo><date>@LXC_GENERATE_DATE@</date></docinfo>
<refmeta>
<refentrytitle>lxc-checkpoint</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>lxc-checkpoint</refname>
<refpurpose>
checkpoint a container
</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>lxc-checkpoint</command>
<arg choice="req">-n <replaceable>name</replaceable></arg>
<arg choice="req">-D <replaceable>PATH</replaceable></arg>
<arg choice="opt">-r</arg>
<arg choice="opt">-s</arg>
<arg choice="opt">-v</arg>
<arg choice="opt">-d</arg>
<arg choice="opt">-F</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
<command>lxc-checkpoint</command> checkpoints and restores containers.
</para>
</refsect1>
<refsect1>
<title>Options</title>
<variablelist>
<varlistentry>
<term>
<option>-r, --restore</option>
</term>
<listitem>
<para>
Restore the checkpoint for the container, instead of dumping it.
This option is incompatible with <option>-s</option>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-D <replacable>PATH</replacable>, --checkpoint-dir=<replacable>PATH</replacable></option>
</term>
<listitem>
<para>
The directory to dump the checkpoint metadata.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-s, --stop</option>
</term>
<listitem>
<para>
Optionally stop the container after dumping. This option is
incompatible with <option>-r</option>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-v, --verbose</option>
</term>
<listitem>
<para>
Enable verbose criu logging.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-d, --daemon</option>
</term>
<listitem>
<para>
Restore the container in the background (this is the default).
Only available when providing <option>-r</option>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>-F, --foreground</option>
</term>
<listitem>
<para>
Restore the container in the foreground. Only available when
providing <option>-r</option>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
&commonoptions;
<refsect1>
<title>Examples</title>
<variablelist>
<varlistentry>
<term>lxc-checkpoint -n foo -D /tmp/checkpoint</term>
<listitem>
<para>
Checkpoint the container foo into the directory /tmp/checkpoint.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>lxc-checkpoint -r -n foo -D /tmp/checkpoint</term>
<listitem>
<para>
Restore the checkpoint from the directory /tmp/checkpoint.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
&seealso;
<refsect1>
<title>Author</title>
<para>Tycho Andersen <email>tycho.andersen@canonical.com</email></para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->