Weekly status for the week of the 31st of May to the 6th of June.
Introduction
The highlight of the past week was the release of LXD 4.15, please see the release notes and associated release video for more details.
Also released last week was Dqlite RAFT library v0.11.1 with support for lz4 compressed snapshots.
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
Most of the changes from last week were included in LXD 4.15, these include VM NIC hotplug support, HAProxy protocol header support for the API endpoints, and the new --expire
flag on the lxc publish
command.
Also included were several bug fixes from last week:
- A fix for an orphaned internal ZFS mount counter when importing an instance failed at a certain point, preventing further successful imports of the instance.
- A bug in warnings system that was causing a previously resolved (but not yet deleted) warning from being reinstated as “new” (status change for existing warning) if the warning reoccurred has been fixed. We now set the status back to new if the status is resolved (as opposed to acknowledged).
- An issue that could trigger a cluster heartbeat loop during an upgrade causing the cluster to believe all members were down has been fixed. This was caused because during an upgrade the leader member has cluster database access but is not fully initialised. This meant that during the periodic heartbeat round it could not ascertain what its own cluster address was and so was ending up sending heartbeats to itself. This combined with the recent changes to cancel an ongoing heartbeat round when a member notifies the leader of a state change meant that the leader was ending up cancelling its own heartbeat whilst also trigger a new heartbeat to start immediately (in a loop). The fix was to ascertain the leader’s cluster address from the local database rather than the cluster database.
Also added last week but did not quite make the 4.15 release were:
- Support for idmapped mounts if available.
- A new
lxc cluster revoke-token
command which allows clearing an unused cluster join token. - Exposing non-ATA drives as rotational in the resources API. These drives don’t expose their RPMs through udev, and as we don’t want to directly have to poke the drives, we instead just indicate that they are rotating by setting the RPM to 1 if it’s currently 0 and if the kernel recorded them as spinning.
LXCFS
A small fix to LXCFS was added to remove unnecessary log entries regarding an inability to calculate CPU idle time.
Distrobuilder
Improvements to the systemd-generator have been added.
Dqlite (RAFT library)
The previously mentioned lz4 snapshot compression feature was released as v0.11.1 along with several build time fixes that control the feature.
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
- lxd: support idmapped mounts
- VM: Wait for QEMU process to end before considering VM stopped
- Add missing virtiofsd warning
- Swagger for storage pools
- HAProxy protocol header support
- Image expiration on Publish
- Storage: Include unmount action in the ZFS revert hook returned from CreateVolumeFromBackup
- VM: NIC hotplug
- VM: Increase max wait time for qemu process to exit
- VM: Fix logger in onStop
- lxd/endpoints: Update endpoints Config doc
- Cluster: Get local cluster address from local DB and avoid sending heartbeats to ourself during cluster upgrade
- Complete swagger coverage of the API
- Allow passing a fingerprint to compare during remote connection
- Cluster: Only create persistent warning for cluster time skew when cluster DB is operational
- README: Add liblz4-dev dependency when building from source
- doc: small cleanup of packages used to building from source
- Problematic terminology
- doc/rest-api: Linkify API doc
- lxc/config_trust: Support stdin and allow name override
- lxd/resources: Set RPM to 1 instead of 0 when rotational
- Revoke cluster join tokens directly from lxc cluster
LXC
LXCFS
Distrobuilder
Dqlite (RAFT library)
Dqlite (database)
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.
Ubuntu
- Nothing to report this week
Snap
- raft: Build with lz4
- lxd: Bump to 4.15
- squashfs-tools: Bump to 1.1.1
- edk2: Bump to 202105
- libnftnl: Bump to 1.2.0
- libtpms: Bump to 0.8.3