Weekly status #148


Weekly status for the week of the 11th May to the 17th of May.

Introduction

LXD

This past week LXD has gained better support for BTRFS subvolumes inside containers. Now when copying snapshots (either in the same storage pool or different BTRFS storage pools via migration) subvolumes are maintained (including their readonly property if set). This has been achieved with a new migration feature that is required on both source and target node. If the new feature is not available on the destination node, and subvolumes are detected in the source, the migration will be rejected (to avoid losing data on the target). In addition to that, subvolumes are now supported when doing snapshots and optimized backup exports. When restoring an optimized backup that contains subvolumes, if it is restored onto an older version of LXD then the subvolumes will not be restored.

Also on the LXD storage front, LVM has seen some improvements to the way it parses logical volume snapshot names so that an issue with snapshot names conflicting with unrelated instance names (preventing instance deletion) has been fixed. In addition to that the LVM storage driver now only activates logical volumes when needed, meaning that the /dev/<volume group>/ directory is not populated with LV devices of volumes that are not in use (this brings the LVM driver inline with the behaviour of ZFS and Ceph drivers).

The resources API has gained the ability to report on physical memory available on the node rather than just memory available excluding the kernel memory. Only online RAM sticks are considered as ‘available’.

Work to make the VM lxd-agent statically compilable (so that it can be used inside Alpine VMs) has continued with fixes for openpty to avoid needing cgo.

An issue with seccomp policy conflicts between instances of the same name in different projects has been fixed too.

LXC

On the LXC front, an issue affecting macvlan, ipvlan and vlan type NICs where the .name property for the interface inside the container was not specified has been fixed. Previously it default to ethX where X was the ID of the network being configured. However for non-veth NIC types this had regressed to a random string used for the interface on the host side. Containers with the .name property set were not affected.

Also related to NIC configuration, the NIC mode flags have been made order independent, as previously if they were specified before the NIC type flag then the mode was set to the default value for the NIC type (resetting the earlier mode value specified).

An issue that caused a busy loop when rebooting a container started with lxc.log.syslog and lxc.log.level = 2 (or lower) has been fixed.

Work has also been done to use the new clone3 function when available in the kernel, and cgroupv2 improvements continue to be added.

Distrobuilder

Support for specifying uid, gid and mode have been added to the dump generators.

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: Easy issues for new contributors

Upcoming events

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
  • 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

  • Nothing to report this week

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

  • Cherry-picked upstream lxc fixes
  • Cherry-picked upstream lxd fixes
  • Cherry-picked upstream lxcfs fixes
  • Bumped ZFS to 0.8.4
  • Worked around a Go plugin restriction
  • Pushed LXD 4.1 to stable