(57)【要約】【課題】負荷集中の抑制を図る。【解決手段】ストレージ管理装置１は、制御部１ａと記憶部１ｂを含む。制御部１ａは、ストレージに対するデータのＩ／Ｏ処理を行う複数のノードに接続して、複数のノードｎ１、・・・、ｎ４の負荷状況の監視を行う。また、制御部１ａは、グループ化されている複数のノード（ｎ１、・・・、ｎ４）の負荷状況の監視を行い、データの入出力処理を行ったノードがそれぞれ保持するデータのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、データのメタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、負荷状況にもとづいて遷移させる。記憶部１ｂは、Ｉ／Ｏのデータ、メタ情報、メタ情報を共有しているノードの組合せを登録したメタ共有情報および運用管理に関する制御情報等を格納する。【選択図】図１
2020021235.tif 000002
【特許請求の範囲】
【請求項１】
ストレージに対するデータの入出力処理を行う複数のノードを管理するストレージ管理装置であって、
グループ化されている前記複数のノードの負荷状況の監視を行い、前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、前記負荷状況にもとづいて遷移させる制御部
を有するストレージ管理装置。
【請求項２】
前記制御部は、前記複数のノードすべての負荷が閾値より低いことを検出した場合、前記第１の共有状態に遷移させ、前記複数のノードのうち少なくとも一の前記ノードの前記負荷が前記閾値より高いことを検出した場合、前記第２の共有状態に遷移させる請求項１記載のストレージ管理装置。
【請求項３】
前記制御部は、前記ノードそれぞれの性能情報を取得し、前記性能情報から検出した前記負荷を平均化して平均負荷を算出し、前記平均負荷にもとづいて、前記メタ情報を共有する前記ノードの共有範囲を決定する請求項１記載のストレージ管理装置。
【請求項４】
前記制御部は、前記メタ情報を共有している前記ノードの組合せに関するメタ共有情報を生成して保持する請求項１記載のストレージ管理装置。
【請求項５】
前記制御部は、前記ノードそれぞれの性能情報を取得し、前記性能情報から検出した前記負荷が前記閾値より低下したことを検出した場合、前記メタ情報の共有の復帰を行う請求項２記載のストレージ管理装置。
【請求項６】
前記制御部は、同一の筐体に実装されている前記ノードの組を同一のグループとし、前記負荷が前記閾値より低いことを検出した場合、前記メタ情報を同一の前記筐体内でペアになって実装されているノード間で共有させる共有化を行い、前記負荷が前記閾値より高いことを検出した場合、同一の前記筐体内での前記共有化の状態からさらに、前記メタ情報を異なる前記筐体に跨ったノード間で共有させる請求項２記載のストレージ管理装置。
【請求項７】
ストレージと、
前記ストレージに対するデータの入出力処理を行う複数のノードと、
グループ化されている前記複数のノードの負荷状況の監視を行い、前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、前記負荷状況にもとづいて遷移させる管理ノードと、
を有するストレージシステム。
【請求項８】
ストレージに対するデータの入出力処理を行う複数のノードに対し、グループ化されている前記複数のノードの負荷状況の監視を行い、
前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、前記負荷状況にもとづいて遷移させる、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ管理装置、ストレージシステムおよびプログラムに関する。
【背景技術】
【０００２】
ストレージシステムは、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の記憶装置と、記憶装置を制御するためのサーバとを有して、情報処理で扱う大量のデータを記録管理する。また、サーバは、２台以上のノードを含む装置で冗長構成が組まれている。
【０００３】
システム性能を向上させる場合、近年では、ハードウェアを高性能にするスケールアップよりも、ハードウェアの数を増やして処理能力を上げるスケールアウトが主流になっている。このため、スケールアウトによるシステム拡張化に伴い、システムの冗長構成も増加している。
【０００４】
多ノード構成のストレージシステムにおいて、負荷の偏りがノードに発生した場合、他ノードへの負荷分散を行って、システム運用を継続する技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００４−５３７１２６号公報
【特許文献２】特開２０１０−２６７１５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特定ノードに対して、ホストからのＩ／Ｏ（入出力）処理のアクセス集中を防ぐためには、各ノードへのＩ／Ｏの負荷分散処理が行われる。
しかし、ノードは、通常、自身が処理を担当するＬＢＡ（Logical Block Addressing：論理ブロックアドレス）に関係したメタ情報しか持たない。このため、特定ノードが処理するはずであったＩ／Ｏを他ノードが受け取った場合、他ノードが特定ノードのメタ情報を持っていなければ、アドレス変換等の処理ができず、記憶装置へのデータ転送を実行することができない。
【０００７】
負荷分散処理時におけるこのような状況を改善するため、メタ情報を効率よく各ノードへ共有化させて負荷集中を抑制する技術が望まれている。
１つの側面では、本発明は、メタ情報の共有化を効率よく行って負荷集中の抑制を図ったストレージ管理装置、ストレージシステムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、ストレージに対するデータの入出力処理を行う複数のノードを制御するストレージ管理装置が提供される。ストレージ管理装置は、グループ化されている複数のノードの負荷状況の監視を行い、データの入出力処理を行ったノードがそれぞれ保持するデータのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、データのメタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、負荷状況にもとづいて遷移させる制御部を有する。
【０００９】
また、上記課題を解決するために、上記ストレージ管理装置と同様の制御を行うストレージシステムが提供される。
さらに、上記課題を解決するために、コンピュータに上記ストレージ管理装置と同様の制御を実行させるプログラムが提供される。
【発明の効果】
【００１０】
１側面によれば、負荷集中の抑制を図ることが可能になる。
【図面の簡単な説明】
【００１１】
【図１】ストレージ管理装置の構成の一例を示す図である。
【図２】ストレージシステムの構成の一例を示す図である。
【図３】負荷集中が発生する状態の一例を示す図である。
【図４】ノードのハードウェア構成の一例を示す図である。
【図５】ノードの機能ブロックの一例を示す図である。
【図６】ボリュームを分割したブロック構造の一例を示す図である。
【図７】ノード故障時に再計算されたブロック構造の一例を示す図である。
【図８】キャッシュメモリの保持データの２重化の一例を示す図である。
【図９】メタテーブルの構成の一例を示す図である。
【図１０】メタテーブルの共有制限の一例を示す図である。
【図１１】メタテーブルの共有制限の一例を示す図である。
【図１２】管理ノードを含むストレージシステムの構成の一例を示す図である。
【図１３】過負荷ノードがない場合のメタテーブルの共有状態の一例を示す図である。
【図１４】過負荷ノードが発生した場合のメタテーブルの共有状態の一例を示す図である。
【図１５】メタ共有テーブルの構成の一例を示す図である。
【図１６】ノード故障が発生したシステム構成の一例を示す図である。
【図１７】キャッシュデータの２重化の一例を示す図である。
【図１８】復旧時の動作の流れの一例を示す図である。
【図１９】復旧時の動作の流れの一例を示す図である。
【図２０】復旧時の動作の流れの一例を示す図である。
【図２１】メタテーブルの共有解除が行われた構成の一例を示す図である。
【図２２】メタテーブルの共有解除が行われた構成の一例を示す図である。
【図２３】メタ共有テーブルの更新の一例を示す図である。
【図２４】管理ノードの全体動作を示すフローチャートである。
【図２５】メタ共有テーブルの更新動作を示すフローチャートである。
【図２６】論理担当ノードの判断処理を示すフローチャートである。
【図２７】キャッシュ制御の動作を示すフローチャートである。
【図２８】アドレス変換処理を含む制御動作を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態について図１を用いて説明する。図１はストレージ管理装置の構成の一例を示す図である。ストレージ管理装置１は、制御部１ａと記憶部１ｂを含む。制御部１ａは、ストレージに対するデータのＩ／Ｏ処理を行う複数のノードに接続して、複数のノードｎ１、・・・、ｎ４の負荷状況の監視を行う。
【００１３】
また、制御部１ａは、データの入出力処理を行ったノードがそれぞれ保持するデータのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、データのメタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、監視結果にもとづいて遷移させる。なお、メタ情報とは、データに関するプロパティ情報である（具体例については後述）。
【００１４】
記憶部１ｂは、Ｉ／Ｏ関連のデータ、メタ情報、および運用管理に関する制御情報等を格納する。また、記憶部１ｂは、メタ情報を共有しているノードの組合せを登録した後述のメタ共有情報を記憶する。
【００１５】
図１に示す例を用いて動作について説明する。ストレージシステム１−１は、サーバｓｖ１、ｓｖ２と、ストレージ２０ａ、２０ｂを備える（図中のステップＳ２、Ｓ３ではストレージ２０ａ、２０ｂの図示は省略している）。
【００１６】
サーバｓｖ１はストレージ２０ａに接続され、サーバｓｖ２はストレージ２０ｂに接続され、サーバｓｖ１、ｓｖ２は互いに接続される。サーバｓｖ１は、一対のノードｎ１、ｎ２を有し、サーバｓｖ２は、一対のノードｎ３、ｎ４を有する。ノードｎ１、ｎ２は互いに接続され、ノードｎ３、ｎ４は互いに接続される。
【００１７】
ノードｎ１、・・・、ｎ４は、データのメタ情報にもとづいてストレージ２０ａ、２０ｂに対するデータのＩ／Ｏ処理を行う。なお、システムの運用中、ノードｎ１、・・・、ｎ４のうちのいずれかのノードが管理ノードになって、ストレージ管理装置１の機能を実行する。
【００１８】
ここでは、ノードｎ１がストレージ管理装置１に相当し、制御部１ａの動作を行うとする。また、グループ化としては、同じサーバ内でペアとなるノード同士を１つのグループとする。
【００１９】
〔ステップＳ１〕システムの初期運用時、ノードｎ１は、自身がＩ／Ｏ処理を担当するＬＢＡに関するメタ情報ｍ１を有し、ノードｎ２は、自身がＩ／Ｏ処理を担当するＬＢＡに関するメタ情報ｍ２を有する。また、ノードｎ３は、自身がＩ／Ｏ処理を担当するＬＢＡに関するメタ情報ｍ３を有し、ノードｎ４は、自身がＩ／Ｏ処理を担当するＬＢＡに関するメタ情報ｍ４を有する。これらのメタ情報は、各ノードの記憶部１ｂに保持される。
【００２０】
〔ステップＳ２〕ノードｎ１内の制御部１ａは、ノードｎ１、・・・、ｎ４の負荷状況の監視を行う。システム運用における１回目の負荷状況の監視では、ノードｎ１、・・・、ｎ４のいずれの負荷も閾値より低い状態にある。
【００２１】
この場合、制御部１ａは、同一グループ内のノード間で、すなわちこの例では同一サーバ内のペアとなるノード間で、メタ情報を共有するように各ノードに指示を出す。該指示を受信したノードは、同一サーバ内でメタ情報の共有化を行う（第１の共有状態）。
【００２２】
具体的には、ノードｎ１はメタ情報ｍ１をノードｎ２へコピーし、ノードｎ２はメタ情報ｍ２をノードｎ１へコピーする。したがって、サーバｓｖ１内のノードｎ１、ｎ２間でメタ情報ｍ１、ｍ２が共有される。
【００２３】
また、ノードｎ３はメタ情報ｍ３をノードｎ４へコピーし、ノードｎ４はメタ情報ｍ４をノードｎ３へコピーする。したがって、サーバｓｖ２内のノードｎ３、ｎ４間でメタ情報ｍ３、ｍ４が共有される。
【００２４】
〔ステップＳ３〕制御部１ａは、負荷状況の監視を行い、監視の結果、負荷が閾値より高くなるノードを検出したとする。例えば、ノードｎ２の負荷が閾値より高く、ノードｎ２が高負荷状態になったことを検出したとする。
【００２５】
この場合、制御部１ａは、メタ情報を異なるグループに跨ったノード間で、すなわちこの例ではサーバｓｖ１、ｓｖ２に跨ったノード間で、メタ情報を共有するように各ノードに指示を出す。該指示を受信したノードは、異なるサーバに跨ってメタ情報の共有化を行う（第２の共有状態）。
【００２６】
具体的に例えば、ノードｎ１がメタ情報ｍ１、ｍ２をノードｎ３へコピーし、ノードｎ３がメタ情報ｍ１、ｍ２をノードｎ４へコピーする。またノードｎ３がメタ情報ｍ３、ｍ４をノードｎ１へコピーし、ノードｎ１がメタ情報ｍ３、ｍ４をノードｎ２へコピーする。したがって、ノードｎ１、・・・、ｎ４のそれぞれにおいて、メタ情報ｍ１、・・・、ｍ４が共有される。なお、メタ情報の共有化が行われた場合、どのノードとメタ情報を共有しているかを示す、後述のメタ共有情報が生成されて各ノードで管理される。
【００２７】
〔ステップＳ４〕制御部１ａは、負荷状況の監視を行い、監視の結果、ノードｎ１、・・・、ｎ４のいずれの負荷も閾値より低い状態になったことを検出したとする。この場合、同じサーバ内で対となるノード間でメタ情報を共有させるステップＳ２の状態に遷移させる。このように、負荷が下がって閾値より低くなれば、同一グループ内のノード間の共有化に戻る。
【００２８】
ここで、ステップＳ１の状態において、例えば、ノードｎ２が故障した場合、サーバｓｖ１に生き残ったノードｎ１が、ノードｎ２へのアクセスを引き継ぐことが考えられる。しかし、ノードｎ１は、自分が処理を担当するメタ情報ｍ１しか持たないため、故障したノードｎ２が処理するはずだったＩ／Ｏを受け取ってもストレージ２０ａへのデータ転送を行えない可能性がある。これに対し、ステップＳ２の状態では、ノードｎ１は、ノードｎ２のメタ情報ｍ２を共有しているから、ノードｎ２が故障してもノードｎ２の処理を引き継ぐことが可能である。
【００２９】
したがって、通常運用時、ステップＳ２またはステップＳ３の状態に遷移した場合、負荷が低下することでステップＳ３からステップＳ２の状態へ遷移することはあっても、ステップＳ２またはステップＳ３からステップＳ１の状態へ遷移することはない。故障が復旧した場合でも、ストレージ管理装置１の機能が稼働してからは、ステップＳ２またはステップＳ３の状態で運用されることになる。
【００３０】
このように、通常運用時には、ステップＳ２またはステップＳ３のいずれかのメタ情報共有化によってシステムが運用されるので、ノード故障が発生しても、故障ノードと対となるノードが処理を引き継ぐことができる。
【００３１】
上記のように、ストレージ管理装置１は、ノードの負荷状況を監視し、データのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、データのメタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、負荷状況にもとづいて遷移させる。
【００３２】
これにより、ノードの負荷状況に応じたメタ情報の共有化が行われる。このため例えば、特定ノードが処理するＩ／Ｏを他ノードが受け取っても、他ノードは特定ノードのメタ情報をすでに有しているため、アドレス変換等の処理を行って担当記憶装置へのデータ転送を実行することができ、負荷集中の抑制を図ることが可能になる。
【００３３】
［第２の実施の形態］
次に第２の実施の形態について説明する。まず、システム構成について説明する。図２はストレージシステムの構成の一例を示す図である。ストレージシステム１−２は、サーバＳｖ１、Ｓｖ２、ＤＥ（Disc Enclosure）２０−１、２０−２、スイッチ３０、ホスト４０および管理端末５０を備える。
【００３４】
サーバＳｖ１は、一対のノードＮ１、Ｎ２を含み、サーバＳｖ２は、一対のノードＮ３、Ｎ４を含む。ノードＮ１、Ｎ２には、ホスト４０、管理端末５０およびＤＥ２０−１が接続され、ノードＮ３、Ｎ４には、ホスト４０、管理端末５０およびＤＥ２０−２が接続される。ノードＮ１、Ｎ２は互いに接続され、ノードＮ３、Ｎ４は互いに接続される。
【００３５】
スイッチ３０は、例えば、ＩｎｆｉｎｉＢａｎｄスイッチであり、ノードＮ１、・・・、Ｎ４はスイッチ３０に接続され、スイッチ３０を介してノードの拡張化が可能なスケールアウトの接続構成になる。ストレージシステム１−２のスケールアウトでは、例えば、サーバ単位での増設が行われる。
【００３６】
また、同じサーバ内のノードは、サーバ内部で接続され、サーバを跨ぐノード間も接続しあい、他のノードと自由にアクセスできるようになっている。なお、データを保存するストレージ（記憶装置）に対して、該ストレージに接続しているサーバ内のノードからアクセスができ、接続していないサーバ内のノードからはアクセスは不可になっているとする。
【００３７】
ノードＮ１は、プロセッサ１１−１、メモリ１２−１、ＩＦ（インタフェース）部１３−１、１４−１およびドライバ１５−１を含み、ノードＮ２は、プロセッサ１１−２、メモリ１２−２、ＩＦ部１３−２、１４−２およびドライバ１５−２を含む。
【００３８】
ノードＮ３は、プロセッサ１１−３、メモリ１２−３、ＩＦ部１３−３、１４−３およびドライバ１５−３を含み、ノードＮ４は、プロセッサ１１−４、メモリ１２−４、ＩＦ部１３−４、１４−４およびドライバ１５−４を含む。
【００３９】
ＤＥ２０−１は、ＩＯＭ（Input Output Module：中継モジュール）２ａ１、２ａ２および記憶装置２１ａ１、・・・２１ａｎを含み、ＤＥ２０−２は、ＩＯＭ２ｂ１、２ｂ２および記憶装置２１ｂ１、・・・２１ｂｎを含む。
【００４０】
ノードＮ１、Ｎ２は、ホスト４０からのデータ読み出し（Read IO）およびデータ書き込み（Write IO）の要求にもとづいて、記憶装置２１ａ１、・・・、２１ａｎに対してＩ／Ｏ制御を行う。同様に、ノードＮ３、Ｎ４は、ホスト４０からの要求にもとづいて、記憶装置２１ｂ１、・・・、２１ｂｎに対してＩ／Ｏ制御を行う。
【００４１】
なお、プロセッサ１１−１、・・・、１１−４は、図１に示した制御部１ａの機能を実現でき、メモリ１２−１、・・・、１２−４は、図１に示した記憶部１ｂの機能を実現できる。
【００４２】
ここで、ノードＮ１、Ｎ２およびＤＥ２０−１の構成要素において、プロセッサ１１−１、１１−２と、ホスト４０および管理端末５０とは、ＩＦ部１３−１、１３−２を介して接続される。ＩＦ部１３−１、１３−２は、拡張カードであり例えば、ＥＣ−Ｈ（Expansion Card for Host）が使用される。
【００４３】
プロセッサ１１−１は、例えば、ＣＰＵ（Central Processing Unit）またはＭＰＵ（Micro Processing Unit）等であって、マルチプロセッサ構成をとり、ノードＮ１内の機能全体を制御する。プロセッサ１１−２も同様な構成であり、ノードＮ２内の機能全体を制御する。
【００４４】
メモリ１２−１は、ノードＮ１のメインメモリとして利用され、プロセッサ１１−１に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。メモリ１２−２も同様にしてノードＮ２のメインメモリとして利用される。
【００４５】
ドライバ１５−１は、ＩＯＭ２ａ１を介して、プロセッサ１１−１と、記憶装置２１ａ１、・・・２１ａｎとの間でデータ転送を行う。ドライバ１５−２は、ＩＯＭ２ａ２を介して、プロセッサ１１−２と、記憶装置２１ａ１、・・・２１ａｎとの間でデータ転送を行う。
【００４６】
ドライバ１５−１、１５−２は、例えば、ＰＣＩｅ（Peripheral Component Interconnect Express）プロトコルにしたがって、データをドライブ転送するＰＣＩｅＳＷ（Switch）が使用される。ＩＦ部１４−１、１４−２は、拡張カードであってスイッチ３０に接続してノード間のインタフェース制御を行う。
【００４７】
記憶装置２１ａ１、・・・、２１ａｎは、例えば、ＨＤＤやＳＳＤであり、ディスクアレイ化されている。記憶装置２１ａ１、・・・、２１ａｎは、ＩＯＭ２ａ１、２ａ２を介して、ノードＮ１のドライバ１５−１と、ノードＮ２のドライバ１５−２との双方に接続して、ノードＮ１、Ｎ２間で共有される。
【００４８】
また、記憶装置２１ａ１、・・・、２１ａｎは、プールによって管理される。プールとは、記憶装置の仮想的な集合体である。スケールアウト型のシステムでは、複数のサーバに搭載された記憶装置をプールにまとめて、サーバ間に跨ってＲＡＩＤ（Redundant Array of Inexpensive Disks）を構築してボリュームの切り出しを行う。ノードＮ３、Ｎ４およびＤＥ２０−２の構成要素についても同様であり説明は省略する。
【００４９】
次に負荷集中が発生する状態および課題について説明する。図３は負荷集中が発生する状態の一例を示す図である。ストレージシステム２は、ホスト４０およびサーバ６１、６２を備える。また、サーバ６１はノード６ａ１、６ａ２を備え、サーバ６２はノード６ａ３、６ａ４を備える。ホスト４０は、マルチパスドライバ４１を有する。ホスト４０は、マルチパスドライバ４１を介して、ノード６ａ１、・・・、６ａ４に対し、業務アプリケーション４ａのＩ／Ｏ処理の要求を行う。
【００５０】
ここで、ノード６ａ２に故障が発生し、ノード６ａ２によるＩ／Ｏ処理の実行が不可になったとする。キャッシュデータや、メタデータ（メタテーブル）の情報は、同一サーバ上で２重化されているが、ノード６ａ２に故障が発生するとそれらの情報が再構築されることはない。このため、サーバ６１に生き残ったノード６ａ１に対して、ノード６ａ２へのアクセスがすべて引き継がれ、ノード故障によって負荷の偏り（負荷集中）が発生してしまう。
【００５１】
負荷の集中を防ぐには、ホスト４０からのＩ／Ｏを１つのノード６ａ１に集中させずに、他の生存ノード６ａ３、６ａ４にも分散させることが考えられる。しかし、各ノードは自分が処理を担当するＬＢＡに関係したメタテーブルしか持たないため、故障したノード６ａ２が処理するはずだったＩ／Ｏを他ノード（ノード６ａ３、６ａ４）が受け取っても、論理アドレスから物理アドレスへのアドレス変換ができず、実記憶装置へのデータ転送ができない。
【００５２】
また、スケールアウト型のストレージシステムでは、ノード増設が行われるため、全ノードで単純にメタテーブルを共有するシステム構成にすると、スケールアウトの最大増設時のメタテーブルを確保しておく領域が大幅に増大してしまう。
【００５３】
例えば、最大で１２８ノードまでノード数が増えるとする。この場合、２ノードで共有していたメタテーブルが最大増設時の６４倍の容量のメタテーブルの領域として確保しておかなければならず、メタテーブルが格納される記憶領域が圧迫してしまう。
【００５４】
さらに６４倍に増えたメタデータを共有するために通信トラフィックが増大し、ホストからのＩ／Ｏに悪影響を与える可能性もある。本発明はこのような点に鑑みてなされたものであり、メタ情報の共有化を効率よく行って負荷集中の抑制を図るものである。
【００５５】
＜ハードウェア＞
以降、第２の実施の形態について詳しく説明する。図４はノードのハードウェア構成の一例を示す図である。ノード１０は、図２に示したノードＮ１、・・・、Ｎ４のいずれかに該当し、プロセッサ（コンピュータ）１００によって装置全体が制御されている。すなわち、プロセッサ１００は、ノード１０の制御部として機能する。
【００５６】
プロセッサ１００には、バス１０３を介して、メモリ１０１および複数の周辺機器が接続されている。プロセッサ１００は、マルチプロセッサであってもよい。プロセッサ１００は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１００は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００５７】
メモリ１０１は、ノード１０の主記憶装置として使用される。メモリ１０１には、プロセッサ１００に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０１には、プロセッサ１００による処理に要する各種データが格納される。例えば、メタテーブル（メタ情報）の構造を有するデータ等が格納される。
【００５８】
また、メモリ１０１は、ノード１０の補助記憶装置としても使用され、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。メモリ１０１は、補助記憶装置として、フラッシュメモリやＳＳＤ等の半導体記憶装置やＨＤＤ等の磁気記録媒体を含んでもよい。
【００５９】
バス１０３に接続されている周辺機器としては、入出力インタフェース１０２、ネットワークインタフェース１０４およびストレージインタフェース１０５がある。入出力インタフェース１０２は、プロセッサ１００からの命令にしたがってノード１０の状態を表示する表示装置として機能するモニタ（例えば、ＬＥＤ（Light Emitting Diode）やＬＣＤ（Liquid Crystal Display）等）が接続されている。
【００６０】
また、入出力インタフェース１０２は、キーボードやマウス等の情報入力装置を接続可能であって、情報入力装置から送られてくる信号をプロセッサ１００に送信する。
さらにまた、入出力インタフェース１０２は、周辺機器を接続するための通信インタフェースとしても機能する。例えば、入出力インタフェース１０２は、レーザ光等を利用して、光ディスクに記録されたデータの読み取りを行う光学ドライブ装置を接続することができる。光ディスクには、Ｂｌｕ−ｒａｙＤｉｓｃ（登録商標）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）等がある。
【００６１】
また、入出力インタフェース１０２は、メモリ装置やメモリリーダライタを接続することができる。メモリ装置は、入出力インタフェース１０２との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しを行う装置である。メモリカードは、カード型の記録媒体である。
【００６２】
ネットワークインタフェース１０４は、ホスト４０、管理端末５０およびスイッチ３０とのインタフェース制御を行う。また、ネットワークインタフェース１０４は、外部ネットワークとのインタフェース制御を有し、例えば、ＮＩＣ（Network Interface Card）、無線ＬＡＮ（Local Area Network）カード等が使用できる。ネットワークインタフェース１０４で受信されたデータは、メモリ１０１やプロセッサ１００に出力される。ストレージインタフェース１０５は、ＤＥ２０−１、２０−２とのインタフェース制御を行う。
【００６３】
以上のようなハードウェア構成によって、ノード１０の処理機能を実現することができる。例えば、ノード１０は、プロセッサ１００がそれぞれ所定のプログラムを実行することで本発明の制御を行うことができる。
【００６４】
ノード１０は、例えば、コンピュータで読み取り可能な記録媒体に記録されたプログラムを実行することにより、本発明の処理機能を実現する。ノード１０に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。
【００６５】
例えば、ノード１０に実行させるプログラムを補助記憶装置に格納しておくことができる。プロセッサ１００は、補助記憶装置内のプログラムの少なくとも一部を主記憶装置にロードし、プログラムを実行する。
【００６６】
また、光ディスク、メモリ装置、メモリカード等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えば、プロセッサ１００からの制御により、補助記憶装置にインストールされた後、実行可能となる。またプロセッサ１００が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００６７】
＜機能ブロック＞
図５はノードの機能ブロックの一例を示す図である。ノード１０は、制御部１１、記憶部１２、ディスクアクセス部１３およびインタフェース部１４を備える。制御部１１は、Ｉ／Ｏ受付部１１ａ、論理担当ノード判断部１１ｂ、キャッシュ制御部１１ｃ、アドレス変換部１１ｄおよびシステム管理部１１ｅを含む。
【００６８】
Ｉ／Ｏ受付部１１ａは、ホスト４０によるＩ／Ｏ（ホストＩ／Ｏ）の受付処理を行う。論理担当ノード判断部１１ｂは、受付されたホストＩ／Ｏの処理を担当して論理アドレスを物理アドレスに変換するノードである論理担当ノードを決定する。
【００６９】
キャッシュ制御部１１ｃは、ホストＩ／Ｏに関連するデータ（以下、ホストＩ／Ｏデータと呼ぶ場合がある）を記憶部１２に保存する、またメタテーブルを共有しているノードに対してホストＩ／Ｏデータを転送する制御等を行う。
【００７０】
アドレス変換部１１ｄは、メタテーブルを参照して、ホストＩ／Ｏデータの論理アドレスを物理アドレスに変換する。システム管理部１１ｅは、通信制御を行い、またノード１０が管理ノードになった場合には、ノードの故障判定、他ノードの性能情報の取得等を行う。さらに、システム管理部１１ｅは、性能情報にもとづいて、メタテーブルの共有化の指示およびメタ共有テーブル（メタ共有情報）の生成の制御等を行う。
【００７１】
ディスクアクセス部１３は、物理アドレスにもとづいて、ストレージ２０内の該当記憶装置にアクセスする（以降では記憶装置をディスクと呼ぶ場合がある）。インタフェース部１４は、システム管理部１１ｅで生成された各種命令の他ノードへの転送インタフェース、および他ノードから送信された情報の受信インタフェースの制御を行う。
【００７２】
記憶部１２は、例えば、キャッシュメモリに該当する。記憶部１２は、ホストＩ／Ｏデータを格納し、またメタテーブルＭ０（メタ情報）の構造を有するデータ、メタ共有テーブルＭｃ０の構造を有するデータを格納する。メタテーブルＭ０およびメタ共有テーブルＭｃ０については図９、図１５で後述する。
【００７３】
なお、制御部１１は、図４のプロセッサ１００によって実現され、記憶部１２は、図４のメモリ１０１によって実現される。また、ディスクアクセス部１３は、図４のストレージインタフェース１０５で実現され、インタフェース部１４は、図４のネットワークインタフェース１０４で実現される。
【００７４】
＜Ｉ／Ｏ負荷分散および論理担当ノードの決定＞
図６はボリュームを分割したブロック構造の一例を示す図である。制御部１１は、プールから切り出したボリュームＶ０、・・・、Ｖ３に対して、ボリューム毎に所定サイズのブロックに分割し、該ブロックを各ノード（例えば、ノードＮ０、・・・、Ｎ３）に割り当ててＩ／Ｏを分散して処理する。
【００７５】
例えば、ボリュームＶ０に対してホストからＩ／Ｏアクセスが行われた場合、アクセスされたボリュームＶ０は、実際はノードＮ０のディスクであったり、ノードＮ１のディスクであったりして、異なるノードのディスクに対するアクセスとなる。このような分散処理によってノードＮ０、・・・、Ｎ３毎の負荷が平準化される。
【００７６】
ここで、ホストがＩ／Ｏを受け付けるノードを決定すると、Ｉ／Ｏを受け付けたノードは、ＬＢＡから論理アドレス／物理アドレスの変換処理を行う論理担当ノードになって、論理担当ノードにホストＩ／Ｏデータが受け渡される。
【００７７】
なお、制御部１１は、仮想ボリュームのＬＢＡに対して以下の式（１）によって均等に担当ノード番号を算出することで、論理担当ノードを決定する。
担当ノード番号＝（（ＬＢＡ）÷（分割ブロックサイズ）＋（ボリューム番号））／（構成ノード数）・・・（１）
図７はノード故障時に再計算されたブロック構造の一例を示す図である。図７の例ではノードＮ２が故障したときのブロック構造を示しており、ノードＮ２以外のノードＮ０、Ｎ１、Ｎ３でボリュームが分割されている。
【００７８】
制御部１１は、ノード故障の発生時に担当ノード番号の再計算を行い、故障したノードが担当していたＬＢＡの処理を他ノードに移し替えて負荷の分散を行う。故障が発生したノード以外の残されたノードでボリュームを分割することによって、ノード故障時の負荷分散が実現される。
【００７９】
＜キャッシュメモリの保持データの２重化＞
図８はキャッシュメモリの保持データの２重化の一例を示す図である。制御部１１は、Ｉ／Ｏを一時的にキャッシュメモリに保持する。また、キャッシュメモリに保持されるデータ（以下、キャッシュデータ）の内容は、同じサーバ内のノードと２重化され、さらにサーバを跨って他サーバ内のノードと２重化される。
【００８０】
図８の例では、サーバＳｖ１内のノードＮ１、Ｎ２でキャッシュデータが２重化され、サーバＳｖ２内のノードＮ３、Ｎ４でキャッシュデータが２重化される。また、サーバＳｖ１内のノードＮ１と、サーバＳｖ２内のノードＮ３のキャッシュデータが２重化され、さらにサーバＳｖ１内のノードＮ１と、サーバＳｖ２内のノードＮ４のキャッシュデータが２重化される。
【００８１】
また、サーバＳｖ１内のノードＮ２と、サーバＳｖ２内のノードＮ３のキャッシュデータが２重化され、さらにサーバＳｖ１内のノードＮ２と、サーバＳｖ２内のノードＮ４のキャッシュデータが２重化される。
【００８２】
このように、キャッシュデータについては、同一サーバ内での２重化だけでなく、サーバを跨いだ２重化も行われる。この場合、例えば、ノードＮ１に故障が発生した後の命令については、残ったノードＮ２と他サーバのノード間でキャッシュデータの２重化が行われることにより、高速アクセスを維持することができる。
【００８３】
なお、ストレージシステム１−２では、ノード間は高速なスイッチ３０で接続されているために、十分なデータ転送速度があり、サーバ内と同じようにキャッシュデータの転送が可能である。
【００８４】
＜メタテーブル＞
図９はメタテーブルの構成の一例を示す図である。制御部１１は、キャッシュメモリ上のメタテーブルＭ０から、どのサーバのディスクにアクセスするかを判断し、判断したディスクにアクセス可能なノードにＩ／Ｏを受け渡す。
【００８５】
メタテーブルＭ０は、プロパティ情報として、仮想ボリューム番号、仮想ＬＢＡ、実ディスクおよび実ＬＢＡを有する。実ディスクは、仮想ボリュームに対応する実際のディスクであり、実ＬＢＡは、仮想ＬＢＡに対応する実際のＬＢＡである。
【００８６】
なお、メタテーブルＭ０は、ノードのメモリ容量節約のために、各ノードが担当するＬＢＡの分だけがキャッシュメモリ上に保持されている。またメタテーブルＭ０は、制御部１１によって、同一サーバ内でのノード間または異なるサーバに跨ってのノード間で共有される。このため例えば、ノード故障時にメタテーブルＭ０を再構築する処理が不要になる。
【００８７】
＜メタテーブルの共有制限＞
ストレージシステム１−２では、スケールアウト時、例えば、最大で１２８ノードまで増設が行われる。このようなノード増設が行われた場合、すべてのノードでメタテーブルを共有しているとキャッシュ容量の増大を招くため、メタテーブルの共有には制限を設けることにする。
【００８８】
制御部１１は、ノードから取得した性能情報（例えば、ＣＰＵ使用率）にもとづいてノードの負荷を認識し、メタテーブルを共有するノード台数を、ノードの負荷によって変動させる。故障したノードの負荷を他のノード何台分に分散させるかを計算することで、メタテーブルを共有するノードの制限台数を決定する。
【００８９】
例えば、制御部１１は、他のノードへ負荷分散する場合、故障したノードに含まれる故障後のＣＰＵ使用率を、以下の式（２）で算出する。
（故障後のＣＰＵ使用率）＝（（故障前のＣＰＵ使用率）×（故障前のノード台数））／（故障後のノード台数）・・・（２）
そして、制御部１１は、１台故障後のＣＰＵ使用率が１００％を超えないような共有数を、以下の式（３）で算出する。
【００９０】
１００％≧（（ＣＰＵ使用率）×（共有台数））／（共有台数−１）・・・（３）
具体例としては、平均負荷を表す平均ＣＰＵ使用率が５０％未満のとき、メタテーブルはノード２台で共有され、平均ＣＰＵ使用率が７５％未満のとき、メタテーブルはノード４台で共有される。
【００９１】
また、平均ＣＰＵ使用率が８０％未満のとき、メタテーブルはノード５台で共有され、平均ＣＰＵ使用率が８４％未満のとき、メタテーブルはノード６台で共有される。
さらに平均ＣＰＵ使用率が８８％未満のとき、メタテーブルはノード８台で共有され、平均ＣＰＵ使用率が９０％未満のとき、メタテーブルはノード１０台で共有される。
【００９２】
上記の分け方よりも大きくノード制限台数を分けてもよい。例えば、平均ＣＰＵ使用率が５０％未満のとき、メタテーブルはノード２台で共有し、平均ＣＰＵ使用率が７５％未満のとき、メタテーブルはノード４台で共有し、平均ＣＰＵ使用率が９０％未満のとき、メタテーブルはノード１０台で共有する等としてもよい。
【００９３】
なお、これらの平均ＣＰＵ使用率とノード制限台数の対応関係は正常運用時に予め設定しておくので、ノード故障が発生した場合には、即時に対応できる構成になっている。また、平均ＣＰＵ使用率が９０％以上の場合は、過負荷の状態であるため、１０台を超えてのノード制限台数は設定しない（例えば、平均ＣＰＵ使用率が９５％になってもノード制限台数は１０とする）。
【００９４】
図１０、図１１はメタテーブルの共有制限の一例を示す図である。メタテーブルを共有する際の平均ＣＰＵ使用率とノード制限台数との対応関係の例を示している。
〔状態Ｓｔ１〕ストレージシステム１−２−１は、ノードＮ１、・・・、Ｎ８を備える。ストレージシステム１−２−１の全ノードの平均ＣＰＵ使用率が４０％のとき、メタテーブルがノード２台で共有される。
【００９５】
したがって、ノードＮ１、Ｎ２でメタテーブルを共有し、ノードＮ３、Ｎ４でメタテーブルを共有し、ノードＮ５、Ｎ６でメタテーブルを共有し、ノードＮ７、Ｎ８でメタテーブルを共有する。
【００９６】
〔状態Ｓｔ２〕ストレージシステム１−２−１の全ノードの平均ＣＰＵ使用率が８０％のとき、メタテーブルがノード４台で共有される。したがって、ノードＮ１、Ｎ２、Ｎ３、Ｎ４でメタテーブルを共有し、ノードＮ５、Ｎ６、Ｎ７、Ｎ８でメタテーブルを共有する。
【００９７】
〔状態Ｓｔ３〕ストレージシステム１−２−１の全ノードの平均ＣＰＵ使用率が９０％のとき、メタテーブルがノード８台で共有される。したがって、ノードＮ１、・・・、Ｎ８でメタテーブルを共有する。
【００９８】
〔状態Ｓｔ４〕ストレージシステム１−２−２は、状態Ｓｔ３から２台のノードが増設されたものであり、ノードＮ１、・・・、Ｎ１０を備えている。ストレージシステム１−２−２の全ノードの平均ＣＰＵ使用率が８４％のとき、メタテーブルがノード５台で共有される。したがって、ノードＮ１、・・・、Ｎ５でメタテーブルを共有し、ノードＮ６、・・・、Ｎ１０でメタテーブルを共有する。
【００９９】
〔状態Ｓｔ５〕ストレージシステム1−２−３は、状態Ｓｔ４から、１２８台までノードが増設されたものであり、ノードＮ１、・・・、Ｎ１２８を備えている。ストレージシステム１−２−３の全ノードの平均ＣＰＵ使用率が６０％のとき、メタテーブルがノード４台で共有される。
【０１００】
したがって、ノードＮ１、・・・、Ｎ４でメタテーブルを共有し、ノードＮ５、・・・、Ｎ８でメタテーブルを共有する。以降同様にして、ノードＮ１２１、・・・、Ｎ１２４でメタテーブルを共有し、ノードＮ１２５、・・・、Ｎ１２８でメタテーブルを共有する。
【０１０１】
このように、メタテーブルの共有するノード台数に制限を設けることで、メタテーブルを格納するキャッシュメモリ容量を抑制することができ、処理が複雑化するのを防ぎながら、ノード故障時にも負荷分散を実行することが可能になる。
【０１０２】
＜正常時における動作＞
次にシステムの正常時の動作（ノード故障がないときの動作）について、図１２から図１５を用いて説明する。図１２は管理ノードを含むストレージシステムの構成の一例を示す図である。ストレージシステム１−２ａは、サーバＳｖ１、Ｓｖ２、ホスト４０および管理端末５０を備え（ストレージの図示は省略）、サーバＳｖ１はノードＮ１、Ｎ２を含み、サーバＳｖ２はノードＮ３、４を含む。
【０１０３】
また、ノードＮ１、・・・、Ｎ４のうち、１台のノードが管理ノードになって、メタテーブルの共有化制御および負荷分散処理を行う。以降ではノードＮ１が管理ノードになるものとして説明する。
【０１０４】
管理ノードＮ１内の制御部１１は、ＧＵＩ（Graphical User Interface）機能を有し（図４の入出力インタフェース１０２に該当）、管理端末５０からの命令を受け取って、ノードＮ２、Ｎ３、Ｎ４それぞれの性能情報（例えば、ＣＰＵ使用率）を定期的に取得する。
【０１０５】
制御部１１は、一定時間毎の性能情報を取得することで、システム内の各ノードの負荷状態を監視する。なお、管理ノードＮ１が故障した場合、他のノードが管理ノードＮ１の役割を引き継ぐ。
【０１０６】
図１３は過負荷ノードがない場合のメタテーブルの共有状態の一例を示す図である。制御部１１は、自ノード（ノードＮ１）の負荷状態も含めて、システム内のノードＮ１、・・・、Ｎ４それぞれのＣＰＵ使用率が所定値（例えば、５０％とする）より低いことを検出したとする。
【０１０７】
この場合、同一サーバ内でメタテーブルが共有される。図１３の例では、サーバＳｖ１内のノードＮ１、Ｎ２でメタテーブルＭ１、Ｍ２が共有され、サーバＳｖ２内のノードＮ３、Ｎ４でメタテーブルＭ３、Ｍ４が共有される。
【０１０８】
図１４は過負荷ノードが発生した場合のメタテーブルの共有状態の一例を示す図である。制御部１１が、定期的に各ノードのＣＰＵ使用率を監視し、例えば、ノードＮ１、・・・、Ｎ４のうちいずれか１台でもＣＰＵ使用率が５０％より高いノードがあることを検出したとする。
【０１０９】
このような状態で例えば、過負荷ノードが故障した場合、同一サーバ内で過負荷ノードとペアとなるノードに負荷が集中する可能性がある。よって、制御部１１は、各ノードに対してメタテーブルを共有するための共有指示を出力し、各ノードがメタテーブルを持っておくようにして負荷分散を行う。
【０１１０】
図１４の例では、制御部１１は、ノードＮ３、Ｎ４に対して、メタテーブルＭ１、Ｍ２の共有指示（コピー指示）を出力する。また、制御部１１は、メタテーブルＭ３、Ｍ４を自ノードＮ１にコピーし、さらにノードＮ２に対して、メタテーブルＭ３、Ｍ４の共有指示を出力する。メタテーブルの共有化が行われると、ノードＮ１、・・・、Ｎ４は、メタ共有テーブルＭｃ０を生成して管理する。
【０１１１】
なお、メタテーブルの共有指示は、ホストＩ／Ｏに影響を与えないように、負荷の高いときはメタテーブルの転送量を制限して行われる。また、ノード故障が発生する前の高負荷状態の検出時に共有指示が発せられて、各ノードでメタテーブルのコピーが行われるので、メタテーブル共有化処理は所定時間をかけて完了させても問題はない。
【０１１２】
さらに、制御部１１は、メタテーブルのコピー中にノード故障が発生した場合、メタテーブルのコピーを最優先に行って、複数ノードに負荷分散できる環境を整えるようにする。
【０１１３】
図１５はメタ共有テーブルの構成の一例を示す図である。ノードＮ１、・・・、Ｎ４は、メタ共有テーブルＭｃ０を持ち、メタ共有テーブルＭｃ０は、メタテーブルをコピーしあったノードの組み合わせを登録している。
【０１１４】
ノード故障時には、メタ共有テーブルＭｃ０を参照してキャッシュデータの同期先が判断される。メタ共有テーブルＭｃ０を各ノードが有することで、どのノードがどのメタテーブルを共有しているかを容易に認識することができ、保守管理の効率性を向上できる。
【０１１５】
メタ共有テーブルＭｃ０は、横方向にノードの番号、縦方向にメタテーブルを所有しているメタテーブル共有対象ノードの番号が登録され、各ノードがどのノードのメタテーブルを持っているのかがわかる構造をしている。
【０１１６】
図１５の例では、ノードＮ１は、メタテーブル共有対象ノードＮ１、・・・、Ｎ４に○印が付されているので、ノードＮ１は、ノードＮ１、・・・、Ｎ４で使用されるメタテーブルを共有していることがわかる。
【０１１７】
同様に、ノードＮ５は、メタテーブル共有対象ノードＮ５、・・・、Ｎ８に○印が付されているので、ノードＮ５は、ノードＮ５、・・・、Ｎ８で使用されるメタテーブルを共有していることがわかる。
【０１１８】
なお、メタ共有テーブルＭｃ０の更新は、全ノードから性能情報を取得している管理ノードが行う。一定時間（例えば、１時間）毎に管理ノードから全ノードへ通信が行われて各ノードの持つメタ共有テーブルＭｃ０が更新される。
【０１１９】
また、各ノードは、自身の持つメタ共有テーブルＭｃ０の情報を参考にして、ノード間でメタテーブルＭ０を共有する。メタテーブルＭ０を共有することによりメタテーブルの容量が増えたときには、キャッシュメモリの容量を削ってメタテーブルＭ０の記憶容量が確保される。メタテーブルの容量は、キャッシュメモリのデータ記憶容量より小さいため性能に影響を与えることはない。
【０１２０】
＜ノード故障発生時における動作＞
次にノード故障が発生した場合の動作について、図１６、図１７を用いて説明する。ノード故障が発生すると、故障ノードの代わりにＩ／Ｏ処理を行うための論理担当ノードの再構成が行われる。
【０１２１】
図１６はノード故障が発生したシステム構成の一例を示す図である。制御部１１は、ノード故障が発生した場合、論理担当ノードの再計算を行い、故障ノードが担当していたＬＢＡの処理を他ノードに移し替えて負荷分散を行う。
【０１２２】
例えば、ノードＮ２に故障が発生した場合、制御部１１は、論理担当ノードの再計算を行い、ノードＮ２が担当していたＬＢＡの処理をノードＮ１、Ｎ３、Ｎ４のいずれかまたはすべてに移し替えて負荷分散を行う。故障ノードのメタテーブルは、移し替える先のノードへ事前にコピーされているためスムーズに論理担当処理の変更を行うことができる。
【０１２３】
また、ノードの故障を検出した管理ノードが、生存している各ノードに対して、故障ノードの情報（ノード番号）を送信し、各ノードで故障時の処理を開始する。
制御部１１は、論理担当ノードの移し替え時、最初に式（１）による計算で担当ノードを割り出し、担当ノードが故障したノードでなければ、該ノードにデータ転送を行う。また、制御部１１は、割り出した該ノードが故障したノードであることを認識した場合は、メタテーブルを共有しているノードへの割り振りを再計算する。
【０１２４】
具体的には、制御部１１は、式（１）の計算の結果、担当ノード番号が故障しているノードの番号だった場合、以下の式（４）を計算し、メタテーブルを共有しているノードのうちから、故障ノードの代わりに処理を請け負う論理担当ノードをあらためて決定する。
【０１２５】
担当ノード番号＝（（ＬＢＡ）÷（分割ブロックサイズ）＋ボリューム番号））／（メタテーブル共有ノード数−１）・・・（４）
図１７はキャッシュデータの２重化の一例を示す図である。通常動作時では上述したようにキャッシュデータは２重化される。サーバ内の２重化を示すと、ノードＮ１のキャッシュデータｄ１は、ノードＮ２のキャッシュメモリにミラーリングされ、ノードＮ２のキャッシュデータｄ２はノードＮ１のキャッシュメモリにミラーリングされる。これにより、サーバＳｖ１内のノードＮ１、Ｎ２間でキャッシュデータが２重化される。
【０１２６】
また、ノードＮ３のキャッシュデータｄ３はノードＮ４のキャッシュメモリにミラーリングされ、ノードＮ４のキャッシュメモリのキャッシュデータｄ４はノードＮ３のキャッシュメモリにミラーリングされる。これにより、サーバＳｖ２内のノードＮ３、Ｎ４間でキャッシュデータが２重化される。
【０１２７】
一方、サーバＳｖ１、Ｓｖ２間に渡ってキャッシュデータの２重化が行われるが、例えば、ノードＮ２に故障が生じた場合、ノード故障時にキャッシュメモリ上のデータをクリアして、その後にタスキ掛けでキャッシュデータの２重化を組み直す。
【０１２８】
図１７の例では、ノードＮ１のキャッシュデータｄ１はノードＮ３のキャッシュメモリにミラーリングされ、ノードＮ４のキャッシュデータｄ３はノードＮ１のキャッシュメモリにミラーリングされる。また、ノードＮ３のキャッシュデータｄ３はノードＮ４のキャッシュメモリにミラーリングされる。
【０１２９】
このような動作によって、キャッシュメモリの容量を増やすことなくサーバＳｖ１、Ｓｖ２間に渡ってキャッシュデータの２重化が実現できる。なお、ノードが故障した場合、ノード間の負荷を抑えるために故障ノードのキャッシュデータのコピーは行わない。
【０１３０】
書込みデータは新しい論理担当ノードのキャッシュメモリに保存されるため性能影響はない。読み出しデータは新しい論理担当ノードでは以前のキャッシュデータを利用できないため一時的に性能が低下するが、読み出しを続けていくうちにキャッシュデータがたまり性能が回復する。
【０１３１】
＜復旧時における動作＞
次にノード故障が復旧した場合の動作について、図１８から図２０を用いて説明する。図１８から図２０は復旧時の動作の流れの一例を示す図である。
【０１３２】
〔状態Ｓｔ１１〕制御部１１は、故障していたノードＮ２の復旧を検知する。
〔状態Ｓｔ１２〕制御部１１は、ノードＮ２に対してメタテーブルおよびメタ共有テーブルをコピーする。
【０１３３】
〔状態Ｓｔ１３〕制御部１１は、コピー完了後、各ノードに対して装置復旧を連絡し、論理担当ノードの変更を行う。これにより、故障前の負荷分散が行われていたシステムに復旧する。
【０１３４】
このように、故障していたノードが復旧した場合、制御部１１は、ペアとなるノードからメタテーブルおよびメタ共有テーブルのコピーを行う。そして、コピー完了後、制御部１１は、各ノードに対して装置復旧を通知し、論理担当ノードの変更を行って故障前の負荷分散状態に復旧させる。
【０１３５】
なお、キャッシュデータの２重化も故障前の状態に復旧させる。このときキャッシュデータのコピーは行わず、ホストＩ／Ｏによって自然にキャッシュデータがたまるのを待つ。
【０１３６】
＜メタテーブルの共有解除＞
通常運用時、またはノード故障からの復旧時において、システム全体でＣＰＵ使用率が所定値より低下して負荷の低下が認識された場合、メタテーブルの共有解除が行われる。
【０１３７】
図２１、図２２はメタテーブルの共有解除が行われた構成の一例を示す図である。
〔状態Ｓｔ２１〕ノードＮ１、・・・、Ｎ４は、メタテーブルＭ１、・・・、Ｍ４を共有している。この状態で、ノードＮ１の制御部１１が、システム全体の平均ＣＰＵ使用率が所定値より低下したことを検出した場合、ノードＮ２、Ｎ３、Ｎ４に対して、メタテーブルの共有解除の指示を送信する。
【０１３８】
〔状態Ｓｔ２２〕メタテーブルの共有解除を認識したノードＮ１、・・・、Ｎ４は、不要になったメタテーブルの削除を行う。メタテーブルＭ３、Ｍ４は、ノードＮ１、Ｎ２から削除され、メタテーブルＭ３、Ｍ４は、ノードＮ１、Ｎ２から削除される。また、メタ共有テーブルＭｃ０の更新が行われ、メタ共有テーブルＭｃ０−１となる。
【０１３９】
図２３はメタ共有テーブルの更新の一例を示す図である。メタ共有テーブルＭｃ０−１は、メタ共有テーブルＭｃ０から更新されたときの登録状態を示している。
メタ共有テーブルＭｃ０−１の登録状態から、サーバＳｖ１、Ｓｖ２間に渡って共有されていたメタテーブルは削除されていることがわかる。例えば、ノードＮ１はメタテーブルの共有時にはメタテーブルＭ１、・・・、Ｍ４を共有していたが、メタ共有テーブルＭｃ０−１の登録状態から、メタテーブルＭ３、Ｍ４は現在削除されていることがわかる。
【０１４０】
このように、システム全体でＣＰＵ使用率が低下した場合、管理ノードの制御部１１からメタテーブル共有解除の指示が行われ、メタ共有テーブルが更新され、不要になったメタテーブルの削除が行われる。このように、負荷低下時にはメタテーブルの共有解除が行われるので、メタテーブルを記憶していた容量を解放することができる。
【０１４１】
＜フローチャート＞
図２４は管理ノードの全体動作を示すフローチャートである。以下の処理は、管理ノードの処理であり、システムの初期終了後、常時動作するものである。
【０１４２】
〔ステップＳ１１〕管理ノードの制御部１１は、システム内の全ノードとの疎通確認を行う。例えば、ＰＩＮＧによるポーリング応答の受信にもとづく疎通確認を行うことができる。
【０１４３】
〔ステップＳ１２〕制御部１１は、生存ノード数の変化があるか否かを判定する。生存ノード数に変化がある場合はステップＳ１３へ処理が進み、変化がない場合はステップＳ１９へ処理が進む。
【０１４４】
〔ステップＳ１３〕制御部１１は、ノード故障が生じたか、または故障ノードが復旧したかを判定する。ノード故障が生じて生存ノード数に変化があった場合はステップＳ１４へ処理が進み、故障ノードが復旧して生存ノード数に変化があった場合はステップＳ１５へ処理が進む。
【０１４５】
〔ステップＳ１４〕制御部１１は、全ノードに対して、故障ノードのノード番号を通知する。ステップＳ１９へ処理が進む。
〔ステップＳ１５〕制御部１１は、故障から復旧した復旧ノードが含まれるサーバ内でペアになっているペアノードに対し、復旧ノードへメタテーブルのコピーをするように指示する。
【０１４６】
〔ステップＳ１６〕制御部１１は、メタテーブルのコピー状況を確認する。
〔ステップＳ１７〕制御部１１は、メタテーブルのコピーが完了したか否かを判定する。コピーが未完了の場合は、ステップＳ１６へ処理が戻り、コピーが完了した場合は、ステップＳ１８へ処理が進む。
【０１４７】
〔ステップＳ１８〕制御部１１は、全ノードに対して、故障ノードが復旧したことを通知する。
〔ステップＳ１９〕制御部１１は、全ノードから性能情報（例えば、ＣＰＵ使用率）を取得する。
【０１４８】
〔ステップＳ２０〕制御部１１は、取得した性能情報にもとづき、システム全体の負荷を検出し、検出した負荷に変動があるか否かを判定する。負荷が所定範囲内にあり変動なしと判定した場合はステップＳ１１へ処理が戻る。また、負荷が所定範囲外にあり変動あり（高負荷または低負荷）と判定した場合はステップＳ２１へ処理が進む。
【０１４９】
〔ステップＳ２１〕制御部１１は、メタ共有テーブルの更新を行い、更新後のメタ共有テーブルを全ノードに配布する。または、管理ノードの制御部がメタ共有テーブルの更新指示を各ノードに送信し、ノード毎にメタ共有テーブルを更新するとしてもよい。ステップＳ１１へ処理が戻る。
【０１５０】
図２５はメタ共有テーブルの更新動作を示すフローチャートである。以下の処理は、管理ノードから送信されたメタ共有テーブルの更新指示を各ノードが受信し、ノード毎にメタ共有テーブルを更新する動作を示している。よって、以下の処理は、管理ノード以外のノードの処理であり、システムの初期終了後、常時動作する。
【０１５１】
〔ステップＳ３１〕管理ノード以外のノードの制御部１１は、管理ノードからメタ共有テーブルの更新指示を受信したか否かを判定する。更新指示を受信した場合はステップＳ３２へ処理が進み、受信しない場合はステップＳ３１の処理を繰り返す。
【０１５２】
〔ステップＳ３２〕制御部１１は、メタテーブルを共有する相手ノードを認識する。
〔ステップＳ３３〕制御部１１は、メタテーブルを共有するノード数の増減を判定する。メタテーブルを共有するノード数が減少している場合はステップＳ３４の処理へ進み、メタテーブルを共有するノード数が増加している場合はステップＳ３５の処理へ進む。
【０１５３】
〔ステップＳ３４〕制御部１１は、減少したノードのノード番号をメタ共有テーブルから削除する。ステップＳ３１の処理へ戻る。
〔ステップＳ３５〕制御部１１は、増加したノードのノード番号をメタ共有テーブルに追加する。この場合、増加したノード数分のＩ／Ｏデータをキャッシュメモリにライトバックし、ライトバックによって空いたメモリ領域をクリアして、該領域にメタ共有テーブルの追加分を確保する。
【０１５４】
〔ステップＳ３６〕制御部１１は、ホストＩ／Ｏのアクセスの割合を監視する。アクセスの割合が所定値（例えば、５０％とする）以上ある場合は、ステップＳ３６の処理を繰り返す。アクセスの割合が５０％未満の場合は、ステップＳ３７へ処理が進む。
【０１５５】
〔ステップＳ３７〕制御部１１は、ホストＩ／Ｏのアクセスの割合が少ないときを見計らって自身のメタテーブルを新しく追加された共有対象のノードへ転送する。ステップＳ３１へ処理が戻る。
【０１５６】
図２６は論理担当ノードの判断処理を示すフローチャートである。
〔ステップＳ４１〕制御部１１は、ホストＩ／Ｏの発生を認識する。
〔ステップＳ４２〕制御部１１は、ホストＩ／Ｏを処理する論理担当ノードを求める。
【０１５７】
〔ステップＳ４３〕制御部１１は、求めた論理担当ノードが故障中か否かを判定する。故障中の場合はステップＳ４４へ処理が進み、故障していない場合はステップＳ４５へ処理が進む。
【０１５８】
〔ステップＳ４４〕制御部１１は、代替の論理担当ノードを求める。
〔ステップＳ４５〕制御部１１は、論理担当ノードへホストＩ／Ｏデータを転送する。
図２７はキャッシュ制御の動作を示すフローチャートである。
【０１５９】
〔ステップＳ５１〕制御部１１は、受信したホストＩ／Ｏデータをキャッシュメモリに保持する。
〔ステップＳ５２〕制御部１１は、ペアノードは故障中か否かを判定する。故障中の場合はステップＳ５３へ処理が進み、故障していない場合はステップＳ５４へ処理が進む。
【０１６０】
〔ステップＳ５３〕制御部１１は、メタテーブルを共有している他ノードとホストＩ／Ｏデータを共有する。
〔ステップＳ５４〕制御部１１は、ペアノードとホストＩ／Ｏデータを共有する。
【０１６１】
図２８はアドレス変換処理を含む制御動作を示すフローチャートである。
〔ステップＳ６１〕制御部１１は、ホストＩ／Ｏ処理の指示を受信する。
〔ステップＳ６２〕制御部１１は、メタテーブルを参照して論理アドレス／物理アドレス変換を行う。
【０１６２】
〔ステップＳ６３〕制御部１１は、変換後の物理アドレスにしたがい担当ディスクへデータ転送を行う。
〔ステップＳ６４〕制御部１１は、メタテーブルの更新がある場合、自身のメタテーブルを更新する。
【０１６３】
〔ステップＳ６５〕制御部１１は、メタ共有テーブルを参照して、更新後のメタテーブルの情報を、メタテーブルを共有しているノードへ転送する。
以上説明したように、本発明によれば、スケールアウト型のストレージシステムで高負荷状態が発生した場合、同一サーバ上の他ノードにホストＩ／Ｏを移すのではなく、複数のノードに跨ってメタテーブルを共有化して、論理担当ノードの処理を分散させる。これにより負荷集中を防ぐことができる。
【０１６４】
また、メタテーブルを複数のノードで共有化することで、ノード故障が起きた場合でもメタテーブルのデータ移動が不要になるので、早急な復旧が可能になる。さらに、メタテーブルの共有化はシステムの負荷に応じてノードで共有させる台数を制限するのでメモリ容量の節約が可能になる。
【０１６５】
上記で説明した本発明のストレージ管理装置１およびノード１０の処理機能は、コンピュータによって実現することができる。この場合、ストレージ管理装置１およびノード１０が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【０１６６】
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等がある。光ディスクには、ＣＤ−ＲＯＭ／ＲＷ等がある。光磁気記録媒体には、ＭＯ（Magneto Optical disk）等がある。
【０１６７】
プログラムを流通させる場合、例えば、そのプログラムが記録されたＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１６８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
【０１６９】
また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤ等の電子回路で実現することもできる。
【０１７０】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１７１】
（付記１）  ストレージに対するデータの入出力処理を行う複数のノードを管理するストレージ管理装置であって、
グループ化されている前記複数のノードの負荷状況の監視を行い、前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、前記負荷状況にもとづいて遷移させる制御部
を有するストレージ管理装置。
【０１７２】
（付記２）  前記制御部は、前記複数のノードすべての負荷が閾値より低いことを検出した場合、前記第１の共有状態に遷移させ、前記複数のノードのうち少なくとも一の前記ノードの前記負荷が前記閾値より高いことを検出した場合、前記第２の共有状態に遷移させる付記１記載のストレージ管理装置。
【０１７３】
（付記３）  前記制御部は、前記ノードそれぞれの性能情報を取得し、前記性能情報から検出した前記負荷を平均化して平均負荷を算出し、前記平均負荷にもとづいて、前記メタ情報を共有する前記ノードの共有範囲を決定する付記１記載のストレージ管理装置。
【０１７４】
（付記４）  前記制御部は、前記メタ情報を共有している前記ノードの組合せに関するメタ共有情報を生成して保持する付記１記載のストレージ管理装置。
（付記５）  前記制御部は、前記ノードそれぞれの性能情報を取得し、前記性能情報から検出した前記負荷が前記閾値より低下したことを検出した場合、前記メタ情報の共有の復帰を行う付記２記載のストレージ管理装置。
【０１７５】
（付記６）  前記制御部は、同一の筐体に実装されている前記ノードの組を同一のグループとし、前記負荷が前記閾値より低いことを検出した場合、前記メタ情報を同一の前記筐体内でペアになって実装されているノード間で共有させる共有化を行い、前記負荷が前記閾値より高いことを検出した場合、同一の前記筐体内での前記共有化の状態からさらに、前記メタ情報を異なる前記筐体に跨ったノード間で共有させる付記２記載のストレージ管理装置。
【０１７６】
（付記７）  ストレージと、
前記ストレージに対するデータの入出力処理を行う複数のノードと、
グループ化されている前記複数のノードの負荷状況の監視を行い、前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、前記負荷状況にもとづいて遷移させる管理ノードと、
を有するストレージシステム。
【０１７７】
（付記８）  ストレージに対するデータの入出力処理を行う複数のノードに対し、グループ化されている前記複数のノードの負荷状況の監視を行い、
前記データの入出力処理を行ったノードがそれぞれ保持する前記データのメタ情報を同一グループ内のノード間で共有させる第１の共有状態と、前記データの前記メタ情報を異なるグループに跨ったノード間で共有させる第２の共有状態とを、前記負荷状況にもとづいて遷移させる、
処理をコンピュータに実行させるプログラム。
【０１７８】
（付記９）  ストレージと、
前記ストレージへのデータの第１のメタ情報にもとづいて前記ストレージに対する前記データの入出力処理を行う第１のノードと、前記データの第２のメタ情報にもとづいて前記ストレージに対する前記データの入出力処理を行う第２のノードとを有する第１のサーバと、
前記データの第３のメタ情報にもとづいて前記ストレージに対する前記データの入出力処理を行う第３のノードと、前記データの第４のメタ情報にもとづいて前記ストレージに対する前記データの入出力処理を行う第４のノードとを有する第２のサーバと、
を備え、
前記第１のノードは、
前記第１、第２、第３、第４のノードの負荷状況の監視を行い、
前記第１、第２、第３、第４のノードの負荷が閾値より低いことを検出した場合、前記第１のサーバ内でペアとなる前記第１のノードと前記第２のノード間で前記第１のメタ情報と前記第２のメタ情報を共有させ、前記第２のサーバ内でペアとなる前記第３のノードと前記第４のノード間で前記第３のメタ情報と前記第４のメタ情報を共有させる共有化を行い、
前記第１、第２、第３、第４のノードのうち少なくとも１台のノードの負荷が閾値より高いことを検出した場合、同一の前記第１、第２のサーバ内での前記共有化の状態からさらに、前記第１のサーバと前記第２のサーバとに跨って、前記第１のノードに前記第１、第２、第３、第４のメタ情報を共有させ、前記第２のノードに前記第１、第２、第３、第４のメタ情報を共有させ、前記第３のノードに前記第１、第２、第３、第４のメタ情報を共有させ、前記第４のノードに前記第１、第２、第３、第４のメタ情報を共有させる
ストレージシステム。
【符号の説明】
【０１７９】
１  ストレージ管理装置
１ａ  制御部
１ｂ  記憶部
１−１  ストレージシステム
ｓｖ１、ｓｖ２  サーバ
ｎ１、ｎ２、ｎ３、ｎ４  ノード
２０ａ、２０ｂ  ストレージ
ｍ１、ｍ２、ｍ３、ｍ４  メタ情報
【図１】
2020021235.tif 000003
【図２】
2020021235.tif 000004
【図３】
2020021235.tif 000005
【図４】
2020021235.tif 000006
【図５】
2020021235.tif 000007
【図６】
2020021235.tif 000008
【図７】
2020021235.tif 000009
【図８】
2020021235.tif 000010
【図９】
2020021235.tif 000011
【図１０】
2020021235.tif 000012
【図１１】
2020021235.tif 000013
【図１２】
2020021235.tif 000014
【図１３】
2020021235.tif 000015
【図１４】
2020021235.tif 000016
【図１５】
2020021235.tif 000017
【図１６】
2020021235.tif 000018
【図１７】
2020021235.tif 000019
【図１８】
2020021235.tif 000020
【図１９】
2020021235.tif 000021
【図２０】
2020021235.tif 000022
【図２１】
2020021235.tif 000023
【図２２】
2020021235.tif 000024
【図２３】
2020021235.tif 000025
【図２４】
2020021235.tif 000026
【図２５】
2020021235.tif 000027
【図２６】
2020021235.tif 000028
【図２７】
2020021235.tif 000029
【図２８】
2020021235.tif 000030