openstack
クラウド
OSS
nova
IaaS

OpenStack Queens: Nova の新機能と廃止/廃止予定機能

はじめに

2018年2月末にリリース予定の OpenStack Queens における Nova の新機能と廃止機能、廃止予定機能について調べてみました。
参考:https://docs.openstack.org/releasenotes/nova/unreleased.html

新機能

ハイパーバイザ関連

KVM/QEMU (Libvirt)

  • 1ボリュームを複数のインスタンス (=VM) で同時アタッチ可能に (qemu<2.10 又は libvirt>3.10)
  • 仮想 GPU 付インスタンス作成に対応
  • StorPool ボリューム用クライアントドライバ追加

XenServer

  • 仮想 GPU 付インスタンス作成に対応

VMware

  • インスタンスの OSシャットダウンに対応
  • コンソールログ対応
  • インスタンスのファームウェアを UEFI, BIOS から選択可能に (VMイメージ のメタデータ hw_firmware_type で指定)

Nova API

  • インスタンスのコールドマイグレーション API: 停止中インスタンスの移動先ホスト指定に対応 (地味に嬉しい)
  • インスタンスマイグレーション API: ページネーション、日時フィルタリング対応、他
  • インスタンス操作履歴 API: ページネーション対応
  • インスタンス再構築 API: key_name, user_data パラメータ追加
  • フレーバ API: description パラメータ追加

Cells v2 関連

Placement API

  • ボディを持つ GET/PUT/POST 応答に last-modified ヘッダを追加。
  • リソースプロバイダのツリー構造に対応
  • GET /resource_providers: 応答の links セクションへの /resource_providers/{rp_uuid}/allocations リンク追加
  • GET /allocation_candidates: 応答中のエントリ数制限、エントリのランダム化
  • POST /allocations: 1要求で複数 consumer UUID の設定/設定解除に対応
  • PUT /allocations/{consumer_uuid}: JSON リクエストボディで key-value 型構造を使用するよう変更 (GET /allocations/{consumer_uuid} のレスポンスボディに合わせた)

Cells 管理コマンド

  • nova-manage cell_v2 delete_cell コマンド: あるセルに削除すべきインスタンスマッピングが存在するが、そのセルの全インスタンスが既に削除されている場合、終了コード 4 を返すように変更
  • nova-manage cell_v2 list_hosts コマンド追加。1セル又は全セル中のホスト一覧を表示
  • nova-manage cell_v2 delete_host コマンド追加。1セルから1ホストを削除

その他

  • スケジューラ: 同スコアのホスト一覧のランダム化に対応
  • スケジューラ: PCI デバイスの NUMA affinity ポリシーに対応。Nova の設定ファイル中でデバイス単位(又はデバイスエイリアス単位)の要求レベルを required(必須), legacy(可能なら必須), preferred(推奨) から選択可能に。
  • インスタンス操作履歴: 記録される操作の種類を追加 (ボリューム関連操作、ロック操作、バックアップ関連操作)
  • VNC コンソール: VeNCrypt (VNC プロトコルの TLS 拡張) に対応
  • ネットワーク: Neutron で IP アドレスの部分フィルタリング拡張が利用可能な場合、Nova はIPv4/6 フィルタ付のインスタンス一覧を Neutron に送信
  • 通知: サービス (=Nova 中の各主要プロセス) 作成/削除通知に対応
  • 通知: instalce.snapshot.{start, end} notification に snapshot_image_id を追加。

廃止予定機能

  • Windows / Hyper-V 2012 Server サポート (←訂正しました)
  • monkey_patch。コード改変無しで特定メソッドに Python のデコレータメソッドをつける機能だったが、テストされておらず互換性上の問題になっていた。
  • nova-manage cell コマンド。Cells V1 用のコマンドだった。
  • Nova 標準のリソースクラス (VCPU、メモリ、ディスク) による Ironic ノードのスケジューリング機能。代わりにカスタムリソースクラスを使用する事。
  • Pike で廃止された Nova API 拡張機能関連 ACL。
  • その他、細々とした設定ファイルのパラメータの廃止・変更

廃止機能

  • Nova API
    • インスタンス作成/再構築 API: personality パラメータ削除
    • GET /limits API: 応答中の maxPersonality, maxPersonalitySize を廃止
    • クォータ API: ファイル挿入系クォータを廃止
  • nova-manage の以下のサブコマンド:
    • quota
    • shell
    • project
    • account
    • logs
    • host
    • agent
  • TrustedFilter スケジューリングフィルタ
  • Nova API v2.1 で機能しなくなった api.fault 通知関連の設定パラメータ
  • nova-idmapshift バイナリ
  • その他、細々とした設定ファイルのパラメータの廃止・変更

まとめ

Nova の更なるスケーラビリティ強化の為に最近導入された Nova Cells v2 関連強化、物理マシン管理サービス Ironic 用スケジューリング機能改革が続く一方で、1ボリュームの複数インスタンス接続や仮想 GPU 対応など、興味深い機能の追加もあります。Nova は OpenStack の最古参のコンポーネントの1つですが、今後も活発に開発が続くでしょう。