Weekly status #204

Weekly status for the week of the 21st of June to the 27th of June.


This past week has seen a new feature added to LXD for volume management between projects, as well as another fix for the changes introduced by the LXD core20 base snap change, and several other improvements and bug fixes.

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.


New features:

  • It is now possible to move custom storage volumes between projects by using the --target-project flag with the lxc storage volume copy and lxc storage volume move commands.


  • Lifecycle events have been extended and normalised across LXD.
  • VMs now check that the host is compatible (supports KVM and vsock) before allowing them to be created. This prevents accidentally migrating a VM onto a host that doesn’t support it.
  • Using the --pretty flag is now supported for lxc monitor operation events.
  • When using VMs on the ZFS storage driver with snapshots, it was found that due to the fresh copy of the LXD agent that is added to the VM’s config drive on each boot, when combined with the COW behaviour of snapshots, it would quickly cause the VM’s config volume quota to be exceeded after a few snapshots were taken. We have limited the impact of this issue by only copying the lxd-agent binary to the VM’s config drive if the source has changed in size or last change date.

Bug fixes:

  • An issue that would cause a proxy device’s forkproxy process to be left behind after the container had stopped when trying to concurrently start a container while it was shutting down has been fixed. The fix was two pronged. First, LXD no longer writes the forkproxy PID file to disk until the process has been confirmed to have started successfully. This prevents orphaned processes from being left behind if the device fails to start due to a conflicting listener address. Previously writing out the new PID file too soon prevented the old process from being stopped if the conflicting start up had got as far as trying to start the proxy device. Further more we have improved the locking used during a container-initiated shutdown to prevent concurrent start up attempts.
  • The bridged NIC IP filtering and MAC filtering features have been restored after an issue with the ebtables in the core20 snap package.
  • Invalid sub command usage in lxc now returns an error.

Dqlite (Go bindings)

The recently added snapshot parameters feature has been added to go-dqlite, and an improvement to the way the cluster.yaml file is written to disk, using atomic renames, in an attempt to avoid leaving partially written files has been added.

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.



  • Nothing to report this week


  • Nothing to report this week


Dqlite (RAFT library)

  • Nothing to report this week

Dqlite (database)

  • Nothing to report this week

Dqlite (Go bindings)

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.


  • Nothing to report this week


  • xtables: Re-introduce ethertypes/protocols
  • lxd: Tweak build flags for dqlite
  • lxd: Cherry-pick upstream bugfixes