Nova 18.0.0 リリースノート抜粋

正式リリース前ですが、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 ノードのカスタムリソースクラス使用の為
    独自の埋め込みフレーバーを使用している場合、その検出を補助するチェック
  - セル単位でオンラインマイグレーションの互換性チェックが実行される事を保証
- 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 ノード上の
  不正なディスク割当を含まなくなった。これは従来の挙動 (不要で実際割り当てら
  れていないルートディスク用のエフェメラルディスク用の空き領域をカウント)
  のバグ修正である。 
- 従来１つのセルが unreachable の場合にサーバ一覧とレコード移行で 500 エラー
  が発生していた問題で、今回 reachable なセルの情報だけが表示され、500 エラー
  が発生しないようになった。
- SchedulerReportClient (nova.scheduler.client.report.SchedulerReportClient)
  が X-Openstack-Request-Id ヘッダ中でグローバルリクエストID 付で Placement 
  サービスにリクエストを送信するバグがある。
- 既存のインスタンスを未だにホストする nova-compute サービスに対して
  DELETE /os-services/{service_id} を実行すると 409 エラーが返却されるように
  なった。
- 複数のアーキテクチャを１クラウドで利用する際、image 中でアーキテクチャ属性
  が未設定の ImagePropertiesFilter の挙動は不定だったが、今回新しい
  [filter_scheduler]image_properties_default_architecture パラメータで
  デフォルトアーキテクチャが指定可能になった。これがないと、そのイメージを
  サポートしない compute ノード上で VM が作成される可能性がある。