Weekly status for the week of the 23rd March to the 29th of March.
Introduction
The highlight of this past week was the release of LXC 4.0 LTS!
On the LXD side of things, several new features and a breaking change were added:
- As part of getting ready for the LXD 4.0 release, we have dropped support for the deprecated
container-only
flag from the CLI . - We now support exporting and importing virtual machine instances, for both generic and optimised formats (where supported by the underlying storage driver). As part of this there have been improvements to the index file generated in the tarball to allow faster restorations for containers as well.
- The instance disk state report will now report disk usage for snapshots and custom volumes. This also includes a fix for reporting BTRFS usage correctly.
- The ability to edit clustering roles of a node has been added.
- The
routed
NIC type has always allowed multiple IPs to be added to a single device interface. Recently however we added support for allowing multiplerouted
NIC devices to be attached to an instance. This was achieved by adding theipv4.gateway
andipv6.gateway
config keys, which default toauto
but can also be set tonone
which will prevent the automatic default gateway route from being added inside the instance. This past week we have expanded on that by adding the ability to specify host-side veth interface IP addresses, so that additional devices can have a well-know next-hop address on the host to use with custom routes added inside the container. This can be controlled using theipv4.host_address
andipv6.host_address
device config keys. - The
ipvlan
NIC type has also gained support for multiple NICs being attached to same instance using the sameipv4.gateway
andipv6.gateway
config keys asrouted
NIC type being set tonone
, thus preventing the automatic default gateway being added on additional NICs.
Several bugs were also fixed:
- Emit a lifecycle event on user shutdown.
- Fixes ZFS deleted image block volume restoration which was preventing VM creation in certain circumstances.
- Fixes custom volume project rename patch which was preventing LXD start when custom volumes had snapshots.
- The API exec route has added protection against client reconnect using old token which could crash LXD previously.
- Container exec rework to fix cgroupv2 issues.
LXC has also seen a lot of work going into getting exec working reliably on cgroupv2 and various kernels, compilers and C libraries.
In addition to that, an issue that was preventing containers being destroyed that contained immutable files has been fixed. A fix was read only bind mounts was also added.
On the distrobuilder side, several improvements have been added to make the VM lxd-agent
more resilient during VM start up.
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: https://github.com/lxc/lxd/labels/Easy
You can also find a slightly longer, more detailed list here: Contributing to LXD
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.
- Virtual machine support
- Distrobuilder virtual machine support
- Storage database cleanup/rework
- 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
- VM: Backup
- Disk usage for snapshots
- lxd/storage/drivers/btrfs: Fix quota
- Backup: Adds OptimizedStorage and Type fields to index.yaml
- lxd/storage/drivers/btrfs: Don’t destroy qgroups
- Storage: Moves functions in generic.go to generic_vfs.go
- lxd/instance/drivers: Add custom volumes to disk state
- Storage: Pre-VM support backup improvements
- lxd/instance/drivers: Fix lxd-agent running order
- Drop deprecated container-only
- lxd/storage/zfs: Fix deleted VM images restoration
- Storage: Backup checks
- Storage: Ignores snapshots rename renaming custom volumes
- lxd/containers: Emit lifecycle event on user shutdown
- Exec: Adds protection against clients reconnecting after exec has started
- Add ability to edit clustering roles
- NIC Bridged: Allow use of security.ipv6_filtering when no IPv6 allocation available
- cgroup/init: close controllers file
- Typo & doc fixes
- NIC Routed: Host addresses for multiple NIC support
- NIC IPVlan: Adds support for multiple NIC devices
- NIC Routed: Sets accept_ra=0 on host interface
- More routed nictype fixes
- forkexec: rework
- forkexec: tweak
LXC
- lxc-update-config: handle lxc.rootfs.backend correctly
- utils: allow removal of immutable files
- conf: fix read-only bind mounts
- lxc-download: Pre-release bump of compat
- make dist: add missing files
- [lxc.service] Starts after remote-fs.target to allow containers relyi…
- tree-wide: fixes
- cgroups: fix attaching to the unified cgroup
- conf: rework and fix leak in userns_exec_1()
- tree-wide: fixes
- attach: fixes
- conf: simplify userns_exec_minimal()
- cgroups: use hidden directory for attaching cgroup
- cgroups: please compilers
- monitor process exited by signal SIGKILL, clean cgroup resource by th…
- tree-wide: fixes
LXCFS
Distrobuilder
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
- LXCFS 4.0.1 has been uploaded to Ubuntu 20.04
- The LXD agent loader package is now included in server and cloud images
Snap
- Released LXD 3.23 to stable
- Updated to LXC 4.0 LTS
- Cherry-picked a number of LXC and LXD bugfixes