(57)【特許請求の範囲】
【請求項１】
プロセッサと、
メモリと、
仮想ボリュームと、
複数の記憶媒体から構成され、前記仮想ボリュームに割り当てられるページ用物理領域を有するページ用ボリュームとを有し、
前記プロセッサは、前記仮想ボリュームのアドレス空間を複数のページに分割し、当該複数のページ各々を少なくとも第一の状態と第二の状態とを含む複数の状態のうちいずれかの状態に分類して管理し、
前記プロセッサは、前記第二の状態に分類されるページをさらに複数のセグメントに分割して管理しており、
前記第一の状態とは、ページにライトデータを書き込むためのライト要求を受けた結果、当該ページに前記ページ用ボリュームからページ用物理領域が割り当てられ、ライトデータが当該ページ用物理領域に格納された状態であり、
前記第二の状態とは、ページ内のセグメントに予め定められた特定パターンデータと一致するライトデータを書き込むためのライト要求を受けた結果、前記メモリ内に当該特定パターンデータと当該セグメントとが対応付けられて管理されている状態であることを特徴とするストレージサブシステム。
【請求項２】
前記複数の状態には、更に第三の状態が含まれ、
前記第三の状態とは、ページに前記ページ用ボリュームからページ用物理領域が割り当てられておらず、かつ当該ページがセグメントに分割されて管理されていない状態であることを特徴とする請求項１記載のストレージサブシステム。
【請求項３】
前記プロセッサは、受信したライト要求に含まれるアドレスで指定されるページが前記第一の状態である場合には、当該ページに割り当てられているページ用物理領域にライトデータを格納することを特徴とする請求項１記載のストレージサブシステム。
【請求項４】
前記第一の状態にある前記ページ内のデータが全て前記特定パターンデータと一致する場合には、前記プロセッサは、前記ページを前記セグメント単位に分割し、各セグメントについて当該セグメントと前記特定パターンデータとを対応付けて前記メモリ内で管理し、
前記プロセッサは、前記ページに割り当てられていたページ用物理領域を開放し、当該ページを前記第二の状態のページとして管理することを特徴とする請求項３記載のストレージサブシステム。
【請求項５】
前記プロセッサは、受信したライト要求に含まれるアドレスで指定されるページが前記第二の状態又は前記第三の状態である場合には、ライトデータが前記特定パターンデータと一致するか否かを判定することを特徴とする請求項２記載のストレージサブシステム。
【請求項６】
前記プロセッサは、前記ライト要求に含まれる前記アドレスで指定されるページが前記第二の状態であり、前記ライトデータが前記特定パターンデータと一致する場合、前記特定パターンデータと前記アドレスで指定されるセグメントとを対応付けて前記メモリ内で管理し、前記ライトデータを破棄することを特徴とする請求項５記載のストレージサブシステム。
【請求項７】
前記プロセッサは、前記ライト要求に含まれる前記アドレスで指定されるページが前記第二の状態であり、前記ライトデータが前記特定パターンデータと一致しない場合、前記アドレスで指定されるページに、前記ページ用ボリュームからページ用物理領域を割り当て、前記メモリ内で管理されている前記特定パターンデータと当該ページ内のセグメントとの対応関係に基づいて、前記ページに割り当てられた前記ページ用物理領域内の当該セグメントに対応する物理領域に当該特定パターンデータを格納し、当該ライトデータを当該アドレスを用いて特定される前記ページ用物理領域内の物理領域に格納し、
前記プロセッサは、前記ページを前記第一の状態のページとして管理することを特徴とする請求項５記載のストレージサブシステム。
【請求項８】
前記プロセッサは、前記ライト要求に含まれるアドレスで指定されるページが前記第三の状態であり、前記ライトデータが前記特定パターンデータと一致する場合、
前記ページを前記セグメント単位に分割して、前記メモリ内に前記アドレスで指定されるセグメントと前記特定パターンデータとを対応付けて記録し、前記ライトデータを破棄し、
前記プロセッサは、前記ページを前記第二の状態のページとして管理することを特徴とする請求項５記載のストレージサブシステム。
【請求項９】
前記プロセッサは、前記ライト要求に含まれるアドレスで指定されるページが前記第三の状態であり、前記ライトデータが前記特定パターンデータと一致しない場合、前記ページに、前記ページ用ボリュームからページ用物理領域を割り当て、当該ページ用物理領域に当該ライトデータを格納し、
前記プロセッサは、前記ページを前記第一の状態のページとして管理することを特徴とする請求項５記載のストレージサブシステム。
【請求項１０】
前記プロセッサは、前記第一の状態にある前記ページに格納されているデータの内前記特定パターンデータと一致するデータのデータ数をカウントしており、
前記プロセッサは、前記ライト要求に従って受信した前記ライトデータが前記特定パターンデータと一致する場合には、当該ライトデータを前記ページに割り当てられている前記ページ用物理領域に格納し、前記データ数を１増加させ、
前記プロセッサは、前記データ数が予め定められた第一の閾値を超えた場合に、当該ページ内のデータが全て前記特定パターンデータと一致するか否かを判定することを特徴とする請求項４記載のストレージサブシステム。
【請求項１１】
前記ストレージサブシステムは更に、複数の記憶媒体から構成され、前記仮想ボリュームに割り当てられるセグメント用物理領域を有するセグメント用ボリュームを有し、
前記プロセッサは、前記第一の状態のページ内に格納されている前記特定パターンデータと一致するデータの数が予め定められた第一の閾値を超え、かつ前記ページ内に格納されている前記特定パターンデータとは一致しないデータの数が予め定められた第二の閾値以下である場合、当該ページを前記セグメント単位に分割し、
前記ページ内の各セグメントについて、当該セグメントに前記特定パターンデータと一致するデータが格納されている場合には、前記プロセッサは当該セグメントと当該特定パターンデータを対応付けて前記メモリ内で管理し、当該セグメントに前記特定パターンデータとは一致しないデータが格納されている場合には、前記プロセッサは当該セグメントに対して前記セグメント用ボリュームからセグメント用物理領域を割り当てて当該セグメント用物理領域に当該データを格納し、
前記プロセッサは、前記ページに割り当てられていた前記ページ用物理領域を開放し、当該ページを前記第二の状態のページとして管理することを特徴とする請求項１記載のストレージサブシステム。
【請求項１２】
前記プロセッサは、前記第二の状態のページに対するライト要求を受信した場合に、当該ライト要求に従って受信したライトデータが前記特定パターンデータと一致しないデータであり、かつ当該ページに格納されている前記特定パターンデータと一致しないデータの数が前記第二の閾値以下である場合は、当該ページに新たに前記セグメント用ボリュームからセグメント用物理領域を割り当て、当該セグメント用物理領域に当該ライトデータを格納することを特徴とする請求項１１記載のストレージサブシステム。
【請求項１３】
前記ストレージサブシステムは更に、複数の記憶媒体から構成される通常ボリュームを有しており、
前記通常ボリュームに格納されているデータを前記仮想ボリュームに移行する場合、
前記プロセッサは、前記通常ボリュームから前記セグメントと同サイズ分のデータを順にリードし、当該リードしたデータ前記仮想ボリュームにライトすることを特徴とする請求項１記載のストレージサブシステム。
【請求項１４】
前記ストレージサブシステムは、複数の記憶媒体からなる物理ボリュームを有する他のストレージサブシステムに接続され、
前記ストレージサブシステムは、前記他のストレージサブシステムの前記物理ボリュームの先頭セグメントから順にデータをリードし、当該データを前記仮想ボリュームにライトすることを特徴とする請求項１記載のストレージサブシステム。
【請求項１５】
前記ストレージサブシステムは、前記物理ボリュームからリードしたデータのうち同じデータがいくつあるかをカウントし、
前記ストレージシステムは、当該カウント数の結果が予め設定されている閾値を超えた場合、当該データを特定パターンデータとして前記メモリ内に登録することを特徴とする請求項１４のストレージサブシステム。
【請求項１６】
送信元ストレージサブシステムと、
前記送信元ストレージサブシステムと通信可能に接続された送信先ストレージサブシステムとを有するストレージシステムであって、
前記送信元ストレージサブシステムは、コピー元ボリュームを有し、
前記送信先ストレージサブシステムは、仮想ボリュームと、複数の記録媒体から構成され当該仮想ボリュームに割り当てられるページ用物理領域を有するコピー先物理ボリュームとを有し、
前記送信先ストレージサブシステムは、前記仮想ボリュームのアドレス空間を複数のページに分割し、当該複数のページ各々を、少なくとも第一の状態及び第二の状態を含む複数の状態のいずれかに分類して管理し、
前記送信先ストレージサブシステムは、前記第二の状態にあるページを更に複数のセグメントに分割して管理しており、
前記第一の状態とは、ページにデータを書き込むための要求を受けた結果、当該ページに前記コピー先物理ボリュームからページ用物理領域が割り当てられ、当該データが当該ページ用物理領域に割り当てられた状態であり、
前記第二の状態とは、予め定められた特定パターンデータと一致するデータをページ内のセグメントに書き込むための要求を受けた結果、当該セグメントと当該特定パターンデータとが対応付けられて管理されている状態であり、
前記送信元ストレージサブシステムは、前記コピー元ボリュームからリモートコピーの対象であるデータを読み出し、前記読み出したデータが前記特定パターンデータと一致する場合には、当該特定パターンデータを識別するＩＤを前記送信先ストレージサブシステムに送信し、
前記送信先ストレージサブシステムは、前記送信元ストレージサブシステムから前記ＩＤを受信した場合に、当該ＩＤによって識別される前記特定パターンデータの格納先となる前記仮想ボリューム内のページが前記第一の状態又は前記第二の状態のいずれの状態にあるかに応じて、異なる処理を実行することを特徴とするストレージシステム。
【請求項１７】
前記ＩＤによって識別される前記特定パターンデータの格納先となる前記仮想ボリューム内のページが前記第一の状態である場合、前記送信先ストレージサブシステムは当該ページに割り当てられているページ用物理領域に当該ＩＤによって識別される前記特定パターンデータを格納することを特徴とする請求項１６記載のストレージシステム。
【請求項１８】
前記ＩＤによって識別される前記特定パターンデータの格納先となる前記仮想ボリューム内のページが前記第二の状態であった場合、前記送信先ストレージサブシステムは当該ＩＤと前記格納先となる前記セグメントとを対応付けて前記メモリ内で管理することを特徴とする請求項１６記載のストレージシステム。
【請求項１９】
前記コピー元ボリュームは、前記送信元ストレージサブシステムが有する仮想ボリュームであることを特徴とする請求項１６記載のストレージシステム。
【請求項２０】
前記コピー元ボリュームは、複数の記憶媒体からなる物理ボリュームであることを特徴とする請求項１６記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
複数のディスク装置を有するストレージサブシステムに関する。特に、ストレージサブシステムが有する記憶領域を有効に使用するための技術に関する。
【背景技術】
【０００２】
計算機システムに用いられる記憶装置システムとして、複数のディスク装置を有するディスクアレイシステム（以下、ストレージサブシステムとも呼ぶ）がある。ディスクアレイシステムでは、複数のディスク装置を並列に動作させることで、ディスク装置を単体で用いた記憶装置システムに比べ高速化を実現している。
【０００３】
ディスクアレイシステム内のディスク容量を効率的に利用するための技術として、仮想ボリューム技術がある。本技術は、仮想的な記憶領域を計算機に提供しておき、仮想的な記憶領域の内ライト要求があった領域にのみ物理的な記憶領域を割り当てる技術である。
【０００４】
また、ディスク容量を効率的に利用するための別の技術として重複排除技術がある。本技術は、ライト要求を受けたデータと同じデータが、当該ライト要求を受信する以前にストレージサブシステムに格納されている場合には、当該既に格納されているデータと同一データである旨のみを記憶し、ライト要求を受けたデータそのものはストレージサブシステムに格納しない技術である。
【０００５】
重複排除技術には、ストレージサブシステムに格納する全てのデータに対して重複排除制御を行うものと、予め登録した特定パターンデータに対してのみ重複排除制御を行うものがある。前者はデータを格納するために必要とされる記憶容量の削減効果（以下容量削減効果と呼ぶ）を高くすることができるが、処理時間が長くなる上に管理情報が多くなる。一方、後者は管理情報を少なくすることができるが、容量削減効果が限定される。
【０００６】
特許文献１では、複数の物理記憶装置の集合からなる物理記憶スペース上の領域をある単位長の物理ブロックで分割し、物理ブロックによって物理記憶スペースを割り当てることにより論理記憶装置を構成するストレージ装置において、前記論理記憶装置上の領域毎に、前記物理ブロックが割り当てられているか又は所定のデータ配置パターンから生成されるデータに従うかを示す識別情報を記録する論理記憶管理テーブルを備え、前記論理記憶装置の領域に対するデータの書き込み要求があった場合、書き込み要求データのデータ配置パターンが予め登録されたデータ配置パターンと一致する場合に、一致するデータ配置パターンの識別情報を、前記論理記憶管理テーブルの書き込み要求のあった領域に対応させて記録し、前記書き込み要求データを破棄する技術が記載されている。
【０００７】
【特許文献１】特開2005-135116号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１では、仮想ボリューム技術と重複排除技術の双方が用いられているが、仮想ボリュームの管理サイズと重複排除の管理サイズが同一である。仮想ボリューム技術及び重複排除技術による容量削減効果を高くするために両者の管理サイズを小さくした場合、管理情報が大きくなり、全ての管理情報をキャッシュ等の高速アクセスできる記憶媒体に格納しようとすると、システムが高価になる。一方で、管理サイズを大きくすると管理情報は減るが、容量削減効果は低くなる。すなわち、管理情報量と要領削減効果との間にはトレードオフの関係がある。従って、仮想ボリューム技術及び重複排除技術のための管理情報量を抑えつつ、ストレージサブシステムの記憶容量を効率的に使用するための技術が求められている。
【課題を解決するための手段】
【０００９】
ストレージサブシステムは、プロセッサと、メモリと、仮想ボリュームと、複数の記憶媒体から構成され仮想ボリュームに割り当てられるページ用物理領域を有するページ用ボリュームとを有している。そして、プロセッサは仮想ボリュームのアドレス空間を複数のページに分割し、複数のページ各々を少なくとも第一の状態と第二の状態とを含む複数の状態のうちいずれかの状態に分類して管理する。プロセッサは第二の状態に分類されるページをさらに複数のセグメントに分割して管理している。ここで、第一の状態とは、ページにライトデータを書き込むためのライト要求を受けた結果、当該ページにページ用ボリュームからページ用物理領域が割り当てられ、ライトデータがページ用物理領域に格納された状態を指す。また、第二の状態とは、ページ内のセグメントに予め定められた特定パターンデータと一致するライトデータを書き込むためのライト要求を受けた結果、メモリ内に特定パターンデータとセグメントとが対応付けられて管理されている状態を指す。
【発明の効果】
【００１０】
ボリューム仮想化技術及び重複排除技術のための管理情報量を抑えつつ、ストレージサブシステムの記憶容量を効率的に使用することができる。
【発明を実施するための最良の形態】
【００１１】
以下に、本発明の実施の形態を説明する。
【実施例１】
【００１２】
以下に本発明の実施形態の一例を説明する。尚、本発明は以下に記載する実施形態のみに限定されるものではない。
【００１３】
図１は、本発明を適用するストレージシステムのハード構成の一例を示している。ストレージシステムは、ストレージサブシステム００００、ホストコンピュータ（ホスト）０００１を有しており、ストレージサブシステム００００とホスト０００１は、ホスト・インタフェース（ホストI/F）０００２によって接続される。ストレージサブシステム００００は、ホスト・インタフェース０００２、管理インタフェース（管理I/F）０００３、メモリとCPUから構成されるコントローラ０００４、キャッシュメモリ０００５、ディスク・インタフェース（ディスクI/F）０００７、複数のハードディスク（HDD）０００６から構成され、HDD以外は内部バス０００８で接続されている。ストレージサブシステム００００の構成管理は、管理端末０００９上で動作する管理ソフトウェア００１０によって行われる。管理端末０００９とストレージサブシステム００００とは、管理インタフェース０００３によって接続される。
【００１４】
尚、図示しないが、管理端末０００９及びホスト０００１は各々、CPU、メモリ、ストレージサブシステム００００との通信を行うための通信I/F等を有する一般的な計算機であり、上述の管理ソフトウェア００１０は管理端末０００９内のメモリに格納されて管理端末０００９のCPUによって実行される。
【００１５】
図２は、ストレージサブシステム００００の論理的なシステム構成の一例を示している。各種プログラム及び各種テーブルの詳細については後述する。尚、これらのプログラム及びテーブルは図１に示すコントローラ０００４内のメモリに格納されており、コントローラ０００４のCPUによって実行される。ただし、０１１３、０１１４、０１１７、０１１８のプログラムについては、実施例１では使用しないため、実施例２以降で詳細に説明する。
【００１６】
０１０４は通常ボリュームであり、ストレージサブシステム００００は複数の通常ボリューム０１０４を有する。各通常ボリューム０１０４は、複数のHDD０００６によって構成されるRAIDグループ等のHDDグループ上に構成された記憶領域であって、ホスト０００１及び管理端末０００９からは１つの論理的な記憶領域として認識される。
【００１７】
０１０２は仮想ボリュームであり、ストレージサブシステム００００は複数の仮想ボリューム０１０２を有する。仮想ボリューム０１０２は通常ボリューム０１０４と同様のアドレス空間を持ち、ホスト０００１からは通常ボリューム０１０４と同様に１つの論理的な記憶領域として認識され、通常ボリューム０１０４と同様にデータのリード、またはライトが行われる。仮想ボリューム０１０２と通常ボリューム０１０４との相違点は、通常ボリューム０１０２にはデータのライト前から物理領域が割り当てられているのに対し、仮想ボリューム０１０４にはデータがライトされたことを契機に物理領域が割り当てられる点である。仮想ボリューム０１０４を用いれば、ライトがない場合は物理領域を割り当てずに済むため、ストレージに実装する物理領域を少なくすることができ、記憶容量の有効活用が可能となる。尚、仮想ボリュームに割り当てられる物理領域は、ページ用プール０１０５から確保される。ページ用プール０１０５にはページ用ボリューム０１０３が複数含まれる。ページ用ボリューム０１０３は通常ボリューム０１０４と同様、複数のHDD０００６によって構成されるRAIDグループ等のHDDグループ上に構成された記憶領域である。従って仮想ボリュームには、ページ用プール０１０５に属するページ用ボリューム０１０３上の物理領域が割り当てられることとなる。
【００１８】
図３は、仮想ボリューム０１０２のアドレス空間の一例を示している。仮想ボリューム０１０２のアドレス空間は複数個のページに分割されて管理される。ページの管理が容易になるため、通常はページのサイズを固定サイズとする。仮想ボリュームのアドレス空間０２０１上のページには、（ａ１）（ａ２）（ａ３）の３つの状態があり、それぞれの状態に応じて異なる管理が行われる。さらに（ａ２）の状態であるページは、セグメントという単位で複数個に分割されて管理される。ここで、図３ではページ内を８個のセグメントに分割しているが、ページ内のセグメント数は２個以上であれば個数は問わない。また、セグメントの管理が容易となるため、通常はセグメントのサイズを固定サイズとする。
【００１９】
（ａ１）（ａ２）（ａ３）の状態について、詳細に説明する。（ａ１）の状態は、ページ内にホスト０００１からのライト要求があり、その結果としてページに物理領域が割り当てられた状態である。
【００２０】
（ａ２）の状態は、ページ内にホスト０００１からライト要求があったが、ライトデータがストレージサブシステム００００の管理する特定パターンのデータと一致したため、特定パターンデータである旨のみが管理情報として後述するセグメント管理テーブル０１２２に記録され、ページに物理領域が割当たっていない状態である。即ちこの状態のページは、先述の重複排除技術によって記憶容量の削減が行われている。また（ａ２）の状態にあるページをセグメント単位で管理するのは、上述の通り重複排除制御を行う際には管理単位をより小さくした方が重複排除による記憶容量の削減効果が高いからである。即ち、重複排除制御が実施されるページ（（ａ２）状態のページ）についてはよりサイズの小さいセグメントを管理単位とすることでストレージサブシステムにおける記憶容量の削減効果を高め、重複排除制御が実施されないページ（（ａ１）及び後述の（ａ３）状態のページ）についてはセグメント単位ではなくページ単位で管理を行うことによって管理情報及び処理負荷の増大を防止しているのである。
【００２１】
（ａ３）の状態は、ページ内に未だホスト０００１からのライト要求がないため、物理領域が割当たっていない状態である。この状態のページは先述の仮想ボリューム技術によって記憶容量が削減されている。
【００２２】
以上のように、ホストからライト要求があったかどうか、及びライト要求があった場合にはライト要求に含まれるライトデータが特定パターンのデータであるか否かに応じて、仮想ボリューム０１０２のアドレス空間上の各ページを（ａ１）（ａ２）及び（ａ３）の状態に分類して管理することにより、管理情報量を抑えつつ容量削減効果を高くすることが可能となる。
【００２３】
図４は、仮想ボリューム０２０１のアドレス空間を管理するために用いられる、仮想ボリューム管理情報０２０２の一例を示す。仮想ボリューム管理情報０２０２は、仮想ボリューム０１０２の作成時に、仮想ボリューム０１０２ごとに作成される。各仮想ボリューム管理情報０２０２は、仮想ボリュームを識別する仮想ボリューム番号（仮想ボリューム＃）０２１１の欄と、１つのページ管理テーブル０１２１を有しており、更に仮想ボリューム＃０２１１で識別される仮想ボリュームに状態が（ａ２）であるページが存在する場合には、状態が（ａ２）であるページの個数分セグメント管理テーブル０１２２を有する。
【００２４】
ページ管理テーブル０１２１は、仮想ボリューム０２０１のアドレス空間上の各ページの状態を管理するテーブルである。セグメント管理テーブル０１２２は、（ａ２）の状態であるページ内のセグメントを管理するテーブルであり、（ａ２）の状態であるページの個数分作成される。
【００２５】
まず、ページ管理テーブル０１２１の説明をする。ページ管理テーブル０１２１のページ番号（ページ♯）欄０２０３には、仮想ボリューム０１０２が有するページの番号が記録される。状態欄０２０４には、該ページの状態が記録される。本実施例では、（ａ１）の状態に対応する値を０、（ａ２）の状態に対応する値を１、（ａ３）の状態に対応する値を２とする。領域番号（領域＃）欄０２０５には、当該ページにページ用プール０１０５内のどの物理領域が割り当てられたかを示す情報が記録される。従って、状態０２０４が０である場合、すなわちページの状態が（ａ１）である場合には、該ページに割り当てられた物理領域を示す識別番号が領域＃０２０５に記録されるが、状態０２０４が１若しくは２である場合、即ちページ状態が（ａ２）若しくは（ａ３）である場合には、当該ページには物理領域が割り当てられていないので領域＃０２０５にはnullが記録される。尚、ページ用プール０１０５内の物理領域は後述するプール管理テーブル０１２３によって管理されている。テーブル番号（テーブル＃）欄０２０６には、当該ページのセグメントを管理するセグメント管理テーブル０１２２を示す識別番号が記録される。従って状態０２０４が１である場合、即ちページの状態が（ａ２）である場合には当該ページに対応するセグメント管理テーブル０１２２の識別番号がテーブル＃０２０６に記録されるが、それ以外の場合（ページ状態が（ａ１）若しくは（ａ３）の場合）にはページはセグメント単位で管理されていないためセグメント管理テーブル０１２２も存在せずテーブル＃０２０６にはnullが記録される。特定パターンカウント数欄０２０７には該ページに対するライト要求の内、ライトデータがストレージサブシステムが管理する特定パターンデータと一致した回数を示す数が記録される。尚、特定パターンカウント数０２０７は、状態が（ａ１）であるページについて記録され、状態が（ａ２）若しくは（ａ３）であるページについてはnull値が記録される。ページの状態が（ａ２）である場合、当該ページに書き込まれたライトデータは全て特定パターンデータと一致しているはずであり、ページの状態が（ａ３）である場合は未だホストからライト要求を受信していないため、特定パターンと一致するデータの数をカウントする必要がないからである。
【００２６】
次にセグメント管理テーブル０１２２を説明する。セグメント管理テーブル０１２２のセグメント番号欄（セグメント＃）０２０８には、一つのページ内に存在する各セグメントに付けられた識別番号が記録される。各セグメントは、特定パターンデータをライトするようホストからライト要求を受け特定パターンデータが書き込まれた旨の記録を行っている状態と、ホストから未だライト要求を受けていない状態の２つの状態を取りうる。フラグ欄０２０９には、上記セグメントの状態を識別する値が記録される。本実施例では特定パターンデータが書き込まれた旨の記録を行っている状態を０、セグメントに対してライト要求を未だ受け取っていない状態を１とする。パターンID０２１０にはセグメントに対してホストからライト要求のあったデータのパターンを示す識別番号が記録される。従って、フラグ０２０９が０の場合にのみ、パターンID０２１０欄に特定データパターンを識別するIDが記録されることとなり、フラグ０２０９が１の場合にはパターンID０２１０にはnullが記録される。尚、ホストからライトを要求されたライトデータが特定パターンデータであるか否かを識別するために使用する、特定パターンデータを管理するテーブル０１２０については後述する。
【００２７】
図５はページ用プール０１０５を構成する記憶領域（物理領域）を管理するプール管理テーブル０１２３の一例を示す。領域番号（領域＃）１２３１欄にはページ用プール０１０５を構成する物理領域の識別番号が記録される。この領域＃は先述のページ管理テーブル０１２１の領域＃０２０５から参照されている。割り当てフラグ１２３２欄には、当該物理領域が仮想ボリューム０１０２に割り当てられているか否かを示すフラグが記録される。本実施例では、領域が未割り当ての場合は０を、割り当て済みの場合は１を記録する。
プールLU番号（プールLU＃）欄１２３４には、領域＃１２３１が示す物理領域が属するページ用ボリューム０１０３の識別番号が記録され、開始アドレス欄１２３５には当該物理領域のページ用ボリューム０１０３内における位置を特定するための開始アドレスが記録される。即ち、ページ用プール０１０５を構成する各物理領域は、プールLU＃１２３４によって識別されるページ用ボリューム０１０３内の、開始アドレス１２３５からページサイズと等しいサイズ分の記憶領域に相当する。
【００２８】
図６は仮想ボリューム０１０２内へライト要求のあったライトデータが特定パターンデータであるか否かを判断する際に使用する、特定パターンデータを管理するための特定パターン管理テーブル０１２０の一例である。特定パターン管理テーブル０１２０においては、特定パターンデータを識別するIDがパターンID１２０１に記録され、パターンデータ１２０２の列には、該特定パターンのデータが記録される。記録される特定パターンのデータサイズは、セグメントサイズと同一とする。
【００２９】
図７は、ページの状態（ａ１）から（ａ２）へ遷移させるか否かを判断する際に用いられる閾値を管理する閾値管理テーブル０１２４の一例である。尚、ページの状態（ａ１）から（ａ２）へ遷移させる処理は図１３を用いて後述する。閾値管理テーブル０１２３では、仮想ボリューム０１０２を識別する仮想ボリューム番号が仮想ボリューム＃１２４１欄に記録され、仮想ボリュームごとに特定パターンカウント数の閾値γ１２４２が記録されている。ユーザは管理ソフトウェア００１０上で、各々の仮想ボリューム０１０２に対して閾値γを指定することが可能である。そして、先述のページ管理テーブル０１２１で管理されている特定パターンカウント数０２０７が閾値γに達した場合に、ページ状態（ａ１）にあるページに実際に書き込まれているデータが調べられ、当該データが全て特定パターンデータであると認められた場合に、当該データの状態が（ａ１）から（ａ２）へ遷移されることとなる。
【００３０】
図８は、仮想ボリューム作成プログラム０１１０の処理フロー０３０１の一例を示す。まずユーザは，管理ソフトウェア００１０上で，仮想ボリューム０１０２の作成をストレージサブシステム００００の仮想ボリューム作成プログラム０１１０に指示する。仮想ボリューム作成プログラム０１１０は管理ソフトウェア００１０から仮想ボリューム作成コマンドを受領し（ステップ０３０２）、仮想ボリューム０１０２を作成し、併せて仮想ボリューム管理情報０２０２を作成する（ステップ０３０３）。即ち仮想ボリューム作成プログラム０１１０は、作成した仮想ボリュームに識別番号を割り当てて、仮想ボリューム管理情報０２０２の仮想ボリューム＃０２１１に記録する。また、このとき作成された仮想ボリューム０１０２内のページに対しては未だホストからのライト要求を受け付けていないため、該仮想ボリュームに対して作成されたページ管理テーブル０１２１の状態０２０４には、全てのページについて（ａ３）を示す２を記録し、領域＃０２０５、テーブル＃０２０６、特定パターンカウント数０２０７にはnull値を記録する。更にセグメント管理テーブル０１２２は作成しない。次に、仮想ボリューム作成プログラム０１１０は閾値管理テーブル０１２４の仮想ボリューム＃１２４１に、作成した仮想ボリューム０１０２を識別する番号を記録し、ユーザが管理ソフトウェア００１０上で任意に指定した閾値を閾値γ１２４２に記録する（ステップ０３０４）。そして仮想ボリューム作成プログラム０１１０は、管理ソフトウェア００１０に仮想ボリューム作成終了を応答して（ステップ０３０５）処理を終了する。
【００３１】
図９は、特定パターン設定プログラム０１１５の処理フロー０４０１の一例を示す。ユーザは、管理ソフトウェア００１０上で特定パターンとして追加（または削除）するデータを指定し、特定パターン設定プログラム０１１５に、特定パターン管理テーブル０１２０への特定パターンデータの追加（または削除）を指示する。特定パターン設定プログラム０１１５は、管理ソフトウェア００１０から特定パターンデータの設定コマンドを受領する（ステップ０４０２）。設定コマンドが特定パターンデータとして新たなデータを追加するよう指示するものである場合には、特定パターン設定プログラム０１１５はコマンドで指定されるデータにIDを割り当てて、該IDと共に指定されたデータを特定パターン管理テーブル０１２０に記録する（ステップ０４０３）。
【００３２】
設定コマンドが特定パターン管理テーブル０１２０からの特定パターンデータの削除を指示するものである場合には、特定パターン設定プログラム０１１５は、設定コマンドで指定されるIDから削除対象の特定パターンデータを識別し、特定パターン管理テーブル０１２０から該IDと識別された特定パターンデータを削除する（ステップ０４０３）。
【００３３】
特定パターン管理テーブルの更新が終了すると、特定パターン設定プログラム０１１５は、設定終了を管理ソフトウェア００１０に応答して（ステップ０４０４）、処理を終了する。
【００３４】
図１０は、ページの状態を（ａ１）から（ａ２）へと変遷させるか否かを判断する際に用いられる閾値γを変更する閾値変更プログラム０１１６の処理フロー０１１６の一例を示す。ユーザは、管理ソフトウェア００１０上で閾値を変更したい仮想ボリュームを識別する番号と変更後の閾値を指定し、管理ソフトウェア００１０は閾値変更プログラム０１１６に、閾値管理テーブル０１２４上の閾値γ１２４２の変更を指示する。閾値変更プログラム０１１６は管理ソフトウェア００１０から閾値変更コマンドを受領し（ステップ０５０２）、閾値管理テーブル０１２４にて指定された仮想ボリュームの閾値を指定された値に変更する（ステップ０５０３）。閾値変更プログラム０１２４は閾値の変更が終了すると、閾値変更終了を管理ソフトウェア０１１０に応答する（ステップ０５０４）。
【００３５】
図１１は、リードプログラム０１１２の処理フロー１００１の一例である。リードプログラム０１１２はホスト０００１から仮想ボリューム０１０２に対するリード要求を受領すると（ステップ１００１）、指定された仮想ボリュームのページ管理テーブル０１２１を参照し、リード要求があったアドレスに対応するページの状態０２０４をチェックする（ステップ１００２）。尚、リード要求の中にはリード対象の仮想ボリュームを指定するための仮想ボリューム番号と、当該仮想ボリュームにおけるリード対象領域のアドレス情報が含まれている。一方仮想ボリュームを構成する各ページは所定のサイズを有するため、リード要求に含まれるアドレス情報と各ページのサイズからリード対象のページを特定することができる。
【００３６】
ページの状態が（ａ１）である場合、該ページには物理領域が割り当てられているため、リードプログラム０１１２はページ管理テーブル０１２１の領域＃０２０５を参照し、該ページに対応する物理領域の識別番号を特定する。更に特定された物理領域の識別番号に基づいてプール管理テーブル０１２３を参照し、リードプログラム００１２はリード対象のページ用ボリューム０１０３の番号１２３４と当該ページ用ボリューム０１０３内におけるリード対象領域の開始アドレス１２３５を取得する（ステップ１００４）。そして、リードプログラム０１１２は取得したページ用ボリュームの番号とアドレスで指定される物理領域から、リード対象のデータをリードし、リードしたデータをホスト０００１へ送信する（ステップ１００５）。
【００３７】
ページの状態が（ａ２）である場合、該ページはさらにセグメントに分割されて管理されているため、リードプログラム０１１２は指定された仮想ボリューム０１０２についてのページ管理テーブル０１２１のテーブル＃０２０６を参照し、該ページに対応するセグメント管理テーブル０１２２を取得する（ステップ１００６）。そして、リードプログラム０１１２は取得したセグメント管理テーブル０１２２を参照してリード対象のセグメントのフラグ０２０９を確認する(ステップ１００７)。尚、ページを構成するセグメントも所定のサイズを有するため、リード要求に含まれるアドレス情報と各セグメントのサイズからリード対象のページを特定することができる。
【００３８】
該フラグが０であった場合、該セグメントには特定パターンのデータが割り当てられているため、リードプログラム０１１２はパターンID０２１０を参照し、該IDで識別されるデータを特定パターン管理テーブル０１２０より取得し該データをホスト０００１へ送信する（ステップ１００９）。一方、フラグ０２０９が１であった場合は、該セグメントには未だデータが書き込まれていないため、所定のフォーマットデータをホスト０００１へ送信する（ステップ１０１０）。尚、一般的なストレージサブシステムではフォーマットデータをゼロとすることが多いが、この限りではない。また、フォーマットデータは、仮想ボリュームごとにユーザが指定することも可能である。
【００３９】
ページの状態が（ａ３）である場合は、該ページには未だデータが書き込まれていない。従ってリードプログラム０１１２はステップ１０１０と同様フォーマットデータをホスト０００１へ送信する（ステップ１００３）。
【００４０】
図１２は、ライトプログラム０１１１の処理フロー０６０１の一例である。ライトプログラム０１１１は、仮想ボリューム０１０２に対するライト要求をホスト０００１から受領すると、指定された仮想ボリュームについてのページ管理テーブル０１２１を参照し、ライト要求があったアドレスに対応するページの状態０２０４をチェックする（ステップ１００２）。尚、ライト対象のページの指定方法は、先述のリード処理の際と同様である。
【００４１】
ライトプログラム０１１１はページの状態が（ａ１）である場合はWrite処理（１）（ステップ０６０４）、ページの状態が（ａ２）である場合はWrite処理（２）（ステップ０６０５）、ページの状態が（ａ３）である場合はWrite処理（３）（ステップ０６０６）を実行する。Write処理（１）（２）（３）についての詳細は図１３、図１４、図１５を用いて説明する。
【００４２】
図１３は、ライトプログラム０１１１がライト要求を受けた際、ライト対象のページの状態が（ａ１）である場合に実行される、先述のWrite処理（１）（ステップ０６０４）の一例を示す。ライトプログラム０１１１はライト対象の仮想ボリュームについてのページ管理テーブル０１２１を参照し、ライト対象のページに割り当てられている物理領域の領域＃０２０５を特定する。ライトプログラム０１１１は、特定された物理領域のプールＬＵ＃１２３４と開始アドレス１２３５をプール管理テーブル０１２３から取得する（ステップ０７０１）。そして、取得したプールＬＵ＃１２３４及び開始アドレス１２３５で指定される物理領域にライトデータを書き込み（ステップ０７０２）、ライト完了報告をホスト０００１に送信する（ステップ０７０３）。
【００４３】
その後、ライトプログラム０１１１は特定パターン管理テーブル０１２０を参照して、ライト要求のあったライトデータが特定パターンデータのいずれかと一致しているか否かを判定する（ステップ０７０４）。ライトデータが特定パターンデータ１２０２と一致しない場合は、ライト処理を終了する。ライトデータが特定パターンデータ１２０２に一致する場合はステップ０７０５に進み、ページ管理テーブル０１２１を参照して、ライト要求を受けたページの特定パターンカウント数０２０７に１を加える。
【００４４】
ステップ０７０５の後ステップ０７０６に進み、ライトプログラム０１１１は、閾値管理テーブル０１２４を参照し、ライト対象の仮想ボリュームに対応する閾値γ１２４２を特定し、ステップ０７０５にて１を加えた後の特定パターンカウント数０２０７が該閾値を超えているか否かを判定する。該閾値を超えていない場合はライト処理を終了する。特定パターンカウント数が該閾値を超えている場合にはステップ０７０７に進み、ライトプログラム０１１１は該ページ内に書き込まれているデータが全て特定パターンデータと一致するデータであるか否かを判定する。該ページに書き込まれているデータが１つでも特定パターンデータと一致しない場合には、ライト処理を終了する。該ページに書き込まれているライトデータが全て特定パターンデータと一致する場合には、ステップ０７０８に進み、ライトプログラム０１１１はライト対象のページについてセグメントテーブル０１２２を新規に作成する。このとき当該ページについては全データが特定パターンデータであるため、該セグメントテーブル０１２２のフラグ０２０９には全て０が設定される。そしてライトプログラム０１１１は、特定パターン管理テーブル０１２０を参照して、当該ページの各セグメントに格納されている特定パターンデータを識別するIDを特定してパターンID０２１０に記録する（ステップ０７０８）。その後、ライト対象のページに割り当てていたページ用プール０１０５内の物理領域を開放する（ステップ０７０９）。ステップ０７０８、０７０９により、ライト対象のページの状態を（ａ１）から（ａ２）へと遷移させたため、ライトプログラム０１１１は、ページ管理テーブル０１０２１の該ページに対応する状態０２０４を０から１に変更する（ステップ０７１０）。また、ページ管理テーブル０１２１のテーブル＃０２０６に、ステップ０７０８で新規に作成されたセグメント管理テーブル０１２２を識別する番号を記録する（ステップ０７１１）。
【００４５】
以上Write処理（１）によれば、一旦物理領域が割り当てられていたページであっても、特定パターンデータのみで構成されることになったページについては、割り当てていた物理領域を開放し、どの特定パターンデータがホストから書き込まれたかを示す管理情報だけを記録すれば良く、容量削減効果を高くすることが可能となる。
【００４６】
図１４は、ライトプログラム０１１１が、ライト対象のページの状態が（ａ２）である場合に実行する、先述のWrite処理（２）（ステップ０６０５）の一例を示す。ライトプログラム０１１１は、特定パターン管理テーブル０１２０を参照して、パターンデータ１２０２の中にライト要求を受けたライトデータと一致するデータがあるか否かを判定する（ステップ０８０１）。
【００４７】
ステップ０８０１にて一致する特定パターンデータが存在する場合はステップ０８０２に進み、ライトプログラム０１１１はライトデータと一致する特定パターンデータを識別するIDを、特定パターン管理テーブル０１２０のパターンID１２０１から特定する。そしてライト対象のページのセグメント管理テーブル０１２２を参照し、ライト対象のセグメントのパターンID０２１０に特定したパターンデータのIDを記録する（ステップ０８０２）。尚、ライト対象のセグメントはリード対象のセグメントと同様の方法にて特定することができる。その後、ライトプログラム０１１１は、ライト完了報告をホスト０００１に送信して（ステップ０８０３）、ライトデータを解放し（ステップ０８０４）、ライト処理を終了する。
【００４８】
ステップ０８０１にてライトデータが特定パターンデータと一致しない場合はステップ０８０５に進み、ライトプログラム０１１１はライト対象のページにページ用プール０１０５から物理領域を割り当てるため、プール管理テーブル０１２３を参照する。そして、ライトプログラム０１１１は未割当の物理領域を示す割り当てフラグ１２３２が０である領域を確保する（ステップ０８０５）。即ち、ライトプログラム０１１１は当該未割当物理領域のフラグ１２３２を１に変更すると共に、ライト対象の仮想ボリュームのライト対象ページのページ管理テーブル０１２１に、領域＃０２０５として確保した物理領域の識別番号を記録する。
【００４９】
ステップ０８０５にて確保した物理領域に、ライトプログラム０１１１は、ライト対象のページに元々割り当てられている（即ちホストからライト要求を受け、実際の物理領域へのデータの格納は行わずに特定パターンデータが書き込まれた旨の管理のみをしている）特定パターンデータを格納する（ステップ０８０６）。即ちライトプログラム０１１１は、ライト対象の仮想ボリュームについてのページ管理テーブル０１２１を参照し、ライト要求を受けたページに対応するテーブル＃０２０６から該ページのセグメント管理テーブル０１２２を取得する。そして、該セグメント管理テーブル０１２２においてパターンID０２１０が記録されている各セグメントについて、ライトプログラム０１１１は特定パターン管理テーブル０１２０を参照し、該パターンIDで識別される特定パターンデータを取得して、該セグメントに対応する確保した物理領域上の記憶領域に該特定パターンデータを格納する。尚この時物理領域上の書き込まれた特定パターンデータの数を、ライトプログラム０１１１は、当該ページの特定パターンカウント数０２０７としてページ管理テーブル０１２１に記録することとしても良い。
【００５０】
さらにライトプログラム０１１１は、ライト対象セグメントに対応する、確保した物理領域上の記憶領域に、ライトデータを書き込む（ステップ０８０７）。
【００５１】
ステップ０８０５〜０８０７により、ライト要求を受けたページの状態を（ａ２）から（ａ１）へと遷移させたため、ライトプログラム０１１１は、ページ管理テーブル０１０２１の該ページに対応する状態０２０４を１から０に変更し、テーブル＃０２０６にnullを記録すると共に、当該ページに関するセグメント管理テーブル０１２２を破棄する（ステップ０８０８）。その後ライトプログラム０１１１はホスト０００１にライト完了報告を送信して（ステップ０８０９）ライト処理を終了する。
【００５２】
図１５は、ライト要求対象のページの状態が（ａ３）である場合にライトプログラム０１１１が実行するWrite処理（３）の一例を示す。ライトプログラム０１１１は、特定パターン管理テーブル０１２０を参照して、特定パターンデータ１２０２の中にホストから受信したライトデータと一致するデータがあるか否かを判定する（ステップ０９０１）。
【００５３】
ステップ０９０１にて一致するデータが存在する場合はステップ０９０２に進み、ライトプログラム０１１１はライト要求対象のページのセグメントテーブル０１２２を新規に作成する（ステップ０９０２）。そしてライト対象のセグメントについてフラグ０２０９に０を設定し、さらに特定パターン管理テーブル０１２０を参照して、ライトデータと同じ特定パターンデータを識別するIDを特定し、特定したIDをパターンID０２１０に記録する（ステップ０９０３）。ステップ０９０２、０９０３によりライト対象のページの状態が（ａ３）から（ａ２）へと変遷したため、ライトプログラム０１１１は該ページのページ管理テーブル０１２１を参照し、該ページの状態０２０４を２から１に変更する（ステップ０９０４）。また、ページ管理テーブル０１２１のテーブル＃０２０６にステップ０９０２で新規に作成されたセグメント管理テーブル０１２２を識別する番号を記録する（ステップ０９０５）。最後にライトプログラム０１１１は、ライト完了応答をホスト０００１に送信して（ステップ０９０６）、ライトデータを解放し（ステップ０９０７）、ライト処理を終了する。
【００５４】
ステップ０９０１にて一致する特定パターンデータが存在しない場合はステップ０９０６に進み、ライトプログラム０１１１はライト対象のページにページ用プール０１０３から物理領域を割り当てるため、プール管理テーブル０１２３を参照して、未割当の物理領域を示す割り当てフラグ１２３２が０である物理領域を確保する（ステップ０９０６）。物理領域の確保の方法は、先述のWrite処理（２）のステップ０８０５と同様である。そして、ライト要求に含まれる仮想ボリュームの識別番号とライト対象領域のアドレスに基づいて、対応する物理領域上の記憶領域を割り出し、割り出された記憶領域にライトデータを書き込む（ステップ０９０７）。ステップ０９０６、０９０７によりライト対象のページの状態が（ａ３）から（ａ１）へと変遷したため、ライトプログラム０１１１は該ページのページ管理テーブル０１２１を参照し、該ページの状態０２０４を２から０に変更する（ステップ０９０８）。最後に、ライトプログラム０１１１はホスト０００１にライト完了コ報告を送信して（ステップ０９０９）ライト処理を終了する。
【実施例２】
【００５５】
本実施例では、通常ボリューム０１０４に格納されているデータを仮想ボリューム０１０２に移行することによって、通常ボリューム０１０４に格納されている特定パターンデータの重複を排除し、ストレージサブシステムのデータ量を削減する方法を説明する。
【００５６】
図１６は、図２に示す通常ボリュームの重複排除プログラム０１１４のフローの一例を示す。まず通常ボリュームの重複排除プログラム０１１４は、通常ボリューム０１０４と同じ容量を有する仮想ボリューム０１０２をデータ移行先のボリュームとして選択する（ステップ２４０１）。尚、重複排除プログラム０１１４はデータ移行先の仮想ボリューム０１０２を仮想ボリューム作成プログラム０１１０に指示して作成させても良い。次に通常ボリュームの重複排除プログラム０１１４は、通常ボリュームからセグメントサイズと同じサイズ分のデータを順にリードし（ステップ２４０２）、リードしたデータを実施例１で説明したライトプログラム０１１１を使って仮想ボリューム０１０２に対してライトさせる（ステップ２４０３）。
【００５７】
ライト処理の方法は、実施例１で説明した図１２〜図１５と同様であるため説明を省略するが、データの移行先仮想ボリューム０１０２は、ライトプログラム０１１１の処理によって、先述の状態（ａ１）、（ａ２）のいずれかの状態を有するページに分類される。状態（ａ１）のページについては物理領域が割り当てられ、当該物理領域にデータが書き込まれるが、状態（ａ２）のページには重複排除技術が用いられて物理領域が割り当てられない。この結果ストレージシステムのデータ容量を削減することができる。
【００５８】
以上のように、本発明によれば通常ボリューム０１０２内のデータを仮想ボリューム０１０２に移行する際にも容量削減効果の高い重複排除が可能となる。
【実施例３】
【００５９】
本実施例では、図１７に示す様に、実施例１で説明したストレージサブシステム００００がネットワーク２１０１〜２１０３を介して複数台接続されている場合に、該複数のストレージサブシステム００００間で容量削減効果の高いリモートコピーを行う方法を説明する。
【００６０】
リモートコピーには図２に示すリモートコピー通信プログラム０１１８を使用し、送信元となるストレージサブシステムではパターン送信プログラム２１０２とデータ送信プログラム２１０４を使用し、送信先となるストレージサブシステムではパターン受信プログラム２１０３とデータ受信プログラム２１０５を使用してストレージサブシステム００００間におけるリモートコピーを行う。各プログラム（２１０２〜２１０５）の詳細は後述する。本実施例では、一方のストレージサブシステムの通常ボリューム０１０４内のデータを他方のストレージサブシステムの仮想ボリューム０１０２にリモートコピーする場合を考える。
【００６１】
リモートコピーの事前準備として、まず送信元ストレージサブシステムと送信先ストレージサブシステムがそれぞれ有する特定パターン管理テーブル０１２０のデータを同期する。このためにパターン送信プログラム２１０２とパターン受信プログラム２１０４とが用いられる。
【００６２】
図１８（ａ）は、送信元ストレージサブシステムで使用されるパターン送信プログラムの処理フローの一例を示す。パターン送信プログラム２１０２は、送信元ストレージサブシステムが有する特定パターンテーブル０１２０をシリアライズする（ステップ２３０１）。シリアライズの方法については複数通りの方式が考えられるが、本明細書では詳細な記述は行わない。尚、シリアライズとはソフトウェア内部で扱っているデータを丸ごとファイルで保存したり、ネットワークを介して送受信したりするために変換することをいう。次にパターン送信プログラム２０１２は、シリアライズ後の特定パターンテーブル０１２０のシリアルデータを送信先ストレージサブシステムのパターン受信プログラム２０１４に送信する（ステップ２３０２）。そして、送信先ストレージサブシステムからの応答を受信して終了する（ステップ２３０３）。
【００６３】
図１８（ｂ）は、送信先ストレージサブシステムで使用されるパターン受信プログラムの処理フローの一例を示す。パターン受信プログラム２１０４は、パターン送信プログラム２１０２から送信されたシリアルデータを受信し（ステップ２３０４）、該シリアルデータを特定パターンテーブル０１２０のデータに変換する（ステップ２３０５）。そして、変換後のデータを送信先ストレージサブシステムの特定パターン管理テーブル０１２０と置き換える（ステップ２３０６）。置き換えが完了したら送信元ストレージサブシステムに対して完了応答を送信する（ステップ２３０７）。
【００６４】
次に、複数のストレージサブシステム間においてリモートコピーを実施する際のデータの送受信方法について説明する。図１９は、送信元ストレージサブシステムから送信先ストレージサブシステムに送信されるパケットの実装例を示す。パケットは、送信先ストレージサブシステムを特定するアドレス情報を格納するヘッダ部１８０１と、送信データを格納するデータ部とで構成される。データ部は、データ識別フラグ１８０２と仮想ボリューム情報１８０３とデータ格納部１８０４とで構成されている。データ識別フラグ１８０２とは、パケットを用いて送信されるデータが、実データであるのかパターンIDであるのかを示すフラグである。本実施例では、該フラグが０の場合、データ格納部１８０４には実データが格納されているものとする。一方、該フラグが１の場合、データ格納部１８０４はパターンIDが格納されている。仮想ボリューム情報１８０３は、送信データが書き込まれる、送信先ストレージサブシステム内の仮想ボリュームの番号とアドレスである。
【００６５】
図２０（ａ）は、送信元ストレージサブシステムで使用されるデータ送信プログラム２１０３の処理フローの一例を示す。データ送信プログラム２１０３は、リモートコピーのコピー元である送信元ストレージサブシステムの通常ボリューム（以下コピー元通常ボリュームと呼ぶ）からデータを読み出す（ステップ１７０１）。そしてステップ１７０２にて、データ送信プログラム２１０３は、送信元ストレージサブシステムが有する特定パターン管理テーブル０１２０を参照し、読み出したデータが特定パターンデータと一致するか否かを判定する。特定パターンデータのいずれとも一致しない場合はステップ１７０４に進み、データ送信プログラム２１０３は、読み出した該データをそのままの形式でパケットとして送信先ストレージサブシステムに送信する。一方、ステップ１７０２にて、特定パターンデータのいずれかとステップ１７０１で読み出されたデータとが一致した場合、データ送信プログラム２１０３は、特定パターン管理テーブル０１２０のパターンID１２０１に基づいて、該データをパターンIDに変換し（ステップ１７０３）、該パターンIDを先述のパケットを用いて送信先ストレージサブシステムに送信する（ステップ１７１０）。
【００６６】
図２０（ｂ）は、送信先ストレージサブシステムで使用されるデータ受信プログラム２１０５の処理フローの一例を示す。データ受信プログラム２１０５は、送信元ストレージサブシステムからパケットを受信すると（ステップ１７０５）、該パケット内のデータ識別フラグ１８０２を確認する（ステップ１７０６）。該データ識別フラグ１８０２が０であった場合、ステップ１７０８に進み、受信パケットの仮想ボリューム情報１８０３が示す仮想ボリュームの記憶領域に実データをライトするようライトプログラム０１１１に指示する。この結果、実施例１で図１２〜図１５を用いて説明したのと同様の処理にてライトプログラム０１１１によりデータがリモートコピーの送信先であるコピー先仮想ボリュームに格納される。データ受信プログラム２１０５は、ライト処理が終了すると送信元ストレージサブシステムに完了応答を送信して終了する（ステップ１７０９）。ステップ１７０６にて、データ識別フラグ１８０２が１であった場合、ステップ１７０８に進み、データ受信プログラム２１０５は送信先ストレージサブシステムが有する特定パターン管理テーブル０１２０を参照して、データ格納部１８０４に格納されているパターンIDを実データに変換する（ステップ１７０７）。その後、データ受信プログラム２１０５は、先述と同様ステップ１７０８、ステップ１７０９の処理を実行して終了する。
【００６７】
以上の方法によれば、コピー元通常ボリュームから読み出されたデータが特定パターンデータと一致する場合には、送信元ストレージサブシステムから送信先ストレージサブシステムへは実データではなくパターンIDが送信されることになるため、リモートコピーに要するデータのコピー量が低減できる。更に、送信先ストレージサブシステムにおいては、実施例１において説明したライトプログラム０１１１を用いてコピーデータが送信先仮想ボリュームに書き込まれるため、特定パターンデータについてはデータの重複を排除することができる。このためコピー先ストレージサブシステムの必要記憶容量を削減することができる。
【００６８】
上述した方法では、リモートコピーのコピー元となる送信元ストレージサブシステム内のコピー元ボリュームが通常ボリューム０１０４であるということを前提として説明した。しかしコピー元ボリュームは仮想ボリューム０１０２であっても良い。コピー元ボリュームが仮想ボリューム０１０２であった場合には、送信元ストレージサブシステムにおいて当該コピー元仮想ボリューム０１０２をページ管理テーブル０１２１を用いてページ毎に管理しているため、送信元ストレージサブシステムは各ページの状態を把握している。従ってページ状態が（ａ２）である場合には、図２０（ａ）のステップ１７０１及び１７０２の処理を実行せずとも、当該ページには特定パターンデータが対応付けられていることが明らかである。従って、図２０（ａ）のステップ１７０１、ステップ１７０２、及びステップ１７０３を省略することもできる。この場合にはまず、送信元ストレージサブシステムのデータ送信プログラム２１０３はコピー元仮想ボリューム０１０２の各ページの状態を送信元ストレージサブシステムが有するページ管理テーブル０１２１を参照して判定する。判定の結果、該状態が（ａ１）である場合にはステップ１７０２に進み、該状態が（ａ２）である場合にはステップ１７０２、１７０３を省略してステップ１７１０に進み、該状態が（ａ３）である場合にはステップ１７０４に進む。それぞれその後のステップは先述のコピー元が通常ボリュームである場合と同様である。
【００６９】
更に上述の方法では、送信先ストレージサブシステムにおいて受信したデータがパターンIDであった場合に(即ち図２０（ｂ）のステップ１７０６でフラグの値が１であった場合に)、一旦パターンIDを実際の実データ（即ち特定パターンデータ）に直してから（図２０（ｂ）のステップ１７０７）、ライトプログラム０１１１を用いて当該特定パターンデータを仮想ボリュームに書き込んでいる。ライトプログラム０１１１が特定パターンデータを仮想ボリュームに書き込む際に、この特定パターンデータは再度パターンIDに変換されるため（図１４のステップ０８０１及びステップ０８０２）、特定パターンデータとパターンIDとの間に無駄な変換処理が発生している。この無駄を省くために、ライトプログラム０１１１がライトデータの代わりにパターンIDを受け付けることができるようにしても良い。この結果、データ受信プログラム２１０５は図２０（ｂ）のステップ１７０７においてパターンIDを実データに変換することなくライトプログラム０１１１にパターンIDを渡せばよく、これを受信したライトプログラム０１１１は受信したパターンIDで指定される所定の特定パターンデータのライトを要求されたと解釈して、ライト処理を実行すれば良い。
【００７０】
以上のような方法でリモートコピーをすることにより、ネットワークの通信量を削減したデータ送受信を可能とし、さらに複数のストレージサブシステム間で容量削減効果の高い重複排除を行うことが可能となる。
【００７１】
尚、以下のような形態であっても構わない。
【００７２】
送信元ストレージサブシステムと、送信元ストレージサブシステムと通信可能に接続された送信先ストレージサブシステムとを有するストレージシステムにおいて、送信元ストレージサブシステム及び送信先ストレージサブシステムは、論理的な記憶領域を有する。送信元ストレージサブシステムは、ボリュームからリモートコピーの対象であるデータを読み出し、読み出したデータが特定パターンデータと一致する場合には、当該特定パターンデータを識別するＩＤを送信先ストレージサブシステムに送信する。このような構成により、ネットワークの通信料を削減したデータ送受信が可能となる。
【実施例４】
【００７３】
本実施例では、図１７に示す構成と同様ストレージサブシステム００００がネットワークを介して複数台接続されている場合に、該複数のストレージサブシステム００００間で容量削減効果の高いデータ移行を行う方法を説明する。
【００７４】
本実施例では、移行元ストレージサブシステムが有するデータ移行プログラム０１１３を用いて、移行元ストレージサブシステム内の全て又は一部の通常ボリューム０１０４のデータを移行先ストレージサブシステムの仮想ボリューム０１０２にコピーする。
【００７５】
本実施例ではまず、移行先ストレージサブシステムが特定パターンの分析プログラム０１１７を使って、移行元ストレージサブシステム内のコピー元通常ボリューム０１０４内に格納されているデータを分析し、特定パターンデータとしてどの様なパターンのデータを用いれば容量削減効果が高いかを調べる。後述の通り特定パターンの分析プログラム０１１７を実行すると、データ移行前に一旦コピー元通常ボリュームからデータを読み出してコピー先ストレージサブシステムへ送信する必要があるため、本プログラム０１１７の実行は必須でない。しかし、事前にコピー元通常ボリューム０１０４に格納されているデータを分析することで、移行先ストレージサブシステムが既に管理している特定パターンデータの他にも容量削減効果が高い特定パターンデータを発見することができれば、効率よく重複排除を行うことが可能となる。
【００７６】
図２１には、特定パターンの分析プログラム０１１７が用いるパターンカウントテーブル２００１の一例を示す。パターンカウントテーブル２００１は、特定パターンの分析プログラム０１１７が移行元ストレージサブシステム内のコピー元通常ボリューム０１０４のデータを分析した際、当該データのパターンと当該パターンの出現個数を登録しておくために用いられる。パターンID欄２０１１には特定パターンの分析プログラム０１１７がコピー元通常ボリューム０１０４から読み出されたデータに付与したIDが記録さる。各々のパターンIDに対応するデータパターンがパターンデータ欄２０１２に記録され、同じデータパターンが移行元ストレージサブシステム内のコピー元通常ボリューム０１０４の中からいくつ発見されたかをカウントした結果がカウント数欄２０１３に記録される。パターンID２０１１には、ハッシュ値などを利用することでパターンカウントテーブル２００１の容量を小さくすることができる。
【００７７】
図２２は、特定パターンの分析プログラム０１１７の処理フローの一例を示す。まず、特定パターンの分析プログラム０１１７は、パターンカウントテーブル２００１を作成する（ステップ２２０７）。そして、特定パターンの分析プログラム０１１７は、移行元ストレージサブシステムからコピー元通常ボリューム各々についてその構成情報を読み出す（ステップ２２０８）。コピー元通常ボリュームの構成情報とは、ボリュームのサイズなどの情報を指す。そして各コピー元通常ボリュームに対して、以下に示す処理を実行する。特定パターンの分析プログラム０１１７は、移行元ボリュームのアドレス空間をセグメントに分割し、各セグメントについて順に移行元ストレージサブシステムへリード要求を出す（ステップ２２１１）。次に、特定パターンのリード要求の結果移行元ストレージサブシステムからリードされたデータをデータIDに変換する。具体的には、リードしたデータがパターンカウントテーブル２００１に存在するかどうかを確認し（ステップ２２１２）、データがパターンカウントテーブル２００１上のパターンデータ２０１２に存在する場合は、該パターンデータに対応するカウント数２０１３を１増加させる（ステップ２２１３）。一方ステップ２２１２にて、リードしたデータがパターンカウントテーブル２００１上に存在しない場合、該データに新しいパターンIDを割り当てて、当該データと当該パターンIDとを共にパターンカウントテーブル２００１に新規に追加し、カウント数を１とする（ステップ２２１４）。
【００７８】
次に、ステップ２２０８にて特定パターンの分析プログラム０１１７は、当該コピー元通常ボリューム内の全てのセグメントについてデータをリードしたか否かを判定し（ステップ２２１５）、全てのセグメントについてリードを終了している場合にはステップ２２１６に進み、データ移行の対象となっている全てのコピー元通常ボリュームについてステップ２２０８からステップ２２１５までの処理が終了しているか否かを判定し（ステップ２２１６）、終了している場合にはステップ２２１７に進む。一方、ステップ２２１５の判定の結果、コピー元通常ボリューム内の全てのセグメントについてリードを終了していない場合には、全てのセグメントについて終了するまでステップ２２１１〜２２１４を残りのセグメントについて繰り返す。また、ステップ２２１６の判定の結果、データ移行対象の全コピー元通常ボリュームについて読み込みが終了していない場合には、全てのコピー元通常ボリュームについてリードを終了するまでステップ２２０８〜２２１５を残りのコピー元通常ボリュームについて繰り返す。
【００７９】
ステップ２２１７では、特定パターンの分析プログラム０１１７は、パターンカウントテーブル２００１を使って容量削減効果の高い特定パターンデータはどれかを分析する。容量削減効果の高い特定パターンデータを分析する方法には複数通り考えられるが、本明細書では閾値δを使用する方法について示す。閾値δはあるパターンのデータが特定パターンデータであるか否かを判断する場合に用いられる閾値である。即ち、特定パターンの分析プログラム０１１７を実行することによって、ある所定のボリュームの中にある所定のパターンを有するセグメントデータが幾つ格納されているかが、カウント数２０１３としてパターンカウントテーブル２００１に記録される。このカウント数が閾値δを超えた場合には、当該データパターンが特定パターンとして認定され、移行先ストレージサブシステムが有する特定パターン管理テーブル０１２０に追加される。閾値δを大きく設定した場合は、重複排除する特定パターン数が少なくなるため、容量削減効果が得られにくい。一方、閾値δを小さく設定した場合は、容量削減効果を得られやすいが、識別する特定パターンの個数が大きくなり、管理情報量が大きくなる。
【００８０】
特定パターンの分析が終わると、データ移行プログラム０１１３は、移行元ストレージサブシステム内のコピー元通常ボリューム０１０４からデータをリードし、該データをライトプログラム０１１１を使用して移行先ストレージサブシステム内の仮想ボリューム０１０２に書き込む。
【００８１】
図２３は、データ移行プログラム０１１３の処理フローの一例である。データ移行プログラム０１１３は、特定パターンの分析プログラム０１１７と同様に、移行元ストレージサブシステム内のデータ移行対象の各コピー元通常ボリュームについての構成情報を読み出し（ステップ２２０１）、当該コピー元通常ボリュームに対して以下に示す処理を実行する。尚、特定パターンの分析プログラム０１１７を先に実行している場合には、ステップ２２０１の処理は省略して、特定パターンの分析プログラム０１１７が読み出した構成情報を用いることとしても良い。
【００８２】
まず、データ移行プログラム０１１３は、コピー元通常ボリュームと同じサイズの仮想ボリューム０１０２を移行先ストレージサブシステム内に作成し（ステップ２２０３）ここで作成された仮想ボリュームをデータの移行先ボリュームとする。次に、移行元通常ボリュームの先頭セグメントから順にデータを読み出すべく、移行元ストレージサブシステムにリード要求を出す（ステップ２２０５）。リード要求の結果移行元ストレージサブシステムから受信したデータを、データ移行プログラム０１１３は移行先ボリュームにライトするようライトプログラム０１１１に指示する（ステップ２２０６）。この結果、実施例１で図１２〜図１５を用いて説明したのと同様の処理にて、ライトプログラム０１１１によりデータが移行先である仮想ボリュームに格納される。次に、ステップ２２０７に進み、ステップ２２０１にて構成情報を読み出したコピー元通常ボリューム内のすべてのセグメントに関してステップ２２０５、２２０６が終了しているかを判定する（ステップ２２０７）。当該コピー元通常ボリューム内にまだステップ２２０５及び２２０６の処理が実行されていないセグメントが存在する場合には、データ移行プログラム０１１３はステップ２２０５に戻って残りのセグメント分も終了するまでステップ２２０５、２２０６を繰り返す。当該コピー元通常ボリューム内の全セグメントについてステップ２２０５及び２２０６の処理が終了していればステップ２２０８に進む。ステップ２２０８では、データ移行対象となっている全てのコピー元通常ボリュームについてステップ２２０１〜２２０７が終了したか否かを判定し、終了していない場合には、ステップ２２０１に戻って残りのコピー元通常ボリューム分も終了するまでステップ２２０１〜２２０７を繰り返す。ステップ２２０８にてデータ移行対象の全てのコピー元ボリュームについてステップ２２０１〜２２０７の処理が終了している場合には、データ移行プログラム０１１３は終了する。
【００８３】
以上の方法によれば、送信先ストレージサブシステムにおいては、実施例１において説明したライトプログラム０１１１を用いてデータが移行先仮想ボリュームに書き込まれるため、特定パターンデータについてはデータの重複を排除することができ、移行先ストレージサブシステムの必要記憶容量を削減することができる。
【００８４】
尚、特定パターンの分析プログラム０１１７を実行した後にデータ移行プログラム０１１３を実行すると、両方のプログラムによって合計２回データがコピー元通常ボリュームから読み出されて移行元ストレージサブシステムから移行先ストレージサブシステムへコピーされることになり、ネットワークにおける通信負荷が増加する。そこでこれを防止するために、特定パターンの分析プログラム０１１７が図２２のステップ２２１１でコピー元ストレージサブシステムから読み出したデータを、コピー先ストレージサブシステムのキャッシュメモリ０００５又は通常ボリューム０１０４に一旦保存しておいても良い。そうすれば、データ移行プログラム０１１３は、図２３のステップ２２０５で述べた様にコピー元ストレージサブシステムのコピー元通常ボリュームから再度データを読み出す代わりに、コピー先ストレージサブシステムのキャッシュメモリ０００５若しくは通常ボリューム０１０４に格納されているデータを用いればよく、コピー元ストレージサブシステムからコピー先ストレージサブシステムへのデータ送信量を低減することができる。
【実施例５】
【００８５】
本実施例では、実施例１で説明した重複排除機能に加え、状態が（ａ２）であるページに特定パターンデータ以外のデータ（非特定パターンデータと呼ぶ）も存在させて、ページ内の非特定パターンデータのセグメント数によってページの状態を細かく変遷させることにより、さらに効率的にストレージサブシステムの容量削減を行う方法について説明する。主に、実施例１と異なる点を説明する。
【００８６】
図２４は、本実施例における、ストレージサブシステム１１１１の論理的なシステム構成の一例を示したものである。図２４に示すストレージサブシステム１１１１には、実施例1とは異なり、状態が（ａ２）であるページに非特定パターンデータを格納するために記憶領域を割り当てる際に用いられるセグメント用プール０１０７が存在する。セグメント用プール０１０７には、セグメント用ボリューム０１０６が複数存在する。セグメント用ボリューム０１０６は通常ボリューム０１０４やページ用ボリューム０１０３と同様、複数のHDD０００６で構成されるRAIDグループ等のディスクグループ上に形成された記憶領域である。
【００８７】
本実施例におけるストレージサブシステム１１１１は更に、ページ用プール０１０５を管理するプール管理テーブル０１２３とは別に、セグメント用プール０１０７を管理するためのセグメント用プール管理テーブル０１２５を有する。セグメント用プール管理テーブルの構成は、実施例１で図５を用いて説明したプール管理テーブル０１２３の構成と同様であるため図示はしない。尚、セグメント用プール管理テーブル０１２５においてプールＬＵ#は当該セグメントに割り当てられる物理領域を有するセグメント用ボリューム０１０６の識別番号である。また、セグメントに割り当てられる各物理領域のサイズはセグメントのサイズと等しいため、領域＃で識別されるセグメントに割り当てられる物理領域は、プールＬＵ＃で識別されるセグメント用ボリューム０１０６の開始アドレスで示されるアドレスからセグメントサイズ分の記憶領域である。
【００８８】
本実施形態におけるストレージサブシステム１１１１では、セグメント管理テーブル０１２６の構成が実施例１におけるセグメント管理テーブル０１２２とは異なる。図２５は、本実施例で使用するセグメント管理テーブル０１２６の一例を示した図である。実施例１で説明した図４のセグメント管理テーブル０１２２におけるフラグ欄０２０９には、特定パターンデータが書き込まれた旨の記録を行っている状態「０」と、セグメントに対してライト要求を未だ受け取っていない状態を「１」のいずれかの値が記録されたが、本実施例においてはこれらの状態に加え、セグメントに非特定パターンデータが格納されている状態「２」がセグメント管理テーブル０１２６のフラグ欄１２６２に記録され得る。更に本実施形態におけるセグメント管理テーブル０１２６は領域番号（領域＃）欄１２６３を有する。領域＃欄１２６３はフラグ欄１２６２に「２」が記録されている場合に用いられ、当該セグメントに割り当てられているセグメント用プール０１０７内の物理領域の領域番号が記録される。
【００８９】
本実施形態においては、閾値管理テーブル０１２７も実施例１における閾値管理テーブル０１２４とは異なる。本実施形態で用いられる図２６は閾値管理テーブル０１２７の一例を示す図である。  本実施例では、ページが（ａ１）から（ａ２）、又は（ａ２）から（ａ１）に状態遷移する際に、非特定パターンデータ数に関する閾値α、閾値βが用いられる。状態が（ａ２）であるページにおいて、非特定パターンデータの数が増加して閾値αを超えた場合、ページの状態を（ａ２）から（ａ１）へと変遷させる。また、状態が（ａ１）であるページにおいては、非特定パターンデータの数が減少して閾値βを下回った場合、ページの状態を（ａ１）から（ａ２）へと変遷させる。閾値α、閾値βは閾値変更プログラム０１１６を利用して変更することが可能である。閾値を変更する処理フローについては、実施例１と同様であるため省略する。尚、本実施例における閾値αは２以上であることとする。
【００９０】
次に、本実施例におけるライトプログラム０１２８の処理フローについて、実施例１との相違点を示す。
【００９１】
まず、ライト対象のページの状態が（ａ１）である場合に実行される、Write処理(１)が実施例１とは異なる。図２７には、本実施形態におけるWrite処理(１)の処理フローの一例を示す。本処理フローでは、（ａ１）から（ａ２）へページの状態を遷移させるために、ページ内の非特定パターンデータ数を調べるステップが加わる点で実施例１におけるWrite処理(1)とは異なる。
【００９２】
ステップ０７０１からステップ０７０６までは実施例１と同様の処理が行われるので説明を省略する。ステップ１３０１でライトプログラム０１２８は、非特定パターンデータの数をチェックして、閾値βを下回っているかを確認する。非特定パターンデータの数は、ライト対象ページに格納されている全データをチェックすることで確認しても良いし、ページ管理テーブルに新たに非特定パターンカウント数を記録するための欄を設け、非特定パターンデータが書き込まれる度にこの欄に記録されているカウンタを１ずつ増加させることで確認しても良い。
【００９３】
非特定パターンデータの数が閾値βを下回った場合、まずライトプログラム０１２８は、該ページに対応するセグメント管理テーブル０１２６を作成する（ステップ１３０２）。そして、以下の手順に従って該ページ内のセグメントの情報を作成したセグメント管理テーブル０１２６に記録する。
【００９４】
ライトプログラム０１２８は、特定パターン管理テーブル０１２０を参照して、セグメント内のデータが特定パターンのいずれかと一致するかどうかをページ内のセグメントデータを順にリードして判定する（ステップ１３０３）。該セグメントに書き込まれたデータが特定パターンデータのいずれかと一致する場合、該セグメントに対応するフラグ欄１２６２に０を設定し、対応するIDをパターンID欄１２６４に記録する（ステップ１３０４）。ここで、非特定パターンデータではないため領域#１２６３にはnullが記録される。
【００９５】
ステップ１３０２にて、リードしたセグメントのデータが特定パターンのいずれとも一致しない場合、ライトプログラム０１２８はセグメント用プール０１０７から物理領域を確保し（ステップ１３０６）、確保した領域に該データを書き込む（ステップ１３０７）。そして、セグメント管理テーブル０１２６のフラグ欄１２６２に２を記録し、確保したセグメント用プール０１０７の領域＃１２６３を記録する。特定パターンデータではないためパターンID１２６４にはnullを記録する（ステップ１３０８）。
【００９６】
ステップ１３１１では、ページ内の全セグメントについてステップ１３０３からステップ１３０８までの処理が終了したか否かを判定し、終了していない場合にはステップ１３０３に戻って残りのセグメントについて上述の処理を繰り返す。
【００９７】
以上のステップにより、ページの状態が（ａ１）から（ａ２）に変遷したため、ページ管理テーブル０１２１の該ページの状態０２０４は0から1に変更される（ステップ１３０９）。
【００９８】
最後に、該ページに割り当てられていたページ用プール０１０５内の物理領域を解放する（ステップ１３１０）。
【００９９】
以上の図２７のフローによれば、一旦物理領域が割り当てられていたページであっても、該ページ内に特定パターンデータが多く、非特定パターンが少ない状態になれば、非特定パターンデータのみに物理領域を割り当てるようにするため、容量削減効果の高い管理が可能となる。
【０１００】
本実施形態においては、ライト対象のページの状態が（ａ２）である場合にライトプログラム０１２８によって実行されるWrite処理(２)も実施例１とは異なる。図２８には、本実施形態におけるWrite処理（２）の処理フローの一例を示す。
【０１０１】
ライトデータが特定パターンデータのいずれかと一致する場合の処理フロー（ステップ０８０１からステップ０８０４まで）は、実施例１と同様であるため説明を省略する。
【０１０２】
ステップ０８０１においてライトデータが特定パターンのいずれとも一致しない場合、ライトプログラム０１２８は、ライト対象のページ用のセグメント管理テーブル０１２６を取得し、ライト対象のセグメントのフラグ欄１２６２を２に設定する（ステップ１４０４）。そして、ステップ１４０５に進み、ライトプログラム０１２８はセグメント管理テーブル０１２６のフラグ欄１２６２を参照して、ライト対象のページにフラグが２であるセグメントがいくつ存在するかカウントする。更にライトプログラム０１２８は閾値管理テーブル０１２７を参照して該ページに対応する閾値α１２７２の値を取得し、先にカウントしたフラグが２であるセグメントの数（即ち非特定パターンデータの数）が閾値αの値を超えているか否かを判定する（ステップ１４０５）。ステップ１４０５にて、非特定パターンデータの数が閾値αの値を下回っている場合の処理は、ステップ１４０６〜１４０８となるが、図２７のステップ１３０６〜１３０８と同様であるため説明を省略する。
ステップ１４０５にて、非特定パターンデータの数が閾値αの値を超えている場合には、ライトプログラム０１２８はステップ１４１０に進み、ライト対象のページにページ用プール０１０５から物理領域を割り当てる（ステップ１４１０）。そして、該ページに対応するセグメント管理テーブル０１２６を参照し、フラグ１２６２が０であるセグメントについては、該セグメントに対応するパターンID１２６４を参照し、パターン管理テーブル０１２１を取得して対応する特定パターンデータを確保領域の該セグメントに格納する。
フラグ１２６２が１であるセグメントについては、確保した領域の該セグメントに対応する領域にフォーマットデータを格納する。フラグ１２６２が２であった場合は、領域＃１２６３を参照し、プール管理テーブル０１２３から該セグメントに対応するプールＬＵ＃１２３４と開始アドレス１２３５を取得し、該アドレスに格納されたデータを確保領域の該セグメントにコピーする（ステップ１４１１）。そして、ライトプログラム０１２８は、該ページに対応するセグメント管理テーブル０１２６を解放し（ステップ１４１２）、該ページに対応するページ管理テーブル０１２１の状態０２０４を１から０に変更して終了する（ステップ１４１３）。
【０１０３】
以上の図２８のフローによれば、物理領域を割り当てていない領域に非特定パターンデータのライト要求を受けた場合であっても、非特定パターンデータ数が少ないうちはライト要求を受けたページ全体に物理領域を割り当てず、非特定パターンデータにのみ物理領域を割り当てることによって、ストレージの容量削減効果を高くすることが可能となる。
【０１０４】
尚状態が（ａ３）であるページにライト要求を受けた場合のライトプログラム０１２８の処理フローは、実施例１で説明したWrite処理（３）と同様であるため説明を省略する。
【図面の簡単な説明】
【０１０５】
【図１】実施例１、実施例２及び実施例５におけるストレージシステムのハード構成の一例を示した説明図である。
【図２】ストレージサブシステムの論理的なシステム構成の一例を示した説明図である。
【図３】仮想ボリュームのアドレス空間の一例を示した説明図である。
【図４】仮想ボリューム管理情報の一例を示した説明図である。
【図５】プール管理テーブルの一例を示した説明図である。
【図６】特定パターン管理テーブルの一例を示した説明図である。
【図７】閾値管理テーブルの一例を示した説明図である。
【図８】仮想ボリューム作成プログラムの処理フローの一例を示した説明図である。
【図９】特定パターン設定プログラムの処理フローの一例を示した説明図である。
【図１０】閾値変更プログラムの処理フローの一例を示した説明図である。
【図１１】リードプログラムの処理フローの一例を示した説明図である。
【図１２】ライトプログラムの処理フローの一例を示した説明図である。
【図１３】Write処理（１）の処理フローの一例を示した説明図である。
【図１４】Write処理（２）の処理フローの一例を示した説明図である。
【図１５】Write処理（３）の処理フローの一例を示した説明図である。
【図１６】重複排除プログラムの処理フローの一例を示した説明図である。
【図１７】実施例３及び実施例４におけるストレージシステムのハード構成の一例を示した説明図である。
【図１８】（ａ）パターン送信プログラムの処理フローの一例を示した説明図である。  （ｂ）パターン受信プログラムの処理フローの一例を示した説明図である。
【図１９】ストレージサブシステムに送信されるパケットの実装例を示した説明図である。
【図２０】（ａ）データ送信プログラムの処理フローの一例を示した説明図である。  （ｂ）データ受信プログラムの処理フローの一例を示した説明図である。
【図２１】パターンカウントテーブルの一例を示した説明図である。
【図２２】特定パターンの分析プログラムの処理フローの一例を示した説明図である。
【図２３】データ移行プログラムの処理フローの一例を示した説明図である。
【図２４】実施例５におけるストレージサブシステムの論理的なシステム構成の一例を示した説明図である。
【図２５】実施例５におけるセグメント管理テーブルの一例を示した説明図である。
【図２６】実施例５における閾値管理テーブルの一例を示した説明図である。
【図２７】実施例５におけるWrite処理（１）の処理フローの一例を示した説明図である。
【図２８】実施例５におけるWrite処理（２）の処理フローの一例を示した説明図である。
【符号の説明】
【０１０６】
００００  ストレージサブシステム
０１１０  仮想ボリューム作成プログラム
０１１１  ライトプログラム
０１１２  リードプログラム
０１１３  データ移行プログラム
０１１４  通常ボリュームの重複排除プログラム
０１１５  特定パターン設定プログラム
０１１６  閾値変更プログラム
２００１  特定パターンの分析プログラム
０１１８  リモートコピーデータ通信プログラム
０１２０  特定パターン管理テーブル
０２０２  仮想ボリューム管理情報システム本部
０１２３  プール管理テーブル
０１２４  閾値管理テーブル
０１２１  ページ管理テーブル
０１２２  セグメント管理テーブル
０１０２  仮想ボリューム
０１０３  ページ用ボリューム
０１０４  通常ボリューム
【図１】
0005090941.tif 000002
【図２】
0005090941.tif 000003
【図３】
0005090941.tif 000004
【図４】
0005090941.tif 000005
【図５】
0005090941.tif 000006
【図６】
0005090941.tif 000007
【図７】
0005090941.tif 000008
【図８】
0005090941.tif 000009
【図９】
0005090941.tif 000010
【図１０】
0005090941.tif 000011
【図１１】
0005090941.tif 000012
【図１２】
0005090941.tif 000013
【図１３】
0005090941.tif 000014
【図１４】
0005090941.tif 000015
【図１５】
0005090941.tif 000016
【図１６】
0005090941.tif 000017
【図１７】
0005090941.tif 000018
【図１８】
0005090941.tif 000019
【図１９】
0005090941.tif 000020
【図２０】
0005090941.tif 000021
【図２１】
0005090941.tif 000022
【図２２】
0005090941.tif 000023
【図２３】
0005090941.tif 000024
【図２４】
0005090941.tif 000025
【図２５】
0005090941.tif 000026
【図２６】
0005090941.tif 000027
【図２７】
0005090941.tif 000028
【図２８】
0005090941.tif 000029