IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日立ヴァンタラ株式会社の特許一覧

特開2024-131157複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法
<>
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図1
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図2
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図3
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図4
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図5
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図6
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図7
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図8
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図9
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図10
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図11
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図12
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図13
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図14
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図15
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図16
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図17
  • 特開-複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024131157
(43)【公開日】2024-09-30
(54)【発明の名称】複数のストレージノードを有するストレージシステムのスケーリング管理装置及びスケーリング管理方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240920BHJP
【FI】
G06F9/50 120Z
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023041249
(22)【出願日】2023-03-15
(71)【出願人】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】林 真一
(72)【発明者】
【氏名】大平 良徳
(72)【発明者】
【氏名】佐藤 功人
(57)【要約】
【課題】コンピュート設定変更の不要とノード障害時やノード過負荷時の影響範囲の局所化との少なくとも一つを適切に実現する。
【解決手段】ストレージシステムが有する一つ又は複数のストレージノードの各々が、コンピュートに提供されるボリュームとそのボリュームの性能に影響し得るコンポーネントとを有する。コンピュータが、いずれかのストレージノードにおける既存のボリュームの負荷が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又はすると判定した場合には、ストレージシステムのスケーリング方法として垂直スケーリングを選択する、及び/又は、いずれかのストレージノードのボリュームの数が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又はすると判定した場合には、ストレージシステムのスケーリング方法として水平スケーリングを選択する。
【選択図】図1
【特許請求の範囲】
【請求項1】
それぞれコンピュートに提供されるボリュームとそのボリュームの性能に影響し得るコンポーネントと有する一つ又は複数のストレージノードを含み選択されたスケーリング方法が実施されるストレージシステムのスケーリング管理装置であって、
記憶装置とプロセッサとを備え、
前記記憶装置が、
当該一つ又は複数のストレージノードの各々について当該ストレージノードが有するコンポーネントの負荷を表す情報であるコンポーネント負荷情報と、
当該一つ又は複数のストレージノードの各々について当該ストレージノードが有するボリュームの負荷を表す情報であるボリューム負荷情報と
を記憶し、
前記プロセッサが、
前記コンポーネント負荷情報及び前記ボリューム負荷情報を参照し、
いずれかのストレージノードにおける既存のボリュームの負荷が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又は増減すると判定した場合には、前記ストレージシステムのスケーリング方法として、前記ストレージシステムのストレージノードを増減せずそのコンポーネントを有するストレージノードに割り当てられるリソースを増減することである垂直スケーリングを選択する、及び/又は、いずれかのストレージノードのボリュームの数が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又は増減すると判定した場合には、前記ストレージシステムのスケーリング方法として、前記ストレージシステムのストレージノードを増減することである水平スケーリングを選択する、
スケーリング管理装置。
【請求項2】
前記プロセッサが、
いずれかのストレージノードにおけるコンポーネントの負荷が所定の閾値を超えるか否かを判定し、
その判定の結果が真の場合、そのストレージノードのボリューム毎の負荷を予測し、
そのストレージノードの各ボリュームの予測される負荷が増加傾向にある場合、前記垂直スケーリングとしてスケールアップを選択する、
請求項1に記載のスケーリング管理装置。
【請求項3】
前記プロセッサが、
いずれかのストレージノードにおけるコンポーネントの負荷が所定の閾値を超えるか否かを判定し、
その判定の結果が真の場合、そのストレージノードのボリューム毎の負荷を予測し、
そのストレージノードの各ボリュームの予測される負荷が増加傾向にない場合、前記水平スケーリングとしてスケールアウトを選択する、
請求項1に記載のスケーリング管理装置。
【請求項4】
前記プロセッサが、
前記一つ又は複数のストレージノードの各々について、過去の所定期間の開始から終了まで存在していたボリューム毎の負荷を基に当該ストレージノードのコンポーネントの負荷を計算し、
当該計算された負荷が閾値を超えたストレージノードがある場合、前記垂直スケーリングとして当該ストレージノードのスケールアップを選択する、
請求項1に記載のスケーリング管理装置。
【請求項5】
前記プロセッサが、
過去の所定期間において追加されたボリュームの数が所定の閾値を超えるストレージノードがある場合には、前記水平スケーリングとしてスケールアウトを選択する、
請求項1に記載のスケーリング管理装置。
【請求項6】
前記過去の所定期間は、前回のスケーリング方法選択又はスケーリング実施から現在までの期間である、
請求項5に記載のスケーリング管理装置。
【請求項7】
前記ストレージシステムが、複数の冗長グループを有し、
前記複数の冗長グループの各々が、二つ以上のストレージノードで構成され、
前記複数の冗長グループの各々について、当該冗長グループにおけるいずれかのストレージノードに格納されるデータは、当該冗長グループにおけるストレージノード間で冗長化され、
既存のボリュームの負荷が増減した又はすることによりコンポーネントの負荷が増減した又は増減するストレージノードがある場合、前記プロセッサは、そのストレージノードを含む冗長グループについて前記垂直スケーリングを選択する、
請求項1に記載のスケーリング管理装置。
【請求項8】
物理的にそれぞれが独立した複数のゾーンがあり、
前記複数のゾーンの各々に、前記複数の冗長グループの各々におけるいずれかのストレージノードが属しており、
前記複数の冗長グループの各々について、当該冗長グループにおける二つ以上のストレージノードが前記複数のゾーンのうちの異なる二つ以上のゾーンにそれぞれ属しており、
前記垂直スケーリングが選択される二つ以上の冗長グループがある場合、前記プロセッサが、当該二つ以上の冗長グループのうち同一ゾーンに属する二つ以上のストレージノードを並行して前記垂直スケーリングをすることを選択する、
請求項7に記載のスケーリング管理装置。
【請求項9】
それぞれコンピュートに提供されるボリュームとそのボリュームの性能に影響し得るコンポーネントとを有する一つ又は複数のストレージノードを含み選択されたスケーリング方法が実施されるストレージシステムのスケーリング管理方法であって、
コンピュータが、コンポーネント負荷情報及びボリューム負荷情報を参照し、
前記コンポーネント負荷情報は、当該一つ又は複数のストレージノードの各々について当該ストレージノードが有するコンポーネントの負荷を表す情報であり、
前記ボリューム負荷情報は、当該一つ又は複数のストレージノードの各々について当該ストレージノードが有するボリュームの負荷を表す情報であり、
コンピュータが、いずれかのストレージノードにおける既存のボリュームの負荷が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又はすると判定した場合には、前記ストレージシステムのスケーリング方法として、前記ストレージシステムのストレージノードを増減せずそのコンポーネントを有するストレージノードに割り当てられるリソースを増減することである垂直スケーリングを選択し、
コンピュータが、いずれかのストレージノードのボリュームの数が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又はすると判定した場合には、前記ストレージシステムのスケーリング方法として、前記ストレージシステムのストレージノードを増減することである水平スケーリングを選択する、
スケーリング管理方法。
【請求項10】
コンポーネント負荷情報及びボリューム負荷情報を参照し、
前記コンポーネント負荷情報は、それぞれコンピュートに提供されるボリュームとそのボリュームの性能に影響し得るコンポーネントと有する一つ又は複数のストレージノードを含んだストレージシステムに関し、当該一つ又は複数のストレージノードの各々について当該ストレージノードが有するコンポーネントの負荷を表す情報であり、
前記ボリューム負荷情報は、当該一つ又は複数のストレージノードの各々について当該ストレージノードが有するボリュームの負荷を表す情報であり、
いずれかのストレージノードにおける既存のボリュームの負荷が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又はすると判定した場合には、前記ストレージシステムのスケーリング方法として、前記ストレージシステムのストレージノードを増減せずそのコンポーネントを有するストレージノードに割り当てられるリソースを増減することである垂直スケーリングを選択し、
いずれかのストレージノードのボリュームの数が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又はすると判定した場合には、前記ストレージシステムのスケーリング方法として、前記ストレージシステムのストレージノードを増減することである水平スケーリングを選択する、
ことをコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ストレージシステムのスケーリングに関する。
【背景技術】
【0002】
従量課金型であるクラウドサービスとしてのストレージシステムの登場により、負荷に応じて必要な時に必要なだけのリソースをストレージシステムに割り当てることで、ピーク負荷に合わせたサイジングが不要になり、インフラコスト削減が可能である。
【0003】
Software-Defined Storage(SDS)としてのストレージシステム(以下、SDSシステム)についても、変動する負荷に応じて適切にリソースをストレージシステムに割り当てる必要がある。SDSシステムへのリソース割当てとして、垂直スケーリングと水平スケーリングが挙げられる。「垂直スケーリング」は、SDSシステムを構成するストレージノードのリソースを増減させることであり、リソースを増加させることを「スケールアップ」と呼び、リソースを減少させることを「スケールダウン」と呼ぶ。「水平スケーリング」は、SDSシステムを構成するストレージノードの数を増減させることであり、ノード数を増加させることを「スケールアウト」と呼び、ノード数を減少させることを「スケールイン」と呼ぶ。垂直スケーリングの特徴は、SDSシステムにアクセスするコンピュート(例えば物理的又は仮想的な計算機)の設定変更が不要であり、既存ボリュームの性能増減を短時間でできることである。水平スケーリングの特徴は、ノード数が増えることで、ノード障害時や過負荷時の影響範囲を局所化できることである。
【0004】
特許文献1では、ロードバランサ配下の仮想サーバが動作している物理サーバに空きリソースがある場合はその仮想サーバがスケールアップされる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】JP5378946
【発明の概要】
【発明が解決しようとする課題】
【0006】
ロードバランサが使用される場合には、ロードバランサが過負荷になる場合があり、故に、ロードバランサそれ自体の垂直スケーリングや水平スケーリングが必要となる。
【0007】
そこで、ロードバランサ無しのスケーリングの実施が考えられる。
【0008】
しかし、ロードバランサが使用されない場合に水平スケーリングが実施されると、ボリュームの再配置に伴いコンピュートの設定変更が必要になる場合がある。コンピュート設定変更を避けるために垂直スケーリングだけが繰り返し実施されると、ノード障害時やノード過負荷時の影響が広がる場合がある。
【課題を解決するための手段】
【0009】
ストレージシステムが有する一つ又は複数のストレージノードの各々が、コンピュートに提供されるボリュームとそのボリュームの性能に影響し得るコンポーネントと有する。コンピュータが、いずれかのストレージノードにおける既存のボリュームの負荷が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又はすると判定した場合には、ストレージシステムのスケーリング方法として垂直スケーリング(ストレージシステムのストレージノードを増減せずそのコンポーネントを有するストレージノードに割り当てられるリソースを増減すること)を選択する、及び/又は、いずれかのストレージノードのボリュームの数が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又はすると判定した場合には、ストレージシステムのスケーリング方法として水平スケーリング(ストレージシステムのストレージノードを増減すること)を選択する。
【発明の効果】
【0010】
コンピュート設定変更の不要とノード障害時やノード過負荷時の影響範囲の局所化との少なくとも一つを適切に実現することができる。
【図面の簡単な説明】
【0011】
図1】実施例1に係るシステム全体の構成の一例を示す。
図2】コンピュートノード2の一例を示す。
図3】ストレージノード4の一例を示す。
図4】ストレージ構成情報26の一例を示す。
図5】ストレージノード性能情報27の一例を示す。
図6】ボリューム性能情報28の一例を示す。
図7】コンポーネント使用率情報42の一例を示す。
図8】スケーリング情報43の一例を示す。
図9】ノードサイズ情報44の一例を示す。
図10】適正閾値情報45の一例を示す。
図11】ストレージクラスタ3と冗長グループ141とストレージノード4の関係の一例を示す。
図12】スケーリング選択処理の流れの一例を示す。
図13】スケールアップ処理の流れの一例を示す。
図14】スケールアウト処理の流れの一例を示す。
図15】スケールアップ提案画面361の一例を示す。
図16】スケールアウト提案画面371の一例を示す。
図17】ゾーン151と冗長グループ141とストレージノード4の関係の一例を示す。
図18】ドライブアクセス情報46の一例を示す。
【発明を実施するための形態】
【0012】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0013】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0014】
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
【0015】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0016】
また、以下の説明では、「yyy機能」の表現にて機能を説明することがあるが、機能は、1つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、1つ以上のハードウェア回路(例えばFPGA又はASIC)によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が1つの機能にまとめられたり、1つの機能が複数の機能に分割されたりしてもよい。「yyy機能」は、「yyy部」と呼ばれてもよい。
【0017】
また、以下の説明では「ボリューム」(VOL)は、ストレージの記憶領域を示し、これらは物理的な記憶デバイス又は論理的な記憶デバイスによって実装されていてよい。また、VOLは、実体的なVOLであってもよいし、仮想的なVOL(VVOL)であってもよい。「RVOL」は、そのRVOLを有するストレージノードが有する物理的な記憶資源に基づくVOLでよい。「VVOL」は、外部接続VOL(EVOL)と、容量拡張VOL(TPVOL)と、スナップショットVOLとのうちのいずれでもよい。EVOLは、外部のストレージの記憶空間(例えばVOL)に基づいており、ストレージ仮想化技術に従うVOLでよい。TPVOLは、複数の仮想領域(仮想的な記憶領域)で構成されており容量仮想化技術(典型的にはThin Provisioning)に従うVOLでよい。スナップショットVOLは、VOLのスナップショットとしてのVOLでよい。
【0018】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合には、参照符号を使用することがある。
【実施例0019】
図1は、実施例1に係るシステム全体の構成の一例を示す。
【0020】
システムはクラウド1上に構築される。クラウド1はパブリッククラウドでもプライベートクラウドでもよい。パブリッククラウドは、不特定多数の企業や組織が使用するクラウドである。プライベートクラウドは、特定の企業や組織のみが使用するクラウドである。クラウド1は、物理的な計算機システム(例えば、複数の物理的な計算リソースを有する複数の物理計算機)に基づく。
【0021】
システムは、一つ又は複数のコンピュートノード2、ストレージノード4、コントローラノード5、APIエンドポイント6、スケーリング管理ノード7、管理端末8、仮想ネットワーク9を含む。
【0022】
コンピュートノード2は、クラウド1上で動作する仮想マシンであり、ストレージノード4のボリュームにデータをライトし、ストレージノード4のボリュームからデータをリードするノードである。コンピュートノード2は、クラウド1の外に存在してよく、物理的な計算機でもよい。
【0023】
ストレージノード4は、クラウド1上で動作する仮想マシンであり、コンピュートノード2からの要求に応じてデータをリード/ライトするノードである。ストレージノード4はストレージクラスタ3を構成する。ストレージクラスタ3は、ストレージシステムの一例である。ストレージクラスタ3は、SDSシステムであり、一つ又は複数のストレージノード4を含む。
【0024】
コントローラノード5は、APIエンドポイント6にアクセスするためのノードである。コントローラノード5は、垂直スケーリング機能31及び水平スケーリング機能32を含む。垂直スケーリング機能31は、同一ストレージクラスタ3内のストレージノード4のリソース量を増減させる機能、つまり、垂直スケーリングを実施する機能である。水平スケーリング機能32は、同一ストレージクラスタ3への新しいストレージノード4の追加や同一ストレージクラスタ3内のストレージノード4を削除する機能、つまり、水平スケーリングを実施する機能である。
【0025】
APIエンドポイント6は、クラウド上のリソースを制御するためのAPI(Application Programming Interface)である。
【0026】
スケーリング管理ノード7は、ストレージクラスタ3のスケーリングを管理するノードである。スケーリング管理ノード7は、仮想マシンであり、仮想ネットワークI/F111、仮想メモリ114及び仮想CPU112を有する。仮想ネットワークI/F111は、物理的なインターフェース装置が割り当てられた仮想的なリソースであり、仮想ネットワーク9を介した通信を行う。仮想メモリ114(記憶装置の一例)は、物理的なメモリが割り当てられた仮想的なリソースであり、例えば、コンポーネント使用率情報42、スケーリング情報43、ノードサイズ情報44、適正閾値情報45を含む。仮想CPU112(プロセッサの一例)は、物理的なCPUが割り当てられた仮想リソースであり、コンピュータプログラムを実行することでスケーリング管理機能41を実現する。なお、スケーリング管理ノード7は、物理的な装置であってもよく、仮想ネットワークI/F111、仮想メモリ114及び仮想CPU112に代えてそれぞれ物理的なリソース(物理的なインターフェース装置、物理的な記憶装置及び物理的なプロセッサ)が採用されてもよい。スケーリング管理ノード7は、クラウド1の外に存在してもよい。また、スケーリング管理ノード7は、垂直スケーリング機能31及び水平スケーリング機能32のうちの少なくとも一つ有してよい。
【0027】
管理端末8は、スケーリング管理ノード7が提案した内容をユーザ(例えば管理者)が確認し、スケーリングの実行を指示するための端末である。管理端末8が無く、スケーリング管理ノード7が選択したスケーリング方法がコントローラノード5で実施されてよい。
【0028】
仮想ネットワーク9は、物理的なネットワークが割り当てられた仮想的なリソースであり、コンピュートノード2、ストレージノード4、コントローラノード5、APIエンドポイント6、スケーリング管理ノード7及び管理端末8を相互に接続するためのネットワークである。
【0029】
図2は、コンピュートノード2の一例を示す。
【0030】
コンピュートノード2は、仮想ネットワークI/F11、仮想CPU12、仮想ボリューム13(ボリュームの一例)、及び、仮想メモリ14を含む。
【0031】
仮想ネットワークI/F11は、仮想ネットワーク9に接続するための仮想的なインターフェースである。
【0032】
仮想CPU12は、仮想メモリ14上の機能を実行する仮想的なCPUである。
【0033】
仮想ボリューム13は、データを格納するための仮想的なボリュームである。仮想ボリューム13にデータをライトすることで、ストレージノード4にデータをライトすることができる。仮想ボリューム13からデータをリードすることで、ストレージノード4からデータをリードすることができる。
【0034】
仮想メモリ14は、仮想CPU12が実行する機能やその機能が必要とするデータを記憶する仮想的なメモリである。仮想メモリ14は、データベース機能15、マルチパス機能16及びストレージ接続情報17を含む。
【0035】
データベース機能15は、データを管理する機能であり、管理するデータをストレージノード4に保存する。データベース機能15に代えて又は加えて、仮想ボリューム23にデータをリード/ライトする他の機能が採用されてもよい。マルチパス機能16は、ストレージクラスタ3上のある仮想ボリュームに複数のストレージノード4を経由して接続することで、あるストレージノードに障害が発生した場合においてもアクセスを継続できるようにする機能である。マルチパス機能16は、異なる経路で接続した仮想ボリュームを1つの仮想ボリュームとしてデータベース機能15に提供する。ストレージ接続情報17は、ストレージに接続するために使用する情報である。ストレージ接続情報17は、ストレージIPアドレス51、ストレージiSCSI名52を含む。ストレージIPアドレス51は、ストレージノードのIPアドレスを示す。ストレージiSCSI名52は、ストレージのターゲットの名前を示す。
【0036】
図3は、ストレージノード4の一例を示す。
【0037】
ストレージノード4は、仮想ネットワークI/F21、仮想CPU22、仮想ボリューム23、及び、仮想メモリ24を含む。
【0038】
仮想ネットワークI/F21は、仮想ネットワーク9に接続するための仮想的なインターフェースである。
【0039】
仮想CPU22は、仮想メモリ24上の機能を実行する仮想的なCPUである。
【0040】
仮想ボリューム23は、データを格納する仮想的なボリュームであり、クラウド1が提供するサービスである。例えば、仮想ボリューム23は、コンピュートノード2に提供され認識されてよい。コンピュートノード2が認識した仮想ボリューム23がコンピュートノード2において仮想ボリューム13として管理されてよい。すなわち、コンピュートノード2において仮想ボリューム13に対するリード/ライトが生じた場合、リード又はライトのリクエスト(仮想ボリューム23を指定したリクエスト)がストレージノード4に送信され、ストレージノード4のストレージ制御機能25が、そのリクエストに応答して、指定された仮想ボリューム23に対するリード/ライトを行ってよい。
【0041】
仮想メモリ24は、ストレージ制御機能25、ストレージ構成情報26、ストレージノード性能情報27及びボリューム性能情報28を含む。
【0042】
ストレージ制御機能25は、コンピュートノード2からのライトリクエストに基づき仮想ボリューム23と同一ストレージクラスタ3のストレージノード4上の仮想ボリューム23にデータをライトし、リードリクエストに基づき仮想ボリューム23や同一ストレージクラスタのストレージノード4上の仮想ボリューム23からデータをリードし、その結果をコンピュートノード2に返す機能である。ストレージノード4が停止した場合においても、他のストレージノード4のストレージ制御機能25が機能を引き継げるようにストレージ制御機能25は、冗長化されている。また、ストレージノード4が停止した場合においてもデータにアクセスできるように、ストレージ制御機能25は、同一ストレージノード4内と他のストレージノード4内の仮想ボリューム23にそれぞれデータをライトする。
【0043】
ストレージ構成情報26は、同一ストレージクラスタ3のストレージノード4の構成情報である。
【0044】
ストレージノード性能情報27は、同一ストレージクラスタ3のストレージノード4の性能情報である。
【0045】
ボリューム性能情報28は、同一ストレージクラスタ3の仮想ボリューム23の性能情報である。
【0046】
図4は、ストレージ構成情報26の一例を示す。
【0047】
ストレージ構成情報26は、ストレージノード4毎に、ストレージノードID61、冗長グループ62、データ保護種別63及びノードサイズ64といった情報を含む。
【0048】
ストレージノードID61は、ストレージノード4のIDを示す。冗長グループ62は、ストレージノード4が属する冗長グループのIDを示す。データ保護種別63は、データ保護の種別を示す。データ保護種別63が「Mirror」の場合は、データが2台のストレージノードに保存される。データ保護種別63が「mDnP」(mおよびnは整数)の場合は、m台のストレージノード4にデータが保存され、n台のストレージノード4にパリティデータが保存される。データ保護は、例えばEC(Erasure Coding)により実現されてもよいしRAID(Redundant Array of Independent (or Inexpensive) Disks)により実現されてもよい。ノードサイズ64はストレージノード4のサイズを示す。
【0049】
以下の説明では、IDが「X」である要素eを、「eX」と記載することがある(つまり、参照符号に代えてIDを使用することがある)。図4が示す例によれば、ストレージノードSN1~SN3が同一の冗長グループRG1を構成し、ストレージノードSN1にライトされるデータがストレージノードSN2にミラーリングされ、ストレージノードSN2にライトされるデータがストレージノードSN3にミラーリングされ、ストレージノードSN3にライトされるデータがストレージノードSN1にミラーリングされる。
【0050】
図5は、ストレージノード性能情報27の一例を示す。
【0051】
ストレージノード性能情報27は、取得されたノード性能情報毎に(例えばストレージ制御機能25により取得されたノード性能情報毎に)、ストレージノードID71、日時72、CPU使用率73、ネットワークスループット74、ドライブIOPS75及びドライブスループット76といった情報を含む。「IOPS」は、IO Per Secondの略である。
【0052】
ストレージノードID71は、ノード性能情報が取得されたストレージノード4のIDを示す。日時72は、ノード性能情報が取得された日時を示す。
【0053】
CPU使用率73は、ノード性能情報が示すCPU使用率(仮想CPU22の使用率)を示す。ネットワークスループット74は、ノード性能情報が示すネットワークスループット(仮想ネットワーク9を通じて仮想ネットワークI/F21が送受信する単位時間当たりのデータ量)を示す。ドライブIOPS75は、ノード性能情報が示すドライブIOPS(ストレージノード4内の全ての仮想ボリューム23への単位時間当たりのアクセス数(IO数))を示す。ドライブスループット76は、ノード性能情報が示すドライブスループット(ストレージノード4内の全ての仮想ボリューム23に入出力される単位時間当たりのデータ量(アクセススループット))を示す。
【0054】
図6は、ボリューム性能情報28の一例を示す。
【0055】
ボリューム性能情報28は、取得されたボリューム性能情報毎に(例えばストレージ制御機能25により取得されたボリューム性能情報毎に)、ボリュームID81、アクティブストレージノードID82、スタンバイストレージノードID83、日時84、リードIOPS85、ライトIOPS86、リードスループット87及びライトスループット88といった情報を含む。
【0056】
ボリュームID81は、仮想ボリューム23のIDを示す。アクティブストレージノードID82は、仮想ボリューム23の処理を担当するストレージノードのIDを示す。コンピュートノード2からライトされたデータは、アクティブストレージノード4内の仮想ボリューム23にライトされる。スタンバイストレージノードID83は、アクティブストレージノード4が停止している場合にそのアクティブストレージノード4が担当していた仮想ボリューム23の処理を担当するストレージノード4のIDを示す。コンピュートノード2からライトされたデータは、スタンバイストレージノード4内の仮想ボリューム23にもライトされる。日時84は、ボリューム性能情報が取得された日時を示す。
【0057】
リードIOPS85は、ボリューム性能情報が示すリードIOPS(コンピュートノード2が仮想ボリューム23からリードした単位時間当たりのリード回数)を示す。ライトIOPS86は、ボリューム性能情報が示すライトIOPS(コンピュートノード2が仮想ボリューム23にライトした単位時間当たりのライト回数)を示す。リードスループット87は、ボリューム性能情報が示すリードスループット(コンピュートノード2が仮想ボリューム23からリードしたときのスループット(単位時間当たりのリードデータ量))を示す。ライトスループット88は、ボリューム性能情報が示すライトスループット(コンピュートノード2が仮想ボリューム23にライトしたときのスループット(単位時間当たりのライトデータ量))を示す。
【0058】
図7は、コンポーネント使用率情報42の一例を示す。
【0059】
コンポーネント使用率情報42は、取得されたコンポーネント使用率(コンポーネント負荷の一例)毎に、クラスタID91、ストレージノードID92、日時93、CPU使用率94、ネットワーク使用率95、ドライブIOPS使用率96及びドライブスループット使用率97といった情報を含む。
【0060】
クラスタID91は、ストレージクラスタ3のIDを示す。ストレージノードID92は、ストレージノード4のIDを示す。日時93は、ノード性能情報が取得された日時を示す。コンポーネント使用率は、ノード性能情報から特定可能である。コンポーネント使用率として、例えば、CPU使用率、ネットワーク使用率、ドライブIOPS使用率、及び、ドライブスループット使用率がある。本実施例において、「コンポーネント」とは、仮想ボリューム23の性能に影響し得る要素(つまり仮想ボリューム23とは別の要素)である。
【0061】
CPU使用率94は、仮想CPU22の使用率を示す。ネットワーク使用率95は、ストレージノード4の仮想ネットワークI/F21の使用率を示す。ドライブIOPS使用率96は、ストレージノード4内の全ての仮想ボリューム23への最大アクセス数に対するアクセス数(ノード性能情報から特定されたアクセス数(ドライブIOPS))の割合を示す。ドライブスループット使用率97は、ストレージノード4内の全ての仮想ボリューム23への最大スループットに対するスループット(ノード性能情報から特定されたスループット(ドライブスループット))の割合を示す。最大アクセス数及び最大スループットは、それぞれ、所定値でもよいし、所定の方法により計算された値でもよい。
【0062】
図8は、スケーリング情報43の一例を示す。
【0063】
スケーリング情報43は、CPU使用率閾値101、ネットワーク使用率閾値102、ドライブ使用率閾値103、上限CPUコア数104、上限ストレージノード数105、標準ノードサイズ106及び上限ストレージノードコスト107といった情報を含む。
【0064】
CPU使用率閾値101は、CPU使用率(ストレージノード4の仮想CPU22の使用率)の閾値を示す。CPU使用率がこの閾値が超過したときにスケーリングがされる。
【0065】
ネットワーク使用率閾値102は、ネットワーク使用率(ストレージノード4の仮想ネットワークI/F21の使用率)の閾値を示す。ネットワーク使用率がこの閾値を超過したときにスケーリングされる。
【0066】
ドライブ使用率閾値103は、ドライブ使用率(ストレージノード4の全ての仮想ボリューム23へのアクセス使用率)の閾値を示す。ドライブ使用率がこの閾値を超過したときにスケーリングがされる。
【0067】
上限CPUコア数104は、ストレージノード4がスケールアップできる最大のCPUコア数を示す。上限ストレージノード数105はストレージクラスタ3がスケールアウトできる最大のストレージノード数を示す。標準ノードサイズ106は、標準的に用いるストレージノードのサイズを示す。上限ストレージノードコスト107は、上限となるストレージノードのコストを示す。
【0068】
図9は、ノードサイズ情報44の一例を示す。
【0069】
ノードサイズ情報44は、ノードサイズ毎に、ノードサイズ511、CPUコア数512、メモリ容量513、ネットワークスループット514、ドライブIOPS515、ドライブスループット516及び価格517といった情報を含む。
【0070】
ノードサイズ511は、ノードのサイズを示す。CPUコア数512は、ノードに割り当てられるCPUコア数を示す。メモリ容量513は、ノードに割り当てられるメモリの容量を示す。ネットワークスループット514は、ノードに割り当てられるネットワークスループットの上限値を示す。ドライブIOPS515は、ノードに接続された全ての仮想ドライブへのアクセス数の上限値を示す。ドライブスループット516は、ノードに接続された全ての仮想ドライブへのアクセスのスループットの上限値を示す。価格517は、ノードを使用時に課金される1時間当たりの価格を示す。
【0071】
図10は、適正閾値情報45の一例を示す。
【0072】
適正閾値情報45は、コンポーネント121、適正閾値122を含む。コンポーネント121は、ストレージノード4を構成しボリューム性能のボトルネックになり得る要素を示す。適正閾値122は、コンポーネントごとの適正な使用率の上限値を示す。なお、適正閾値122が、スケーリング情報43における閾値101~103と同じ場合、適正閾値情報45が無くてもよいし、或いは、スケーリング情報43のうち閾値101~103は無くてもよい。また、適正閾値122は、管理端末8から変更されてもよく、その場合、適正閾値122がスケーリング情報43における閾値101~103に反映されて、スケーリングの契機が変更されてもよい。
【0073】
図18は、ドライブアクセス情報46の一例を示す。
【0074】
ドライブアクセス情報46は、データ保護種別毎に、データ保護種別131、リードIOPS増幅係数132、ライトIOPS増幅係数133、リードスループット増幅係数134及びライトスループット増幅係数135といった情報を示す。
【0075】
データ保護種別131は、データ保護種別を示す。リードIOPS増幅係数132は、リードIOPSの増幅係数を示す。ライトIOPS増幅係数133は、ライトIOPSの増幅係数を示す。リードスループット増幅係数134は、リードスループットの増幅係数を示す。ライトスループット増幅係数135は、ライトスループットの増幅係数を示す。
【0076】
ドライブアクセス情報46は、仮想ボリューム23へのIOPSやスループットが、コンピュートノード2からのアクセスのIOPSやスループットの何倍になるかをデータ保護種別ごとにリードとライト別に記録した情報である。
【0077】
図11は、ストレージクラスタ3と冗長グループ141とストレージノード4の関係の一例を示す。
【0078】
ストレージクラスタ3は、複数の冗長グループ141を含む。複数の冗長グループ141の各々が、二つ以上のストレージノード4で構成される。複数の冗長グループ141の各々について、当該冗長グループ141におけるいずれかのストレージノード4に格納されるデータは、当該冗長グループにおけるストレージノード4間で冗長化される。データの冗長化は、データ保護種別63(図4参照)に依存する。
【0079】
図11が示す例によれば、ストレージクラスタ3は、冗長グループ141aと冗長グループ141bを含む。冗長グループ141aは、ストレージノード4a、ストレージノード4b及びストレージノード4cを含む。冗長グループ141bは、ストレージノード4d、ストレージノード4e及びストレージノード4fを含む。冗長グループ141は、ストレージ制御機能25によりデータが冗長化される範囲である。
【0080】
図17は、ストレージクラスタ3と冗長グループ141とストレージノード4とゾーン151との関係の一例を示す。
【0081】
物理的にそれぞれが独立した複数のゾーン151(例えば、ゾーン151a~151c)がある。具体的には、例えば、各ゾーン151は、サーバ、ネットワーク、電源などが他のいずれのゾーン151からも独立しており、他のゾーン151において障害が発生した場合においてもストレージノード4は処理を継続できる。同一冗長グループ141内の複数のストレージノード4は異なる複数のゾーン151に配置される。例えば、冗長グループ141aを構成するストレージノード4a~4cは、ゾーン151a~151cにそれぞれ属する。ゾーン151は、例えば、サーバラックでよい。
【0082】
データ保護種別が「Mirror」の場合は、データが2台のストレージノード4に保存される。そして、各ゾーン151には、同一の冗長グループ141における2台以上のストレージノード4は無く、異なる複数の冗長グループ141の複数のストレージノード4が属する。このため、あるゾーン151において障害が発生し、そのゾーン151に属する2台以上のストレージノード4が停止しても、停止したストレージノード4と異なるゾーン151のストレージノード4にデータが冗長化されているため、データへのアクセスを継続することができる。
【0083】
以下、本実施例で行われる処理の例を説明する。
【0084】
図12は、スケーリング選択処理の流れの一例を示す。
【0085】
スケーリング選択処理では、スケーリング管理機能41が、スケーリング方法を選択し、選択したスケーリング方法を提案する。スケーリング管理機能41は、1週間に1度などの頻度で定期的にスケーリング選択処理を実行してよい。
【0086】
ステップ201において、スケーリング管理機能41は、各ストレージノード4から、ストレージ構成情報26、ストレージノード性能情報27、及びボリューム性能情報28を取得する。
【0087】
ステップ202において、スケーリング管理機能41は、ストレージノード性能情報27とノードサイズ情報44を用いてコンポーネント使用率(各種の使用率)を計算し、そのコンポーネント使用率をコンポーネント使用率情報42に記録する。具体的には、例えば、以下の式を用いて各種の使用率が計算される。
・ネットワーク使用率95=ネットワークスループット74÷ネットワークスループット514
・ドライブIOPS使用率96=ドライブIOPS75÷ドライブIOPS515
・ドライブスループット使用率97=ドライブスループット76÷ドライブスループット516
【0088】
仮想CPU22についてはストレージノード4から使用率を取得できるため、スケーリング管理機能41は、取得されたCPU使用率73をCPU使用率94としてコンポーネント使用率情報42に記録する。
【0089】
ステップ203において、スケーリング管理機能41は、コンポーネント使用率情報42の各コンポーネントの時系列の使用率に基づき、将来のコンポーネントの時系列の使用率を予測し、その結果をコンポーネント使用率情報42に記録する。なお、過去の時系列情報に基づき将来の時系列情報を予測する方法として、回帰分析やARIMA(Autoregressive Integrated Moving Average)モデルを用いる方法などが挙げられる。
【0090】
ステップ204において、スケーリング管理機能41は、ステップ203において予測した将来のコンポーネント使用率が、閾値を超過しているか否かを判定する(例えば、コンポーネント使用率におけるいずれかの種類の使用率が、適正閾値122又は閾値101~103のうちのその使用率種類に対応の閾値を超過しているか否かを判定する)。例えば、この判定は、コンポーネント使用率が将来の一定期間内に(例えば現在から3か月以内に)閾値を超えるか否かの判定である。この判定の結果が真の場合は、処理がステップ205に進む。そうでない場合は、処理が終了する。
【0091】
ステップ205において、スケーリング管理機能41は、ボリューム性能情報28の各仮想ボリューム23の時系列のリードIOPS85、ライトIOPS86、リードスループット87及びライトスループット88に基づき、将来の各仮想ボリューム23の時系列のリードIOPS85、ライトIOPS86、リードスループット87及びライトスループット88をそれぞれ予測し、その結果をボリューム性能情報28に記録する。
【0092】
ステップ206において、スケーリング管理機能41は、ステップ205において予測した結果に基づき、ステップ204において閾値を超過すると判定されたコンポーネントの使用率を計算する。例えば、スケーリング管理機能41は、CPU使用率を以下の式により計算する。なお、処理並列度、リードIOPS処理時間、ライトIOPS処理時間、リード転送時間、ライト転送時間はあらかじめ定められた値である。
・CPU使用率94=(リードIOPS85+ライトIOPS86)÷最大アクセス数
・最大アクセス数=処理並列度÷(アクセス処理時間+データ転送時間)
・アクセス処理時間=(リードIOPS処理時間×リードIOPS85+ライトIOPS処理時間×ライトIOPS86)÷(リードIOPS85+ライトIOPS86)
・データ転送時間=リード転送時間×リードスループット87÷リードIOPS85+ライト転送時間×ライトスループット88÷ライトIOPS86
【0093】
例えば、スケーリング管理機能41は、ネットワーク使用率を以下の式により計算する。
・ネットワーク使用率95=リードスループット87×リードスループット増幅係数134+ライトスループット88×ライトスループット増幅係数135
【0094】
例えば、スケーリング管理機能41は、ドライブIOPS使用率を以下の式により計算する。
・ドライブIOPS使用率96=(リードIOPS85×リードIOPS増幅係数132+ライトIOPS86×ライトIOPS増幅係数133)÷ドライブ使用率閾値103
【0095】
例えば、スケーリング管理機能41は、ドライブスループット使用率を以下の式により計算する。
・ドライブスループット使用率97=(リードスループット87×リードスループット増幅係数134+ライトスループット88×ライトスループット増幅係数135)÷ドライブ使用率閾値103
【0096】
ステップ207において、スケーリング管理機能41は、ステップ206において計算したコンポーネント使用率が、閾値を超過しているか否かを判定する(例えば、コンポーネント使用率におけるいずれかの種類の使用率が、適正閾値122又は閾値101~103のうちのその使用率種類に対応の閾値を超過しているか否かを判定する)。この判定の結果が真の場合は、処理がステップ208に進む。そうでない場合は、処理がステップ209に進む。
【0097】
ステップ208において、スケーリング管理機能41は、コンポーネント使用率が閾値(適正閾値122又は閾値101~103)を超過しないように、変更するノードサイズを決定する。具体的には、例えば、スケーリング管理機能41は、ノードサイズ情報44の中から、ステップ204において閾値を超過すると判定されたコンポーネントの数値が大きいノードサイズを選択し、ステップ206の通りコンポーネント使用率を計算し、そのコンポーネント使用率が閾値を超過するか確認する。スケーリング管理機能41は、閾値を超過しなかったノードサイズの中のいずれのノードサイズ(例えば、価格517が最小となるノードサイズ又は最も大きいノードサイズ)を選択する。
【0098】
ステップ209において、スケーリング管理機能41は、データ保護種別に基づき追加するノード数を決定する。例えば、以下の式に基づき追加ノード数を求める。例えば、データ保護種別が「Mirror」の場合は、追加ノード数は「3」でよい。
・適正ノード数=(現在のストレージノード数)×(ステップ204において閾値を超過したコンポーネントの閾値)÷(ステップ204において閾値を超過したコンポーネントの使用率)
・追加ノード数=(適正ノード数以上となる最小の整数)-(現在のストレージノード数)
【0099】
ステップ210において、スケーリング管理機能41は、スケールアップを提案する(例えば、後述する図15のスケールアップ提案画面361を管理端末8に表示する)。
【0100】
ステップ211において、スケーリング管理機能41は、スケールアウトを提案する(例えば、後述する図16のスケールアウト提案画面371を管理端末8に表示する)。
【0101】
図13は、スケールアップ処理の流れの一例を示す。
【0102】
スケールアップ処理では、ストレージノード4のスケールアップが実施される。
【0103】
ステップ221において、スケーリング管理機能41は、ステップ204において閾値を超過したコンポーネントを持つストレージノード4が属するストレージクラスタ3内の全てのストレージノード4を、ステップ208において決定したノードサイズにスケールアップすることを垂直スケーリング機能31に指示する。なお、スケールアップ対象として、スケーリング管理機能41は、ストレージクラスタ3の代わりに、閾値を超過したコンポーネントを持つストレージノード4が属する冗長グループ141を指定してもよいし、閾値を超過したコンポーネントを持つストレージノード4とそのペアとなるスタンバイストレージノード4とを指定してもよいし、閾値を超過したコンポーネントを持つストレージノード4のみを指定してもよい。冗長グループ単位の垂直スケーリングについては後述する。
【0104】
ステップ222において、垂直スケーリング機能31は、スケールアップするストレージノード4を1台選択する。
【0105】
ステップ223において、垂直スケーリング機能31は、ステップ222において選択したストレージノード4のストレージ制御機能25を停止し、ストレージノード4を停止する。
【0106】
ステップ224において、垂直スケーリング機能31は、ステップ223において停止したストレージノード4を、ステップ221において指示されたノードサイズに変更することをAPIエンドポイント6に指示する。APIエンドポイント6は、その指示を受けて、指示されたストレージノード4を、指示されたノードサイズに変更する。
【0107】
ステップ225において、垂直スケーリング機能31は、ステップ223において停止したストレージノード4を起動することをAPIエンドポイント6に指示する。APIエンドポイント6は、その指示を受けて、指示されたストレージノード4を起動する。垂直スケーリング機能31は、起動したストレージノード4がストレージ制御機能25を起動させ、ストレージノード4が停止中に書き出せなかったデータの他のストレージノード4からのコピーが完了するまで待機する。
【0108】
ステップ231において、垂直スケーリング機能31は、指示された全てのストレージノードをスケールアップできたか否かを判定する。この判定の結果が真の場合は処理が終了する。そうでない場合は、処理がステップ222に戻る。
【0109】
図14は、スケールアウト処理の流れの一例を示す。
【0110】
スケールアウト処理では、ストレージクラスタ3のスケールアウトが実施される。
【0111】
ステップ241において、スケーリング管理機能41は、ステップ204において閾値を超過したコンポーネントのストレージノード4が属するストレージクラスタ3に、標準ノードサイズ106において定められたノードサイズであり、ステップ209において決定した台数のノードを追加することを水平スケーリング機能32に指示する。
【0112】
ステップ242において、水平スケーリング機能32は、ステップ241において指示されたノードサイズのストレージノードをステップ241において指示された台数分作成することをAPIエンドポイント6に指示する。APIエンドポイント6は、この指示に基づきストレージノード4を作成する。
【0113】
ステップ243において、水平スケーリング機能32は、ステップ242において作成されたストレージノード4をストレージクラスタ3に追加する。具体的には、水平スケーリング機能32は、ストレージ構成情報26に、ステップ242において作成されたストレージノード4の情報を追記する。追加されたストレージノード4が属する冗長グループ141は、既存の冗長グループとは異なり新たに作成される。
【0114】
図15は、スケールアップ提案画面361の一例を示す。
【0115】
スケールアップ提案画面361は、ステップ210において、スケーリング管理機能41により作成される。スケールアップ提案画面361は、スケーリング要否判定362、既存ボリュームの推移予測363、スケーリング方法の判定根拠364、提案内容365を含む。スケールアップ提案画面361は、管理端末8に表示される。
【0116】
スケーリング要否判定362は、スケーリング要否の根拠を示すグラフ、例えば、ステップ203において予測した将来のコンポーネントの時系列の使用率を表すグラフを含む。
【0117】
既存ボリュームの推移予測363は、各既存ボリュームの将来のIOPSやスループットを示すグラフ、例えば、ステップ205において予測した将来のボリュームの時系列のリードIOPS、ライトIOPS、リードスループット及び/又はライトスループットを表すグラフを含む。
【0118】
スケーリング方法の判定根拠364は、スケーリング方法の判定根拠を示すグラフであり、例えば、ステップ206において計算した将来のコンポーネント使用率を表すグラフを含む。
【0119】
提案内容365は、スケールアップ後のノードサイズを示し、ステップ208において決定したノードサイズを示す。
【0120】
ユーザが「スケールアップする」ボタンを押せば(例えば、クリック又はタップすれば)、提案が承認されたことになり、提案通りのスケールアップが実施される(そのスケールアップの実施のための指示が、スケーリング管理機能41から垂直スケーリング機能31に送信される)。
【0121】
図16は、スケールアウト提案画面371の一例を示す。
【0122】
スケールアウト提案画面371は、ステップ211において、スケーリング管理機能41により作成される。スケールアウト提案画面371は、スケーリング要否判定372、既存ボリュームの推移予測373、スケーリング方法の判定根拠374、提案内容375を含む。スケールアウト提案画面371は、管理端末8に表示される。
【0123】
スケーリング要否判定372は、スケーリング要否判定362と同じである。既存ボリュームの推移予測373は、既存ボリュームの推移予測363と同じである。スケーリング方法の判定根拠374は、スケーリング方法の判定根拠364と同じである。
【0124】
提案内容375は、スケールアウト後のノード数を示し、ステップ209において決定したノード数を示す。
【0125】
ユーザが「スケールアウトする」ボタンを押せば(例えば、クリック又はタップすれば)、提案が承認されたことになり、提案通りのスケールアウトが実施される(そのスケールアウトの実施のための指示が、スケーリング管理機能41から水平スケーリング機能32に送信される)。
【実施例0126】
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する(実施例3についても同様)。
【0127】
実施例2では、スケーリング管理機能41は、将来のコンポーネントの稼働率を予測せずにスケーリング方法を選択する。具体的には、ステップ206において、スケーリング管理機能41は、現在から過去一定期間までの期間としての分析期間(例えば過去1か月間)を定義し、その分析期間に追加された仮想ボリューム23を除いてその分析期間でのコンポーネント使用率を計算する。このコンポーネント使用率は、分析期間の開始から終了までに存在していた各仮想ボリューム23の性能情報を基に計算される。計算の結果、コンポーネント使用率が閾値を超過する場合は、スケーリング管理機能41はスケールアップを選択する。そうでない場合は、スケーリング管理機能41はスケールアウトを選択する。
【実施例0128】
実施例3では、スケーリング管理機能41は、仮想ボリューム23の個数の推移に基づきスケーリング方法を選択する。スケーリング管理機能41は、過去にスケールアップもしくはスケールアウトしてから作成したボリューム数を仮想メモリ114に記録しておく。ステップ207において、スケーリング管理機能41は、その数があらかじめ定められた閾値を超過したか否かを判定する。この判定の結果が真の場合は、スケーリング管理機能41は、スケールアウトを選択する。そうでない場合は、スケーリング管理機能41は、スケールアップを選択する。
【0129】
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。例えば、いずれかのストレージノード4がコントローラノード5及び/又はスケーリング管理ノード7を兼ねてもよい。また、例えば、スケールダウン処理の図示はされていないが、スケールダウン処理は、スケールアップ処理の流れと実質的に同じ流れで行われてよい(違いは、ストレージノード4に割り当てられるリソースの増加ではなくリソースの削減であること)。また、例えば、スケールイン処理の図示もされていないが、スケールイン処理は、スケールアウト処理の流れと実質的に同じ流れで行われてよい(違いは、ストレージノードの作成は不要で、ストレージノードが削減されること)。
【0130】
以上の説明を、例えば、下記のように総括することができる。下記の総括は、上述の説明の補足説明や、変形例の説明を含んでよい。
【0131】
それぞれコンピュート(例えばコンピュートノード2)に提供されるボリューム(例えば仮想ボリューム23)とそのボリュームの性能に影響し得るコンポーネントと有する一つ又は複数のストレージノード(例えばストレージノード4)を含み選択されたスケーリング方法が実施されるストレージシステム(例えばストレージクラスタ3)のスケーリング管理装置(例えばスケーリング管理ノード7)が構築される。「選択されたスケーリング方法が実施される」とは、スケーリング管理装置により選択されたスケーリング方法(又は、スケーリング管理装置により選択されユーザに提案されその提案が承認されたスケーリング方法)が、自動で(例えば、スケーリング管理装置、コントローラノード5又はその他の装置により)実施されることであってもよいし手動で実施されることであってもよい。
【0132】
スケーリング管理装置が、記憶装置(例えば仮想メモリ144)とプロセッサ(例えば仮想CPU112)とを備える。
【0133】
記憶装置が、コンポーネント負荷情報(例えばコンポーネント使用率情報42)と、ボリューム負荷情報(例えば、取得されたボリューム性能情報28)とを記憶する。コンポーネント負荷情報は、一つ又は複数のストレージノードの各々について当該ストレージノードが有するコンポーネントの負荷(例えば使用率)を表す情報である。ボリューム負荷情報は、一つ又は複数のストレージノードの各々について当該ストレージノードが有するボリュームの負荷(例えば性能)を表す情報である。
【0134】
プロセッサが、コンポーネント負荷情報及びボリューム負荷情報を参照する。プロセッサは、いずれかのストレージノードにおける既存のボリュームの負荷が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又は増減すると判定した場合には、ストレージシステムのスケーリング方法として垂直スケーリング(ストレージシステムのストレージノードを増減せずそのコンポーネントを有するストレージノードに割り当てられるリソースを増減すること)を選択する、及び/又は、いずれかのストレージノードのボリュームの数が増減した又はすることによりそのストレージノードにおけるコンポーネントの負荷が増減した又は増減すると判定した場合には、ストレージシステムのスケーリング方法として水平スケーリング(ストレージシステムのストレージノードを増減すること)を選択する。
【0135】
これにより、コンピュート設定変更の不要とノード障害時やノード過負荷時の影響範囲の局所化との少なくとも一つを適切に実現することができる。なお、例えば、スケールアウトの際のコンピュート設定変更は、ノード増減に伴い追加又は再配置されたボリュームについて、そのボリュームのID及び又はそのボリュームが属するポートのIDをコンピュートに設定することを含んでよい。
【0136】
プロセッサが、いずれかのストレージノードにおけるコンポーネントの負荷が所定の閾値を超えるか否かを判定してよい(例えばステップ204)。その判定の結果が真の場合(例えば、予測される将来の負荷が閾値を超えるコンポーネントがある場合(例えばステップ204がYesの場合))、そのストレージノードのボリューム毎の負荷を予測してよい。そのストレージノードの各ボリュームの予測される負荷が増加傾向にある場合(例えば、各ボリュームの予測される将来の負荷に基づきいずれかのコンポーネントの負荷(将来の予測される負荷)が閾値を超える場合(例えばステップ207がYesの場合))、プロセッサは、垂直スケーリングとしてスケールアップを選択してよい。これにより、コンピュート設定変更の不要を適切に実現することができる。また、負荷が閾値を超えるコンポーネントを持つストレージノードの各ボリュームの予測される負荷が増加傾向にない場合(例えば、各ボリュームの予測される将来の負荷に基づきいずれのコンポーネントの負荷(将来の予測される負荷)も閾値以下の場合(例えばステップ207がNoの場合))、プロセッサは、水平スケーリングとしてスケールアウトを選択してよい。これにより、ノード障害時やノード過負荷時の影響範囲の局所化を適切に実現することができる。
【0137】
なお、プロセッサは、いずれかのストレージノードにおけるコンポーネントの負荷(例えば予測される将来の負荷)が所定の閾値より低い別の閾値未満となるか否かを判定してよい。この判定の結果が真の場合、プロセッサは、そのコンポーネントを持つストレージノードのボリューム毎の負荷を予測してよい。そのストレージノードの各ボリュームの予測される負荷が減少傾向にある場合(例えば、各ボリュームの予測される将来の負荷に基づきいずれかのコンポーネントの負荷(将来の予測される負荷)が別の閾値(例えば適正閾値より低い閾値)未満となる場合)、プロセッサは、垂直スケーリングとしてスケールダウンを選択してよい。一方、そのストレージノードの各ボリュームの予測される負荷が減少傾向にない場合(例えば、各ボリュームの予測される将来の負荷に基づきいずれのコンポーネントの負荷も上記別の閾値未満にならない場合)、プロセッサは、水平スケーリングとしてスケールインを選択してよい。
【0138】
プロセッサが、一つ又は複数のストレージノードの各々について、過去の所定期間(例えば上述の分析期間)の開始から終了まで存在していたボリューム毎の負荷を基に当該ストレージノードのコンポーネントの負荷を計算してよい(例えば、ステップ205無しに、過去の所定期間の既存ボリュームについてステップ206を実施してよい)。当該計算された負荷が閾値を超えたストレージノードがある場合(つまり、ボリュームの追加とは異なる理由で負荷が閾値を超えるコンポーネントがある場合)、プロセッサは、垂直スケーリングとして当該ストレージノードのスケールアップを選択してよい。これにより、コンピュート設定変更の不要を適切に実現することができる。なお、過去の所定期間の開始から終了まで存在していたボリューム毎の負荷を基に当該ストレージノードのコンポーネントの負荷を計算しその負荷が閾値を超えているか否かを判定することは、いずれかのストレージノードにおけるコンポーネントの予測される将来の負荷が所定の閾値を超えるか否かの判定の結果が真の場合(例えばステップ204がYesの場合)に行われてよい。また、プロセッサは、計算された負荷が閾値を超えたストレージノードが無い場合、プロセッサは、水平スケーリングとしてスケールアウトを選択してよい。
【0139】
プロセッサが、過去の所定期間において追加されたボリュームの数が所定の閾値を超えるストレージノードがある場合には、水平スケーリングとしてスケールアウトを選択してよい。これにより、ノード障害時やノード過負荷時の影響範囲の局所化を適切に実現することができる。この段落の「過去の所定期間」は、前回のスケーリング方法選択又はスケーリング実施から現在までの期間でよい。このため、例えば、スケーリング管理機能41は、少なくとも初回では、実施例1又は実施例2に基づくスケーリング方法選択を実施し、次回以降では、実施例3に基づくスケーリング方法選択を実施してよい。これにより、スケーリング方法選択の計算負荷を削減しつつ、ノード障害時やノード過負荷時の影響範囲の局所化を適切に実現することができる。
【0140】
既存のボリュームの負荷が増減した又はすることによりコンポーネントの負荷が増減した又は増減するストレージノードがある場合、プロセッサは、複数の冗長グループ(例えば複数の冗長グループ141)のうち、そのストレージノードを含む冗長グループについて垂直スケーリングを選択してよい(例えば、その冗長グループに属する各ストレージノードが垂直スケーリングの対象とされてよい)。これにより、垂直スケーリングの対象を適切に絞り込むことができ、以って、コンピュート設定変更の不要をより適切に実現することができる。
【0141】
垂直スケーリングが選択される二つ以上の冗長グループがある場合、プロセッサが、当該二つ以上の冗長グループのうち同一ゾーンに属する二つ以上のストレージノードを並行して垂直スケーリングをすることを選択してよい。例えば、ステップ207がYesに該当するコンポーネントを持つストレージノードとして、ストレージノード4a及び4eがあるとする(図17参照)。この場合、スケールアップが選択される二つ以上の冗長グループは、冗長グループ141a及び141bである。スケーリング管理機能41は、異なるゾーン151a~151cに属する2台以上のストレージノードを並行してスケールアップすることは選択しない。スケーリング管理機能41は、同一ゾーン151に属する2台以上のストレージノードを並行してスケールアップすることを選択する。具体的には、例えば、ゾーン151aに属するストレージノード4a及び4dが並行してスケールアップされ、次に、ゾーン151bに属するストレージノード4b及び4eが並行してスケールアップされ、最後に、ゾーン151cに属するストレージノード4c及び4fが並行してスケールアップされてよい。つまり、スケールアップは、ゾーン単位で行われてよく、二つ以上のゾーンについてスケールアップが並行して実施されない。なお、スケールダウンについても、同様に、同一ゾーン151に属する2台以上のストレージノードを並行してスケールダウンすることがされてもよい。また、このような垂直スケーリングの制御は、スケーリング管理機能41による選択を基にされてもよいし(つまりスケーリング管理機能41によりされてもよいし)、垂直スケーリング機能31によりされてもよい。
【符号の説明】
【0142】
3 ストレージクラスタ
4 ストレージノード
7 スケーリング管理ノード
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18