Weekly status for the week of the 6th December to 12th of December.
Introduction
The highlight of the past week was the release of LXD 4.21 which includes several features from our roadmap (cluster member groups and first class cloud-init support). For more information please see the release notes and the release video.
LXD
In addition to the release notes video, @stgraber has added another tutorial video, this time covering LXD clustering in depth.
New features:
- Cluster server grouping. See Linux Containers - LXD - Has been moved to Canonical and [LXD] Cluster server grouping for more info.
- Cluster role to indicate leader in the
lxc cluster ls
output. - Added the ability to retrieve instances for all projects using the
lxc ls --all-projects
command. - Added the ability to see help about all sub-commands in the
lxc
tool withlxc --help --sub-commands
. - Added support for
ipv{n}.routes
setting onrouted
NIC type.
Improvements:
- Enabled
nodatacow
on BTRFS subvolumes for LXD block volumes to improve performance. - Enabled direct I/O mode by default for loop device backed storage pools to improve performance.
- Added several optimisations for
proxy
device firewall rules when usingnat=true
mode to reduce the overall number of firewall rules being added when using large port ranges. - Added a warning in the docs about using VMs on BTRFS storage pools (due to quota limitations) please see Linux Containers - LXD - Has been moved to Canonical for more info.
- Consider cluster member offline when offline threshold is met (rather than being exceeded).
- Make cluster event listener refresh event driven (and via heartbeat) rather than continuously polling on all members ever second.
- Added
ceph.rbd.du
storage pool option to disable the use ofrbd du
to speed up state output performance if disk usage info not needed.
Bug fixes:
- Restore disk
size.state
quota on backup restore. - Account for disk
size.state
when checking the projectlimits.disk
setting. - Switch events websocket heartbeat to counter rather than absolute deadline times to fix an issue that caused immediate disconnect after a machine is resumed after being suspended.
- Replace profiles rather than append when specifying the
-p
flag withlxc copy
. - Fixes issue when a cluster member is joined to an existing cluster that has networks in non-default projects with the same name as networks in the default project.
- Move the cluster join notification request out of the DB transaction so we do not delay committing the changes to the global database.
- Handle lack of available target in evacuation.
- Fixed regression in
routed
NIC IPv4 routing setup.
LXC
Improvements:
- Don’t advertise seccomp notify support if it’s not compiled in.
- Only guard seccomp notify behind HAVE_DECL_SECCOMP_NOTIFY_FD.
LXCFS
Improvements:
- Set empty
cgroup
dir ifunified_cgroup_hierarchy=1
. - Make meminfo and swaps cgroupv2 aware.
Distrobuilder
Improvements:
- Switch to
logrus
.
Dqlite (RAFT library)
Bug fixes:
- Handle negative rv of UvOsIoGetevents in uv_writer.
LXD Charm
Improvements:
- Use tuples instead of lists where appropriate.
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.
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 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
- Cluster server grouping
- Ability to retrieve instances for all projects through API
- Add cluster member role to indicate the leader
- doc: Reformatted Storage Documentation to Organize Keys by Storage Type
- Storage: Enable nodatacow on BTRFS subvolume for block volumes
- Storage: Restore VM filesystem size.state quota on backup restore
- Storage: Improve logging during backup unpack
- Project: Account for disk size.state when checking project limits.disk setting
- Events: Switch events websocket heartbeat to counter rather than using absolute deadline times
- Optimise proxy device driver nat rules
- Added --sub-command flag
- Storage: Add warning to docs about using VMs on BTRFS storage pools
- Add swagger to doc
- doc/storage: fix 2 typos
- lxd/storage: Switch to deviceConfig.DefaultVMBlockFilesystemSize
- doc: Clarify btrfs resize documentation
- lxd/device/nic/bridged: Allow ipv{n} filtering when ip is set to none
- lxd/storage: Enable LO_FLAGS_DIRECT_IO by default for loop devices
- Cleanup ucred handling, fix cluster permission and more reliable tests
- Add ipv{n}.routes setting for routed NIC type
- doc: fix link to rest-api.yaml
- lxc/copy: Replaces profiles when -p is set.
- Cluster: Heartbeat ordering
- doc/api-extensions.md: fixed typo in gpu_mig section
- GetNonPendingNetworkIDs Project Aware
- test: Give exec chance to finish before capturing output
- Cluster: Include endpoint address in dqlite connect errors
- Cluster: Make event listener refresh event driven
- Use all-projects parameter in events api
- Record net.Conn in request context
- lxd/storage: Add a
ceph.rbd.du
storage option to disable the use ofrbd du
- doc/cluster: Clarify join question handling
- tests: Bump pg_num to 16
- Events: Make Connect use an event driven wait approach for waiting until the event stream is connected
- test: Add 1s between running non-interactive exec and checking for exit status in operation
- Cluster: Move notifyNodesUpdate call out of transaction in Join
- lxc/list: Better handle --all-projects
- lxd/cluster: Update not clustered error
- Fix incorrect type of ceph.rbd.clone_copy in docs
- lxd/cluster: Handle lack of available target in evacuation
- fuidshift: Remove accidental binary build
- NIC: Enable IP forwarding on routed NIC veth host_name interface
LXC
- api-extensions: don’t advertise seccomp notify support if it’s not co…
- seccomp: only guard seccomp notify behind HAVE_DECL_SECCOMP_NOTIFY_FD
LXCFS
Distrobuilder
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
- Nothing to report this week
Snap
- lxd: Bumped to 4.21
- edk2: Bumped to 202111
- nftnl: Bumped to 1.2.1
- seccomp: Bumped to 2.5.3
- libtpms: Bumped to 0.9.1
- nftables: Bumped to 1.0.1
- nvidia: Bumped to 1.7.0
- ovn: Bumped to 21.09.1
- swtpm: Bumped to 0.7.0