Weekly status for the week of the 6th April to the 12th of April.
Introduction
The highlight of last week was the release of LXCFS 4.0.2 LTS.
On the LXD front the past week has been focused on improvements and bug fixes.
The operating system information is now available in the resources API.
The lxc
CLI tool now sorts using natural sorting order.
LXD Storage:
We now create any missing snapshot mount directories before attempting to mount. Whilst the new storage layer creates these directories at snapshot create time, the old storage layer did not and so this caused issues when trying to mount old snapshots, such as when doing a restore or backup operation.
For LVM pools using a loop file, we now activate all of the volumes in the pool when mounting the pool. We previously did this just for normal non-loop volume groups, however this caused issues when using LVM loop pools inside the SNAP package.
We have improved our snapshot usage feature, making the reported values more consistent across the different storage drivers.
For directory pools where project quotas were supported, new volumes were having a default quota of 10GB enforced. This has now been removed as non-block storage drivers do not have any default quota.
For ZFS pools, we now ignore any .zfs
directories and consider the directory empty still. This prevents failed starts when the snapdir=visible
setting is enabled.
An issue with snapshot migration when upgrading LXD has been fixed.
LXD Cluster:
A recovery command to remove leftover raft node has been added.
LXD Network:
Improvements for validation of sysctl settings when using routed with VLAN have been added so that the sysctl settings on the VLAN interface rather than the parent interface are checked.
Support for Intel i350 cards and newer versions of the ip
tool have been added when using SR-IOV virtual functions.
We now push any custom MTU settings from managed networks in the DHCP response to the instances.
The Managed
field in the NetworksPost
structure has been removed, as this field was never modifiable from the API.
We have added documentation for getting LXD to work with default firewalld configuration in Fedora.
LXD VM:
An issue preventing migration of VMs with snapshots when using the ZFS storage driver has been fixed. And improvements to the cleanup procedure when a migration fails have been added to prevent lock ups.
LXC:
On the LXC front and issue that prevented IPVLAN Layer 2 mode working has been fixed. In addition to that there was an improvement added to lxc-user-nic
to allow it to run when the group name was not found. There was also several cgroup improvements added to better support cgroupv2 systems.
LXCFS:
An improvement to the way LXCFS reads /proc/meminfo
has been added to avoid reading the wrong value when two values have the same prefix.
snap:
The LXD snap has been refreshed quite a few times with cherry-picked bugfixes from LXC, LXCFS and LXD as well as seen updates to fix some longstanding issues including lxd.migrate
hanging, cleanup of the lxcfs mount namespace, better process tracking as well as adding a number of utilities.
The LXD snap is also being transitioned from core
to core18
, replacing its old 16.04 based with an 18.04 one.
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
- Add recovery command to remove leftover raft node
- Increase timeout when calling dqlite.Client.Add() to join the cluster
- Storage: Snapshot usage
- Fix typos
- Storage: Create snapshot mount path before mounting
- lxd/storage/lvm: Always call vgchange on mount
- lxd/patches: Fix snapshot migration
- Storage: ceph snapshot usage
- Add OS information to /1.0
- Tweak sorting in CLI
- lxd/main: Move forkzfs mntns to cgo
- doc/networks: Adds note about firewalld and DHCP/DNS
- NIC Routed: Improves VLAN validation of sysctl settings
- Storage: VM migration fixes
- NIC SR-IOV: Updates networkGetVirtFuncInfo to use json output from ip tool
- doc: Add missing os_api extension
- Storage Dir: Removes default project quota
- forkexec: mark fd cloexec so the attaching process doesn’t inherit it
- forkexec: close all inherited fds
- forkexec: log unexpected fds
- lxd/daemon: Ignore .zfs in volumes
- lxd/network: Push MTU over DHCP
- Drop invalid
Managed
field from NetworksPost
LXC
- cgroup isolation: handle devices cgroup early
- start: ensure all file descriptors are closed during exec
- lxc_user_nic: fixes
- network: Make it possible to set the mode of IPVLAN to L2
- src/lxc/network: ipvlan comment and code style tweak
- fixes
- lxc-update-config: Fix bad handling of lxc.logfile
- tests/no-new-privs: Don’t mess with /etc/lxc
- cgroups: ignore legacy limits on pure cgroup2 systems
LXCFS
Distrobuilder
- 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
- Updated LXC to 4.0.1
- Updated LXCFS to 4.0.2
- Cherry-picked LXC bugfixes
- Cherry-picked LXD bugfixes
- Cherry-picked LXCFS bugfixes
- Added a removal hook to cleanup broken systems
- Added logic to cleanup the LXCFS mount namespace
- Fixed bad library path on armhf
- Added a
lxcfs.pidfd
config option - Added qemu VGA bios and keymaps
- Added the
iw
command for Wifi device passthrough - Fixed cleanup logic in
lxd.migrate
to deal with hangs on package removal - Switched
candidate
to core18