OpenStack Nova Trainリリース概要

スケジューリングの改善・拡張、マイグレーション機能の強化、libvirtの機能への対応

Takashi Natsume
nttlabs
6 min readOct 17, 2019

--

皆さん、こんにちは!NTTソフトウェアイノベーションセンタの夏目です。さて、10月16日(日本時間)にOpenStack®のTrainリリースがリリースされました。そこでNovaのTrainリリースで追加された機能などを見ていきたいと思います。

図1. OpenStack Trainリリース (https://www.openstack.org/software/train/ より)

Trainのテーマ

その前にTrainリリースでのテーマを振り返りたいと思います。テーマとはPTG(Project Teams Gatheringという開発者の会議)で決定された重点的に取り組む開発項目のことです。テーマは以下のようになっていました。

  1. 大規模なシステムにフォーカスしたスケジューリングの改善や拡張
  2. Cyborgとの連携によるFPGA等のアクセラレータのサポート
  3. ドキュメントの改善

それでは、新機能を見ていきましょう。

Trainリリースの新機能

まず、Compute API(REST API)から見ていきたいと思います。今回のリリースでは主に以下の機能が追加されています(他にもあります)。

・仮想サーバのNUMAトポロジーの情報の取得APIの追加(APIマイクロバージョン2.78)
・サーバをロック(lock)するAPIにおいて、ロックの理由を記述するパラメータ(locked_reason)の追加および情報取得APIへのそのパラメータの追加(APIマイクロバージョン2.73)
・Unshelveを行なうAPIへのアベイラビリティゾーンの指定の追加(APIマイクロバージョン2.77)
・ボリュームアタッチ(仮想ブロックストレージの取り付け)APIにおける delete_on_terminationの指定(仮想サーバ削除時に仮想ブロックストレージを一緒に削除するかどうかの指定)のサポート(APIマイクロバージョン2.79)

スケジューラについては主に以下の機能追加が行われました。

・仮想サーバを作成する時に、イメージのプロパティやフレーバのextra specsにホストアグリゲートに設定されているキーがそもそも設定されていない場合、仮想サーバをそのホストアグリゲートには配置しない機能(Filtering hosts by isolating aggregates
・コンピュートノード(Compute Node)の無効状態(disabled)がリソースプロバイダにトレイト(trait)として登録され、そのトレイトをもとにPlacementから配置先のコンピュートノードの候補を取得する機能(Pre-filter disabled computes
・起動イメージの種類(Type)による配置先のコンピュートノードの候補の絞り込みをPlacementの呼び出しで行なう機能(Request Filter for Image Types

また、マイグレーション(仮想サーバの移動)に関しては以下のような機能の強化が行なわれました。

・SR-IOVポートを持つ仮想サーバのライブマイグレーションのサポート(libvirt)
・NUMAトポロジー、pinned CPU、Huge Pageを持つ仮想サーバのライブマイグレーションのサポート(libvirt)
NeutronのQoSポートを持つ仮想サーバのコールドマイグレーションおよびリサイズのサポート

QoSポートを持つ仮想サーバのマイグレーションについては、次期リリース(Ussuri)においてもライブマイグレーション等について作業が継続されます。

他には以下のような機能追加がありました。

Virtual persistent memory (vPMEM)のサポート(libvirt)
AMD™ SEV (Secure Encrypted Virtualization)のサポート(libvirt)

ただし、SEVのサポートについては現時点では制約(バグ)があります。

非推奨(deprecated)となっていた以下の機能は削除されました。
・Cells V1
・nova-consoleauth

そして、XenAPIのコンピュートドライバ(Compute Driver)はメンテナンスを充分行うことができないため非推奨(deprecated)になりました。

また、Novaのリポジトリ内に残されていたPlacementのコードは削除されました。そのため、Trainリリースからは分離されたPlacementを必ず利用するようになります。

Trainサイクルの開発の振り返り

まず、スケジューラの機能強化については、specが承認された機能が順調にほとんど実装されました。

そしてCyborgと連携したアクセラレータのサポートについては、 os-resource-classesプロジェクトに関連するリソースクラスの追加は行われましたが、残念ながら他はほとんど進捗はありませんでした。しかし、次期のUssuriリリースでも開発が続けられるので、今後に期待したいと思います。

また、ドキュメントの改善ですが、いくつか書き直し(Rewrite)や内容の追加が行われました。しかし、まだまだ改善の余地はありますので、今後も作業が続けられると考えられます。

私が注目していたセルを跨ったコールド・マイグレーション機能ですが、Trainでは実装が完了しませんでした。レビューに提出されたパッチでマージされていないものがまだまだあり、Ussuriサイクルでも開発が続けられます。

まとめ

皆様、いかがでしたでしょうか。なお、Trainリリースで追加された機能は上記のほかにもたくさんあります。リリースノートをチェックしてみてください。それでは、またお会いしましょう!

--

--