ニュース¶
Incus 6.1 リリースのお知らせ¶
7th of May 2024
はじめに ¶
Incus チームは、Incus 6.1 のリリースのアナウンスができてうれしいです!
このリリースは、Incus 6.0 LTS に続く初めての機能リリースです。
機能リリースは、通常は毎月のペースでリリースされ、次の機能リリースがリリースされるまでのみサポートされることに注意してください。重要な本番環境は、機能リリースではなく LTS リリースを使い続ける必要があります。
このリリースでは、全体を通して細かな使い勝手の向上がたくさん行われています。それらの多くは、テキサス大学オースティン校の学生からの初めてのコントリビューションです。Incus 6.2 では、さらに多くの機能が追加されるので期待してください!
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能 ¶
複雑な ZFS プールの作成 ¶
zfs
ドライバーを使ってストレージプールを作成するときのキー source
が拡張され、ストライピング、ミラーリング、raidz1、raidz2 を含む、より複雑な vdev の作成ができるようになりました。
指定例:
/dev/sda,/dev/sdb
(striping, RAID0)mirror=/dev/sda,/dev/sdb
(mirroring, RAID1)raidz1=/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde
(raidz1, RAID5)raidz2=/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde
(raidz2, RAID6)
これを incus info --resources
からのデータと組み合わせることで、API を通して複雑なストレージプールをデプロイできるようになります。
プロジェクトをまたいだプロファイルのリスト表示 ¶
すべての API オブジェクトで、プロジェクトをまたいだクエリーを追加する取り組みの一環として、すべてのプロジェクトをまたいだプロファイルのリスト表示ができるようになりました。
API レベルでは、/1.0/profiles
API エンドポイントでの all-projects=true
のサポートであり、CLI レベルでは次のようになります:
stgraber@dakara:~$ incus profile list --all-projects +-----------------+---------+---------------------------------------+---------+ | PROJECT | NAME | DESCRIPTION | USED BY | +-----------------+---------+---------------------------------------+---------+ | default | default | Default Incus profile | 10 | +-----------------+---------+---------------------------------------+---------+ | demo | default | Default Incus profile | 12 | +-----------------+---------+---------------------------------------+---------+ | lab-cgroup | default | Default Incus profile | 2 | +-----------------+---------+---------------------------------------+---------+ | lab-lvm-cluster | default | Default Incus profile | 3 | +-----------------+---------+---------------------------------------+---------+ | lab-ovn-ic | default | Default Incus profile | 10 | +-----------------+---------+---------------------------------------+---------+ | vpn | default | Default Incus profile for project vpn | 2 | +-----------------+---------+---------------------------------------+---------+
この機能は、テキサス大学オースティン校の学生によるコントリビューションです。
プロジェクトをまたいだネットワークゾーンの一覧表示 ¶
すべての API オブジェクトのプロジェクトをまたいだクエリを追加する取り組みの一環として、すべてのプロジェクトをまたいだネットワークゾーンの一覧表示ができるようになりました。
API レベルでは、これは /1.0/network-zones
API エンドポイントでの all-projects=true
のサポートです。CLI レベルでは次のようになります:
stgraber@dakara:~$ incus network zone list --all-projects +---------+--------------------------+-------------+---------+ | PROJECT | NAME | DESCRIPTION | USED BY | +---------+--------------------------+-------------+---------+ | default | default.demo.example.net | | 0 | +---------+--------------------------+-------------+---------+ | foo | foo.demo.example.net | | 0 | +---------+--------------------------+-------------+---------+
この機能は、テキサス大学オースティン校の学生によるコントリビューションです。
インスタンス配置スクリプトレットで利用できる追加関数 ¶
Incus は、スクリプトレットというPython 風のスクリプトの使用によるインスタンス配置のカスタマイズをサポートしています。スクリプトレットを使用すると、リクエストに対するインスタンス、可能性のあるターゲット、理由についての情報が公開されます。
これらの値に加えて、これらのスクリプトレットでは、多数の関数も公開されています。情報をログに記録する機能、実際に最終的な配置を決定する機能、候補サーバーについての基本的な負荷情報を取得する機能が含まれてます。
これが、2 つの追加関数により拡張されるようになりました:
get_instances(location, project)
=>[]api.Instance
get_cluster_members(group)
=>[]api.ClusterMember
これらはすべて引数がオプショナルなので、すべてのインスタンスのリストやすべてのクラスターメンバーのリストを表示するために使用でき、配置スクリプトで非常に柔軟な対応ができるようになります。
ドキュメント : https://linuxcontainers.org/incus/docs/main/explanation/clustering/#instance-placement-scriptlet
この機能は、テキサス大学オースティン校の学生によるコントリビューションです。
incus
CLI の create コマンドで与える YAML ¶
多くの Incus コマンドは、create
コマンドの一部として標準入力を通して YAML ファイルを読み取る機能をサポートしています。しかし、これらにはあまり一貫性がなく、十分に文書化されていません。現在、一貫性を保つ作業を行っており、次のコマンドでは、YAML 定義を読み取る機能をサポートするようになりました:
incus create
&incus launch
incus cluster group create
incus network acl create
incus network forward create
incus network integration create
incus network load-balance create
incus network peer create
incus network zone create
incus profile create
incus project create
incus snapshot create
incus storage create
incus storage bucket create
これらのすべてで、対応する show
コマンドで表示されるものと同じ YAML データを、オブジェクト生成の一部として設定するために、生成時に標準入力を通してコマンドに与えることができます。
incus
CLI でのカラムのカスタマイズ ¶
CLI での一貫性を徐々に高めているもう 1 つの機能が、リストコマンドで表示するカラムを選択する機能です。
この機能が拡張され、次のコマンドでサポートされるようになりました:
incus cluster list
incus config trust list
incus image list
incus list
incus profile list
incus project list
incus storage volume list
incus storage volume snapshot list
incus warning list
この機能は、テキサス大学オースティン校の学生によるコントリビューションです。
コンテナに対する migration.stateful
設定キー ¶
migration.stateful
設定キーが拡張され、コンテナにも適用されるようになりました。
コンテナでプロセスの状態を記録し、リストアすることが必要な機能(CRIU)にアクセスするには、この設定を true に設定する必要があります。これは、基本的に、ステートフルストップ、ステートフルスナップショット、ライブマイグレーションを意味します。
Incus コンテナのライブマイグレーションやステートフルダンプを実行する CRIU の機能は非常に限定的で、一般的には機能していないと見なされているため、この変更は多くのユーザーに影響を与える可能性は低いです。
この変更には、CRIU を使用するアクションを誤って要求したユーザーに対して、より明確なエラーを提供するという利点があります。
この機能は、テキサス大学オースティン校の学生によるコントリビューションです。
OVN のステートレス ACL ¶
新たに allow-stateless
アクションが Incus のネットワーク ACL に追加されました。
名前の通り、これにより OVN 内にステートレスルールが作成されます。
これは、ステートフルルールに大きなコストがかかり、ステートレスルールとのマッチングが可能である状況(例: DNS インタラクション)に最適です。
この機能は、テキサス大学オースティン校の学生によるコントリビューションです。
インスタンスの uptime(開始時間)トラッキング ¶
新たにインスタンスの状態のデータに StartedAt
フィールドが追加されました。
これにより、インスタンスが起動したタイムスタンプが公開されます。そして、incus info
と incus list
でも利用できます。
stgraber@dakara:~$ incus info speedtest | grep Started Started: 2024/04/29 11:03 EDT stgraber@dakara:~$ incus list -cnstU +-------------+---------+-----------------+----------------------+ | NAME | STATE | TYPE | STARTED AT | +-------------+---------+-----------------+----------------------+ | centos3 | STOPPED | CONTAINER | | +-------------+---------+-----------------+----------------------+ | centos4 | STOPPED | CONTAINER | | +-------------+---------+-----------------+----------------------+ | fga | STOPPED | VIRTUAL-MACHINE | | +-------------+---------+-----------------+----------------------+ | incus-ui | RUNNING | CONTAINER | 2024/05/07 16:54 EDT | +-------------+---------+-----------------+----------------------+ | kernel-test | RUNNING | VIRTUAL-MACHINE | 2024/05/07 15:43 EDT | +-------------+---------+-----------------+----------------------+ | keybase | STOPPED | CONTAINER | | +-------------+---------+-----------------+----------------------+ | ovn-test | RUNNING | VIRTUAL-MACHINE | 2024/05/07 15:43 EDT | +-------------+---------+-----------------+----------------------+ | speedtest | RUNNING | CONTAINER | 2024/04/29 11:03 EDT | +-------------+---------+-----------------+----------------------+ | void | STOPPED | VIRTUAL-MACHINE | | +-------------+---------+-----------------+----------------------+ | win11 | STOPPED | VIRTUAL-MACHINE | | +-------------+---------+-----------------+----------------------+
この機能は、テキサス大学オースティン校の学生によるコントリビューションです。
退避の間のネットワークハンドリングの改良 ¶
クラスターの退避を実行しているとき、退避の終了時にはネットワークはすべてシャットダウンされ、復元アクションの一部としてのみ再開されるようになりました。
これは、退避した Incus サーバーが、定義されたネットワークに対する仮想ルーターとして働かないことを保証し、システムのシャットダウンがネットワーク障害を引き起こす可能性が低くなるので、OVN ネットワーク環境で特に役に立ちます。
この機能は、テキサス大学オースティン校の学生によるコントリビューションです。
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- doc/support: Update for LTS
- incusd/network: Remove bridge.driver=native requirement for extended external_interfaces syntax
- doc/network/bridge: Update extended external_interfaces documentation
- incusd/storage/drivers/zfs: Simplify dataset receive and fix progress handling
- gomod: Update dependencies
- mini-oidc: Merge into main gomod
- gomod: Update dependencies
- go.mod: Bump package major version
- global: Update Go package to v6
- test: Update godeps.list
- README: Update for godoc URLs
- doc/rest-api: Refresh swagger YAML
- cmd/incus: Fix import ordering
- incusd: Remove unneeded import renames
- incusd/instance: Fix duplicate import
- doc/projects: Tweak examples
- shared/api: Remove container resources (deprecated)
- doc/rest-api: Refresh swagger YAML
- incus/create: Remove dead code
- i18n: Update translation templates
- incusd/daemon: Remove old migration logic
- incusd: Stop mentioning containers in resources
- doc/rest-api: Use instances API in example
- incusd/db/cluster: containers URLs aren't valid in Incus
- incusd/instances: Don't start instances when evacuated
- doc/installing: Sort source-build distro instructions
- doc/installing: Add OpenSUSE source instructions
- doc/installing: Add Alpine instructions
- incus/aliases: fix completion regression
- incus/snapshot: Fix deletion of snapshots containing colons
- incusd/instance/drivers: Have SR-IOV get stable MACs
- incusd/device/nic_sriov: Use stable MAC
- incus/profile: Add support for creating from YAML
- i18n: Update translation templates
- incusd/instance/lxc: Only apply soft cgroup limits on cgroup1
- incus/admin: Don't hide the sql command
- grafana: Refresh dashboard
- doc/metrics: Mention Loki in Grafana setup
- grafana: Better filter Loki events by project
- incusd/loki: Use hostname as default instance property on standalone systems
- incusd/loki: Re-order config fields
- incusd/loki: Allow overriding the location field
- incusd/loki: Set location field to local hostname on standalone systems
- incus/projct: Add support for creating project from yaml
- i18n: Update translation templates
- incusd/network/ovs: Port GetOVNEncapIP to libovsdb
- incusd/network/ovs: Add some comments to GetOVNBridgeMappings
- incusd/network/ovs: Port AddOVNBridgeMapping to libovsdb
- incusd/network/ovs: Port RemoveOVNBridgeMapping to libovsdb
- incusd/network/ovs: Port GetHardwareOffload to libovsdb
- incusd/network/ovs: Port GetBridgePorts to libovsdb
- incusd/network/ovs: Port UpdateBridgePortVLANs to libovsdb
- incusd/network/ovs: Port AssociateInterfaceOVNSwitchPort to libovsdb
- incusd/network/ovs: Switch Installed to checking for unix socket
- incusd/network: Update for OVS function changes
- Add missing SecureBoot firmware names
- incus/snapshot: Add support for creating project from yaml
- i18n: Update translation templates
- api: network_zones_all_projects
- shared/api: Add Project field to NetworkZone
- incusd/network_zones: Add support for all-projects
- doc/rest-api: Refresh swagger YAML
- client: Add GetNetworkZonesAllProjects
- incus/network_zone: Add --all-projects flag to list
- i18n: Update translation templates
- tests: Add all-projects network zone test
- incusd/network/ovn: Port LogicalRouterAdd to libovsdb
- incusd/network/ovn: Remove LogicalRouterAdd
- incusd/network: Replace LogicalRouterAdd usage with CreateLogicalRouter
- incusd/network/ovn: gofmt
- incusd/cluster: Disable networks during evacuation
- incusd/cgroup: Set hugepages reserved limits
- incusd/storage/drivers: Introduce SparseFileWrapper
- incusd/storage/drivers/vfs: Use SparseFileWrapper on backup import
- incusd/storage/drivers/vfs: Use SparseFileWrapper on volume migration
- incus/storage: Support creating storage pool from yaml
- i18n: Update translation templates
- incus/info: Show CPU architecture as separate line
- i18n: Update translation templates
- incus/cluster_group: Add yaml support for cluster group create
- i18n: Update translation templates
- gitignore: Add JetBrains
- api: storage_zfs_vdev
- doc: Update ZFS support for multiple block devices and vdev types in doc/reference/storage_zfs.md
- incusd/storage/zfs: Add support for vdev type and multiple block devices
- incus/info: Sorting network interfaces
- incus/network_acl: Add cmd.Example for network acl create
- i18n: Update translation templates
- incus/network_forward: Add yaml example for create
- i18n: Update translation templates
- incus/config_template: Add file support for create
- i18n: Update translation templates
- incus/network_integrations: Add yaml support for create
- i18n: Update translation templates
- incusd/storage/s3: Use 'mc' client
- incusd/storage: Switch to use minio's 'mc' client
- gomod: Update dependencies
- github: Download MinIO client
- doc: Avoid MyST 3.0.0
- incus/doc/installing.md: Add Docker information
- doc: Add Podman to wordlist
- incus/cluster: Add columns to list
- i18n: Update translation templates
- incus/project: Add customazible columns to list
- i18n: Update translation templates
- api: container_migration_stateful
- internal/instance: Add migration.stateful to containers
- incusd/instance/lxc: Add checks for migration.stateful
- doc: Update configs
- incus/network_load_balancer: add Example to create
- i18n: Update translation templates
- incus/network_zone: Add example for create command
- i18n: Update translation templates
- doc: Fix bad sphinx requirements
- incusd/instances/qemu: Tweak secureboot firmware list
- cmd/incus/admin_cluster: Add libexec path for incusd
- incus/storage: Show usage when no driver passed
- incusd/storage/drivers/dir: Tweak path validation
- incusd/backup: Show profile list on lookup error
- incusd/apparmor/lxc: Allow access to binfmt_misc
- incusd/apparmor/lxc: Refresh generated rules
- incusd/storage: Handle instance volume size on import
- incus/profile: Add customizable columns to list
- i18n: Update translation templates
- incus/project: Fix help message for list
- i18n: Update translation templates
- api: profiles_all_projects
- shared/api: Add Project field to Profile
- client: Add GetProfilesAllProjects
- incus/profile: Add all-projects to list
- incusd/db/cluster: Add Project field to Profile
- incusd/profile: Add all-projects support
- doc/rest-api: Refresh swagger YAML
- i18n: Update translation templates
- incus/storage_volume: Clarify volume errors
- incusd/apparmor/lxc: Fix access to kernel/security/apparmor
- api: instances_scriptlet_get_instances
- doc/instances/scriptlet: Add get_instances
- incusd/scriptlet: Add get_instances
- api: instances_scriptlet_get_cluster_members
- doc/instances/scriptlet: Add get_cluster_members
- incusd/scriptlet: Add get_cluster_members
- api: Add network_acl_stateless
- doc/network_acl: Add allow-stateless action
- incusd/network/acl: Add allow-stateless action
- incusd/network/ovn/nb: Port DeleteLogicalRouter to libovsdb
- incusd/network/ovn/nb: Port CreateLogicalRouterSNAT to libovsdb
- incusd/network: Update for OVS function changes
- incusd/network/acl: Properly run instance counting outside of ACL loop
- incusd/network/ovn: Wait up to 1s for dynamic IPs
- incusd/network/ovn/nb: Port DeleteLogicalRouterNAT to libovsdb
- incusd/network: Update for OVS function changes
- shared/archive: Fix typo
- incusd/cluster: Re-organize joining logic
- incusd/cluster: Ignore OVN networks during joining
- shared/archive: Properly anchor exclude rules
- incusd/project: Rework low-level permission checks
- incus/storage_bucket: Add example for storage bucket create
- i18n: Update translation templates
- incus/network_peer: Add example for create command
- i18n: Update trasnlation templates
- api: instance_state_started_at
- shared/api: Add StartedAt to InstanceState
- doc/rest-api: Refresh swagger YAML
- incusd/instance: Add StartedAt to InstanceState
- incus/info: Add Started field
- incus/list: Add started at column
- i18n: Update translation templates
- Makefile: Cleanup gomod update
- gomod: Update dependencies
- tests/mini-oidc: Bump to go-jose/v4
- client/connection: Add support for the socket existing in /run/incus
ドキュメント ¶
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.1.0
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
現在は初期段階ですので、Incus の各リリースは、次のリリースが出るまでしかサポートされません。LXC と LXCFS のリリースと合わせて LTS リリースを計画していますので、この状況はここ数ヶ月で変わるでしょう。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues
Incus 6.0 LTS リリースのお知らせ¶
4th of April 2024
はじめに ¶
Incus チームが Incus 6.0 LTS のリリースをお知らせできることは、大きな誇りであり喜びです。
Incus は、最新のシステムコンテナおよび仮想マシンのマネージャーで、LXD を最初に開発したチームにより開発とメンテナンスが行われています。Apache 2.0 ライセンスのもとでリリースされており、Linux Containersプロジェクトの一部として、コミュニティ主導で運営されています。
Incus はクラウドのような環境を提供し、あらかじめ作成されたイメージからインスタンスを作成し、最大 50 台のサーバーをシームレスにクラスター化する機能を含む、さまざまな機能を提供します。
複数の異なるローカルもしくはリモートのストレージオプション、従来型もしくは完全分散ネットワークをサポートし、完全な REST API と、Ansible や Terraform/OpenTofu などの一般的なツールとの統合を含む、一般的なクラウド機能を提供します。
このリリースは Incus にとって大きなマイルストーンであり、毎月のフィーチャーリリースが適さない本番環境での使用に適した、拡張サポート付きの最初のリリースです。
このリリースが、LXC 6.0 LTS と LXCFS 6.0 LTS に加わり、今回の LTS リリースを締めくくります。
姉妹プロジェクトと同様に、Incus 6.0 LTS は 2029 年 6 月までサポートされます。
最初の 2 年間は、バグとセキュリティの修正に加えて、小規模なユーザビリティの改善が行われ、不定期のポイントリリース(6.0.x)を通して提供されます。その最初の 2 年間の後、Incus 6.0 LTS は、サポート期間の 5 年間の残りはセキュリティ修正のみのメンテナンスに移行します。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
PS: Incus は 70 名を超える個人コントリビューターの作業のおかげで可能になりました。
Incus 0.7 からの変更 ¶
コンテナのスワップに対する制限 ¶
コンテナ向けの既存の設定である limits.memory.swap
が拡張され、バイト単位でも指定できるようになりました。
今回の機能追加で、動作は次のようになります:
limits.memory.swap=true
=> コンテナはスワップ可能(デフォルト)limits.memory.swap=false
=> コンテナはスワップされるべきではない(最小限のスワップ)limits.memory.swap=256MiB
=> コンテナは(limits.memory
で設定されたメモリー制限に加えて)256MiB までのスワップスペースを使用できる
例(cgroup2 を使ったシステム):
stgraber@dakara:~$ incus launch images:debian/12 d12 -c limits.memory=1GiB Launching d12 stgraber@dakara:~$ incus exec d12 bash root@d12:~# free -m total used free shared buff/cache available Mem: 1024 21 983 0 19 1002 Swap: 0 0 0 root@d12:~# exit stgraber@dakara:~$ incus config set d12 limits.memory.swap=128MiB stgraber@dakara:~$ incus exec d12 bash root@d12:~# free -m total used free shared buff/cache available Mem: 1024 21 983 0 19 1002 Swap: 128 0 128 root@d12:~# exit
新しいシェル補完メカニズム ¶
このリリースで、手動でメンテナンスしてた bash 補完(completion)スクリプトからの移行を完了し、コマンドラインツールから直接補完スクリプトを生成できるようになりました。
補完プロファイルが次に対して利用できるようになりました:
- bash
- fish
- powershell
- zsh
プロファイルは incus completion <shell>
(例: incus completion bash
)で呼び出せます。しかしこれは通常、Incus パッケージのビルドプロセスの一部としてパッケージャーによって行われます。
外部ブリッジインターフェースの作成 ¶
外部インターフェース向けの管理ネットワークブリッジの設定構文である bridge.external_interfaces
が拡張され、VLAN インターフェースの作成と接続ができるようになりました。
stgraber@dakara:~$ incus network set incusbr0 bridge.external_interfaces=vlan60/enp35s0/60 stgraber@dakara:~$ ip link show dev vlan60 269: vlan60@enp35s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master incusbr0 state LOWERLAYERDOWN mode DEFAULT group default qlen 1000 link/ether 00:23:a4:01:01:6f brd ff:ff:ff:ff:ff:ff stgraber@dakara:~$ incus network unset incusbr0 bridge.external_interfaces stgraber@dakara:~$ ip link show dev vlan60 Device "vlan60" does not exist. stgraber@dakara:~$
リモートストレージからのディスクがアタッチされたVMのライブマイグレーション ¶
改善を続ける VM のライブマイグレーションサポートの拡張として、"remote" のストレージプール(ceph
もしくは lvmcluster
)から追加ディスクがアタッチされた仮想マシンが、仮想マシンと一緒にライブマイグレーションされるようになりました。
これを行うためのユーザーアクションは不要です。以前は、マニュアルによる incus move --target
やクラスター退避によるライブマイグレーションを拒絶していた仮想マシンが、別のサーバーに適切にライブマイグレーションされるのがわかります。
incus info --resources
中のシステム情報 ¶
incus info --resources
の出力に、新たに System
セクションが追加されました。
stgraber@dakara:~$ incus info --resources System: UUID: 88eecd60-34fc-9f97-48f5-fc34979f48f6 Vendor: ASUS Product: System Product Name Family: To be filled by O.E.M. Version: System Version SKU: SKU Serial: System Serial Number Type: physical Chassis: Vendor: Default string Type: Desktop Version: Default string Serial: Default string Motherboard: Vendor: ASUSTeK COMPUTER INC. Product: ProArt B550-CREATOR Serial: 210382121300122 Version: Rev X.0x Firmware: Vendor: American Megatrends Inc. Version: 2803 Date: 04/28/2022 [snip...]
この情報にアクセスできることは、incus info --resources
を --target
引数とともに使い、特定のサーバーについて問い合わせたり、すべてのファームウェアが最新であることを確認したり、どのマシンを扱っているかをチェックしたりというように、クラスター環境で特に役に立ちます。
この機能は University of Texas at Austin の学生によるコントリビューションです。
incus info --resources
中の USB デバイス ¶
incus info --resources
の出力に、新たに USB devices
セクションが追加されました。
stgraber@dakara:~$ incus info --resources [snip...] USB devices: Device 0: Vendor: Intel Corp. Vendor ID: 8087 Product: AX200 Bluetooth Product ID: 0029 Bus Address: 1 Device Address: 6 Device 1: Vendor: Corsair Vendor ID: 1b1c Product: H150iRGBPROXT Product ID: 0c22 Bus Address: 1 Device Address: 5 Device 2: Vendor: ASUSTek Computer, Inc. Vendor ID: 0b05 Product: AURA LED Controller Product ID: 19af Bus Address: 1 Device Address: 2 Device 3: Vendor: Realtek Semiconductor Corp. Vendor ID: 0bda Product: TX42C500 Product ID: 4933 Bus Address: 5 Device Address: 2 Device 4: Vendor: Blue Microphones Vendor ID: b58e Product: Yeti Stereo Microphone Product ID: 9e84 Bus Address: 5 Device Address: 15 Device 5: Vendor: Yubico.com Vendor ID: 1050 Product: YubiKey FIDO+CCID Product ID: 0406 Bus Address: 5 Device Address: 29 Device 6: Vendor: Logitech, Inc. Vendor ID: 046d Product: HD Pro Webcam C920 Product ID: 082d Bus Address: 5 Device Address: 17 Device 7: Vendor: Powerware Corp. Vendor ID: 0592 Product: Powerware UPS Product ID: 0002 Bus Address: 7 Device Address: 2
この情報は、USB デバイスをコンテナや仮想マシンに追加する場合に非常に役に立ちます。
この機能は University of Texas at Austin の学生によるコントリビューションです。
LXD 5.0 LTS からの変更点 ¶
LXD 5.0 LTS リリースからのユーザー向けに、削除された機能と、その後の LXD 機能リリースと Incus で追加された機能についての簡単なリストを示します。
削除された機能 ¶
Ubunttu や Canonical 固有の多数の機能が、Incus プロジェクト設立の一環として削除されました。
Incus 0.1 リリースのお知らせ に、削除された機能の全リストがあります。
ハイライト:
- VFS idmap shifting 機能を使うようにして、(同じ機能である)
shiftfs
を削除しました - OpenID Connect を使うようにして、
Canonical Candid
を削除しました - OpenFGA を使うようにして、
Canonical RBAC
認証を削除しました Canonical MAAS
機能を削除しました(使用されていない機能)- OVN を使うようにして、
Ubuntu Fan
を削除しました - セキュリティ上の理由から、信頼トークンを使用するようにし、
core.trust_password
は削除しました
追加された機能 ¶
次は、LXD 5.0 LTS のリリース以来 2 年間で導入した多数の新機能から、いくつかハイライトを紹介します。
- API
- プロジェクトをまたがったオブジェクトをリストする機能(CLI の
?all-projects=true
や--all-projects
) - JWT 認証 (TLS証明書から取得)
- プロジェクトをまたがったオブジェクトをリストする機能(CLI の
- インスタンス
- 配置スクリプトレット
- インスタンスのリビルド
- インスタンス状態
READY
- NUMA 対応のインスタンス配置 (
limits.cpu.nodes
) - (コンテナ)
sysinfo
システムコールのインターセプション (security.syscalls.intercept.sysinfo
) - (VM)CPU ホットプラグサポート(
limits.cpu
) - (VM)「オンライン」ライブマイグレーションのサポート
- (VM)AMD SEV のサポート (
security.sev
) - (VM)レガシー BIOS サポート (
security.csm
) - (VM)ディスクにあるディレクトリーのホットプラグ機能
- (VM)I/O バスオプションの NVME と VirtIO
- インテグレーション
- ネットワーク
- ネットワークインテグレーション (OVN)
- IPAM データエクスポート API
- オフロードされた OVN ネットワークの VDPA
- ストレージ
- クラスター LVM ストレージドライバー
- ストレージバケット (S3 API)
- ISO イメージカスタムボリューム
- ZFS 委任管理(delegation)
- ZFS ブロックモード
すべての変更点 ¶
Incus 0.7 からのすべての変更のリストは次のとおりです(翻訳なし):
すべてのChangeLogを見る
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- incus/image: Fix column handling with --all-projects
- Replace util.ValueInSlice with slices.Contains
- shared/util: Delete ValueInSlice function
- incus/image: Fix column handling with --all-projects
- incusd/instance/qemu: Relocate image requirement checks
- doc/images: Add requirements.cdrom_agent
- incusd/instance/qemu: Add support for requirements.cdrom_agent
- incusd/device/disk: Fix incorrect block volume usage
- Translated using Weblate (Japanese)
- incusd/network/ovn: Use ParseIPToNet instead of manual IPToNet and net.ParseIP
- incusd/network/ovn: Use listenAddressNet in family check
- incusd/instance/drivers: Disable architecture check on incus cp with snapshots
- Translated using Weblate (French)
- incusd/network/bridge: Set local address on all VXLAN tunnels
- incus/instance/qemu: Fix RecordOutput
- incus: add completions for instance actions and snapshots
- incus: add completions for profiles
- incusd/network/ovn: Introduce get helper
- incusd/network/ovn: Add some missing indices
- incusd/network/ovn: Use get helper
- incusd/network/ovn: Fix LogicalSwitchPortIPs logic
- incusd/network/bridge: Fix gofmt
- incusd/network/ovn: Fix gofmt
- cmd/incus: Use proper timestamp check
- cmd/incus: Use consistent date format and timezone
- client: Rename network_peer for consistency
- cmd/incusd: Rename network_peer to network_peers
- shared/api: Rename network_allocation for consistency
- incusd/db: Fix comment typoes
- incusd/db/generate: Fix bad camel case handling
- incusd/db/network_peers: Fix duplicate type definitions
- incusd/auth: Drop Permission type
- incusd/auth: Add boilerplate doc strings
- incusd/images: Properly handle null creation and expiry dates
- incus: add completions for remotes
- incus: add completions for projects
- incusd/images: Fix reporting of images in multiple projects
- github: Add static build of lxd-to-incus
- lxd-to-incus: Add support for Alpine service name
- lxd-to-incus: Re-organize target list
- lxd-to-incus: Add support for APK
- Makefile: Add OVN IC to update-ovsdb
- incusd/network: Update OVS/OVN schemas
- incusd/network/ovn: Add IC clients
- incusd/network/ovn: Add GetName to NB client
- incusd/network/ovn: Add GetGateways to ICSB
- incusd/network/ovn: Introduce new errors
- incusd/network/ovn: Add CreateTransitSwitch and DeleteTransitSwitch to ICNB
- incusd/device/gpu_sriov: Add locking
- incusd/device/gpu_sriov: Re-locate vfio-pci loading
- incusd/device/gpu_sriov: Rework VF allocation logic
- incus/remote: Add a generate-certificate sub-command
- i18n: Update translation templates
- incusd/drivers/qmp: Add SetBlockThrottle
- incusd/device/disk/config: Add DiskLimits
- incusd/device/disk: Re-shuffle limit parsing
- incusd/device/disk: Add disk limits on VMs
- incusd/device/disk: Support live limits update for VMs
- incusd/instance/qemu: Support disk I/O limits
- incus/remote: Add missing docstrings
- incusd/certificates: Improve token handling when clustered
- cmd/incusd/api_1.0: Update context
- cmd/incusd/api_cluster: Update context
- cmd/incusd/api_internal: Update context
- cmd/incusd/daemon: Update context
- cmd/incusd/api_project: Update context
- cmd/incusd/certificates: Update context
- cmd/incusd/images: Update context
- cmd/incusd/instance: Update context
- cmd/incusd/network: Update context
- cmd/incusd/operations: Update context
- cmd/incusd/profiles: Update context
- cmd/incusd/storage: Update context
- cmd/incusd/warnings: Update context
- incusd/devices: Skip isolated threads from NUMA CPUs
- incusd/devices: Restrict CPU threads by NUMA node
- incusd/instance/qemu: Add support for limits.cpu.nodes
- incusd/device/gpu: Add support for limits.cpu.nodes for VF selection
- incusd: Fix import shadowing
- incusd/images: Fix potential race condition
- incusd/instance/qemu: Add support for NUMA node restrictions for memory
- incusd/apparmor/qemu: Silence apparmor failures
- incusd/network/ovs: Introduce new errors
- incusd/network/ovn/nb: Move SetChassisGroupPriority to new function signature
- incusd/network/ovn/sb: Move GetLogicalRouterPortActiveChassisHostname to new function signature
- incusd/network/ovs: Move GetBridge to new function signature
- incusd/network/ovs: Move CreateBridge to new function signature
- incusd/network/ovs: Move DeleteBridge to new function signature
- incusd/network/ovs: Move CreateBridgePort to new function signature
- incusd/network/ovs: Move GetChassisID to new function signature
- incusd/network/ovs: Move GetOVNBridgeMappings to new function signature
- incusd/network: Update for function changes
- incusd/device/nic: Update for function changes
- incusd: Update for function changes
- doc: Fix bad snapshot syntax
- Translated using Weblate (French)
- doc: Fix token creation procedure
- incusd/network/ovn/nb: Add GetLogicalSwitch
- incusd/network/ovn/nb: Replace ChassisGroupChassisDelete with SetChassisGroupPriority
- incusd/network/ovn/nb: Port CreateLogicalRouterPort to OVSDB
- incusd/network/ovn/nb: Replace LogicalRouterPortLinkChassisGroup with CreateLogicalRouterPort
- incusd/network/ovn/nb: Port CreateChassisGroup to OVSDB
- incusd/network/ovn/nb: Port CreateLogicalSwitch to OVSDB
- incusd/network/ovn: Update for function changes
- incusd/network/ovn: Remove state references
- incusd/state: Add OVNNB and OVNSB handles
- incusd: Update to use state for OVN
- incusd/device: Make init function return error
- incusd/device: Add OVN check on nicOVN
- client: Still return response on RawQuery error
- incus/query: Respect --raw for errors
- incusd/network/acl: Add OVN check
- incusd/network: Make init function return error
- incusd/network: Add OVN check on ovn driver
- incusd/api: Re-order config checks
- incusd: Add OVN loader
- Translated using Weblate (French)
- incusd/network/ovn/nb: Port CreateLogicalSwitchPort to OVSDB
- incusd/network/ovn/nb: Port DeleteLogicalSwitchPort to OVSDB
- incusd/network/ovn/nb: Port DeleteLogicalRouterPort to OVSDB
- incusd/network/ovn: Update for function changes
- incusd/network/ovs: Port GetOVNSouthboundDBRemoteAddress to OVSDB
- incusd/network/ovs: Port DeleteBridgePort to OVSDB
- incusd/network/ovs: Port GetInterfaceAssociatedOVNSwitchPort to OVSDB
- incusd/network/ovs: Align GetChassisID with other functions
- incusd: Update for OVS function changes
- incusd/network/ovn/icsb: Fix bad DB schema
- incusd/network/ovn/nb: Introduce GetLogicalRouterPort
- incusd/network/ovn/nb: Extend OVNSwitchPortOpts to handle router ports
- incusd/network/ovn/nb: Change type of RouterPort field to OVNRouterPort
- incusd/network/ovn/nb: Port DeleteChassisGroup to OVSDB
- incusd/network/ovn/icnb: Update DeleteTransitSwitch to handle missing switches
- incusd/network/ovn: Update for function changes
- Translated using Weblate (French)
- incus/completion: do not add a space after remote names completion
- incusd/device/disk: Disable virtiofsd caching
- incus-agent: Cleanup mount logic
- Translated using Weblate (French)
- incus: expose parseVolume to entire package
- incus: add completions for storage pools and volumes
- incusd/device/gpu_sriov: Fix default handling
- doc/packaging: Add mention of documentation
- incusd/auth: Fix --all-projects for restricted users
- doc: Add third party tools page
- gomod: Update dependencies
- incusd/auth/tls: Prevent project modifications
- doc: Update wordlist
- internal/usbid: allow path override of usb.ids path
- incus/completion: fix image names completion
- doc/environment: document INCUS_USBIDS_PATH
- incusd/instance/qemu/agent: Check for semanage
- incusd/project: Fix config name in ImageProjectFromRecord
- incus/restart: Fix long description
- i18n: Update translations
- lxd-to-incus: Handle common existing bridges
- shared/simplestreams: Remove defaultOS
- shared/simplestreams: Add NewLocalClient
- incus-simplestreams: Introduce new command
- incus-simplestreams: Simplify delete logic
- doc: Re-organize image server doc
- doc: Add section for incus-simplestreams
- incusd/seccomp: Add support for pidfd threads
- incus: add completions for clusters
- incus: add completions for cluster groups
- incus: add completions for cluster roles
- incus: add completions for config devices
- incus: add completions for config templates
- update translations
- doc: Update references to mage docs
- doc/backup: Remove bad reference
- incus: add completions for network acls
- shared/api: Add new structs to support configuration metadata
- client: Add GetMetadataConfiguration
- incusd: Rename documentation.go -> metadata.go
- doc/rest-api: Refresh swagger YAML
- shared/api/metadata: Add GetKeys to simplify usage
- incusd: Add support for JWT authentication
- gomod: Update dependencies
- tests: Add tls2jwt tool
- tests: Add JWT authentication test
- api: auth_tls_jwt
- doc/authentication: Add section on JWT
- doc/instances: Remove size.state requirement for live migration
- incusd/instance/qemu: Allow live migration without size.state
- shared/idmap: Support uid/gid in subuid/subgid
- shared/cliconfig: Copy clientcerts on remote copy
- shared/cliconfig: Add HasRemoteClientCertificate
- shared/cliconfig: Support per-remote client certificates
- doc: Add clientcerts
- incusd/cluster/config: Add oidc.claim
- incusd/auth/oidc: Add support for using a specific claim as username
- incusd: Pass OIDC claim to verifier
- api: oidc_claim
- doc: Update configs
- doc/howto/instances: Mention extra resources in ISO guidea
- doc/installing: Add Debian backport
- doc: Add backported to dictionary
- lxd-to-incus: Add support for LXD 5.21
- shared/cliconfig: Ensure client certificate key is 0600
- api: device_usb_serial
- doc: Add busnum, devnum and serial to USB devices
- shared/api: Add Serial to ResourcesUSBDevice
- incusd/resources: Add USB Serial
- incusd/devices/usb: Add serial, busnum and devnum options
- doc/rest-api: Refresh swagger YAML
- incusd/instance/qemu: Fix handling of > 64 limits.cpu
- incusd/device/gpu_sriov: Implement NUMA fallback
- incus: add completions for network forwards
- incus: add completions for network load balancers
- shared/validate: Remove stringInSlice
- shared/validate: Add And and Or functions
- shared/util: Move ParseUint32Range
- incusd/project: Update for ParseUint32Range
- doc/instance_options: Remove mention of limits.cpu.nodes from container-only section
- incusd/devices: Better handle bad config
- api: numa_cpu_balanced
- internal/instance: Add support for balanced NUMA nodes
- doc: Update configs
- incusd/instance/common: Add NUMA balancing
- incusd/instance/lxc: Add support for balanced NUMA allocation
- incusd/instance/qemu: Add support for balanced NUMA allocation
- incusd/devices: Add support for balanced NUMA allocation
- incusd/device/gpu_sriov: Simplify NUMA logic
- doc/cloud-init: Don't mention non-existing remotes
- doc/howto/images_remote: Fix wording around image servers
- doc/benchmark: Fix install command
- incusd/instance/common: Fix CanMigrate mutating devices
- incusd/instance/qemu: Reduce agent queries
- incusd/metrics: Don't filter out all server metrics
- incusd/auth/tls: Include project restrictions for metrics certificates
- incusd/auth/tls: Return project-aware checker for metrics
- incusd/metrics: Use project-specific checker if no global access
- internal/server/instance/lxd: add support for image.requirments.nesting
- api: add image_restriction_nesting
- doc/images: introduce requirements.nesting
- Show the count values in snapshot count mismatch error
- incus/admin/init: Use btrfs subvol in --auto
- incus-migrate: Clarify that disk image files must be raw
- incusd/network/ovn/icnb: Fix comment
- incusd/project: Re-format the comments
- incusd/project: Fix bad default value
- doc: Update configs
- incus/migrate: Add CSM support
- incusd/storage/backend: Better handle name conflicts
- incus-migrate: Support using the local server
- api: network_integrations
- shared/api: Add type and target_integration fields to NetworkPeersPost
- incusd/db/cluster: Add networks_integrations
- incusd/db/cluster: Re-generate schema
- incusd/db/cluster: Add generated DB code for network integrations
- incusd/db: Update network peer DB query functions
- client: Add check for network_integrations in CreateNetworkPeer
- incus/network/peer: Add support for network peer types
- shared/api: Add network integrations
- client: Add network integration functions
- incus/network: Introduce support for integrations
- incusd/auth: Add network integration functions
- shared/api: Add lifecycle events for network integrations
- incusd/lifecycle: Add network integration events
- incusd: Add network integration API
- incusd/db: Add GetNetworkPeersURLByIntegration
- incusd/network_integration: Add UsedBy field
- incusd/network_integrations: Add validator
- incusd/network/ovn: Add support for peering with OVN IC
- incusd/project: Add restricted.networks.integrations
- incusd/project: Add NetworkIntegrationAllowed
- incusd/network/integrations: Respect project restrictions
- incusd/network/ovn: Add support for integration restrictions
- incusd/auth/openfga: Update the model
- incusd/auth/openfga: Update the generated model
- incusd/auth/openfga: Handle model updates
- incusd: Remove openfga.store.model_id
- incusd/db/cluster: Remove openfga.store.model_id
- doc/ovn_peers: Add remote peering
- doc: Add documentation for network integrations
- doc/rest-api: Refresh swagger YAML
- i18n: Update translation templates
- doc: Update configs
- gomod: Update dependencies
ドキュメント ¶
Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)
インストール ¶
Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。
Linux パッケージ ¶
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.0.0
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
LXD からの移行 ¶
マイグレーションツールである lxd-to-incus
を使って、LXD から Incus への移行が適切に行えます。
このツールは 4.0 LTS からバグフィックスリリースである LXD 5.21 までのバージョンでテストされています。
このツールで、LXD から Incus への非常に速いマイグレーションが可能になり、潜在的なコンフリクトを事前に自動的にチェックします。
詳細はこちらでご覧いただけます:
https://incus-ja.readthedocs.io/ja/latest/howto/server_migrate_lxd/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/howto/server_migrate_lxd/) (原文)
サポート ¶
Incus 6.0 LTS はトータルで 5 年間(2029 年 6 月)までサポートされます。
最初の 2 年間は、バグとセキュリティ修正、細かな使い勝手の改良を含む新しいポイントリリースが発行されます。最初の 2 年間のあと(Incus 7.0 LTS がリリースされたあと)、Incus 6.0 LTS は、残りの 3 年間はセキュリティ修正のみの提供に移行します。
これは、これまで 10 年間にわたって、我々の他のプロジェクトである LXC や LXCFS で行ってきたことと同じです。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues
Incus 0.7 リリースのお知らせ¶
26th of March 2024
はじめに ¶
Incus チームは、Incus 0.7 のリリースのアナウンスができてうれしいです!
このリリースは、来週を予定している Incus 6.0 LTS のリリース前の最後のリリースです。リリースが進むにつれ、非常に忙しくなっています。LTS リリース前には、LTS に含める新機能の量を最小限にしようとしており、このような形にするのが我々が望む形です。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能 ¶
ネットワークインテグレーション ¶
新しいトップレベルのコンセプトである、ネットワークインテグレーションは、デプロイした Incus を、自身が管理するところの外のネットワークに接続する方法です。
現時点では、このコンセプトの唯一の実装が OVN インターコネクション です。これにより、Incus クラスターが、他の Incus クラスターが実行されている同等のネットワークや、OpenStack や Kubernetes のような他の OVN ユーザーと直接ピアリングできるようになります。
OVN インターコネクションゲートウェイを使用して、新しいネットワークインテグレーションを作成し、それを通して既存のネットワークをピアリングしている例を次に示します。
root@az01-server01:~# incus network integration create ovn-region ovn Network integration ovn-region created root@az01-server01:~# incus network integration set ovn-region ovn.northbound_connection tcp:[10.50.1.12]:6645,tcp:[10.50.2.13]:6645,tcp:[10.50.3.19]:6645 root@az01-server01:~# incus network integration set ovn-region ovn.southbound_connection tcp:[10.50.1.12]:6646,tcp:[10.50.2.13]:6646,tcp:[10.50.3.19]:6646 root@az01-server01:~# incus network peer create default region ovn-region --type=remote Network peer region created
ドキュメント: https://linuxcontainers.org/incus/docs/main/howto/network_integrations/
イメージサーバー管理ツール ¶
Incus イメージサーバーを実行する一般的な方法は、内部サーバーとして実行する場合でも、一般的に利用可能な公開サーバーとして実行する場合でも、simplestreams
を使って Incus イメージを提供する Web サーバーを通して実行することです。
これを簡単にセットアップできるように、新しいツールである incus-simplestreams
を導入しました。これは、シンプルなイメージサーバーを簡単に管理でき、利用可能なイメージの一覧表示、イメージの追加や削除、必要なメタデータファイルの生成ができます。
stgraber@dakara:~$ mkdir image-server stgraber@dakara:~$ cd image-server/ stgraber@dakara:~/image-server$ incus-simplestreams generate-metadata ~/Downloads/incus.tar.xz Operating system name: Red Hat Enterprise Linux Release name: 9 Variant name [default="default"]: Architecture name: x86_64 Description [default="Red Hat Enterprise Linux 9 (default) (x86_64) (202403260239)"]:· stgraber@dakara:~/image-server$ incus-simplestreams add ~/Downloads/incus.tar.xz ~/Downloads/rhel9.qcow2· stgraber@dakara:~/image-server$ incus-simplestreams list +------------------------------------------------------------------+--------------------------------------------------+--------------------------+---------+---------+--------------+-----------------+----------------------+ | FINGERPRINT | DESCRIPTION | OS | RELEASE | VARIANT | ARCHITECTURE | TYPE | CREATED | +------------------------------------------------------------------+--------------------------------------------------+--------------------------+---------+---------+--------------+-----------------+----------------------+ | 7d256e4fac6fc63fb47bc1e07e1c6ee234281cdf1ed21788c920d763b7bd93ba | Red Hat Enterprise Linux 9 x86_64 (202403252239) | Red Hat Enterprise Linux | 9 | default | x86_64 | virtual-machine | 2024/03/25 00:00 UTC | +------------------------------------------------------------------+--------------------------------------------------+--------------------------+---------+---------+--------------+-----------------+----------------------+ stgraber@dakara:~/image-server$ find . | sort . ./images ./images/ef6cf538776b05a64c789f16f235a757522724f2c490c7e118645be2eb920d30.incus.tar.xz ./images/ef6cf538776b05a64c789f16f235a757522724f2c490c7e118645be2eb920d30.qcow2 ./streams ./streams/v1 ./streams/v1/images.json ./streams/v1/index.json
HTTPS 対応の Web サーバーに置き、次のように追加します。
incus remote add my-server https://xyz.example.net --protocol=simplestreams
JSON Web トークン認証 ¶
Incus は基本的にリモート認証のために 2 つのメカニズムをサポートしています。
- TLS クライアント証明書(制限あり、もしくはなしでローカルのトラストストアに追加)
- OpenID コネクト外部認証(認可に OpeFGA を使用、もしくは使用しない)
前者は、リモートの Incus サーバーとシンプルに通信するのにもっとも一般的な方法です。
Incus の CLI ツールとサードパーティのツールは、TLS 鍵ペアを使って HTTPS 接続を確立し、その方法で認証を得ることに問題はありません。
しかし、Incus がリバース HTTP(S) プロキシーの背後で動くような場合など、TLS クライアント証明書が少し問題になる状況があります。
これに対応するため、HTTP の Authorization
フィールドを使った JSON Web Token (JWT) bearer トークンのサポートをするようになりました。有効な TLS クライアント証明書を持つユーザーは、Subject フィールドを証明書フィンガープリントに設定し、適切な NotBefore/NotAfter 値を設定し、秘密鍵で JWT に署名することで、このトークンを生成できます。
Incus はそのような接続を TLS クライアント証明書を使っているのと同等に扱います。
stgraber@dakara:~$ openssl req -x509 -newkey rsa:4096 -sha384 -keyout client.key -nodes -out client.crt -days 1 -subj "/CN=test.local" .+.........+...+...+..+....+......+........+.+.....+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*......+.+......+...+......+......+..+...+...+...............+.......+...+......+...+.....+......+....+......+..+...+......+....+............+.....+....+.....+.+............+..+.........+......+....+......+...........+....+........+...+...+.+...+..+..........+.....+...+......+............+...+.......+........+....+.....+.+..+.......+......+..+....+........+..........+...+..+.+.....+.+......+..+.......+.....+.+..+..........+..+....+..............+.+..+...........................+...+....+......+...+..............+.+..+....+.....+.+.........+...+..+....+..+.............+.........+.....+...+..........+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.....+...+...+..+...+.........+.+...+............+..+............+.+.......................................+.....+...+......+.........+......+.+.....+...+.+...........+......+.......+.....+.......+......+.....+..........+...+..+.........+....+.........+...........+......+.+..................+..+....+...........+.............+.....+....+..+......+............+..........+......+......+......+..+.............+.....+...+.+........+............+....+.................+.........+......+.......+...+.........+.....+....+......+........+.+..+....+......+........+....+...+.................+.+..+.........+....+............+.....+.........+....+.....+.......+.....+...............+..............................+....+........+.......+...........+.......+.....+......+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...+...............+.+...+...+...+.........+..+.+...+..+.......+.....+.+..+...+...................+...........+......+....+..+............+...+.......+..+.........+....+...+.........+.....+...+...+....+...........+...+.+.........+.....+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+...+......+..+...+......+.+..+.............+..+.......+........+...+...+....+...............+..+....+..+....+...+.....+.+.....+..........+.....+.+.....+....+............+.........+...+.....+......+......+.............+..+.+..+.......+...+........+...+.......+.........+......+..+.+......+...........+...+.........+...+...+....+..+.........+....+.....+.+......+.........+..+..........+..+...+...+....+..+...+.+.....+......+.+...+......+.....+.+.....+.......+........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*........+..+.......+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----- stgraber@dakara:~$ incus config trust add-certificate client.crt --restricted --projects demo stgraber@dakara:~$ tls2jwt client.key client.crt now 120 eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MzI3Y2Q5YmIxYTFmN2ExMWM3ODBkZjc4YjVkNjg5YzhkMGQ5YzcwZGQxOGQ1YTMyYzI1M2ZiODA0N2U2M2E0IiwiZXhwIjoxNzExNDcyMjE2LCJuYmYiOjE3MTE0NzIwOTYsImlhdCI6MTcxMTQ3MjA5Nn0.pNQ4AcgoymxWHROXVjcYX8QMKdf9QgRH3zex7qc16avX7_Ax1q_WFWzQWfP48Fh-ooeh9hBQKCQkZxjVxYx8Sy-cNqmkf1AI9KGh5uemHh3FYAbvebCTaIXan0B6glWHVnDSwLZKBWTDDai2VXOmUfntyV9yPJdTqxt1J0j8PNuIWzNVdFlcTxzpggcJMhbcqtf4GRwSMKx69HU5sP4AQ7GJ2cBvN7Im-nkRXTc7xiyYnIsFx0vIWJzojC4zwg0-C1LHKQD4DyEKhqOVISIKUSa3GhD6ajcDuGDS8af4Iz19sNPsSoSULBUG-a7E5lXx2vk802vOFFWV68ZHugsJHpdSpLFwTVixipQ1-QdKRozlMjNPguu-5CYxhZVR1p32lbN9D879xGbFXUgPJVwK25NILvbEMcrqnGPgKcRUjJlHtVljGOgXrjmG7dMiW5QOsyy1eIvJ1D1sNsG02fDTbchTzXHmIybxQTK0FXCyNDLOAl6xgW0Jundg7AN1uJU2cLEWy1x3TusqC7lyeTeF3WYT-G8xE2CU4GpLBeYWyLwuJgxRkaWcg9IXiivguPbWpcT0RMl1bmpn0TJ2VgEPCuSG0mJxMBp8HbAgxwgar8AHdpoZ43dCCwZnB0a0O_kmGkBE2xGKKvgTx_U6eSixZzyyNmHDC1KH1Vy1WW1ZcF0stgraber@dakara:~$· stgraber@dakara:~$ curl -s -k -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MzI3Y2Q5YmIxYTFmN2ExMWM3ODBkZjc4YjVkNjg5YzhkMGQ5YzcwZGQxOGQ1YTMyYzI1M2ZiODA0N2U2M2E0IiwiZXhwIjoxNzExNDcyMjE2LCJuYmYiOjE3MTE0NzIwOTYsImlhdCI6MTcxMTQ3MjA5Nn0.pNQ4AcgoymxWHROXVjcYX8QMKdf9QgRH3zex7qc16avX7_Ax1q_WFWzQWfP48Fh-ooeh9hBQKCQkZxjVxYx8Sy-cNqmkf1AI9KGh5uemHh3FYAbvebCTaIXan0B6glWHVnDSwLZKBWTDDai2VXOmUfntyV9yPJdTqxt1J0j8PNuIWzNVdFlcTxzpggcJMhbcqtf4GRwSMKx69HU5sP4AQ7GJ2cBvN7Im-nkRXTc7xiyYnIsFx0vIWJzojC4zwg0-C1LHKQD4DyEKhqOVISIKUSa3GhD6ajcDuGDS8af4Iz19sNPsSoSULBUG-a7E5lXx2vk802vOFFWV68ZHugsJHpdSpLFwTVixipQ1-QdKRozlMjNPguu-5CYxhZVR1p32lbN9D879xGbFXUgPJVwK25NILvbEMcrqnGPgKcRUjJlHtVljGOgXrjmG7dMiW5QOsyy1eIvJ1D1sNsG02fDTbchTzXHmIybxQTK0FXCyNDLOAl6xgW0Jundg7AN1uJU2cLEWy1x3TusqC7lyeTeF3WYT-G8xE2CU4GpLBeYWyLwuJgxRkaWcg9IXiivguPbWpcT0RMl1bmpn0TJ2VgEPCuSG0mJxMBp8HbAgxwgar8AHdpoZ43dCCwZnB0a0O_kmGkBE2xGKKvgTx_U6eSixZzyyNmHDC1KH1Vy1WW1ZcF0' https://localhost:8443/1.0/projects | jq { "type": "sync", "status": "Success", "status_code": 200, "operation": "", "error_code": 0, "error": "", "metadata": [ "/1.0/projects/demo" ] }
設定可能な OIDC ユーザー名フィールド ¶
OpenID コネクトを使っている方は、ユーザーの識別子として利用可能な場合、Incus が e-mail
クレームを使うことに気づいたかもしれません。見つからない場合、Subject に依存します。
異なるデプロイで OIDC クレームを通して異なる情報が利用可能になる可能性があるため、oidc.claim
をクレームに設定し、ユーザー識別子として使えるようになりました。
stgraber@dakara:~$ incus query s-dakara:/1.0 | jq -r .auth_user_name stgraber@stgraber.org stgraber@dakara:~$ incus config set oidc.claim=name stgraber@dakara:~$ incus query s-dakara:/1.0 | jq -r .auth_user_name Stéphane Graber stgraber@dakara:~$ incus config set oidc.claim=sub stgraber@dakara:~$ incus query s-dakara:/1.0 | jq -r .auth_user_name 99cb8caa-3640-45b9-b87a-55266366aaf3 stgraber@dakara:~$ incus config set oidc.claim=email stgraber@dakara:~$ incus query s-dakara:/1.0 | jq -r .auth_user_name stgraber@stgraber.org
NUMA ハンドリングの改良 ¶
このリリースでは、大規模システムでのコンテナと仮想マシン両方のパフォーマンスを改善するためにかなりの時間を費やしました。これには明らかにマルチソケットシステムが含まれます。それだけでなく、各 CPU が複数の NUMA ノードとして公開される、NPS4 や同様のモードで動作する AMD システムも含まれます。
一般的に、私たちの目標は、CPU とメモリを適切に固定し、NUMA ノードに最も近い PCIe リソースを選択しながら、NUMA ノード間でワークロードを簡単に分散できるようにすることです。
その一環として、いくつかのことを行いました:
limits.cpu.nodes
が仮想マシンでもサポートされるようになりました- 新たに
limits.cpu.nodes
の設定値としてbalanced
を追加しました。これにより Incus は、そのノードを使うように設定されたインスタンスがもっとも少ない NUMA ノードを使います - SR-IOV CPU の選択で、選択ロジックの一部として NUMA ノードも考慮されるようになりました。一致するものが見つからない場合、同じ CPU ソケットに接続されている PCIe デバイスが優先されます
例 :
stgraber@gputest:~$ incus list stgraber-gpu -cns4,limits.cpu.nodes,volatile.cpu.nodes,volatile.gpu.last_state.pci.parent,volatile.gpu.last_state.vf.id +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | NAME | STATE | IPV4 | LIMITS CPU NODES | VOLATILE CPU NODES | VOLATILE GPU LAST STATE PCI PARENT | VOLATILE GPU LAST STATE VF ID | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu01 | RUNNING | 10.232.44.8 (enp5s0) | balanced | 0 | 0000:63:00.0 | 1 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu02 | RUNNING | 10.232.44.9 (enp5s0) | balanced | 2 | 0000:03:00.0 | 1 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu03 | RUNNING | 10.232.44.10 (enp5s0) | balanced | 4 | 0000:e3:00.0 | 1 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu04 | RUNNING | 10.232.44.11 (enp5s0) | balanced | 5 | 0000:c3:00.0 | 2 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu05 | RUNNING | 10.232.44.12 (enp5s0) | balanced | 6 | 0000:c3:00.0 | 1 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu06 | RUNNING | 10.232.44.13 (enp5s0) | balanced | 7 | 0000:83:00.0 | 0 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu07 | RUNNING | 10.232.44.15 (enp5s0) | balanced | 1 | 0000:43:00.0 | 3 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu08 | RUNNING | 10.232.44.16 (enp5s0) | balanced | 2 | 0000:03:00.0 | 0 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu09 | RUNNING | 10.232.44.17 (enp5s0) | balanced | 3 | 0000:03:00.0 | 2 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu10 | RUNNING | 10.232.44.18 (enp5s0) | balanced | 4 | 0000:e3:00.0 | 0 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu11 | RUNNING | 10.232.44.19 (enp5s0) | balanced | 5 | 0000:c3:00.0 | 0 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu12 | RUNNING | 10.232.44.20 (enp5s0) | balanced | 6 | 0000:83:00.0 | 1 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu13 | RUNNING | 10.232.44.21 (enp5s0) | balanced | 7 | 0000:83:00.0 | 2 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu14 | RUNNING | 10.232.44.22 (enp5s0) | balanced | 1 | 0000:43:00.0 | 1 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu15 | RUNNING | 10.232.44.23 (enp5s0) | balanced | 2 | 0000:43:00.0 | 2 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+ | stgraber-gpu16 | RUNNING | 10.232.44.24 (enp5s0) | balanced | 3 | 0000:03:00.0 | 3 | +----------------+---------+-----------------------+------------------+--------------------+------------------------------------+-------------------------------+
この場合、それぞれ NUMA ノードの新しい balanced
オプションを使用し、8 つの NUMA ノード(2 ソケット AMD NPS4)にわたってスケジュールされ、一致するように GPU が選択されていることがわかります。
USB デバイスを選択するための追加の方法 ¶
コンテナと仮想マシンの両方向けの USB デバイスパススルーには、vendorid
と productid
フィールドが使われてきました。これは、いずれか 1 つのタイプの USB デバイスが 1 つだけシステムに接続されている限りは、正常に動作します。
同一のデバイスが複数存在する場合、それらを区別できないことが問題になっていました。
これに対応するため、usb
デバイスに 3 つの新しいフィールドが追加されました:
- busnum
は USB バス番号を参照します
- devnum
は(バス上の)USB デバイス番号を参照します
- serial
は USB デバイスのシリアル番号を参照します(すべてのデバイスに存在するわけではない)
同じフィールドは、次のような Incus リソースの完全なリストで見つけられます:
incus query /1.0/resources
VM 向けのディスク I/O スロットリング ¶
コンテナと仮想マシンの差がまた 1 つ埋まりました。
disk
デバイスの limits.write
と limits.read
プロパティは、QEMU の I/O スロットルを Incus が設定することで、仮想マシンに適切に適用されるようになりました。
1 秒あたりのバイト数、1 秒あたりの I/O 回数の両方の制限をサポートしています。
リモートごとのクライアント証明書 ¶
Incus のコマンドラインクライアントの設定ディレクトリー(通常は ~/.config/incus/
)内の新しい clientcerts
フォルダーに、<remote>.crt
と <remote>.key
ファイルを配置できるようになりました。特定のリモートと通信するときに、それらの証明書が使われるようにします。
これは、それ自身も便利ですが、/etc/incus/config.yml
内に追加する、グローバルリモートと組み合わせるとさらに便利になります。この機能により、それらのグローバルリモートも /etc/incus/clientcerts
で利用できるクライアント証明書を持つことができ、システム上のすべてのユーザーがこれらの証明書を使えるようになります。
クライアント証明書証明書キーペアのマニュアル生成 ¶
メインの client.crt
と client.key
キーペアの生成を手動でトリガーする新しいコマンドが利用できるようになりました。
incus remote generate-certificate
を実行すると行えます。
lxd-to-incus
の改良 ¶
lxd-to-incus
はリリースごとに進化し続けています。
今回は、新たにリリースされた LXD 5.21 LTS からのユーザーの移行や、Alpine インストールの処理をサポートを追加しました。
さらに、このツールの静的バイナリーバージョンが Github から取得できるようになりました。これにより、ユーザーはこのツールの最新版を簡単に取得できるようになり、Incus リリースの間にバグが修正されるのに役立ちます。
incus-migrate
の改良 ¶
ワークロード移行ツールである incus-migrate
にもいくつかの小さな改良が加えられています。
ローカルの Incus システムを移行のターゲットシステムとして使えるようになりました。仮想マシンイメージを他の仮想化ツールからインポートするのに便利です。
インポートする仮想マシンが UEFI ファームウェアを使うか、代わりにレガシーな BIOS を使うかのプロンプトを表示するようにもなりました。
イメージ制限の追加 ¶
少し内部的で詳細な話で、少なくともパブリックなイメージサーバーのオペレーターだけに関係しますが、2 つの新しいイメージの制限が追加されました:
requirements.nesting
: コンテナにsecurity.nesting=true
が設定されていることを要求するrequirements.cdrom_agent
:source=agent:config
デバイスを仮想マシンに追加することを要求する
これら 2 つは、適切に動作するために、追加のユーザー操作が必要な特定のイメージにフラグを立てるために使用できます。その結果、壊れている可能性があるインスタンスが起動するのではなく、明確なクライアントサイドのエラーが発生します。
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- incus/image: Fix column handling with --all-projects
- Replace util.ValueInSlice with slices.Contains
- shared/util: Delete ValueInSlice function
- incus/image: Fix column handling with --all-projects
- incusd/instance/qemu: Relocate image requirement checks
- doc/images: Add requirements.cdrom_agent
- incusd/instance/qemu: Add support for requirements.cdrom_agent
- incusd/device/disk: Fix incorrect block volume usage
- Translated using Weblate (Japanese)
- incusd/network/ovn: Use ParseIPToNet instead of manual IPToNet and net.ParseIP
- incusd/network/ovn: Use listenAddressNet in family check
- incusd/instance/drivers: Disable architecture check on incus cp with snapshots
- Translated using Weblate (French)
- incusd/network/bridge: Set local address on all VXLAN tunnels
- incus/instance/qemu: Fix RecordOutput
- incus: add completions for instance actions and snapshots
- incus: add completions for profiles
- incusd/network/ovn: Introduce get helper
- incusd/network/ovn: Add some missing indices
- incusd/network/ovn: Use get helper
- incusd/network/ovn: Fix LogicalSwitchPortIPs logic
- incusd/network/bridge: Fix gofmt
- incusd/network/ovn: Fix gofmt
- cmd/incus: Use proper timestamp check
- cmd/incus: Use consistent date format and timezone
- client: Rename network_peer for consistency
- cmd/incusd: Rename network_peer to network_peers
- shared/api: Rename network_allocation for consistency
- incusd/db: Fix comment typoes
- incusd/db/generate: Fix bad camel case handling
- incusd/db/network_peers: Fix duplicate type definitions
- incusd/auth: Drop Permission type
- incusd/auth: Add boilerplate doc strings
- incusd/images: Properly handle null creation and expiry dates
- incus: add completions for remotes
- incus: add completions for projects
- incusd/images: Fix reporting of images in multiple projects
- github: Add static build of lxd-to-incus
- lxd-to-incus: Add support for Alpine service name
- lxd-to-incus: Re-organize target list
- lxd-to-incus: Add support for APK
- Makefile: Add OVN IC to update-ovsdb
- incusd/network: Update OVS/OVN schemas
- incusd/network/ovn: Add IC clients
- incusd/network/ovn: Add GetName to NB client
- incusd/network/ovn: Add GetGateways to ICSB
- incusd/network/ovn: Introduce new errors
- incusd/network/ovn: Add CreateTransitSwitch and DeleteTransitSwitch to ICNB
- incusd/device/gpu_sriov: Add locking
- incusd/device/gpu_sriov: Re-locate vfio-pci loading
- incusd/device/gpu_sriov: Rework VF allocation logic
- incus/remote: Add a generate-certificate sub-command
- i18n: Update translation templates
- incusd/drivers/qmp: Add SetBlockThrottle
- incusd/device/disk/config: Add DiskLimits
- incusd/device/disk: Re-shuffle limit parsing
- incusd/device/disk: Add disk limits on VMs
- incusd/device/disk: Support live limits update for VMs
- incusd/instance/qemu: Support disk I/O limits
- incus/remote: Add missing docstrings
- incusd/certificates: Improve token handling when clustered
- cmd/incusd/api_1.0: Update context
- cmd/incusd/api_cluster: Update context
- cmd/incusd/api_internal: Update context
- cmd/incusd/daemon: Update context
- cmd/incusd/api_project: Update context
- cmd/incusd/certificates: Update context
- cmd/incusd/images: Update context
- cmd/incusd/instance: Update context
- cmd/incusd/network: Update context
- cmd/incusd/operations: Update context
- cmd/incusd/profiles: Update context
- cmd/incusd/storage: Update context
- cmd/incusd/warnings: Update context
- incusd/devices: Skip isolated threads from NUMA CPUs
- incusd/devices: Restrict CPU threads by NUMA node
- incusd/instance/qemu: Add support for limits.cpu.nodes
- incusd/device/gpu: Add support for limits.cpu.nodes for VF selection
- incusd: Fix import shadowing
- incusd/images: Fix potential race condition
- incusd/instance/qemu: Add support for NUMA node restrictions for memory
- incusd/apparmor/qemu: Silence apparmor failures
- incusd/network/ovs: Introduce new errors
- incusd/network/ovn/nb: Move SetChassisGroupPriority to new function signature
- incusd/network/ovn/sb: Move GetLogicalRouterPortActiveChassisHostname to new function signature
- incusd/network/ovs: Move GetBridge to new function signature
- incusd/network/ovs: Move CreateBridge to new function signature
- incusd/network/ovs: Move DeleteBridge to new function signature
- incusd/network/ovs: Move CreateBridgePort to new function signature
- incusd/network/ovs: Move GetChassisID to new function signature
- incusd/network/ovs: Move GetOVNBridgeMappings to new function signature
- incusd/network: Update for function changes
- incusd/device/nic: Update for function changes
- incusd: Update for function changes
- doc: Fix bad snapshot syntax
- Translated using Weblate (French)
- doc: Fix token creation procedure
- incusd/network/ovn/nb: Add GetLogicalSwitch
- incusd/network/ovn/nb: Replace ChassisGroupChassisDelete with SetChassisGroupPriority
- incusd/network/ovn/nb: Port CreateLogicalRouterPort to OVSDB
- incusd/network/ovn/nb: Replace LogicalRouterPortLinkChassisGroup with CreateLogicalRouterPort
- incusd/network/ovn/nb: Port CreateChassisGroup to OVSDB
- incusd/network/ovn/nb: Port CreateLogicalSwitch to OVSDB
- incusd/network/ovn: Update for function changes
- incusd/network/ovn: Remove state references
- incusd/state: Add OVNNB and OVNSB handles
- incusd: Update to use state for OVN
- incusd/device: Make init function return error
- incusd/device: Add OVN check on nicOVN
- client: Still return response on RawQuery error
- incus/query: Respect --raw for errors
- incusd/network/acl: Add OVN check
- incusd/network: Make init function return error
- incusd/network: Add OVN check on ovn driver
- incusd/api: Re-order config checks
- incusd: Add OVN loader
- Translated using Weblate (French)
- incusd/network/ovn/nb: Port CreateLogicalSwitchPort to OVSDB
- incusd/network/ovn/nb: Port DeleteLogicalSwitchPort to OVSDB
- incusd/network/ovn/nb: Port DeleteLogicalRouterPort to OVSDB
- incusd/network/ovn: Update for function changes
- incusd/network/ovs: Port GetOVNSouthboundDBRemoteAddress to OVSDB
- incusd/network/ovs: Port DeleteBridgePort to OVSDB
- incusd/network/ovs: Port GetInterfaceAssociatedOVNSwitchPort to OVSDB
- incusd/network/ovs: Align GetChassisID with other functions
- incusd: Update for OVS function changes
- incusd/network/ovn/icsb: Fix bad DB schema
- incusd/network/ovn/nb: Introduce GetLogicalRouterPort
- incusd/network/ovn/nb: Extend OVNSwitchPortOpts to handle router ports
- incusd/network/ovn/nb: Change type of RouterPort field to OVNRouterPort
- incusd/network/ovn/nb: Port DeleteChassisGroup to OVSDB
- incusd/network/ovn/icnb: Update DeleteTransitSwitch to handle missing switches
- incusd/network/ovn: Update for function changes
- Translated using Weblate (French)
- incus/completion: do not add a space after remote names completion
- incusd/device/disk: Disable virtiofsd caching
- incus-agent: Cleanup mount logic
- Translated using Weblate (French)
- incus: expose parseVolume to entire package
- incus: add completions for storage pools and volumes
- incusd/device/gpu_sriov: Fix default handling
- doc/packaging: Add mention of documentation
- incusd/auth: Fix --all-projects for restricted users
- doc: Add third party tools page
- gomod: Update dependencies
- incusd/auth/tls: Prevent project modifications
- doc: Update wordlist
- internal/usbid: allow path override of usb.ids path
- incus/completion: fix image names completion
- doc/environment: document INCUS_USBIDS_PATH
- incusd/instance/qemu/agent: Check for semanage
- incusd/project: Fix config name in ImageProjectFromRecord
- incus/restart: Fix long description
- i18n: Update translations
- lxd-to-incus: Handle common existing bridges
- shared/simplestreams: Remove defaultOS
- shared/simplestreams: Add NewLocalClient
- incus-simplestreams: Introduce new command
- incus-simplestreams: Simplify delete logic
- doc: Re-organize image server doc
- doc: Add section for incus-simplestreams
- incusd/seccomp: Add support for pidfd threads
- incus: add completions for clusters
- incus: add completions for cluster groups
- incus: add completions for cluster roles
- incus: add completions for config devices
- incus: add completions for config templates
- update translations
- doc: Update references to mage docs
- doc/backup: Remove bad reference
- incus: add completions for network acls
- shared/api: Add new structs to support configuration metadata
- client: Add GetMetadataConfiguration
- incusd: Rename documentation.go -> metadata.go
- doc/rest-api: Refresh swagger YAML
- shared/api/metadata: Add GetKeys to simplify usage
- incusd: Add support for JWT authentication
- gomod: Update dependencies
- tests: Add tls2jwt tool
- tests: Add JWT authentication test
- api: auth_tls_jwt
- doc/authentication: Add section on JWT
- doc/instances: Remove size.state requirement for live migration
- incusd/instance/qemu: Allow live migration without size.state
- shared/idmap: Support uid/gid in subuid/subgid
- shared/cliconfig: Copy clientcerts on remote copy
- shared/cliconfig: Add HasRemoteClientCertificate
- shared/cliconfig: Support per-remote client certificates
- doc: Add clientcerts
- incusd/cluster/config: Add oidc.claim
- incusd/auth/oidc: Add support for using a specific claim as username
- incusd: Pass OIDC claim to verifier
- api: oidc_claim
- doc: Update configs
- doc/howto/instances: Mention extra resources in ISO guidea
- doc/installing: Add Debian backport
- doc: Add backported to dictionary
- lxd-to-incus: Add support for LXD 5.21
- shared/cliconfig: Ensure client certificate key is 0600
- api: device_usb_serial
- doc: Add busnum, devnum and serial to USB devices
- shared/api: Add Serial to ResourcesUSBDevice
- incusd/resources: Add USB Serial
- incusd/devices/usb: Add serial, busnum and devnum options
- doc/rest-api: Refresh swagger YAML
- incusd/instance/qemu: Fix handling of > 64 limits.cpu
- incusd/device/gpu_sriov: Implement NUMA fallback
- incus: add completions for network forwards
- incus: add completions for network load balancers
- shared/validate: Remove stringInSlice
- shared/validate: Add And and Or functions
- shared/util: Move ParseUint32Range
- incusd/project: Update for ParseUint32Range
- doc/instance_options: Remove mention of limits.cpu.nodes from container-only section
- incusd/devices: Better handle bad config
- api: numa_cpu_balanced
- internal/instance: Add support for balanced NUMA nodes
- doc: Update configs
- incusd/instance/common: Add NUMA balancing
- incusd/instance/lxc: Add support for balanced NUMA allocation
- incusd/instance/qemu: Add support for balanced NUMA allocation
- incusd/devices: Add support for balanced NUMA allocation
- incusd/device/gpu_sriov: Simplify NUMA logic
- doc/cloud-init: Don't mention non-existing remotes
- doc/howto/images_remote: Fix wording around image servers
- doc/benchmark: Fix install command
- incusd/instance/common: Fix CanMigrate mutating devices
- incusd/instance/qemu: Reduce agent queries
- incusd/metrics: Don't filter out all server metrics
- incusd/auth/tls: Include project restrictions for metrics certificates
- incusd/auth/tls: Return project-aware checker for metrics
- incusd/metrics: Use project-specific checker if no global access
- internal/server/instance/lxd: add support for image.requirments.nesting
- api: add image_restriction_nesting
- doc/images: introduce requirements.nesting
- Show the count values in snapshot count mismatch error
- incus/admin/init: Use btrfs subvol in --auto
- incus-migrate: Clarify that disk image files must be raw
- incusd/network/ovn/icnb: Fix comment
- incusd/project: Re-format the comments
- incusd/project: Fix bad default value
- doc: Update configs
- incus/migrate: Add CSM support
- incusd/storage/backend: Better handle name conflicts
- incus-migrate: Support using the local server
- api: network_integrations
- shared/api: Add type and target_integration fields to NetworkPeersPost
- incusd/db/cluster: Add networks_integrations
- incusd/db/cluster: Re-generate schema
- incusd/db/cluster: Add generated DB code for network integrations
- incusd/db: Update network peer DB query functions
- client: Add check for network_integrations in CreateNetworkPeer
- incus/network/peer: Add support for network peer types
- shared/api: Add network integrations
- client: Add network integration functions
- incus/network: Introduce support for integrations
- incusd/auth: Add network integration functions
- shared/api: Add lifecycle events for network integrations
- incusd/lifecycle: Add network integration events
- incusd: Add network integration API
- incusd/db: Add GetNetworkPeersURLByIntegration
- incusd/network_integration: Add UsedBy field
- incusd/network_integrations: Add validator
- incusd/network/ovn: Add support for peering with OVN IC
- incusd/project: Add restricted.networks.integrations
- incusd/project: Add NetworkIntegrationAllowed
- incusd/network/integrations: Respect project restrictions
- incusd/network/ovn: Add support for integration restrictions
- incusd/auth/openfga: Update the model
- incusd/auth/openfga: Update the generated model
- incusd/auth/openfga: Handle model updates
- incusd: Remove openfga.store.model_id
- incusd/db/cluster: Remove openfga.store.model_id
- doc/ovn_peers: Add remote peering
- doc: Add documentation for network integrations
- doc/rest-api: Refresh swagger YAML
- i18n: Update translation templates
- doc: Update configs
- gomod: Update dependencies
ドキュメント ¶
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/0.7
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
現在は初期段階ですので、Incus の各リリースは、次のリリースが出るまでしかサポートされません。LXC と LXCFS のリリースと合わせて LTS リリースを計画していますので、この状況はここ数ヶ月で変わるでしょう。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues
Incus 0.6 リリースのお知らせ¶
23rd of February 2024
はじめに ¶
Incus チームは、Incus 0.6 のリリースのアナウンスができてうれしいです!
このリリースは、2024 年の 2 回目のリリースで、大小さまざまな多数の改善が加えられています。
クラスターユーザー向けの新しいストレージドライバー、ストレージバケットのインポート・エクスポートのサポート、OVN ユーザー向けの多数の改善、新しいカーネルのコンテナ機能のサポート、移行ツールのかなりの改善などが含まれます。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能 ¶
クラスター LVM ストレージドライバー ¶
lvmcluster
という名前の新しいストレージドライバーを追加しました。
名前のとおり、このドライバーは LVM ストレージドライバーをクラスター化して使うためのドライバーです。
llvmlockd
と sanlock
のようなロックマネージャーを使って、クラスター全体への共有ストレージデバイスへの同時アクセスを提供します。
これは、Incus クラスターを実行し、ファイバーチャンネル SAN、iSCSI エクスポート、NVMEoF/NVMEoTCP ディスクといった共有ストレージデバイスを使いたい人を対象にしています。
すべてのサーバーで同じストレージを使えるので、より高速なライブマイグレーション、サーバーの退避、サーバーが突然停止した場合の自動回復機能のようなことがサポートできます。
ドキュメント : https://linuxcontainers.org/incus/docs/main/reference/storage_lvm/#lvmcluster-driver-in-incus
ストレージバケットのバックアップとインポート ¶
ストレージバケット全体をバックアップし、あとで Incus に再度インポートできるようになりました。
stgraber@dakara:~$ incus storage bucket create default foo Storage bucket foo created Admin access key: HD2GWC1KX693MFVT3P30 Admin secret key: tX9+G9G5UlcuT21yatKIUImSGvcXzPyA7ONgkjUv stgraber@dakara:~$ dd if=/dev/random of=out.img bs=4M count=10 10+0 records in 10+0 records out 41943040 bytes (42 MB, 40 MiB) copied, 0.0975758 s, 430 MB/s stgraber@dakara:~$ s3cmd --host=127.0.0.1:8445 --host-bucket=127.0.0.1:8445 --no-check-certificate --access_key=HD2GWC1KX693MFVT3P30 --secret_key=tX9+G9G5UlcuT21yatKIUImSGvcXzPyA7ONgkjUv put out.img s3://foo upload: 'out.img' -> 's3://foo/out.img' [part 1 of 3, 15MB] [1 of 1] 15728640 of 15728640 100% in 0s 262.42 MB/s done upload: 'out.img' -> 's3://foo/out.img' [part 2 of 3, 15MB] [1 of 1] 15728640 of 15728640 100% in 0s 241.54 MB/s done upload: 'out.img' -> 's3://foo/out.img' [part 3 of 3, 10MB] [1 of 1] 10485760 of 10485760 100% in 0s 241.99 MB/s done stgraber@dakara:~$ s3cmd --host=127.0.0.1:8445 --host-bucket=127.0.0.1:8445 --no-check-certificate --access_key=HD2GWC1KX693MFVT3P30 --secret_key=tX9+G9G5UlcuT21yatKIUImSGvcXzPyA7ONgkjUv ls s3://foo 2024-02-23 03:26 41943040 s3://foo/out.img stgraber@dakara:~$ incus storage bucket export default foo Backup exported successfully! stgraber@dakara:~$ incus storage bucket delete default foo Storage bucket foo deleted stgraber@dakara:~$ incus storage bucket import default backup.tar.gz stgraber@dakara:~$ s3cmd --host=127.0.0.1:8445 --host-bucket=127.0.0.1:8445 --no-check-certificate --access_key=HD2GWC1KX693MFVT3P30 --secret_key=tX9+G9G5UlcuT21yatKIUImSGvcXzPyA7ONgkjUv ls s3://foo 2024-02-23 03:27 41943040 s3://foo/out.img
すべてのプロジェクトをまたいだイメージのリスト表示 ¶
--all-projects
を使って、すべてのプロジェクトをまたいでインスタンスのリスト表示ができるようになったのと同じように、イメージについても同じようなリスト表示ができるようになりました。
stgraber@dakara:~$ incus image list --all-projects +---------+-------+--------------+--------+------------------------------------------+--------------+-----------------+-----------+-------------------------------+ | PROJECT | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE | +---------+-------+--------------+--------+------------------------------------------+--------------+-----------------+-----------+-------------------------------+ | default | | 256f59a72af5 | no | Ubuntu jammy amd64 (20240222_07:42) | x86_64 | VIRTUAL-MACHINE | 267.19MiB | Feb 23, 2024 at 12:27am (UTC) | +---------+-------+--------------+--------+------------------------------------------+--------------+-----------------+-----------+-------------------------------+ | default | | 0941e441dbb9 | no | Alpine edge amd64 (20240222_13:00) | x86_64 | CONTAINER | 2.93MiB | Feb 23, 2024 at 12:27am (UTC) | +---------+-------+--------------+--------+------------------------------------------+--------------+-----------------+-----------+-------------------------------+ | default | | d5fc6024f0fa | no | Openwrt snapshot amd64 (20240222_11:57) | x86_64 | CONTAINER | 3.50MiB | Feb 23, 2024 at 2:55am (UTC) | +---------+-------+--------------+--------+------------------------------------------+--------------+-----------------+-----------+-------------------------------+ | demo | | f44a6b4e56f4 | no | Archlinux current amd64 (20240222_04:18) | x86_64 | CONTAINER | 188.86MiB | Feb 23, 2024 at 3:32am (UTC) | +---------+-------+--------------+--------+------------------------------------------+--------------+-----------------+-----------+-------------------------------+
API では、?all-projects=true
を与えることで行います。
非特権コンテナ内の binfmt_misc ¶
Linux 6.7 で、非特権コンテナ内部での binfmt_misc
のマウントサポートが追加されました。
Incus 0.6 では、この機能をサポートするカーネルを検出し、使える場合には、ホストシステムから binfmt_misc
でのバインドマウントを行わないようになり、代わりにコンテナ内から binfmt_misc
でのマウントを行えるようになります。
stgraber@castiana:~$ incus launch images:ubuntu/22.04 foo Launching foo stgraber@castiana:~$ incus exec foo bash root@foo:~# uname -a Linux foo 6.7.4-zabbly+ #debian12 SMP PREEMPT_DYNAMIC Mon Feb 5 23:37:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux root@foo:~# mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc/ root@foo:~# ls -lh /proc/sys/fs/binfmt_misc/ total 0 --w------- 1 root root 0 Feb 23 03:46 register -rw-r--r-- 1 root root 0 Feb 23 03:46 status
binfmt_misc
ファイルシステムは、エミューレーションのためのカスタムバイナリーフォーマットを定義するために使います。
これは、他のアーキテクチャーのバイナリーを実行するための方法として、qemu-user-static が特によく使われます。
共有ブロックストレージボリュームの制御 ¶
カスタムブロックボリュームを複数のインスタンスから使えるようにするかどうかを制御するために、新たに security.shared
というボリュームストレージオプションを導入しました。
カスタムブロックボリュームをプロファイルに追加する前、もしくは複数の仮想マシンに直接追加する前に、設定を行う必要があります。
stgraber@castiana:~$ incus config device add lvm01 shared disk pool=default source=shared-lvm io.bus=nvme Device shared added to lvm01 stgraber@castiana:~$ incus config device add lvm02 shared disk pool=default source=shared-lvm io.bus=nvme Error: Failed add validation for device "shared": Cannot add un-shared custom storage block volume to more than one instance stgraber@castiana:~$ incus storage volume set default shared-lvm security.shared=true stgraber@castiana:~$ incus config device add lvm02 shared disk pool=default source=shared-lvm io.bus=nvme Device shared added to lvm02 stgraber@castiana:~$ incus config device add lvm03 shared disk pool=default source=shared-lvm io.bus=nvme Device shared added to lvm03 stgraber@castiana:~$ incus start lvm01 lvm02 lvm03
ネットワーク情報で OVN 論理ルーター名を表示 ¶
OVN 内で何が起こっているかが簡単に確認できるように、incus network info
コマンドで、個別のネットワークに対する論理ルーター名が表示されるようになりました。
root@abydos:~# incus network info default Name: default MAC address: 00:16:3e:38:dd:28 MTU: 1500 State: up Type: broadcast IP addresses: inet 10.180.103.1/24 (link) inet6 2602:fc62:a:1004::1/64 (link) Network usage: Bytes received: 0B Bytes sent: 0B Packets received: 0 Packets sent: 0 OVN: Chassis: abydos Logical router: incus-net6-lr
イメージテンプレートのファイルの所有者とパーミッション ¶
テンプレートファイルに uid
、gid
、mode
を設定できるようになりました。
これは、テンプレートが実行可能なシェルスクリプトであることを意図している場合に特に便利です。
stgraber@castiana:~$ incus config metadata show foo architecture: amd64 creation_date: 1708588077 expiry_date: 1711180077 properties: architecture: amd64 description: Ubuntu jammy amd64 (20240222_07:42) name: ubuntu-jammy-amd64-default-20240222_07:42 os: ubuntu release: jammy serial: "20240222_07:42" variant: default templates: /etc/hostname: when: - create - copy create_only: false template: hostname.tpl properties: {} /etc/hosts: when: - create - copy create_only: false template: hosts.tpl properties: {} /root/hello.sh: when: - start create_only: false template: hello.tpl properties: {} uid: "1000" gid: "2000" mode: "0755" stgraber@castiana:~$ incus config template show foo hello.tpl #!/bin/sh echo "Hello world!" stgraber@castiana:~$ incus start foo stgraber@castiana:~$ incus exec foo bash root@foo:~# ls -lh /root/hello.sh -rwxr-xr-x 1 ubuntu 2000 30 Feb 23 04:07 /root/hello.sh root@foo:~# /root/hello.sh Hello world!
ドキュメント : https://linuxcontainers.org/incus/docs/main/reference/image_format/#template-rules
暗号化された EC クライアント証明書の鍵 ¶
リモートの Incus サーバーとやりとりしている方は、Incus の秘密鍵をパスワードで保護できることを知らないかもしれません。
これまで、RSA キーでのみ可能でしたが、Incus 0.6 では、EC キーのサポートが追加されました。ここしばらくで、EC キーがデフォルトになっているので、これは特に重要です。
Documentation: https://linuxcontainers.org/incus/docs/main/authentication/#encrypting-local-keys
この機能を使う場合、Incus の使用中にパスワードプロンプトが表示される回数を大幅に減らすために、最近導入された「キープアライブモード」(keepalive mode)も使いたいと思うでしょう。
lxd-to-incus の改良 ¶
最後に、lxd-to-incus
が大きく改良されました:
- Void Linux サポート
- 設定
boot.debug_edk2
の検出 - OVN SSL データベース接続の扱い
- マイグレーション中の simplestream キャッシュの自動クリーニング
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- incusd/instance/qemu/qmp: Don't risk blocking QMP on eject
- github: Switch to minio deb and pin working version
- github: Use stable MicroCeph
- incusd/db: Fix error handling in CreateNetworkPeer
- incusd/apparmor: Allow more mounts in unprivileged containers
- Translated using Weblate (Portuguese (Brazil))
- incusd/instance/qemu/agent-loader: Handle legacy lxd-agent-loader
- incusd/device/disk: Use genisoimage when mkisofs can't be found
- shared/api: Add example of Chassis in NetworkStateOVN
- doc/rest-api: Refresh swagger YAML
- api: network_state_ovn_lr
- shared/api: Add LogicalRouter field to NetworkStateOVN
- incusd/network/ovn: Expose LogicalRouter name
- incus: Add OVN logical router name
- i18n: Update translation templates
- doc/rest-api: Refresh swagger YAML
- scripts/bash: Don't follow aliases
- Translated using Weblate (Japanese)
- test: Adapt test_database_no_disk_space() to newer libraft versions
- incus/launch: Fix --console
- api: image_template_permissions
- doc: Add uid/gid/mode to image template metadata
- shared/api: Add owner/permission fields to ImageMetadataTemplate
- doc/rest-api: Refresh swagger YAML
- incusd/instance/lxc: Add support for template ownership/mode
- incus-agent: Add support for template ownership/mode
- lxd-to-incus: Add comment
- lxd-to-incus: Add cache cleanup logic
- .github: Bump minimum Go version to 1.21
- Makefile: Bump minimum Go version to 1.21
- gomod: Update dependencies
- doc: Bump minimum Go version to 1.21
- Translated using Weblate (French)
- incusd/daemon: Fix log format
- incusd/sys: Sort kernel features
- incusd/sys: Add doc strings
- incusd/checkfeature: Add unprivileged binfmt detection
- incusd/sys: Add UnprivBinfmt
- incusd/daemon: Detect unprivileged binfmt_misc
- incusd/api_1.0: Add unpriv_binfmt kernel feature
- incusd/instance/lxc: Support unpriv binfmt_misc
- incusd/apparmor: Support unpriv binfmt_misc
- Translated using Weblate (Italian)
- completion: support returning non-incus remotes
- incus/image: add dynamic command line completions
- shared/cliconfig: Support SSH encrypted keys
- tests: Add crypto/ssh
- doc/remotes: Add mention of keepalive
- doc: Add Ansible to wordlist
- doc/authentication: Hints on encrypting client key
- api: images_all_projects
- lxd-to-incus: Indicate what existing configuration was found
- shared/api: Add project property to Image
- client: Add GetImagesAllProjects
- incusd/images: Add support for all_projects
- doc/rest-api: Refresh swagger YAML
- incus/image: Add --all-projects flag to list
- i18n: Update translation templates
- shared/cliconfig: Fix static analysis
- gomod: Update dependencies
- Makefile: Pin rpc2 version due to OVN issue
- incusd/instance/qemu: Re-shuffle agent NIC handling
- incusd/instance/qemu/agent-loader: Handle SELinux
- incus/config: add completions
- incus-agent: Load virtio_net before configuring NICs
- incus: Run gofmt
- doc/storage/lvm: Cleanup tables
- incusd/patches: Move lvm.vg.force_reuse to be server-specific
- incusd/db: Mark lvm.vg.force_reuse as server-specific
- doc/faq: Add mention of the -mtu network interfaces
- incusd/device: Bump base VM filesystem volume to 500MiB
- incusd/storage: Create rootfs dir on empty instances
- incusd/storage/quota: Don't fail on missing project
- incusd/instances: Use correct project on cross-project copy
- incusd/patches: Fix bad SQL query
- incusd/instances: Don't bypass instance limit check
- Added translation using Weblate (Portuguese)
- incus-agent: Re-order imports
- api: Add storage_bucket_backup extension
- shared/api: Add storage bucket backup
- incusd/db: Add storage bucket backup functions
- incusd/db/operation: Add storage volume backup types
- incusd/lifecycle: Add storage bucket backup events
- incusd/project: Add StorageBucket function
- incusd/storage/s3: Add transfer manager
- incusd: Add storage bucket backup
- client: Add storage bucket backup
- incus: Add storage bucket import/export
- doc/rest-api: Refresh swagger YAML
- i18n: Update translation templates
- test: Add storage bucket backup
- client: Remove ceph-specific logic
- incusd/storage/s3: Fix typo
- incus: Fix import shadowing
- incus: Fix comments on exported functions
- client: Fix comments on exported functions
- incusd: Fix import shadowing
- incusd: Fix comments on exported functions
- incusd/cluster: Make remote storage volume logic generic
- incusd/db: Don't hardcode remote storage drivers
- incusd/storage_volumes: Don't hardcode ceph
- incusd/instances: Update ceph-specific comment
- incusd/cluster: Update ceph-specific comment
- incusd/instances: Generalize Ceph logic
- lxd-to-incus: Support SSL authentication in OVN
- lxd-to-incus: Don't fail on missing OVN bridge mapping
- lxd-to-incus: Ignore OVN chassis external_ids
- lxd-to-incus: Add boot.debug_edk2 to deprecated keys
- lxd-to-incus: Support Void Linux
- cmd/incusd: Disable the architecture check on incus cp/mv
- incusd/instance: Disable the architecture check on incus cp/mv
- api: storage_lvm_cluster
- incus/admin/init: Add LVM cluster logic
- i18n: Update translation templates
- lxd-to-incus: Add LVM cluster
- doc: Add LVM cluster
- shared/api: Add cephobject
- shared/api: Add lvmcluster
- doc/rest-api: Refresh swagger YAML
- incusd/storage/lvm: Add clustered LVM
- incusd/storage/lvm: Fix import shadowing
- incusd/storage/lvm: Tweak locking in cluster
- internal/server/device/config: Don't include empty values
- internal/server/device/config: Fix return values of Update function
- api: Add shared_custom_block_volumes API extension
- doc/reference: Add
security.shared
config key - instance/server/device: Validate shared block devices
- internal/server/storage: Handle
security.shared
update - internal/server/storage: Allow security.shared key for custom block volumes
- internal/server/storage/drivers: Handle security.shared in fillVolumeConfig
- incusd/instance/qemu: Cap hotplug CPU slots to 64
- incusd/storage/lvm: Make gofmt happy
- shared/subprocess: Improve error handling
- incusd/instance/qemu: Improve error handling
- incusd/network/ovs: Wait for bridge interface to appear
- incusd/storage/zfs: Fix refresh of VM volumes
- internal/instance: Fix volatile key definitions
- doc: Update configs
- incusd/network/ovn: Extend validateExternalSubnet to allow uplink subnets
- incusd/network/ovn: Add static routes to load-balancer and forwards
- gomod: Update dependencies
ドキュメント ¶
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/0.6
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
現在は初期段階ですので、Incus の各リリースは、次のリリースが出るまでしかサポートされません。LXC と LXCFS のリリースと合わせて LTS リリースを計画していますので、この状況はここ数ヶ月で変わるでしょう。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues
Incus 0.5.1 リリースのお知らせ¶
29th of January 2024
はじめに ¶
Incus チームは、Incus 0.5.1 のリリースのアナウンスができてうれしいです!
通常、毎月の機能リリースに加えてポイントリリースを行わないため、このリリースは異例のリリースです。しかし、非常に重要なバグ修正のいくつかと、CentOS/Alma/Rocky 仮想マシンを実行するために必要なマイナーな機能追加があるので、今回のリリースが必要でした。
ほとんどの変更はサーバー側であるため、コマンドラインクライアントを使うのみの場合は、0.5 から 0.5.1 にアップグレードする強い理由はありません。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
ハイライト ¶
VM エージェントを取得するための別の方法 ¶
Incus 0.5 で、Incus の VM エージェントを配布するメカニズムが少し変わりました。
以前は、インスタンス固有のエージェント設定と incus-agent
バイナリーの両方を含む config
という名前の単一の共有がありました。
これは少し無駄であり、各 VM に 15-20MB の大きな incus-agent
のコピーが必要です。しかし、それでもある程度は管理できました。この共有は 9p
と virtiofs
の両方でも公開されます。Incus VM ごとにホストシステム上で 2 つのプロセスが実行されることになります。
複数のエージェントバイナリーのサポートで、全 VM にバイナリーをコピーすることは選択肢ではなくなりました。そのため、バイナリー向けに別の共有が導入されました。VM ごとにホスト上でさらに 2 つのプロセスが実行されることは本当に望ましくなかったので、それらの内部共有は 9p
を通して利用できるようにすることに決定しました。
CentOS 7 を含む、さまざまなイメージでテストしたところ、これで問題がないことがわかりました。
9p
は virtiofs
にくらべてパフォーマンスが劣りますが、これらの共有は VM の起動ごとに数秒しか使わないため、実際には問題にはなりませんでした。ユーザー定義の共有は、引き続き virtiofs
を通して公開されるため、この共有には引き続き高いパフォーマンスのオプションが提供されます。
われわれが気づかなかった問題は、CentOS 8-Stream、CentOS 9-Stream や他の RHEL 8/9 派生のディストリビューションでは、9p
カーネルドライバーが同梱されていないことでした…
これらのインスタンスでは、エージェントを取得する方法がなくなり、incus exec
と incus file
が正常に動かないことになりました。
いくつかのイメージ上で動かすために、Incus VM ごとに 4 つのホストプロセスを実行するのは気が進みません。その代わり、Incus 0.5.1 では新たなエージェントドライブを導入しました。これは、特定の VM にアタッチできる追加ディスクです。ネットワークファイルシステムからファイルを取得するのではなく、CD-ROM ドライブに見えるところからファイルを提供します。
このため、CentOS 9-Stream を動かすには、次のようにする必要があります:
incus create images:centos/9-Stream centos --vm incus config device add centos agent disk source=agent:config incus start centos
このような VM を多数動作させる場合、このような VM 用にプロファイルを作成するのが良いでしょう:
incus profile create vm-agent incus profile device add vm-agent agent disk source=agent:config
プロファイルを作成すると、次のようにできます:
incus launch images:centos/9-Stream centos --vm -p default -p vm-agent
これは、明らかに理想的ではなく、これらのディストリビューション用の VM を作成するときに、いくつか手順が追加されますが、この新しいメカニズムにより、ほぼすべての環境でエージェントを起動して実行する方法が提供できます。
注意: CD-ROM デバイスを生成するにはリソースが必要であり、ホスト上の追加ディスクを使います。このため、追加のデバイスを常に提供することは考えていません。必要なときだけ追加するのが最適です。
退避中の停止中インスタンスのハンドリングの修正 ¶
Incus 0.5 で混入したバグにより、インスタンスがそのままの場所にとどまるように設定されていても、退避中に他のシステムに移動してしまうことがありました。
この問題は修正され、stopped
、force-stop
、stateful-stop
使っているインスタンスは、現在のサーバーにとどまるようになりました。
データベースパフォーマンスの修正 ¶
Incus 0.5 で行われたデータベースの改善で、多数のインスタンスのネットワーク情報の詳細を取得する際、ネストしたデータベースのトランザクションが発生してしまうことがありました。
これは、DNS ゾーンを提供し、Prometheus がメトリクスを取得する Incus クラスターを使っているときのみ表面化します。このコンビネーションにより、15 秒程度ごとに API リクエストが急増し、タイムアウトとリトライがトリガーされはじめ、最終的には API リクエストが積み重なり、タイムアウトします。
このようなネストしたトランザクションを削除するためにロジックを変更しました。そして、インスタンスのコマンドインスタンスを実行するようなコマンド API 対話中の一部のデータベース処理を節約するようなさらなる最適化も行われました。
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- Translated using Weblate (German)
- Translated using Weblate (Dutch)
- incus/action: Fix resume
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- Translated using Weblate (Japanese)
- doc: Remove net_prio
- incusd/cgroup: Fully remove net_prio
- incusd/warningtype: Remove net_prio
- incusd/cgroup: Look for full cgroup controllers list at the root
- incusd/dns: Serialize DNS queries
- incusd/network: Optimize UsedByInstanceDevices
- incusd/backups: Simplify missing backup errors
- tests: Update for current backup errors
- incusd/cluster: Optimize ConnectIfInstanceIsRemote
- incusd/instance/qemu/agent-loader: Fix to work with busybox
- doc/installing.md: add a gentoo-wiki link under Gentoo section
- Translated using Weblate (French)
- Translated using Weblate (Dutch)
- incusd/device/disk: Better cleanup cloud-init ISO
- incusd/instance/qemu/qmp: Add Eject command
- incusd/instance/qemu/qmp: Handle eject requests
- api: agent_config_drive
- doc/devices/disk: Add agent:config drive
- incusd/device/disk: Add agent config drive
- incusd/project: Add support for agent config drive
- incusd/instance/qemu/agent-loader: Handle agent drive
- incusd/db/warningtype: gofmt
- incusd/loki: Sort lifecycle context keys
- incusd/instance/qemu/agent-loader: Don't hardcode paths
- incusd/cluster: Fix evacuation of stopped instances
ドキュメント ¶
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/0.5
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
現在は初期段階ですので、Incus の各リリースは、次のリリースが出るまでしかサポートされません。LXC と LXCFS のリリースと合わせて LTS リリースを計画していますので、この状況はここ数ヶ月で変わるでしょう。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues
Older news¶
- Incus 6.1 リリースのお知らせ
- 複雑な ZFS プールの作成
- プロジェクトをまたいだプロファイルのリスト表示
- プロジェクトをまたいだネットワークゾーンの一覧表示
- インスタンス配置スクリプトレットで利用できる追加関数
- incus CLI の create コマンドで与える YAML
- incus CLI でのカラムのカスタマイズ
- コンテナに対する migration.stateful 設定キー
- OVN のステートレス ACL
- インスタンスの uptime(開始時間)トラッキング
- 退避の間のネットワークハンドリングの改良
- Linux 上に Incus サーバーをインストールする
- Incus クライアントの Homebrew パッケージ
- Incus クライアントの Chocolatey パッケージ
- Incus クライアントの Winget パッケージ
- Incus 6.0 LTS リリースのお知らせ
- コンテナのスワップに対する制限
- 新しいシェル補完メカニズム
- 外部ブリッジインターフェースの作成
- リモートストレージからのディスクがアタッチされたVMのライブマイグレーション
- incus info --resources 中のシステム情報
- incus info --resources 中の USB デバイス
- 削除された機能
- 追加された機能
- Linux パッケージ
- Incus クライアントの Homebrew パッケージ
- Incus クライアントの Chocolatey パッケージ
- Incus クライアントの Winget パッケージ
- Incus 0.7 リリースのお知らせ
- ネットワークインテグレーション
- イメージサーバー管理ツール
- JSON Web トークン認証
- 設定可能な OIDC ユーザー名フィールド
- NUMA ハンドリングの改良
- USB デバイスを選択するための追加の方法
- VM 向けのディスク I/O スロットリング
- リモートごとのクライアント証明書
- クライアント証明書証明書キーペアのマニュアル生成
- lxd-to-incus の改良
- incus-migrate の改良
- イメージ制限の追加
- Linux 上に Incus サーバーをインストールする
- Incus クライアントの Homebrew パッケージ
- Incus クライアントの Chocolatey パッケージ
- Incus クライアントの Winget パッケージ
- Incus 0.6 リリースのお知らせ
- クラスター LVM ストレージドライバー
- ストレージバケットのバックアップとインポート
- すべてのプロジェクトをまたいだイメージのリスト表示
- 非特権コンテナ内の binfmt_misc
- 共有ブロックストレージボリュームの制御
- ネットワーク情報で OVN 論理ルーター名を表示
- イメージテンプレートのファイルの所有者とパーミッション
- 暗号化された EC クライアント証明書の鍵
- lxd-to-incus の改良
- Linux 上に Incus サーバーをインストールする
- Incus クライアントの Homebrew パッケージ
- Incus クライアントの Chocolatey パッケージ
- Incus クライアントの Winget パッケージ
- Incus 0.5.1 リリースのお知らせ
- VM エージェントを取得するための別の方法
- 退避中の停止中インスタンスのハンドリングの修正
- データベースパフォーマンスの修正
- Linux 上に Incus サーバーをインストールする
- Incus クライアントの Homebrew パッケージ
- Incus クライアントの Chocolatey パッケージ
- Incus クライアントの Winget パッケージ
- Older news