Weekly status for the week of 20th February to 26th February.
Introduction
This past week was primarily an improvements and bug fix week after last week’s LXD 5.11 release. These include a fix for ZFS block filesystem volume resize and a potential fix for an intermittent race condition between LXD and systemd when configuring NIC MAC addresses.
LXD
Improvements:
- Improved validation of
proxy
devices andbridge
network forwards to prevent their listen addresses conflicting. - Switched to using
ip
command to setup host-side routes and neighbour proxy entries for theipvlan
NIC type. This brings it inline with how therouted
NIC type works. - Don’t force
atime
on ZFS volumes. By not forcingatime
to on, we get therelatime
behavior and we also allow an admin to disable the feature by settingatime=off
on the dataset itself or on a parent. - When modifying a stopped VM’s settings its config volume needs to be activated and mounted. This is required because LXD will write the new settings to the instance’s backup.yaml file (which is stored in the config volume). However previously LXD was also activating the VM’s root volume, which was taking extra time and was unnecessary. Now LXD only activates and mounts the VM’s config volume.
Bug fixes:
- Fixed panic if metric collection occurred during instance stop.
- Fixed some minor issues with the
lxc query
command. - Fixed non-recursive filtering in
lxc list
command (via API handler). - Fixed unpredictable ordering of Starlark
dict
keys. Unlike Go’smap
type, Starlark’sdict
keys have a predictable order. So when LXD converts a Gomap
into a Starlarkdict
it now sorts the keys before inserting them into thedict
so that it uses predictable ordering. - Fixed volume resize for ZFS block mode filesystem volumes.
- Fixed VM early boot
/dev/lxd
availability by retrying establishing the vsock connection inlxd-agent
. - Changed how LXD sets the MAC address and MTU of network interfaces it creates. Previously it called
ip link add
to create the interface and then made subsequent calls toip link set
to apply specific settings to the new interface. However it is thought this was allowing a race to occur between LXD and systemd-network’s defaultMACAddressPolicy=persistent
policy for interfaces, which was causing systemd-udevd to later set the MAC address to a random one (overriding what LXD had set earlier). This was causing problems with applications that require the instances’s interface to have a predictable MAC address in order to identify the NIC interface (such as cloud-init). LXD now creates the interface and sets its MAC address & MTU in a single call toip
. It is thought this should prevent the systemd from identifying the new interface as having a random MAC from the kernel and avoid triggering the automatic persistent MAC address policy. This also has the desirable side-effect that LXD makes fewer calls to theip
command. - Fixed missing “Project not found” error when running
lxc monitor --project=<unknown project>
. - Fixed ceph keyring lookup logic to match what the
ceph
tool itself does.
Distrobuilder
Improvements:
- Initial work has begun on reworking and refreshing the distrobuilder documentation.
Job openings
Canonical Ltd. strengthens its investment into LXD and is looking at building multiple squads under the technical leadership of @stgraber.
As such, we are looking for first line managers (highly technical) and individual contributors to grow the team and pursue our efforts around scalability and clustering.
All positions are 100% remote with some travel for internal events and conferences.
For more info please see LXD related openings at Canonical Ltd (2022-2023)
LXD
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 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.
- 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
- instance: No collisions between
proxy
device and network fwd listenAddr - Instance: Fix panic if metric collection occurs during stop operation
- lxc/query: Fix some minor issues
- Device: Configure ipvlan NIC host-side routes and neighbour proxy entries with LXD
- Instance: Fix non-recursive filtering in instances list
- doc: add links
- Scriptlet: Fixes unpredictable ordering of Starlark dict keys
- Storage: Fix volume resize for ZFS block mode filesystem volumes
- lxd/storage/drivers/zfs: don’t force atime to on
- lxd-agent: Retry getting vsock client
- Debugging docs
- Network: Update ip.Link to support applying settings atomically when adding interfaces
- Gofmt/swagger compatibility for go version > 1.18
- Storage: Only activate & mount VM config volume when updating backup.yaml
- Instance: Don’t collect metrics unless VM is running
- Events: Return “Project not found” error for
lxc monitor
- lxd/storage/drivers: Match ceph keyring lookup logic
LXC
- Nothing to report this week
LXCFS
- Nothing to report this week
Distrobuilder
LXD Charm
- Nothing to report this week
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
- Nothing to report this week