Introduction

LXD 3.1 is the first feature release following our last LTS release (3.0).

As a feature release, it will only be supported until LXD 3.2 is released next month.

We recommend critical production environments stick to the LTS branch instead.

If you’re using the snap, you can enforce that with snap refresh lxd --channel=3.0 .

Note that LXD does not support downgrades, so a system that’s upgraded to LXD 3.1 will not be able to go back to LXD 3.0.0.

Note for Ubuntu users

LXD 3.1 will only be made available as a snap package. We will not be uploading it as a deb to Ubuntu 18.10 or through backports to previous releases. Moving forward all feature releases of LXD will only be available through the snap.

Note that this does NOT affect users of LXD 3.0.x as present in Ubuntu 18.04 where further bugfix/security releases will be uploaded as debs until Ubuntu 18.04 reaches end of life.

The changes in this release include

Features:

Introduced a new backup API and ability to export/import containers using it.

In the CLI those are new lxc export and lxc import commands:



In the CLI those are new and commands: Made it possible to override the LXD socket path with LXD_SOCKET

Made it possible to disable the use of privileges containers through a new LXD_UNPRIVILEGED_ONLY environment variable.

environment variable. Improved the lxd sql command to support interacting with both databases, support making database and schema dumps, run multiple queries an read from a script.

command to support interacting with both databases, support making database and schema dumps, run multiple queries an read from a script. Added a new lxc cluster enable command to easily convert an existing LXD server into an initial cluster node

command to easily convert an existing LXD server into an initial cluster node Extended lxd init to offer setting up a Fan overlay for clustering users

to offer setting up a Fan overlay for clustering users Extended lxd init --auto to also auto-configure an initial network

Bugfixes:

client: Expose http URL in ConnectionInfo

client: Improve remote operation errors

doc: Document how to dump the content or schema of databases

doc: Fix example in userns-idmap (Issue #4437 )

) doc: Fix some typos and wording

doc: s/status command/info command/ (Issue #4527 )

) doc: Tweak backup.md

doc: Update database.md with information about lxd sql and patch.*.sql

with information about lxd sql and patch.*.sql doc: Update snap path in backup.md

global: Make new gofmt happy

global: Replace juju/idmclient with CanonicalLtd/candidclient

i18n: Update translations from weblate

lxc: Add version subcommand (Issue #4381 , Issue #4382 )

, Issue ) lxc: Consistent naming of clustering terms

lxc: Fix mistakenly hidden commands (Issue #4380 )

) lxc/action: Fix pause

lxc/alias: Fix example in help message (Issue #4424 )

) lxc/config: Fix adding trust cert on snap (Issue #4418 )

) lxc/copy: Consider a copy to be local only when not clustered

lxc/file: Allow using -r to follow symlinks (Issue #4411 )

) lxc/file: Fix pull target logic

lxc/file: Fix pushing files to remote (Issue #4394 )

) lxc/help: Make help respect --all too (Issue #4406 )

) lxc/image: Fix crash due to bad arg parsing

lxc/init: Add missing --no-profiles

lxc/list: Reduce number of API calls

lxc/main: Fix remote caching

lxc/network: Fix typo in help message

lxc/query: Add support for non-JSON endpoints (Issue #4452 )

) lxc/query: Fix -d and -X (Issue #4406 )

) lxc/remote: Add format option to list

lxc/rename: Deal with remote renames (Issue #4486 )

) lxc/storage_volumes: Various fixes

lxd: Add missing limits.h include

lxd: Add version subcommand

lxd: Increase logging during startup

lxd: Log the error that made Daemon.Init() fail

lxd: Make the interaction betwean lxd daemon and waitready non-blocking

lxd: Make Unavailable accept an error parameter

lxd/cluster: Add new cluster.Promote function

lxd/cluster: Add new cluster.Rebalance function

lxd/cluster: Notify the leader after a node removal, so it can rebalance

lxd/cluster: Pass a logger to raft-http

lxd/cluster: Properly filter node-level storage configs by pool ID

lxd/containers: Allow configuration of mount-propagation

lxd/containers: Allow sending progress (Issue #4447 )

) lxd/containers: Fix broken unix hotplug logic (Issue #4495 )

) lxd/containers: Fix lxc.net check (Issue #4466 )

) lxd/containers: Fix optional property for disk devs (Issue #4538 )

) lxd/containers: Fix snapshot deletion (Issue #4431 )

) lxd/database: Add a new Schema.File() method to load extra queries from disk

lxd/database: Add db.ContainersNodeList

lxd/database: Add query.Dump helper to dump schema and data

lxd/database: Add support for patch.local.sql and patch.global.sql

lxd/database: Backup global database on upgrade if non-clustered

lxd/database: Rename database files

lxd/database: Take raft snapshots more frequently and at shutdown

lxd/db: Don’t crash on empty queries

lxd/devices: Clone mode of source device (Issue #4534 )

) lxd/devices: Fail if Nvidia device minor is missing (Issue #4441 )

) lxd/forkfile: Only open O_RDWR if necessary (Issue #4552 )

) lxd/init: Don’t setup a remote storage pool by default

lxd/init: Explain passwordless behavior (Issue #4524 )

) lxd/init: Fix --auto with network config

lxd/init: Fix interactive cluster join with an existing ZFS (Issue #4404 )

) lxd/init: Fix maas.api.url check when setting up existing bridge

lxd/init: Make questions more consistent

lxd/init: Require root for interactive cluster join (Issue #4451 )

) lxd/migration: Fix btrfs live migration (Issue #4475 )

) lxd/migration: Pre-validate profiles (Issue #4379 )

) lxd/network: Fix fan subnet calculation logic

lxd/patches: Add “storage_api_path_permissions” patch

lxd/sql: Drop custom table renderer

lxd/sql: Handle empty query strings

lxd/storage: Also set zfs.pool_name on upgrade (Issue #4489 )

) lxd/storage/btrfs: Add doContainerCreate()

lxd/storage/btrfs: Add doContainerSnapshotCreate()

lxd/storage/ceph: Add doContainerCreate()

lxd/storage/ceph: Add doContainerMount()

lxd/storage/ceph: Ensure fs consistency when restoring

lxd/storage/ceph: Ensure fs consistency when snapshotting

lxd/storage: createContainerMountpoint() fix perms

lxd/storage: Handle ContainerDelete() correctly

lxd/storage: Handle ContainerRename() correctly

lxd/storage/lvm: Add doContainerMount()

lxd/storage/zfs: Add doContainerMount()

lxd/storage/zfs: Add do*() helpers

lxd/sys/fs: s/MkdirAll/Mkdir/g (Issue #4433 )

) Makefile: Add a manifest (Issue #4421 )

) shared: Support empty values in xattr

tests: Add extra cleanup code

tests: Fix busybox image

Try it for yourself

This new LXD release is already available for you to try on our demo service.

Downloads

The release tarballs can be found on our download page.