Weekly status for the week of the 14th March to the 20th March.
Introduction
This past week we have been focussing on finishing our roadmap items and preparing for the LXD 5.0 LTS release.
LXD
Improvements:
- The
ipv{n}.routes*
settings onbridged
NICs are now taken into account when usingsecurity.ipv{n}_filtering
so that packets from source addresses within the routes delegated to the NIC are allowed (where previously they were not). - Extend the output of the
lxc network info
command to show more info about the specific network (if available). - Add
--target-project
flag tolxc image copy
to allow copying an image into a specific project. - Add compact table format to
lxc
. - Switching to UUID based cloud-init
instance-id
that changes when an instance is renamed, when an instance NIC is renamed or the cloud-init config from the instance’s config changes to allow cloud-init to re-apply on next start. - Prevent concurrent snapshots taking place and temporarily skip auto expiring a snapshot if one is already taking place (to avoid go routine build ups if the underlying storage subsystem is slow/blocked).
- Use random authentication credentials by default for the local SSH SFTP listener used with
lxc file mount
when not usingsshfs
mode. Also support the ability to specify a specific username to use. - Don’t mask lack of cluster member heartbeat response in
lxc cluster ls
output in certain scenarios. - Introduce the concept of device pre-start checks and run them before starting any instance device to avoid having to revert all successfully started devices (a potentially expensive operation) should one device fail its pre-start check .
Bug fixes:
- Prevent white space in storage pool names.
- Fix SFTP connection authentication cookie usage.
- Create instance log directory if needed before starting
forkfile
to allow file operations on an instance that has never been started previously. - Fixed an issue that prevented
forkfile
from starting when the combined project and instance name was long enough to mean that theforkfile
unix socket path would be over 108 characters long. - Ensure that the HTTP upgrade headers in responses used for SFTP and DQLITE connections comply fully with the HTTP standard to allow easier third party integration.
- Only enable VM io_uring support on kernels >= 5.13.0 as before that io_uring support in the kernel was not sufficient for use by LXD (problems with many storage drivers in stacked storage layer environments).
Dqlite (Go bindings)
Improvements:
- Export
SnapshotParams
.
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.
- Prometheus & grafana integration with the LXD charm
- 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
- Allow ipv{4,6} routes when using bridged security.ipv{4,6}_filtering
- Prevent concurent snapshot and snapshot expiry for a volume
- Fix SFTP API issues
- Client: Simplify setting request headers from client settings
- Client: Replace httpHost with httpBaseURL to better indicate what it represents
- test: Fix container devices nic bridged filtering tests on recent versions of nftables
- client: Avoid connecting twice in rawSFTPConn
- lxd: Minor improvements to naming, errors and comments related to auto snapshot pruning
- Instance: Create log directory if needed before starting forkfile
- Cluster: Improve logging in triggerUpdate
- Extend
lxc network info
- lxc/file: Use random auth creds if no-auth and auth-user flags not specified
- Tests: Add function to wait for duplicate address detection
- doc: restrict docutils version to fix parsing of notes
- BGP fixes
- Youtube links
- VM: Only enable io_uring support on kernels >= 5.13.0
- lxd/cgroup/abstractions: Wrap parse errors to give context of problematic value
- Storage: Prevent white space in storage pool names
- Youtube links
- Add --target-project to lxc image copy
- UUID based cloud-init instance-id
- lxd/instance/lxc: Handle long forkfile socket paths
- lxd/cluster: Don’t mask lack of cluster response
- Instance: Run all device pre-start checks before starting any device
- HTTP: Ensure Connection: Upgrade header is returned when LXD upgrades a connection
- Device: Adds concept of a pre-start check to devices and pushes storage pool availability check into disk device
- lxc/utils/table: add compact table
- LXD: Switch to transitional IsNotFoundError() helper function
LXC
- Nothing to report this week
LXCFS
- Nothing to report this week
Distrobuilder
- Nothing to report this week
Dqlite (RAFT library)
- Nothing to report this week
Dqlite (database)
- Nothing to report this week
Dqlite (Go bindings)
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
- Uploaded LXCFS 5.0.0 to Ubuntu 22.04
Snap
- sshfs: Handling improvement
- hooks: Better cleanup of LXCFS
- lxd: Cherry-pick upstream bugfixes