Weekly status for the week of 15th January to 21st January.
Introduction
The highlight of the past week was the release of pylxd 2.3.2. This is the first release of the python SDK client package since September 2022 and contains lots of fixes. For more information please see the release notes.
In other SDK client related news, the Go SDK client has been released under Apache-2.0 (the same as pylxd is).
The images:
remote has been been removed from the lxc
CLI client as the LinuxContainers.org image server will shortly no longer be available for LXD users. Please see An update on the licence change and community image server for more information.
LXD
Improvements:
- Back in June 2023 with the release of LXD 5.15 a new feature called CSM (Compatibiltiy Support Module) mode was introduced which allowed booting non-UEFI VMs to aid in running legacy workloads. This was achieved by using the EDK2 firmware’s CSM mode to boot Seabios to run the guest. As of December 2023 the CSM support in the upstream EDK2 firmware has been removed and so to ensure that we can continue to use EDK2 in the future we have taken the decision to switch to booting Seabios directly when
security.csm
mode is enabled. This change has also allowed us to resolve some issues we were seeing with booting some Linux OSes due to a combination of their grub and kernel having EDD enabled. - The
/1.0
API endpoint now includes an indication as to the instance types that the host supports. E.g.
lxc query /1.0 | jq '.environment | {server_name, instance_types}'
{
"server_name": "server-1",
"instance_types": [
"virtual-machine",
"container"
]
}
- Introduces new server configuration keys to provide the SSL CA and client key pair to access the OVN databases (from Incus). The new configuration keys are
network.ovn.ca_cert
,network.ovn.client_cert
andnetwork.ovn.client_key
. - Stopped instances are now included in the LXD metrics API endpoint.
- Stop using
--checksum
option for rsync filesystem refreshes. This speeds up refreshes by avoiding needing to read files off the disks that have not been modified on either side (according to their modified time/size). This was originally added because rsync version 3.1.1 didn’t have support for checking the files modification times on nanoseconds granularity. This has since changed and is no longer needed. - The deprecated instance level
limits.network.priority
setting has now been removed. It only worked with cgroupv1 and the same functionality can now be specified on a per NIC device basis using thelimits.priority
setting.
Bug fixes:
- Fixed a regression in server side when deciding whether to use instance server side move mode.
- Fixed a bug where a stalled file transfer from an instance would hold open the exclusive lock for that instance preventing snapshots from being taken for a long time. File transfer connections now enable TCP keepalives to detect stalled connections and release the lock sooner.
- Fixed a bug where
snapshots.pattern
for custom volumes was not respected when creating a manual snapshot without specifying a new snapshot name. - Fixed a bug that prevented pushing a file to a stopped unprivileged container which has an additional idmapping set via
raw.idmap
when not using idmapped mounts. - Detect when a live migration of an instance with custom volumes attached is requested and fail cleanly early on rather than failing abruptly mid-way through the migration.
- Fixed bug where to restore a custom storage volume from a snapshot fails on Ceph RBD backed volumes if either
xfs
orbtrfs
is selected forblock.filesystem
.
All changes
The items listed below is all of the work which happened over the past week and which will be included in the next release.
LXD
- lxd/init: Add support for storage volumes in preseed init
- Show mounted status of disks and partitions
- doc/projects: clarify restricted.devices.disk
- Allow configuring OVN SSL settings through server configuration
- Add metrics for stopped instances
- lxdmetadata: support for multiple entities comments
- feat: annotate codebase for storage config options
- Indicate supported instance types when querying /1.0
- Make it clear that CCW devices (s390x) don’t have device bus nor bus address
- Fix typos in code comments and make it clear that
zfs.blocksize
is in bytes - lxc/move: Only use server-side move when dealing with a single server
- Use
cloud-init
to enablelxd-agent
on Ubuntu releases before20.04
- Tighten up QEMU Apparmor profile
- Makefile: stop pinning openfga/go-sdk
- doc: decode the objects.inv file
- Stop dead client connection from blocking instance snapshot / remove
- GitHub push event base ref
- Task: Remove unnecessary calls to defer g.mu.Unlock()
- doc: Add paragraph on how to delete images
- lxd: Add support for apparmor unconfined profile mode
- test: Add exec exit code test
- Use rsync flags consistently for local and remote copy
- Apply the
snapshots.pattern
option for manual custom volume snapshot - shared/idmap: handle “both” idmappings in raw.idmap properly
- Clarify optimized volume refresh
- build(deps): bump golang.org/x/oauth2 from 0.15.0 to 0.16.0
- License Go SDK client as Apache-2.0
- Allow re-enabling security.devlxd (stable-5.0)
- Prevent live migration of instances with custom volumes
- Remove deprecated instance config option limits.network.priority
- lxd/instance/qemu: Start using seabios as CSM firmware
- Removes AGPL imports from shared package
- test/lint: Always fetch the target branch if it cannot be found.
- Ceph RBD: Restore the filesystems UUID on the volume
- doc/api-extensions:
security.devlxd
applies to both containers and VMs - Remove
images:
remote - README: provide links to some recommended managements tools for LXD
- Force SeaBIOS instead of OVMF-based firmware & some firmware lookup logic changes
- doc: enable multiprocessing for pyspelling
LXD Charm
- Update loki lib and drop the obsolete juju_topology one
- Replace
black
,flake8
andisort
byruff
- Small fixes to the
pyproject.toml
- github: don’t prompt for confirmation when removing an app
Distribution work
This section is used to track the work done in downstream Linux distributions to ship the latest LXD as well as work to get various software to work properly inside containers.
Ubuntu
- Nothing to report this week.