Weekly status for the week of the 2nd of November to the 8th of November.
Introduction
Last Friday the LXD team presented their 6 month roadmap plan which is available to watch here:
https://www.youtube.com/watch?v=sVWl6O-XAyY
The slides detailing the plans are also available.
LXD
This past week we have been focusing on fixing bugs and improving the documentation.
The OVN networking driver gained the ability to use a bridge
network uplink that uses an openvswitch bridge rather than a native bridge (bridge.driver=openvswitch
).
Virtual machines now convert (and round) the limits.memory
setting to mebibytes when setting the live memory limit. This now aligns with the existing conversion that was happening at boot time and fixes an issue that prevented fully dynamically growing the memory back to the boot time memory size.
A fix was also added to improve the resilience of the newly added virtiofs support for VMs when passing a directory share into a VM guest. LXD uses the virtiosfsd
process on the host to expose the directory to the VM guest, and there was a non-zero time delay between starting that process and the socket file being created (which Qemu requires to start). So we now wait for longer for that socket file to appear and fail to start with a clear error message if it doesn’t appear for some reason.
The documentation around limits.memory.swap
has been clarified (as well as a a related and more detailed explanation of swap memory reporting for containers in the LXCFS repo, see below).
The storage subsystem saw quite a bit of work on edge case bugs (and will continue to receive additional work this coming week too).
Firstly, when creating a new storage pool the default storage pool size calculation is now aligned to the same logic that is used when creating a storage pool as part of the lxd init
command.
Secondly, the logic used when creating (and recreating) optimised image volumes (on storage pools that support that feature) has been refreshed to allow VM instances to be created with root disks smaller than the pool’s cached image volume. This can occur when creating a VM that uses a profile with a root
disk device that has a size
property specified.
Finally on the storage side, for the LVM storage pool driver, the lvm.thinpool_name
setting was changed to be a so-called “cluster member local” key, meaning that when using LVM storage pool in a cluster environment, each cluster member can use a different value for this key.
There has also been a focus on improving our support for cgroupv2, by moving all hardcoded cgroup references into an abstraction that we can then use with automated testing to ensure that the cgroup features work with different cgroup versions.
LXC
Work for LXC this passed week focused on improving support for seccomp, specifically making the seccomp notifier non-blocking.
LXCFS
A long running issue (on and off) was the way that LXCFS emulates swap (both used and available) for a container in various different scenarios. There isn’t a way to achieve exact parity compared to the way swap is reported on the host with the functionality available in the kernel’s cgroups. So compromises have had to be made.
The behaviour and explanations for the compromises made have now been documented here.
LXCFS has then been modified to align with the policy described in that document.
Youtube channel
We’ve started a Youtube channel with a couple of live streams so far.
You may want to give it a watch and/or subscribe for more content in the coming weeks.
https://www.youtube.com/channel/UCuP6xPt0WTeZu32CkQPpbvA
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
- Remade all typo fix changes and reapplied patch. (Continuation of: Pull request: #8022)
- Network: Adds support for using uplink bridges that have bridge.driver=openvswitch for OVN networks
- lxd/virtiofs: Fix handling of config drive
- Storage: Allow instances to be created with root disks smaller than pool’s cached image volume
- VM: Call MountInstanceSnapshot when mounting vm snapshots
- Storage: EnsureImage and CreateInstanceFromImage improvements on size management
- doc/instances: Rephrase limits.memory.swap
- Align storage pool size defaults
- VM: Converts all supplied memory byte values to mebibytes for comparison
- lxd/rbac: Fix URL encoding
- lxd/cgroup: Fix V2 detection/handling
- Cgroup handling improvements
LXC
- seccomp: fixes
- Add missing free for monitor_pivot_dir.
- attach: silence stdio permission adjust warnings
LXCFS
- meminfo: show host swap values when no limit or equal limits are set
- README: clarify SWAP
- Rework swap memory management
Distrobuilder
- 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
- qemu: Tweaked source code retrieval (git.qemu.org issues)