(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-12
(45)【発行日】2022-12-20
(54)【発明の名称】システム及びその制御方法並びにプログラム
(51)【国際特許分類】
G06F 13/14 20060101AFI20221213BHJP
G06F 13/10 20060101ALI20221213BHJP
G06F 3/08 20060101ALI20221213BHJP
G06F 3/06 20060101ALI20221213BHJP
【FI】
G06F13/14 310H
G06F13/14 330A
G06F13/10 340A
G06F3/08 E
G06F3/06 301Z
(21)【出願番号】P 2021167412
(22)【出願日】2021-10-12
(62)【分割の表示】P 2020118474の分割
【原出願日】2017-11-30
【審査請求日】2021-10-12
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】特許業務法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】岩満 幸治
(72)【発明者】
【氏名】大楠 拓也
(72)【発明者】
【氏名】鈴木 啓介
(72)【発明者】
【氏名】五明 将幸
(72)【発明者】
【氏名】井上 真理
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2007-279898(JP,A)
【文献】特表2008-542887(JP,A)
【文献】国際公開第2015/198412(WO,A1)
【文献】国際公開第2014/041591(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 13/10-13/14
(57)【特許請求の範囲】
【請求項1】
複数のストレージノードから構成されるクラスタを含むシステムであって、
前記各ストレージノードは、
記憶装置と、前記記憶装置に対応する論理的な記憶領域と、を有し、
管理装置からの要求に基づく論理ボリューム作成指示を受信した前記ストレージノードは
、前記クラスタ内で識別可能な仮想的な
グローバルプールボリュームを作成し、
自ノードにおける前記論理的な記憶領域と、前記
グローバルプールボリュームとを対応付けて、自ノード内で識別可能な仮想的な
内部ボリュームを自ノード内に作成し、
作成した
前記グローバルプールボリュームと、当該グローバルプールボリュームが作成されたストレージノードとの対応関係をマッピング情報として登録し、
上位装置からI/O要求を受信した前記ストレージノードは、前記マッピング情報に基づいて
、前記I/O要求において
I/O先として指定された
記憶領域と対応付けられた前記グローバルプールボリュームに対応するストレージノードの情報から、I/O先の前記ストレージノードを特定し、特定した前記ストレージノードが自ノードであるか否かにより、自ノードにて前記I/O要求を処理するか否かを判定する、
ことを特徴とするシステム。
【請求項2】
各前記
グローバルプールボリュームは、
前記クラスタを構成する各前記ストレージノードを横断する1つのプールとして管理される
ことを特徴とする請求項1記載のシステム。
【請求項3】
前記I/O要求においてI/O先として指定される前記記憶領域は、データを読み書きするための記憶領域として前記上位装置に提供される仮想的なホストボリュームであり、前記グローバルプールボリュームは、前記ホストボリュームと対応付けて作成され、
前記マッピング情報には、前記グローバルプールボリュームと前記内部ボリュームとの対応関係も登録され、
前記上位装置からのI/O要求には、当該上位装置に対応する前記ホストボリュームに関する情報が含まれ、前記各ストレージノードは、当該情報および前記マッピング情報に基づ
いて、前記I/O要求において指定された前記ホストボリューム
と対応付けられた前前記内部ボリュームを特定する、
ことを特徴とする請求項1記載のシステム。
【請求項4】
前記ホストボリュームが、前記ストレージノードの物理ポートに関連づけられたターゲット情報と、前記ターゲット情報にアクセス可能な前記上位装置の識別情報とに対応付けられたテーブルとして登録され
た
ことを特徴とする請求項3記載のシステム。
【請求項5】
前記各ストレージノードは、前記上位装置からのI/O要求処理を実行するストレージ制御部を備え、
前記ストレージ制御部は、自ノードとは異なる他の前記ストレージノードに配置された前記ストレージ制御部とストレージ制御部ペアに設定され、
前記ストレージ制御部ペアを構成する一方の前記ストレージ制御部が現用系に設定されると共に、他方の前記ストレージ制御部が待機系に設定され、
現用系に設定された前記ストレージ制御部を有する前記ストレージノードにて前記
内部ボリュームが作成される
ことを特徴とする請求項1記載のシステム。
【請求項6】
前記ストレージ制御部ペアに属する各前記ストレージノードの前記論理的な記憶領域が1つのプールとして管理され、前記
内部ボリュームは、当該プールの一部から構成される
ことを特徴とする請求項5記載のシステム。
【請求項7】
さらに前記クラスタ全体の制御処理を行うマスタクラスタ制御装置を備え、
前記マスタクラスタ制御装置は、前記管理装置から前記
グローバルプールボリューム及び前記内部ボリュームの作成要求を受信すると、前記
グローバルプールボリューム及び前記内部ボリュームの作成に適した前記ストレージ制御部ペアを選択し、当該ストレージ制御部ペアに属する
現用系の前記ストレージノードに論理ボリューム作成指示を出力し、
前記論理ボリューム作成指示を受けた前記ストレージノードは、作成した
前記グローバルプールボリューム及び前記内部ボリュームのそれぞれの識別情報を前記マスタクラスタ制御装置に送信する、
ことを特徴とする請求項6記載のシステム。
【請求項8】
前記マスタクラスタ制御装置は、最も負荷の低い前記ストレージノードが現用系に設定されている前記ストレージ制御部ペアを選択し、当該ストレージノードに前記論理ボリューム作成指示を出力する
ことを特徴とする請求項7記載のシステム。
【請求項9】
複数のストレージノードから構成されるクラスタを含むシステムにおいて、前記ストレージノードにより実行される
制御方法であって、
前記各ストレージノードは、
記憶装置と、前記記憶装置に対応する論理的な記憶領域と、を有し、
前記制御方法は、
管理装置からの要求に基づく論理ボリューム作成指示を受信すると、前記ストレージノードは、上位装置に提供される、前記クラスタ内で識別可能な仮想的な
グローバルプールボリュームを作成する第1のステップと、
自ノードにおける前記論理的な記憶領域と、前記
グローバルプールボリュームとを対応付けて、自ノード内で識別可能な仮想的な
内部ボリュームを自ノード内に作成する第2のステップと、
作成した
前記グローバルプールボリュームと、当該グローバルプールボリュームが作成されたストレージノードとの対応関係
をマッピング情報として登録する第3のステップと
、
上位装置から
のI/O要求を受信した場合に、前記マッピング情報に基づいて
、前記I/O要求において
I/O先として指定された
記憶領域と対応付けられた前記グローバルプールボリュームに対応するストレージノードの情報から、I/O先の前記ストレージノードを特定し、特定した前記ストレージノードが自ノードであるか否かにより、自ノードにて前記I/O要求を処理するか否かを判定する
第4のステップと、
を備えることを特徴とするシステムの制御方法。
【請求項10】
複数のストレージノードから構成されるクラスタを含むシステムにおいて、前記ストレージノードにより実行されるプログラムであって、
前記各ストレージノードは、
記憶装置と、前記記憶装置に対応する論理的な記憶領域と、を有し、
前記プログラムは、
管理装置からの要求に基づく論理ボリューム作成指示を受信すると、前記ストレージノードは、上位装置に提供される、前記クラスタ内で識別可能な仮想的な
グローバルプールボリュームを作成する第1のステップと、
自ノードにおける前記論理的な記憶領域と、前記
グローバルプールボリュームとを対応付けて、自ノード内で識別可能な仮想的な
内部ボリュームを自ノード内に作成する第2のステップと、
作成した
前記グローバルプールボリュームと、当該グローバルプールボリュームが作成されたストレージノードとの対応関係
をマッピング情報として登録する第3のステップと
、
上位装置から
のI/O要求を受信した
場合に、前記マッピング情報に基づいて
、前記I/O要求において
I/O先として指定された
記憶領域と対応付けられた前記グローバルプールボリュームに対応するストレージノードの情報から、I/O先の前記ストレージノードを特定し、特定した前記ストレージノードが自ノードであるか否かにより、自ノードにて前記I/O要求を処理するか否かを判定する
第4のステップと、
を備える処理を前記ストレージノードに実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はシステム及びその制御方法並びにプログラムに関し、例えば、それぞれ1又は複数のSDS(Software Defined Storage)が実装された複数のストレージノードを備える情報処理システムに適用して好適なものである。なお、以下において、SDSとは、ストレージ機能を有するソフトウェアを汎用のサーバ装置に実装することにより構築されるストレージ装置を指す。
【背景技術】
【0002】
従来、ストレージ装置のコントローラに用いられている既存の制御ソフトウェア(ストレージ制御ソフトウェア)は、そのストレージ制御ソフトウェアが実装されるハードウェアに対応した専用品として構成されている。このため、このストレージ制御ソフトウェアをそのままベアメタルサーバにインストールするだけでは、アーキテクチャの違いからスケールアウトの構成を組むことが難しいという問題がある。
【0003】
これは、かかる既存のストレージ制御ソフトウェアが自ストレージ装置内で完結する処理のみを対象とした構成となっているためであり、このためかかる既存のストレージ制御ソフトウェアをスケールアウトした構成で利用することはできなかった。なお、下記特許文献1には、HA構成の2台のストレージ装置が連携してオフロードデータコピーを行うことが開示されてはいるものの、これも2台のストレージ装置の連携に留まるものであった。
【0004】
また、かかる既存のストレージ制御ソフトウェアにより実行される共有メモリの処理がハードウェアに依存しているため、汎用のサーバ装置では同様の処理を実行させることができないという問題もあった。
【0005】
これに対して、近年では、汎用のサーバ装置にストレージ制御ソフトウェアを実装することにより構築されるSDSの開発が進められている。SDSは、専用のハードウェアを必要とせず、拡張性も高いことから、その需要も増加傾向にある。このようなSDSに関連する技術として、例えば、下記特許文献2には、SDS構成のサーバ間でI/O(Input/Output)を転送する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【文献】米国特許出願公開第2017/0017433号明細書
【文献】米国特許出願公開第2016/0173598号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、近年、企業や官庁等において蓄積されるデータ量は増加の一途を辿っている。このような状況を考慮した場合、ストレージ装置は容易にスケールアウトできる構成であることが望ましい。
【0008】
またスケールアウト後も、上位装置がI/O要求の発行先とすべきストレージ装置を意識することなく所望するデータに容易にアクセスできるようにシステムを構築できれば、スケールアウト後の上位装置の設定が不要となり、システムの拡張性を向上できるものと考えられる。
【0009】
本発明は以上の点を考慮してなされたもので、拡張性を向上させ得るシステム及びその制御方法並びにプログラムを提案しようとするものである。
【課題を解決するための手段】
【0010】
かかる課題を解決するため本発明においては、複数のストレージノードから構成されるクラスタを含むシステムであって、前記各ストレージノードは、記憶装置と、前記記憶装置に対応する論理的な記憶領域と、を有し、管理装置からの要求に基づく論理ボリューム作成指示を受信した前記ストレージノードは、前記クラスタ内で識別可能な仮想的なグローバルプールボリュームを作成し、自ノードにおける前記論理的な記憶領域と、前記グローバルプールボリュームとを対応付けて、自ノード内で識別可能な仮想的な内部ボリュームを自ノード内に作成し、作成した前記グローバルプールボリュームと、当該グローバルプールボリュームが作成されたストレージノードとの対応関係をマッピング情報として登録し、上位装置からI/O要求を受信した前記ストレージノードは、前記マッピング情報に基づいて、前記I/O要求においてI/O先として指定された記憶領域と対応付けられた前記グローバルプールボリュームに対応するストレージノードの情報から、I/O先の前記ストレージノードを特定し、特定した前記ストレージノードが自ノードであるか否かにより、自ノードにて前記I/O要求を処理するか否かを判定するようにした。
【0011】
また本発明においては、複数のストレージノードから構成されるクラスタを含むシステムにおいて、前記ストレージノードにより実行される制御方法であって、前記各ストレージノードは、記憶装置と、前記記憶装置に対応する論理的な記憶領域と、を有し、前記制御方法は、管理装置からの要求に基づく論理ボリューム作成指示を受信すると、前記ストレージノードは、上位装置に提供される、前記クラスタ内で識別可能な仮想的なグローバルプールボリュームを作成する第1のステップと、自ノードにおける前記論理的な記憶領域と、前記グローバルプールボリュームとを対応付けて、自ノード内で識別可能な仮想的な内部ボリュームを自ノード内に作成する第2のステップと、作成した前記グローバルプールボリュームと、当該グローバルプールボリュームが作成されたストレージノードとの対応関係をマッピング情報として登録する第3のステップと、上位装置からのI/O要求を受信した場合に、前記マッピング情報に基づいて、前記I/O要求においてI/O先として指定された記憶領域と対応付けられた前記グローバルプールボリュームに対応するストレージノードの情報から、I/O先の前記ストレージノードを特定し、特定した前記ストレージノードが自ノードであるか否かにより、自ノードにて前記I/O要求を処理するか否かを判定する第4のステップとを設けるようにした。
【0012】
さらに本発明においては、複数のストレージノードから構成されるクラスタを含むシステムにおいて、前記ストレージノードにより実行されるプログラムであって、前記各ストレージノードは、記憶装置と、前記記憶装置に対応する論理的な記憶領域と、を有し、前記プログラムは、管理装置からの要求に基づく論理ボリューム作成指示を受信すると、前記ストレージノードは、上位装置に提供される、前記クラスタ内で識別可能な仮想的なグローバルプールボリュームを作成する第1のステップと、自ノードにおける前記論理的な記憶領域と、前記グローバルプールボリュームとを対応付けて、自ノード内で識別可能な仮想的な内部ボリュームを自ノード内に作成する第2のステップと、作成した前記グローバルプールボリュームと、当該グローバルプールボリュームが作成されたストレージノードとの対応関係をマッピング情報として登録する第3のステップと、上位装置からのI/O要求を受信した場合に、前記マッピング情報に基づいて、前記I/O要求においてI/O先として指定された記憶領域と対応付けられた前記グローバルプールボリュームに対応するストレージノードの情報から、I/O先の前記ストレージノードを特定し、特定した前記ストレージノードが自ノードであるか否かにより、自ノードにて前記I/O要求を処理するか否かを判定する第4のステップとを備える処理を前記ストレージノードに実行させるようにした。
【0013】
本発明のシステム及びその制御方法並びにプログラムによれば、ストレージノードのスケールアウトの有無に関わりなく、上位装置がI/O要求の発行先のストレージノードを意識することなく、所望するデータの読み書きを行うことができる。
【発明の効果】
【0014】
本発明によれば、拡張性を向上させ得るシステム及びその制御方法並びにプログラムを実現できる。上記した以外の課題、構成及び効果は、以下の発明を実施するための形態の説明により明らかにされる。
【図面の簡単な説明】
【0015】
【
図1】本実施の形態による情報処理システムの全体構成を示すブロック図である。
【
図2】ストレージノードのハードウェア構成を示すブロック図である。
【
図3】ストレージノードのソフトウェア構成を示すブロック図である。
【
図4】ストレージノードにおける記憶領域の対応関係の説明に供するブロック図である。
【
図5】ストレージ制御部ペアテーブルの構成例を示す図表である。
【
図6】フロントエンドテーブルボリュームテーブルの構成例を示す図表である。
【
図7】マッピングテーブルの構成例を示す図表である。
【
図8】フロントエンドターゲットテーブルの構成例を示す図表である。
【
図9】ストレージ制御部情報管理テーブルの構成例を示す図表である。
【
図10】グローバルプールボリュームテーブルの構成例を示す図表である。
【
図11】各テーブル間における情報の対応関係の説明に供する概念図である。
【
図12】内部ボリューム作成時における処理の流れを示すシーケンス図である。
【
図13】クラスタ内のストレージノードに障害が発生した場合に当該クラスタにおいて実行される一連の処理の流れを示すシーケンス図である。
【
図14】クラスタにストレージノードが増設された場合に当該クラスタにおいて実行される一連の処理の流れを示すシーケンス図である。
【
図15】本情報処理システムにおいて実行されるライト処理の流れを示すシーケンス図である。
【
図16】本情報処理システムにおいて実行されるリード処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【0016】
以下、図面を参照して、本発明の一実施の形態を詳述する。以下の記載及び図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明が実施の形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加や変更等を行うことができる。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は複数でも単数でも構わない。
【0017】
以下の説明では、「テーブル」、「表」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
【0018】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
【0019】
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、又はホストであってもよい。プログラムを実行して行う処理の主体(例えばプロセッサ)は、処理の一部又は全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化及び復号化、又は圧縮及び伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
【0020】
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0021】
(1)本実施の形態による情報処理システムの構成
図1は、本実施の形態による情報処理システム1の構成を示す図である。この情報処理システム1は、複数のコンピュートノード2と、複数のストレージノード3と、管理ノード4とを備えて構成される。
【0022】
コンピュートノード2、ストレージノード3及び管理ノード4間は、例えばファイバーチャネル(FC:Fibre Channel)、イーサネット(登録商標)、InfiniBand又は無線LAN(Local Area Network)などから構成されるストレージサービスネットワーク5を介して接続されている。また各ストレージノード3間は、イーサネット(登録商標)、InfiniBand又は無線LANなどから構成されるバックエンドネットワーク6を介して接続されている。
【0023】
ただし、ストレージサービスネットワーク5及びバックエンドネットワーク6が同一のネットワークにより構成されていてもよく、また各コンピュートノード2及び各ストレージノード3がストレージサービスネットワーク5やバックエンドネットワーク6以外の管理用ネットワークに接続されていてもよい。
【0024】
コンピュートノード2は、ストレージノード3に対してホスト(上位装置)として機能する汎用のコンピュータ装置である。コンピュートノード2は仮想マシンのような仮想的なコンピュータ装置であってもよい。コンピュートノード2は、ユーザ操作や実装されたアプリケーションプログラムからの要求に応じて、ストレージサービスネットワーク5を介してストレージノード3にリード要求又はライト要求(以下、適宜、これらをまとめてI/O(Input/Output)要求と呼ぶ)を送信する。
【0025】
ストレージノード3は、コンピュートノード2に対してデータを読み書きするための記憶領域を提供する汎用の物理サーバ装置である。ストレージノード3は、
図2に示すように、CPU(Central Processing Unit)10、メモリ11及び複数の記憶装置12と、第1及び第2の通信装置13,14とを備えて構成され、CPU10及び記憶装置12と、第1及び第2の通信装置13,14とが内部ネットワーク15を介して接続されている。各ストレージノード3は、CPU10、メモリ11、記憶装置12、第1及び第2の通信装置13,14を、それぞれ1以上備える。
【0026】
CPU10は、ストレージノード3全体の動作制御を司るプロセッサである。またメモリ11は、SRAM(Static RAM(Random Access Memory))やDRAM(Dynamic RAM)などの揮発性の半導体メモリから構成され、CPU10のワークメモリとして各種プログラムや必要なデータを一時的に保持するために利用される。メモリ11に格納されたプログラムを、少なくとも1以上のCPU10が実行することにより、後述のようなストレージノード3全体としての各種処理が実行される。
【0027】
記憶装置12は、NVMe(Non-Volatile Memory)ドライブやSAS(Serial Attached SCSI(Small Computer System Interface))ドライブ、SATA(Serial ATA(Advanced Technology Attachment))、SSD(Solid State Drive)又はSCM(Storage Class Memory)などの大容量の不揮発性の記憶装置から構成され、コンピュートノード2に対してデータを読み書きするための記憶領域を提供する。
【0028】
第1の通信装置13は、ストレージノード3がストレージサービスネットワーク5を介してコンピュートノード2や管理ノード4と通信を行うためのインタフェースであり、例えばFCカードや無線LANカードなどから構成される。第1の通信装置13は、コンピュートノード2や管理ノードとの通信時におけるプロトコル制御を行う。
【0029】
第2の通信装置14は、ストレージノード3がバックエンドネットワーク6を介して他のストレージノード3と通信を行うためのインタフェースであり、例えばNIC(Network Interface Card)や無線LANカードなどから構成される。第2の通信装置14は、他のストレージノード3との通信時におけるプロトコル制御を行う。
【0030】
なお本実施の形態の場合、各ストレージノード3は、
図1に示すように、他の1又は複数のストレージノード3と共にクラスタ7と呼ぶグループに纏められ、クラスタ7単位で管理される。
図1の例では、クラスタ7が1つのみ設定された場合について例示しているが、情報処理システム1内に複数のクラスタ7を設定するようにしてもよい。クラスタ7は、分散ストレージシステムと呼ばれても良い。
【0031】
管理ノード4は、本情報処理システム1の管理者(以下、これをシステム管理者と呼ぶ)が、本情報処理システム1の構成管理や各種設定を行うために利用するコンピュータ装置である。管理ノード4は、システム管理者の操作に応じて、コンピュートノード2やストレージノード3に対して必要な指示を与える。
【0032】
図3は、本実施の形態によるストレージノード3の論理構成を示す。この
図3に示すように、各ストレージノード3は、フロントエンド部20、1又は複数のストレージ制御部21、容量制御部22並びにバックエンド部23を有するデータプレーン24と、クラスタ制御部25及びノード制御部26を有するコントロールプレーン27とを備えて構成される。データプレーン24は、データの読み書きに関するI/O処理を実行する機能部であり、コントロールプレーン27は、クラスタ7(図)全体や自ノードを制御する機能部である。
【0033】
フロントエンド部20は、ストレージノード3におけるスケールアウトに関するI/O処理のフロントエンドとして機能するソフトウェアである。例えば、フロントエンド部20は、コンピュートノード2からI/O要求が与えられた場合に、そのI/O要求を、当該I/O要求を実行すべき自ノード内のストレージ制御部21や、当該I/O要求を実行すべきストレージ制御部21が配置された他のストレージノード3に振り分ける。
【0034】
ストレージ制御部21は、SDS(Software Defined Storage)のコントローラとして機能するソフトウェアである。ストレージ制御部21は、ストレージ制御ソフトウェアや、ストレージ制御プログラムと呼ばれてもよい。ストレージ制御部21は、フロントエンド部20から与えられるコンピュートノード2からのI/O要求を受け付け、受け付けたI/O要求に応じたI/Oコマンドをバックエンド部23に発行する。
【0035】
ここで、本実施の形態の場合、ストレージノード3に実装された各ストレージ制御部21は、別のストレージノード3に配置された他のストレージ制御部21と共に冗長化構成を構成するペアに設定される。以下においては、このペアをストレージ制御部ペア28と呼ぶものとする。
【0036】
なお
図3では、2つのストレージ制御部21により1つのストレージ制御部ペア28が構成される場合を示しており、以下においても、2つのストレージ制御部21によりストレージ制御部ペア28が構成されるものとして説明を進めるが、3つ以上のストレージ制御部21により1つの冗長化構成を形成するようにしてもよい。
【0037】
ストレージ制御部ペア28では、一方のストレージ制御部21がコンピュートノード2からのI/O要求を受け付けることができる状態(現用系の状態であり、以下、これをアクティブモードと呼ぶ)に設定され、他方のストレージ制御部21がコンピュートノード2からのI/O要求を受け付けない状態(待機系の状態であり、以下、これをパッシブモードと呼ぶ)に設定される。
【0038】
そしてストレージ制御部ペア28では、アクティブモードに設定されたストレージ制御部(以下、適宜、これをアクティブストレージ制御部と呼ぶ)21やそのアクティブストレージ制御部21が配置されたストレージノード3に障害が発生した場合などに、それまでパッシブモードに設定されていたストレージ制御部(以下、適宜、これをパッシブストレージ制御部と呼ぶ)21の状態がアクティブモードに切り替えられる。これにより、アクティブストレージ制御部21が稼働し得なくなった場合に、当該アクティブストレージ制御部21が実行していたI/O処理を、同じストレージ制御部ペア28を構成するパッシブストレージ制御部21により引き継ぐことができる。
【0039】
容量制御部22は、自ノード内に配置されたアクティブストレージ制御部21が構成するストレージ制御部ペア28に対して、自ノード内又は他ノード内の記憶装置12(
図2)が提供する物理的な記憶領域を割り当てる機能を有するソフトウェアである。容量制御部22は、容量制御ソフトウェアや、容量制御プログラムと呼ばれてもよい。
【0040】
またバックエンド部23は、ストレージノード3におけるI/O処理のバックエンドとして機能するソフトウェアである。例えば、バックエンド部23は、アクティブストレージ制御部21から与えられる上述のI/Oコマンドに従って、そのアクティブストレージ制御部21が構成するストレージ制御部ペア28に対して容量制御部22が割り当てた記憶領域にデータを読み書きする。
【0041】
一方、クラスタ制御部25は、クラスタ7全体に関する制御処理やクラスタ7のスケールアウトに関する制御処理を実行する機能を有するソフトウェアである。クラスタ制御部25は、クラスタ制御ソフトウェアや、クラスタ制御プログラムと呼ばれてもよい。本情報処理システム1では、クラスタ7内の各ストレージノード3にそれぞれ実装されたクラスタ制御部25のうちの1つのクラスタ制御部25がマスタに設定され、マスタに設定されたクラスタ制御部(以下、これをマスタクラスタ制御部と呼ぶ)25のみが、クラスタ7全体の整合性を保ちながら各種の制御処理を実行する。
【0042】
例えば、マスタクラスタ制御部25は、管理ノード4からの要求に応じてクラスタ7内にストレージ制御部ペア28を設定し、設定したストレージ制御部ペア28を
図5について後述するストレージ制御部ペアテーブル30に登録して管理する。
【0043】
またマスタクラスタ制御部25以外のクラスタ制御部25は、マスタクラスタ制御部25の障害に備えて、ホットスタンバイ(Hot stand-by)モード又はワームスタンバイ(Warm stand-by)モードのいずれかの動作モードに設定される。
【0044】
ホットスタンバイモードは、マスタクラスタ制御部25や当該マスタクラスタ制御部25が実装されたストレージノード3に障害が発生したときなどに、それまでマスタクラスタ制御部25が実行していた処理を直ちに引き継げるよう起動したスタンバイ状態を維持する動作モードである。
【0045】
ホットスタンバイモードのクラスタ制御部25は、マスタクラスタ制御部25が実行していた処理を直ちに引き継げるよう、上述のストレージ制御部ペアテーブル30(
図5)などのマスタクラスタ制御部25が管理するすべての管理情報と同じ内容の管理情報を保持している。
【0046】
そして、マスタクラスタ制御部25が保持する管理情報が更新された場合には、その更新前後の差分が差分データとしてマスタクラスタ制御部25からバックエンドネットワーク6を介してすべてのホットスタンバイモードのクラスタ制御部25に与えられ、当該差分データに基づいて、そのクラスタ制御部25が保持する管理情報が当該クラスタ制御部25によりマスタクラスタ制御部25が保持する管理情報と同様に更新される。
【0047】
このようにホットスタンバイモードのクラスタ制御部25がマスタクラスタ制御部25と常に同一の管理情報を保持することにより、マスタクラスタ制御部25等に障害が発生し、それまでホットスタンバイモードであったクラスタ制御部25を「マスタ」に切り替えた場合にも、それまで元のマスタクラスタ制御部25が実行していた制御処理を「マスタ」に切り替えられたクラスタ制御部(マスタクラスタ制御部)25により引き継ぐことが可能となる。
【0048】
またワームスタンバイモードは、起動を停止したスタンバイ状態にある動作モードである。ホットスタンバイモードに設定されたクラスタ制御部の数が予め設定された閾値以下となった場合に、ワームスタンバイモードに設定されたいずれかのクラスタ制御部25の状態がホットスタンバイモードに切り替えられる。
【0049】
なお、マスタクラスタ制御部25は、2つ以上のマスタクラスタ制御部25が存在する状態を防ぐため、3つ以上のクラスタ制御部25を稼働させ、これら稼働させたクラスタ制御部25の中から多数決により選定される。そして、稼働させた残りのクラスタ制御部25がホットスタンバイモードに設定される。
【0050】
ノード制御部26は、マスタクラスタ制御部25からの要求に応じて、自ノード内で完結する各種の制御処理を実行する機能を有するプログラムである。ノード制御部26は、ノード制御ソフトウェアや、ノード制御プログラムと呼ばれてもよい。実際上、マスタクラスタ制御部25は、自己に負荷が集中しないように、各ストレージノード3内で完結する処理についてはその実行を各ストレージノード3のノード制御部26に要求する。そしてノード制御部26は、かかる要求が与えられると、この要求に従って、自ノードのデータプレーン24に対する制御処理を実行する。
【0051】
このように本情報処理システム1では、マスタクラスタ制御部25から各ストレージノード3内のフロントエンド部20やストレージ制御部21に対する指令や要求がそのストレージノード3のノード制御部26を介して与えられる。しかしながら、以下においては、理解の容易化のため、各ストレージノード3内のフロントエンド部20やストレージ制御部21に対するマスタクラスタ制御部25からの指令や要求が、マスタクラスタ制御部25からそのフロントエンド部20やストレージ制御部21に直接与えられるものとして説明する。
【0052】
図4は、本実施の形態の情報処理システム1における記憶領域の対応関係を示す。この
図4に示すように、本実施の形態では、容量制御部22により、各ストレージノード3内の記憶装置12がそれぞれ提供する物理的な記憶領域がそれぞれ所定大きさの記憶領域(以下、これを物理チャンクと呼ぶ)PCに分割されて管理される。
【0053】
また容量制御部22は、異なるストレージノード3内の記憶装置12がそれぞれ提供する複数の物理チャンクPCを当該物理チャンクPCと同じ大きさの論理的な記憶領域(以下、これを論理チャンクと呼ぶ)LCと対応付け、この論理チャンクLCを外部ボリュームExtVOLを介して論理チャンクLCと同じ大きさのプールボリュームPLVOLと対応付ける。
【0054】
さらに容量制御部22は、このようにして論理チャンクLCが対応付けられたプールボリュームPLVOLを複数纏めてプールPLを作成し、作成したプールPLを自ノードに配置されたアクティブストレージ制御部21が属するストレージ制御部ペア28(
図3)に割り当てる。このようにして、容量制御部22は、各ストレージ制御部ペア28にそれぞれ専用の記憶領域となるプールPLを割り当てる。
【0055】
また、これらのプールPL上には、管理ノード4を介したシステム管理者からの指示に応じて、1又は複数の仮想的な論理ボリュームである内部ボリュームIVOLが作成される。これらの内部ボリュームIVOLは、そのプールPLが対応付けられたストレージ制御部ペア28を構成する2つのストレージ制御部21のうちのアクティブストレージ制御部21が配置されたストレージノード3内に定義される。
【0056】
さらに、各内部ボリュームIVOLは、それぞれ対応するストレージ制御部ペア28(その内部ボリュームIVOLとプールPLを介して対応付けられたストレージ制御部ペア28)を構成するアクティブストレージ制御部21に定義された仮想的なポート(以下、これを仮想ポートと呼ぶ)VPTと、当該ストレージ制御部ペア28を構成するパッシブストレージ制御部21に定義された仮想ポートVPTとをそれぞれ介して、これらアクティブストレージ制御部21やパッシブストレージ制御部21が配置された各ストレージノード3内にそれぞれ定義された仮想的な論理ボリュームであるグローバルプールボリュームGVOLと1対1に対応付けられる。
【0057】
そしてクラスタ7内の各グローバルプールボリュームGVOLは、すべて纏めてクラスタ7内のすべてのストレージノード3を横断する1つのプール(以下、これをグローバルプールと呼ぶ)GPLとして管理される。
【0058】
また各グローバルプールボリュームGVOLは、それぞれそのグローバルプールボリュームGVOLと内部ボリュームIVOLを介して対応付けられたストレージ制御部ペア28を構成するアクティブストレージ制御部21やパッシブストレージ制御部21が配置された各ストレージノード3内にそれぞれ定義された仮想的な論理ボリュームであるホストボリュームHVOLと1対Nに対応付けられる。このホストボリュームHVOLは、データを読み書きするための記憶領域としてコンピュートノードに提供されるボリュームである。
【0059】
さらに各ホストボリュームHVOLは、それぞれそのホストボリュームHVOLがグローバルプールボリュームGVOLを介して対応付けられた内部ボリュームIVOLに対応するストレージ制御部ペア28のアクティブストレージ制御部21が配置されたストレージノード3内に定義されたターゲットTGを介してそのストレージノード3の物理ポートPPTと1対1に対応付けられる。
【0060】
なおグローバルプールボリュームGVOLは、管理ノード4を介したシステム管理者からの作成指示に応じてクラスタ7内で固有の識別番号が付与されて作成される。このとき、そのグローバルプールボリュームGVOLと併せて、そのグローバルプールボリュームGVOLと1対1で対応付けられる内部ボリュームIVOLが、指定されたストレージ制御部ペア28と対応付けて作成される。
【0061】
また、グローバルプールボリュームGVOLは、システム管理者が管理ノード4を介してストレージノード3内にターゲットTGを作成する際、そのターゲットTGにそのグローバルプールボリュームGVOLを登録することにより、当該ターゲットTGと対応付けられたホストボリュームHVOLと関連付けられる。
【0062】
因みに、グローバルプールボリュームGVOLの存在意図は、クラスタ7内でホストボリュームHVOLに対応付けられる内部ボリュームIVOLの識別番号を重複させないことにある。実際上、本実施の形態の場合、各ストレージ制御部ペア28にそれぞれ対応付けられる内部ボリュームIVOLのIVOL番号はストレージノード3内では固有であるが、クラスタ7内では固有とならない。このため本実施の形態においては、内部ボリュームIVOL及びホストボリュームHVOL間にクラスタ7内で固有のGVOL番号をもつグローバルプールボリュームGVOLを介在させることにより、ホストボリュームHVOL及び内部ボリュームIVOL間の対応関係を一意に特定できるようにしている。
【0063】
一方、コンピュートノード2側では、クラスタ7を構成する複数のストレージノード3が1つのストレージ装置に見えており、ホストボリュームHVOLをそのストレージ装置が自ノードに提供する記憶領域として認識する。
【0064】
ただし、各コンピュートノード2が認識可能なホストボリュームHVOLは、管理ノード4を介してシステム管理者によりそのコンピュートノード2に設定されたホストボリュームHVOLのみである。従って、コンピュートノード2は、管理ノード4により設定されたホストボリュームHVOLのみをかかるストレージ装置から提供された記憶領域として認識することになる。
【0065】
また各コンピュートノード2は、自ノードの物理ポート(図示せず)から、クラスタ7内のいずれかのストレージノード3内に定義されたターゲットTGまでのパスを管理している。そしてホストコンピュータ2は、所望するホストボリュームHVOLにデータをリード/ライトする場合には、リード/ライト先のホストボリュームHVOLと、当該ホストボリュームHVOL内のリード/ライト先の記憶領域と、対象とするデータのデータ長とを指定したI/O要求を、自ノードが認識するターゲットTGに向けて送信する。
【0066】
このとき各ストレージノード3では、フロントエンド部20(
図3)が、
図6について後述するフロントエンドテーブルボリュームテーブル31や、
図7について後述するマッピングテーブル32、及び、
図10について後述するグローバルプールボリュームテーブル35を用いてホストボリュームHVOL、グローバルプールボリュームGVOL及び内部ボリュームIVOL間の対応関係を管理し、ストレージ制御部21が、図示しない管理テーブルを用いて内部ボリュームIVOLから論理チャンクLCまでの対応関係を管理し、容量制御部22(
図3)が、図示しない管理テーブルを用いて論理チャンクLC及び物理チャンクPC間の対応関係を管理している。
【0067】
そして、フロントエンド部20は、コンピュートノード2からのI/O要求を受信した場合、かかるマッピングテーブル32及びグローバルプールボリュームテーブル35を参照して、このI/O要求において指定されたホストボリュームHVOLとグローバルプールボリュームGVOL及び内部ボリュームIVOLを順次介して対応付けられたアクティブストレージ制御部21が配置されたストレージノード3を特定する。
【0068】
そして、フロントエンド部20は、特定したストレージノード3が自ノードである場合には、そのI/O要求に含まれるリード/ライト先のホストボリュームHVOLのボリューム番号を当該ホストボリュームHVOLとグローバルプールボリュームGVOLを介して対応付けられた内部ボリュームIVOLのボリューム番号に書き換えた上で、そのI/O要求を自ノード内の当該アクティブストレージ制御部21に転送する。
【0069】
またフロントエンド部20は、特定したストレージノード3が他のストレージノード3である場合には、当該ストレージノード3にそのI/O要求が他のストレージノード3において実行すべきものであると判定した場合には、そのI/O要求を、特定したストレージノード3にバックエンドネットワーク6を介して転送する。かくして、このI/O要求が転送されてきたストレージノード3のフロントエンド部20は、このI/O要求に含まれるリード/ライト先のホストボリュームHVOLのボリューム番号を当該ホストボリュームHVOLとグローバルプールボリュームGVOLを介して対応付けられた内部ボリュームIVOLのボリューム番号に書き換えた上で、そのI/O要求を自ノード内の対応するアクティブストレージ制御部21に転送する。
【0070】
そして、このI/O要求を受領したアクティブストレージ制御部21は、当該I/O要求において指定された内部ボリュームIVOL及び当該内部ボリュームIVOL内の記憶領域とプールPL及び外部ボリュームExtVOLを順次介して対応付けられた論理チャンクLC及び当該論理チャンクLC内の記憶領域を上述の図示しない管理テーブルを用いて特定する。
【0071】
かくして、そのストレージノード3では、そのI/O要求がライト要求であった場合には、バックエンド部23により、その論理チャンクLCに対応付けられたすべての物理チャンクPCの対応する記憶領域にデータがそれぞれライトされる。また、そのI/O要求がリード要求であった場合には、バックエンド部23により、その論理チャンクLCに対応付けられた物理チャンクPCのうちの1つの物理チャンクPCからデータがリードされ、これがそのリード要求の送信元のコンピュートノード2に転送される。
【0072】
なお、本実施の形態の場合、上述のようにコンピュートノード2からのデータは、I/O要求において指定されたホストボリュームHVOLとグローバルプールボリュームGVOL及び内部ボリュームIVOL等を順次介して対応する論理チャンクLCに対応付けられた複数の物理チャンクPCに冗長化されて格納される。このため容量制御部22により各論理チャンクLCにそれぞれ対応付けられる物理チャンクPCの数は、その情報処理システム1における冗長化方式の設定内容によって決定される。
【0073】
例えば、データを二重化して記憶する設定の場合には、1つの論理チャンクLCに対して2つの物理チャンクPCが対応付けられ、データを三重化以上に多重化して記憶する設定がなされている場合などには、3つ以上の必要な数の物理チャンクPCが1つの論理チャンクLCに対応付けられる。
【0074】
この場合において、論理チャンクLCと対応付ける物理チャンクPCを、アクティブストレージ制御部21が配置されたストレージノード3とは別のストレージノード3内の物理チャンクPCから選択することとした場合、そのアクティブストレージ制御部21からのI/Oコマンドを受領した容量制御部22がその物理チャンクPCにデータをリード/ライトする際に、その物理チャンクPCを提供するストレージノード3との間の通信が必要となり、その分、システム全体としての応答性能が悪くなる。従って、論理チャンクLCに複数の物理チャンクPCを対応付けるに際しては、その物理チャンクPCのうちの1つを、アクティブストレージ制御部21が配置されたストレージノード3内の記憶装置12が提供する物理チャンクPCの中から選択する方がシステム全体の応答性能の観点からも望ましい。
【0075】
また、ストレージ制御部ペア28におけるアクティブストレージ制御部21が配置されたストレージノード3に障害が発生した場合に、パッシブストレージ制御部21がアクティブモードに切り替えられることを考慮すると、上述と同様の理由により、論理チャンクLCに対応付ける物理チャンクPCのうちの1つは、パッシブストレージ制御部21が配置されたストレージノード3内の記憶装置12が提供する物理チャンクPCの中から選択する方がシステム全体の応答性能の観点からも望ましい。
【0076】
そこで本情報処理システム1において、各ストレージノード3の容量制御部22は、ストレージ制御部ペア28に論理チャンクLCを割り当て、その論理チャンクLCに複数の物理チャンクPCを対応付ける際に、そのストレージ制御部ペア28のアクティブストレージ制御部21が配置されたストレージノード3内の記憶装置12が提供する物理チャンクPCと、そのストレージ制御部ペア28のパッシブストレージ制御部21が配置されたストレージノード3内の記憶装置12が提供する物理チャンクPCとを優先的にその論理チャンクLCに対応付ける。
【0077】
(2)各種テーブルの構成
図5~
図10は、各ストレージ制御部ペア28の構成や、上述のようなホストボリュームHVOL、グローバルプールボリュームGVOL及び内部ボリュームIVOL間の対応関係等を管理するために各ストレージノード2のメモリ11に保持されるデータベース(図示せず)に含まれる各種テーブルの構成例を示す。
【0078】
これらテーブルのうち、
図5に示すストレージ制御部ペアテーブル30、
図6に示すフロントエンドテーブルボリュームテーブル31、
図7に示すマッピングテーブル32、
図8に示すフロントエンドターゲットテーブル33、及び、
図10に示すグローバルプールボリューム35は、フロントエンド部20により管理される。さらに
図9に示すストレージ制御部構成情報テーブル34は、ストレージ制御部21により管理される。
【0079】
またストレージ制御部ペアテーブル30、フロントエンドテーブルボリュームテーブル31、マッピングテーブル32、フロントエンドターゲットテーブル33及びグローバルプールボリュームテーブル35は、クラスタ7内のいずれかのストレージノード3において更新された場合にこれと同期して他のすべてのストレージノード3において同様に更新され、これにより各ストレージノード3間で常に同一の内容に維持される。
【0080】
ストレージ制御部ペアテーブル30は、クラスタ7内に設定されたストレージ制御部ペア28(
図3)をマスタクラスタ制御部25(
図4)が管理するために利用するテーブルであり、
図5に示すように、ペア番号欄30A、アクティブ欄30B及びパッシブ欄30Cを備えて構成される。このストレージ制御部ペアテーブル30では1つの行が1つのストレージ制御部ペア28に対応しており、クラスタ7内のすべてのストレージ制御部ペア28がこのストレージ制御部ペアテーブル30に登録される。
【0081】
そしてペア番号欄30Aには、対応するストレージ制御部ペア28に付与されたそのストレージ制御部ペア28に固有の識別番号(ペア番号)が格納される。
【0082】
またアクティブ欄30Bは、ノード番号欄30BA及びストレージ制御部欄30BBに区分されている。そして、ノード番号欄30BAには、対応するストレージ制御部ペア28を構成する2つのストレージ制御部21のうちのアクティブストレージ制御部21が配置されたストレージノード3の識別番号(ノード番号)が格納され、ストレージ制御部番号欄30BBには、そのアクティブストレージ制御部21の識別番号(ストレージ制御部番号)が格納される。
【0083】
同様に、パッシブ欄30Cは、ノード番号欄30CA及びストレージ制御部番号欄30CBに区分されている。そして、ノード番号欄30CAには、対応するストレージ制御部ペア28を構成する2つのストレージ制御部21のうちのパッシブストレージ制御部21が配置されたストレージノード3のノード番号が格納され、ストレージ制御部番号欄30CBには、そのパッシブストレージ制御部21のストレージ制御部番号が格納される。
【0084】
従って、
図5の例の場合、「1」というペア番号が付与されたストレージ制御部ペア28は、「0」というノード番号のストレージノード3に配置された「0」というストレージ制御部番号のアクティブストレージ制御部21と、「1」というノード番号のストレージノード3に配置された「1」というストレージ制御部番号のパッシブストレージ制御部21とから構成されていることが示されている。
【0085】
一方、フロントエンドテーブルボリュームテーブル31は、ホストボリュームHVOL及び内部ボリュームIVOL間の対応関係を管理するために利用されるテーブルである。フロントエンドテーブルボリュームテーブル31は、
図6に示すように、ホストボリュームID欄31A、UUID欄31B、第1のノード特定情報欄31C、第2のノード特定情報欄31D、アクティブ側ノード特定情報欄31E、ストレージ制御部番号欄31F、仮想ポート番号欄31G及び内部ボリューム番号欄31Hを備えて構成される。このフロントエンドテーブルボリュームテーブル31では、1つの行が1つのホストボリュームHVOLに対応し、クラスタ7内のすべてのホストボリュームHVOLが登録される。
【0086】
そしてボリューム番号欄31Aには、対応するホストボリュームHVOLに対して付与されたそのホストボリュームHVOLに固有のボリューム番号がそれぞれ格納される。このボリューム番号は、コンピュートノード2が認識するそのホストボリュームHVOLの識別番号(ボリューム番号)である。
【0087】
またUUID欄31Bには、対応するホストボリュームHVOLに対してクラスタ7内で付与されたそのホストボリュームHVOLに固有のUUID(Universally Unique Identifier)が格納され、内部ボリューム番号欄31Hには、対応するホストボリュームHVOLに対応付けられた内部ボリュームIVOLのボリューム番号が格納される。
【0088】
さらに第1のノード特定情報欄31Cには、対応する内部ボリュームIVOLと対応付けられたストレージ制御部ペア28のアクティブストレージ制御部21が配置されたストレージノード3を特定するための情報(以下、これをストレージノード特定情報と呼ぶ)が格納され、第2のノード特定情報欄31Dには、当該ストレージ制御部ペア28のパッシブストレージ制御部21が配置されたストレージノード3のストレージノード特定情報が格納される。本実施の形態においては、これらのストレージノード特定情報として、対応するストレージノード3のストレージサービスネットワーク5上のIP(Internet Protocol)アドレスが適用される。
【0089】
さらにアクティブ側ノード特定情報欄31Eには、これら2つのストレージノード3のうち、アクティブストレージ制御部21が配置されたストレージノード3のストレージノード特定情報が格納される。またストレージ制御部番号欄31Fには、そのアクティブストレージ制御部21のストレージ制御部番号が格納され、仮想ポート番号欄31Gには、そのアクティブストレージ制御部21に定義された仮想ポートVPTのうち、対応するホストボリュームHVOL及び対応する内部ボリュームIVOLが接続された仮想ポートVPTの識別番号(ポート番号)が格納される。
【0090】
従って、
図6の例の場合、「sn1」というノード特定情報のストレージノード3に配置されたストレージ制御部番号が「1」のアクティブストレージ制御部21と、「sn2」というノード特定情報のストレージノード3に配置されたパッシブストレージ制御部21とにより構成されるストレージ制御部ペア28に割り当てられたプールPL上に「1」というボリューム番号の内部ボリュームIVOLが定義され、この内部ボリュームIVOLが、そのアクティブストレージ制御部21に定義された「Cl1-a」というポート番号の仮想ポートVPTを介して「1」というボリューム番号のホストボリュームHVOLと対応付けられていることが示されている。また
図6では、そのホストボリュームHVOLのクラスタ7内でのUUIDが「Xxxxxxxxxxx」であることも示されている。
【0091】
他方、マッピングテーブル32は、グローバルプールボリュームGVOL及び内部ボリュームIVOL間の対応関係を管理するために利用されるテーブルである。マッピングテーブル32は、
図7に示すように、グローバルプールボリューム番号欄32A、UUID欄32B、内部ボリューム番号欄32C、ノード番号欄32D及びストレージ制御部番号欄32Eを備えて構成される。マッピングテーブル32では、1つの行が1つのグローバルプールボリュームGVOLに対応し、クラスタ7内のすべてのグローバルプールボリュームGVOLが登録される。
【0092】
そしてグローバルプールボリューム番号欄32Aには、対応するグローバルプールボリュームGVOLのボリューム番号が格納され、UUID欄32Bには、そのグローバルプールボリュームGVOLのクラスタ7内におけるUUIDが格納される。
【0093】
また内部ボリューム番号欄32Cには、そのグローバルプールボリュームGVOLと対応付けられた内部ボリュームIVOLに付与されたその内部ボリュームIVOLのボリューム番号が格納される。またノード番号欄32Dには、その内部ボリュームIVOLが存在するストレージノード3(通常は、対応するアクティブストレージ制御部21が配置されたストレージノード3)のノード番号が格納される。
【0094】
さらにストレージ制御部番号欄32Eには、その内部ボリュームIVOLと対応付けられたストレージ制御部ペア28(割り当てられたプールPL上にその内部ボリュームIVOLが定義されたストレージ制御部ペア28)を構成する2つのストレージ制御部21のうち、アクティブストレージ制御部21のストレージ制御部番号が格納される。
【0095】
従って、
図7の例の場合、「1」というボリューム番号のグローバルプールボリュームGVOLは、クラスタ7内において「Xxxxxxxxxxxx」というUUIDが付与され、「1」というストレージ制御部番号のアクティブストレージ制御部21が配置された「2」というノード番号のストレージノード3内に定義された「1」というボリューム番号の内部ボリュームIVOLと対応付けられていることが示されている。
【0096】
フロントエンドターゲットテーブル33は、ストレージノード3の各物理ポートPPT(
図4)に対してそれぞれ1対1で設定されたターゲットTG(
図4)と、ホストボリュームHVOLとの対応関係を管理するために利用されるテーブルである。フロントエンドターゲットテーブル33は、
図8に示すように、ターゲット番号欄33A、ターゲット名欄33B、UUID欄33C、ターゲットIP欄33D、ホストボリューム番号リスト欄33E及びイニシエータ名欄33Fを備えて構成される。このフロントエンドターゲットテーブル33では、1つの行が1つのターゲットTGに対応し、クラスタ7内に定義されたすべてのターゲットTGが登録される。
【0097】
そしてターゲット番号欄33Aには、対応するターゲットTGに付与されたそのターゲットTGに固有の識別番号(ターゲット番号)が格納され、ターゲット名欄33Bには、対応するターゲットTGに付与された名称(ターゲット名)が格納される。このターゲット名は、ユーザ又は管理ノード4により付与された名称である。
【0098】
またUUID欄33Cには、対応するターゲットTGに付与されたクラスタ7内におけるそのターゲットTGのUUIDが格納される。さらにターゲットIP欄33Dには、そのターゲットTGが設定された物理ポートPPTのストレージサービスネットワーク5上のIPアドレスが格納される。
【0099】
さらにホストボリューム番号リスト欄33Eには、対応するターゲットTGと対応付けられたすべてのホストボリュームHVOLのボリューム番号が格納され、イニシエータ名欄33Fには、対応するターゲットTGにログイン可能なコンピュートノード2の名称(イニシエータ名)が格納される。
【0100】
従って、
図8の例の場合、「1」というターゲット番号が付与された「AAAA」というターゲット名のターゲットTGにはクラスタ7内で「Xxxxxxxxxxxx」というUUIDが付与され、そのターゲットTGが設定された物理ポートPPTのストレージサービスネットワーク5上のIPアドレスは「xx.xx.xx.xx」であり、そのターゲットTGに「1」,「2」,……「N」というボリューム番号がそれぞれ付与された複数のホストボリュームHVOLが対応付けられ、そのターゲットTGに「lqn.xxxx.xxx」というイニシエータ名のコンピュートノード2がログイン可能に設定されていることが示されている。
【0101】
ストレージ制御部構成情報テーブル34は、仮想ポートVPT及び内部ボリュームIVOLの対応関係を管理するために利用されるテーブルであり、
図9に示すように、仮想ポート番号欄34A及び内部ボリューム番号欄34Bを備えて構成される。このストレージ制御部構成情報テーブル34は、ストレージ制御部21ごとに作成され、対応するストレージ制御部21により管理される。
【0102】
そして仮想ポート番号欄34Aには、対応するストレージ制御部21に定義された仮想ポートVPTのポート番号が格納され、内部ボリューム番号欄34Bには、その仮想ポートVPTに接続された内部ボリュームIVOLのボリューム番号が格納される。
【0103】
従って、
図9の例の場合、対応するストレージ制御部21の「Cl1-a」という仮想ポートVPTには「1」というボリューム番号の内部ボリュームIVOLが接続されていることが示されている。
【0104】
グローバルプールボリュームテーブル35は、クラスタ7内に定義されたグローバルプールボリュームGVOLを管理するために利用されるテーブルであり、
図10に示すように、グローバルプールボリューム番号欄35A,ターゲット番号欄35B及びホストボリューム番号欄35Cを備えて構成される。このグローバルプールボリュームテーブル35では、1つの行が1つのグローバルプールボリュームGVOLに対応し、クラスタ7内に定義されたすべてのグローバルプールボリュームGVOLが登録される。
【0105】
そしてグローバルプールボリューム番号欄35Aには、対応するグローバルプールボリュームGVOLに付与されたそのグローバルプールボリュームGVOLに固有の識別番号(ボリューム番号)が格納され、ホストボリューム番号欄35Cには、対応するグローバルプールボリュームGVOLと対応付けられたすべてのホストボリュームHVOLのボリューム番号が格納される。またターゲット番号欄35Bには、対応するホストボリュームHVOLと対応付けられたターゲットTGのターゲット番号が格納される。
【0106】
従って、
図10の場合、「1」というボリューム番号が付与されたグローバルターゲットボリュームGVOLには、少なくともそれぞれ「1」というボリューム番号が付与されたホストボリュームHVOLが対応付けられ、このホストボリュームHVOLは、「1」というターゲット番号が付与されたターゲットTGと、「2」というターゲット番号が付与されたターゲットTGとに対応付けられていることが示されている(
図4参照)。
【0107】
なお、フロントエンドテーブルボリュームテーブル31、マッピングテーブル32、フロントエンドターゲットテーブル33、ストレージ制御部構成情報テーブル34及びグローバルプールボリューム35間における情報の対応関係を
図11に示す。
【0108】
この
図11に示すように、フロントエンドテーブルボリュームテーブル31の仮想ポート番号欄31G(
図6)及び内部ボリューム番号欄31H(
図6)にそれぞれ格納された仮想ポート番号及びボリューム番号が、それぞれその仮想ポート番号が付与された仮想ポートVPT(
図4)を備えるストレージ制御部21が管理するストレージ制御部構成情報管理テーブル34の仮想ポート番号欄34A(
図9)及び内部ボリューム番号欄34B(
図9)にそれぞれ格納されている仮想ポート番号やボリューム番号と対応する。
【0109】
従って、フロントエンドテーブルボリュームテーブル31及びストレージ制御部構成情報管理テーブル34間では、仮想ポートVPTのポート番号と、当該仮想ポートVPTに対応付けられた内部ボリュームIVOLのボリューム番号との組合せをキーとして、行同士の対応関係を認識することができる。
【0110】
またマッピングテーブル32のグローバルプールボリューム番号欄32A(
図7)に格納されたボリューム番号は、グローバルプールボリュームテーブル35のグローバルプールボリューム番号欄35Aに格納されたボリューム番号と対応する。従って、マッピングテーブル32及びグローバルプールボリュームテーブル35間では、グローバルプールボリュームGVOLのボリューム番号をキーとして、行同士の対応関係を認識することができる。
【0111】
さらにマッピングテーブル32の内部ボリューム番号欄32C(
図7)に格納されたボリューム番号は、その内部ボリューム番号の内部ボリュームIVOL(
図4)を提供するアクティブストレージ制御部21が管理するストレージ制御部構成情報管理テーブル34の内部ボリューム番号欄34B(
図9)に格納されたボリューム番号と対応する。従って、マッピングテーブル33及びストレージ制御部構成情報管理テーブル34間では、内部ボリュームIVOLのボリューム番号をキーとして、行同士の対応関係を認識することができる。
【0112】
さらにグローバルプールボリュームテーブル35のターゲット番号欄35B(
図10)に格納されたターゲット番号は、フロントエンドターゲットテーブル33(
図8)のターゲット番号欄33Aに格納されたターゲット番号と対応する。従って、グローバルプールボリュームテーブル35及びフロントエンドターゲットテーブル33間では、ターゲット番号をキーとして、行同士の対応関係を認識することができる。
【0113】
(3)内部ボリューム作成の流れ
次に、
図4について上述した内部ボリュームIVOLをクラスタ7内に作成してホストボリュームHVOLと対応付け、その内部ボリュームIVOLに関する各種設定を行う一連の処理の流れについて、
図12を参照して説明する。
【0114】
本情報処理システム1において、システム管理者は、コンピュートノード2に提供する新たなホストボリュームHVOLを作成する場合、管理ノード4を操作することにより、そのとき作成しようとするホストボリュームHVOLと対応付けるグローバルプールボリュームGVOLの作成要求(以下、これをグローバルプールボリューム作成要求)をマスタクラスタ制御部25が配置されたストレージノード3に送信する(S1)。
【0115】
このグローバルプールボリューム作成要求を受信したマスタクラスタ制御部25は、まず、受信したコマンド(グローバルプールボリューム作成要求)を解析し(S2)、このコマンドがグローバルプールボリューム作成要求であることを認識すると、そのとき作成すべきグローバルプールボリュームGVOLを対応付けるのに最適なストレージ制御部ペア28(
図3)を選択する(S3)。例えば、マスタクラスタ制御部25は、最も負荷が低いストレージノード3にアクティブストレージ制御部21が配置されているストレージ制御部ペア28をこのステップS3において選択する。
【0116】
またマスタクラスタ制御部25は、ステップS3で選択したストレージ制御部ペア28を構成するストレージ制御部21のうち、アクティブストレージ制御部21が配置されたストレージノード3に対して、グローバルプールボリュームGVOLを作成すべき旨の指示(以下、これをグローバルプールボリューム作成指示と呼ぶ)と、内部ボリュームIVOLを作成すべき旨の指示(以下、これを内部ボリューム作成指示と呼ぶ)とをバックエンドネットワーク6を介して送信する(S4A,S4B)。
【0117】
かくして、かかるグローバルプールボリューム作成指示を受信したストレージノード3のフロントエンド部20は、自ノード内にグローバルプールボリュームGVOLを作成する(S5A)。また、かかるストレージノード3のかかるアクティブストレージ制御部21は、その内部ボリューム作成指示に従って、自ノード内に、自ストレージ制御部21が構成するストレージ制御部ペア28に割り当てられたプールPL(
図4)と、ステップS5Aで作成されたグローバルプールボリュームGVOLとに対応付けて内部ボリュームIVOLを作成する(S5B)。
【0118】
なおグローバルプールボリュームGVOL及び内部ボリュームIVOLは実体を有さない仮想的な論理ボリュームであるため、これらグローバルプールボリュームGVOLや内部ボリュームIVOLの作成は、その情報をグローバルプールボリュームテーブル35(
図10)や対応するストレージ制御部構成情報テーブル34(
図9)に登録することにより行われる。
【0119】
実際上、そのフロントエンド部20は、自己が管理するグローバルプールボリュームテーブル35(
図10)に新たな行を追加し、その行のグローバルプールボリューム番号欄35A(
図10)に、そのグローバルプールボリュームGVOLに付与したボリューム番号を格納する。
【0120】
そして、このフロントエンド部20は、この後、このようにして作成したグローバルプールボリュームGVOLのボリューム番号と、そのグローバルプールボリュームGVOLと対応付けた内部ボリュームIVOLのボリューム番号とを、バックエンドネットワーク6を介してマスタクラスタ制御部25に通知する(S6A)。
【0121】
また、かかるアクティブストレージ制御部21は、自己が管理するストレージ制御部構成情報テーブル34(
図9)に新たな行を追加し、その行の内部ボリューム番号欄34B(
図9)に、そのとき作成すべき内部ボリュームIVOLのボリューム番号を格納すると共に、その行の仮想ポート番号欄34A(
図9)に、その内部ボリュームIVOLと対応付ける自ストレージ制御部21の仮想ポートVPT(
図4)のポート番号を格納する。
【0122】
そして、このアクティブストレージ制御部21は、この後、このようにして作成した内部ボリュームIVOLのボリューム番号と、その内部ボリュームIVOLと対応付けた仮想ポートVPTのポート番号とを含む完了通知を、バックエンドネットワーク6を介してマスタクラスタ制御部25に通知する(S6B)。
【0123】
一方、これらの完了通知を受信したマスタクラスタ制御部25は、そのグローバルプールボリュームGVOLやその内部ボリュームIVOLを自ノード内のフロントエンドテーブルボリュームテーブル31(
図6)、マッピングテーブル32(
図7)及びグローバルプールボリュームテーブル35(
図10)に登録するよう自ノード内のフロントエンド部20に指示を与える。かくして、この指示を受けたフロントエンド部20は、自ノードのメモリ11(
図2)に格納されているフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びグローバルプールボリュームテーブル35(
図10)にこれらのグローバルプールボリュームGVOLやその内部ボリュームIVOLを登録する(S7)。
【0124】
具体的に、かかるフロントエンド部20は、自ノードのメモリ11(
図2)に格納されているフロントエンドテーブルボリュームテーブル31に新たな行を追加し、その行の第1のノード特定情報欄31C(
図6)に、ステップS3で選択したストレージ制御部ペア28を構成する一方のストレージ制御部21が配置されたストレージノード3のストレージノード特定情報を格納する。また、そのフロントエンド部20は、その行の第2のノード特定情報欄31D(
図6)に、ステップS3で選択したストレージ制御部ペア28を構成する他方のストレージ制御部21が配置されたストレージノード3のストレージノード特定情報を格納する。
【0125】
またフロントエンド部20は、その行のアクティブ側ノード特定情報欄31E(
図6)に、かかるストレージ制御部ペア28を構成する2つのストレージ制御部21のうちのアクティブストレージ制御部21が配置されたストレージノード3のストレージノード特定情報を格納すると共に、その行のストレージ制御部番号欄31F(
図6)に、そのアクティブストレージ制御部21のストレージ制御部番号を格納する。
【0126】
さらにフロントエンド部20は、その行の仮想ポート番号欄31G(
図6)に、ステップS7で受信した対応するストレージ制御部21から送信されてきた完了通知に含まれる仮想ポートVPTのポート番号を格納すると共に、その行の内部ボリューム番号欄31H(
図6)に、当該完了通知に含まれる内部ボリュームのボリューム番号を格納する。
【0127】
同様に、フロントエンド部20は、マッピングテーブル32(
図7)に新たな行を追加し、その行のグローバルプールボリューム番号欄32A(
図7)及びUUID欄32B(
図7)に、それぞれそのとき作成したグローバルプールボリュームGVOLのボリューム番号やUUIDを格納すると共に、その行の内部ボリューム番号欄32C(
図7)に、そのグローバルプールボリュームGVOLと対応付けた内部ボリュームIVOLのボリューム番号を格納する。
【0128】
またフロントエンド部20は、その行のノード番号欄32D(
図7)に、ステップS3で選択したストレージ制御部ペア28のアクティブストレージ制御部21が配置されているストレージノード3のノード番号を格納すると共に、その行のストレージ制御部番号欄32E(
図7)に、当該アクティブストレージ制御部21のストレージ制御部番号を格納する。
【0129】
さらにフロントエンド部20は、グローバルプールボリュームテーブル35(
図10)に新たな行を追加し、その行のグローバルプールボリューム番号欄35A(
図10)に、そのとき作成したグローバルプールボリュームGVOLのボリューム番号を格納する。
【0130】
そしてマスタクラスタ制御部25は、以上のようにして自ノード内のフロントエンド部20がそのグローバルプールボリュームGVOLや内部ボリュームIVOLを自ノード内のフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びグローバルプールボリュームテーブル35に登録し終えると、これらフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びグローバルプールボリュームテーブル35の更新前後の差分をそれぞれ差分データとして、バックエンドネットワーク6を介してクラスタ7内の自ノード以外の各ストレージノード3にそれぞれ送信する(S8)。
【0131】
かくして、この差分データを受信した各ストレージノード3のフロントエンド部20は、当該差分データに基づいて、自ノード内のフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びグローバルプールボリュームテーブル35を、マスタクラスタ制御部25が配置されたストレージノード3内のフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びグローバルプールボリュームテーブル35と同様にそれぞれ更新する(S9)。このようにして各ストレージノード3内のフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びグローバルプールボリュームテーブル35が同期して更新され、これらのフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びグローバルプールボリュームテーブル35の内容がクラスタ7内の各ストレージノード3間で常に同一の状態に維持される。
【0132】
また、これらのフロントエンド部20は、このようにして自ノード内のフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びグローバルプールボリュームテーブル35を更新し終えると、その旨の完了通知をバックエンドネットワーク6を介してマスタクラスタ制御部25に送信する(S10)。
【0133】
そしてマスタクラスタ制御部25は、クラスタ7内の自ノード以外のすべてのストレージノード3のフロントエンド部20から上述したステップS10の完了通知が与えられると、要求されたグローバルプールボリュームGVOLを作成し終えた旨の完了通知を管理ノード4に送信する(S11)。
【0134】
一方、管理ノード4は、かかるステップS11の完了通知がマスタクラスタ制御部25から与えられると、そのとき作成しようとするホストボリュームHVOLと対応付けるターゲットTG(
図4)を作成すべき旨の要求(以下、これをターゲット作成要求と呼ぶ)を、ストレージサービスネットワーク5を介してマスタクラスタ制御部25に送信する(S12)。なお、このターゲット作成要求には、そのとき作成すべきターゲットTGのターゲット名と、そのターゲットTGに対応付けるホストボリュームHVOLのボリューム番号と、そのターゲットTGのIPアドレスとが含まれる。
【0135】
そしてマスタクラスタ制御部25は、このターゲット作成要求を受信すると、ステップS3で選択したストレージ制御部ペア28を構成する各ストレージ制御部21がそれぞれ配置された2つのストレージノード3内に要求されたターゲットTGをそれぞれ作成するよう自ノード内のフロントエンド部20に指示を与える(S13)。ただし、これらのターゲットTGは実体を有さない仮想的なものであるため、これらターゲットTGの作成は、フロントエンドターゲットテーブル33(
図8)にこれらターゲットTGの情報を新規登録することにより行われる。
【0136】
実際上、マスタクラスタ制御部28からのかかる指示を受けたフロントエンド部20は、自ノードのメモリ11に格納されているフロントエンドターゲットテーブル33(
図8)に新たな2つの行を追加し、これらの行のターゲット名欄33B(
図8)、ターゲットIP欄33D(
図8)及びホストボリューム番号欄33E(
図8)に、それぞれステップS12で管理ノード4から与えられたターゲット作成要求において指定された新たなターゲットTGのターゲット名及びネットワークIP並びにホストボリュームHVOLのボリューム番号のうちの対応する情報をそれぞれ格納する。またフロントエンド部20は、これらの行のUUID欄33C(
図8)に、それぞれ対応するターゲットTGに対して付与したクラスタ7内で固有のUUIDを格納する。
【0137】
また、マスタクラスタ制御部28は、この後、ステップS5Aで作成したグローバルプールボリュームGVOLと、ステップS5Bで作成した内部ボリュームIVOLと、そのとき作成しようとするホストボリュームHVOLとをマッピングするよう自ノード内のフロントエンド部20に指示を与える(S14)。
【0138】
かくして、この指示を受けたフロントエンド部20は、ステップS7で自ノード内のフロントエンドテーブルボリュームテーブル31(
図6)に新たに追加した行のボリューム番号欄31A(
図6)に、ターゲット作成要求において指定されたそのとき作成しようとするホストボリュームHVOLのボリューム番号を格納する。また、かかるフロントエンド部20は、そのホストボリュームHVOLにクラスタ7内で固有のUUIDを付与し、付与したUUIDをその行のUUID欄31B(
図6)に格納する。
【0139】
また、かかるフロントエンド部20は、上述と同様にして、ステップS7で自ノード内のグローバルプールボリュームテーブル35(
図10)に新たに追加した行のターゲット番号欄35Bに、ターゲット作成要求において指定されたそのとき作成した各ターゲットTGのターゲット番号を格納すると共に、その行の各ホストボリューム番号欄35Cに、そのとき作成しようとするホストボリュームHVOLのボリューム番号を格納する。
【0140】
そしてマスタクラスタ制御部25は、上述のようにして要求されたターゲットTGの作成と、ステップS5Aで作成したグローバルプールボリュームGVOLと、ステップS5Bで作成した内部ボリュームIVOLと、そのとき作成しようとするホストボリュームHVOLとのマッピングを完了すると、ステップS13で更新したフロントエンドターゲットテーブル33の更新前後の差分と、ステップS14で更新したフロントエンドテーブルボリュームテーブル31及びグローバルプールボリュームテーブル35の更新前後の差分とをそれぞれ差分データとして、バックエンドネットワーク6を介してクラスタ7内の自ノード以外の各ストレージノード3にそれぞれ送信する(S15)。
【0141】
かくして、この差分データを受信した各ストレージノード3のフロントエンド部20は、当該差分データに基づいて、自ノード内のフロントエンドターゲットテーブル33と、フロントエンドテーブルボリュームテーブル31及びグローバルプールボリュームテーブル35とを、それぞれマスタクラスタ制御部25が配置されたストレージノード3内のフロントエンドターゲットテーブル33や、フロントエンドテーブルボリュームテーブル31及びグローバルプールボリュームテーブル35と同様に更新する(S16)。
【0142】
また、これらのフロントエンド部20は、このようにして自ノード内のフロントエンドターゲットテーブル33や、フロントエンドテーブルボリュームテーブル31及びグローバルプールボリュームテーブル35を更新し終えると、その旨の完了通知をバックエンドネットワーク6を介してマスタクラスタ制御部25に送信する(S17)。
【0143】
そしてマスタクラスタ制御部25は、クラスタ7内の自ノード以外のすべてのストレージノード3のフロントエンド部20から上述したステップS17の完了通知が与えられると、要求されたターゲットTGを作成し終えた旨の完了通知を管理ノード4に送信する(S18)。
【0144】
他方、管理ノード4は、かかるステップS18の完了通知がマスタクラスタ制御部25から与えられると、ステップS12~ステップS18の処理により作成したターゲットTGと、そのターゲットTGに対応付けられたホストボリュームHVOLへのアクセスを許可するコンピュートノード2(イニシエータ)とを対応付けるべき旨のイニシエータ登録要求をマスタクラスタ制御部25に送信する(S19)。なお、このイニシエータ登録要求には、かかるコンピュートノード19のノード名と、かかるターゲットTGのターゲット名とが含まれる。
【0145】
そしてマスタクラスタ制御部25は、このイニシエータ登録要求を受信すると、ステップS13で作成したターゲットTGにアクセス可能なイニシエータとしてイニシエータ登録要求において指定されたコンピュートノード2を登録するよう自ノード内のフロントエンド部20に指示を与える。かくして、この指示を受けたフロントエンド部20は、かかるターゲットTGにアクセス可能なイニシエータとして、かかるコンピュートノード2を登録する(S20)。具体的に、かかるフロントエンド部20は、自ノードのメモリ11(
図2)に格納されているフロントエンドターゲットテーブル33のイニシエータ欄33F(
図8)に、イニシエータ登録要求において指定されたコンピュートノード2のノード名を格納する。
【0146】
そしてマスタクラスタ部25は、以上のようにしてかかるターゲットTGにアクセス可能なイニシエータとしてかかるコンピュートノード2を登録し終えると、そのフロントエンドターゲットテーブル33の更新前後の差分を差分データとして、バックエンドネットワーク6を介してクラスタ7内の自ノード以外の各ストレージノード3にそれぞれ送信する(S21)。
【0147】
かくして、この差分データを受信した各ストレージノード3のフロントエンド部20は、当該差分データに基づいて、自ノード内のフロントエンドターゲットテーブル33をマスタクラスタ制御部25が配置されたストレージノード3内のフロントエンドターゲットテーブル33と同様に更新する(S22)。
【0148】
また、これらのフロントエンド部20は、このようにして自ノード内のフロントエンドターゲットテーブル33を更新し終えると、その旨の完了通知をバックエンドネットワーク6を介してマスタクラスタ制御部25に送信する(S23)。
【0149】
そしてマスタクラスタ制御部25は、クラスタ7内の自ノード以外のすべてのストレージノード3のフロントエンド部20から上述したステップS23の完了通知が与えられると、要求されたイニシエータの登録が完了した旨の完了通知を管理ノード4に送信する(S24)。以上により、この一連の処理が完了する。
【0150】
(4)ストレージノードの障害発生時や増設時における処理の流れ
次に、本情報処理システム1において、クラスタ7を構成するいずれかのストレージノード3に障害が発生した場合や、クラスタ7にストレージノード3が増設された場合における処理の流れについて説明する。
【0151】
(4-1)ストレージノード障害発生時の処理の流れ
図13は、クラスタ7を構成するいずれかのストレージノード3に障害が発生した場合に、クラスタ7内で実行される一連の処理の流れを示す。
【0152】
本実施の形態の場合、マスタクラスタ制御部25は、各ストレージノード3に対する定期的なヘルスチェックを実行している。そして、マスタクラスタ制御部25は、かかるヘルスチェックの際にいずれかのストレージノード3に障害が発生したことを検出すると、障害が発生したストレージノード(以下、これを障害ストレージノードと呼ぶ)3に配置されていたアクティブストレージ制御部21と同じストレージ制御部ペア28を構成していた他方のストレージ制御部(パッシブストレージ制御部)21を特定する(S30)。
【0153】
具体的に、マスタクラスタ制御部25は、ストレージ制御部ペアテーブル30(
図5)を参照して、当該ストレージ制御部ペアテーブル30の各行のうち、アクティブ欄30B(
図5)のノード番号欄30BA(
図5)に障害ストレージノード3のノード番号が格納されている行を特定し、その行におけるパッシブ欄30C(
図5)のストレージ制御部番号欄30CB(
図5)に格納されているストレージ制御部番号と、当該パッシブ欄30Cのノード番号欄30CA(
図5)に格納されているノード番号とを取得する。
【0154】
続いて、マスタクラスタ制御部25は、ステップS30で特定したストレージ制御部21の状態をアクティブモードに切り替える(S31)。具体的に、マスタクラスタ制御部25は、ストレージ制御部ペアテーブル30の各行のうち、ステップS30で特定した行のアクティブ欄30B(
図5)のノード番号欄30BA(
図5)及びストレージ制御部番号欄30BB(
図5)に、ステップS30で取得したノード番号及びストレージ制御部番号のうちの対応する番号をそれぞれ格納する。またマスタクラスタ制御部25は、このようにして更新したストレージ制御部ペアテーブル30の更新前後の差分の差分データをクラスタ7内の自ノード以外の各ストレージノード3にそれぞれ送信することにより、これら各ストレージノード3内のストレージ制御部ペアテーブル30を同様に更新させる。
【0155】
さらにマスタクラスタ制御部25は、ステップS30で取得したノード番号が付与されたストレージノード3内の上述のようにして取得したストレージ制御部番号が付与されたストレージ制御部21を起動し(S32)、そのストレージ制御部21に必要な障害時処理を実行させる(S33)。
【0156】
一方、マスタクラスタ制御部25は、ステップS30で特定したノード番号のストレージノード3に実装されたフロントエンド部20に対しても、ステップS31の障害時処理実行指示と同様の障害時処理実行指示をバックエンドネットワーク6を介して送信する(S34)。
【0157】
そして、この障害時処理実行指示を受信したフロントエンド部20は、ステップS32でアクティブモードに切り替えられたストレージ制御部21と対応付けられていた内部ボリュームIVOLの対応先を、ステップS32でアクティブモードに切り替えられたストレージ制御部21に切り替えるための障害時処理を実行する(S35)。
【0158】
具体的に、かかるフロントエンド部20は、自ノード内のフロントエンドテーブルボリュームテーブル31について、まず、それまで自ストレージ制御部21とストレージ制御部ペア28を構成していたアクティブストレージ制御部21のストレージ制御部番号がストレージ制御部番号欄31F(
図6)に格納されている行を特定する。
【0159】
そしてフロントエンド部20は、その行のアクティブ側ノード特定情報欄31E(
図6)に格納されているノード特定情報を自ノードのノード特定情報に更新すると共に、その行のストレージ制御部番号欄31Fに格納されているストレージ制御部番号をステップS31でアクティブモードに切り替えたストレージ制御部21のストレージ制御部番号に更新する。また、かかるフロントエンド部20は、その行の仮想ポート番号欄31G(
図6)に格納されているポート番号を、ステップS31でアクティブモードに切り替えたストレージ制御部21の仮想ポートVPT(
図4)であって、対応するホストボリュームHVOLと対応付けられた仮想ポートVPTのポート番号に更新する。
【0160】
また、かかるフロントエンド部20は、自ノード内のマッピングテーブル32(
図7)について、まず、それまで自ストレージ制御部21とストレージ制御部ペア28を構成していたアクティブストレージ制御部21のストレージ制御部番号がストレージ制御部番号欄32E(
図6)に格納されている行を特定する。そしてフロントエンド部20は、その行のノード番号欄32D(
図6)に格納されているノード番号を自ノードのノード番号に書き換える。また、かかるフロントエンド部20は、その行のストレージ制御部番号欄32Eに格納されているストレージ制御部番号を、ステップS31でアクティブモードに切り替えたストレージ制御部21のストレージ制御部番号に書き換える。
【0161】
さらに、かかるフロントエンド部20は、フロントエンドターゲットテーブル33(
図8)について、障害ストレージノード3内に定義された対応する内部ボリュームIVOLと対応付けられたホストボリュームHVOLのボリューム番号がホストボリューム番号リスト欄33Eに格納されている行を特定する。そしてフロントエンド部20は、その行のターゲットID欄33Dに格納されているIPアドレスを、自ノード内の物理ポートPPT(
図4)であって、かかるホストボリュームHVOLと対応付けられた物理ポートPPTのIPアドレスに書き換える。
【0162】
そしてマスタクラスタ制御部25は、このようにして更新されたフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びフロントエンドターゲットテーブル33の更新前後の差分の差分データをクラスタ7内の自ノード以外の各ストレージノード3のフロントエンド部20にそれぞれ送信することにより、これら各ストレージノード3内のフロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びフロントエンドターゲットテーブル33を同様に更新させる。
【0163】
なお、
図13には示されていないが、マスタクラスタ制御部25は、ステップS31及びステップS32の処理と併せて、障害ストレージノード3に配置されていたアクティブストレージ制御部21に代えて、ステップS32でアクティブモードに切り替えたストレージ制御部21と共に新たにストレージ制御部ペア28を構成すべきストレージ制御部21を選択する。
【0164】
このようなストレージ制御部21は、クラスタ7内の障害ストレージノード3以外のいずれかのストレージノード3に配置されたそのとき未使用のストレージ制御部21(いずれのストレージ制御部21ともストレージ制御部ペア28に設定されていないストレージ制御部21)のうち、ステップS32でアクティブモードに切り替えられたストレージ制御部21が配置されたストレージノード3以外のストレージノード3に配置されたストレージ制御部21の中から選択される。
【0165】
そしてマスタクラスタ制御部25は、このようにして選択したストレージ制御部21と、ステップS32でアクティブモードに切り替えたストレージ制御部21とを新たなストレージ制御部ペア28に設定すべくストレージ制御部ペアテーブル30(
図5)及びフロントエンドテーブルボリュームテーブル31(
図6)を更新する。
【0166】
具体的に、マスタクラスタ制御部25は、ストレージ制御部ペアテーブル30については、アクティブ欄30B(
図5)のノード番号欄30BA(
図5)及びストレージ制御部番号欄30BB(
図5)にそれぞれステップS30で取得したノード番号及びストレージ制御部番号がそれぞれ格納されている行を特定し、その行のパッシブ欄30C(
図5)のストレージ制御部番号欄30CB(
図5)に格納されたストレージ制御部番号を、上述のようにして選択したストレージ制御部21のストレージ制御部番号に書き換えると共に、そのパッシブ欄30Cのノード番号欄30CA(
図5)に格納されたノード番号を、そのストレージ制御部21が配置されたストレージノード3のノード番号に書き換える。
【0167】
またマスタクラスタ制御部25は、フロントエンドテーブルボリュームテーブル31については、自ノード内のフロントエンド部20を介して、対応する行の第1及び第2のノード特定情報欄31C,31Dのいずれかに格納されている障害ストレージノード3のノード番号を、上述のようにして選択したストレージ制御部21が配置されたストレージノード3のノード番号に書き換える。
【0168】
そして、マスタクラスタ制御部25は、このようにして更新されたストレージ制御部ペアテーブル30及びフロントエンドテーブルボリュームテーブル31の更新前後の差分の差分データをクラスタ7内の自ノード以外のストレージノード3にそれぞれ送信することにより、これらストレージノード3内のストレージ制御部ペアテーブル30及びフロントエンドテーブルボリュームテーブル31を同様に更新させる。
【0169】
(4-2)ストレージノード増設時の処理の流れ
一方、
図14は、クラスタ7内にストレージノード3が増設された場合にそのクラスタ7内で実行される一連の処理の流れを示す。
【0170】
クラスタ7にストレージノード3を増設した場合、システム管理者は、これを管理ノード4を介してマスタクラスタ制御部25に通知する。そして、この通知を受信したマスタクラスタ制御部25は、ストレージノード3間の負荷を分散させるため、増設されたストレージノード(以下、これを増設ストレージノードと呼ぶ)3に移動させるべきストレージ制御部(以下、これを移動対象ストレージ制御部と呼ぶ)21を選択する(S40)。
【0171】
例えば、マスタクラスタ制御部24は、クラスタ7内のストレージ制御部21のうち、最も負荷が高いストレージノード3に配置されたアクティブストレージ制御部21を上述の移動対象ストレージ制御部21として選択する。
【0172】
そしてマスタクラスタ制御部25は、この後、増設ストレージノード3に配置されたそのとき未使用のいずれか1つのストレージ制御部21と、ステップS40で選択した移動対象ストレージ制御部21とを入れ替えるための処理を実行する(S41~S45)。
【0173】
具体的に、マスタクラスタ制御部25は、まず、増設ストレージノード3のステップS40で選択したストレージ制御部(以下、これを選択ストレージ制御部と呼ぶ)21を起動し(S41)、その選択ストレージ制御部21に、移動対象ストレージ制御部21がそれまで実行していた処理を引き継がせるための所定の増設時処理を実行させる(S42)。
【0174】
またマスタクラスタ制御部25は、当該移動対象ストレージ制御部21がそれまで実行していた処理を選択ストレージ制御部21に引き継がせるための所定の増設時処理を移動対象ストレージ制御部21に実行させる(S41,S42)。なお、この増設時処理には、ストレージ制御部ペアテーブル30(
図5)、フロントエンドテーブルボリュームテーブル31(
図6)、マッピングテーブル32(
図7)、フロントエンドターゲットテーブル33(
図8)及びグローバルプールボリュームテーブル35(
図10)の各データを増設ストレージノード3のフロントエンド部20に転送する処理も含まれる。
【0175】
この後、マスタクラスタ制御部25は、自ノード内のフロントエンド部20に対して、移動対象ストレージ制御部21と対応付けられていた内部ボリュームIVOLの対応先を選択ストレージ制御部21に切り替えることを含めて、増設ストレージノード3における選択ストレージ制御部21の環境を、移動対象ストレージ制御部21が配置されたストレージノード3における当該移動対象ストレージ制御部21の環境と同じに設定するよう指示を与える(S43)。
【0176】
かくしてこの指示を受けたフロントエンド部20は、自ノードのメモリ11(
図2)に格納されているストレージ制御部ペアテーブル30(
図5)、フロントエンドテーブルボリュームテーブル31(
図6)、マッピングテーブル32(
図7)、フロントエンドターゲットテーブル33(
図8)及びグローバルプールボリュームテーブル35(
図10)を、必要に応じてそのように更新する(S44)。
【0177】
具体的に、かかるフロントエンド部20は、ストレージ制御部ペアテーブル30については、まず、移動対象ストレージ制御部21のストレージ制御部番号がアクティブ欄30B(
図5)のストレージ制御部番号欄30BB(
図5)に格納されている行を特定する。そして、かかるフロントエンド部20は、その行のアクティブ欄30Bのノード番号欄30BA(
図5)に格納されているノード番号を、増設ストレージノード3のノード番号に書き換えると共に、当該アクティブ欄30Bのストレージ制御部番号欄30BB(
図5)に格納されているストレージ制御部番号を、選択ストレージ制御部21のストレージ制御部番号に書き換える。
【0178】
またフロントエンド部20は、フロントエンドテーブルボリュームテーブル31については、まず、移動対象ストレージ制御部21のストレージ制御部番号がストレージ制御部番号欄31F(
図6)に格納されている行を特定する。
【0179】
そしてフロントエンド部20は、その行の第1及び第2のノード特定情報欄31C,31D(
図6)のいずれかに格納されている、移動対象ストレージ制御部21が配置されたストレージノード3のノード特定情報と、アクティブ側ノード特定情報欄31E(
図6)に格納されている当該ストレージノード3のノード特定情報とを、それぞれ増設ストレージノード3のノード特定情報に書き換える。
【0180】
またフロントエンド部20は、その行のストレージ制御部番号欄31Fに格納されているストレージ制御部番号を、選択ストレージ制御部21のストレージ制御部番号に書き換える。さらにフロントエンド部20は、その行の仮想ポート番号欄31G(
図6)に格納されている仮想ポート番号を、それまで移動対象ストレージ制御部21が対応付けられていた対応するホストボリュームHVOLに対応させて選択ストレージ制御部21に定義した仮想ポートVPT(
図4)の仮想ポート番号に書き換える。
【0181】
さらに、かかるフロントエンド部20は、マッピングテーブル32については、まず、移動対象ストレージ制御部21のストレージ制御部番号がストレージ制御部番号欄32E(
図7)に格納されている行を特定する。そしてフロントエンド部20は、その行のそのストレージ制御部番号欄32Eに格納されているストレージ制御部番号を、選択ストレージ制御部番号に書き換える。またフロントエンド部20は、その行のノード番号欄32D(
図7)に格納されているノード番号を、増設ストレージノード3のノード番号に書き換える。
【0182】
さらに、かかるフロントエンド部20は、フロントエンドターゲットテーブル33については、まず、ホストボリューム番号リスト欄33E(
図8)に対応するホストボリュームHVOLのボリューム番号が格納されている行を特定する。なお、かかるボリューム番号は、例えば、上述のようにしてマッピングテーブル32で特定した行のホストボリューム番号欄32A格納されたボリューム番号として取得することができる。
【0183】
そしてフロントエンド部20は、その行のターゲットIP欄33Dに格納されているIPアドレスを、増設ストレージノード3においてかかる対応するホストボリュームHVOLと対応付ける物理ポートPPT(
図4)のストレージサービスネットワーク5(
図1)上のIPアドレスに書き換える。
【0184】
そして、マスタクラスタ制御部25は、このようにしてストレージ制御部ペアテーブル30、フロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びフロントエンドターゲットテーブル33の更新が完了すると、更新されたこれらストレージ制御部ペアテーブル30、フロントエンドテーブルボリュームテーブル31、マッピングテーブル32)及びフロントエンドターゲットテーブル33の更新前後の差分の差分データをクラスタ7内の自ノード以外のストレージノード3にそれぞれ送信することにより、これらストレージ制御部ペアテーブル30、フロントエンドテーブルボリュームテーブル31、マッピングテーブル32及びフロントエンドターゲットテーブル33を同様に更新させる。
【0185】
またマスタクラスタ制御部25は、選択ストレージ制御部21にアクセスして、当該選択ストレージ制御部21が保持するストレージ制御部構成情報テーブル34の仮想ポート番号欄34A(
図9)及び内部ボリューム番号欄34B(
図9)に、自ノード内のフロントエンドテーブルボリュームテーブル31の仮想ポート番号欄31G(
図6)及び内部ボリューム番号欄31H(
図6)にそれぞれ格納されている値と同じ値を格納する。
【0186】
以上の処理により、増設ストレージノード3における選択ストレージ制御部21の環境が、移動対象ストレージ制御部21が配置されたストレージノード3における当該移動対象ストレージ制御部21の環境と同じに設定される。
【0187】
一方、コンピュートノード2は、この後、システム管理者の操作入力に基づいて管理ノード4から与えられる指示に応じて、自ノードからステップS44の増設処理で増設ストレージノード3内に定義された対応するターゲットTGまでのパスを設定するパス増設処理を実行する(S46)。またコンピュートノード2は、このようにして設定したパスを経由して、増設ストレージノード3のフロントエンド部20に対してそのターゲットTGにログインしたい旨のログイン要求を送信する(S47)。
【0188】
そして増設ストレージノード3のフロントエンド部20は、このログイン要求を受信すると、当該ログイン要求に応じたログイン処理を実行し(S48)、その処理結果をログイン要求の送信元のコンピュートノード2に送信する(S49)。
【0189】
(5)本情報処理システムにおけるライト処理及びリード処理の流れ
(5-1)ライト処理の流れ
次に本情報処理システム1におけるライト処理の流れについて説明する。
図15は、コンピュートノード2からクラスタ7を構成するいずれかのストレージノード3に対してライト要求が与えられた場合に当該クラスタ7内で実行されるライト処理の流れを示す。以下においては、クラスタ7内でライト要求を受信したストレージノード3を、適宜、「ライト要求受信ノード」と呼ぶものとする。
【0190】
なお、ライト要求では、上述のようにライト先のホストボリュームHVOLのボリューム番号と、そのホストボリュームHVOLにおけるライト先の記憶領域の先頭アドレスと、ライト対象のデータ(以下、これをライトデータと呼ぶ)のデータ長とが指定される。
【0191】
そして、「ライト要求受信ノード」の第1の通信装置13は、かかるライト要求を受信すると(S50)、受信したライト要求を自ノード内のフロントエンド部20に転送する(S51)。またフロントエンド部20は、転送されてきたライト要求に基づいて、必要な容量のバッファ領域をメモリ11(
図2)上に確保し(S52)、その後、バッファ領域を確保し終えた旨の完了通知を第1の通信装置13を介してライト要求の送信元のコンピュートノード2に送信する(S53,S54)。
【0192】
また「ライト要求受信ノード」の第1の通信装置13は、この後、かかるコンピュートノード2からライトデータが転送されてくると(S55)、このライトデータを自ノード内のフロントエンド部20に転送する(S56)。
【0193】
このライトデータを受領したフロントエンド部20は、受領したライトデータをステップS52で確保したバッファ領域に格納し(S57)、この後、そのライト要求に従ったライト処理が自ノードにおいて実行されるべき処理であるか否かを判定する(S58)。
【0194】
この判断は、マッピングテーブル32(
図7)の各行のうち、ライト要求においてライト先として指定されたホストボリュームHVOLに対応する行のノード番号欄32D(
図7)を参照して行われる。具体的に、フロントエンド部20は、かかるノード番号欄32Dに格納されたノード番号が自ノードのノード番号であった場合には、そのライト要求に従ったライト処理が自ノードにおいて実行されるべき処理であると判定する。またフロントエンド部20は、かかるノード番号欄32Dに格納されたノード番号が他のストレージノード3のノード番号であった場合には、そのライト要求に基づくライト処理が当該他のストレージノード3において実行されるべき処理であると判定する。
【0195】
そしてフロントエンド部20は、ステップS58において、そのライト要求に応じたライト処理が自ノードにおいて実行されるべきと判定した場合には、自ノード内のマッピングテーブル32におけるライト要求においてライト先として指定されたホストボリュームHVOLに対応する行のストレージ制御部番号欄32E(
図7)に格納されたストレージ制御部番号を取得し、そのストレージ制御部番号が付与された自ノード内のストレージ制御部(アクティブストレージ制御部)21にそのライト要求を転送する(S59)。なおフロントエンド部20は、この際、そのライト要求に含まれるライト先のホストボリュームHVOLのボリューム番号を、当該ホストボリュームHVOLと対応付けられた内部ボリュームIVOLのボリューム番号に書き換える。
【0196】
また、このライト要求を受領したストレージ制御部21は、図示しない管理テーブルを参照して、そのライト要求においてライト先として指定された内部ボリュームIVOL及び当該内部ボリュームIVOL内の記憶領域に対応付けられた論理チャンクLC(
図4)及び当該論理チャンクLC内の記憶領域を特定する。そしてストレージ制御部21は、このようにして特定したライトデータのライト先の論理チャンクLC及び当該論理チャンクLC内の記憶領域を指定したI/Oコマンドを生成し、これを自ノード内のバックエンド部23に送信する(S60)。
【0197】
バックエンド部23は、このI/Oコマンドを受領すると、図示しない管理テーブルを参照して、当該I/Oコマンドにおいて指定された論理チャンクLCに対応付けた各物理チャンクPC(
図4)をそれぞれ提供する記憶装置12(
図2)を特定する。またバックエンド部23は、特定した記憶装置12の1つが自ノード内に存在する場合には、その記憶装置12内の、I/Oコマンドで指定された論理チャンクLC及び当該論理チャンクLC内の記憶領域に対応する物理チャンクPCの記憶領域にライトデータを書き込む(S61)。そしてバックエンド部23は、このライトデータの記憶装置12への書込みが完了すると、その旨のライト完了通知を自ノードのストレージ制御部(アクティブストレージ制御部)21に送信する(S62)。
【0198】
またバックエンド部23は、ステップS61の処理と併せて、かかる論理チャンクLCに対応付けた残りの物理チャンクPCを提供する記憶装置12が存在するストレージノード3(以下、適宜、これを「他ノード2」と呼ぶ)内の対応するバックエンド部23に対して、かかるI/Oコマンド及びライトデータをバックエンドネットワーク6を介して転送する(S63)。この結果、そのストレージノード3(「他ノード2」)においてステップS61と同様のライト処理が実行され(S64)、当該ライト処理が完了すると、その旨のライト完了通知がバックエンドネットワーク6を介して「ライト要求受信ノード」のストレージ制御部21に与えられる。
【0199】
「ライト要求受信ノード」のトレージ制御部21は、自ノードのバックエンド部23からのかかるライト完了通知と、必要なすべての他のストレージノード3のバックエンド部23からのかかるライト完了通知とを受領すると、要求されたライト処理が完了した旨の完了通知をフロントエンド部20に通知する(S76)。また、この完了通知を受領したフロントエンド部20は、ライト要求に応じたライト処理が完了した旨の完了通知を第1の通信装置13及びストレージサービスネットワーク5を介して当該ライト要求の送信元のコンピュートノード2に送信する(S77,S78)。以上により、かかるライト要求に応じた一連のライト処理が終了する。
【0200】
一方、「ライト要求受信ノード」のフロントエンド部20は、ステップS58の判定において、そのライト要求に応じたライト処理は他のストレージノード3において実行されるべき処理であるとの判定が得られた場合、マッピングテーブル32(
図7)におけるライト要求においてライト先として指定されたホストボリュームHVOLに対応する行のノード番号欄32D(
図7)に格納されたノード番号が付与されたストレージノード3(以下、適宜、これを「他ノード1」と呼ぶ)にライト要求を転送する(S66)。このライト要求の転送は、バックエンドネットワーク6を介して行われる。
【0201】
そして、このライト要求を受信した「他ノード1」のフロントエンド部20は、受信したライト要求に基づいて、必要な容量のバッファ領域を自ノード内のメモリ11(
図2)上に確保する(S67)。
【0202】
また、かかるフロントエンド部20は、この後、自ノード内のメモリ11に格納されているマッピングテーブル32を参照して、そのマッピングテーブル32におけるライト要求においてライト先として指定されたホストボリュームHVOLに対応する行のストレージ制御部番号欄32E(
図7)に格納されたストレージ制御部番号を取得し、そのストレージ制御部番号が付与された自ノード内のストレージ制御部(アクティブストレージ制御部)21にそのライト要求を転送する(S68)。この際、フロントエンド部20は、ステップS67において必要な容量のバッファ領域を確保できたか否かの情報(以下、これをバッファ確保正否情報と呼ぶ)も併せてそのストレージ制御部21に通知する。
【0203】
そして、このライト要求を受領したストレージ制御部88は、上述のようにこのライト要求と共にフロントエンド部20から与えられたバッファ確保正否情報に基づいて、バッファ領域を確保できたか否かを判定し(S69)、その判定結果を自ノードのフロントエンド部20に送信する(S70)。かくして、この完了通知を受領したフロントエンド部20は、ステップS67で必要な容量のバッファ領域をメモリ11上に確保できたか否かの応答を、バックエンドネットワーク6を介して、「ライト要求受信ノード」のフロントエンド部20に送信する(S71)。
【0204】
この応答を受領した「ライト要求受信ノード」のフロントエンド部20は、「他ノード1」のフロントエンド部20が必要な容量のバッファ領域をメモリ11上に確保できなかった場合には、その旨のエラー通知を第1の通信装置13を介してライト要求の送信元のコンピュートノード2に送信し、この一連のライト処理を終了する。
【0205】
これに対して、かかる「ライト要求受信ノード」のフロントエンド部20は、「他ノード1」のフロントエンド部20が必要な容量のバッファ領域をメモリ11上に確保できた場合には、バックエンドネットワーク6を介して「他ノード1」にライトデータを転送する(S72)。
【0206】
また、このライトデータを受信した「他ノード1」のフロントエンド部20は、受信したライトデータをステップS67で確保したバッファ領域に格納する(S73)。この後、「他ノード1」において、ステップS59~ステップS61、ステップS63~ステップS64について上述したデータライト処理と同様のデータライト処理が実行され(S74)、このデータライト処理が完了すると、その旨のライト完了通知が「他ノード1」のフロントエンド部20からバックエンドネットワーク6を介して「ライト要求受信ノード」のストレージ制御部21に送信される(S75)。
【0207】
かくして、このとき「ライト要求受信ノード」のストレージ制御部21は、「他ノード1」のバックエンド部23からのライト完了通知と、必要なすべての他のストレージノード3のバックエンド部23からのライト完了通知とを受領すると、要求されたライト処理が完了した旨の完了通知を自ノードのフロントエンド部20に通知する(S76)。また、この完了通知を受領したフロントエンド部20は、ライト要求に応じたライト処理が完了した旨の完了通知を第1の通信装置13及びストレージサービスネットワーク5を介して当該ライト要求の送信元のコンピュートノード2に送信する(S77,S78)。以上により、かかるライト要求に応じた一連のライト処理が終了する。
【0208】
(5-2)リード処理の流れ
一方、
図16は、コンピュートノード2からクラスタ7を構成するいずれかのストレージノード3に対してリード要求が与えられた場合に当該クラスタ7内で実行されるリード処理の流れを示す。以下においては、クラスタ7内でリード要求を受信したストレージノード3を、適宜、「リード要求受信ノード」と呼ぶものとする。
【0209】
なお、リード要求では、リード先のホストボリュームHVOLのボリューム番号と、そのホストボリュームHVOLにおけるリード先の記憶領域の先頭アドレスと、リード対象のデータ(以下、これをリードデータと呼ぶ)のデータ長とが指定される。
【0210】
そして「リード要求受信ノード」の第1の通信装置13は、かかるリード要求を受信すると(S80)、受信したリード要求を自ノード内のフロントエンド部20に転送する(S81)。またフロントエンド部20は、転送されてきたリード要求を解析して、そのリード要求に従ったリード処理が自ノードにおいて実行されるべき処理であるか否かを判定する(S82)。
【0211】
この判断は、マッピングテーブル33(
図7)の各行のうち、リード要求においてリード先として指定されたホストボリュームHVOLに対応する行のノード番号欄32D(
図7)を参照して行われる。具体的に、フロントエンド部20は、かかるノード番号欄32Dに格納されたノード番号が自ノードのノード番号であった場合には、そのリード要求に従ったリード処理が自ノードにおいて実行されるべき処理であると判定する。またフロントエンド部20は、かかるノード番号欄に格納されたノード番号が他のストレージノード3のノード番号であった場合には、そのリード要求に基づくリード処理が当該他のストレージノード3において実行されるべき処理であると判定する。
【0212】
そしてフロントエンド部20は、ステップS82において、そのリード要求に応じたリード処理が自ノードにおいて実行されるべきと判定した場合には、自ノードのメモリ11(
図2)に格納されているマッピングテーブル32(
図7)におけるリード要求においてリード先として指定されたホストボリュームHVOLに対応する行のストレージ制御部番号欄32E(
図7)に格納されたストレージ制御部番号を取得し、そのストレージ制御部番号が付与された自ノード内のストレージ制御部(アクティブストレージ制御部)21にそのリード要求を転送する(S83)。なおフロントエンド部20は、この際、そのリード要求に含まれるリード先のホストボリュームHVOLのボリューム番号を、当該ホストボリュームHVOLと対応付けられた内部ボリュームIVOLのボリューム番号に書き換える。
【0213】
また、このリード要求を受領したストレージ制御部21は、図示しない管理テーブルを参照して、そのリード要求においてリード先として指定された内部ボリュームIVOL及び当該内部ボリュームIVOL内の記憶領域に対応付けられた論理チャンクLC及び当該論理チャンクLC内の記憶領域を特定する。そしてストレージ制御部21は、このようにして特定したリード先の論理チャンクLC及び当該論理チャンクLC内の記憶領域を指定したI/Oコマンドを生成し、これを自ノード内のバックエンド部23に送信する(S84)。
【0214】
バックエンド部23は、このI/Oコマンドを受領すると、図示しない管理テーブルを参照して、当該I/Oコマンドにおいて指定された論理チャンクLCに対応付けた各物理チャンクPCの中から1つの物理チャンクPCを提供する記憶装置12を特定する。ここでは、選択された物理チャンクPCが、「リード要求受信ノード」に搭載された記憶装置12により提供されているものとする。そしてバックエンド部23は、特定した記憶装置12内の、I/Oコマンドで指定された論理チャンクLC及び当該論理チャンクLC内の記憶領域に対応する物理チャンクPCの記憶領域に格納されているデータを読み出す(S85)。そしてバックエンド部23は、読み出したデータ(リードデータ)を自ノードのストレージ制御部21に送信する(S86)。
【0215】
このリードデータを受信したストレージ制御部21は、このリードデータを自ノードのフロントエンド部20に転送する(S87)。また、このリードデータを受領したフロントエンド部20は、そのリードデータを、第1の通信装置13を及びストレージサービスネットワーク5を介してリード要求の送信元のコンピュートノード2に送信する(S93,S94)。以上により、かかるリード要求に応じた一連のリード処理が終了する。
【0216】
一方、「リード要求受信ノード」のフロントエンド部20は、ステップS82の判定において、そのリード要求に応じたリード処理は他のストレージノード3において実行されるべき処理であるとの判定が得られた場合、マッピングテーブル32(
図7)におけるリード要求においてリード先として指定されたホストボリュームHVOLに対応する行のノード番号欄32D(
図7)に格納されたノード番号が付与されたストレージノード3(以下、適宜、これを「他ノード」と呼ぶ)にそのリード要求を転送する(S88)。このリード要求の転送は、バックエンドネットワーク6を介して行われる。
【0217】
そして、このリード要求を受信した「他ノード」のフロントエンド部20は、受信したリード要求の内容を解析する(S89)。また、かかるフロントエンド部20は、自ノードのメモリ11に格納されているマッピングテーブル32を参照して、そのマッピングテーブル32におけるリード要求においてリード先として指定されたホストボリュームHVOLに対応する行のストレージ制御部番号欄32E(
図7)に格納されたストレージ制御部番号を取得し、そのストレージ制御部番号が付与された自ノード内のストレージ制御部(アクティブストレージ制御部)21にそのリード要求を転送する(S90)。この際、そのリード要求に含まれるリード先のホストボリュームHVOLのボリューム番号を、当該ホストボリュームHVOLと対応付けられた内部ボリュームIVOLのボリューム番号に書き換える。
【0218】
この後、その「他ノード」において、ステップS84~ステップS86と同様のデータリード処理が実行され(S91)、このデータリード処理により対応する記憶装置12から読み出されたデータ(リードデータ)が「他ノード」のフロントエンド部20からバックエンドネットワーク6を介して「リード要求受信ノード」のフロントエンド部20に送信される(S92)。
【0219】
そして、このリードデータを受信した「リード要求受信ノード」のフロントエンド部20は、このリードデータを第1の通信装置13及びストレージサービスネットワーク6を介してリード要求の送信元のコンピュートノード2に転送する(S93,S94)。以上により、かかるリード要求に応じた一連のリード処理が終了する。
【0220】
(6)本実施の形態の効果
以上のように本実施の形態の情報処理システム1では、各ストレージノード3にそれぞれ配置されたストレージ制御部21と対応付けて内部ボリュームIVOLを作成すると共に、作成した内部ボリュームIVOLを、データをリード/ライトするための記憶領域としてコンピュートノード2に提供されるホストボリューム2と対応付ける。
【0221】
また本情報処理システム1では、コンピュートノード2からのI/O要求がストレージノード3に与えられた場合に、そのストレージノード3のフロントエンド部20が、そのI/O要求においてリード/ライト先として指定されたホストボリュームHVOLと対応付けられた内部ボリュームIVOLが配置されたストレージノード3を特定し、特定したストレージノード3が自ノードであった場合には、当該I/O要求を自ノード内の対応するストレージ制御部21に転送し、特定したストレージノード3が他のストレージノード3であった場合には、そのI/O要求をそのストレージノード3に転送する。
【0222】
従って、本情報処理システム1によれば、ストレージノード3のスケールアウトの有無に関わりなく、コンピュートノード2はI/O要求の発行先のストレージノード3を意識することなく所望するデータにアクセスすることができる。よって、本実施の形態によれば、拡張性の高い本情報処理システム1を実現できる。
【0223】
また本情報処理システム1によれば、スケールアウトに関連する処理はすべてフロントエンド部20が担当し、ストレージ制御部21は自ノード内で完結する処理のみを実行するため、ストレージ制御部21として既存のストレージ装置で利用していた制御ソフトウェアを転用することもできる。
【0224】
(7)他の実施の形態
なお上述の実施の形態においては、内部ボリュームIVOLとホストボリュームHVOLとを1対1で対応付けるようにした場合について述べたが、本発明はこれに限らず、1つの内部ボリュームIVOLに対して複数のホストボリュームHVOLを対応付けるようにしてもよい。
【0225】
また上述の実施の形態においては、本発明を
図1のように構成された情報処理システム1に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成の情報処理システムに広く適用することができる。
【0226】
さらに上述の実施の形態においては、各ストレージノード2内のフロントエンド部20、ストレージ制御部21及びバックエンド部23等をソフトウェア構成とするようにした場合について述べたが、本発明はこれに限らず、これらをハードウェア構成とするようにしてもよい。
【0227】
さらに上述の実施の形態においては、各ストレージノード3内にクラスタ制御部25をそれぞれ配置し、その中の1つのクラスタ制御部25をマスタクラスタ制御部25に選出して、当該マスタクラスタ制御部25に上述した各種処理を実行させるようにした場合について述べたが、本発明はこれに限らず、各ストレージノード3内にクラスタ制御部25を配置せず、かかるマスタクラスタ制御部25としての機能を有するサーバ装置等をストレージノード3とは別個に設けるようにしてもよい。
【0228】
また、サーバ上でハイパーバイザが動作し、ハイパーバイザ上で1又は複数の仮想計算機が稼働し、その仮想計算機上で、
図3に示す各種プログラムが動作してもよい。すなわち、各種プログラム(制御ソフト20、冗長化部22、クラスタ制御部23)は、物理計算機のハードウェア上で動作することもあれば、仮想計算機上で動作しても良い。同様に、コンピュートノード2は、仮想計算機上で動作するアプリケーションプログラム(ホストプログラム)であってもよいし、物理的なホスト計算機(ホストコンピュータ)であっても良い。情報処理システム1が複数のサーバを有するとき、サーバの一部が異なるサイトにあっても良い。また、情報処理システム1のサーバの一部又は全部がクラウド上にあって、ネットワークを介して、ユーザにサービスが提供されてもよい。
【0229】
各種プログラム(制御ソフト20、冗長化部22、クラスタ制御部23)が動作する仮想計算機と、ホストプログラムが動作する仮想計算機とが、同一のサーバ(ノード)上にある構成(ハイパーコンバージドインフラストラクチャ)であっても、ネットワークを介して接続する異なるサーバ上にある構成であってもよい。
【産業上の利用可能性】
【0230】
本発明は、複数のストレージノードを含む種々の構成のシステムに広く適用することができる。
【符号の説明】
【0231】
1……情報処理システム、2……コンピュートノード、3……ストレージノード、4……管理ノード、5……ストレージサービスネットワーク、6……バックエンドネットワーク、7……クラスタ、10……CPU、12……記憶装置、20……フロントエンド部、21……ストレージ制御部、22……容量制御部、23……バックエンド部、25……クラスタ制御部、28……ストレージ制御部ペア、30……ストレージ制御部ペアテーブル、31……フロントエンドテーブルボリュームテーブル、32……マッピングテーブル、33……フロントエンドターゲットテーブル、34……ストレージ制御部構成情報管理テーブル、35……グローバルプールボリュームテーブル、GVOL……グローバルプールボリューム、HVOL……ホストボリューム、IVOL……内部ボリューム、LC……論理チャンク、PC……物理チャンク、PPT……物理ポート、TG……ターゲット、VPT……仮想ポート。