From: "Serge E. Hallyn" <serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
To: containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: trying to build simple checkpoint/restart recipes
Date: Wed, 8 Dec 2010 04:53:22 +0000 [thread overview]
Message-ID: <20101208045322.GA17602@mail.hallyn.com> (raw)
What I've done so far:
created a KVM vm and installed up-to-date maverick
add-apt-repository ppa:appcr/ppa
apt-get update && apt-get dist-upgrade
apt-get install libvirt-bin lxc linux-image-2.6.34-1cr4
sed -i 's/GRUB_DEFAULT=0/GRUB_DEFAULT="Ubuntu, with Linux 2.6.34-1cr4-generic"/' /etc/default/grub
update-grub
replaced 122 with 123 in /etc/libvirt/qemu/networks/default.xml and /var/lib/libvirt/network/default.xml
reboot
# The following should go into an upstart script shipped with the appcr packages
# as they must be done on each boot
chmod 666 /dev/pts/ptmx
rm /dev/ptmx
ln -s /dev/pts/ptmx /dev/ptmx
mkdir -p /cgroup
mount -t cgroup cggroup /cgroup/
echo /bin/remove_dead_cgroup.sh > /cgroup/release_agent
echo 1 > /cgroup/notify_on_release
#
cat > /etc/lxc-basic.conf << EOF
lxc.network.type=veth
lxc.network.link=virbr0
lxc.network.flags=up
EOF
lxc-create -f /etc/lxc-basic.conf -n cr1 -t ubuntu
cd /var/lib/lxc/cr1/rootfs/sbin
mv init upstart
cat > init << EOF
#!/bin/sh
rm -f /shutdown
hostname cr1
exec 0<&-
exec 0</dev/null
exec 1>&-
exec 1>nohup.out
exec 2>&-
exec 2>nohup.out
mkdir -p /tmp2
mount --bind /tmp2 /tmp
mount -a
mount -t proc proc /proc
mount -t tmpfs varrun /var/run
mkdir /var/run/network
mkdir /var/run/sshd
ifconfig eth0 192.168.123.21 up
screen -A -d -m -S console
/usr/sbin/sshd
while [ ! -f /shutdown ]; do
sleep 4s
done
EOF
lxc-start -n cr1
(in another console)
ssh 192.168.123.21
screen -r
ps
ctrl-a d
exit
lxc-freeze -n cr1
lxc-checkout -n cr1 -S /root/cr1.s1
So far, so good. Note that I couldn't use upstart for my init bc upstart
uses inotify, which we don't yet checkpoint. The kernel is compiled without
ipv6 bc that was also causing a problem (though I thought ipv6 was supported
for checkpoint?) and therefore I needed a custom libvirt package which didn't
break when ipv6 is not there.
The problem now is when attempting to restart:
lxc-stop -n cr1
lxc-restart -n cr1 -S /root/cr1.s1
There are two issues:
1. how to re-create the mounts. Kernel doesn't do it yet. There
isn't (that I know of) a clean way to hook lxc-restart to do it.
Comments?
2. likewise there *may* end up being a question of where to best hook
the backup/snapshot and restore of filesystems. Though for these
examples (screen and next vncserver) it shouldn't be necessary.
I'm trying to do this using lxc-checkpoint and lxc-restart so as to
keep the instructions as simple as possible. The hope is in the next
few weeks to have a few recipes that people can try out. But if it's
not (cleanly) possible using lxc-restart, then I guess I can switch to
using user-cr and some container tarballs, which seems a lot easier in
the short term but less useful in the long term.
thanks,
-serge
next reply other threads:[~2010-12-08 4:53 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-08 4:53 Serge E. Hallyn [this message]
[not found] ` <20101208045322.GA17602-7LNsyQBKDXoIagZqoN9o3w@public.gmane.org>
2010-12-08 5:53 ` trying to build simple checkpoint/restart recipes Matt Helsley
[not found] ` <20101208055320.GH10470-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2010-12-08 14:52 ` Serge E. Hallyn
[not found] ` <20101208145245.GB8316-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
2010-12-08 21:10 ` Rob Landley
[not found] ` <7E28E74ACE78074AAD1BDD3E455CF8749422-w6YtkvcGFufufkSEj+1U85Z3qXmFLfmx@public.gmane.org>
2010-12-08 22:26 ` Serge E. Hallyn
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=20101208045322.GA17602@mail.hallyn.com \
--to=serge-a9i7lubdfnhqt0dzr+alfa@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox