OpenStack Nova Trainリリース概要
スケジューリングの改善・拡張、マイグレーション機能の強化、libvirtの機能への対応
皆さん、こんにちは!NTTソフトウェアイノベーションセンタの夏目です。さて、10月16日(日本時間)にOpenStack®のTrainリリースがリリースされました。そこでNovaのTrainリリースで追加された機能などを見ていきたいと思います。
Trainのテーマ
その前にTrainリリースでのテーマを振り返りたいと思います。テーマとはPTG(Project Teams Gatheringという開発者の会議)で決定された重点的に取り組む開発項目のことです。テーマは以下のようになっていました。
- 大規模なシステムにフォーカスしたスケジューリングの改善や拡張
- Cyborgとの連携によるFPGA等のアクセラレータのサポート
- ドキュメントの改善
それでは、新機能を見ていきましょう。
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リリースで追加された機能は上記のほかにもたくさんあります。リリースノートをチェックしてみてください。それでは、またお会いしましょう!