(57)【特許請求の範囲】
【請求項１】
複数のＲＡＩＤグループ（３０１）に基づく複数の実ページ（２６４）で構成されている記憶領域群であるプール（６０）と、
仮想ボリューム（３１２）を構成する複数の仮想ページ（３１２）のうちのライト先仮想ページに、前記複数の実ページのうちのいずれかの未割当ての実ページを割り当てることと、前記ライト先仮想ページに割り当てられる未割当ての実ページに、ライト対象のデータを書き込むこととを含んだライト処理を行うＩ／Ｏ部（３５０５）と、
特定のＲＡＩＤグループが基になっている全ての実ページのうちの全ての割当て済みの実ページに記憶されているデータを、それぞれ、前記特定のＲＡＩＤグループとは別の一以上のＲＡＩＤグループが基になっている未割当ての実ページにコピーすることと、各コピー元の前記割り当て済みの実ページが割り当てられている各仮想ページに各コピー元の割り当て済みの実ページに代えて各コピー先の実ページを割り当てることとを含んだリビルド処理を行うリビルド制御部（５００１）と
を備え、
各ＲＡＩＤグループは、複数の物理記憶装置（３４）で構成されており、任意のＲＡＩＤレベルに基づいてデータを記憶する記憶装置グループであり、
各実ページは、物理的な記憶領域であり、
各仮想ページは、仮想的な記憶領域であり、
前記複数の実ページのうちの各々の未割当の実ページは、前記Ｉ／Ｏ部により何れかの仮想ページに割当てられることにより、割当済みの実ページに変わり、
前記特定のＲＡＩＤグループは、障害の生じた物理記憶装置を有するＲＡＩＤグループであり、
前記リビルド制御部は、何れかの物理記憶装置に障害が生じた場合に、前記障害が生じた物理記憶装置を有する前記特定のＲＡＩＤグループが所定の条件に合致するかを判断し、前記所定の条件に合致する場合は前記リビルド処理を行い、前記所定の条件に合致しない場合は前記特定のＲＡＩＤグループについてコレクションコピーを行い、前記リビルド処理を行う場合、前記特定のＲＡＩＤグループが基になっている各々の前記割当て済みの実ページに記憶されているデータを構成するデータ要素のうち、前記特定のＲＡＩＤグループを構成する前記複数の物理記憶装置のうちの前記障害の生じた物理記憶装置以外の物理記憶装置に記憶されている複数のデータ要素を読み出し、前記読み出した複数のデータ要素を基に前記障害が生じた物理記憶装置に記憶されているデータ要素を復元し、前記読み出した複数のデータ要素と前記復元したデータ要素とで構成されるデータを前記未割当ての実ページにコピーする、
ストレージシステム。
【請求項２】
前記仮想ボリュームとボリュームペアを構成するセカンダリボリュームを更に備え、
前記セカンダリボリュームは、前記複数の仮想ページにそれぞれ対応する複数のセカンダリページから構成され、各セカンダリページは、記憶領域であり、
前記ライト処理において前記ライト先仮想ページに割り当てられる未割当ての実ページは、フリーページであり、
前記リビルド処理でのコピー先の未割当ての実ページは、リザーブページであり、前記リザーブページは、いずれの仮想ページにも割り当てられていないがフリーページではない実ページであって、前記ライト処理において前記ライト先仮想ページに割り当てられることの無い未割当ての実ページであり、
各ＲＡＩＤグループに基づく複数のサブ記憶領域列（３０７）があり、
一つのＲＡＩＤグループにおいて、各サブ記憶領域列は、そのＲＡＩＤグループを構成する複数の物理記憶装置に跨り、それら複数の物理記憶装置のそれぞれが有するサブ記憶領域で構成されており、
一つの実ページが、一以上のサブ記憶領域列に対応しており、故に、その実ページに書き込まれるデータは、その実ページに対応する一以上のサブ記憶領域列に書き込まれることになり、
各ＲＡＩＤグループに基づく各二以上の実ページには、少なくとも一つのリザーブページが設けられており、
どのＲＡＩＤグループが前記特定のＲＡＩＤグループとなり且つその特定のＲＡＩＤグループに基づく全ての実ページのうちリザーブページ以外の全ての実ページが割り当て済み実ページであっても、その割り当て済み実ページの数以上の数のリザーブページが、その特定のＲＡＩＤグループ以外の一以上の別のＲＡＩＤグループに基づく二以上の実ページに含まれており、
前記リビルド制御部は、前記セカンダリボリュームが縮退状態でなく且つ高負荷でなければ、前記リビルド処理において、前記特定のＲＡＩＤグループに基づく或る割り当て済みの実ページからではなく、前記或る割り当て済みの実ページが割り当てられている仮想ページに対応するセカンダリページからデータを読み出し、読み出したデータを、コピー先のリザーブページにコピーし、一方、前記セカンダリボリュームが縮退状態または高負荷であれば、前記或る割り当て済みの実ページからデータを読み出し、読み出したデータを、コピー先のリザーブページにコピーし、それ故、前記リビルド処理では、前記特定のＲＡＩＤグループに基づくいずれかの割り当て済みの実ページからデータが読み出されることと、いずれかのセカンダリページからデータが読み出されることとが並行して行われることがある、
請求項１記載のストレージシステム。
【請求項３】
コピー先とされるリザーブページの数が、前記別のＲＡＩＤグループ毎に均等である、
請求項２記載のストレージシステム。
【請求項４】
前記リビルド制御部は、前記リビルド処理を行う前に、前記特定のＲＡＩＤグループとは別の一以上のＲＡＩＤグループが基になっている複数の実ページに、前記特定のＲＡＩＤグループが基になっている割り当て済みの実ページの総量以上のリザーブページが含まれているか否かの第一の判断を行い、前記第一の判断の結果が否定的であれば、前記特定のＲＡＩＤグループとは別の一以上のＲＡＩＤグループが基になっている複数の実ページに、前記特定のＲＡＩＤグループが基になっている割り当て済みの実ページの総量以上の、前記リビルド処理でのコピー先となることが可能なフリーページが含まれているか否かの第二の判断を行い、前記第二の判断の結果も否定的であれば、前記リビルド処理に代えて、前記特定のＲＡＩＤグループについてコレクションコピーを行い、一方、前記第一の判断の結果又は前記第二の判断の結果が肯定的であれば、前記リビルド処理を行う、
請求項１記載のストレージシステム。
【請求項５】
前記ライト処理において前記ライト先仮想ページに割り当てられる未割当ての実ページは、フリーページであり、
前記リビルド処理でのコピー先の未割当ての実ページは、リザーブページであり、前記リザーブページは、いずれの仮想ページにも割り当てられていないがフリーページではない実ページであって、前記ライト処理において前記ライト先仮想ページに割り当てられることの無い未割当ての実ページであり、
各ＲＡＩＤグループに基づく各二以上の実ページには、少なくとも一つのリザーブページが設けられており、
各ＲＡＩＤグループに基づく複数のサブ記憶領域列（３０７）があり、
一つのＲＡＩＤグループにおいて、各サブ記憶領域列は、そのＲＡＩＤグループを構成する複数の物理記憶装置に跨り、それら複数の物理記憶装置のそれぞれが有するサブ記憶領域で構成されており、
一つの実ページが、一以上のサブ記憶領域列に対応しており、故に、その実ページに書き込まれるデータは、その実ページに対応する一以上のサブ記憶領域列に書き込まれることになり、前記書き込まれるデータを構成するデータ要素が、前記一以上のサブ記憶領域列の各々を構成するサブ記憶領域に書き込まれる、
請求項１記載のストレージシステム。
【請求項６】
どのＲＡＩＤグループが前記特定のＲＡＩＤグループとなり且つその特定のＲＡＩＤグループに基づく全ての実ページのうちリザーブページ以外の全ての実ページが割り当て済み実ページであっても、その割り当て済み実ページの数以上の数のリザーブページが、その特定のＲＡＩＤグループ以外の一以上のＲＡＩＤグループに基づく二以上の実ページに含まれている、
請求項１又は５記載のストレージシステム。
【請求項７】
キューが管理される記憶資源を備え、
前記記憶資源では、少なくとも３種類のキューが管理され、
前記少なくとも３種類のキューは、フリーキュー、リザーブキュー、割り当て済みキューを含み、
前記フリーキューは、フリーページに関する情報要素のキューであり、
前記リザーブキューは、リザーブページに関する情報要素のキューであり、
前記割り当て済みキューは、割り当て済みページに関する情報要素のキューであり、
前記少なくとも３種類のキューが、ＲＡＩＤグループ毎に管理されている、
請求項５又は６記載のストレージシステム。
【請求項８】
前記仮想ボリュームとボリュームペアを構成するセカンダリボリュームを更に備え、
前記セカンダリボリュームは、前記複数の仮想ページにそれぞれ対応する複数のセカンダリページから構成され、各セカンダリページは、記憶領域であり、
前記リビルド制御部は、前記セカンダリボリュームが所定の状態でなければ、前記リビルド処理において、前記特定のＲＡＩＤグループに基づく或る割り当て済みの実ページからではなく、前記或る割り当て済みの実ページが割り当てられている仮想ページに対応するセカンダリページからデータを読み出し、読み出したデータを、コピー先の未割当ての実ページにコピーし、一方、前記セカンダリボリュームが所定の状態であれば、前記或る割り当て済みの実ページからデータを読み出し、読み出したデータを、コピー先の未割当ての実ページにコピーし、それ故、前記リビルド処理では、前記特定のＲＡＩＤグループに基づくいずれかの割り当て済みの実ページからデータが読み出されることと、いずれかのセカンダリページからデータが読み出されることとが並行して行われることがある、
請求項１、５乃至７のうちのいずれか１項に記載のストレージシステム。
【請求項９】
前記セカンダリボリュームは、前記プール内の実ページの基になっていないＲＡＩＤグループに基づく論理ボリュームである、
請求項８記載のストレージシステム。
【請求項１０】
前記所定の状態とは縮退状態または高負荷であり、
前記リビルド制御部は、前記セカンダリボリュームが高負荷又は縮退状態であれば、前記リビルド処理において、前記或る割り当て済みの実ページからデータを読み出す、
請求項８又は９に記載のストレージシステム。
【請求項１１】
コピー先とされる未割当ての実ページの数が、前記別のＲＡＩＤグループ毎に均等である、
請求項１、５乃至１０のうちのいずれか１項に記載のストレージシステム。
【請求項１２】
前記リビルド制御部が、前記リビルド処理によって減ったリザーブページの数に基づく数の、前記特定のＲＡＩＤグループとは別の一以上のＲＡＩＤグループにおける未割当ての実ページを、リザーブページに変更する、
請求項２乃至７のうちのいずれか１項に記載のストレージシステム。
【請求項１３】
前記特定のＲＡＩＤグループが回復した場合、前記リビルド制御部が、前記リビルド処理においてコピーされたデータを前記特定のＲＡＩＤグループに基づくいずれかの未割当ての実ページに戻すことと、戻し元の実ページに割り当てられている仮想ページに戻し元の実ページに代えて戻し先の実ページを割り当てることとを含んだ戻し処理を行う、
請求項１乃至１２のうちのいずれか１項に記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＩＤグループを備えたストレージシステムの記憶制御に関する。
【背景技術】
【０００２】
一般に、ＲＡＩＤ（Redundant Arrays of Independent （or Inexpensive）  Disks）と呼ばれる技術が採用されているストレージシステムには、複数の物理記憶装置（以下、「ＰＤＥＶ」略記）で構成された記憶装置グループが備えられている。この種の記憶装置グループは、一般に、ＲＡＩＤグループ（或いは、パリティグループ又はＥＣＣ（Error-Correcting Code）グループ）と呼ばれる。
【０００３】
ＲＡＩＤグループの記憶領域は、複数のサブ記憶領域列で構成されている。各サブ記憶領域列は、ＲＡＩＤグループを構成する複数のＰＤＥＶに跨っており、複数のＰＤＥＶに対応した複数のサブ記憶領域で構成されている。以下、一つのサブ記憶領域を、「ストライプ」と呼び、複数のストライプで構成された一列を、「ストライプ列」と呼ぶ。
【０００４】
ＲＡＩＤには、いくつかのレベル（以下、「ＲＡＩＤレベル）という）があることが知られている。
【０００５】
例えば、ＲＡＩＤ５がある。ＲＡＩＤ５では、データが、ＲＡＩＤ５に対応したＲＡＩＤグループを構成する複数のＰＤＥＶ（例えば、ハードディスクドライブ（ＨＤＤ））に分散して書き込まれる。具体的には、例えば、ライト対象のデータは、所定サイズのデータ（以下、便宜上「データユニット」と言う）に分割されて、各データユニットが、複数のデータ要素に分割され、複数のデータ要素が、複数のストライプに書き込まれる。また、ＲＡＩＤ５では、ＰＤＥＶに障害が発生したことによりそのＰＤＥＶから読み出せなくなったデータ要素をリストアするために、一つのデータユニットにつき、“パリティ”と呼ばれる冗長な情報（以下、「冗長コード」）が生成され、その冗長コードも、ストライプに書き込まれる。具体的には、例えば、図１Ａに示すように、ＲＡＩＤグループ２０５を構成するＰＤＥＶの数が４である場合は、一つのストライプ列２０７が、４つのＰＤＥＶ２０１−１〜２０１−４に対応した４つのストライプで構成されている。３つのＰＤＥＶ２０１−１〜２０１−３に対応する３つのストライプに、データユニット２０３を構成する３つのデータ要素Ａ〜Ｃが書き込まれ、残りの１つのＰＤＥＶに対応するストライプに、冗長コードＤが書き込まれる。
【０００６】
もし、例えば図１Ｂに示すように、或る１つのＰＤＥＶ２０１−３に障害が発生した場合、データ要素Ｃが読み出せなくなる。このため、リビルドが行われる必要がある。リビルドの一般的な方法として、コレクションコピーが採用されている（例えば特許文献１）。コレクションコピーでは、例えば、読み出せなくなったデータ要素Ｃが、データユニット２０３を構成する残りの二つのデータ要素Ａ及びＢと、冗長コードＤとを用いて、例えばキャッシュメモリ２０９上にリストアされ、リストアされたデータ要素Ｃが、別のＰＤＥＶ（例えばスペアのＰＤＥＶ）２０１Ｓにコピーされる。
【０００７】
【特許文献１】特開２００８−０４６９８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
近年、ＰＤＥＶは大容量化してきている。このため、コレクションコピーでは、一つのＰＤＥＶに記憶されているたくさんのデータ要素がリストアされたり、それらたくさんのデータ要素の全てが別のＰＤＥＶにコピーされたりすることがある。それ故、コレクションコピーが完了するまでに長い時間がかかるおそれがある。コレクションコピーの最中であっても、ストレージシステムの外部の装置（例えばホスト計算機）からリード要求を受け付けることができるが、コレクションコピーが行われている期間は、冗長度が低い期間となるので、コレクションコピーに長い時間がかかると、冗長度が低い期間も長くなってしまう。
【０００９】
上記の問題は、ＲＡＩＤグループのＲＡＩＤレベルとしてＲＡＩＤ５が採用されている場合に限らず、他のＲＡＩＤレベルが採用されている場合にも同様に起こり得る。
【００１０】
そこで、本発明の目的は、コレクションコピーよりも短い時間で完了するリビルド技術を提供することにある。
【課題を解決するための手段】
【００１１】
複数のＲＡＩＤグループに基づく複数の実ページで構成されている記憶領域群であるプールが管理される。ストレージシステムは、ライト処理を行うＩ／Ｏ部と、リビルド処理を行うリビルド制御部とを有する。ライト処理には、下記（Ｗ１）及び（Ｗ２）、
（Ｗ１）仮想ボリュームを構成する複数の仮想ページのうちのライト先仮想ページに、複数の実ページのうちのいずれかの未割当ての実ページを割り当てること；
（Ｗ２）ライト先仮想ページに割り当てられる未割当ての実ページに、ライト対象のデータを書き込むこと；
が含まれる。リビルド処理には、下記（Ｒ１）及び（Ｒ２）、
（Ｒ１）特定のＲＡＩＤグループが基になっている全ての実ページのうちの全ての割当て済みの実ページに記憶されているデータを、それぞれ、特定のＲＡＩＤグループとは別の一以上のＲＡＩＤグループが基になっている未割当ての実ページにコピーすること；
（Ｒ２）各コピー元の割り当て済みの実ページの割当先の各仮想ページに、各コピー元の割り当て済みの実ページに代えて各コピー先の実ページを割り当てること；
が含まれる。各実ページは、物理的な記憶領域であり、各仮想ページは、仮想的な記憶領域である。
【００１２】
ライト処理で割り当てられる実ページは、例えば、フリーページであり、リビルド処理でコピー先となる実ページは、例えば、リザーブページである。フリーページは、複数の仮想ページのいずれにも割り当てられていない、ライト先仮想ページに割り当てられ得る実ページである。リザーブページは、いずれの仮想ページにも割り当てられていないがフリーページではない実ページであって、ライト処理においてライト先仮想ページに割り当てられることの無い実ページである。
【００１３】
ＲＡＩＤグループに基づく全ての実ページがプールに存在しなくても良い。例えば、一つのＲＡＩＤグループに基づく記憶空間のうちの或る記憶空間部分が、プールに存在する二以上の実ページに対応し、その記憶空間のうちの別の記憶空間部分が、プールとは別の記憶領域に対応しても良い。また、プール内の少なくとも一つの実ページは、いわゆる外部接続ストレージシステム内の記憶資源に基づく記憶領域であっても良い。
【図面の簡単な説明】
【００１４】
【図１Ａ】図１Ａは、ＲＡＩＤ５での書き込みの説明図である。
【図１Ｂ】図１Ｂは、ＲＡＩＤ５でのコレクションコピーの説明図である。
【図２】図２は、本発明の一実施形態の概要の説明図である。
【図３】図３は、仮想ページの割当先がコピー元の割り当て済みページからコピー先のリザーブページに変更されたことを示す。
【図４】図４は、回復したＲＧに基づく二以上の実ページを含んだプールを示す。
【図５】図５は、本発明の一実施形態に係る計算機システムの構成ブロック図である。
【図６】図６は、本発明の一実施形態に係る計算機ステムにおける記憶領域の階層を示す。
【図７】図７は、コントローラ３１のメモリ３５０に記憶されるプログラム及び情報を示す。
【図８】図８は、ＶＤＥＶ管理情報３５１４の構成図である。
【図９】図９は、ＬＤＥＶ管理情報３５１２の構成図である。
【図１０】図１０は、アドレス管理テーブル３５１１の説明図である。
【図１１】図１１は、プール管理情報３５２１の構成図である。
【図１２】図１２は、ターゲットデバイス管理情報３５１３の構成図である。
【図１３】図１３は、ＶＶＯＬ−ＤＩＲ３５２３及びＰＳＣＢ３５２４の説明図である。
【図１４】図１４は、ストレージシステム３０で管理されるキューの種類を示す。
【図１５】図１５は、ＶＶＯＬ内の全ての未割当て仮想ページとプール内の所定の実ページに割り当てられていることを示す。
【図１６】図１６は、ライト処理の流れを示す。
【図１７】図１７は、リード処理の流れを示す。
【図１８】図１８は、障害対処処理の流れを示す。
【図１９】図１９は、コピー元決定処理の流れを示す。
【図２０】図２０は、コピー先決定処理の流れを示す。
【図２１】図２１は、セカンダリボリュームがＶＶＯＬ（仮想ボリューム）である場合の、リビルド処理におけるコピーの一例を示す。
【図２２】図２２は、セカンダリボリュームがＲＶＯＬ（実ボリューム）である場合の、リビルド処理におけるコピーの一例を示す。
【符号の説明】
【００１５】
３０…ストレージシステム
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して、本発明の一実施形態を説明する。なお、以下の説明では、ＲＡＩＤグループを「ＲＧ」と略記することがある。
【００１７】
図２は、本発明の一実施形態の概要の説明図である。
【００１８】
複数のＲＡＩＤグループ（例えば、ＲＧ＃０、ＲＧ１、ＲＧ＃２、…）に基づく複数の実ページ２６４で構成されている記憶領域群であるプール６０が管理される。プール６０内の実ページ２６４は、仮想ボリューム（以下、ＶＶＯＬ）３１２における仮想ページ２６２に割り当てられる。割り当てられる実ページ２６４は、フリーページ（ＦＲＥＥ）である。フリーページとは、どの仮想ページ２６２にも割り当てられていない実ページである。フリーページがいずれかの仮想ページ２６２に割り当てられることにより、そのフリーページは割り当て済みページ（ＡＬＬＯＣＡＴＥＤ）となる。割り当て済みページとは、いずれかの仮想ページ２６２に割り当てられている実ページである。ちなみに、仮想ページ２６２は、仮想的な記憶領域であり、実ページ２６４は、物理的な記憶領域である。
【００１９】
更に、本実施形態では、プール６０には、リザーブページが含まれている。リザーブページは、いずれの仮想ページにも割り当てられていないがフリーページではない実ページであって、ホスト計算機からのライト要求で指定されたライト先仮想ページには割り当てられることの無い実ページである。
【００２０】
図２の例では、実ページ２６４を表すブロックにおける符号は、その実ページ２６４の識別子であり、そのブロックにおけるカッコ内の言葉は、そのブロックで表される実ページ２６４の種類を表す。また、仮想ページ２６２を表すブロックにおけるカッコ外の番号は、その仮想ページ２６２の識別番号であり、そのブロックにおけるカッコ内の番号は、その仮想ページ２６２に割り当てられている実ページの識別番号である。なお、カッコの無いブロックで表される仮想ページ２６２は、後述するデフォルトページが割り当てられている仮想ページ（換言すれば、実質的にいずれの実ページも割り当てられていない仮想ページ）である。
【００２１】
いずれのＲＡＩＤグループも複数の物理記憶装置（ＰＤＥＶ）で構成されている。本実施形態では、ＰＤＥＶの障害が検出された場合、下記（Ｒ１）及び（Ｒ２）の処理を含んだリビルド処理、
（Ｒ１）障害の検出されたＰＤＥＶを有するＲＡＩＤグループ（以下、障害ＲＧ）が基になっている全ての割り当て済みページに記憶されているデータを、それぞれ、障害ＲＧとは別のＲＧが基になっているリザーブページにコピーすること；
（Ｒ２）各コピー元の割り当て済みページが割り当てられている各仮想ページに、各コピー元の割り当て済みページに代えて各コピー先のリザーブページを割り当てること（各コピー元の割り当て済みページが割り当てられている各仮想ページに各コピー先のリザーブページを割り当て、各コピー元の割り当て済みの実ページの、仮想ページに対する割当てを解除すること）；
が行われる。
【００２２】
（Ｒ１）の処理は、例えば、図２に示す通りである。すなわち、障害ＲＧ＃０が基になっている全ての割り当て済みページ＃００、＃０１、＃２及び＃０３から、他のＲＧ（例えばＲＧ＃１及びＲＧ＃２）が基になっているリザーブページ＃２６、＃２７、＃１６及び＃１７に、それぞれデータがコピーされる。コピー先とされる複数のリザーブページは、複数のＲＧに分散していても良いし、同一のＲＧに集中していても良い。尚、ディスクアクセス競合によるホストＩ／Ｏ性能劣化を考慮すると、コピー先とされる複数のリザーブページは、複数のＲＧに分散していた方が良い。また、ここでは、リザーブページへのコピーを想定しているが、フリーのページがコピー先に用いられても良い。
【００２３】
（Ｒ２）の処理は、例えば、図３に示す通りである。すなわち、コピー先のリザーブページ（例えば＃１６）が、コピー元の実ページ（例えば＃０２）に割り当てられている仮想ページ（例えば＃００）に割り当てられ、その仮想ページ（例えば＃００）に対するコピー元の実ページ（例えば＃０２）の割り当ては解除される。このため、コピー先の実ページ（例えば＃１６）は、リザーブページから割り当て済みページに変わる。なお、図３に示すように、データのリザーブページ（例えば＃１６）へのコピーに伴い、そのリザーブページ（例えば＃１６）を有するＲＧ（例えば＃１）内のフリーページ（例えば＃１５）が、リザーブページに変更されても良い。これは、例えば、プール６０に関わるいずれか別のＲＧが障害ＲＧになったらその障害ＲＧが基になっている割り当て済みページ内のデータのコピー先が足りなくなる場合に、行われて良い。リザーブページに変更されるフリーページの数は、リビルド処理において減ったリザーブページ（コピー先とされたリザーブページ）の数に基づいて決定されて良い。
【００２４】
また、障害ＲＧ＃０が基になっている全ての割り当て済みページからデータのコピーが完了した後、障害ＲＧ＃０を正常のＲＧ＃０に回復することが可能である。例えば、図４に示すように、障害ＲＧ＃０における障害の検出されたＰＤＥＶが交換され（符号４９９参照）、ＰＤＥＶの交換後に、ＲＧ＃０に基づく記憶領域のフォーマットが行われ、その後、ＲＧ＃０に基づく、プール６０に含まれる各実ページが、フリーページ又はリザーブページとされる（つまり、ＲＧ＃０に基づく実ページは、少なくとも一つのフリーページと少なくとも一つのリザーブページで構成される）。なお、障害ＲＧ＃０が正常のＲＧ＃０に回復した後、戻し処理が行われても良い。戻し処理には、例えば、下記（Ｂ１）及び（Ｂ２）の処理、
（Ｂ１）リビルド処理において別のＲＧ（例えば＃１）の実ページ（例えば＃１６）にコピーされたデータが、回復されたＲＧ＃０に基づくいずれかの実ページ（例えば＃０２）に戻される；
（Ｂ２）戻し元の実ページ（例えば＃１６）に割り当てられている仮想ページ（例えば＃００）に、戻し元の実ページ（例えば＃１６）に代えて戻し先の実ページ（例えば＃０２）が割り当てられる；
が含まれる。これにより、プール６０内の実ページへのアクセスを、より多くのＲＧに分散させることが期待できる。
【００２５】
以下、本実施形態を詳細に説明する。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するＣＰＵによって処理が行われるものとする。
【００２６】
図５は、本発明の一実施形態に係る計算機システムの構成ブロック図である。
【００２７】
ホスト計算機１０がＦＣ（Fibre Channel）ネットワーク５０及びＬＡＮ（Local Area Network）４０を介してストレージシステム３０に接続されている。また、管理計算機２０が、ＬＡＮ４０を介してストレージシステム３０に接続されている。ＦＣネットワーク５０及び／又はＬＡＮ４０は、他種の通信ネットワークでも良い。
【００２８】
ホスト計算機１０は、ストレージシステム３０から提供される論理ボリューム（ターゲットデバイス）にアクセスする計算機である。ホスト計算機１０は、情報処理資源として、例えば、入力装置（例えばキーボードやポインティングデバイス）１１０、出力装置（例えば表示装置）１２０、ＣＰＵ１３０、メモリ１４０、ＦＣ
ＩＦ１５０、ＬＡＮ ＩＦ１６０及びＨＤＤ（ハードディスクドライブ）１７０を備える。ＦＣ ＩＦ１５０は、ＦＣネットワーク５０を介して通信するためのインターフェイス装置である。ＬＡＮ
ＩＦ１６０は、ＬＡＮを介して通信するためのインターフェイス装置である。
【００２９】
管理計算機２０は、ストレージシステム３０に関する管理（例えば、プールの設定、論理ボリュームの設定など）を行う計算機である。管理計算機２０は、情報処理資源として、例えば、入力装置（例えばキーボードやポインティングデバイス）２１０、出力装置（例えば表示装置）２２０、ＣＰＵ２３０、メモリ２４０、ＬＡＮ
ＩＦ２５０及びＨＤＤ２６０を備える。
【００３０】
ストレージシステム３０は、コントローラ３１、キャッシュメモリ（ＣＭ）３２、共有メモリ（ＳＭ）３３、複数のＰＤＥＶ３４、電源スイッチ（ＰＳ
ＳＷ）３５及び電源（ＰＳ）３６を備える。
【００３１】
キャッシュメモリ３２は、ＰＤＥＶ３４に読み書きされるデータを一時的に記憶する。共有メモリ３３は、コントローラ３１やＰＤＥＶ３４に関する情報を記憶する。
【００３２】
電源３６は、ストレージシステム３０の各部に電力を供給する。電源スイッチ３５は、電源３６からの電力の供給をＯＮ／ＯＦＦするスイッチである。
【００３３】
コントローラ３１は、ＰＤＥＶ３４へのデータの格納を制御する。コントローラ３１は、例えば、ＦＣ
ＩＦ３１０、ＬＡＮ ＩＦ３２０、不揮発性メモリ（ＮＶ−メモリ）３３０、電源制御部（ＰＳ ＣＴＬ）３４０、メモリ３５０、ＣＰＵ３６０、ストレージＩＦ３７０及びＳＭ
ＩＦ３８０を備える。
【００３４】
ＦＣ ＩＦ３１０は、ＦＣネットワーク５０を介してホスト計算機１０との間でデータを送受信するためのインターフェイス装置である。ＬＡＮ
ＩＦ３２０は、ＬＡＮ４０を介してホスト計算機１０又は管理計算機２０との間でデータを送受信するためのインターフェイス装置である。
【００３５】
不揮発性メモリ３３０は、例えばフラッシュメモリであり、ＣＰＵ３６０で実行されるコンピュータプログラムや、ストレージシステム３０に関する構成情報が格納される。
【００３６】
電源制御部３４０は、電源３６から供給される電力を制御する。
【００３７】
メモリ３５０は、例えば揮発性のメモリ（例えばＲＡＭ（Randam Access Memory））であり、不揮発性メモリ３３０、共有メモリ３３及びキャッシュメモリ３２のうちの少なくとも一つから読み出したデータ及び／又はコンピュータプログラムを記憶する。
【００３８】
ＣＰＵ３６０は、不揮発性メモリ３３０からコンピュータプログラムをメモリ３５０に読み込んで、そのプログラムに規定された処理を実行する。
【００３９】
ストレージＩＦ３７０は、ＰＤＥＶ３４及びキャッシュメモリ３２との間でデータを送受信するためのインターフェイス装置である。
【００４０】
ＳＭ ＩＦ３８０は、共有メモリ３３との間でデータを送受信するためのインターフェイス装置である。
【００４１】
図６は、本実施形態に係る計算機ステムにおける記憶領域の階層を示す。以下、下位の階層から順に記憶領域を説明する。
【００４２】
ＲＡＩＤグループ３０１がある。ＲＡＩＤグループ３０１は、前述した通り、複数のＰＤＥＶ３４で構成されており、それら複数のＰＤＥＶ３４に跨るストライプ列３０７がある。
【００４３】
ＥＶＯＬ３０５がある。ＥＶＯＬ３０５は、外部ボリュームの略であり、図示しない外部のストレージシステム（いわゆる外部接続ストレージシステム）内の記憶資源に基づく論理ボリュームである。その記憶資源は、例えば、ＲＡＩＤグループ、或いはＲＡＩＤグループに基づく論理ボリュームである。ＥＶＯＬ３０５に対してデータの入出力が行われる場合には、ＥＶＯＬ３０５の基になっている、外部接続ストレージシステム内の記憶資源に対して、そのデータの入出力が行われる。
【００４４】
ＶＤＥＶ３０３がある。ＶＤＥＶ３０３は、ＲＡＩＤグループ３０１又はＥＶＯＬ３０５に基づく仮想的な記憶資源である。ＶＤＥＶ３０３の記憶空間が仕切られることにより、ＶＤＥＶ３０３に、複数のＬＤＥＶ３０６が形成される。ＶＤＥＶ３０３が一つのＬＤＥＶ３０６であっても良い。以下、ＲＡＩＤグループ３０１が基になっているＶＤＥＶを「第一種のＶＤＥＶ」と言い、ＥＶＯＬ３０５が基になっているＶＤＥＶを「第二種のＶＤＥＶ」と言うことがある。
【００４５】
プール６０がある。プール６０は、複数のプールボリュームで構成されている。プールボリューム６１は、いずれかのＬＤＥＶに関連付けられている。プールボリューム６１は、ホスト計算機１０から指定されるターゲットデバイスには関連付けられていない。プールボリューム６１は、第一種のＶＤＥＶ内のＬＤＥＶ又は第二種のＶＤＥＶ内のＬＤＥＶに関連付けられている。プールボリューム６１は、複数の実ページ２６４で構成されている。本実施形態では、実ページ２６４とストライプ列３０７とが１対１で対応している。実ページ２６４に格納されるデータは、その実ページ２６４に対応するストライプ列３０７に格納される。以下の説明では、一つのストライプ列３０７に格納されるデータを「データユニット」と言うことがあり、それ故、一つの実ページに格納されるデータも「データユニット」と言うことがある。なお、実ページ２６４には、複数のストライプ列３０７が対応していても良い。
【００４６】
ターゲットデバイスに関連付けられた論理ボリュームがある。その種の論理ボリュームとしては、例えば、実ボリューム（ＲＶＯＬ）３１１と、仮想ボリューム（ＶＶＯＬ）３１２とがある。ＲＶＯＬ３１１は、第一種のＶＤＥＶ（＃０）内のＬＤＥＶ（＃０１）が基になっている論理ボリューム、すなわち、実体的な論理ボリュームである。一方、ＶＶＯＬ３１２は、ＶＤＥＶ３０３に基づかない論理ボリューム、すなわち、仮想的な論理ボリュームである。一つのプール６０が一つのＶＶＯＬ３１２に対応付けられており、そのＶＶＯＬ３１２の仮想ページには、そのＶＶＯＬ３１２に対応付けられているプール６０内のフリーページが割り当てられる。
【００４７】
ホスト計算機１０は、ターゲットデバイスを指定したＩ／Ｏ要求（ライト要求又はリード要求）をストレージシステム３０に送信する。ターゲットデバイスには、前述した通り、ＲＶＯＬ３１１又はＶＶＯＬ３１２が関連付けられている。ＶＶＯＬ３１２に関連付けられているターゲットデバイスを指定したライト要求が受信された場合、図６に示した記憶領域の階層例によれば、例えば以下の処理が行われる。すなわち、ハッチングで示すように、プール６０からフリーページ２６４が選択され、選択されたフリーページ２６４が、ライト先仮想ページ（ライト要求から特定される仮想ページ）２６２に割り当てられ、割り当てられたフリーページ２６４に、ライト対象のデータユニットが書き込まれる。実ページ２６４にデータユニットが書き込まれるということは、その実ページ２６４を有するプールボリューム＃０に関連付けられているＬＤＥＶ＃０２にデータユニットが書き込まれるということである。ＬＤＥＶ＃０２は、第一種のＶＤＥＶ内のＬＤＥＶであるため、ＬＤＥＶ＃０２に書き込まれるデータユニットは、実際には、ＲＡＩＤグループ３０７の、上記割り当てられた実ページ２６４に対応するストライプ列３０７に書き込まれる。
【００４８】
障害ＲＧに基づく割り当て済みページからリザーブページにデータがコピーされる場合、そのデータは、以下のようにして生成される。すなわち、コピー元の割り当て済みページに対応するストライプ列から、複数のデータ要素が読み出され、それら複数のデータ要素を基に、障害の発生しているＰＤＥＶに記憶されているデータ要素が復元され、読み出された複数のデータ要素と復元されたデータ要素とで構成されたデータが、リザーブページにコピーされる。例えば障害ＲＧやコピー先のリザーブページの基になっているＲＧのＲＡＩＤレベルが、パリティが生成されることになるＲＡＩＤレベルの場合、コピーされるデータにはパリティが含まれていなくても良い。コピーする場合に再び生成されることになるからである。
【００４９】
図７は、コントローラ３１のメモリ３５０に記憶されるプログラム及び情報を示す。
【００５０】
メモリ３５０には、例えば、コマンド制御プログラム３５０１、パス制御プログラム３５０２、構成制御プログラム３５０３、Ｉ／Ｏプログラム３５０５、プール制御プログラム３５０７、電源制御プログラム３５０８、キャッシュ制御プログラム３５０９、ＰＤＥＶ診断プログラム３５１０、リビルド制御プログラム５００１、構成情報３５１及びプール情報３５２が格納される。
【００５１】
コマンド制御プログラム３５０１は、ホスト計算機１０又は管理計算機２０から受信したコマンドを解釈し、そのコマンドを処理できる他のコンピュータプログラム３５０３〜３５１０のいずれかを呼び出す。例えば、上記受信したコマンドがＩ／Ｏコマンドの場合、Ｉ／Ｏプログラム３５０５が呼び出されるし、上記受信したコマンドがプール設定コマンドの場合、プール制御プログラム３５０７が呼び出される。
【００５２】
パス制御プログラム３５０２は、管理計算機２０からのコマンドに従いホスト計算機１０とターゲットデバイスとの間のパスを設定する。
【００５３】
構成制御プログラム３５０３は、管理計算機２０からのコマンドに従い構成情報３５１を更新する。
【００５４】
Ｉ／Ｏプログラム３５０５は、ホスト計算機１０からのＩ／Ｏコマンドに従うライト処理又はリード処理を行う。
【００５５】
プール制御プログラム３５０７は、プール情報３５２を設定又は更新する。
【００５６】
電源制御プログラム３５０８は、電源３６のＯＮ／ＯＦＦを制御する。
【００５７】
キャッシュ制御プログラム３５０９は、キャッシュメモリ３２における記憶領域を制御する。
【００５８】
ＰＤＥＶ診断プログラム３５１０は、ＰＤＥＶ３４の状態を診断する。例えば、いずれかのＰＤＥＶ３４に障害が発生した場合、そのＰＤＥＶ３４の障害は、ＰＤＥＶ診断プログラム３５１０によって検出される。
【００５９】
リビルド制御プログラム５００１は、ＰＤＥＶ３４の障害が検出されたことを契機に後述のリビルド処理を行う。
【００６０】
構成情報３５１は、ストレージシステム３０の構成に関する情報である。構成情報３５１は、例えば、アドレス管理テーブル３５１１、ＬＤＥＶ管理情報３５１２、ターゲットデバイス（ＴＤ）管理情報３５１３及びＶＤＥＶ管理情報３５１４を含む。アドレス管理テーブル３５１１は、例えば、ターゲットデバイス／ＬＤＥＶマッピング情報３５１１１、ＬＤＥＶ／ＶＤＥＶマッピング情報３５１１２及びＬＤＥＶ／ＰＤＥＶマッピング情報３５１１３を含む（これらの情報については後に図１０を参照して説明する）。ＬＤＥＶ管理情報３５１２は、ＬＤＥＶに関する情報である。ターゲットデバイス管理情報３５１３は、ターゲットデバイスに関する情報である。ＶＤＥＶ管理情報３５１４は、ＶＤＥＶに関する情報である。
【００６１】
プール情報３５２は、プール６０に関する情報である。プール情報３５２は、例えば、プール管理情報３５２１、ＰＯＯＬ−ＶＯＬ管理情報３５２２、ＶＶＯＬ−ＤＩＲ３５２３、ＰＳＣＢ（POOL Slot Control Brock）３５２４及びＳＹＳ領域情報３５２５を含む。プール管理情報３５２１は、プール６０の設定を含む。ＰＯＯＬ−ＶＯＬ管理情報３５２２は、プールボリュームに関する情報である。ＶＶＯＬ−ＤＩＲ３５２３は、プールボリュームに割り当てられているＬＤＥＶに関する情報を有する。ＰＳＣＢ３５２４は、実ページに関する情報であり、実ページ毎に存在する。ＳＹＳ領域情報３５２５は、構成情報３５１やプール情報３５２等の管理情報が格納されるＬＤＥＶに関する情報である。
【００６２】
以下、ＶＤＥＶ管理情報３５１４、ＬＤＥＶ管理情報３５１２、アドレス管理テーブル３５１１、プール管理情報３５２１及びターゲットデバイス管理情報３５１３を詳細に説明する。
【００６３】
図８は、ＶＤＥＶ管理情報３５１４の構成図である。
【００６４】
ＶＤＥＶ管理情報３５１４は、ＶＤＥＶ毎に用意されるＶＤＥＶ固有情報３５１４１で構成されている。図８は、或るＶＤＥＶ（以下、図８の説明において「対象ＶＤＥＶ」と言う）に対応するＶＤＥＶ固有情報３５１４１を示している。ＶＤＥＶ固有情報３５１４１は、例えば、ＶＤＥＶ＃３５１４２、エミュレーションタイプ３５１４３、総サイズ３５１４４、残サイズ３５１４５、デバイス属性３５１４６、デバイス状態３５１４７、設定ＬＤＥＶ数３５１４８、ＬＤＥＶ＃３５１４９、先頭ＬＤＥＶ−ＳＬＯＴ＃３５１５０及び終了ＬＤＥＶ−ＳＬＯＴ＃３５１５１を含む。
【００６５】
ＶＤＥＶ＃３５１４２は、対象ＶＤＥＶの識別子である。
【００６６】
エミュレーションタイプ３５１４３は、対象ＶＤＥＶのエミュレーションタイプの識別子である。
【００６７】
総サイズ３５１４４は、対象ＶＤＥＶのサイズ（記憶容量）を表す情報である。
【００６８】
残サイズ３５１４５は、対象ＶＤＥＶの未使用の記憶空間部分（ＬＤＥＶが未設定の記憶空間部分）のサイズを表す情報である。
【００６９】
デバイス属性３５１４６は、対象ＶＤＥＶの属性の識別子である。例えば、対象ＶＤＥＶが第一種のＶＤＥＶである場合には、デバイス属性３５１４６は、第一種のＶＤＥＶ表す識別子であり、対象ＶＤＥＶが第二種のＶＤＥＶである場合には、第二種のＶＤＥＶを表す識別子である。
【００７０】
デバイス状態３５１４７は、対象ＶＤＥＶの状態を示す識別子である。対象ＶＤＥＶの状態としては、正常、閉塞及び障害閉塞等がある。閉塞は、障害の発生意外の要因によって閉塞されていることを示す。障害閉塞は、いずれかのＰＤＥＶ３４に障害が発生しておりそのために閉塞されていることを示す。
【００７１】
設定ＬＤＥＶ数３５１４８は、対象ＶＤＥＶに設定されているＬＤＥＶの総数を表す情報である。
【００７２】
ＬＤＥＶ＃３５１４９、先頭ＶＤＥＶ−ＳＬＯＴ＃３５１５０及び終了ＶＤＥＶ−ＳＬＯＴ＃３５１５１のセットは、対象ＶＤＥＶに設定されているＬＤＥＶ毎に用意される情報である。以下、或るセットについて、これらの情報を説明する。また、その或るセットに対応するＬＤＥＶを、この段落で、「対象ＬＤＥＶ」と言う。ＬＤＥＶ＃３５１４９は、対象ＬＤＥＶの識別子である。先頭ＶＤＥＶ−ＳＬＯＴ＃３５１５０は、対象ＬＤＥＶの物理的な先頭のスロット（記憶領域）の識別子である。終了ＶＤＥＶ−ＳＬＯＴ＃３５１５１は、対象ＬＤＥＶの物理的な最終のスロットの識別子である。スロットは、例えば、図６に示したように、実ページに対応する記憶領域である。例えば、一以上のスロットが、一つの実ページに対応する。
【００７３】
図９は、ＬＤＥＶ管理情報３５１２の構成図である。
【００７４】
ＬＤＥＶ管理情報３５１２は、ＬＤＥＶ毎に用意されるＬＤＥＶ固有情報３５１２１で構成されている。図９は、或るＬＤＥＶ（以下、図９の説明において「対象ＬＤＥＶ」と言う）に対応するＬＤＥＶ固有情報３５１２１を示している。
【００７５】
ＬＤＥＶ固有情報３５１２１は、ＬＤＥＶ＃３５１２２、エミュレーションタイプ３５１２３、サイズ３５１２４、先頭スロット＃３５１２５、終了スロット＃３５１２６、パス定義情報３５１２７、デバイス属性３５１２８、デバイス状態３５１２９、プログラム使用情報３５１３０、ＰＯＯＬ−ＩＤ３５１３１及びＲＧ＃３５１３２を有する。
【００７６】
ＬＤＥＶ＃３５１２２は、対象ＬＤＥＶの識別子である。
【００７７】
エミュレーションタイプ３５１２３は、対象ＬＤＥＶのエミュレーションタイプの識別子である。
【００７８】
サイズ３５１２４は、対象ＬＤＥＶのサイズ（記憶容量）を表す情報である。
【００７９】
先頭スロット＃３５１２５は、対象ＬＤＥＶの先頭のスロットの識別子である。
【００８０】
終了スロット＃３５１２６は、対象ＬＤＥＶの最終のスロットの識別子である。
【００８１】
パス定義情報３５１２７は、ホスト計算機１０に定義されたパスであって、対象ＬＤＥＶが割り当てられている論理ボリューム（ターゲットデバイス）へのパスの識別子である。
【００８２】
デバイス属性３５１２８は、対象ＬＤＥＶの属性の識別子である。その識別子（つまり対象ＬＤＥＶの属性）は、対象ＬＤＥＶが、第一種及び第二種のＶＤＥＶのうちのいずれに割り当てられているかや、プールボリューム６１に割り当てられているか否か等によって異なる。
【００８３】
デバイス状態３５１２９は、対象ＬＤＥＶが属するＶＤＥＶの状態を示す識別子である。
【００８４】
プログラム使用状況３５１３０は、対象ＬＤＥＶが何れかのコンピュータプログラムによって処理中である場合の、そのプログラムの識別子である。
【００８５】
ＰＯＯＬ−ＩＤ３５１３１は、対象ＬＤＥＶがプールボリューム６１に割り当てられている場合に設定される情報であって、そのプールボリューム６１が含まれているプール６０の識別子である。
【００８６】
ＲＧ＃３５１３２は、対象ＬＤＥＶの基になっているＲＧの識別子である。
【００８７】
図１０は、アドレス管理テーブル３５１１の説明図である。
【００８８】
アドレス管理テーブル３５１１は、前述したように、ターゲットデバイス／ＬＤＥＶマッピング情報３５１１１、ＬＤＥＶ／ＶＤＥＶマッピング情報３５１１２及びＶＤＥＶ／ＰＤＥＶマッピング情報３５１１３を含む。
【００８９】
ターゲットデバイス／ＬＤＥＶマッピング情報３５１１１には、ターゲットデバイス（論理ボリューム）のアドレスとＬＤＥＶのアドレスとの対応が格納される。
【００９０】
ＬＤＥＶ／ＶＤＥＶマッピング情報３５１１２には、ＬＤＥＶのアドレスとＶＤＥＶのアドレスとの対応が格納される。
【００９１】
ＶＤＥＶ／ＰＤＥＶマッピング情報３５１１３には、ＶＤＥＶのアドレスとＰＤＥＶのアドレスとの対応が格納される。そのＶＤＥＶが第一種のＶＤＥＶの場合には、そのＶＤＥＶの基になっているＲＧのＲＧ＃も格納される。
【００９２】
Ｉ／Ｏプログラム３５０５やリビルド制御プログラム５００１等の各種プログラムは、このアドレス管理テーブル３５１１を参照することによって、例えば、ターゲットデバイスのアドレスがどのＬＤＥＶのどのアドレスに対応しているか、そのＬＤＥＶのアドレスがどのＶＤＥＶのどのアドレスに対応しているか、そのＶＤＥＶのアドレスがどのＲＡＩＤグループのどのアドレスに対応しているかを知ることができる。
【００９３】
図１１は、プール管理情報３５２１の構成図である。
【００９４】
プール管理情報３５２１は、プール毎に用意されるプール固有情報３５２１１で構成されている。図１１は、或るプール（以下、図１１の説明において「対象プール」と言う）に対応するプール固有情報３５２１１を示している。
【００９５】
プール固有情報３５２１１は、例えば、ＰＯＯＬ−ＩＤ３５２１２、属性／用途３５２１３、エミュレーションタイプ３５２１４、容量３５２１５、空き容量３５２１６、閾値３５２１７、状態３５２１８、ＰＯＯＬ−ＶＯＬ数３５２１９、デバイス＃リスト３５２２０、デバイス数３５２２１、デバイス＃３５２２２、総ページ数３５２２３、フリーページ数３５２２４、割り当て済みページ数３５２２５、リザーブページ数３５２２６、障害ＲＧページ数３５２２７、第一の閾値３５２２８及び第二の閾値３５２２９を有する。
【００９６】
ＰＯＯＬ−ＩＤ３５２１２は、対象プールの識別子である。
【００９７】
属性／用途３５２１３は、対象プールの属性及び用途を示す識別子である。属性は、ＰＳＣＢ３５２４の連結の形態である。用途は、例えばスナップショットやＳＹＳ領域など、運用形態の用途である。
【００９８】
エミュレーションタイプ３５２１４は、対象プールのエミュレーションタイプの識別子である。
【００９９】
容量３５２１５は、対象プールの総容量を表す情報である。
【０１００】
空き容量３５２１６は、プールの未使用の領域の容量を表す情報である。
【０１０１】
閾値３５２１７は、対象プールが許容する最大のデータ格納容量である。
【０１０２】
状態３５２１８は、対象プールの現在の状態である。その状態としては、例えば、定義中、拡張中、有効等がある。
【０１０３】
ＰＯＯＬ−ＶＯＬ数３５２１９は、対象プールを構成するプールボリュームの総数である。
【０１０４】
デバイス＃リスト３５２２０は、対象プールを構成する一以上のプールボリュームにそれぞれ割り当てられている一以上のＬＤＥＶのＬＤＥＶ＃の一覧である。
【０１０５】
デバイス数３５２２１は、対象プール内のプールボリュームのうちの第二種のＶＤＥＶ内のＬＤＥＶが割り当てられているプールボリュームの数を表す情報である。
【０１０６】
デバイス＃３５２２２は、対象プール内のプールボリュームに割り当てられているＬＤＥＶのうちの第二種のＶＤＥＶ内のＬＤＥＶのＬＤＥＶ＃の一覧である。
【０１０７】
総ページ数３５２２３は、対象プールを構成する実ページの総数を表す情報である。
【０１０８】
フリーページ数３５２２４は、対象プールにおけるフリーページの数を表す情報である。
【０１０９】
割り当て済みページ数３５２２５は、対象プールにおける割り当て済みページの数を表す情報である。
【０１１０】
リザーブページ数３５２２６は、対象プールにおけるリザーブページの数を表す情報である。
【０１１１】
障害ページ数３５２２７は、対象プールにおける障害ページの数を表す情報である。障害ページとは、障害ＲＧに基づく実ページである。
【０１１２】
第一の閾値３５２２８は、対象プールに十分な未使用の記憶容量が残っているか否かの判断に使用される閾値である。具体的には、例えば、｛（割り当て済みページの総記憶容量）／（対象プールの総サイズ）｝×１００（％）の値が第一の閾値３５２２８を超えていれば、対象プールに十分な未使用の記憶容量が残っていないと判断される。
【０１１３】
第二の閾値３５２２９は、対象プールにコピー先となれる実ページが不足しているか否かの判断に使用される閾値である。具体的には、例えば、｛（障害ＲＧ以外のＲＧが基になっている割り当て済みページの総量）／（障害ＲＧ以外のＲＧが基になっている、コピー先となれる未割当てページの総量）｝×１００（％）の値が第二の閾値３５２２９を超えていれば、対象プールにコピー先となれる未割当てページ（実ページ）が不足していると判断される。第二の閾値３５２２９及び前述の第一の閾値３５２２８の少なくとも一方は、管理計算機２０から管理者によって設定されて良い。
【０１１４】
図１２は、ターゲットデバイス管理情報３５１３の構成図である。
【０１１５】
ターゲットデバイス管理情報３５１３は、ターゲットデバイス毎に用意されるターゲットデバイス固有情報３５１３１で構成されている。図１２は、或るターゲットデバイス（以下、図１２の説明において「対象ＴＤ」と言う）に対応するターゲットデバイス固有情報３５１３１を示している。
【０１１６】
ターゲットデバイス固有情報３５１３１は、例えば、ポート＃３５１３２、ターゲットデバイス＃３５１３３、ＬＤＥＶ数３５１３４、ＬＤＥＶ＃３５１３５、属性３５１３６、状態３５１３７、容量３５１３８及び許可ホスト情報３５１３９を有する。
【０１１７】
ポート＃３５１３２は、対象ＴＤが関連付けられているポート（ＦＣ
ＩＦ３１０が有するポート）の識別子である。
【０１１８】
ターゲットデバイス番号３５１３３は、対象ＴＤの識別子である。
【０１１９】
ＬＤＥＶ数３５１３４は、対象ＴＤ（論理ボリューム）に割り当てられているＬＤＥＶの数を表す情報である。
【０１２０】
ＬＤＥＶ番号３５１３５は、対象ＴＤ（論理ボリューム）に割り当てられているＬＤＥＶのＬＤＥＶ＃の一覧である。
【０１２１】
属性３５１３６は、対象ＴＤの属性を示す識別子である。その識別子（つまり対象ＴＤの属性）は、対象ＴＤがＲＶＯＬであるかＶＶＯＬであるか等によって異なる。
【０１２２】
状態３５１３７は、対象ＴＤに対応するＶＤＥＶの状態を示す識別子である。
【０１２３】
容量３５１３８は、対象ＴＤの容量（ホスト計算機１０に認識される容量）である。
【０１２４】
許可ホスト情報３５１３９は、対象ＴＤへのアクセスを許可されているホスト計算機１０の識別子である。
【０１２５】
図１３は、ＶＶＯＬ−ＤＩＲ３５２３及びＰＳＣＢ３５２４の説明図である。
【０１２６】
ＶＶＯＬ−ＤＩＲ３５２３は、ＶＶＯＬ３１２を構成する各仮想ページ２６２に関する情報である。具体的には、ＶＶＯＬ−ＤＩＲ３５２３は、仮想ページ２６２毎に、エントリ３５２３２を有する。エントリ３５２３２は、そのエントリ３５２３２に対応する仮想ページのアドレスを表す情報（アドレス）３５２３３と、その仮想ページに割り当てられている実ページに対応するＰＳＣＢ３５２４へのポインタ（ポインタ）３５２３４とを含む。
【０１２７】
各ＰＳＣＢ３５２４は、プール６０を構成する実ページ２６４に関する情報である。具体的には、例えば、ＰＳＣＢ３５２４は、そのＰＳＣＢ３５２４に対応する実ページの識別子（実ページ＃）３５２４２と、その実ページのプール６０における場所を表す情報（アドレス）３５２４３と、そのＰＳＣＢ３５２４の直前にあるＰＳＣＢ３５２４へのポインタ（ポインタＡ）３５２４４と、そのＰＳＣＢ３５２４の直後にあるＰＳＣＢ３５２４へのポインタ（ポインタＢ）３５２４５とを有する。ＰＳＣＢ３５２４は、キューで管理されている。ＰＳＣＢ３５２４が先頭であれば（そのＰＳＣＢ３５２４の直前に別のＰＳＣＢ３５２４が繋がっていなければ）、ポインタＡ３５２４４の値は無効値となり、ＰＳＣＢ３５２４が最後尾であれば（そのＰＳＣＢ３５２４の直後に別のＰＳＣＢ３５２４が繋がっていなければ）、ポインタＢ３５２４５の値は無効値となる。
【０１２８】
或る仮想ページ２６２にアクセス（ライト又はリード）が発生した場合、その仮想ページ２６２に対応したエントリ３５２３２内のＰＳＣＢポインタ３５２３４から、その仮想ページ２６２に割り当てられている実ページ２６４を特定することができる。そして、その実ページ２６４のプール６０における場所は、その実ページ２６４に対応したＰＳＣＢ３５２４から特定することができる。
【０１２９】
図１４は、ストレージシステム３０で管理されるキューの種類を示す。
【０１３０】
フリーキュー１４０１Ｆ、リザーブキュー１４０１Ｒ、割り当て済みキュー１４０１Ａ、障害キュー１４０１Ｄ及び未使用キュー１４０１Ｕがある。各種キュー１４０１Ｆ、１４０１Ｒ、１４０１Ａ、１４０１Ｄ及び１４０１Ｕは、ＲＡＩＤグループ毎に用意される。各種キュー１４０１Ｆ、１４０１Ｒ、１４０１Ａ、１４０１Ｄ及び１４０１Ｕは、ＰＳＣＢ３５２４の列である。具体的には、フリーキュー１４０１Ｆは、フリーページに対応したＰＳＣＢ３５２４の列である。リザーブキュー１４０１Ｒは、リザーブページに対応したＰＳＣＢ３５２４の列である。割り当て済みキュー１４０１Ａは、割り当て済みページに対応したＰＳＣＢ３５２４の列である。障害キュー１４０１Ｄは、障害ページに対応したＰＳＣＢ３５２４の列である。未使用キュー１４０１Ｕは、フリーページ、リザーブページ、割り当て済みページ及び障害ページのいずれでもない実ページに対応したＰＳＣＢ３５２４の列である。
【０１３１】
Ｉ／Ｏプログラム３５０５は、例えば、ライト先仮想ページにフリーページを割り当てる場合、そのフリーページに対応したＰＳＣＢ３５２４を、そのフリーページの基になっているＲＧに対応したフリーキュー１４０１Ｆから外し、そのＲＧに対応した割り当て済みキュー１４０１Ａの最後尾に繋げる。
【０１３２】
また、例えば、ＰＤＥＶ診断プログラム３５１０は、或るＰＤＥＶ３４の障害を検出した場合、障害が検出されたＰＤＥＶ３４を有するＲＧ（障害ＲＧ）を縮退状態にする。具体的には、例えば、ＰＤＥＶ診断プログラム３５１０は、ＲＧ毎の状態等が記録されているテーブル（図示せず）における、障害ＲＧに対応した状態を、縮退状態に更新する。
【０１３３】
リビルド制御プログラム５００１は、障害ＲＧが縮退状態になったことを検出した場合、リビルド処理において、以下の処理（Ｑ１）乃至（Ｑ５）、
（Ｑ１）障害ＲＧに対応したフリーキュー１４０１Ｆ及びリザーブキュー１４０１Ｒの状態を、障害状態に更新する；
（Ｑ２）障害ＲＧに対応した割り当て済みキュー１４０１Ａを、障害ＲＧに対応した障害キューに移動し、且つ、障害ＲＧに対応したフリーキュー１４０１Ｆを、障害ＲＧに対応した障害キューに移動する（この（Ｑ２）は行われなくても良い）；
（Ｑ３）障害ＲＧが基になっている複数の割り当て済みページ内のデータを、縮退状態ではない複数の別のＲＧが基になっているリザーブページに、均等に振り分ける（つまり、別のＲＧ毎のコピー先のリザーブページの数は同じである）；
（Ｑ４）各リザーブキューに接続されているＰＳＣＢ３５２４のうち、コピー先となったリザーブページに対応するＰＳＣＢ３５２４を、各リザーブキューに対応するＲＧに対応する割当て済みキューに移動する；
（Ｑ５）障害ＲＧに対応した障害キューにある全てのＰＳＣＢ３５２４を未使用キュー１４０１Ｕに移動する；
を行う。或るＲＧが基になっている全ての実ページに対応したＰＳＣＢ３５２４が未使用キュー１４０１Ｕにあれば、その或るＲＧをストレージシステム３０から減設することが可能である。
【０１３４】
以上の、キュー間のＰＳＣＢ３５２４の移動に伴い、プール６０に対応したプール固有情報３５２１１における情報３５２２４、３５２２５、３５２２６及び３５２２７が適時に更新される。
【０１３５】
ところで、本実施形態では、図１５に示すように、実ページが割り当てられていない全ての仮想ページ（以下、未割当て仮想ページ）に、一つのデフォルトページが割り当てられている。このため、ＶＶＯＬのいずれの仮想ページに一度もライトが発生してない場合には、全ての仮想ページにデフォルトページが割り当てられていることになる。いずれかの仮想ページにライトが発生すると、その仮想ページには、デフォルトページに代えて、いずれかのフリーページが割り当てられる（つまり、仮想ページに対するデフォルトページの割り当てが解除される）。
【０１３６】
デフォルトページは、例えば、ゼロを表すビットで構成されたデータ（以下、ゼロデータ）が予め記録されている実ページである。このため、いずれかの未割当て仮想ページをリード元とするリード要求をホスト計算機１０から受信した場合、Ｉ／Ｏプログラム３５０５は、リード元の未割当ての仮想ページに対応したデフォルトページからゼロデータを読み出し、読み出したゼロデータをホスト計算機１０に送信する。
【０１３７】
デフォルトページは、ＲＧ毎に一つ用意されていても良い。全ての未割当て仮想ページに割り当てられているデフォルトページの基になっているＲＧが縮退状態になった場合、それら全ての未割当て仮想ページには、そのデフォルトページに代えて、縮退状態になっていないＲＧが基になっているデフォルトページが割り当てられても良い。
【０１３８】
デフォルトページは、プール毎に一つ用意されていても良い。デフォルトページの基になっているＲＧが縮退状態になってリビルド処理が行われた場合、デフォルトページのコピー先のリザーブページがデフォルトページとされても良い。つまり、そのコピー先のリザーブページが、全ての未割当て仮想ページに割り当てられても良い。
【０１３９】
以下、本実施形態で行われる種々の処理を説明する。
【０１４０】
図１６は、ライト処理の流れを示す。なお、図１６を参照した説明では、ライト先仮想ページを有するＶＶＯＬを「ライト先ＶＶＯＬ」と言う。
【０１４１】
Ｉ／Ｏプログラム３５０５は、ライト要求を受けた場合、そのライト要求に従うデータをキャッシュメモリ３２に一時書込む。そして、Ｉ／Ｏプログラム３５０５は、ライト要求を基に特定されるライト先仮想ページに割り当てられている実ページが、デフォルトページか否かの判断を行う（Ｓ１６０１）。この判断は、例えば、その実ページに対応したＰＳＣＢ３５２４における実ページ＃３５２４２又はアドレス３５２４３を基に行うことができる。
【０１４２】
Ｓ１６０１の判断の結果が否定的の場合（Ｓ１６０１：ＮＯ）、Ｉ／Ｏプログラム３５０５は、ライト先仮想ページに割り当てられている割り当て済みページにデータを書き込む（Ｓ１６１４）。
【０１４３】
Ｓ１６０１の判断の結果が肯定的の場合（Ｓ１６０１：ＹＥＳ）、Ｉ／Ｏプログラム３５０５は、プール６０にフリーページがあるか否かの判断を行う（Ｓ１６０２）。この判断は、例えば、ライト先ＶＶＯＬに対応したプールのプール固有情報３５２１１を基に、、或いは、フリーキューにＰＳＣＢがあるか否かを基に、行うことができる。
【０１４４】
Ｓ１６０２の判断の結果が否定的の場合（Ｓ１６０２：ＮＯ）、Ｉ／Ｏプログラム３５０５は、ホスト計算機１０及び／又は管理計算機２０に、警告を出す（Ｓ１６１１）。そして、Ｉ／Ｏプログラム３５０５は、リザーブページをフリーページとして使用可能か否かの判断を行う（Ｓ１６１２）。この判断は、例えば、リザーブページに対応したＰＳＣＢに、フリーページとして使用することが可能であることを意味する情報が含まれているか否かを基に、行うことができる。Ｓ１６１２の判断の結果が否定的の場合（Ｓ１６１２：ＮＯ）、処理が終了し、Ｓ１６１２の判断の結果が肯定的の場合（Ｓ１６１４：ＹＥＳ）、Ｉ／Ｏプログラム３５０５は、いずれかのリザーブページを選択する（Ｓ１６１３）。
【０１４５】
一方、Ｓ１６０２の判断の結果が肯定的の場合（Ｓ１６０２：ＹＥＳ）、Ｉ／Ｏプログラム３５０５は、いずれかのフリーページを選択する（Ｓ１６０３）。そして、Ｉ／Ｏプログラム３５０５は、フリーページが僅少か否かの判断を行う（Ｓ１６０４）。この判断は、例えば、｛（割り当て済みページの総記憶容量）／（ライト先ＶＶＯＬに対応したプールの総サイズ）｝×１００（％）の値が、ライト先ＶＶＯＬに対応したプールについての第一の閾値３５２２８を超えているか否かを基に、行うことができる。Ｓ１６０４の判断の結果が肯定的の場合（Ｓ１６０４：ＹＥＳ）、Ｉ／Ｏプログラム３５０５は、ホスト計算機１０及び／又は管理計算機２０に、警告を出す（Ｓ１６０５）。
【０１４６】
Ｓ１６０４：ＮＯ、Ｓ１６０５或いはＳ１６１３の後、Ｉ／Ｏプログラム３５０５は、Ｓ１６０３又はＳ１６１３で選択された実ページをライト先仮想ページに割り当てる（Ｓ１６０６）。Ｉ／Ｏプログラム３５０５は、割り当てた実ページに、キャッシュメモリ３２に記憶されているライト対象のデータユニットを書き込む。Ｉ／Ｏプログラム３５０５は、その割り当てた実ページに対応したＰＳＣＢを、その実ページの基になっているＲＧに対応した割り当て済みキューに移動する（Ｓ１６０８）。
【０１４７】
図１７は、リード処理の流れを示す。
【０１４８】
Ｉ／Ｏプログラム３５０５は、リード要求を受けた場合、ＣＭヒットしたか否か、すなわち、リード対象のデータがキャッシュメモリ３２に存在するか否かの判断を行う（Ｓ１７０１）。
【０１４９】
Ｓ１７０１の判断の結果が肯定的の場合（Ｓ１７０１：ＹＥＳ）、Ｉ／Ｏプログラム３５０５は、キャッシュメモリ３２からデータを読み出し（Ｓ１７０６）、そのデータをホスト計算機１０に送信する（Ｓ１７０７）。
【０１５０】
Ｓ１７０１の判断の結果が否定的の場合（Ｓ１７０１：ＮＯ）、Ｉ／Ｏプログラム３５０５は、リード要求から特定されるリード元仮想ページに割り当てられている実ページが、デフォルトページか否かの判断を行う（Ｓ１７０２）。
【０１５１】
Ｓ１７０２の判断の結果が肯定的の場合（Ｓ１７０２：ＹＥＳ）、Ｉ／Ｏプログラム３５０５は、リード元仮想ページに割り当てられている割り当て済みページからデータを読み出す（Ｓ１７０３）。
【０１５２】
Ｓ１７０２の判断の結果が否定的の場合（Ｓ１７０２：ＮＯ）、Ｉ／Ｏプログラム３５０５は、リード元仮想ページに割り当てられているデフォルトページからデータを読み出す（Ｓ１７０４）。
【０１５３】
Ｉ／Ｏプログラム３５０５は、Ｓ１７０３又はＳ１７０４で読み出されたデータをキャッシュメモリ３２に書き込む（Ｓ１７０５）。
【０１５４】
その後、Ｉ／Ｏプログラム３５０５は、Ｓ１７０５で書込んだデータをキャッシュメモリ３２から読み出し（Ｓ１７０６）、そのデータをホスト計算機１０に送信する（Ｓ１７０７）。
【０１５５】
図１８は、障害対処処理の流れを示す。
【０１５６】
或るＰＤＥＶの障害が検出された場合（Ｓ１８００：ＹＥＳ）、リビルド制御プログラム５００１が、そのＰＤＥＶを有する障害ＲＧの状態を縮退状態に変更する（Ｓ１８０１）。そして、リビルド制御プログラム５００１は、その障害ＲＧが、プール６０に定義済みのＲＧであるか否かの判断を行う（Ｓ１８０２）。この判断は、例えば、各ＲＧに関する情報が記述されているテーブル（図示せず）を基に、行うことができる。
【０１５７】
Ｓ１８０２の判断の結果が否定的の場合（Ｓ１８０２：ＮＯ）、リビルド制御プログラム５００１は、その障害ＲＧについて、コレクションコピーを行う（Ｓ１８１４）。具体的には、例えば、図１Ｂを参照して説明したように、リビルド制御プログラム５００１は、障害が検出されたＰＤＥＶ内のデータを、障害ＲＧにおける他のＰＤＥＶ内のデータを基に復元し、復元したデータを、スペアのＰＤＥＶに書き込む。スペアのＰＤＥＶがＲＧのメンバーのＰＤＥＶとすることで、障害ＲＧが回復されても良い。
【０１５８】
一方、Ｓ１８０２の判断の結果が肯定的の場合（Ｓ１８０２：ＹＥＳ）、リビルド制御プログラム５００１は、障害ＲＧの状態を、縮退状態から障害状態へ変更する（Ｓ１８０３）。そして、リビルド制御プログラム５００１は、障害ＲＧに対応した割り当て済みキュー１４０１Ａを、障害ＲＧに対応した障害キューに移動し、且つ、障害ＲＧに対応したフリーキュー１４０１Ｆを、障害ＲＧに対応した障害キューに移動する（Ｓ１８０４）。
【０１５９】
リビルド制御プログラム５００１は、条件Ａが満たされているか否かの判断を行う（Ｓ１８０５）。条件Ａは、「障害ＲＧ以外の全ての別のＲＧが基になっている複数の実ページに、障害ＲＧが基になっている割り当て済みページの数以上のリザーブページが含まれていること」である。例えば、障害ＲＧに対応した障害キューにおける、割り当て済みページに対応したＰＳＣＢの数以上に、障害ＲＧ以外の全ての別のＲＧ（同じプールの基になっているＲＧ）に対応したフリーキューにＰＳＣＢがあれば、Ｓ１８０５の判断の結果は肯定的となる。
【０１６０】
Ｓ１８０５の判断の結果が肯定的であれば（Ｓ１８０５：ＹＥＳ）、Ｓ１８０９乃至Ｓ１８１３で構成されるリビルド処理が行われる。
【０１６１】
一方、Ｓ１８０５の判断の結果が否定的であれば（Ｓ１８０５：ＮＯ）、Ｓ１８０６の判断、すなわち、条件Ｂが満たされているか否かの判断が行われる（Ｓ１８０６）。条件Ｂは、「障害ＲＧ以外の全ての別のＲＧが基になっている複数の実ページに、障害ＲＧが基になっている割り当て済みページの数以上の、リビルド処理においてコピー先となることが可能な未割当てページが含まれている」ことである。例えば、｛（障害ＲＧ以外のＲＧが基になっている割り当て済みページの総量）／（障害ＲＧ以外のＲＧが基になっている、コピー先となれる未割当てページの総量）｝×１００（％）の値が、障害ＲＧに関わるプールに対応した第二の閾値３５２２９を超えていれば、Ｓ１８０６の判断の結果は否定的となる。なお、上記計算を行うことに代えて、障害ＲＧ以外の全ての別のＲＧ（同じプールの基になっているＲＧ）に対応したフリーキューやリザーブキューにおけるＰＳＣＢの数が、障害ＲＧに対応した障害キューにおける、割り当て済みページに対応したＰＳＣＢの数未満であれば、Ｓ１８０６の判断の結果は否定的とされても良い。
【０１６２】
Ｓ１８０６の判断の結果が肯定的であれば（Ｓ１８０６：ＹＥＳ）、Ｓ１８０９乃至Ｓ１８１３で構成されるリビルド処理が行われる。
【０１６３】
一方、Ｓ１８０６の判断の結果が否定的であれば（Ｓ１８０６：ＮＯ）、リビルド制御プログラム５００１は、プール６０の容量を拡張可能か否かの判断を行う（Ｓ１８０７）。この判断は、例えば、ＲＧの増設が可能か否か等を基に、行うことができる。Ｓ１８０７の判断の結果が肯定的であれば（Ｓ１８０７：ＹＥＳ）、管理計算機２０からの指示に従ってプール６０にプールＶＯＬが追加された後に（Ｓ１８０８）、再びＳ１８０６の判断が行われる。Ｓ１８０７の判断の結果が否定的であれば（Ｓ１８０７：ＮＯ）、障害ＲＧについてコレクションコピーが行われる（Ｓ１８１４）。
【０１６４】
リビルド処理では、Ｓ１８０９のコピー元決定処理と、Ｓ１８１０のコピー先決定処理と、Ｓ１８１１のコピーと、Ｓ１８１２のキュー更新とが、障害ＲＧに基づく全ての割り当て済みページについて行われる（Ｓ１８１３）。
【０１６５】
Ｓ１８０９のコピー元決定処理では、コピー元の記憶領域が決定される。
【０１６６】
Ｓ１８１０のコピー先決定処理では、コピー先の実ページが決定される。
【０１６７】
Ｓ１８１１のコピーでは、Ｓ１８０９で決定されたコピー元記憶領域に記憶されているデータが、Ｓ１８１０で決定されたコピー先実ページにコピーされる。具体的には、例えば、リビルド制御プログラム５００１は、コピー元記憶領域からデータを読み出してキャッシュメモリ３２に書込み、そのデータを、キャッシュメモリ３２から読み出してコピー先実ページに書き込む。キャッシュメモリ３２に書き込まれたデータは、リビルド制御プログラム５００１によってキャッシュメモリ３２上で複製され、複製されたデータが、コピー先実ページに書き込まれても良い。
【０１６８】
Ｓ１８１２のキュー更新では、リビルド制御プログラム５００１は、以下の処理（１８１２−１）及び（１８１２−２）、
（１８１２−１）コピー先実ページに対応したＰＳＣＢを、その実ページの基になっているＲＧに対応したリザーブキュー（又はフリーキュー）から、そのＲＧに対応した割り当て済みキューに移動する；
（１８１２−２）コピー元記憶領域に対応した仮想ページについてのエントリ３５２３２（図１３参照）におけるポインタ３５２３４を、障害ＲＧに基づく割り当て済みページに対応するＰＳＣＢを表す情報から、コピー先の実ページに対応するＰＳＣＢを表す情報に変更する；
を行う。
【０１６９】
リビルド制御プログラム５００１は、障害ＲＧに基づく実ページが割り当てられている全ての仮想ページについて、Ｓ１８０９乃至Ｓ１８１１を行ったか否かを判断する（Ｓ１８１３）。その判断の結果が否定的であればＳ１８０９が再度行われ（Ｓ１８１３：ＮＯ）、その判断の結果が肯定的であれば（Ｓ１８１３：ＹＥＳ）、この障害対処処理が終了する。
【０１７０】
なお、図１８の例では、障害ＲＧに基づく実ページが割り当てられている仮想ページ毎に、Ｓ１８０９乃至Ｓ１８１２がループするが、それに代えて、障害ＲＧに基づく実ページが割り当てられている全ての仮想ページについて、Ｓ１８０９及びＳ１８１０が行われ、その後で、全てのコピー元記憶領域から全てのコピー先実ページに一斉にＳ１８１１のコピーが行われても良い。
【０１７１】
図１９は、コピー元決定処理の流れを示す。
【０１７２】
リビルド制御プログラム５００１は、障害ＲＧに基づく割り当て済みページのうち、未だこの処理で選択されていないいずれかの割り当て済みページを選択する（Ｓ１９０１）。
【０１７３】
次に、リビルド制御プログラム５００１は、ＶＶＯＬとボリュームペアを構成するセカンダリボリュームがあるか否かの判断を行う（Ｓ１９０２）。この判断は、例えば、どの論理ボリュームとどの論理ボリュームとでボリュームペアが構成されているか等に関する情報が記述されているテーブル（図示せず）を基に、行うことができる。なお、セカンダリボリュームとは、コピー先の論理ボリュームである。セカンダリボリュームは、ＶＶＯＬを構成する複数の仮想ページにそれぞれ対応する複数の記憶領域（以下、「セカンダリページ」と言う）を有する。セカンダリページと仮想ページは例えば１対１で対応する。セカンダリボリュームの記憶容量は、ＶＶＯＬの記憶容量以上である。
【０１７４】
Ｓ１９０２の判断の結果が肯定的の場合（Ｓ１９０２：ＹＥＳ）、リビルド制御プログラム５００１は、セカンダリボリュームは縮退状態か否かを判断する（Ｓ１９０３）。この判断は、例えば、各論理ボリュームに関する情報が記述されているテーブル（図示せず）を基に、行うことができる。例えば、いずれかのＲＧの状態が縮退状態の場合、そのＲＧが基になっている論理ボリュームの状態が縮退状態とされる。
【０１７５】
Ｓ１９０３の判断の結果が否定的の場合（Ｓ１９０３：ＮＯ）、リビルド制御プログラム５００１は、セカンダリボリュームにかかっている負荷が高負荷か否かを判断する（Ｓ１９０４）。この判断は、例えば、各論理ボリュームに関する情報が記述されているテーブル（図示せず）を基に、行うことができる。例えば、そのテーブルに記述されている、セカンダリボリュームのＩ／Ｏ頻度（所定時間当たりのＩ／Ｏ回数）が、或るＩ／Ｏ頻度閾値を超えていれば、高負荷と判断される。
【０１７６】
Ｓ１９０４の判断の結果が否定的の場合（Ｓ１９０４：ＮＯ）、リビルド制御プログラム５００１は、コピー元記憶領域を、Ｓ１９０１で選択された割り当て済みページが割り当てられている仮想ページに対応するセカンダリページに決定する（Ｓ１９０５）。すなわち、ＶＶＯＬとペアを構成するセカンダリボリュームがあり、そのセカンダリボリュームが縮退状態ではなく且つ高負荷でない場合に、Ｓ１９０１で選択された割り当て済みページが割り当てられている仮想ページに対応するセカンダリページが、コピー元記憶領域となる。
【０１７７】
一方、Ｓ１９０２の判断の結果が否定的の場合（Ｓ１９０２：ＮＯ）、Ｓ１９０３の判断の結果が肯定的の場合（Ｓ１９０３：ＹＥＳ）、又は、Ｓ１９０４の判断の結果が肯定的の場合（Ｓ１９０４：ＹＥＳ）、リビルド制御プログラム５００１は、コピー元記憶領域を、Ｓ１９０１で選択された割り当て済みページに決定する（Ｓ１９０６）。すなわち、ＶＶＯＬとペアを構成するセカンダリボリュームが無い、セカンダリボリュームがあってもそのセカンダリボリュームは縮退状態ではない又はそのセカンダリボリュームは高負荷である場合に、Ｓ１９０１で選択された割り当て済みページが、コピー元記憶領域となる。
【０１７８】
図２０は、コピー先決定処理の流れを示す。
【０１７９】
リビルド制御プログラム５００１は、障害ＲＧ以外のＲＧに基づく未割当てページを選択する（Ｓ２００１）。ここで選択される未割当てページは、原則、リザーブページであり、もしリザーブページが無ければ、コピー先の実ページとすることが可能なフリーページ（例えば、コピー先となることが可能なことを意味するフラグが含んだＰＳＣＢに対応するフリーページ）である。また、その選択される未割当てページは、原則、直前のコピー先決定処理で決定したページの基になっているＲＧとは異なるＲＧに基づくページである。コピー先を一つのＲＧに集中させないためである。未割当てページは、ＶＶＯＬに対応するプール内から選択される。
【０１８０】
リビルド制御プログラム５００１は、Ｓ２００１で選択した未割当てページの基になっているＲＧは正常か否かを判断する（Ｓ２００２）。
【０１８１】
Ｓ２００２の判断の結果が否定的の場合（Ｓ２００２：ＮＯ）、リビルド制御プログラム５００１は、Ｓ２００１で選択した未割当てページの基になっているＲＧとは別のＲＧが基になっている未割当てページを選択する（Ｓ２００３）。その後、再び、Ｓ２００２の判断が行われる。
【０１８２】
Ｓ２００２の判断の結果が肯定的の場合（Ｓ２００２：ＹＥＳ）、リビルド制御プログラム５００１は、Ｓ２００１（又はＳ２００３）で選択した未割当てページをコピー先の実ページとして決定する（Ｓ２００４）。
【０１８３】
以上のようにしてコピー元記憶領域及びコピー先実ページが決定された後、コピーが行われる。
【０１８４】
例えば、図２１に示すように、セカンダリボリュームがＶＶＯＬ（以下、Ｓ−ＶＶＯＬ）であり、そのＶＶＯＬとペアを構成するプライマリのＶＶＯＬ（以下、Ｐ−ＶＶＯＬ）内の仮想ページ＃００及び＃０３についてのコピー元記憶領域がセカンダリページ（仮想ページ）＃１０及び＃１３の場合、以下のようなコピーが行われる。すなわち、Ｓ−ＶＶＯＬに対応した、Ｐ−ＶＶＯＬに対応したプール＃０とは別のプール＃１から、セカンダリページ＃１０及び＃１３に割り当てられている割り当て済みページ＃５２及び＃４５が特定され、特定された割り当て済みページ＃５２及び＃４５から、Ｐ−ＶＶＯＬに対応したプール＃０内のリザーブページ（コピー先実ページ）＃１６及び＃１７に、データがコピーされる。
【０１８５】
また、例えば、図２２に示すように、セカンダリボリュームがＲＶＯＬ（以下、Ｓ−ＲＶＯＬ）であり、そのＲＶＯＬとペアを構成するプライマリのＶＶＯＬ（以下、Ｐ−ＶＶＯＬ）内の仮想ページ＃０２及び＃０３についてのコピー元記憶領域がセカンダリページ＃２２及び＃２３の場合、以下のようなコピーが行われる。すなわち、セカンダリページ＃２２及び＃２３から、Ｐ−ＶＶＯＬに対応したプール内のリザーブページ（コピー先実ページ）＃１７及び＃１６に、データがコピーされる。
【０１８６】
図２１及び図２２によれば、セカンダリボリュームとＰ−ＶＶＯＬに割り当て済みの実ページとから並行してデータが読み出され、それぞれ読み出されたデータがコピー先の未割当てページにコピーされる。コピー先の未割当てページは、Ｐ−ＶＶＯＬに対応したプール内のリザーブページであり（フリーページであっても良い）、障害ＲＧとは別のＲＧに基づく実ページである。
【０１８７】
また、図２０を参照して説明したコピー元決定処理によれば、コピー先の未割当てページは、一つのＲＧに基づく二以上の実ページから選択されるのではなく、障害ＲＧ以外の複数のＲＧに基づく複数の実ページ群から均等に選択される。
【０１８８】
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１８９】
例えば、リビルド制御プログラム５００１は、リビルド処理によって減ったリザーブページの数に基づく数の、障害ＲＧとは別の一以上のＲＧに基づくフリーページを、リザーブページに変更しても良い。例えば、リザーブページが減る都度に、いずれかのフリーページがリザーブページとされても良い。或いは、幾つのフリーページをリザーブページに変更するかは、障害ＲＧ以外のＲＧに基づく、プール内のフリーページの数に応じて決定されて良い。
【０１９０】
或いは、例えば、前述した通り、リビルド制御プログラム５００１は、リビルド処理の完了後に、戻し処理を行っても良い。すなわち、リビルド制御プログラム５００１は、コピーされたデータを、コピー先の実ページ（戻し元の実ページ）から、回復したＲＧに基づくいずれかの未割当ての実ページ（戻し先の実ページ）に戻すことと、戻し元の実ページに割り当てられている仮想ページに、戻し先の実ページを割り当てることを行っても良い。
【図１Ａ】
0005199465.tif 000002
【図１Ｂ】
0005199465.tif 000003
【図２】
0005199465.tif 000004
【図３】
0005199465.tif 000005
【図４】
0005199465.tif 000006
【図５】
0005199465.tif 000007
【図６】
0005199465.tif 000008
【図７】
0005199465.tif 000009
【図８】
0005199465.tif 000010
【図９】
0005199465.tif 000011
【図１０】
0005199465.tif 000012
【図１１】
0005199465.tif 000013
【図１２】
0005199465.tif 000014
【図１３】
0005199465.tif 000015
【図１４】
0005199465.tif 000016
【図１５】
0005199465.tif 000017
【図１６】
0005199465.tif 000018
【図１７】
0005199465.tif 000019
【図１８】
0005199465.tif 000020
【図１９】
0005199465.tif 000021
【図２０】
0005199465.tif 000022
【図２１】
0005199465.tif 000023
【図２２】
0005199465.tif 000024