Weekly status #138


Weekly status for the week of the 2nd March to the 8th of March.

Introduction

This past week the LXD team was meeting in Frankfurt for an engineering sprint.

On the LXD front there were several new features added and a selection of fixes and improvements:

LXD Storage

Most of the remaining legacy storage code has now been removed from the LXD code base and patches have been modified to use the new storage framework.

For the Ceph driver, the GetVolumeUsage function has now been implemented, meaning you can see usage information for ceph volumes.

Additionally a calculation error in the same function in the ZFS driver has now been fixed.

LXD VMs

Directories from the host machine can now be mounted inside the VM and access can be shared concurrently between host and VM guest. In order to use this functionality you will need the lxd-agent running inside the VM.

This feature is accessed using the familiar disk device concept from containers, e.g.

lxc config device add v1 test disk source=/some/host/dir path=/some/vm/dir

It uses the 9p protocol between the VM and the host and runs a proxy process to access the files on the host so that the VM process still does not need to be run as a privileged user.

We have also added support for cloud-init template files.

As we continue to build additional VM guest images for different operating systems we have needed to fix some issues that have been revealed. Firstly we now explicitly mount 9p shares using the trans=virtio option, which is the default in newer distributions, however some older versions of CentOS did not use this option.

Additionally in order to support more ARM64 architectures we now set the gic-version explicitly in Qemu.

LXD Containers

We have added hugetlbfs and hugepages support for containers, and a fix for the unix-hotplug device that caused LXD to crash in certain circumstances has been added.

Additionally, now that the legacy storage framework has been removed we have now completed the instance drivers code reorganisation and moved the containerLXC type out of the main package and into the instance/drivers package as the lxc type to sit with the existing qemu type. This allows us to share common functionality between the different instance types.

LXD Cluster

An improvement to the voter logic has been added so that now nodes are promoted if the number of voters drops below three.

LXD 3.22

And lastly for LXD, we wrapped up the week by releasing LXD 3.22.

LXC

The router network type has been modified to not rely on the ip command and instead use the netlink protocol to add IP neighbour proxy entries. Additionally an intermittent issues with IP neighbour proxy entries not being registered with the kernel in certain circumstances has been worked around.

LXCFS 4.0 LTS

LXCFS saw a lot of work this past week that culminated in the 4.0 LTS (Long Term Support) release. For more information please see the LXCFS 4.0 Release notes.

Distrobuilder

We continue to make improvements and fixes to distrobuilder in order to allow it to build more VM distribution images. This past week has seen the addition of CentOS 7 and 8 VM images being added.

Please keep an eye on Initial set of distrobuilder VM images to see when we had new VM images

Contribute to LXD

Ever wanted to contribute to LXD but not sure where to start?
We’ve recently gone through some effort to properly tag issues suitable for new contributors on Github: https://github.com/lxc/lxd/labels/Easy

You can also find a slightly longer, more detailed list here: Contributing to LXD

Ongoing projects

The list below is feature or refactoring work which will span several weeks/months and can’t be tied directly to a single Github issue or pull request.

  • Virtual machine support
  • Distrobuilder virtual machine support
  • Storage database cleanup/rework
  • Various kernel work
  • Stable release work for LXC, LXCFS and LXD

Upstream changes

The items listed below are highlights of the work which happened upstream over the past week and which will be included in the next release.

LXD

LXC

LXCFS

Distrobuilder

Distribution work

This section is used to track the work done in downstream Linux distributions to ship the latest LXC, LXD and LXCFS as well as work to get various software to work properly inside containers.

Ubuntu

  • Nothing to report this week

Snap

  • Pushed 3.22 to the candidate channel