Weekly status for the week of the 26th of July to the 1st of August.
Introduction
This past week the LXD team landed two new features from our roadmap; cluster member evacuation and the new disaster recovery tool, as well as several improvements and bug fixes for existing features.
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 cluster member evacuation support. This tool is useful when performing maintenance of a server in a LXD cluster. The
lxc cluster evacuate <name>
command can be used to trigger a migration of all suitable instances existing on the specified cluster member to different members in the cluster (before the maintenance is started) and then can trigger the migration of the instances back again after the maintenance is completed. Please see [LXD] Cluster member evacuation for more info. - Added new disaster recovery tool. This tool is accessed using the
lxd recover
command. It is an interactive command that aids in the recovery of instances and custom volumes that still exist on a storage device after the LXD database has accidentally been deleted. Please see [LXD] New disaster recovery tool for moe info.
Improvements:
- USB GPU support - this adds support for machines with DisplayLink adapters.
- Interactive
lxd init
now ends cleanly if STDIN is closed rather than looping for ever. - Added
lxc console
andlxc rename
instance names to bash auto completion. - Improve error message when attempting to access/edit config for an instance device that is part of a profile to clarify that profile inherited devices cannot be modified directly from the instance. This allows a user to differentiate between a device that truly doesn’t exist compared to one that exists but is applied from a profile.
Bug fixes:
- Fix incorrect full snapshot name (i.e
<instance>/<snapshot>
) being written to the backup index file for custom volumes. Instead (as per the API docs) it should only be the snapshot name. Also added a fix to allow previously erroneous exports to still be importable in the future.
Distrobuilder
Improvements:
- Added zstd compression support.
Dqlite (RAFT library)
Improvements:
- Don’t send Snapshots to offline nodes. This reduces CPU load in some Dqlite clusters.
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
- Add cluster member evacuation
- New disaster recovery tool
- shared/api: Fix crash on missing event requestor
- CLI: Handle read errors (such as EOF) to avoid infinite loops
- lxc: Hide built-in completion command
- Add USB GPU support
- Rework IsOneOf validator
- Generator: Cleanup
- doc/cloud-init: Update for current images
- New disaster recovery tool (custom volume recovery)
- Added console and rename to lxd names auto complete
- storage: Unify various filesystem detection functions into new filesystem package
- lxd/instance/drivers: Add ErrInstanceIsStopped
- Clarify why a profile device cannot be modified on an instance
- Storage: Fix incorrect (full) snapshot name being written to Name field in custom volume snapshot backup index
- lxd/cgroup: Fix handling of non-systemd cgroup2
- Generator: Add interfaces
- doc/clustering: Mention evacuate/restore
- Generator: GetOne/Many instead of Get/List
LXC
- conf: devpts rework
- Fix typos
- devpts: move setup before pivot root
- string_utils: cast __s64 to long long signed int
- conf: move remaining setup before pivot root
- conf: rework console setup
- terminal: handle kernel without TIOCGPTPEER
LXCFS
- Nothing to report this week
Distrobuilder
- Update doc
- Add more logging
- Hide the
completion
command - Update compression code
- Update ALT url and verification files
Dqlite (RAFT library)
Dqlite (database)
- Nothing to report this week
Dqlite (Go bindings)
- 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
- Nothing to report this week