(57)【要約】【課題】データの信頼性の確保を早期に実現しつつ、リビルド処理による他のＩ／Ｏ性能の低下を抑制することができるようにする。【解決手段】上位ストレージ装置１０１において、ＢＥＰＫ１０８と、ＭＰ１１５とを有し、複数の下位ストレージ装置１２１の各々は、複数のストライプ列を構成する複数のストライプを有し、複数のストライプ列の各々は、複数の下位ストレージ装置１２１がそれぞれ有する２以上のストライプの列であり、複数のストライプ列の各々は、複数のデータ要素と冗長コードとを格納するようになっており、所定の許容数までの下位ストレージ装置１２１が故障した場合に、ストライプにあるデータ要素を復元することができる構成であり、ＭＰ１１５を、故障した下位ストレージ装置１２１における障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、復元処理における処理速度を制御するように構成する。【選択図】図１
2020144459.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージ装置に接続されたインターフェースと、
前記インターフェースに接続された制御部と
を有し、
前記複数のストレージ装置の各々は、複数のストライプ列を構成する複数のストライプを有し、
前記複数のストライプ列の各々は、２以上のストレージ装置がそれぞれ有する２以上のストライプの列であり、
前記複数のストライプ列の各々は、複数のデータ要素と少なくとも１つの冗長コードとを格納するようになっており、所定の許容数までのストレージ装置が故障した場合に、その故障したストレージ装置のストライプにあるデータ要素を復元することができる構成であり、
前記ストレージ装置の数は、１つのストライプ列を構成するストライプの数よりも多く、
前記制御部は、
故障したストレージ装置におけるストライプである障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、前記障害ストライプの復元処理における処理速度を制御する
ストレージシステム。
【請求項２】
前記制御部は、
前記ストライプ列に含まれる前記障害ストライプの数が所定のしきい値以上である場合に、前記ストライプ列の復元の優先度が高いと判定し、前記しきい値未満である場合に、前記ストライプ列の復元の優先度が低いと判定し、
前記復元の優先度が高いと判定された前記ストライプ列の復元処理を、前記優先度が低いと判定された前記障害ストライプ列の復元処理よりも前に実行するとともに、前記優先度が低いと判定された前記障害ストライプ列の復元処理における処理速度を、前記復元の優先度が高いと判定された前記ストライプ列の復元処理における処理速度よりも低くなるように制御する
請求項１に記載のストレージシステム。
【請求項３】
前記制御部は、
複数の前記ストライプ列を格納する複数のストレージ装置における故障したストレージ装置の台数に基づいて、前記ストライプ列の復元の優先度を判定し、
判定された前記ストライプ列の優先度に基づいて、前記障害ストライプ列の復元処理における処理速度を制御する
請求項１に記載のストレージシステム。
【請求項４】
前記制御部は、
前記データ要素を格納する障害ストライプの復元の優先度が、前記冗長コードを格納する障害ストライプの復元の優先度よりも高いと判定し、
前記データ要素を格納する障害ストライプの復元処理を、前記冗長コードを格納する障害ストライプの復元処理よりも前に実行するとともに、前記冗長コードを格納する障害ストライプの復元処理における処理速度を、前記データ要素を格納する障害ストライプの復元処理における処理速度よりも低くなるように制御する。
請求項１に記載のストレージシステム。
【請求項５】
前記制御部は、
前記データ要素を格納する障害ストライプの復元処理を行う際に、この障害ストライプと同じストライプ列に属するパリティ部を格納する障害ストライプについての復元処理も併せて実行する
請求項４に記載のストレージシステム。
【請求項６】
前記制御部は、
前記ストライプ列に含まれる前記障害ストライプの中の所定のしきい値を超えている数に相当する前記障害ストライプの復元の優先性を、他の障害ストライプの復元の優先度よりも高いと判定し、
前記ストライプ列に含まれる前記障害ストライプの中の所定のしきい値を超えている数に相当する前記障害ストライプの復元処理を、他の前記障害ストライプの復元処理よりも前に実行するとともに、他の前記障害ストライプの復元処理における処理速度を、前記ストライプ列に含まれる前記障害ストライプの中の所定のしきい値を超えている数に相当する前記障害ストライプの復元処理における処理速度よりも低くなるように制御する
請求項１に記載のストレージシステム。
【請求項７】
前記所定のしきい値は、
前記ストライプ列のデータの信頼性の維持に対して許容される、前記許容数から低下可能な冗長度である
請求項６に記載のストレージシステム。
【請求項８】
前記制御部は、
所定の時点における前記障害ストライプの復元の優先度に従って、前記障害ストライプの復元処理を実行している場合において、
前記障害ストライプの復元処理の実行を中止し、前記所定の時点よりも後の時点における前記障害ストライプの復元の優先度の判定に従って、前記障害ストライプの復元処理を新たに実行する
請求項２から請求項７のいずれか一項に記載のストレージシステム。
【請求項９】
前記制御部は、
ホスト計算機からのＩ／Ｏに対する前記障害ストライプの復元処理のＩ／Ｏの比率の許容値、前記障害ストライプの復元処理に対する前記制御部における実行優先度、又は、前記障害ストライプの復元処理に割り当てる資源量を調整することにより、前記障害ストライプの復元処理における処理速度を制御する
請求項１から請求項８のいずれか一項に記載のストレージシステム。
【請求項１０】
複数のストレージ装置に接続されたインターフェースと、
前記インターフェースに接続された制御部と、を有するストレージシステムにおけるデータ管理方法であって、
前記複数のストレージ装置の各々は、複数のストライプ列を構成する複数のストライプを有し、
前記複数のストライプ列の各々は、２以上のストレージ装置がそれぞれ有する２以上のストライプの列であり、
前記複数のストライプ列の各々は、複数のデータ要素と少なくとも１つの冗長コードとを格納するようになっており、所定の許容数までのストレージ装置が故障した場合に、その故障したストレージ装置のストライプにあるデータ要素を復元することができる構成であり、
前記ストレージ装置の数は、１つのストライプ列を構成するストライプの数よりも多く、
前記ストレージシステムは、
故障したストレージ装置におけるストライプである障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、前記障害ストライプの復元処理における処理速度を制御する
データ管理方法。
【請求項１１】
複数のストレージ装置に接続されたインターフェースと、
前記インターフェースに接続された制御部と、を有するストレージシステムを構成するコンピュータに実行させるデータ管理プログラムであって、
前記複数のストレージ装置の各々は、複数のストライプ列を構成する複数のストライプを有し、
前記複数のストライプ列の各々は、２以上のストレージ装置がそれぞれ有する２以上のストライプの列であり、
前記複数のストライプ列の各々は、複数のデータ要素と少なくとも１つの冗長コードとを格納するようになっており、所定の許容数までのストレージ装置が故障した場合に、その故障したストレージ装置のストライプにあるデータ要素を復元することができる構成であり、
前記ストレージ装置の数は、１つのストライプ列を構成するストライプの数よりも多く、
前記データ管理プログラムは、
前記コンピュータを、
故障したストレージ装置におけるストライプである障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、前記障害ストライプの復元処理における処理速度を制御させる
データ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のストレージ装置により、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）グループを構成するストレージシステム等に関し、データを管理する技術に関する。
【背景技術】
【０００２】
従来、ストレージシステムにおける複数のストレージ装置により、ＲＡＩＤグループを構成し、ＲＡＩＤグループに基づいて作成された論理ボリュームを、上位装置（例えばホスト計算機）へ提供することが行われている。
【０００３】
このようなストレージシステムにおいては、冗長データを記憶するＲＡＩＤグループを構成するいずれかのストレージ装置に故障が発生した場合には、冗長データ等を使って、故障が発生したストレージ装置に格納されていたデータを復元（リビルド）することが行われる。
【０００４】
ＲＡＩＤに関する技術として、特許文献１には、通常データと、通常データを復元するための冗長データとを含む複数のストライプ列から、ストライプ列のストライプデータ要素を格納する複数のストレージ装置の中の所定の許容数又は所定の許容数に最も近い数のストレージ装置が故障しているストライプ列を検出し、検出したストライプ列のストライプデータ要素を優先して、ストレージ装置に復元させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１５−５２５３７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ホスト（ホスト計算機）で利用されるデータを管理するストレージシステムでは、一般的には、ホストによる処理の継続が必要である場合がある。このようなストレージシステムでは、ストレージ装置に故障が発生した場合において、ホストによるＩ／Ｏの処理を継続した状態で、故障が発生したストレージ装置に格納されていたデータをリビルドする必要がある。この場合には、ストレージシステムにおいては、ホストからのＩ／Ｏを処理する必要があるとともに、リビルドに係るＩ／Ｏを処理する必要がある。このため、リビルド処理の間においては、ホストに対するＩ／Ｏ性能（ホストＩ／Ｏ性能）が低下してしまう。
【０００７】
近年では、ストレージ装置の大容量化が進んでおり、リビルドに要する時間が長時間化している。リビルドの高速化のためには、リビルドに割くＩ／Ｏ資源を増やしてリビルドを高速化することが考えられるが、このようにすると、ホストのＩ／Ｏに割り当てられるＩ／Ｏ資源が減るため、ホストＩ／Ｏ性能の低下率が大きくなる。リビルド時間の短縮と、Ｉ／Ｏ性能の低下幅の低減とは、トレードオフ関係にあり、両者の両立が困難である。
【０００８】
本発明は、上記事情に鑑みなされたものであり、その目的は、データの信頼性の確保を早期に実現しつつ、リビルド処理による他のＩ／Ｏ性能の低下を抑制することのできる技術による提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、一観点に係るストレージシステムは、複数のストレージ装置に接続されたインターフェースと、インターフェースに接続された制御部と、有し、複数のストレージ装置の各々は、複数のストライプ列を構成する複数のストライプを有し、複数のストライプ列の各々は、２以上のストレージ装置がそれぞれ有する２以上のストライプの列であり、複数のストライプ列の各々は、複数のデータ要素と少なくとも１つの冗長コードとを格納するようになっており、所定の許容数までのストレージ装置が故障した場合に、その故障したストレージ装置のストライプにあるデータ要素を復元することができる構成であり、ストレージ装置の数は、１つのストライプ列を構成するストライプの数よりも多く、制御部は、故障したストレージ装置におけるストライプである障害ストライプのデータ要素又は冗長コードについての復元の優先度に基づいて、障害ストライプの復元処理における処理速度を制御する。
【発明の効果】
【００１０】
本発明によれば、データの信頼性の確保を早期に実現しつつ、リビルド処理による他のＩ／Ｏ性能の低下を抑制することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係る計算機システムのハードウェア構成図である。
【図２】図２は、実施例１に係るデータの論理的な構成図である。
【図３】図３は、実施例１に係る下位ストレージ装置におけるデータの論理的な構成図である。
【図４】図４は、実施例１に係る共有メモリのテーブルを示す図である。
【図５】図５は、実施例１に係るページマッピングテーブルの一例を示す図である。
【図６】図６は、実施例１に係るパーセルマッピングテーブルの一例を示す図である。
【図７】図７は、実施例１に係るドライブ状態テーブルの一例を示す図である。
【図８】図８は、実施例１に係るローカルメモリの構成図である。
【図９】図９は、実施例１に係る速度制御リビルド処理のフローチャートである。
【図１０】図１０は、実施例１に係るエクステント分類処理のフローチャートである。
【図１１】図１１は、実施例１に係るリビルド処理の一例を示すフローチャートである。
【図１２】図１２は、実施例１に係るデータ復元処理の一例を示すフローチャートである。
【図１３】図１３は、実施例１に係る通常リビルド処理の一例を示すフローチャートである。
【図１４】図１４は、実施例１に係る管理サーバの管理画面の一例を示す図である。
【図１５】図１５は、実施例２に係る速度制御リビルド処理の一例を示すフローチャートである。
【図１６】図１６は、実施例３に係るパーセルマッピングテーブルの一例を示す図である。
【図１７】図１７は、実施例３に係る速度制御リビルド処理の一例を示すフローチャートである。
【図１８】図１８は、実施例３に係るデータ部リビルド処理の一例を示すフローチャートである。
【図１９】図１９は、実施例３に係るパリティ部リビルド処理の一例を示すフローチャートである。
【図２０】図２０は、実施例４に係るローカルメモリの構成図である。
【図２１】図２１は、実施例４に係るパーセルマッピングテーブルの一例を示す図である。
【図２２】図２２は、実施例４に係る速度制御リビルド処理の一例を示すフローチャートである。
【図２３】図２３は、実施例４に係るリビルド先領域決定処理の一例を示すフローチャートである。
【図２４】図２４は、実施例４に係る部分データ復元処理の一例を示すフローチャートである。
【図２５】図２５は、実施例５に係る計算機システムのハードウェア構成図である。
【発明を実施するための形態】
【００１２】
いくつかの実施例について、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
なお、以下の説明では、「ａａａテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ａａａテーブル」を「ａａａ情報」と呼ぶことができる。
【００１４】
また、以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又は通信インターフェースデバイス（例えばポート）を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有する計算機（例えば、管理計算機、ホスト計算機、ストレージ装置等）が行う処理としてもよい。また、コントローラは、プロセッサそれ自体であってもよいし、コントローラが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから各コントローラにインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
【実施例１】
【００１５】
実施例１に係るストレージシステムを含む計算機システムの概要を説明する。
【００１６】
ストレージシステムは、例えば、図１に示す上位ストレージ装置１０１により構成される。ストレージシステムは、外部ストレージ装置１０４を含んでもよい。上位ストレージ装置１０１のＤＫＵ１１７には、下位ストレージ装置１２１が複数備えられている。上位ストレージ装置１０１においては、複数の下位ストレージ装置１２１の記憶領域により構成される容量プール（以下、プールという）が管理される。また、上位ストレージ装置１０１においては、プールの領域を用いてＲＡＩＤグループが構成される。すなわち、プールの領域を構成する複数の下位ストレージ装置１２１を用いて、ＲＡＩＤグループが構成されている。
【００１７】
ＲＡＩＤグループの記憶領域は、複数のサブ記憶領域列で構成されている。各サブ記憶領域列は、ＲＡＩＤグループを構成する複数のストレージ装置（下位ストレージ装置１２１及び／又は外部ストレージ装置１０４）に跨っており、複数のストレージ装置に対応した複数のサブ記憶領域で構成されている。ここで、１つのサブ記憶領域を、「ストライプ」と呼び、複数のストライプで構成された一列を、「ストライプ列」と呼ぶ。複数のストライプ列によって、ＲＡＩＤグループの記憶領域が構成されている。
【００１８】
ＲＡＩＤには、いくつかのレベル（以下、「ＲＡＩＤレベル」という）がある。
【００１９】
例えば、ＲＡＩＤ５では、ＲＡＩＤ５に対応したホスト計算機（ホストという）から指定されたライト対象のデータは、所定サイズのデータ（以下、便宜上「データ単位」という）に分割されて、各データ単位が、複数のデータ要素（データ部）に分割され、複数のデータ要素が、複数のストライプに書き込まれる。また、ＲＡＩＤ５では、ストレージ装置に障害が発生したことによりそのストレージ装置から読み出せなくなったデータ要素をリビルドするために、各データ単位に対して、“パリティ”と呼ばれる冗長な情報（以下、「冗長コード」、「パリティ部」）が生成され、その冗長コードも、同一のストライプ列のストライプに書き込まれる。例えば、ＲＡＩＤグループを構成するストレージ装置の数が４である場合は、そのうちの３つのストレージ装置に対応する３つのストライプに、データ単位を構成する３つのデータ要素が書き込まれ、残りの１つのストレージ装置に対応するストライプに、冗長コードが書き込まれる。以下、データ要素と冗長コードとを区別しない場合には、両者をそれぞれストライプデータ要素ということもある。
【００２０】
また、ＲＡＩＤ６では、ＲＡＩＤグループを構成する複数の記憶装置のうちの２つのストレージ装置に障害が発生した等の理由により、データ単位を構成する複数のデータ要素のうちの２つのデータ要素を読み出すことができない場合に、これら２つのデータ要素を復元することができるように、各データ単位に対して、２種類の冗長コード（Ｐパリティ、Ｑパリティという）が生成されて、それぞれの冗長コードが同一のストライプ列のストライプに書き込まれる。
【００２１】
また、上記に説明した以外にもＲＡＩＤレベルは存在する（例えばＲＡＩＤ１〜４）。また、データの冗長化技術として、３重ミラー（Ｔｒｉｐｌｉｃａｔｉｏｎ）、パリティを３個用いたトリプルパリティ技術等もある。また、冗長コードの生成技術についても、ガロア演算を用いたＲｅｅｄ−ｓｏｌｏｍｏｎ符号や、ＥＶＥＮ−ＯＤＤ等さまざまな技術が存在する。本発明の実施例では、主にＲＡＩＤ５，６について説明するが、これは本発明を限定するものではなく、上述した方法の置き換えによる応用が可能である。
【００２２】
まず、実施例１に係るストレージシステムを含む計算機システムを説明する。
【００２３】
図１は、実施例１に係る計算機システムのハードウェア構成図である。
【００２４】
計算機システムは、１以上のホスト計算機（以下、ホストという）１０３、管理サーバ１０２と、上位ストレージ装置１０１とを含む。ホスト計算機１０３と、管理サーバ１０２と、上位ストレージ装置１１０１とは、ネットワーク１２０を介して接続されている。ネットワーク１２０は、ローカルエリアネットワークであってもよく、ワイドエリアネットワークであってもよい。また、上位ストレージ装置１０１に、１以上の外部ストレージ装置１０４を接続するようにしてもよい。外部ストレージ装置１０４は、１つ以上の記憶デバイスを含む。記憶デバイスは、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリである。
【００２５】
ホスト１０３は、例えば、アプリケーションを実行する計算機であり、上位ストレージ装置１０１からアプリケーションに利用するデータを読み出したり、上位ストレージ装置１０１にアプリケーションで作成したデータを書き込んだりする。
【００２６】
管理サーバ１０２は、計算機システムを管理する管理処理を実行するための管理者により使用される計算機である。管理サーバ１０２は、入力デバイスに対する管理者の操作により、データを復元する際に実行させるリビルド処理のモードの設定を受け付け、上位ストレージ装置１０１を、受け付けたリビルド処理を実行させるように設定する。
【００２７】
上位ストレージ装置１０１は、１以上のフロントエンドパッケージ（ＦＥＰＫ）１０５と、保守インターフェース（保守Ｉ／Ｆ）１０７と、１以上のマイクロプロセッサパッケージ（ＭＰＰＫ）１１４と、１以上のキャッシュメモリパッケージ（ＣＭＰＫ）１１２と、１以上のバックエンドパッケージ（ＢＥＰＫ）１０８と、内部ネットワーク１２２と、１以上のディスクユニット（ＤＫＵ）１１７とを有する。ＦＥＰＫ１０５、保守Ｉ／Ｆ１０７、ＭＰＰＫ１１４、ＣＭＰＫ１１２、及びＢＥＰＫ１０８は、内部ネットワーク１２２を介して接続されている。ＢＥＰＫ１０８は、複数系統のパスを介してＤＫＵ１１７と接続されている。
【００２８】
ＦＥＰＫ１０５は、インターフェースデバイスの一例であり、１以上のポート１０６を有する。ポート１０６は、上位ストレージ装置１０１を、ネットワーク１２０等を介して種々の装置（ホスト１０３、外部ストレージ装置１０４等）と接続する。保守Ｉ／Ｆ１０７は、上位ストレージ装置１０１を、管理サーバ１０２と接続するためのインターフェースである。
【００２９】
ＭＰＰＫ１１４は、制御部の一例としてのマイクロプロセッサ（ＭＰ）１１５と、ローカルメモリ（ＬＭ）１１６とを有する。ＬＭ１１６は、各種プログラムや、各種情報を記憶する。ＭＰ１１５は、ＬＭ１１６に格納されたプログラムを実行して各種処理を実行する。ＭＰ１１５は、ＢＥＰＫ１０８を介して、各種コマンドをＤＫＵ１１７の下位ストレージ装置１２１に送信する。また、ＭＰ１１５は、ＦＥＰＫ１０５を介して、各種コマンドを外部ストレージ装置１０４に送信する。
【００３０】
ＣＭＰＫ１１２は、キャッシュメモリ（ＣＭ）１１３を有する。ＣＭ１１３は、ホスト１０３から下位ストレージ装置１２１等に書き込むデータ（ライトデータ）や、下位ストレージ装置１２１から読み出したデータ（リードデータ）を一時的に格納する。
【００３１】
ＢＥＰＫ１０８は、インターフェースデバイス（インターフェース）の一例であり、パリティ演算器１０９と、転送バッファ（ＤＸＢＦ）１１０と、バックエンドコントローラ（ＢＥコントローラ）１１１とを有する。
【００３２】
パリティ演算器１０９は、例えば、小型のプロセッサであり、下位ストレージ装置１２１に障害が発生した際にその障害により読み出せなくなったデータ要素を復元するための冗長コード（以下、パリティ）を生成する。パリティ演算器１０９は、例えば、ＲＡＩＤ５で構成されたＲＡＩＤグループのデータ単位に対しては、データ単位を構成する複数のデータ要素の排他的論理和をとることによってＰパリティを生成する。また、パリティ演算器１０９は、ＲＡＩＤ６で構成されたＲＡＩＤグループのデータ単位に対しては、更に、データ単位を構成する複数のデータ要素に所定の係数を掛けた後、それぞれのデータの排他的論理和をとることによって、Ｑパリティを生成する。また、パリティ演算器１０９は、データ単位についての１以上のストライプデータ要素（データ要素及び／又はパリティ）に基づいて、データ単位中のいずれかのデータ要素を復元する復元処理を行う。また、パリティ演算器１０９は、データ単位についての１以上のストライプデータ要素に基づいて、いずれかのデータ要素を復元するための復元処理の演算の一部に相当する部分演算を行うことにより部分演算結果を生成する。
【００３３】
転送バッファ１１０は、下位ストレージ装置１２１から送信されたデータや、下位ストージ装置１２１へ送信するデータを一時的に格納する。ＢＥコントローラ１１１は、ＤＫＵ１１７の下位ストレージ装置１２１との間で各種コマンドや、ライトデータ、リードデータ等の通信を行う。
【００３４】
ＤＫＵ１１７は、複数の下位ストレージ装置１２１（以下、ドライブという場合がある）を有する。下位ストレージ装置１２１は、１つ以上の記憶デバイスを含む。記憶デバイスは、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリである。ＤＫＵ１１７は、ＢＥコントローラ１１１と同一のパスにより接続される複数の下位ストレージ装置１２１のグループ（パスグループ）１１９を複数有する。同一のパスグループ１１９に属する下位ストレージ装置１２１は、スイッチ１１８を介して接続されている。同一のパスグループ１１９に属する下位ストレージ装置１２１同士は、直接通信することが可能であり、例えば、同一のパスグループ１１９に属する一の下位ストレージ装置１２１から他の下位ストレージ装置１２１に対して、各種データを送信することができる。なお、別のパスグループ１１９に属する下位ストレージ装置１２１同士は、直接通信することはできない。ただし、スイッチ１１８の接続方法によっては、上位ストレージ装置１０１内の全ての下位ストレージ装置１２１同士でアクセス可能とすることも可能である。その場合は、下位ストレージ装置１２１全てを１個の巨大なパスグループ１１９としてもよいし、各下位ストレージ装置１２１の関係において、密に結合された、すなわち通信経路が多数ある、又は通信経路のスループットが高い下位ストレージ装置１２１の集合を、パスグループ１１９としてもよい。
【００３５】
図２は、実施例１に係るデータの論理的な構成図である。 
【００３６】
ホスト１０３により認識可能な仮想ボリューム２０１は、複数の仮想ページ（仮想的な論理ページ、論理ページともいう）２０２により構成される。仮想ページ２０２には、仮想プール空間２０３の物理ページ２０８が割り当てられる。仮想プール空間２０３は、図示しないプールの記憶領域により構成される。仮想プール空間２０３においては、１以上のエクステント２０４が管理される。エクステント２０４は、複数のパーセル（Ｐａｒｃｅｌ）２０５により構成される。パーセル２０５は、１つのストレージ装置（例えば、下位ストレージ装置１２１）上の連続した領域で構成される。パーセル２０５は、１以上のストライプ２０６（図２の例では４つのストライプ２０６）で構成される。
【００３７】
エクステント２０４は、図２に示すように、ＲＡＩＤ５の３Ｄ＋１Ｐ構成、すなわち、データ単位を構成する３つのデータ要素（Ｄ）と、これらデータ要素に対応する１つのパリティ（Ｐ）とをそれぞれ異なるストレージ装置に格納する構成の場合には、例えば、４つの異なる下位ストレージ装置１２１のパーセル２０５で構成される。なお、本実施例では、分散ＲＡＩＤの構成を採っているので、仮想プール空間２０３の記憶領域を構成する複数（３Ｄ＋１Ｐで最低限必要な４つよりも多い数（例えば、６つ））の下位ストレージ装置１２１の中の異なる４つの下位ストレージ装置１２１のパーセル２０５によって、エクステント２０４が構成されており、各エクステント２０４を構成するパーセル２０５を含む下位ストレージ装置１２１の組み合わせは、固定されていない。
【００３８】
エクステント２０４は、複数（例えば、２つの）の物理ページ２０８を含む。物理ページ２０８は、複数（例えば、２つ）の連続するデータ単位のデータ要素及びパリティ（同一のストライプ列２０７のデータ）を格納することができる。同図において、Ｄ１＿１、Ｄ２＿１、Ｄ３＿１、Ｐ＿１のように、「＿」の後の数字が共通するものが、同一のデータ単位におけるデータ要素及びパリティを示す。なお、データ要素及びパリティは、それぞれストライプ２０６のサイズとなっている。エクステント２０４は、１つのストライプ列２０７のデータを格納するようにしてもよい。
【００３９】
なお、本実施例では、分散ＲＡＩＤ構成をとった場合を例に挙げているが、分散ＲＡＩＤでない場合、つまり、仮想プール空間２０３の記憶領域を構成する複数（３Ｄ＋１Ｐで最低限必要な４つ）の下位ストレージ装置１２１のパーセル２０５によって、エクステント２０４が構成されている場合にも、本発明を適用することができる。
【００４０】
図３は、実施例１に係る下位ストレージ装置におけるデータの論理的な構成図である。 
【００４１】
下位ストレージ装置１２１は、上位の装置との間では、ＳＣＳＩコマンド処理の最小単位（例えば、５１２Ｂ）であるサブブロック３０２を単位として、データの受け渡しが可能である。キャッシュメモリ１１３上でのデータをキャッシュする際の管理単位（例えば、２５６ＫＢ）であるスロット３０１は、連続する複数のサブブロック３０２の集合で構成される。ストライプ２０６は、複数のスロット３０１に格納される。ストライプ２０６のサイズは、例えば、スロット３０１が２個で構成される場合、５１２ＫＢである。
【００４２】
図４は、実施例１に係る共有メモリのテーブルを示す図である。
【００４３】
共有メモリ４０１は、例えば、下位ストレージ装置１２１、ＣＭ１１３、及びローカルメモリ１１６の少なくともいずれか１つの記憶領域を用いて構成される。なお、下位ストレージ装置１２１、ＣＭ１１３、及びローカルメモリ１１６の内の複数の構成の記憶領域を用いて論理的な共有メモリ４０１を構成し、各種情報についてキャッシュ管理を行うようにしてもよい。
【００４４】
共有メモリ４０１は、ページマッピングテーブル４０２と、パーセルマッピングテーブル４０３と、ドライブ状態テーブル４０４と、キャッシュ管理テーブル４０５とを格納する。各テーブルの詳細について、引き続いて説明する。
【００４５】
図５は、実施例１に係るページマッピングテーブルの一例を示す図である。
【００４６】
ページマッピングテーブル４０２は、仮想ボリューム２０１の論理ページ２０２と、仮想プール空間２０３の物理ページ２０８との対応関係を示す情報である。ページマッピングテーブル４０２は、仮想ボリューム番号５０１と、論理ページ番号５０２と、プール番号５０３と、仮想プール空間番号５０４と、物理ページ番号５０５とのフィールドを含むエントリを管理する。
【００４７】
仮想ボリューム番号５０１には、仮想ボリューム２０１の番号（仮想ボリューム番号）が格納される。論理ページ番号５０２には、エントリにおける仮想ボリューム番号５０１の仮想ボリューム番号が示す仮想ボリューム２０１における論理ページの番号（論理ページ番号）が格納される。プール番号５０３には、エントリにおける論理ページ番号５０２の論理ページ番号に対応する論理ページに割り当てられている物理ページを含むプールの番号が格納される。仮想プール空間番号５０４には、エントリにおけるプール番号５０３のプール番号のプールにおける、論理ページ番号５０２の論理ページ番号に対応する論理ページに割り当てられている物理ページを含む仮想プール空間の番号（仮想プール空間番号）が格納される。物理ページ番号５０５には、エントリにおける論理ページ番号５０２の論理ページ番号に対応する論理ページに割り当てられている物理ページの番号（物理ページ番号）が格納される。物理ページ番号は、例えば、ＬＢＡ（サブブロック単位のアドレス）である。
【００４８】
図５の一番上のエントリによると、仮想ボリューム番号が「１」の仮想ボリュームの論理ページ番号が「１」の論理ページには、プール番号が「０」のプールの仮想プール空間番号が「６」の仮想プール空間の物理ページ番号「０」の物理ページが割り当てられていることがわかる。
【００４９】
図６は、実施例１に係るパーセルマッピングテーブルの一例を示す図である。
【００５０】
パーセルマッピングテーブル４０３は、エクステント２０４に割り当てられたパーセル２０５を管理するためのテーブルである。パーセルマッピングテーブル４０３は、仮想プール空間番号６０１と、エクステント番号（＃）６０２と、エクステント回復優先度６０７と、ドライブオフセット６０３と、物理ドライブ番号（＃）６０４と、物理パーセル番号（＃）６０５と、パーセル状態６０６とのフィールドを含むエントリを管理する。
【００５１】
仮想プール空間番号６０１には、仮想プール空間２０３の番号（仮想プール空間番号）が格納される。エクステント＃６０２には、エントリの仮想プール空間番号６０１の仮想プール空間番号に対応する仮想プール空間２０３におけるエクステント２０４の番号（エクステント番号）が格納される。エクステント回復優先度６０７には、エントリにおけるエクステント＃６０２のエクステント番号に対応するエクステント２０４の回復優先度が格納される。本実施例では、エクステント回復優先度６０７には、エクステント２０４を構成するパーセル２０５に格納されているデータ要素について障害が発生していて復元が必要である複数のエクステント(障害エクステントという)のなかで、優先して復元が必要なエクステント２０４である場合に、「高優先度」が設定され、復元が必要であるが優先して復元することが不要なエクステント２０４である場合に「低優先度」が設定される。なお、エクステント２０４を構成するパーセル２０５に格納されているデータ要素について復元が必要ないエクステント２０４である場合に、エクステント回復優先度６０７は、空白に設定される。例えば、下位ストレージ装置１２１が故障状態になった場合に、ＭＰ１１５がエクステント２０４に対応するエントリのパーセル状態６０６を参照して、エクステント回復優先度６０７に「優先度低」あるいは「優先度高」を設定する。
【００５２】
ドライブオフセット６０３には、エントリのエクステント＃６０２のエクステント番号に対応するエクステント２０４におけるドライブオフセットの番号（ドライブオフセット番号）が格納される。ここで、ドライブオフセット番号とは、ＲＡＩＤグループの構成（例えば、３Ｄ＋１Ｐ）のいずれのドライブ（下位ストレージ装置１２１）であるかを示す番号であり、本実施例では、１つの仮想プール空間２０３の１つのエクステントに対するドライブオフセット番号として、０〜３の４つのドライブオフセット番号が対応付けられて管理される。物理ドライブ＃６０４には、エントリのドライブオフセット６０３のドライブオフセット番号のドライブに対して割り当てられているパーセル２０５を格納するドライブ（例えば、下位ストレージ装置１２１）の番号（物理ドライブ番号）が格納される。物理パーセル＃６０５には、ドライブオフセット番号のドライブに対して割り当てられているパーセル２０５の番号が格納される。パーセル状態６０６には、エントリにおける物理パーセル＃６０５の物理パーセル番号に対応するパーセル２０５の状態が格納される。本実施例では、パーセル状態６０６には、パーセル２０５に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、それ以外の場合には、空白が設定される。例えば、下位ストレージ装置１２１が故障状態になった場合に、ＭＰ１１５がこの下位ストレージ装置１２１のパーセル２０５に対応するエントリのパーセル状態６０６に「復元要」を設定する。
【００５３】
図７は、実施例１に係るドライブ状態テーブルの一例を示す図である。
【００５４】
ドライブ状態テーブル４０４は、仮想プール空間２０３を構成するドライブ（例えば、下位ストレージ装置１２１）の状態を管理するテーブルである。ドライブ状態テーブル４０４は、仮想プール空間番号７０１と、物理ドライブ番号（＃）７０２と、ドライブ状態７０３とのフィールドを含むエントリを管理する。仮想プール空間番号７０１には、仮想プール空間２０３の番号（仮想プール空間番号）が格納される。物理ドライブ番号７０２には、エントリの仮想プール空間番号７０１の仮想プール空間番号に対応する仮想プール空間２０３を構成するドライブの番号（物理ドライブ番号）が格納される。ドライブ状態７０３には、エントリの物理ドライブ番号７０２の物理ドライブ番号に対応するドライブの状態が格納される。ドライブの状態としては、ドライブが正常であることを示す「正常」、又はドライブに対するリード及びライトが不可能なことを示す「異常」が設定される。
【００５５】
図８は、実施例１に係るローカルメモリの構成図である。
【００５６】
ローカルメモリ１１６は、通常リビルドプログラム８０２と、速度制御リビルドプログラム８０３と、データ復元プログラム８０４と、エクステント分類プログラム８０５とを格納する。ここで、速度制御リビルドプログラム８０３、データ復元プログラム８０４、及びエクステント分類プログラム８０５が、データ管理プログラムの一例である。
【００５７】
通常リビルドプログラム８０２は、通常リビルド処理（図１３参照）を実行させるためのプログラムである。速度制御リビルドプログラム８０３は、速度制御リビルド処理（図９参照）を実行させるためのプログラムである。データ復元プログラム８０４は、データ復元処理（図１２参照）を実行させるためのプログラムである。エクステント分類プログラム８０５は、エクステント分類処理（図１０参照）を実行させるためのプログラムである。
【００５８】
次に、実施例１に係る計算機システムにおける処理の動作を説明する。
【００５９】
図９は、実施例１に係る速度制御リビルド処理のフローチャートである。速度制御リビルド処理は、例えば、下位ストレージ装置１２１が１つ以上故障した(リードまたはライトが不可となった)ことを上位ストレージ装置１０１が検知した場合に実施される。
【００６０】
この処理の実施前には、上位ストレージ装置１０１によって、ドライブ状態管理テーブル４０４の故障したドライブ番号が格納されているエントリ物理ドライブ番号６０４のエントリにおける物理ドライブ状態７０３が「異常」に設定され、さらに、パーセルマッピングテーブル４０３に格納されているパーセル状態６０６には、物理ドライブ状態７０３が「異常」に設定されたドライブに格納された物理パーセル２０５の物理パーセル番号に対応するエントリのパーセル状態６０６が「異常」に設定されている。
【００６１】
速度制御リビルド処理では、まず、ＭＰ１１５は、エクステント分類処理（図１０参照）を実施する（ステップＳ９０１）。エクステント分類処理によって、パーセル状態６０６が「復元要」となっているパーセル２０５を含むエクステント２０４が、リビルド優先度について分別される。
【００６２】
次に、ステップＳ９０２において、ＭＰ１１５が、リビルドを実施する速度を「高」に設定する。ここで、リビルドを実施する速度が「高」とは、ホスト１０３からのＩ／Ｏに対して、ＭＰ１１５がリビルド処理に係る下位ストレージ装置１２１へのＩ／Ｏを発行する比率の許容値を大きくしたり、リビルド処理に対するＭＰ１１５における実行優先度（例えば、ＭＰ１１５が実行するＯＳでの実行優先度）を高くしたり、ＭＰ１１５がリビルド処理に対して割り当てるハードウェア資源（ＭＰ、メモリ等）の量を増加させたりする制御によって、リビルドを実行する速度が「低」である場合に比して、高スループットでリビルド処理におけるＩ／Ｏが実施されるようにすることを指す。
【００６３】
次に、ＭＰ１１５は、エクステント分類処理（ステップＳ９０１）において優先度が「高」に分類されたエクステント２０４の中でステップＳ９０４の処理が未処理のエクステント２０４があるか否かを判定する（ステップＳ９０３）。ここで、優先度が「高」のエクステント２０４があるか否かは、パーセルマッピングテーブル４０３のエクステントに対応するエントリのエクステント回復優先度エントリ６０７に、「高優先度」が設定されているか否かで判別可能である。
【００６４】
判定の結果、優先度が「高」に分類されたエクステント２０４の中に未処理のエクステント２０４がある場合（ステップＳ９０３：ＹＥＳ）、ＭＰ１１５は、優先度が「高」に分類されたエクステント２０４の１つを対象にリビルド処理（図１１参照）を実行する（ステップＳ９０４）。リビルド処理が完了することにより、対象とした優先度が「高」に分類されたエクステント２０４に含まれるパーセル２０５は、全て「正常」状態となる。
【００６５】
一方、優先度が「高」に分類されたエクステント２０４の中に未処理のエクステン２０４が無い場合（ステップＳ９０３：ＮＯ）、ＭＰ１１５は処理をステップＳ９０５に進める。
【００６６】
ステップＳ９０５では、ＭＰ１１５が、リビルドを実施する速度を「低」に設定する。ここで、リビルドを実施する速度が「低」とは、リビルドを実行する速度が「高」の場合に比して、ホスト１０３からのＩ／Ｏに対して、ＭＰ１１５がリビルド処理に係る下位ストレージ装置１２１へのＩ／Ｏを発行する比率の許容値を小さくしたり、リビルド処理に対するＭＰ１１５における実行優先度（例えば、ＭＰ１１５が実行するＯＳでの実行優先度）を低くしたり、ＭＰ１１５がリビルド処理に対して割り当てるハードウェア資源（ＭＰ、メモリ等）の量を減少させたりする制御によって、リビルドを実行する速度が「高」である場合に比して、低スループットでリビルド処理が実行されるようにすることを指す。なお、リビルドを実行する速度が「低」であることは、リビルドを実行する速度が「高」の場合に比して、Ｉ／Ｏに関して許容される負荷が低いということもできる。
【００６７】
次に、エクステント分類処理（ステップＳ９０１）において優先度が「低」に分類されたエクステント２０４の中でステップＳ９０７の処理が未処理のエクステント２０４があるか否かを判定する（ステップＳ９０６）。ここで、優先度が「低」のエクステント２０４があるか否かは、パーセルマッピングテーブル４０３のエクステントに対応するエントリのエクステント回復優先度エントリ６０７に、「低優先度」が設定されているか否かで判別可能である。
【００６８】
判定の結果、優先度が「低」に分類されたエクステント２０４の中に未処理のエクステント２０４がある場合（ステップＳ９０６：ＹＥＳ）、ＭＰ１１５は、優先度が「低」に分類されたエクステント２０４の１つを対象にリビルド処理（図１１参照）を実行する（ステップＳ９０７）。リビルド処理が完了することによって、対象とした優先度が「低」のエクステント２０４に含まれる物理パーセル２０５は、全て「正常」状態となる。
【００６９】
一方、優先度が「低」に分類されたエクステント２０４の中に未処理のエクステン２０４が無い場合（ステップＳ９０６：ＮＯ）、ＭＰ１１５は速度制御リビルド処理を終了する。
【００７０】
上記した速度制御リビルド処理によると、優先度が「高」のエクステントに対しては、高スループットでリビルド処理を行うことにより、早期にリビルドすることができて信頼性を向上することができ、優先度が「低」のエクステントに対しては、低スループットでリビルド処理を行うことにより、ホスト１０３からのＩ／Ｏに対する性能低下を低減することができる。
【００７１】
次に、エクステント分類処理（Ｓ９０１）について詳細に説明する。
【００７２】
図１０は、実施例１に係るエクステント分類処理のフローチャートである。
【００７３】
エクステント分類処理では、「復元要」となっているパーセル２０５を含むエクステント２０４に対し、そのエクステント２０４を構成するパーセル２０５のうちパーセルマッピングテーブル４０３のパーセル状態６０６が「復元要」となっているパーセル２０５の数がしきい値を超えるか否かで、リビルドの必要性を判定し、しきい値を超える場合にリビルドする優先度が「高」であると分類し、しきい値を超えない場合にリビルドの優先度が「低」であると分類する。以下、具体的に説明する。
【００７４】
ＭＰ１１５は、「復元要」となっているパーセル２０５を含むエクステント２０４の中に、エクステント分類処理で分類されていない未処理のエクステントがあるか否かを判定し（Ｓ１００１）、未処理のエクステントがある場合（ステップＳ１００１：ＹＥＳ）、ＭＰ１１５は、未処理のエクステント２０４から処理対象とするエクステント２０４を１つ選択し、パーセルマッピングテーブル４０３を参照し、処理対象のエクステント２０４を構成するパーセル２０５を特定し、特定したパーセル２０５のパーセル状態６０６が「復元要」となっているパーセル２０５の数を取得する(ステップＳ１００２)。
【００７５】
次に、ＭＰ１１５は、パーセル状態６０６が「復元要」となっているパーセル数がしきい値以下であるか否かを判定する（ステップＳ１００３)。
【００７６】
この結果、パーセル状態６０６が「復元要」のパーセル数がしきい値以下である場合(ステップＳ１００３：ＹＥＳ)、対象のエクステントについて、データが復元できなくなってしまうまでの猶予が比較的あるのでリビルドする優先度を「低」に分類し、パーセルマッピングテーブル４０３の対象のエクステントに対応するエントリのエクステント回復優先度６０７に、「低優先度」を設定し（ステップＳ１００４）、処理をステップＳ１００１に進める。
【００７７】
一方、パーセル状態６０６が「復元要」のパーセル数がしきい値を超える場合(ステップＳ１００３：ＮＯ)、対象のエクステントについて、データが復元できなくなってしまうまでの猶予がない、又はほとんどないのでリビルドする優先度を「高」に分類し、パーセルマッピングテーブル４０３の対象のエクステントに対応するエントリのエクステント回復優先度６０７に、「高優先度」を設定し（ステップＳ１００５）、処理をステップＳ１００１に進める。
【００７８】
なお、分類されていないエクステント２０４が無い場合（ステップＳ１００１：ＮＯ）、ＭＰ１１５は、エクステント分類処理を終了する。
【００７９】
ここで、ステップＳ１００３で用いるしきい値としては、例えば、エクステント２０４がＲＡＩＤ６構成で構成されており、データ冗長度が２であるとした場合には、１としてもよい。エクステント２０４内に「復元要」のパーセル２０５が２つあれば、新たに１つのパーセル２０５が「復元要」となってリードできなくなると、データの復元が不可能となってしまうため、早期にパーセル２０５の回復をはかる必要があり、リビルドの優先度を「高」に分類してもよい。一方、エクステント２０４内に「復元要」のパーセル２０５が１であれば、新たに１つのパーセル２０５が「復元要」となってリードできなくなったとしても、残りのパーセル２０５からデータの復元が可能であるため、優先度を「低」に分類してもよい。
【００８０】
次に、リビルド処理（ステップＳ９０４、Ｓ９０７）について詳細に説明する。
【００８１】
図１１は、実施例１に係るリビルド処理のフローチャートである。
【００８２】
リビルド処理においては、ＭＰ１１５は、設定されたリビルド速度に従って処理を実行（制御）する。まず、ＭＰ１１５は、パーセルマッピングテーブル４０３を参照して、処理対象のエクステント２０４内にリビルドが未完了のパーセル２０５があるか否か、すなわち、パーセル状態が「復元要」のパーセル２０５があるか否かを判定する（ステップＳ１１０１）。この結果、リビルドが未完了のパーセル２０５がない場合（ステップＳ１１０１：ＮＯ）には、ＭＰ１１５は、リビルド処理を終了する。
【００８３】
一方、リビルドが未完了のパーセル２０５がある場合（ステップＳ１１０１：ＹＥＳ）には、ＭＰ１１５は、リビルドが未完了の１つのパーセル２０５の１つのストライプ２０６のデータ（ストライプデータ要素）について、データ復元処理（図１２参照）を実行する（ステップＳ１１０２）。
【００８４】
次いで、ＭＰ１１５は、パーセル２０５の全てのストライプ２０６のデータが復元済みであるか否かを判定する（ステップＳ１１０３）。
【００８５】
この結果、全てのストライプのデータが復元済みでない場合（ステップＳ１１０３：ＮＯ）には、ＭＰ１１５は、処理をステップＳ１１０２に進める。一方、パーセル２０５の全てのストライプ２０６のデータが復元済みである場合（ステップＳ１１０３：ＹＥＳ）には、ＭＰ１１５は、パーセルマッピングテーブル４０３のこのパーセル２０５に対応するエントリのパーセル状態６０６を復元済み（復元不要）を示す内容（本実施例では、空白）に設定し（ステップＳ１１０４）、処理をステップＳ１１０１に進める。
【００８６】
なお、図１１に示すリビルド処理においては、リビルドが未完了の各パーセル２０５に対するデータ復元処理（Ｓ１１０２）を順次実行するようになっているが、本発明はこれに限られず、リビルドが未完了の複数のパーセル２２５に対する複数のデータ復元処理を並行して実行するようにしてもよい。このようにすると複数のパーセル２０５に対するリビルド処理の時間を低減することができる。また、データ復元処理を並行して実行する場合においては、或るデータ復元処理の対象とするパーセル２０５としては、他のデータ復元処理で使用するパーセル２０５（復元元のパーセル及び復元先のパーセル）を有する下位ストレージ装置１２１以外の下位ストレージ装置１２１のパーセル２０５から選択するようにしてもよい。このようにすると、下位ストレージ装置１２１に対するアクセスの衝突を低減でき、複数のパーセル２０５に対するデータ復元処理の並列効果を向上することができ、その結果、リビルド処理の時間を効果的に短縮することができる。
【００８７】
次に、データ復元処理（ステップＳ１１０２）について詳細に説明する。
【００８８】
図１２は、実施例１に係るデータ復元処理のフローチャートである。
【００８９】
データ復元処理においては、ＭＰ１１５は、設定されたリビルド速度に従って処理を実行（制御）する。まず、ＭＰ１１５は、復元対象のパーセル２０５のストライプ２０６が論理ページに対して割当てられているか否かを判定する（ステップＳ１２０１）。ここで、復元対象のパーセル２０５のストライプ２０６が論理ページに対して割当てられているか否かについては、パーセルマッピングテーブル４０３を参照し、復元対象のパーセル２０５のストライプ２０６に対応する仮想プール空間番号と、エクステント番号と、ドライブオフセット＃とを特定し、これらエクステント番号及びドライブオフセット＃に基づいて物理ページ番号を特定し、ページマッピングテーブル４０２を参照し、特定した物理ページ番号に論理ページの番号が対応付けられているか否かを特定することにより把握することができる。
【００９０】
この結果、復元対象のパーセル２０５のストライプ２０６が論理ページに割当てられていない場合（ステップＳ１２０１：ＮＯ）には、ＭＰ１１５は、データ復元処理を終了する。
【００９１】
一方、復元対象のパーセル２０５のストライプ２０６が論理ページに割当てられている場合（ステップＳ１２０１：ＹＥＳ）には、ＭＰ１１５は、パーセルマッピングテーブル４０３から復元元領域と、復元先領域とを格納する下位ストレージ装置１２１及び復元元領域及び復元先領域の下位ストレージ装置１２１での位置を算出する（ステップＳ１２０２）。
【００９２】
次いで、ＭＰ１１５は、ＣＭ１１３に復元元領域のデータを格納するためのキャッシュスロットを確保し、確保したキャッシュスロットのロックを取得する（ステップＳ１２０３）。次いで、ＭＰ１１５は、復元元領域の下位ストレージ装置１２１から、ロックを取得したキャッシュスロットに対して、転送バッファ１１０を介して、復元元領域のデータ要素及び／又はパリティを転送する（ステップＳ１２０４）。
【００９３】
次いで、ＭＰ１１５は、全ての復元元領域の下位ストレージ装置１２１から、復元元領域のデータ要素及び／又はパリティを転送し終えたか否かを判定する（ステップＳ１２０５）。
【００９４】
この結果、全ての復元元領域の下位ストレージ装置１２１から、復元元領域のデータ要素及び／又はパリティを転送し終えていない場合（ステップＳ１２０５：ＮＯ）には、ＭＰ１１５は、処理をステップＳ１２０３に進め、処理の対象としていない復元元領域の下位ストレージ装置１２１を対象に処理を実行する。
【００９５】
一方、全ての復元元領域の下位ストレージ装置１２１から、復元元領域のデータ要素及び／又はパリティを転送し終えた場合（ステップＳ１２０５：ＹＥＳ）には、ＭＰ１１５は、処理をステップＳ１２０６に進める。
【００９６】
ステップＳ１２０６では、ＭＰ１１５は、処理対象としていない復元先領域の１つを処理対象として、ＣＭ１１３にこの復元先領域のデータを格納するためのキャッシュスロットを確保する。次いで、ＭＰ１１５は、全ての復元先領域のキャッシュスロットを確保し終えたか否かを判定する（ステップＳ１２０７）。この結果、全ての復元先領域のキャッシュスロットを確保し終えていない場合（ステップＳ１２０７：ＮＯ）には、ＭＰ１１５は、処理をステップＳ１２０６に進める。
【００９７】
一方、全ての復元先領域のキャッシュスロットを確保し終えた場合（ステップＳ１２０７：ＹＥＳ）には、ＭＰ１１５は、ＣＭ１１３上の複数の復元元領域のデータ要素及びパリティに基づいて、データを復元する演算処理を実行して復元データを生成し、生成した復元データをＣＭ１１３の復元先のキャッシュスロットに格納する（ステップＳ１２０８）。なお、ＭＰ１１５は、以降において、ＣＭ１１１３に格納された復元データを下位ストレージ装置１２１に書き込む処理を行うこととなる。なお、この際、ＭＰ１１５は、複数の復元先領域に対する復元データをまとめて下位ストレージ装置１２１に書き込むようにすることで、下位ストレージ装置１２１への書き込み効率を向上することができる。
【００９８】
次いで、ＭＰ１１５は、復元元領域のデータを格納していたＣＭ１１３のキャッシュスロットを解放し（ステップＳ１２０９）、処理をステップＳ１２０１に進める。
【００９９】
次に、通常リビルド処理について詳細に説明する。
【０１００】
図１３は、実施例１に係る通常リビルド処理の一例を示すフローチャートである。
【０１０１】
通常リビルド処理は、上位ストレージ装置１０１において速度制御リビルド処理を実行する設定がされていない場合に実行される処理である。
【０１０２】
通常リビルド処理では、ＭＰ１１５は、パーセルマッピングテーブル４０３を参照し、パーセル状態６０６が「復元要」のパーセル２０５があるか否かを判定する（Ｓ１３０１）。この結果、パーセル状態６０６が「復元要」のパーセルがない場合（ステップＳ１３０１：ＮＯ）、ＭＰ１１５は、通常リビルド処理を終了する。一方、パーセル状態６０６が「復元要」のパーセル２０５がある場合（ステップＳ１３０１：ＹＥＳ）、ＭＰ１１５は、「復元要」のパーセル２０５を含むエクステントを対象に、図１１に示すリビルド処理を実施し（ステップＳ１３０２）、処理をステップＳ１３０１に進める。なお、ステップＳ１３０２におけるリビルド処理においては、ＭＰ１１５は、リビルドの実行速度を「高」として処理を実行（制御）する。
【０１０３】
通常リビルド処理によると、復元が必要なパーセルを含むエクステントに対して、同一の速度で復元処理を行うことができる。本実施例では、通常リビルド処理と、速度制御リビルド処理とを設定により変更できるので、例えば、ホスト１０３に対するＩ／Ｏ性能の低下が問題にならない場合には、通常リビルド処理を実行することにより、復元が必要な全てのエクステント２０４に対するリビルドを早期に終了させることができる。
【０１０４】
次に、リビルド処理の設定を行うための管理サーバ１０２の管理画面について説明する。
【０１０５】
図１４は、実施例１に係る管理サーバの管理画面の一例を示す図である。
【０１０６】
管理画面１４０１は、プールを単位として、このプールに属する領域で管理されるデータ単位に対するリビルド処理のモードをユーザが指定するために管理サーバ１０２に表示される画面である。管理画面１４０１は、速度制御リビルドモード、すなわち、速度制御リビルド処理の実行を行う「ＯＮ」設定とするか、速度制御リビルド処理の実行を行わない、すなわち、通常リビルド処理を実行する「ＯＦＦ」設定とするかを指定するためのラジオボタンが表示されるデータ復元処理設定領域１４０２を有する。このデータ復元処理設定領域１４０２において、ユーザが図示しない入力手段により、ラジオボタンを選択することにより、その選択に対応する設定内容が、管理サーバ１０２から上位ストレージ装置１０１に送信されて、例えば、ＬＭ１１６で管理される。ＭＰ１１５は、下位ストレージ装置１２１の故障時等においてリビルド処理を実行する場合には、ＬＭ１１６の設定内容を参照し、設定内容に対応するリビルド処理を実行する。なお、図１４においては、プールを単位としてリビルド処理のモードを設定可能とする管理画面を示したが、本発明はこれに限られず、例えば、管理画面を、仮想ボリュームを単位としてリビルド処理のモードを設定可能とする画面として、その設定内容に従って、ＭＰ１１５が仮想ボリュームを単位としてのリビルド処理を実行するようにしてもよい。
【０１０７】
以上説明したように、実施例１に係る上位ストレージ装置１０１によると、リビルド優先度の高いエクステントを、高い速度でリビルドを実施して短時間でリビルドを完了させることで、データの信頼性を早期に確保し、リビルド優先度の低いエクステントについては、低い速度でリビルドを実施することで、リビルド実行時におけるホスト１０３からのＩ／Ｏに由来するＩ／Ｏとの衝突を低減することができ、ホスト１０３に対するＩ／Ｏ性能の低下を抑制することができる。
【０１０８】
なお、上記した実施例１では、エクステント分類処理（ステップＳ９０１）において、リビルドの優先度を「高」、「低」の２段階とする例を示していたが、リビルドの優先度を「高」、「中」、「低」のように３つ以上の段階に分類してもよい。この場合には、各優先度に対するリビルドの処理速度をそれぞれ、「高」、「中」、「低」に設定するようにすればよい。
【実施例２】
【０１０９】
次に、実施例２に係る計算機システムについて説明する。
【０１１０】
実施例２は、実施例１において、リビルド速度を決定するためのリビルドの優先度を、故障したドライブ（下位ストレージ装置１２１）の台数で決めるようにした実施例である。なお、実施例１と共通の部分は説明を省略又は簡略化する。
【０１１１】
実施例２に係る上位ストレージ装置１０１における速度制御リビルド処理について説明する。
【０１１２】
図１５は、実施例２に係る速度制御リビルド処理のフローチャートである。
【０１１３】
速度制御リビルド処理では、まず、ＭＰ１１５は、故障しているドライブの台数（故障ドライブ台数）を特定し、故障ドライブ台数がしきい値以上であるか否かを判定する（ステップＳ１５０１）。ここで、故障ドライブ台数は、ドライブ状態テーブル４０４を参照し、ドライブ状態７０３が「異常」となっているドライブ数を数えることで特定できる。ステップＳ１５０１で使用するしきい値としては、例えば、エクステント２０４がＲＡＩＤ６構成で構成され、データ冗長度が２であるとした場合には、２としてもよく、また、エクステント２０４がＲＡＩＤ５構成で構成され、データ冗長度が１であるとした場合には、１としてもよい。
【０１１４】
ステップＳ１５０１の判定の結果、故障ドライブ台数がしきい値未満の場合（ステップＳ１５０１：ＮＯ）、データが復元できなくなるまでには猶予があるので、ＭＰ１１５は、リビルドの実施速度を「低」に設定し（ステップＳ１５０２）、処理をステップＳ１５０４に進める。一方、故障ドライブ台数がしきい値以上の場合（ステップＳ１５０１：ＹＥＳ）、データが復元できなくなるまでの猶予が限られているので、ＭＰ１１５は、リビルドの実施速度を「高」に設定し（ステップＳ１５０３）、処理をステップＳ１５０４に進める。
【０１１５】
ステップＳ１５０４では、ＭＰ１１５は、リビルド処理を実施していないエクステントがあるか否かを判定し、実施していないエクステントがある場合（ステップＳ１５０４：ＹＥＳ）、そのエクステント２０４に対してデータのリビルド処理（図１１参照）を実施する（Ｓ１５０５）し、処理をステップＳ１５０４に進める。このリビルド処理が完了することによって、エクステント２０４に含まれるパーセル２０５は、全て「正常」状態となる。一方、リビルド処理を実施していないエクステントがない場合（ステップＳ１５０４：ＮＯ）、ＭＰ１１５は、速度制御リビルド処理を終了する。
【０１１６】
以上説明したように、実施例２においては、故障ドライブ台数が、データの冗長度に比べて十分小さい場合に、低速でリビルドを実施することで、リビルド実施中におけるホスト１０２からのＩ／Ｏに由来するＩ／Ｏとの衝突を低減し、ホスト１０２に対するＩ／Ｏ性能の低下を抑制することができる。また、故障ドライブ台数が、データの冗長度と同じ又は近い場合に、高速でリビルドを実施することで、早期にデータの信頼性を向上することができる。
【実施例３】
【０１１７】
次に、実施例３に係る計算機システムについて説明する。
【０１１８】
実施例３は、実施例１において、リビルド処理を実施する優先度を、故障ドライブに含まれるストライプ２０６がデータ部であるか、パリティ部であるかに応じて決定するようにした実施例である。なお、実施例１と共通の部分は説明を省略する。
【０１１９】
実施例３に係る上位ストレージ装置１０１は、実施例１に係るパーセルマッピングテーブル４０３に代えて、パーセルマッピングテーブル１６０１を備えている。
【０１２０】
図１６は、実施例３に係るパーセルマッピングテーブルの一例を示す図である。実施例１と共通する要素については、同一の符号を付し、重複する説明を省略する。
【０１２１】
パーセルマッピングテーブル１６０１は、仮想プール空間番号６０１と、エクステント番号（＃）６０２と、エクステント回復優先度６０７と、ドライブオフセット６０３と、物理ドライブ番号（＃）６０４と、物理パーセル番号（＃）６０５と、パーセル状態６０６と、ストライプ番号（＃）１６０２と、ストライプ状態１６０３とのフィールドを含むエントリを管理する。
【０１２２】
ストライプ＃１６０２には、エントリの物理パーセル＃６０５の物理パーセル番号が示すパーセル２０５に含まれるストライプ２０６を識別するための番号（ストライプ番号）が格納される。ストライプ状態１６０３には、エントリにおけるストライプ番号に対応するストライプ２０６の状態が格納される。本実施例では、ストライプ状態１６０３には、ストライプ２０６に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、それ以外の場合には、空白が設定される。例えば、下位ストレージ装置１２１が故障状態になった場合に、ＭＰ１１５がこの下位ストレージ装置１２１のストライプに対応するエントリのストライプ状態１６０３に「復元要」を設定する。また、本実施例では、パーセル状態６０６には、パーセル２０５に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、パリティ部について復元が必要である可能性がある場合には、そのことを示す「パリティ部復元要」が設定され、それ以外の場合には、空白が設定される。
【０１２３】
次に、実施例３に係る速度制御リビルド処理について説明する。
【０１２４】
図１７は、実施例３に係る速度制御リビルド処理の一例を示したフローチャートである。
【０１２５】
速度制御リビルド処理は、ＭＰ１１５によって、任意のタイミングで実施される。
【０１２６】
速度制御リビルド処理では、まず、ＭＰ１１５は、リビルドを実施する速度を「高」に設定する（ステップＳ１７０１）。次に、ＭＰ１１５は、データ部リビルド処理（Ｓ１７０３）を実施していないエクステント２０４があるか否かを判定する（ステップＳ１７０２）。ここで、データ部リビルド処理を実施していないエクステント２０４があるか否かは、パーセルマッピングテーブル１６０１を参照し、パーセル状態６０６が、「復元要」となっているパーセル２０５を１つ以上含んで構成されるエクステント２０４があるか否かにより判断が可能である。
【０１２７】
この結果、データ部リビルド処理を実施していないエクステント２０４がある場合（ステップＳ１７０２：ＹＥＳ）、ＭＰ１１５は、データ部リビルド処理を実施していないエクステント２０４の中の１つのエクステント２０４を処理対象として、データ部リビルド処理（図１８参照）を実施し（ステップＳ１７０３）、処理をステップＳ１７０２に進める。データ部リビルド処理が完了したエクステントを構成するパーセルはすべて、「空白（復元不要）」または、「パリティ部復元要」のいずれかのパーセル状態となる。
【０１２８】
一方、データ部リビルド処理を実施していないエクステント２０４がない場合（ステップＳ１７０２：ＮＯ）、ＭＰ１１５は、リビルドを実施する速度を「低」に設定する（ステップＳ１７０４）。
【０１２９】
次に、ＭＰ１１５は、パリティ部リビルド処理（Ｓ１７０６）を実施していないエクステント２０４があるか否かを判定する（ステップＳ１７０５）。ここで、パリティ部リビルド処理を実施していないエクステント２０４があるか否かは、パーセルマッピングテーブル１６０１を参照し、パーセル状態６０６が、「パリティ部復元要」となっているパーセル２０５を１つ以上含んで構成されるエクステント２０４があるか否かにより判断が可能である。
【０１３０】
この結果、パリティ部リビルド処理を実施していないエクステント２０４がある場合（ステップＳ１７０５：ＹＥＳ）、ＭＰ１１５は、パリティ部リビルド処理を実施していないエクステント２０４の中の１つのエクステント２０４を処理対象として、パリティ部リビルド処理（図１９参照）を実施し（ステップＳ１７０６）、処理をステップＳ１７０５に進める。パリティ部リビルド処理が完了したエクステントを構成するパーセルはすべて、「空白」（復元不要）のパーセル状態となる。
【０１３１】
一方、パリティ部リビルド処理を実施していないエクステント２０４がない場合（ステップＳ１７０５：ＮＯ）、ＭＰ１１５は速度制御リビルド処理を終了する。
【０１３２】
次に、データ部リビルド処理（Ｓ１７０３）について詳細に説明する。
【０１３３】
図１８は、実施例３に係るデータ部リビルド処理の一例のフローチャートである。
【０１３４】
データ部リビルド処理においては、ＭＰ１１５は、リビルド処理の設定に従ってリビルド処理を高速で実行（制御）する。ＭＰ１１５は、パーセルマッピングテーブル１６０１を参照して、処理対象のエクステント２０４内にリビルドが未完了のパーセル２０５があるか否か、すなわち、パーセル状態が「復元要」のパーセル２０５があるか否かを判定する（ステップＳ１８０１）。この結果、リビルドが未完了のパーセル２０５がない場合（ステップＳ１８０１：ＮＯ）には、ＭＰ１１５は、データ部リビルド処理を終了する。
【０１３５】
一方、リビルドが未完了のパーセル２０５がある場合（ステップＳ１８０１：ＹＥＳ）には、ＭＰ１１５は、リビルドが未完了の１つのパーセル２０５の１つのストライプ２０６のデータ（ストライプデータ要素）が、データ部であるか、パリティ部であるかを判定する（ステップＳ１８０２）。
【０１３６】
この結果、ストライプデータ要素がデータ部の場合（ステップＳ１８０２：ＹＥＳ）、ＭＰ１１５は、データ復元処理（図１２参照）を実施する（ステップＳ１８０３）。データ復元処理が完了した後、ＭＰ１１５は、パーセルマッピングテーブル１６０１の復元が完了したストライプに対応するエントリのストライプ状態１６０３を、「復元要」から「空白（復元不要）」へ更新し（ステップＳ１８０４）、処理をステップＳ１８０５へ進める。
【０１３７】
一方、ストライプデータ要素がデータ部でない場合（ステップＳ１８０２：ＮＯ）、ＭＰ１１５は、処理をステップＳ１８０５へ進める。
【０１３８】
ステップＳ１８０５では、ＭＰ１１５は、パーセル２０５の全てのストライプ２０６のデータを確認済みであるか否かを判定する。この結果、全てのストライプ２０６のデータを確認済みでない場合（ステップＳ１８０５：ＮＯ）には、ＭＰ１１５は、処理をステップＳ１８０２に進める。一方、パーセル２０５の全てのストライプ２０６のデータが確認済みである場合（ステップＳ１８０５：ＹＥＳ）には、ＭＰ１１５は、処理をステップＳ１８０６に処理を進める。
【０１３９】
ステップＳ１８０６では、ＭＰ１１５は、パーセル２０５の全てのストライプ２０６のストライプデータ要素が復元済みであるか否かを判定する。
【０１４０】
この結果、全てのストライプ２０６のストライプデータ要素が復元済みでない場合（ステップＳ１８０６：ＮＯ）には、ＭＰ１１５は、パーセルマッピングテーブル１６０１のうち、復元が完了したストライプ２０６を含むパーセルのパーセル状態６０６を「復元要」から「パリティ部復元要」へ更新し、処理をステップＳ１８０１に進める。一方、パーセルの全てのストライプのストライプデータ要素が復元済みである場合（ステップＳ１８０６：ＹＥＳ）には、ＭＰ１１５は、パーセルマッピングテーブル１６０１のうち、復元が完了したストライプ２０６を含むパーセル２０５のパーセル状態６０６を「復元要」から「空白（復元不要）」へ更新し（ステップＳ１８０８）、処理をステップＳ１８０１に進める。
【０１４１】
なお、ステップＳ１８０３のデータ復元処理においては、障害が発生しているデータ部のストライプデータ要素のみを対象としてデータ復元処理を行っている例を示したが、障害が発生しているデータ部のストライプデータ要素と同一のストライプ列の障害が発生しているパリティ部のストライプデータ要素も併せて復元するようにしてもよい。障害が発生しているデータ部のストライプデータ要素のみを対象とすると、上位ストレージ装置１０１におけるデータ部全体の復元処理の効率を向上することができる一方、同一のストライプ列のパリティ部のストライプデータ要素も併せて復元すると、このパリティ部のストライプ要素の復元に要する処理時間を短縮することができる。
【０１４２】
次に、パリティ部リビルド処理（Ｓ１７０６）について詳細に説明する。
【０１４３】
図１９は、実施例３に係るパリティ部リビルド処理の一例のフローチャートである。
【０１４４】
パリティ部リビルド処理においては、ＭＰ１１５は、リビルド処理の設定に従ってリビルド処理を低速で実行（制御）する。ＭＰ１１５は、パーセルマッピングテーブル１６０１を参照して、処理対象のエクステント２０４内にリビルドが未完了のパーセル２０５があるか否か、すなわち、パーセル状態が「パリティ部復元要」のパーセル２０５があるか否かを判定する（ステップＳ１９０１）。この結果、リビルドが未完了のパーセル２０５がない場合（ステップＳ１９０１：ＮＯ）には、ＭＰ１１５は、パリティ部リビルド処理を終了する。
【０１４５】
一方、リビルドが未完了のパーセル２０５がある場合（ステップＳ１９０１：ＹＥＳ）には、ＭＰ１１５は、リビルドが未完了の１つのパーセルの１つのストライプのデータ（ストライプデータ要素）が、「復元要」であるか否かを判定する（ステップＳ１９０２）。ストライプデータ要素が、「復元要」であるか否かは、パーセルマッピングテーブル１６０１を参照し、処理対象のストライプ番号に対応するストライプ状態１６０３が「復元要」であるか否かにより判定することができる。
【０１４６】
この結果、ストライプデータ要素が復元要である場合（ステップＳ１９０２：ＹＥＳ）、ＭＰ１１５は、処理対象のパーセル２０５を対象にデータ復元処理（図１２参照）を実施する（ステップＳ１９０３）。データ復元処理が完了した後、ＭＰ１１５は、パーセルマッピングテーブル１６０１の復元が完了したストライプ２０６に対応するエントリのストライプ状態１６０３を、「復元要」から、「空白（復元不要）」へ更新し（ステップＳ１９０４）、処理をステップＳ１９０５へ進める。
【０１４７】
一方、ストライプデータ要素が復元要でない場合（ステップＳ１９０２：ＮＯ）、ＭＰ１１５は、処理をステップＳ１９０５へ進める。
【０１４８】
ステップＳ１９０５では、ＭＰ１１５は、パーセル２０５の全てのストライプ２０６のデータを確認済みであるか否かを判定する。この結果、全てのストライプ２０６のデータを確認済みでない場合（ステップＳ１９０５：ＮＯ）には、ＭＰ１１５は、処理をステップＳ１９０２に進める。一方、パーセル２０５の全てのストライプ２０６のデータが確認済みである場合（ステップＳ１９０５：ＹＥＳ）には、ＭＰ１１５は、処理をステップＳ１９０６に処理を進める。
【０１４９】
ステップＳ１９０６では、ＭＰ１１５は、パーセルマッピングテーブル１６０１のうち、復元が完了したストライプ２０６を含むパーセル２０５のパーセル状態６０６を「復元要」から「空白（復元不要）」へ更新し、処理をステップＳ１９０１に進める。
【０１５０】
以上説明したように、実施例３においては、ホスト１０３からリードされるデータ部分をホスト１０３からリードされないパリティ部分よりも、優先して高速にリビルド処理を行うことで、コレクションリードが発生する時間を短縮することが可能であり、パリティ部については、低速のリビルド処理を行うことで、その間のホスト１０３のＩ／Ｏ性能の低下を抑制することができる。
【実施例４】
【０１５１】
次に、実施例４に係る計算機システムについて説明する。
【０１５２】
実施例４は、実施例１に対して、最初に実行する高速でのリビルド処理（第一リビルド処理）時に復元するパーセル数を、エクステント２０４内の故障パーセル数未満とし、かつ複数のエクステント２０４に対して並列に処理を行い、かつ並列でリビルドするエクステント２０４の復元先の下位ストレージ装置１２１を複数の下位ストレージ装置１２１に分散させることで、データの冗長度が低下している期間を短縮するようにし、その後、相対的に低速でのリビルド処理（第二リビルド処理）を実行することにより、その間のホスト１０３のＩ／Ｏ性能の低下を抑制できるようにする実施例である。第一リビルド処理で復元して下位ストレージ装置１２１に書き込むデータの量を削減し、かつ複数の下位ストレージ装置１２１に並列して書き込みを行うことで、ホストのＩ／Ｏ性能を低下させる第一リビルド処理の完了にかかる時間を短縮することができる。なお、実施例１と共通の部分は説明を省略する。
【０１５３】
図２０は、実施例４に係るローカルメモリの構成図である。
【０１５４】
ローカルメモリ１１６は、通常リビルドプログラム８０２と、速度制御リビルドプログラム８０３と、データ復元プログラム８０４と、並列データ復元プログラム２００３と、リビルド先領域決定プログラム２００２とを格納する。
【０１５５】
リビルド先領域決定プログラム２００２は、ＭＰ１１５にリビルド先領域決定処理（図２３参照）を実行させるためのプログラムである。並列データ復元プログラム２００３は、ＭＰ１１５に並列データ復元処理（図２４参照）を実行させるためのプログラムである。
【０１５６】
図２１は、実施例４に係るパーセルマッピングテーブル２１０１の一例を示す図である。
【０１５７】
パーセルマッピングテーブル２１０１は、仮想プール空間番号６０１と、エクステント番号（＃）６０２と、ドライブオフセット６０３と、物理ドライブ番号（＃）６０４と、物理パーセル番号（＃）６０５と、パーセル状態６０６と、復元先物理ドライブ番号（＃）２１０２とのフィールドを含むエントリを管理する。
【０１５８】
パーセル状態６０６には、エントリにおける物理パーセル＃６０５の物理パーセル番号に対応するパーセル２０５の状態が格納される。本実施例では、パーセル状態６０６には、パーセル２０５に格納されているデータ要素について復元が必要である場合には、そのことを示す「復元要」が設定され、ＭＰ１１５がリビルド先領域決定処理を実行した結果、第一リビルド処理（図２４参照）での復元が必要と判定された場合には、そのことを示す「第一リビルド復元要」が設定され、それ以外の場合には、空白が設定される。例えば、下位ストレージ装置１２１が故障状態になった場合に、ＭＰ１１５がこの下位ストレージ装置１２１のパーセル２０５に対応するエントリのパーセル状態６０６に「復元要」を設定する。
【０１５９】
復元先物理ドライブ＃２１０２には、パーセル状態６０６が示すパーセル状態が、「復元要」または「第一リビルド復元要」状態であるパーセルが、リビルド処理によって復元される復元先のパーセル２０５を含む物理ドライブの番号（物理ドライブ番号）が格納される。
【０１６０】
次に、実施例４に係る速度制御リビルド処理について説明する。
【０１６１】
図２２は、実施例４に係る速度制御リビルド処理の一例を示すフローチャートである。
【０１６２】
ＭＰ１１５は、まず、リビルド先領域決定処理（図２３参照）を実施する（ステップＳ２２０１）。リビルド先領域決定処理では、パーセル状態が「復元要」となっているパーセル２０５を含むエクステント２０４に対して、第一リビルド処理で復元対象とするパーセル２０５と、その復元先の下位ストレージ位置１２１を決定する。
【０１６３】
次に、ＭＰ１１５は、リビルドを実施する速度を「高」に設定する（Ｓ２２０２）。次に、ＭＰ１１５は、第一リビルド処理（Ｓ２２０４）を実施していないエクステント２０４があるか否かを判定する（ステップＳ２２０３）。
【０１６４】
この結果、第一リビルド処理を実施していないエクステント２０４がある場合（ステップＳ２２０３：ＹＥＳ）、ＭＰ１１５は、第一リビルド処理を実施していないエクステント２０４の中の１つのエクステント２０４を処理対象として、第一リビルド処理（図２４参照）を実施し（ステップＳ２２０４）、処理をステップＳ２２０３に進める。第一リビルド処理が完了したエクステント２０４を構成するパーセル２０５はすべて、「空白（復元不要）」の状態となる。
【０１６５】
一方、第一リビルド処理を実施していないエクステント２０４がない場合（ステップＳ２２０３：ＮＯ）、ＭＰ１１５は、リビルドを実施する速度を「低」に設定する（ステップＳ２２０５）。
【０１６６】
次に、ＭＰ１１５は、第二リビルド処理（Ｓ２２０７）を実施していないエクステント２０４があるか否かを判定する（ステップＳ２２０６）。
【０１６７】
この結果、第二リビルド処理を実施していないエクステント２０４がある場合（ステップＳ２２０６：ＹＥＳ）、ＭＰ１１５は、第二リビルド処理を実施していないエクステント２０４の中の１つのエクステント２０４を処理対象として、第二リビルド処理（図１３の通常リビルド処理と同様）を実施し（ステップＳ２２０７）、処理をステップＳ２２０６に進める。
【０１６８】
一方、第二リビルド処理を実施していないエクステント２０４がない場合（ステップＳ２２０６：ＮＯ）、ＭＰ１１５は、速度制御リビルド処理を終了する。
【０１６９】
次に、リビルド先領域決定処理（Ｓ２２０１）について詳細に説明する。
【０１７０】
図２３は、実施例４に係るリビルド先領域決定処理の一例を示すフローチャートである。
【０１７１】
ＭＰ１１５は、まず、「復元要」状態のパーセル２０５に対して、復元先の領域を決定し、決定した領域の物理ドライブ番号を、パーセルマッピングテーブル２１０１の復元先ドライブ番号２１０２に格納する（ステップＳ２３０１）。復元先の領域は、データ保護のため、「復元要」のパーセル２０５を含むエクステント２０４が含むパーセル２０５が所属する下位ストレージ装置１２１以外の下位ストレージ装置１２１から選択される。本実施例では、故障した下位ストレージ装置１２１に対して、上位ストレージ装置１０１において、スペア装置としてドライブ単位で予め設定されている下位ストレージ装置１２１を用いる例を記載するが、復元先をパーセル２０５ごとに設定してもよい。
【０１７２】
次に、ＭＰ１１５は、未処理のエクステント２０４があるか否かを判定する（ステップＳ２３０２）。この結果、未処理のエクステント２０４がない場合（ステップＳ２３０２：ＮＯ）、ＭＰ１１５は、リビルド先領域決定処理を終了する。
【０１７３】
一方、未処理のエクステント２０４がある場合（ステップＳ２３０２：ＹＥＳ）、ＭＰ１１５は、未処理のエクステント２０４の中の１つのエクステント２０４を処理対象として、エクステント２０４内で「復元要」状態のパーセルの数を取得する（ステップＳ２３０３）。「復元要」状態のパーセル数は、パーセルマッピングテーブル２１０１を参照し、対象のエクステント２０４のエクステント＃が示すエントリのパーセル状態６０６が、「復元要」となっているパーセルの数を特定することにより取得可能である。
【０１７４】
次いで、ＭＰ１１５は、特定した「復元要」状態のパーセル数が、所定のしきい値以下であるか否かを判定する（Ｓ２３０４）。この判定で使用するしきい値は、例えば、データの信頼性維持に対して許容される、低下可能な冗長度（低下冗長度）によって決めてよい。例えば、３パリティによって下位ストレージ装置１２１が冗長構成されている場合、データの冗長度は３である。このとき、信頼性維持のために、冗長度２以上が必要だとすると、エクステントに許容される、「復元要」状態のパーセルは、３−２＝１個であり、しきい値は「１」と設定すればよい。
【０１７５】
この結果、特定した「復元要」状態のパーセル数が、所定のしきい値以下である場合（Ｓ２３０４：ＹＥＳ）には、このエクステント２０４のパーセルは、第一リビルド処理の対象とならないので、ＭＰ１１５は、処理をステップＳ２３０２に進める。
【０１７６】
一方、特定した「復元要」状態のパーセル数が、所定のしきい値を超える場合（Ｓ２３０４：ＮＯ）には、ＭＰ１１５は、第一リビルド処理において復元対象とするパーセル２０５と、復元先のドライブ＃とを決定する（ステップＳ２３０５）。ステップＳ２３０５では、ＭＰ１１５は、エクステント２０４内の「復元要」状態のパーセル２０５から、「復元要」状態のパーセル数−「しきい値」の数に相当するパーセル２０５を、復元対象とするパーセル２０５として選択する。このパーセル選択の際、このパーセル２０５の復元先となる物理ドライブが、エクステント２０４ごとに分散するようにパーセル２０５を選択する。これにより、復元先領域が複数の下位ストレージ装置１２１に分散し、復元時のライトのＩ／Ｏ負荷が分散されることとなる。なお、復元先の物理ドライブは、パーセルマッピングテーブル２１０１の復元先ドライブ番号エントリ２１０２を参照することで特定可能である。
【０１７７】
次いで、ＭＰ１１５は、復元対象として選択したパーセル２０５に対応するパーセルマッピングテーブル２１０１のエントリのパーセル状態６０６に対して、「第一リビルド復元要」を設定し（Ｓ２３０６）、そのエントリの復元先物理ドライブ２１０２に、決定した復元先のドライブ＃を設定し（ステップＳ２３０７）、処理をステップＳ２３０２に進める。
【０１７８】
次に、第一リビルド処理（Ｓ２２０４）について説明する。
【０１７９】
第一リビルド処理においては、ＭＰ１１５は、リビルド処理の設定に従ってリビルド処理を高速で実行（制御）する。第一リビルド処理は、実施例１の図１１に示すリビルド処理において、データ復元処理（ステップＳ１１０２：図１２）に代えて、並列データ復元処理（図２４参照）を実行するようにした処理である。なお、その他のステップは、図１１に示すリビルド処理と同様であるので、説明を省略する。
【０１８０】
次に、第一リビルド処理において実行される並列データ復元処理について説明する。
【０１８１】
図２４は、実施例４に係る並列データ復元処理の一例を示すフローチャートである。
【０１８２】
この並列データ復元処理は、ＭＰ１１５によって複数が並列して実行されてもよい。ＭＰ１１５は、復元対象の領域である復元対象のパーセル２０５のストライプ２０６が論理ページに対して割当てられているか否かを判定する（ステップＳ２４０１）。ここで、復元対象のパーセル２０５のストライプ２０６が論理ページに対して割当てられているか否かについては、パーセルマッピングテーブル２１０１により、復元対象のパーセル２０５のストライプ２０６に対応する仮想プール空間番号と、エクステント番号と、ドライブオフセット＃とを特定し、これらエクステント番号及びドライブオフセット＃に基づいて物理ページ番号を特定し、ページマッピングテーブル４０２により、特定した物理ページ番号が論理ページ番号に対応付けられているか否かを特定することにより把握することができる。
【０１８３】
この結果、復元対象のパーセル２０５のストライプ２０６が論理ページに割当てられていない場合（ステップＳ２４０１：ＮＯ）には、ＭＰ１１５は、並列データ復元処理を終了する。
【０１８４】
一方、復元対象のパーセル２０５のストライプ２０６が論理ページに割当てられている場合（ステップＳ２４０１：ＹＥＳ）には、ＭＰ１１５は、パーセルマッピングテーブル２１０１から復元元領域を格納する下位ストレージ装置１２１と、復元先領域を格納する下位ストレージ装置１２１と、復元元領域と復元先領域との下位ストレージ装置１２１での位置とを算出する（ステップＳ２４０２）。
【０１８５】
次いで、ＭＰ１１５は、復元対象のパーセル２０５の１つを処理対象として、復元元領域のデータをＣＭ１１３に格納するためのキャッシュスロットを確保し、確保したキャッシュスロットのロックを取得する（ステップＳ２４０３）。次いで、ＭＰ１１５は、復元元領域の下位ストレージ装置１２１から、ロックを取得したキャッシュスロットに対して、転送バッファ１１０を介して、復元元領域のデータ要素及び／又はパリティを転送する（ステップＳ２４０４）。
【０１８６】
次いで、ＭＰ１１５は、処理対象のパーセル２０５に対して全ての復元元領域の下位ストレージ装置１２１から、復元元領域のデータ要素及び／又はパリティを転送し終えたか否かを判定し（ステップＳ２４０５）、全ての復元元領域の下位ストレージ装置１２１から、復元元領域のデータ要素及び／又はパリティを転送し終えていない場合（ステップＳ２４０５：ＮＯ）には、処理をステップＳ２４０３に進めて、処理対象としていない他のパーセル２０５に対する処理を行うようにする一方、全ての復元元領域の下位ストレージ装置１２１から、復元元領域のデータ要素及び／又はパリティを転送し終えた場合（ステップＳ２４０５：ＹＥＳ）には、処理をステップＳ２４０６に進める。
【０１８７】
ステップＳ２４０６では、ＭＰ１１５は、復元するデータを格納するためのキャッシュスロットをＣＭ１１３に確保する。
【０１８８】
次いで、ＭＰ１１５は、全ての第一リビルド処理の対象である復元先領域のキャッシュスロットを確保し終えたか否かを判定する（ステップＳ２４０７）。ここで、第一リビルド処理の対象である復元先領域か否かは、パーセルマッピングテーブル２１０１において、このキャッシュスロットに格納されるデータ要素を格納するパーセル２０５のパーセル状態６０６が、「第一リビルド復元要」状態であるか否かで判別可能である。
【０１８９】
この結果、全ての第一リビルド処理の復元先領域のキャッシュスロットを確保し終えていない場合（ステップＳ２４０７：ＮＯ）には、処理をステップＳ２４０３に進めて、処理対象としていない第一リビルド処理対象の復元先領域のキャッシュスロットを確保する処理を行う。
【０１９０】
一方、全ての第一リビルド処理の対象の復元先領域のキャッシュスロットを確保し終えた場合（ステップＳ２４０７：ＹＥＳ）には、ＭＰ１１５は、ＣＭ１１３上の複数の復元元領域のデータ（データ要素及びパリティのデータ）に基づいて、データを復元する演算処理を実行して復元データを生成し、復元データをＣＭ１１３のキャッシュスロットに格納する（ステップＳ２４０８）。なお、復元データは、以降において、ＭＰ１１５がＣＭ１１３に格納されたデータを下位ストレージ装置１２１に書き込む処理を行うことで、下位ストレージ装置１２１に格納されることとなる。
【０１９１】
次いで、ＭＰ１１５は、復元元領域のデータを格納していたＣＭ１１３のキャッシュスロットを解放し（ステップＳ２４０９）、処理をステップＳ２４０１に進める。
【実施例５】
【０１９２】
次に、実施例５に係る計算機システムについて説明する。
【０１９３】
図２５は、実施例５に係る計算機システムのハードウェア構成図である。
【０１９４】
実施例５に係る計算機システムでは、複数の上位ストレージノード（ストレージシステムの一例）２５０１が、ネットワーク１２０に接続されており、互いにデータの通信が可能である。また、ネットワーク１２０には、ホスト１０３が接続されている。
【０１９５】
実施例１に係るストレージシステムにおいては、単一の上位ストレージ装置１０１に接続された下位ストレージ装置１２１間でＲＡＩＤグループを構成する例を示していたが、実施例５では、複数の上位ストレージノード２５０１に接続された下位ストレージ装置１２１間でＲＡＩＤグループを構成するようにしている。
【０１９６】
このような構成において、下位ストレージ装置１２１の故障によってリビルド処理が実施されると、ネットワーク１２０の帯域をリビルドに用いるデータが消費し、ホスト１０３と上位ストレージノード２５０１間の通信スループットが低下する可能性がある。本実施例では、実施例１〜４のいずれかに記載した技術を用いて、リビルト処理の速度を制御することで、データの冗長性が十分回復した後は、リビルド処理の速度を低くして、ホスト１０３が利用可能なネットワーク帯域を確保することが可能になる。
【０１９７】
なお、本発明は、上述の実施例に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【０１９８】
例えば、上記いずれかの実施例において、リビルド速度の設定を伴う速度制御リビルド処理（例えば、図９、図１５、図１７、図２２）を実行中において、実行中の速度制御リビルド処理を終了し、改めて速度制御リビルド処理を実行し直してもよい。例えば、速度制御リビルド処理の実行中であっても、下位ストレージ装置１２１等の障害が新たに発生する可能性もあり、実行中の速度制御リビルド処理において決定したリビルドの速度が、その時点のストレージシステムの状況に適したものでない可能性がある。このため、上記したように改めて速度制御リビルド処理を実行し直すことにより、適切な速度によりリビルドを実行することができる。
【０１９９】
具体的には、例えば、上記実施例１では、図１０に示すエクステント分類処理を実行し、実行中の速度制御リビルド処理におけるリビルド処理の速度の設定を変更しなければいけない分類の変更があった場合に、速度制御リビルド処理を実行し直してもよい。また、上記実施例２では、図１５に示す速度制御リビルド処理の実行時に、新たに下位ストレージ装置１２１の故障が発生したことを検出した場合に、速度制御リビルド処理を実行し直してもよい。
【符号の説明】
【０２００】
１０１…上位ストレージ装置、１０３…ホスト、１１５…マイクロプロセッサ（ＭＰ）、１２１…下位ストレージ装置
【図１】
2020144459.tif 000003
【図２】
2020144459.tif 000004
【図３】
2020144459.tif 000005
【図４】
2020144459.tif 000006
【図５】
2020144459.tif 000007
【図６】
2020144459.tif 000008
【図７】
2020144459.tif 000009
【図８】
2020144459.tif 000010
【図９】
2020144459.tif 000011
【図１０】
2020144459.tif 000012
【図１１】
2020144459.tif 000013
【図１２】
2020144459.tif 000014
【図１３】
2020144459.tif 000015
【図１４】
2020144459.tif 000016
【図１５】
2020144459.tif 000017
【図１６】
2020144459.tif 000018
【図１７】
2020144459.tif 000019
【図１８】
2020144459.tif 000020
【図１９】
2020144459.tif 000021
【図２０】
2020144459.tif 000022
【図２１】
2020144459.tif 000023
【図２２】
2020144459.tif 000024
【図２３】
2020144459.tif 000025
【図２４】
2020144459.tif 000026
【図２５】
2020144459.tif 000027