Incus 6.5 リリースのお知らせ¶
2024/09/06
はじめに ¶
Incus チームは、Incus 6.5 のリリースのアナウンスができてうれしいです!
このリリースでは、パフォーマンスに重点が置かれました。多数のプロファイルやデバイスを解決するようなコストの掛かる内部呼び出しが大幅に最適化され、パフォーマンスが最大 20 〜 30 倍向上しました。同様に、サーバーごとに数千のインスタンスを持つシステムの処理が大幅に改善され、起動チェックが数十分から数十秒に短縮されました。
Incus 6.5 は、単なるバグフィックスのリリースではなく、多くの新機能やその他の改善も導入しています。CLI エクスペリエンスをより一貫性のあるものにし、仮想マシン上で低レベルのアクションをより簡単に実行できるようにし、アプリケーションコンテナユーザの生活を改善し、OVN ユーザのために多くの素晴らしい新機能を提供するなど、このリリースはすべての人に何かを提供します!
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能 ¶
インスタンスの自動再起動 ¶
Incus でのアプリケーションコンテナのサポートを初めて公表して以来良く寄せられる要望に、インスタンスが終了したときに、自動的に再起動する機能があります。これにより、アプリケーションのクラッシュやリロードの処理が容易になります。
この機能は、新たに追加された boot.autorestart
設定キーで設定します。true
に設定すると、Incus は 1 分間に最大 10 回まで、特定のインスタンスの再起動を試行します。
ユーザーがインスタンスのシャットダウンや停止をリクエストしたとしても、この自動再起動ロジックはトリガーされません。
stgraber@castiana:~$ incus launch docker:nginx nginx -c boot.autorestart=true Launching nginx stgraber@castiana:~$ incus info nginx | grep PID PID: 178789 stgraber@castiana:~$ sudo kill -9 178789 stgraber@castiana:~$ incus list nginx +-------+---------+----------------------+-----------------------------------------------+-----------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-------+---------+----------------------+-----------------------------------------------+-----------------+-----------+ | nginx | RUNNING | 10.178.240.76 (eth0) | fd42:8384:a6f8:63a0:216:3eff:fef4:5a27 (eth0) | CONTAINER (APP) | 0 | +-------+---------+----------------------+-----------------------------------------------+-----------------+-----------+ stgraber@castiana:~$
ドキュメント : https://linuxcontainers.org/incus/docs/main/reference/instance_options/#boot-related-options
すべての list コマンドでカラム選択が可能に ¶
ここ数回のリリースで、incus
CLI コマンドの一貫性の向上に取り組んできました。これは、すべての list
コマンドで --format
オプションをサポートすることから始まりました。そして、今回のリリースでは、すべての list
コマンドが --columns
もサポートするようになりました。
これにより、簡単に出力をカスタマイズできるだけでなく、--format=csv
と --column=
の両方を組み合わせて、必要な列だけを選択することで、incus
コマンドを使ったスクリプト作成がはるかに簡単になります。
stgraber@castiana:~$ incus snapshot list v1 --columns=nT --format=csv snap0,2024/09/06 15:04 EDT snap1,2024/09/06 15:04 EDT
QMP コマンドフックとスクリプトレット ¶
Incus は、現時点では仮想マシンの実行は QEMU に依存しています。
Incus が QEMU とやりとりする方法は、実際には次の 3 つの異なるメカニズムを通して行うため、ときどき少し複雑になる可能性があります:
- QEMU コマンドライン
- QEMU 設定ファイル
- QEMU マシンプロトコル(QMP)
通常は、コマンドラインの汚染を可能な限り防ぐため、使用は最小限に抑えられていますが、raw.qemu
を通して、ユーザーが追加の引数を渡すことができるようになっています。
ライブアップデートが不要なデバイスや、ホットプラグやホットリムーブが不要なデバイスでは、QEMU 設定ファイルの使用をおすすめします。これは簡単にテンプレート化でき、テストが非常に簡単です。Incus には、設定ファイルの内容を拡張したり、上書きするために使える raw.qemu.conf
設定オプションがあります。
そして、ホットプラグ可能なもの、つまり実質、ディスク、ネットワークインターフェース、USB デバイスや、その他の PCI デバイスすべてに使える QMP があります。QEMU チームは、徐々に設定ファイルを廃止しようとしていますので、VM 設定の多くを徐々に QMP に移行していくつもりです。
これまでのところ、QMP の主な問題は、QEMU のコマンド ラインや構成ファイルとは異なり、非常に不透明であることです。構成された内容を簡単に確認することはできず、これらのオブジェクトはすべて QEMU の起動後に構成されるため、既存のメカニズムを使用してそれらを上書きしたり再構成したりすることはできませんでした。
しかし、いくつかの新しい構成オプションのおかげで、状況が変わりました:
raw.qemu.qmp.early
raw.qemu.qmp.pre-start
raw.qemu.qmp.post-start
raw.qemu.scriptlet
最初の 3 つは、QMP コマンドの JSON リストを受け取ります。通常、QMP コマンドはすべて JSON でエンコードされているため、インスタンス構成に多数のカスタム コマンドを簡単に追加できます。コマンドは、指定された時間のいずれかで順番に実行されます。
early
は Incus が QMP を通じて何かを追加する前に実行され、pre-start
は Incus が QMP を通じてすべてのデバイスを追加した後に実行され、post-start
は QEMU が VM を起動するように指示した直後に実行されます。
raw.qemu.scriptlet
はさらに柔軟なオプションで、qemu_hook
という関数を定義し、stage
を引数として渡すスクリプトレット(Python のような構文)を受け取ります。そのステージは early
、pre-start
、または post-start
のいずれかです。これと raw.qemu.qmp
オプションの違いは、スクリプトレットがコマンド応答を処理でき、それに反応するロジックを持つことができることです。
つまり、この QEMU スクリプトレットは run_qmp
コマンドを呼び出し、カスタム QMP コマンドを渡し、その戻り値を読み取り、必要に応じてさらにコマンドを発行して、VM を動的に再構成できます。
これは非常に低レベルのメカニズムであり、非常に特殊なケースで熟練したユーザーのみが使用することを想定していることに注意してください。他の raw
構成キーと同様に、その使用は Incus チームによって事実上サポートされておらず、信頼できないプロジェクトでは無効にしておく必要があります。
仮想マシンでの動的なディスクのリサイズ ¶
VM ルート ディスクまたは接続されたディスクのサイズを変更し、その変更を VM に通知できるようになりました。これにより、オペレーティング システムによってディスクのサイズが更新され、ユーザーは VM を再起動することなく、追加スペースをすぐに利用できるようになります。
stgraber@castiana:~$ incus exec v1 bash root@v1:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 10G 0 disk ├─sda1 8:1 0 100M 0 part /boot/efi └─sda2 8:2 0 9.9G 0 part / root@v1:~# exit stgraber@castiana:~$ incus config device override v1 root size=20GiB Device root overridden for v1 stgraber@castiana:~$ incus exec v1 bash root@v1:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 20G 0 disk ├─sda1 8:1 0 100M 0 part /boot/efi └─sda2 8:2 0 9.9G 0 part / root@v1:~#
PCI デバイスのホットプラグ ¶
VM 上の PCI デバイスの追加と削除が動的に行えるようになりました。
これは、NIC、GPU、ディスクデバイスで見られる動作と一致するようになりました。
OVN ロードバランサーヘルスチェック ¶
Incus の OVN ロードバランサーサポートは、これまでのところかなり基本的なサポートです。基本的には、バックエンドのモニタリングなしで、ターゲットのトラフィックを必要最低限にロードバランシングすることだけに限定されています。
しかし、OVN のロードバランサーヘルスチェックの初期サポートで、この状況は変わりつつあります。
この機能は、ロードバランサーに対する複数の設定キーを通して設定されます:
healthcheck
=> ヘルスチェックの有効化healthcheck.failure_count
=> バックエンドが機能していないとみなす失敗した回数healthcheck.interval
=> バックエンドをチェックする間隔(秒)healthcheck.success_count
=> バックエンドがオンラインであるとみなす成功した回数healthcheck.timeout
=> バックエンドが機能していないとみなすまでどれくらい待つか
healthcheck
のみが必須の設定で、他のすべての設定には適切なデフォルト値が設定されています。
root@server01:~# incus launch images:ubuntu/24.04 c1 Launching c1 root@server01:~# incus exec c1 -- apt-get install --yes nginx Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: nginx-common Suggested packages: fcgiwrap nginx-doc ssl-cert The following NEW packages will be installed: nginx nginx-common 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 552 kB of archives. After this operation, 1596 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu noble/main amd64 nginx-common all 1.24.0-2ubuntu7 [31.2 kB] Get:2 http://archive.ubuntu.com/ubuntu noble/main amd64 nginx amd64 1.24.0-2ubuntu7 [521 kB] Fetched 552 kB in 1s (619 kB/s) Preconfiguring packages ... Selecting previously unselected package nginx-common. (Reading database ... 16176 files and directories currently installed.) Preparing to unpack .../nginx-common_1.24.0-2ubuntu7_all.deb ... Unpacking nginx-common (1.24.0-2ubuntu7) ... Selecting previously unselected package nginx. Preparing to unpack .../nginx_1.24.0-2ubuntu7_amd64.deb ... Unpacking nginx (1.24.0-2ubuntu7) ... Setting up nginx (1.24.0-2ubuntu7) ... Setting up nginx-common (1.24.0-2ubuntu7) ... Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service. root@server01:~# incus launch images:ubuntu/24.04 c2 Launching c2 root@server01:~# incus list +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | LOCATION | +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ | c1 | RUNNING | 10.104.61.2 (eth0) | fd42:73ae:9013:c530:216:3eff:feff:ddf2 (eth0) | CONTAINER | 0 | server01 | +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ | c2 | RUNNING | 10.104.61.3 (eth0) | fd42:73ae:9013:c530:216:3eff:fec4:611 (eth0) | CONTAINER | 0 | server02 | +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ root@server01:~# incus network load-balancer create default 172.31.254.50 Network load balancer 172.31.254.50 created root@server01:~# incus network load-balancer backend add default 172.31.254.50 c1 10.104.61.2 root@server01:~# incus network load-balancer backend add default 172.31.254.50 c2 10.104.61.3 root@server01:~# incus network load-balancer port add default 172.31.254.50 tcp 80 c1,c2 root@server01:~# incus launch images:ubuntu/24.04 t1 Launching t1 root@server01:~# incus exec t1 -- nc -v 172.31.254.50 80 nc: connect to 172.31.254.50 port 80 (tcp) failed: Connection refused root@server01:~# incus exec t1 -- nc -v 172.31.254.50 80 nc: connect to 172.31.254.50 port 80 (tcp) failed: Connection refused root@server01:~# incus exec t1 -- nc -v 172.31.254.50 80 Connection to 172.31.254.50 80 port [tcp/http] succeeded! root@server01:~# incus network load-balancer set default 172.31.254.50 healthcheck=true root@server01:~# incus exec t1 -- nc -v 172.31.254.50 80 Connection to 172.31.254.50 80 port [tcp/http] succeeded! ^Croot@server01:~# incus exec t1 -- nc -v 172.31.254.50 80 Connection to 172.31.254.50 80 port [tcp/http] succeeded! ^Croot@server01:~# incus exec t1 -- nc -v 172.31.254.50 80 Connection to 172.31.254.50 80 port [tcp/http] succeeded! ^Croot@server01:~# incus exec t1 -- nc -v 172.31.254.50 80 Connection to 172.31.254.50 80 port [tcp/http] succeeded! ^Croot@server01:~# incus exec t1 -- nc -v 172.31.254.50 80 Connection to 172.31.254.50 80 port [tcp/http] succeeded!
ドキュメント: https://linuxcontainers.org/incus/docs/main/howto/network_load_balancers/
OVN インターコネクトでの ECMP サポート ¶
OVN インターコネクトのネットワーク統合サポートがいくつかの点で拡張されました:
ovn.transit.pattern
設定オプションが、新たにpeerName
変数をサポートするようになりました- 同じネットワーク統合をターゲットとするネットワーク上に、複数のピアを持てるようになりました
- トランジットスイッチ上の IP 割り当てが、ランダムなサブネットに依存せず、OVN データベースに直接記録されるようになりました
この結果、デフォルトの core.transit.pattern
を変更してテンプレートに peerName
を含め、同じインターコネクションを指す複数のピアをネットワークに追加できるようになりました。
これにより、内部的には複数のトランジット スイッチが作成され、参加しているすべてのシステムでピア名が一致している限り、トラフィックは ECMP を通じてそれらのスイッチ間で分散されます。
これにより、インターコネクトトラフィックの非常に効果的な負荷分散が可能になります。
root@chulak:~# incus list ic +---------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | LOCATION | +---------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ | ic-test | RUNNING | 10.47.238.2 (eth0) | fd42:4a11:5600:6807:216:3eff:feb5:2c79 (eth0) | CONTAINER | 0 | chulak | +---------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ root@chulak:~# incus exec ic-test bash root@ic-test:~# ping 10.170.69.2 PING 10.170.69.2 (10.170.69.2) 56(84) bytes of data. From 45.45.148.162 icmp_seq=1 Destination Net Unreachable --- 10.170.69.2 ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms root@ic-test:~# root@chulak:~# incus network peer create ovn-ic-test peer1 dcmtl --type=remote Network peer peer1 created root@chulak:~# incus network peer create ovn-ic-test peer2 dcmtl --type=remote Network peer peer2 created root@chulak:~# incus network peer create ovn-ic-test peer3 dcmtl --type=remote Network peer peer3 created root@chulak:~# incus network peer create ovn-ic-test peer4 dcmtl --type=remote Network peer peer4 created root@chulak:~# incus exec ic-test bash root@ic-test:~# ping 10.170.69.2 PING 10.170.69.2 (10.170.69.2) 56(84) bytes of data. 64 bytes from 10.170.69.2: icmp_seq=1 ttl=62 time=11.8 ms 64 bytes from 10.170.69.2: icmp_seq=2 ttl=62 time=6.01 ms --- 10.170.69.2 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 6.012/8.930/11.848/2.918 ms
ドキュメント : https://linuxcontainers.org/incus/docs/main/howto/network_integrations/
OVN NICでのプロミスキャスモード ¶
OVN NIC で新しい security.promiscuous
構成キーが利用できるようになりました。
これを有効にすると、宛先が不明な MAC アドレスである OVN トラフィックはすべて OVN NIC に送信されるようになります。
これの主な用途は、ネストされたコンテナまたは VM を、独自の専用ポートを持たずに親 OVN ネットワーク上に直接配置するネストされた環境です。
無差別モードでは大量の不要なネットワーク トラフィックが NIC に到達するため、これは通常、開発/テストのユースケースです。
root@server01:~# incus launch images:ubuntu/24.04 t1 Launching t1 root@server01:~# incus exec t1 bash root@t1:~# ip l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 48: eth0@if49: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1422 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 00:16:3e:f3:d4:3e brd ff:ff:ff:ff:ff:ff link-netnsid 0 root@t1:~# ip link set eth0 address 00:16:3e:f3:d4:30 root@t1:~# ip -4 a add dev eth0 10.104.61.100/24 root@t1:~# ping 10.104.61.1 PING 10.104.61.1 (10.104.61.1) 56(84) bytes of data. ^C --- 10.104.61.1 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1009ms root@t1:~# exit root@server01:~# incus config device override t1 eth0 security.promiscuous=true Device eth0 overridden for t1 root@server01:~# incus exec t1 bash root@t1:~# ip link set eth0 address 00:16:3e:f3:d4:30 root@t1:~# ip -4 a add dev eth0 10.104.61.100/24 root@t1:~# ping 10.104.61.1 PING 10.104.61.1 (10.104.61.1) 56(84) bytes of data. 64 bytes from 10.104.61.1: icmp_seq=1 ttl=254 time=1.20 ms ^C --- 10.104.61.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.197/1.197/1.197/0.000 ms root@t1:~#
ドキュメント: https://linuxcontainers.org/incus/docs/main/reference/devices_nic/#nictype-ovn
OVN NIC で IP 割り当てをオフにする機能 ¶
OVN NIC のもう 1 つの新しいオプションは、IP 割り当てを完全にオフにする機能です。
これは、プロミスキャス NIC は通常、自身の IPv4 と IPv6 アドレスを持つ必要がないという、前述のケースに関連しています。これを処理するために、ipv4.address
と ipv6.address
を none
に設定して、割り当てを無効にできるようになりました。
OVN では、1 つのプロトコルだけを無効化できないので、これを機能させるには、現在両方のキーを none
に設定しなければなりません。
root@server01:~# incus config device set t1 eth0 ipv4.address=none ipv6.address=none root@server01:~# incus start t1 root@server01:~# incus exec t1 bash root@t1:~# ip -4 a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever root@t1:~#
ドキュメント : https://linuxcontainers.org/incus/docs/main/reference/devices_nic/#nictype-ovn
OIDC スコープリクエストのカスタマイズ ¶
リクエストされる OpenID Connect スコープのリストを設定できるようになりました。
サーバー設定で oidc.scopes
を設定すると、デフォルトの openid, offline_access
のデフォルトが上書きされ、profile
のようなスコープを通して追加情報を取得するのに役立ちます。
ドキュメント: https://linuxcontainers.org/incus/docs/main/server_config/#openid-connect-configuration
設定可能な LVM PV のメタデータサイズ ¶
数千の論理ボリュームを含む、非常に非常に大きな LVM ボリュームグループは、予約されたメタデータサイズを超過する可能性があります。
これは、LVM シンプロビジョニングプール(デフォルト)では、すでに設定可能でしたが、シック(thick)プロビジョニングでは、相当する設定がありませんでした。
lvm.metadata_size
設定キーを設定し、LVM のデフォルトを上書きできるようになりました。
これは作成時のみ実行できることに注意してください。
stgraber@castiana:~$ incus storage create demo lvm lvm.use_thinpool=false Storage pool demo created stgraber@castiana:~$ sudo vgs -o name,mda_size VG VMdaSize demo 1020.00k stgraber@castiana:~$ incus storage delete demo Storage pool demo deleted stgraber@castiana:~$ incus storage create demo lvm lvm.use_thinpool=false lvm.metadata_size=100MiB Storage pool demo created stgraber@castiana:~$ sudo vgs -o name,mda_size VG VMdaSize demo <101.00m stgraber@castiana:~$ incus storage delete demo Storage pool demo deleted
ドキュメント : https://linuxcontainers.org/incus/docs/main/reference/storage_lvm/#configuration-options
設定可能な OVS ソケットパス ¶
OpenVSwitch が通常のアドレスで動作しないケースがいくつか存在します。
もっとも一般的なケースは、OpenVSwitch ソケットが /var/snap/microovn/common/...
に保存されている MicroOVN ユーザーです。
これまで、このようなユーザーは、Incus が適切にソケットに接続できるように、/run
内の OVS ソケットを取得するために、いくつかの手順を踏む必要がありました。
この変更により、network.ovs.connection
設定キーを有効な OVSDB 接続文字列に設定し、それを介して Incus が OpenVSwitch にアクセスできるようになりました。デフォルト値は unix:/run/openvswitch/db.sock
です。
ドキュメント : https://linuxcontainers.org/incus/docs/main/server_config/#server-options-misc
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- incus/remote/list: Add support for column selection
- i18n: Update translation templates
- incus/cluster/group/list: Add support for column selection
- i18n: Update translation templates
- Translated using Weblate (Chinese (Simplified))
- Translated using Weblate (Chinese (Simplified))
- client: import examples for docs
- client: name var for docs
- client: alias & server/procotol default for docs
- incusd/storage: Fix UsedBy values for sub-directory volumes
- incusd/instance: Fix backup file locking issue
- incusd/projects: Don't fail project creation on missing pools
- incusd/device/pci: Allow hotplug
- incusd/instance/qmp: Add CheckPCIDevice
- incusd/instance/qemu: Use monitor.CheckPCIDevice
- incusd/instance/qemu: Tweak comments on deviceStart
- incusd/instance/qemu: Add hotplug support for generic PCI
- client: fix typo in example
- Translated using Weblate (Chinese (Simplified))
- incus/operation/list: Add support for column selection
- i18n: Update translation templates
- doc/firewalld: Update Docker link
- incus/network/zone/list: Add support for column selection
- i18n: Update translation templates
- incusd/instance/drivers/qmp: Export RunJSON
- api: qemu_raw_qmp
- incusd/instance: Add raw QMP config options
- doc: Add QMP to wordlist
- doc: Update configs
- incusd/instance/qemu: Add QMP hooks
- incusd/project: Update low-level properties
- incus/network/forward/list: Add support for column selection
- i18n: Update translation templates
- Translated using Weblate (Chinese (Simplified))
- cmd/incusd: Add hostname to dhcp request
- incus/network/list-leases: Add support for column selection
- i18n: Update translation templates
- Translated using Weblate (Chinese (Simplified))
- doc: Update incus_alias.md
- incus/network/list-allocations: Add support for column selection
- i18n: Update translation templates
- api: network_load_balancer_health_check
- incusd/network/ovn: Simplify CreateLoadBalancer
- incusd/network: Update for CreateLoadBalancer changes
- incusd/network/ovn: Add healthcheck support in LoadBalancer
- incusd/network: Add healthcheck config options
- incusd/network/ovn: Add healthcheck options
- incusd/network/ovn: Reserve the last IPv4 address
- doc/network/load_balancer: Add configuration options
- doc: Update configs
- incus/admin/init: Prompt for dir storage location
- tests: Update for extra step in init
- i18n: Update translation templates
- incus/network/integration/list: Add support for column selection
- i18n: Update translation templates
- incus/storage/bucket/list: Add support for column selection
- i18n: Update translation templates
- api: oidc_scopes
- incusd/config: Add oidc.scopes
- incusd/oidc: Add custom scopes support
- doc: Update configs
- incus/storage/bucket: Add support for column selection in key list
- i18n: Update translation templates
- incus/snapshot/list: Add support for column selection
- i18n: Update translation templates
- incusd/storage/lvm: Fix resize logic to conserve LV state
- incusd/network/ovn: Set missing send_periodic field
- incusd/profiles: Improve listing performance
- incusd/server/db: Increase transaction deadline to 30s
- incusd/db/profiles: Support device cache in ToAPI
- incusd: Pass profile device cache to ToAPI calls when possible
- incusd/db/instances: Support device cache to ToAPI
- incusd: Pass instance device cache to ToAPI calls when possible
- incusd/db/instances: Allow passing profile devices to instance ToAPI
- incusd: Pass profile device cache to instance ToAPI calls when possible
- incusd/instances: Remove old retry logic
- incusd/network_integration: Fix typo in doc string
- doc: Update configs
- incusd/main_forknet: Tweak DHCP client to apply DNS first
- incusd/network/ovn: Use stable random for IC gateway chassis priority
- api: network_integrations_peer_name
- incusd/network_integrations: Add peerName to ovn.transit.pattern
- incusd/network/ovn: Expose peerName to ovn.transit.pattern
- doc: Update configs
- incus/cluster/list-tokens: Add support for column selection
- i18n: Update translation templates
- incusd/storage_volumes_state: Handle unsupported response from drivers
- incusd/db/cluster: Remove network integration/peer unique index
- incusd/db/cluster: Update schema
- lxd-to-incus: Handle Incus socket in /run/incus/
- incusd/network/ovn: Record transit subnets
- incusd/network/ovn: Add transit switch addresss allocation functions
- incusd/network/ovn: Setup transit switch allocations
- incusd/auth/openfga: Avoid deprecated ApiSchema and ApiHost
- incusd/auth: Re-organize entitlement list
- incusd/auth/openfga: Sort entries in openfga model
- incusd/auth/openfga: Add missing network integration permission
- incusd/auth/openfga: Require admin level to create projects
- incusd/auth/openfga: Rebuild model
- incusd/auth: Fix network integration object
- incus/config/trust/list-tokens: Add support for column selection
- i18n: Update translation templates
- incus/network/peer/list: Add support for column selection
- i18n: Update translation templates
- incus/network/load-balancer/list: Add support for column selection
- i18n: Update translation templates
- Translated using Weblate (Chinese (Simplified))
- Change Cloud Init "user" to "users"
- shared/api: Fix incorrect struct naming for volume backups
- client: Update for fixed volume backup structs
- incus: Update for fixed volume backup structs
- incusd: Update for fixed volume backup structs
- incusd/storage_volume_backup: Fix swagger references
- incusd/storage_bucket_backup: Fix swagger references
- doc/rest-api: Refresh swagger YAML
- incusd/device/nic: Make burst rate dynamic for ingress traffic
- incusd/storage/lvm: Allow live resize
- incusd/storage/zfs: Allow online resize of ZFS block volumes
- incusd/device/disk: Add callback on resize
- incusd/instance/drivers/qmp: Add resize handling
- incusd/instance/qemu: Add disk resize handling
- incusd/node/config: Add network.ovs.connection
- doc: Switch /var/run to just /run
- incusd/cluster/config: Switch from /var/run to /run
- incusd/instance/agent-loader: Don't hardcode path
- incusd/syslog: Update OVS path
- doc: Update configs
- incusd/network/ovs: Make OVS database configurable
- incusd/state: Add OVS function
- incusd: Set OVS function on State
- incusd: Port to state.OVS
- incusd: Reset OVS as needed
- incusd/network/ovn: Limit MAC_Binding explosion
- incusd/network/ovn: Add ARP limits to updated routers
- incusd/network/ovn: Wait a bit longer for northd to allocate addresses
- incusd/apparmor: Don't constantly query the version and cache
- incusd/storage/driver/dir: Don't needlessly re-apply project id on quota changes
- incusd/storage/quota: Don't fail on missing paths
- incusd/storage/lvm: Retry setactivation skip for busy environments
- api: qemu_scriptlet
- incusd/instance: Add qemu scriptlet config options
- incusd: Move QEMU default values to a subpackage
- incusd/scriptlet: Move the logger definition
- incusd/scriptlet: Add helper functions
- incusd/scriptlet: Add Unmarshal function
- incusd/scriptlet: Add qemu scriptlet
- incusd/project: Update low-level properties
- doc: Update metadata
- incusd/scriptlet: Remove deprecated starlark.SourceProgram
- Makefile: Switch minimum Go to 1.22
- gomod: Update dependencies
- doc: Update requirements
- incusd/instance/drivers/qemu: Fix node name overflow logic
- incusd/instance/drivers/qemu: Add missing node name handling
- incusd/api_internal: Add API to notify volume resizes
- incusd/cluster: Fix redirect loop with shared volumes across multiple servers
- incusd/storage/backend: Notify instances following block custom volume resize
- api: instance_auto_restart
- incusd/instance: Add boot.autorestart
- doc: Update metadata
- incusd/instance/drivers: Implement shouldAutoRestart
- incusd/instance/drivers/lxc: Implement boot.autorestart
- incusd/instance/drivers/qemu: Implement boot.autorestart
- tests: Validate autorestart logic
- client: Fix error handling in push mode copy
- incusd/network/ovn: Fix send_periodic syntax
- incusd/project: Validate group names
- incusd/db: Confirm cluster group validity during placement
- doc/cluster_group: Mention renaming groups
- api: storage_lvm_metadatasize
- doc/storage_lvm: Add lvm.metadata_size
- incusd/storage/lvm: Add lvm.metadata_size
- incusd/storage/zfs: Only attempt to load the module if the tools exist
- incusd/instance/edk2: Add Void Linux x86_64 paths
- incusd/profiles: Empty default profile on forced deletion
- Revert "incusd/instance/agent-loader: Don't hardcode path"
- incusd/device: Add new Register function
- incusd/instance/drivers: Use Register function
- incusd/device: Don't make Register depend on validate
- incusd/storage/drivers: Add isDeleted flag
- incusd/storage/drivers/ceph: Rework parseClone
- incusd/storage/drivers/ceph: Rework parseParent
- incusd/storage/drivers/ceph: Make use of isDeleted flag
- incusd/instance/qemu: Allow setCPUs to re-use QMP
- incusd/instance/qmp: Handle QMP occasionally returning multiple responses
- incusd/seccomp: Update syscall numbers
- incusd/instance/drivers/qemu: Double number of hotplug slots
- incusd/instance/qemu: Rework PCI hotplug
- incusd/instance/drivers/edk2: Limit calls to GetenvEdk2Path
- incusd/instance/drivers/edk2: Actually check that the files exist
- incusd/device/config: Fix comment
- api: ovn_nic_promiscuous
- doc/devices/nic_ovn: Add security.promiscuous
- incusd/network/ovn: Only set DHCP options on LSP when not setting up a router interface
- incusd/network/ovn: Add support for promiscuous Logical Switch Port
- incusd/network/ovn: Wire in security.promiscuous
- incusd/device/nic: Add security.promiscuous
- api: ovn_nic_ip_address_none
- doc/devices/nic_ovn: Add none for ipv4.address/ipv6.address
- incusd/device/nic_ovn: Allow 'none' as value for ipv4.address/ipv6.address
- incusd/network/ovn: Add support for disabling allocation on LSP
- incusd/network/ovn: Wire in support for ipvX.address=none
- incusd/network/ovn: Fix BGP advertisement of load balancers
- incus-user: Handle deleted projects
- Makefile: Set minimum Go to 1.22.0
- Makefile: Remove deprecated flag
- gomod: Update dependencies
- incusd/auth: Update for openfga-go-sdk API breakage
ドキュメント ¶
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.5.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