Weekly status for the week of 13th March to 19th March.
Introduction
The highlight of the past week has been the release of LXD 5.12. This release includes 2 new virtual machine related features, along with a whole host of bug fixes, as well as switching the base of the snap package to core22
(equivalent to Ubuntu 22.04).
Please see the release notes and release video for more information:
https://www.youtube.com/watch?v=9NO04i68kZQ
Additionally @stgraber has added a video covering the pci
device type:
https://www.youtube.com/watch?v=h3DZXbmsZHg
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
New features:
- Added VM generation ID support by way of the new
volatile.uuid.generation
instance configuration key. This can be used by the hypervisor to indicate to the guest OS that its place in time has moved backwards (such as when an instance is restored from a snapshot or backup).
Improvements:
- Added support for referencing and linking to specific configuration options in the documentation.
- Added support for using the full migration protocol when moving instances between cluster members, without having to copy the instance to a temporary name and the renaming at the end. This is a precursor to accommodating VM live migration.
- Improve migration error handling by running a control connection monitor go routine on the sending side as well as the receive side. If an error occurs on the receive side then the failure result is sent to the sending side and causes the sending go routines to be terminated, whereas previously it was possible for the sending side to get “stuck” running externally called sending processes (such as
zfs send
). - Changed the configuration of the managed
bridge
network’sdnsmasq
process so as not to use a negative DNS cache (i.e do not cache the failure to resolve a DNS name). This helps when certain DNS names are only resolvable intermittently (such as when the host is connected to a VPN which allows resolving internal DNS names). Previously if an instance attempted to resolve such an internal DNS name whilst the LXD host was not connected to the VPN, the result was negatively cached, and so the resolution continued to fail for some time even when connected to the VPN. - Use rsync for filesystem volume refreshing in volume-only mode, even for storage pools that support optimized transfer. This is because otherwise there are no previous snapshots to be used for efficient differential optimized transfer, and previously LXD had resorted to transferring the entire volume. Instead using rsync allows for only the changed files to be sent.
Bug fixes:
- Fixed several issues with the recently added ZFS block mode filesystem volume support, including adding resize support and fixing snapshot handling for the different supported filesystems.
- Fixed AppArmor issue that was preventing the use of VMs with MicroCeph, as it was unable to access the ceph.conf file.
- Fixed container CPU balancer to correctly consider that when a container is starting up (and so not yet considered fully “Running”) it is still a candidate to have its cgroup CPU limit settings applied if it has an init PID. This was causing CPU limits to not be applied on instance start up.
- Fixed an issue with intermittent incorrect listing of instances in a cluster (via API or via
lxc list
command). - Fixed an issue in SimpleStreams image handling where it was possible to write a zero length index cache file if the connection was interrupted.
- Fixed an issue with missing ZFS volume migration clean up handling on error.
LXC
Improvements:
- Switch from libsystemd’s dbus to dbus-1. This is to make static linking easier, as linking against libsystemd makes that a challenge because while it’s perfectly simple to do, distributions tend not to provide a libsystemd.a.
- Convert fcntl(FD_CLOEXEC) to SOCK_CLOEXEC.
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
- Config options
- Various zfs block mode fixes
- lxd/apparmor: fix AppArmor instance_qemu profile
- Doc: extension for terminal output
- instance: Add Generation ID support for Virtual Machines
- Instance: Use full migration protocol for intra-cluster instance moves
- Instance: Fix hang during migration if target member encounters an error
- lxd/devices: Updates deviceTaskBalance to check the container’s InitPID as running indicator
- API: Fix clustered instances list
- network: ask dnsmasq not to cache failed queries
- doc/devices/usb: add link to video and some explanation
- doc/images: link to Discourse post on LXD image servers
- Documentation: fixed typo
- Device: Introduce
io.cache
to disk config - Simplestreams: Don’t write zero length cache files in cachedDownload
- Storage: Add cleanup in ZFS createVolumeFromMigrationOptimized
- storage: Use rsync when refreshing filesystem volumes in volume-only mode
- lxd/instance/qemu: vmgenid isn’t supported on aarch64
LXC
LXCFS
- Nothing to report this week
Distrobuilder
- Nothing to report this week
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
- snapcraft: Transition to core22
- lxd: Bump to 5.12
- shmounts: Fix mount propagation bug
- edk2-vars-generator: Switch to new implementation
- nasm: Bump to 2.16.01
- ovn: Bump to 23.03.0
- sqlite: Bump to 3.41.0
- minio: Bump to 2023-02-27
- libtpms: Bump to 0.9.6