LXD 3.1 has been released

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:
    asciicast
  • 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.
  • 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.
  • Added a new lxc cluster enable 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
  • 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
  • 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)
  • 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.

5 Likes

Hi Stéphane. I know this is an old topic, but it seems to be the first feature release for which this is true:

LXD 3.1 will only be made available as a snap package.

Would it please be possible to update the Getting started - command line page to reflect this? Currently it says that feature releases can be installed from xenial-backports on Ubuntu 16.04. The following section covering the snap package could also be updated to explain that this is the way to get feature releases from now on.

Many thanks
Andy