LXD 2.13 has been released

The changes in this release include

New features:

  • lxc/copy: Allow copying a container without its snapshots (–container-only)
  • lxd/storage/zfs: Introduce a new “zfs.clone_copy” property (will make a full copy rather than using a clone)
  • client: New, better designed, client library available for testing
  • lxd/containers: unix-char/unix-block devices can now be mapped to a different name in the container (set “source” and “path” keys)
  • lxd/containers: AppArmor namespacing is now enabled for privileged containers too
  • lxd/storage/lvm: Implement non-thinpool LVM storage pools (set “lvm.use_thinpool” to “false”)
  • lxc/list: Support for CSV as an output format
  • lxd/init: Support for creating a subvolume in an existing btrfs environment
  • lxd/storage: Implement the “rsync.bwlimit” pool property to restrict rsync bandwidth
  • lxd/network: Allow overriding the VXLAN multicast interface (set “tunnel.NAME.interface”)


  • client: Add basic logging code
  • client: Fix file push path handling (Issue #3153)
  • doc/api-extensions: Properly escape markdown
  • doc/configuration: Drop deprecated config options
  • doc/configuration: Extract containers documentation to containers.md
  • doc/configuration: Extract networking documentation to networks.md
  • doc/configuration: Extract profiles documentation to profiles.md
  • doc/configuration: Extract server documentation to server.md
  • doc/configuration: Extract storage documentation to storage.md
  • doc/configuration: Fix storage volume configuration (Issue #3140)
  • doc/configuration: Update with links to other documents
  • doc/lxd-ssl-authentication: Drop mention of PKI CRL (not implemented)
  • doc/production-setup: Fix broken table
  • doc/README: Update for new API client
  • doc/storage: Add note about escaping btrfs qgroups (Issue #3135)
  • doc/storage: Re-format a bit
  • i18n: Update translations from weblate
  • lxc/copy: Return the source error too (Issue #3086)
  • lxc/copy: Wait for operations asynchronously
  • lxc/list: Document list format options
  • lxc/manpage: Show all commands in “man lxc” (Issue #3214)
  • lxd/containers: Add containerGetParentAndSnapshotName()
  • lxd/containers: Added soft memory limit even when hard is selected
  • lxd/containers: Allow for stable host interface names (Issue #3143)
  • lxd/containers: Fix handling of devices with minor>255
  • lxd/containers: Fix typo in securtiy.syscalls.blacklist
  • lxd/containers: Fix unix device removal (bad cgroup.deny entry) (Issue #3107)
  • lxd/containers: Improve storage error messages on creation (Issue #3110)
  • lxd/containers: Properly invalidate the idmap cache
  • lxd/daemon: Improve PKI certificate handling (Issue #3162)
  • lxd/db: Deal with the case where no updates exist
  • lxd/images: Drop leftover debug statement
  • lxd/init: Add all storage options
  • lxd/main_activateifneeded: Port to new client code
  • lxd/main_callhook: Port to new client code
  • lxd/main_daemon: Port to new client code
  • lxd/main_forkexec: Remove use of os.FindProcess (Issue #3037)
  • lxd/main_import: Handle non-existing snapshots path (Issue #3198)
  • lxd/main_import: Port to new client code
  • lxd/main_init: Port to new client code
  • lxd/main_migratedumpsuccess: Port to new client code
  • lxd/main_netcat: Implement logging (Issue #2494)
  • lxd/main_netcat: Switch to new helper
  • lxd/main_ready: Port to new client code
  • lxd/main_shutdown: Port to new client code
  • lxd/main_waitready: Port to new client code
  • lxd/migration: Fix stateful restore
  • lxd/operations: Remove useless for loops
  • lxd/profiles: Fix ETag handling
  • lxd/rsync: Make our netcat handle EAGAIN (Issue #3168)
  • lxd/storage: Check that pool exists on profile changes (Issue #3137)
  • lxd/storage: Fix and improve config validation
  • lxd/storage/lvm: Improve snapshot handling
  • lxd/storage/lvm: Tweak {Try}RunCommand() calls
  • shared/api: Add the Stateful field to ContainerPut
  • shared/api: Properly define the image creation source
  • shared/gnuflag: Fix golint
  • shared/i18n: Simplify and make golint clean
  • shared/ioprogress: Simplify and make golint clean
  • shared/logger: Add line number logging
  • shared/logger: Add pretty formatting
  • shared/logger: Create new package for logger
  • shared/util_linux: Add function to detect errno (Issue #2494)
  • shared/version: Make golint clean
  • tests/lxd-benchmark: Port to new client code
  • tests: Add additional “file push -p” tests
  • tests: Add additional import tests (Issue #3198)
  • tests: Add additional storage pool tests
  • tests: Add migration tests for copy and move (Issue #3006)
  • tests: Keep testsuite non-executable (they’re sourced)
  • tests: Make sure a client certificate is generated
  • tests: Make sure we also delete dependent records in import tests
  • tests: Record how long the tests take
  • tests: Run golint on client/ and lxc/config/
  • tests: Stop containers before modifying the DB
  • tests: Use flake8 instead of separate pyflakes and pep8
  • tests: Use shutdown/respawn helpers to simplify import tests

Try it for yourself

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


The release tarballs can be found on our download page.


any idea when this version (2.13) will be available through the “xenial-backports” channel (which I believe is the recommended source of LXD for production use on an ubuntu host)?

I’ve translated the release announcement of LXD 2.13 into Japanese. :relaxed:

1 Like

Extremely reliable as always! :slight_smile:

1 Like

I expect 2.13 to be published to xenial-backports, yakkety-backports and zesty-bakckports early next week.

Our usual roll-out looks like:

  • Push as a snap to the “candidate” channel
  • Push as a Debian package to the Ubuntu development release (currently “artful”)
  • [ wait for automatic testing in Ubuntu ]
  • Automatic publishing to the PPAs
  • [ wait 3-4 days for bug reports ]
  • Push to the various -backports pockets

That lets us slowly ramp up the number of users and stop the roll-out if anything goes wrong (as we did between LXD 2.8 and 2.12).

great, looking forward.