Back to the news overview

LXD 0.25 release announcement

21st of December 2015

The main changes for this release are

  • New --mode argument to "lxc exec", makes it possible to force non-interactive mode.
  • Full support of the s390x architecture (IBM z/series 64bit)
  • Command aliases can now move the command arguments by using the @ARGS@ keyword
  • Full support for CPU limits (defaults to all CPUs, maximum priority and no time limit):
    • limits.cpu: Number of CPUs (e.g. 2) or range of core (e.g. 0,2-3)
    • limits.cpu.allowance: Percentage of CPU time under load (e.g. 50%) or hard time limit (10ms/50ms)
    • limits.cpu.priority: Container priority when host is under load as a value between 1 (lowest) and 10 (highest) (e.g. 5)
  • Full support for memory limits (defaults to all memory, hard enforcement, swap enabled and maximum priority):
    • limits.memory: Limit in bytes (kB, MB, GB, TB, PB, EB suffixes supported) (e.g. 256MB) or in percentage of the host memory (e.g. 20%)
    • limits.memory.enforce: hard (container cannot use more memory than allocated) or soft (limit only applies under load)
    • limits.memory.swap: true or false, indicates whether the container may use the swap
    • limits.memory.swap.priority: Priority for swap usage, from 1 to 10, with 1 causing the most data to be swapped out to disk
  • All CPU and memory limits are now applied live.
  • Support for optimized (send/receive) ZFS container & snapshot migration


  • Fix a variety of storage race conditions as identified by new tests
  • lxd-images: Give clearer error messages
  • Fix image expiry logic
  • Refactor logging code
  • Fix migration code to be spec-compliant
  • Detect available CGroup controllers
  • zfs: Prevent restoring from old (not latest) snapshosts
  • Report clearer errors when adding devices to containers
  • zfs: Fix container rename
  • lvm: Fix container rename
  • lvm: Workaround failure on older LVM versions
  • lvm: Hide fdleak messages
  • Move some directories around for consistency
  • exec: lock fds map for exclusive writes
  • lvm: Fix snapshot rename handling
  • lvm: Fix container snapshot migration
  • Fix container DB cleanup (leftover records)
  • Fix image cleanup (leftover records)
  • Use the host architecture when container arch == 0
  • Do config & device validation upstream
  • Cleanup DB leftovers
  • Return a clear error message when an image already exists
  • Only return remote_cache_expiry if set
  • Flush volatile when they don't apply


  • The testsuite can now be run with all storage backends
  • Several race conditions have been eliminated
  • The testsuite now checks that the filesystem structure is clean
  • The testsuite now checks that the database tables are clean
  • Fix a couple of tests whose failure was being ignored
  • Dramatically speed up testsuite by using --force-local
  • Use shutdown and waitready commands

Upgrade notes

  • limits.memory suffixes are now kB, MB, GB, TB, EB and PB. Old
    suffixes are upgraded as a one-time operation on the next LXD startup.
  • The migrate REST API call now takes a https URL to the source
    operation rather than a wss URL to the secrets. This was changed to
    match the specification.

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.