Back to the news overview

LXD 3.5 リリースのお知らせ

11th of September 2018

はじめに

LXD チームは LXD 3.5 のリリースを発表することにとてもワクワクしています!

あなたはおそらく、通常の機能変更と比べて小さい変更であることに気づくでしょう。
これは、取り組んでいる作業の中には単一のリリースサイクルの中には収まらないほど大きな作業があるので、LXD 3.6 か 3.7 でのリリースを目指すことにしたからです。
また、カンファレンスシーズンが始まるからでもあります。

このリリースには、特にクラスターを使っていたり、エンタープライズユーザーのための多数の待望の改良や、多数のバグ修正とパフォーマンスの改良が含まれています。

新機能

外部の Candid 認証用の設定オプションの追加

Candid を使った外部認証が拡張されました。複数のドメインが使えるようなりました。
そして、認証トークンの期限(expiry)が設定できるようになりました(デフォルトは 1 時間)。

大きな組織の管理者は、特定の LXD サーバーでどの Candid ドメインを使うのかを選べるようになりました。
また、ユーザーの Candid 認証トークンを信頼し、更新するまで期間を正確に設定できるようになりました。

関連する設定は次の設定です:

  • candid.domains (カンマ区切りのドメインリスト、デフォルトはすべて許可します)
  • candid.expiry (トークンが有効な期間(秒)。デフォルトは 3600 )

コマンドラインクライアントの --quiet オプション

ついに、すべての進捗情報を抑制し、エラーメッセージのみ出力する --quiet オプションが導入されました。
スクリプトから lxc コマンドを使うユーザが歓迎する機能でしょう。

バックアップの圧縮が設定可能に

この LXD リリースでは、バックアップの保存方法と処理方法を手直ししました。
このほとんどは日々のオペレーションでは見えませんが、バックアップの取得を大幅に高速化し、メモリの消費も抑えます。

この変更の目に見える変化のひとつは、バックアップをどのように圧縮するかを制御するオプションです。

新しい設定は次の設定です:

  • backups.compression_algorithm (デフォルトは "gzip" )

クラスター全体に対するリリースの更新を扱うフック

LXD クラスターでよく目にする問題は、すべてのノードで同じバージョンの LXD を実行し、同じ API エクステンションを持ち、同じ DB スキーマを持っている必要があるという要件があることです。

あるノードが他よりも新しいバージョンになってしまうと、すべてのデータベースオペレーションは、残りのノードがアップグレードするまで処理が止まります。

多数の別々のマシンの話なので、アップグレードの調整は少しむずかしい問題です。
LXD snap の場合は、ユーザが処理しなければ最大で 24 時間かかることがあります。

これを改良するために、管理者が設定できる LXD_CLUSTER_UPDATE 環境変数を新たに導入しました。
これは関係するパッケージマネージャーを使って、ローカルの LXD デーモンを更新するためのスクリプトを指します。
LXD が別のノードが自分より新しいバージョンになっていることを検出すると、このスクリプトを呼び出し、ローカルの LXD を更新して他のノードと一致させます。

バグ修正

  • client: err == nil のパターンを避けました(訳注: 条件文の判断順を変えた)
  • doc: record-output が true の場合の exec の例を追加しました
  • doc: マウントオプションを無視する事に関する注意書きを追加しました
  • doc: 説明の修正と改良を行いました(訳注: ネットワークの制限の表の説明欄のパラメータ名が間違っていたのを修正)
  • global: rsync の機能を知らせるようになりました
  • i18n: Weblate からの翻訳の更新を行いました
  • i18n: 翻訳テンプレートを更新しました
  • lxc: --target が与えられた時だけ target を使うようになりました
  • lxc/export: バックアップの削除に失敗したときにクラッシュしなくなりました
  • lxd: データベースのエラーを出力するようにしました
  • lxd/api: エンドポイントのリストをソートするようにしました
  • lxd/backups: 意図した通りに動作するように書き直しました(訳注: tarball生成タイミングの変更、重複コードの削除、既存のバックアップを変換するコードの追加)
  • lxd/cluster: 新しいコンテナを配置する際にペンディング状態のコンテナを考慮するようにしました
  • lxd/cluster: データベースクエリーのタイムアウトを 10 秒後にしました
  • lxd/containers: Ceph でも apply_quota を使うようにしました
  • lxd/containers: ルートデバイス名の衝突を回避するようにしました
  • lxd/containers: Storage 関数の呼び出しで nil が返らないようにしました
  • lxd/containers: 不適切な関数名を修正しました
  • lxd/containers: プールを更新するロジックを修正し、簡素化しました
  • lxd/db: 何箇所か足りなかった rows.Close() の呼び出しを追加しました
  • lxd/db: ノードの API バージョンが古いかどうかをチェックするデータベース API である NodeIsOutdated() を追加しました
  • lxd/db: operations テーブルに type カラムを追加しました
  • lxd/db: DB の内部テストを修正しました
  • lxd/db: 一貫して NoSuchObject を使うようにしました
  • lxd/devices: GPU のために /sys/class/drm をイテレートするようにしました
  • lxd/forkdns: 適切に応答を書き換えるようにしました
  • lxd/images: 足りなかったクリーンアップのコードを追加しました
  • lxd/import: 必要であれば root ディスクを追加するようにしました
  • lxd/import: インポートが失敗した時にコンテナを削除しないようにしました
  • lxd/operations: 新しい操作を追加するときに type カラムを埋めるようにしました
  • lxd/operations: タイムアウト前に操作が完了した場合は true を返すようにしました
  • lxd/patches: プロファイルはクラスター DB の方を見るようにしました
  • lxd/profiles: UsedBy 内にはスナップショットをリストしないようにしました
  • lxd/proxy: スナップでの unix ソケットのパスを修正しました
  • lxd/proxy: エラーのみログするようにしました
  • lxd/storage/btrfs: クォータをクリアする際の処理を修正しました
  • lxd/storage/ceph: コンテナが実行中の時のみフリーズするようにしました
  • Makefile: go install の際に CC 環境変数を使用するようにしました
  • scripts: オートコンプリートを更新しました
  • shared/api: フィールドを複数回定義しないようにしました
  • shared/idmap: fscap サポートのテストを追加しました
  • shared: DetectCompression が展開コマンドを返すようになりました
  • tests: stop の際は常に --force を与えるようにしました
  • tests: err == nil パターンを避けるようにしました
  • tests: proxy.sh のモードを修正しました
  • tests: 新しい easyrsa を使う場合の pki テストを修正しました

試用環境

この新しい LXD リリースは私たちの デモサービス で利用できます。

ダウンロード

このリリースの tarball は ダウンロードページ から取得できます。