(57)【特許請求の範囲】
【請求項１】
上位装置から転送されたデータを冗長化して前記複数の記憶領域に記憶するストレージ装置において、
前記上位装置から指定された論理アドレスに対して、前記複数の記憶領域の中から記憶領域を割当てる制御部と、
前記論理アドレスと前記割当てられた記憶領域を示す物理アドレスとを関連付ける情報を含む管理情報を記憶する記憶部とを有し、
前記制御部は、
前記上位装置から指定された論理アドレスに対応付けられた物理アドレスの記憶領域の解放要求を受け付けた場合であって、前記解放要求された論理アドレスに対応付けられた物理アドレスにコピー処理が未実行のデータが記憶されているときに、前記管理情報における前記解放要求された論理アドレスと前記コピー処理が未実行の物理アドレスの関連付けを解除し、前記コピー処理が未実行の物理アドレスに記憶されたデータのコピー処理が終了した後に、該物理アドレスの記憶領域を解放すること、
を特徴とするストレージ装置。
【請求項２】
前記制御部は、前記解放要求された論理アドレスが指定されたデータ書込み要求を受付ける場合、前記解放要求された論理アドレスに対して、前記複数の記憶領域の中から記憶領域を獲得し、前記管理情報に前記論理アドレスと前記獲得された記憶領域を示す物理アドレスとを関連付ける情報を記憶させることを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、コピー対象のデータを記憶する記憶領域の解放要求を受け付けた場合であって、該解放要求で指定される論理アドレスに新たに対応付けられる物理アドレスに記憶されるデータに対してコピー処理を実行する場合、コピーの世代数と、コピー元データを記憶する記憶領域の識別子と、コピー先を特定する論理アドレスとを対応付けたコピー情報を前記記憶部に記憶させ、
前記コピー情報を参照してコピーの世代数ごとにコピー処理を実行させる
ことを特徴とする請求項１または２に記載のストレージ装置。
【請求項４】
前記制御部は、前記コピー処理が未実行の物理アドレスで指定される記憶領域が記憶するデータのコピー先が仮想領域である場合、該コピー先の仮想領域の論理アドレスと該記憶領域を示す物理アドレスとを対応付けた情報を前記記憶部に記憶させることを特徴とする請求項１−３のいずれか一つに記載のストレージ装置。
【請求項５】
上位装置から指定された論理アドレスに対して、前記複数の記憶領域の中から記憶領域を割当てる制御部と、前記論理アドレスと前記割当てられた記憶領域を示す物理アドレスとを関連付ける情報を含む管理情報を記憶する記憶部とを有し、前記上位装置から転送されたデータを冗長化して前記複数の記憶領域に記憶するストレージ装置の制御方法において、
前記制御部が、
前記上位装置から指定された論理アドレスに対応付けられた物理アドレスの記憶領域の解放要求を受け付けた場合であって、前記解放要求された論理アドレスに対応付けられた物理アドレスにコピー処理が未実行のデータが記憶されているときに、前記管理情報における前記解放要求された論理アドレスと前記コピー処理が未実行の物理アドレスの関連付けを解除し、前記コピー処理が未実行の物理アドレスに記憶されたデータのコピー処理が終了した後に、該物理アドレスの記憶領域を解放する、
処理を含んだことを特徴とするストレージ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置およびストレージ装置の制御方法に関する。
【背景技術】
【０００２】
従来、ストレージ装置は、サーバから例えば１０ＴＢの割当て要求を受けた場合、１０ＴＢの物理的なディスク容量を割当てる。一方、サーバは、要求通りに割当てられた物理的なディスク容量のうち、実際には割当量の２０％〜３０％しか使用しない場合がある。このように、サーバに割り当てられた物理的なディスク容量は、効率的に利用されない場合がある。
【０００３】
このようなことから、ストレージ装置の物理的なディスク容量を効率的に使用するための仕組みとして、シン・プロビジョニングと呼ばれる技術がある。シン・プロビジョニングでは、例えば、サーバから１０ＴＢの割り当て要求を受けた場合、ストレージ装置は、サーバには要求通り１０ＴＢの仮想ボリュームを割り当てるが、実際には２ＴＢの物理的なディスク容量だけを割当てる。
【０００４】
そして、ストレージ装置は、サーバが所定の閾値を超えた物理的なディスク容量を使用した場合に、新たに追加して物理的なディスク容量をサーバに割当てる。このように、シン・プロビジョニングは、物理的なディスク容量をホストアクセス要求時に随時割り当てる。これにより、ストレージ装置は、物理的なディスク容量を効率的に利用が可能となる。なお、この時使用される仮想ボリュームのことをＴＰＶ(Thin  Provisioning  Volume)と呼び、ＴＰＶに対して割当てられる物理的なディスク容量の最小単位のことをＴＰＰＳ（Thin  Provisioning  Pool  Slice）と呼ぶ。
【０００５】
また、サーバによりデータが削除された場合、削除されたデータは、サーバのＯＳ（Operating  System）上では未使用の扱いとなる。一方、ストレージ装置では、削除されたデータに対してＴＰＰＳを割り当てたままであるので、ストレージ装置は、無駄に物理的なディスク容量を消費することになる。
【０００６】
これを改善する仕組みとしてＵＮＭＡＰコマンドがある。ＵＮＭＡＰコマンドは、ストレージ装置内のＴＰＶに対して、未使用となったＴＰＰＳの論理アドレスを指定してＴＰＰＳの解放を要求するコマンドである。サーバは、データの削除と連携してこのＵＮＭＡＰコマンドをストレージ装置に発行することにより、シン・プロビジョニングにより割り当てられたＴＰＰＳを効率的に運用する。なお、このＵＮＭＡＰコマンドは、ＶＭ（Virtual  Machine）ウェアで提供されているストレージＡＰＩ（Application  Programming  Interface）のＶＡＡＩ(vStorage  APIs  for  Array  Integration)の中の一つである。
【０００７】
また、ストレージ装置は、ＴＰＰＳのデータを論理的にコピーするスナップショット型のコピー機能を有する場合がある。そして、ＵＮＭＡＰコマンドは、ストレージ装置が実行するコピー機能とも併用可能である。例えば、ストレージ装置は、未コピーのＴＰＰＳのデータに対してＵＮＭＡＰコマンドが発行された場合、このＴＰＰＳのデータをコピーし、コピー終了後にＴＰＰＳを解放する。そして、ストレージ装置は、ＴＰＰＳを解放後、サーバにＵＮＭＡＰコマンドに対して応答する。
【０００８】
このＵＮＭＡＰコマンドは、ホストからの一回の要求で処理対象となる容量が数ＧＢから数十ＧＢ、あるいはそれ以上であり、通常のライトＩ／Ｏ（Input/Output）と比較して処理対象となる容量が大きい。このため、ストレージ装置は、ＵＮＭＡＰコマンドを受付け、ＵＮＭＡＰコマンドの要求範囲をすべてコピーする場合、ＵＮＭＡＰコマンドを実行するまでの時間が増加する。この結果、サーバは、ストレージ装置によるＴＰＰＳの解放処理が終了するまで、ＵＮＭＡＰコマンドに対する応答を受信できないので、ＵＮＭＡＰコマンドがタイムアウトする可能性が高くなる。
【０００９】
このようなことから、ストレージ装置は、解放を要求されたＴＰＰＳに対して解放処理が予約状態である旨を記録し、ＵＮＭＡＰコマンドに対する応答をサーバへ即座に返す。そして、ストレージ装置は、ＴＰＰＳのデータをコピー先へ退避が完了した時点で解放処理を非同期的に実行して、ＴＰＰＳを解放する。このようにして、ストレージ装置は、コピー対象の領域に対して発行されたＵＮＭＡＰコマンドがタイムアウトすることを防止する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００９−２５１９７０号公報
【特許文献２】特開２０１１−１３８２１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した従来の技術では、解放の要求で指定される論理アドレスを指定したデータの書込みが遅延するという課題がある。
【００１２】
ストレージ装置は、解放処理が予約状態であるＴＰＰＳに対してデータの書込み要求が発行された場合は、ＴＰＰＳのデータをコピーし、コピーが終了後にＴＰＰＳを解放するまでこのデータの書込み要求を待機させる。このため、サーバは、ストレージ装置によるＴＰＰＳの解放処理が終了するまで、データの書込み要求に対する応答を受信できず、データの書込み要求がタイムアウトする可能性が高くなる。
【００１３】
また、ストレージ装置は、同一のＴＰＰＳのデータに対して異なる時刻でスナップショット型のコピーを実行する場合がある。そして、コピー元のＴＰＰＳに対してＵＮＭＡＰコマンドが発行された後に、解放処理が予約状態となったＴＰＰＳに対してデータの書込み要求が発行された場合、ストレージ装置によるＴＰＰＳの解放処理が終了するまで、データの書込み要求は、待機させられる。この結果、データの書込み要求がタイムアウトする可能性がさらに高くなる。
【００１４】
また、ストレージ装置が、ＵＮＭＡＰコマンドとスナップショット型のコピーとを交互に実行する場合がある。このような場合、解放処理が予約状態であるＴＰＰＳに対するデータの書込み処理のレスポンス性能は、慢性的に低下する。
【００１５】
１つの側面では、本発明は、解放の要求で指定される論理アドレスを指定したデータの書込みの遅延を防止することができるストレージ装置およびストレージ装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
１つの案では、ストレージ装置は、上位装置から転送されたデータを冗長化して複数の記憶領域に記憶する。このストレージ装置は、上位装置から指定された論理アドレスに対して、複数の記憶領域の中から記憶領域を割当てる制御部と、論理アドレスと割当てられた記憶領域を示す物理アドレスとを関連付ける情報を含む管理情報を記憶する記憶部とを有する。そして、制御部は、上位装置から指定された論理アドレスに対応付けられた物理アドレスの記憶領域の解放要求を受け付けた場合、以下の処理を実行する。すなわち、制御部は、解放要求された論理アドレスに対応付けられた物理アドレスにコピー処理が未実行のデータが記憶されているときに、管理情報における解放要求された論理アドレスとコピー処理が未実行の物理アドレスの関連付けを解除する。そして、制御部は、コピー処理が未実行の物理アドレスに記憶されたデータのコピー処理が終了した後に、該物理アドレスの記憶領域を解放する。
【発明の効果】
【００１７】
１実施形態におけるストレージ装置によれば、解放の要求で指定される論理アドレスを指定したデータの書込みの遅延を防止することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施例１に係る情報処理システムの構成を示すブロック図である。
【図２】図２は、マッピング情報テーブルが記憶するデータ構造の一例を示す図である。
【図３】図３は、コピー管理テーブルが記憶するデータ構造の一例を示す図である。
【図４】図４は、実施例１に係るストレージ装置により実行されるファームウェアの機能構成を示す機能ブロック図である。
【図５】図５は、実施例１に係るストレージ装置による処理動作の一例を示す図である。
【図６】図６は、実施例１に係るストレージ装置におけるＵＮＭＡＰコマンド受信時のマッピング情報更新処理の処理手順を示すフローチャートである。
【図７】図７は、実施例１に係るストレージ装置におけるライトＩ／Ｏ受領時のＴＰＰＳ獲得処理の処理手順を示すフローチャートである。
【図８】図８は、実施例２に係る情報処理システムの構成を示すブロック図である。
【図９】図９は、コピー世代管理テーブルが記憶するデータ構造の一例を示す図である。
【図１０】図１０は、実施例２に係るストレージ装置が実行するファームウェアの機能構成の一例を示す図である。
【図１１】図１１は、実施例２に係るストレージ装置による処理動作の一例を示す図である。
【図１２】図１２は、実施例２に係るストレージ装置によるマッピング情報更新処理の処理手順を説明するフローチャートである。
【図１３】図１３は、実施例３に係るストレージ装置によるＴＰＶへのコピー時の処理手順を示すフローチャートである。
【図１４】図１４は、実施例３に係るストレージ装置による処理動作の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下に、本願の開示するストレージ装置およびストレージ装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００２０】
実施例１では、図１から図７を用いて、情報処理システムの構成、ストレージ装置の構成、ＣＭの構成、ストレージ装置による処理動作、ストレージ装置による処理手順、および効果などについて説明する。
【００２１】
［実施例１に係る情報処理システムの構成］
図１は、実施例１に係る情報処理システム１の構成を示すブロック図である。図１に示すように、情報処理システム１は、ホストコンピュータ２と、ストレージ装置１０とを有する。情報処理システム１において、ホストコンピュータ２は、ストレージ装置１０とＦＣ（Fibre  Channel）やｉＳＣＳＩ（Internet  Small  Computer  System  Interface）などによって互いに通信可能に接続される。なお、情報処理システム１が有するホストコンピュータの数およびストレージ装置の数は図示した数に限定されるものではなく、変更可能である。
【００２２】
ホストコンピュータ２は、例えば、サーバであり、ストレージ装置１０に対して論理ボリュームのデータの読み書きを実行する。
【００２３】
ストレージ装置１０は、シン・プロビジョニングにより物理的なディスク容量をホストコンピュータ２からアクセスを要求された場合に随時割り当てる。例えば、ホストコンピュータ２から１０ＴＢの割り当て要求を受けた場合、ストレージ装置１０は、ホストコンピュータ２には要求通り１０ＴＢの仮想ボリュームを割り当てるが、実際には２ＴＢの物理的なディスク容量を割当てる。そして、ストレージ装置１０は、ホストコンピュータ２が所定の閾値を超えた物理的なディスク容量を使用した場合に、新たに追加して物理的なディスク容量をホストコンピュータ２に割当てる。なお、この時使用される仮想ボリュームのことをＴＰＶ(Thin  Provisioning  Volume)と呼び、ＴＰＶに対して割当てられる物理的なディスク容量の最小単位のことをＴＰＰＳ（Thin  Provisioning  Pool  Slice）と呼ぶ。なお、ホストコンピュータ２がストレージ装置１０に対して割り当てを要求するディスク容量、ならびに、ストレージ装置１０がホストコンピュータ２に割り当てる仮想ボリュームの容量および物理的なディスク容量は、上述の如くに限られるものではない。
【００２４】
［実施例１に係るストレージ装置１０の構成］
引き続き図１を用いて、実施例１に係るストレージ装置１０の構成を説明する。ストレージ装置１０は、ＣＡ（Channel  Adapter）１１、ＣＡ１２、ＣＡ１３、ＣＡ１４、ディスク装置１５、ディスク装置１６、ディスク装置１７、ディスク装置１８、ＣＭ（Control  Module）２０、およびＣＭ３０を有する。ＣＡ１１、ＣＡ１２、ＣＡ１３、およびＣＡ１４は、ホストコンピュータ２とのインターフェースである。なお、ホストコンピュータ２とＣＡ１１、ＣＡ１２、ＣＡ１３、およびＣＡ１４との間は、ＦＣやｉＳＣＳＩなどを介して相互に通信可能に接続される。
【００２５】
ディスク装置１５、ディスク装置１６、ディスク装置１７、およびディスク装置１８は、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）を構築し、ホストコンピュータ２から受信した書込みデータを記憶する。また、ディスク装置１５、ディスク装置１６、ディスク装置１７、およびディスク装置１８は、仮想ボリュームであるＴＰＶを構築する。
【００２６】
ＣＭ２０は、ホストコンピュータ２とディスク装置１５、ディスク装置１６との間のデータの入出力を制御し、ＣＭ３０は、ホストコンピュータ２とディスク装置１７、ディスク装置１８との間のデータの入出力を制御する。なお、ストレージ装置１０が有するＣＭの数は、図示した数に限定されるものではない。
【００２７】
［実施例１に係るＣＭ２０の構成］
引き続き図１を用いて、実施例１に係るＣＭ２０の構成を説明する。図１に示すように、ＣＭ２０は、ＤＡ（Device  Adapter）２１およびＤＡ２２とＲＡＭ（Random  Access  Memory）２３とフラッシュメモリ２４とＣＰＵ（Central  Processing  Unit）２５とを有する。
【００２８】
ＤＡ２１は、ディスク装置１５とのインターフェースであり、ＤＡ２２は、ディスク装置１６とのインターフェースである。
【００２９】
ＲＡＭ２３は、マッピング情報テーブル２３ａと、コピー管理テーブル２３ｂとを有する。また、ＲＡＭ２３には、図示しない、未使用のＴＰＰＳのプールを管理するプール管理情報が含まれる。なお、ＲＡＭ２３は、ＤＩＭＭ（Dual  Inline  Memory  Module）やＤＲＡＭ（Dynamic  Random  Access  Memory）などで代替可能である。
【００３０】
マッピング情報テーブル２３ａは、ディスク装置により実現されるＴＰＶの論理アドレスと、ＴＰＶにおいて割当てられるＴＰＰＳを指定する物理アドレスとを対応付けたマッピング情報を記憶する。なお、マッピング情報テーブル２３ａが記憶するデータ構造については、図２を用いて後述する。
【００３１】
コピー管理テーブル２３ｂは、ＴＰＰＳが記憶する論理ボリュームのデータをコピー済みであるか否かを管理する情報を記憶する。なお、コピー管理テーブル２３ｂが記憶するデータ構造については、図３を用いて後述する。
【００３２】
フラッシュメモリ２４は、ファームウェア２４ａを記憶する。なお、ファームウェア２４ａの機能構成については図４を用いて後述する。ＣＰＵ２５は、フラッシュメモリ２４が記憶するファームウェア２４ａを読込み、各種演算処理を実行する。
【００３３】
［実施例１に係るＣＭ３０の構成］
図１に示すように、ＣＭ３０は、ＤＡ３１およびＤＡ３２とＲＡＭ３３とフラッシュメモリ３４とＣＰＵ３５とを有する。ＤＡ３１は、ディスク装置１７とのインターフェースであり、ＤＡ３２は、ディスク装置１８とのインターフェースである。
【００３４】
ＲＡＭ３３は、マッピング情報テーブル３３ａと、コピー管理テーブル３３ｂとを有する。マッピング情報テーブル３３ａは、マッピング情報テーブル２３ａと同様の情報を記憶する。また、コピー管理テーブル３３ｂは、コピー管理テーブル２３ｂと同様の情報を記憶する。また、ＲＡＭ３３には、図示しない、未使用のＴＰＰＳのプールを管理するプール管理情報が含まれる。なお、ＲＡＭ３３は、ＤＩＭＭやＤＲＡＭなどで代替可能である。
【００３５】
フラッシュメモリ３４は、ファームウェア３４ａを記憶する。なお、ファームウェア３４ａの機能構成については図４を用いて後述する。ＣＰＵ３５は、フラッシュメモリ３４が記憶するファームウェア３４ａを読込み、各種演算処理を実行する。
【００３６】
このように構成されるストレージ装置１０は、ＣＰＵ２５がファームウェア２４ａを読込んだ場合、あるいはＣＰＵ３５がファームウェア３４ａを読込んだ場合、以下の処理を実行する。すなわち、ストレージ装置１０は、ディスク装置により実現されるＴＰＶの論理アドレスと、ＴＰＶにおいて割当てられるＴＰＰＳを指定する物理アドレスとを対応付けたマッピング情報をＲＡＭに保持する。また、ストレージ装置１０は、コピー対象の論理ボリュームのデータを記憶するＴＰＰＳに対して、このＴＰＰＳを指定する物理アドレスと対応付けられる論理アドレスを指定して解放を要求される場合、以下の処理を実行する。すなわち、ストレージ装置１０は、このＴＰＰＳをマッピング情報から削除して、ＴＰＰＳをホストコンピュータ２によるＴＰＶに関連付けられるアクセスから退避させる。そして、この論理アドレスのマッピング情報の物理アドレスの欄について、物理アドレスが未割当であることを示す情報に更新して、該論理アドレスに対して新たなＴＰＰＳを指定する物理アドレスを割当て可能な状態にする。続いて、ストレージ装置１０は、退避させたＴＰＰＳが記憶する論理ボリュームのデータのコピーを実行する。そして、ストレージ装置１０は、コピーが終了後に、コピー対象の論理ボリュームのデータを記憶するＴＰＰＳを解放する。つまり、未使用領域のプールを管理するプール管理情報に、このＴＰＰＳを指定する物理アドレスを登録することで、その後、該物理アドレスは未使用領域として管理される。なお、ストレージ装置１０が記憶する、マッピング情報テーブル２３ａ（３３ａ）と、コピー管理テーブル２３ｂ（３３ｂ）と、プール管理情報とを含めて「管理情報」と称する。
【００３７】
［マッピング情報テーブル２３ａ（３３ａ）が記憶するデータ構造］
次に、図２を用いて、マッピング情報テーブル２３ａおよびマッピング情報テーブル３３ａが記憶するデータ構造の一例について説明する。なお、マッピング情報テーブル２３ａおよびマッピング情報テーブル３３ａが記憶するデータ構造については同様であるので、ここでは、マッピング情報テーブル２３ａのデータ構造について説明する。なお、以下の説明では、マッピング情報テーブル２３ａおよびマッピング情報テーブル３３ａが記憶するデータのことを、「マッピング情報」と適宜記載する。
【００３８】
図２は、マッピング情報テーブル２３ａが記憶するデータ構造の一例を示す図である。図２に示すように、マッピング情報テーブル２３ａは、「論理ＬＢＡ（Logical  Block  Address)」と「物理ＬＢＡ」とを対応付けた情報を記憶する。なお、１つのＬＢＡは、５１２バイトである。
【００３９】
ここで、マッピング情報テーブル２３ａが記憶する「論理ＬＢＡ」は、ディスク装置１５、ディスク装置１６、ディスク装置１７、およびディスク装置１８により実現される仮想領域であるＴＰＶにおける論理アドレスを示す。例えは、「論理ＬＢＡ」には、「１０００」、「２０００」などの値が格納される。なお、ホストコンピュータ２は、論理ＬＢＡを指定してＴＰＰＳが記憶する論理ボリュームのデータにアクセスする。また、ホストコンピュータ２は、論理ＬＢＡを指定してＴＰＰＳの解放を要求する。
【００４０】
また、マッピング情報テーブル２３ａが記憶する「物理ＬＢＡ」は、ディスク装置により実現される仮想領域であるＴＰＶにおける物理アドレスを示す。例えは、「物理ＬＢＡ」には、「３５０００」、「４７０００」などの値が格納される。
【００４１】
また、この「物理ＬＢＡ」には、ＴＰＰＳの識別子が一意に対応付けられる。言い換えると、「物理ＬＢＡ」は、ＴＰＶにおいて割当てられるＴＰＰＳを指定する。例えば、「物理ＬＢＡ」の「３５０００」は、ＴＰＰＳ１０と対応付けられ、「物理ＬＢＡ」の「４７０００」は、ＴＰＰＳ２２と対応付けられる。なお、ストレージ装置１０は、論理ＬＢＡを指定して入出力処理をホストコンピュータ２から受付けた場合、論理ＬＢＡに対応付けられる物理ＬＢＡにより指定されるＴＰＰＳに対して入出力処理を実行する。
【００４２】
図２に示す例では、ＴＰＶにおける論理ＬＢＡ「１０００」は、物理ＬＢＡ「３５０００」に対応し、ＴＰＰＳ「１０」で識別される物理領域を指定する。同様に、ＴＰＶにおける論理ＬＢＡ「２０００」は、物理ＬＢＡ「４７０００」に対応し、ＴＰＰＳは「２２」で識別される物理領域を指定する。
【００４３】
なお、マッピング情報テーブル２３ａが記憶する「物理ＬＢＡ」は、後述するＴＰＰＳマッピング管理部１０５およびＴＰＰＳ割当管理部１０６により更新される。
【００４４】
［コピー管理テーブル２３ｂ（３３ｂ）が記憶するデータ構造］
次に、図３を用いて、コピー管理テーブル２３ｂおよびコピー管理テーブル３３ｂが記憶するデータ構造の一例について説明する。なお、コピー管理テーブル２３ｂおよびコピー管理テーブル３３ｂが記憶するデータ構造については同様であるので、ここでは、コピー管理テーブル２３ｂのデータ構造について説明する。
【００４５】
図３は、コピー管理テーブル２３ｂが記憶するデータ構造の一例を示す図である。図３に示すように、コピー管理テーブル２３ｂは、「コピー元ＴＰＰＳ」と「コピー先ＯＬＵ（Open  Logical  Unit）」と「コピー先論理ＬＢＡ」と「状態」とを対応付けた情報を記憶する。
【００４６】
ここで、コピー管理テーブル２３ｂが記憶する「コピー元ＴＰＰＳ」は、コピー元のＴＰＰＳの識別子示す。例えは、「コピー元ＴＰＰＳ」には、「ＴＰＰＳ１１」、「ＴＰＰＳ２０」などの値が格納される。
【００４７】
また、コピー管理テーブル２３ｂが記憶する「コピー先ＯＬＵ」は、コピー先のＯＬＵの識別子を示す。例えば、「コピー先ＯＬＵ」には、「１」、「２」などの値が格納される。なお、ＯＬＵは、シン・プロビジョニングにより管理されるＴＰＶではなく、オープンシステムで一般的に用いられる論理ユニットである。
【００４８】
また、コピー管理テーブル２３ｂが記憶する「コピー先論理ＬＢＡ」は、コピー先のＯＬＵにおける論理アドレスを示す。例えば、「コピー先論理ＬＢＡ」には、「５０００」、「６０００」などの値が格納される。
【００４９】
また、コピー管理テーブル２３ｂが記憶する「状態」は、コピー処理の状態を示す。例えば、「状態」には、コピー処理を未実行であることを示す「未実行」、コピー処理が実行中であることを示す「実行中」、あるいは、コピー処理が終了したことを示す「終了」などの値が格納される。
【００５０】
図３に示す例では、コピー管理テーブル２３ｂは、「ＴＰＰＳ１１」が記憶する論理ボリュームのデータを、ＯＬＵ「１」の論理ＬＢＡ「５０００」にコピーする処理が「終了」したことを示す。同様に、コピー管理テーブル２３ｂは、「ＴＰＰＳ２０」が記憶する論理ボリュームのデータを、ＯＬＵ「２」の論理ＬＢＡ「６０００」にコピーする処理が「終了」したことを示す。
【００５１】
なお、コピー管理テーブル２３ｂが記憶する「状態」は、後述するコピー処理制御部１０４により更新される。
【００５２】
［ファームウェア２４ａ（３４ａ）の機能構成］
次に、図４を用いて、実施例１に係るストレージ装置１０により実行されるファームウェア２４ａおよびファームウェア３４ａの機能構成を説明する。実施例１に係るストレージ装置１０により実行されるファームウェア２４ａおよびファームウェア３４ａの機能構成は同様であるので、ここでは、ファームウェア２４ａおよびファームウェア３４ａをファームウェア１００と称して説明する。
【００５３】
図４は、実施例１に係るストレージ装置１０により実行されるファームウェア１００の機能構成を示す機能ブロック図である。なお、ストレージ装置１０により実行されるファームウェア１００は、ＲＡＭ２３とＣＰＵ２５とが協働して、あるいはＲＡＭ３３とＣＰＵ３５とが協働して実現される。
【００５４】
図４に示すように、ファームウェア１００は、ＵＮＭＡＰコマンド処理部１０１とライトＩ／Ｏ処理部１０２と競合検知部１０３とコピー処理制御部１０４とＴＰＰＳマッピング管理部１０５とＴＰＰＳ割当管理部１０６とを有する。
【００５５】
ＵＮＭＡＰコマンド処理部１０１は、ＵＮＭＡＰコマンドをホストコンピュータ２から受信する。そして、ＵＮＭＡＰコマンド処理部１０１は、ＵＮＭＡＰコマンドにより解放を要求されたＴＰＰＳが記憶する論理ボリュームのデータをコピーするか否かを後述する競合検知部１０３に判定させる。
【００５６】
ＵＮＭＡＰコマンド処理部１０１は、競合検知部１０３により解放を要求されたＴＰＰＳが記憶する論理ボリュームのデータのコピー処理を実行すると判定された場合、解放を要求されたＴＰＰＳの解放を保留する。そして、ＵＮＭＡＰコマンド処理部１０１は、ＴＰＰＳマッピング管理部１０５にマッピング情報テーブル２３ａを更新させる。そして、ＵＮＭＡＰコマンド処理部１０１は、解放を要求されたＴＰＰＳが記憶する論理ボリュームのデータのコピーが終了後に、このコピー対象の論理ボリュームのデータを記憶するＴＰＰＳを解放する。
【００５７】
また、ＵＮＭＡＰコマンド処理部１０１は、競合検知部１０３により解放を要求されたＴＰＰＳが記憶する論理ボリュームのデータのコピー処理を実行しないと判定された場合、解放を要求されたＴＰＰＳを解放する。そして、ＵＮＭＡＰコマンド処理部１０１は、ＴＰＰＳマッピング管理部１０５にマッピング情報テーブル２３ａを更新させる。
【００５８】
また、ＵＮＭＡＰコマンド処理部１０１は、ＴＰＰＳマッピング管理部１０５によりマッピング情報テーブル２３ａが更新されたことを通知された場合、ＵＮＭＡＰコマンドに対応する応答をホストコンピュータ２へ送信する。
【００５９】
ライトＩ／Ｏ（Input/Output）処理部１０２は、論理アドレスを指定して、ライトＩ／Ｏをホストコンピュータ２から受領した場合、論理アドレスに対して割当てられる物理アドレスにより指定されるＴＰＰＳに、論理ボリュームのデータを書込む。
【００６０】
例えば、ライトＩ／Ｏ処理部１０２は、論理アドレスを指定して、ライトＩ／Ｏをホストコンピュータ２から受領した場合、指定された論理アドレスに対するＴＰＰＳの割当てをＴＰＰＳ割当管理部１０６に要求する。そして、ライトＩ／Ｏ処理部１０２は、ＴＰＰＳ割当管理部１０６により割当てられたＴＰＰＳに、ホストコンピュータ２から受信したライトデータを書込む。また、ライトＩ／Ｏ処理部１０２は、ホストコンピュータ２から受信したライトデータを書込んだ後、ホストコンピュータ２にライトＩ／Ｏの完了を応答する。
【００６１】
競合検知部１０３は、解放を要求されたＴＰＰＳのコピー処理を実行するか否かを判定する。例えば、競合検知部１０３は、コピー管理テーブル２３ｂにおいて、解放を要求されたＴＰＰＳに対応する「状態」を読出し、「状態」が「終了」であるか否かを判定する。競合検知部１０３は、コピー管理テーブル２３ｂの「状態」が「終了」である場合に、コピー処理を実行しないと判定する。
【００６２】
また、競合検知部１０３は、コピー管理テーブル２３ｂの「状態」が「終了」でない場合、すなわち、コピー管理テーブル２３ｂの「状態」が「実行中」あるいは「未実行」である場合に、コピー処理を実行すると判定する。
【００６３】
コピー処理制御部１０４は、ＴＰＰＳが記憶する論理ボリュームのデータのコピー処理をバックグラウンドで起動する。例えば、コピー処理制御部１０４は、解放を要求されたＴＰＰＳのコピー処理を実行する場合、退避させたＴＰＰＳが記憶する論理ボリュームのデータのコピーを実行する。
【００６４】
なお、コピー処理制御部１０４は、コピー処理を実行する場合、コピー管理テーブル２３ｂの「状態」に「実行中」を設定し、コピー処理を終了した場合、コピー管理テーブル２３ｂの「状態」に「終了」を設定する。
【００６５】
ＴＰＰＳマッピング管理部１０５は、ホストコンピュータ２から解放を要求されたＴＰＰＳが解放状態となるようにＲＡＭ２３が記憶するマッピング情報テーブル２３ａを更新する。例えば、ＴＰＰＳマッピング管理部１０５は、解放を要求されたＴＰＰＳのコピーを実行しない場合、解放を要求されたＴＰＰＳがＵＮＭＡＰコマンド処理部１０１により解放された後に、マッピング情報を更新する。
【００６６】
また、ＴＰＰＳマッピング管理部１０５は、コピー対象の論理ボリュームのデータを記憶するＴＰＰＳに対して、ＴＰＰＳを指定する物理アドレスと対応付けられる論理アドレスを指定して解放を要求される場合、以下の処理を実行する。すなわち、ＴＰＰＳマッピング管理部１０５は、解放を要求されるＴＰＰＳを退避させて、新たなＴＰＰＳを指定する物理アドレスを、解放の要求で指定される論理アドレスに対して割当て可能な状態にマッピング情報を更新する。
【００６７】
例えば、ＴＰＰＳマッピング管理部１０５は、解放を要求されたＴＰＰＳを指定する「論理ＬＢＡ」に対応付けられる「物理ＬＢＡ」に格納される値を削除する。一例をあげると、ＴＰＰＳマッピング管理部１０５は、論理ＬＢＡ「２０００」を指定して解放を要求される場合、論理ＬＢＡ「２０００」に対応する「物理ＬＢＡ」に格納される「３６０００」を削除する。
【００６８】
ＴＰＰＳ割当管理部１０６は、解放の要求で指定される論理アドレスを指定して、論理ボリュームのデータを書込む要求を受付ける場合、新たなＴＰＰＳを指定する物理アドレスを該論理アドレスに対して割当てる。例えば、ＴＰＰＳ割当管理部１０６は、ライトＩ／Ｏを要求された「論理ＬＢＡ」に対応付けて、新規のＴＰＰＳを指定する物理ＬＢＡを獲得する。一例をあげると、ＴＰＰＳ割当管理部１０６は、論理ＬＢＡ「２０００」を指定して論理ボリュームのデータを書込む要求を受付ける場合、論理ＬＢＡ「２０００」に対応する「物理ＬＢＡ」に「４７０００」格納する。
【００６９】
［実施例１に係るストレージ装置１０による処理動作］
次に、図５を用いて、実施例１に係るストレージ装置１０による処理動作の一例について説明する。図５は、実施例１に係るストレージ装置１０による処理動作の一例を示す図である。なお、図５は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ５ａの解放が要求され、かつ、このＴＰＰＳ５ａが記憶する論理ボリュームのデータのコピーが未実行である場合を示す。
【００７０】
図５に示すように、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ５ａの解放を要求するＵＮＭＡＰコマンドをホストコンピュータ２から受信する（ステップＳ１０１）。ストレージ装置１０は、解放を要求されたＴＰＰＳ５ａが記憶する論理ボリュームのデータのコピーが未実行であるので、ＴＰＰＳ５ａをマッピング情報から削除して、マッピング情報テーブル２３ａ（３３ａ）を更新する（ステップＳ１０２）。従って、ＴＰＰＳ５ａは、ホストコンピュータ２によるＴＰＶに関連付けられるアクセスから退避させることができる。
【００７１】
そして、ストレージ装置１０は、ホストコンピュータ２にＵＮＭＡＰコマンドに対する応答を送信する（ステップＳ１０３）。続いて、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳに対するライト要求をホストコンピュータ２から受信する（ステップＳ１０４）。
【００７２】
論理ＬＢＡ「２０００」は、マッピング情報テーブル２３ａ（３３ａ）上、ＴＰＰＳが未割当の状態の為、ライト要求を受信したストレージ装置１０は、論理ＬＢＡ「２０００」に対して新規のＴＰＰＳ５ｂを獲得する（ステップＳ１０５）。そして、ストレージ装置１０は、ホストコンピュータ２からライトデータを受信し（ステップＳ１０６）、ライト要求に対する応答をホストコンピュータ２に送信する（ステップＳ１０７）。
【００７３】
また、ストレージ装置１０は、退避させたＴＰＰＳ５ａが記憶する論理ボリュームのデータのコピーを実行する（ステップＳ１０８）。そして、ストレージ装置１０は、コピーが終了後に、ＴＰＰＳ５ａを解放する（ステップＳ１０９）。
【００７４】
［実施例１に係るストレージ装置１０による処理の処理手順］
次に、図６および図７を用いて、実施例１に係るストレージ装置１０による処理の処理手順について説明する。図６を用いて、ストレージ装置１０におけるＵＮＭＡＰコマンド受信時のマッピング情報更新処理の処理手順を説明し、図７を用いて、ストレージ装置１０におけるライトＩ／Ｏ受領時のＴＰＰＳ獲得処理の処理手順を説明する。
【００７５】
（ＵＮＭＡＰコマンド受信時のマッピング情報更新処理）
図６は、実施例１に係るストレージ装置１０におけるＵＮＭＡＰコマンド受信時のマッピング情報更新処理の処理手順を示すフローチャートである。なお、ＵＮＭＡＰコマンド受信時のマッピング処理は、ＵＮＭＡＰコマンド処理部１０１がＵＮＭＡＰコマンドを受信したことを契機に実行される。
【００７６】
図６に示すように、ＵＮＭＡＰコマンド処理部１０１は、ＵＮＭＡＰコマンドをホストコンピュータ２から受信する（ステップＳ２０１）。そして、競合検知部１０３は、解放を要求されたＴＰＰＳのコピー処理を実行するか否かを判定する（ステップＳ２０２）。
【００７７】
ここで、競合検知部１０３により解放を要求されたＴＰＰＳのコピー処理を実行すると判定された場合（ステップＳ２０２、Ｙｅｓ）、ＵＮＭＡＰコマンド処理部１０１は、解放を要求されたＴＰＰＳの解放を保留する（ステップＳ２０３）。そして、コピー処理制御部１０４は、バックグラウンドでコピー処理を起動する（ステップＳ２０４）。
【００７８】
一方、競合検知部１０３により解放を要求されたＴＰＰＳのコピー処理を実行しないと判定された場合（ステップＳ２０２、Ｎｏ）、ＵＮＭＡＰコマンド処理部１０１は、解放を要求されたＴＰＰＳを解放させる（ステップＳ２０５）。
【００７９】
ステップＳ２０４またはステップＳ２０５の終了後、ＴＰＰＳマッピング管理部１０５は、ホストコンピュータ２から解放を要求されたＴＰＰＳが解放状態となるようにマッピング情報テーブル２３ａが記憶するマッピング情報を更新する（ステップＳ２０６）。例えば、ＴＰＰＳマッピング管理部１０５は、解放を要求されたＴＰＰＳを指定する「論理ＬＢＡ」に対応付けられる「物理ＬＢＡ」に格納される値を削除する。
【００８０】
ステップＳ２０６の処理の終了後、ＵＮＭＡＰコマンド処理部１０１は、ＵＮＭＡＰコマンドに対する応答をホストコンピュータ２に送信し（ステップＳ２０７）、マッピング情報更新処理を終了する。
【００８１】
（ライトＩ／Ｏ受領時のＴＰＰＳ獲得処理）
図７は、実施例１に係るストレージ装置におけるライトＩ／Ｏ受領時のＴＰＰＳ獲得処理の処理手順を示すフローチャートである。図７に示すように、ライトＩ／Ｏ処理部１０２は、ホストコンピュータ２からライトＩ／Ｏを受領する（ステップＳ３０１）。
【００８２】
そして、ライトＩ／Ｏ処理部１０２は、ライトＩ／Ｏを要求された論理ＬＢＡにＴＰＰＳを獲得するようにＴＰＰＳ割当管理部１０６に要求する。これにより、ＴＰＰＳ割当管理部１０６は、ライトＩ／Ｏ処理部１０２により要求された論理ＬＢＡにＴＰＰＳを新規に獲得する（ステップＳ３０２）。
【００８３】
続いて、ライトＩ／Ｏ処理部１０２は、ＴＰＰＳ割当管理部１０６による新規のＴＰＰＳが獲得された後、ホストコンピュータ２からライトデータを受信し（ステップＳ３０３）、ホストコンピュータ２に応答する（ステップＳ３０４）。
【００８４】
［実施例１の効果］
実施例１に係るストレージ装置１０は、ＵＮＭＡＰコマンドが発行された場合、解放を要求されたＴＰＰＳをＵＮＭＡＰ予約状態にするのではなく、別のＴＰＰＳを新規に割り当て可能な状態に論理ＬＢＡと物理ＬＢＡのマッピング情報を更新する。その後、ストレージ装置１０は、ホストコンピュータ２からのアクセスに対しては新規に割り当てたＴＰＰＳへアクセスさせ、ストレージ装置１０内部のコピー処理に対しては元々割り当てていた解放を要求されたＴＰＰＳへアクセスさせるように制御する。そして、ストレージ装置１０は、コピーが完了して解放を要求されたＴＰＰＳ内の情報が不要となった時点で解放を要求されたＴＰＰＳを解放し、物理的なディスク容量のプールにＴＰＰＳを未使用領域としてプールする。これにより、ＵＮＭＡＰコマンド処理とコピー処理とが独立な処理となり、ストレージ装置１０は、ライトＩ／Ｏがタイムアウトする可能性を防止できる。
【実施例２】
【００８５】
実施例１は、ストレージ装置１０が、コピー対象の論理ボリュームのデータを記憶するＴＰＰＳに対して解放を要求される場合について説明した。ところで、ストレージ装置１０において、同一の論理ＬＢＡに対して、ＵＮＭＡＰコマンドと、スナップショット型のコピーとが交互に繰り返して実行される場合がある。この場合、ストレージ装置１０は、コピー対象の論理ボリュームのデータを記憶するＴＰＰＳに対して解放を要求され、かつ解放の要求で指定される論理アドレスに新たに対応付けられるＴＰＰＳが記憶する論理ボリュームのデータに対して新たなコピーを実行する。
【００８６】
そこで、実施例２は、ストレージ装置が、コピーの世代数と、コピー元データを記憶するＴＰＰＳの識別子と、コピー先を特定する論理アドレスとを対応付けたコピー情報を記憶する例を示す。
【００８７】
［実施例２に係る情報処理システム１の構成］
図８は、実施例２に係る情報処理システム１の構成を示すブロック図である。実施例２に係る情報処理システム１は、ホストコンピュータ２と、ストレージ装置１０とを有する。なお、実施例２に係る情報処理システム１は、ＣＭ２０およびＣＭ３０が保持するテーブルとファームウェアの機能構成の一部が異なる点を除いて、図１に示した実施例１に係る情報処理システムの構成と同様である。このため、図１に示した各部と同様の役割を果たす機能部については、同一符号を付すことにしてその詳細な説明を省略する。
【００８８】
［実施例２に係るＣＭ２０の構成］
引き続き図８を用いて、実施例２に係るＣＭ２０の構成を説明する。図８に示すように、ＣＭ２０は、ＤＡ２１およびＤＡ２２とＲＡＭ２３とフラッシュメモリ２４とＣＰＵ２５とを有する。
【００８９】
ＲＡＭ２３は、マッピング情報テーブル２３ａと、コピー管理テーブル２３ｂと、コピー世代管理テーブル２３ｃとを有する。また、ＲＡＭ２３には、図示しない、未使用のＴＰＰＳのプールを管理するプール管理情報が含まれる。
【００９０】
コピー世代管理テーブル２３ｃは、コピーの世代数と、コピー元データを記憶するＴＰＰＳの識別子と、コピー先を特定する論理アドレスとを対応付けたコピー情報を記憶する。なお、コピー世代管理テーブル２３ｃが記憶するデータ構造については、図９を用いて後述する。
【００９１】
フラッシュメモリ２４は、ファームウェア２４ａを記憶する。なお、ファームウェア２４ａの機能構成については図１０を用いて後述する。ＣＰＵ２５は、フラッシュメモリ２４が記憶するファームウェア２４ａを読込み、各種演算処理を実行する。なお、ＣＭ３０の構成は、ＣＭ２０と同様である。
【００９２】
［コピー世代管理テーブル２３ｃ（３３ｃ）が記憶するデータ構造］
次に、図９を用いて、コピー世代管理テーブル２３ｃおよびコピー世代管理テーブル３３ｃが記憶するデータ構造について説明する。なお、コピー世代管理テーブル２３ｃとコピー世代管理テーブル３３ｃとは同様であるので、ここでは、コピー世代管理テーブル２３ｃについて説明する。
【００９３】
図９は、コピー世代管理テーブル２３ｃが記憶するデータ構造の一例を示す図である。図９に示すように、コピー世代管理テーブル２３ｃは、「コピー世代」と、「コピー元ＴＰＰＳ」と、「コピー先ＯＬＵ」と、「コピー先論理ＬＢＡ」とを対応付けた情報をする。
【００９４】
ここで、コピー世代管理テーブル２３ｃが記憶する「コピー世代」は、コピーの世代数を示す。言い換えると、「コピー世代」は、同一の論理ＬＢＡに対して、ＵＮＭＡＰコマンドと、スナップショット型のコピーとが交互に繰り返して実行された回数を示す。例えば、「コピー世代」には、「１」、「２」などの値が格納される。
【００９５】
また、コピー世代管理テーブル２３ｃが記憶する「コピー元ＴＰＰＳ」は、コピー元ＴＰＰＳの識別子を示す。例えば、「コピー元ＴＰＰＳ」には、「ＴＰＰＳ１１」、「ＴＰＰＳ２０」などの値が格納される。
【００９６】
また、コピー世代管理テーブル２３ｃが記憶する「コピー先ＯＬＵ」は、コピー先のＯＬＵの識別子を示す。例えば、「コピー先ＯＬＵ」には、「１」、「２」などの値が格納される。なお、ＯＬＵは、オープンシステムで一般的に用いられる論理ユニットである。
【００９７】
また、コピー世代管理テーブル２３ｃが記憶する「コピー先論理ＬＢＡ」は、コピー先のＯＬＵにおける論理アドレスを示す。例えば、「コピー先論理ＬＢＡ」には、「５０００」、「６０００」などの値が格納される。
【００９８】
図９に示す例では、コピー世代管理テーブル２３ｃは、第１世代として、「ＴＰＰＳ１１」が記憶する論理ボリュームのデータを、ＯＬＵ「１」の論理ＬＢＡ「５０００」にコピーすることを示す。同様に、コピー世代管理テーブル２３ｃは、第１世代として、「ＴＰＰＳ１１」が記憶する論理ボリュームのデータを、ＯＬＵ「２」の論理ＬＢＡ「６０００」にコピーすることを示す。
【００９９】
また、コピー世代管理テーブル２３ｃは、第２世代として、「ＴＰＰＳ２０」が記憶する論理ボリュームのデータを、ＯＬＵ「３」の論理ＬＢＡ「７０００」にコピーすることを示す。
【０１００】
［ファームウェア２４ａ（３４ａ）の機能構成］
次に、図１０を用いて、実施例２に係るストレージ装置１０により実行されるファームウェア２４ａおよびファームウェア３４ａの機能構成を説明する。実施例２に係るストレージ装置１０により実行されるファームウェア２４ａおよびファームウェア３４ａの機能構成は同様であるので、ここでは、ファームウェア２４ａおよびファームウェア３４ａをファームウェア２００と称して説明する。
【０１０１】
図１０は、実施例２に係るストレージ装置１０が実行するファームウェア２００の機能構成の一例を示す図である。図１０に示すように、ファームウェア２００は、ＵＮＭＡＰコマンド処理部１０１とライトＩ／Ｏ処理部１０２と競合検知部１０３とコピー処理制御部１０４とＴＰＰＳマッピング管理部１０５とＴＰＰＳ割当管理部１０６とを有する。また、図１０に示すように、ファームウェア２００は、ＴＰＰＳ世代管理部２０１とコピー世代処理制御部２０２とを有する。なお、図２に示したファームウェア１００と同様の機能を有する各部については、同一の符号を付与し、詳細な説明は省略する。
【０１０２】
ＴＰＰＳ世代管理部２０１は、コピー対象のデータを記憶するＴＰＰＳの解放要求を受け付けた場合に、解放要求で指定される論理アドレスに新たに対応付けられる物理アドレスに記憶されるデータに対してコピー処理を実行する場合、以下の処理を実行する。すなわち、ＴＰＰＳ世代管理部２０１は、コピー処理を行うために退避世代番号を付与し、付与した退避世代番号をコピー世代管理テーブル２３ｃに記憶させることで、ＴＰＰＳの世代を管理する。
【０１０３】
コピー世代処理制御部２０２は、コピー対象のデータを記憶するＴＰＰＳの解放要求を受け付けた場合に、解放要求で指定される論理アドレスに新たに対応付けられる物理アドレスに記憶されるデータに対してコピー処理を実行する場合、以下の処理を実行する。すなわち、コピー世代処理制御部２０２は、コピーの世代数に対応付けて、コピー元データを記憶するＴＰＰＳの識別子と、コピー先を特定する論理アドレスとを対応付けたコピー情報をコピー世代管理テーブル２３ｃに記憶させる。例えば、コピー世代処理制御部２０２は、コピー世代ごとに、コピー元のＴＰＰＳとコピー先のＯＬＵとのペアをコピー世代管理テーブル２３ｃに記憶させる。
【０１０４】
なお、コピー処理制御部１０４は、コピー世代管理テーブル２３ｃを参照してコピーの世代数ごとにコピー処理を実行する。
【０１０５】
［実施例２に係るストレージ装置１０による処理動作］
次に、図１１を用いて、実施例２に係るストレージ装置１０による処理動作の一例について説明する。図１１は、実施例２に係るストレージ装置１０による処理動作の一例を示す図である。なお、図１１は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳの解放と、論理ＬＢＡ「２０００」で指定されるＴＰＰＳが記憶する論理ボリュームのデータのコピーとが交互に実行される場合を示す。
【０１０６】
図１１に示すように、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ａ］が記憶する論理ボリュームのデータのコピー（コピー［Ａ］と記載）を実行する（ステップＳ４０１）。また、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ａ］が記憶する論理ボリュームのデータのコピー（コピー［Ｂ］と記載）を実行する（ステップＳ４０２）。
【０１０７】
ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ａ］の解放を要求するＵＮＭＡＰコマンドをホストコンピュータ２から受信する。そして、ストレージ装置１０は、解放を要求されたＴＰＰＳ［Ａ］が記憶する論理ボリュームのデータのコピーを実行中であるので、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ａ］を第１世代として管理する。また、ストレージ装置１０は、ＴＰＰＳ［Ａ］をマッピング情報から削除して、マッピング情報テーブル２３ａ（３３ａ）を更新する（ステップＳ４０３）。従って、ＴＰＰＳ［Ａ］は、ホストコンピュータ２によるＴＰＶに関連付けられるアクセスから退避させることができる。そして、ストレージ装置１０は、ホストコンピュータ２にＵＮＭＡＰコマンドに対する応答を送信する。
【０１０８】
続いて、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳに対するライト要求をホストコンピュータ２から受信する。ストレージ装置１０は、ライト要求を受信時に、論理ＬＢＡ「２０００」に対して新規のＴＰＰＳ［Ｂ］を獲得する。
【０１０９】
そして、ストレージ装置１０は、ホストコンピュータ２からライトデータを受信し、ライト要求に対する応答をホストコンピュータ２に送信する。また、ストレージ装置１０は、ＴＰＰＳ［Ｂ］が記憶する論理ボリュームのデータのコピー（コピー［Ｃ］と記載）を実行する（ステップＳ４０４）。
【０１１０】
続いて、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ｂ］の解放を要求するＵＮＭＡＰコマンドをホストコンピュータ２から受信する。そして、ストレージ装置１０は、解放を要求されたＴＰＰＳ［Ｂ］が記憶する論理ボリュームのデータのコピーを実行中であるので、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ｂ］を第２世代として管理する。また、ストレージ装置１０は、ＴＰＰＳ［Ｂ］をマッピング情報から削除して、マッピング情報テーブル２３ａ（３３ａ）を更新する（ステップＳ４０５）。従って、ＴＰＰＳ［Ｂ］は、ホストコンピュータ２によるＴＰＶに関連付けられるアクセスから退避させることができる。そして、ストレージ装置１０は、ホストコンピュータ２にＵＮＭＡＰコマンドに対する応答を送信する。
【０１１１】
続いて、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳに対するライト要求をホストコンピュータ２から受信する。ストレージ装置１０は、ライト要求を受信時に、論理ＬＢＡ「２０００」に対して新規のＴＰＰＳ［Ｃ］を獲得する。
【０１１２】
そして、ストレージ装置１０は、ホストコンピュータ２からライトデータを受信し、ライト要求に対する応答をホストコンピュータ２に送信する。また、ストレージ装置１０は、ＴＰＰＳ［Ｃ］が記憶する論理ボリュームのデータのコピー（コピー［Ｄ］と記載）を実行する（ステップＳ４０６）。
【０１１３】
続いて、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ｃ］の解放を要求するＵＮＭＡＰコマンドをホストコンピュータ２から受信する。そして、ストレージ装置１０は、解放を要求されたＴＰＰＳ［Ｃ］が記憶する論理ボリュームのデータのコピーを実行中であるので、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ｃ］を第３世代として管理する。また、ストレージ装置１０は、ＴＰＰＳ［Ｃ］をマッピング情報から削除して、マッピング情報テーブル２３ａ（３３ａ）を更新する（ステップＳ４０７）。従って、ＴＰＰＳ［Ｃ］は、ホストコンピュータ２によるＴＰＶに関連付けられるアクセスから退避させることができる。なお、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳに対するライト要求をホストコンピュータ２から受信した場合、論理ＬＢＡ「２０００」に対して新規のＴＰＰＳ［Ｄ］を獲得する。
【０１１４】
そして、ストレージ装置１０は、第１世代のＴＰＰＳ［Ａ］のコピー［Ａ］とコピー［Ｂ］とが終了後に、ＴＰＰＳ［Ａ］を解放する（ステップＳ４０８）。また、ストレージ装置１０は、第２世代のＴＰＰＳ［Ｂ］のコピー［Ｃ］が終了後に、ＴＰＰＳ［Ｂ］を解放する（ステップＳ４０９）。同様に、ストレージ装置１０は、第３世代のＴＰＰＳ［Ｃ］のコピー［Ｄ］が終了後に、ＴＰＰＳ［Ｃ］を解放する（ステップＳ４１０）。
【０１１５】
［実施例２に係るストレージ装置１０による処理の処理手順］
次に図１２を用いて、実施例２に係るストレージ装置１０によるマッピング情報更新処理の処理手順を説明する。図１２は、実施例２に係るストレージ装置１０によるマッピング情報更新処理の処理手順を説明するフローチャートである。
【０１１６】
図１２に示すように、ＵＮＭＡＰコマンド処理部１０１は、ＵＮＭＡＰコマンドを受信する（ステップＳ５０１）。そして、競合検知部１０３は、解放を要求されたＴＰＰＳのコピー処理を実行するか否かを判定する（ステップＳ５０２）。
【０１１７】
ここで、競合検知部１０３により解放を要求されたＴＰＰＳのコピー処理を実行すると判定された場合（ステップＳ５０２、Ｙｅｓ）、ＵＮＭＡＰコマンド処理部１０１は、解放を要求されたＴＰＰＳを即座に解放させない（ステップＳ５０３）。
【０１１８】
そして、ＴＰＰＳ世代管理部２０１は、コピー処理を行うために退避世代番号を付与して、コピー世代管理テーブル２３ｃに記憶させる（ステップＳ５０４）。また、コピー世代処理制御部２０２は、コピー元データを記憶するＴＰＰＳの識別子と、コピー先を特定する論理アドレスとを対応付けたコピー情報をコピー世代管理テーブル２３ｃに記憶させる（ステップＳ５０５）。
【０１１９】
続いて、コピー処理制御部１０４は、コピー処理が複数であるか否かを判定する（ステップＳ５０６）。ここで、コピー処理制御部１０４は、コピー処理が複数であると判定した場合（ステップＳ５０６、Ｙｅｓ）、バックグラウンドで複数のコピー処理を起動する（ステップＳ５０７）。一方、コピー処理制御部１０４は、コピー処理が複数ではないと判定した場合（ステップＳ５０６、Ｎｏ）、バックグラウンドでコピー処理を起動する（ステップＳ５０８）。
【０１２０】
一方、競合検知部１０３により解放を要求されたＴＰＰＳのコピー処理を実行しないと判定された場合（ステップＳ５０２、Ｎｏ）、ＵＮＭＡＰコマンド処理部１０１は、解放を要求されたＴＰＰＳを解放させる（ステップＳ５０９）。
【０１２１】
ステップＳ５０７、ステップＳ５０８またはステップＳ５０９の終了後、ＴＰＰＳマッピング管理部１０５は、ホストから解放を要求されたＴＰＰＳが解放状態となるようにマッピング情報テーブル２３ａが記憶するマッピング情報を更新する（ステップＳ５１０）。
【０１２２】
続いて、ＵＮＭＡＰコマンド処理部１０１は、ＵＮＭＡＰコマンドに対する応答をホストに送信し（ステップＳ５１１）、マッピング情報更新処理を終了する。
【０１２３】
［実施例２の効果］
上述してきたように、実施例２に係るストレージ装置１０は、世代ごとの「コピー元」と「コピー先」とのペアを管理することができる。
【実施例３】
【０１２４】
ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例３では、本発明に含まれる他の実施例について説明する。実施例１および実施例２では、ストレージ装置１０が、解放を要求されたＴＰＰＳが記憶する論理ボリュームのデータをコピーする場合、ＯＬＵをコピーとしてコピーを実行するものとして説明した。ところで、ストレージ装置１０は、ＯＬＵではなく、ＴＰＶをコピー先としてもよいものである。
【０１２５】
また、このような場合、ストレージ装置１０は、コピー処理を実行せず、コピー先についてマッピング情報テーブル２３ａまたはマッピング情報テーブル３３ａを更新するようにしてもよいものである。
【０１２６】
そこで、実施例３では、コピー処理制御部１０４が以下の機能を有する場合を説明する。実施例３に係るコピー処理制御部１０４は、退避させた物理ＬＢＡで指定されるＴＰＰＳが記憶する論理ボリュームのデータのコピー先がＴＰＶである場合、以下の処理を実行する。すなわち、コピー処理制御部１０４は、コピー先のＴＰＶの論理ＬＢＡと、該ＴＰＰＳを指定する物理ＬＢＡとを対応付けて、マッピング情報テーブル２３ａに記憶させる。
【０１２７】
［実施例３に係るストレージ装置１０による処理の処理手順］
図１３を用いて、実施例３に係るストレージ装置１０による処理の処理手順について説明する。図１３は、実施例３に係るストレージ装置１０におけるＴＰＶへのコピー時の処理手順を示すフローチャートである。なお、図１３は、論理ＬＢＡ「２０００」が指定するＴＰＰＳ２２をＴＰＶの論理ＬＢＡ「９０００」にコピーする場合を示す。
【０１２８】
図１３に示すように、ＵＮＭＡＰコマンド処理部１０１は、ＵＮＭＡＰコマンドを受信する（ステップＳ６０１）。そして、競合検知部１０３は、解放を要求されたＴＰＰＳのコピー処理を実行するか否かを判定する（ステップＳ６０２）。
【０１２９】
ここで、ＵＮＭＡＰコマンド処理部１０１は、競合検知部１０３により解放を要求されたＴＰＰＳのコピー処理を実行すると判定された場合（ステップＳ６０２、Ｙｅｓ）、解放を要求されたＴＰＰＳの解放を保留する（ステップＳ６０３）。そして、コピー処理制御部１０４は、コピー先がＴＰＶであるか否かを判定する（ステップＳ６０４）。
【０１３０】
コピー処理制御部１０４は、コピー先がＴＰＶではないと判定した場合（ステップＳ６０４、Ｎｏ）、バックグラウンドでコピー処理を起動する（ステップＳ６０５）。一方、コピー処理制御部１０４は、コピー先がＴＰＶであると判定した場合（ステップＳ６０４、Ｙｅｓ）、バックグラウンドでコピー処理を省略すると判定する（ステップＳ６０６）。そして、コピー処理制御部１０４は、コピー先についてコピー処理の代わりにマッピング情報を更新する（ステップＳ６０７）。例えば、コピー処理制御部１０４は、コピー先にマッピング情報として、論理ＬＢＡ「９０００」とＴＰＰＳ２２とを対応付けた情報をマッピング情報テーブル２３ａに記憶させる。
【０１３１】
一方、競合検知部１０３により解放を要求されたＴＰＰＳのコピー処理を実行しないと判定された場合（ステップＳ６０２、Ｎｏ）、ＵＮＭＡＰコマンド処理部１０１は、解放を要求されたＴＰＰＳを解放させる（ステップＳ６０８）。
【０１３２】
ステップＳ６０５、ステップＳ６０７またはステップＳ６０８の処理の終了後、ＴＰＰＳマッピング管理部１０５は、ホストから解放を要求されたＴＰＰＳが解放状態となるようにマッピング情報を更新する（ステップＳ６０９）。例えば、ＴＰＰＳマッピング管理部１０５は、論理ＬＢＡ「２０００」に対応付けられる「物理ＬＢＡ」に格納される値を削除する。
【０１３３】
そして、ＵＮＭＡＰコマンド処理部１０１は、ＵＮＭＡＰコマンドに対する応答をホストに送信して（ステップＳ６１０）処理を終了する。
【０１３４】
［実施例３の効果］
このように、ストレージ装置は、解放を要求されたＴＰＰＳのコピー先がＴＰＶである場合、コピー処理を省略することができる。また、このコピー処理を省略する処理は、コピー世代を管理する処理と組み合わせることが可能である。
【０１３５】
次に、図１４を用いて、実施例３に係るストレージ装置１０によるコピー処理を省略する処理とコピー世代を管理する処理と組み合わせた処理動作の一例について説明する。図１４は、実施例３に係るストレージ装置１０による処理動作の一例を示す図である。なお、図１４は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳの解放と、論理ＬＢＡ「２０００」で指定されるＴＰＰＳが記憶する論理ボリュームのデータのコピーとが交互に実行され、コピー先がＴＰＶである場合を示す。
【０１３６】
図１４に示すように、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ａ］の解放を要求するＵＮＭＡＰコマンドをホストコンピュータ２から受信する。ここで、ストレージ装置１０は、解放を要求されたＴＰＰＳ［Ａ］が記憶する論理ボリュームのデータのコピー（コピー［Ａ］と記載）を実行する場合、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ａ］を第１世代として管理する。また、ストレージ装置１０は、ＴＰＰＳ［Ａ］をマッピング情報から削除して、マッピング情報テーブル２３ａ（３３ａ）を更新する。従って、ＴＰＰＳ［Ａ］は、ホストコンピュータ２によるＴＰＶに関連付けられるアクセスから退避させることができる。また、ストレージ装置１０は、コピー先がＴＰＶであるので、コピー処理を省略すると判定し、コピー先についてコピー処理の代わりにマッピング情報を更新する（ステップＳ７０１）。
【０１３７】
また、ストレージ装置１０は、コピー［Ａ］の終了後に、ＴＰＰＳ［Ａ］が記憶する論理ボリュームのデータのコピー（コピー［Ｂ］と記載）を実行する（ステップＳ７０２）。この場合、ストレージ装置１０は、コピー元が既に退避させたＴＰＰＳ［Ａ］であるのでＴＰＰＳ［Ａ］が記憶する論理ボリュームのデータを物理的にコピーする。
【０１３８】
続いて、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳに対するライト要求をホストコンピュータ２から受信する。ストレージ装置１０は、論理ＬＢＡ「２０００」に対して新規のＴＰＰＳ［Ｂ］を獲得する。
【０１３９】
そして、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ｂ］の解放を要求するＵＮＭＡＰコマンドをホストコンピュータ２から受信する。ここで、ストレージ装置１０は、解放を要求されたＴＰＰＳ［Ｂ］が記憶する論理ボリュームのデータのコピー（コピー［Ｃ］と記載）を実行する場合、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ｂ］を第２世代として管理する。また、ストレージ装置１０は、ＴＰＰＳ［Ｂ］をマッピング情報から削除して、マッピング情報テーブル２３ａ（３３ａ）を更新する。従って、ＴＰＰＳ［Ｂ］は、ホストコンピュータ２によるＴＰＶに関連付けられるアクセスから退避させることができる。また、ストレージ装置１０は、コピー先がＴＰＶであるので、コピー処理を省略すると判定し、コピー先についてコピー処理の代わりにマッピング情報を更新する（ステップＳ７０３）。
【０１４０】
続いて、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳに対するライト要求をホストコンピュータ２から受信する。ストレージ装置１０は、論理ＬＢＡ「２０００」に対して新規のＴＰＰＳ［Ｃ］を獲得する。
【０１４１】
そして、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ｃ］の解放を要求するＵＮＭＡＰコマンドをホストコンピュータ２から受信する。ここで、ストレージ装置１０は、解放を要求されたＴＰＰＳ［Ｃ］が記憶する論理ボリュームのデータのコピー（コピー［Ｄ］と記載）を実行する場合、論理ＬＢＡ「２０００」で指定されるＴＰＰＳ［Ｃ］を第３世代として管理する。また、ストレージ装置１０は、ＴＰＰＳ［Ｃ］をマッピング情報から削除して、マッピング情報テーブル２３ａ（３３ａ）を更新する。従って、ＴＰＰＳ［Ｃ］は、ホストコンピュータ２によるＴＰＶに関連付けられるアクセスから退避させることができる。また、ストレージ装置１０は、コピー先がＴＰＶであるので、コピー処理を省略すると判定し、コピー先についてコピー処理の代わりにマッピング情報を更新する（ステップＳ７０４）。
【０１４２】
続いて、ストレージ装置１０は、論理ＬＢＡ「２０００」で指定されるＴＰＰＳに対するライト要求をホストコンピュータ２から受信する。ストレージ装置１０は、論理ＬＢＡ「２０００」に対して新規のＴＰＰＳ［Ｄ］を獲得する。
【０１４３】
なお、ストレージ装置１０は、第１世代のＴＰＰＳ［Ａ］のコピー［Ａ］とコピー［Ｂ］とが終了後に、ＴＰＰＳ［Ａ］を解放する。また、ストレージ装置１０は、第２世代のＴＰＰＳ［Ｂ］のコピー［Ｃ］が終了後に、ＴＰＰＳ［Ｂ］を解放する。同様に、ストレージ装置１０は、第３世代のＴＰＰＳ［Ｃ］のコピー［Ｄ］が終了後に、ＴＰＰＳ［Ｃ］を解放する。
【０１４４】
［システム構成等］
本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
【０１４５】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更してもよい。
【０１４６】
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、ストレージ装置１０により実行されるファームウェア２００では、ＴＰＰＳ世代管理部２０１とコピー世代処理制御部２０２とが統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【符号の説明】
【０１４７】
１  情報処理システム
２  ホストコンピュータ
１０  ストレージ装置
１１、１２、１３、１４  ＣＡ
１５、１６、１７、１８  ディスク装置
２０、３０  ＣＭ
２１、２２、３１、３２  ＤＡ
２３、３３  ＲＡＭ
２３ａ、３３ａ  マッピング情報テーブル
２３ｂ、３３ｂ  コピー管理テーブル
２３ｃ、３３ｃ  コピー世代管理テーブル
２４、３４  フラッシュメモリ
２４ａ、３４ａ  ファームウェア
１０１  ＵＮＭＡＰコマンド処理部
１０２  ライトＩ／Ｏ処理部
１０３  競合検知部
１０４  コピー処理制御部
１０５  ＴＰＰＳマッピング管理部
１０６  ＴＰＰＳ割当管理部
２０１  ＴＰＰＳ世代管理部
２０２  コピー世代処理制御部
【図１】
0005915378.tif 000002
【図２】
0005915378.tif 000003
【図３】
0005915378.tif 000004
【図４】
0005915378.tif 000005
【図５】
0005915378.tif 000006
【図６】
0005915378.tif 000007
【図７】
0005915378.tif 000008
【図８】
0005915378.tif 000009
【図９】
0005915378.tif 000010
【図１０】
0005915378.tif 000011
【図１１】
0005915378.tif 000012
【図１２】
0005915378.tif 000013
【図１３】
0005915378.tif 000014
【図１４】
0005915378.tif 000015