正式リリース前ですが、Nova 18.0.0 (Rocky リリース) のリリースノート上の各項目を適当にまとめてみました。全体的に Cells v2/Placemenet API 関連がホットです。あと1〜2リリース程で熟(こな)れるでしょうか。
面白い強化点として、ボリューム起動 VM のみ作成可能にする(=エフェメラルディスク起動 VM 作成を禁止できる)セキュリティ強化がありました。今まで無かったのが不思議な機能です。
新機能
-
Cells v2/Placement API 関連
- nova-manage で disabled 状態の新規セル登録が可能に
- nova-manage で既存セルの enabled/disabled 設定が可能に
- member_of クエリパラメータ追加(API 1.21〜)
- リソースプロバイダインベントリ定義が可能に(API 1.26〜)
- ホストアグリゲート(AZ含む)管理機能を Placement API に移管
- 細かなポリシー(ACL)設定に対応
- セルマッピングレコードにホストの設定ファイルで指定した関連URLを追加可能に
- 複数のプロセスが同一コンシューマのリソース割当を行う場合の問題を回避する世代カウンタを導入
- セル中のホスト検出で nova-compute に絞る為のオプションを nova-manage に追加
- 入れ子のリソースプロバイダに対応(API 1.29〜)
- 設定ファイルに Placement API 専用データベース用グループを追加
- Placement API の JSON エラーフォーマットに code パラメータ追加
- リソースプロバイダ取得時のフィルタリングの Trait の隠れパラメータに対応(API 1.22〜)
- リソースプロバイダ作成成功時にステータス 200 を応答
- リソース割当候補取得でリソースのグルーピングに対応(API 1.25〜)
- プロジェクトID/ユーザID指定なしのリソース割当に対応(API 1.8〜)
- リソースプロバイダ一覧取得に required クエリパラメータ追加(API 1.18〜)
- リソース割当候補一覧取得で provider_summaries パラメータ追加(API 1.27〜)
- nova-manage cell_v2 map_instance コマンドに --reset オプション追加
-
スケジューラ関連
- vCPU 負荷を新規リソース配置に反映する為の CPUWeighter ウェイター追加。
- Placement API の AZ 問合せに対応
- テナント制限アグリゲート中のホスト問合せを改善
- 1ホスト上のスケジューラプロセス数を設定可能に
- サーバ作成リクエストのスケジュール中に disabled セルのフィルタリングが可能に
-
Compute API
- queued, preparing 状態のライブマイグレーションのキャンセルが可能に(Compute API 2.65〜)
- サーバグループポリシーのルール定義が可能に(Compute API 2.64〜)
- flavor 情報応答に extra spec を追加 (Compute API 2.61〜)
- インスタンス操作履歴に host, hostId, requrest_id 項目追加
-
Trusted 関連
- イメージ署名検証に使用する認証IDの定義に使用するパラメータを追加(API 2.63〜)
- meta_data.json 中でネットワークインターフェースデバイスが認証された仮想機能かどうかを示す vf_trusted キー追加(API 2018-08-27〜)
- trusted に設定された SR-IOV 仮想化機能付インスタンス作成に対応
-
Libvirt/KVM 関連
- AArch64 アーキテクチャに対応(libvirt 3.6.0〜)
- virtio-net の RX/TX キューサイズ指定が可能に
- nvmeof タイプのボリュームに対応
- CPU trait を Placement にレポート可能に
- 設定ファイル上で PCI Express ポート(仮想マザーボード中のスロット)数を設定可能に
- VM の物理 CPU 利用を効率化する為の cpu_shared_set パラメータを設定ファイルに追加
- 新しい Cinder フロントエンド QoS spec に対応
- ゲストに対する各 CPU 機能フラグを設定可能に
- QEMU/KVM でファイルをバックエンドにした VM の仮想メモリに対応(各種制限事項あり)
- アタッチ済み ScaleIO ボリュームのサイズ拡張に対応
-
Libvirt/PowerVM ドライバ
- ネットワークI/Fの接続/接続解除に対応
- ローカルのエフェメラルディスクからの起動に対応
- インスタンススナップショットに対応
- vSCSI ファイバチャネル Cinder ボリュームに対応
- 設定ファイルに powervm グループ追加
-
Ironic 関連
- インスタンスの rescue/unrescue に対応(Placement API 1.38〜,Ironic 10.1〜)
- Trait の任意パラメータを非表示可能に
- スケジューラへのリソース・Trait 要求を詳細化
-
その他
- Notification に traceback フィールド追加
- ゲストOS上の DMI 等で VM を示す情報を非表示にする為のパラメータを追加(現状libvirtのみ対応)
- VM シャットダウンのリトライ間隔が設定ファイルで設定可能に
- シャドーテーブル(削除レコードのバックアップ先テーブル)にアーカイブされたレコードを削除する nova-manage db purge コマンド追加。
- oslo.messaging の変更に伴い、長時間処理 RPC タイムアウト時間設定用の long_rpc_timeout パラメータ追加。
- 大半の Neutron ネットワークで NUMA affinity を設定可能に
- ServerGroupPayload に新形式の policy フィールド追加
- 設定ファイル中で XenServer のイメージハンドラを設定するパラメータを追加
既知の問題
- Libvirt 2.2.0 における最初の LUKS 復号実装にはパスフレーズのバイト数が16の倍数でなければならない既知の問題がある。
この問題は Libvirt 3.3.0 あるいは修正箇所をバックポートした版に更新する事で解決する。
https://bugzilla.redhat.com/show_bug.cgi?id=1447297
バージョンアップの注意点
-
nova-compute がサポートする AArch64 アーキテクチャ上の Libvirt は 3.6.0 以降。
-
nova-network 関連 API の応答が 410 HTTPGone に
-
nova-api が独自の nova.conf を使用する場合、[placement] セクションが必要。
-
nova.conf 中に [glance]/api_servers が未設定で、通知が定期処理で実行される場合、
の場合、古いインスタンス通知中の image_ref_url エントリは只のイメージIDになる。 -
nova-status upgrade check のチェック追加
- compute API のインスタンス検出で問題が発生する可能性のある nova-osapi_compute
サービスバージョン有無を全セルでスキャン - Ironic インスタンスが、関連する ironic ノードのカスタムリソースクラス使用の為
独自の埋め込みフレーバーを使用している場合、その検出を補助するチェック - セル単位でオンラインマイグレーションの互換性チェックが実行される事を保証
- compute API のインスタンス検出で問題が発生する可能性のある nova-osapi_compute
-
noVNC 1.0.0 はコンソールアクセス URL が vnc_auto.html から vnc_lite.html に変更
されたので、[vnc] novncproxy_base_url 設定値を変更する必要がある。 -
HostState.instances が完全なオブジェクトデータを保持しなくなった為、このデータに
依存するカスタムスケジューラフィルタ(又は weighter)は性能が低下する可能性がある。 -
Libvirt ドライバの IVS VIF ハンドラ機能が os-vif-bigswitch パッケージに移管され
た。 -
filter_scheduler スケジューラドライバ使用時、新しい [scheduler]workers は
デフォルトで ncpu (CPUコア数)になる。 -
PowerVM 仮想化ドライバは従来デフォルトで PowerVM 共有ストレージプールディスク
ドライバを使用していたが、今回デフォルトがローカルディスクに変更された。 -
e2fsck; mkfs; tune2fs; xenstore_read コマンドが rootwrap の対象から外された。
-
PowerVM ドライバで従来「仮想CPU:物理CPU」の比が 1:0.5 だったデフォルト値が
1:0.1 に変更された。[powervm]/proc_units_factor パラメータで設定可能。 -
以下の廃止予定オプション/機能が削除された。
- [filter_scheduler]/use_baremetal_filters
- [filter_scheduler]/baremetal_enabled_filters
- [scheduler]/host_manager
- [crypto]グループで未使用のオプション群
- db_driver
- [api]/allow_instance_snapshots
- [compute]/multi_instance_display_name_template
- [placement]/os_region_name (region_name で代用)
- [placement]/os_interface (valid_interfaces で代用)
- monkey patch 関連
- [DEFAULT]/scheduler_driver_task_period
([scheduler]/periodic_task_interval で代用) - [conductor] topic
- [xenserver]/vif_driver
- ExactCoreFilter, ExactDiskFilter, ExactRamFilter
-
ベアメタルスケジューリングはカスタムリソースクラスを使うよう変更された。
-
nova-compute で使用可能な Libvirt のバージョンが 1.3.1 以降になった。
これに伴い QEMU も 2.5.0 以降が必須になった。 -
[quota]/driver オプションが廃止予定ではなくなった。以下の設定値を選べる。
nova.quota.DbQuotaDriver
nova.quota.NoopQuotaDriver
-
セルマッピングが作成・設定された後に nova-scheduler が起動した場合、SIGHUP
を送ってプログラムを再起動し、スケジューラキャッシュに反映する必要がある。 -
[libvirt]/rng_dev_path のデフォルトが /dev/urandom になった。
-
新しいコンソールのトーク人認証ストアが nova-consoleauth からセルDBに変更
されたのに伴い、nova-consoleauth が廃止予定になった。また、コンソール
プロキシはセル単位でのデプロイが必要となった。この為、全ての既存コンソール
は(アップグレード時に)リセットされる。
セキュリティ
- 新規ポリシールール「os_compute_api:servers:create:zero_disk_flavor」追加。
これによりボリューム起動VMの作成のみ許可(通常のエフェメラルディスク起動
VM作成禁止)できるようになる。 - scheduler weighter における
[compute]/consecutive_build_service_disable_threshold オプションの扱いが
変更された。障害回数はホスト単位で
[filter_scheduler]/build_failure_weight_multiplier パラメータにより加減
できる。
バグ修正
- [compute]/resource_provider_association_refresh (デフォルト=300) により
nova-compute 側のcompute ノードのリソースプロバイダの aggregate と trait
のキャッシュ更新間隔が調整可能になった。 - ボリューム起動 VM のインスタンスはルートディスクの為の compute ノード上の
不正なディスク割当を含まなくなった。これは従来の挙動 (不要で実際割り当てら
れていないルートディスク用のエフェメラルディスク用の空き領域をカウント)
のバグ修正である。 - 従来1つのセルが unreachable の場合にサーバ一覧とレコード移行で 500 エラー
が発生していた問題で、今回 reachable なセルの情報だけが表示され、500 エラー
が発生しないようになった。 - SchedulerReportClient (nova.scheduler.client.report.SchedulerReportClient)
が X-Openstack-Request-Id ヘッダ中でグローバルリクエストID 付で Placement
サービスにリクエストを送信するバグがある。 - 既存のインスタンスを未だにホストする nova-compute サービスに対して
DELETE /os-services/{service_id} を実行すると 409 エラーが返却されるように
なった。 - 複数のアーキテクチャを1クラウドで利用する際、image 中でアーキテクチャ属性
が未設定の ImagePropertiesFilter の挙動は不定だったが、今回新しい
[filter_scheduler]image_properties_default_architecture パラメータで
デフォルトアーキテクチャが指定可能になった。これがないと、そのイメージを
サポートしない compute ノード上で VM が作成される可能性がある。