Weekly status for the week of the 28th February to the 6th March.
Introduction
Last week the LXD were gathered together for the first time since March 2020 and were focussed on our roadmap items. Two such items were merged; Degraded startup for storage pools and support for remotely mounting an instance’s filesystem on a local system using the lxc file mount
command.
Additionally @stgraber has added a video on using the LXD metrics exporter with Prometheus and Grafana:
https://www.youtube.com/watch?v=EthK-8hm_fY
LXD
New features:
- Degraded startup for storage pools: Previously if a storage pool could not be initialised then LXD startup failed, even if other storage pools were available. This often complicated recovery as if the storage pool could not be manually restored then it would require manual modification of the LXD database to get it running again. Now LXD will detect if a storage pool is not available on start up, and as long as there are no storage patches that need applying, will allow LXD to startup (albeit it with instances and custom volumes on those storage pools being unavailable). Furthermore LXD will continue to periodically try and initialise the storage pool in the background and if it becomes available, and instances that were due to be auto-started when LXD started will then be started up.
- File streaming API and
lxc file mount
command: Building on our recently addedforkfile
feature that simplified and improved the performance of accessing files from instances, the new file streaming API brings provides an SFTP share of the instance’s filesystem to the LXD Go client package. Then using that new functionality we now provide thelxc file mount
command that will usesshfs
to mount the SFTP share on the local system running thelxc
command, even if the instance is on a different server. All communication is done using the existing LXD API, so no additional ports or services needed. We plan to add support for providing a local SSH SFTP server from thelxc
command soon for scenarios wheresshfs
isn’t available.
Improvements:
- Improve VM image secure boot not supported error by indicating which setting on the instance needs disabling to allow the image to be used.
- Adds the Grafana dashboard source to the git repository.
- Add support for recent versions of OVN
ovn-nbctl
command to detect the multiple routing table output format for static routes list. - Allow
rw
remount of/run
in AppArmor profile as some distros require this.
Bug fixes:
- Fix a regression in image unpacking that caused only part of the image to be unpacked which was introduced with the recent AppArmor protection of unpack commands.
- VM io_uring regression fixes: When QEMU io_uring support was added, this caused some issues when using QEMU on storage pools that did not support Direct I/O or were loop backed. These scenarios are now handled and io_uring is disabled for those volumes.
- Fix errors caused by multiple identical BGP prefixes being added but not being able to be removed.
Dqlite (RAFT library)
Bug fixes:
- Fix assert crash in uv_append by checking if segment wasn’t closed in write request cb.
LXD Charm
Improvements:
- Tell
juju deploy
to fetch charms from the Charmhub.
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 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.
- Reworked cluster event distribution mechanism
- New unified P2C/P2V tooling
- Token based remote add
- Network ACL log API
- 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
- Storage: Degraded startup support for storage-pools
- Image: Fix regressions in image unpack
- VM: Fix VM support detection regression
- Disable io_uring on loop pools
- lxd/apparmor: Allow rw remount of /run
- Add the Grafana dashboard (15726)
- Shared: Adds tcp package for setting timeouts on TCP connections
- Fix bad help message on storage volume list
- Instance: Add mount support via SFTP
- shared: Update ExtractConn to detect net.TCPConn
- Wrap errors correctly and drop github.com/pkg/errors
- Warnings: Fix warnings removal on network delete
- Network: Don’t refresh BGP prefixes during forward update
- lxd/bgp: Fix RemovePrefixByOwner when multiple matches
- VM: Disable io_uring support on loop backed pools
- Improve network ACLs documentation
- Storage: Try auto starting instances when storage pools become available
- Improve network forwards documentation
- VM: Improve secureboot needs to be disabled error
- Device: Detect disk pool VM mount options using single call to os.Stat
- Network: Update OVN LogicalRouterRoutes to support recent versions of ovn
- seccomp: pass a PID FD to process_still_alive
LXC
- Nothing to report this week
LXCFS
- Nothing to report this week
Distrobuilder
- Nothing to report this week
Dqlite (RAFT library)
Dqlite (database)
- Nothing to report this week
Dqlite (Go bindings)
- Nothing to report this week
LXD Charm
- Tidy up tox.ini a bit
- Tell
juju deploy
to fetch charms from the Charmhub - Drop charmhelpers from the requirements.txt
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
- ovs: Bump to 2.17.0
- ovn: Bump to 21.12.0
- lxd: Cherry-pick upstream bugfixes