OpenStack Nova Steinリリース概要

QoS minimum bandwidthルールのサポートとダウンしたセルにある仮想サーバの情報の返却

Takashi Natsume
nttlabs
7 min readApr 17, 2019

--

はじめに

皆さん、こんにちは。NTTソフトウェアイノベーションセンタの夏目です。2019年4月10日(水)(日本時間)にOpenStack® NovaのSteinリリースがリリースされました。そこでSteinリリースにおけるNovaの新機能や変更点について見ていきたいと思います。

図1. OpenStack Steinリリース (https://www.openstack.org/software/stein/ からの抜粋)

API

マイクロバージョン2.66から2.72が追加されました。そのうちの重要だと思われるいくつかを見ていきたいと思います。

・仮想サーバ作成時のボリューム・タイプ( volume_type)の指定(マイクロバージョン 2.67)
仮想サーバを作成する時( POST /serversAPI)に block_device_mapping_v2 のパラメータとしてボリューム・タイプ( volume_type)が指定できるようになりました。要するに仮想サーバ作成時にボリューム(cinder)を作成することができますが、そのボリュームのバックエンドを指定できるようになりました。なお、この機能はSteinサイクルの開発においてPriorityを持つ開発項目でした。

・ ライブ・マイグレーションとevacuate APIにおける force フラグの削除(マイクロバージョン 2.68)
ライブ・マイグレーションのAPIとevacuate APIではマイクロバージョン2.67以前は仮想サーバを移動させるホストとともに force フラグを指定すると、スケジューラ( nova-scheduler )のチェックを通さず、指定したホストに移動させることができましたが、その操作はPlacementによるリソース管理にとって都合がよくありませんでした。そのため、 force フラグは削除されました。

・仮想サーバ一覧取得API( GET /servers )等におけるダウンしたセルの情報の返却(マイクロバージョン 2.69)
今まで、仮想サーバ一覧取得API等では、障害が発生してダウンしたセル(に存在する仮想サーバ等)は無視して、仮想サーバの一覧等を返却していましたが、それをAPIデータベースで持つ情報を元に最小限の情報を返すことになりました。詳しくはこちらをご覧ください。なお、この機能もSteinサイクルの開発においてPriorityを持つ開発項目でした。

・仮想サーバ作成時のQoSルールを持ったポートの指定(マイクロバージョン 2.72)
仮想サーバ作成時にリソース・リクエスト(Resource Request、例えば最小限の帯域確保のルール、QoS)を持つneutronポートを指定する機能です。しかしながら、いくつか制限事項があります。

APIについては、上記に挙げたもの以外にも追加がありますので、こちらをご覧ください。

Placement

・ネステッド・リソース・プロバイダーの利用
NovaはQoSが設定されたneutronポートとvGPUを持つコンピュート・ノードの2つのケースでネステッド・リソース・プロバイダー(Nested Resource Provider)をサポートするようになりました。

・コンピュート・ノードのCapabilityの自動登録
コンピュート・ノードのCapability(例えばボリュームの複数仮想サーバへのアタッチが可能など)がnova-computeの起動時に、あるいは定期的に(Periodic taskにより)トレイト(Trait)として登録されるようになりました。

・割り当て比率(allocation ratio)に関するバグの修正
vCPU、メモリ、ディスクの割り当て比率について、リソース・トラッカー(Resource tracker)がPlacementのインベントリのその値を設定ファイルの値で上書きしてしまうという問題(Bug)がありましたが、それに対応するため初期値を設定するオプション(initial_cpu_allocation_ratioinitial_ram_allocation_ratioinitial_disk_allocation_ratio)が追加され、従来の割り当て比率のデフォルト値は None となりました。

Placementについては、SteinリリースよりNovaから独立しましたので「OpenStack Placement Steinリリース概要」もご覧ください。

その他の機能の追加

その他にも以下のような機能の追加やバグ修正がありました。

・HPETサポートの追加
精度の高いハードウェア・タイマーであるHigh Precision Event Timer (HPET) のサポートが追加されました。(libvirt)

・Nova metadata APIサービスがセルごとに稼働可能に
Nova metadata APIサービスとは仮想サーバ上で稼働するゲストOSのために各仮想サーバに固有の設定のための情報等を提供するサービスです。そのNova metadata APIサービスをセルごとに稼働させるための設定が追加されました。これによりパフォーマンスの改善やデータの分離が可能になりました。

・新形式のノーティフィケーションへの変換完了
新しい形式のノーティフィケーション(Versioned notification)への変換が完了しました。今後は旧い形式(Legacy notification)の削除が計画されています。

シリアルナンバーのサポート
仮想サーバごとのシリアル・ナンバーがサポートされるようになりました。これによりソフトウェア・ライセンスの課金の問題が解決されます。

イメージのプロパティとフレーバ(Flavor)のExtra specsの組み合わせの妥当性チェック
イメージのプロパティとフレーバのExtra specsの組み合わせの妥当性を早期に確認してAPIでエラーを返すようになりました。

・アベイラビリティ・ゾーン(Availability Zone)変更時の確認の追加
ホスト・アグリゲート(Host aggregates)のアベイラビリティ・ゾーン変更が、そのホスト・アグリゲートに仮想サーバが存在する状態ではエラーとなるようになりました。これにより仮想サーバの持つアベイラビリティ・ゾーンの情報とその仮想サーバが存在するホスト・アグリゲートのアベイラビリティ・ゾーンの不整合による仮想サーバのマイグレーション時のエラーの発生を防ぎます。

非推奨・廃止

・スケジューラの廃止
Pikeリリース(16.0.0)で非推奨となったCachingSchedulerが削除されました。

・非推奨となったスケジューラ・フィルタ
Placementサービスを使用することにより同等のことが可能になったので、CoreFilter、DiskFilter、RamFilterは非推奨(deprecated)となりました。

最後に

今回も多くの機能がNovaに追加されました。ここで紹介した以外にもたくさんありますので、リリースノートを参照してみてください。

Steinではユーザが利用する機能を優先的に機能強化するという方針でしたが、以下のSteinサイクルでのPriorityアイテムについてはSteinでは実装が完了しませんでした。

・複数のGPUタイプへの対応
・仮想サーバのルート・ボリュームのアタッチ/デタッチ
・ボリューム起動の仮想サーバのリビルド(rebuild)

これらの機能については次のTrainリリースに向けた開発として引き続き実装が継続されるものと考えられます。

--

--