Weekly status for the week of the 20th April to the 26th of April.
The highlight of the past week was the release of LXD 4.0.1 which is the first bugfix release in the new 4.0 LTS series.
Also for LXD last week, some new features were added:
First, the ability to use push and relay modes when copying images between nodes has been added. This is useful when the node you want to copy the image to is not directly reachable between the two nodes.
On the VM side, we have now added cephfs support so that cephfs directories can now be shared with a VM via 9p (the same way that local directories are shared). Also for VMs, we have added basic NUMA layout matching, which now mimics the NUMA layout of the host in the guest for cases where
specific CPUs have been pinned. LXD also now announces itself in SMBIOS.
The proxy device has also gained support for allowing instances to access the published proxy port in NAT mode. This includes the local instance that the proxy device is attached to. It is achieved using hairpin NAT rules and enabling hairpin mode on the instance’s bridge port when needed. In order for other instances to be able to access the published proxy port the
br_netfilter kernel module needs to be loaded and enabled (which LXD does not do automatically to avoid passing bridge traffic through the host’s firewall which may cause unexpected network traffic blocking).
There have also been the usual set of bug fixes and improvements:
For VMs a race condition that was making
lxc restart intermittently fail has been fixed. The
lxd-agent has also had improvements to its systemd units to allow systemd to know when the lxd-agent has fully started and completed its initialisation. Allowing for other units to more reliably depend on it. There has also been a fix for the cloud-init templates generated by LXD to ensure that the default network device name is correctly recognised and configured.
For containers, a crash when starting an instance when using network priority has been fixed. A fix for cgroup memory controller detection has also been added.
On the storage side, a series of improvements have been added around the theme of ensuring that block backed volumes are created using the correct size, rather than the default size. For instance, now when VMs are migrated their volumes are re-created at the original size, rather than the pool’s default volume size on the target. Similarly, when creating a new block backed volume from a cached image volume, if the pool’s
volume.size setting has changed since the cached image volume was created, this is now recognised and the old cached volume is deleted and regenerated at the new size.
On the LXC side a couple of small fixes were added. First an issue that was causing netlink warnings to be logged by the kernel when using
ipvlan NICs was fixed. And an AppArmor policy tweak to allow systemd access to
/proc/sys/kernel/random/boot_id was also added.
A small change to silence errors when no memory limit is found was added.
A change to support the VM network interface template changed mentioned above for LXD was added to allow different default network interface names in cloud-init based on instance type.
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
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
- Various kernel work
- Stable release work for LXC, LXCFS and LXD
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.
- Add push and relay mode to image copy
- shared/simplestreams: Fix VM image preference
- VM: Adds cephfs disk support
- lxd/init: Improve error messages when failing to bind an address
- Proxy: Adds hairpin NAT rules
- VM: Wait for onStop when restarting
- lxd/instance/lxc: Don’t crash in setNetworkPriority
- Fixes for cloud VM images
- lxd/util: Tweak NetworkInterfaceAddress to only return global
- lxd/net/util: Updates comment on NetworkInterfaceAddress behaviour change
- shared/usbid: Use system database
- lxd-agent: Support for
- Storage: Regenerate cached image volumes when cannot be shrunk
- Proxy: Improves validation
- lxd: Updates snapshotProtobufToInstanceArgs to support instance type
- lxd/qemu: Match basic NUMA layout
- Storage ZFS: Delete volume on error in CreateVolumeFromCopy
- lxd-agent/main/agent: Adds comment about reason for systemd-notify usage
- Migration: Allow VM disks to be recreated at same size on target
- lxd/cgroup: Fix memory controller detection
- lxd/device/utils: Do not add the Ceph mon port if already present in /etc/ceph config file
- Storage: ZFS image volume regeneration when pool volume.size smaller than cached volume
- Make cephfs storage driver match disk device
- Announce LXD in SMBIOS for VMs
- share/usbid: Don’t print error when missing
- apparmor: Allow boot_id
- src/lxc/network: Fixes netlink attribute type 1 has an invalid length message
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.
- Nothing to report this week
- Included pci/usb databases
- Bumped to LXD 4.0.1