From: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
To: dlezcano-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org
Cc: Containers
<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
clg-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org,
sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org
Subject: [PATCH 0/6][lxc][v3] Link LXC with USERCR
Date: Wed, 31 Mar 2010 00:04:40 -0700 [thread overview]
Message-ID: <20100331070440.GA21570@us.ibm.com> (raw)
lxc-checkpoint, lxc-restart in the LXC source tree are currently stubs.
Following set of patches, when applied to LXC and built with USERCR as
described below, enable enable lxc-checkpoint and lxc-restart of some
simple containers
TODO:
- Determine if lxc_checkpoint needs a --container option (see
TODOs in src/lxc/checkpoint.c)
- This patchset was tested using lxc-nonetns.conf. I ran into a problem
creating a bridge with lxc-veth.conf and lxc-macvlan.conf. I have
not debugged the problem with VNC and lxc-macvlan.conf.
- 'global_send_sigint' is still a global variable in USERCR. We need
to define a better interface to expose its functionality to callers
of app_restart().
- Choose better names and API for USERCR :-)
- Additional TODOs specific to checkpoint/restart are listed in their
specific patches.
Changelog[v3]:
Changed following based on feedback from Michel Normand, Daniel
Lezcano and others.
- Added --with-libcr configuration option to specify the path to
usercr (see usage below).
- lxc-checkpoint now implicitly freezes before and unfreezes after
checkpoint.
- Implemented the --pause options to lxc-checkpoint and lxc-restart
and the --kill option to lxc-checkpoint.
- Ported to ckpt-v20-dev (required adding CHECKPOINT_NONETNS flag to
app_checkpoint() to work around)
Changelog[v2]:
(Based on feedback from Oren Laadan, Serge Hallyn, Daniel Lezcano
and Cedric Le Goater)
- Rather than drop --directory option to lxc_checkpoint/lxc_restart
add a new option (--image).
- Integrate lxc_checkpoint to work with USERCR
- USERCR renamed usercr.h to "app-checkpoint.h"
- USERCR does not create/install libcheckpoint.a and usercr.h for now.
So link directly with app-checkpoint.h, restart.o and checkpoint.o
- USERCR renames the interfaces to app_checkpoint() and app_restart()
'struct app_checkpoint_args' 'struct app_restart_args'.
USAGE:
1. Build USERCR
$ cd /root
$ git-clone git://git.ncl.cs.columbia.edu/pub/git/user-cr.git user-cr
$ cd user-cr
$ git-checkout ckpt-v20-dev
Tested with commit e275f77e4a82d228c1df14dbeb691342e32cdac2
as HEAD.
# Apply following two patches:
https://lists.linux-foundation.org/pipermail/containers/2010-March/024037.html
https://lists.linux-foundation.org/pipermail/containers/2010-March/024038.html
$ cd /root/user-cr
$ KERNELSRC=/root/linux-2.6/ make
Build USERCR by pointing to corresponding kernel-source.
This should create restart.o and checkpoint.o needed by LXC.
2. Build/install LXC
$ cd /root/lxc.git
Apply attached patches to LXC (I tested with these patches applied
to commit 9ea8066aa67b808f71f46e346bd7a215e2a355f3)
$ autogen.sh
$ ./configure --with-libcr=/root/user-cr
This will fail if /root/user-cr does not container checkpoint.o,
restart.o and app-checkpoint.h files
$ make
$ make install
3. Checkpoint/restart a simple LXC container
$ lxc-execute --name foo --rcfile lxc-no-netns.conf -- /bin/sleep 1000
$ lxc-checkpoint --name foo --image /root/lxc-foo.ckpt
$ lxc-stop --name foo
$ lxc-restart --name foo --image /root/lxc-foo.ckpt
4. Checkpoint/restart other LXC containers such as:
- a file-io session (see run-fileio1 in cr-tests[1])
- process-tree (see run-ptree1 in cr-tests[1])
- A vi session inside a VNC Server using "twm". i.e
$ cat /root/.vnc/xstartup
#!/bin/sh
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
$ lxc-execute --name foo --rcfile lxc-no-netns.conf -- \
/usr/bin/vncserver :1
$ vncviewer :1
# Open a vi session
$ lxc-checkpoint --name foo --statefile /root/vnc.ckpt
$ lxc-stop --name foo
$ lxc-restart --pause --name foo --statefile /root/vnc.ckpt
# Leaves the server frozen due to --pause
$ lxc-unfreeze --name foo
$ vncviewer :1
# Should bring up the old VNC session with vi window
[1]: cr-tests: git://git.sr71.net/~hallyn/cr_tests.git
Signed-off-by: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
next reply other threads:[~2010-03-31 7:04 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-31 7:04 Sukadev Bhattiprolu [this message]
[not found] ` <20100331070440.GA21570-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-31 7:06 ` [PATCH 1/6][lxc][v3] Add --with-libcr configure option Sukadev Bhattiprolu
[not found] ` <20100331070633.GA23567-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-31 8:11 ` Michel Normand
2010-03-31 17:21 ` Sukadev Bhattiprolu
2010-03-31 7:07 ` [PATCH 2/6][lxc][v3] lxc_restart: Add --statefile option Sukadev Bhattiprolu
[not found] ` <20100331070711.GB23567-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-31 8:10 ` Michel Normand
2010-03-31 7:07 ` [PATCH 3/6][lxc][v3] lxc_checkpoint: " Sukadev Bhattiprolu
2010-03-31 7:08 ` [PATCH 4/6][lxc][v3] Move get_init_pid() into checkpoint.c Sukadev Bhattiprolu
[not found] ` <20100331070848.GD23567-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-31 8:17 ` Cedric Le Goater
2010-03-31 7:09 ` [PATCH 5/6][lxc][v3] Hook up lxc_restart() with app_restart() Sukadev Bhattiprolu
2010-03-31 7:10 ` [PATCH 6/6][lxc][v3] Hook up lxc_checkpoint() with app_checkpoint() Sukadev Bhattiprolu
[not found] ` <20100331071016.GF23567-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-31 8:08 ` Michel Normand
2010-03-31 8:18 ` Cedric Le Goater
2010-03-31 9:29 ` [PATCH 0/6][lxc][v3] Link LXC with USERCR Michel Normand
2010-03-31 9:38 ` Cedric Le Goater
[not found] ` <4BB31801.4000304-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2010-03-31 12:13 ` Cedric Le Goater
[not found] ` <4BB33C81.9070802-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2010-04-01 5:03 ` Sukadev Bhattiprolu
2010-03-31 13:58 ` Daniel Lezcano
[not found] ` <4BB35519.8080500-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2010-04-01 5:37 ` Oren Laadan
2010-03-31 16:31 ` Daniel Lezcano
2010-03-31 19:58 ` Daniel Lezcano
[not found] ` <4BB3A981.4020709-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2010-03-31 20:12 ` Serge E. Hallyn
[not found] ` <20100331201240.GA26773-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-31 20:22 ` Daniel Lezcano
2010-03-31 21:00 ` Daniel Lezcano
[not found] ` <4BB3B7E1.8080608-GANU6spQydw@public.gmane.org>
2010-03-31 21:23 ` Sukadev Bhattiprolu
[not found] ` <20100331212359.GA18934-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2010-03-31 21:30 ` Daniel Lezcano
[not found] ` <4BB3BF02.7060402-GANU6spQydw@public.gmane.org>
2010-04-02 5:54 ` Sukadev Bhattiprolu
2010-04-01 5:43 ` Oren Laadan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100331070440.GA21570@us.ibm.com \
--to=sukadev-23vcf4htsmix0ybbhkvfkdbpr1lh4cv8@public.gmane.org \
--cc=clg-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=dlezcano-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.