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
- Network: Prevent using interface with global unicast IPs for physical network and OVN physical uplink
- VM: Don’t set multifunction=off as this upsets ccw driver
- Instance: Fix potential nil pointer dereference in instance list
- lxd/instance: Don’t use RawOperation
- Fix stuck/leaky websocketproxy
- VM: Workaround QEMU bug to restore boot.priority support
- Cluster: Fix join tokens
- Cluster: Join token improvements
- Image: Improve image distribution
- Network: Check if dnsmasq has prematurely exited during startup and log an error if so
- Expose db standby role
- VM: Move to adding macvlan NIC file descriptors using QMP SendFile
- lxd: Move ResolveWarningsByNodeAndType to separate package
LXC
- conf: support idmapped lxc.mount.entry entries
- Skip rootfs pinning for read-only file system.
- conf: fix mount option parsing
- start: rework fd synchronization
LXCFS
- Nothing to report this week
Distrobuilder
- sources/funtoo: Add missing break
- main: Skip overlay on xfs
- main: Run systemd fix before post-files actions
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