Weekly status for the week of the 19th of July to the 25th of July.
Introduction
This past week we continued on the ongoing project work and also landed several improvements and fixes in LXD.
In addition to that the release notes for the 3 LTS releases that were made the previous week have been published:
The LXD team is hiring
The LXD team at Canonical is currently looking for a Go software engineer to join our distributed team of engineers. We’re looking for candidates anywhere in Europe or the Americas!
All LXD positions are 100% remote with some travel for internal events and conferences.
LXD
New features:
- Added
--format
and--all-projects
additional flags to thelxc monitor
command.
Improvements:
- Improve
bridged
NIC duplicate MAC & IP assignment check logic (to take into accountparent
,network
andvlan
properties). - Improve the swappiness calculation with regards to
limits.memory.swap.priority
so that maximum priority should be default swappiness (60). - Improve daemon startup logging to use contextual logging more and to increase the log level of cluster start up upgrade wait loops to make it visible that LXD is waiting for another cluster member to be upgraded in the default log level.
- Improved
lxc
default config file handling so that if~/.config/lxc/config.yml
exists, but is empty, then use default remote, rather than providing no default remotes. - Instance config validation is now validated based on instance type, meaning that certain instance type specific config keys cannot be set on an instance of a different type.
Bug fixes:
- Fixed a regression in the recent change to
cluster.https_address
. It has now been relaxed to allow DNS names again, as this was checked and is supported by the underlying dqlite library. - Fix rare crash when querying PCI devices in a VM during VM initialisation.
- Fix possibility of file handles leaking into QEMU VM process from LXD’s process if an unrelated container’s filesystem is being UID remapped during VM start. This was detected in our tests as it was causing device cleanup issues when the container was stopped before the VM.
- VM volatile keys for UUID and Vsock ID are now written to the backup file at start up to ensure backup file accurately represents last-start config.
LXC
Improvements:
- Simplify detection of whether BPF is supported.
- When setting up a TTY LXC now handles an existing ttyN file without an underlying device.
Bug fixes:
- Fix regression of legacy cgroup handling.
Distrobuilder
New features:
- Added busybox image support.
Improvements:
- Newer systemd support and refactoring.
Dqlite (Go bindings)
Improvements:
- The time it takes to output rows from the shell command has been reduced 120x by using Go’s
strings.Builder
rather than inefficient concatenation of strings.
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.
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
- NIC: Improve bridged NIC duplicate MAC/IP assignment checks
- lxd/node: Relax constraint on cluster address
- QMP: Fixes potential crash in QueryPCI
- lxd/instance/lxc: Fix swappiness calculation
- Support for Requestor field in lifecycle event log
- Daemon: Improve start up logging
- Storage: Add ability for volume mount to probe block backed volumes for their filesystem type
- Instance: Check instance is actually stopped, and not in an error state when stopping
- Always pass O_CLOEXEC in cgo open
- LXC: Improvements to default config handling
- lxc/monitor: Add more options
- Validate instance config on a per-instance-type basis
- VM: Update start time volatile keys before backup file is written
- Storage: Naming and code reorganisation tweaks
LXC
- bpf: simplify detection if BPF is supported
- lxc_setup_ttys: Handle existing ttyN file without underlying device
- Fix legacy cgroup devices
LXCFS
- Nothing to report this week
Distrobuilder
- sources: Fix gentoo source variant check
- Update go modules
- Use cache directory in sources
- sources: Fix unmount for rhel based distros
- sources: Add busybox
- systemd: Add systemd-sysusers workaround
- archlinux: Switch test to official mirror
- Fix CentOS raw image
- sources/openwrt: Fix directory name
- vm: Fix unmount
- sources/busybox: Fix mkdir call
- sources: Update busybox
Dqlite (RAFT library)
- Nothing to report this week
Dqlite (database)
- Nothing to report this week
Dqlite (Go bindings)
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
- hooks: Added cleanup for snap.lxd.workaround on removal