Weekly status for the week of the 6th June to the 12th June.
Introduction
Last week we continued our focus on stability that we’ve had over the last few weeks by continuing to work through our issues backlog (and any other issues we find along the way) expanding our test suite as we go.
There’s also been a community contribution to allow customizing the VM QEMU config to support a wider variety of options than officially supported by LXD.
Additionally @stgraber has added a video covering the network forwards feature in LXD:
Related to network forwards, work has also begun on creating the specification for adding support for OVN load balancers in LXD.
LXD
Improvements:
- Added a
raw.qemu.conf
config option which can be used to add/override/remove settings in theqemu.conf
file generated by LXD for VMs. See Linux Containers - LXD - Has been moved to Canonical for more details. - Standardized our revert logic process by returning a
revert.Hook
from functions that provide revert mechanism (as opposed to accepting arevert.Reverter
as an argument). - Future proof LXD migration index header version negotiation by only offering up to the locally supported version during negotiation with the source side.
Bug fixes:
- Require a listen address for
lxc config trust add
token issuance. Before it was possible to get LXD to issue an unusable token if LXD didn’t havecore.https_address
configured. - Custom volume optimized refresh fixes.
- Improve migration protocol to allow sending (and thus re-creating) the instance storage volume config (and associated snapshots). Previously, volume record config was not sent for instance migrations.
- Use
getent
inlxd-user
because the Goos/user
effectively parses/etc/passwd
which is incompatible with external authentication through NSS. - Fix invalid QEMU configuration option
bootIndex
from being used when adding a PCI device pass-through.
LXC
Improvements:
- Removes autotools build support and replaces with meson.
Dqlite (RAFT library)
Improvements:
- Added automatic startup recovery of corrupt segment files. By detecting them and moving them out of the way at startup. Once moved out of the way, the next startup can complete successfully requiring no manual intervention. The renamed files are named “corrupt-{timestamp}-{filename}” and are kept around in case they would contain useful data.
Bug fixes:
- Fixes an issue where a cluster with pre-vote enabled remained unavailable when there was a quorum of nodes online but where one of the nodes has an outdated term resulting in the other servers ignoring its vote.
- Fixes an issue to prevent a cluster deadlock, with pre-vote enabled, when a node with a stale term reconnects to the cluster but its vote is needed to form quorum.
LXD Charm
Improvements:
- Add get-client-token action which returns a client certificate add token to use by the client as
lxc remote add <remote-name> <token>
.
YouTube videos
The LXD team is running a YouTube channel with live streams covering LXD releases and weekly videos on different aspects of LXD. You may want to give it a watch and/or subscribe for more content in the coming weeks.
https://www.youtube.com/lxd-videos
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 planned currently.
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.
- Stable release work for LXC, LXCFS and LXD
- Convert LXC to use meson build system
- [LXD] Bidirectional vsock interface for VMs
- [LXD] Network load-balancers (OVN)
- Dqlite disk-only operation mode
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: Move away from accepting revert.Reverter as an argument and instead return revert.Hook for cleanup
- Handle custom volume refresh properly
- New
raw.qemu.conf
config option - chore: Included githubactions in the dependabot config
- Storage: Restore missing instance volume snapshot DB records
- build(deps): bump actions/setup-go from 2 to 3
- build(deps): bump actions/labeler from 3 to 4
- build(deps): bump actions/checkout from 2 to 3
- build(deps): bump actions/upload-artifact from 2 to 3
- Tweak Github Actions
- Migration: Improve migration index header negotiation and format
- Instance: Allow storage volume config to be migrated
- doc: Update for new myst_parser
- lxd-user: Use getent
- lxd/certificates: Require an address for token issuance
- lxd/instance/qemu: Drop bootIndex from PCI
- Fix network forward example in edit
- lxd/cgroup: Better handle broken CGroupV2 setups
- github: Only run dependencies check on PR
- tests: Skip EDITOR=cat when not a terminal
- doc: fix indentation for commands
- doc/instances: Add section about raw.qemu.conf
LXC
- Remove autotools
- CODING_STYLE: add forgotten fallthrough
- More meson fixes
- chore: Set permissions for GitHub actions
- build: remove autotools and finish meson port
- Github workflow fixes
- chore: Included githubactions in the dependabot config
- build(deps): bump actions/upload-artifact from 1 to 3
- tests: fix oss-fuzz port to meson
LXCFS
- Nothing to report this week
Distrobuilder
- Nothing to report this week
Dqlite (RAFT library)
Dqlite (database)
- Nothing to report this week
Dqlite (Go bindings)
- Nothing to report this week
LXD Charm
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
- LXC 4.0.12 released to both Ubuntu 20.04 and 21.10.
Snap
- Nothing to report this week