[Blueprint servercloud-s-virtstack] Virtualization Stack Work for Saucy
Serge Hallyn
serge.hallyn at ubuntu.com
Fri May 24 15:28:52 UTC 2013
Blueprint changed by Serge Hallyn:
Whiteboard changed:
- This blueprint is broken into 3 sections - libcgroup, lxc, and
- qemu+libvirt.
+ [USER STORIES]
- ==== Background on libcgroup ====
- libcgroup is a package which provides:
- a. Flexible boot-time setup of cgroups
- b. Command line tools to configure and use cgroups
- c. A deamon to auto-reclassify tasks into cgroups
+ Abe would like to run untrusted workloads in a container.
- There were two important bugs in libcgroup:
- 1. Cgroup setup was done too late, after some daemons had
- started. This was solvable. However there was an attitude that
- it could simply reclassify daemons which had already started.
- It couldn't do that right.
- 2. Auto-reclassifying tasks into cgroups cannot be done
- correctly with current kernel support
+ Billy would like for his users to be able to use containers without
+ giving them root access.
- Because properly mounted cgroups are crucial to libvirt and lxc, we
- temporarily worked around this by introducing cgroup-lite, which
- introduces tiny, inflexible upstart jobs to mount cgroups. This was
- meant as a temporary step until libcgroup could be improved.
+ Charlie would like to confine users with flexible cgroups.
- In the meantime, a few things have happened
- 1. libcgroup functionality is being moved into systemd.
- 2. libcgroup has dropped its faulty startup scripts so that it be
- installed alongside cgroup-lite
- 3. Upstream kernel cgroup maintainer wants userspace to stop dealing
- with cgroupfs, and use a new (not yet designed) library instead
+ Denise is writing an application using containers, and wants to re-use
+ the tested core lxc API.
- In the medium term we wanted to
- 1. Write sysvinit scripts to mirror the cgroup-lite upstart jobs, and
- provide them together in libcgroup.
- 2. Support some flexible boot-time cgroup setup. This is especially
- required so that users can be confined by memory cgroup in the face
- of unprivileged user namespace cloning.
+ Erica would like openstack-lxc users to have all the advanced features
+ of lxc (apparmor protection, nesting, etc).
- That way cgroup-lite could then be replaced by libcgroup again.
+ [ASSUMPTIONS]
- We should also begin working with wider communities on designing the
- cgroup library interface to be used above cgroupfs. This design should
- account for clean nesting in containers, so that the library running in
- a container can forward requests (i.e. cgroup creation and
- configuration) to the library on the host.
+ A fix is accepted upstream to allow user namespaces to be used alongside
+ XFS.
- https://lkml.org/lkml/2013/4/5/535
- https://lkml.org/lkml/2013/4/9/651
+ [USER ACCEPTANCE]
- ==== Background on LXC ====
+ Set up a user with subuids and use it to create and run a container.
- Over the past several cycles we have been working toward a specific
- vision of where we want LXC to be for 14.04 LTS. This has been
- laid out in several places, and has also been codified in the form
- of a roadmap toward the upcoming 1.0 LXC release. That roadmap can
- be seen at
+ [RELEASE NOTE/BLOG]
- https://wiki.ubuntu.com/LXC/1.0-roadmap
+ User namespaces, apparmor, and seccomp are now leveraged to provide a
+ secure container environment.
- For 13.10, we intend to focus on the harder, more fundamental pieces,
- which will be scarier during an LTS cycle. This includes the core
- of the remaining user namespace, completing the most-wanted features
- in the API, and monitor and control socket work.
+ Containers can now be created and used by unprivileged users.
- Specific pieces which would best be completed in 13.10 include
- unprivileged use of user namespaces
- full user namespace support in kernel
- attach, clone, and console support in API
- userns patches merged into upstream shadow package
- ability to use lxc-fuse in ubuntu package
- libvirt driver based on lxc api
- lxc.hook.clone (and lxc-create/destroy hooks)
- lxc-snapshot in the api
- stable lxc trees? (v0.7.5, v0.8.0, v0.9.0, etc)
-
- ==== Background on qemu and libvirt ====
-
- Libvirt is doing quite well. Libvirt-lxc offers a challenge for us - it
- has recently been better supported than in the past, with support for
- qemu-nbd devices being added. However, it does not currently have a good
- apparmor profile, and uses a completely different code base from upstream
- lxc. We might have to choose between filling in missing features in
- the libvirt-lxc, and implementing a new driver using the upstream lxc
- api. We may do both and let users choose, however beside additional
- development work it also provides duplication for testing and bug
- control.
-
- The edk2 package which provides a bios capable of UEFI secure boot
- currently works, but has no way to save/restore nvvars across qemu
- runs (vm reboot is ok). If that feature were added, it should be
- useful for ubuntu image tests.
-
- * edk2:
- - debug builds (carried over)
- - ability to save/restore NvVars
- . not in ovmf yet
- . proposed through qemu flash support
- * openbios-sparc: fix 64-bit bios
- * better qemu-user arm support (Help fixing some of the current bugs)
-
- * libvirt lxc driver based on the lxc api
-
- * target qemu 1.5, libvirt 1.0.6, xen 4.3 ?
-
- notes from smb on xen:
- * Switch from xm to xl as default. That will have some effect on libvirt
- integration (Openstack still rather favours XCP?). I think libvirt has
- the basic pieces but right now the libxen-dev does not contain the necessary
- headers/libs to make libvirt try to compile that.
- * Switch from qemu-dm to qemu upstream. I need to check the roadmap/ask people
- how feature complete upstream qemu now is. Ideally I would wish there only
- be one upstream qemu binary that supports Xen and KVM. So we could only
- depend on qemu instead of compiling something as part of the Xen build.
- Not sure this is what upstream thinks.
- * EFI Xen. I believe there is a bootloader but likely needs to be specifically
- requested in the build. Also this rises the question on how to integrate that
- into our boot story. Can grub.efi chain into another xxx.efi?
- * Upstartify the init scripts. I got something that works to a certain degree
- but had some issues on the way down. Nice to have but not highly important.
- * How to handle that the hypervisor drops support for 32bit.
+ There is built-in support for boot-time configuration of control
+ groups.
--
Virtualization Stack Work for Saucy
https://blueprints.launchpad.net/ubuntu/+spec/servercloud-s-virtstack
More information about the Ubuntu-server-bugs
mailing list