Back to the news overview

Incus 0.5.1 リリースのお知らせ

2024/01/29

はじめに

Incus チームは、Incus 0.5.1 のリリースのアナウンスができてうれしいです!

通常、毎月の機能リリースに加えてポイントリリースを行わないため、このリリースは異例のリリースです。しかし、非常に重要なバグ修正のいくつかと、CentOS/Alma/Rocky 仮想マシンを実行するために必要なマイナーな機能追加があるので、今回のリリースが必要でした。

ほとんどの変更はサーバー側であるため、コマンドラインクライアントを使うのみの場合は、0.5 から 0.5.1 にアップグレードする強い理由はありません。

image|690x454

いつものように、オンラインでご自身で試せます: https://linuxcontainers.org/incus/try-it/

Enjoy!

ハイライト

VM エージェントを取得するための別の方法

Incus 0.5 で、Incus の VM エージェントを配布するメカニズムが少し変わりました。
以前は、インスタンス固有のエージェント設定と incus-agent バイナリーの両方を含む config という名前の単一の共有がありました。

これは少し無駄であり、各 VM に 15-20MB の大きな incus-agent のコピーが必要です。しかし、それでもある程度は管理できました。この共有は 9pvirtiofs の両方でも公開されます。Incus VM ごとにホストシステム上で 2 つのプロセスが実行されることになります。

複数のエージェントバイナリーのサポートで、全 VM にバイナリーをコピーすることは選択肢ではなくなりました。そのため、バイナリー向けに別の共有が導入されました。VM ごとにホスト上でさらに 2 つのプロセスが実行されることは本当に望ましくなかったので、それらの内部共有は 9p を通して利用できるようにすることに決定しました。

CentOS 7 を含む、さまざまなイメージでテストしたところ、これで問題がないことがわかりました。
9pvirtiofs にくらべてパフォーマンスが劣りますが、これらの共有は VM の起動ごとに数秒しか使わないため、実際には問題にはなりませんでした。ユーザー定義の共有は、引き続き virtiofs を通して公開されるため、この共有には引き続き高いパフォーマンスのオプションが提供されます。

われわれが気づかなかった問題は、CentOS 8-Stream、CentOS 9-Stream や他の RHEL 8/9 派生のディストリビューションでは、9p カーネルドライバーが同梱されていないことでした…

これらのインスタンスでは、エージェントを取得する方法がなくなり、incus execincus file が正常に動かないことになりました。

いくつかのイメージ上で動かすために、Incus VM ごとに 4 つのホストプロセスを実行するのは気が進みません。その代わり、Incus 0.5.1 では新たなエージェントドライブを導入しました。これは、特定の VM にアタッチできる追加ディスクです。ネットワークファイルシステムからファイルを取得するのではなく、CD-ROM ドライブに見えるところからファイルを提供します。

このため、CentOS 9-Stream を動かすには、次のようにする必要があります:

incus create images:centos/9-Stream centos --vm
incus config device add centos agent disk source=agent:config
incus start centos

このような VM を多数動作させる場合、このような VM 用にプロファイルを作成するのが良いでしょう:

incus profile create vm-agent
incus profile device add vm-agent agent disk source=agent:config

プロファイルを作成すると、次のようにできます:

incus launch images:centos/9-Stream centos --vm -p default -p vm-agent

これは、明らかに理想的ではなく、これらのディストリビューション用の VM を作成するときに、いくつか手順が追加されますが、この新しいメカニズムにより、ほぼすべての環境でエージェントを起動して実行する方法が提供できます。

注意: CD-ROM デバイスを生成するにはリソースが必要であり、ホスト上の追加ディスクを使います。このため、追加のデバイスを常に提供することは考えていません。必要なときだけ追加するのが最適です。

退避中の停止中インスタンスのハンドリングの修正

Incus 0.5 で混入したバグにより、インスタンスがそのままの場所にとどまるように設定されていても、退避中に他のシステムに移動してしまうことがありました。

この問題は修正され、stoppedforce-stopstateful-stop 使っているインスタンスは、現在のサーバーにとどまるようになりました。

データベースパフォーマンスの修正

Incus 0.5 で行われたデータベースの改善で、多数のインスタンスのネットワーク情報の詳細を取得する際、ネストしたデータベースのトランザクションが発生してしまうことがありました。

これは、DNS ゾーンを提供し、Prometheus がメトリクスを取得する Incus クラスターを使っているときのみ表面化します。このコンビネーションにより、15 秒程度ごとに API リクエストが急増し、タイムアウトとリトライがトリガーされはじめ、最終的には API リクエストが積み重なり、タイムアウトします。

このようなネストしたトランザクションを削除するためにロジックを変更しました。そして、インスタンスのコマンドインスタンスを実行するようなコマンド API 対話中の一部のデータベース処理を節約するようなさらなる最適化も行われました。

すべての変更点

このリリースのすべての変更のリストは次の通りです(翻訳なし):

すべてのChangeLogを見る
  • Translated using Weblate (German)
  • Translated using Weblate (Dutch)
  • incus/action: Fix resume
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • Translated using Weblate (Japanese)
  • doc: Remove net_prio
  • incusd/cgroup: Fully remove net_prio
  • incusd/warningtype: Remove net_prio
  • incusd/cgroup: Look for full cgroup controllers list at the root
  • incusd/dns: Serialize DNS queries
  • incusd/network: Optimize UsedByInstanceDevices
  • incusd/backups: Simplify missing backup errors
  • tests: Update for current backup errors
  • incusd/cluster: Optimize ConnectIfInstanceIsRemote
  • incusd/instance/qemu/agent-loader: Fix to work with busybox
  • doc/installing.md: add a gentoo-wiki link under Gentoo section
  • Translated using Weblate (French)
  • Translated using Weblate (Dutch)
  • incusd/device/disk: Better cleanup cloud-init ISO
  • incusd/instance/qemu/qmp: Add Eject command
  • incusd/instance/qemu/qmp: Handle eject requests
  • api: agent_config_drive
  • doc/devices/disk: Add agent:config drive
  • incusd/device/disk: Add agent config drive
  • incusd/project: Add support for agent config drive
  • incusd/instance/qemu/agent-loader: Handle agent drive
  • incusd/db/warningtype: gofmt
  • incusd/loki: Sort lifecycle context keys
  • incusd/instance/qemu/agent-loader: Don't hardcode paths
  • incusd/cluster: Fix evacuation of stopped instances

ドキュメント

Incus のドキュメントはこちらです:
https://incus-ja.readthedocs.io/ja/latest/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/ (原文)

パッケージ

Incus の開発元は、通常リリースの tarball のみをリリースするため、公式の Incus パッケージはありません。Incus を実行するために使えるオプションを以下にいくつか示します。

Linux 上に Incus サーバーをインストールする

Incus はほとんどの一般的な Linux ディストリビューションで利用できます。インストール手順の詳細は、Incus のドキュメントを参照してください。

https://incus-ja.readthedocs.io/ja/latest/installing/ (日本語訳)
https://linuxcontainers.org/incus/docs/main/installing/ (原文)

Incus クライアントの Homebrew パッケージ

HomeBrew 経由で、Linux と macOS 向けにクライアントツールが利用できます。

https://formulae.brew.sh/formula/incus

Incus クライアントの Chocolatey パッケージ

Chocolatey 経由で、Windows ユーザー向けにクライアントツールが利用できます。

https://community.chocolatey.org/packages/incus/0.5

Incus クライアントの Winget パッケージ

Winget 経由で、Windows ユーザー向けにクライアントツールが利用できます。

https://winstall.app/apps/LinuxContainers.Incus

サポート

現在は初期段階ですので、Incus の各リリースは、次のリリースが出るまでしかサポートされません。LXC と LXCFS のリリースと合わせて LTS リリースを計画していますので、この状況はここ数ヶ月で変わるでしょう。

コミュニティサポートはこちらから : https://discuss.linuxcontainers.org
商用サポートはこちらから : https://zabbly.com/incus
バグはこちらから報告できます : https://github.com/lxc/incus/issues