LXD 3.22 リリースのお知らせ¶
6th of March 2020
はじめに ¶
LXD チームは、LXD 3.22 のリリースをお知らせすることにとてもワクワクしています!
このリリースでは、コンテナと仮想マシン両方にかなりの数の改良が加えられています。nftables サポートを追加し、xtables から切り替えられた一部の新しい Linux ディストリビューションに対する互換性が大きく向上しています。
このリリースとは別に、かなりの新しい VM イメージをイメージサーバーに追加しました。Ubuntu、Debian、Fedora、CentOS、OpenSUSE、ArchLinux の VM イメージを見つけられるでしょう。
Enjoy!
ハイライト ¶
プロジェクトに対するリソース制限 ¶
プロジェクトのリソース量を制限するのに使える新しい設定項目を追加しました:
- limits.containers
- limits.virtual-machines
- limits.cpu
- limits.memory
- limits.processes
CPU、メモリ、プロセスの制限を使う際に適用される制限がいくつかあります。詳しくは公式ドキュメントをご覧ください:
プロジェクトの制限
ファイアウォールの nftables
バックエンド ¶
最近の LXD リリースで、ファイアウォールのリクエストに対する内部抽象化レイヤーが導入されました。
これは、LXD ネットワークのファイアウォール、NAT、コンテナに対するプロキシーデバイス、IP や MAC フィルタリングなど、あらゆるものに対応しています。
このリリースの LXD で、新しいバックエンドとして、nft が既存の xtables 実装に加わりました。
起動時に LXD はシステムでどちらが現在使用されているかを検出し、以降はそれを使い続けます。
既存のバックエンドは lxc info
で次のように参照できます:
stgraber@castiana:~$ lxc info | grep firewall: firewall: nftables
コンテナ: 非特権コンテナの Hugepages ¶
非特権コンテナで hugepages にアクセスできるようになりました。
hugetlbfs
ファイルシステムのマウントインターセプション- hugepages に対して新たに制限を適用可能
x86_64 の設定例は次のようになります:
- security.syscalls.intercept.mount=true
- security.syscalls.intercept.mount.allowed=hugetlbfs
- limits.hugepages.1MB=1GB
hugepages の割り当ては、コンテナがすでに使っている通常のメモリに追加されることに注意してください。また、他の制限と同様に、制限を設定しないと無制限に hugepages を使えることに注意してください。
root@edfu:~# lxc init ubuntu:18.04 c1 Creating c1 root@edfu:~# lxc config set c1 security.syscalls.intercept.mount true root@edfu:~# lxc config set c1 security.syscalls.intercept.mount.allowed hugetlbfs root@edfu:~# lxc config set c1 limits.hugepages.2MB 1GB root@edfu:~# lxc start c1 root@edfu:~# lxc exec c1 bash root@c1:~# mkdir /dev/hugepages ; mount -t hugetlbfs hugetlbfs /dev/hugepages root@c1:~# ls -lh /dev/hugepages/ total 0
VM: 9p ディスクデバイスのサポート ¶
LXD の仮想マシンに長く待望されていた機能のひとつが、ホストから仮想マシンに任意のパスを渡す機能でした。
LXD 3.22 で LXD 自身とエージェントのロジックを組み合わせることでこれを可能にしました。
これがプロファイルを通してコンテナと仮想マシンの両方で使えるようになりました。
root@edfu:~# lxc profile create shared-data Profile shared-data created root@edfu:~# lxc profile device add shared-data home disk source=/home path=/mnt/home Device home added to shared-data root@edfu:~# lxc profile device add shared-data srv disk source=/srv path=/mnt/srv Device srv added to shared-data root@edfu:~# lxc launch images:fedora/31 f31-ctn -p default -p shared-data Creating f31-ctn Starting f31-ctn root@edfu:~# lxc launch images:fedora/31 f31-vm -p default -p shared-data --vm Creating f31-vm Starting f31-vm root@edfu:~# lxc exec f31-ctn -- df -ah | grep /mnt /dev/sdb1 220G 12G 197G 6% /mnt/home /dev/sdb1 220G 12G 197G 6% /mnt/srv root@edfu:~# lxc exec f31-vm -- df -ah | grep /mnt lxd_home 220G 12G 197G 6% /mnt/home lxd_srv 220G 12G 197G 6% /mnt/srv
VM: ファイルテンプレートのサポート ¶
イメージ内のテンプレートファイルが仮想マシンにも使えるようになりました。
テンプレートは、設定内で使用可能なメタデータを使ってホスト上の LXD が設定を読み込み、読み込まれたファイルは仮想マシンにインストールするためにエージェントに渡されます。
カスタムイメージへのテンプレートの追加がコンテナと同様に動作するようになり、LXD のイメージサーバー images: (https://images.linuxcontainers.org/)でも使われています。
完全な ChangeLog(翻訳なし) ¶
Here is a complete list of all changes in this release:
すべてのChangeLog を見る
- lxc-to-lxd: golint fix
- lxd/cluster: golint fixes
- lxd/migration: golint fixes
- shared/containerwriter: golint fixes
- shared/generate: golint fixes
- shared/netutils: golint fixes
- tests: Update golint list
- shared: Fix HostPathFollow for stdin/stdout
- Allow build with GNU Make 4.3
- add mips architectures
- doc: tweak markdown format
- lxd/vm: Use -sandbox
- lxd/firewall/firewall/interface: Adds String() and Compat()
- lxd/network/network: Handle errors during firewall setup
- lxd/firewall/drivers/drivers/xtables: Changes XTables to Xtables for consistency
- lxd/firewall/drivers/drivers/xtables: Better validation in InstanceSetupProxyNAT
- lxd/firewall/drivers/drivers/xtables: Adds String() and Compat()
- lxd/firewall/firewall/load: Detect which firewall driver to use
- lxd/daemon: Log which firewall driver as selected
- api: API extension firewall_driver
- lxd/firewall/drivers/drivers/nftables: Adds nftables driver
- test: Updates container devices nic bridged filtering tests for nftables
- test: Updates proxy tests for nftables
- add riscv architecture definitions
- rv->riscv
- correct mips names (le->el), no aliases required
- lxd/storage/backend/lxd: Adds logging for CreateInstanceFromBackup post hook
- lxd/storage/backend/lxd: Refuse to create storage pool if dir exists on disk
- as the kernel only reports mips/mips64, specify 32 and 64bit arch and el as aliases
- lxd/main/import: Adds --project flag support to lxd import
- lxd/api/internal: Updates error messages in internalImport
- shared/util: Fix relative paths in HostPathFollow
- lxd/api/internal: Removes duplicate storage package import
- lxd/storage: Adds InstanceImportingFilePath function
- lxd/api/internal: storagePools.InstanceImportingFilePath usage
- lxd/container/lxc: storagePools.InstanceImportingFilePath usage
- lxd/api: projectParam comments
- lxd/api/internal: Uses StoragePoolNodeVolumeGetTypeByProject for project support
- lxd/storage/drivers/driver/lvm: Adds lvm.vg.force_reuse config option
- lxd/storage/pools/config: Adds lvm.vg.force_reuse option
- doc/api: Adds API extension storage_lvm_vg_force_reuse
- doc/storage: Adds lvm.vg.force_reuse option to storage pool config
- lxd/images: Removes hardcoded default project arg for ImageGet in autoUpdateImage
- lxd/images: Golint and comments
- lxd/instances: Pick correct default type from URL
- lxd/db: Set ceph.user.name if missing
- lxd/vm: Fix disk files and snap
- lxd/db: Fix ceph username in patch
- lxd/db: Revert 3da5aea1 fix, since in turn testify reverted the change
- lxd/db: un-export StorageVolumeNodeGet
- lxd/db: un-export StoragePoolVolumesGetType
- lxd/db: un-export StoragePoolVolumeGetTypeID
- lxd/db: un-export StoragePoolVolumeGetType
- lxd/db: un-export StorageVolumeConfigGet
- lxd/db: un-export StoragePoolVolumeTypeToName
- lxd/db: un-export StorageVolumeDescriptionUpdate
- lxd/db: un-export StorageVolumeConfigAdd
- lxd/db: un-export StorageVolumeConfigClear
- lxd/db/cluster: add new storage volume snapshots table
- lxd/db/cluster: drop snapshot column from storage_volumes table
- lxd/db/cluster: add storage_volumes_all view
- lxd/db/schema: include triggers when generating SQL for fresh schemas
- lxd/db/cluster: add triggers to check that volume IDs don't overlap
- lxd/db: change StoragePoolVolumeSnapshotsGetType to query the snapshots table
- lxd/db: change StorageVolumeNextSnapshot to query the snapshot table
- lxd/db: update StorageVolumeNodeAddresses to use storage_volumes_all
- lxd/db: update storagePoolVolumeGetTypeID to use storage_volumes_all
- lxd/db: update storageVolumeNodeGet to use storage_volumes_all
- lxd/db: update StorageVolumeDescriptionGet to use storage_volumes_all
- lxd/db: update storageVolumeIDsGet to use storage_volumes_all
- lxd/db: update StoragePoolVolumesGetNames to use storage_volumes_all
- lxd/db: update StoragePoolVolumesGet to use storage_volumes_all
- lxd/db: update storagePoolVolumesGetType to use storage_volumes_all
- lxd/db: update InstancePool to use storage_volumes_all
- lxd/db: update instancePoolSnapshot to use storage_volumes_all
- lxd/db: make StoragePoolVolumeDelete differentiate between regular volumes and snapshots
- lxd/db: make storageVolumeConfigGet differentiate between regular volumes and snapshots
- lxd/db: make storageVolumeDescriptionUpdate differentiate between regular volumes and snapshots
- lxd/db: make storageVolumeConfigAdd differentiate between regular volumes and snapshots
- lxd/db: make storageVolumeConfigClear differentiate between regular volumes and snapshots
- lxd/db: make StoragePoolVolumeRename differentiate between regular volumes and snapshots
- lxd/db: consider snapshots in StorageVolumeMoveToLVMThinPoolNameKey
- lxd/db: add ClusterTx.storagePoolVolumeGetTypeID() method
- lxd/db: make StoragePoolVolumeCreate differentiate between regular volumes and snapshots
- lxd/db: no need to update snapshot names in ContainerNodeMove
- lxd/db: copy volume snapshots in StoragePoolNodeJoinCeph
- lxd: no need to rename snapshot volumes when renaming a container
- lxd/db/cluster: migrate existing volume snapshots to the new table
- tests: some runs of "lxd import" don't fail anymore due to improved data integrity
- lxd/logging: Handle projects in log expiry
- doc: Fix escaping
- shared/api: Fix ServerEnvironment ordering
- lxd/vm: Fix snapshots
- lxd/storage/ceph: Fix leftover rbd
- lxd/storage/ceph: Fix zombie handling
- lxd/init: Use new network syntax
- tests: Check UUIDs while running
- Increase timeout of standalone SQL statements
- lxd/storage/ceph: Improve error reporting on map
- lxd/containers: Have findIdmap look at projects
- lxd/storage: Remove legacy dir implementation
- lxd/storage: Remove legacy btrfs implementation
- lxd/storage: Remove legacy zfs implementation
- lxd/storage: Remove legacy lvm implementation
- lxd/storage: Removes unused getPoolMountLockID
- lxd/storage/pools/utils: Comment on storagePoolDBCreate
- lxd/api/internal: Removes legacy storage pool loading
- lxd/api/internal: Consistent comment style
- lxd/api/internal: Stops using backup pkg name as variable
- lxd/api/internal: Switches internalImport to use pool.CheckInstanceBackupFileSnapshots
- lxd/storage/pool/interface: Adds CheckInstanceBackupFileSnapshots
- lxd/storage/errors: Adds ErrBackupSnapshotsMismatch error
- lxd/storage/backend/mock: Adds CheckInstanceBackupFileSnapshots
- lxd/storage/backend/lxd: Adds CheckInstanceBackupFileSnapshots implementation
- lxd/patches/utils: Removes unused functions
- lxd/api/internal: Adds sanity check for instance name in internalImport
- lxd/backup: Have tar not transform symlink targets
- lxd/storage/drivers/driver/lvm/volumes: Updates VolumeSnapshots to use lvs for snapshot list
- lxd/backup: Removes old storage loader
- lxd/container/lxc: Removes old storage loader
- lxd/storage: Removes unused storagePoolVolumeContainerCreateInit
- lxd/container: Removes old storage loader
- lxd/containers/post: Removes old storage loader
- lxd/daemon/storage: Consistent comment ending
- lxd/daemon/storage: Removes old storage loader
- lxd/images: Removes old storage loader
- lxd/migrate/container: Removes old storage loader
- lxd/migrate/storage/volumes: Removes old storage loader
- lxd/resources: Removes old storage loader
- lxd/storage/pools/utils: Removes old storage loader
- lxd/storage/pools: Removes old storage loader
- lxd/storage/volumes/snapshot: Removes old storage loader
- lxd/storage/volumes: Removes old storage loader
- lxd/storage: Removes old storage loader
- lxd/instance/drivers/driver/qemu: Removes storage layer transition workaround
- lxd/container/lxc: Makes Delete pool load logic same as VM type
- lxd: Storage loader comments
- lxd/storage: Removes unused functions
- lxd/storage/drivers/drivers/mock: Adds mock driver
- lxd/storage: Adds mock driver loading
- lxd/storage: Additional error checking
- lxd/storage/zfs: Set volmode=none for VM datasets
- lxd/logging: Updates log rotate to only remove .log files
- lxd/db: Rename ContainerListExpanded to instanceListExpanded
- lxd/db: Make instanceListExpanded account for projects without "features.profiles" enabled
- Removed Erroneous Space
- i18n: Update translation templates
- scripts: Update Project Tab Complete Script
- lxd/storage/drivers/driver/zfs/volumes: Create block volumes with volmode=none
- lxd/storage/drivers/driver/zfs/volumes: Use MountTask with CreateVolume
- lxd/storage/drivers/zfs/volumes: Makes MountVolume and UnmountVolume more thorough in detecting mounts
- lxd/storage/drivers/driver/lvm/volumes: Always ensure mount path after mount in CreateVolume
- lxd/storage/drivers/driver/common: Adds moveGPTAltHeader
- lxd/storage/drivers/driver/lvm/volumes: Adds moveGPTAltHeader usage
- lxd/storage/drivers/driver/zfs/volumes: Adds moveGPTAltHeader usage
- lxd/storage/drivers/driver/dir/volumes: Adds moveGPTAltHeader usage
- lxd/storage/drivers/driver/btrfs/volumes: Adds moveGPTAltHeader usage
- lxd/storage/drivers/driver/ceph/volumes: Adds moveGPTAltHeader usage
- lxd/storage/drivers/utils: Separates block file rounding logic into own function
- lxd/storage/drivers/generic/vfs: Adds genericVFSResizeBlockFile
- lxd/storage/drivers/driver/btrfs/volumes: ensureVolumeBlockFile usage
- lxd/storage/drivers/driver/dir/volumes: Adds block resize support to SetVolumeQuota
- lxd/storage/drivers/driver/btrfs/volumes: Adds block resize support to SetVolumeQuota
- lxd/storage/drivers/driver/zfs/volumes: Call SetVolumeQuota from CreateVolumeFromCopy
- lxd/storage/drivers/driver/zfs/volumes: Apply block size changes in SetVolumeQuota
- lxd/storage/drivers/driver/btrfs/volumes: Calls SetVolumeQuota when creating/updating volumes
- lxd/storage/drivers: SetVolumeQuota falls back to defaultBlockSize
- lxd/patches: Updates patches to use new storage driver mount/unmount
- lxd/patches: Replaces s.StoragePoolCreate with new storage framework
- lxd/storage: Removes storagePoolInit
- scripts: Fix syntax error
- lxd/main/init: Removes legacy storage drivers from availableStorageDrivers
- lxd/patches: Updates patchStorageApiPermissions to use new storage drivers
- lxd/storage: Removes storageCoreInit function
- lxd/storage: Removes legacy drivers from storagePoolDriversCacheUpdate
- lxd/db: Start-up check ignores pending nodes with out-of-date schema
- lxd/patches: Removes old storage layer from upgradeFromStorageTypeLvm
- lxd/container/lxc: Removes some calls to the old storage layer
- lxd/migrate/container: Removes calls to old storage layer
- lxd/migrate/storage/volumes: Removes calls to old storage layer
- lxd/patches: Switches upgradeFromStorageTypeLvm to use new storage layer
- lxd/storage/migration: Removes unused functions
- lxd/instance: Extract LoadInstanceDatabaseObject from fetchInstanceDatabaseObject
- lxd/project: Add initial CheckLimitsUponInstanceCreation
- lxd/project: Check that the project's "limits.memory" is honored when creating an instance
- lxd/project: Add CheckLimitsUponInstanceUpdate
- lxd/project: Add initial ValidateLimitsUponProjectUpdate
- lxd/project: Validate changes to the project's "limits.memory" value
- lxd/project: Add CheckLimitsUponProfileUpdate
- lxd/project: Check that the project's "limits.processes" config is honored
- lxd/project: Don't allow percentage values for limits.memory
- lxd/project: Skip limit checks if the project has no limits configured
- lxd/project: Check that the project's "limits.cpu" config is honored
- api: Use project.Config as etag field, without specifying individual keys.
- api: Properly detect which project config keys were specified in a PATCH request
- api: Add helper logic to detect if a project config key has changed
- api: Add new "limits.*" project configuration keys
- api: Plug ValidateLimitsUponProjectUpdate into projectChange
- api: Plug CheckLimitsUponInstanceCreation into containersPost
- api: Plug CheckLimitsUponInstanceUpdate into containerPut and containerPatch
- api: Plug CheckLimitsUponProfileUpdate into profilePut and profilePatch
- test: Add project limits tests
- shared/version: Add "projects_limits" API extension
- doc: Add documentation about projects limits
- lxd/storage/drovers/driver/lvm/utils: Dont format block volumes with filesystem
- lxd/storage/zfs: Skip volmode on 0.6
- lxd/storage: Removes unused files
- lxd/container: Removes containerCreateEmptySnapshot
- lxd/container/lxc: Removes legacy storage functions
- lxd/main/init: Refactors availableStorageDrivers to not use old storage layer
- lxd/main/init/auto: Removes dep on supportedStoragePoolDrivers
- lxd/migrate: Removes old storage type reference
- lxd/migrate/storage/volumes: Removes reference to old storage type
- lxd/storage: Removes legacy storage interface and unused functions
- lxd/storage/drivers/load: Adds AllDriverNames
- lxd/storage/migration: Removes unused functions
- lxd/storage/pools/config: Removes ref to supportedStoragePoolDrivers
- lxd/storage/utils: Remove unused functions
- lxd/storage/volumes/utils: Removes unused function
- lxd/storage: Removes unused files
- lxd/main/test: Removes legacy mock storage references
- lxd/migrate: Removes unused struct
- lxd/storage: Removes unused functions
- lxc/containers: Fix cgns-less fallback
- lxd/storage/drivers/driver/ceph/volume: Don't format block volumes with a filesystem
- lxd/storage/drivers: Don't use named temporary dirs
- lxd/instance/drivers/driver/lxc: Removes temporary lxc placeholder
- lxd/container/lxc: Moves to instance/drivers package
- lxd/container/lxc/exec/cmd: Moves to instance/drivers package
- lxd/api/internal: instance.Container usage
- lxd/container: instance.CriuMigrationArgs, inst.Migrate() and instance.Container usage
- lxd/container/console: instance.Container usage
- lxd/container/exec: instance.Container usage
- lxd/container/lxc/utils: Removes idmapsetFromString
- lxd/container/test: instance.Container usage
- lxd/devices: inst.RegisterDevices usage
- lxd/devlxd: Removes devlxdEventSend
- lxd/devlxd: instance.Container usage
- lxd/instance/drivers/driver/lxc: Renames containerLXC to lxc
- lxd/instance/drivers/driver/lxc: Removes temporary loader placeholders
- lxd/instance/drivers/driver/lxc: Renames lxc to liblxc
- lxd/instance/drivers/driver/lxc: db.StoragePoolVolumeTypeContainer usage
- lxd/instance/drivers/driver/lxc: Adds devLxdSendEvent
- lxd/instance/drivers/driver/lxc: Updates use of instance.CriuMigrationArgs
- lxd/instance/drivers/driver/lxc: Adds RegisterDevices function
- lxd/instance/drivers/driver/lxc: Moves storage util functions and updates usage
- lxd/instance/drivers/driver/lxc: Adds SaveConfigFile function
- lxd/instance/drivers/driver/lxc/cmd: Renames ContainerLXCCmd to lxcCmd
- lxd/instance/drivers/driver/qemu: Adds RegisterDevices as a no-op
- lxd/instance/instance/interface: Adds RegisterDevices
- lxd/instance/drivers/load: LXC loader functions renamed
- lxd/migrate/container: instance.CriuMigrationArgs and instance.Container usage
- lxd/patches: Updates patchContainerConfigRegen to use LXC.SaveConfigFile()
- lxd/patches: BTRFS storage functions usage
- lxd/patches/utils: storageDrivers.BTRFSSubVolumesGet and removes unused functions
- lxd/storage: instance.Container usage
- lxd/storage: storageDrivers util functions usage
- lxd/storage/drivers/utils: Adds util functions moved from main pkg
- lxd/apparmor/apparmor: Removes dependency on c.DaemonState()
- lxd/container/snapshot: Removes dependency on sc.DaemonState()
- lxd/instance/drivers/driver/test/utils: Adds PrepareEqualTest function
- lxd/container/test: instanceDrivers.PrepareEqualTest usage to fix crash
- lxd/instance/drivers/driver/lxc: golint fixes
- lxd/instance/drivers/driver/lxc: Removes DaemonState function
- lxd/instance/drivers/driver/qemu: Removes DaemonState function
- lxd/instance/instance/interface: Removes DaemonState function
- lxd/instance/instance/interface: Adds SaveConfigFile
- lxd/migrate/container: Removes s.instance.DaemonState dependency
- lxd/profiles/utils: Removes use of containerLXC type
- lxd/seccomp/seccomp: Removes c.DaemonState dependency
- lxd/storage/drivers/utils: golint fixes
- lxd/instance/instance/interface: Adds Container interface
- lxd/instance/instance/interface: Adds CriuMigrationArgs type
- lxd/backup/backup: Comment clarifying existence of Instance interface
- lxd/seccomp/seccomp: Comment clarifying existence of Instance interface
- lxd/daemon: Moves shared mount state to use daemon.SharedMountsSetup var
- lxd/instance/drivers/driver/lxc: Updates to use daemon.SharedMountsSetup var
- lxd/instance/instance/interface: Adds Migrate function
- lxd/instance/drivers/qemu: Adds Migrate placeholder function
- lxd: Ensure gopkg.in/lxc/go-lxc.v2 is consistently imported as liblxc
- lxd/instanc/instance/errors: Adds ErrNotImplemented error
- lxd/instance/drivers/driver/qemu: instance.ErrNotImplemented usage
- lxd/instance/drivers/driver/qemu: Adds SaveConfigFile placeholder
- lxd/instance/instance/interface: Adds OnHook function to interface and adds hook constants
- lxd/instance/drivers/driver/lxc: Implements OnHook function
- lxd/instance/drivers/driver/qemu: Implements OnHook placeholder function
- lxd/api/internal: Updates hook usage to OnHook
- shared/idmap/idmapset/linux: Adds JSONUnmarshal function
- lxd/storage: idmap.JSONUnmarshal usage
- lxd/daemon: Import instance/drivers package so init() function runs
- lxd/vm: Generate the template files
- lxd-agent: Put templates in place
- doc: Typo and formatting improvements
- shared/idmap: Adds JSONMarshal function
- lxd/device/disk: Replaces call to StorageVolumeMount with functions on disk device
- lxd/storage: Removes storageVolumeMount and storagePoolVolumeAttachPrepare
- lxd/storage/utils: Adds VolumeUsedByInstancesGet
- lxd/storage/volumes/utils: storagePools.VolumeUsedByInstancesGet usage
- lxd/storage: Removes unused functions
- lxd/device: Removes usage of StorageRootFSApplyQuota, StorageVolumeMount and StorageVolumeUmount
- lxd: Removes old storagePoolVolumeType constants
- lxd: Removes storagePoolVolumeType constants
- lxd/container/lxc/utils: Removes unused file
- lxd/instance: Removes CGroupGet as is unused
- seccomp: handle hugetlbfs mount syscall interception
- lxd/device/disk: Validation error message quoting consistency
- Promote nodes if for whatever reason the n of voters drop below 3
- api: add container_syscall_intercept_hugetlbfs
- cgroup: add support for the hugetlb controller
- containers: add support for hugepage limits
- api: add limits_hugepages api extension
- doc: add limits.hugepages.* keys
- lxd/vm: Set gic-version on arm64
- lxd/device/disk: Adds support for adding directory source for VM 9p sharing
- lxd/device/disk: Adds support for disk 9p directory share
- lxd/instance/instance/type: Adds VMAgentMount type
- lxd/instance/drivers/driver/qemu: Removes unused architecture var
- lxd/instance/drivers/driver/qemu: Adds support for passing through unix socket FD to qemu
- lxd/instance/drivers/driver/qemu: Adds openUnixSocket function
- lxd/instance/drivers/driver/qemu: Adds addFileDescriptor function
- lxd/instance/drivers/driver/qemu: Adds addDriveDirConfig function
- lxd/instance/drivers/driver/qemu/templates: Adds 9p directory disk device template
- lxd-agent/main/agent: Adds support for mounting 9p shares
- lxd/instance/drivers/driver/qemu: Tweaks template whitespace removal to leave newline between sections
- lxd/project/project: Renames Prefix() to Instance()
- lxd: project.Instance() usage
- lxd/project/project/test: Updates for project.Instance rename
- lxd/instance/drivers: Add trans=virtio to 9p mount
- Missing bootstrap error check
- lxd-agent: Load vhost module
- lxd/storage/zfs: Fix default VM size
- lxd/vm: Tweak to mount field names
- lxd-agent: Create mount path if missing
- doc: Tweak markdown format for itemization
- lxd/storage/ceph: Implement GetVolumeUsage
- lxd/device/disk: Adds mountPoolVolume function
- lxd/device/disk: Error message quoting
- lxd/device/disk: Adds pool volume support for VMs
- lxd/device/disk: Switches createDevice to use d.mountPoolVolume for containers
- lxd/device/disk: Renames storagePoolVolumeAttachPrepare to storagePoolVolumeAttachShift
- lxd/device/disk: Ensures custom pool volumes are unmounted on VM device stop
- unix-hotplug: fix device removal and zero padding
- i18n: Update translations from weblate
試用環境 ¶
この新しい LXD リリースは私たちの デモサービス で利用できます。
ダウンロード ¶
このリリースの tarball は ダウンロードページ から取得できます。
ビルド済みバイナリーは次のように使えます:
- Linux: snap install lxd
- MacOS: brew install lxc
- Windows: choco install lxc