4 min read

A few days ago, the Linux Daemon (LXD) team announced the release of LXD 3.15. The major highlight of the release is the transition of LXD to the dqlite 1.0 branch, which will yield better performance and reliability to cluster users and standalone installations. 

Linux Daemon (LXD) is a next-generation system container manager which uses Linux containers. It’s a free software, written in Go and developed under the Apache 2 license.

LXD 3.15 explores new features including hardware VLAN and MAC filtering on SR-IOV, new storage-size option for lxd-p2c, Ceph FS storage backend for custom volumes and more. It also includes many major improvements including DHCP lease handling, cluster heartbeat handling, and bug fixes.

What’s new in LXD 3.15?

Hardware VLAN and MAC filtering on SR-IOV

The security.mac_filtering and vlan properties are now available to SR-IOV devices. This will prevent MAC spoofing from the container as it will directly control the matching SR-IOV options on the virtual function. It will also perform hardware filtering at the VF level, in case of VLANs.


New storage-size option for lxd-p2c

A new –storage-size option has been added in LXD 3.15. When this option is used along with   –storage, it allows specifying the desired volume size to use for the container.

Ceph FS storage backend for custom volumes

Ceph FS is used as a storage driver for LXD and its support is limited to custom storage volumes. Its support includes size restrictions and native snapshot when the server, server configuration, and client kernel support those features. Ceph FS also allows attaching the same custom volume to multiple containers at the same time, even if they’re located on different hosts.

IPv4 and IPv6 filtering

IPv4 and IPv6 filtering (spoof protection) enable multiple containers to share the same underlying bridge, without worrying about spoofing the address of other containers, hijacking traffic or causing connectivity issues.

Read Also: Internet governance project (IGP) survey on IPV6 adoption, initial reports

Major improvements in LXD 3.15

Switch to dqlite 1.0

After a year of running all the LXD servers on the original implementation of distributed sqlite database, LXD 3.15 has finally switched to its 1.0 branch. This transition reduces the number of external dependencies, CPU usage and memory usage for the database. It also makes it easier to debug issues and integrate better with more complex database operations when running clusters. 

Reworked DHCP lease handling

In the previous versions, LXD’s handling of DHCP was pretty limited. With LXD 3.15, LXD will itself be able to issue DHCP requests to the dnsmasq server based on what’s currently in the DHCP lease table. This allows the user to manually release a lease when a container’s configuration is altered or a container is deleted, all without ever needing to restart dnsmasq.

Reworked cluster heartbeat handling

With LXD 3.15, the internal heartbeat (the list of database nodes) extends to include the most recent version information from the cluster as well as the status of all cluster members. This means that only the cluster leader will have to retrieve the data and the remaining members will get a consistent view of everything within 10s.

Some of the Bug fixes in LXD 3.15

  • Linker flags have been updated.
  • Path to the host’s communication socket has been fixed: doc/devlxd
  • Basic install instructions have been added: doc/README
  • Translations from weblate has been updated: i18n
  • Unused arg from setNetworkRoutes has been removed: lxd/containers
  • Unit tests have been updated: lxd/db

Developers are happy with the new features and improvements included in LXD 3.15.

A user on Reddit says, “The IPv4 and IPv6 spoof protection filters is going to make a few people very happy. As well as ceph FS support as RBD doesn’t like sharing volumes with multiple host.”

Some users were comparing LXD with Docker, where mostly all preferred the former over the latter. A Redditor gave a detailed comparison of the two platforms. The comment read, “The high-level difference is that Docker is for “application containers” and LXD is for “system containers”. For Docker that means things like, say, your application process being PID 1, and generally being forced to do things the “Docker way”. 

“LXD, on the other hand, provides flexibility to use containers the way you want to. This means containers end up being closer to your development environment, e.g. by using systemd if you want it; they can be ephemeral like Docker, but only if you want to”, the user further added. 

So, LXD provides containers that are closer in feel to a regular installation or VM, but with the performance benefit of containers. You can even use LXD containers as Docker hosts, which is what I often do.”

For the complete list of updates, head over to the LXD 3.15 release notes.

Read Next

LXD 3.11 releases with configurable snapshot expiry, progress reporting, and more

LXD 3.8 released with automated container snapshots, ZFS compression support and more!

Debian 10 codenamed ‘buster’ released, along with Debian GNU/Hurd 2019 as a port


Subscribe to the weekly Packt Hub newsletter. We'll send you the results of our AI Now Survey, featuring data and insights from across the tech landscape.