(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024162814
(43)【公開日】2024-11-21
(54)【発明の名称】計算機システム及びストレージ制御方法
(51)【国際特許分類】
G06F 11/20 20060101AFI20241114BHJP
G06F 3/06 20060101ALI20241114BHJP
G06F 11/07 20060101ALI20241114BHJP
G06F 13/10 20060101ALI20241114BHJP
【FI】
G06F11/20 692
G06F3/06 306Z
G06F3/06 304B
G06F11/07 140M
G06F13/10 340B
G06F11/07 193
G06F11/20 666
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023078726
(22)【出願日】2023-05-11
(71)【出願人】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】菊地 隆文
(72)【発明者】
【氏名】佐藤 功人
(72)【発明者】
【氏名】山本 貴大
【テーマコード(参考)】
5B034
5B042
【Fターム(参考)】
5B034CC04
5B042GA12
5B042GA34
5B042JJ29
5B042KK04
5B042MA08
5B042MC09
5B042MC25
5B042MC40
(57)【要約】 (修正有)
【課題】複数のデータセンタに跨って構築されたストレージシステムに所定の通信障害が発生した際にI/O処理に伴う課金の発生及びレスポンスの増加を抑制する障害制御を実行する。
【解決手段】計算機システム1では、異なるデータセンタ10A、10Bに配置されたストレージコントローラ131A、131Bが、データセンタ間の通信経路を介してペアを構成する。ペアを構成したストレージコントローラ間の通信経路における通信障害の発生時に、ストレージクラスタコントローラ140が有するタイブレーカ142が、I/Oモニタ132A、132Bが生成したストレージコントローラの通信特性の統計情報に基づいて、ペアを構成するストレージコントローラの一方から他方にデータ入出力を引き継ぎ、一方のストレージコントローラを有するストレージノード130A、130Bを停止する障害制御を決定し、ストレージクラスタコントローラが障害制御を実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のデータセンタに配置された複数の計算機をネットワークで結合して構成され、
アプリケーションを実行するコンピュートノードと、
前記コンピュートノードからのI/Oを処理して記憶装置に入出力するストレージコントローラを有するストレージノードと、
前記ストレージノードを制御するストレージクラスタコントローラと、
を備えた計算機システムであって、
異なる前記データセンタに配置されたストレージコントローラがペアを構成し、前記ペアの一方のストレージコントローラの処理を他方のストレージコントローラが引き継ぐために、前記データセンタ間の通信経路を介して通信しており、
前記アプリケーションと前記ストレージコントローラとの間の通信特性を収集して所定の統計処理を実施して統計情報を生成するI/Oモニタを有し、
前記ペアを構成したストレージコントローラ間の通信経路における通信障害の発生時に、
前記ストレージクラスタコントローラが有するタイブレーカが、前記I/Oモニタが生成した前記ストレージコントローラの前記通信特性の統計情報に基づいて、前記ペアを構成するストレージコントローラの一方から他方のストレージコントローラにデータ入出力を引き継ぎ、前記一方のストレージコントローラを有するストレージノードを停止する障害制御を決定し、
前記ストレージクラスタコントローラは、前記タイブレーカが決定した障害制御を実行し、
前記停止させたストレージノードのストレージコントローラへI/Oを行っていたアプリケーションは、その処理を引き継いだストレージコントローラへI/Oを送る
ことを特徴とする計算機システム。
【請求項2】
前記コンピュートノードと、前記ストレージノードとは、それぞれ異なる通信経路で他のデータセンタに接続されており、
前記コンピュートノードのアプリケーションは、他のデータセンタのストレージノードのストレージコントローラにI/O要求を送ることが可能であり、
複数のアプリケーションと、複数のペアのストレージコントローラを有しており、
前記アプリケーション及びそのI/Oを処理するストレージコントローラは、前記データセンタ間での通信量が少なくなるように各データセンタに配置されており、
前記タイブレーカは、ストレージノードを停止させた場合に、前記データセンタ間での通信量の増加が少なくなるように、前記停止させるストレージノードを決定する
ことを特徴とする請求項1に記載の計算機システム。
【請求項3】
異なる前記データセンタに配置されたストレージコントローラ同士がデータセンタ間の通信経路を介してコントローラペアを構成するとき、
前記コントローラペアを構成する2つのストレージコントローラは、一方がアクティブ状態でボリュームを管理し、他方がスタンバイ状態で待機するよう構成され、
前記障害制御の実行によってアクティブ状態の第1のストレージコントローラが停止された場合には、前記第1のストレージコントローラとコントローラペアを組むスタンバイ状態の第2のストレージコントローラが、アクティブ状態となって前記第1のストレージコントローラによるボリュームの管理を引き継ぐ
ことを特徴とする請求項2に記載の計算機システム。
【請求項4】
異なる前記データセンタに配置されたストレージノードが有するストレージコントローラ同士で前記コントローラペアが構成され、前記コントローラペアにおけるデータセンタ間の通信経路において通信障害が発生したとき、
前記タイブレーカは、当該コントローラペアを構成する何れか一方のストレージコントローラを有するストレージノードにおいてすべてのストレージコントローラを停止する形態で、停止後のデータセンタ間の通信量が最小化するように前記障害制御を決定する
ことを特徴とする請求項3に記載の計算機システム。
【請求項5】
異なる前記データセンタに配置されたストレージノードが有するストレージコントローラ同士で前記コントローラペアが構成され、前記コントローラペアが構成された2組以上のストレージノードの組において、データセンタ間の通信経路に通信障害が発生したとき、
前記タイブレーカは、前記コントローラペアが構成されたストレージノードの組ごとに独立して前記障害制御を決定する
ことを特徴とする請求項3に記載の計算機システム。
【請求項6】
前記ストレージコントローラは、前記アプリケーションに、I/Oを行うためにボリュームを提供し、
異なる前記データセンタに配置されたボリューム同士がデータセンタ間の通信経路を介してボリュームペアを構成するとき、
前記ボリュームペアを構成する2つのボリュームは、ともにアクティブ状態で動作してデータを同期するよう構成され、
前記障害制御の実行によって前記ボリュームペアを構成する一方の第1のボリュームが停止された場合には、前記第1のボリュームとボリュームペアを組む第2のボリュームがI/Oの受付を継続する
ことを特徴とする請求項2に記載の計算機システム。
【請求項7】
異なる前記データセンタに配置されたストレージノードが有するボリューム同士で前記ボリュームペアが構成され、2組以上の前記ボリュームペアにおけるデータセンタ間の通信経路で通信障害が発生したとき、
前記タイブレーカは、前記ボリュームペアごとに独立して前記障害制御を決定する
ことを特徴とする請求項6に記載の計算機システム。
【請求項8】
前記ストレージクラスタコントローラは、前記障害制御の実行による前記ストレージコントローラまたは前記ストレージコントローラが管理するボリュームの停止時に、ストレージシステムの構成情報及び前記アプリケーションの配置情報に基づいて、変更後のデータセンタ間の通信経路における通信量を最小化するように、前記複数のデータセンタにおける前記アプリケーションの配置の変更を提案するマイグレーションプロポーザをさらに有する
ことを特徴とする請求項1から請求項7の何れか1項に記載の計算機システム。
【請求項9】
前記マイグレーションプロポーザは、前記アプリケーションの配置の変更の提案を、前記アプリケーションの配置及び動作を制御する機構に出力する
ことを特徴とする請求項8に記載の計算機システム。
【請求項10】
複数のデータセンタに配置された複数の計算機をネットワークで結合して構成される計算機システムによるストレージ制御方法であって、
前記計算機システムは、
アプリケーションを実行するコンピュートノードと、
前記コンピュートノードからのI/Oを処理して記憶装置に入出力するストレージコントローラを有するストレージノードと、
前記ストレージノードを制御するストレージクラスタコントローラと、
を有し、
異なる前記データセンタに配置されたストレージコントローラがペアを構成し、前記ペアの一方のストレージコントローラの処理を他方のストレージコントローラが引き継ぐために、前記データセンタ間の通信経路を介して通信しており、
前記アプリケーションと前記ストレージコントローラとの間の通信特性を収集して所定の統計処理を実施して統計情報を生成するI/Oモニタを有し、
前記ペアを構成したストレージコントローラ間の通信経路における通信障害の発生時に、
前記ストレージクラスタコントローラが有するタイブレーカが、前記I/Oモニタが生成した前記ストレージコントローラの前記通信特性の統計情報に基づいて、前記ペアを構成するストレージコントローラの一方から他方のストレージコントローラにデータ入出力を引継ぎ、前記一方のストレージコントローラを有するストレージノードを停止する障害制御を決定し、
前記ストレージクラスタコントローラが、前記タイブレーカが決定した障害制御を実行し、
前記停止させたストレージノードのストレージコントローラへI/Oを行っていたアプリケーションは、その処理を引き継いだストレージコントローラへI/Oを送る
ことを特徴とするストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計算機システム及びストレージ制御方法に関し、複数のデータセンタに跨って構築されたストレージシステムを含む計算機システム、及びそのストレージ制御方法に適用して好適なものである。
【背景技術】
【0002】
従来、クラウドコンピューティング環境では、データセンタ単位の障害が発生してもITサービスを継続できるように、複数のデータセンタに跨ってシステムを構築している。そのため、クラウド上で動作するストレージシステムでは、複数のデータセンタに跨ってストレージシステムを構築し、データセンタ障害への耐性を備えた構成をとっている。
【0003】
ここで、複数のストレージを分散させて構築されたストレージシステムにおいては、ストレージシステムを構成するストレージノードやストレージクラスタの間で通信障害が発生した場合に、その障害を検知した主体が、通信障害が発生したのか、通信相手に障害が発生したのかを区別することができず、適切な障害制御(閉塞やフェイルオーバ等)を実施することができないおそれがあった。このような問題の解決方法として、第三者である仲介者を通じて、障害区分を判別して制御を行うことができる。
【0004】
例えば、ストレージノード間に通信障害が発生した場合には、特許文献1に記載されているように、仲介者を用いてストレージノード間のステート情報を共有することで、障害制御を実施するか否かを判断することができる。
【0005】
また例えば、ストレージクラスタ間に通信障害が発生した場合には、特許文献2または特許文献3に記載されているように、仲介者を通して制御命令を相手クラスタに伝達することで、障害制御を実施することができる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特表2018-536229号公報
【特許文献2】特開2022-122993号公報
【特許文献3】国際公開第2015/198449号
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、オンプレミスなストレージシステム内の通信障害に対しては、上述したように特許文献1~3に開示された従来技術を利用して、通信障害が発生した際にストレージシステムを制御する対策が存在するが、複数のデータセンタに跨って複数の計算機をネットワークで結合したストレージシステム(クラウド環境で動作するストレージシステム)の場合は、従来技術では解決できない以下の課題が存在している。
【0008】
クラウド環境におけるデータセンタ間通信は、通信量に応じて課金が発生し、通信のレイテンシがデータセンタ内通信に比べて大きい。そのため一般的には、ストレージシステムが提供するボリュームと、それを利用するアプリケーションとは、同じデータセンタ内で通信できるように構成する。このように構成されたストレージシステム内において通信障害が発生した場合、障害制御によってストレージシステムの一部を停止することにより、ボリュームがデータセンタを跨いで移動することがある。この結果、障害制御後にボリュームとアプリケーションとがデータセンタを跨ぐ構成となった場合には、I/Oのたびにデータセンタ間通信が発生するようになることから、課金が発生したりレスポンスの増加が発生したりする、という課題があった。
【0009】
本発明は以上の点を考慮してなされたもので、複数のデータセンタに跨って構築されたストレージシステムにおいて所定の通信障害が発生した際に、I/O処理に伴う課金の発生及びレスポンスの増加を抑制する障害制御を実行可能な計算機システム及びストレージ制御方法を提案しようとするものである。
【課題を解決するための手段】
【0010】
かかる課題を解決するため本発明においては、複数のデータセンタに配置された複数の計算機をネットワークで結合して構成され、アプリケーションを実行するコンピュートノードと、前記コンピュートノードからのI/Oを処理して記憶装置に入出力するストレージコントローラを有するストレージノードと、前記ストレージノードを制御するストレージクラスタコントローラと、を備えた計算機システムであって、異なる前記データセンタに配置されたストレージコントローラがペアを構成し、前記ペアの一方のストレージコントローラの処理を他方のストレージコントローラが引き継ぐために、前記データセンタ間の通信経路を介して通信しており、前記アプリケーションと前記ストレージコントローラとの間の前記通信特性を収集して所定の統計処理を実施して統計情報を生成するI/Oモニタを有し、前記ペアを構成したストレージコントローラ間の通信経路における通信障害の発生時に、前記ストレージクラスタコントローラが有するタイブレーカが、前記I/Oモニタが生成した前記ストレージコントローラの前記通信特性の統計情報に基づいて、前記ペアを構成するストレージコントローラの一方から他方のストレージコントローラにデータ入出力を引き継ぎ、前記一方のストレージコントローラを有するストレージノードを停止する障害制御を決定し、前記ストレージクラスタコントローラは、前記タイブレーカが決定した障害制御を実行し、前記停止させたストレージノードのストレージコントローラへI/Oを行っていたアプリケーションは、その処理を引き継いだストレージコントローラへI/Oを送ることを特徴とする計算機システムが提供される。
【0011】
また、かかる課題を解決するため本発明においては、複数のデータセンタに配置された複数の計算機をネットワークで結合して構成される計算機システムによるストレージ制御方法であって、前記計算機システムは、アプリケーションを実行するコンピュートノードと、前記コンピュートノードからのI/Oを処理して記憶装置に入出力するストレージコントローラを有するストレージノードと、前記ストレージノードを制御するストレージクラスタコントローラと、を有し、異なる前記データセンタに配置されたストレージコントローラがペアを構成し、前記ペアの一方のストレージコントローラの処理を他方のストレージコントローラが引き継ぐために、前記データセンタ間の通信経路を介して通信しており、前記アプリケーションと前記ストレージコントローラとの間の前記通信特性を収集して所定の統計処理を実施して統計情報を生成するI/Oモニタを有し、前記ペアを構成したストレージコントローラ間の通信経路における通信障害の発生時に、前記ストレージクラスタコントローラが有するタイブレーカが、前記I/Oモニタが生成した前記ストレージコントローラの前記通信特性の統計情報に基づいて、前記ペアを構成するストレージコントローラの一方から他方のストレージコントローラにデータ入出力を引継ぎ、前記一方のストレージコントローラを有するストレージノードを停止する障害制御を決定し、前記ストレージクラスタコントローラが、前記タイブレーカが決定した障害制御を実行し、前記停止させたストレージノードのストレージコントローラへI/Oを行っていたアプリケーションは、その処理を引き継いだストレージコントローラへI/Oを送ることを特徴とするストレージ制御方法が提供される。
【発明の効果】
【0012】
本発明によれば、複数のデータセンタに跨って構築されたストレージシステム(例えばクラウド環境で動作するストレージシステム)において所定の通信障害が発生した際に、I/O処理に伴う課金の発生及びレスポンスの増加を抑制する障害制御を実行することができる。
【図面の簡単な説明】
【0013】
【
図1】本発明の第1の実施形態に係る計算機システム1の概念図である。
【
図3】ストレージシステム100のハードウェア構成例を示す図である。
【
図4】ストレージシステム100における通信障害を説明するための図である。
【
図5】ストレージシステム100におけるI/Oのログ情報の収集を説明するための概念図である。
【
図6】第1の実施形態における通信障害制御の概念図である。
【
図7】レイアウトモジュール141の構成例を示す図である。
【
図8】ストレージコントローラレイアウトテーブル212の一例を示す図である。
【
図9】コントローラペアレイアウトテーブル213の一例を示す図である。
【
図10】コンピュートノードレイアウトテーブル214の一例を示す図である。
【
図11】コンピュートノード情報の登録画面の一例を示す図である。
【
図12】I/Oモニタ132の構成例を示す図である。
【
図13】I/O情報記録255の一例を示す図である。
【
図14】第1の実施形態における通信特性記録処理の処理手順例を示すフローチャートである。
【
図15】タイブレーカ142の構成例を示す図である。
【
図16】第1の実施形態における通信障害に対する制御方法決定処理の処理手順例を示すフローチャートである。
【
図17】第1の実施形態の変形例における計算機システムの概念図である。
【
図18】
図17に示したストレージクラスタ290における通信障害を説明するための図である。
【
図19】本発明の第2の実施形態に係る計算機システム2の概念図である。
【
図20】ストレージシステム300におけるI/Oのログ情報の収集を説明するための概念図である。
【
図21】第2の実施形態における通信障害制御の概念図である。
【
図22】レイアウトモジュール341の構成例を示す図である。
【
図23】ボリュームレイアウトテーブル412の一例を示す図である。
【
図24】ボリュームペアレイアウトテーブル413の一例を示す図である。
【
図25】I/Oモニタ322及びI/Oステートテーブル333の構成例を示す図である。
【
図26】I/O情報記録433の一例を示す図である。
【
図27】第2の実施形態における通信特性記録処理の処理手順例を示すフローチャートである。
【
図28】タイブレーカ342の構成例を示す図である。
【
図29】ボリュームステートテーブル332の一例を示す図である。
【
図30】第2の実施形態における通信障害に対する制御方法決定処理の処理手順例を示すフローチャートである。
【
図31】本発明の第3の実施形態に係る計算機システム3の概念図である。
【
図32】マイグレーションプロポーザ544の構成例を示す図である。
【
図33】本発明の第4の実施形態に係る計算機システム4の概念図である。
【
図34】マイグレーションプロポーザ745の構成例を示す図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して、本発明の実施形態を詳述する。
【0015】
なお、以下の記載及び図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明が実施形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加や変更等を行うことができる。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は複数でも単数でも構わない。
【0016】
以下の説明では、「テーブル」、「表」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
【0017】
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、又は、ホストであってもよい。プログラムを実行して行う処理の主体(例えばプロセッサ)は、処理の一部又は全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化及び復号化、又は圧縮及び伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
【0018】
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な非一時的な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と非一時的な記憶資源とを含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0019】
また、以下の説明では、同種の要素を区別せずに説明する場合には、添字や枝番を含む参照符号のうちの共通部分(添字や枝番を除く部分)を使用し、同種の要素を区別して説明する場合には、添字や枝番を含む参照符号を使用することがある。例えば、ストレージノードを特に区別せずに説明する場合には「ストレージノード130」と記載するのに対して、個々のストレージノード130を区別して説明する場合には「ストレージノード130A」、「ストレージノード130B」のように添字を付けて記載することがある。また、対象とする要素に割り振られた識別子(ID)等を使用して、個々の要素を記載することもある。具体的には例えば、ストレージノード130Aを「ストレージノード#1」、ストレージノード130Bを「ストレージノード#2」と記載することがある。
【0020】
(1)第1の実施形態
図1は、本発明の第1の実施形態に係る計算機システム1の概念図である。
図1に示した計算機システム1は、複数の計算機(後述するサーバ)をネットワークで結合したストレージシステム100(ストレージクラスタ120)と、ストレージシステム100を利用する複数の計算機(コンピュートノード110)とから構成される。ストレージシステム100(ストレージクラスタ120)の構成は、
図2~
図4の説明後に改めて詳述する。
【0021】
図2は、ストレージクラスタ120の概念図である。
図2に示すように、ストレージクラスタ120は、複数のストレージノード130とストレージクラスタコントローラ140とがネットワークスイッチ160で接続されて構成される。ストレージクラスタコントローラ140は、ストレージノード130の内部で実行されてもよい。
図2に示したストレージクラスタの構成は、後述する他の実施形態でも共通する。なお、
図1に示したストレージシステム100では、全体として1つのストレージクラスタ120が構成されていることから、ストレージクラスタ120をストレージシステム100と読み替えてもよく、その逆でもよい。
【0022】
図3は、ストレージシステム100のハードウェア構成例を示す図である。
図1にも示したように、ストレージシステム100は、複数のデータセンタ10に跨って構成され、各データセンタ10では、複数のサーバ20がデータセンタ内ネットワーク(Intra-DC Network)30で接続される。そして、データセンタ10間(例えばデータセンタ#1とデータセンタ#2の間)が、データセンタ間ネットワーク(Inter-DC Network)40で接続されることにより、複数のデータセンタ10が互いに通信可能に接続される。
【0023】
サーバ20は、プロセッサであるCPU21と、CPU21が実行するプログラム及びデータを記憶する主記憶装置であるメモリ22と、サーバ20と外部との間の通信機能を有するネットワークインタフェース23と、プログラム及びデータを記憶する補助記憶装置であるドライブ24と、を有して構成される。なお、CPU21は、CPU(Central Processing Unit)以外のプロセッサであってもよい。1つのストレージノード130は1つのサーバ20に相当する。
【0024】
ストレージクラスタ120を構成するストレージノード130やストレージクラスタコントローラ140は、サーバ20上で実行される。ストレージクラスタ120は、特定のデータセンタ10内に構成されてもよいし、あるいは複数のデータセンタ10を跨いで構成されてもよい。具体的には例えば、ストレージクラスタ120は、データセンタ10A内で構成される場合もあれば、データセンタ10A,10B等の複数のデータセンタ10から構成される場合もある。
図3を用いて説明したストレージシステムのハードウェア構成は、後述する他の実施形態でも共通する。
【0025】
図4は、ストレージシステム100における通信障害を説明するための図である。
図4に示すように、クラウド環境を提供するデータセンタ10A,10Bは、ストレージラック等の複数のラック50から構成され、複数のネットワーク経路で接続される。ストレージクラスタ120に含まれる複数のストレージノード130は、異なるラック50に分散して配置され、それぞれのストレージノード130間の接続は異なる経路をとる。
【0026】
ストレージシステム100は、上記のような通信経路を構成することで、ストレージノード130間を接続する通信経路の1つに障害(
図4に示した×印)が発生した場合には、データセンタ#1上のストレージノード130とデータセンタ#2上のストレージノード130の一部のみが通信障害となり(すなわち、当該障害が発生した通信経路の通信だけが切断され)、それ以外の通信経路では通信が継続可能となる。
図4を用いて説明したストレージシステムの通信経路の構成は、後述する他の実施形態でも共通する。
【0027】
図1を参照しながら、複数の計算機(サーバ20)をネットワークで結合して構成されるストレージシステム100(ストレージクラスタ120)の構成について、詳しく説明する。
【0028】
図1に示すように、ストレージクラスタ120は、ストレージノード130A、ストレージノード130B、及びストレージクラスタコントローラ140を備える。
【0029】
ストレージノード130A(ストレージノード#1)は、ストレージコントローラ131A,131C、及びI/Oモニタ132Aを有し、データセンタ10Aに配置される。ストレージノード130B(ストレージノード#2)は、ストレージコントローラ131B,131D、及びI/Oモニタ132Bを有し、データセンタ10Bに配置される。
【0030】
ストレージクラスタコントローラ140は、ストレージクラスタ120を全体的に制御するコントローラであって、レイアウトモジュール141、タイブレーカ142、及びネットワークモニタ343を有して構成される。ストレージクラスタコントローラ140は、例えば、データセンタ10A,10Bとは異なるデータセンタ10上で実行され、データセンタ間ネットワーク40によって、各データセンタ10に配置されたストレージノード130A,130Bに接続される。なお、前述したように、ストレージクラスタコントローラ140は、データセンタ10Aまたはデータセンタ10B上で実行される構成であってもよい。その場合、分散アルゴリズムを用いたアプリケーションが、ストレージクラスタ120の構成情報や制御命令を、データセンタ10A,10B及び3つ目のデータセンタ10との間で共有していればよい。
【0031】
ストレージコントローラ131は、データセンタ#1とデータセンタ#2とを跨ぐように、ストレージコントローラ131同士でペア(コントローラペア134)を組み、ボリューム133を管理する。
【0032】
例えば、コントローラペア134A(コントローラペア#1)は、ストレージコントローラ131A(ストレージコントローラ#1)とストレージコントローラ131B(ストレージコントローラ#2)から構成され、アクティブ-スタンバイ構成をとる。通常時、ストレージコントローラ#1がアクティブ状態で、ボリューム133A,133B(ボリューム#1,#2)を管理する。ストレージコントローラ#2は、通常時はスタンバイ状態で待機しており、ペア相手のストレージコントローラ#1が停止した場合に、アクティブ状態となって、ボリューム#1,#2の管理を引き継ぐ。同様に、コントローラペア134B(コントローラペア#2)を構成するストレージコントローラ131C(ストレージコントローラ#3)とストレージコントローラ131D(ストレージコントローラ#4)も、アクティブ-スタンバイ構成をとる。通常時、ストレージコントローラ#4がアクティブ状態で、ボリューム133C(ボリューム#3)を管理する。ストレージコントローラ#3は、通常時はスタンバイ状態で待機しており、ペア相手のストレージコントローラ#4が停止した場合に、アクティブ状態となって、ボリューム#3の管理を引き継ぐ。
【0033】
コンピュートノード110A(コンピュートノード#1)は、ストレージシステム100を利用するアプリケーションであり、データセンタ10A上で動作する。
図1に示すように、コンピュートノード110Aとストレージシステム100は、データセンタ内パス151A及びデータセンタ間パス152Aで接続されており、これらのパスを経由して、コンピュートノード110Aからボリューム133(133A,133B,133C)へのアクセスが実施可能となっている。
【0034】
コンピュートノード110B(コンピュートノード#2)は、ストレージシステム100を利用するアプリケーションであり、データセンタ10B上で動作する。
図1に示すように、コンピュートノード110Bとストレージシステム100は、データセンタ内パス151B及びデータセンタ間パス152Bで接続されており、これらのパスを経由して、コンピュートノード110Bからボリューム133(133A,133B,133C)へのアクセスが実施可能となっている。
【0035】
データセンタ内パス151は、同一のデータセンタ10内における通信経路であり、コンピュートノード110からのボリューム133へのアクセスが、データセンタ内パス151だけを経由するデータセンタ内通信である場合、クラウド環境における課金は発生しない。
【0036】
データセンタ間パス152は、異なるデータセンタ10間の通信経路であり、コンピュートノード110からのボリューム133へのアクセスが、データセンタ間パス152を経由するデータセンタ間通信である場合、例えば通信量に応じて、クラウド環境における課金が発生する。
【0037】
図5は、ストレージシステム100におけるI/Oのログ情報の収集を説明するための概念図である。
【0038】
図5に示したように、データセンタ#1に配置されたストレージコントローラ#1は、コンピュートノード110A,110Bから自身が管理するボリューム133(ボリューム#1またはボリューム#2)に対してI/Oが来た場合に、当該I/Oのログ情報をI/Oモニタ#1に送る。そしてI/Oモニタ#1は、受け取ったI/Oのログ情報とストレージクラスタコントローラ140のレイアウトモジュール141の情報とを用いて、当該I/Oがデータセンタ内通信であるかデータセンタ間通信であるかを判定した上で、I/Oのログ情報を記録する。
【0039】
同様に、データセンタ#2に配置されたストレージコントローラ#2は、コンピュートノード110A,110Bから自身が管理するボリューム133(ボリューム#3)に対してI/Oが来た場合に、当該I/Oのログ情報をI/Oモニタ#2に送る。そしてI/Oモニタ#2は、受け取ったI/Oのログ情報とストレージクラスタコントローラ140のレイアウトモジュール141の情報とを用いて、当該I/Oがデータセンタ内通信であるかデータセンタ間通信であるかを判定した上で、I/Oのログ情報を記録する。
【0040】
上記のように構成することにより、各ストレージノード130では、ストレージコントローラ131と連携して、I/Oモニタ132が、ボリューム133に対するI/Oのログ情報を蓄積して保持することができる(I/O統計情報)。
【0041】
図6は、第1の実施形態における通信障害制御の概念図である。通信障害制御は、通信障害の発生時に実施される制御を意味し、以後、障害制御とも称する。
図6に示したストレージクラスタ120の状態は、ストレージノード#1とストレージノード#2との通信経路に障害が発生したことにより、コントローラペア#1とコントローラペア#2が切断された状態である。このようにコントローラペア間が通信不可になった場合、第1の実施形態に係るストレージシステム100は、ストレージノード#1あるいはストレージノード#2に属するストレージコントローラ131を全て停止し、ストレージノード#1あるいはストレージノード#2を停止した状態とする。
【0042】
より具体的に、通信障害発生時の制御を説明する。上記のような通信障害が発生したとき、まず、ストレージクラスタコントローラ140上で動作するネットワークモニタ143が、コントローラペア#1及びコントローラペア#2が通信不可になったことを検知し、タイブレーカ142に、関係するストレージコントローラ131の停止を要求する。
【0043】
次に、タイブレーカ142は、レイアウトモジュール141からストレージシステム100の構成情報を取得し、さらにI/Oモニタ#1,#2からストレージコントローラ#1,#4(切断されたコントローラペア134におけるアクティブ状態のストレージコントローラ131)のI/O統計情報を取得する。
【0044】
そしてタイブレーカ142は、取得したこれらの情報に基づいて、ストレージノード#1,#2を停止した後のデータセンタ間通信量(スループット)が最小となるように、ストレージコントローラ131の停止方法を決定し、決定した停止方法に沿った制御をストレージクラスタコントローラ140に依頼する。例えば
図6の場合、タイブレーカ142は、ストレージノード#2を停止するとデータセンタ間通信量(スループット)が最小になると判断し、その判断結果に従って、ストレージノード#2が有するストレージコントローラ#2,#4の停止を、ストレージクラスタコントローラ140に依頼する。
【0045】
そしてストレージクラスタコントローラ140は、タイブレーカ142からの依頼に従って、ストレージコントローラ131を停止する制御を実施し、通信不可となったコントローラペアの一方が属するストレージノード130(本例ではストレージノード#2)を停止する。この結果、
図6に示すように、コントローラペア#1においては、スタンバイ状態にあったストレージコントローラ#2が停止し、ストレージコントローラ#1はアクティブ状態で動作(ボリューム#1,#2の管理)を継続する。また、コントローラペア#2においては、アクティブ状態にあったストレージコントローラ#4が停止し、ストレージコントローラ#3がスタンバイ状態からアクティブ状態となって、ボリューム#3の管理を引き継ぐ。
【0046】
上述した通信障害制御の結果、ストレージシステム100に対するコンピュートノード#1のパスはデータセンタ内パス151Aとなり、ストレージシステム100に対するコンピュートノード#2のパスはデータセンタ間パス152Bとなる。このとき、I/O処理に伴う2つのパスの通信量を比較すると、データセンタ内パス151Aの通信量の方が、データセンタ間パス152の通信量よりも大きくなり、データセンタ間パス152を経由するデータセンタ間通信で発生する課金が最小化される。
【0047】
図7は、レイアウトモジュール141の構成例を示す図である。
図7に示すように、レイアウトモジュール141は、レイアウト更新器211、ストレージコントローラレイアウトテーブル212、コントローラペアレイアウトテーブル213、及びコンピュートノードレイアウトテーブル214を有して構成される。
【0048】
ストレージコントローラレイアウトテーブル212は、ストレージコントローラ131の配置情報を管理するデータであって、ストレージクラスタ120の構成情報を保持している構成ファイル220から、ストレージコントローラ131の配置情報を入力として受け取り、これを保持する。ストレージコントローラレイアウトテーブル212が保持しているストレージコントローラ131の配置情報が更新されると、レイアウトモジュール141は、タイブレーカ142及びI/Oモニタ132に対して、更新された情報を送る。なお、構成ファイル220の記憶場所は、例えばストレージクラスタコントローラ140内であるが、特に限定されない。
【0049】
図8は、ストレージコントローラレイアウトテーブル212の一例を示す図である。
図8の場合、ストレージコントローラレイアウトテーブル212は、個々のデータセンタ10に割り振られた識別子(データセンタID)を示すデータセンタID2121と、個々のストレージノード130に割り振られた識別子(ストレージノードID)を示すストレージノードID2122と、個々のストレージコントローラ131に割り振られた識別子(ストレージコントローラID)を示すストレージコントローラID2123と、から構成される。これらの情報は、構成ファイル220から取得することでき、ストレージコントローラ131が所属しているストレージノード130及びデータセンタ10を知ることができる。
【0050】
コントローラペアレイアウトテーブル213は、コントローラペア134に関する情報を管理するデータであって、ストレージクラスタ120の構成情報を保持している構成ファイル220から、コントローラペア134に関する情報を入力として受け取り、これを保持する。コントローラペアレイアウトテーブル213が保持しているコントローラペア134の情報が更新されると、レイアウトモジュール141は、タイブレーカ142に対して、更新された情報を送る。
【0051】
図9は、コントローラペアレイアウトテーブル213の一例を示す図である。
図9の場合、コントローラペアレイアウトテーブル213は、個々のコントローラペア134に割り振られた識別子(コントローラペアID)を示すコントローラペアID2131と、コントローラペア134においてアクティブ状態であるストレージコントローラ131のストレージコントローラIDを示すアクティブストレージコントローラID2132と、コントローラペア134においてスタンバイ状態であるストレージコントローラ131のストレージコントローラIDを示すスタンバイストレージコントローラID2133と、から構成される。これらの情報は、構成ファイル220から取得することができ、コントローラペア134を構成するストレージコントローラ131とその状態(アクティブ状態あるいはスタンバイ状態)を知ることができる。
【0052】
コンピュートノードレイアウトテーブル214は、コンピュートノード110の配置情報を管理するデータであって、レイアウト更新器211から、コンピュートノード110の配置情報を入力として受け取り、これを保持する。コンピュートノードレイアウトテーブル214が保持しているコンピュートノード110の配置情報が更新されると、レイアウトモジュール141は、I/Oモニタ132に対して、更新された情報を送る。
【0053】
レイアウト更新器211は、コンピュートノードレイアウトテーブル214が保持するコンピュートノード110の配置情報を更新する機能を有する。レイアウト更新器211は、ソフトウェアでもハードウェアでもよい。レイアウト更新器211は、ユーザによる入力操作が可能なユーザインタフェース230から、コンピュートノードID(コンピュートノード110の識別子)とインスタンスIDの入力を受け取り、データセンタ基盤240にコンピュートノード110の配置情報(コンピュートノード110が所属するデータセンタ10の情報)を問い合わせ、これらの処理結果を、コンピュートノードレイアウトテーブル214に送る。なお、レイアウト更新器211がデータセンタ基盤240に問い合わせて得た情報が、ユーザインタフェース230からユーザ側に提供されるように構成されてもよい。後述する
図11には、ユーザインタフェース230によってユーザに提供される、コンピュートノード情報の登録画面の一例が示される。
【0054】
なお、インスタンスIDとは、データセンタ基盤240におけるサーバ管理情報を指し、コンピュートノード110等を実行するサーバや、当該サーバ上で実行される仮想マシンに、インスタンスIDが付されている。また、データセンタ基盤240は、データセンタ10が提供するクラウド上の機能である。
【0055】
図10は、コンピュートノードレイアウトテーブル214の一例を示す図である。
図10の場合、コンピュートノードレイアウトテーブル214は、データセンタIDを示すデータセンタID2141と、個別のコンピュートノード110に割り振られた識別子(コンピュートノードID)を示すコンピュートノードID2142と、から構成される。これらの情報は、前述したようにユーザインタフェース230及びデータセンタ基盤240からレイアウト更新器211を介して取得することができ、コンピュートノード110が所属しているデータセンタ10を知ることができる。
【0056】
図11は、コンピュートノード情報の登録画面の一例を示す図である。
図11に示した登録画面280は、ユーザインタフェース230によってユーザに提供される情報入力用の画面であって、ストレージクラスタ120にネットワークを経由して接続されたディスプレイ等に表示される。登録画面280においてユーザによる所定の操作が行われることによって、コンピュートノード110に関する情報が追加入力されて、レイアウトモジュール141のコンピュートノードレイアウトテーブル214が保持する情報が更新される。
【0057】
図11に示した登録画面280は、コンピュートノードIDを入力する入力欄281と、インスタンスIDを入力する入力欄282と、コンピュートノード110が所属するデータセンタ10のデータセンタIDを検索するための検索ボタン283と、検索ボタン283の操作を経てデータセンタIDが表示される出力欄284と、対象行の入出力内容を削除するための削除ボタン285と、登録画面280に表示された入出力内容に基づくコンピュートノード110の配置情報を、コンピュートノードレイアウトテーブル214に適用(登録)するための適用ボタン286と、を有して構成される。
【0058】
登録画面280では、ユーザが、入力欄281,282にコンピュートノードID及びインスタンスIDを入力した後、検索ボタン283を押下すると、レイアウト更新器211が、インスタンスIDを利用してデータセンタ基盤240に問い合わせることにより、コンピュートノード110の配置情報(データセンタID)が得られて、出力欄284に表示される。そして、ユーザが適用ボタン286を押下すると、レイアウト更新器211が、登録画面280に表示された入出力内容(コンピュートノードIDとデータセンタID)を合わせて、コンピュートノードレイアウトテーブル214に送信し、情報が適用(登録)される。
【0059】
図12は、I/Oモニタ132の構成例を示す図である。
図12に示すように、I/Oモニタ132は、I/Oレコーダ251、統計モジュール252、データセンタ内I/Oテーブル253、及びデータセンタ間I/Oテーブル254を有して構成される。
【0060】
I/Oレコーダ251は、ストレージコントローラ131から受信したI/Oログについて、I/Oがデータセンタ内通信であるかデータセンタ間通信であるかを識別し、識別結果に応じたテーブルにI/Oログを送信する機能を有する。I/Oレコーダ251は、ソフトウェアでもハードウェアでもよい。
【0061】
詳しく説明すると、I/Oレコーダ251は、まず、レイアウトモジュール141からストレージコントローラレイアウトテーブル212及びコンピュートノードレイアウトテーブル214の情報を受け取り、保存しておく。
【0062】
I/Oレコーダ251は、ストレージコントローラ131からI/Oログ(I/Oログ261)を受信すると、ストレージコントローラレイアウトテーブル212のストレージコントローラID2123と、コンピュートノードレイアウトテーブル214のコンピュートノードID2142とを参照することにより、I/Oがデータセンタ内通信で処理されたか、データセンタ間通信で処理されたかを識別する。I/Oログには、例えば
図12に示すI/Oログ261のように、ストレージコントローラID、コンピュートノードID、及びI/Oサイズが含まれる。
【0063】
そしてI/Oレコーダ251は、上記識別の結果に応じて、データセンタ内通信で処理されたI/Oの場合には、I/Oログをデータセンタ内I/Oテーブル253に送り、データセンタ間通信で処理されたI/Oの場合には、I/Oログをデータセンタ間I/Oテーブル254に送る。後述する
図14には、上記したI/Oレコーダ251による処理(通信特性記録処理)の詳細が示される。
【0064】
データセンタ内I/Oテーブル253は、I/Oレコーダ251から受信した、データセンタ内通信で処理されたI/Oのログ情報を記録する(
図13に示すI/O情報記録255を参照)。データセンタ内I/Oテーブル253は、ストレージコントローラIDごとに、I/Oサイズをインクリメントして保持する。また、データセンタ内I/Oテーブル253は、統計モジュール252からリセット信号を受信した場合には、保持していたI/Oサイズをゼロにリセットする。
【0065】
データセンタ間I/Oテーブル254は、I/Oレコーダ251から受信した、データセンタ間通信で処理されたI/Oのログ情報を記録する。データセンタ間I/Oテーブル254は、ストレージコントローラIDごとに、I/Oサイズをインクリメントして保持する。また、データセンタ間I/Oテーブル254は、統計モジュール252からリセット信号を受信した場合には、保持していたI/Oサイズをゼロにリセットする。
【0066】
統計モジュール252は、タイブレーカ142からの要求に応じて、指定されたストレージコントローラIDに対応するI/O統計情報(データセンタ内通信のI/O通信量とデータセンタ間通信のI/O通信量)を応答する機能を有するプログラムである。
【0067】
詳しく説明すると、統計モジュール252は、タイブレーカ142からストレージコントローラIDを受信すると、当該ストレージコントローラIDに対応するI/Oサイズを、データセンタ内I/Oテーブル253とデータセンタ間I/Oテーブル254からそれぞれ読み出す。
【0068】
そして、統計モジュール252は、読み出したそれぞれのI/Oサイズを、各テーブルが前回リセットされた時からの経過時間で除する(割り算する)ことにより、I/O処理に伴うデータセンタ内通信の通信量(スループット)と、I/O処理に伴うデータセンタ間通信の通信量(スループット)とに変換し、これらの変換結果を統計情報(I/O統計情報262)としてタイブレーカ142に応答する。
図12に示すように、I/O統計情報262には、ストレージコントローラIDごとに、データセンタ内通信量(データセンタ内I/Oスループット)とデータセンタ間通信量(データセンタ間I/Oスループット)とが含まれる。
【0069】
また、統計モジュール252は、タイブレーカ142からリセットのリクエストを受信したタイミングで、あるいは一定間隔で、データセンタ内I/Oテーブル253及びデータセンタ間I/Oテーブル254にリセット信号を送り、各テーブルが保持しているI/Oサイズをゼロリセットさせる。
【0070】
なお、定期的な処理等によってI/Oサイズをリセットした直後に、タイブレーカ142からリセットのリクエストを受信した場合には、I/Oサイズが短時間しか記録されていない状況となってしまい、データセンタ間通信量が最小となるようにストレージコントローラ131の停止方法を決定するために十分なI/O統計情報が得られない可能性があることから、一定間隔でリセットする場合には、リセット前のI/Oサイズを所定期間保持しておくことが好ましい。
【0071】
図13は、I/O情報記録255の一例を示す図である。I/O情報記録255は、データセンタ内I/Oテーブル253及びデータセンタ間I/Oテーブル254がそれぞれ保持する、I/Oのログ情報を記録したデータである。
図13の場合、I/O情報記録255は、ストレージコントローラIDを示すストレージコントローラID2551と、ストレージコントローラ131が処理したI/Oのデータ量の累計を示すI/Oサイズ2552と、から構成される。I/O情報記録255(データセンタ内I/Oテーブル253、データセンタ間I/Oテーブル254)は、ストレージコントローラ131単位で、処理したI/OサイズをインクリメントしてI/Oサイズ2552に保持しておき、統計モジュール252からのリセット信号を受け取った場合には、I/Oサイズ2552の値をゼロにリセットする。
【0072】
図14は、第1の実施形態における通信特性記録処理の処理手順例を示すフローチャートである。
図14に示す通信特性記録処理は、ストレージシステム100におけるストレージコントローラ131ごとのI/O処理に伴う通信特性の記録として、I/Oモニタ132(特にI/Oレコーダ251)がI/Oログをデータセンタ内I/Oテーブル253またはデータセンタ間I/Oテーブル254に記録する処理であって、ストレージコントローラ131からI/Oログを受け取ったことを契機として、処理が開始される。
【0073】
図14によれば、まず、I/Oモニタ132は、I/Oログに含まれるストレージコントローラIDに基づいて、当該ストレージコントローラIDが示すストレージコントローラ131が所属するデータセンタ10のデータセンタIDを確認する(ステップS101)。ストレージコントローラIDからデータセンタIDを確認する際は、
図8に示したストレージコントローラレイアウトテーブル212を参照すればよい。
【0074】
次に、I/Oモニタ132は、I/Oログに含まれるコンピュートノードIDに基づいて、当該コンピュートノードIDが示すコンピュートノード110が所属するデータセンタ10のデータセンタIDを確認する(ステップS102)。コンピュートノードIDからデータセンタIDを確認する際は、
図10に示したコンピュートノードレイアウトテーブル214を参照すればよい。ステップS101とステップS102の実行順序は特に限定されず、並行処理されてもよい。
【0075】
次に、I/Oモニタ132は、ステップS101,S102で確認したデータセンタIDを比較して、I/Oログに示されるストレージコントローラ131とコンピュートノード110とが同じデータセンタ10に所属しているか否かを判定する(ステップS103)。
【0076】
ステップS103においてストレージコントローラ131とコンピュートノード110とが同じデータセンタ10に所属していると判定した場合(ステップS103のYES)、I/Oモニタ132は、処理開始時に受け取ったI/Oログをデータセンタ内I/Oテーブル253に記録し(ステップS104)、通信特性記録処理を終了する。
【0077】
一方、ステップS103においてストレージコントローラ131とコンピュートノード110とが異なるデータセンタ10に所属していると判定した場合(ステップS103のNO)、I/Oモニタ132は、処理開始時に受け取ったI/Oログをデータセンタ間I/Oテーブル254に記録し(ステップS105)、通信特性記録処理を終了する。
【0078】
図15は、タイブレーカ142の構成例を示す図である。
図15に示すように、タイブレーカ142は、収集器271、計算機272(272A,272B)、及び指示器273を有して構成される。これらの各構成要素は、ソフトウェアで実現されてもよいしハードウェアで実現されてもよい。
【0079】
収集器271は、レイアウトモジュール141からコントローラペアレイアウトテーブル213の情報を受け取って保持しておく機能を有し、さらに、ネットワークモニタ143から障害制御が必要なコントローラペアIDを受け取った場合に、以下のような処理を行う機能を有する。
【0080】
収集器271は、ストレージノード間の通信障害を検知したネットワークモニタ143から、障害制御が必要なコントローラペアIDを2つ受け取った場合に、アクティブ状態のストレージコントローラIDに対するI/O統計情報をI/Oモニタ132A,132Bに問い合わせる。そして収集器271は、I/Oモニタ132A,132Bから問い合わせたI/O統計情報(
図12に示したI/O統計情報262)を受け取ると、その情報を計算機272A,272Bに送信する。
【0081】
具体例として、
図15には、収集器271が、ネットワークモニタ143からコントローラペアID#1とコントローラペアID#2を受け取り、アクティブ状態のストレージコントローラのIDとしてストレージコントローラID#1とストレージコントローラID#4を認識し、ストレージコントローラID#1についてのI/O統計情報をI/Oモニタ132Aに問い合わせ、ストレージコントローラID#4についてのI/O統計情報をI/Oモニタ132Bに問い合わせることが示されている。
【0082】
計算機272(272A,272B)は、I/O統計情報に基づいて、障害制御の対象となるストレージコントローラ131が停止した場合のデータセンタ間通信量(データセンタ間I/Oスループット)を計算し、指示器273に送信する機能を有する。
【0083】
具体的には、
図15の場合、計算機272Aは、ストレージコントローラID#1のストレージコントローラ(
図1に示したストレージコントローラ#1)が停止した場合のデータセンタ間通信量(
図15の「T1」)を計算するために、I/O統計情報を参照して、ストレージコントローラID#1におけるデータセンタ内通信のI/Oスループットと、ストレージコントローラID#4におけるデータセンタ間通信のI/Oスループットとを加算する。また、計算機272Bは、ストレージコントローラID#4のストレージコントローラ(
図1に示したストレージコントローラ#4)が停止した場合のデータセンタ間通信量(
図15の「T2」)を計算するために、I/O統計情報を参照して、ストレージコントローラID#4におけるデータセンタ内通信のI/Oスループットと、ストレージコントローラID#1におけるデータセンタ間通信のI/Oスループットとを加算する。
【0084】
指示器273は、レイアウトモジュール141からストレージコントローラレイアウトテーブル212及びコントローラペアレイアウトテーブル213の情報を受け取り保持しておく機能を有し、さらに、計算機272A,272Bからアクティブ状態のストレージコントローラが停止した場合のデータセンタ間スループットの計算結果(
図15のT1,T2)を受信した場合に、以下のような処理を行う機能を有する。
【0085】
指示器273は、計算機272Aから受け取ったデータセンタ間通信量(データセンタ間I/Oスループット)T1と計算機272Bから受け取ったデータセンタ間通信量(データセンタ間I/Oスループット)T2とを比較し、データセンタ間通信量(スループット)が小さくなるようにストレージコントローラ131の停止を判断し、その判断結果に応じてストレージクラスタコントローラ140に対象のストレージコントローラ131の停止を依頼する。
【0086】
図15に示した具体例では、T1の値が大きい場合(T1≧T2)、指示器273は、ストレージコントローラID#4が所属するストレージノード(ストレージノード#2)のストレージコントローラ131を全て停止することを決定する。一方、T2の値が大きい場合(T1<T2)、指示器273は、ストレージコントローラID#1が所属するストレージノード(ストレージノード#1)のストレージコントローラ131を全て停止することを決定する。T1の値が大きい場合の制御結果は、前述した
図6で例示した状態に相当し、具体的には、ストレージノード#2(ストレージノード130B)に所属するストレージコントローラ#2,#4(ストレージコントローラ131B,131D)が停止される。
【0087】
図16は、第1の実施形態における通信障害に対する制御方法決定処理の処理手順例を示すフローチャートである。
図16に示す制御方法決定処理は、タイブレーカ142が実行する処理であって、タイブレーカ142が、ストレージノード間の通信障害を検知したネットワークモニタ143から、障害制御が必要なコントローラペアIDを2つ受け取ったことを契機として、処理が開始される。
【0088】
図15によればまず、タイブレーカ142の収集器271が、ネットワークモニタ143から受信した2つのコントローラペアIDから、アクティブ状態のストレージコントローラIDを抽出する(ステップS201)。ステップS201において、収集器271は、受信したコントローラペアIDをキーとして、コントローラペアレイアウトテーブル213から対応するアクティブストレージコントローラID2132を取得することにより、アクティブ状態のストレージコントローラIDを抽出することができる。本説明では、ストレージコントローラ#1に対応するストレージコントローラID#1として「SC001」が抽出され、ストレージコントローラ#4に対応するストレージコントローラID#4として「SC004」が抽出されたとする。
【0089】
次に、収集器271は、I/Oモニタ132に問い合わせて、ステップS201で抽出したストレージコントローラIDに対応する2つのストレージコントローラ131の通信特性の情報(I/O統計情報262)を取得する(ステップS202)。そして収集器271は、取得した2つのストレージコントローラ131(ストレージコントローラID#1,#4)のI/O統計情報262を、計算機272A,272Bに送信する。
【0090】
次に、計算機272Aが、ステップS202で受信したI/O統計情報262を用いて、1つ目のコントローラペアにおけるアクティブ状態のストレージコントローラ(例えばストレージコントローラ#1)が停止した場合に想定されるデータセンタ間通信の通信量「T1」を計算する(ステップS203)。「T1」の計算方法は、
図15を参照して行った計算機272Aの説明で述べた通りである。
【0091】
次に、計算機272Bが、ステップS202で受信したI/O統計情報262を用いて、2つ目のコントローラペアにおけるアクティブ状態のストレージコントローラ(例えばストレージコントローラ#4)が停止した場合想定されるデータセンタ間通信の通信量「T2」を計算する(ステップS204)。「T2」の計算方法は、
図15を参照して行った計算機272Bの説明で述べた通りである。
【0092】
そして、計算機272Aは、ステップS203で算出したデータセンタ間通信量「T1」を指示器273に送信し、計算機272Bは、ステップS204で算出したデータセンタ間通信量「T2」を指示器273に送信する。なお、ステップS203とステップS204の実行順序は特に限定されず、並行処理されてもよい。
【0093】
次に、指示器273は、算出されたデータセンタ間通信量「T1」の値とデータセンタ間通信量「T2」の値とを比較し(ステップS205)、T1の値がT2の値以上であるか否かを判定する(ステップS206)。T1の値がT2の値以上である場合は(ステップS206のYES)、ステップS207に進み、T1の値がT2の値未満である場合は(ステップS206のNO)、ステップS208に進む。
【0094】
ここで、「T1≧T2」の関係は、2つのストレージコントローラペアのうち、1つ目のコントローラペアにおけるアクティブ状態のストレージコントローラ#1を停止した場合に、2つ目のコントローラペアにおけるアクティブ状態のストレージコントローラ#4を停止した場合よりも、I/O処理に伴ってデータセンタ10間で発生するデータセンタ間通信量が大きくなってしまう、ことを意味する。
【0095】
そこで、ステップS206において「T1≧T2」である場合(ステップS206のYES)、指示器273は、障害制御後(すなわち、ストレージコントローラ停止後)のデータセンタ間通信量が小さくなるような制御方法として、2つ目のコントローラペアにおけるアクティブ状態のストレージコントローラ#4が所属するストレージノード#2について、その全てのストレージコントローラ131(ストレージコントローラ#2,#4)を停止することを決定し、この決定に沿った制御をストレージクラスタコントローラ140に依頼して(ステップS207)、制御方法決定処理を終了する。
【0096】
一方、「T1<T2」の関係は、2つのストレージコントローラペアのうち、2つ目のコントローラペアにおけるアクティブ状態のストレージコントローラ#4を停止した場合に、1つ目のコントローラペアにおけるアクティブ状態のストレージコントローラ#1を停止した場合よりも、I/O処理に伴ってデータセンタ10間で発生するデータセンタ間通信量が大きくなってしまう、ことを意味する。
【0097】
そこで、ステップS206において「T1<T2」である場合(ステップS206のNO)、指示器273は、障害制御後(すなわち、ストレージコントローラ停止後)のデータセンタ間通信量が小さくなるような制御方法として、1つ目のコントローラペアにおけるアクティブ状態のストレージコントローラ#1が所属するストレージノード#1について、その全てのストレージコントローラ131(ストレージコントローラ#1,#3)を停止することを決定し、この決定に沿った制御をストレージクラスタコントローラ140に依頼して(ステップS208)、制御方法決定処理を終了する。
【0098】
以上のように、
図14に示した通信特性記録処理と、
図16に示した制御方法決定処理とが実行されることにより、本実施形態に係る計算機システム1では、異なるデータセンタ10のストレージノード130に所属するストレージコントローラ131の間で形成されたストレージコントローラペアであって、各ペアにおけるアクティブ状態のストレージコントローラ131が異なるデータセンタ10のストレージノード130に所属する、2つのストレージコントローラペア(
図6のコントローラペア#1,#2)において、コントローラペア間の通信障害が発生した場合に、I/O処理に伴うデータセンタ間の通信量(スループット)を小さく抑えるように、何れかのストレージノード130に所属するすべてのストレージコントローラ131を停止する障害制御方法を決定することができる。そして、決定された障害制御方法に従ってストレージクラスタコントローラ140がストレージコントローラ131を停止する際、停止対象となるアクティブ状態のストレージコントローラ131によるボリューム133の管理は、ストレージコントローラペアのスタンバイ状態のストレージコントローラ131がアクティブ状態となって引き継がれる。そして、障害制御の実行後、停止されたストレージコントローラ131へI/Oを行っていたアプリケーションは、その処理を引き継いだストレージコントローラ131へI/Oを送る。この結果、
図6の概念図を参照しながら説明したように、ストレージシステム100は、1以上のコンピュートノード110からのI/O要求に対して、データセンタ間パス152を経由するデータセンタ間通信の通信量を抑制しながら、1つのデータセンタ10内に配置されたストレージコントローラ131で対応することができ、I/O処理に伴う課金の発生及びレスポンスの増加を抑制する障害制御を実現することができる。
【0099】
ところで、
図1や
図5に例示したストレージシステム100の構成では、ストレージクラスタ120を構成するストレージノード130は、データセンタ10ごとに1つが配置されていたが、本実施形態に係るストレージシステム100は、データセンタ10ごとに配置されるストレージノード130の数が限定されるものではなく、各データセンタ10に複数のストレージノード130が配置されるものであってもよい。このように構成されたストレージシステム100を含む計算機システムについて、第1の実施形態の変形例として
図17~
図18を参照しながら説明する。
【0100】
図17は、第1の実施形態の変形例における計算機システムの概念図である。
図17において、ストレージクラスタ290は、ストレージシステム100と読み替えてよい構成である。
【0101】
図17に示すように、ストレージクラスタ290は、それぞれのデータセンタ10A,10Bに複数が配置されたストレージノード130と、1つのストレージクラスタコントローラ140とを備えて構成される。より具体的には、
図17の場合は、データセンタ10A(データセンタ#1)において、少なくともストレージノード130A(ストレージノード#1)及びストレージノード130C(ストレージノード#3)が動作し、データセンタ10B(データセンタ#2)において、少なくともストレージノード130B(ストレージノード#2)及びストレージノード130D(ストレージノード#4)が動作する構成が示されている。なお、さらに多くのストレージノード130がストレージクラスタ290(ストレージシステム100)に属してもよい。
【0102】
また、ストレージクラスタ290において1つのデータセンタ10に複数のストレージノード130を含む場合であっても、
図1に示したストレージクラスタ120と同様に、異なるデータセンタ10に跨るコントローラペア134は、特定のストレージノード130の間でのみ構成される。具体的には
図17の場合、データセンタ#1に配置されたストレージノード#1が有するストレージコントローラ131は、データセンタ#2に配置されたストレージノード#2が有するストレージコントローラ131と、コントローラペア134A,134B(コントローラペア#1,#2)を組んでおり、データセンタ#1に配置されたストレージノード#3が有するストレージコントローラ131は、データセンタ#2に配置されたストレージノード#4が有するストレージコントローラ131と、コントローラペア134C,134D(コントローラペア#3,#4)を組んでいる。
【0103】
図18は、
図17に示したストレージクラスタ290における通信障害を説明するための図である。
図18に示したストレージクラスタ290では、ストレージノード#1とストレージノード#2の間の通信経路に障害が発生し、コントローラペア#1,#2が切断されている。さらに、ストレージノード#3とストレージノード#4の間の通信経路にも障害が発生し、コントローラペア#3,#4が切断されている。
【0104】
図18のような通信障害が発生したとき、ストレージクラスタ290は、コントローラペア134を組んでいる2つのストレージノード単位で障害制御を実施する。したがって、ストレージクラスタ290では、ストレージノード#1とストレージノード#2を対象とする障害制御と、ストレージノード#3とストレージノード#4を対象とする障害制御とを独立して実施することができる。それぞれの障害制御の詳細は、
図15及び
図16を参照して前述した障害制御と同様と考えてよいため、説明を省略する。
【0105】
したがって、各データセンタ10に複数のストレージノード130が配置される第1の実施形態の変形例の構成であっても、前述した第1の実施形態のストレージシステム100と同様の効果を得ることができる。
【0106】
(2)第2の実施形態
第2の実施形態では、ストレージクラスタ320とクォーラムディスク(Quorum Disk)330を備えて構成されるストレージシステム300を説明する。なお、第2の実施形態の説明では、第1の実施形態との相違点を中心に説明する。そのため、第2の実施形態において第1の実施形態と同様の構成については、同一の符号を付す等して説明を適宜省略する。また、個々の構成による処理についても、第1の実施形態における処理と同様のものは、説明を適宜省略する。
【0107】
図19は、本発明の第2の実施形態に係る計算機システム2の概念図である。
図19に示した計算機システム2は、複数の計算機(サーバ20)をネットワークで結合したストレージシステム300と、ストレージシステム300を利用する複数の計算機(コンピュートノード110)とから構成される。
【0108】
ストレージシステム300は、ストレージクラスタ320A(ストレージクラスタ#1)と、ストレージクラスタ320B(ストレージクラスタ#2)と、クォーラムディスク(Quorum Disk)330と、を備えて構成される。なお、
図19には図示していないが、各ストレージクラスタ320は、第1の実施形態に示したストレージクラスタ120,290と同様に、1以上のストレージノードを含むと考えてよい。
【0109】
ストレージクラスタ#1は、ストレージコントローラ321A(ストレージコントローラ#1)、I/Oモニタ322A(I/Oモニタ#1)、及びストレージクラスタコントローラ340A(ストレージクラスタコントローラ#1)を備え、データセンタ10A(データセンタ#1)上に配置される。
【0110】
ストレージクラスタ#2は、ストレージコントローラ321B(ストレージコントローラ#2)、I/Oモニタ322B(I/Oモニタ#2)、及びストレージクラスタコントローラ340B(ストレージクラスタコントローラ#2)を備え、データセンタ10B(データセンタ#2)上に配置される。
【0111】
クォーラムディスク330は、データセンタ#1及びデータセンタ#2からアクセス可能な情報記録機能を有する記録媒体であって、レイアウトテーブル331、ボリュームステートテーブル332、及びI/Oステートテーブル333を有して構成される。なお、クォーラムディスク330は、サーバ20上で実行されるノードが保持する構成であってもよい。
【0112】
ストレージコントローラ#1は、ボリューム323A(ボリューム#1)及びボリューム323C(ボリューム#3)を管理しており、ストレージコントローラ#2は、ボリューム323B(ボリューム#2)及びボリューム323D(ボリューム#4)を管理している。ストレージシステム300において、異なるストレージクラスタ320に配置された2つのボリューム323はペアを組む(ボリュームペア324)。ボリュームペア324を構成する2つのボリューム323は、同じデータを保持しており、アクティブ-アクティブ状態で動作する。具体的には例えば、ボリューム#1とボリューム#2は、ボリュームペア324A(ボリュームペア#1)を組んで、同じデータを保持する。ボリューム#1とボリューム#2は、どちらにI/Oアクセスが行われてもよく、書き込み結果は2つのボリューム間で同期される。同様に、ボリューム#3とボリューム#4は、ボリュームペア324B(ボリュームペア#2)を組んで、同じデータを保持する。
【0113】
ストレージクラスタコントローラ340は、ストレージクラスタ320ごとに設けられて、自身が所属するストレージクラスタ320を全体的に制御するコントローラである。ストレージクラスタコントローラ#1は、レイアウトモジュール341A、タイブレーカ342A、ネットワークモニタ343A、及びステートチェッカ344Aを有して構成される。同様に、ストレージクラスタコントローラ#2は、レイアウトモジュール341B、タイブレーカ342B、ネットワークモニタ343B、及びステートチェッカ344Bを有して構成される。ステートチェッカ344は、定期的にクォーラムディスク330のボリュームステートテーブル332を監視し、当該テーブルに変更があった場合は、その状態に応じた制御を自ストレージクラスタコントローラ340に依頼する機能を有する。
【0114】
図19におけるコンピュートノード110A(コンピュートノード#1)は、ストレージシステム300を利用するアプリケーションであり、データセンタ#1上で動作する。
図19に示すように、コンピュートノード#1とストレージシステム300は、データセンタ内パス151A及びデータセンタ間パス152Aで接続されており、これらのパスを経由して、コンピュートノード#1からボリューム323(323A,323B,323C,323D)へのアクセスが実施可能となっている。
【0115】
図19におけるコンピュートノード110B(コンピュートノード#2)は、ストレージシステム300を利用するアプリケーションであり、データセンタ#2上で動作する。
図19に示すように、コンピュートノード#2とストレージシステム300は、データセンタ内パス151B及びデータセンタ間パス152Bで接続されており、これらのパスを経由して、コンピュートノード#2からボリューム323(323A,323B,323C,323D)へのアクセスが実施可能となっている。
【0116】
図20は、ストレージシステム300におけるI/Oのログ情報の収集を説明するための概念図である。
【0117】
図20に示したように、データセンタ#1に配置されたストレージコントローラ#1は、コンピュートノード110A,110Bから自身が管理するボリューム323(ボリューム#1またはボリューム#3)に対してI/Oが来た場合に、当該I/Oのログ情報をI/Oモニタ#1に送る。
【0118】
そしてI/Oモニタ#1は、受け取ったI/Oのログ情報とストレージクラスタコントローラ#1のレイアウトモジュール341Aの情報とを用いて、当該I/Oがデータセンタ内通信であるかデータセンタ間通信であるかを判定した上で、I/Oのログ情報を記録する。さらにI/Oモニタ#1は、記録したI/Oのログ情報をI/Oステートテーブル333にも書き込む。また、I/Oモニタ#1は、I/Oステートテーブル333の情報を定期的に監視し、変更があった場合にはその差分を取得して自身に記録する。
【0119】
一方、データセンタ#2に配置されたストレージコントローラ#2は、
図20に示したように、ストレージクラスタ#2上においてストレージコントローラ#1と同様の動作を行い、ストレージコントローラ#2からI/Oのログ情報を受け取ったI/Oモニタ#2は、I/Oモニタ#1と同様の動作を行う。したがって、I/Oモニタ#1とI/Oモニタ#2は、I/Oステートテーブル333を介して、同じ情報を共有する。
【0120】
図20に示したように、ストレージクラスタコントローラ#1上で動作するレイアウトモジュール341Aは、I/Oモニタ#1に対してボリューム323及びコンピュートノード110のデータセンタ配置情報を送る機能を有する。この情報に変更があった場合、レイアウトモジュール341Aは、レイアウトテーブル331にも情報を書き込む。また、レイアウトモジュール341Aは、レイアウトテーブル331を定期的に監視し、変更があった場合にはその差分を取得して記録する。
【0121】
一方、ストレージクラスタコントローラ#2上で動作するレイアウトモジュール341Bは、
図20に示したように、ストレージクラスタ#2上においてレイアウトモジュール341Aと同様の動作を行う。したがって、ストレージクラスタコントローラ#1のレイアウトモジュール341Aとストレージクラスタコントローラ#2のレイアウトモジュール341Bは、レイアウトテーブル331を介して、同じレイアウト情報を共有する。
【0122】
図21は、第2の実施形態における通信障害制御の概念図である。
図21に示したストレージクラスタ320の状態は、ストレージノード#1とストレージノード#2との通信経路に障害が発生したことにより、ボリュームペア#1とボリュームペア#2が切断された状態である。このようにボリュームペア間が通信不可になった場合、ボリューム間の同期ができなくなる。このような状態となった場合、第2の実施形態に係るストレージシステム300は、切断されたボリュームペアを構築する一方のボリューム(例えばボリューム#2)を停止して、他方のボリューム(この場合はボリューム#1)のみでI/Oの受付を継続する。
【0123】
ストレージシステム300による障害制御について、上記例を用いて具体的に説明する。上記のような通信障害が発生したとき、まず、ストレージクラスタコントローラ#1上で動作するネットワークモニタ343Aが、ボリュームペア#1が通信不可となったことを検知し、タイブレーカ342Aに、関係するボリューム323の停止を要求する。
【0124】
次に、タイブレーカ342Aは、レイアウトモジュール341Aからストレージシステム300の構成情報を取得し、さらにI/Oモニタ#1からボリュームペア#1を構成するボリューム#1,#2のI/O統計情報を取得する。
【0125】
そしてタイブレーカ342Aは、取得したこれらの情報に基づいて、ボリュームペア#1を構成するボリューム#1,#2の何れかを停止した後のデータセンタ間通信量(スループット)が最小となるように、ボリュームの停止方法を決定し、決定した停止方法に沿った制御をストレージクラスタコントローラ#1に依頼するか、決定した停止方法に沿った情報をボリュームステートテーブル332に書き込む。例えば
図21の場合、タイブレーカ342Aは、ボリューム#2を停止すると、その後のデータセンタ間通信量が最小になると判断し、その判断結果に従ってボリューム#2の停止をボリュームステートテーブル332に書き込む。
【0126】
ここで、ストレージクラスタ#2のストレージクラスタコントローラ#2上で動作するステートチェッカ344Bは、定期的にボリュームステートテーブル332を監視しており、変更があった場合はその状態に合わせた制御をストレージクラスタコントローラ#2に依頼する。したがって、上記したようにタイブレーカ342Aがボリューム#2の停止をボリュームステートテーブル332に書き込むと、ステートチェッカ344Bはこれを認識し、ストレージクラスタコントローラ#2にボリューム#2の停止を依頼する。そして依頼を受けたストレージクラスタコントローラ#2は、ストレージコントローラ#2を介して、ボリューム#2を停止する。
【0127】
以上のようにして、第2の実施形態に係る計算機システム2では、通信障害によってボリュームペア#1が切断された場合に、停止後のデータセンタ間通信量が最小となるように、ボリュームペア#1を構成するボリュームの何れかを停止することができ、停止しなかった他方のボリューム(本例ではボリューム#1)のみでI/Oの受付を継続することができる。なお、ボリュームペア#2が通信障害によって切断された場合も、同様の処理が行われることにより、ボリュームペア#2を構成するボリュームの何れか一方を用いてI/Oの受付を継続することができる。
【0128】
図22は、レイアウトモジュール341の構成例を示す図である。
図22に示すように、レイアウトモジュール341は、レイアウト更新器411、ボリュームレイアウトテーブル412、ボリュームペアレイアウトテーブル413、及びコンピュートノードレイアウトテーブル414を有して構成される。
【0129】
ボリュームレイアウトテーブル412は、ボリューム323の構成情報を管理するデータであって、レイアウトテーブル331から、ストレージシステム300が保持しているボリューム323の構成情報を読み出し、これを保持する。ボリュームレイアウトテーブル412が保持しているボリューム323の構成情報が更新されると、レイアウトモジュール341は、タイブレーカ342及びI/Oモニタ322に対して、更新された情報を送る。
【0130】
図23は、ボリュームレイアウトテーブル412の一例を示す図である。
図23の場合、ボリュームレイアウトテーブル412は、個々のデータセンタ10に割り振られた識別子(データセンタID)を示すデータセンタID4121と、個々のストレージコントローラ321に割り振られた識別子(ストレージコントローラID)を示すストレージコントローラID4122と、上記ストレージコントローラ321が管理するボリュームに割り振られた識別子(ボリュームID)を示すボリュームID4123と、から構成される。このようなボリュームレイアウトテーブル412を参照することにより、ボリューム323が所属しているストレージコントローラ321とデータセンタ10を知ることができる。
【0131】
ボリュームペアレイアウトテーブル413は、ボリュームペア324に関する情報を管理するデータであって、レイアウトテーブル331から、ストレージシステム300が保持しているボリュームペア324の構成情報を読み出し、これを保持する。ボリュームペアレイアウトテーブル413が保持しているボリュームペア324の構成情報が更新されると、レイアウトモジュール341は、タイブレーカ342に対して、更新された情報を送る。
【0132】
図24は、ボリュームペアレイアウトテーブル413の一例を示す図である。
図24の場合、ボリュームペアレイアウトテーブル413は、個々のボリュームペア324に割り振られた識別子(ボリュームペアID)を示すボリュームペアID4131と、ボリュームペア324を構成するボリューム323のボリュームIDを示すボリュームID4132とから構成される。なお、前述した通り、第2の実施形態に係るストレージシステム300では、ボリュームペア324を構成する2つのボリューム323はアクティブ-アクティブ状態で動作する。このようなボリュームペアレイアウトテーブル413を参照することにより、ボリュームペア324を組んでいるボリューム323を知ることができる。
【0133】
コンピュートノードレイアウトテーブル414は、コンピュートノード110の配置情報を管理するデータであって、レイアウト更新器411から、コンピュートノード110の配置情報を入力として受け取り、これを保持する。コンピュートノードレイアウトテーブル414が保持しているコンピュートノード110の配置情報が更新されると、レイアウトモジュール341は、I/Oモニタ322に対して、更新された情報を送る。コンピュートノードレイアウトテーブル414のデータ構成は、
図10に示したコンピュートノードレイアウトテーブル214と同様であればよく、詳細な説明を省略する。
【0134】
レイアウト更新器411は、コンピュートノードレイアウトテーブル414が保持するコンピュートノード110の配置情報を更新する機能を有する。レイアウト更新器411は、ソフトウェアでもハードウェアでもよい。レイアウト更新器411は、ユーザによる入力操作が可能なユーザインタフェース230から、コンピュートノードIDとインスタンスIDの入力を受け取り、データセンタ基盤240にコンピュートノード110の配置情報(コンピュートノード110が所属するデータセンタ10の情報)を問い合わせ、これらの処理結果を、コンピュートノードレイアウトテーブル414に送る。さらに、レイアウト更新器411は、上記処理結果をレイアウトテーブル331に対しても書き込む。なお、レイアウト更新器411がデータセンタ基盤240に問い合わせて得た情報が、ユーザインタフェース230からユーザ側に提供されるように構成されてもよい。また、レイアウト更新器411は、定期的にレイアウトテーブル331の情報を確認し、変更があった場合は、その差分をコンピュートノードレイアウトテーブル414に反映する。
【0135】
図25は、I/Oモニタ322及びI/Oステートテーブル333の構成例を示す図である。
図25に示すように、I/Oモニタ322は、I/Oレコーダ421及び統計モジュール422を有して構成され、I/Oステートテーブル333は、データセンタ内I/Oテーブル431及びデータセンタ間I/Oテーブル432を有して構成される。
【0136】
I/Oレコーダ421は、レイアウトモジュール341から、ボリュームレイアウトテーブル412とコンピュートノードレイアウトテーブル414の情報を受け取り、保持することで、ボリューム323及びコンピュートノード110が所属するデータセンタ10を識別することができる。I/Oレコーダ421は、ストレージコントローラ321からI/Oログを受信すると、ボリュームID及びコンピュートノードIDを用いて、I/Oがデータセンタ内通信で処理されたか、データセンタ間通信で処理されたかを識別する。そしてI/Oレコーダ421は、データセンタ内通信で処理されたI/Oの場合にはデータセンタ内I/Oテーブル431にI/Oログを送り、データセンタ間通信で処理されたI/Oの場合にはデータセンタ間I/Oテーブル432にI/Oログを送る。後述する
図27には、上記したI/Oレコーダ421による処理(通信特性記録処理)の詳細が示される。
【0137】
データセンタ内I/Oテーブル431及びデータセンタ間I/Oテーブル432は、ボリュームIDごとに処理したI/Oサイズをインクリメントして保持する(
図26に示すI/O情報記録433を参照)。また、データセンタ内I/Oテーブル431及びデータセンタ間I/Oテーブル432は、統計モジュール422からリセット信号を受信した場合には、保持していたI/Oサイズをゼロにリセットする。
【0138】
統計モジュール422は、タイブレーカ342からの要求に応じて、指定されたボリュームIDに対応するI/O統計情報(データセンタ内通信のI/O通信量とデータセンタ間通信のI/O通信量)を応答する機能を有するプログラムである。
【0139】
詳しく説明すると、統計モジュール422は、タイブレーカ342からボリュームIDを受け取ると、データセンタ内I/Oテーブル431とデータセンタ間I/Oテーブル432から当該ボリュームIDに対応するI/Oサイズを読み出す。そして、統計モジュール422は、読み出したそれぞれのI/Oサイズを、各テーブルが前回リセットされた時からの経過時間で除する(割り算する)ことにより、I/O処理に伴うデータセンタ内通信の通信量(スループット)と、I/O処理に伴うデータセンタ間通信の通信量(スループット)とに変換し、これらの変換結果を統計情報(I/O統計情報442)としてタイブレーカ342に応答する。
【0140】
また、統計モジュール422は、タイブレーカ342からリセットのリクエストを受信したタイミングで、あるいは一定間隔で、データセンタ内I/Oテーブル431及びデータセンタ間I/Oテーブル432にリセット信号を送り、各テーブルが保持しているI/Oサイズをゼロリセットさせる。なお、定期的な処理等によってI/Oサイズをリセットした直後に、タイブレーカ342からリセットのリクエストを受信した場合には、I/Oサイズが短時間しか記録されていない状況となってしまい、データセンタ間通信量が最小となるようにボリューム323の停止方法を決定するために十分なI/O統計情報が得られない可能性があることから、一定間隔でリセットする場合には、リセット前のI/Oサイズを所定期間保持しておくことが好ましい。
【0141】
図26は、I/O情報記録433の一例を示す図である。I/O情報記録433は、データセンタ内I/Oテーブル431及びデータセンタ間I/Oテーブル432がそれぞれ保持する、I/Oのログ情報を記録したデータである。
図26の場合、I/O情報記録433は、ボリュームIDを示すボリュームID4331と、当該ボリュームにおけるI/Oのデータ量の累計を示すI/Oサイズ4332と、から構成される。I/O情報記録433(データセンタ内I/Oテーブル431、データセンタ間I/Oテーブル432)は、ボリューム323単位で、処理したI/OサイズをインクリメントしてI/Oサイズ4332に保持しておき、統計モジュール422からのリセット信号を受け取った場合には、I/Oサイズ4332の値をゼロにリセットする。
【0142】
図27は、第2の実施形態における通信特性記録処理の処理手順例を示すフローチャートである。
図27に示す通信特性記録処理は、ストレージシステム300におけるボリューム323ごとのI/O処理に伴う通信特性の記録として、I/Oモニタ322(特にI/Oレコーダ421)がI/Oログをデータセンタ内I/Oテーブル431またはデータセンタ間I/Oテーブル432に記録する処理であって、ストレージコントローラ321からI/Oログを受け取ったことを契機として、処理が開始される。
【0143】
図27によれば、まず、I/Oモニタ322は、I/Oログに含まれるボリュームIDに基づいて、当該ボリュームIDが示すボリューム323が所属するデータセンタ10のデータセンタIDを確認する(ステップS301)。ボリュームIDからデータセンタIDを確認する際は、
図23に示したボリュームレイアウトテーブル412を参照すればよい。
【0144】
次に、I/Oモニタ322は、I/Oログに含まれるコンピュートノードIDに基づいて、当該コンピュートノードIDが示すコンピュートノード110が所属するデータセンタ10のデータセンタIDを確認する(ステップS302)。コンピュートノードIDからデータセンタIDを確認する際は、コンピュートノードレイアウトテーブル414を参照すればよい。ステップS301とステップS302の実行順序は特に限定されず、並行処理されてもよい。
【0145】
次に、I/Oモニタ322は、ステップS301,S302で確認したデータセンタIDを比較して、I/Oログに示されるボリューム323とコンピュートノード110とが同じデータセンタ10に所属しているか否かを判定する(ステップS303)。
【0146】
ステップS303においてボリューム323とコンピュートノード110とが同じデータセンタ10に所属していると判定した場合(ステップS303のYES)、I/Oモニタ322は、処理開始時に受け取ったI/Oログをデータセンタ内I/Oテーブル431に記録し(ステップS304)、通信特性記録処理を終了する。
【0147】
一方、ステップS303においてボリューム323とコンピュートノード110とが異なるデータセンタ10に所属していると判定した場合(ステップS303のNO)、I/Oモニタ322は、処理開始時に受け取ったI/Oログをデータセンタ間I/Oテーブル432に記録し(ステップS305)、通信特性記録処理を終了する。
【0148】
図28は、タイブレーカ342の構成例を示す図である。
図28に示すように、タイブレーカ342は、収集器451、計算機452(452A,452B)、及び指示器453を有して構成される。
【0149】
収集器451は、レイアウトモジュール341からボリュームペアレイアウトテーブル413の情報を受け取って保持しておく機能を有し、さらに、ネットワークモニタ343から障害制御が必要なボリュームペアIDを受け取った場合に、以下のような処理を行う機能を有する。
【0150】
収集器451は、ボリュームペア324間の通信障害を検知したネットワークモニタ343から障害制御が必要なボリュームペアIDを受け取った場合に、そのボリュームペアIDに基づいてペアを組んでいる2つのボリューム323を識別し、当該各ボリューム323のI/O統計情報をI/Oモニタ322に問い合わせる。そして収集器451は、I/Oモニタ322から問い合わせたI/O統計情報(
図25に示したI/O統計情報442)を受け取ると、その情報を計算機452A,452Bに送信する。
【0151】
計算機452(452A,452B)は、I/O統計情報に基づいて、障害制御の対象となるボリューム323が停止した場合のデータセンタ間通信量(データセンタ間I/Oスループット)を計算し、指示器453に送信する機能を有する。
【0152】
具体的には、
図28の場合、計算機452Aは、ボリュームペアを組む1つ目のボリューム(本例では、ボリューム#1)が停止した場合のデータセンタ間通信量(
図28の「T1」)を計算するために、I/O統計情報を参照して、ボリュームID#1におけるデータセンタ内通信のI/Oスループットと、ボリュームID#2におけるデータセンタ間通信のI/Oスループットとを加算する。また、計算機452Bは、ボリュームペアを組む2つ目のボリューム(本例では、ボリューム#2)が停止した場合のデータセンタ間通信量(
図28の「T2」)を計算するために、I/O統計情報を参照して、ボリュームID#2におけるデータセンタ内通信のI/Oスループットと、ボリュームID#1におけるデータセンタ間通信のI/Oスループットとを加算する。
【0153】
指示器453は、レイアウトモジュール341からボリュームレイアウトテーブル412及びボリュームペアレイアウトテーブル413の情報を受け取り保持しておく機能を有し、さらに、計算機452A,452Bからボリュームペアを構成するボリュームの1つが停止した場合のデータセンタ間スループットの計算結果(
図28のT1,T2)を受信した場合に、以下のような処理を行う機能を有する。
【0154】
指示器453は、計算機452Aから受け取ったデータセンタ間通信量(データセンタ間I/Oスループット)T1と計算機452Bから受け取ったデータセンタ間通信量(データセンタ間I/Oスループット)T2とを比較し、データセンタ間通信量(スループット)が小さくなるようにボリューム323の停止を判断し、その判断結果に応じてストレージクラスタコントローラ340に対象のボリューム323の停止を依頼する(詳細は、後述する
図30を参照)。さらに、指示器453は、ボリュームステートテーブル332に、対象のボリューム323を停止状態とすることを書き込む。
【0155】
図29は、ボリュームステートテーブル332の一例を示す図である。ボリュームステートテーブル332は、ボリューム323ごとのステート情報を保持するテーブルであって、
図29の場合、ボリュームIDを示すボリュームID3321と、ボリュームの状態を示すステート3322と、から構成される。ステート3322において、ボリュームの状態は、アクティブ状態(「Active」)またはブロック状態(「Block」)で示される。アクティブ状態は、当該ボリューム323がI/O可能な状態であることを示し、ブロック状態は、当該ボリューム323がI/O不可な状態であることを示す。
【0156】
図30は、第2の実施形態における通信障害に対する制御方法決定処理の処理手順例を示すフローチャートである。
図30に示す制御方法決定処理は、タイブレーカ342が実行する処理であって、タイブレーカ342が、ボリューム間の通信障害を検知したネットワークモニタ343から、障害制御が必要なボリュームペアIDを受信したことを契機として、処理が開始される。
【0157】
図30によればまず、タイブレーカ342の収集器451が、ネットワークモニタ343から受信したボリュームペアIDに基づいて、ペアを組んでいる2つのボリューム323のボリュームIDを抽出する(ステップS401)。ステップS401において、収集器451は、受信したボリュームペアIDをキーとして、ボリュームペアレイアウトテーブル413から対応するボリュームID4132を取得することにより、ペアを組む2つのボリューム323のボリュームIDを抽出することができる。本説明では、
図28等を用いた具体例として、ボリュームペアID#1の受信に基づいて、ボリュームID#1「V001」とボリュームID#2「V002」が抽出されたとする。
【0158】
次に、収集器451は、I/Oモニタ322に問い合わせて、ステップS401で抽出したボリュームIDに対応する2つのボリューム323の通信特性の情報(I/O統計情報442)を取得する(ステップS402)。そして収集器451は、取得した2つのボリューム323(ボリューム#1,#2)のI/O統計情報442を、計算機452A,452Bに送信する。
【0159】
次に、計算機452Aが、ステップS402で受信したI/O統計情報442を用いて、通信障害が検知されたボリュームペア324における1つ目のボリューム323(例えばボリューム#1)が停止した場合に想定されるデータセンタ間通信の通信量「T1」を計算する(ステップS403)。「T1」の計算方法は、
図28を参照して行った計算機452Aの説明で述べた通りである。
【0160】
次に、計算機452Bが、ステップS402で受信したI/O統計情報442を用いて、通信障害が検知されたボリュームペア324における1つ目のボリューム323(例えばボリューム#2)が停止した場合に想定されるデータセンタ間通信の通信量「T2」を計算する(ステップS404)。「T2」の計算方法は、
図28を参照して行った計算機452Bの説明で述べた通りである。
【0161】
そして、計算機452Aは、ステップS403で算出したデータセンタ間通信量「T1」を指示器453に送信し、計算機452Bは、ステップS404で算出したデータセンタ間通信量「T2」を指示器453に送信する。なお、ステップS403とステップS404の実行順序は特に限定されず、並行処理されてもよい。
【0162】
次に、指示器453は、算出されたデータセンタ間通信量「T1」の値とデータセンタ間通信量「T2」の値とを比較し(ステップS405)、T1の値がT2の値以上であるか否かを判定する(ステップS406)。T1の値がT2の値以上である場合は(ステップS406のYES)、ステップS407に進み、T1の値がT2の値未満である場合は(ステップS406のNO)、ステップS408に進む。
【0163】
ここで、「T1≧T2」の関係は、ボリュームペア#1を構成する2つのボリューム#1,#2のうち、1つ目のボリューム#1を停止した場合に、2つ目のボリューム#2を停止した場合よりも、I/O処理に伴ってデータセンタ10間で発生するデータセンタ間通信量が大きくなってしまう、ことを意味する。
【0164】
そこで、ステップS406において「T1≧T2」である場合(ステップS406のYES)、指示器453は、障害制御後(ボリューム停止後)のデータセンタ間通信量が小さくなるような制御方法として、2つ目のボリューム#2を停止することを決定し、この決定に沿った制御をストレージクラスタコントローラ340に依頼して(あるいは、ボリュームステートテーブル332にボリューム#2(ボリュームID「V002」)を停止状態とすることを書き込み)(ステップS407)、制御方法決定処理を終了する。
【0165】
一方、「T1<T2」の関係は、ボリュームペア#1を構成する2つのボリューム#1,#2のうち、2つ目のボリューム#2を停止した場合に、1つ目のボリューム#1を停止した場合よりも、I/O処理に伴ってデータセンタ10間で発生するデータセンタ間通信量が大きくなってしまう、ことを意味する。
【0166】
そこで、ステップS406において「T1<T2」である場合(ステップS406のNO)、指示器453は、障害制御後(ボリューム停止後)のデータセンタ間通信量が小さくなるような制御方法として、1つ目のボリューム#1を停止することを決定し、この決定に沿った制御をストレージクラスタコントローラ340に依頼して(あるいは、ボリュームステートテーブル332にボリューム#2(ボリュームID「V002」)を停止状態とすることを書き込み)(ステップS408)、制御方法決定処理を終了する。
【0167】
以上のように、第2の実施形態に係る計算機システム2では、
図27に示した通信特性記録処理と、
図30に示した制御方法決定処理とが実行されることにより、異なるデータセンタ10のストレージクラスタ310におけるボリューム323の間で形成されたボリュームペア324において、ボリュームペア間の通信障害が発生した場合に、I/O処理に伴うデータセンタ間の通信量(スループット)を小さく抑えるように、当該ボリュームペア324を構成する2つのボリューム323の一方を停止する障害制御方法を決定することができる。ここで、ボリュームペア324を構成する2つのボリューム323は、アクティブ-アクティブ状態でデータを同期して動作していたことから、決定された障害制御方法に従ってストレージクラスタコントローラ340が一方のボリューム323を停止した後も、他方のボリューム323がI/Oアクセスを受け付けることができる。この結果、
図21の概念図を参照しながら説明したように、ストレージシステム300は、1以上のコンピュートノード110からのI/O要求に対して、データセンタ間パス152を経由するデータセンタ間通信の通信量を抑制しながら、停止されなかったボリューム323で対応することができ、I/O処理に伴う課金の発生及びレスポンスの増加を抑制する障害制御を実現することができる。
【0168】
(3)第3の実施形態
第3の実施形態は、第1の実施形態を拡張した実施形態であって、通信障害制御によってストレージコントローラを停止した後の状態において、データセンタ間通信量をさらに削減することができるコンピュートノード110の配置方法を提案する機能が追加される。以下の説明では、第1の実施形態に係る構成を基にして、第3の実施形態で固有の構成を中心に説明する。
【0169】
図31は、本発明の第3の実施形態に係る計算機システム3の概念図である。また、
図31は、第3の実施形態における通信障害制御のイメージも示している。
【0170】
図31に示すように、計算機システム3が備えるストレージシステム500(ストレージクラスタ520)は、
図1に示した第1の実施形態におけるストレージシステム100(ストレージクラスタ120)の構成との相違点として、ストレージクラスタコントローラ140とは内部構成が異なるストレージクラスタコントローラ540を備える。また、計算機システム3には、第1の実施形態に係る計算機システム1との相違点として、コンピュートマネージャ560が追加される。
【0171】
第3の実施形態におけるストレージクラスタコントローラ540は、レイアウトモジュール541、タイブレーカ542、ネットワークモニタ543、及びマイグレーションプロポーザ544を有して構成される。このうち、マイグレーションプロポーザ544以外の構成は、第1の実施形態におけるストレージクラスタコントローラ140が有する同名の構成と同様であるが、タイブレーカ542による処理の一部において第1の実施形態とは相違がある。以下に、ストレージクラスタコントローラ540の詳細を説明する。
【0172】
タイブレーカ542は、コントローラペア134における通信障害の発生時に、第1の実施形態におけるタイブレーカ142と同様に、ストレージコントローラ131の停止方法を決定し、決定したストレージコントローラ131を停止する制御をストレージクラスタコントローラ540に依頼する。このときタイブレーカ542は、停止するアクティブ状態なストレージコントローラのIDを、マイグレーションプロポーザ544にも受け渡す。
【0173】
具体的には、
図31の場合、タイブレーカ542は、ストレージノード#2に属するストレージコントローラ#2及びストレージコントローラ#4を停止することを決定しており、アクティブ状態であるストレージコントローラ#4のストレージコントローラID「SC004」をマイグレーションプロポーザ544に受け渡す。
【0174】
マイグレーションプロポーザ544は、所定のストレージコントローラ131が停止された後の状態において、データセンタ間通信量をさらに削減することが期待できるコンピュートノード110の配置方法を提案する機能を有する。マイグレーションプロポーザ544は、タイブレーカ542からストレージコントローラIDを受け取ると、レイアウトモジュール541からストレージシステム500の構成情報及びコンピュートノード110の配置情報を取得する。そしてマイグレーションプロポーザ544は、これらの取得した情報に基づいて、障害制御によるストレージコントローラ131停止後の状態においてデータセンタ間通信量を削減することが期待されるコンピュートノード110の配置方法を演算し、この配置方法をコンピュートマネージャ560に提案する。
【0175】
コンピュートマネージャ560は、コンピュートノード110の配置及び動作を制御する機構である。コンピュートマネージャ560は、マイグレーションプロポーザ544からコンピュートノードの配置方法の提案を受け取ると、その提案を実施するか否かを判断する。判断は、予め用意されたプログラムに基づいて実施されてもよいし、ユーザによる判断を受け付けるようにしてもよい。そして、提案の実施を決定した場合には、コンピュートマネージャ560は、当該提案の内容に沿ってコンピュートノード110の配置を変更する。
【0176】
具体的には、
図31の場合、コンピュートマネージャ560は、コンピュートノード#1(コンピュートノード110A)とコンピュートノード#2(コンピュートノード110B)を制御している。通信障害が発生して障害制御が実施される前の状態においては、コンピュートノード#1はデータセンタ10Aに配置され、コンピュートノード#2はデータセンタ#2に配置されていた。その後、障害制御によってデータセンタ#2内のストレージコントローラ#2,#4が停止された後、マイグレーションプロポーザ544から、データセンタ間通信量をさらに削減する配置方法として、コンピュートノード#2をデータセンタ#1に配置することが提案される。この提案を受けてコンピュートマネージャ560は、データセンタ#2に配置されていたコンピュートノード#2をデータセンタ#1に移動している。
【0177】
上記のようにコンピュートマネージャ560によってコンピュートノード110の配置制御が行われた結果、データセンタ#1にコンピュートノード#1,#2が配置される。このような状態となることで、ストレージシステム500では、
図31に示すようにストレージクラスタ520(ストレージシステム500)に対するコンピュートノード#1,#2のパスはデータセンタ#1内のデータセンタ内パス551A,551Bのみとなり、データセンタ間通信をゼロにすることができる。
【0178】
図32は、マイグレーションプロポーザ544の構成例を示す図である。
図32に示すように、マイグレーションプロポーザ544は、データセンタ検索器611(個別には、データセンタ検索器611Aとデータセンタ検索器611B)、コンピュートノード検索器612、ストレージコントローラ検索器613、プロポーザル生成器614、及びフィルタ615を有して構成される。
【0179】
データセンタ検索器611は、レイアウトモジュール541からストレージコントローラレイアウトテーブルの情報を受け取り、保持している。レイアウトモジュール541の内部構成は、第1の実施形態で
図7に示したレイアウトモジュール141と同様であると考えてよく、その内部には、レイアウト更新器211、ストレージコントローラレイアウトテーブル212、コントローラペアレイアウトテーブル213、及びコンピュートノードレイアウトテーブル214を有する。したがって、データセンタ検索器611が受け取るストレージコントローラレイアウトテーブルの情報は、
図7や
図8に示したストレージコントローラレイアウトテーブル212の情報と考えてよい。データセンタ検索器611は、タイブレーカ542からストレージコントローラID(
図32に示す「SC ID(Active)」を入力として受け取ると、保持しているストレージコントローラレイアウトテーブルを用いて、入力されたストレージコントローラIDが示すストレージコントローラ131が配置されているデータセンタ10のデータセンタIDを検索して出力する(
図32に示す「DC ID」)。
【0180】
コンピュートノード検索器612は、レイアウトモジュール541からコンピュートノードレイアウトテーブル(例えば、
図10に示したコンピュートノードレイアウトテーブル214)の情報を受け取り、保持している。コンピュートノード検索器612は、データセンタ検索器611からデータセンタID(
図32に示す「DC ID」)を入力として受け取ると、コンピュートノードレイアウトテーブルを用いて、入力されたデータセンタIDが示すデータセンタ10に配置されているすべてのコンピュートノード110のコンピュートノードIDを検索してリストとして出力する(
図32に示す「CN ID」)。
【0181】
ストレージコントローラ検索器613は、レイアウトモジュール541からコントローラペアレイアウトテーブル(例えば、
図9に示したコントローラペアレイアウトテーブル213)の情報を受け取り、保持している。ストレージコントローラ検索器613は、タイブレーカ542からストレージコントローラID(
図32に示す「SC ID(Active)」を入力として受け取ると、保持しているコントローラペアレイアウトテーブルを用いて、入力されたストレージコントローラIDが示すストレージコントローラ131がペアを組んでいるコントローラペア134における他方のストレージコントローラ131のストレージコントローラIDを検索して出力する(
図32に示す「SC ID(Standby)」)。
【0182】
上記のような内部構成を有するマイグレーションプロポーザ544は、タイブレーカ542から入力としてアクティブ状態のストレージコントローラIDを1つ受け取ると、データセンタ検索器611Aとコンピュートノード検索器612を用いて、受け取ったストレージコントローラIDが示すストレージコントローラ131と同じデータセンタ10に所属するコンピュートノード110のIDリストを取得する。このコンピュートノードIDのリストは、マイグレーションプロポーザ544が提案する配置方法において移動させるべきコンピュートノード110を含むリストであって、内部的にはプロポーザル生成器614への入力となる。
【0183】
さらに、マイグレーションプロポーザ544は、タイブレーカ542から入力として受け取ったアクティブ状態のストレージコントローラIDについて、ストレージコントローラ検索器613とデータセンタ検索器611Bを用いて、当該ストレージコントローラIDが示すストレージコントローラ131とペアを組む他方のストレージコントローラ131が所属するデータセンタ10のIDを取得する。このデータセンタIDは、マイグレーションプロポーザ544が提案する配置方法においてコンピュートノード110の移動先となるデータセンタ10のIDであって、内部的にはプロポーザル生成器614への入力となる。
【0184】
次に、上記のようにしてプロポーザル生成器614にコンピュートノードIDのリスト「CD IN」とデータセンタID「DC ID」とが入力された後の、マイグレーションプロポーザ544内部での処理を説明する。
【0185】
プロポーザル生成器614は、入力されたコンピュートノードIDのリストとデータセンタIDとに基づいて、コンピュートノード110を移動させる提案を生成し、フィルタ615に出力する。具体的には例えば、コンピュートノードIDのリストが「CN002(コンピュートノードID#2)」で構成され、データセンタIDが「DC001(データセンタID#1)」であったとすると、「コンピュートノード#2をデータセンタ#1に移動させる」という提案が生成される。
【0186】
フィルタ615は、プロポーザル生成器614が生成した提案をコンピュートマネージャ560に受け渡すか否かを判断する。初期状態ではフィルタ615はオフ状態(Filter OFF)であり、オフ状態のフィルタ615は、提案をコンピュートマネージャ560に受け渡す。一方、一度コンピュートマネージャ560に提案を受け渡した場合は、フィルタ615はオン状態(Filter ON)となり、オン状態のフィルタ615は、それ以降の提案をすべて(次にオフ状態に変わるまでは)コンピュートマネージャ560に受け渡すことなく却下する。
【0187】
フィルタ615によってプロポーザル生成器614の提案を却下する理由は、ストレージコントローラ131を停止する制御が実施されている間に、コンピュートノード110の配置変更を複数回に渡って提案すると、コンピュートノード110が定位置にとどまらない可能性があるためである。したがって、2回目以降の提案をフィルタリングすることによって、通信障害時のコンピュートノードの移動を1回に留めている。なお、フィルタ615のオン状態は、ストレージクラスタコントローラ540から所定の指示が出された場合に、オフ状態に切り替えられる。具体的には、ストレージクラスタコントローラ540は、ストレージクラスタ520(ストレージシステム500)が障害から復旧した場合に、フィルタ615にオフ状態となることを指示する。
【0188】
以上のように、第3の実施形態に係る計算機システム3では、第1の実施形態に係る計算機システム1と同様に、コントローラペア間で通信障害が発生した場合に、I/O処理に伴うデータセンタ間の通信量(スループット)を小さく抑えるように、何れかのストレージノード130に所属するすべてのストレージコントローラ131を停止する障害制御方法を決定し、決定した障害制御方法に従ってストレージコントローラ131を停止することができるだけでなく、さらにデータセンタ間通信量を削減する(ゼロにする)ことができるようにコンピュートノード110の配置方法を提案することができる。そして、コンピュートマネージャ560は、提案を受け入れた場合にはコンピュートノード110の配置を変更することができる。
【0189】
(4)第4の実施形態
第4の実施形態は、第2の実施形態を拡張した実施形態であって、通信障害制御によってボリュームを停止した後の状態において、データセンタ間通信量をさらに削減することができるコンピュートノード110の配置方法を提案する機能が追加される。以下の説明では、第2の実施形態に係る構成を基にして、第4の実施形態で固有の構成を中心に説明する。
【0190】
図33は、本発明の第4の実施形態に係る計算機システム4の概念図である。また、
図33は、第4の実施形態における通信障害制御のイメージも示している。
【0191】
図33に示すように、計算機システム4が備えるストレージシステム700は、
図19に示した第2の実施形態におけるストレージシステム300の構成との相違点として、ストレージクラスタコントローラ340とは内部構成が異なるストレージクラスタコントローラ740を備える。また、計算機システム4には、第2の実施形態に係る計算機システム2との相違点として、コンピュートマネージャ760が追加される。
【0192】
第4の実施形態におけるストレージクラスタコントローラ740は、レイアウトモジュール741、タイブレーカ742、ネットワークモニタ743、ステートチェッカ744、及びマイグレーションプロポーザ745を有して構成される。このうち、マイグレーションプロポーザ745以外の構成は、第2の実施形態におけるストレージクラスタコントローラ340が有する同名の構成と同様であるが、タイブレーカ742による処理の一部において第2の実施形態とは相違がある。以下に、ストレージクラスタコントローラ740の詳細を説明する。
【0193】
タイブレーカ742は、ボリュームペア324における通信障害の発生時に、第2の実施形態におけるタイブレーカ342と同様に、ボリューム323の停止方法を決定し、決定したボリューム323を停止する制御をストレージクラスタコントローラ740に依頼する。このときタイブレーカ742は、停止するボリューム323のIDを、マイグレーションプロポーザ745にも受け渡す。
【0194】
具体的には、
図33の場合、ストレージクラスタコントローラ740A(ストレージクラスタコントローラ#1)のタイブレーカ742Aが、ストレージクラスタ#2に配置されたボリューム#2及びボリューム#4を停止することを決定しており、それら2つのボリュームのID「V002」,「V004」をマイグレーションプロポーザ745に受け渡す。
【0195】
マイグレーションプロポーザ745は、所定のボリューム323が停止された後の状態において、データセンタ間通信量をさらに削減することが期待できるコンピュートノード110の配置方法を提案する機能を有する。マイグレーションプロポーザ745は、タイブレーカ742からボリュームIDを受け取ると、レイアウトモジュール741からストレージシステム700の構成情報及びコンピュートノード110の配置情報を取得する。そしてマイグレーションプロポーザ745は、これらの取得した情報に基づいて、障害制御によるボリューム323停止後の状態においてデータセンタ間通信量を削減することが期待されるコンピュートノード110の配置方法を演算し、この配置方法をコンピュートマネージャ760に提案する。
【0196】
コンピュートマネージャ760は、コンピュートノード110の配置及び動作を制御する機構である。コンピュートマネージャ760は、マイグレーションプロポーザ745からコンピュートノードの配置方法の提案を受け取ると、その提案を実施するか否かを判断する。判断は、予め用意されたプログラムに基づいて実施されてもよいし、ユーザによる判断を受け付けるようにしてもよい。そして、提案の実施を決定した場合には、コンピュートマネージャ760は、当該提案の内容に沿ってコンピュートノード110の配置を変更する。
【0197】
具体的には、
図33の場合、コンピュートマネージャ760は、コンピュートノード#1(コンピュートノード110A)とコンピュートノード#2(コンピュートノード110B)を制御している。通信障害が発生して障害制御が実施される前の状態においては、コンピュートノード#1はデータセンタ10Aに配置され、コンピュートノード#2はデータセンタ#2に配置されていた。その後、障害制御によってデータセンタ#2内のボリューム#2,#4が停止された後、マイグレーションプロポーザ745から、データセンタ間通信量をさらに削減する配置方法として、コンピュートノード#2をデータセンタ#1に配置することが提案される。この提案を受けてコンピュートマネージャ760は、データセンタ#2に配置されていたコンピュートノード#2をデータセンタ#1に移動している。
【0198】
上記のようにコンピュートマネージャ760によってコンピュートノード110の配置制御が行われた結果、データセンタ#1にコンピュートノード#1,#2が配置される。このような状態となることで、ストレージシステム700では、
図33に示すようにストレージシステム700に対するコンピュートノード#1,#2のパスはデータセンタ#1内のデータセンタ内パス751A,751Bのみとなり、データセンタ間通信をゼロにすることができる。
【0199】
図34は、マイグレーションプロポーザ745の構成例を示す図である。
図34に示すように、マイグレーションプロポーザ745は、データセンタ検索器811(個別には、データセンタ検索器811Aとデータセンタ検索器811B)、コンピュートノード検索器812、ボリューム検索器813、プロポーザル生成器814、及びフィルタ815を有して構成される。
【0200】
データセンタ検索器811は、レイアウトモジュール741からボリュームレイアウトテーブルの情報を受け取り、保持している。レイアウトモジュール741の内部構成は、第2の実施形態で
図22に示したレイアウトモジュール341と同様であると考えてよく、その内部には、レイアウト更新器411、ボリュームレイアウトテーブル412、ボリュームペアレイアウトテーブル413、及びコンピュートノードレイアウトテーブル414を有する。したがって、データセンタ検索器811が受け取るボリュームレイアウトテーブルの情報は、
図22や
図23に示したボリュームレイアウトテーブル412の情報と考えてよい。データセンタ検索器811は、タイブレーカ742からボリュームID(
図34に示す「Vol ID」を入力として受け取ると、保持しているボリュームレイアウトテーブルを用いて、入力されたボリュームIDが示すボリューム323が配置されているデータセンタ10のデータセンタIDを検索して出力する(
図34に示す「DC ID」)。
【0201】
コンピュートノード検索器812は、レイアウトモジュール741からコンピュートノードレイアウトテーブル(例えば、
図10に示したコンピュートノードレイアウトテーブル214)の情報を受け取り、保持している。コンピュートノード検索器812は、データセンタ検索器811からデータセンタID(
図34に示す「DC ID」)を入力として受け取ると、コンピュートノードレイアウトテーブルを用いて、入力されたデータセンタIDが示すデータセンタ10に配置されているすべてのコンピュートノード110のコンピュートノードIDを検索してリストとして出力する(
図34に示す「CN ID」)。
【0202】
ボリューム検索器813は、レイアウトモジュール741からボリュームペアレイアウトテーブル(例えば、
図24に示したボリュームペアレイアウトテーブル413)の情報を受け取り、保持している。ボリューム検索器813は、タイブレーカ742からボリュームID(
図34に示す「Vol ID」)を入力として受け取ると、保持しているボリュームペアレイアウトテーブルを用いて、入力されたボリュームIDが示すボリューム323がペアを組んでいるボリュームペア324における他方のボリューム323のボリュームIDを検索して出力する(
図34に示す「Vol ID」)。
【0203】
上記のような内部構成を有するマイグレーションプロポーザ745は、タイブレーカ742から入力としてボリュームIDを1つ受け取ると、データセンタ検索器811Aとコンピュートノード検索器812を用いて、受け取ったボリュームIDが示すボリューム323と同じデータセンタ10に所属するコンピュートノード110のIDリストを取得する。このコンピュートノードIDのリストは、マイグレーションプロポーザ745が提案する配置方法において移動させるべきコンピュートノード110を含むリストであって、内部的にはプロポーザル生成器814への入力となる。
【0204】
さらに、マイグレーションプロポーザ745は、タイブレーカ742から入力として受け取ったボリュームIDについて、ボリューム検索器813とデータセンタ検索器611Bを用いて、当該ボリュームIDが示すボリューム323とペアを組む他方のボリューム323が所属するデータセンタ10のIDを取得する。このデータセンタIDは、マイグレーションプロポーザ544が提案する配置方法においてコンピュートノード110の移動先となるデータセンタ10のIDであって、内部的にはプロポーザル生成器814への入力となる。
【0205】
次に、上記のようにしてプロポーザル生成器814にコンピュートノードIDのリスト「CD IN」とデータセンタID「DC ID」とが入力された後の、マイグレーションプロポーザ745内部での処理を説明する。
【0206】
プロポーザル生成器814は、入力されたコンピュートノードIDのリストとデータセンタIDとに基づいて、コンピュートノード110を移動させる提案を生成し、フィルタ815に出力する。具体的には例えば、コンピュートノードIDのリストが「CN002(コンピュートノードID#2)」で構成され、データセンタIDが「DC001(データセンタID#1)」であったとすると、「コンピュートノード#2をデータセンタ#1に移動させる」という提案が生成される。
【0207】
フィルタ815は、プロポーザル生成器814が生成した提案をコンピュートマネージャ760に受け渡すか否かを判断する。初期状態ではフィルタ885はオフ状態(Filter OFF)であり、オフ状態のフィルタ615は、提案をコンピュートマネージャ760に受け渡す。一方、一度コンピュートマネージャ760に提案を受け渡した場合は、フィルタ815はオン状態(Filter ON)となり、オン状態のフィルタ815は、それ以降の提案をすべて(次にオフ状態に変わるまでは)コンピュートマネージャ760に受け渡すことなく却下する。
【0208】
フィルタ815によってプロポーザル生成器814の提案を却下する理由は、ボリューム323を停止する制御が実施されている間に、コンピュートノード110の配置変更を複数回に渡って提案すると、コンピュートノード110が定位置にとどまらない可能性があるためである。したがって、2回目以降の提案をフィルタリングすることによって、通信障害時のコンピュートノードの移動を1回に留めている。なお、フィルタ815のオン状態は、ストレージクラスタコントローラ740から所定の指示が出された場合に、オフ状態に切り替えられる。具体的には、ストレージクラスタコントローラ740は、ストレージシステム700が障害から復旧した場合に、フィルタ815にオフ状態となることを指示する。
【0209】
以上のように、第4の実施形態に係る計算機システム4では、第2の実施形態に係る計算機システム2と同様に、ボリュームペア間で通信障害が発生した場合に、I/O処理に伴うデータセンタ間の通信量(スループット)を小さく抑えるように、通信障害で切断されたボリュームペアの何れか一方を停止する障害制御方法を決定し、決定した障害制御方法に従ってボリューム323を停止することができるだけでなく、さらにデータセンタ間通信量を削減する(ゼロにする)ことができるようにコンピュートノード110の配置方法を提案することができる。そして、コンピュートマネージャ760は、提案を受け入れた場合にはコンピュートノード110の配置を変更することができる。
【0210】
以上、本発明に係る計算機システムについて、様々な実施形態及びその変形例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、各実施形態を適宜組合わせてもよいし、他の種々の形態でも実行することが可能である。これらの実施形態等で示したように、本発明に係る計算機システムは、複数のデータセンタに配置された各ストレージノード(またはストレージクラスタ)において、ストレージコントローラあるいはボリュームを対象としてアプリケーション(コンピュートノード)とのI/Oに係る通信特性を収集し記録するI/Oモニタと、通信障害が発生したときに障害制御を判断する機構(タイブレーカ)とを備える。そして、本ストレージシステムがペア間の通信経路における通信障害を認識した場合には、障害制御の判断機構がI/Oモニタから通信特性の統計情報を集計し、データセンタ間の通信量が最小となるように、ストレージコントローラあるいはボリュームを停止する障害制御を決定する。このような構成を備えることにより、複数のデータセンタに跨って複数の計算機をネットワークで結合したストレージシステム(例えばクラウド環境で動作するストレージシステム)において通信障害が発生した際に、本ストレージシステムは、上記機構による決定に従って、データセンタ間の通信量が最小となるように障害制御を実施することにより、I/O処理に伴う課金の発生(あるいは増加)を抑制することができ、I/O処理におけるレスポンスの増加を抑制(最も好適には最小化)することができる。
【符号の説明】
【0211】
1,2,3,4 計算機システム
10 データセンタ
20 サーバ
21 CPU
22 メモリ
23 ネットワークインタフェース
24 ドライブ
30 データセンタ内ネットワーク
40 データセンタ間ネットワーク
100,300,500,700 ストレージシステム
110 コンピュートノード
120,290,320,520 ストレージクラスタ
130 ストレージノード
131,321 ストレージコントローラ
132,322 I/Oモニタ
133,323 ボリューム
134 コントローラペア
140,340,540,740 ストレージクラスタコントローラ
141,341,541,741 レイアウトモジュール
142,342,542,742 タイブレーカ
143,343,543,743 ネットワークモニタ
151,551,751 データセンタ内パス
152 データセンタ間パス
160 ネットワークスイッチ
211,411 レイアウト更新器
212 ストレージコントローラレイアウトテーブル
213 コントローラペアレイアウトテーブル
214,414 コンピュートノードレイアウトテーブル
220 構成ファイル
230 ユーザインタフェース
240 データセンタ基盤
251,421 I/Oレコーダ
252,422 統計モジュール
253,431 データセンタ内I/Oテーブル
254,432 データセンタ間I/Oテーブル
255,433 I/O情報記録
261,441 I/Oログ
262,442 I/O統計情報
271,451 収集器
272,452 計算機
273,453 指示器
280 登録画面
324 ボリュームペア
330 クォーラムディスク
331 レイアウトテーブル
332 ボリュームステートテーブル
333 I/Oステートテーブル
344,744 ステートチェッカ
412 ボリュームレイアウトテーブル
413 ボリュームペアレイアウトテーブル
560,760 コンピュートマネージャ
611,811 データセンタ検索器
612,812 コンピュートノード検索器
613 ストレージコントローラ検索器
614,814 プロポーザル生成器
615,815 フィルタ
813 ボリューム検索器