Weekly status #199


Weekly status for the week of the 17th of May to the 23rd of May.

Introduction

The past week we have been working on adding support for QEMU 6.0 to LXD, as part of this we are moving some of the device management from config based to QMP based, which will also aid hotplugging in the future. Work also continued in LXC to add idmapped mount support.

Moving our IRC presence to Libera Chat

Our IRC (live chat) channels have moved from Freenode over to Libera Chat.
You can now find us in #lxc and #lxc-dev on irc.libera.chat.
A web chat client can be found here: Kiwi IRC

The LXD team is hiring

The LXD team at Canonical is currently looking for a Go software engineer to join our distributed team of engineers. We’re looking for candidates anywhere in Europe or the Americas!

All LXD positions are 100% remote with some travel for internal events and conferences.

LXD

Continuing on from last week’s work to move VM NIC setup up to use QEMU’s QMP protocol (in order to have a single approach to support both boot-time and hot-plug NICs) there have been two regressions fixed; firstly boot.priority support wasn’t working for NICs added via QMP, and this required a fix in LXD to workaround a bug in QEMU that meant that the boot order was not refreshed in the EFI firmware until the VM was reset. Secondly, S90x support was broken because it does not support multifunction devices and as even adding multifunction=off was sufficient to prevent VMs being started on that architecture. Additionally VM macvlan NIC devices are now fully configured using QMP by utilising the SendFile command to pass the interface’s TAP file descriptor to QEMU.

On the cluster side, the recently added join token feature had some issues fixed and additional improvements added such that if there is an existing join token for a new member and the lxc cluster add <member> command is run again for the same new member, then the old token(s) are removed so that there is only ever a maximum of 1 outstanding join token for each new member.

Also on the cluster side, we are exposing the cluster members that are receiving the Dqlite database stream but are not voting members via the new database-standby cluster member role.

An issue that was leaking go routines and operations when lxc exec requests were being forwarded between cluster members has been fixed, and in cluster image distribution the scenarios in which a transfer token operation is required as been reduced.

On the networking side there have been two user experience improvements; firstly we now detect and prevent using an existing host interface that has existing IP(s) configured on it as the parent for physical or OVN networks. This prevents accidentally using an interface that is in-use that would cause network interruption when the interface is either connected to an OVS bridge or moved into an instance. Secondly, we now detect if the dnsmasq process used with managed bridge networks has exited prematurely (perhaps due to a conflicting process listening on the ports it needs) and a warning is logged in LXD’s log.

Finally an issue that was intermittently causing LXD to crash when running lxc ls with ephemeral instances has been fixed.

Distrobuilder

Distrobuilder now avoids using overlayfs on XFS filesystems and instead uses rsync as a fallback.

Youtube channel

We’ve started a Youtube channel with live streams covering LXD releases and its use in the wider ecosystem.

You may want to give it a watch and/or subscribe for more content in the coming weeks.

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

  • Nothing to report this week

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.

  • Distrobuilder Windows support
  • Virtual networks in LXD
  • 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

Dqlite (RAFT library)

  • Nothing to report this week

Dqlite (database)

  • Nothing to report this week

Dqlite (Go bindings)

  • Nothing to report this week

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

  • lxd: Cherry-pick upstream bugfixes