LXD Live Migration of Linux Containers Tycho Andersen, Canonical - - PowerPoint PPT Presentation

lxd
SMART_READER_LITE
LIVE PREVIEW

LXD Live Migration of Linux Containers Tycho Andersen, Canonical - - PowerPoint PPT Presentation

LXD Live Migration of Linux Containers Tycho Andersen, Canonical Ltd. tycho.andersen@canonical.com http://tycho.ws Sorry, no demos today :( Who is this guy? LXD LXC CRIU Kernel The history of LXC Over 6 years of Linux system


slide-1
SLIDE 1

LXD

Live Migration of Linux Containers

Tycho Andersen, Canonical Ltd. tycho.andersen@canonical.com http://tycho.ws

slide-2
SLIDE 2

Sorry, no demos today :(

slide-3
SLIDE 3

Who is this guy?

➔ LXD ➔ LXC ➔ CRIU ➔ Kernel

slide-4
SLIDE 4

LXC 0.9

The history of LXC

Over 6 years of Linux system containers

2008 2015 2009 2010 2011 2012 2013 2014 Beginning of the LXC project LXC 1.0 LXC 1.1 LXC 0.8 LXC 0.1 LXC 0.2 LXC 0.5 LXC 0.3 LXC 0.4 LXC 0.6 LXC 0.7 Major project rework

slide-5
SLIDE 5

LXD: the container lighter-visor

What it IS

➔ Simple

Clean command line interface, simple REST API and clear terminology.

➔ Fast

No virtualization overhead so as fast as bare metal.

➔ Secure

Safe by default. Combines all available kernel security features.

➔ Scalable

From a single container on a developer’s laptop to thousands of containers per host in a datacenter.

slide-6
SLIDE 6

LXD: the container lighter-visor

What it ISN’T

➔ Another virtualization technology

LXD tries to offer as similar a user experience as that of a virtual machine but it doesn’t itself virtualize anything, you always get access to the real hardware and the real native performance.

➔ A fork of LXC

LXD uses LXC’s API to manage the containers behind the scene.

➔ Another application container manager

LXD only cares about full system containers and doesn’t care about what runs inside the container.

slide-7
SLIDE 7

Hypvervisor-y things

slide-8
SLIDE 8

LXD: the container lighter-visor

Host A nova-compute-lxd lxc (command line tool) LXD Linux kernel LXC LXD REST API your own client/script ? Host B LXD Linux kernel LXC Host C LXD Linux kernel LXC Host D LXD Linux kernel LXC Host ... LXD Linux kernel LXC

slide-9
SLIDE 9

Hypvervisor-y things

slide-10
SLIDE 10

lxc move host1:c1 host2:

slide-11
SLIDE 11

lxc move host1:c1 host2:

➔ host1 negotiates three “channels” with host2 ◆ control ◆ filesystem ◆ container process state ➔ Using a tool called CRIU for process state ➔ host1 captures memory state using CRIU ➔ host2 restores memory state using CRIU

slide-12
SLIDE 12

The history of CRIU

Five years of checkpointing!

2006 ... 2011 2012 2013 2014 2015 C/R in OpenVZ Kernel Attempts to merge OpenVZ in-kernel upstream First discussion on lkml about C/R from Userspace First kernel patches merged CRIU 0.1 Memory page tracking patches merged upstream LXC gets support for C/R via CRIU libcontainer gets support for C/R via CRIU

slide-13
SLIDE 13

What’s the catch?

“A note on this: this is a project by various mad Russians to perform c/r mainly from userspace, with various oddball helper code added into the kernel where the need is demonstrated… However I'm less confident than the developers that it will all eventually work!”

  • Linus Torvalds (kernel commit 09946950)
slide-14
SLIDE 14

What’s the catch?

“This is not an enterprise feature. It's a promise one cannot keep. We will not add code to systemd that works often but not always, and CRIU is certainly of that kind.”

  • Lennart Pottering (systemd-devel, 2015)
slide-15
SLIDE 15

Always playing catch-up

slide-16
SLIDE 16

Plug-ins needed for custom /dev

slide-17
SLIDE 17

Not all kernel features supported

slide-18
SLIDE 18

Security!?!!111?1

slide-19
SLIDE 19

Security

Secure Migratable

slide-20
SLIDE 20

Security

Secure Migratable

slide-21
SLIDE 21

Security

Secure & Migratable

slide-22
SLIDE 22

Security

➔ cgroups ➔ apparmor, selinux, etc. ➔ seccomp (STRICT, FILTER) ➔ user namespaces

slide-23
SLIDE 23

Correct and Fast

Pick two

slide-24
SLIDE 24

Making Migration Fast

➔ Three channels ◆ control ◆ filesystem specific ◆ memory state specific ➔ Filesystems: ◆ btrfs, LVM, ZFS, (swift, nfs?), etc. ◆ rsync between incompatible hosts ➔ Memory state: ◆ Stop the world ◆ Iterative incremental transfer (via p.haul)

slide-25
SLIDE 25

Administrivia

➔ LXD ◆ Current stable release 0.16 ◆ 1.0 targeted for February 2016 ◆ Two week release cadence ◆ (at least) One more release before Wily ◆ https://linuxcontainers.org ◆ https://github.com/lxc/lxd ➔ CRIU ◆ Current stable release 1.6.2 ◆ Three month release cycle ◆ http://criu.org ◆ https://github.com/xemul/criu

slide-26
SLIDE 26

Questions?

Tycho Andersen, Canonical Ltd. tycho.andersen@canonical.com http://tycho.ws https://linuxcontainers.org/lxd https://github.com/lxc/lxd