(57)【特許請求の範囲】
【請求項１】
記憶ドライブの故障により消失したデータを復元する装置であって、
メモリと、
前記メモリに格納されているプログラムに従って動作するプロセッサと、を含み、
前記プロセッサは、
故障した第１の記憶ドライブの第１の論理領域を選択し、
前記第１の論理領域を含み、異なる記憶ドライブの論理領域ブロックからなり、消失した内部データを復元可能な冗長構成を有するデータセットを格納する、第１の論理領域ラインを特定し、
前記第１の論理領域ラインから、前記第１の論理領域のデータを復元するためにアクセスする１以上の第２の論理領域を選択し、
前記１以上の第２の論理領域をそれぞれ提供する１以上の第２の記憶ドライブのそれぞれに対して、
前記第２の論理領域を指定して、有効なデータが格納されているかを問い合わせるデータ格納情報要求を発行し、
前記データ格納情報要求に対して有効なデータが格納されていることを示す応答が返された場合に、前記第２の論理領域を指定したリード要求を発行し、
前記データ格納情報要求に対して、有効なデータが格納されていないことを示す応答が返された場合に、リード要求を省略し、
前記１以上の第２の記憶ドライブから読み出したデータを使用して、前記第１の論理領域のデータを復元し、
前記データ格納情報要求の発行対象の記憶ドライブの充填率が閾値より小さい場合に、前記データ格納情報要求を発行し、
前記充填率は、前記発行対象の記憶ドライブが提供する論理アドレス空間から割り当て済みの領域において、有効データが物理記憶領域に格納されている領域の割合を示す、装置。
【請求項２】
請求項１に記載の装置であって、
前記プロセッサは、
前記第１の記憶ドライブの論理アドレス領域から所定サイズの対象領域を順次選択し、
順次選択された対象領域のデータを復元して、１以上の他の記憶ドライブに格納し、
前記順次選択された対象領域の少なくとも一部の対象領域のデータの復元において、
前記対象領域を含み、異なる記憶ドライブの論理領域ブロックからなり、消失した内部データを復元可能な冗長構成を有するデータセットを格納する、対象論理領域ラインを特定し、
前記対象論理領域ラインから、前記対象領域のデータを復元するためにアクセスする１以上のアクセス先論理領域を選択し、
前記１以上のアクセス先論理領域をそれぞれ提供する１以上のアクセス先記憶ドライブそれぞれに対して、
前記アクセス先論理領域を指定して有効なデータが格納されているかを問い合わせるデータ格納情報要求を発行し、
前記データ格納情報要求に対して有効なデータが格納されていることを示す応答が返された場合に、前記アクセス先論理領域を指定したリード要求を発行し、
前記データ格納情報要求に対して有効なデータが格納されていないことを示す応答が返された場合に、リード要求を省略し、
前記１以上のアクセス先記憶ドライブから読み出したデータを使用して、前記対象領域のデータを復元する、装置。
【請求項３】
請求項２に記載の装置であって、
前記プロセッサは、前記第１の記憶ドライブの論理アドレス領域において、ボリュームに割り当てられていない論理領域のデータの復元をスキップする、装置。
【請求項４】
請求項１に記載の装置であって、
前記第１の論理領域は、ホスト計算機から受信したリード要求のアクセス先であり、
前記プロセッサは、復元した前記第１の論理領域のデータを前記ホスト計算機に返す、装置。
【請求項５】
請求項１に記載の装置であって、
前記プロセッサは、ホスト計算機から受信した、ボリュームにおける特定領域の領域解放要求に応答して、前記特定領域に割り当てられている論理領域を有する記憶ドライブに、前記割り当てられている論理領域を指定した領域解放要求を発行する、装置。
【請求項６】
請求項１に記載の装置であって、
前記プロセッサは、
前記データ格納情報要求の発行対象の記憶ドライブが前記データ格納情報要求をサポートしているか判定し、
前記発行対象の記憶ドライブが前記データ格納情報要求をサポートしていない場合、前記発行対象の記憶ドライブにリード要求を発行する、装置。
【請求項７】
請求項１に記載の装置であって、
前記プロセッサは、第１ボリュームから第２ボリュームへのデータコピーにおいて、
前記第１ボリュームから対象領域を順次選択し、
前記順次選択される対象領域の少なくとも一部の対象領域のデータの読み出しにおいて、
前記対象領域を提供する記憶ドライブ対して、
前記対象領域を指定して有効なデータが格納されているかを問い合わせるデータ格納情報要求を発行し、
前記データ格納情報要求に対して有効なデータが格納されていることを示す応答が返された場合に、前記対象領域を指定したリード要求を発行し、
前記データ格納情報要求に対して有効なデータが格納されていないことを示す応答が返された場合に、リード要求を省略する、装置。
【請求項８】
記憶ドライブの故障により消失したデータを復元する方法であって、
故障した第１の記憶ドライブの第１の論理領域を選択し、
前記第１の論理領域を含み、異なる記憶ドライブの論理領域ブロックからなり、消失した内部データを復元可能な冗長構成を有するデータセットを格納する、第１の論理領域ラインを特定し、
前記第１の論理領域ラインから、前記第１の論理領域のデータを復元するためにアクセスする１以上の第２の論理領域を選択し、
前記１以上の第２の論理領域をそれぞれ提供する１以上の第２の記憶ドライブのそれぞれに対して、
前記第２の論理領域を指定して、有効なデータが格納されているかを問い合わせるデータ格納情報要求を発行し、
前記データ格納情報要求に対して有効なデータが格納されていることを示す応答が返された場合に、前記第２の論理領域を指定したリード要求を発行し、
前記データ格納情報要求に対して、有効なデータが格納されていないことを示す応答が返された場合に、リード要求を省略し、
前記１以上の第２の記憶ドライブから読み出したデータを使用して、前記第１の論理領域のデータを復元し、
前記データ格納情報要求の発行対象の記憶ドライブの充填率が閾値より小さい場合に、前記データ格納情報要求を発行し、前記充填率は、前記発行対象の記憶ドライブが提供する論理アドレス空間から割り当て済みの領域において、有効データが物理記憶領域に格納されている領域の割合を示す、ことを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶ドライブの故障により消失したデータを復元する装置に関する。
【背景技術】
【０００２】
装置コスト削減のため、記憶ドライブに対するビットコスト削減の要求が続いている。この要求を実現するために、記憶ドライブ１台当たりのデータ集約度が増加していく、即ち記憶ドライブ当たりの容量が増加していくと予想される。それに伴い、記憶ドライブ故障時のリビルド時間が長大化する。リビルドは、障害ドライブのデータを、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）グループを構成している他の正常な複数のドライブから生成し、スペアドライブに格納することで、正常なＲＡＩＤ構成を再構成する。【０００３】
例えば、特開２００９−１１６７８３号公報は、物理記憶デバイスが故障したことによる信頼性の低い状態が続く時間を短縮する技術を開示する。より具体的には、特開２００９−１１６７８３号公報は、以下の事項を開示する。【０００４】
「動的に容量が拡張される仮想ボリュームに関し、どの仮想領域にどの実領域が割り当てられているかを表すマッピング情報が保持される。また、どの実領域がどの仮想領域に割り当てられているかを表す実領域管理情報が保持される。或る物理記憶デバイスで障害が生じたことにより信頼性の低下した実領域であって、その或る物理記憶デバイスを備えるＲＡＩＤグループに属する低信頼実領域が、仮想領域に割り当てられているか否かを、実領域管理情報を参照することにより判断する。仮想領域に割り当てられていない低信頼実領域については、データのリストア処理を行わず、割り当てられている低信頼実領域について、データのリストア処理を行う。」（要約）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１１６７８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、上記従来技術は、仮想ボリュームへの実記憶領域の割り当て単位であるページ毎に、消失データを復元する。上記従来技術は、ページ内の全領域に有効なデータが格納されているとの前提において、０データを含むページ内の全データを読み出し、消失データを復元する。【０００７】
しかし、ページ内には、有効データが格納されていない領域も存在し得る。領域に有効データが格納されていない、つまり０データが格納されている場合、その領域のデータは、消失データを復元する際の排他的論理和演算の結果に影響を与えない。０データの不要な演算処理により、消失データの復元時間及びリビルド時間が増加する。従って、消失データをより効率的に復元することができる技術が望まれる。
【課題を解決するための手段】
【０００８】
本開示の代表的な一例は、記憶ドライブの故障により消失したデータを復元する装置であって、メモリと、前記メモリに格納されているプログラムに従って動作するプロセッサと、を含み、前記プロセッサは、故障した第１の記憶ドライブの第１の論理領域を選択し、前記第１の論理領域を含み、異なる記憶ドライブの論理領域ブロックからなり、消失した内部データを復元可能な冗長構成を有するデータセットを格納する、第１の論理領域ラインを特定し、前記第１の論理領域ラインから、前記第１の論理領域のデータを復元するためにアクセスする１以上の第２の論理領域を選択し、前記１以上の第２の論理領域をそれぞれ提供する１以上の第２の記憶ドライブのそれぞれに対して、前記第２の論理領域を指定して、有効なデータが格納されているかを問い合わせるデータ格納情報要求を発行し、前記データ格納情報要求に対して有効なデータが格納されていることを示す応答が返された場合に、前記第２の論理領域を指定したリード要求を発行し、前記データ格納情報要求に対して、有効なデータが格納されていないことを示す応答が返された場合に、リード要求を省略し、前記１以上の第２の記憶ドライブから読み出したデータを使用して、前記第１の論理領域のデータを復元する。
【発明の効果】
【０００９】
本発明の一例によれば、消失データの復元を効率化することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例の概要を示す。
【図２】実施例１に係る計算機システムの構成を示す。
【図３Ａ】実施例１に係る、論理ボリューム（仮想ボリューム）、仮想ページ、実ページ、ＲＡＩＤグループの関係を示す。
【図３Ｂ】実施例１に係る記憶ドライブの論理セグメント及び物理セグメントの構成例を示す。
【図４】実施例１に係るドライブ構成管理情報の構成例を示す。
【図５Ａ】実施例１に係るホスト計算機からのリード要求に対する処理のフローチャートを示す。
【図５Ｂ】実施例１に係る図５Ａにおけるステージングの詳細のフローチャートを示す。
【図６】実施例１に係るホスト計算機からのライト要求に対する処理のフローチャートを示す。
【図７】実施例１に係るホスト計算機からの領域解放要求に対する処理のフローチャートを示す。
【図８】実施例１に係る記憶ドライブの故障に対するリビルド処理のフローチャートを示す。
【図９】実施例２に係るページ割り当て管理情報の構成例を示す。
【図１０】実施例２に係るリビルド処理のフローチャートを示す。
【図１１】実施例３に係るボリューム構成を示す。
【図１２】実施例３に係る計算機システムの構成を示す。
【図１３】実施例３に係るコピー制御プログラムによる形成コピー処理のフローチャートを示す。
【図１４】実施例３に係るリモートコピーペアの構成例を示す。
【発明を実施するための形態】
【００１１】
以下、本発明のいくつかの実施例を、図面を用いて説明する。なお、これらの実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
【００１２】
以下において、記憶ドライブ（記憶デバイス又はドライブとも呼ぶ）の故障に起因する消失データの回復を開示する。図１は、実施例の概要を示す。ストレージ装置１００は、コントローラ１１０と、記憶ドライブ１２１Ａ〜１２１Ｄ、１２１Ｓを含む。記憶ドライブ１２１Ａ〜１２１Ｄは、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）グループを構成する。記憶ドライブ１２１Ｓはスペアドライブである。記憶ドライブ１２１Ａ〜１２１Ｄ、１２１Ｓは、例えば、フラッシュメモリを含むフラッシュドライブである。
【００１３】
ＲＡＩＤグループを構成する記憶ドライブ１２１Ａ〜１２１Ｄそれぞれの論理アドレス空間は、ストライプブロックと呼ばれる複数の固定サイズ（例えば２５６ＫＢ）の記憶領域１３１に分割して管理される。ストライプブロック１３１は、ホスト計算機から書き込まれるホストデータ又は０でデータが格納されるデータストライプブロック、若しくは、冗長データ又は０データが格納されるパリティストライプブロックである。
【００１４】
パリティストライプブロックと、当該パリティストライプブロックに格納される冗長データを生成するために用いられるデータストライプブロックとは、ストライプライン１３０を構成する。ストライプラインは論理領域ラインであって、ストライプラインに格納されるデータセットは、冗長構成を有し、一部の内部データが消失した場合に、他の内部データから消失データを復元できる。
【００１５】
図１において、記憶ドライブ１２１Ａが故障し、記憶ドライブ１２１Ａに格納されているデータが消失している。コントローラ１１０は、ＲＡＩＤグループ内の他の記憶ドライブ１２１Ｂ〜１２１Ｄから収集したデータから、消失データを復元し、復元した消失データをスペアドライブ１２１Ｓに格納する（コレクションコピー）。なお、消失データを複数のスペアドライブに分散して格納してもよい。
【００１６】
消失データは、収集したデータの排他的論理和演算により復元される。従って、消失データの復元のために、０データを読み出す必要はない。コントローラ１１０は、消失データの復元において、復元のために必要な有効データ（ホストデータ又はパリティデータ）を格納している記憶ドライブのみからデータを読み出し、消失データを復元する。有効データは、０データ以外のデータである。
【００１７】
例えば、コントローラ１１０は、記憶ドライブ１２１Ａのストライプブロック１３１に格納されていた消失データの復元において、対応のストライプライン１３０を構成する他のストライプブロック１３１のうち、有効データを格納するストライプブロックのみからデータを読み出す。
【００１８】
コントローラ１１０は、記憶ドライブに対して、データ格納情報要求を発行することで、指定した論理アドレスに有効データが格納されているか、確認する。データ格納情報要求を受けた記憶ドライブは、指定された論理アドレスに有効データが格納されているかを示す応答を、返す。データ格納情報要求の例は、ＳＣＳＩコマンドにおけるＧＥＴ  ＬＢＡ  ＳＴＡＴＵＳコマンドである。
【００１９】
記憶ドライブは、データ格納情報要求に対して、例えば、指定された論理アドレス領域に、記憶ドライブの物理領域がマッピングされている領域を通知することが可能である。物理領域がマッピングされている場合、その論理アドレス領域は有効データを格納しており、マッピングされていなければ、その論理アドレス領域は０データを格納している。
【００２０】
０データを格納する領域からのデータの読み出しを省略することで、データアクセスに伴う、ドライブ負荷及びストレージ装置内部のネットワーク帯域消費を、低減することができる。その結果、消失データの復元及びリビルドが高速化されると共に、処理負荷が低減される。
【実施例１】
【００２１】
図２は、実施例１に係る計算機システムの構成を示す。計算機システムは、ストレージ装置１００と、１以上のホスト計算機５００と、を含む。ホスト計算機５００は、例えば、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介して、ストレージ装置１００に接続される。【００２２】
ストレージ装置１００は、複数のコントローラ１１０Ａ、１１０Ｂと、複数の記憶ドライブ１２１Ａ〜１２１Ｄ、１２１Ｓとを含む。コントローラの数は一つでもよい。記憶ドライブ１２１Ａ〜１２１Ｄ、１２１Ｓは、例えば、フラッシュメモリを含むフラッシュメモリストレージドライブである。記憶ドライブ１２１Ａ〜１２１Ｄ、１２１Ｓは、他のタイプの記憶ドライブでもよい。【００２３】
コントローラ１１０は例えば、複数の記憶ドライブをＲＡＩＤグループとして制御する。コントローラ１１０は、コントローラ１１０Ａ、１１０Ｂの内の任意の一方を示す。コントローラ１１０は、プロセッサ１１１、メモリ１１２、チャネルＩＦ（Ｉｎｔｅｒｆａｃｅ）１２１、ストレージＩＦ１２２、を含む。【００２４】
コントローラ１１０内の各部は、バスを介して接続される。メモリ１１２は、ストレージ装置１００を制御するためのプログラム及び情報を格納する領域並びにデータを一時的に格納するキャッシュ領域２１１を含む。図２において、構成情報２１２、Ｉ／Ｏ制御プログラム２１３、ドライブ制御プログラム２１４、リビルド制御プログラム２１５が、メモリ１１２に格納されている。【００２５】
構成情報２１２は、ストレージ装置１００の論理構成及び物理構成についての情報を含み、例えば、ホスト計算機５００に提供されるボリューム、ボリュームの仮想ページに割り当てられる実ページ（ページについては後述）、キャッシュ領域、記憶ドライブ、ＲＡＩＤグループ等についての情報を含む。【００２６】
Ｉ／Ｏ制御プログラム２１３は、ホスト計算機５００からのＩ／Ｏ要求を処理する。ドライブ制御プログラム２１４は、記憶ドライブを制御する。リビルド制御プログラム２１５は、記憶ドライブの障害発生時にリビルド処理を実行する。【００２７】
プロセッサ１１１は、メモリ１１２に格納されたプログラムに従ってストレージ装置１００を制御する。プロセッサ１１１は、プログラムに従って、所定の機能部として動作する。従って、プログラムを主語とする説明において、その主語を、プロセッサ１１１、又は、プロセッサ１１１を含むコントローラ１１０もしくはストレージ装置１００に、代えることができる。【００２８】
チャネルＩＦ１２３は、ホスト計算機５００との通信を行うインタフェイスである。ストレージＩＦ１２２は、記憶ドライブ１２１Ａ〜１２１Ｄ、１２１Ｓとの通信を行うインタフェイスである。なお、管理者は、不図示の管理端末からストレージ装置１００の管理やメンテナンスを行う。管理者は、ストレージ装置１００の管理やメンテナンスなどを、例えば、ホスト計算機５００から行ってもよい。【００２９】
図２の計算機システムでは、ホスト計算機５００と記憶ドライブ１２１Ａ〜１２１Ｄ，１２１Ｓとが、コントローラ１１０Ａ、１１０Ｂを介して接続されている。これに代えて、例えば、コントローラ１１１０Ａ、１１０Ｂを省き、ホスト計算機５００と記憶ドライブ１２１Ａ〜１２１Ｄ，１２１Ｓとが、直接接続されてもよい。【００３０】
なお、本開示の技術は、ストライプラインが複数のドライブで構成されるシステムに適用でき、記憶ドライブとストレージコントローラとがネットワークを介して接続されるシステムに適用できる。また、２つのストライプラインを抽出した時、一部のストライプブロックが異なるドライブに属す特開２０１０−１０２６９５のような形態をとってもよい。【００３１】
本開示の技術は、例えば、ストレージ装置、及び、ハイパーコンバージドシステムに適用することができる。ハイパーコンバージドシステムは、内部にローカル記憶ドライブを含む複数サーバ（ノード）を連結してクラスタを構成する、システムである。仮想化機能を有するハイパーバイザがサーバ内で動作し、ハイパーバイザがソフトウェアで定義した、サーバ仮想マシンとストレージ仮想マシンを動作させる。【００３２】
図３Ａを用いて、論理ボリューム（仮想ボリューム）、仮想ページ、実ページ、ＲＡＩＤグループの関係について説明する。ストレージコントローラ１１０は、１以上の論理ボリュームを定義して、ホスト計算機５００に提供する。なお、これらの関係（マッピング）について情報は、構成情報２１２に含まれる。【００３３】
論理ボリュームの空間は、所定サイズ（例えば４２ＭＢ）の仮想ページを単位として分割されている。ＲＡＩＤグループ２０４の論理アドレス空間（論理記憶領域）は、所定サイズの実ページを単位として分割されている。仮想ページに対して、実ページが動的に割り当てられる。【００３４】
ストレージコントローラ１０２は、各論理ボリュームの空間を、複数の仮想ページに分割して管理する。図３Ａは、仮想ページ２０２Ａ、２０２Ｂ、２０２Ｃを例示する。本実施例において仮想ページの容量は共通とするが、ストレージ装置１００内に異なるサイズの仮想ページが存在してもよい。【００３５】
仮想ページは、ストレージコントローラ１１０内部で論理ボリューム２０１の空間の管理のために用いられる。ホスト計算機５００は、論理ボリューム２０１の記憶領域にアクセスする際、論理アドレス（例えばＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ））を用いて、アクセス対象の記憶領域を指定する。コントローラ１１０は、ホスト計算機５００が指定したＬＢＡを、仮想ページ番号及び仮想ページ内の相対アドレスに変換する。【００３６】
コントローラ１１０が論理ボリュームを定義した直後、各仮想ページに実ページは割り当てられていない。コントローラ１１０は、ホスト計算機５００から仮想ページに対するライト要求を受け付けた時点で、当該仮想ページに対して実ページを割り当てる。図３Ａにおいて、仮想ページ＃０（２０２Ａ）に実ページ２０３Ａが割り当てられている。実ページは、ＲＡＩＤグループ２０４の複数の記憶ドライブの論理記憶領域を用いて形成される。図３Ａにおいて、ＲＡＩＤグループ２０４は、ＲＡＩＤ４の３Ｄ＋１Ｐ構成を有する。【００３７】
図３Ａにおいて、記憶ドライブ１２１Ａ〜１２１ＤがＲＡＩＤグループを構成する。スペアドライブ１２１Ｓは、ＲＡＩＤグループ２０４の一つの故障時に、故障したドライブに格納されたデータを格納し、ＲＡＩＤグループ２０４に格納されたデータの冗長性を担保するための記憶ドライブである。【００３８】
ストレージコントローラ１０２は、ＲＡＩＤを構成する記憶ドライブの論理アドレス空間を、複数の固定サイズの記憶領域に分割して管理する。固定サイズの記憶領域は、ストライプブロックである。例えば、図３Ａにおいて、０（Ｄ）、１（Ｄ）、２（Ｄ）…、またはＰ０、Ｐ１…と表わされている領域が、それぞれ、ストライプブロックである。【００３９】
図３Ａで、ストライプブロックのうち、Ｐ０、Ｐ１…と表わされているストライプブロックは、ＲＡＩＤ機能により生成される冗長データ（パリティ）が格納されるパリティストライプブロックである。０（Ｄ）、１（Ｄ）、２（Ｄ）…と表わされているストライプブロックは、ホスト計算機５００から書き込まれるデータ（ホストデータ）が格納されるデータストライプブロックである。【００４０】
パリティストライプブロックは、複数のデータストライプブロックを用いて生成される冗長データを格納する。なお、ＲＡＩＤ１のパリティストライプブロックは、対応する一つのデータストライプブロックと同一データを格納する。【００４１】
ストライプラインは、パリティストライプブロックと、当該パリティストライプブロックに格納される冗長データを生成するために用いられるデータストライプブロックのセットである。図３Ａの例において、データストライプブロック０（Ｄ）、１（Ｄ）、２（Ｄ）とパリティストライプブロックＰ０は、同一のストライプラインに属する。【００４２】
図３Ａの例において、実ページ（例えば２０３Ａ、２０３Ｂ）は、１又は複数のストライプラインから構成される。実ページが仮想ページに割り当てられる場合、データストライプブロックが割り当てられ、パリティストライプブロックは割り当てられない。【００４３】
実ページの先頭ストライプラインからパリティを除いた領域が、仮想ページの先頭領域に割り当てられている。以降同様に、実ページの２番目以降の各ストライプラインからパリティを除いた領域が、順番に仮想ページの領域に割り当てられる。【００４４】
ストレージ装置１００は、ホスト計算機１０３からのアクセス要求で指定されている論理ボリューム上のアクセス位置（ＬＢＡ）から、仮想ページ番号及び仮想ページ内の相対アドレスを求める。仮想ページ内の領域と実ページ内の領域とのマッピング規則から、仮想ページ内のアクセス位置に対応付けられている記憶ドライブ及びその記憶ドライブの論理アドレス領域（データストライプブロック）を算出できる。【００４５】
なお、仮想ページ内の各領域と実ページ内の各領域とのマッピングは、システム設計に拠り変化する。容量仮想化技術は、一般に、実記憶媒体の容量よりも論理ボリュームの合計記憶容量が大きくなるように、論理ボリュームを定義する。このため、仮想ページ数のが、実ページ数より多い。【００４６】
論理ボリューム中の各仮想ページに割り当てられる実ページは、同一ＲＡＩＤグループ内の実ページに限定されない。論理ボリューム内の異なる仮想ページに割り当てられる実ページが、異なるＲＡＩＤグループ内の実ページであってもよい。仮想ページと実ページとの間のマッピングは、１又は複数のＲＡＩＤグループが提供する記憶領域からなる容量プールを介してもよい。【００４７】
次に、記憶ドライブのアドレス空間について説明する。以下において、記憶ドライブ１２１は、任意の一つの記憶ドライブを示す。記憶ドライブ１２１は、記憶ドライブの論理アドレス空間（論理ボリューム）を、上位装置であるコントローラ１１０に提供する。論理アドレス空間には、記憶ドライブ１２１内の物理記憶領域が対応付けられる。【００４８】
論理アドレス空間は、記憶ドライブ１２１で所定サイズの論理セグメントに分割して管理される。記憶ドライブ１２１は、コントローラ１１０から論理アドレス（論理アドレス領域）を指定したリード／ライト要求（Ｉ／Ｏ要求）を受信すると、論理アドレスから物理セグメントを特定し、データのリード／ライトを実行する。【００４９】
例えば、フラッシュメモリの物理記憶領域は、複数のブロックを含み、各ブロックは複数の物理セグメントを含む。ブロックはデータの消去の単位であり、物理セグメントはデータの書き込み及び読み出しの単位である。記憶ドライブ１２１は、ブロック単位でデータを消去し、物理セグメント単位でデータの書き込み及び読み出しを制御する。【００５０】
図３Ｂは、記憶ドライブ１２１の論理セグメント及び物理セグメントの構成例を示す。記憶ドライブ１２１は、論理アドレス空間１２０１を、コントローラ１１０に提供し、論理アドレス空間２５１を所定サイズ（例えば８ＫＢ）の論理セグメント２５２に分割して管理する。【００５１】
記憶ドライブ１２１は、物理ブロック２５４を、所定サイズ（例えば８ＫＢ）の物理セグメント２５３に分割して管理する。記憶ドライブ１２１は、容量仮想化機能を有する。記憶ドライブ１２１は、物理セグメント２５３を論理セグメント２５２に動的に割り当てる。【００５２】
ブロック１２０４は、所定数（例えば２５６個）の物理セグメント２５３を含んで構成される。記憶ドライブ１２１は、データの読み書きを物理セグメント単位で行い、消去をブロック単位で行う。【００５３】
記憶ドライブ１２１は、マッピング情報（論物変換情報）において、論理セグメントと物理セグメントとの間のマッピングを管理する。記憶ドライブ１２１は、空き論理セグメントへの書き込み時や、領域の割り当て要求時に、論理セグメントに空き物理セグメントを割り当て、新たなライトデータを空き物理セグメントに格納する。記憶ドライブ１２１は、マッピング情報において、新たな割り当て関係を登録する。【００５４】
記憶ドライブ１２１のマッピング情報は、例えば、各論理セグメントのエントリを有する。論理セグメントのエントリは、当該論理セグメントの論理アドレスと、当該論理セグメントに割り当てられている物理セグメントの物理アドレスと、を示す。論理セグメントに物理セグメントが割り当てられていない場合、そのエントリは、物理セグメントが未割り当てであることを示す。【００５５】
記憶ドライブ１２１は、物理セグメントの更新データを受信すると、更新データをデータが格納されていない空き物理セグメントへ書き込む。記憶ドライブ１２１は、マッピングテーブルにおいて、論理セグメントと更新前の物理セグメントの割り当て関係を、その論理セグメントと更新後の物理セグメントの割り当て関係に変更する。従って、コントローラ１１０のアクセス先論理アドレス（論理セグメント）は、不変である。【００５６】
記憶ドライブ１２１は、更新前のデータを無効データ、更新後のデータを有効データとして管理する。無効データが消去されると、無効データが格納されていたセグメントは空きセグメントとなり、データを書き込むことが可能になる。消去はブロック単位で行われる。ブロック内に有効データと無効データが混在している場合、有効データが他の空き物理セグメントにコピーされ、そのブロック内のデータが消去される（ガベッジコレクション）。【００５７】
記憶ドライブ１２１は、コントローラ１１０から論理アドレス（論理アドレス領域）を指定した問い合わせを受信すると、指定された論理アドレスについて問い合わせされた情報を返す。例えば、後述するように、データ格納情報要求を受信すると、記憶ドライブ１２１は、マッピング情報を参照し、指定された論理アドレス（論理領域）内の有効なデータが格納位置（物理領域が割り当てられている領域）を示す応答を返す。【００５８】
図４は、構成情報２１２に含まれる、ドライブ構成管理情報３００の構成例を示す。ドライブ構成管理情報３００は、各記憶ドライブの状態及び各記憶ドライブが所属するパリティグループの情報を管理する。図３は、ＲＡＩＤ５構成の例を示すが、ＲＡＩＤグループは他のＲＡＩＤタイプを有してもよい。ストレージ装置１００が、異なるタイプのＲＡＩＤグループを含む場合、ストレージ装置１００は、各パリティグループの構成を示す情報を保持する。【００５９】
ドライブ構成管理情報３００は、ドライブ番号欄３０１、ＲＡＩＤグループ欄３０２、状態欄３０３、データ充填率欄３０４を有する。ドライブ番号欄３０１は、各記憶ドライブを同定する番号を示す。ＲＡＩＤグループ欄３０２は、各記憶ドライブが属するＲＡＩＤグループの識別子を示す。スペアドライブのＲＡＩＤグループ欄３０２の値は、「ＮＵＬＬ」である。【００６０】
状態欄３０３は、各記憶ドライブの状態を示し、各記憶ドライブが正常に動作しているかを示す。コントローラ１１０は、ドライブ故障を検出した場合、状態欄３０３において、そのドライブの状態を「故障」に変更し、正常なスペアドライブを選択する。コントローラ１１０は、故障ドライブに格納されていたデータを復元し、選択したスペアドライブに格納する。【００６１】
スペアドライブに全てのデータを格納し、リビルドが終了すると、コントローラ１１０は、ＲＡＩＤグループ欄３０２において、スペアドライブの値を、リビルドしたＲＡＩＤグループの番号に変更する。さらに、コントローラ１１０は、ＲＡＩＤグループ欄３０２において、故障ドライブの値を「ＮＵＬＬ」に変更する。【００６２】
データ充填率欄３０４は、各記憶ドライブが提供する論理アドレス空間において上位装置に使用されている論理領域のうち、有効なデータ（０データ以外のデータ）が格納されている領域の割合を示す。例えば、コントローラ１１０により使用されている論理領域は、仮想ページに割り当てられている実ページである。充填率は、割り当てられている実ページに内、ホストデータ又はパリティデータを格納する領域の割合を示す。【００６３】
上述のように、仮想ページ、実ページ、及びそれらの間のマッピングは、コントローラ１１０により管理されている。コントローラ１１０は、空き実ページと、論理ボリュームに割り当て済みの実ページとを管理する。実ページは、ＲＡＩＤグループ（記憶ドライブ群）の論理アドレス空間において定義される。物理セグメントに有効なデータが格納されているかを示す情報は、記憶ドライブ１２１により管理されている。【００６４】
コントローラ１１０は、周期的に各記憶ドライブ１２１から、割り当て済み実ページにおいて有効データを格納する領域の情報を取得して、各記憶ドライブ１２１の充填率を計算、更新する。【００６５】
例えば、コントローラ１１０は、割り当て済み実ページに含まれる論理領域において、所定サイズ（例えば２５６ＫＢ）の複数領域を選択し、選択した領域を指定したデータ格納情報要求それぞれを、記憶ドライブ１２１に発行する。コントローラ１１０は、サンプリングした領域の情報から、記憶ドライブ１２１の充填率を推定する。これにより、充填率決定のための処理負荷を低減する。記憶ドライブ１２１がデータ格納情報要求をサポートしていない場合、本例において、充填率は１００％と仮定される。【００６６】
図５Ａは、ホスト計算機５００からのリード要求に対する処理のフローチャートを示す。Ｉ／Ｏ制御プログラム２１３（プロセッサ１１１）は、ホスト計算機５００からのリード要求に応答して、本処理を実行する。【００６７】
Ｉ／Ｏ制御プログラム２１３は、受け取ったリード要求で指定されたリード対象領域のアドレスから、リード対象領域に対応する仮想ページ番号及び仮想ページ内の相対アドレスを計算する。【００６８】
Ｉ／Ｏ制御プログラム２１３は、リード対象データが、キャッシュ領域２１１に格納されているか、構成情報２１２においてチェックする（Ｓ１０１）。リード対象データがキャッシュ領域２１１に格納されている場合（Ｓ１０１：ＹＥＳ）、Ｉ／Ｏ制御プログラム２１３は、当該データをホスト計算機５００に送信する（Ｓ１０４）。【００６９】
リード対象データがキャッシュ領域２１１に格納されていない場合（Ｓ１０１：ＮＯ）、Ｉ／Ｏ制御プログラム２１３は、キャッシュ領域２１１において、リード対象データを格納するためのスロットを確保する（Ｓ１０２）。Ｉ／Ｏ制御プログラム２１３は、ドライブ制御プログラム２１４を使用して、記憶ドライブ１２１からリード対象データをキャッシュ領域２１１にロードする（Ｓ１０３）。Ｉ／Ｏ制御プログラム２１３は、当該データをホスト計算機５００に送信する（Ｓ１０４）。【００７０】
図５Ｂは、図５ＡにおけるステージングＳ１０３の詳細のフローチャートを示す。ドライブ制御プログラム２１４（プロセッサ１１１）は、他のプログラムからステージング要求を受け取ると、本処理を実行する。リード要求のアクセス先のドライブが正常である場合、ドライブ制御プログラム２１４は、当該記憶ドライブからリード対象データを読み出す。リード対象ドライブが故障している場合、ドライブ制御プログラム２１４は、ＲＡＩＤグループの他の記憶ドライブから読み出したデータ（同一ストライプライン内のデータ）により、リード対象データを復元する。【００７１】
ドライブ制御プログラム２１４は、リード対象データの仮想ページ番号及び仮想ページ内相対アドレスから、構成情報２１２を参照して、リード対象データに割り当てられている実ページ番号及び実ページ内相対アドレスを同定する。ドライブ制御プログラム２１４は、さらに、実ページ番号及び実ページ内相対アドレスから、構成情報２１２を参照して、リード対象データを格納する記憶ドライブ及びその論理アドレスを同定する。【００７２】
ドライブ制御プログラム２１４は、ドライブ構成管理情報３００を参照し、又は、リード対象ドライブと通信することで、リード対象ドライブの状態をチェックする（Ｓ２５１）。記憶ドライブ１２１が正常である場合（Ｓ２５１：正常）、ドライブ制御プログラム２１４は、記憶ドライブ１２１に対して、論理アドレスを指定してリード要求を発行し、リード対象データを読み出す（Ｓ２５２）。ドライブ制御プログラム２１４は、リード対象データを、キャッシュ領域２１１に格納する。【００７３】
記憶ドライブ１２１が故障している場合（Ｓ２５１：故障）、ドライブ制御プログラム２１４は、ステップＳ２５４からＳ２５９を、対象のストライプブロックが含まれるストライプラインにおいて、消失データ復元のためにデータを読み出すことが必要な各ストライプブロックを含む各正常な記憶ドライブに対して実行する。【００７４】
ドライブ制御プログラム２１４は、ドライブ構成管理情報３００を参照して、アクセス先の記憶ドライブ（ストライプライン）を特定する。データ復元のためのデータを読み出す記憶ドライブは、ＲＡＩＤタイプによる。【００７５】
ドライブ制御プログラム２１４は、ドライブ構成管理情報３００を参照し、対象記憶ドライブの充填率と閾値とを比較する（Ｓ２５４）。閾値は。記憶ドライブに共通でも、記憶ドライブ毎に設定されてもよい。閾値は、一定でもよく、アクセス先のデータ長に応じて決定されてもよい。【００７６】
充填率が閾値より小さい場合（Ｓ２５４：ＹＥＳ）、ドライブ制御プログラム２１４は、対象記憶ドライブに、対象データの論理アドレス領域を指定して、データ格納情報要求を発行する（Ｓ２５５）。データ格納情報要求への応答が、指定アドレス領域にデータが格納されていないことを示す場合（Ｓ２５６：ＮＯ）、ドライブ制御プログラム２１４は、対象記憶ドライブについての処理を終了する。【００７７】
データ格納情報要求への応答が、指定アドレス領域にデータが格納されていることを示す場合（Ｓ２５６：ＹＥＳ）、ドライブ制御プログラム２１４は、対象データを対象記憶ドライブ１２１から読み出し（Ｓ２５７）、パリティ計算を実行する（Ｓ２５８）。パリティ計算は、読み出し済みデータとの排他的論理和演算を実行する。必要な全データのパリティ計算により、消失データが復元される。【００７８】
ステップＳ２５４において、充填率が閾値以上である場合（Ｓ２５４：ＮＯ）、ドライブ制御プログラム２１４は、データ格納情報要求を発行することなく、対象記憶ドライブ１２１から対象データを読み出す（Ｓ２５７）。なお、データ格納情報要求をサポートしていない記憶ドライブの充填率は１００％であると見做し、データ格納情報要求を発行しない。データ格納情報要求をサポートしていない記憶ドライブの充填率は、閾値以上であればよい。【００７９】
以上のように、ＲＡＩＤグループ内の他の記憶ドライブに、消失データを復元するために必要な有効データを格納しているか問い合わせることで、０データの読み出し及びパリティ計算を省略し、消失データの復元処理を効率化することができる。記憶ドライブの充填率が閾値より小さい場合、対象アドレス領域に有効データが格納されていない可能性が高い。充填率が閾値より小さい場合にデータ格納情報要求を発行することで、不要なデータ格納情報要求の発行を低減することができる。【００８０】
上記リード要求に対する処理により、記憶ドライブの故障が初めて発見されると、後述するリビルド処理が開始される。また、上記リード要求に対する処理は、リビルド中にも実行され得る。リード要求のアクセス先が復元済みである場合、アクセス先ドライブは、故障ドライブでも、コピー先のスペアドライブでもよい。【００８１】
図６は、ホスト計算機５００からのライト要求に対する処理のフローチャートを示す。Ｉ／Ｏ制御プログラム２１３（プロセッサ１１１）は、ホスト計算機５００からライト要求を受信すると、本処理を実行する。【００８２】
Ｉ／Ｏ制御プログラム２１３は、受け取ったライト要求で指定されたリード対象領域のアドレスから、ライト対象領域に対応する仮想ページ番号及び仮想ページ内の相対アドレスを計算する。Ｉ／Ｏ制御プログラム２１３は、ライト対象領域のデータが、キャッシュ領域２１１に格納されているか、構成情報２１２においてチェックする（Ｓ１５１）。【００８３】
ライト対象領域のデータが、キャッシュ領域２１１に格納されていない場合（Ｓ１５１：ＮＯ）、Ｉ／Ｏ制御プログラム２１３は、キャッシュ領域２１１において、ライト対象データを格納するためのスロットを確保する（Ｓ１５２）。Ｉ／Ｏ制御プログラム２１３は、ライト対象データを、チャネルＩ／Ｆ１２３のバッファから、キャッシュ領域２１１に格納する（Ｓ１５３）。その後、Ｉ／Ｏ制御プログラム２１３は、完了通知をホスト計算機５００に送信する（Ｓ１５４）。【００８４】
ライト対象領域のデータが、キャッシュ領域２１１に格納されている場合（Ｓ１５１：ＹＥＳ）、Ｉ／Ｏ制御プログラム２１３は、受信した更新データによって、キャッシュ領域２１１の旧データを上書きする（Ｓ１５３）。【００８５】
Ｉ／Ｏ制御プログラム２１３は、ホスト計算機５００にライト処理の完了通知を送信した後、キャッシュ領域２１１に格納されているライトデータを、記憶ドライブ１２１に格納する（デステージ）。【００８６】
Ｉ／Ｏ制御プログラム２１３は、構成情報２１２を参照し、指定され仮想ページに実ページが割り当てられているかをチェックする。実ページが割り当てられていない場合、Ｉ／Ｏ制御プログラム２１３は、ライト対象領域を含む仮想ページに空き実ページを割り当てる。【００８７】
Ｉ／Ｏ制御プログラム２１３は、ライトデータに対応するパリティデータを生成し、ライトデータ及びパリティデータを、対応する記憶ドライブ１２１それぞれに格納する。パリティデータの生成は、新ライトデータ、旧ライトデータ、旧冗長データの排他的論理和を計算する。【００８８】
ライトデータの格納先ドライブが故障している場合、Ｉ／Ｏ制御プログラム２１３は、例えば、スペアドライブにライトデータを格納する。さらに、Ｉ／Ｏ制御プログラム２１３は、ライトデータと対応ストライプラインの他のデータとから、新たにパリティデータを生成する。パリティデータの生成において、図５Ｂを参照して説明した消失データの復元と同様に、データ格納情報要求により０データの読み出しは省略される。【００８９】
図７は、ホスト計算機５００からの領域解放要求に対する処理のフローチャートを示す。Ｉ／Ｏ制御プログラム２１３（プロセッサ１１１）は、ホスト計算機５００から領域解放要求を受信すると、本処理を実行する。領域解放要求の例は、例えば、ＳＣＩＳのＵＮＭＡＰコマンドや、ＳＡＴＡのＴＲＩＭコマンドである。【００９０】
Ｉ／Ｏ制御プログラム２１３は、領域を指定する領域解放要求を、ホスト計算機５００から受信する。領域解放要求が指定可能なサイズは、予め、ストレージ装置１００とホスト計算機５００との間で決められており、例えば、仮想ページや仮想ページ内のストライプライン（パリティデータを含まず）が指定される。【００９１】
Ｉ／Ｏ制御プログラム２１３は、領域解放要求が指定するアドレスから、仮想ページ番号及び対応する実ページ番号を特定する。仮想ページが指定されている場合、Ｉ／Ｏ制御プログラム２１３は、構成情報２１２において、指定された仮想ページに割り当てられている実ページの情報を、未割り当てに変更する。ストライプラインが指定される場合、仮想ページ内相対アドレス及び実ページ内相対アドレスも特定される。【００９２】
Ｉ／Ｏ制御プログラム２１３は、実ページについての情報から、各対象ストライプラインの記憶ドライブ及び記憶ドライブの論理アドレスを特定する（Ｓ２０１）。Ｉ／Ｏ制御プログラム２１３は、各ストライプライン（パリティデータを含む）のために、ステップＳ２０２からＳ２０４を実行する。まず、Ｉ／Ｏ制御プログラム２１３は、論理セグメントのデータがキャッシュ領域２１１に格納されているか、構成情報２１２を参照して、判定する（Ｓ２０２）。【００９３】
対象データがキャッシュ領域に格納されている場合（Ｓ２０２：有）、Ｉ／Ｏ制御プログラム２１３は、当該データをキャッシュ領域２１１から廃棄する（Ｓ２０３）。対象データがキャッシュ領域に格納されていない場合（Ｓ２０２：無）、ステップＳ２０３はスキップされる。【００９４】
Ｉ／Ｏ制御プログラム２１３は、論理アドレス領域を指定して、対象領域の解放要求を、対象記憶ドライブ１２１に発行する（Ｓ２０４）。解放要求の例は、ＳＣＩＳのＵＮＭＡＰコマンドや、ＳＡＴＡのＴＲＩＭコマンドである。記憶ドライブ１２１は、指定された論理アドレス領域に割り当てられている物理セグメントを開放する。Ｉ／Ｏ制御プログラム２１３は、全てのストライプラインについてステップＳ２０２からＳ２０４を実行すると、完了通知をホスト計算機５００に返す（Ｓ２０５）。本処理により、記憶ドライブにおいて未割り当ての物理セグメントを増加させて、リビルドをより効率的に実行可能とする。【００９５】
図８は、記憶ドライブ１２１の故障に対するリビルド処理のフローチャートを示す。リビルド制御プログラム２１５（プロセッサ１１１）は、記憶ドライブの故障を検出すると、本処理を実行する。例えば、記憶ドライブの状態は、ホストＩ／Ｏに同期してチェックされると共に、定期的にチェックされる。【００９６】
リビルド制御プログラム２１５は、故障ドライブのストライプブロックが含まれる各ストライプライン（対称ストライプライン）について、ステップＳ３０３からＳ３１２を実行する。リビルド制御プログラム２１５は、ドライブ構成管理情報３００を参照して、ストライプブロックの消失データ復元のためにデータを読み出すことが必要な各正常なアクセス先記憶ドライブ（各アクセス先ストライプブロック）を特定し、各アクセス先記憶ドライブに対して、ステップＳ３０３からＳ３１０を実行する。【００９７】
ステップＳ３０３において、リビルド制御プログラム２１５は、ストライプブロックのデータが、キャッシュ領域２１１に格納されているか、構成情報２１２を参照して判定する。対象データがキャッシュ領域２１１に格納されている場合（Ｓ３０３：ＹＥＳ）、リビルド制御プログラム２１５は、そのデータをキャッシュ領域２１１から読み出してパリティ計算を実行する（Ｓ３０９）。パリティ計算Ｓ３０９は、図５Ｂに示すパリティ計算Ｓ２５９と同様である。【００９８】
対象データがキャッシュ領域２１１に格納されている場合（Ｓ３０３：ＮＯ）、リビルド制御プログラム２１５は、対象記憶ドライブに、対象ストライプブロックの論理アドレス領域を指定して、データ格納情報要求を発行する（Ｓ３０４）。データ格納情報要求への応答が、記憶ドライブ１２１が当該要求をサポートしていないことを示す場合（Ｓ３０５：ＹＥＳ）、リビルド制御プログラム２１５は、対象記憶ドライブ１２１から対象ストライプブロックのデータを読み出す（Ｓ３１０）。【００９９】
データ格納情報要求への応答が、指定アドレス領域に有効データが格納されていないことを示す場合（Ｓ３０５：ＮＯ、Ｓ３０７：ＮＯ）、リビルド制御プログラム２１５は、対象記憶ドライブについての処理を終了する。【０１００】
データ格納情報要求への応答が、指定アドレス領域に有効データが格納されていることを示す場合（Ｓ３０５：ＮＯ、Ｓ３０７：ＹＥＳ）、リビルド制御プログラム２１５は、対象ストライプブロックのデータを対象記憶ドライブ１２１から読み出し（Ｓ３０８）、パリティ計算を実行する（Ｓ３０９）。消失したストライプブロックのデータが復元されると、リビルド制御プログラム２１５は、当該復元したデータを、スペアドライブに格納する（Ｓ３１２）。【０１０１】
指定アドレス領域において有効データを格納している領域が分散している場合（対象領域が断片化している場合）、データ格納情報要求に対する応答は、当該指定アドレス領域がデータを格納していることのみを示してもよく、有効データを格納している領域それぞれを示してもよい。【０１０２】
応答が、有効データを格納している領域それぞれを示す場合、リビルド制御プログラム２１５は、有効データを格納する領域を全て指定するリード要求（Ｇａｔｈｅｒｅｄ  Ｒｅａｄ要求）を発行してもよい。これにより、一回の通信で複数領域の有効データを読み出すことができる。【０１０３】
ストライブブロックの復元したデータが、分散した有効データのサブブロックで構成されている場合（復元データが断片化している場合）、リビルド制御プログラム２１５は、有効データのアドレス領域を全て指定するライト要求（Ｓｃａｔｔｅｒｅｄ  Ｗｒｉｔｅ要求）を発行してもよい。これにより、一回の通信で複数領域のデータを書き込むことができる。【０１０４】
リビルド制御プログラム２１５は、データ格納情報要求を発行することで、消失データの復元に不要な０データの読み出し及びパリティ計算を回避し、リビルド処理を効率化できる。上記リビルド処理は、データ格納情報要求をサポートしない記憶ドライブから応答に応じてデータを読み出すので、データ格納情報要求をサポートする記憶ドライブとサポートしない記憶ドライブが混在するストレージ装置１００に適用できる。【０１０５】
リビルド制御プログラム２１５は、ホストリード要求に対する処理と異なり、充填率に基づきデータ格納情報要求の発行の有無を判定しない。これにより処理が効率化される。リビルドにおいて読み出されるデータのサイズは大きいため（シーケンシャルリード）、有効データが存在しない場合の無用なリードの負荷が大きく、一方で、データの読み出しに対してデータ格納情報要求の発行の処理時間は短いからである。【０１０６】
なお、リビルド制御プログラム２１５は、充填率に基づいて、データ格納情報要求の発行の有無を決定してもよい。故障ドライブの消失データは複数のドライブに分散されたデータおよびパリティデータから復元される。復元された消失データは、ホストデータを格納する記憶ドライブにスペア領域に格納されてもよい。
【実施例２】
【０１０７】
本実施例は、実ページが割り当てられていない仮想ページに対応する物理記憶領域からのデータの読み出しを回避する。これにより、リビルド処理をより効率化することができる。【０１０８】
図９は、ページ割り当て管理情報４００の構成例を示す。ページ割り当て管理情報４００は、構成情報２１２に含まれる。ページ割り当て管理情報４００は、実ページを管理する。図９の例において、一つの実ページは一つのＲＡＩＤグループの論理アドレス領域からなるとする。ページ割り当て管理情報４００は、各ＲＡＩＤグループに対して用意される。【０１０９】
ページ割り当て管理情報４００は、ＲＡＩＤグループ内論理アドレス欄４０１、割当先仮想ボリューム欄４０２、割当先仮想ページ欄４０３を有する。ＲＡＩＤグループ内論理アドレス欄４０１は、実ページの、ＲＡＩＤグループが提供する論理アドレス領域におけるアドレスを示す。割当先仮想ボリューム欄４０２は、実ページが割り当てられている仮想ボリューム番号を示す。割当先仮想ページ欄４０３は、実ページが割り当てられている仮想ページ番号を示す。割当先仮想ボリューム欄４０２及び割当先仮想ページ欄４０３において、割り当てられていない実ページのエントリは、「ＮＵＬＬ」を示す。【０１１０】
図１０は、本実施例に係るリビルド処理のフローチャートを示す。図８を参照して説明した実施例１のリビルド処理との相違点を説明する。図１０において、リビルド制御プログラム２１５は、対象ストライプラインが含まれる実ページが、仮想ページに割り当て済みであるか判定する（Ｓ３５１）。実ページが割り当てられていない場合（Ｓ３５１：ＮＯ）、リビルド制御プログラム２１５は、対象ストライプラインの処理を終了する。実ページが割り当てられている場合（Ｓ３５１：ＹＥＳ）、リビルド制御プログラム２１５は、ステップＳ３０３に進む。
【実施例３】
【０１１１】
本実施例は、ボリューム間のデータコピーを効率化する方法を開示する。上記実施例は、ドライブ障害時に、０データの読み出しを回避する。本実施例は、ボリューム間データコピーにおいえ、０データの読み出しを回避する。【０１１２】
図１１は、本実施例に係るボリューム構成を示す。ストレージ装置１００は、ローカルコピーペアを構成する論理ボリューム１２４Ａ、１２２Ｂを含む。例えば、論理ボリューム１２４Ａがホスト計算機５００に提供され、論理ボリューム１２４Ｂがバックアップボリュームである。【０１１３】
コピーペアの形成時、ボリューム内データが一致するように、論理ボリューム１２４Ａ内のデータが論理ボリューム１２４Ｂにコピーされる（形成コピー）。ストレージ装置は、この形成コピーにおいて、有効データ（パリティデータを除く）のみをコピーして、コピー処理を効率化する。【０１１４】
図１１において、論理ボリューム１２４Ａは、記憶ドライブ１２１Ａから１２１Ｄで構成されるＲＡＩＤグループの記憶領域が割り当てられ、論理ボリューム１２４Ｂは、記憶ドライブ１２１Ｅから１２１Ｈで構成されるＲＡＩＤグループの記憶領域が割り当てられている。論理ボリューム１２４Ａ、１２２Ｂの容量は仮想化されていても、仮想化されていなくてもよい。【０１１５】
図１２は、実施例３に係る計算機システムの構成を示す。実施例１の構成との相違点は、ストレージ装置１００が、リビルド制御プログラム２１５に代えて、コピー制御プログラム２１６を含む点である。【０１１６】
図１３は、コピー制御プログラム２１６による形成コピー処理のフローチャートを示す。まず、コピー制御プログラム２１６は、コピー先の論理ボリューム１２４Ｂをフォーマットする（Ｓ４０１）。コピー制御プログラム２１６は、コピー元論理ボリューム１２４Ａの各データストライプブロックについて、ステップＳ４０２からＳ４０８を実行する。【０１１７】
コピー制御プログラム２１６は、対象データストライプブロックの記憶ドライブ及び論理アドレス領域を、構成情報２１２を参照して特定する（Ｓ４０２）。コピー制御プログラム２１６は、対象記憶ドライブ１２１に、対象データストライプブロックの論理アドレス領域を指定して、データ格納情報要求を発行する（Ｓ４０３）。【０１１８】
データ格納情報要求への応答が、対象記憶ドライブ１２１が当該要求をサポートしていないことを示す場合（Ｓ４０４：ＮＯ）、コピー制御プログラム２１６は、対象記憶ドライブ１２１から対象データストライプブロックのデータを読み出し（Ｓ４０５）、コピー先論理ボリューム１２４Ｂにコピーする（Ｓ４０８）。【０１１９】
データ格納情報要求への応答が、指定アドレス領域にデータが格納されていないことを示す場合（Ｓ４０６：ＮＯ）、コピー制御プログラム２１６は、対象記憶ドライブ１２１についての処理を終了する。【０１２０】
データ格納情報要求への応答が、指定アドレス領域にデータが格納されていることを示す場合（Ｓ４０６：ＹＥＳ）、コピー制御プログラム２１６は、対象データストライプブロックのデータを対象記憶ドライブ１２１から読み出し（Ｓ４０７）、コピー先論理ボリューム１２４Ｂにコピーする（Ｓ４０８）。【０１２１】
上記形成コピーは、異なるストレージ装置の論理ボリュームで構成されるリモートコピーペアにも適用できる。図１４はリモートコピーペアの構成例を示す。ストレージ装置１００Ａが論理ボリューム１２４Ａを含み、ストレージ装置１００Ｂが論理ボリューム１２４Ｂを含む。形成コピーは、論理ボリューム１２４Ａの有効データ（パリティデータ除く）を、ストレージ装置１００Ａからストレージ装置１００Ｂに、ネットワークを介して送信する。【０１２２】
ストレージ装置１００Ａ、１００Ｂのコピー制御プログラム２１６は、通信を行って、図１３のフローチャートに従った形成コピーを実行する。ストレージ装置１００Ｂのコピー制御プログラム２１６は、論理ボリューム１２４Ｂをフォーマットする。有効データのみを論理ボリューム１２４Ａから読み出し、ストレージ装置１００Ｂに転送する。ストレージ装置１００Ｂのコピー制御プログラム２１６は、受信したデータを、論理ボリューム１２４Ｂに格納する。【０１２３】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。【０１２４】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。【０１２５】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【図１】
0006605762.tif 000002
【図２】
0006605762.tif 000003
【図３Ａ】
0006605762.tif 000004
【図３Ｂ】
0006605762.tif 000005
【図４】
0006605762.tif 000006
【図５Ａ】
0006605762.tif 000007
【図５Ｂ】
0006605762.tif 000008
【図６】
0006605762.tif 000009
【図７】
0006605762.tif 000010
【図８】
0006605762.tif 000011
【図９】
0006605762.tif 000012
【図１０】
0006605762.tif 000013
【図１１】
0006605762.tif 000014
【図１２】
0006605762.tif 000015
【図１３】
0006605762.tif 000016
【図１４】
0006605762.tif 000017