Weekly status #251


Weekly status for the week of the 30th May to the 5th 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.

LXD

Improvements:

  • Reworked the VM qemu.conf file generation to have less repetition and be unit testable.
  • Continued DB generator refactor to make loading the UsedBy information optional in order to avoid unnecessary queries. This week it was focused on making this optional for Profiles.
  • Add support for running LXD VMs inside LXD containers. This requires the following config:
lxc launch images:ubuntu/22.04 u22 -c security.nesting=true
lxc config device add u22 kvm unix-char source=/dev/kvm
lxc config device add u22 vhost-net unix-char source=/dev/vhost-net
lxc config device add u22 vhost-vsock unix-char source=/dev/vhost-vsock

Warning: Passing those character devices may significantly reduce or in some cases entirely nullify the normal security benefit of LXD containers. It’s fine for testing purposes but those devices generally expose you to system wide objects with no built-in namespacing support.

Bug fixes:

  • Fixed excessive logging of event “Failed closing listener connection” error message (as this is a normal scenario).
  • Fixed premature closing of migration socket on error which was preventing the error message from the target being returned to the caller.
  • Fixed race conditions for accessing the operation state variable.
  • Fixed issue with premature cleanup of container forkfile process which was intermittently preventing copying many files to a container.
  • Fixed an issue that was preventing instance refresh when previously running a file operation on an offline instance. We now ensure that forkfile is stopped on the target before attempting to perform a refresh of the instance’s root volume.
  • Fixed an issue that was preventing VM restart when the ZFS subsystem was taking longer than 30s to flush I/O and disable the zvol when the VM was stopped by allowing more time for this to complete and holding the operation lock for up to 5 minutes.
  • Fixed VM optimized migration on ZFS.
  • Fixed an issue where the new event HTTP streaming connection was not consistently closed (compared to the websocket mode).
  • Fixed an issue where LXD background tasks related to image management (updates, pruning etc) were sometimes running concurrently (especially at LXD start up time). This could cause some of the operations those tasks performed to conflict with each other. We now use a lock to prevent these tasks running concurrently.
  • Wait for background task operations to finish before allowing the background task to be scheduled again. Otherwise we can end up with the same background task running concurrently.
  • Fixed an issue where refreshing an existing custom volume that depending on its volume config to mount (such as when using LVM filesystem setting) was not working due to using the source volume config rather than the existing target volume config to mount.
  • Fixed a regression in image unpack for squashfs files. We have now restored the logic that ignores unpack errors related to block or character devices, as these cannot be created inside a container. This was causing Ubuntu cloud image unpacking to fail as they include a pre-populated /dev directory which cannot be unpacked inside of a container as the creation of device nodes isn’t allowed.
  • Fixed lxd-agent exec handler EOF due to incorrect usage of operation state that is nil in lxd-agent.

LXC

Improvements:

  • Finish port to meson build system.

Distrobuilder

Bug fixes:

  • Fixed some issues with the AlmaLinux 9 build template.

LXD Charm

Bug fixes:

  • Added a timeout for sub-processes to avoid blocking forever.
  • Fixed an issue that avoids trying to remove members that never joined the cluster.

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.

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.

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

LXC

LXCFS

  • Nothing to report this week

Distrobuilder

Dqlite (RAFT library)

  • Nothing to report this week

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 has been released to Ubuntu 20.04
  • LXC 4.0.12 has been released to Ubuntu 21.10

Snap

  • Nothing to report this week
2 Likes