Incus 6.4 リリースのお知らせ¶
2024/08/09
はじめに ¶
Incus チームは、Incus 6.4 のリリースのアナウンスができてうれしいです!
これは、誰にとっても新しい何かを備えた、非常にバランスのとれたリリースです。
このリリースは、多数のバグフィックスと、前のリリースで追加された OCI サポートを支援するための新機能が搭載されています。また、より複雑な共有環境・クラスター環境のための多数の新機能も導入されています。また、ストレージ、クラスタリング、OpenID 認証、監査まわりの厄介な問題などの修正が満載です。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能 ¶
クラスターグループの設定 ¶
クラスターグループは、他のほとんどの Incus オブジェクトと同様の、標準の設定テーブルを持つようになりました。
これは、コマンドと API の通常のセットを意味します:
incus cluster group edit
incus cluster group get
incus cluster group set
incus cluster group show
incus cluster group unset
クラスターグループごとの CPU ベースラインと VM に対するフラグ ¶
クラスターグループの設定サポートをベースに、クラスターグループごとに VM の CPU ベースラインを定義するためのサポートが追加されました。
これにより、CPU モデル・世代ごとに 1 つのクラスターグループを持ち、Incus がそれらのサーバーに共通の CPU フラグのセットを計算できるようになります。
例えば、incus cluster group set foo instances.vm.cpu.x86_64.baseline=kvm64 instances.vm.cpu.x86_64.flags=auto
とすると、Incus は自動的に foo クラスターグループ内のサーバーを自動的に調べ、共通の CPU フラグのセットを flag
設定キーに入力します。
ただし、これにより、完全にカスタムの CPU 定義を設定することもできます。例えば、incus cluster group set foo instances.vm.cpu.x86_64.baseline=EPYCv2
instances.vm.cpu.x86_64.flags=-svm
とすると、仮想化拡張機能(svm)を無効にした、基本的な第 2 世代の AMD EPYC CPU が公開されます。
ディスクとしてボリュームのサブパスの使用 ¶
既存のカスタムボリューム内のパスを、ディスクエントリーのソースとして使えるようになりました。
stgraber@castiana:~$ incus launch images:ubuntu/24.04 demo Launching demo stgraber@castiana:~$ incus launch images:ubuntu/24.04 demo-sub Launching demo-sub stgraber@castiana:~$ incus storage volume create default demovol Storage volume demovol created stgraber@castiana:~$ incus config device add demo demovol disk pool=default source=demovol path=/mnt/demovol Device demovol added to demo stgraber@castiana:~$ incus exec demo bash root@demo:~# mkdir -p /mnt/demovol/sub/path/ root@demo:~# echo world > /mnt/demovol/sub/path/hello root@demo:~#· exit stgraber@castiana:~$ incus config device add demo-sub demovol disk pool=default source=demovol/sub/path path=/mnt/demovol Device demovol added to demo-sub stgraber@castiana:~$ incus exec demo-sub bash root@demo-sub:~# cat /mnt/demovol/hello· world
この例では、demovol
カスタムボリュームが作られ、demo
コンテナにアタッチされ、そのボリューム内にサブディレクトリーが作成され、そのサブディレクトリーが別のコンテナ demo-sub
にアタッチされます。
ストレージプールごとのプロジェクト制限 ¶
Incus プロジェクトはリソース制限を持つことができます。これは、プロジェクトへのアクセスを第三者に提供する場合に理想的です。これまでは、プロジェクト内のトータルのディスク使用量を制限できました。しかし、これは全ストレージプールに適用されていました。
異なるストレージの特性(ローカル vs リモート)やクラス(ssd vs hdd)を表す、異なるストレージプールを持つことは一般的ですので、ストレージプールごとに制限を提供する方法があると便利です。
これを行うために、新しい設定キーである、limits.disk.pool.POOLNAME
がプロジェクト内で利用できるようになりました。制限を 0
に設定すると、そのストレージプールは完全に無効になり、そのプロジェクトにリストされているストレージプールから消えます。
stgraber@dakara:~$ incus project info test-limits +------------------+-----------+-------+ | RESOURCE | LIMIT | USAGE | +------------------+-----------+-------+ | CONTAINERS | UNLIMITED | 0 | +------------------+-----------+-------+ | CPU | UNLIMITED | 0 | +------------------+-----------+-------+ | DISK | UNLIMITED | 0B | +------------------+-----------+-------+ | INSTANCES | UNLIMITED | 0 | +------------------+-----------+-------+ | MEMORY | UNLIMITED | 0B | +------------------+-----------+-------+ | NETWORKS | UNLIMITED | 0 | +------------------+-----------+-------+ | PROCESSES | UNLIMITED | 0 | +------------------+-----------+-------+ | VIRTUAL-MACHINES | UNLIMITED | 0 | +------------------+-----------+-------+ stgraber@dakara:~$ incus storage list +---------+--------+-------------+---------+---------+ | NAME | DRIVER | DESCRIPTION | USED BY | STATE | +---------+--------+-------------+---------+---------+ | default | zfs | | 45 | CREATED | +---------+--------+-------------+---------+---------+ | foo | dir | | 0 | CREATED | +---------+--------+-------------+---------+---------+ stgraber@dakara:~$ incus project set test-limits limits.disk.pool.foo=0 limits.disk.pool.default=5GiB limits.disk=10GiB stgraber@dakara:~$ incus project info test-limits +------------------+-----------+-------+ | RESOURCE | LIMIT | USAGE | +------------------+-----------+-------+ | CONTAINERS | UNLIMITED | 0 | +------------------+-----------+-------+ | CPU | UNLIMITED | 0 | +------------------+-----------+-------+ | DISK | 10.00GiB | 0B | +------------------+-----------+-------+ | DISK (DEFAULT) | 5.00GiB | 0B | +------------------+-----------+-------+ | INSTANCES | UNLIMITED | 0 | +------------------+-----------+-------+ | MEMORY | UNLIMITED | 0B | +------------------+-----------+-------+ | NETWORKS | UNLIMITED | 0 | +------------------+-----------+-------+ | PROCESSES | UNLIMITED | 0 | +------------------+-----------+-------+ | VIRTUAL-MACHINES | UNLIMITED | 0 | +------------------+-----------+-------+ stgraber@dakara:~$ incus storage list +---------+--------+-------------+---------+---------+ | NAME | DRIVER | DESCRIPTION | USED BY | STATE | +---------+--------+-------------+---------+---------+ | default | zfs | | 45 | CREATED | +---------+--------+-------------+---------+---------+ stgraber@dakara:~$ incus create images:ubuntu/24.04 c1 --storage default -d root,size=5GiB Creating c1 The instance you are starting doesn't have any network attached to it. To create a new network, use: incus network create To attach a network to an instance, use: incus network attach stgraber@dakara:~$ incus create images:ubuntu/24.04 c2 --storage default -d root,size=5GiB Creating c2 Error: Failed instance creation: Failed checking if instance creation allowed: Reached maximum aggregate value "5GiB" for "limits.disk.pool.default" in project "test-limits" stgraber@dakara:~$ incus project set test-limits limits.disk.pool.foo=5GiB stgraber@dakara:~$ incus create images:ubuntu/24.04 c2 --storage foo -d root,size=5GiB Creating c2 The instance you are starting doesn't have any network attached to it. To create a new network, use: incus network create To attach a network to an instance, use: incus network attach stgraber@dakara:~$ incus project info test-limits +------------------+-----------+----------+ | RESOURCE | LIMIT | USAGE | +------------------+-----------+----------+ | CONTAINERS | UNLIMITED | 2 | +------------------+-----------+----------+ | CPU | UNLIMITED | 0 | +------------------+-----------+----------+ | DISK | 10.00GiB | 10.00GiB | +------------------+-----------+----------+ | DISK (DEFAULT) | 5.00GiB | 5.00GiB | +------------------+-----------+----------+ | DISK (FOO) | 5.00GiB | 5.00GiB | +------------------+-----------+----------+ | INSTANCES | UNLIMITED | 2 | +------------------+-----------+----------+ | MEMORY | UNLIMITED | 0B | +------------------+-----------+----------+ | NETWORKS | UNLIMITED | 0 | +------------------+-----------+----------+ | PROCESSES | UNLIMITED | 0 | +------------------+-----------+----------+ | VIRTUAL-MACHINES | UNLIMITED | 0 | +------------------+-----------+----------+ stgraber@dakara:~$
ここでは、プロジェクトがディスク制限付きでセットアップされ、最初にプールの 1 つを非表示にし、それから前に非表示にしたプールに制限を設定する前に、他のプールを埋める様子を見ることができます。
隔離された OVN ネットワーク(アップリンクなし)¶
これまで、すべての OVN ネットワークは、アップリンクのネットワークのセット(network
プロパティ)を持っていました。
これは、外部に面したルーターのポートが配置され、OVN ネットワークへの入出力がすべてこのネットワーク経由で行われるネットワークです。
Incus は、そのアップリンクネットワーク上の IPv4(および・もしくは IPv6)アドレスを選択し、それを使用して、仮想ネットワークから物理ネットワークへのすべてのトラフィックをルーティングします。
このネットワークプロパティの特別な値である none
は、Incus に対して、いかなるアップリンクとも接続されない、完全に分離したネットワークを作成するように指示をします。
root@server01:~# incus network create ovn-isolated network=none --type=ovn Network ovn-isolated created root@server01:~# incus launch images:ubuntu/24.04 c1 --network ovn-isolated Launching c1 root@server01:~# incus list +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | LOCATION | +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ | c1 | RUNNING | 10.248.34.2 (eth0) | fd42:669c:8431:b3cc:216:3eff:fef3:fdb2 (eth0) | CONTAINER | 0 | server01 | +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ root@server01:~# incus exec c1 bash root@c1:~# ping 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. ^C --- 1.1.1.1 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1031ms
ここでは、完全に分離されたネットワークが作成され、コンテナがそこに配置されていることがわかります。
通常どおり、ネットワークは IPv6 と IPv6 アドレスを提供しますが、トラフィックは送信されません。
インスタンスごとの LXCFS ¶
新しいサーバー設定キーである instances.lxcfs.per_instance
が利用できるようになりました。これにより、Incus が、コンテナごとに専用の LXCFS インスタンスを起動します。
これは、システム全体で 1 つの LXCFS インスタンスを起動するというデフォルトとは対照的です。
これを有効にすると、コンテナあたりのリソース消費はわずかに増加します。しかし、特定のコンテナが共通の LXCFS インスタンスを使用できなくなるリスクを減らし、LXCFS のクラッシュは 1 つのコンテナにのみ影響するようになります。
stgraber@castiana:~$ pgrep -a lxcfs 1101 /opt/incus/bin/lxcfs /var/lib/incus-lxcfs stgraber@castiana:~$ incus config set instances.lxcfs.per_instance=true stgraber@castiana:~$ incus restart demo stgraber@castiana:~$ pgrep -a lxcfs 1101 /opt/incus/bin/lxcfs /var/lib/incus-lxcfs 962122 lxcfs -f -p /run/incus/demo/lxcfs.pid --runtime-dir /run/incus/demo/lxcfs /var/lib/incus/devices/demo/lxcfs
create/launch実行時の環境変数ファイルのサポート ¶
OCI コンテナを簡単に実行できるようにするために、環境変数ファイル経由で環境変数を指定できるようになりました。このファイルは、起動時に読み込まれ、Incus の設定オプションに変換されます。
stgraber@castiana:~$ cat mysql.env MYSQL_DATABASE=wordpress MYSQL_USER=wordpress MYSQL_PASSWORD=wordpress MYSQL_RANDOM_ROOT_PASSWORD=1 stgraber@castiana:~$ incus launch docker:mysql mysql --environment-file mysql.env Launching mysql stgraber@castiana:~$ incus config show mysql architecture: x86_64 config: environment.GOSU_VERSION: "1.17" environment.HOME: /root environment.MYSQL_DATABASE: wordpress environment.MYSQL_MAJOR: innovation environment.MYSQL_PASSWORD: wordpress environment.MYSQL_RANDOM_ROOT_PASSWORD: "1" environment.MYSQL_SHELL_VERSION: 9.0.1-1.el9 environment.MYSQL_USER: wordpress environment.MYSQL_VERSION: 9.0.1-1.el9 environment.PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin environment.TERM: xterm image.architecture: x86_64 image.description: docker.io/library/mysql (OCI) image.type: oci volatile.base_image: d8df069848906979fd7511db00dc22efeb0a33a990d87c3c6d3fcdafd6fc6123 volatile.cloud-init.instance-id: f12e3ddb-ac93-4942-b3e1-dcd560893140 volatile.container.oci: "true" volatile.eth0.host_name: vethac8631aa volatile.eth0.hwaddr: 00:16:3e:20:32:87 volatile.idmap.base: "0" volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]' volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]' volatile.last_state.idmap: '[]' volatile.last_state.power: RUNNING volatile.uuid: 5ed7f63b-5b6c-4c89-9dfa-117c2b785370 volatile.uuid.generation: 5ed7f63b-5b6c-4c89-9dfa-117c2b785370 devices: {} ephemeral: false profiles: - default stateful: false description: ""
これは、OCI イメージから作成され、mysql.env
ファイルで定義された環境変数を使う、mysql
コンテナの例です。
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- incus-simplestreams: Fix split images
- [lxd-import] github: stop purging core20
- [lxd-import] github: purge disabled/superseded snaps
- [lxd-import] github: move snap removal to "Reclaim some space" step
- [lxd-import] github: put docker removal its own step
- [lxd-import] github: mask lxc{,-net}.service in a singe command
- [lxd-import] lxd/instance/drivers/driver/qemu: Don't leak file descriptor when probing for Direct I/O support
- [lxd-import] lxd/network/acl: Change protocol field for ovn logs
- [lxd-import] lxd/instance: Reject limits.kernel config for VMs
- [lxd-import] doc:
limits.kernel
only applies to containers (see #12874) - [lxd-import] lxd/storage: Fix resize for pools with custom zfs.pool_name
- [lxd-import] lxd/storage/drivers/driver_zfs_utils: fix typos
- [lxd-import] lxd/storage/drivers/driver_zfs_utils: make it explicit that blocksize is in bytes
- [lxd-import] lxd/task/group: Make cancel type of context.CancelFunc for clarity
- [lxd-import] doc: Add paragraph on how to delete images
- [lxd-import] test: Add exec exit code test
- [lxd-import] lxd/apparmor: allow confined services to receive required signals
- [lxd-import] lxd/rsync: Consistently compare files on nanosecond basis
- [lxd-import] test/suites/migration: Check for file contents after refresh
- [lxd-import] test/suites/migration: Check local and remote instance refreshes based on nanoseconds
- [lxd-import] doc: add paragraph on how to delete images
- [lxd-import] doc: enable multiprocessing for pyspelling
- [lxd-import] Makefile: have run-parts report which script it runs
- [lxd-import] lxd/storage/drivers/ceph: Disable filesystem config keys on block volumes
- [lxd-import] lxd/storage/drivers/lvm: Disable filesystem config keys on block volumes
- [lxd-import] test: Add check to restore custom volumes of type block
- [lxd-import] lxd/storage/drivers/ceph: Update UnmountVolumeSnapshot docstring
- [lxd-import] lxd: Improve error check for existing certificates
- [lxd-import] shared/api: Updates swagger description for certificate field.
- [lxd-import] shared/api: Fix lint errors (receiver-naming).
- [lxd-import] lxd/db/cluster: Fix lint error (revive: var-naming).
- [lxd-import] lxd-migrate: Ignore lint error (revive: deep-exit).
- [lxd-import] lxc/remote: Fix lint errors (revive: exported).
- [lxd-import] lxd/storage/backend: Don't validate custom storage volumes twice
- [lxd-import] lxd-generate: Return helpful error instead of panicking.
- [lxd-import] lxd/storage/backend: Use quotes consistently for error messages
- [lxd-import] lxd/project: Don't panic on StorageVolumeParts
- [lxd-import] github: don't abort on remount failures
- [lxd-import] test/main: add log grouping (GHA)
- [lxd-import] test/main: show dmesg on failure
- [lxd-import] lxd/api/internal: Use correct quoting for error in internalImportFromBackup
- [lxd-import] lxd/db/cluster/devices: Use correct string quoting of device type for error in NewDeviceType
- [lxd-import] lxd/instances/post: Improve error in createFromBackup
- [lxd-import] lxd/storage/backend/lxd: Update backup.yaml after instance and volume DB records have been generated in CreateInstanceFromBackup
- [lxd-import] test/main: don't wrap tests logs in log groups
- [lxd-import] lxd/device/disk: Remove config.iso file when the cloud-init:config disk device is removed
- [lxd-import] lxd/images: Add project to error in autoSyncImages
- [lxd-import] lxd/project/project: Remove optimisation from StorageVolumeProject
- [lxd-import] lxd/storage/volumes: Remove unnecessary 2 line variable definition in doCustomVolumeRefresh
- [lxd-import] lxd/storage/volumes: Remove unnecessary 2 line variable definition in doVolumeCreateOrCopy
- [lxd-import] lxd/storage/volumes: Validate source project in doCustomVolumeRefresh
- [lxd-import] [lxd-import] lxd/storage/volumes: Validate source project in doVolumeCreateOrCopy
- [lxd-import] lxd/db/cluster: Remove redunant parentheses.
- [lxd-import] lxd/db/cluster: Rename "node" to "cluster member".
- [lxd-import] lxd/migrate/storage/volumes: Use volume name from DB in migrationSourceWs.DoStorage
- [lxd-import] lxd/network/network/utils: Fix incorrect conversion from int64 to int in inRoutingTable
- [lxd-import] lxd/network/network/utils: Remove unnecessary call to fmt.Sprintf by passing base to ParseInt
- [lxd-import] lxd/response: Use SmartError if SyncResponse success=false
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Fix error scoping in CreateVolumeFromCopy
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Define send/receive channels together in CreateVolumeFromCopy
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Kill sender if receiver fails in CreateVolumeFromCopy
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Handle multi-line errors in CreateVolumeFromCopy
- [lxd-import] lxd/storage/drivers/driver/btrfs/volumes: Fix hang when btrfs receive fails in RefreshVolume
- [lxd-import] lxd/storage/drivers/driver/btrfs/volumes: Handle multi-line errors in RefreshVolume
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Aligns RefreshVolume with BTRFS driver
- [lxd-import] lxd/response: Fallback to error response after setting headers
- [lxd-import] lxd/storage/backend/lxd: Use volume name from VolumeDBGet in BackupCustomVolume
- [lxd-import] lxd/storage/drivers/btrfs: Clarify fallback in case UUID discovery times out
- incusd/db/cluster: Fix import shadowing
- doc/rest-api: Refresh swagger YAML
- [lxd-import] lxd/db/cluster: Update error messages in unit tests.
- [lxd-import] lxd/storage/drivers: Add volume param to roundVolumeBlockSizeBytes
- [lxd-import] lxd/storage/drivers/zfs: Round to zfs.blocksize or 16KiB
- [lxd-import] test/storage: Add non-power-of-two sized storage check
- [lxd-import] test/storage: Remove zfs rounding test
- [lxd-import] lxd/storage/drivers: Refactor volume size rounding logic
- [lxd-import] lxd/storage/drivers/zfs: Wait for device to appear when activating a volume
- [lxd-import] lxd/storage/drivers/zfs: Check for non /dev/zvol/* paths
- incusd/storage/zfs: Fix import shadowing
- doc/storage_backup: Fix command example
- doc/requirements: Add OCI requirements
- doc/images: Mention OCI images
- incusd/instance/edk2: Support OVMF filenames on arm64
- incusd/instance/drivers/qemu: Limit CPU flag calculation to x86_64
- incus/s3: Fix mcli minio client executable name check
- incusd/instance/qemu: Fix architecture check being backward
- incusd/instance: Fix initial configuration handling for OCI
- client/oci: Add errors for missing skopeo
- client/oci: Add errors for missing umoci
- Change RunDir file mode to 0711
- incusd/instance/lxc: Handle OCI containers using real PID1
- incusd/apparmor/qemu: Relax apparmor rules a bit
- incus-simplestreams: Handle removal of combined images
- incusd/instance/lxc: Add basic Mounts handling for OCI
- incusd/apparmor/qemu: Fix typo in rule
- incusd/apparmor/dnsmasq: Relax rules a bit
- incusd/db/node: Fix version check in GetAPI
- incusd/db: Allow cluster startup with differing API extensions
- incusd: Extend heartbeat data for minimum API extension count
- incusd/storage: Use writeback mode for qemu-img convert
- incusd/storage: Improve unpacking message
- incusd/operations: Handle percentage only updates
- incusd/storage: Pass through tracker to qemu-img
- incusd/db/cluster: Update tests for relaxed API extensions checks
- incusd/apparmor: Implement progress tracker for qemu-img
- incusd/cgroup: Handle unknown devices in io.stat
- incusd/instance_post: Always set the target project
- incusd/storage/drivers: Consistently set VolumeMultiNode
- incusd/storage/lvm: Require an exclusive lock during snapshot
- incusd/storage/lvm: Properly handle activation during resize
- incusd/storage: Properly detect filesystem on remote block
- incusd/cluster: Always attempt to forward custom volume requests
- client: Always set GetBody
- client: Report OIDC refresh failure
- incus/remote: Forward OIDC auth failures
- Make run-parts running compatible with different versions
- client: Retry when told to by the proxy
- Use qemu-img convert output to update progress
- incusd/cluster: Add flagFormat
- internal/cmd: Add support for format options
- incusd/isntance/edk2: Move seabios to /usr/share/qemu
- incusd/isntance/edk2: Add ArchLinux x86_64 paths
- tests: Use future values in property test
- incusd/db/cluster: Cleanup indentation
- incusd/db/cluster: Update schema
- incusd/db/generate: Add exception for cluster tables
- api: clustering_groups_config
- incusd/db/cluster: Add cluster_groups_config
- incusd/db/cluster: Update schema
- shared/api: Add Config to ClusterGroupPut
- doc/rest-api: Refresh swagger YAML
- incusd/db/cluster: Update functions for new cluster group config table
- incusd/cluster: Add cluster group config logic
- doc: Update configs
- incus/completion: Add cmpClusterGroupConfigs
- incus/cluster/group: Add get/set/unset
- i18n: Update translation templates
- doc: Add cluster group config
- tests: Add cluster group config test
- incusd/resources: Add sortedMapKeys
- incusd/resources/cpu: Sort sockets, cores and threads
- incusd/auth: Fill missing local volume location
- incusd/cluster: Correctly record volatile.cluster.group on move
- incusd/migration: Show source errors first
- incusd/instance/qemu: Clarify live migration error
- incusd/cluster: Attempt to ping the server prior to healing
- incusd/instance/qemu: Fix bad timeout errors
- api: instances_lxcfs_per_instance
- incusd/instance/qemu: Send two ACPI events on shutdown
- incusd/instance: Add progress tracking to export
- incusd/server/config: Add instances.lxcfs.per_instance
- incusd/instance/lxc: Add support for per-instance LXCFS
- doc: Update configs
- client: Remove GetBody when can't seek back
- client: Add Seek call to GetBody
- Translated using Weblate (Chinese (Simplified))
- incusd: Simplify image replication
- incusd/images: Only remove from authorizer once
- incusd/images: Correctly record new aliases
- incusd/images: Correctly remove aliases
- incusd/images: Set authorizer entries at the correct time
- incusd/images: Don't alter image info on cluster copy
- incusd/storage_pools: Set authorizer for pending pools
- incusd/networks: Set authorizer for pending networks
- incusd/network: Handle long interface names
- incus/cluster: Cleanup certificate update message
- i18n: Update translation templates
- incus/top: Properly filter disk usage
- incusd/state: Add Cluster gateway
- incusd/daemon: Sort state fields
- incusd/daemon: Add cluster gateway to state
- incusd/acme: Update for state change
- incusd/images: Update for state change
- incusd/operations: Update for state change
- incusd/instances: Update for state change
- incusd/patches: Update for state change
- incusd/cluster: Update for state change
- incusd/instances: Use targetGroupPrefix
- incusd/cluster: Split files
- incusd/cluster: Fix import shadowing
- incusd/cluster: Re-factor healing logic
- incusd/cluster: Improve logging
- incusd/cluster: Reduce dqlite logging
- incusd/cluster: Extend HasConnectivity to do API checking
- incusd/cluster: Add HasConnectivity check to event handling
- incusd: Don't block on startup for cluster queries
- incusd/cluster: Rework offline server detection
- incusd/cluster/evacuation: Add separate healing mode
- incusd/cluster/healing: Try up to 5 times
- incusd/cluster/healing: Add logging
- incusd/device/disk: Fix bad CanMigrate logic
- incusd/storage/lvm: Properly activate/deactivate ISOs
- incusd/images: Expose image type as header
- client: Skip image hash if OCI
- incusd/instance/lxc: Add /init to OCI init paths
- incusd/device: Don't fail on LXCFS device entry
- client: Report source errors too on copy
- incusd/storage: Have roundVolumeBlockSizeBytes return an error
- incusd/instance_post: Fix cross-server live-migration
- incus/image: Correct image copy logic
- incusd/storage/lvm: Hardden common functions
- incusd/api: Don't panic on missing config
- incusd/storage: Add Deactivate flag
- incusd/storage/lvm: Add deactivation step for clusters
- incusd/cluster: Return clear status for servers currently starting up
- incusd/instance/lxc: Reduce logging level
- incusd/instance/qemu: Reduce logging level
- incusd/migrate: Reduce logging
- incusd/storage: Reduce logging
- incusd/instance/qemu: Remove double lifecycle event
- tests/clustering: Use correct target project argument
- incusd/isntance/edk2: Fix CSM handling
- incusd/storage/zfs: Always call tryGetVolumeDiskPathFromDataset
- incusd/network/ovn: Require functional uplink
- doc: add colima instructions
- doc: Update incus_alias.md
- incus/network/load_balancer: Fix example
- i18n: Update translation templates
- incusd/network/ovn: Fix crash on uninitialized external IDs
- doc/instances: Add VM agent install instructions
- shared/api: Add Config to ServerUntrusted
- doc/rest-api: Refresh swagger YAML
- incusd/api_1.0: Expose user.ui config keys to all clients
- doc/server: Mention user.ui config keys
- incusd/auth/oidc: Better handle logout
- incusd/networks: Emit lifecycle event and authz entries for OVN networks
- incusd/network/ovn: Fix indent
- doc/storage_volume: Fix snapshot command
- shared/api: Add EventLifecycleInstanceMigrated
- shared/api: Sort lifecycle events
- incusd/lifecycle: Add InstanceMigrated
- incusd/lifecycle: Sort lifecycle events
- incusd/isntance/operationlock: Add ActionMigrate
- incusd/instance/common: Add support for migration operation
- incusd/instance/qemu: Add support for migration operation and lifecycle
- incusd/instance/lxc: Add support for migration operation and lifecycle
- shared/api: Add lifecycle events for cluster evacuation and healing
- incusd/lifecycle: Add lifecycle events for cluster evacuation and healing
- incusd/cluster: Add lifecycle events for evacuation
- incusd/request: Strip port from event address
- incusd/instance: Properly link instance and operation
- incusd/operations: Add CopyRequestor for nested operations
- incusd/instance: Track operation during exec/console
- doc/clustering: Better document healing
- incusd/instance: Track operation during creation
- incusd/instance: Track operation during deletion
- incusd/instance: Keep track of API operations
- incusd/instance: Set operations on snapshot
- incus-migrate: Properly handle projects
- incusd/apparmor: Allow mounting zfs when delegation is supported
- doc/clustering: Add howto on cluster access
- cmd/incusd: Set keep-alive timeout
- incusd/auth/oidc: Handle cases where we can't set cookies
- incusd/instance/qemu: Deref ceph config path
- incusd/apparmor/qemu: Guess ceph config paths
- Translated using Weblate (Chinese (Simplified))
- Translated using Weblate (Chinese (Simplified))
- Translated using Weblate (Chinese (Simplified))
- incusd/instance/lxc: Respect LXCFS_OPTS
- api: clustering_groups_vm_cpu_definition
- incusd/cluster_groups: Add CPU definition keys
- doc: Update configs
- incusd/instance/qemu: Use cluster group config
- incusd/instance/drivers: Extract GetClusterCPUFlags
- incusd/cluster/group: Support for auto CPU flags
- incusd: Switch OVN to a getter function
- incusd/network: Port to new OVN state function
- incus: Add support for environment file (.env)
- i18n: Update translation templates
- incusd/storage/lvm: Re-try activation/deactivation
- incusd/storage/lvm: Don't activate volumes during cold migration
- Translated using Weblate (Chinese (Simplified))
- Translated using Weblate (Chinese (Simplified))
- shared/cliconfig: Add CacheDir
- incus: Configure a cache directory
- api: disk_volume_subpath
- incusd/device/disk: Allow relative paths within custom volumes
- doc/devices_disk: Mention sub-paths
- tests: Test volume subpaths
- api: projects_limits_disk_pool
- incusd/projects: Add new limits.disk.pool config key
- doc: Update configs
- incus/project: Handle pool disk limits
- incusd/project: Add per-pool disk limits
- incusd/project: Add HiddenStoragePools
- incusd/storage: Hide pools with a zero limit
- tests: Add test for per pool limits
- incus/image/alias: Add support for column selection
- i18n: Update translation templates
- incusd/main_forknet: Make it so our DHCP client never fails
- Translated using Weblate (Chinese (Simplified))
- api: network_ovn_isolated
- incusd/network/ovn: Harden deletion logic
- doc/network/ovn: Cover isolated networks
- incusd/networks: Reserve "none" for uplinks
- incusd/network/ovn: Allow creating isolated OVN networks (no uplink)
- incusd/device/nic_ovn: Handle networks without uplinks
- gomod: Update dependencies
- Release Incus 6.4
ドキュメント ¶
Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)
パッケージ ¶
Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。
Linux 上に Incus サーバーをインストールする ¶
Incus はほとんどの一般的な Linux ディストリビューションで利用できます。インストール手順の詳細は、Incus のドキュメントを参照してください。
https://incus-ja.readthedocs.io/ja/latest/installing/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/installing/ (原文)
Incus クライアントの Homebrew パッケージ ¶
HomeBrew 経由で、Linux と macOS 向けにクライアントツールが利用できます。
https://formulae.brew.sh/formula/incus
Incus クライアントの Chocolatey パッケージ ¶
Chocolatey 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://community.chocolatey.org/packages/incus/6.4.0
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
月次のフィーチャーリリースは、次のリリースがリリースされるまでのみサポートされます。より長いサポート期間と少ない変更頻度が必要な場合、代わりに Incus 6.0 LTS の使用を検討すべきです。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues