Weekly status for the week of the 28th March to the 3rd April.
Introduction
The highlight of of past week was the release of LXD 5.0 LTS. As with all our other LTS releases, this one will be supported for 5 years (June 2027) and will receive a number of bugfix and security point releases over that time.
Please see the release notes and the release video:
https://www.youtube.com/watch?v=WW6dQGIqGsA
Additionally @stgraber has added a video on managing the LXD snap package:
https://www.youtube.com/watch?v=otHUQ5aB2Fs
LXD
New features:
- Added optimized refresh support for ZFS and BTRFS volumes, which will help speed up VM refreshes particularly.
- Added support for VM USB hotplugging.
- Adds support for
ovn-chassis
cluster member role, which indicates which cluster members should be considered candidates for use as the gateway chassis for OVN networks. - Added syscall interception for sched_setscheduler.
Improvements:
- Moves the instance storage volume database record management into the
lxd/storage
package for consistency with custom volume database record management. - Removes pre-LXD 4.0.0 patches as we no longer support upgrading from pre-LXD 4.0.0.
- Replaces logging package with upstream logrus rather than maintaining an older forked logging package.
- Added
lvm.thinpool_metadata_size
storage pool option to allow manually setting the thinpool metadata volume size, and changed the default so that LVM will now pick an appropriate metadata volume size based on the size of the thin pool rather than specifying a fixed 1GB size as was previously done. This allows smaller thin pools to be used. - Adds
lxc cluster role {add,remove}
commands to make it easier to manage cluster member roles. - Require TLS 1.3 for API access.
Bug fixes:
- Fixed a regression added by VM disk hotplug that removed the
serial
property of a disk which meant the/dev/disk/by-id/
entries did not appear. - Fixed an image refresh regression for clustering.
- Fixed regression in lxd-agent shutdown.
LXC
Improvements:
- Containers are now stopped in the opposite order they were started.
Bug fixes:
- Fixed an issue preventing dnsmasq from starting if
misc
directory didn’t exist.
Distrobuilder
Improvements:
- Optimize mount options for speed.
Dqlite (RAFT library)
Improvements:
- Adds
snapshot_finalize
which allows checkpoints to run again, freeing allocated buffers.
Dqlite (database)
Improvements:
- Loosen snapshot_trailing restrictions which allows to test snapshots more in jepsen tests.
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.
- Prometheus & grafana integration with the LXD charm
- 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
- Optimized refresh
- Support USB hotplugging
- Network zones documentation
- Storage: Manage instance storage volume database records in storage package
- Introduce OVN chassis role
- shared: Adds generic HasKey
- Revert “lxd-agent: cleaner shutdown sequence”
- Image: Fix image refresh record management
- Make it easier to script token add
- Networking docs restructure
- Add syscall interception for sched_setscheduler
- Client: Fix incorrect interpolation of % characters in errors
- Remove old operations of offline cluster members
- Storage: Align load functions with network package
- shared/network: require TLS 1.2+ if LXD_INSECURE_TLS
- Image: Fix refresh tests
- Replace interface{} with any
- Storage: Add option to specify LVM thinpool metadata size and default to automatic sizing
- lxd: Drop devPaths logic
- client: add function useCurrentServer instead of “r == source”
- doc: add link to multi-user video
- Remove pre LXD 4.0.0 patches
- Remove pre LXD 4.0.0 schema patches
- Replace log15 with logrus
- lxd: make sure we’re operating relative to the correct pid namespace
- Various fixes
- Pre-5.0 fixes
- lxd/storage/btrfs: Fix usage nested
- lxd/instance/qemu: Fix bad topoext logic
- Storage: Move validation into storage package
- Fix typo in notes
- Add/remove cluster role commands
- lxd/instance/drivers/qemu: Add serial key to device
- Move SplitNTrimSpace to shared
LXC
LXCFS
- Nothing to report this week
Distrobuilder
- Revert “lxd-agent: cleaner shutdown sequence”
- Add discard mount option
- vm: Optimise mount options for speed
- Switch to staticcheck
Dqlite (RAFT library)
Dqlite (database)
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
- Nothing to report this week
Snap
- snapcraft: Add support for RISCV64
- lxcfs: Fix some issues with nesting support
- lxd: Bump to 5.0.0
- lxd: Cherry-pick upstream bugfixes
- sqlite: Bump to 3.38.2
- squashfs: Bump to 1.1.4
- zfs: Bump to 2.1.4
- nvidia-container: Bump to 1.9.0
- ovn: Bump to 22.03.0