Weekly status for the week of the 3rd February to the 9th of February.
Introduction
The past week has seen the new ceph
driver land for LXD. This is the last of the new storage framework drivers, and means that we can begin to remove the old storage layer entirely from the LXD code base. A ceph related bug was also fixed that was preventing RBD unmapping when a container was being stopped.
Also on the storage framework front, a database patch has been added to ensure that LVM storage pools have an lvm.vg_name
config property defined, and if not then set it to the storage pool name. The reason for this is that some older pools created using the old LVM driver did not define this setting by default. Additionally a fix for the ZFS driver was added that tweaks the argument ordering used for the internal ZFS commands to fix an issue where some versions of the ZFS tools required arguments specified in a particular order.
Several fixes were added to allow LXD to be built on CentOS 7 (which uses an older version of glibc).
On the VM front several optimisations have been added; firstly, the network mode used for bridged
, p2p
and macvlan
has been changed to Qemu’s vhost_net
as this is the current recommendation and should result in a significant performance improvement for networking. Secondly we have enabled discard mode on virtio-scsi
so that file backend storage devices can shrink as blocks are released in the VM, returning them to the host OS and SSD backing devices can also better manage their blocks. A bug has also been fixed in the lxc exec
command for VMs where if a terminal window was closed then the websocket and connected lxc
process would not properly disconnect, leaving hanging lxc
processes. VMs that are not running the lxd-agent
and are using bridged
NICs can also now benefit from showing their IPv6 address in the lxc list
output as we now interrogate the IPv6 neighbour entries on the host OS and use the address that matches the VM’s MAC address if the host knows about it.
Also on the networking front, initial support for tying NIC devices to their associated networks has been added. For bridged
NICs you can now specify a network
property that is the name of the LXD managed bridge network. This replaces the nictype
, parent
, mtu
and maas.subnet.*
config keys, as these settings are then inherited from the linked network
. A bug was fixed with bridged
NIC IPv4 filtering mode where if IPs were defined statically and the instance was connected to an unmanaged bridge, when the container was stopped not all of the ebtables
filter rules were cleaned up.
On the LXC front, two bugs in the config parser were fixed.
FOSDEM
Part of the #LXD team was attending FOSDEM a week or so ago, running the containers devroom and also presenting on a variety of topics:
- Supervising and emulating syscalls (@brauner)
- Running full Linux systems in containers, at scale (@stgraber)
- dqlite: High-availability SQLite (@freeekanayaka)
- LXD for mixed system containers and VM workloads (@stgraber)
All video recordings are now available and can be found through the links above!
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
- 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 Ceph storage driver
- Network: Adds “network” property to bridged NIC device
- Define MS_LAZYTIME for compatibility with older glibc
- VM optimization and fixes
- Bridged NIC: Load br_netfilter kernel module when using IPv6 filtering
- Storage: Adds updateFromV23 DB patch to ensure lvm.vg_name
- lxd/storage/zfs: Fix argument ordering
- unix hotplug: skip devices without associated devpath or major/minor
- lxd/storage: Add LocalStructure to Info
- lxd/networks: Consider IPv6 neighborhood entries
- Websocket: Uses gorilla helper functions rather than lower level functions
- lxd/main_checkfeature: improvements
- lxd/main_checkfeature: don’t depend on kcmp header
- lxd/device: Async CEPH unmap
- Device: NIC network property tweaks
- VM: Exec hanging fixes
- Device: Fixes ebtables filter leak with Bridged NIC on umanaged bridge
- Project: Adds InstanceParts() function for separating project prefixed Instance name
- Device: Removes functions from bridged NIC that are provided by dnsmasq package
- lxd/util: Fix IP/host tests on other distros
- Unlock when isLeader failure
LXC
LXCFS
- Nothing to report this week
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
- LXD 3.20 was released to the stable channel
- Several bugfixes were cherry-picked into the stable snap