ニュース¶
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
Incus 6.4 リリースのお知らせ¶
2024/08/09
はじめに ¶
Incus チームは、Incus 6.4 のリリースのアナウンスができてうれしいです!
これは、誰にとっても新しい何かを備えた、非常にバランスのとれたリリースです。
このリリースは、多数のバグフィックスと、前のリリースで追加された OCI サポートを支援するための新機能が搭載されています。また、より複雑な共有環境・クラスター環境のための多数の新機能も導入されています。また、ストレージ、クラスタリング、OpenID 認証、監査まわりの厄介な問題などの修正が満載です。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能 ¶
クラスターグループの設定 ¶
クラスターグループは、他のほとんどの Incus オブジェクトと同様の、標準の設定テーブルを持つようになりました。
これは、コマンドと API の通常のセットを意味します:
incus cluster group edit
incus cluster group get
incus cluster group set
incus cluster group show
incus cluster group unset
クラスターグループごとの CPU ベースラインと VM に対するフラグ ¶
クラスターグループの設定サポートをベースに、クラスターグループごとに VM の CPU ベースラインを定義するためのサポートが追加されました。
これにより、CPU モデル・世代ごとに 1 つのクラスターグループを持ち、Incus がそれらのサーバーに共通の CPU フラグのセットを計算できるようになります。
例えば、incus cluster group set foo instances.vm.cpu.x86_64.baseline=kvm64 instances.vm.cpu.x86_64.flags=auto
とすると、Incus は自動的に foo クラスターグループ内のサーバーを自動的に調べ、共通の CPU フラグのセットを flag
設定キーに入力します。
ただし、これにより、完全にカスタムの CPU 定義を設定することもできます。例えば、incus cluster group set foo instances.vm.cpu.x86_64.baseline=EPYCv2
instances.vm.cpu.x86_64.flags=-svm
とすると、仮想化拡張機能(svm)を無効にした、基本的な第 2 世代の AMD EPYC CPU が公開されます。
ディスクとしてボリュームのサブパスの使用 ¶
既存のカスタムボリューム内のパスを、ディスクエントリーのソースとして使えるようになりました。
stgraber@castiana:~$ incus launch images:ubuntu/24.04 demo Launching demo stgraber@castiana:~$ incus launch images:ubuntu/24.04 demo-sub Launching demo-sub stgraber@castiana:~$ incus storage volume create default demovol Storage volume demovol created stgraber@castiana:~$ incus config device add demo demovol disk pool=default source=demovol path=/mnt/demovol Device demovol added to demo stgraber@castiana:~$ incus exec demo bash root@demo:~# mkdir -p /mnt/demovol/sub/path/ root@demo:~# echo world > /mnt/demovol/sub/path/hello root@demo:~#· exit stgraber@castiana:~$ incus config device add demo-sub demovol disk pool=default source=demovol/sub/path path=/mnt/demovol Device demovol added to demo-sub stgraber@castiana:~$ incus exec demo-sub bash root@demo-sub:~# cat /mnt/demovol/hello· world
この例では、demovol
カスタムボリュームが作られ、demo
コンテナにアタッチされ、そのボリューム内にサブディレクトリーが作成され、そのサブディレクトリーが別のコンテナ demo-sub
にアタッチされます。
ストレージプールごとのプロジェクト制限 ¶
Incus プロジェクトはリソース制限を持つことができます。これは、プロジェクトへのアクセスを第三者に提供する場合に理想的です。これまでは、プロジェクト内のトータルのディスク使用量を制限できました。しかし、これは全ストレージプールに適用されていました。
異なるストレージの特性(ローカル vs リモート)やクラス(ssd vs hdd)を表す、異なるストレージプールを持つことは一般的ですので、ストレージプールごとに制限を提供する方法があると便利です。
これを行うために、新しい設定キーである、limits.disk.pool.POOLNAME
がプロジェクト内で利用できるようになりました。制限を 0
に設定すると、そのストレージプールは完全に無効になり、そのプロジェクトにリストされているストレージプールから消えます。
stgraber@dakara:~$ incus project info test-limits +------------------+-----------+-------+ | RESOURCE | LIMIT | USAGE | +------------------+-----------+-------+ | CONTAINERS | UNLIMITED | 0 | +------------------+-----------+-------+ | CPU | UNLIMITED | 0 | +------------------+-----------+-------+ | DISK | UNLIMITED | 0B | +------------------+-----------+-------+ | INSTANCES | UNLIMITED | 0 | +------------------+-----------+-------+ | MEMORY | UNLIMITED | 0B | +------------------+-----------+-------+ | NETWORKS | UNLIMITED | 0 | +------------------+-----------+-------+ | PROCESSES | UNLIMITED | 0 | +------------------+-----------+-------+ | VIRTUAL-MACHINES | UNLIMITED | 0 | +------------------+-----------+-------+ stgraber@dakara:~$ incus storage list +---------+--------+-------------+---------+---------+ | NAME | DRIVER | DESCRIPTION | USED BY | STATE | +---------+--------+-------------+---------+---------+ | default | zfs | | 45 | CREATED | +---------+--------+-------------+---------+---------+ | foo | dir | | 0 | CREATED | +---------+--------+-------------+---------+---------+ stgraber@dakara:~$ incus project set test-limits limits.disk.pool.foo=0 limits.disk.pool.default=5GiB limits.disk=10GiB stgraber@dakara:~$ incus project info test-limits +------------------+-----------+-------+ | RESOURCE | LIMIT | USAGE | +------------------+-----------+-------+ | CONTAINERS | UNLIMITED | 0 | +------------------+-----------+-------+ | CPU | UNLIMITED | 0 | +------------------+-----------+-------+ | DISK | 10.00GiB | 0B | +------------------+-----------+-------+ | DISK (DEFAULT) | 5.00GiB | 0B | +------------------+-----------+-------+ | INSTANCES | UNLIMITED | 0 | +------------------+-----------+-------+ | MEMORY | UNLIMITED | 0B | +------------------+-----------+-------+ | NETWORKS | UNLIMITED | 0 | +------------------+-----------+-------+ | PROCESSES | UNLIMITED | 0 | +------------------+-----------+-------+ | VIRTUAL-MACHINES | UNLIMITED | 0 | +------------------+-----------+-------+ stgraber@dakara:~$ incus storage list +---------+--------+-------------+---------+---------+ | NAME | DRIVER | DESCRIPTION | USED BY | STATE | +---------+--------+-------------+---------+---------+ | default | zfs | | 45 | CREATED | +---------+--------+-------------+---------+---------+ stgraber@dakara:~$ incus create images:ubuntu/24.04 c1 --storage default -d root,size=5GiB Creating c1 The instance you are starting doesn't have any network attached to it. To create a new network, use: incus network create To attach a network to an instance, use: incus network attach stgraber@dakara:~$ incus create images:ubuntu/24.04 c2 --storage default -d root,size=5GiB Creating c2 Error: Failed instance creation: Failed checking if instance creation allowed: Reached maximum aggregate value "5GiB" for "limits.disk.pool.default" in project "test-limits" stgraber@dakara:~$ incus project set test-limits limits.disk.pool.foo=5GiB stgraber@dakara:~$ incus create images:ubuntu/24.04 c2 --storage foo -d root,size=5GiB Creating c2 The instance you are starting doesn't have any network attached to it. To create a new network, use: incus network create To attach a network to an instance, use: incus network attach stgraber@dakara:~$ incus project info test-limits +------------------+-----------+----------+ | RESOURCE | LIMIT | USAGE | +------------------+-----------+----------+ | CONTAINERS | UNLIMITED | 2 | +------------------+-----------+----------+ | CPU | UNLIMITED | 0 | +------------------+-----------+----------+ | DISK | 10.00GiB | 10.00GiB | +------------------+-----------+----------+ | DISK (DEFAULT) | 5.00GiB | 5.00GiB | +------------------+-----------+----------+ | DISK (FOO) | 5.00GiB | 5.00GiB | +------------------+-----------+----------+ | INSTANCES | UNLIMITED | 2 | +------------------+-----------+----------+ | MEMORY | UNLIMITED | 0B | +------------------+-----------+----------+ | NETWORKS | UNLIMITED | 0 | +------------------+-----------+----------+ | PROCESSES | UNLIMITED | 0 | +------------------+-----------+----------+ | VIRTUAL-MACHINES | UNLIMITED | 0 | +------------------+-----------+----------+ stgraber@dakara:~$
ここでは、プロジェクトがディスク制限付きでセットアップされ、最初にプールの 1 つを非表示にし、それから前に非表示にしたプールに制限を設定する前に、他のプールを埋める様子を見ることができます。
隔離された OVN ネットワーク(アップリンクなし)¶
これまで、すべての OVN ネットワークは、アップリンクのネットワークのセット(network
プロパティ)を持っていました。
これは、外部に面したルーターのポートが配置され、OVN ネットワークへの入出力がすべてこのネットワーク経由で行われるネットワークです。
Incus は、そのアップリンクネットワーク上の IPv4(および・もしくは IPv6)アドレスを選択し、それを使用して、仮想ネットワークから物理ネットワークへのすべてのトラフィックをルーティングします。
このネットワークプロパティの特別な値である none
は、Incus に対して、いかなるアップリンクとも接続されない、完全に分離したネットワークを作成するように指示をします。
root@server01:~# incus network create ovn-isolated network=none --type=ovn Network ovn-isolated created root@server01:~# incus launch images:ubuntu/24.04 c1 --network ovn-isolated Launching c1 root@server01:~# incus list +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | LOCATION | +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ | c1 | RUNNING | 10.248.34.2 (eth0) | fd42:669c:8431:b3cc:216:3eff:fef3:fdb2 (eth0) | CONTAINER | 0 | server01 | +------+---------+--------------------+-----------------------------------------------+-----------+-----------+----------+ root@server01:~# incus exec c1 bash root@c1:~# ping 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. ^C --- 1.1.1.1 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1031ms
ここでは、完全に分離されたネットワークが作成され、コンテナがそこに配置されていることがわかります。
通常どおり、ネットワークは IPv6 と IPv6 アドレスを提供しますが、トラフィックは送信されません。
インスタンスごとの LXCFS ¶
新しいサーバー設定キーである instances.lxcfs.per_instance
が利用できるようになりました。これにより、Incus が、コンテナごとに専用の LXCFS インスタンスを起動します。
これは、システム全体で 1 つの LXCFS インスタンスを起動するというデフォルトとは対照的です。
これを有効にすると、コンテナあたりのリソース消費はわずかに増加します。しかし、特定のコンテナが共通の LXCFS インスタンスを使用できなくなるリスクを減らし、LXCFS のクラッシュは 1 つのコンテナにのみ影響するようになります。
stgraber@castiana:~$ pgrep -a lxcfs 1101 /opt/incus/bin/lxcfs /var/lib/incus-lxcfs stgraber@castiana:~$ incus config set instances.lxcfs.per_instance=true stgraber@castiana:~$ incus restart demo stgraber@castiana:~$ pgrep -a lxcfs 1101 /opt/incus/bin/lxcfs /var/lib/incus-lxcfs 962122 lxcfs -f -p /run/incus/demo/lxcfs.pid --runtime-dir /run/incus/demo/lxcfs /var/lib/incus/devices/demo/lxcfs
create/launch実行時の環境変数ファイルのサポート ¶
OCI コンテナを簡単に実行できるようにするために、環境変数ファイル経由で環境変数を指定できるようになりました。このファイルは、起動時に読み込まれ、Incus の設定オプションに変換されます。
stgraber@castiana:~$ cat mysql.env MYSQL_DATABASE=wordpress MYSQL_USER=wordpress MYSQL_PASSWORD=wordpress MYSQL_RANDOM_ROOT_PASSWORD=1 stgraber@castiana:~$ incus launch docker:mysql mysql --environment-file mysql.env Launching mysql stgraber@castiana:~$ incus config show mysql architecture: x86_64 config: environment.GOSU_VERSION: "1.17" environment.HOME: /root environment.MYSQL_DATABASE: wordpress environment.MYSQL_MAJOR: innovation environment.MYSQL_PASSWORD: wordpress environment.MYSQL_RANDOM_ROOT_PASSWORD: "1" environment.MYSQL_SHELL_VERSION: 9.0.1-1.el9 environment.MYSQL_USER: wordpress environment.MYSQL_VERSION: 9.0.1-1.el9 environment.PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin environment.TERM: xterm image.architecture: x86_64 image.description: docker.io/library/mysql (OCI) image.type: oci volatile.base_image: d8df069848906979fd7511db00dc22efeb0a33a990d87c3c6d3fcdafd6fc6123 volatile.cloud-init.instance-id: f12e3ddb-ac93-4942-b3e1-dcd560893140 volatile.container.oci: "true" volatile.eth0.host_name: vethac8631aa volatile.eth0.hwaddr: 00:16:3e:20:32:87 volatile.idmap.base: "0" volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]' volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":1000000000},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":1000000000}]' volatile.last_state.idmap: '[]' volatile.last_state.power: RUNNING volatile.uuid: 5ed7f63b-5b6c-4c89-9dfa-117c2b785370 volatile.uuid.generation: 5ed7f63b-5b6c-4c89-9dfa-117c2b785370 devices: {} ephemeral: false profiles: - default stateful: false description: ""
これは、OCI イメージから作成され、mysql.env
ファイルで定義された環境変数を使う、mysql
コンテナの例です。
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- incus-simplestreams: Fix split images
- [lxd-import] github: stop purging core20
- [lxd-import] github: purge disabled/superseded snaps
- [lxd-import] github: move snap removal to "Reclaim some space" step
- [lxd-import] github: put docker removal its own step
- [lxd-import] github: mask lxc{,-net}.service in a singe command
- [lxd-import] lxd/instance/drivers/driver/qemu: Don't leak file descriptor when probing for Direct I/O support
- [lxd-import] lxd/network/acl: Change protocol field for ovn logs
- [lxd-import] lxd/instance: Reject limits.kernel config for VMs
- [lxd-import] doc:
limits.kernel
only applies to containers (see #12874) - [lxd-import] lxd/storage: Fix resize for pools with custom zfs.pool_name
- [lxd-import] lxd/storage/drivers/driver_zfs_utils: fix typos
- [lxd-import] lxd/storage/drivers/driver_zfs_utils: make it explicit that blocksize is in bytes
- [lxd-import] lxd/task/group: Make cancel type of context.CancelFunc for clarity
- [lxd-import] doc: Add paragraph on how to delete images
- [lxd-import] test: Add exec exit code test
- [lxd-import] lxd/apparmor: allow confined services to receive required signals
- [lxd-import] lxd/rsync: Consistently compare files on nanosecond basis
- [lxd-import] test/suites/migration: Check for file contents after refresh
- [lxd-import] test/suites/migration: Check local and remote instance refreshes based on nanoseconds
- [lxd-import] doc: add paragraph on how to delete images
- [lxd-import] doc: enable multiprocessing for pyspelling
- [lxd-import] Makefile: have run-parts report which script it runs
- [lxd-import] lxd/storage/drivers/ceph: Disable filesystem config keys on block volumes
- [lxd-import] lxd/storage/drivers/lvm: Disable filesystem config keys on block volumes
- [lxd-import] test: Add check to restore custom volumes of type block
- [lxd-import] lxd/storage/drivers/ceph: Update UnmountVolumeSnapshot docstring
- [lxd-import] lxd: Improve error check for existing certificates
- [lxd-import] shared/api: Updates swagger description for certificate field.
- [lxd-import] shared/api: Fix lint errors (receiver-naming).
- [lxd-import] lxd/db/cluster: Fix lint error (revive: var-naming).
- [lxd-import] lxd-migrate: Ignore lint error (revive: deep-exit).
- [lxd-import] lxc/remote: Fix lint errors (revive: exported).
- [lxd-import] lxd/storage/backend: Don't validate custom storage volumes twice
- [lxd-import] lxd-generate: Return helpful error instead of panicking.
- [lxd-import] lxd/storage/backend: Use quotes consistently for error messages
- [lxd-import] lxd/project: Don't panic on StorageVolumeParts
- [lxd-import] github: don't abort on remount failures
- [lxd-import] test/main: add log grouping (GHA)
- [lxd-import] test/main: show dmesg on failure
- [lxd-import] lxd/api/internal: Use correct quoting for error in internalImportFromBackup
- [lxd-import] lxd/db/cluster/devices: Use correct string quoting of device type for error in NewDeviceType
- [lxd-import] lxd/instances/post: Improve error in createFromBackup
- [lxd-import] lxd/storage/backend/lxd: Update backup.yaml after instance and volume DB records have been generated in CreateInstanceFromBackup
- [lxd-import] test/main: don't wrap tests logs in log groups
- [lxd-import] lxd/device/disk: Remove config.iso file when the cloud-init:config disk device is removed
- [lxd-import] lxd/images: Add project to error in autoSyncImages
- [lxd-import] lxd/project/project: Remove optimisation from StorageVolumeProject
- [lxd-import] lxd/storage/volumes: Remove unnecessary 2 line variable definition in doCustomVolumeRefresh
- [lxd-import] lxd/storage/volumes: Remove unnecessary 2 line variable definition in doVolumeCreateOrCopy
- [lxd-import] lxd/storage/volumes: Validate source project in doCustomVolumeRefresh
- [lxd-import] [lxd-import] lxd/storage/volumes: Validate source project in doVolumeCreateOrCopy
- [lxd-import] lxd/db/cluster: Remove redunant parentheses.
- [lxd-import] lxd/db/cluster: Rename "node" to "cluster member".
- [lxd-import] lxd/migrate/storage/volumes: Use volume name from DB in migrationSourceWs.DoStorage
- [lxd-import] lxd/network/network/utils: Fix incorrect conversion from int64 to int in inRoutingTable
- [lxd-import] lxd/network/network/utils: Remove unnecessary call to fmt.Sprintf by passing base to ParseInt
- [lxd-import] lxd/response: Use SmartError if SyncResponse success=false
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Fix error scoping in CreateVolumeFromCopy
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Define send/receive channels together in CreateVolumeFromCopy
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Kill sender if receiver fails in CreateVolumeFromCopy
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Handle multi-line errors in CreateVolumeFromCopy
- [lxd-import] lxd/storage/drivers/driver/btrfs/volumes: Fix hang when btrfs receive fails in RefreshVolume
- [lxd-import] lxd/storage/drivers/driver/btrfs/volumes: Handle multi-line errors in RefreshVolume
- [lxd-import] lxd/storage/drivers/driver/zfs/volumes: Aligns RefreshVolume with BTRFS driver
- [lxd-import] lxd/response: Fallback to error response after setting headers
- [lxd-import] lxd/storage/backend/lxd: Use volume name from VolumeDBGet in BackupCustomVolume
- [lxd-import] lxd/storage/drivers/btrfs: Clarify fallback in case UUID discovery times out
- incusd/db/cluster: Fix import shadowing
- doc/rest-api: Refresh swagger YAML
- [lxd-import] lxd/db/cluster: Update error messages in unit tests.
- [lxd-import] lxd/storage/drivers: Add volume param to roundVolumeBlockSizeBytes
- [lxd-import] lxd/storage/drivers/zfs: Round to zfs.blocksize or 16KiB
- [lxd-import] test/storage: Add non-power-of-two sized storage check
- [lxd-import] test/storage: Remove zfs rounding test
- [lxd-import] lxd/storage/drivers: Refactor volume size rounding logic
- [lxd-import] lxd/storage/drivers/zfs: Wait for device to appear when activating a volume
- [lxd-import] lxd/storage/drivers/zfs: Check for non /dev/zvol/* paths
- incusd/storage/zfs: Fix import shadowing
- doc/storage_backup: Fix command example
- doc/requirements: Add OCI requirements
- doc/images: Mention OCI images
- incusd/instance/edk2: Support OVMF filenames on arm64
- incusd/instance/drivers/qemu: Limit CPU flag calculation to x86_64
- incus/s3: Fix mcli minio client executable name check
- incusd/instance/qemu: Fix architecture check being backward
- incusd/instance: Fix initial configuration handling for OCI
- client/oci: Add errors for missing skopeo
- client/oci: Add errors for missing umoci
- Change RunDir file mode to 0711
- incusd/instance/lxc: Handle OCI containers using real PID1
- incusd/apparmor/qemu: Relax apparmor rules a bit
- incus-simplestreams: Handle removal of combined images
- incusd/instance/lxc: Add basic Mounts handling for OCI
- incusd/apparmor/qemu: Fix typo in rule
- incusd/apparmor/dnsmasq: Relax rules a bit
- incusd/db/node: Fix version check in GetAPI
- incusd/db: Allow cluster startup with differing API extensions
- incusd: Extend heartbeat data for minimum API extension count
- incusd/storage: Use writeback mode for qemu-img convert
- incusd/storage: Improve unpacking message
- incusd/operations: Handle percentage only updates
- incusd/storage: Pass through tracker to qemu-img
- incusd/db/cluster: Update tests for relaxed API extensions checks
- incusd/apparmor: Implement progress tracker for qemu-img
- incusd/cgroup: Handle unknown devices in io.stat
- incusd/instance_post: Always set the target project
- incusd/storage/drivers: Consistently set VolumeMultiNode
- incusd/storage/lvm: Require an exclusive lock during snapshot
- incusd/storage/lvm: Properly handle activation during resize
- incusd/storage: Properly detect filesystem on remote block
- incusd/cluster: Always attempt to forward custom volume requests
- client: Always set GetBody
- client: Report OIDC refresh failure
- incus/remote: Forward OIDC auth failures
- Make run-parts running compatible with different versions
- client: Retry when told to by the proxy
- Use qemu-img convert output to update progress
- incusd/cluster: Add flagFormat
- internal/cmd: Add support for format options
- incusd/isntance/edk2: Move seabios to /usr/share/qemu
- incusd/isntance/edk2: Add ArchLinux x86_64 paths
- tests: Use future values in property test
- incusd/db/cluster: Cleanup indentation
- incusd/db/cluster: Update schema
- incusd/db/generate: Add exception for cluster tables
- api: clustering_groups_config
- incusd/db/cluster: Add cluster_groups_config
- incusd/db/cluster: Update schema
- shared/api: Add Config to ClusterGroupPut
- doc/rest-api: Refresh swagger YAML
- incusd/db/cluster: Update functions for new cluster group config table
- incusd/cluster: Add cluster group config logic
- doc: Update configs
- incus/completion: Add cmpClusterGroupConfigs
- incus/cluster/group: Add get/set/unset
- i18n: Update translation templates
- doc: Add cluster group config
- tests: Add cluster group config test
- incusd/resources: Add sortedMapKeys
- incusd/resources/cpu: Sort sockets, cores and threads
- incusd/auth: Fill missing local volume location
- incusd/cluster: Correctly record volatile.cluster.group on move
- incusd/migration: Show source errors first
- incusd/instance/qemu: Clarify live migration error
- incusd/cluster: Attempt to ping the server prior to healing
- incusd/instance/qemu: Fix bad timeout errors
- api: instances_lxcfs_per_instance
- incusd/instance/qemu: Send two ACPI events on shutdown
- incusd/instance: Add progress tracking to export
- incusd/server/config: Add instances.lxcfs.per_instance
- incusd/instance/lxc: Add support for per-instance LXCFS
- doc: Update configs
- client: Remove GetBody when can't seek back
- client: Add Seek call to GetBody
- Translated using Weblate (Chinese (Simplified))
- incusd: Simplify image replication
- incusd/images: Only remove from authorizer once
- incusd/images: Correctly record new aliases
- incusd/images: Correctly remove aliases
- incusd/images: Set authorizer entries at the correct time
- incusd/images: Don't alter image info on cluster copy
- incusd/storage_pools: Set authorizer for pending pools
- incusd/networks: Set authorizer for pending networks
- incusd/network: Handle long interface names
- incus/cluster: Cleanup certificate update message
- i18n: Update translation templates
- incus/top: Properly filter disk usage
- incusd/state: Add Cluster gateway
- incusd/daemon: Sort state fields
- incusd/daemon: Add cluster gateway to state
- incusd/acme: Update for state change
- incusd/images: Update for state change
- incusd/operations: Update for state change
- incusd/instances: Update for state change
- incusd/patches: Update for state change
- incusd/cluster: Update for state change
- incusd/instances: Use targetGroupPrefix
- incusd/cluster: Split files
- incusd/cluster: Fix import shadowing
- incusd/cluster: Re-factor healing logic
- incusd/cluster: Improve logging
- incusd/cluster: Reduce dqlite logging
- incusd/cluster: Extend HasConnectivity to do API checking
- incusd/cluster: Add HasConnectivity check to event handling
- incusd: Don't block on startup for cluster queries
- incusd/cluster: Rework offline server detection
- incusd/cluster/evacuation: Add separate healing mode
- incusd/cluster/healing: Try up to 5 times
- incusd/cluster/healing: Add logging
- incusd/device/disk: Fix bad CanMigrate logic
- incusd/storage/lvm: Properly activate/deactivate ISOs
- incusd/images: Expose image type as header
- client: Skip image hash if OCI
- incusd/instance/lxc: Add /init to OCI init paths
- incusd/device: Don't fail on LXCFS device entry
- client: Report source errors too on copy
- incusd/storage: Have roundVolumeBlockSizeBytes return an error
- incusd/instance_post: Fix cross-server live-migration
- incus/image: Correct image copy logic
- incusd/storage/lvm: Hardden common functions
- incusd/api: Don't panic on missing config
- incusd/storage: Add Deactivate flag
- incusd/storage/lvm: Add deactivation step for clusters
- incusd/cluster: Return clear status for servers currently starting up
- incusd/instance/lxc: Reduce logging level
- incusd/instance/qemu: Reduce logging level
- incusd/migrate: Reduce logging
- incusd/storage: Reduce logging
- incusd/instance/qemu: Remove double lifecycle event
- tests/clustering: Use correct target project argument
- incusd/isntance/edk2: Fix CSM handling
- incusd/storage/zfs: Always call tryGetVolumeDiskPathFromDataset
- incusd/network/ovn: Require functional uplink
- doc: add colima instructions
- doc: Update incus_alias.md
- incus/network/load_balancer: Fix example
- i18n: Update translation templates
- incusd/network/ovn: Fix crash on uninitialized external IDs
- doc/instances: Add VM agent install instructions
- shared/api: Add Config to ServerUntrusted
- doc/rest-api: Refresh swagger YAML
- incusd/api_1.0: Expose user.ui config keys to all clients
- doc/server: Mention user.ui config keys
- incusd/auth/oidc: Better handle logout
- incusd/networks: Emit lifecycle event and authz entries for OVN networks
- incusd/network/ovn: Fix indent
- doc/storage_volume: Fix snapshot command
- shared/api: Add EventLifecycleInstanceMigrated
- shared/api: Sort lifecycle events
- incusd/lifecycle: Add InstanceMigrated
- incusd/lifecycle: Sort lifecycle events
- incusd/isntance/operationlock: Add ActionMigrate
- incusd/instance/common: Add support for migration operation
- incusd/instance/qemu: Add support for migration operation and lifecycle
- incusd/instance/lxc: Add support for migration operation and lifecycle
- shared/api: Add lifecycle events for cluster evacuation and healing
- incusd/lifecycle: Add lifecycle events for cluster evacuation and healing
- incusd/cluster: Add lifecycle events for evacuation
- incusd/request: Strip port from event address
- incusd/instance: Properly link instance and operation
- incusd/operations: Add CopyRequestor for nested operations
- incusd/instance: Track operation during exec/console
- doc/clustering: Better document healing
- incusd/instance: Track operation during creation
- incusd/instance: Track operation during deletion
- incusd/instance: Keep track of API operations
- incusd/instance: Set operations on snapshot
- incus-migrate: Properly handle projects
- incusd/apparmor: Allow mounting zfs when delegation is supported
- doc/clustering: Add howto on cluster access
- cmd/incusd: Set keep-alive timeout
- incusd/auth/oidc: Handle cases where we can't set cookies
- incusd/instance/qemu: Deref ceph config path
- incusd/apparmor/qemu: Guess ceph config paths
- Translated using Weblate (Chinese (Simplified))
- Translated using Weblate (Chinese (Simplified))
- Translated using Weblate (Chinese (Simplified))
- incusd/instance/lxc: Respect LXCFS_OPTS
- api: clustering_groups_vm_cpu_definition
- incusd/cluster_groups: Add CPU definition keys
- doc: Update configs
- incusd/instance/qemu: Use cluster group config
- incusd/instance/drivers: Extract GetClusterCPUFlags
- incusd/cluster/group: Support for auto CPU flags
- incusd: Switch OVN to a getter function
- incusd/network: Port to new OVN state function
- incus: Add support for environment file (.env)
- i18n: Update translation templates
- incusd/storage/lvm: Re-try activation/deactivation
- incusd/storage/lvm: Don't activate volumes during cold migration
- Translated using Weblate (Chinese (Simplified))
- Translated using Weblate (Chinese (Simplified))
- shared/cliconfig: Add CacheDir
- incus: Configure a cache directory
- api: disk_volume_subpath
- incusd/device/disk: Allow relative paths within custom volumes
- doc/devices_disk: Mention sub-paths
- tests: Test volume subpaths
- api: projects_limits_disk_pool
- incusd/projects: Add new limits.disk.pool config key
- doc: Update configs
- incus/project: Handle pool disk limits
- incusd/project: Add per-pool disk limits
- incusd/project: Add HiddenStoragePools
- incusd/storage: Hide pools with a zero limit
- tests: Add test for per pool limits
- incus/image/alias: Add support for column selection
- i18n: Update translation templates
- incusd/main_forknet: Make it so our DHCP client never fails
- Translated using Weblate (Chinese (Simplified))
- api: network_ovn_isolated
- incusd/network/ovn: Harden deletion logic
- doc/network/ovn: Cover isolated networks
- incusd/networks: Reserve "none" for uplinks
- incusd/network/ovn: Allow creating isolated OVN networks (no uplink)
- incusd/device/nic_ovn: Handle networks without uplinks
- gomod: Update dependencies
- Release Incus 6.4
ドキュメント ¶
Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)
パッケージ ¶
Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。
Linux 上に Incus サーバーをインストールする ¶
Incus はほとんどの一般的な Linux ディストリビューションで利用できます。インストール手順の詳細は、Incus のドキュメントを参照してください。
https://incus-ja.readthedocs.io/ja/latest/installing/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/installing/ (原文)
Incus クライアントの Homebrew パッケージ ¶
HomeBrew 経由で、Linux と macOS 向けにクライアントツールが利用できます。
https://formulae.brew.sh/formula/incus
Incus クライアントの Chocolatey パッケージ ¶
Chocolatey 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://community.chocolatey.org/packages/incus/6.4.0
Incus クライアントの Winget パッケージ ¶
Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。
https://winstall.app/apps/LinuxContainers.Incus
サポート ¶
月次のフィーチャーリリースは、次のリリースがリリースされるまでのみサポートされます。より長いサポート期間と少ない変更頻度が必要な場合、代わりに Incus 6.0 LTS の使用を検討すべきです。
コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues
Incus 6.3 リリースのお知らせ¶
2024/07/12
はじめに ¶
Incus チームは、Incus 6.3 のリリースのアナウンスができてうれしいです!
このリリースのハイライトは、OCI アプリケーションコンテナの初期サポートです。
これにより、一般的な Docker/OCI コンテナイメージを直接 Incus で使用できるようになります。このコンテナは、通常のシステムコンテナや仮想マシンと一緒に使用できます。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
注意: オンラインデモ環境は Docker Hub にはアクセスできません。
Enjoy!
新機能 ¶
OCI アプリケーションコンテナの初期サポート ¶
Incus は、Docker Hub のようなアプリケーションコンテナのリポジトリにアクセスし、イメージを取得し、Incus で使えるように変換(フラット化)し、そして、そこから作業用コンテナを作成できるようになりました。
このサポートは、OCI コンテナサポートの非常に初期の状態であり、ユーザーからのフィードバックにもとづいて埋める必要があるギャップがかなりあると思われます。しかし現在、同じシステムで Docker と Incus を同時に動かしているユーザーや、単一のソフトウェアを実行するためだけに Incus コンテナ内で Docker を使っているユーザーのような、多数のシンプルなケースでは、Incus は直接それを処理できるようになったはずです。
リソースリミット、システムコールインターセプションといったような、すべての Incus コンテナの設定オプションは、これらのコンテナにもすべて適用されます。また、これらはすべて、システムコンテナと同様の安全なコンテナ環境で実行されます。
stgraber@dakara:~$ incus remote add docker https://docker.io --protocol=oci stgraber@dakara:~$ incus launch docker:mysql mysql \ > -c environment.MYSQL_DATABASE=wordpress \ > -c environment.MYSQL_USER=wordpress \ > -c environment.MYSQL_PASSWORD=wordpress \ > -c environment.MYSQL_RANDOM_ROOT_PASSWORD=1 Launching mysql stgraber@dakara:~$ incus list mysql +-------+---------+----------------------+------------------------------------------+-----------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-------+---------+----------------------+------------------------------------------+-----------------+-----------+ | mysql | RUNNING | 172.17.250.26 (eth0) | 2602:fc62:c:250:216:3eff:fefa:468 (eth0) | CONTAINER (APP) | 0 | +-------+---------+----------------------+------------------------------------------+-----------------+-----------+ stgraber@dakara:~$ incus launch docker:wordpress wordpress \ > -c environment.WORDPRESS_DB_HOST=172.17.250.26 \ > -c environment.WORDPRESS_DB_USER=wordpress \ > -c environment.WORDPRESS_DB_PASSWORD=wordpress \ > -c environment.WORDPRESS_DB_NAME=wordpress Launching wordpress stgraber@dakara:~$ incus list wordpress +-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+ | wordpress | RUNNING | 172.17.250.119 (eth0) | 2602:fc62:c:250:216:3eff:fe61:c1fc (eth0) | CONTAINER (APP) | 0 | +-----------+---------+-----------------------+-------------------------------------------+-----------------+-----------+ stgraber@dakara:~$
クラスター内のベースライン CPU 定義 ¶
これまでの Incus のライブマイグレーションの大きな制限の 1 つは、クラスター内のすべてのサーバーで同一の CPU が実行されている前提だったことです。2 つのシステム間で CPU が異なる場合、ライブマイグレーションは失敗するか、あとでクラッシュするかです。
これは Incus が、実行しているマシンから、すべての CPU フラグを常に公開するためです。
これは、スタンドアロンのシステムで最大限のパフォーマンスを得るには適しています。しかし、異機種クラスターではうまく機能しません。
このリリースで、Incus は、特定のアーキテクチャーのすべてのサーバーで共通の CPU フラグの組を自動的に計算するようになります。そして、ライブマイグレーションが有効(migration.stateful=true
)で実行されているすべてのインスタンスで CPU 定義として使用します。
io.bus
と io.cache
のファイルシステムサポート ¶
io.bus
と io.cache
オプションは、少し前から VM のディスク用に存在していました。
io.bus
では、virtio-scsi
、virtio-blk
、nvme
オプションが提供され、io.cache
では none
、writeback
、unsafe
キャッシュが使用できます。
これらの設定キーを、ディスクでなく、ファイルシステムを指定するときでもサポートするようになりました。
ファイルシステムを指定するときの値は少し異なり、io.bus
は auto
(デフォルト)、9p
、virtiofs
のいずれか、io.cache
は none
(デフォルト)、metadata
、unsafe
をサポートします。
これにより、ファイルシステムが VM に公開される方法を正確に制御し、virtiofs を使用するときにキャッシュ動作を微調整できます。
incus top
の改良 ¶
Incus 6.2 で、新たに incus top
コマンドを導入しました。
このリリースでは、リモートサーバーに対しても動作し、クラスター化された環境を適切にサポートし、プロジェクトも処理することで、より有用になりました。
+---------+---------------+-------------+-----------+-----------+ | PROJECT | INSTANCE NAME | CPU TIME(S) | MEMORY | DISK | +---------+---------------+-------------+-----------+-----------+ | default | incus-ui | 63.40 | 12.76MiB | 1.54GiB | +---------+---------------+-------------+-----------+-----------+ | default | kernel-test | 1865037.10 | 578.01MiB | 32.84GiB | +---------+---------------+-------------+-----------+-----------+ | default | speedtest | 84.10 | 23.14MiB | 400.12MiB | +---------+---------------+-------------+-----------+-----------+ | default | win11 | 1865.11 | 15.51GiB | | +---------+---------------+-------------+-----------+-----------+ | demo | mysql | 6.77 | 464.20MiB | 276.62MiB | +---------+---------------+-------------+-----------+-----------+ | demo | wordpress | 1.81 | 53.66MiB | 386.62MiB | +---------+---------------+-------------+-----------+-----------+ | vpn | vpn-dev | 102.97 | 36.83MiB | 412.00MiB | +---------+---------------+-------------+-----------+-----------+ | vpn | vpn-lab | 57.29 | 27.03MiB | 347.75MiB | +---------+---------------+-------------+-----------+-----------+ Press 'd' + ENTER to change delay Press 's' + ENTER to change sorting method Press CTRL-C to exit Delay: 10s Sorting Method: Alphabetical
サーバーリソースの CPU フラグ ¶
マシンのハードウェア構成に関する多くの詳細情報を公開するのに使うリソース API が更新され、CPU フラグが公開されるようになりました。
この機能は、先に紹介したベースライン CPU 機能の実装に必要でした。
新しいデータは、API で直接見つけることができ、CPU コアごとに提供されます。
stgraber@dakara:~$ incus query /1.0/resources | jq .cpu.sockets[0].cores[0].flags -c ["fpu","vme","de","pse","tsc","msr","pae","mce","cx8","apic","sep","mtrr","pge","mca","cmov","pat","pse36","clflush","mmx","fxsr","sse","sse2","ht","syscall","nx","mmxext","fxsr_opt","pdpe1gb","rdtscp","lm","constant_tsc","rep_good","nopl","xtopology","nonstop_tsc","cpuid","extd_apicid","aperfmperf","rapl","pni","pclmulqdq","monitor","ssse3","fma","cx16","sse4_1","sse4_2","x2apic","movbe","popcnt","aes","xsave","avx","f16c","rdrand","lahf_lm","cmp_legacy","svm","extapic","cr8_legacy","abm","sse4a","misalignsse","3dnowprefetch","osvw","ibs","skinit","wdt","tce","topoext","perfctr_core","perfctr_nb","bpext","perfctr_llc","mwaitx","cpb","cat_l3","cdp_l3","hw_pstate","ssbd","mba","ibrs","ibpb","stibp","vmmcall","fsgsbase","bmi1","avx2","smep","bmi2","erms","invpcid","cqm","rdt_a","rdseed","adx","smap","clflushopt","clwb","sha_ni","xsaveopt","xsavec","xgetbv1","xsaves","cqm_llc","cqm_occup_llc","cqm_mbm_total","cqm_mbm_local","clzero","irperf","xsaveerptr","rdpru","wbnoinvd","cppc","arat","npt","lbrv","svm_lock","nrip_save","tsc_scale","vmcb_clean","flushbyasid","decodeassists","pausefilter","pfthreshold","avic","v_vmsave_vmload","vgif","v_spec_ctrl","umip","pku","ospke","vaes","vpclmulqdq","rdpid","overflow_recov","succor","smca","fsrm","debug_swap"]
incus-simplestreams add
の 統合イメージサポート ¶
incus-simplestreams
ツールは、simplestream インデックスフォーマットを使って、Incus イメージをホスティングする静的な Web サーバーを管理するために使います。このツールが更新され、分割イメージだけでなく統合イメージもサポートされるようになりました。
Incus イメージは、メタデータファイルと 1 つの rootfs もしくはルートディスクからなる 2 つのファイルで構成される場合と、メタデータと rootfs もしくはルートディスクを、ディレクトリー/ファイルとして含む単一の tarball で構成される場合(統合イメージ)があります。
統合イメージをサーバーに追加するには、incus-simplestreams add
を、通常使うケースのように 2 つのファイルを指定するのではなく、単一のファイルを指定するだけです。
libovsdb 使用への移行の完了 ¶
過去 4〜5 リリースで、直接 ovs-vsctl
や ovn-nbctl
や ovn-sbctl
といったコマンドラインツールを直接呼び出す実装から、代わりにネイティブの OVSDB クライアントを使う実装に徐々に移行してきました。
この作業がついに終わり、Incus では、OVN を使うために、もうシステム上に OVS/OVN ツールが存在している必要はなくなりました。
新しいロジックでは、関連するデータベースへの永続的な接続を維持し、OVN とのやり取りに必要な時間と CPU オーバーヘッドを大幅に削減します。この永続的な接続により、以前のアプローチでは不可能だった、OVN から直接イベントを受信して反応することも可能になります。
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- incus/project: Fix bad --show-access output
- cmd/incus-user: Avoid double user-user- in network description
- Translated using Weblate (German)
- Translated using Weblate (Japanese)
- incus/admin_sql: Fix description
- incus/storage_bucket: Fix string quoting
- incus/profile: Fix examples
- incus/project: Fix examples
- incus/snapshot: Improve restore example
- incus/storage_bucket: Fix typoes in examples
- incus/storage_bucket: Fix export example
- incus/exec: Add some examples
- i18n: Update translation templates
- incus-user: Don't needlessly update the default profile
- incus/top: Support remote servers
- incus/top: Properly handle projects
- incus/top: Handle clusters
- incusd/instance/qemu: Avoid endianness issues with vsockIDInt
- internal/linux: Define some IOCTLs
- incusd/instance/qemu: Don't use hardcoded ioctl
- incusd/storage/btrfs: Don't use hardcoded ioctl
- incusd/devices: Simplify ioctl logic
- shared/cliconfig: Remove old migration logic
- shared/cliconfig: Generalize logic
- incusd/seccomp: Fix sysinfo logic on 32bit platforms
- shared/cliconfig: Always fill in the protocol
- incus: Generalize image server logic
- incus/console: Re-shuffle logic a bit
- incus: Handle stopped containers in --console
- incus/console: Don't export an internal function
- doc: update documentation for forming cluster with existing server
- github: Cleanup workflow file
- github: Build go tip
- github: Change Go releases in tests
- test/lint/golangci: Properly pull the parent ref
- cmd/incusd: Fix typo in forknet
- api: resources_cpu_flags
- shared/api: Add Flags to ResourceCPUCore
- doc/rest-api: Refresh swagger YAML
- incusd/resources: Add CPU Flags to ResourceCPUCore
- incusd/network/ovn: Port CreateLogicalRouterRoute to libovsdb
- incusd/network/ovn: Port DeleteLogicalRouterRoute to libovsdb
- incusd/network: Update for OVN function changes
- incusd/network/ovn: Port DeleteLogicalRouterPort to libovsdb
- incusd/network/ovn: Remove LogicalRouterPortDeleteIPv6Advertisements
- incusd/network: Update for OVN function changes
- incusd/network/ovn: Port DeleteLogicalSwitch to libovsdb
- incusd/network: Update for OVN function changes
- incusd/network/ovn: Remove logicalSwitchFindAssociatedPortGroups
- doc/instances_console: Tweak wording on SPICE clients
- incusd/network/ovn: Special handling for Load Balancer table
- incusd/network/ovn: Align functions context handling
- incusd/network/ovn: Port DeleteLogicalSwitchDHCPOption to libovsdb
- incusd/network/ovn: Port GetLogicalSwitchPortLocation to libovsdb
- incusd/network/ovn: Port GetLogicalSwitchPortUUID to libovsdb
- incusd/network/ovn: Port GetLogicalRouterPortHardwareAddress to libovsdb
- incusd/network/ovn: Add GetLogicalRouter
- incusd/network/ovn: Port DeleteLoadBalancer to libovsdb
- incusd/network/acl: Update for OVN function changes
- incusd/network: Update for OVN function changes
- incusd/network: Simplify OVN network deletion logic
- incus/network_load_balancer: Fix example
- i18n: Update translation templates
- incusd/network/ovn: Port UpdateLogicalSwitchIPAllocation to libovsdb
- incusd/network/ovn: Port UpdateLogicalSwitchDHCPv4Revervations to libovsdb
- incusd/network/ovn: Port GetLogicalSwitchDHCPv4Revervations to libovsdb
- incusd/network/ovn: Port GetLogicalSwitchDHCPOptions to libovsdb
- incusd/network/ovn: Port UpdateLogicalSwitchDHCPv4Options to libovsdb
- incusd/network/ovn: Port UpdateLogicalSwitchDHCPv6Options to libovsdb
- incusd/network: Update for OVN function changes
- incusd/networks: Properly finalize OVN networks
- incusd/networks: Properly record description
- incusd/response: Add Code function
- incusd/operations: Implement Code function
- incusd: Implement Code function
- incus-agent: Implement Code function
- client: Fix OIDC re-authentication on POST
- client: Fix OIDC re-authentication on websocket
- incus/network: Add missing stdin handling
- i18n: Update translation templates
- lxd-to-incus: Handle volume config keys
- incusd/project: Don't fail creation on authorizer
- doc/instance_units: Clarify usage
- incusd/network/ovn: Port logicalSwitchPortACLRules to libovsdb
- incusd/network/ovn: Port GetLogicalSwitchPorts to libovsdb
- incusd/network/ovn: Port UpdateLogicalSwitchPortOptions to libovsdb
- incusd/network/ovn: Port CreatePortGroup to libovsdb
- incusd/network: Update for OVN function changes
- incusd/device/nic: Update for OVN function changes
- incusd/network/acl: Update for OVN function changes
- incusd/network/ovn: Port GetPortGroupsByProject to libovsdb
- incusd/network/ovn: Port CreateAddressSet to libovsdb
- incusd/network/ovn: Port UpdateAddressSetAdd to libovsdb
- incusd/network/ovn: Port UpdateAddressSetRemove to libovsdb
- incusd/network/ovn: Port DeleteAddressSet to libovsdb
- incusd/network/acl: Update for OVN function changes
- incusd/network: Update for OVN function changes
- incusd/network/ovn: Port UpdateLogicalSwitchPortLinkRouter to libovsdb
- incusd/network/ovn: Port UpdateLogicalSwitchPortLinkProviderNetwork to libovsdb
- incusd/network/ovn: Port GetLogicalSwitchIPs to libovsdb
- incusd/network/ovn: Port GetLogicalSwitchPortDNS to libovsdb
- incusd/network: Update for OVN function changes
- incusd/network/ovn: Port UpdateLogicalSwitchPortDNS to libovsdb
- incusd/network/ovn: Port UpdatePortGroupMembers to libovsdb
- incusd/network/ovn: Port UpdateLogicalRouterPolicy to libovsdb
- incusd/network: Update for OVN function changes
- incusd/network/ovn: Port CreateLoadBalancer to libovsdb
- incusd/network/ovn: Port GetLogicalRouterRoutes to libovsdb
- incusd/network/ovn: Port DeleteLogicalRouterPeering to libovsdb
- incusd/network: Update for OVN function changes
- incusd/apparmor: Update for current QEMU
- incusd/apparmor: Allow /dev/shm in forkproxy
- incusd/network/ovn: Port CreateLogicalRouterPeering to libovsdb
- incusd/network: Update for OVN function changes
- Translated using Weblate (Chinese (Simplified))
- incusd/network/ovn: Port logicalSwitchPortDeleteDNSOperations to libovsdb
- incusd/network/ovn: Port DeleteLogicalSwitchPortDNS to libovsdb
- incusd/network/ovn: Port logicalSwitchPortDeleteOperations to libovsdb
- incusd/network/ovn: Port CleanupLogicalSwitchPort to libovsdb
- incusd/network/ovn: Port aclRuleDeleteOperations to libovsdb
- incusd/network/ovn: Port aclRuleAddOperations to libovsdb
- incusd/network/ovn: Port ClearPortGroupPortACLRules to libovsdb
- incusd/network/ovn: Port UpdatePortGroupPortACLRules to libovsdb
- incusd/network/ovn: Port UpdateLogicalSwitchACLRules to libovsdb
- incusd/network/ovn: Port UpdatePortGroupACLRules to libovsdb
- incusd/network/acl: Update for OVN function changes
- incusd/network: Update for OVN function changes
- incusd/network/ovn: Remove nbctl
- api: disk_io_bus_cache_filesystem
- incusd/device/disk: Extend io.bus option
- incusd/device/disk: Extend io.cache option
- incusd/device/disk: Add support for io.cache on virtiofs
- incusd/device/disk: Add support for io.bus on filesystems
- incusd/instance/driver_qemu: Handle 9p being disabled
- doc: Update configs
- doc/installing: Update Debian/Ubuntu build instructions
- doc/installing: Mention installing Go from upstream
- incusd/instance/edk2: Add new package to track EDK2 firmwares
- incusd/instance/qemu: Update to the new edk2 package
- incusd/apparmor: Update to the new edk2 package
- doc: Cleanup OVMF/EDK2 handling to cover aarch64
- doc/installing: Use Incus 6.0.0 as example
- incusd/instance/qemu: Fix handling of virtiofs-only disks
- incus/storage_volume: Tweak help messages
- i18n: Update translation templates
- incus/storage_volume: Fix lint
- doc/installing: Mention incus-tools package
- incus-simplestreams: Add support for unified images
- incus-simplestreams: Tweak help message
- incus-simplestreams: Refactor unified logic
- gomod: Update dependencies
- incusd/apparmor: Allow devpts mounts
- incusd: Improve profile rename errors
- incusd/sys: Add cluster resources cache path
- incusd/daemon: Locally cache other server resources
- incusd/instance/drivers/qmp: Add QueryCPUModel
- incusd/instance/qemu: Use cluster CPU flags for migration.stateful
- incus-user: Use shorter interrface name for long UIDs
- incusd/device/network: Fix Tap interface MTU when in OVN
- incusd/isntance: Don't expose all internal flags in INFO message
- incusd/instance/lxc: Allow calling Update from a Create operation
- cmd/incusd: Add forknet dhcp
- shared/subprocess: Allow building on Windows
- api: instance_oci
- client: Add basic OCI registry client
- incus: Add OCI remote support
- shared/cliconfig: Add OCI remote support
- incusd: Add OCI registry support
- incusd/instance/lxc: Basic OCI support
- internal/instance: Add volatile.container.oci
- incusd/instance/lxc: Add volatile.container.oci
- incus: Add support for volatile.container.oci
- incusd/instance: Handle OCI config on create from image
- tests: Add basic OCI test
- gomod: Update dependencies
- doc: Update configs
- doc: Add OCI to wordlist
- i18n: Update translation templates
- shared/subprocess: Fix gofmt
- incusd/storage/lvmcluster: Don't allow buckets
- incusd/storage/lvmcluster: Don't exclusively lock ISO volumes
- incusd/device/disk: Allow attaching the same ISO to multiple instances
- incusd/device/disk: Allow live-migration with agent/cloud-init disks
- incusd/instance/qemu: Fix live-migration with agent/cloud-init disks
- incusd/device/disk: Don't crash on uninitialized pool
- incusd/storage/lvmcluster: Always use shared access
- incusd/instance/lxc: Don't report filesystem metrics when no per-instance value
- incus/top: Set interval to 10s (minimum server-side is 8)
- incus/top: Hide zero values
- incusd/device/disk: Mark virtual disks as always migratable
- tests: Update metrics test for recent change
ドキュメント ¶
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.3.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
Incus 6.0.1 LTS リリースのお知らせ¶
2024/06/28
はじめに ¶
Incus チームは、Incus 6.0.1 のリリースのアナウンスができてうれしいです!
このリリースは、Incus 6.0 に対する初めてのバグ修正リリースであり、2029 年 6 月までサポートされます。
変更点 ¶
いつもどおり、このバグ修正リリースは、安定性とセキュリティー強化にフォーカスを当てています。
データのマイグレーションやデータベースの変更を必要とせず、ユーザーが予期しない動きの変化に直面するようなことにはならない、マイナーな改善もバックポートされています。
このような改良の数は、LTS ブランチ内では時間の経過とともに減少するでしょう。
このリリースのハイライトは次のとおりです:
- ZFS プールに対する拡張されたソース書式(ミラー、raidz1/raidz2)
- すべてのオブジェクト(インスタンス、プロファイル、イメージ、ストレージボリューム・バケット、ネットワーク)での、プロジェクトをまたぐリスト表示
- インスタンス配置スクリプトレットで利用できる追加関数
- CLI のすべての
create
サブコマンドがYAML 入力を受け付けるように - CLI のすべての
list
サブコマンドが出力カラムのカスタマイズを受け付けるように migration.stateful
設定キーがコンテナにも拡張- OVN でのステートレスネットワーク ACL のサポート
- インスタンスの uptime の出力
- 新たな
incus top
コマンド(既存の metric API を使用) incus info --resources
内のシステム負荷情報incus info --resources
内の PCI デバイス情報- プロジェクトとインスタンスへ、誰がアクセスしたかを問い合わせる機能
- プロジェクトの強制削除
incus-simplestreams
のエイリアスの扱いの改良
コミットのすべてのリストは次のとおりです:
すべての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
- incusd/instance/lxc: Add gendoc comments for image restrictions
- incusd/instance/qemu: Add gendoc comments for image restrictions
- doc: Update configs
- doc/image-handling: Use gendoc data
- incus/storage_bucket: Add yaml support for key create
- i18n: Update translation templates
- incusd/instance/qemu: Fix StartedAt handling
- incus/storage: Customizable columns in list
- i18n: Update translation templates
- incusd/network/ovn: Port LogicalRouterSNATAdd and LogicalRouterDNATSNATAdd to libovsdb
- incusd/network: Update for OVN function changes
- api: instances_scriptlet_get_project
- doc/instances/scriptlet: Add get_project
- incusd/scriptlet: Add get_project
- api: networks_all_projects
- shared/api: Add Project field to Network
- client: Add GetNetworksAllProjects
- incus/network: Add all-projects
- incusd/db: Add GetNetworksAllProjects
- incusd/networks: Add all-projects
- internal/instance: Add gendoc for limits.kernel
- doc: Update configs
- doc: Use gendoc for limits.kernel
- api: network_acls_all_projects
- shared/api: Add Project field to NetworkACL
- client: Add GetNetworkACLsAllProjects
- incus/network/acl: Add all-projects
- incusd/db: Add GetNetworkACLsAllProjects
- incusd/network/acl: Set Project field
- incusd/network_acls: Add all-projects
- api: storage_buckets_all_projects
- shared/api: Add Project field to StorageBucket
- client: Add GetStoragePoolBucketsAllProjects
- incus/storage/bucket: Add all-projects
- incusd/db/storage_buckets: Fill Project field
- incusd/storage_buckets: Add all-projects
- i18n: Update translation templates
- incusd/networks: Fix import shadowing
- doc/rest-api: Refresh swagger YAML
- client: Align GetProfilesAllProjects with GetProfiles
- client: Align GetNetworkZonesAllProjects with GetNetworkZones
- client: Standardize the GetNetworkAllocation functions
- incus/network_allocations: Update for client changes
- incusd/device/usb: Add gendoc for the USB device
- doc: Update configs
- doc: Use gendoc for USB devices
- api: resources_load
- shared/api: Add Load to resources API
- doc/rest-api: Refresh swagger YAML
- incusd/resources: Add load information
- incus/info: Add load information
- i18n: Update translation templates
- incusd/device/unix: Add gendoc comments
- doc: Update configs
- doc/devices_unix_block.md: Use gendoc data
- doc/devices_unix_char.md: Use gendoc data
- doc/devices_unix_hotplug.md: Use gendoc data
- incus/top: Add new command
- i18n: Update translation templates
- incusd/network/zone: add gendoc for network zone
- doc: Update configs
- doc: Use gen doc for network zones
- incusd/device/unix: Run gofmt
- incus/info: Add PCI devices to --resources
- i18n: Update translation templates
- incusd/device/disk: Add gendoc comments
- doc: Update configs
- doc/devices/disk: Use gendoc
- incus/network: Customizable columns in list
- i18n: Update translation templates
- incusd/network_zones: Fix listing of zones within a project
- incusd/instance/lxc: Fix handling of migration.stateful
- gomod: Update dependencies
- incusd/network/ovs: Fix bad VLANMode value
- fix: close resources
- incusd/instance: Fix building on 32bit architectures
- incus/network_zone: Add example for network zone record create
- i18n: Update translation template
- incus/storage_volume: Add yaml support for create
- i18n: Update translation templates
- cmd/incus/info: Fix runtime error when chassis, motherboard and firwmare information is not available
- Translated using Weblate (German)
- incusd/instance/qemu: Allow setting protection.delete when running
- doc/api-extension: Fix typo
- shared/api: Introduce Access structs
- api: instance_access
- incusd/auth: Introduce GetInstanceAccess
- incusd/instance: Add access endpoint
- api: project_access
- incusd/auth: Introduce GetProjectAccess
- incusd/project: Add access endpoint
- doc/rest-api: Refresh swagger YAML
- client: Add GetInstanceAccess
- client: Add GetProjectAccess
- incus/info: Fix description of --show-log
- incus/info: Add --show-access
- incus/project: Add --show-access to info
- i18n: Update translation templates
- incusd/auth/fga: Rename manager by admin in model
- incusd/auth/fga: Rework permission model
- incusd/auth/fga: Rebuild model
- tests: Fix for permission changes
- incusd/instance/agent-loader: Support installing to /etc
- incusd/apparmor/lxc: Fix rule syntax
- incus-simplestreams add: added flags: --no-default-alias, --alias. #875
- incus/storage_volume/snapshot: Support YAML for creation
- i18n: Update translation templates
- shared/idmap: Make get_userns_fd configure the userns
- incus-migrate: Handle valid CA certificates
- incusd/instances_post: Fix migrating into remote cluster
- incusd/apparmor: Detect nosymfollow support
- incusd: Set SELinux label on socket
- incus/network: Align attach-profile with attach
- create_detached_idmapped_mount: avoid double close
- incusd/instance/qemu: Extend missing QEMU error
- doc/installing: Mention extra packages for VMs
- incusd/storage/btrfs: Fix btrfs argument order
- incusd/seccomp/sysinfo: Handle 32bit on 64bit
- api: projects_force_delete
- incusd/api_project: Add force delete endpoint
- doc/rest-api: Refresh swagger YAML
- client: Introduce DeleteProjectForce
- cmd/incus/project: Add --force to delete
- i18n: Update translation templates
- incusd/project: Simplify projectIsEmpty
- incusd/db: Introduce GetNetworkZoneURIs
- incusd/db: Introduce GetStorageBucketURIs
- incusd/api_project: Fix UsedBy
- incusd/api_project: Add force deletion logic
- incus/completion: Reduce API calls
- incus/publish: Complete snapshot names
- incus/completion: Fix import shadowing
- Translated using Weblate (French)
- Makefile: Pin go-acme/lego for Go 1.21
- Update dependencies
- cmd/incus/console: Cleanup --show-log
- incusd/instance_console: Remove old check
- incusd/instance_console: Handle missing log file
- incusd/instance_console: Don't fail on empty logs
- incusd/instance_console: Cleanup error message
- i18n: Update translation templates
- incusd/device/sriov: Line up code with comment
- incus/project: Fix bad --show-access output
- cmd/incus-user: Avoid double user-user- in network description
- Translated using Weblate (German)
- Translated using Weblate (Japanese)
- incus/admin_sql: Fix description
- incus/storage_bucket: Fix string quoting
- incus/profile: Fix examples
- incus/project: Fix examples
- incus/snapshot: Improve restore example
- incus/storage_bucket: Fix typoes in examples
- incus/storage_bucket: Fix export example
- incus/exec: Add some examples
- i18n: Update translation templates
- incus-user: Don't needlessly update the default profile
- incus/top: Support remote servers
- incus/top: Properly handle projects
- incus/top: Handle clusters
- incusd/instance/qemu: Avoid endianness issues with vsockIDInt
- internal/linux: Define some IOCTLs
- incusd/instance/qemu: Don't use hardcoded ioctl
- incusd/storage/btrfs: Don't use hardcoded ioctl
- incusd/devices: Simplify ioctl logic
- shared/cliconfig: Remove old migration logic
- shared/cliconfig: Generalize logic
- incusd/seccomp: Fix sysinfo logic on 32bit platforms
- shared/cliconfig: Always fill in the protocol
- incus: Generalize image server logic
- incus/console: Re-shuffle logic a bit
- incus: Handle stopped containers in --console
- incus/console: Don't export an internal function
- doc: update documentation for forming cluster with existing server
- github: Cleanup workflow file
- github: Build go tip
- github: Change Go releases in tests
- test/lint/golangci: Properly pull the parent ref
- cmd/incusd: Fix typo in forknet
- api: resources_cpu_flags
- shared/api: Add Flags to ResourceCPUCore
- doc/rest-api: Refresh swagger YAML
- incusd/resources: Add CPU Flags to ResourceCPUCore
- doc/instances_console: Tweak wording on SPICE clients
- incus/network_load_balancer: Fix example
- i18n: Update translation templates
- incusd/networks: Properly finalize OVN networks
- incusd/networks: Properly record description
- incusd/response: Add Code function
- incusd/operations: Implement Code function
- incusd: Implement Code function
- incus-agent: Implement Code function
- client: Fix OIDC re-authentication on POST
- client: Fix OIDC re-authentication on websocket
- incus/network: Add missing stdin handling
- i18n: Update translation templates
- lxd-to-incus: Handle volume config keys
- incusd/project: Don't fail creation on authorizer
- doc/instance_units: Clarify usage
- incusd/apparmor: Update for current QEMU
- incusd/apparmor: Allow /dev/shm in forkproxy
- Translated using Weblate (Chinese (Simplified))
- doc/installing: Update Debian/Ubuntu build instructions
- doc/installing: Mention installing Go from upstream
- doc/installing: Use Incus 6.0.0 as example
サポートとアップグレード ¶
Incus 6.0 ブランチは 2029 年 6 月までサポートされます。常に最新の LTS バグ修正リリースを実行することを強く推奨します。
ダウンロード ¶
- リリース tarball : incus-6.0.1.tar.xz
- GPG シグネチャー : incus-6.0.1.tar.xz.asc
Incus 6.2 リリースのお知らせ¶
2024/05/31
はじめに ¶
Incus チームは、Incus 6.2 のリリースのアナウンスができてうれしいです!
このリリースには、テキサス大学オースティン校の学生による変更の第 2 弾と、その他いくつかの機能追加と改良が含まれています。
いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/
Enjoy!
新機能 ¶
新しい incus top
コマンド ¶
新たに incus top
コマンドを追加しました。これは、Incus のビルトイン OpenMetrics エンドポイント上に構築され、CPU、メモリー、ディスク使用量のインスタンスのリストの更新ビューが表示できるようになります。
+---------------+-------------+-----------+-----------+ | INSTANCE NAME | CPU TIME(S) | MEMORY | DISK | +---------------+-------------+-----------+-----------+ | foo | 6.73 | 12.44MiB | 341.88MiB | +---------------+-------------+-----------+-----------+ | speedtest | 32.79 | 23.84MiB | 373.50MiB | +---------------+-------------+-----------+-----------+ | v1 | 67130.91 | 254.54MiB | 1.25GiB | +---------------+-------------+-----------+-----------+ Press 'd' + ENTER to change delay Press 's' + ENTER to change sorting method Press CTRL-C to exit Delay: 5s Sorting Method: Alphabetical
この作業は、テキサス大学オースティン校の学生によるコントリビューションです。
リソース API 内のシステム負荷情報 ¶
リソース API に新しいセクションが追加されました。サーバー負荷情報(1分、5分、10分)と、合計プロセス数が公開されるようになりました。
これは、Incus API からだけでさまざまなサーバーがどの程度ビジーかをひと目で見ることができるため、配置や自動バランシングのロジックに特に役立つでしょう。
stgraber@castiana:~$ incus info --resources System: UUID: 05006c9c-7863-ee11-9e1b-224425600022 Vendor: Framework Product: Laptop 13 (AMD Ryzen 7040Series) Family: Laptop Version: A5 SKU: FRANDGCP05 Serial: FRANDGCPA5340500AZ Type: physical Chassis: Vendor: Framework Type: Notebook Version: A5 Serial: FRANDGCPA5340500AZ Motherboard: Vendor: Framework Product: FRANMDCP05 Serial: FRANMDCPA534040120 Version: A5 Firmware: Vendor: INSYDE Corp. Version: 03.05 Date: 03/29/2024 Load: Processes: 519 Average: 0.80 0.77 0.71 [snip...]
この作業は、テキサス大学オースティン校の学生によるコントリビューションです。
インスタンスとプロジェクトへのアクセス情報を問い合わせる機能 ¶
新しい API が 2 つ追加され、プロジェクトまたは特定のインスタンスのアクセスリストが照会できるようになりました。
これは、OpenFGA サポートと統合されており、OpenFGA の十分に新しいバージョンであれば、誰がインスタンスにアクセスでき、どのようなロールを持っているのかを正確に表示します。
stgraber@castiana:~$ incus info --show-access foo - identifier: stgraber@stgraber.org role: admin provider: openfga stgraber@castiana:~$ incus project info --show-access default - identifier: stgraber@stgraber.org role: admin provider: openfga
この作業は、テキサス大学オースティン校の学生によるコントリビューションです。
プロジェクトの強制削除 ¶
多数の負荷の高いプロジェクトを扱うとき、プロジェクトを削除するには、それらに含まれるすべてを正しい順序で探し出して、削除する必要があるため、かなりフラストレーションがたまります。
このようなことに対応するため、プロジェクトを削除する前に、すべてを正しい順序で削除するように Incus に指示する incus project delete --force
が追加されました。
このコマンドは明らかに危険なコマンドです。このコマンドラインツールは、このプロジェクトをすべて削除しても良いのかを常に確認します。
stgraber@castiana:~$ incus project delete demo Error: Only empty projects can be removed. stgraber@castiana:~$ incus project delete demo --force Remove demo and everything it contains (instances, images, volumes, networks, ...) (yes/no): yes Project demo deleted
新たに get_project
関数をスクリプトレット関数に追加 ¶
スクリプトレットによるインスタンス配置機能(instances.placement.scriptlet
)を利用しているユーザー向けに、新たに get_project
関数を追加しました。
この機能により、特定のプロジェクトのすべての詳細情報(api.Project
)が取得できるようになり、プロジェクトの制限や制約を、配置を決定する際に特に役に立つようになりました。
ドキュメント: https://linuxcontainers.org/incus/docs/main/explanation/clustering/#instance-placement-scriptlet
この作業は、テキサス大学オースティン校の学生によるコントリビューションです。
プロジェクトをまたぐオブジェクトの問い合わせ ¶
Incus は、プロジェクトをまたいだ、すべてのインスタンスのリスト表示を長い間サポートしてきました。
そして、最近では、この機能はストレージボリューム、イメージ、プロファイル、ネットワークゾーン、オペレーションもカバーするように拡張されました。
Incus 6.2 では、残りのすべてのオブジェクトが、この機能をサポートするようになりました。追加されたのは次のものです:
- ストレージバケット
- ネットワーク
- ネットワーク ACL
CLI もそれに合わせて更新されたので、プロジェクト固有である可能性のあるオブジェクトを操作する list
コマンドもすべて、--all-projects
をサポートするようになりました。
この作業は、テキサス大学オースティン校の学生によるコントリビューションです。
incus info --resources
の PCI デバイス ¶
incus info --resources
の出力に、すべての PCI デバイスが含まれるようになりました。
従来は、GPU もしくはディスクセクションに含まれるデバイスのみが利用できました。
この作業は、テキサス大学オースティン校の学生によるコントリビューションです。
incus-simplestreams
のエイリアス処理の改良 ¶
初期の incus-simplestreams
の実装は、基本的に DISTRIBUTION/RELEASE/VARIANT
という標準的なエイリアスが自動的に生成されます。しかし、これはすべての環境に適しているわけではありません。そこで、incus-simplestreams add
に新たに 2 つの引数が追加されました。
- 前述のエイリアスを無効化するための
--no-default-alias
- カスタムエイリアスを定義するための
--alias
(複数回指定可能)
incus
CLI の create
に与える YAML ¶
この作業は Incus 6.1 で始まり、今回完了しました。
すべての create
コマンド、incus init
、incus launch
コマンドは、標準入力からの YAML を初期設定として読み取ることをサポートするようになりました。
これにより複雑なデプロイのスクリプトがはるかに簡単に作成できるようになります。
CLI のリストのカラムのカスタマイズ ¶
Incus 6.1 で開始したもう 1 つの作業が完了しました。
list
機能を持つ CLI コマンドはすべて、--column/-c
フラグをサポートするようになりました。
この作業は、テキサス大学オースティン校の学生によるコントリビューションです。
ドキュメントの自動生成の増加 ¶
ほとんどのユーザーは気づかないことですが、ドキュメントが古くなったり、動機がずれるリスクを減らすため、コード内のコメントから直接ドキュメントが生成されるように徐々に移行しています。
Incus 6.2 では、次のドキュメントがこの方法で生成されるようになりました:
- Network zones
- Image restrictions
- Kernel limits
- Devices
- disk
- unix-block
- unix-char
- unix-hotplug
- usb
この作業は、テキサス大学オースティン校の学生によるコントリビューションです。
すべての変更点 ¶
このリリースのすべての変更のリストは次の通りです(翻訳なし):
すべてのChangeLogを見る
- incusd/instance/lxc: Add gendoc comments for image restrictions
- incusd/instance/qemu: Add gendoc comments for image restrictions
- doc: Update configs
- doc/image-handling: Use gendoc data
- incus/storage_bucket: Add yaml support for key create
- i18n: Update translation templates
- incusd/instance/qemu: Fix StartedAt handling
- incus/storage: Customizable columns in list
- i18n: Update translation templates
- incusd/network/ovn: Port LogicalRouterSNATAdd and LogicalRouterDNATSNATAdd to libovsdb
- incusd/network: Update for OVN function changes
- api: instances_scriptlet_get_project
- doc/instances/scriptlet: Add get_project
- incusd/scriptlet: Add get_project
- api: networks_all_projects
- shared/api: Add Project field to Network
- client: Add GetNetworksAllProjects
- incus/network: Add all-projects
- incusd/db: Add GetNetworksAllProjects
- incusd/networks: Add all-projects
- internal/instance: Add gendoc for limits.kernel
- doc: Update configs
- doc: Use gendoc for limits.kernel
- api: network_acls_all_projects
- shared/api: Add Project field to NetworkACL
- client: Add GetNetworkACLsAllProjects
- incus/network/acl: Add all-projects
- incusd/db: Add GetNetworkACLsAllProjects
- incusd/network/acl: Set Project field
- incusd/network_acls: Add all-projects
- api: storage_buckets_all_projects
- shared/api: Add Project field to StorageBucket
- client: Add GetStoragePoolBucketsAllProjects
- incus/storage/bucket: Add all-projects
- incusd/db/storage_buckets: Fill Project field
- incusd/storage_buckets: Add all-projects
- i18n: Update translation templates
- incusd/networks: Fix import shadowing
- doc/rest-api: Refresh swagger YAML
- client: Align GetProfilesAllProjects with GetProfiles
- client: Align GetNetworkZonesAllProjects with GetNetworkZones
- client: Standardize the GetNetworkAllocation functions
- incus/network_allocations: Update for client changes
- incusd/device/usb: Add gendoc for the USB device
- doc: Update configs
- doc: Use gendoc for USB devices
- api: resources_load
- shared/api: Add Load to resources API
- doc/rest-api: Refresh swagger YAML
- incusd/resources: Add load information
- incus/info: Add load information
- i18n: Update translation templates
- incusd/device/unix: Add gendoc comments
- doc: Update configs
- doc/devices_unix_block.md: Use gendoc data
- doc/devices_unix_char.md: Use gendoc data
- doc/devices_unix_hotplug.md: Use gendoc data
- incus/top: Add new command
- i18n: Update translation templates
- incusd/network/zone: add gendoc for network zone
- doc: Update configs
- doc: Use gen doc for network zones
- incusd/device/unix: Run gofmt
- incus/info: Add PCI devices to --resources
- i18n: Update translation templates
- incusd/device/disk: Add gendoc comments
- doc: Update configs
- doc/devices/disk: Use gendoc
- incus/network: Customizable columns in list
- i18n: Update translation templates
- incusd/network_zones: Fix listing of zones within a project
- incusd/instance/lxc: Fix handling of migration.stateful
- gomod: Update dependencies
- incusd/network/ovs: Fix bad VLANMode value
- fix: close resources
- incusd/instance: Fix building on 32bit architectures
- incus/network_zone: Add example for network zone record create
- i18n: Update translation template
- incus/storage_volume: Add yaml support for create
- i18n: Update translation templates
- cmd/incus/info: Fix runtime error when chassis, motherboard and firwmare information is not available
- Translated using Weblate (German)
- incusd/instance/qemu: Allow setting protection.delete when running
- doc/api-extension: Fix typo
- shared/api: Introduce Access structs
- api: instance_access
- incusd/auth: Introduce GetInstanceAccess
- incusd/instance: Add access endpoint
- api: project_access
- incusd/auth: Introduce GetProjectAccess
- incusd/project: Add access endpoint
- doc/rest-api: Refresh swagger YAML
- client: Add GetInstanceAccess
- client: Add GetProjectAccess
- incus/info: Fix description of --show-log
- incus/info: Add --show-access
- incus/project: Add --show-access to info
- i18n: Update translation templates
- incusd/auth/fga: Rename manager by admin in model
- incusd/auth/fga: Rework permission model
- incusd/auth/fga: Rebuild model
- tests: Fix for permission changes
- incusd/instance/agent-loader: Support installing to /etc
- incusd/apparmor/lxc: Fix rule syntax
- incus-simplestreams add: added flags: --no-default-alias, --alias. #875
- incus/storage_volume/snapshot: Support YAML for creation
- i18n: Update translation templates
- shared/idmap: Make get_userns_fd configure the userns
- incus-migrate: Handle valid CA certificates
- incusd/instances_post: Fix migrating into remote cluster
- incusd/apparmor: Detect nosymfollow support
- incusd: Set SELinux label on socket
- incus/network: Align attach-profile with attach
- create_detached_idmapped_mount: avoid double close
- incusd/instance/qemu: Extend missing QEMU error
- doc/installing: Mention extra packages for VMs
- incusd/storage/btrfs: Fix btrfs argument order
- incusd/seccomp/sysinfo: Handle 32bit on 64bit
- api: projects_force_delete
- incusd/api_project: Add force delete endpoint
- doc/rest-api: Refresh swagger YAML
- client: Introduce DeleteProjectForce
- cmd/incus/project: Add --force to delete
- i18n: Update translation templates
- incusd/project: Simplify projectIsEmpty
- incusd/db: Introduce GetNetworkZoneURIs
- incusd/db: Introduce GetStorageBucketURIs
- incusd/api_project: Fix UsedBy
- incusd/api_project: Add force deletion logic
- incus/completion: Reduce API calls
- incus/publish: Complete snapshot names
- incus/completion: Fix import shadowing
- Translated using Weblate (French)
- Makefile: Pin go-acme/lego for Go 1.21
- Update dependencies
- cmd/incus/console: Cleanup --show-log
- incusd/instance_console: Remove old check
- incusd/instance_console: Handle missing log file
- incusd/instance_console: Don't fail on empty logs
- incusd/instance_console: Cleanup error message
- i18n: Update translation templates
- incusd/device/sriov: Line up code with comment
ドキュメント ¶
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.2.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