Back to the news overview

LXD 5.5 リリースのお知らせ

19th of August 2022

はじめに

LXD チームは LXD 5.5 のリリースをお知らせできることにとてもワクワクしています!

このリリースでは、LXD でのオブジェクトストレージのサポート開始を含む、非常にエキサイティングな機能が追加されています。また、小さいながらも歓迎すべき機能追加や修正も行われています。

Enjoy!

新機能とハイライト

(Ceph 上の)ストレージバケット

LXD がオブジェクトストレージサポートをゲットしました!

これはストレージバケットというまったく新しい概念と、専用のコマンド(lxc storage bucket)と API を追加することで実現しています。

この機能で LXD ユーザーは新たにストレージバケットを作成し、サイズの制限を割り当て、そのバケットへのアクセスキーを管理できます。バケットには S3 API を持った独自の URL があります。

初期実装では、S3 API を提供する rados ゲートウェイを持つ Ceph の使用に限定されています。LXD 5.6 では minio を使って、他の全てのストレージドライバーにこの機能を拡張する予定です。

stgraber@dakara:~$ lxc storage create remote-object cephobject cephobject.radosgsw.endpoint=http://athos.hosts.mtl.stgraber.net:7480
Storage pool remote-object created

stgraber@dakara:~$ lxc storage bucket create remote-object foo
Storage bucket foo created

stgraber@dakara:~$ lxc storage bucket key create remote-object foo admin --role admin
Storage bucket key admin added
Access key: TNZAYZSYIHM243PS8337
Secret key: xbBTY8exhnXdm3uwEcsBjeBVBFzi4n4NOhtOEYa3

stgraber@dakara:~$ lxc storage bucket show remote-object foo
config: {}
description: ""
name: foo
s3_url: http://athos.hosts.mtl.stgraber.net:7480/foo
location: ""

stgraber@dakara:~$ time s3cmd put Downloads/Win11_English_x64v1.iso s3://foo --multipart-chunk-size-mb=1000 --no-ssl --host athos.hosts.mtl.stgraber.net:7480 --host-bucket athos.hosts.mtl.stgraber.net:7480 --access_key TNZAYZSYIHM243PS8337 --secret_key xbBTY8exhnXdm3uwEcsBjeBVBFzi4n4NOhtOEYa3
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 1 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   26s    37.30 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 2 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   25s    39.72 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 3 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   28s    35.28 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 4 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   31s    32.15 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 5 of 6, 1000MB] [1 of 1]
 1048576000 of 1048576000   100% in   29s    33.45 MB/s  done
upload: 'Downloads/Win11_English_x64v1.iso' -> 's3://foo/Win11_English_x64v1.iso'  [part 6 of 6, 307MB] [1 of 1]
 322172928 of 322172928   100% in    9s    33.17 MB/s  done

real    2m37.658s
user    0m20.592s
sys     0m4.383s

stgraber@dakara:~$ s3cmd get s3://foo/Win11_English_x64v1.iso --multipart-chunk-size-mb=1000 --no-ssl --host athos.hosts.mtl.stgraber.net:7480 --host-bucket athos.hosts.mtl.stgraber.net:7480 --access_key TNZAYZSYIHM243PS8337 --secret_key xbBTY8exhnXdm3uwEcsBjeBVBFzi4n4NOhtOEYa3
download: 's3://foo/Win11_English_x64v1.iso' -> './Win11_English_x64v1.iso'  [1 of 1]
 5565052928 of 5565052928   100% in   31s   170.59 MB/s  done

上記のように、標準的な S3 クライアントを使って新しいバケットの作成と利用を見ることができます。

インスタンスの使用可能状態

LXD ユーザーが直面する共通の問題に、インスタンスがいつ使用可能になるかを知りたいという問題がありました。
この問題は "ready" の定義がかなり状況固有になるため、LXD だけで解決できる問題ではありません。しかし、LXD にできることは、いつ使用可能になったかを教え、それを API を通して公開することです。

この方法は、ゲスト API(/dev/lxd)を通して動作します:

stgraber@dakara:~$ lxc list u1
+------+---------+-----------------------+-------------------------------------------+-----------+-----------+
| NAME |  STATE  |         IPV4          |                   IPV6                    |   TYPE    | SNAPSHOTS |
+------+---------+-----------------------+-------------------------------------------+-----------+-----------+
| u1   | RUNNING | 172.17.250.107 (eth0) | 2602:fc62:b:250:216:3eff:feb9:e5bd (eth0) | CONTAINER | 0         |
+------+---------+-----------------------+-------------------------------------------+-----------+-----------+

stgraber@dakara:~$ lxc exec u1 bash
root@u1:~# curl --unix-socket /dev/lxd/sock lxd/1.0
{"state":"Started","api_version":"1.0","instance_type":"container","location":"none"}
root@u1:~# curl --unix-socket /dev/lxd/sock lxd/1.0 -X PATCH -d '{"state": "Ready"}'
root@u1:~# exit

stgraber@dakara:~$ lxc list u1
+------+-------+-----------------------+-------------------------------------------+-----------+-----------+
| NAME | STATE |         IPV4          |                   IPV6                    |   TYPE    | SNAPSHOTS |
+------+-------+-----------------------+-------------------------------------------+-----------+-----------+
| u1   | READY | 172.17.250.107 (eth0) | 2602:fc62:b:250:216:3eff:feb9:e5bd (eth0) | CONTAINER | 0         |
+------+-------+-----------------------+-------------------------------------------+-----------+-----------+

devlxd API が無効化されていない限り、この機能はコンテナと仮想マシンの両方で動作します。

BGP ホールドタイムの設定

新たに bgp.peers.NAME.holdtime という設定キーを導入しました。
これにより、ピアに特定の BGP ホールドタイムの値を設定できます。通常のデフォルト値である 180 秒よりずっと小さな値に減らせます。

全プロジェクトのストレージボリューム情報の取得

ここしばらくのインスタンス API と同様に、URL で ?all-projects=true というキーワードを使って、プロジェクトをまたがるボリューム情報を取得できるようになりました。

stgraber@dakara:~$ lxc query /1.0/storage-pools/default/volumes?all-projects=true
[
    "/1.0/storage-pools/default/volumes/container/bgp-test",
    "/1.0/storage-pools/default/volumes/container/centos3",
    "/1.0/storage-pools/default/volumes/container/centos4",
    "/1.0/storage-pools/default/volumes/container/charmcraft-lxd-1779348-0-0-amd64?project=charmcraft",
    "/1.0/storage-pools/default/volumes/container/lxd-build",
    "/1.0/storage-pools/default/volumes/container/snapcraft-lxd",
    "/1.0/storage-pools/default/volumes/container/snapcraft-microceph-1142335?project=snapcraft",
    "/1.0/storage-pools/default/volumes/container/speedtest",
    "/1.0/storage-pools/default/volumes/container/u1",
    "/1.0/storage-pools/default/volumes/custom/backups",
    "/1.0/storage-pools/default/volumes/custom/images",
    "/1.0/storage-pools/default/volumes/virtual-machine/v1",
    "/1.0/storage-pools/default/volumes/virtual-machine/v2",
    "/1.0/storage-pools/default/volumes/virtual-machine/win11"
]

メトリクスの OOM kill カウンター

新しいメトリクス API エントリーを追加しました。カーネルの Out Of Memory killer が発生した回数を監視します。

stgraber@dakara:~$ lxc config set u1 limits.memory=64MiB
stgraber@dakara:~$ lxc query /1.0/metrics | grep lxd_memory_OOM_kills_total
# HELP lxd_memory_OOM_kills_total The number of out of memory kills.
# TYPE lxd_memory_OOM_kills_total counter
lxd_memory_OOM_kills_total{name="u1",project="default",type="container"} 0

stgraber@dakara:~$ lxc exec u1 -- apt update
Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease
stgraber@dakara:~$ ts... 56% Killed

stgraber@dakara:~$ lxc query /1.0/metrics | grep lxd_memory_OOM_kills_total
# HELP lxd_memory_OOM_kills_total The number of out of memory kills.
# TYPE lxd_memory_OOM_kills_total counter
lxd_memory_OOM_kills_total{name="u1",project="default",type="container"} 1

データベースの最適化

最後に、新機能ではありませんが、このリリースの重要な注目点です。
LXD が実行するデータベースリクエストの回数を減らし、これらのリクエストを全体的に最適化するために、多くの作業を行いました。

これにより、全体的にパフォーマンスが向上しました。そして、一部の大規模なクラスターユーザーで発生していたような多数のタイムアウトが回避できるはずです。

すべての変更点(翻訳なし)

このリリースでの完全な変更点のリストは次の通りです:

すべてのChangeLogを見る
  • Doc: Fix LXD volume group to LVM
  • Remove redundant LXD before ZFS pool
  • Doc: change a LVM to an LVM
  • doc/authentication: add information about a server behind NAT
  • lxc/remote: Allow specifying alternate server address for tokens
  • i18n: Update translation templates
  • lxd/db/warningtype: Move warning type definitions to warningtype package
  • lxd: Update usages of warning types
  • lxd/db/cluster/warnings: Add cluster.Warnings
  • lxd/db/warnings.mapper: Remove db.Warnings and its code generation
  • lxd/db/cluster/warnings.mapper: Update generated code
  • lxd/db/cluster/mapper: Get Images/Certificates by ID
  • shared/api/certificate: Add api.Certificate URL helper
  • lxd/warnings: Add getWarningEntityURL
  • lxd/warnings/warnings: Use cluster package helpers for Warnings
  • lxd/db/warnings.mapper: Remove db package warnings generated files
  • lxd/db/generate: Remove v1 generator
  • lxd/db/cluster: Remove version flag from generator comments
  • lxd/db/warnings: Remove unused types
  • doc/storage: add link to video about benchmarking storage drivers
  • lxd/db/storage/buckets: Fix member specific filter bug in GetNetworkLoadBalancers
  • lxd/db/cluster/projects: Move ProjectFeatures and ProjectFeaturesDefaults into cluster package
  • lxd/db/cluster/open: Update EnsureSchema to use ProjectFeaturesDefaults for default project features
  • lxd/api/project: Use cluster.ProjectFeatures and cluster.ProjectFeaturesDefaults
  • lxd/db/network/forwards: Adds context arg to GetNetworkForwards and GetNetworkForward
  • lxd/network: GetNetworkForward and GetNetworkForwards usage
  • lxd/db/network/forwards: Adds optional listenAddresses filter to GetNetworkForwards
  • lxd/db/network/load/balancers: Adds context argument to GetNetworkLoadBalancer and GetNetworkLoadBalancers
  • lxd/network: Usage of GetNetworkLoadBalancers and GetNetworkLoadBalancer
  • lxd/db/network/load/balancers: Adds optional listenAddresses filter to GetNetworkLoadBalancers
  • lxd/db/cluster/stmt: Export Stmt helper
  • lxd/db/cluster: Use exported Stmt helper
  • lxd/db/generate/db/method: Use exported Stmt helper
  • lxd/db/cluster/mapper: Update generated code
  • lxd/db/transaction: Remove Cluster/ClusterTx prepared stmts field
  • lxd/db: Use cluster.Stmt as the only statement store
  • lxd/storage/drivers/driver/lvm/volumes: Fix "lvm.stripes cannot be used with thin pool volumes" error
  • lxd/lifecycle/network/load/balancer: Fix load balancer lifecycle types
  • shared/api/event/lifecycle: Fix typo in constant
  • lxd: Update response.SyncResponseLocation URL generation to use api.NewURL() helper
  • lxd/network/load/balancers: Add missing networks segment to URL response in networkLoadBalancersPost
  • lxd/storage/volumes: Adds missing volume name to URL response in storagePoolVolumeTypePostRename
  • lxd/lifecycle: Reworks URL generation to use api.NewURL()
  • lxd/lifecycle/cluster/member: Update ClusterMemberAction.Event to use api.NewURL
  • lxd/lifecycle/instance/backup: Updates InstanceBackupAction.Event to clarify what backup name is expected
  • lxd/instance/backup: Pass full backup name to lifecycle.InstanceBackupRetrieved.Event
  • lxd/lifecycle/storage/volume: Make StorageVolumeAction.Event require volume with name and type
  • lxd/lifecycle/storage/volume/backup: Updates StorageVolumeBackupAction.Event to clarify the type of backup name required
  • lxd/storage/volumes/backup: Pass full backup name into lifecycle events
  • lxd/lifecycle/storage/volume/snapshot: Updates StorageVolumeSnapshotAction.Event to expect snapshot volume
  • doc: add spellcheck
  • doc: add spellchecking to the tests
  • doc: add an extension to allow spelling exceptions
  • doc: update word list for spellchecker
  • doc: fix spelling README.md
  • doc: fix spelling api-extensions.md
  • doc: fix spelling architectures.md
  • doc: fix spelling backup.md
  • doc: fix spelling events.md
  • doc: fix spelling faq.md
  • doc: fix spelling instances.md
  • doc: fix spelling security.md
  • doc: fix spelling server.md
  • doc: fix spelling network_bridge_resolved.md
  • doc: fix spelling metrics.md
  • doc: fix spelling projects.md
  • doc: fix spelling rest-api.md
  • doc: fix spelling network_bridge.md
  • doc: fix spelling network_macvlan.md
  • doc: fix spelling network_ovn.md
  • doc: fix spelling storage_btrfs.md
  • doc: fix spelling clustering.md
  • doc: fix spelling container-environment.md
  • doc: fix spelling database.md
  • doc: fix spelling dev-lxd.md
  • doc: fix spelling network_acls.md
  • doc: fix spelling network_load_balancers.md
  • doc: fix spelling userns-idmap.md
  • doc: fix spelling syscall-interception.md
  • doc: fix spelling requirements.md
  • doc: fix spelling remotes.md
  • doc: fix spelling storage_zfs.md
  • doc: fix spelling storage_lvm.md
  • doc: fix spelling storage_drivers.md
  • doc: fix spelling storage_dir.md
  • doc: fix spelling storage_cephfs.md
  • doc: fix spelling storage_ceph.md
  • doc: fix spelling network_sriov.md
  • doc: fix spelling network_physical.md
  • doc: fix spelling network_forwards.md
  • doc: fix spelling network_ovn_peers.md
  • doc: fix spelling network_zones.md
  • doc: fix spelling storage_add_volume.md
  • doc: fix spelling image_handling.md
  • doc: fix spelling migration.md
  • doc: fix spelling production-setup.md
  • doc: exclude some tags from spell checking
  • doc: allow Markdown syntax when we need markup in a link
  • doc: fix spelling authentication.md
  • doc: fix spelling cloud-init.md
  • doc: fix spelling containers.md
  • doc: fix spelling contributing.md
  • doc: fix spelling daemon-behavior
  • doc: fix spelling debugging.md
  • doc: fix spelling doc-cheat-sheet.md
  • doc: fix spelling networks.md
  • doc: fix spelling storage.md
  • doc: fix spelling network_bridge_firewalld.md
  • doc: fix spelling network_ovn_setup.md
  • doc: fix spelling storage_backup.md
  • doc: fix spelling installing.md
  • doc: fix spelling instance-exec.md
  • doc: fix spelling profiles.md
  • doc: fix spelling CONTRIBUTING.md
  • lxd: Use lifecycle URL in SyncResponseLocation
  • lxd/lifecycle/storage/pool: Remove projectName arg from StoragePoolAction.Event
  • lxd/networks: Adds project to networksPost SyncResponseLocation response
  • lxd/storage/pools: Updates storagePoolsPost to use a common lifecycle var
  • lxd/storage/pools: Fix comment typo in storagePoolsPost
  • lxd/storage/pools: Updates storagePoolPut and storagePoolDelete to use updated lifecycle function
  • lxd/storage/volumes: Adds project to SyncResponseLocation in storagePoolVolumeTypePostRename
  • lxd/db/instances: Don't use query parameters with IN statement when loading instance config in InstanceList
  • lxd/db/instances: Use query.Params in GetProjectAndInstanceNamesByNodeAddress
  • lxd/db/instances: Use query.Params in GetProjectInstanceToNodeMap
  • lxd/db/instances: Use consistent IN format
  • lxd/db/instances: Remove unused generateInClauseParams function
  • lxd/db/network/forwards: Use query.Params in GetNetworkForwards
  • lxd/db/network/load/balancers: Use query.Params in GetNetworkLoadBalancers
  • lxd/db/cluster: Don't use prepared statements in RemoveNodeFromClusterGroup and AddNodeToClusterGroup
  • lxd/db/images: Updates getImagesByFingerprintPrefix to use QueryScan rather than prepare
  • lxd/db/transaction: Removes unused prepare function
  • lxd/resources: Fix VPD parser crash
  • lxd/db/cluster/snapshots: Updates ToInstance to be more flexible
  • lxd: snapshot.ToInstance usage
  • lxd/db/instances: Refactors InstanceList into several smaller functions
  • lxd/db/instances: Adds snapshot support to InstancesToInstanceArgs and associated functions
  • lxd: Use consistent log context name for err
  • lxd/instances/get: Log instance render errors in doInstancesGet
  • lxd: Don't pass duplicate profiles into instance.Load
  • lxd/instance/drivers/driver/common: Updates Snapshots to avoid using tx.GetInstanceSnapshotsWithName
  • lxd/instance/instance/utils: Removes inefficient unused LoadFromAllProjects function
  • lxd/network/driver/ovn: Update Leases to use InstanceList
  • lxd/network/driver/bridge: Updates Leases to use InstanceList
  • lxd/instance/instance/utils: Removes unused LoadByProject function
  • lxd/instance: Reworks autoCreateInstanceSnapshots and autoCreateInstanceSnapshotsTask to use InstancesToInstanceArgs
  • lxd/daemon: Updates usage of autoCreateInstanceSnapshotsTask
  • lxd/instance: Update pruneExpiredInstanceSnapshotsTask to use tx.InstancesToInstanceArgs
  • lxd/instance: Reworks pruneExpiredInstanceSnapshotsTask to use tx.InstancesToInstanceArgs
  • lxd/instance/instance/utils: Removes unused LoadAllInternal function
  • shared/api: Add Ready state
  • shared/api: Add function to get status code from status name
  • shared/instance: Allow volatile.last_state.ready key
  • lxd/db: Add function to remove volatile.last_state.ready key
  • lxd: Unset volatile.last_state.ready on daemon init
  • lxd/instance/drivers: Set volatile.last_state.ready on stop/shutdown
  • lxd/instance/drivers: Return api.Ready when ready
  • lxd/devlxd: Add instance state to /1.0
  • lxd/devlxd: Allow setting instance state in /1.0
  • test/deps: Add ready-state subcommand
  • test: Test instance Ready state using devlxd
  • lxd/profiles/utils: Updates getProfileInstancesInfo to use tx.InstancesToInstanceArgs
  • api: Add instance_ready_state
  • doc/devlxd: Add PATCH /1.0
  • doc/devlxd: Update GET /1.0
  • docs: Update storage create pool howto
  • lxd-agent: Handle PATCH /1.0 in devlxd
  • lxd/config: Fix expanded show of instance snapshot
  • doc: update version of lxd-sphinx-extensions
  • doc: mark up default values correctly for clustering.md
  • doc: mark up default values correctly for network_zones.md
  • doc: mark up default values correctly for instances.md
  • doc: mark up default values correctly for production-setup.md
  • doc: mark up default values correctly for projects.md
  • doc: mark up default values correctly for network_bridge.md
  • doc: mark up default values correctly for network_macvlan.md
  • doc: mark up default values correctly for network_ovn.md
  • doc: mark up default values correctly for network_physical.md
  • doc: mark up default values correctly for storage_btrfs.md
  • doc: mark up default values correctly for storage_ceph.md
  • doc: mark up default values correctly for storage_cephfs.md
  • doc: mark up default values correctly for storage_dir.md
  • doc: mark up default values correctly for storage_lvm.md
  • doc: mark up default values correctly for storage_zfs.md
  • doc: mark up default values correctly for security.md
  • doc: mark up default values correctly for server.md
  • lxd/network/forwards: Add support for config patching in networkForwardPut
  • lxd/network/load/balancers: Add support for config patching in networkLoadBalancerPut
  • lxd/fsmonitor/drivers/errors: Removes unused variable ErrNotImplemented
  • lxd/storage/drivers/driver/common: Adds default "Not supported" functions
  • lxd/storage/drivers/driver/cephfs/volumes: Fall back to using common ("not supported") RefreshVolume function
  • lxd/storage/drivers/errors: Removes little used ErrNotImplemented
  • lxd/storage/backend/mock: Removes use of drivers.ErrNotImplemented
  • lxd/storage/backend/lxd: Switch to ErrNotSupported in CreateInstanceFromCopy
  • lxd/networks: Restrict network config view to admin users
  • lxd/storage/pools: Restrict storage pool config view to admin users
  • lxd/storage/drivers/driver/btrfs: Scan pool device source for BTRFS filesystems before mounting
  • lxd/db/instances: Adds snapshot support to instanceProfilesFill
  • lxd/db/instances: Adds fillProfiles argument to InstancesToInstanceArgs
  • lxd/instance/instance/utils: Switch to InstancesToInstanceArgs in LoadByProjectAndName
  • lxd/instance/instance/utils: Switch to InstancesToInstanceArgs in CreateInternal
  • lxd/instance/drivers/driver/common: Don't reload snapshot profiles in Snapshots
  • lxd/profiles/util: InstancesToInstanceArgs usage in getProfileInstancesInfo
  • lxd/db/instances: InstancesToInstanceArgs usage in InstanceList
  • lxd/instance: InstancesToInstanceArgs usage in autoCreateInstanceSnapshotsTask
  • lxd/instance: InstancesToInstanceArgs in pruneExpiredInstanceSnapshotsTask
  • lxd/db/instances: Remove inefficient InstanceToArgs function
  • test: Move devlxd-client into its own directory
  • test: Remove source/baz file at end of filemanip test
  • lxd/daemon: Add explicit instancesLoaded bool to indicate if shared mounts can be cleaned up
  • lxd/storage/drivers/utils: Adds loopDeviceSetup and loopDeviceAutoDetach functions
  • lxd/storage/drivers/driver/btrfs: Switch to loopDeviceSetup for loop device management
  • lxd/storage/drivers/driver/lvm: Switch to loopDeviceSetup for loop device management
  • lxd/storage/drivers/utils/cgo: Removes unused file
  • lxd/storage/cgo: Removes unused file
  • doc: update project description
  • doc: update Project and community section
  • shared/util/linux: Fix typo in comment of ExitStatus
  • shared/util/linux: Adds detection of RunError to ExitStatus
  • shared/validate/validate: Adds IsRequestURL function
  • test: Run proxy listener command before adding proxy device
  • test: Sleep longer when starting up proxy listener process after restart
  • client/util: Set transport.DialTLSContext in tlsHTTPClient
  • test: Add retries to udhcpc6 calls
  • test: Add retries to udhcpc calls
  • lxd/db/network/load/balancers: Fix regression in GetNetworkLoadBalancers
  • doc/reference: improve description of storage option
  • test: Keep retrying to signal to container to reboot in basic_usage
  • lxd/profiles/utils: Removes incorrect comment from doProfileUpdateInstance
  • lxd: Fixes API version for instances in project usedby.
  • lxd/db: Fix escaped slashes in storage volume URIs.
  • lxd/cluster/membership: Improve error in membershipCheckClusterStateForAccept
  • lxd/db/cluster: Improve URL generation.
  • client/lxd/cluster: No reason to use queryStruct in DeleteClusterMember
  • gomod: Update dependencies
  • workflows: Adds edge ppa's and removes make deps step.
  • lxd/storage/drivers/zfs: set atime=off and relatime=on
  • doc/reference: fix description of dir source param
  • lxd/cgroup/abstractions: Improve errors from GetIOStats
  • lxd/instance/instance/utils: Updates DeleteSnapshots to use more efficient Snapshots() function
  • lxd/instance/drivers: instance.DeleteSnapshots usage
  • shared/util: Adds context argument to RunCommandSplit, RunCommandInheritFds and RunCommandWithFds
  • shared/util: Adds RunCommandContext and deprecates RunCommand
  • lxd: RunCommand* context usage
  • shared/util: Unexports RunError fields and adds NewRunError function
  • shared/util: NewRunError usage
  • shared/util/linux: Use errors.As in ExitStatus
  • lxd/archive/archive: shared.NewRunError usage
  • lxd: RunError functions usage
  • cgo: ensure that lxd wrappers don't conflict with libc provided wrapper
  • doc/storage/zfs: include link to related YouTube video
  • doc/authentication: clarify what to specify for admin password
  • lxc/remote: the admin password prompt also accepts a token
  • i18n: Update translation templates
  • lxd/instance/drivers: Adds instance type to instance-created lifecycle event context.
  • doc/storage/zfs: {remove_snapshots,use_refquota,reserve_space} are bools
  • lxd/storage/drivers: use SI units
  • lxd/main_init_interactive: use SI units
  • lxd/storage/drivers/utils: Support CentOS 7 in loopDeviceSetup
  • test: Increase storage pool delete timeout to 20s
  • lxd/storage/storage: Adds UsedBy function
  • lxd: Use storagePools.UsedBy function
  • doc/migration: clean up "live migration" documentation
  • lxd/db/instances: Use stable sorting in GetInstanceSnapshotsWithName
  • lxd/instance/drivers: Use stable sorting
  • lxd/instances/get: Use stable sorting in doInstancesGet
  • lxd/resources/cpu: Use stable sorting in GetCPU
  • shared/api/instance: Adds GetParentAndSnapshotName function
  • shared/api/storage/pool/volume: Adds URL function to StorageVolume
  • lxd/storage/volumes: Fix volume get project resolution in storagePoolVolumeGet
  • lxd/project/project: Update StorageVolumeProjectFromRecord and StorageVolumeProject
  • lxd/db/storage/volumes: Rework GetStoragePoolVolumes to be more efficient
  • lxd/db/storage/volumes: Removes duplicate zero length check in GetStorageVolumeNodes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to use tx.GetStoragePoolVolumes
  • doc: use HTTPS for links to CRIU site and inotify man
  • lxd/storage/volumes: Update storage-pools/{name}/volumes/{type} handler to use storagePoolVolumesGet
  • lxd/storage/volumes: Remove unused storagePoolVolumesTypeGet
  • lxd/storage/volumes: Fix golint error in storagePoolVolumesTypePost
  • lxd/db/storage/volumes: Adds memberSpecific support to GetStoragePoolVolumes
  • lxd/storage/volumes: Adds target member support to storagePoolVolumesGet
  • lxd/db/images: Clarifies argument name in GetImagesFingerprints
  • lxd/db/images: Adds GetProjectsUsingImage function
  • lxd/storage/storage: Reworks UsedBy to use tx.GetStoragePoolVolumes
  • lxd/storage/backend/lxd: UsedBy usage in IsUsed
  • lxd/storage/pools: storagePools.UsedBy usage in storagePoolsGet
  • api: network_bgp_holdtime
  • doc: Add bgp.peers.NAME.holdtime
  • lxd/bgp: Add configurable hold time
  • lxd/network: Add configurable BGP hold time
  • lxd/storage/pools: storagePools.UsedBy usage in storagePoolGet
  • lxd/db/storage/pools: Removes unused GetStoragePoolUsedBy function
  • shared/api/storage/pool/volume: Adds target awareness to URL
  • lxd/storage/volumes/utils: Removes unused supportedVolumeTypesInstances var
  • lxd/bgp: Only set HoldTime if set by the user
  • lxd-user: Fix use with clusters
  • shared/instance: Removes InstanceGetParentAndSnapshotName
  • lxd: api.GetParentAndSnapshotName usage
  • lxc: api.GetParentAndSnapshotName
  • lxd/db/storage/volumes: Adds support for StorageVolumeFilter to GetStoragePoolVolumes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to use tx.GetStoragePoolVolumes filtering
  • lxd/db/storage/volumes: Updates GetStoragePoolVolumes to return []StorageVolume
  • lxd/storage/storage: Updates UsedBy to use updated GetStoragePoolVolumes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to use updated GetStoragePoolVolumes
  • lxd/storage/volumes: Updates storagePoolVolumesGet to avoid unnecessary conversions
  • lxd/storage/volumes/utils: Updates storagePoolVolumeUsedByGet to add target param
  • lxd/db/storage/volumes: Adds GetStoragePoolVolume function
  • lxd/storage/volumes/utils: Updates storagePoolVolumeUsedByGet to accept a db.StorageVolume
  • lxd/storage/volumes: Updates storagePoolVolumeUsedByGet usage
  • lxd/storage/volumes: Fix image in use detection in storagePoolVolumeDelete
  • lxd/projects: Ensure default project has features.networks
  • api: Adds storage_volumes_all_projects extension
  • client: Adds all-projects functions for storage volumes
  • shared/api: Add Project field to StorageVolume
  • doc/rest-api: Refresh swagger YAML
  • lxc/storage/volume: Adds --all-projects flag to lxc storage volume list
  • lxd/instances/get: Replace mentions of cluster node with member
  • lxd/db/storage/volumes: Removes Project field from StorageVolume
  • shared/api/storage/pool/volume: Remove projectName from URL function
  • lxd: Unify all-projects handling
  • lxd/events: Improve error handling in eventsSocket
  • lxd/storage/storage: Update UsedBy with updated URL function usage
  • lxd/storage/volumes: Adds all-projects support to storagePoolVolumesGet
  • i18n: Update translation templates
  • lxd/db/storage/volumes: Updates GetStoragePoolVolumes to accept variadic filters
  • lxd/storage/storage: tx.GetStoragePoolVolumes usage
  • lxd/storage/volumes: tx.GetStoragePoolVolumes usage
  • lxd/network: Fix BGP without hold time
  • grafana: Only use instant queries on piechart graphs
  • lxd/instance/instance/utils: Updates MoveTemporaryName to generate missing volatile.uuid
  • lxd/instance/post: instance.MoveTemporaryName usage
  • lxd/db/cluster: Adds remote storage aware unique index to storage_volumes
  • lxd/network/driver/bridge: Include error from n.populateAutoConfig
  • lxd/network/openvswitch/ovn: Lower case DNS names
  • lxd/storage/pools: Don't use project param when deleting images before pool deletion
  • lxd/db/storage/volumes: Removes unused GetStoragePoolVolumesNames function
  • lxd/db/generate/db/method: Remove URI generation
  • go: Update go-dqlite
  • lxd/db/transaction: Move QueryScan to query package
  • lxd/db/storage/volumes: Update usages of QueryScan
  • lxd/db/generate/db/lex: Use QueryScan rowFunc in generated code
  • lxd/db/generate/db/method: Remove unnecessary stmt preparations
  • Update generated code
  • lxd/db/cluster/stmt: Remove prepare helper
  • metrics: new metric: lxd_memory_OOM_kills_total
  • Makefile: Moves shellcheck version call into static-analysis target.
  • doc/storage/ceph: remove YouTube link from content that is reused
  • lxd-generate: Allow GetOne filter to include a 'type' field.
  • doc: Split storage_configure into storage_configure_pool and storage_configure_volume
  • doc: Split storage_list into storage_view_pools and storage_view_volumes
  • doc: Split storage_resize into storage_resize_pool and storage_resize_volume
  • doc: Rename storage_move to storage_move_volume
  • doc: Rename storage_backup to storage_backup_volume
  • doc: Rename storage_add_volume to storage_create_volume
  • doc: Fix storage references
  • doc: Reworks storage sub menu
  • doc/migration: move current migration topic
  • api: metrics_memory_oom_total
  • doc: fix display of expandable sections
  • doc/migration: Add instructions for lxd-migrate
  • doc/migration: move the migration section
  • doc/migration: updates to the instance migration documentation
  • api: Adds storage_buckets extension
  • shared/api: Adds storage pool bucket API types
  • lxd/db/cluster: Adds storage buckets tables
  • lxd/db/cluster/projects: Adds "features.storage.buckets" to ProjectFeaturesDefaults
  • lxd/project/project: Adds StorageBucketProjectFromRecord and StorageBucketProject functions
  • lxd/project: Update cmdProjectList with features.storage.buckets support
  • lxd-user/lxd: Enable features.storage.buckets in projects
  • lxd/api/project: Add features.storage.buckets project setting
  • doc/projects: Adds features.storage.buckets setting
  • lxd/storage/drivers/driver/types: Adds Buckets field to Info
  • client/lxd/storage/buckets: Client functions for bucket management
  • lxc/storage/bucket: CLI commands for bucket management
  • shared/api/event/lifecycle: Add bucket constants
  • lxd/lifecycle/storage/bucket: Add lifecycle helper and types
  • lxd/storage/pool/interface: Add bucket management definitions
  • lxd/storage/drivers/bucket: Adds bucket type
  • lxd/storage/drivers/bucket: Add S3Credentials type
  • lxd/db/storage/buckets: Adds storage bucket management functions
  • lxd/storage/backend/mock: Add storage management functions
  • lxd/storage/backend/lxd: Add bucket management functions
  • lxd/storage/drivers: Adds bucket management functions
  • lxd/storage/buckets: Adds storage pool bucket management API endpoints
  • doc/rest-api: Refresh swagger YAML
  • gomod: Adds minio client and depenencies
  • lxd/storage/drivers/driver/cephobject: Adds cephobject storage pool driver type
  • lxd/storage/storage: Adds buckets to storage pool UsedBy output
  • i18n: Update translation templates
  • test: Document LXD_CEPH_CEPHFS option
  • test: Adds cephobject tests
  • doc: Adds cephobject documentation
  • lxd/network/driver_ovn: Fixes impossibility to set MTU for a pair of veths connecting uplink and ovs-system bridges
  • lxd/storage/drivers/driver/cephobject: Fix detection of missing lxd-admin radosgw user
  • lxd: Replace SelectObjects callback with QueryScan rowFunc
  • lxd/db/generate/db/method: Remove old destFunc
  • lxd/db/cluster/stmt: Add StmtString and remove panics
  • lxd/db/generate/db/method: Handle Stmt helper errors
  • lxd/db/cluster/mapper: Update generated code
  • lxd/db/cluster/nodes/cluster/groups.mapper: Add NodeClusterGroup generation
  • lxd/db/cluster/update: Add ID to nodes_cluster_groups table
  • lxd/instances/post: Use lxd-generate for cluster_groups
  • lxd/db/storage/volumes: Rename QueryScan to Scan
  • lxd/db/warnings: Remove unnecessary statement prepares
  • lxd/node/config: Removes most inefficient "convenience" functions
  • lxd/daemon: Don't load the local daemon config repeatedly in init
  • lxd/endpoints/endpoints: Use single-line contextual logging for socket bind & close
  • lxd/firewall/drivers/drivers/xtables: Use xtables locking in NetworkApplyACLRules
  • lxd/firewall/drivers/drivers/xtables: Simplify args list in iptablesAdd
  • lxd/firewall/drivers/drivers/xtables: Use long form xtables arguments in iptablesClear
  • lxd/storage/drivers/driver/cephobject/buckets: Create admin radosgw-admin user if missing in CreateBucket
  • i18n: Update translations from weblate
  • gomod: Update dependencies
  • lxd/db/generate/db/method: Fix lxd-generate typo

試用環境

この新しい LXD リリースは私たちの デモサービス で利用できます。

ダウンロード

このリリースの tarball は ダウンロードページ から取得できます。

ビルド済みバイナリーは次のようにして使えます:

  • Linux: snap install lxd
  • MacOS: brew install lxc
  • Windows: choco install lxc