(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024151082
(43)【公開日】2024-10-24
(54)【発明の名称】ストレージシステム及びストレージ管理方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20241017BHJP
G06F 13/10 20060101ALI20241017BHJP
G06F 13/12 20060101ALI20241017BHJP
【FI】
G06F3/06 301Y
G06F3/06 301E
G06F3/06 304N
G06F13/10 330C
G06F13/10 340A
G06F13/12 330C
G06F13/10 310E
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023064213
(22)【出願日】2023-04-11
(71)【出願人】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】吉田 美里
(72)【発明者】
【氏名】山本 貴大
(72)【発明者】
【氏名】佐藤 功人
(72)【発明者】
【氏名】山本 彰
(72)【発明者】
【氏名】大平 良徳
(57)【要約】
【課題】複数のストレージノードのリソースを有効利用すること。
【解決手段】複数のストレージノードを有するストレージシステムであって、前記複数のストレージノードを管理する管理部を備え、前記複数のストレージノードの各々は、処理負荷が既定範囲内であることを条件にクレジットを蓄積し、該クレジットを消費して前記既定範囲を超える負荷で処理を行うバーストが可能であり、前記管理部は、各ストレージノードのクレジットを管理し、所定のストレージ処理のバーストの契機を、当該ストレージ処理に関連する複数のストレージノードにおけるクレジットの蓄積状況から判断し、前記所定のストレージ処理に関連する複数のストレージノードでクレジットが蓄積されていた場合、蓄積されたクレジットを消費して前記所定のストレージ処理をバーストにより実行する。
【選択図】
図11
【特許請求の範囲】
【請求項1】
複数のストレージノードを有するストレージシステムであって、
前記複数のストレージノードを管理する管理部を備え、
前記複数のストレージノードの各々は、処理負荷が既定範囲内であることを条件にクレジットを蓄積し、該クレジットを消費して前記既定範囲を超える負荷で処理を行うバーストが可能であり、
前記管理部は、
各ストレージノードのクレジットを管理し、
所定のストレージ処理のバーストの契機を、当該ストレージ処理に関連する複数のストレージノードにおけるクレジットの蓄積状況から判断し、
前記所定のストレージ処理に関連する複数のストレージノードでクレジットが蓄積されていた場合、蓄積されたクレジットを消費して前記所定のストレージ処理をバーストにより実行することを特徴とするストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記管理部は、各ストレージノードの処理負荷と対応する前記既定範囲とを比較し、比較結果に基づいて各ストレージノードのクレジットを更新し、更新したクレジットに基づいてバーストが可能な時間を算出し、該バーストが可能な時間に基づいて前記所定のストレージ処理のバーストの契機を判断することを特徴とするストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
前記管理部は、前記クレジットの消費後、前記既定範囲内の処理負荷で前記所定のストレージ処理を継続し、前記クレジットが蓄積された後、再度バーストを行うことを特徴とするストレージシステム。
【請求項4】
請求項1に記載のストレージシステムであって、
前記所定のストレージ処理は、非同期処理であることを特徴とするストレージシステム。
【請求項5】
請求項4に記載のストレージシステムであって、
前記管理部は、ホストからの要求を処理する負荷が閾値以下の場合に、前記所定のストレージ処理を開始することを特徴とするストレージシステム。
【請求項6】
請求項1に記載のストレージシステムであって、
前記所定のストレージ処理は、前記ストレージノードのリビルドであることを特徴とするストレージシステム。
【請求項7】
請求項1に記載のストレージシステムであって、
前記バーストは、演算装置、ホストとの通信、記憶デバイスとの通信のうち、少なくともいずれかについての負荷が既定範囲を超える処理であることを特徴とするストレージシステム。
【請求項8】
請求項1に記載のストレージシステムであって、
前記管理部は、フェイルオーバー先のストレージノードで前記クレジットが蓄積されている場合に、前記フェイルオーバー先のストレージノードがホストからの要求を処理する際に前記既定範囲を超える負荷で処理を行うことを特徴とするストレージシステム。
【請求項9】
請求項1に記載のストレージシステムであって、
前記管理部は、複数のボリュームについて、性能要件に応じてバースト可否を設定可能であることを特徴とするストレージシステム。
【請求項10】
請求項9に記載のストレージシステムであって、
前記管理部は、バースト可に設定したボリュームの配置先を決定するに際し、前記クレジットの蓄積量が多いストレージノードを優先することを特徴とするストレージシステム。
【請求項11】
請求項1に記載のストレージシステムであって、
前記管理部は、前記クレジットの蓄積量が少ないストレージノードから前記クレジットの蓄積量が多いストレージノードにボリュームを移動することを特徴とするストレージシステム。
【請求項12】
複数のストレージノードを有するストレージシステムのストレージ管理方法であって、
前記複数のストレージノードの各々が、処理負荷が既定範囲内であることを条件にクレジットを蓄積するステップと、
前記複数のストレージノードを管理する管理部が、各ストレージノードのクレジットを管理するステップと、
前記管理部が、所定のストレージ処理のバーストの契機を、当該ストレージ処理に関連する複数のストレージノードにおけるクレジットの蓄積状況から判断するステップと、
前記管理部が、前記所定のストレージ処理に関連する複数のストレージノードでクレジットが蓄積されていた場合、蓄積されたクレジットを消費して前記既定範囲を超える負荷で処理を行うバーストにより前記所定のストレージ処理を実行するステップと
を含むことを特徴とするストレージ管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステム及びストレージ管理方法に関する。
【背景技術】
【0002】
クラウド環境上のサーバ(仮想マシン)は種々のスペックのものが提供されている。例えば、低コストで利用できる小サイズの仮想マシンで、一時的に性能向上できるバースト機能を持つものがある。このような仮想マシンは、普段は負荷が少ないが、一時的に負荷が増えるといったケースに対応できる。
特許文献1では、ストレージシステムのバーストについて開示されている。この文献には「最大IOPSパラメータは、延長期間に亘って最大維持IOPS値である。最大バーストIOPSパラメータは、クライアントがクレジットに基づいて短期間に亘って最大IOPSパラメータを上回って「バースト」することができる最大IOPS値である。一実装では、クライアントに対するクレジットは、クライアントがこれらのそれぞれの最大IOPSパラメータ未満で動作しているときに増加される。」との記載がある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1によると、バースト機能はクレジットの概念で管理される。予め定めたベースラインより低い使用状況の場合クレジットが蓄積され、ベースラインを超えてバースト可能となる。バーストを行うと、ベースラインより高い使用状況となるため、クレジットが消費される。クレジットを使い果たすと、使用できる最大値がベースラインに戻る。
このようなバースト機能を持つサーバでストレージシステムを構成するケースについて考える。上述の通り、バーストが使える時間やタイミングは限られるため、常時処理であるIOの性能はベースラインを元に設計し、蓄積されたクレジットを障害時などのリソースが追加で必要になった場面で使う方法が考えられる。
ここで、バーストできる契機と時間は限られるため、ストレージシステムでのバースト契機判断を適切に行い、複数のストレージノードのリソースを有効利用することが課題となる。
【課題を解決するための手段】
【0005】
上記目的を達成するために、代表的な本発明のストレージシステムの一つは、複数のストレージノードを有するストレージシステムであって、前記複数のストレージノードを管理する管理部を備え、前記複数のストレージノードの各々は、処理負荷が既定範囲内であることを条件にクレジットを蓄積し、該クレジットを消費して前記既定範囲を超える負荷で処理を行うバーストが可能であり、前記管理部は、各ストレージノードのクレジットを管理し、所定のストレージ処理のバーストの契機を、当該ストレージ処理に関連する複数のストレージノードにおけるクレジットの蓄積状況から判断し、前記所定のストレージ処理に関連する複数のストレージノードでクレジットが蓄積されていた場合、蓄積されたクレジットを消費して前記所定のストレージ処理をバーストにより実行することを特徴とする。
また、代表的な本発明のストレージ管理方法の一つは、複数のストレージノードを有するストレージシステムのストレージ管理方法であって、前記複数のストレージノードの各々が、処理負荷が既定範囲内であることを条件にクレジットを蓄積するステップと、前記複数のストレージノードを管理する管理部が、各ストレージノードのクレジットを管理するステップと、前記管理部が、所定のストレージ処理のバーストの契機を、当該ストレージ処理に関連する複数のストレージノードにおけるクレジットの蓄積状況から判断するステップと、前記管理部が、前記所定のストレージ処理に関連する複数のストレージノードでクレジットが蓄積されていた場合、蓄積されたクレジットを消費して前記既定範囲を超える負荷で処理を行うバーストにより前記所定のストレージ処理を実行するステップとを含むことを特徴とする。
【発明の効果】
【0006】
本発明によれば、複数のストレージノードのリソースを有効利用できる。上記した以外の課題、構成及び効果は以下の実施の形態の説明により明らかにされる。
【図面の簡単な説明】
【0007】
【
図12】実施例2の概要図(FO先ノードをバースト)
【
図13】バーストを含むフェイルオーバー処理のフローチャート
【
図16】クレジットに基づくVOLリバランス処理のフローチャート
【発明を実施するための形態】
【0008】
以下、図面を用いて、本発明の幾つかの実施形態を説明する。なお、図面では、「ボリューム」を「VOL」と記載する。ボリュームはストレージシステムが管理する論理的な記憶空間である。
「NW」はネットワークを示し、「BE」はバックエンドを示し、「FO」はフェイルオーバーを示す。
クラウド環境の仮想マシンをインスタンスと記載する。
「ノード」と記載がある場合、ストレージノードを示す。
【実施例0009】
[第1の実施形態]
第1の実施形態では、常時IOとは異なる、ストレージの非同期処理でバーストを適用するケースについて説明する。
図1は、ストレージシステム構成を示す。
1以上のストレージノードでストレージシステムを構成する。
図1には、ストレージノード301~303でストレージシステム200を構成している。本発明では、ストレージノードはネットワーク帯域の上限やCPU使用率の上限が変動するサーバとする。一例として、クラウド環境の仮想マシンがある。
IOホストからストレージノードのボリュームへIO(データのInput/Output)を行う。ストレージノード間とIOホスト-ストレージノード間はネットワークで接続される。
図1では、IOホスト101がストレージノード301のボリュームへIOを行っている。同様に、IOホスト102がストレージノード302のボリュームへIOを行っている。
【0010】
図2は、ストレージノードとバースト部位を示す。
図2に示したストレージノード301は、通信装置401、通信装置402、CPU(Central Processing Unit)403、メモリ404を有する。
通信装置401は、ネットワーク経由でIOホスト101と通信したり、他のストレージノード(ストレージノード302、ストレージノード303)と通信したりする。通信装置401の通信帯域をNW帯域という。
通信装置402は、バックエンドの記憶デバイスであるディスクと通信する。通信装置402の通信帯域をBE帯域という。
本実施例では、一例として、点線の部位(NW帯域、CPU使用率、BE帯域)がバーストするサーバをストレージノードに適用したケースについて説明する。なお、メモリやディスクなどの他の部位がバーストするサーバにも、本発明は適用可能である。本例では説明簡略化のためCPU数1としているが、複数のCPUがあっても良い。その場合、各CPU毎にバーストして良い。通信装置401、通信装置402もそれぞれ複数あっても良い。例えば、複数の通信装置401の合計使用帯域が、ストレージノードの使用ネットワーク帯域として管理されて良い。
【0011】
図3は、バースト部位におけるベースライン性能とバースト性能の例を示す。
値は一例であり、クラウド環境やインスタンスタイプ毎に異なる。
図3に示したバースト値、ベースライン、最大クレジットについては以下の通りである。
バースト値:ベースラインを超えてバーストできる最大値
ベースライン:使用によりクレジットの消費・蓄積が0となるバランス値。ベースラインを上回ったリソースを使用するとクレジットを消費し、ベースラインを下回ったリソースを使用するとクレジットが蓄積される。クレジットが蓄積されるとベースラインを超えてバースト可能となる。
最大クレジット:蓄積できる最大クレジット
【0012】
クレジットの計算方式や最大クレジットは、クラウド環境やインスタンスタイプ毎に異なる。例えば、本例では、ネットワーク帯域の最大クレジット9000は、バースト値の10Gbpsを使用した場合に、20分使用できる量となっている。バースト値より小さい帯域を使用した場合、バースト(ベースラインを超えた帯域)を使用できる時間は20分より長くなる。
本例では、クレジットの計算方式は、「ベースライン―現在の使用値」を基本とするが、クラウド環境の仕様に合わせた別の式を使用しても良い。この計算方式によると、ベースラインから離れたリソース量を使うほど、クレジットの消費・蓄積量が大きくなる。
【0013】
図4は、ネットワークバーストの例を示す。
図3のネットワーク帯域スペックにおいて、バーストとクレジット消費・蓄積の例を示す。
例えば、ベースライン2.5Gbpsを上回る5Gbpsを使用した場合、クレジットの計算式は、(ベースライン)2.5-5=-2.5であり、1秒あたりに2.5のクレジットを消費する。使用前に9000クレジット蓄積されていた場合、9000/2.5=3600秒=60分でクレジットが0となる。即ち、60分間は5Gbpsを使用できるが、その後はクレジットが0になり、ベースラインを超えてバーストできなくなる。(別の例として、10Gbpsを使用すると1秒あたりの消費クレジットが7.5となり、10Gbpsを使用できるのは20分間となる。)
【0014】
その後、ベースラインを下回る1.25Gbpsを使用した場合、クレジットの計算式は、(ベースライン)2.5-1.25=1.25であり、1秒あたりに1.25のクレジットを蓄積する。例えば、1.25Gbpsの使用で40分経過すると、1.25×40×60=3000クレジットが蓄積される。クレジットが蓄積されたため、再びベースラインを超えてバーストが可能となる。
【0015】
その後、ベースラインを上回る5Gbpsを使用した場合、(ベースライン)2.5-5=-2.5であり、1秒あたりに2.5のクレジットを消費する。3000クレジットが蓄積されているため、3000/2.5=1200秒=20分でクレジットが0となる。即ち、20分間は5Gbpsを使用できるが、その後はクレジットが0になり、ベースラインを超えてバーストできなくなる。
【0016】
図5は、ストレージノードのメモリ情報を示す。
ストレージノード301のメモリ404には、IO制御部501、クラスタ制御部502、バースト時間管理部503、ストレージ非同期処理部504、ストレージモニタ情報505及びバースト管理情報506が展開される。
【0017】
IO制御部501は、IOホスト101からストレージシステム200内のボリュームへのIO制御を行う。
クラスタ制御部502は、クラスタの起動や監視、障害時のフェイルオーバー、ボリュームの管理、ユーザからの管理操作の制御などを行う。
バースト時間管理部503とストレージ非同期処理部504の処理フローチャートは後述する。
バースト管理情報506は後述する。
【0018】
図6は、バースト管理情報を示す。
バースト管理情報506は、管理するバースト部位毎の、クレジットやバースト時間の情報を格納する。
図6には、NWバースト管理情報601、BEバースト管理情報602及びCPUバースト管理情報603を示している。これらは一例であり、他の部位の情報があっても良い。各情報の詳細は後述する。
バースト時間管理部503がこれらの情報を格納する。ストレージ非同期処理部504などのバーストを行う処理部がこれらの情報を参照する。
【0019】
図7は、ネットワークバースト管理情報601を示す。
バースト時間管理部503がネットワークバースト管理情報601を格納する。ストレージ非同期処理部504などのバーストを行う処理部がネットワークバースト管理情報601を参照する。ネットワークバースト管理情報601は、次の情報を有する。
ベースライン:使用によりクレジットの消費・蓄積が0となるバランス値。クラウド環境やインスタンスの仕様により定まる。
現在の使用NW帯域:ストレージノードが使用している現在値
消費・蓄積クレジット:現在の使用NW帯域により、1秒あたりに消費・蓄積したクレジット。クラウド環境の仕様に従って計算する。本例では、「ベースライン-現在の使用NW帯域」。
前回クレジット:前回周期で計算したクレジット
現在クレジット:「前回クレジット+消費・蓄積クレジット」
バースト時間:現在クレジットを使ってバーストできる時間。使う帯域が大きい程クレジット消費が早いため、バーストできる時間は短くなる。例えば、ストレージノード301の例では、5Gbpsで40分バーストでき、10Gbpsで13分バーストできる。
計算方法は次のようになる。5Gbpsでバーストする場合、1秒あたり、5-2.5(ベースライン)=2.5のクレジットを消費する。現在クレジット6000を2.5で割ると2400となり、2400秒の間バーストできる。即ち40分バーストできる。
10Gbpsでバーストする場合、1秒あたり、10-2.5(ベースライン)=7.5のクレジットを消費する。同様に計算するとバースト時間は13分となる。
バースト時間(Cluster):クラスタがバーストできる時間。一例として、各ノードで共通にバーストできる値としてノード間の最小値を格納。
バースト時間に、5Gbpsと10Gbpsでバーストした場合の値を格納しているが、3Gbpsでバーストした場合など、他のケースの値が格納されていても良い。また、マージンとして係数を掛けた値を格納しても良い。
【0020】
図8は、バックエンドバースト管理情報602を示す。
ネットワークバースト管理情報と同様の考え方であり、説明は省略する。
格納される値は、ネットワークバースト管理情報とは異なる。説明簡略化のため、本例では同じ値となっている。
【0021】
図9は、CPUバースト管理情報603を示す。
ネットワークバースト管理情報との差分のみ記載する。
消費・蓄積クレジット:現在のCPU使用率により、1分あたりに消費・蓄積したクレジット。クラウド環境の仕様に従って計算する。本例では、「ベースライン-現在のCPU使用率」とし、分単位の値となっている。
バースト時間:現在クレジットを使ってバーストできる時間。使うCPU使用率が高い程クレジット消費が早いため、バーストできる時間は短くなる。例えば、ストレージノード301の例では、使用率60%で40分バーストでき、使用率80%で20分バーストできる。
計算方法は次のようになる。使用率60%でバーストする場合、1分あたり、60-40(ベースライン)=20のクレジットを消費する。現在クレジット800を20で割ると40となり、40分の間バーストできる。
使用率80%でバーストする場合、1分あたり、80-40(ベースライン)=40のクレジットを消費する。同様に計算するとバースト時間は20分となる。
バースト時間に、60%と80%でバーストした場合の値を格納しているが、50%でバーストした場合など、他のケースの値が格納されていても良い。また、マージンとして係数を掛けた値を格納しても良い。
【0022】
図10は、バースト時間管理処理のフローチャートを示す。
バースト時間管理部503が実施する。
ストレージノードとバースト部位毎にバースト管理情報の更新を行う。またその結果から、クラスタのバースト時間の更新も行う。
具体的には、バースト時間管理部503は、クレジットの消費・蓄積を計算するステップ(S101)、クレジットを更新するステップ(S102)、バースト時間を更新するステップ(S103)を、バースト部位分繰り返す(C)。バースト時間管理部503は、バースト部位分の繰り返し処理(C)を、ストレージノード分繰り返す(B)。さらに、バースト時間管理部503は、ストレージノード分の繰り返し処理(B)を、一定周期で繰り返す(A)。
【0023】
例えば、ストレージノード301の現在の使用ネットワーク帯域が1Gbpsで、前回クレジットが5998.5の場合、下記のフローとなる。
クレジットの消費・蓄積:ベースライン―現在の使用値=2.5-1=1.5
クレジットを更新(前ステップ結果を前回クレジットに加算):5998.5+1.5=6000
6000を現在クレジットに格納する。
バースト時間を更新:現在クレジット6000をバースト時間に換算する。5Gbps
caseは40分。10Gbps caseは13分。(計算式は
図7のバースト時間説明を参照。)
各部位毎にクラスタのバースト時間を更新:処理フローの結果、各ストレージノードで
図7のバースト時間が更新されたとする。この時、ネットワークバースト管理情報に格納するクラスタのバースト時間は下記の通りとなる。
5Gbps caseは、Min(40,40,60)=40分。10Gbps caseはMin(13,13,20)=13分。(計算式は
図7のバースト時間(Cluster)説明を参照。)
これは、クラスタ全体でバーストする場合、5Gbpsを使う場合は40分、10Gbpsを使う場合は13分バーストできることを意味する。
図8バックエンドバースト管理情報と
図9CPUバースト管理情報も同様の方法で更新する。
なお、各ノードとクラスタのバースト時間を更新しているが、ノードの組合せ毎のバースト時間を格納して更新しても良い。(例えば、ストレージノード301とストレージノード302の組合せの場合、バースト時間はN分。)
【0024】
図11は、ストレージ非同期処理のフローチャートを示す。
ストレージ非同期処理部504がこの処理を実施する。
ストレージ非同期処理部504は、ストレージモニタ情報505を取得し(ステップS201)、ネットワーク、バックエンド、CPUの負荷が閾値以下であるか否かを判定する(ステップS202)。
【0025】
負荷が閾値以下であれば(ステップS202;Yes)、処理に関わる複数ノードについて、複数部位のバースト時間を確認する(ステップS203)。バースト時間があれば(ステップS204;Yes)、バースト時間の間、非同期処理を高速化する(ステップS205)。非同期処理が完了すれば(ステップS206;Yes)、処理を終了する。
【0026】
負荷が閾値を超える場合(ステップS202;No)、バースト時間がない場合(ステップS204;No)、またはバースト後非同期処理が完了していない場合(ステップS206;No)、ストレージ非同期処理部504は、一定時間、ベーススピードで非同期処理を継続する(ステップS207)。非同期処理が完了すれば(ステップS208;Yes)、処理を終了する。非同期処理が完了していなければ(ステップS208;No)、ステップS201に戻る。
【0027】
ストレージの非同期処理の一例として、ストレージノードやディスクの障害時にデータの配置変更を行うリビルド処理がある。
本処理フローでは、負荷が閾値以下かつクレジット蓄積によるバースト時間が確保できている場合、非同期処理を高速化するフローとなっている。また、高速化した後はクレジットが消費されるためベーススピードに戻す。この方法により、例えば、ネットワーク帯域の使用は前述の
図4のようなイメージになる。
【0028】
負荷やバースト時間確認は、非同期処理の対象ノード(送信・受信側両方)に対して実施する。例えば、ストレージノード301とストレージノード302に関する処理の場合は、2ノードが確認対象になる。
バースト時間の確認には、バースト管理情報506を利用し、非同期処理でバーストが必要となるリソースについて確認を行う。例えば、非同期処理がリビルドとして、5GbpsまでのNW帯域のバーストと5GbpsまでのBE帯域のバーストが、ストレージノード301とストレージノード302で必要になる場合は次の通りとなる。
【0029】
NWバースト管理情報601によると、5Gbpsを使用した場合、ストレージノード301とストレージノード302ともに、40分バーストが可能である。BEバースト管理情報602によると、5Gbpsを使用した場合、ストレージノード301とストレージノード302ともに、40分バーストが可能である。以上により、バースト時間は40分となる。バースト時間の間、例えば処理スレッドを増やして処理を高速化する。
その後、ベーススピードに戻し、クレジット蓄積を行う。例えば、NW帯域とBE帯域を1.25Gbps使用する場合、40分で3000クレジットが蓄積される(
図4の説明参照。)
このクレジットは、5Gbpsで20分バーストできる値である(
図4の説明参照。)
従って、40分ベーススピードで非同期処理を継続した後、20分非同期処理を高速化する、という動きになる。