(57)【要約】      （修正有）【課題】システム全体としての応答性能の劣化を防止しながら実用上十分なデータ保護を行い得る記憶システム及びその制御方法を提供する。【解決手段】処理手順において、それぞれ異なるストレージノードに配置された複数のストレージ制御部により構成されるストレージ制御部グループの第１のストレージ制御部は、、Ｉ／Ｏ要求を処理する第１の状態に設定されると共に、第２のストレージ制御部を当該Ｉ／Ｏ要求を処理しない第２の状態に設定し、第１又は第２の状態のストレージ制御部が配置されたストレージノードを少なくとも含む複数のストレージノードの物理記憶領域をストレージ制御部グループに割り当てるとともに、第１又は第２の状態のストレージ制御部が配置されたストレージノードの物理記憶領域をストレージ制御部グループに優先的に割り当てる。【選択図】図１３
2020091901.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージノードを有する記憶システムにおいて、
各々の前記ストレージノードは、
クラスタ内の複数の前記ストレージノードの各記憶デバイスがそれぞれ提供する容量を管理する容量制御部と、
Ｉ／Ｏ要求を受け付け、受け付けた前記Ｉ／Ｏ要求に応じたコマンドを生成して前記容量制御部に送信するストレージ制御部と、
を備え、
前記記憶システムは、
それぞれ異なる前記ストレージノードに配置された複数の前記ストレージ制御部が、ストレージ制御部グループを構成し、
前記ストレージ制御部グループの第１の前記ストレージ制御部が前記Ｉ／Ｏ要求を処理する第１の状態に設定されると共に、前記ストレージ制御部グループの第２の前記ストレージ制御部が当該Ｉ／Ｏ要求を処理しない第２の状態に設定され、
前記記憶デバイスに格納されるデータを、異なるストレージノードに格納される複数のデータを組みにしてデータ冗長化しており、
前記容量制御部は、
前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードを少なくとも含む複数の前記ストレージノードの物理記憶領域を前記ストレージ制御部グループに割り当てるとともに、当該物理記憶領域を当該ストレージ制御部グループに割り当てる際に、前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードの前記物理記憶領域を前記ストレージ制御部グループに優先的に割り当てる
ことを特徴とする記憶システム。
【請求項２】
一の前記ストレージノードに複数の前記ストレージ制御部グループを稼働させることが可能であり、
前記ストレージノードでは、前記ストレージ制御部グループごとに物理記憶領域が割り当てられる
ことを特徴とする請求項１に記載の記憶システム。
【請求項３】
前記第１の状態の前記ストレージ制御部が配置された前記ストレージノードに障害が発生した場合に、前記第２の状態の前記ストレージ制御部を前記第１の状態に変更するとともに、前記第１の状態の前記ストレージ制御部又は第２の状態の前記ストレージ制御部が配置された前記ストレージノードとは異なる前記ストレージノードに、前記第２の状態のストレージ制御部を生成して前記第１及び第２の状態の前記ストレージ制御部が属する前記ストレージ制御部グループに加え、
前記容量制御部は、
生成した前記第２の状態のストレージ制御部が配置された前記ストレージノードの前記物理記憶領域を、前記ストレージ制御部グループに割り当てる
ことを特徴とする請求項１に記載の記憶システム。
【請求項４】
前記障害の発生前に、前記第１の状態の前記ストレージ制御部が配置された前記ストレージノードを含む前記ストレージノードの前記物理記憶領域にマスタデータを格納し、前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードを含む前記ストレージノードの前記物理記憶領域にミラーデータを格納し、
前記障害の発生後に、前記ミラーデータをマスタデータに切り替え、前記生成した第２の状態の前記ストレージ制御部が配置された前記ストレージノードの前記物理記憶領域に、ミラーデータを作成する
ことを特徴とする請求項２に記載の記憶システム。
【請求項５】
前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードよりも前記第１の状態の前記ストレージ制御部が配置された前記ストレージノードをより優先的に割り当てる
ことを特徴とする請求項１に記載の記憶システム。
【請求項６】
同じデータを複数の前記ストレージノードに格納することによりデータ冗長化を行い、前記データには前記第１の状態の前記ストレージ制御部がライトを行うマスタデータとミラーデータが含まれており、
前記第１の状態の前記ストレージ制御部が配置された前記ストレージノードに前記第１の状態のストレージ制御部がリードを行うマスタデータを格納し、前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードに前記第１の状態のストレージ制御部がリードを行わないミラーデータを格納する
ことを特徴とする請求項２に記載の記憶システム。
【請求項７】
前記容量制御部は、前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードの前記物理記憶領域を前記ストレージ制御部グループに優先して割り当て、
前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードの前記物理記憶領域の空き容量が所定の閾値よりも小さくなった場合に、前記第１又は第２の状態の前記ストレージ制御部が配置された前記ストレージノード以外の前記ストレージノードの物理記憶領域を割り当てる
ことを特徴とする請求項１に記載の記憶システム。
【請求項８】
前記第１の状態の前記ストレージ制御部が配置された前記ストレージノードの前記閾値は、前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードの前記閾値よりも小さい
ことを特徴とする請求項７に記載の記憶システム。
【請求項９】
前記容量制御部は、
他の前記ストレージノードの前記物理記憶領域を前記ストレージ制御部グループに割り当てる場合に、前記データ冗長化したデータの組みの他のデータと同じ前記ストレージノードに格納されないように他の前記ストレージノードを選択して割り当てる
ことを特徴とする請求項１に記載の記憶システム。
【請求項１０】
前記データ冗長化は、同じデータを複数のストレージノードに格納することにより行う
ことを特徴とする請求項９に記載の記憶システム。
【請求項１１】
データの冗長化は、前記データから冗長コードを生成して、前記データが格納される前記ストレージノードとは異なる前記ストレージノードに当該冗長コードを格納することにより行う
ことを特徴とする請求項１に記載の記憶システム。
【請求項１２】
複数のストレージノードを有する記憶システムの制御方法において、
各々の前記ストレージノードは、
クラスタ内の複数の前記ストレージノードの各記憶デバイスがそれぞれ提供する容量を管理する容量制御部と、
Ｉ／Ｏ要求を受け付け、受け付けた前記Ｉ／Ｏ要求に応じたコマンドを生成して前記容量制御部に送信するストレージ制御部と、
を有し、
前記記憶システムでは、
それぞれ異なる前記ストレージノードに配置された複数の前記ストレージ制御部が、ストレージ制御部グループを構成し、
前記ストレージ制御部グループの第１の前記ストレージ制御部が前記Ｉ／Ｏ要求を処理する第１の状態に設定されると共に、前記ストレージ制御部グループの第２の前記ストレージ制御部が当該Ｉ／Ｏ要求を処理しない第２の状態に設定され、
前記記憶デバイスに格納されるデータを、異なるストレージノードに格納される複数のデータを組みにしてデータ冗長化しており、
前記容量制御部が、前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードを少なくとも含む複数の前記ストレージノードの物理記憶領域を前記ストレージ制御部グループに割り当てるとともに、当該物理記憶領域を当該ストレージ制御部グループに割り当てる第１のステップと、
前記容量制御部が、前記Ｉ／Ｏ要求に基づき前記第１の状態に設定された前記ストレージ制御部から送信される前記コマンドに応じて、当該ストレージ制御部が属する前記ストレージ制御部グループに割り当てた各前記物理記憶領域にデータをそれぞれライトし、又は、当該各物理記憶領域のうちの一の前記物理記憶領域からデータをリードする第２のステップと
を備え、
前記第１のステップでは、
前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードの前記物理記憶領域を前記ストレージ制御部グループに優先的に割り当てる
ことを特徴とする記憶システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶システム及びその制御方法に関し、例えば、それぞれ１又は複数のＳＤＳ（Software Defined Storage）が実装された複数のストレージノードを備える情報処理システムに適用して好適なものである。なお、以下において、ＳＤＳとは、ストレージ機能を有するソフトウェアを汎用のサーバ装置に実装することにより構築されるストレージ装置を指す。
【背景技術】
【０００２】
従来、情報処理システムにおいて、複数のストレージサブシステム間で容量を融通し合う技術が提案されている。
【０００３】
例えば、ホストから入出力コマンドを受信し、ホストに第１のボリュームを提供する第１のコントローラを含む第１のストレージシステムと、ホストから入出力コマンドを受信し、ホストに第２のボリュームを提供する第２のコントローラを含む第２のストレージシステムとを設け、第１のボリュームのうちの第１の記憶領域を第１のコントローラによって第１のプールから割り当て、第１のボリュームのうちの第２の記憶領域を第１のコントローラによって第２のプールから割り当て、第２のボリュームのうちの第３の記憶領域を第２のコントローラによって第１のプールから割り当て、第２のボリュームのうちの第４の記憶領域を第２のコントローラによって第２のプールから割り当てる技術がある。例えば、下記特許文献１に記載の技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−０４３４０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
分散ストレージシステム全体としての可用性及び信頼性の向上を考えた場合、コントローラを冗長化しておくことが望ましい。またホストからストレージシステムに書き込まれたデータについても、システム内で冗長化して記憶しておくことが可用性及び信頼性の点からも望ましい。
【０００６】
ただし、コントローラ及びデータを冗長化するに際しては、複数のノードで構成される分散ストレージシステム全体としての応答性能やデータ保護の観点から、冗長化したデータを何処に配置すべきかを十分に検討する必要がある。
【０００７】
本発明は以上の点を考慮してなされたもので、システム全体としての応答性能の劣化を防止しながらデータ保護を行い得る記憶システム及びその制御方法を提案しようとするものである。
【課題を解決するための手段】
【０００８】
かかる課題を解決するため本発明においては、複数のストレージノードを有する記憶システムにおいて、各々の前記ストレージノードは、クラスタ内の複数の前記ストレージノードの各記憶デバイスがそれぞれ提供する容量を管理する容量制御部と、Ｉ／Ｏ要求を受け付け、受け付けた前記Ｉ／Ｏ要求に応じたコマンドを生成して前記容量制御部に送信するストレージ制御部と、を備え、前記記憶システムは、それぞれ異なる前記ストレージノードに配置された複数の前記ストレージ制御部が、ストレージ制御部グループを構成し、前記ストレージ制御部グループの第１の前記ストレージ制御部が前記Ｉ／Ｏ要求を処理する第１の状態に設定されると共に、前記ストレージ制御部グループの第２の前記ストレージ制御部が当該Ｉ／Ｏ要求を処理しない第２の状態に設定され、前記記憶デバイスに格納されるデータを、異なるストレージノードに格納される複数のデータを組みにしてデータ冗長化しており、前記容量制御部は、前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードを少なくとも含む複数の前記ストレージノードの物理記憶領域を前記ストレージ制御部グループに割り当てるとともに、当該物理記憶領域を当該ストレージ制御部グループに割り当てる際に、前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードの前記物理記憶領域を前記ストレージ制御部グループに優先的に割り当てるようにした。
【０００９】
また本発明においては、複数のストレージノードを有する記憶システムの制御方法において、各々の前記ストレージノードは、クラスタ内の複数の前記ストレージノードの各記憶デバイスがそれぞれ提供する容量を管理する容量制御部と、Ｉ／Ｏ要求を受け付け、受け付けた前記Ｉ／Ｏ要求に応じたコマンドを生成して前記容量制御部に送信するストレージ制御部と、を有し、前記記憶システムでは、それぞれ異なる前記ストレージノードに配置された複数の前記ストレージ制御部が、ストレージ制御部グループを構成し、前記ストレージ制御部グループの第１の前記ストレージ制御部が前記Ｉ／Ｏ要求を処理する第１の状態に設定されると共に、前記ストレージ制御部グループの第２の前記ストレージ制御部が当該Ｉ／Ｏ要求を処理しない第２の状態に設定され、前記記憶デバイスに格納されるデータを、異なるストレージノードに格納される複数のデータを組みにしてデータ冗長化しており、前記容量制御部が、前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードを少なくとも含む複数の前記ストレージノードの物理記憶領域を前記ストレージ制御部グループに割り当てるとともに、当該物理記憶領域を当該ストレージ制御部グループに割り当てる第１のステップと、前記容量制御部が、前記Ｉ／Ｏ要求に基づき前記第１の状態に設定された前記ストレージ制御部から送信される前記コマンドに応じて、当該ストレージ制御部が属する前記ストレージ制御部グループに割り当てた各前記物理記憶領域にデータをそれぞれライトし、又は、当該各物理記憶領域のうちの一の前記物理記憶領域からデータをリードする第２のステップとを備え、前記第１のステップでは、前記第１の状態の前記ストレージ制御部が配置された前記ストレージノード及び前記第２の状態の前記ストレージ制御部が配置された前記ストレージノードの前記物理記憶領域を前記ストレージ制御部グループに優先的に割り当てるようにした。
【００１０】
本発明の記憶システム及び容量割当て方法によれば、ストレージ制御部グループに対して少なくとも２つの物理記憶領域が割り当てられ、これらの物理記憶領域にデータが冗長化されて格納されるためデータが保護される。また、ストレージ制御部グループに対しては、第１の状態に設定されたストレージ制御部が配置されたストレージノードの物理記憶領域と、第２の状態に設定されたストレージ制御部が配置されたストレージノードの物理記憶領域とを優先的に割り当てるため、これらの物理記憶領域に対するデータのリード／ライトを速やかに行うことができる。
【発明の効果】
【００１１】
本発明によれば、システム全体としての応答性能の劣化を防止しながらデータ保護を行い得る記憶システム及びその制御方法を実現できる。上記した以外の課題、構成及び効果は、以下の発明を実施するための形態の説明により明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態による情報処理システムの全体構成を示すブロック図である。
【図２】ストレージノードのハードウェア構成を示すブロック図である。
【図３】ストレージノードの論理構成を示すブロック図である。
【図４】本情報処理システムにおけるライト処理の流れの説明に供するブロック図である。
【図５】容量制御部の詳細構成を示すブロック図である。
【図６】ストレージノードのメモリ構成の説明に供するブロック図である。
【図７】ストレージ制御部ペア管理テーブルの構成を示す図表である。
【図８】物理チャンク管理テーブルの構成を示す図表である。
【図９】論理チャンク管理テーブルの構成を示す図表である。
【図１０】空き物理チャンク数管理テーブルの構成を示す図表である。
【図１１】ライト処理の処理手順を示すフローチャートである。
【図１２】リード処理の処理手順を示すフローチャートである。
【図１３】容量割当て処理の処理手順を示すフローチャートである。
【図１４】物理チャンク選択処理の処理手順を示すフローチャートである。
【図１５】フェイルオーバ処理の処理手順を示すフローチャートである。
【図１６】再冗長化処理の処理手順を示すフローチャートである。
【図１７】第２の実施の形態による情報処理システムの全体構成を示すブロック図である。
【図１８】フォールトセットを考慮したストレージ制御部ペアの構成例を示すブロック図である。
【図１９】第２の実施の形態における論理チャンクと物理チャンクとの対応付けの説明に供するブロック図である。
【図２０】ノード管理テーブルの構成を示す図表である。
【図２１】第２の実施の形態による物理チャンク選択処理の処理手順を示すフローチャートである。
【図２２】第３の実施の形態による情報処理システムの全体構成を示すブロック図である。
【図２３】第３の実施の形態の情報処理システムにおける階層制御機能の説明に供するブロック図である。
【図２４】第３の実施の形態による物理チャンク管理テーブルの構成を示す図表である。
【図２５】第３の実施の形態による論理チャンク管理テーブルの構成を示す図表である。
【図２６】第３の実施の形態による空き物理チャンク数管理テーブルの構成を示す図表である。
【図２７】第３の実施の形態による容量制御部の詳細構成を示すブロック図である。
【図２８】第３の実施の形態による容量割当て処理の処理手順を示すフローチャートである。
【図２９】第３の実施の形態による物理チャンク選択処理の処理手順を示すフローチャートである。
【図３０】他の実施の形態による情報処理システムの全体構成を示すブロック図である。
【図３１】他の実施の形態による容量割当て処理の処理手順を示すフローチャートである。
【図３２】他の実施の形態による物理チャンク選択処理の処理手順を示すフローチャートである。
【図３３】他の実施の形態による容量割当て処理の処理手順を示すフローチャートである。
【図３４】他の実施の形態による容量割当て処理の処理手順を示すフローチャートである。
【図３５】他の実施の形態による物理チャンク選択処理の処理手順を示すフローチャートである。
【図３６】仮想ボリューム管理テーブルの構成を示す図表である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の一実施の形態を詳述する。以下の記載及び図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明が実施の形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加や変更等を行うことができる。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は複数でも単数でも構わない。
【００１４】
以下の説明では、「テーブル」、「表」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ＸＸテーブル」、「ＸＸリスト」等を「ＸＸ情報」と呼ぶことがある。各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「ＩＤ」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
【００１５】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたＩＤを使用することがある。
【００１６】
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも１以上のプロセッサ（例えばＣＰＵ）によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又はインターフェースデバイス（例えば通信ポート）等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、又はホストであってもよい。プログラムを実行して行う処理の主体（例えばプロセッサ）は、処理の一部又は全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化及び復号化、又は圧縮及び伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
【００１７】
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ（例えばＣＰＵ）と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１８】
（１）第１の実施の形態
（１−１）本実施の形態による情報処理システムの構成
図１は、本実施の形態による情報処理システム１の構成を示す図である。この情報処理システム１は、例えばファイバーチャネル（Fibre Channel）、イーサネット（登録商標）又はＬＡＮ（Local Area Network）などから構成されるネットワーク２を介して相互に接続された複数のホスト装置３と、複数のストレージノード４と、管理ノード５とを備えて構成されている。
【００１９】
ホスト装置３は、ユーザ操作や実装されたアプリケーションプログラムからの要求に応じてストレージノード４に対してリード要求又はライト要求（以下、適宜、これらをまとめてＩ／Ｏ（Input/Output）要求と呼ぶ）を送信する汎用のコンピュータ装置である。なお、ホスト装置３は、仮想マシンのような仮想的なコンピュータ装置であってもよい。
【００２０】
ストレージノード４は、ホスト装置３に対してデータを読み書きするための記憶領域を提供する物理サーバ装置であり、図２に示すように、内部ネットワーク１０を介して相互に接続されたＣＰＵ（Central Processing Unit）１１、メモリ１２、複数の記憶デバイス１３及び通信装置１４を備えて構成される。各ストレージノード４は、ＣＰＵ１１、メモリ１２、記憶デバイス１３、通信装置１４を、それぞれ１以上備える。
【００２１】
ＣＰＵ１１は、ストレージノード４全体の動作制御を司るプロセッサである。またメモリ１２は、ＳＲＡＭ（Static RAM(Random Access Memory)）やＤＲＡＭ（Dynamic RAM）などの揮発性の半導体メモリから構成され、各種プログラムや必要なデータを一時的に保持するために利用される。メモリ１２に格納されたプログラムを、少なくとも１以上のＣＰＵ１１が実行することにより、後述のようなストレージノード４全体としての各種処理が実行される。
【００２２】
記憶デバイス１３は、ＳＳＤ（Solid State Drive）、ＳＡＳ（Serial Attached SCSI(Small Computer System Interface)）ハードディスクドライブ又はＳＡＴＡ（Serial ATA(Advanced Technology Attachment)）ハードディスクドライブなどの１又は複数種類の大容量の不揮発性記憶装置から構成され、ホスト装置３（図１）からのＩ／Ｏ要求に応じてデータをリード／ライトするための物理的な記憶領域を提供する。
【００２３】
通信装置１４は、ストレージノード４がネットワーク２（図１）を介してホスト装置３や、他のストレージノード４又は管理ノード５と通信を行うためのインタフェースであり、例えばＮＩＣ（Network Interface Card）やＦＣ（Fibre Channel）カードなどから構成される。通信装置１４は、ホスト装置３、他のストレージノード４又は管理ノード５との通信時におけるプロトコル制御を行う。
【００２４】
管理ノード５は、システム管理者が本情報処理システム１全体を管理するために利用するコンピュータ装置である。管理ノード５は、複数のストレージノード４をクラスタ６と呼ぶグループとして管理する。なお、図１では、クラスタ６が１つのみ設けられた例を示しているが、情報処理システム１内に複数のクラスタ６を設けるようにしてもよい。クラスタ６は、分散ストレージシステムと呼ばれてもよい。
【００２５】
図３は、本実施の形態によるストレージノード４の論理構成を示す。この図３に示すように、各ストレージノード４は、フロントエンドドライバ２０及びバックエンドドライバ２１と、１又は複数のストレージ制御部２２と、容量制御部２３とを備える。
【００２６】
フロントエンドドライバ２０は、通信装置１４（図２）を制御し、ストレージ制御部２２に対してホスト装置３や、他のストレージノード４又は管理ノード５との通信時における抽象化したインタフェースをＣＰＵ１１（図２）に提供する機能を有するソフトウェアである。またバックエンドドライバ２１は、自ストレージノード４内の各記憶デバイス１３（図２）を制御し、これら記憶デバイス１３との通信時における抽象化したインタフェースをＣＰＵ１１に提供する機能を有するソフトウェアである。
【００２７】
ストレージ制御部２２は、ＳＤＳ（Software Defined Storage）のコントローラとして機能するソフトウェアである。ストレージ制御部２２は、ストレージ制御ソフトウェアや、ストレージ制御プログラムと呼ばれてもよい。ストレージ制御部２２は、ホスト装置３からのＩ／Ｏ要求を受け付け、当該Ｉ／Ｏ要求に応じたＩ／Ｏコマンドを容量制御部２３に発行する。
【００２８】
本実施の形態の場合、ストレージノード４に実装された各ストレージ制御部２２は、別のストレージノード４に配置された他のストレージ制御部２２と共に冗長化構成を構成するペアとして管理される。以下においては、このペアをストレージ制御部ペア２５と呼ぶものとする。
【００２９】
なお図３では、２つのストレージ制御部２２により１つのストレージ制御部ペア２５が構成される場合を示しており、以下においても、２つのストレージ制御部２２によりストレージ制御部ペア２５が構成されるものとして説明を進めるが、３つ以上のストレージ制御部２２により１つの冗長化構成を構成するようにしてもよい。
【００３０】
ストレージ制御部ペア２５では、一方のストレージ制御部２２がホスト装置３からのＩ／Ｏ要求を受け付けることができる状態（現用系の状態であり、以下、これをアクティブモードと呼ぶ）に設定され、他方のストレージ制御部２２がホスト装置３からのリード要求やライト要求を受け付けない状態（待機系の状態であり、以下、これをパッシブモードと呼ぶ）に設定される。
【００３１】
そしてストレージ制御部ペア２５では、アクティブモードに設定されたストレージ制御部２２（以下、これをアクティブストレージ制御部２２と呼ぶ）やそのアクティブストレージ制御部２２が配置されたストレージノード４に障害が発生した場合などに、それまでパッシブモードに設定されていたストレージ制御部２２（以下、これをパッシブストレージ制御部２２と呼ぶ）の状態がアクティブモードに切り替えられる。これにより、アクティブストレージ制御部２２が稼働し得なくなった場合に、当該アクティブストレージ制御部２２が実行していたＩ／Ｏ処理を、パッシブストレージ制御部２２により引き継ぐことができる。
【００３２】
容量制御部２３は、各ストレージ制御部ペア２５に対して自ストレージノード４内又は他のストレージノード４内の記憶デバイス１３が提供する物理的な記憶領域を割り当てると共に、ストレージ制御部２２から与えられる上述のＩ／Ｏコマンドに従って、指定されたデータを対応する記憶デバイス１３にリード／ライトする機能を有するソフトウェアである。容量制御部２３は、容量制御ソフトウェアや、容量制御プログラムと呼ばれてもよい。
【００３３】
この場合、容量制御部２３は、ストレージ制御部ペア２５に対して他のストレージノード４内の記憶デバイス１３が提供する物理的な記憶領域を割り当てたときには、当該他のストレージノード４に実装された容量制御部２３と協働して、その容量制御部２３との間でネットワーク２を介してデータをやり取りすることにより、そのストレージ制御部ペア２５のアクティブストレージ制御部２２から与えられたＩ／Ｏコマンドに従ってそのデータをその記憶領域にリード／ライトする。
【００３４】
以上の構成を有する本情報処理システム１において、容量制御部２３は、図４に示すように、各ストレージノード４内の記憶デバイス１３がそれぞれ提供する物理的な記憶領域を、それぞれ所定大きさの物理記憶領域（以下、これを物理チャンクと呼ぶ）ＰＣに分割して管理する。
【００３５】
また容量制御部２３は、各ストレージ制御部ペア２５（図３）に対してそれぞれ専用のプールＰＬを対応付け、これらプールＰＬに物理チャンクＰＣと同じ大きさの論理的な記憶領域（以下、これを論理チャンク）ＬＣを適宜割り当て、この論理チャンクＬＣに対して１又は複数の物理チャンクＰＣを対応付ける。
【００３６】
さらに各ストレージ制御部ペア２５のプールＰＬ上には１又は複数の仮想的な論理ボリューム（以下、これを仮想ボリュームと呼ぶ）ＶＶＯＬが定義され、これらの仮想ボリュームＶＶＯＬがホスト装置３に提供される。
【００３７】
そしてホスト装置３は、かかる仮想ボリュームＶＶＯＬにデータをライトする場合、そのデータのライト先の仮想ボリューム（以下、これをライト対象仮想ボリュームと呼ぶ）ＶＶＯＬの識別子（ＬＵＮ：Logical Unit Number）と、そのライト対象仮想ボリュームＶＶＯＬにおけるそのデータのライト先の領域（以下、これをライト先領域と呼ぶ）ＷＡＲとを指定したライト要求を、対応するクラスタ６内のいずれかのストレージノード４に送信する。
【００３８】
このライト要求を受信したストレージノード４のフロントエンドドライバ２０は、受信したライト要求において指定されたライト対象仮想ボリュームＶＶＯＬとプールＰＬを介して対応付けられたストレージ制御部ペア２５（図３）のアクティブストレージ制御部２２（図３）又はパッシブストレージ制御部２２が配置されている各ストレージノード４のフロントエンドドライバ２０にそのライト要求、及び、当該ライト要求と共にホスト装置３から送信されてきたライト対象のデータ（以下、これをライトデータと呼ぶ）を転送する。
【００３９】
また、このライト要求及びライトデータを受領したストレージノード４のフロントエンドドライバ２０は、これらライト要求及びライトデータを、ライト要求において指定されたライト対象仮想ボリュームＶＶＯＬとプールＰＬを介して対応付けられたストレージ制御部ペア２５のストレージ制御部２２に引き渡す。
【００４０】
そして、これらライト要求及びライトデータが引き渡されたストレージ制御部２２のうちのアクティブストレージ制御部２２は、ライト対象仮想ボリュームＶＶＯＬ内のライト先領域ＷＡＲに対して、当該ライト対象仮想ボリュームＶＶＯＬと対応付けられたプールＰＬを構成する論理チャンクＬＣから必要に応じて記憶領域（以下、これを論理領域と呼ぶ）を割り当てる。
【００４１】
また、かかるアクティブストレージ制御部２２は、ライト要求において指定されたライト対象仮想ボリュームＶＶＯＬ内のライト先領域ＷＡＲのアドレスを、そのライト先領域ＷＡＲに論理領域を割り当てた論理チャンクＬＣのチャンク番号と、当該論理領域のオフセット位置とに変換したＩ／Ｏコマンドを生成し、生成したＩ／Ｏコマンドをライトデータと共に自ストレージノード４内の容量制御部２３に送信する。
【００４２】
そして容量制御部２３は、このＩ／Ｏコマンド及びライトデータを受信すると、当該Ｉ／Ｏコマンドで指定された論理チャンクＬＣに対応付けた各物理チャンクＰＣをそれぞれ提供する各記憶デバイス１３内のかかるオフセット位置の記憶領域にデータをそれぞれ格納する。
【００４３】
このようにして本情報処理システム１では、ホスト装置３からのデータが対応する論理チャンクＬＣに対応付けられた複数の物理チャンクＰＣに冗長化されて格納される。このため論理チャンクＬＣに割り当てられる物理チャンクＰＣの数は、その情報処理システム１における冗長化方式の設定内容によって決定される。
【００４４】
例えば、データを二重化して記憶する設定の場合には、１つの論理チャンクＬＣに対して２つの物理チャンクＰＣが対応付けられ、データを三重化以上に多重化して記憶する設定の場合や、Erasure-Codingのようにデータから冗長化データを作成して記憶する設定がなされている場合などには、３つ以上の必要な数の物理チャンクＰＣが１つの論理チャンクＬＣに対応付けられる。
【００４５】
なお１つの論理チャンクＬＣに複数の物理チャンクＰＣが対応付けられ、これら複数の物理チャンクＰＣにデータを多重化して格納する場合、これら複数の物理チャンクＰＣの中から１つの物理チャンクＰＣが「マスタ」に設定され、残りの物理チャンクＰＣがすべて「ミラー」に設定される。そして、後述のように、物理チャンクＰＣからのデータリードは「マスタ」に設定された物理チャンクＰＣから行われる。またＥＣ（Erasure Coding）の場合には、１つの論理チャンクＬＣに複数の物理チャンクＰＣが対応付けられ、これら複数の物理チャンクＰＣにマスタデータ及び冗長データが所定パターンで格納される。
【００４６】
一方、ホスト装置３は、仮想ボリュームＶＶＯＬからデータを読み出す場合、その仮想ボリューム（以下、これをリード対象仮想ボリュームと呼ぶ）ＶＶＯＬのＬＵＮと、そのリード対象仮想ボリュームＶＶＯＬにおけるそのデータのリード先の記憶領域（以下、これをリード先領域と呼ぶ）とを指定したリード要求をそのリード対象仮想ボリュームＶＶＯＬが含まれるクラスタ６内のいずれかのストレージノード４に送信する。
【００４７】
このリード要求を受信したストレージノード４のフロントエンドドライバ２０は、受信したリード要求において指定されたリード対象仮想ボリュームＶＶＯＬとプールＰＬを介して対応付けられたストレージ制御部ペア２５のアクティブストレージ制御部２２又はパッシブストレージ制御部２２が配置された各ストレージノード４にそのリード要求をそれぞれ転送する。
【００４８】
また、このリード要求を受領したかかるストレージノード４のフロントエンドドライバ２０は、このリード要求を当該リード要求において指定されたリード対象仮想ボリュームＶＶＯＬとプールＰＬを介して対応付けられたストレージ制御部ペア２５のストレージ制御部２２に引き渡す。
【００４９】
かくして、このリード要求が引き渡されたかかるストレージ制御部２２のうちのアクティブストレージ制御部２２は、リード対象仮想ボリュームＶＶＯＬ内のリード先領域のアドレスを、当該リード先領域に論理領域を割り当てた論理チャンクＬＣのチャンク番号と、当該論理領域のオフセット位置とに変換したＩ／Ｏコマンドを生成し、生成したＩ／Ｏコマンドを自ストレージノード４内の容量制御部２３に送信する。
【００５０】
容量制御部２３は、このＩ／Ｏコマンドを受信すると、当該Ｉ／Ｏコマンドで指定された論理チャンクＬＣと対応付けられた各物理チャンクＰＣのうち、「マスタ」に設定された物理チャンクＰＣ内のＩ／Ｏコマンドで指定されたオフセット位置の記憶領域からデータを読み出し、読み出したデータをリードデータとしてＩ／Ｏコマンドの送信元のアクティブストレージ制御部２２に転送する。かくして、このリードデータは、この後、かかるアクティブストレージ制御部２２によりネットワーク２を介してかかるリード要求の送信元のホスト装置３に転送される。
【００５１】
（１−２）論理チャンクに対する物理チャンクの割当て
ところで、上述のように１つの論理チャンクＬＣに複数の物理チャンクＰＣを対応付け、これらの物理チャンクＰＣにデータをそれぞれ格納することによりデータを冗長化する冗長化方式を採用する場合、データ保護の観点からも、１つの論理チャンクＬＣに対応付ける複数の物理チャンクＰＣをそれぞれ異なるストレージノード４が提供する物理チャンクＰＣから選択することが望ましい。これは、例えば、１つの論理チャンクＬＣに対して同じストレージノード４内の複数の物理チャンクＰＣを対応付けた場合、そのストレージノード４が障害等によりデータの読み出しを行えなくなったときにデータロストが発生することになるからである。
【００５２】
そこで本情報処理システム１では、容量制御部２３がストレージ制御部ペア２５に論理チャンクＬＣを割り当て、その論理チャンクＬＣに複数の物理チャンクＰＣを対応付ける際に、これら複数の物理チャンクＰＣをそれぞれ互いに異なる複数のストレージノード４が提供する物理チャンクＰＣの中から選択することとしている。
【００５３】
一方で、論理チャンクＬＣと対応付ける物理チャンクＰＣを、アクティブストレージ制御部２２が配置されたストレージノード４とは別のストレージノード４内の物理チャンクＰＣから選択することとした場合、そのアクティブストレージ制御部２２からのＩ／Ｏコマンドを受領した容量制御部２３（アクティブストレージ制御部２２と同じストレージノード４内の容量制御部２３）がその物理チャンクＰＣにデータをリード／ライトする際に、その物理チャンクＰＣを提供するストレージノード４との間の通信が必要となり、その分、システム全体としての応答性能が悪くなるという問題がある。従って、論理チャンクＬＣに複数の物理チャンクＰＣを対応付けるに際しては、その物理チャンクＰＣのうちの１つを、アクティブストレージ制御部２２が配置されたストレージノード４内の記憶デバイス１３が提供する物理チャンクＰＣの中から選択する方がシステム全体の応答性能の観点からも望ましい。
【００５４】
また、ストレージ制御部ペア２５におけるアクティブストレージ制御部２２が配置されたストレージノード４に障害が発生した場合に、パッシブストレージ制御部２２がアクティブモードに切り替えられることを考慮すると、上述と同様の理由により、論理チャンクＬＣに対応付ける物理チャンクＰＣのうちの１つは、パッシブストレージ制御部２２が配置されたストレージノード４内の記憶デバイス１３が提供する物理チャンクＰＣの中から選択する方がシステム全体の応答性能の観点からも望ましい。
【００５５】
そこで本情報処理システム１では、容量制御部２３がストレージ制御部ペア２５に論理チャンクＬＣを割り当て、その論理チャンクＬＣに複数の物理チャンクＰＣを対応付ける際に、当該ストレージ制御部ペア２５のアクティブストレージ制御部２２が配置されたストレージノード４内の記憶デバイス１３が提供する物理チャンクＰＣと、当該ストレージ制御部ペア２５のパッシブストレージ制御部２２が配置されたストレージノード４内の記憶デバイス１３が提供する物理チャンクＰＣとを優先的にその論理チャンクＬＣに対応付ける容量優先割当て機能が容量制御部２３に搭載されている。
【００５６】
ただし、１つのストレージ制御部ペア２５に割り当てられたプールＰＬ内の論理チャンクＬＣに対して、そのストレージ制御部ペア２５を構成するアクティブストレージ制御部２２やパッシブストレージ制御部２２が配置されたストレージノード４から物理チャンクＰＣを無制限に対応付けると、そのストレージノード４にアクティブストレージ制御部２２やパッシブストレージ制御部２２が配置された他のストレージ制御部ペア２５の論理チャンクＬＣに対してそのストレージノード４内の記憶デバイス１３から物理チャンクＰＣを対応付けられなくなるという問題がある。
【００５７】
そこで、かかる容量優先割り当て機能には、ストレージ制御部ペア２５に対し、当該ストレージ制御部ペア２５のアクティブストレージ制御部２２が配置されたストレージノード４や、当該ストレージ制御部ペア２５のパッシブストレージ制御部２２が配置されたストレージノード４から割り当てる物理チャンクＰＣの容量を抑制する機能も含まれている。
【００５８】
このような容量優先割当て機能を実現するための手段として、容量制御部２３は、図５に示すように、容量割当て処理部３０、物理チャンク選択処理部３１、フェイルオーバ処理部３２及び再冗長化処理部３３を備えている。また図６に示すように、各ストレージノード４のメモリ１２には、上述したフロントエンドドライバ２０、バックエンドドライバ２１、１又は複数のストレージ制御部２２及び容量制御部２３に加えて、ストレージ制御部ペア管理テーブル３４、物理チャンク管理テーブル３５、論理チャンク管理テーブル３６、空き物理チャンク数管理テーブル３７、仮想ボリューム管理テーブル７０が格納されている。
【００５９】
容量割当て処理部３０は、ストレージ制御部ペア２５に割り当てられる論理チャンクＬＣに対して物理チャンクＰＣを対応付ける機能を有するプログラムである。また物理チャンク選択処理部３１は、例えば、容量割当て処理部３０が論理チャンクＬＣに物理チャンクＰＣを対応付ける過程で呼び出され、当該論理チャンクＬＣに対応付ける物理チャンクＰＣを選択する機能を有するプログラムである。
【００６０】
またフェイルオーバ処理部３２は、各ストレージ制御部ペア２５について、アクティブストレージ制御部２２が配置されたストレージノード４をそれぞれ監視し、そのストレージノード４に障害が発生した場合に、そのストレージ制御部ペア２５のアクティブストレージ制御部２２が実行していたＩ／Ｏ処理を当該ストレージ制御部ペア２５のパッシブストレージ制御部２２に引き継がせる機能を有するプログラムである。
【００６１】
実際上、フェイルオーバ処理部３２は、ストレージ制御部ペア２５のアクティブストレージ制御部２２が配置されたストレージノード４の障害を検出した場合、そのストレージ制御部ペア２５のパッシブストレージ制御部２２の状態をアクティブモードに切り替えることにより、そのストレージ制御部ペア２５のアクティブストレージ制御部２２が実行していたＩ／Ｏ処理を当該ストレージ制御部ペア２５のパッシブストレージ制御部２２に引き継がせる。
【００６２】
さらに再冗長化処理部３３は、各ストレージ制御部ペア２５について、そのストレージ制御部ペア２５に割り当てられた論理チャンクＬＣと対応付けられた各物理チャンクＰＣを提供する各ストレージノード４をそれぞれ監視し、いずれかのストレージノード４に障害が発生した場合に、当該ストレージノード４が提供する物理チャンクＰＣに代えて他のストレージノード４が提供する物理チャンクＰＣをその論理チャンクＬＣに対応付ける機能を有するプログラムである。この再冗長化処理部３３の処理により、かかる論理チャンクＬＣに書き込まれたデータの格納先が再冗長化される。
【００６３】
一方、ストレージ制御部ペア管理テーブル３４は、容量制御部２３が各ストレージ制御部ペア２５の構成を管理するために利用するテーブルであり、図７に示すように、ストレージ制御部ペア番号欄３４Ａ、アクティブ側配置先ノード番号欄３４Ｂ、パッシブ側配置先ノード番号欄３４Ｃ、ＬＵＮ欄３４Ｄを備えて構成される。ストレージ制御部ペア管理テーブル３４では、１つの行が１つのストレージ制御部ペア２５に対応する。
【００６４】
そしてストレージ制御部ペア番号欄３４Ａには、対応するクラスタ６内に定義された各ストレージ制御部ペア２５にそれぞれ付与されたそのストレージ制御部ペア２５に固有の番号（ペア番号）がすべて格納される。
【００６５】
またアクティブ側配置先ノード番号欄３４Ｂには、対応するストレージ制御部ペア２５のアクティブストレージ制御部２２が配置されたストレージノード４に付与されたそのストレージノード４に固有の番号（ノード番号）が格納され、パッシブ側配置先ノード番号欄３４Ｃには、そのストレージ制御部ペア２５のパッシブストレージ制御部２２が配置されたストレージノード４のノード番号が格納される。
【００６６】
さらにＬＵＮ欄３４Ｄには、ホスト３に提供される仮想ボリュームを識別する識別情報であるＬＵＮが格納され、当該ＬＵＮで識別される仮想ボリュームを管理するストレージ制御部ペア番号、アクティブ側配置先ノード番号、パッシブ側配置先ノード番号と対応づけて管理される。
【００６７】
各ストレージノード４のフロントエンドドライバ２０は、ホスト３からＩ／Ｏ要求（リード要求又はライト要求）を受領した際、Ｉ／Ｏ要求に含まれるＬＵＮを取得し、ストレージ制御部ペア管理テーブル３４を用いて当該ＬＵＮに対応付けられたストレージ制御部ペア番号、アクティブ側配置先ノード番号、パッシブ側配置先ノード番号を特定する。これにより、各ストレージノード４のフロントエンドドライバ２０は、Ｉ／Ｏ要求先となる仮想ボリュームを管理するストレージ制御部ペアと、そのストレージ制御部ペアの配置先ノードを特定できる。
【００６８】
従って、図７の例の場合、「１」というペア番号が付与されたストレージ制御部ペア２５は、アクティブストレージ制御部２２が「１」というノード番号が付与されたストレージノード４に配置され、パッシブストレージ制御部２２が「２」というノード番号が付与されたストレージノード４に配置されていることが示されている。
【００６９】
物理チャンク管理テーブル３５は、容量制御部２３がクラスタ６内に定義された物理チャンクＰＣを管理するために利用するテーブルであり、図８に示すように、物理チャンク番号欄３５Ａ、所属ノード番号欄３５Ｂ、ドライブ番号欄３５Ｃ及びドライブ内オフセット欄３５Ｄを備えて構成される。物理チャンク管理テーブル３５では、１つの行が１つの物理チャンクＰＣに対応する。
【００７０】
そして物理チャンク番号欄３５Ａには、クラスタ６内の各物理チャンクＰＣにそれぞれ付与されたその物理チャンクＰＣに固有の番号（物理チャンク番号）がすべて格納され、所属ノード番号欄３５Ｂには、対応する物理チャンクＰＣを提供するストレージノード４のノード番号が格納される。
【００７１】
またドライブ番号欄３５Ｃには、対応する物理チャンクＰＣを提供するストレージノード４内のその物理チャンクＰＣを提供する記憶デバイス１３に付与されたその記憶デバイス１３に固有の番号（ドライブ番号）が格納される。さらにドライブ内オフセット欄３５Ｄには、その記憶デバイス１３が提供する記憶領域におけるその物理チャンクＰＣの当該記憶領域の先頭からのオフセット位置が格納される。
【００７２】
従って、図８の例の場合、物理チャンク番号が「０」の物理チャンクＰＣは、ストレージ番号が「０」のストレージノード４に搭載されたドライブ番号が「０」の記憶デバイス１３における先頭から「0x00000」だけオフセットした位置から始まる所定大きさの記憶領域であることが示されている。
【００７３】
論理チャンク管理テーブル３６は、容量制御部２３がクラスタ６内に定義された論理チャンクＬＣを管理するために利用するテーブルであり、図９に示すように、論理チャンク番号欄３６Ａ、割当て先ストレージ制御部ペア番号欄３６Ｂ、マスタ物理チャンク番号欄３６Ｃ及びミラー物理チャンク番号欄３６Ｄを備えて構成される。論理チャンク管理テーブル３６では、１つの行が１つの論理チャンクＬＣに対応する。
【００７４】
そして論理チャンク番号欄３６Ａには、クラスタ６内の各論理チャンクＬＣにそれぞれ付与されたその論理チャンクＬＣに固有の番号（論理チャンク番号）が格納され、割当て先ストレージ制御部ペア番号欄３６Ｂには、対応する論理チャンクＬＣが割り当てられたストレージ制御部ペア２５のペア番号が格納される。
【００７５】
またマスタ物理チャンク番号欄３６Ｃには、対応する論理チャンクＬＣと対応付けられた複数の物理チャンクＰＣのうち、「マスタ」に設定された物理チャンクＰＣの物理チャンク番号が格納され、ミラー物理チャンク番号欄３６Ｄには、かかる複数の物理チャンクＰＣのうち、「ミラー」に設定された物理チャンクＰＣの物理チャンク番号が格納される。
【００７６】
従って、図９の例の場合、論理チャンク番号が「０」の論理チャンクＬＣは、ペア番号が「０」のストレージ制御部ペア２５に割り当てられており、その論理チャンクＬＣには、「マスタ」に設定されたチャンク番号が「０」の物理チャンクＰＣと、「ミラー」に設定されたチャンク番号が「４」の物理チャンクＰＣとが対応付けられていることが示されている。
【００７７】
図３６は、仮想ボリューム管理テーブル７０の構成を示す。仮想ボリューム管理テーブル７０は、各仮想ボリュームの領域と当該領域に対応付けられた論理チャンクの対応関係を管理するために利用するテーブルであり、図３６に示すように、ＬＵＮ欄７０Ａ、ＶＶＯＬアドレス欄７０Ｂ、論理チャンク番号欄７０Ｃ及び論理チャンクアドレス欄７０Ｄを備えて構成される。
【００７８】
ＬＵＮ欄７０Ａ及びＶＶＯＬアドレス欄７０Ｂには、ホスト３に提供される仮想ボリュームを識別する識別情報であるＬＵＮとその仮想ボリュームのアドレス（ＶＶＯＬアドレス）がそれぞれ格納され、論理チャンク番号欄７０Ｃ及び論理チャンクアドレス欄７０Ｄには、当該ＬＵＮとＶＶＯＬアドレスで識別される仮想ボリュームの領域に割り当てられた論理チャンクの論理チャンク番号と当該論理チャンクのアドレス（論理チャンクアドレス）がそれぞれ格納される。ＬＵＮ欄７０Ａ、ＶＶＯＬアドレス欄７０Ｂ、論理チャンク番号欄７０Ｃ及び論理チャンクアドレス欄７０Ｄの情報は、仮想ボリュームの領域ごとに対応付けて管理されている。
【００７９】
ＶＶＯＬアドレス欄７０Ｂには、例えば当該仮想ボリュームの領域を示すアドレスの範囲が格納されてもよいし、又は、当該仮想ボリュームの領域の先頭アドレスが格納されてもよい。同様に、論理チャンクアドレス欄７０Ｄには、例えば当該論理チャンクの領域を示すアドレスの範囲が格納されてもよいし、又は、当該論理チャンクの領域の先頭アドレスが格納されてもよい。
【００８０】
各ストレージノード４のストレージ制御部２２は、Ｉ／Ｏ要求（リード要求又はライト要求）を受領した際、Ｉ／Ｏ要求に含まれるＬＵＮとＶＶＯＬアドレスを取得し、仮想ボリューム管理テーブル７０を用いて当該ＬＵＮ及びＶＶＯＬアドレスに対応づけられた論理チャンク番号及び論理チャンクアドレスを特定する。これにより、各ストレージノード４のストレージ制御部２２は、Ｉ／Ｏ要求先となる仮想ボリュームの領域に割り当てられた論理チャンクの領域を特定できる。
【００８１】
この仮想ボリューム管理テーブル７０について、例えば当該クラスタ（分散ストレージシステム）６が提供する全仮想ボリュームに関する仮想ボリューム管理テーブル７０を各ノードで共有してもよいし、例えばストレージ制御部ペア２５毎に、当該ストレージ制御部ペア２５が提供する仮想ボリュームに関する仮想ボリューム管理テーブル７０を管理してもよい。
【００８２】
空き物理チャンク数管理テーブル３７は、各ストレージノード４におけるいずれの論理チャンクＬＣにも未だ対応付けられていない未使用の物理チャンクＰＣ（以下、これを空き物理チャンクＰＣと呼ぶ）の総数を容量制御部２３が管理するために利用するテーブルであり、図１０に示すように、ノード番号欄３７Ａ及び空き物理チャンク数欄３７Ｂを備えて構成される。空き物理チャンク数管理テーブル３７では、１つの行が１つのストレージノード４に対応する。
【００８３】
そしてノード番号欄３７Ａには、クラスタ６内に存在するすべてのストレージノード４のノード番号がそれぞれ格納され、空き物理チャンク数欄３７Ｂには、対応するストレージノード４内の空物理チャンクの総数が格納される。
【００８４】
従って、図１０の例の場合、ノード番号が「０」のストレージノード４には空き物理チャンクＰＣがなく（空き物理チャンク数が「０」）、ノード番号が「１」のストレージノード４には「10」個の空き物理チャンクＰＣが存在していることが示されている。
【００８５】
（１−３）ストレージノードにおいて実行される各種処理
（１−３−１）ライト処理
図１１は、ストレージ制御部ペア２５のアクティブストレージ制御部２２が、当該ストレージ制御部ペア２５と対応付けられた仮想ボリュームＶＶＯＬをライト対象とするライト要求を受信した場合に実行されるライト処理の流れを示す。
【００８６】
かかるライト要求をアクティブストレージ制御部２２が受信すると、この図１１に示すライト処理が開始され、まず、そのライト要求を受信したアクティブストレージ制御部２２が、容量仮想化機能や、ローカルコピー機能及びリモートコピー機能等の必要な機能に関する必要な処理を実行する（Ｓ１）。
【００８７】
この後、そのアクティブストレージ制御部２２は、ライト対象の仮想ボリューム（ライト対象仮想ボリューム）ＶＶＯＬ内の当該ライト要求において指定されたライト先領域のアドレスを、対応する論理チャンクＬＣのチャンク番号と、当該論理チャンクＬＣ内の対応する論理領域のオフセット位置とに変換したＩ／Ｏコマンドを生成し（Ｓ２）、生成したＩ／Ｏコマンドを自ストレージノード４内の容量制御部２３に送信する（Ｓ３）。なお、以下においては、かかるライト要求において指定されたライト対象仮想ボリュームＶＶＯＬのライト先領域に対して既に論理チャンクＬＣから論理領域が割り当てられているものとする。
【００８８】
このＩ／Ｏコマンドを受領した容量制御部２３は、ホスト装置３からのライト要求において指定されたライト対象仮想ボリュームＶＶＯＬにおけるライト先領域に論理領域を割り当てた論理チャンクＬＣと対応付けられているすべての物理チャンクＰＣをライト先物理チャンクＰＣとして選択する（Ｓ４）。
【００８９】
続いて、容量制御部２３は、選択したライト先物理チャンクＰＣのいずれかが、記憶デバイス１３の障害等により閉塞されている状態（以下、この状態を「閉塞中」と呼ぶ）、又は、データのコピー中（以下、これを「リビルド中」と呼ぶ）であって、かかるライト要求において指定されたリード先領域に対応する記憶デバイス１３内の記憶領域へのデータコピーが未だ完了していない状態のいずれかの状態にあるか否かを判定する（Ｓ５）。
【００９０】
そして容量制御部２３は、この判定で否定結果を得るとステップＳ７に進む。これに対して、容量制御部２３は、ステップＳ５の判定で肯定結果を得ると、「閉塞中」のライト先物理チャンクＰＣ又は「リビルド中」であって、かつライト先領域に対応する記憶領域へのデータコピーが未だ完了していない物理チャンクＰＣをライト先物理チャンクＰＣから除外し（Ｓ６）、この後、ステップＳ７に進む。
【００９１】
また容量制御部２３は、ステップＳ７に進むと、物理チャンク管理テーブル３５（図８）を参照して、すべてのライト先物理チャンクＰＣについて、それぞれそのライト先物理チャンクＰＣを提供する記憶デバイス１３のドライブ番号と、当該記憶デバイス１３におけるそのライト先物理チャンクＰＣのオフセット位置とを取得する（Ｓ７）。
【００９２】
そして容量制御部２３は、取得したこれらの情報に基づいて、そのときかかるアクティブストレージ制御部２２がライト要求と共に受信したライトデータをすべてのライト先物理チャンクＰＣ内の対応する記憶領域にそれぞれ格納する（Ｓ８）。以上により、このライト処理が終了する。
【００９３】
（１−３−２）リード処理
一方、図１２は、ストレージ制御部ペア２５のアクティブストレージ制御部２２が、当該ストレージ制御部ペア２５と対応付けられた仮想ボリュームＶＶＯＬをリード対象とするリード要求を受信した場合に実行される処理の流れを示す。
【００９４】
かかるリード要求をアクティブストレージ制御部２２が受信すると、この図１２に示すリード処理が開始され、まず、そのリード要求を受信したアクティブストレージ制御部２２が、容量仮想化機能や、ローカルコピー機能及びリモートコピー機能等の必要な機能に関する必要な処理を実行する（Ｓ１０）。
【００９５】
この後、そのアクティブストレージ制御部２２は、リード対象の仮想ボリューム（リード対象仮想ボリューム）ＶＶＯＬ内の当該リード要求において指定されたリード先領域のアドレスを、対応する論理チャンクＬＣのチャンク番号と、当該論理チャンクＬＣ内の対応する論理領域のオフセット位置とに変換したＩ／Ｏコマンドを生成し（Ｓ１１）、生成したＩ／Ｏコマンドを自ストレージノード４内の容量制御部２３に送信する（Ｓ１２）。
【００９６】
このＩ／Ｏコマンドを受領した容量制御部２３は、ホスト装置３からのリード要求において指定されたリード対象仮想ボリュームＶＶＯＬにおける当該リード要求において指定されたリード先領域に論理領域を割り当てた論理チャンクＬＣと対応付けられているすべての物理チャンクＰＣのうち、「マスタ」に設定されている物理チャンクＰＣをリード先物理チャンクＰＣとして選択する（Ｓ１３）。
【００９７】
続いて、容量制御部２３は、選択したリード先物理チャンクＰＣが「閉塞中」又は「リビルド中」のいずれかの状態にあるか否かを判定する（Ｓ１４）。そして容量制御部２３は、この判定で肯定結果を得ると、リード要求において指定されたリード対象仮想ボリュームＶＶＯＬのリード先領域に論理領域を割り当てた論理チャンクＬＣと対応付けられている物理チャンクＰＣのうち、未だステップＳ１４の判定を行っていない物理チャンクＰＣを新たなリード先物理チャンクＰＣとして選択する（Ｓ１５）。また容量制御部２３は、ステップＳ１４に戻り、この後ステップＳ１４で否定結果を得るまでステップＳ１４−ステップＳ１５−ステップＳ１４のループを繰り返す。
【００９８】
そして容量制御部２３は、やがて条件に合致する物理チャンクＰＣを検出することによりステップＳ１４で否定結果を得ると、リード先物理チャンクＰＣを提供する記憶デバイス１３のドライブ番号と、当該記憶デバイス１３におけるそのリード先物理チャンクＰＣのオフセット位置とを物理チャンク管理テーブル３５（図８）から取得する（Ｓ１６）。
【００９９】
また容量制御部２３は、取得したこれらの情報に基づいて、ホスト装置３からのリード要求において指定されたデータをその記憶デバイス１３から読み出し（Ｓ１７）、読み出したリードデータを、かかるＩ／Ｏコマンドの送信元のアクティブストレージ制御部２２に返信した後（Ｓ１８）、このリード処理を終了する。なお、このリードデータを受領したアクティブストレージ制御部２２は、この後、このリードデータをリード要求の送信元のホスト装置３に転送する。
【０１００】
なお、データ対象のデータがＥＣ（Erasure Coding）により冗長データと共に複数の物理チャンクＰＣに分散されて格納されている場合には、容量制御部２３は、上述のステップＳ１３において、これら複数のすべての物理チャンクＰＣをリード先物理チャンクＰＣとして選択する。
【０１０１】
また容量制御部２３は、ステップＳ１４において、選択したリード先物理チャンクＰＣの少なくとも１つが「閉塞中」又は「リビルド中」のいずれかの状態にあるか否かを判定する。そして容量制御部２３は、この判定で否定結果を得た場合には、各リード先物理チャンクＰＣについてステップＳ１６及びステップＳ１７を上述と同様に実行することによりこれらリード先物理チャンクＰＣからデータをそれぞれ読み出す。また容量制御部２３は、読み出したこれらのデータに基づいて元のデータを生成した上で、ステップＳ１８において、生成したデータをリードデータとしてかかるＩ／Ｏコマンドの送信元のアクティブストレージ制御部２２に返信し、この後、このリード処理を終了する。
【０１０２】
これに対して、容量制御部２３は、ステップＳ１４において肯定結果を得た場合には、「閉塞中」又は「リビルド中」でない残りのリード先物理チャンクＰＣについてステップＳ１６及びステップＳ１７を上述と同様に実行することにより、これらのリード先物理チャンクＰＣからデータをそれぞれ読み出す。また容量制御部２３は、読み出したこれらのデータに基づいて、「閉塞中」又は「リビルド中」のリード先物理チャンクＰＣに格納されているデータを復元し、復元したデータを用いて元のデータを生成した上で、ステップＳ１８において、生成したデータをリードデータとしてかかるＩ／Ｏコマンドの送信元のアクティブストレージ制御部２２に返信し、この後、このリード処理を終了する。
【０１０３】
（１−３−３）容量割当て処理
一方、図１３は、同一ストレージノード４内のアクティブストレージ制御部２２から、当該アクティブストレージ制御部２２が属するストレージ制御部ペア２５に対する最初又は追加の記憶容量（物理チャンクＰＣ）の割当てを要求された容量制御部２３の容量割当て処理部３０（図５）により実行される容量割当て処理の処理手順を示す。
【０１０４】
容量割当て処理部３０は、かかる要求が与えられると、この図１３に示す容量割当て処理を開始し、まず、ストレージ制御部ペア管理テーブル３４（図７）を参照して、記憶容量を割当てるべきストレージ制御部ペア２５（以下、これを対象ストレージ制御部ペア２５と呼ぶ）を構成する各ストレージ制御部２２がそれぞれ配置されたストレージノード４のノード番号をすべて取得する（Ｓ２０）。
【０１０５】
続いて、容量割当て処理部３０は、対象ストレージ制御部ペア２５内のアクティブストレージ制御部２２が配置されたストレージノード４を優先ノードに設定する（Ｓ２１）。また容量割当て処理部３０は、対象ストレージ制御部ペア２５内のアクティブストレージ制御部２２が配置されたストレージノード４における空き物理チャンクの合計容量の下限値をアクティブ用空き容量閾値として設定する（Ｓ２２）。なお、このアクティブ用空き容量閾値の値は、本情報処理システム１の設置等の際にシステム管理者などが設定する形態であっても、また予めプログラム上の定数として指定されている形態あってもよい。
【０１０６】
次いで、容量割当て処理部３０は、物理チャンク選択処理部３１（図５）を呼び出し、対象ストレージ制御部ペア２５に割り当てる論理チャンクＬＣに対応付けるべき物理チャンクＰＣの選択を依頼する（Ｓ２３）。かくして、この依頼を受領した物理チャンク選択処理部３１は、クラスタ６内の空き物理チャンクＰＣの中から対象ストレージ制御部ペア２５の論理チャンクＬＣに割り当てるべき物理チャンクＰＣを、優先ノード（ここでは、アクティブストレージ制御部２２が配置されたストレージノード４）内の空き物理チャンクＰＣから優先的に選択し、選択した空き物理チャンクＰＣのチャンク番号を容量割当て処理部３０に通知する。
【０１０７】
そして容量割当て処理部３０は、かかる空き物理チャンクＰＣのチャンク番号が物理チャンク選択処理部３１から通知されると、そのチャンク番号の物理チャンクＰＣを「マスタ」の物理チャンクＰＣとして確保する（Ｓ２４）。
【０１０８】
次いで、容量割当て処理部３０は、対象ストレージ制御部ペア２５のパッシブストレージ制御部２２が配置されたストレージノード４を優先ノードに設定する（Ｓ２５）。また容量割当て処理部３０は、対象ストレージ制御部ペア２５内のパッシブストレージ制御部２２が配置されたストレージノード４における空き物理チャンクＰＣの合計容量の下限値をパッシブ用空き容量閾値として設定する（Ｓ２６）。なお、このパッシブ用空き容量閾値の値も、本情報処理システム１の設置等の際にシステム管理者などが設定する形態であっても、また予めプログラム上の定数として指定されている形態あってもよい。
【０１０９】
さらに容量割当て処理部３０は、ステップＳ２４で確保した、「マスタ」に設定された物理チャンクＰＣを提供するストレージノード４を除外ノードに設定する（Ｓ２７）。
【０１１０】
続いて、容量割当て処理部３０は、物理チャンク選択処理部３１（図５）を呼び出し、対象ストレージ制御部ペア２５に割り当てる論理チャンクＬＣに対応付けるべき物理チャンクＰＣの選択を依頼する（Ｓ２８）。かくして、この依頼を受領した物理チャンク選択処理部３１は、クラスタ６内の空き物理チャンクＰＣの中から対象ストレージ制御部ペア２５の論理チャンクＬＣに割り当てるべき物理チャンクＰＣを、優先ノード（ここでは、パッシブストレージ制御部２２が配置されたストレージノード４）内の空き物理チャンクＰＣから優先的に選択し、選択した空き物理チャンクＰＣのチャンク番号を容量割当て処理部３０に通知する。
【０１１１】
そして容量割当て処理部３０は、かかる空き物理チャンクＰＣのチャンク番号が物理チャンク選択処理部３１から通知されると、そのチャンク番号の物理チャンクＰＣを「ミラー」の物理チャンクＰＣとして確保する（Ｓ２９）。
【０１１２】
続いて、容量割当て処理部３０は、新たな論理チャンクＬＣを作成し、作成した論理チャンクＬＣに対して、ステップＳ２４で確保した物理チャンクＰＣと、ステップＳ２９で確保した物理チャンクＰＣとを対応付ける（Ｓ３０）。また容量割当て処理部３０は、ステップＳ３０で作成した論理チャンクＬＣを対象ストレージ制御部ペア２５のプールＰＬに割り当てる（Ｓ３１）。
【０１１３】
そして容量割当て処理部３０は、この後、この追加容量割当て処理を終了する。各ストレージノード４の容量割当て処理部３０は、パッシブ用空き容量閾値とアクティブ用空き容量閾値を同じ値に設定してもよいし、異なる値に設定してもよい。また、パッシブ用空き容量閾値とアクティブ用空き容量閾値の其々について、ストレージノード４で共通の値でもよいし、ストレージノード４毎に異なる値でもよい。
【０１１４】
ストレージノード４の容量割当て処理部３０は、パッシブ用空き容量閾値をアクティブ用空き容量閾値より高い値に設定してもよい。この場合、当該ストレージノード４の空き容量がパッシブ用空き容量閾値を下回るがアクティブ用空き容量閾値を上回るとき、当該ストレージノードの記憶領域からパッシブストレージ制御部２２のデータ用には新たにミラー物理チャンクの割り当てを行わないが、アクティブストレージ制御部２２のデータ用には新たにマスタ物理チャンクの割り当てが可能となる。これにより、ストレージノード４において、アクティブストレージ制御部２２からアクセスされるマスタ物理チャンクを、ミラー物理チャンクより優先的に割り当て可能となる。
【０１１５】
（１−３−４）物理チャンク選択処理
図１４は、上述の容量割当て処理のステップＳ２３及びステップＳ２８において容量割当て処理部３０から対象ストレージ制御部ペア２５に割り当てる論理チャンクに対応付ける物理チャンクＰＣを選択するよう依頼を受けた物理チャンク選択処理部３１により実行される物理チャンク選択処理の処理内容を示す。
【０１１６】
物理チャンク選択処理部３１は、かかる依頼が容量割当て処理部３０から与えられると、この図１４に示す物理チャンク選択処理を開始し、まず、かかる依頼と共に容量割当て処理部３０から通知される優先ノードのノード番号を取得する（Ｓ４０）。
【０１１７】
また物理チャンク選択処理部３１は、除外ノードが設定されている場合に、かかる依頼と共に容量割当て処理部３０から通知されるその除外ノードのノード番号も取得する（Ｓ４１）。
【０１１８】
さらに物理チャンク選択処理部３１は、かかる依頼と共に容量割当て処理部３０から通知されるアクティブ用空き容量閾値（ステップＳ２３の依頼の場合）、又は、パッシブ用空き容量閾値（ステップＳ２８の依頼の場合）を取得する（Ｓ４２）。
【０１１９】
続いて、物理チャンク選択処理部３１は、優先ノードが除外ノードではなく、かつ優先ノードに合計容量がアクティブ用空き容量閾値（ステップＳ２３の依頼の場合）、又は、パッシブ用空き容量閾値（ステップＳ２８の依頼の場合）以上の空き物理チャンクＰＣが存在するか否かを判定する（Ｓ４３）。なお、この判定は、空き物理チャンク数管理テーブル３７（図１０）を参照して行われる。
【０１２０】
そして物理チャンク選択処理部３１は、この判定で肯定結果を得ると、物理チャンク管理テーブル３５（図８）を参照して、優先ノード内の空き物理チャンクＰＣの中から空き物理チャンクＰＣを１つ選択し（Ｓ４４）、選択した空き物理チャンクＰＣのチャンク番号を容量割当て処理部３０に通知した後（Ｓ４７）、この物理チャンク選択処理を終了する。
【０１２１】
これに対して、物理チャンク選択処理部３１は、ステップＳ４３の判定で否定結果を得ると、クラスタ６内の優先ノード及び除外ノード以外のストレージノード４の中から１つのストレージノード４を選択する（Ｓ４５）。このときのストレージノード４の選択方法としては、例えば、空き物理チャンク数管理テーブル３７を参照して、空き物理チャンクＰＣの数が最も多いストレージノード４を選択する方法を適用することができる。
【０１２２】
続いて、物理チャンク選択処理部３１は、ステップＳ４５で選択したストレージノード４内の空き物理チャンクＰＣの中から１つの空き物理チャンクＰＣを選択する（Ｓ４６）。また物理チャンク選択処理部３１は、選択した空き物理チャンクＰＣのチャンク番号を容量割当て処理部３０に通知し（Ｓ４７）、この後、この物理チャンク選択処理を終了する。
【０１２３】
（１−３−５）フェイルオーバ処理
一方、図１５は、容量制御部２３のフェイルオーバ処理部３２（図５）により定期的に実行されるフェイルオーバ処理の処理手順を示す。
【０１２４】
フェイルオーバ処理部３２は、このフェイルオーバ処理を開始すると、まず、クラスタ６内のすべてのストレージ制御部ペア２５についてステップＳ５１以降の処理を実行し終えたか否かを判断する（Ｓ５０）。
【０１２５】
そしてフェイルオーバ処理部３２は、この判断で否定結果を得ると、クラスタ６内の全ストレージ制御部ペア２５の中からステップＳ５１で未選択のストレージ制御部ペア２５を１つ選択し（Ｓ５１）、選択したストレージ制御部ペア２５（以下、これを第１の選択ストレージ制御部ペア２５と呼ぶ）のアクティブストレージ制御部２２が配置されたストレージノード４に障害が発生しているか否かを判断する（Ｓ５２）。
【０１２６】
フェイルオーバ処理部３２は、この判断で否定結果を得るとステップＳ５０に戻り、この後、第１の選択ストレージ制御部ペア２５を未処理の他のストレージ制御部ペア２５に順次切り替えながら、ステップＳ５０以降の処理を繰り返す。
【０１２７】
これに対して、フェイルオーバ処理部３２は、ステップＳ５２の判断で肯定結果を得ると、第１の選択ストレージ制御部ペア２５のパッシブストレージ制御部２２の状態をアクティブモードに切り替え、当該ストレージ制御部ペア２５のアクティブストレージ制御部２２の状態をパッシブモードに切り替える（Ｓ５３）。
【０１２８】
続いて、フェイルオーバ処理部３２は、論理チャンク管理テーブル３６（図９）を参照して、第１の選択ストレージ制御部ペア２５に割り当てられている論理チャンクＬＣがあるか否かを判断する（Ｓ５４）。
【０１２９】
そしてフェイルオーバ処理部３２は、この判断で否定結果を得るとステップＳ５０に戻り、この後、第１の選択ストレージ制御部ペア２５を未処理の他のストレージ制御部ペア２５に順次切り替えながらステップＳ５０以降の処理を繰り返す。
【０１３０】
これに対して、フェイルオーバ処理部３２は、ステップＳ５４の判断で肯定結果を得ると、第１の選択ストレージ制御部ペア２５に割り当てられた論理チャンクＬＣに対応付けられている物理チャンクＰＣの「マスタ」及び「ミラー」の設定を切り替える（Ｓ５５）。
【０１３１】
具体的に、フェイルオーバ処理部３２は、ストレージ制御部ペア管理テーブル３４（図７）における第１の選択ストレージ制御部ペア２５に対応する行のアクティブ配置先ノード番号欄３４Ｂ（図７）に格納されているノード番号と、その行のパッシブ配置先ノード番号欄３４Ｃ（図７）に格納されているノード番号とを入れ替えるように、ストレージ制御部ペア管理テーブル３４を更新する（Ｓ５５）。
【０１３２】
次いで、フェイルオーバ処理部３２は、ステップＳ５０に戻り、この後、第１の選択ストレージ制御部ペア２５を未処理の他のストレージ制御部ペア２５に順次切り替えながらステップＳ５０以降の処理を繰り返す。
【０１３３】
そしてフェイルオーバ処理部３２は、やがてクラスタ６内に定義されたすべてのストレージ制御部ペア２５についてステップＳ５２以降の処理を実行し終えることによりステップＳ５０で肯定結果を得ると、このフェイルオーバ処理を終了する。
【０１３４】
（１−３−６）再冗長化処理
他方、図１６は、容量制御部２３の再冗長化処理部３３（図５）により定期的に実行される再冗長化処理の処理手順を示す。
【０１３５】
再冗長化処理部３３は、この再冗長化処理を開始すると、まず、クラスタ６内のすべてのストレージ制御部ペア２５についてステップＳ６１以降の処理を実行し終えたか否かを判断する（Ｓ６０）。
【０１３６】
そして再冗長化処理部３３は、この判断で否定結果を得ると、クラスタ６内の全ストレージ制御部ペア２５の中から未だステップＳ６１で未選択のストレージ制御部ペア２５を１つ選択し（Ｓ６１）、選択したストレージ制御部ペア（以下、これを第２の選択ストレージ制御部ペアと呼ぶ）２５に割り当てられているいずれかの論理チャンクＬＣに対応付けられたいずれかの物理チャンクＰＣを提供する記憶デバイス１３、又は、当該記憶デバイス１３が搭載されたストレージノード４に障害が発生しているか否かを判断する（Ｓ６２）。
【０１３７】
再冗長化処理部３３は、この判断で否定結果を得るとステップＳ６０に戻り、この後、第２の選択ストレージ制御部ペア２５を未処理の他のストレージ制御部ペア２５に順次切り替えながら、ステップＳ６０以降の処理を繰り返す。
【０１３８】
これに対して、再冗長化処理部３３は、ステップＳ６２の判断で肯定結果を得ると、かかる障害が発生したストレージノード４が提供する物理チャンク（以下、これを障害物理チャンクと呼ぶ）ＰＣが「マスタ」に設定された物理チャンクＰＣであるか否かを判断する（Ｓ６３）。
【０１３９】
そして再冗長化処理部３３は、この判断で肯定結果を得ると、第２の選択ストレージ制御部ペア２５のアクティブストレージ制御部２２が配置されたストレージノード４を優先ノードに設定する（Ｓ６４）。また再冗長化処理部３３は、ステップＳ６３の判断で否定結果を得ると、第２の選択ストレージ制御部ペア２５のパッシブストレージ制御部２２が配置されたストレージノード４を優先ノードに設定する（Ｓ６５）。
【０１４０】
続いて、再冗長化処理部３３は、第２の選択ストレージ制御部ペア２５に割り当てられているいずれかの論理チャンクＬＣに対応付けられたいずれかの物理チャンクＰＣを提供するストレージノード４であって、障害が発生していないストレージノード４を除外ノードに設定する（Ｓ６６）。
【０１４１】
次いで、再冗長化処理部３３は、物理チャンク選択処理部３１（図５）を呼び出して図１４について上述した物理チャンク選択処理を実行させることにより、ステップＳ６２で検出した障害物理チャンクＰＣの代わりとなる物理チャンクＰＣを選択させる（Ｓ６７）。
【０１４２】
そして再冗長化処理部３３は、この後、ステップＳ６７で物理チャンク選択処理部３１により選択された物理チャンク（以下、これを被選択物理チャンクと呼ぶ）ＰＣを、ステップＳ６２で検出した障害物理チャンクＰＣに代えて第２の選択ストレージ制御部ペア２５に割り当てられた対応する論理チャンク（以下、これを再冗長化対象論理チャンクと呼ぶ）ＬＣに対応付ける（Ｓ６８）。
【０１４３】
具体的に、再冗長化処理部３３は、論理チャンク管理テーブル３６（図９）における再冗長化対象論理チャンクＰＣに対応する行のマスタ物理チャンク番号欄３６Ｃ（障害物理チャンクＰＣが「マスタ」の場合）又はミラー物理チャンク番号欄３６Ｄ（障害物理チャンクＰＣが「ミラー」の場合）に格納されている障害物理チャンクＰＣのチャンク番号を被選択物理チャンクＰＣのチャンク番号に書き換える。
【０１４４】
また再冗長化処理部３３は、このステップＳ６８において、空き物理チャンク数管理テーブル３７（図１０）における被選択物理チャンクＰＣを提供するストレージノード４に対応する行の空き物理チャンク数欄３７Ｂ（図１０）に格納されている数値を「１」減少させた値に更新する。
【０１４５】
さらに再冗長化処理部３３は、障害物理チャンクＰＣが「マスタ」に設定された物理チャンクＰＣであった場合には、このステップＳ６８において、障害物理チャンクＰＣと共に再冗長化対象論理チャンクＬＣに対応付けられていた物理チャンクＰＣであって「ミラー」に設定されていた物理チャンクＰＣのうち、アクティブストレージ制御部２２が配置されたストレージノード４が提供する物理チャンクＰＣを「マスタ」に切り替える。具体的に、再冗長化処理部３３は、論理チャンク管理テーブル３６（図９）における再冗長化対象論理チャンクＬＣに対応する行のマスタ物理チャンク番号欄３６Ｃ（図９）に格納されているチャンク番号と、その行のミラー物理チャンク番号欄３６Ｄ（図９）に格納されているチャンク番号とを入れ替える。
【０１４６】
この後、再冗長化処理部３３は、上述の被選択物理チャンクＰＣの状態を「リビルド中」に設定する（Ｓ６９）。また再冗長化処理部３３は、それまで障害物理チャンクＰＣに格納されていたデータをこの被選択物理チャンクＰＣに復元するリビルド処理を実行する（Ｓ７０）。
【０１４７】
具体的に、再冗長化処理部３３は、障害物理チャンクＰＣに格納されていたデータが他の物理チャンクＰＣにミラーリングされている場合には、当該他の物理チャンクＰＣに格納されているデータを被選択物理チャンクＰＣにフルコピーする。また障害物理チャンクＰＣに格納されていたデータがErasure-Codingのデータの一部である場合には、そのデータを他のデータを利用して復元し、復元したデータを被選択物理チャンクＰＣに格納する。
【０１４８】
そして再冗長化処理部３３は、このリビルド処理が完了するとステップＳ６０に戻り、この後、第２の選択ストレージ制御部ペア２５を未処理の他のストレージ制御部ペア２５に順次切り替えながらステップＳ６０以降の処理を繰り返す。
【０１４９】
そして再冗長化処理部３３は、やがてクラスタ６内に定義されたすべてのストレージ制御部ペア２５についてステップＳ６１以降の処理を実行し終えることによりステップＳ６０で肯定結果を得ると、この再冗長化処理を終了する。
【０１５０】
（１−４）本実施の形態の効果
以上のように構成された本実施の形態の情報処理システム１では、ストレージ制御部ペア２５に対して少なくとも２つの物理チャンクＰＣが割り当てられ、これらの物理チャンクＰＣにデータが二重化されて格納されるためデータが保護される。
【０１５１】
また本情報処理システム１では、これら２つの物理チャンクＰＣとして、ストレージ制御部ペア２５を構成するアクティブストレージ制御部２２が配置されたストレージノード４内の記憶デバイス１３が提供する物理チャンクＰＣと、当該ストレージ制御部ペア２５を構成するパッシブストレージ制御部２２が配置されたストレージノード４内の記憶デバイス１３が提供する物理チャンクＰＣとが選定される。
【０１５２】
従って、かかるストレージ制御部ペア２５を構成するアクティブストレージ制御部２２や、アクティブモードに切り替えられたパッシブストレージ制御部２２がこれらの物理チャンクＰＣのうちの対応する物理チャンクＰＣに迅速にアクセスすることができ、当該物理チャンクＰＣに対するデータのリード／ライトを速やかに行うことができる。
【０１５３】
よって、本情報処理システム１によれば、システム全体としての応答性能の劣化を防止しながらデータ保護を行うことができる。
【０１５４】
（２）第２の実施の形態
第１の実施の形態のようにストレージ制御部ペア２５に論理チャンクＬＣを割り当て、その論理チャンクＬＣに複数の物理チャンクＰＣを対応付けることによりデータを冗長化する場合、論理チャンクＬＣに対応付ける物理チャンクＰＣを選択するに際しては、フォールトセット（Fault Set）についても考慮することが望ましい。ここで、「フォールトセット」とは、単一の電源障害によって障害が発生するおそれがあるストレージノード４のグループを意味する。
【０１５５】
例えば、１つのストレージノード４の障害によりデータロスト等が発生するのを防止すべく、１つの論理チャンクＬＣに対応付ける複数の物理チャンクＰＣを、それぞれ異なるストレージノード４が提供する物理チャンクＰＣの中から選択したとしても、これらのストレージノード４が同じ電源から電力を取得している場合には、その電源がダウンした段階でその論理チャンクＬＣに対応付けたすべての物理チャンクＰＣに対するデータのリード／ライトを行えなくなる。
【０１５６】
そこで本実施の形態においては、論理チャンクＬＣに複数の物理チャンクＰＣを対応付ける際に、フォールトセットを意識してその論理チャンクＬＣに対応付ける物理チャンクＰＣを選択する。具体的には、１つの論理チャンクＬＣに対応付ける物理チャンクＰＣとして、異なるフォールトセットに属するストレージノード４がそれぞれ提供する物理チャンクＰＣを選択するようにする。
【０１５７】
また、このように１つの論理チャンクＬＣに対応付ける物理チャンクＰＣを異なるフォールトセットに属するストレージノード４がそれぞれ提供する物理チャンクＰＣを選択するようにしたとしても、かかる論理チャンクＬＣが割り当てられたストレージ制御部ペア２５を構成する各ストレージノード４がそれぞれ配置されたストレージノード４が同じフォールトセットに属している場合には、そのフォールトセットに電源障害が発生した場合にホスト装置３からのＩ／Ｏ要求に対応できなくなる。
【０１５８】
そこで本実施の形態においては、それぞれ異なるフォールトセットに属するストレージノード４に配置された２つのストレージ制御部２２によりストレージ制御部ペア２５を構成するようにする。
【０１５９】
図１との対応部分に同一符号を付して示す図１７は、上述のような「フォールトセット」を意識した本実施の形態による情報処理システム４０の概略構成例を示す。ここでは、「ストレージノード１」及び「ストレージノード２」という２つのストレージノード４１が「フォールトセット１」というフォールトセット４２に属し、「ストレージノード４」及び「ストレージノード４」というストレージノード４１が「フォールトセット２」というフォールトセット４２に属し、……「ストレージノード（２ｎ−１）」及び「ストレージノード２ｎ」というストレージノード４１が「フォールトセットｎ」というフォールトセット４２に属しているものとする。
【０１６０】
なお各ストレージノード４１のハードウェア構成は、第１の実施の形態のストレージノード４と同様であるため、ここでの説明は省略する。
【０１６１】
図３との対応部分に同一符号を付して示す図１８は、本実施の形態の情報処理システム４０に定義される各ストレージ制御部ペア２５の構成例を示す。この図１８に示すように、本実施の形態の場合、各ストレージ制御部ペア２５は、それぞれ異なるフォールトセット４２に属するストレージノード４１にそれぞれ配置された２つのストレージ制御部２２から構成される。
【０１６２】
例えば、図１８の例の場合、「ストレージ制御部ペア１（ＳＣＰ１）」というストレージ制御部ペア２５は、「フォールトセット１」というフォールトセットに属する「ストレージノード１」というストレージノード４１に配置された「ストレージ制御部１」というストレージ制御部２２と、「フォールトセット２」というフォールトセットに属する「ストレージノード３」というストレージノード４１に配置された「ストレージ制御部２」というストレージ制御部２２とから構成されている。
【０１６３】
また「ストレージ制御部ペア２（ＳＣＰ２）」というストレージ制御部ペア２５は、「フォールトセット２」というフォールトセットに属する「ストレージノード３」というストレージノード４１に配置された「ストレージ制御部３」というストレージ制御部２２と、「フォールトセット１」というフォールトセットに属する「ストレージノード２」というストレージノード４１に配置された「ストレージ制御部４」というストレージ制御部２２とから構成されている。
【０１６４】
このような各ストレージ制御部ペア２５の構成設定は、例えば、システム管理者が各ストレージノード４のフォールトセットを把握した上で管理ノード５を介して各ストレージノード４に対して行うようにしてもよい。また、いずれかのストレージノード４（例えば、クラスタ６内で代表に選出されたストレージノード４）が、図２０について後述するノード管理テーブル４４を参照して、異なるフォールトセット４２に属するストレージノード４１にそれぞれ配置された２つのストレージ制御部２２からストレージ制御部ペア２５を構成するようにしてもよい。
【０１６５】
図１９は、本実施の形態の情報処理システム４０において、１つの論理チャンクＬＣに２つの物理チャンクＰＣを対応付ける場合の例を示す。この図１９に示すように、本実施の形態の場合、１つの論理チャンクＬＣに対しては、互いに異なるフォールトセットに属するストレージノード４１内の記憶デバイス１３が提供する物理チャンクＰＣがそれぞれ複数対応付けられる。
【０１６６】
例えば、図１９の例の場合、「Ａ」という論理チャンクＬＣに対しては、「フォールトセット１」というフォールトセットに属する「ストレージノード３」というストレージノード４１内の記憶デバイス１３が提供する「Ａ」という物理チャンクＰＣと、「フォールトセット３」というフォールトセットに属する「ストレージノード５」というストレージノード４１内の記憶デバイス１３が提供する「Ａ」という物理チャンクＰＣとが対応付けられている。
【０１６７】
また「Ｂ」という論理チャンクＬＣに対しては、「フォールトセット１」というフォールトセットに属する「ストレージノード１」というストレージノード４１内の記憶デバイス１３が提供する「Ｂ」という物理チャンクＰＣと、「フォールトセット２」というフォールトセットに属する「ストレージノード３」というストレージノード４１内の記憶デバイス１３が提供する「Ｂ」という物理チャンクＰＣとが対応付けられている。
【０１６８】
図２０は、図６〜図１０等について上述した第１の実施の形態によるフロントエンドドライバ２０、バックエンドドライバ２１、１又は複数のストレージ制御部２２、ストレージ制御部ペア管理テーブル３４、物理チャンク管理テーブル３５、論理チャンク管理テーブル３６及び空き物理チャンク数管理テーブル３７に加えて、本実施の形態の各ストレージノード４１のメモリ１２（図２）に格納されるノード管理テーブル４４を示す。
【０１６９】
ノード管理テーブル４４は、各ストレージノード４１がそれぞれ属するフォールトセットを管理するために本実施の形態の容量制御部４３（図１８）が利用するテーブルであり、図２０に示すように、ノード番号欄４４Ａ及びフォールトセット番号欄４４Ｂを備えて構成される。
【０１７０】
そしてノード番号欄４４Ａには、クラスタ６内に存在する各ストレージノード４にそれぞれ付与されたノード番号がすべて格納され、フォールトセット番号欄４４Ｂには、対応するストレージノード４が属するフォールトセットに付与されたそのフォールトセットに固有の番号（フォールトセット番号）が格納される。
【０１７１】
従って、図２０の例の場合、例えば、「１」というノード番号が付与されたストレージノード４１及び「３」というノード番号が付与されたストレージノード４１は、「１」というフォールトセット番号が付与されたフォールトセットに所属し、「２」というノード番号が付与されたストレージノード４１及び「４」というノード番号が付与されたストレージノード４１は、「２」というフォールトセット番号が付与されたフォールトセットに所属していることが示されている。
【０１７２】
図２１は、図１４について上述した第１の実施の形態の容量制御部２３の物理チャンク選択処理部３１に代えて、本実施の形態の容量制御部４３（図１８）の物理チャンク選択処理部４５（図５）により実行される本実施の形態による物理チャンク選択処理の処理手順を示す。なお、これ以外の容量制御部４３の処理内容は第１の実施の形態の容量制御部２３と同様であるため、ここでの説明は省略する。
【０１７３】
本実施の形態の容量制御部４３の物理チャンク選択処理部４５は、図１３について上述した容量割当て処理のステップＳ２３又はステップＳ２８等において呼び出されると、この図２１に示す物理チャンク選択処理を開始し、ステップＳ８０〜ステップＳ８３の処理を図１４のステップＳ４０〜ステップＳ４３と同様に処理する。
【０１７４】
そして物理チャンク選択処理部４５は、ステップＳ８３の判断で肯定結果を得ると、図１４について上述した容量割当て処理のステップＳ４４及びステップＳ４７と同様にしてステップＳ８４及びステップＳ８９をそれぞれ処理し、この後、この物理チャンク選択処理を終了する。
【０１７５】
これに対して、物理チャンク選択処理部４５は、ステップＳ８３の判断で否定結果を得ると、優先ノードと同一のフォールトセットに属する他のいずれかのストレージノード４１であって、当該ストレージノード４１が除外ノードではなく、かつ当該ストレージノード４１内に合計容量がアクティブ用空き容量閾値（ステップＳ２３の依頼の場合）、又は、パッシブ用空き容量閾値（ステップＳ２８の依頼の場合）以上の空き物理チャンクＰＣがあるストレージノード４１が存在するか否かを判断する（Ｓ８５）。なお、この判定は、空き物理チャンク数管理テーブル３７（図１０）を参照して行われる。
【０１７６】
そして物理チャンク選択処理部４５は、この判断で肯定結果を得ると、ステップＳ８３の条件を満たすストレージノード４１の中から１つのストレージノード４１を選択する（Ｓ８７）。このときのストレージノード４１の選択方法としては、例えば、空き物理チャンク数管理テーブル３７を参照して、ステップＳ８５の条件を満たすストレージノード４１のうち、空き物理チャンクＰＣの数が最も多いストレージノード４１を選択する方法を適用することができる。ただし、他の方法によりストレージノード４１を選択するようにしてもよい。
【０１７７】
続いて、物理チャンク選択処理部４５は、選択したストレージノード４１内の空き物理チャンクＰＣの中から１つの空き物理チャンクＰＣを選択する（Ｓ８８）。また物理チャンク選択処理部４５は、ステップＳ８８で選択した物理チャンクＰＣのチャンク番号を容量割当て処理部３０（図５）に通知し（Ｓ８９）、この後、この物理チャンク選択処理を終了する。
【０１７８】
一方、物理チャンク選択処理部４５は、ステップＳ８５の判断で否定結果を得ると、空き物理チャンク数管理テーブル３７を参照して、優先ノードとは別のフォールトセットに属するいずれかのストレージノードで４１あって、当該ストレージノード４１が除外ノードではなく、かつ当該ストレージノード４１内に合計容量がアクティブ用空き容量閾値（ステップＳ２３の依頼の場合）、又は、パッシブ用空き容量閾値（ステップＳ２８の依頼の場合）以上の空き物理チャンクＰＣがあるストレージノード４１を１つ選択する（Ｓ８６）。
【０１７９】
また物理チャンク選択処理部４５は、ステップＳ８６で選択したストレージノード４１内の空き物理チャンクＰＣの中から１つの空き物理チャンクを選択する（Ｓ８８）。さらに物理チャンク選択処理部４５は、ステップＳ８８で選択した物理チャンクＰＣのチャンク番号を容量割当て処理部３０に通知し（Ｓ８９）、この後、この物理チャンク選択処理を終了する。
【０１８０】
以上のように本実施の形態の情報処理システム４０では、第１の実施の形態の構成に加えてフォールトセットをも考慮して論理チャンクＬＣに対応付ける物理チャンクＰＣを選択するようにしているため、単一の電源障害によってストレージ制御部ペア２５に対応付けられたすべての物理チャンクＰＣに対するデータのリード／ライトが行えなくなる事態の発生を確実に回避することができる。
【０１８１】
従って、本実施の形態によれば、第１の実施の形態により得られる効果に加えて、より可用性及び信頼性の高い情報処理システムを構築することができるという効果をも得ることができる。
【０１８２】
（３）第３の実施の形態
図１との対応部分に同一符号を付して示す図２２は、第３の実施の形態による情報処理システム５０の全体構成を示す。本情報処理システム５０は、階層制御機能と、これに応じた容量割当て機能とが各ストレージノード５１にそれぞれ実装されている点が第１の実施の形態の情報処理システム１と相違する。本実施の形態の情報処理ステム５０におけるこれ以外の機能は第１の実施の形態の情報処理システム１とほぼ同様であるため、ここでの説明は省略する。
【０１８３】
まず階層制御機能について説明する。階層制御機能は、記憶デバイス１３が提供する記憶領域をその記憶デバイス１３の応答速度に応じて複数の記憶階層（ティア：Tier）にグループ化し、よりアクセス頻度の高いデータについてはより応答速度が高い記憶階層の記憶領域に格納する機能である。
【０１８４】
このため本実施の形態の場合、各ストレージノード５１には、応答速度が異なる複数種類の記憶デバイス１３がそれぞれ搭載され、同じ種類の記憶デバイス１３が提供する物理チャンクＰＣが同じ記憶階層の記憶領域として管理される。
【０１８５】
例えば、各ストレージノードにＳＳＤ、ＳＡＳハードディスク装置及びＳＡＴＡハードディスク装置の３種類の記憶デバイス１３が搭載されている場合、最も応答速度が速いＳＳＤが提供する物理チャンクＰＣが第１の記憶階層の記憶領域、次に応答速度が速いＳＡＳハードディスク装置が提供する物理チャンクＰＣが第２の記憶階層の記憶領域、最も応答速度が遅いＳＡＴＡハードディスク装置が提供する物理チャンクＰＣが第３の記憶階層の記憶領域として管理される。
【０１８６】
そして各記憶階層の記憶領域にそれぞれ格納された各データは、それぞれそのアクセス頻度が管理され、アクセス頻度が最も多いデータを第１の記憶階層の記憶領域に移動し、次にアクセス頻度が多いデータを第２の記憶階層の記憶領域に移動し、アクセス頻度が最も低いデータを第３の記憶階層の記憶領域に移動する処理が定期的に実行される。
【０１８７】
このような階層制御機能によれば、アクセス頻度が高いデータに対する応答性能を維持しながら、アクセス頻度が低いデータについてはコストが安い記憶デバイス１３により記憶保持することができ、これによりシステム全体としてのコストを安価に抑えることができるという利点がある。
【０１８８】
本実施の形態の情報処理システム５０では、このような階層制御機能に対応すべく、図２３に示すように、各ストレージ制御部ペア２５にそれぞれ割り当てられたプールＰＬに対して、それぞれ異なる記憶階層の物理チャンクＰＣが対応付けられた複数の論理チャンクＬＣが割り当てられている。なお以下においては、各ストレージ制御部ペア２５に３つの記憶階層（第１〜第３の記憶階層）分の論理チャンクＬＣをそれぞれ対応付けるものとして説明を進めるが、ストレージ制御部ペア２５に対応付ける論理チャンクＬＣの記憶階層数は３以外であってもよい。
【０１８９】
そして各ストレージ制御部ペア２５のアクティブストレージ制御部２２は、自己が属するストレージ制御部ペア２５と対応付けられた仮想ボリュームＶＶＯＬをライト対象仮想ボリュームＶＶＯＬとするライト要求が与えられた場合、そのライト要求において指定されたそのライト対象仮想ボリュームＶＶＯＬ内のライト先領域に対して、当初は最も応答性能が高い第１の記憶階層の物理チャンクＰＣが対応付けられた論理チャンクＬＣの論理領域を割り当てる。
【０１９０】
またアクティブストレージ制御部２２は、その後、かかるライト対象仮想ボリュームＶＶＯＬにライトされた各データのアクセス頻度を監視し、これらデータに対するアクセス頻度に応じて、最もアクセス頻度が高いデータについては、仮想ボリュームＶＶＯＬにおけるそのデータがライトされた記憶領域に対応付ける論理チャンクＬＣの論理領域を最も高い記憶階層に属する論理チャンクＬＣ内の論理領域に必要に応じて切り替える。またアクティブストレージ制御部２２は、これに応じて、切替え後の論理チャンクＬＣに対応付けられた物理チャンクＰＣ内の対応する記憶領域にそのデータを移動させる。
【０１９１】
またアクティブストレージ制御部２２は、次にアクセス頻度が高いデータについては、仮想ボリュームＶＶＯＬにおけるそのデータがライトされた記憶領域に対応付ける論理チャンクＬＣの論理領域を次に高い記憶階層に属する論理チャンクＬＣの論理領域に切り替え、切替え後の論理チャンクＬＣに対応付けられた物理チャンクＰＣ内の対応する記憶領域にそのデータを移動させる。
【０１９２】
さらにアクティブストレージ制御部２２は、最もアクセス頻度が低いデータについては、仮想ボリュームＶＶＯＬにおけるそのデータがライトされた記憶領域に対応付ける論理チャンクＬＣの論理領域を最も低い記憶階層に属する論理チャンクＬＣの論理領域に切り替え、切替え後の論理チャンクＬＣに対応付けられた物理チャンクＰＣの対応する記憶領域にそのデータを移動させる。
【０１９３】
このような本実施の形態の容量割当て機能を実現するための手段として、本実施の形態の各ストレージノード５１のメモリ１２（図２）には、図８について上述した物理チャンク管理テーブル３５に代えて図２４に示す物理チャンク管理テーブル５２が格納されると共に、図９について上述した論理チャンク管理テーブル３６に代えて図２５に示す論理チャンク管理テーブル５３が格納され、さらに図１０について上述した空き物理チャンク数管理テーブル３７に代えて図２６に示す空き物理チャンク数管理テーブル５４が格納されている。
【０１９４】
そして本実施の形態の物理チャンク管理テーブル５２には、図８について上述した物理チャンク管理テーブル３５の物理チャンク番号欄３５Ａ、所属ノード番号欄３５Ｂ、ドライブ番号欄３５Ｃ及びドライブ内オフセット欄３５Ｄとそれぞれ同様の情報が格納される物理チャンク番号欄５２Ａ、所属ノード番号欄５２Ｂ、ドライブ番号欄５２Ｄ及びドライブ内オフセット欄５２Ｅに加えて、メディアタイプ欄５２Ｃが設けられている。そしてメディアタイプ欄５２Ｃには、対応する物理チャンクＰＣを提供する記憶デバイス１３のメディアタイプ（ＳＳＤ、ＳＡＳ又はＳＡＴＡなど）が格納される。
【０１９５】
従って、図２４の例の場合、物理チャンク番号が「０」〜「２」、「４」又は「５」の物理チャンクＰＣはメディアタイプが「ＳＳＤ」の記憶デバイス１３が提供する物理チャンクであり、物理チャンク番号が「３」の物理チャンクＰＣはメディアタイプが「ＳＡＳ」の記憶デバイス１３が提供する物理チャンクであり、物理チャンク番号が「６」及び「７」の物理チャンクＰＣはメディアタイプが「ＳＡＴＡ」の記憶デバイス１３が提供する物理チャンクであることが示されている。
【０１９６】
また本実施の形態の論理チャンク管理テーブル５３には、図９について上述した論理チャンク管理テーブル３６の論理チャンク番号欄３６Ａ、割当て先ストレージ制御部ペア番号欄３６Ｂ、マスタ物理チャンク番号欄３６Ｃ及びミラー物理チャンク番号欄３６Ｄとそれぞれ同様の情報が格納される論理チャンク番号欄５３Ａ、割当て先ストレージ制御部ペア番号欄５３Ｂ、マスタ物理チャンク番号欄５３Ｄ及びミラー物理チャンク番号欄５３Ｅに加えて、メディアタイプ欄５３Ｃが設けられている。そしてメディアタイプ欄５３Ｃには、対応する論理チャンクＬＣに対応付けられた物理チャンクＰＣを提供する記憶デバイス１３のメディアタイプが格納される。
【０１９７】
従って、図２５の例の場合、論理チャンク番号が「０」又は「１」の論理チャンクＬＣは、いずれもメディアタイプが「ＳＳＤ」の記憶デバイス１３が提供する物理チャンクＰＣが対応付けられた論理チャンクであり、論理チャンク番号が「２」の論理チャンクＬＣは、メディアタイプが「ＳＡＳ」の記憶デバイス１３が提供する物理チャンクＰＣが対応付けられた論理チャンクであることが示されている。
【０１９８】
さらに本実施の形態の空き物理チャンク数管理テーブル５４には、図１０について上述した空き物理チャンク数管理テーブル３７のノード番号欄３７Ａ及び空き物理チャンク数欄３７Ｂとそれぞれ同様の情報が格納されるノード番号欄５４Ａ及び空き物理チャンク数欄５４Ｂに加えて、各記憶階層にそれぞれ対応させた空き物理チャンク数欄５４Ｃ，５４Ｄ，５４Ｅが設けられている。そして、これら空き物理チャンク数欄５４Ｃ〜５４Ｅには、それぞれ対応する記憶階層を構成するメディアタイプの記憶デバイス１３が提供する物理チャンクＰＣのうちの空き物理チャンクＰＣの数が格納される。
【０１９９】
従って、図２６の例の場合、例えば、ノード番号が「１」のストレージノード５１内には、現時点において、第１の記憶階層を構成する「ＳＳＤ」というメディアタイプの記憶デバイス１３が提供する空き物理チャンクＰＣが「５」つ存在し、第２の記憶階層を構成する「ＳＡＳ」というメディアタイプの記憶デバイス１３が提供する空き物理チャンクＰＣが「２」つ存在し、第３の記憶階層を構成する「ＳＡＴＡ」というメディアタイプの記憶デバイス１３が提供する空き物理チャンクＰＣが「３」つ存在することが示されている。なお、上述のようにどのメディアタイプの記憶デバイス１３がどの記憶階層に属するかは予め定められているものとする。
【０２００】
図５との対応部分に同一符号を付して示す図２７は、本実施の形態の容量制御部５５の構成を示す。本実施の形態の容量制御部５５は、容量割当て処理部５６及び物理チャンク選択処理部５７の処理内容が異なる点を除いて、第１の実施の形態の容量制御部２３（図５）と同様に構成されている。
【０２０１】
図２８は、同じストレージノード５１内のアクティブストレージ制御部２２から、当該アクティブストレージ制御部２２が属するストレージ制御部ペア２５に対する最初又は追加の記憶容量の割当てを要求された本実施の形態の容量制御部５５の容量割当て処理部５６（図２７）により実行される容量割当て処理の処理手順を示す。なお本実施の形態の場合、アクティブストレージ制御部２２は、記憶階層を指定して記憶容量の割当てを容量制御部５５に要求する。
【０２０２】
容量割当て処理部５６は、かかる要求が与えられると、この図２８に示す容量割当て処理を開始し、まず、指定された記憶階層を確認し（Ｓ９０）、この後、ステップＳ９１〜ステップＳ９３を図１３について上述した第１の実施の形態の容量割当て処理のステップＳ２０〜ステップＳ２２と同様に処理する。
【０２０３】
続いて、容量割当て処理部５６は、物理チャンク選択処理部５７（図２７）を呼び出し、ステップＳ９０で確認した対象ストレージ制御部ペア２５に割り当てる記憶階層の論理チャンクＬＣに対応付けるべき物理チャンクＰＣの選択を依頼する（Ｓ９４）。かくして、この依頼を受領した物理チャンク選択処理部５７は、クラスタ６内の空き物理チャンクＰＣの中から対象ストレージ制御部ペア２５の指定された記憶階層の論理チャンクＬＣに割り当てるべき物理チャンクＰＣを、優先ノード（ここでは、アクティブストレージ制御部２２が配置されたストレージノード５１）内の空き物理チャンクＰＣから優先的に選択し、選択した空き物理チャンクＰＣのチャンク番号を容量割当て処理部５６に通知する。
【０２０４】
次いで、容量割当て処理部５６は、ステップＳ９５〜ステップＳ９８を、図１３について上述した第１の実施の形態の容量割当て処理のステップＳ２４〜ステップＳ２７と同様に処理する。また容量割当て処理部５６は、この後、物理チャンク選択処理部５７（図２７）を呼び出し、ステップＳ９０で確認した対象ストレージ制御部ペア２５に割り当てる記憶階層の論理チャンクＬＣに対応付けるべき物理チャンクＰＣの選択を依頼する（Ｓ９９）。かくして、この依頼を受領した物理チャンク選択処理部５７は、クラスタ６内の空き物理チャンクＰＣの中から対象ストレージ制御部ペア２５の指定された記憶階層の論理チャンクＬＣに割り当てるべき物理チャンクＰＣを、優先ノード（ここでは、パッシブストレージ制御部２２が配置されたストレージノード５１）内の空き物理チャンクＰＣから優先的に選択し、選択した空き物理チャンクＰＣのチャンク番号を容量割当て処理部５６に通知する。
【０２０５】
続いて、容量割当て処理部５６は、ステップＳ１００〜ステップＳ１０２を、図１３について上述した容量割当て処理のステップＳ２９〜ステップＳ３１と同様に処理し、この後、この容量割当て処理を終了する。
【０２０６】
他方、図２９は、図２８について上述した本実施の形態の容量割当て処理のステップＳ９４又はステップＳ９９において容量割当て処理部５６から対象ストレージ制御部ペア２５に割り当てる論理チャンクＬＣに対応付ける物理チャンクＰＣを選択するよう依頼を受けた物理チャンク選択処理部５７により実行される物理チャンク選択処理の処理内容を示す。
【０２０７】
物理チャンク選択処理部５７は、かかる依頼が容量割当て処理部５６から与えられると、この図２９に示す物理チャンク選択処理を開始し、まず、ステップＳ１１０〜ステップＳ１１２を図１４について上述した第１の実施の形態の物理チャンク選択処理のステップＳ４０〜ステップＳ４２と同様に処理する。
【０２０８】
続いて、物理チャンク選択処理部５７は、優先ノードが除外ノードではなく、かつ優先ノード内の指定された階層の記憶デバイスに合計容量がアクティブ用空き容量閾値（ステップＳ９３の依頼の場合）、又は、パッシブ用空き容量閾値（ステップＳ９９の依頼の場合）以上の空き物理チャンクＰＣが存在するか否かを判定する（Ｓ１１３）。なお、この判定は、空き物理チャンク数管理テーブル５４（図２６）を参照して行われる。
【０２０９】
そして物理チャンク選択処理部５７は、この判定で肯定結果を得ると、物理チャンク管理テーブル５２（図２４）を参照して、優先ノード内の指定された記憶階層の記憶デバイス１３が提供する空き物理チャンクＰＣの中から空き物理チャンクＰＣを１つ選択し（Ｓ１１４）、選択した空き物理チャンクＰＣのチャンク番号を容量割当て処理部５６に通知した後（Ｓ１１７）、この物理チャンク選択処理を終了する。
【０２１０】
これに対して、物理チャンク選択処理部５７は、ステップＳ１１３の判定で否定結果を得ると、クラスタ６内の優先ノード及び除外ノード以外のストレージノード５１の中から１つのストレージノード５１を選択する（Ｓ１１５）。このときのストレージノード５１の選択方法としては、例えば、空き物理チャンク数管理テーブル３７を参照して、指定された記憶階層の記憶デバイス１３が提供する物理チャンクＰＣのうちの空き物理チャンクＰＣの数が最も多いストレージノード５１を選択する方法を適用することができる。ただし、他の方法によりストレージノード５１を選択するようにしてもよい。
【０２１１】
続いて、物理チャンク選択処理部５７は、ステップＳ１１５で選択したストレージノード５１内の指定された記憶階層の記憶デバイス１３が提供する空き物理チャンクＰＣの中から１つの空き物理チャンクＰＣを選択する（Ｓ１１６）。また物理チャンク選択処理部５７は、選択した空き物理チャンクＰＣのチャンク番号を容量割当て処理部５６に通知し（Ｓ１１７）、この後、この物理チャンク選択処理を終了する。
【０２１２】
以上のように本実施の形態によれば、階層制御機能が搭載された情報処理システム５０についても第１の実施の形態と同様の効果を得ることができる。
【０２１３】
（４）他の実施の形態
なお上述の第１〜第３の実施の形態においては、図１、図１７及び図２２のように、ホスト装置に物理的な記憶領域を提供する記憶デバイス１３を各ストレージノード４，４１，５１に搭載するようにした場合について述べたが、本発明はこれに限らず、例えば、図１との対応部分に同一符号を付した図３０に示すように、かかる記憶デバイス１３を各ストレージノード６０に搭載せず、これらストレージノード６０にかかる記憶デバイス１３が搭載された外部ストレージ装置６１を接続するようにしてもよい。
【０２１４】
この場合、各ストレージノード６０のハードウェア構成は、図２から記憶デバイス１３を除去した構成とし、これら各ストレージノード６０の論理構成は、図３について構成したストレージノード４の論理構成と同様とすればよい。なお、このようにした場合におけるフロントエンドドライバ２０、バックエンドドライバ２１、ストレージ制御部２２及び容量制御部２３の制御内容は、第１の実施の形態と同様である。
【０２１５】
従って、この例の場合、各ストレージ制御部ペア２５に対しては、そのストレージ制御部ペア２５を構成するアクティブストレージ制御部２２が配置されたストレージノード６０と接続された外部ストレージ装置６１に搭載された記憶デバイス１３が提供する物理チャンクＰＣと、当該ストレージ制御部ペア２５を構成するパッシブストレージ制御部２２が配置されたストレージノード６０と接続された外部ストレージ装置６１に搭載された記憶デバイス１３が提供する物理チャンクＰＣとが対応付けられた論理チャンクＬＣが割り当てられることになる。
【０２１６】
また上述の第１〜第３の実施の形態においては、図１４について上述した物理チャンク選択処理のステップＳ４５及びＳ４６や、図２１について上述した物理チャンク選択処理のステップＳ８７及びＳ８８、並びに、図２９について上述した物理チャンク選択処理のステップＳ１１５及びＳ１１６において、空き物理チャンクＰＣの数が最も多いストレージノード４内の空き物理チャンクＰＣの中からストレージ制御部ペア２５に割り当てる論理チャンクＬＣに対応付ける物理チャンクＰＣを選択するようにした場合について述べたが、本発明はこれに限らず、ストレージ制御部ペア２５を構成するアクティブストレージ制御部２２やパッシブストレージ制御部２２の配置先近傍の物理チャンクＰＣを優先的にそのストレージ制御部ペア２５に割り当てる論理チャンクＬＣに対応付けるようにしてもよい。
【０２１７】
なお「ストレージ制御部２２の配置先近傍の物理チャンクＰＣ」とは、そのストレージ制御部２２がその物理チャンクＰＣにアクセスする際に経由するスイッチ等のネットワークデバイスが少ない物理チャンクＰＣを指す。従って、ストレージ制御部２２の配置先の最も近傍の物理チャンクＰＣは、そのストレージ制御部２２が配置されたストレージノード４内の物理チャンクＰＣということになる。
【０２１８】
このようにストレージ制御部ペア２５を構成するアクティブストレージ制御部２２やパッシブストレージ制御部２２の配置先近傍の物理チャンクＰＣを優先的にそのストレージ制御部ペア２５に割り当てる論理チャンクＬＣに対応付けるようにしても、アクティブストレージ制御部２２やパッシブストレージ制御部２２が迅速にその物理チャンクＰＣにアクセスすることができ、当該物理チャンクＰＣに対するデータのリード／ライトを速やかに行うことができる。
【０２１９】
さらに上述の第１の実施の形態においては、図１３及び図１４について上述したように、ストレージ制御部ペア２５のアクティブストレージ制御部２２が配置されたストレージノード４や、当該ストレージ制御部ペア２５のパッシブストレージ制御部２２が配置されたストレージノード４を優先ノードに設定（図１３のステップＳ２１及びステップＳ２５を参照）することにより、物理チャンク選択処理部３１がこれらのストレージノード４の空き物理チャンクＰＣを優先的にそのストレージ制御部ペア２５に割り当てる論理チャンクＬＣに対応付ける物理チャンクＰＣとして選択するようにした場合について述べたが、本発明はこれに限らず、物理チャンク選択処理部３１が、クラスタ６内の各ストレージノード４の空き物理チャンクＰＣの数にのみ基づいてかかる論理チャンクＬＣに対応付ける空き物理チャンクＰＣを選択するようにしてもよい。
【０２２０】
具体的には、図１３との対応部分に同一符号を付した図３１に示すように、容量割当て処理部３０が、図１３のステップＳ２１及びステップＳ２５を省略することにより、対象ストレージ制御部ペア２５のアクティブストレージ制御部２２や、パッシブストレージ制御部２２が配置されたストレージノード４を優先ノードに設定しないようにする。また図１４との対応部分に同一符号を付した図３２に示すように、物理チャンク選択処理部３１が、ステップＳ４２の後で優先ノードが設定されているか否かを判定し（Ｓ１２０）、否定結果を得た場合にはステップＳ４３に進み、肯定結果を得た場合にはステップＳ４５に進むようにすればよい。
【０２２１】
ただし、ストレージ制御部ペア２５に割り当てる論理チャンクＬＣに対応付ける物理チャンクＰＣとして、そのストレージ制御部ペア２５のアクティブストレージ制御部２２が配置されたストレージノード４内の空き物理チャンクＰＣを選択した方が通常時におけるシステム全体としての応答性能が良いため、図１３との対応部分に同一符号を付した図３３に示すように、ステップＳ２１については実行し、図１３のステップＳ２５については処理を省略するように容量割当て処理部３０を構成するようにしてもよい。この場合においても、図３２のフローチャートの処理を実行するように物理チャンク選択処理部３１を構築すればよい。
【０２２２】
さらに上述の第３の実施の形態においては、図２８及び図２９について上述したように、容量制御部５５（図２７）の容量割当て処理部５６（図２７）が、すべての階層について、ストレージ制御部ペア２５のアクティブストレージ制御部２２が配置されたストレージノード４や、当該ストレージ制御部ペア２５のパッシブストレージ制御部２２が配置されたストレージノード４を優先ノードに設定（図１３のステップＳ２１及びステップＳ２５を参照）することにより、物理チャンク選択処理部５７（図２７）がこれらのストレージノード４の空き物理チャンクＰＣを優先的にそのストレージ制御部ペア２５に割り当てる論理チャンクＬＣに対応付ける物理チャンクＰＣとして選択するようにした場合について述べたが、本発明はこれに限らず、指定された記憶階層が最上位の記憶階層のときにのみ、物理チャンク選択処理部５７が、クラスタ６内の各ストレージノード４の空き物理チャンクＰＣの数にのみ基づいてかかる論理チャンクＬＣに対応付ける空き物理チャンクＰＣを選択するようにしてもよい。
【０２２３】
この場合、図２８との対応部分に同一符号を付した図３４に示すように、容量割当て処理部５６は、ステップＳ９１の処理実行後にステップＳ９０で確認した記憶階層が最上位の記憶階層であるか否かを判断し（Ｓ１３０）し、否定結果を得た場合には対象ストレージ制御部ペア２５内のアクティブストレージ制御部２２が配置されたストレージノード４を優先ノードに設定することなくステップＳ９３に進む。また容量割当て処理部５６は、ステップＳ９５の処理実行後にステップＳ９０で確認した記憶階層が最上位の記憶階層であるか否かを判断し（Ｓ１３１）し、否定結果を得た場合には対象ストレージ制御部ペア２５内のアクティブストレージ制御部２２が配置されたストレージノード４を優先ノードに設定することなくステップＳ９７に進む。
【０２２４】
また、この場合、図２９との対応部分に同一符号を付した図３５に示すように、物理チャンク選択処理部３１は、ステップＳ１１２の後で優先ノードが設定されているか否かを判定し（Ｓ１３２）、否定結果を得た場合にはステップＳ１１５に進み、肯定結果を得た場合にはステップＳ１１４に進むようにすればよい。
【０２２５】
このようにすることにより、応答性能が要求される最上位の記憶階層については、自ノードから記憶領域を割り当て、これ以外の記憶階層については、各ストレージノード４から均等に記憶領域を割り当てることができる。
【０２２６】
また、サーバ上でハイパーバイザが動作し、ハイパーバイザ上で１又は複数の仮想計算機が稼働し、その仮想計算機上で、図３に示す各種プログラムが動作してもよい。すなわち、各種プログラム（制御ソフト２０、冗長化部２２、クラスタ制御部２３）は、物理計算機のハードウェア上で動作することもあれば、仮想計算機上で動作してもよい。同様に、コンピュートノード２は、仮想計算機上で動作するアプリケーションプログラム（ホストプログラム）であってもよいし、物理的なホスト計算機（ホストコンピュータ）であってもよい。情報処理システム１が複数のサーバを有するとき、サーバの一部が異なるサイトにあってもよい。また、情報処理システム１のサーバの一部又は全部がクラウド上にあって、ネットワークを介して、ユーザにサービスが提供されてもよい。
【０２２７】
各種プログラム（制御ソフト２０、冗長化部２２、クラスタ制御部２３）が動作する仮想計算機と、ホストプログラムが動作する仮想計算機とが、同一のサーバ（ノード）上にある構成（ハイパーコンバージドインフラストラクチャ）であっても、ネットワークを介して接続する異なるサーバ上にある構成であってもよい。
【産業上の利用可能性】
【０２２８】
本発明は、１又は複数のＳＤＳが実装された複数のストレージノードを備える情報処理システムに適用することができる。
【符号の説明】
【０２２９】
１，４０，５０……情報処理システム、３……ホスト装置、４，４１，５１，６０……ストレージノード、６……クラスタ、１１……ＣＰＵ、１３……記憶デバイス、２２……ストレージ制御部、２３，４３，５５……容量制御部、２５……ストレージ制御部ペア、３０，５６……容量割当て処理部、３１，４５，５７……物理チャンク選択処理部、３２……フェイルオーバ処理部、３３……再冗長化処理部、３４……ストレージ制御部ペア管理テーブル、３５，５２……物理チャンク管理テーブル、３６，５３……論理チャンク管理テーブル、３７，５４……空き物理チャンク数管理テーブル、４２……フォールトセット、４４……ノード管理テーブル、６１……外部ストレージ装置、ＬＣ……論理チャンク、ＬＰ……プール、ＰＣ……物理チャンク、ＶＶＯＬ……仮想ボリューム。
【図１】
2020091901.tif 000003
【図２】
2020091901.tif 000004
【図３】
2020091901.tif 000005
【図４】
2020091901.tif 000006
【図５】
2020091901.tif 000007
【図６】
2020091901.tif 000008
【図７】
2020091901.tif 000009
【図８】
2020091901.tif 000010
【図９】
2020091901.tif 000011
【図１０】
2020091901.tif 000012
【図１１】
2020091901.tif 000013
【図１２】
2020091901.tif 000014
【図１３】
2020091901.tif 000015
【図１４】
2020091901.tif 000016
【図１５】
2020091901.tif 000017
【図１６】
2020091901.tif 000018
【図１７】
2020091901.tif 000019
【図１８】
2020091901.tif 000020
【図１９】
2020091901.tif 000021
【図２０】
2020091901.tif 000022
【図２１】
2020091901.tif 000023
【図２２】
2020091901.tif 000024
【図２３】
2020091901.tif 000025
【図２４】
2020091901.tif 000026
【図２５】
2020091901.tif 000027
【図２６】
2020091901.tif 000028
【図２７】
2020091901.tif 000029
【図２８】
2020091901.tif 000030
【図２９】
2020091901.tif 000031
【図３０】
2020091901.tif 000032
【図３１】
2020091901.tif 000033
【図３２】
2020091901.tif 000034
【図３３】
2020091901.tif 000035
【図３４】
2020091901.tif 000036
【図３５】
2020091901.tif 000037
【図３６】
2020091901.tif 000038