(57)【特許請求の範囲】
【請求項１】
複数の論理ボリュームと、
前記複数の論理ボリュームを管理するコントローラと
を備え、
前記複数の論理ボリュームは、プライマリボリュームと、セカンダリボリュームと、プールボリュームと、仮想ボリュームとを含み、
前記プライマリボリュームは、複数の記憶領域である複数のプライマリ領域で構成されている論理ボリュームであり、
前記プールボリュームは、プールの構成要素となる論理ボリュームであり、複数のプール領域で構成されており、
前記仮想ボリュームは、複数の仮想領域で構成された仮想的な論理ボリュームであり、
前記コントローラは、
前記プライマリボリュームと前記プライマリボリュームに記憶されるデータを全て記憶するセカンダリボリュームとを、レプリケーションペアとして管理し、
前記セカンダリボリュームに対するアクセス頻度が所定のアクセス頻度よりも低い場合である所定の第１の契機で、前記セカンダリボリュームを前記仮想ボリュームに移行して、前記プライマリボリュームと前記仮想ボリュームとをスナップショットペアとして管理し、
前記プライマリボリュームのプライマリ領域にデータを書き込む場合、そのプライマリ領域に書き込まれている更新前のデータの退避先を、前記プライマリボリュームと前記スナップショットペアを構成する前記仮想ボリュームにおける仮想領域とし、その仮想領域に前記プールからプール領域を割り当て、割り当てたプール領域に、前記更新前のデータを格納する、
ことを特徴とするストレージ装置。
【請求項２】
前記セカンダリボリュームは、複数の記憶領域である複数のセカンダリ領域で構成されている論理ボリュームであり、
前記コントローラは、下記処理、
前記セカンダリボリュームから前記仮想ボリュームへの移行において、
（Ａ）対応するプライマリ領域に格納されているデータと異なっているデータを記憶しているセカンダリ領域については、当該セカンダリ領域内のデータを、当該セカンダリ領域に対応する仮想領域に割当てられるプール領域に格納する、
（Ｂ）対応するプライマリ領域に格納されているデータと同じデータを記憶しているセカンダリ領域については、当該セカンダリ領域に対応する仮想領域を当該セカンダリ領域に対応するプライマリ領域にマッピングする、
を行うことを特徴とする請求項１記載のストレージ装置。
【請求項３】
前記コントローラは、
所定の第２の契機で、前記仮想ボリュームと前記プライマリボリュームとの前記スナップショットペアを解除し、前記プライマリボリュームと前記セカンダリボリュームとを前記レプリケーションペアとして管理する、
ことを特徴とする請求項１又は２記載のストレージ装置。
【請求項４】
前記所定の第１の契機は、更に、前記セカンダリボリュームの記憶容量に対するデータの総量の割合である消費率が所定の消費率よりも低い場合、及び、前記プライマリボリュームと複数のボリュームペアを構成する複数のセカンダリボリュームに互いに重複するデータの総量が所定の総量よりも多い場合、のうちの少なくとも一つを含むことを特徴とする請求項１乃至３のうちのいずれか１項に記載のストレージ装置。
【請求項５】
前記所定の第２の契機は、前記仮想ボリュームの記憶容量に対するデータの総量の割合である消費率が、所定の消費率よりも高い場合、前記プライマリボリュームと複数のボリュームペアを構成する複数の仮想ボリュームに互いに重複するデータの総量が所定の総量よりも少ない場合、及び、前記仮想ボリュームに対するアクセス頻度が所定のアクセス頻度よりも高い場合のうちの少なくとも一つの場合である、
ことを特徴とする請求項３記載のストレージ装置。
【請求項６】
前記コントローラが、切替え前のデータ保存方式におけるセカンダリボリュームを、切替え後のデータ保存方式でのセカンダリボリュームのプライマリボリュームとする、
請求項１乃至５のうちのいずれか１項に記載のストレージ装置。
【請求項７】
前記コントローラが、前記セカンダリボリュームに記憶されるデータが暗号化されるようになっているが、そのセカンダリボリュームに対応するプライマリボリュームに記憶されているデータが暗号化されていなければ、そのプライマリボリュームに記憶されているデータを暗号化する、
請求項１乃至６のうちのいずれか１項に記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理ボリュームのペアを利用したデータの保存に関する。
【背景技術】
【０００２】
或る論理ボリュームに記憶されているデータをバックアップする機能を有したストレージシステムが知られている（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開２００３−２４２０１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
例えば、論理ボリュームを指定したコマンドを発行し、そのコマンドに従う処理が正常に実行されるかどうかの動作チェックが行われる場合がある。コマンドで指定される論理ボリュームにデータが記憶されていると、コマンドの処理の際に異常が生じた場合に、そのデータが壊れてしまうおそれがある。それを避ける方法としては、プライマリの論理ボリューム（以下、ＰＶＯＬ）に記憶されているデータを、ＰＶＯＬの記憶容量以上の記憶容量を有するセカンダリの論理ボリューム（以下、ＳＶＯＬ）に複製し、上記動作チェックの際には、ＳＶＯＬを指定したコマンドを発行する方法が考えられる。
【０００５】
動作チェックの後、上記のＳＶＯＬに記憶されているデータは、無くても構わないが、わざわざ用意されたデータなので、ＰＶＯＬに記憶されているデータのバックアップとして残しておいても良い。しかし、上記のＳＶＯＬの記憶容量は、ＰＶＯＬの記憶容量以上であるので、単にそのＳＶＯＬにデータを残したままにしていると、ストレージシステムの記憶容量を無駄に消費してしまっていることになる。
【０００６】
上記のような問題は、動作チェックの場合に限らず他の場合にも生じ得る。
【０００７】
また、例えば、以下のデータ保存方式、すなわち、ＳＶＯＬを仮想的な論理ボリュームとし、そのＳＶＯＬに実際に保存されるデータのサイズ分だけ実記憶領域を確保し、その確保された実記憶領域に、そのデータが保存されるデータ保存方式がある。しかし、このタイプのデータ保存方式では、ＳＶＯＬに対するアクセス頻度が高いと、ストレージシステムの性能が低下するおそれがある。ＳＶＯＬのどの仮想的な記憶領域にどこの実記憶領域が対応付けられているかのサーチが必要になるためである。
【０００８】
従って、本発明の目的は、ストレージシステムで消費される記憶容量の節約及び／又はストレージシステムの性能の向上が図れるようにすることにある。
【０００９】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【００１０】
ストレージシステムが、プライマリボリュームに記憶されているデータ要素を、複数タイプのデータ保存方式から選択されているデータ保存方式である選択保存方式に従って、プライマリボリュームとボリュームペアを構成するセカンダリボリュームに書込む。そのストレージシステムに、上記選択保存方式を現在選択されているデータ保存方式から別のタイプのデータ保存方式に切り替える機能を設ける。
【発明を実施するための最良の形態】
【００１１】
実施形態１では、ストレージシステムに、一以上の論理ボリュームとコントローラが備えられる。一以上の論理ボリュームは、プライマリボリュームと、プライマリボリュームとボリュームペアを構成するセカンダリボリュームとのうちの少なくとも一方を含んでいる。コントローラは、プライマリボリュームに記憶されているデータ要素を、複数のデータ保存方式から選択されているデータ保存方式である選択保存方式に従って、プライマリボリュームとボリュームペアを構成するセカンダリボリュームに書込む。そのコントローラは、上記選択保存方式を、現在選択されているタイプのデータ保存方式からそれとは別のタイプのデータ保存方式に切替える機能を有する。
【００１２】
実施形態２では、実施形態１において、コントローラが、計算機からＩ／Ｏコマンドを受信した場合にそのＩ／Ｏコマンドで指定されている論理ボリューム及びそれの記憶領域にアクセスするよう構成されている。また、コントローラは、選択保存方式の切り替えの際、切替え前のデータ保存方式に伴うセカンダリボリュームを構成する各記憶領域について特定の処理を行うことで、セカンダリボリュームの種類を、切替え前のデータ保存方式に対応した種類から切替え後のデータ保存方式に対応した種類に変更するよう構成されている。更に、コントローラは、計算機からＩ／Ｏコマンドを受け付けつつ、選択保存方式の切替えを実行するよう構成されている。コントローラは、計算機から受けたＩ／Ｏコマンドがライトコマンドである場合、そのライトコマンドで指定されているライト先がプライマリボリュームであるか切り替え前のセカンダリボリュームであるか、及び、ライト先の記憶領域が上記特定の処理が済んだ記憶領域であるか否かに基づいて、そのライトコマンドに従うライト対象のデータ要素の書込みを制御する。
【００１３】
ここで、例えば、特定の処理とは、切替え前のデータ保存方式と切替え後のデータ保存方式によって異なる。具体的には、例えば、切替え前のデータ保存方式が、後述のレプリケーション方式であり、切替え後のデータ保存方式が、後述のスナップショット方式であれば、上記特定の処理では、切替え前のデータ保存方式におけるプライマリボリュームの記憶領域に記憶されているデータ要素とそれのセカンダリボリュームの記憶領域に記憶されているデータ要素とが互いに重複するか否かの判定が行われる。その際、重複していなければ、そのデータ要素が切替え後のデータ保存方式におけるセカンダリボリュームの記憶領域に書き込まれる処理も行われる。
【００１４】
実施形態３では、実施形態１乃至２のうちの少なくとも一つにおいて、コントローラが、選択保存方式の切り替えの際、切替え前のデータ保存方式に伴うセカンダリボリュームを構成する各記憶領域について特定の処理を行うことで、セカンダリボリュームの種類を、切替え前のデータ保存方式に対応した種類から切替え後のデータ保存方式に対応した種類に変更するよう構成されており、特定の処理において、その特定の処理の対象となっている記憶領域に記憶されているデータ要素が所定のデータパターンとなっていれば、その記憶領域を解放する。
【００１５】
ここで、所定のデータパターンとしては、例えば、データ要素が‘０’を表すデータパターンとすることができる。
【００１６】
また、例えば、実施形態３では、切替え前のデータ保存方式に対応した種類のセカンダリボリュームは、仮想的な論理ボリュームである仮想ボリュームであり、仮想ボリュームは、複数の仮想的な記憶領域である複数の仮想領域で構成されている。一以上の論理ボリュームには、プールを構成する論理ボリュームであるプールボリュームが含まれている。コントローラは、仮想ボリュームの仮想領域に、プールボリュームを構成する記憶領域であるプール領域を割り当て、割当てたプール領域に、その仮想領域に記憶させるデータ要素を書込むよう構成されている。コントローラは、選択保存方式の切替えの際、仮想領域に記憶されているデータ要素が所定のデータパターンとなっている場合に、その仮想領域に割当てられているプール領域を解放する。
【００１７】
実施形態４では、実施形態１乃至３のうちの少なくとも一つにおいて、コントローラは、プライマリボリュームに所定のデータパターンのデータ要素がどのぐらい保存されているかに応じて、プライマリボリュームを、物理的な記憶装置を基に形成された実体としての論理ボリュームから、仮想的な論理ボリューム（例えば、Thin Provisoing技術に従う仮想ボリューム）に切替える、又は、仮想的な論理ボリューム（例えば、Thin Provisoing技術に従う仮想ボリューム）から、実体としての論理ボリュームに切替える。
【００１８】
実施形態５では、コントローラが、実体としての論理ボリュームから、仮想的な論理ボリューム（例えば、Thin Provisoing技術に従う仮想ボリューム）に切替えにおいて、実体としての論理ボリュームに記憶されているデータ要素が所定のデータパターンとなっている場合に、そのデータ要素が記憶されている記憶領域を解放する。
【００１９】
実施形態６では、実施形態１乃至５のうちの少なくとも一つにおいて、コントローラが、セカンダリボリュームにどれだけデータ要素が記憶されているか、プライマリボリュームと複数のボリュームペアを構成する複数のセカンダリボリュームに互いに重複するデータ要素がどのぐらい存在するか、及び、セカンダリボリュームにどの程度アクセスが発生しているかの少なくとも一つを基に、選択保存方式を切替える。
【００２０】
実施形態７では、実施形態６において、コントローラが、複数のセカンダリボリュームのうちの或るセカンダリボリュームに記憶されている一以上の第一のデータ要素を基に算出されその一以上の第一のデータ要素よりもデータサイズの小さい第一の値と、或るセカンダリボリュームとは別のセカンダリボリュームに記憶されている一以上の第二のデータ要素を基に算出されその一以上の第二のデータ要素よりもデータサイズの小さい第二の値とを比較する。コントローラは、第一の値と第二の値が不一致であれば、第一のデータ要素と第二のデータ要素とが互いに重複しないと判断し、第一の値と第二の値が一致すれば、第一のデータ要素と第二のデータ要素とを比較する。コントローラは、第一のデータ要素と第二のデータ要素が不一致であれば、第一のデータ要素と第二のデータ要素とが互いに重複しないと判断し、第一のデータ要素と第二のデータ要素が一致すれば、第一のデータ要素と第二のデータ要素とが互いに重複すると判断する。
【００２１】
実施形態８では、実施形態７において、第一の値は、一以上の第一のデータ要素のハッシュ値、又は、一以上の第一のデータ要素に対応した冗長コードである。第二の値は、一以上の第二のデータ要素のハッシュ値、又は、一以上の第二のデータ要素に対応した冗長コードである。
【００２２】
実施形態９では、実施形態１乃至８のうちの少なくとも一つにおいて、コントローラは、選択保存方式の切り替えの際、切替え前のデータ保存方式に伴う切替え前のセカンダリボリュームを構成する各記憶領域について特定の処理を行うことで、セカンダリボリュームの種類を、切替え前のデータ保存方式に対応した種類から切替え後のデータ保存方式に対応した種類に変更するよう構成されている。コントローラは、切り替え前のセカンダリボリュームに記憶されているデータ要素が暗号化されているデータ要素であれば、切替え後のセカンダリボリュームに記憶されるデータ要素を暗号化されているデータ要素とする。
【００２３】
実施形態１０では、実施形態９において、コントローラは、切り替え前のセカンダリボリュームに記憶されているデータ要素が暗号化されているデータ要素であっても、切替え後のセカンダリボリュームに記憶されるデータ要素を暗号化されているデータ要素としない場合に、ユーザに警告を出す。
【００２４】
実施形態１１では、実施形態９乃至１０のうちの少なくとも一つにおいて、コントローラは、プライマリボリュームに記憶されているデータ要素の暗号化で使用された暗号化方法及び／又は暗号キーと、切替え前のセカンダリボリュームに記憶されているデータ要素の暗号化で使用された暗号化方法及び／又は暗号キーとが異なっていれば、切替え後のセカンダリボリュームに記憶されるデータ要素の暗号化方法及び／又は暗号キーを、プライマリボリュームに記憶されているデータ要素の暗号化方法及び／又は暗号キーと違える。
【００２５】
実施形態１２では、実施形態１乃至１１のうちの少なくとも一つにおいて、コントローラが、キャッシュメモリを有し、計算機からのリードコマンドに応答して、キャッシュメモリにリード対象のデータ要素があるというキャッシュヒットとなれば、そのデータ要素を計算機に送信し、キャッシュヒットとならなければ、そのリードコマンドで指定されている論理ボリュームからデータ要素を読み出してキャッシュメモリに記憶させ、キャッシュメモリに記憶されたデータ要素を計算機に送信するよう構成されている。第一の論理ボリュームと第二の論理ボリュームとを含んだ第一の連結ボリュームがある。コントローラが、複数のデータ保存方式のうちの非重複保存方式を第一の連結ボリュームに適用することで、第三の論理ボリュームと第四の論理ボリュームとを含んだ第二の連結ボリュームを作成する。第一乃至第四の論理ボリュームのうちの少なくとも第一の論理ボリュームが、物理的な記憶装置を基に形成された実体としての論理ボリュームである。第一の論理ボリュームと第三の論理ボリュームで第一のボリュームペアが構成され、第一の論理ボリュームが、プライマリボリュームであり、第三の論理ボリュームが、第一の論理ボリュームをプライマリボリュームとするセカンダリボリュームである。第二の論理ボリュームと第四の論理ボリュームで第二のボリュームペアが構成され、第二の論理ボリュームが、プライマリボリュームであり、第四の論理ボリュームが、第二の論理ボリュームをプライマリボリュームとするセカンダリボリュームである。非重複保存方式とは、プライマリボリュームとそれぞれ複数のボリュームペアを構成する複数のセカンダリボリュームに重複するデータ要素が記憶されている場合に、一方のデータ要素が記憶されている一方の記憶領域を他方のデータ要素が記憶されている他方の記憶領域に関連付けることで、以後、一方の記憶領域に対するアクセスが発生した場合には、一方の記憶領域に関連付けられている他方の記憶領域にアクセスする保存方式である。第一の論理ボリュームに、第一の連結ボリュームと第二の連結ボリュームとで共通のデータ要素、又は、キャッシュヒット率の低いデータ要素が保存される。第二の論理ボリュームに、上記共通のデータ要素ではないデータ要素、又は、キャッシュヒット率の高いデータ要素が保存される。
【００２６】
実施形態１３では、実施形態１乃至１２のうちの少なくとも一つにおいて、一以上の論理ボリュームには、プールを構成する論理ボリュームであるプールボリュームが含まれている。コントローラが、選択保存方式を、レプリケーション方式からスナップショット方式に切り替え、又は、スナップショット方式からレプリケーション方式に切り替える。レプリケーション方式では、セカンダリボリュームが、物理的な記憶装置を基に形成された実体としての論理ボリュームであり、プライマリボリュームに記憶されている全てのデータ要素が記憶される。スナップショット方式では、プライマリボリュームのスナップショットイメージがプライマリボリュームとセカンダリボリュームで構成され、そのセカンダリボリュームが、仮想的な論理ボリュームである仮想ボリュームである。仮想ボリュームは、複数の仮想的な記憶領域である複数の仮想領域で構成されている。仮想領域に、プールボリュームを構成する記憶領域であるプール領域が割り当てられ、割り当てられたプール領域に、その仮想領域に記憶させるデータ要素が記憶される。
【００２７】
実施形態１４では、実施形態１３において、コントローラが、切替え前のデータ保存方式がレプリケーション方式であれば、セカンダリボリュームの記憶容量に対するデータ要素の総量の割合である消費率が所定の消費率よりも低い場合、プライマリボリュームと複数のボリュームペアを構成する複数のセカンダリボリュームに互いに重複するデータ要素の総量が所定の総量よりも多い場合、及び、セカンダリボリュームに対するアクセス頻度が所定のアクセス頻度よりも低い場合のうちの少なくとも一つの場合に、レプリケーション方式からスナップショット方式に切り替える。
【００２８】
実施形態１５では、実施形態１３乃至１４のうちの少なくとも一つにおいて、コントローラが、切替え前のデータ保存方式がスナップショット方式であれば、セカンダリボリュームの記憶容量に対するデータ要素の総量の割合である消費率が所定の消費率よりも高い場合、プライマリボリュームと複数のボリュームペアを構成する複数のセカンダリボリュームに互いに重複するデータ要素の総量が所定の総量よりも少ない場合、及び、セカンダリボリュームに対するアクセス頻度が所定のアクセス頻度よりも高い場合のうちの少なくとも一つの場合に、選択保存方式を、スナップショット方式からレプリケーション方式に切り替える。
【００２９】
実施形態１６では、実施形態１３乃至１５のうちの少なくとも一つにおいて、スナップショット方式には、重複スナップショット方式と、非重複スナップショット方式とがある。重複スナップショット方式では、一のプライマリボリュームに複数のセカンダリボリュームがある場合、一のプライマリボリュームにおけるデータ要素が、複数のセカンダリボリュームに退避される。非重複スナップショット方式では、一のプライマリボリュームに複数のセカンダリボリュームがある場合、一のプライマリボリュームにおけるデータ要素が、複数のセカンダリボリュームのうちの或る仮想領域に一のセカンダリボリュームに退避され、複数のセカンダリボリュームにおける各他のセカンダリボリュームにおける仮想領域が、或る仮想領域又はその或る仮想領域に割当てられたプール領域に関連付けられる。コントローラが、選択保存方式を、レプリケーション方式から重複スナップショット方式に切替えた後に、重複スナップショット方式から非重複スナップショット方式に切替えるか、或いは、レプリケーション方式から非重複スナップショット方式に切替える。又は、コントローラは、非重複スナップショット方式から重複スナップショット方式に切替えた後に、重複スナップショット方式からレプリケーション方式に切替えるか、或いは、非重複スナップショット方式からレプリケーション方式に切替える。
【００３０】
実施形態１７では、実施形態１６において、コントローラが、切替え前のデータ保存方式がレプリケーション方式の場合、プライマリボリュームと複数のボリュームペアを構成する複数のセカンダリボリュームに互いに重複するデータ要素の総量が第一の閾値以上の場合、セカンダリボリュームに対するアクセス頻度が第三の閾値未満の場合、及び、セカンダリボリュームの記憶容量に対するデータ要素の総量の割合である消費率が第五の閾値未満の場合のうちの少なくとも一つの場合に、選択保存方式を、レプリケーション方式から重複スナップショット方式に切り替える。コントローラは、切替え前のデータ保存方式が重複スナップショット方式の場合、重複するデータ要素の総量が、第一の閾値よりも高い第二の閾値以上の場合、及び、セカンダリボリュームに対するアクセス頻度が、第三の閾値よりも低い第四の閾値未満の場合のうちの少なくとも一つの場合に、選択保存方式を、重複スナップショット方式から非重複スナップショット方式に切り替える。
【００３１】
実施形態１８では、実施形態１７において、コントローラが、切替え前のデータ保存方式がレプリケーション方式の場合、重複するデータ要素の総量が第二の閾値以上の場合、セカンダリボリュームに対するアクセス頻度が第四の閾値未満の場合、及び、消費率が第五の閾値以上の場合のうちの少なくとも一つの場合に、選択保存方式を、レプリケーション方式から非重複スナップショット方式に切り替える。
【００３２】
実施形態１９では、実施形態１乃至１８のうちの少なくとも一つにおいて、コントローラが、切替え前のデータ保存方式におけるセカンダリボリュームを、切替え後のデータ保存方式でのセカンダリボリュームのプライマリボリュームとする。
【００３３】
実施形態２０では、実施形態９乃至１１のうちの少なくとも一つにおいて、コントローラが、切替え後のデータ保存方式におけるセカンダリボリュームに記憶されるデータ要素が暗号化されるようになっているが、そのセカンダリボリュームに対応するプライマリボリュームに記憶されているデータ要素が暗号化されていなければ、そのプライマリボリュームに記憶されているデータ要素を暗号化する。
【００３４】
上述した実施形態１乃至２０のうちの二以上の実施形態を組み合わせることができる。また、コントローラが行う各種処理は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により行うことができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶領域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【００３５】
以下、図面を用いて、本発明の実施形態を詳細に説明する。
【００３６】
＜第一の実施形態＞。
【００３７】
＜＜システム構成の一例＞＞。
【００３８】
図１は、本発明の一実施形態に係るシステム全体の構成例を示す。以下の説明では、同種の要素を区別しないで説明する場合には、親番号のみ（例えば１００）を用いて説明し、同種の要素を区別して説明する場合には、親番号と子符号（例えば１００Ａ、１００Ｂ）を用いて説明することにする。
【００３９】
仮想ストレージシステム１００Ａは、複数のストレージシステム２０Ａ及び２０Ｂを備える。仮想ストレージシステム１００Ｂは、複数のストレージシステム２０Ｃ及び２０Ｄを備える。仮想化ストレージシステム１００Ａと仮想化ストレージシステム１００Ｂが、ＳＡＮ（Storage Area Network）４１に接続されている。各ストレージシステム２０Ａ、２０Ｂ、２０Ｃ及び２０Ｄが、ＳＡＮ４３を介して外部ストレージシステム７０に接続されている。
【００４０】
管理ネットワーク（例えばＬＡＮ（Local Area Network））４０に、各ストレージシステム２０Ａ、２０Ｂ、２０Ｃ及び２０Ｄと、管理措置５０と、各ホスト計算機５１Ａ及び５１Ｂとが接続されている。
【００４１】
ホスト計算機５１は、図示しないＣＰＵや記憶資源（例えばメモリ）を備える。記憶資源に、コンピュータプログラムが記憶されており、ＣＰＵが、そのコンピュータプログラムを実行することができる。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するＣＰＵによって処理が行われるものとする。
【００４２】
それぞれのストレージシステム２０Ａ、２０Ｂには、ＳＡＮ４１を介して、ホスト計算機５１Ａが接続されている。ホスト計算機５１Ａは、仮想化プログラム６３を有し、仮想化プログラム６３の機能により、複数のストレージシステム２０Ａ及び２０Ｂを論理的に一つの記憶資源（仮想ストレージシステム）１００Ａとして認識することができる。
【００４３】
仮想化プログラム６３を有しない他のホスト計算機５１Ｂは、ＳＡＮ４２、仮想化装置５２、及びＳＡＮ４１を介して、それぞれのストレージシステム２０Ａ、２０Ｂに接続している。ホスト計算機５１Ｂは、仮想化装置５２内の仮想化プログラム６３の機能により、複数のストレージシステム２０Ａ及び２０Ｂを一つの記憶資源（仮想ストレージシステム）１００Ａとして認識することができる。
【００４４】
仮想化装置５２は、複数のストレージシステム２０Ａ及び２０Ｂのそれぞれが提供する記憶領域を論理的に一つの記憶領域に仮想化する。仮想化装置５２は、例えば、仮想化スイッチ、インテリジェントスイッチ、又は仮想化専用装置などである。
【００４５】
各ホスト計算機５１は、アプリケーションプログラム６０を有する。アプリケーションプログラム６０は、例えば、データベース管理ソフトウェア、Ｗｅｂアプリケーションソフトエア、ストリーミングアプリケーションソフトウェアなどの業務プログラムである。
【００４６】
仮想化プログラム６３は、ホスト計算機５１Ａと各仮想ストレージシステム１００Ａ、１００Ｂ内の論理ボリュームとの間の論理パスを管理する。
【００４７】
ストレージシステム２０は、例えば、制御部と、記憶部とに大別することができる。制御部は、例えば、ＣＰＵ（Central Processing Unit）２１、メモリ２２、ディスクインターフェース制御部（ディスクＩ／Ｆ）２３、ＦＣ（Fibre Channel）インターフェース制御部（ＦＣ  Ｉ／Ｆ）２５、２６、及びＬＡＮインターフェース制御部（ＬＡＮ  Ｉ／Ｆ）２７を備える。記憶部は、例えば、ディスクユニット２４である。
【００４８】
ＣＰＵ２１は、メモリ２２に格納されている各種コンピュータプログラムを実行することにより、各種処理を実行する。メモリ２２は、各種コンピュータプログラムを記憶する不揮発性メモリと、論理ボリュームに書き込まれたり論理ボリュームから読み出されたりするデータを一時的に記憶する揮発性メモリ（キャッシュメモリ）とを含む。
【００４９】
ＣＰＵ２１は、ディスクＩ／Ｆ２３を介してディスクユニット２４に接続されている。ディスクＩ／Ｆ２３は、ＣＰＵ２１による論理ボリュームへのアクセスを可能とする。
【００５０】
ディスクユニット２４は、複数のＲＡＩＤグループを有し、各ＲＡＩＤグループは、複数のディスクドライブ２４０で構成される。ＲＡＩＤグループには、そのＲＡＩＤグループのＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）レベルに従って、データが書き込まれる。ディスクドライブは、ディスク型の記憶メディア（例えばハードディスク或いはＤＶＤ（Digital Versatile Disk））のドライブであり、例えば、ＦＣ（Fibre Channel）ディスクドライブ、ＳＡＴＡ（Serial Advanced Technology Attachment）ディスクドライブ、ＰＡＴＡ（Parallel Advanced Technology
Attachment）ディスクドライブ、ＦＡＴＡ（Fibre Attached Technology Adapted）ディスクドライブ、ＳＡＳ（Serial Attached SCSI）ディスクドライブ或いはＳＣＳＩ（Small
Computer System Interface）ディスクドライブ等である。ディスクドライブ２４０に限らず、他種の物理的な記憶デバイスが採用されても良い。他種の物理的な記憶デバイスとしては、例えば、ディスク型の記憶メディアとは異なるタイプの記憶メディア（例えばフラッシュメモリ）のドライブであっても良い。
【００５１】
ストレージシステム２０Ａには、例えば、実ボリューム２４０と、仮想ボリューム２４１とが備えられる。実ボリュームとは、ＲＡＩＤグループの記憶空間を基に形成された、実体のある論理ボリュームである。仮想ボリュームとは、仮想的な論理ボリュームである。仮想ボリュームには、実ボリュームの全部又はその一部分である後述のプール領域が対応付けられる。
【００５２】
実ボリューム２４０としては、ホスト計算機５１に提供される実ボリューム（以下、ホスト提供実ＶＯＬ）と、ホスト計算機５１に提供されない実ボリューム（以下、ホスト非提供実ＶＯＬ）とがある。
【００５３】
ホスト提供実ＶＯＬとしては、後述するレプリケーション保存においてレプリケーション元となるプライマリの実ボリューム（以下、実ＰＶＯＬ）と、そのレプリケーションにおいてレプリケーション先となるセカンダリの論理ボリューム（以下、レプリケーション実ＳＶＯＬ）とがある。以下、実ＶＯＬを構成する各記憶領域を、「実領域」と呼ぶ。
【００５４】
ホスト非提供実ＶＯＬとしては、プールの構成要素となる論理ボリューム（以下、プールＶＯＬ）がある。以下、プールＶＯＬを構成する実領域を、「プール領域」と呼ぶ。
【００５５】
仮想ボリューム２４１としては、Thin Provisioning技術により動的に記憶容量が拡張され仮想ボリューム（以下、容量拡張ＶＯＬ）と、外部ストレージシステム７０に存在する実ボリューム（以下、外部実ＶＯＬ）７００に対応した仮想ボリューム（以下、内部仮想ＶＯＬ）と、後述するクイックスナップショット（以下、ＱＳ）保存やCopy On Writeスナップショット（以下、ＣＯＷＳ）保存におけるセカンダリの論理ボリューム（以下、仮想ＳＶＯＬ）とがある。例えば、ＣＰＵ２１が、容量拡張ＶＯＬを指定したＩ／Ｏコマンドを受けた場合、容量拡張ＶＯＬにプール領域を割り当て、その割り当てたプール領域にアクセスする。また、例えば、ＣＰＵ２１が、内部仮想ＶＯＬを指定したＩ／Ｏコマンドを受けた場合、その内部仮想ＶＯＬに対応付けられている外部実ＶＯＬ７００を指定したＩ／Ｏコマンドを外部ストレージシステム７０に送信する。以下、仮想ＶＯＬを構成する各記憶領域を、「仮想領域」と呼ぶ。
【００５６】
仮想ストレージシステム１００Ａにおいて、ストレージシステム２０Ａと２０Ｂとが専用の通信線４４で接続されている。その通信線４４を、コマンドやデータが流れる。なお、通信線４４が無い構成の場合には、ストレージシステム２０Ａと２０Ｂは、ホスト計算機５１を介してコマンドやデータを送受信しても良い。
【００５７】
ＦＣ  Ｉ／Ｆ２５は、ストレージシステム２０Ａと外部ストレージシステム７０との間のＳＡＮ４３を通じてのコマンドやデータの転送を制御する。ＦＣ  Ｉ／Ｆ２６は、ストレージシステム２０Ａとホスト計算機５１との間のＳＡＮ４１を通じてのコマンドやデータの転送を制御する。ＳＡＮ４１及び４３を介した通信のプロトコルとしては、例えば、ファイバチャネルプロトコルやｉＳＣＳＩプロトコルなどを採用することができる。尚、ＳＡＮ４３に代えて、ＦＣ  Ｉ／Ｆ２５と外部ストレージシステム７０とが光ファイバケーブルなどで直接接続されていてもよい。
【００５８】
ＬＡＮ  Ｉ／Ｆ２７は、管理ネットワーク４０を介して管理装置５０に接続される。管理装置５０は、例えば、ＣＰＵやメモリ等を備えた計算機であり、仮想ストレージシステム１００内の論理ボリュームの作成、ホスト計算機５１への論理ボリュームの割り当て、ホスト計算機５１と仮想ストレージシステム１００との間の論理パスの設定（ＬＵＮマスキングやゾーニングなど）などを管理することができる。
【００５９】
以上が、本実施形態のシステム全体の構成例についての説明である。なお、この構成例によれば、管理装置５０から各ストレージシステム２０に情報を設定する方式は、いわゆるアウトバウンド方式（管理装置５０から各ストレージシステム２０へのコマンドが経由する通信ネットワーク（管理ネットワーク４０）が、ホスト計算機５１から各ストレージシステム２０へのコマンドが経由する通信ネットワーク（ＳＡＮ４１、４２）と異なる方式）であるが、その方式に代えて、インバウンド方式が採用されても良い。例えば、管理装置５０がＳＡＮ４１経由で各ストレージシステム２０との間で管理情報を送受信するような構成となれば、インバウンド方式となる。また、外部ストレージシステム７０は無くても良い。また、システム全体において、メインフレームシステムとオープンシステムのいずれか一方で構成されても良いし、それらの両方が混在してもよい。
【００６０】
前述した仮想ストレージシステム１００Ａ、１００Ｂが行うデータ保存の方式として、「レプリケーション保存」、「ＱＳ保存」及び「ＣＯＷＳ保存」の３タイプがある。以下、それぞれのタイプのデータ保存方式について説明する。なお、以下の説明では、レプリケーション保存が行われるＶＯＬペアを「レプリケーションペア」と言い、ＱＳ保存が行われるＶＯＬペアを「ＱＳペア」と言い、ＣＯＷＳ保存が行われるＶＯＬペアを「ＣＯＷＳペア」と言う。また、以下の説明では、論理ボリュームを構成する一記憶領域に記憶されるデータを「データ要素」と言う。
【００６１】
＜＜レプリケーション保存＞＞。
【００６２】
図３Ａは、レプリケーション保存の概要図である。なお、図３Ａには、１〜３世代のバックアップにそれぞれ対応した３つのレプリケーション実ＳＶＯＬ２４０Ｓ１、２４０Ｓ２及び２４０Ｓ３が示されているが、以下、レプリケーション実ＳＶＯＬ２４０Ｓ１を例に採り説明する。
【００６３】
レプリケーションペアを構成する実ＰＶＯＬ２４０Ｐに記憶されている全てのデータ要素が、そのレプリケーションペアを構成するレプリケーション実ＳＶＯＬ２４０Ｓ１にレプリケーションされる。具体的には、一つのレプリケーションペアについて、実ＰＶＯＬ２４０Ｐを構成する複数の実領域にそれぞれ対応した複数のビットで構成される差分ビットマップが用意される。実ＰＶＯＬ２４０Ｐの先頭実領域から順に、差分有りを表すビット（差分ビットマップにおけるビット（例えば‘１’））に対応した実領域に記憶されているデータ要素が、レプリケーション実ＳＶＯＬ２４０Ｓ１における実領域にコピーされる。データ要素のコピーが済む都度に、そのデータ要素を記憶している実領域に対応したビット（差分ビットマップにおけるビット）が、差分無しを表す値に更新される（例えば‘１’から‘０’に更新される）。実ＰＶＯＬに記憶されている全てのデータ要素のコピーが済んだら、その実ＰＶＯＬを含んだレプリケーションペアは論理的に分割される（例えばペアの状態が‘スプリットに更新される）。ペアが論理的に分割されている状態では、実ＰＶＯＬにおける或る実領域に新たにデータ要素が書き込まれても、レプリケーション実ＳＶＯＬは更新されない（但し、差分ビットマップにおけるその或る実領域に対応したビットが、差分有りを表す値“１”に更新される）。
【００６４】
図４Ａは、差分ビットマップの一例を示す。一つのレプリケーションペアに対する差分ビットマップ群４１００には、例えば、一つの差分ビットマップ４０１が含まれている。差分ビットマップ４０１におけるビット‘０’は、実ＰＶＯＬからのレプリケーション実ＳＶＯＬへのコピーが終了した箇所（つまり、差分無しの実領域）を表し、ビット‘１’は、そのコピーが終了していない箇所（つまり、差分有りの実領域）を表している（ＰＶＯＬ及びＳＶＯＬの少なくとも一方が仮想ＶＯＬであっても良い）。差分ビットマップ４０１を構成する各ビットには、予め決められたサイズの各実領域が対応している。例えば、或る実領域において一部分でも更新があった場合は、その実領域に対応したビットが‘０’から‘１’に更新される。
【００６５】
図４Ａは、１つのレプリケーションペアについて差分ビットマップが１つ用意される例を示しているが、図４Ｂに示すように、１つのレプリケーションペアについて同じサイズの差分ビットマップが２つ用意されても良い。２つの差分ビットマップが利用される場合には、例えば以下の流れでレプリケーション保存が行われる。
【００６６】
実ＰＶＯＬ２４０Ｐに記憶されている全てのデータ要素をレプリケーション実ＳＶＯＬ２４０Ｓ１に最初にコピーする処理を、以下、「形成コピー」と呼ぶ。形成コピーでは、ＣＰＵ２１が、形成コピー用の差分ビットマップ（以下、「形成ＢＭ」と略記する）４０３を構成する全てのビットを‘１’に変更する。形成コピーにおいて、ＣＰＵ２１は、形成ＢＭ４０３からビット‘１’を検出した場合、そのビット‘１’に対応する実領域に記憶されているデータ要素がキャッシュメモリ（図１に示すメモリ２２の一部）に記憶されているか否かの判定を行う。キャッシュメモリに記憶されていなければ、ＣＰＵ２１は、実ＰＶＯＬ２４０Ｐからデータ要素を読み出してキャッシュメモリに書き込み、キャッシュメモリにおいて、そのデータ要素のコピーを作成する。そして、ＣＰＵ２１は、そのデータ要素が正しいか否かを判定するための冗長情報（例えば、パリティデータ）を新規に作成し、その冗長情報をデータ要素の複製に付随させる。ＣＰＵ２１は、キャッシュメモリにデータ要素を書込んだら、形成ＢＭ４０３の該当ビット（読出し元の実領域に対応したビット）を、‘１’から‘０’に更新する。ＣＰＵ２１は、形成ＢＭ４０３における全てのビットが‘０’になるまで、上述の処理を繰り返す。なお、実ＰＶＯＬ２４０Ｐからデータ要素を読み出す際に、レプリケーション実ＳＶＯＬ２４０Ｓ１用の冗長情報を作成し、その冗長情報をレプリケーション実ＳＶＯＬ２４０Ｓ１用のデータ要素としてキャッシュメモリに格納する方法が採用されても良い。また、例えば、実ＰＶＯＬ２４０Ｐからのキャッシュメモリへのデータ要素の読出しとは非同期のタイミングで、キャッシュメモリ上のレプリケーション実ＳＶＯＬ２４０Ｓ１用のデータ要素をレプリケーション実ＳＶＯＬ２４０Ｓ１に書込む方法が採用されても良い。
【００６７】
上記の形成コピーが完了した場合、実ＰＶＯＬ２４０Ｐとレプリケーション実ＳＶＯＬ２４０Ｓ１とのペアにおいて差分が存在しない状態となる。言い換えれば、形成コピーの完了した直後は、そのレプリケーションペアの状態は‘ペア同期’である。ＣＰＵ２１が、そのペアの状態を、任意の時刻において‘ペア同期’から‘スプリット’に更新することで、レプリケーション実ＳＶＯＬ２４０Ｓ１は、その任意の時刻における実ＰＶＯＬ２４０Ｐのバックアップとなる。
【００６８】
なお、レプリケーションペアにおいて差分が無い場合にペア状態が‘非同期’に更新されるが、例えば、ＣＰＵ２１が、ホスト計算機５１からスプリット要求を受けた場合、形成コピーの実行中（つまり、ペアにおいて差分が生じている間）であっても、ホスト計算機５１に、スプリットの完了を報告することができる。この場合、ＣＰＵ２１は、形成ＢＭ４０３及び差分コピー用の差分ビットマップ４０２（ペア状態をスプリットにした後の差分を管理する差分ビットマップ、以下、「更新ＢＭ」と略記する）を併用する。例えば、ＣＰＵ２１は、スプリットの完了を報告した後に、実ＰＶＯＬ２４０Ｐの或る実領域に新たにデータ要素が書込まれた場合、その実領域に対応した、更新ＢＭ４０２におけるビットを‘１’に更新する。ＣＰＵ２１は、形成コピー中、或いは、形成コピー完了後にコピー要求をホスト計算機５１から受信した場合、更新ＢＭ４０２からビット‘１’を検出したならば、そのビット‘１’に対応した実領域（実ＰＶＯＬにおける実領域）に記憶されているデータ要素をレプリケーション実ＳＶＯＬ２４０Ｓ１にコピーする。つまり、いわゆる差分コピーが行われる。
【００６９】
＜＜ＱＳ保存＞＞。
【００７０】
図３Ｂは、ＱＳ保存の概要図である。なお、図３Ｂには、１〜３世代のスナップショットにそれぞれ対応した３つの仮想ＳＶＯＬ２４１Ｓ１、２４１Ｓ２及び２４１Ｓ３が示されているが、以下、仮想ＳＶＯＬ２４１Ｓ１を例に採り説明する。
【００７１】
ＱＳ保存では、データ要素の保存先となる仮想領域（仮想ＳＶＯＬ２４１Ｓ１を構成する仮想領域）分のプール領域がプール２４００から確保される。ＱＳ保存では、レプリケーション保存における形成コピーは実行されず、実ＰＶＯＬ２４０Ｐに新たなデータ要素が書き込まれる場合に、実ＰＶＯＬ２４０Ｐから仮想ＳＶＯＬ２４１Ｓ１へ旧いデータ要素が移動される。実ＰＶＯＬ２４０Ｐの或る実領域にデータ要素Ａが記憶されている状態の、実ＰＶＯＬ２４０Ｐのスナップショットを取得する場合、その或る実領域に、データ要素Ｂが書きこまれ、その後、データ要素Ｃが書込まれる場合、更新前のデータ要素Ａは、仮想ＳＶＯＬ２４１Ｓ１に書き込まれるが、その次の更新前のデータ要素Ｂは、仮想ＳＶＯＬ２４１Ｓ１に書き込まれず、データ要素Ｃに上書きされる。
【００７２】
また、例えば、３つの仮想ＳＶＯＬ２４１Ｓ１、２４１Ｓ２及び２４１Ｓ３が存在する場合に、実ＰＶＯＬ２４０Ｐの或る実領域が初めて更新される場合、その或る実領域に記憶されているデータ要素Ａの複製が作成され、データ要素Ａの複製が、３つの仮想ＳＶＯＬ２４１Ｓ１、２４１Ｓ２及び２４１Ｓ３にそれぞれ保存される（図１０Ａ参照）。このため、プール２４００における３つの実領域に、それぞれ、３つのデータ要素Ａの複製が記憶されることになる。
【００７３】
＜＜ＣＯＷＳ保存＞＞。
【００７４】
図３Ｃは、ＣＯＷＳ保存の概要図である。なお、図３Ｃには、１〜３世代のスナップショット（バックアップ）にそれぞれ対応した３つの仮想ＳＶＯＬ２４１Ｓ４、２４１Ｓ５及び２４１Ｓ６が示されているが、以下、仮想ＳＶＯＬ２４１Ｓ４を例に採り説明する。
【００７５】
実ＰＶＯＬ２４０Ｐの更新前のデータ要素が仮想ＳＶＯＬ２４１Ｓ４を通じてプール２４００に退避される点が、ＱＳ保存と共通している。しかし、ＣＯＷＳ保存は、下記の第一及び第二の点で、ＱＳ保存と相違する。
【００７６】
第一の点は、同一の実領域に何回データ要素が更新されても全ての更新前のデータ要素がプール２４００に退避される点である。具体的には、例えば、データ要素Ａの存在する実領域にデータ要素Ｂが書き込まれ、更に、その実領域にデータ要素Ｃが書き込まれる場合には、データ要素Ａのみならずデータ要素Ｂもプール２４００に退避される。但し、これは、１つの更新のたびに、スナップショット取得指示が入った場合であり、スナップショット取得の指示が入らず、かつ、他のVOLがデータを共有していなければ、退避せずに、データに上書きする。
【００７７】
第二の点は、複数世代の仮想ＳＶＯＬ２４１Ｓにおいて互いに重複する複数のデータ要素のうちの一つだけがプール２４００におけるプール領域に保存され、他のデータ要素については、複数世代の仮想ＳＶＯＬ２４１Ｓを通じてそのデータ要素が参照される点である。具体的には、例えば、３つの仮想ＳＶＯＬ２４１Ｓ４、２４１Ｓ５及び２４１Ｓ６のそれぞれの仮想領域（以下、仮想領域１、２、３とする）に同じデータ要素Ａが記憶されることになる場合、仮想領域１、２及び３が、プール２４００における当該プール領域（データ要素Ａが記憶される領域）と直接的に対応付けられるか（図１０Ｂ参照）、或いは、仮想領域１のみが直接的に当該プール領域に対応付けられ、他の仮想領域２及び３が、仮想領域１に対応付けられる（つまり間接的に当該プール領域に対応付けられる）（図１０Ｃ参照）。前者の場合は、仮想領域１、２及び３にリードアクセスが発生した場合、当該プール領域にリードアクセスが発生し、後者の場合は、仮想領域２及び３にリードアクセスが発生した場合には、仮想領域１を通じて当該プール領域にリードアクセスが発生する。
【００７８】
以上が、レプリケーション保存、ＱＳ保存及びＣＯＷＳ保存についての説明である。なお、ＱＳ保存、ＣＯＷＳ保存、容量拡張ＶＯＬのそれぞれに対応したプールは、別々であっても良いし共通であっても良い。また、採用されるデータ保存方式は、上記の３タイプに限定されず、３タイプ未満であっても良いし、４タイプ以上であっても良いし、３タイプであっても上記のデータ保存方式に限定する必要は無い。例えば、ＣＯＷＳ保存に類似したデータ保存方式であって、更新前のデータ要素ではなく更新後のデータ要素がプール２４００に退避され、更新前のデータ要素が実ＰＶＯＬ２４０Ｐに残るタイプのデータ保存方式が採用されても良い。また、上記のいずれのデータ保存方式においても、ＰＶＯＬは仮想ボリューム（例えば容量拡張ＶＯＬ或いは内部仮想ＶＯＬ）であっても良い。
【００７９】
＜＜メモリ２２に記憶されるコンピュータプログラム及び情報＞＞。
【００８０】
図１７は、メモリ２２に記憶されるコンピュータプログラム及び情報の一例を示す。
【００８１】
コンピュータプログラムとしては、例えば、レプリケーション保存を実行するレプリケーションプログラム２２０１、論理ボリュームに対するＩ／Ｏ（入力／出力）を制御するＩ／Ｏプログラム２２０２、データ保存方式の切替えを行う切替えプログラム２２０３、及び、所定の監視を行う監視プログラム２２０４がある。監視プログラム２２０４は、ストレージシステム２０に代えて、管理装置５０で実行されても良い。
【００８２】
情報としては、例えば、論理ボリュームやデータ保存方式タイプなどの管理のための構成情報２２０５がある。構成情報２２０５には、例えば、ＶＯＬ管理テーブル、領域マッピングテーブル及びプール領域管理テーブルが含まれる。
【００８３】
図１８は、ＶＯＬ管理テーブル２２０５１の構成例を示す。
【００８４】
ＶＯＬ管理テーブル２２０４１には、論理ボリューム毎に、ＶＯＬ番号（例えばＬＵＮ）、ＶＯＬ種別、データ保存方式タイプ、ペア相手ＶＯＬ番号、ペア状態などが記録される。ＶＯＬ種別としては、例えば、実ＶＯＬと仮想ＶＯＬのどちらであるか、ＰＶＯＬ、ＳＶＯＬ、プールＶＯＬ、外部実ＶＯＬのいずれであるか、仮想ＶＯＬでＰＶＯＬの場合には、容量拡張ＶＯＬと内部仮想ＶＯＬのいずれであるか等がある。
【００８５】
Ｉ／Ｏプログラム２２０２は、例えば、ホスト計算機５１からＩ／Ｏコマンドを受けた場合、そのＩ／Ｏコマンドで指定されているＬＵＮに対応した行（ＶＯＬ管理テーブル２２０４１における行）を参照する。Ｉ／Ｏプログラム２２０２は、そのＬＵＮに対応したＶＯＬ種別やデータ保存方式タイプ等に応じて、アクセスを制御する。
【００８６】
図９Ａは、領域マッピングテーブル９１０の一レコードの構成例を示す。
【００８７】
領域マッピングテーブル９１０は、ＶＯＬ（例えば、仮想ＳＶＯＬ或いは容量拡張ＶＯＬといった仮想ＳＶＯＬ）毎に対応している。領域マッピングテーブル９１０の各レコード（行）は、対応するＶＯＬにおける記憶領域（例えば仮想ＶＯＬにおける仮想領域）に対応している。レコードには、そのレコードに対応する記憶領域のアドレス９０１と、その記憶領域に対応付けられた記憶領域（例えば、ＰＶＯＬ或いはプール２４００における実領域）のアドレス９０２とが記録される。
【００８８】
図９Ｂは、プール領域管理テーブル９２０の一レコードの構成例を示す。
【００８９】
プール領域管理テーブル９２０は、プール２４００毎に対応している。プール領域管理テーブル９２０の各レコード（行）は、対応するプールにおける各プール領域に対応している。レコードには、そのレコードに対応するプール領域のアドレス９１１と、そのプール領域に関する情報（以下、プール領域管理情報）９１２とが記録される。プール領域のアドレス９１１は、例えば、プールＶＯＬのＩＤと、そのプールＶＯＬにおける位置を表す情報との組合せで表されている。プール領域管理情報９１２には、例えば、対応するプール領域に幾つの仮想領域が対応付けられているかや、そのプール領域に関するステータス（例えば、割当て済み、割り当て可能など）などが含まれる。
【００９０】
＜＜データ保存方式切替え＞＞。
【００９１】
図２は、データ保存方式の段階的な切替えの流れの一例を示す。
【００９２】
監視プログラム２２０４が起動される。監視プログラム２２０４は、定期的に起動しても良いし、ホスト計算機５１から所定のコマンドを受信したことを契機に起動しても良い。例えば、ＰＶＯＬ又はＳＶＯＬを指定したライトコマンド又はリードコマンドがきたタイミングで、起動されても良い。
【００９３】
複数のレプリケーションペアについて、監視プログラム２２０４は、第一の判断を行う。第一の判断としては、例えば、以下の（第一の判断１）、（第一の判断２）及び（第一の判断３）のうちの少なくとも一つが行われる。
（第一の判断１）複数のレプリケーションペアにおける複数のレプリケーション実ＳＶＯＬのうちの二以上のレプリケーション実ＳＶＯＬにおいて、重複したデータ要素の総量がどのぐらいあるか。
（第一の判断２）複数のレプリケーションペアにおける複数のレプリケーション実ＳＶＯＬのそれぞれのアクセス頻度はどのぐらいか。
（第一の判断３）レプリケーション実ＳＶＯＬの消費容量割合（レプリケーション実ＳＶＯＬの記憶容量のうちのどのぐらいに実際にデータ要素が記憶されているか）。
【００９４】
監視プログラム２２０４は、第一の判断において、以下の判断結果（１１ａ）、（１２ａ）及び（１３ａ）のうちの少なくとも一つが得られた場合に、切替えプログラム２００３に、レプリケーション保存からＱＳ保存へ切替えることを実行させる（矢印２０１）。これにより、各レプリケーション実ＳＶＯＬ内のデータが各仮想ＳＶＯＬを通じてプール領域に保存される。
（１１ａ）（第一の判断１）において、重複したデータ要素の総量が第一の閾値以上第二の閾値未満である（第一の閾値＜第二の閾値）。
（１２ａ）（第一の判断２）において、所定数のレプリケーション実ＳＶＯＬについてのアクセス頻度が第三の閾値以上第四の閾値未満である（第三の閾値＜第四の閾値）。
（１３ａ）（第一の判断３）において、レプリケーション実ＳＶＯＬの消費容量割合が第五の閾値未満である。
【００９５】
監視プログラム２２０４は、第一の判断において、以下の判断結果（１１ｂ）、（１２ｂ）及び前述の（１３ａ）のうちの少なくとも一つが得られた場合に、切替えプログラム２００３に、レプリケーション保存からＣＯＷＳ保存へ切替えることを実行させる。
（１１ｂ）（第一の判断１）において、重複したデータ要素の総量が第二の閾値以上である。
（１２ｂ）（第一の判断２）において、所定数のレプリケーション実ＳＶＯＬについてのアクセス頻度が第三の閾値未満である。
【００９６】
上記の第一の判断において、前述したいずれの判断結果にもならない場合には、レプリケーション保存におけるレプリケーション実ＳＶＯＬは残されたままとなる。
【００９７】
複数のＱＳペアについて、監視プログラム２２０４は、第二の判断を行う。第二の判断としては、例えば、以下の（第二の判断１）及び／又は（第二の判断２）が行われる。
（第二の判断１）複数のＱＳペアにおける複数の仮想ＳＶＯＬのうちの二以上の仮想ＳＶＯＬにおいて、重複したデータ要素の総量がどのぐらいあるか。
（第二の判断２）複数のＱＳペアにおける複数の仮想ＳＶＯＬのそれぞれのアクセス頻度はどのぐらいか。
【００９８】
監視プログラム２２０４は、第二の判断において、以下の判断結果（２１ａ）及び／又は（２２ａ）が得られた場合に、切替えプログラム２００３に、ＱＳ保存からＣＯＷＳ保存へ切替えることを実行させる（矢印２０３）。これにより、複数の仮想ＳＶＯＬにそれぞれ記憶されている複数のデータ要素が互いに重複している場合には、それら複数のデータ要素のうちの一つのデータ要素が記憶されているプール領域が、直接的に又は間接的に、複数の仮想ＳＶＯＬにおいてそのデータ要素が存在する仮想領域にマッピングされる。互いに重複する複数のデータ要素のうちの他のデータ要素が存在するプール領域は、未使用のプール領域とされ、それ故、そのプール領域は、他のデータ要素の保存のために使用可能である。
（２１ａ）（第二の判断１）において、重複したデータ要素の総量が第二の閾値以上である。
（２２ａ）（第二の判断２）において、所定数の仮想ＳＶＯＬについてのアクセス頻度が第三の閾値未満である。
【００９９】
監視プログラム２２０４は、第二の判断において、以下の判断結果（２２ｂ）が得られた場合に、切替えプログラム２００３に、ＱＳ保存からレプリケーション保存へ切替えることを実行させる（矢印２０８）。
（２２ｂ）（第二の判断２）において、所定数の仮想ＳＶＯＬについてのアクセス頻度が第四の閾値以上である。
【０１００】
複数のＣＯＷＳペアについて、監視プログラム２２０４は、第三の判断を行う。第三の判断は、例えば、複数の仮想ＳＶＯＬのそれぞれのアクセス頻度はどのぐらいかの判断である。
【０１０１】
監視プログラム２２０４は、第三の判断において、所定数の仮想ＳＶＯＬについてのアクセス頻度が第三の閾値以上第四の閾値未満であるとの判断結果が得られた場合、切替えプログラム２００３に、ＣＯＷＳ保存からＱＳ保存へ切替えることを実行させる（矢印２０６）。
【０１０２】
監視プログラム２２０４は、第三の判断において、所定数の仮想ＳＶＯＬについてのアクセス頻度が第四の閾値以上であるとの判断結果が得られた場合、切替えプログラム２００３に、ＣＯＷＳ保存からレプリケーション保存へ切替えることを実行させる（矢印２０７）。
【０１０３】
以上が、データ保存方式の段階的な切替えの流れの概要である。なお、上記の流れにおいては、レプリケーション保存からＱＳ保存或いはＣＯＷＳ保存への切り替え、ＱＳ保存からＣＯＷＳ保存或いはレプリケーション保存への切替え、及び、ＣＯＷＳ保存からＱＳ保存或いはレプリケーション保存への切替えにおいて、データ要素０の総量に応じて実ＰＶＯＬから容量拡張ＶＯＬへの切り替えが行われても良い。具体的には、例えば、監視プログラム２２０４は、第一の判断、第二の判断及び第三の判断の各々において、データ要素を構成する全てのデータブロックが‘０’であるデータ要素（以下、「データ要素０」と言う）が実ＰＶＯＬを占める割合が所定値以上かどうかを判断し、所定値以上であれば、実ＰＶＯＬから容量拡張ＶＯＬへの切り替えを行い（矢印２０２、２０５、２１１、２１２、２１３、２１４）、所定値未満であれば、実ＰＶＯＬから容量拡張ＶＯＬへの切替えを行わない（矢印２０１、２０４、２０３、２０６、２０７、２０８）。
【０１０４】
上記の３タイプのデータ保存方式のそれぞれの容量効率（記憶容量の消費効率）について言うと、ＣＯＷＳ保存の容量効率が最も良く、その次に、ＱＳ保存の容量効率が良く、レプリケーション保存の容量効率が最も悪い。なぜなら、レプリケーション保存では、レプリケーション実ＳＶＯＬに空きの記憶容量があっても他の論理ボリュームに記憶されたデータ要素のコピー先として使用することは不可能であり、ＱＳ保存では、仮想ＳＶＯＬの実際に使用される仮想領域の分だけプール領域が使用され、ＣＯＷＳ保存では、複数の仮想ＳＶＯＬに存在する複数のデータ要素が互いに重複してればそれらのデータ要素のうちの一つのデータ要素についてのみプール領域が使用され、他のプール領域は未使用扱いとなるからである。
【０１０５】
一方、上記の３タイプのバックアップのそれぞれのＳＶＯＬについてのアクセス性能（Ｉ／Ｏの速度）で言うと、レプリケーション保存でのＳＶＯＬのアクセス性能が最も高く、その次に、ＱＳ保存でのＳＶＯＬのアクセス性能が高く、ＣＯＷＳ保存でのＳＶＯＬのアクセス性能が最も低い。なぜなら、ＣＯＷＳ保存では、複数の仮想ＳＶＯＬに存在する複数の仮想領域にアクセスが発生することにより一つのプール領域にアクセスが集中するおそれがあり、ＱＳ保存では、どの仮想領域にどこのプール領域が割当てられているかを表す領域マッピングテーブルを参照するといった特段の処理が必要となり、レプリケーション保存では、領域マッピングテーブルの参照無しにアクセスすることが可能だからである。
【０１０６】
本実施形態では、重複したデータ要素の総量、ＳＶＯＬのアクセス頻度及びレプリケーション実ＳＶＯＬの消費容量割合の少なくとも一つに応じて、レプリケーション保存からＱＳ保存へ、レプリケーション保存からＣＯＷＳ保存へ、或いは、ＱＳ保存からＣＯＷＳ保存へと切替えられる。また、重複したデータ要素の総量、ＳＶＯＬのアクセス頻度及びレプリケーション実ＳＶＯＬの消費容量割合の少なくとも一つに応じて、ＣＯＷＳ保存からＱＳ保存へ、ＣＯＷＳ保存からレプリケーション保存へ、或いは、ＱＳ保存からレプリケーション保存へと切替えられる。これにより、ストレージシステムの容量効率及び性能を高めることができる。
【０１０７】
なお、データ保存方式の切替えにおいて、切替え前のＳＶＯＬ（レプリケーション実ＳＶＯＬ又は仮想ＳＶＯＬ）のレプリカ（バックアップ）を作成した後に、データ保存方式を切替える方法と、レプリカを取らずにオンラインのまま切替える処理する方法とがある。
【０１０８】
以下、各種のデータ保存方式切替えについて詳細に説明する。
【０１０９】
＜＜図２の矢印２０１：レプリケーション保存からＱＳ保存への切替え＞＞。
【０１１０】
図５は、レプリケーション保存からＱＳ保存への切替えの処理の流れの一例を示す。図５、図７、図１３及び図１５の説明において、切替え元となるレプリケーション実ＳＶＯＬを「当該レプリケーション実ＳＶＯＬ」と呼び、当該レプリケーション実ＳＶＯＬとペアを構成する実ＰＶＯＬを「当該実ＰＶＯＬ」と呼び、切替え先となる仮想ＳＶＯＬを「当該仮想ＳＶＯＬ」と呼ぶ。
【０１１１】
ステップ２０１１において、切替えプログラム２２０３は、全てのビットが所定値（例えば０となった）移行用の差分ビットマップ（以下、移行ＢＭ）を準備し、その移行ＢＭにおける先頭ビットの位置を表す番号を、カウント値としてセットする（移行ＢＭの各ビット（以下、移行ビット）は、当該レプリケーション実ＳＶＯＬの各実領域に対応している）。また、切替えプログラム２２０３は、当該レプリケーション実ＳＶＯＬに対応した当該仮想ＳＶＯＬを設定する（例えば、図１８のボリューム管理テーブル２２０５１に、当該仮想ＳＶＯＬに対応した新たなレコードを設定する）。また、切替えプログラム２２０３は、当該仮想ＳＶＯＬに対応した領域マッピングテーブル９１０も用意する。その際、領域マッピングテーブル９１０における各仮想領域（当該仮想ＳＶＯＬを構成する仮想領域）に対応する各対応領域アドレス９０２として、当該実ＰＶＯＬにおける各実領域のアドレスを記録しても良い。その領域マッピングテーブル９１０は、適宜に、ステップ２０１４によって更新される。
【０１１２】
ステップ２０１２において、切替えプログラム２２０３は、カウント値が示す移行ビットに対応した実領域（当該レプリケーション実ＳＶＯＬにおける実領域、以下、この図５の説明において、「当該実領域Ｓ」と言う）にデータ要素が保存されているか否かを判定する。データ要素が保存されていれば、ステップ２０１３が実行され、データ要素が保存されていなければ、ステップ２０１５が実行される。
【０１１３】
ステップ２０１３において、切替えプログラム２２０３は、当該実領域Ｓに記憶されているデータ要素と、当該実ＰＶＯＬにおける実領域（当該実領域に対応した位置にある実領域、以下、この図５の説明において、「当該実領域Ｐ」と言う）に記憶されているデータ要素とが重複しているか否かを判断する。重複していないとの判断結果になれば、ステップ２０１４が実行され、重複しているとの判断結果になれば、ステップ２０１５が実行される。
【０１１４】
ステップ２０１４において、切り替えプログラム２２０３は、当該実領域Ｓに対応する仮想領域（以下、この図５の説明において、「当該仮想領域」と言う）に、未使用のプール領域（以下、この図５の説明において、「当該プール領域」と言う）を割り当てる。切り替えプログラム２２０３は、当該実領域Ｓに記憶されているデータ要素を当該プール領域にコピーする。切り替えプログラム２２０３は、当該プール領域と当該仮想領域とを対応付ける。具体的には、例えば、切り替えプログラム２２０３は、当該仮想ＳＶＯＬに対応する領域マッピングテーブル９１０（図９Ａ参照）に、当該仮想領域のアドレス９０１と、当該プール領域のアドレス９０２とを登録する。
【０１１５】
ステップ２０１５において、切替えプログラム２２０３は、前述したカウント値をインクリメントし、インクリメント後のカウント値が所定値（例えば、移行ＢＭを構成するビットの数）であるか否かを判定する。カウント値が所定値でなければ、切替えプログラム２２０３は、ステップ２０１２を実行し、カウント値が所定値であれば、ステップ２０１７を実行する。
【０１１６】
ステップ２０１６において、切り替えプログラム２２０３は、当該レプリケーション実ＳＶＯＬを構成要素とするペアを解除し、当該実ＰＶＯＬと当該仮想ＳＶＯＬとのペアをＱＳ保存が行われるペアとして作成する。具体的には、例えば、切り替えプログラム２２０３は、ボリューム管理テーブル２２０５１において、当該実ＰＶＯＬに対応したペア相手ＶＯＬ番号から当該レプリケーション実ＳＶＯＬのＶＯＬ番号を除去する。また、例えば、切り替えプログラム２２０３は、当該実ＰＶＯＬに対応したペア相手ＶＯＬ番号に、当該仮想ＳＶＯＬのＶＯＬ番号を含め、当該実ＰＶＯＬに対応したデータ保存方式としてＱＳ保存を表す値を設定する。同様に、例えば、切り替えプログラム２２０３は、当該仮想ＳＶＯＬに対応したペア相手ＶＯＬ番号に、当該実ＰＶＯＬのＶＯＬ番号を含め、当該仮想ＳＶＯＬに対応したデータ保存方式としてＱＳ保存を表す値を設定する。
【０１１７】
以下、図５のステップ２０１２及び２０１３で行われる処理の詳細の一例を説明する。ステップ２０１２及び２０１３では、差分ビットマップが使用されるか、或いは、データ要素の比較が行われる。以下、形成ＢＭ４０３における或るビットを「当該形成ビット」と言い、当該形成ビットに対応する、更新ＢＭ４０２におけるビットを「当該更新ビット」と言う。また、当該形成ビット（及び当該更新ビット）に対応する、実ＰＶＯＬにおける実領域を「当該実領域Ｐ」と言い、当該実領域Ｐに対応する、レプリケーション実ＳＶＯＬにおける実領域を「当該実領域Ｓ」と言う。
【０１１８】
＜＜図５のステップ２０１２で行われる処理の詳細の一例＞＞。
【０１１９】
切替えプログラム２２０３は、当該形成ビットが‘１’の場合、当該実領域Ｐについては、形成コピーが未実施なため、当該実領域Ｓにはデータ要素が無いと判定し、当該形成ビットが‘０’の場合、形成コピーが実施されたため、当該実領域Ｓにデータ要素が有ると判定する。
【０１２０】
＜＜図５のステップ２０１３で行われる処理の詳細の一例＞＞。
【０１２１】
切替えプログラム２２０３は、当該形成ビットと当該更新ビットがそれぞれ‘０’である場合、当該実領域Ｐにおけるデータ要素と、当該実領域Ｓにおけるデータ要素とが互いに重複していると判断し（つまりステップ２０１５が実行されることになり）、一方、当該形成ビットが‘０’であるが当該更新ビットが‘１’であるならば、それらのデータ要素が互いに重複していないと判断する（つまりステップ２０１４が実行されることになる）。或いは、例えば、切替えプログラム２２０３は、当該実領域Ｐと当該実領域Ｓからそれぞれデータ要素をリードし、リードされた２つのデータ要素を照合することで、それら２つのデータ要素が互いに重複しているか否かを判断する。重複していれば、ステップ２０１５が実行され、重複していなければ、ステップ２０１４が実行される。
【０１２２】
ところで、データ保存方式の切り替え中において、Ｉ／Ｏプログラム２２０２は、当該実ＰＶＯＬ、当該レプリケーション実ＳＶＯＬ及び当該仮想ＳＶＯＬのいずれについてもＩ／Ｏ禁止とすれば（例えば、それらのうちのいずれのＶＯＬを指定したＩ／Ｏコマンドを受けても、ビジー或いはリトライといった応答を返すようにすれば）、データ保存方式の切り替え中に、ＶＯＬにおけるデータ要素が更新されてしまうのを防ぐことができる。
【０１２３】
しかし、そのようにＩ／Ｏ禁止とすると、一時的にホスト計算機５１が行う業務を停止することになり得る。
【０１２４】
そこで、本実施形態では、Ｉ／Ｏプログラム２２０２は、データ保存方式の切替え中であっても、Ｉ／Ｏコマンドをホスト計算機５１から受け付け、Ｉ／Ｏコマンドを受信した場合には、そのＩ／Ｏコマンドの処理を実行する。なお、Ｉ／Ｏプログラム２２０２は、データ保存方式の切り替え中であるか否かを、例えば、メモリ２２に記録されている切り替え管理テーブル（図示せず）を参照することで判断することができる。切り替えプログラム２２０３は、例えば、データ保存方式の切替えを実行する場合には、どのＰＶＯＬとどのＳＶＯＬとのペアについてどのデータ保存方式からどのデータ保存方式への切替えを実行している最中かを表す情報（例えば、ＰＶＯＬのＶＯＬ番号、ＳＶＯＬのＶＯＬ番号、データ保存方式を表す情報を含んだ情報）を切り替え管理テーブルに登録し、切替えが終了した場合には、その登録した情報を切り替え管理テーブルから削除する。
【０１２５】
以下、適宜に、データ保存方式の切り替え中におけるＩ／Ｏ処理を説明する。
【０１２６】
＜＜レプリケーション保存からＱＳ保存への切替え中におけるＩ／Ｏ処理＞＞。
【０１２７】
図１３は、レプリケーション保存からＱＳ保存への切替え中にＩ／Ｏコマンドをホスト計算機５１Ａから受信した場合に実行される処理の流れを示す。図１３（及び図１５）を参照した説明では、Ｉ／Ｏコマンドで指定されている、当該実ＰＶＯＬにおける実領域を、「指定実領域Ｐ」と言い、Ｉ／Ｏコマンドで指定されている、当該レプリケーション実ＳＶＯＬにおける実領域を、「指定実領域Ｓ」と言う。また、当該レプリケーション実ＳＶＯＬにおける、指定実領域Ｐに対応した位置にある実領域を、「対応実領域Ｓ」と言い、当該実ＰＶＯＬにおける、指定実領域Ｓに対応した位置にある実領域を、「対応実領域Ｐ」と言う。また、リードコマンドに従うリード対象のデータ要素を「リード対象データ要素」と言い、ライトコマンドに従うライト対象のデータ要素を「ライト対象データ要素」と言う。
【０１２８】
Ｉ／Ｏプログラム２２０２は、受信したＩ／Ｏコマンドが当該実ＰＶＯＬを指定したリードコマンドであるか否かを判断する（ステップ２１１１）。
【０１２９】
ステップ２１１１において、リードコマンドであるとの判断結果になれば、Ｉ／Ｏプログラム２２０２は、リードコマンドで指定されている指定実領域Ｐからリード対象データ要素をリードし、そのリード対象データ要素をホスト計算機５１Ａに送信する。
【０１３０】
ステップ２１１１において、リードコマンドではないとの判断結果になれば、Ｉ／Ｏプログラム２２０２は、受信したＩ／Ｏコマンドが、当該実ＰＶＯＬを指定したライトコマンド、又は当該レプリケーション実ＳＶＯＬを指定したＩ／Ｏコマンドであるか否かを判断する（ステップ２１１３）。そのようなライトコマンド或いはＩ／Ｏコマンドであるとの判断結果になれば、ステップ２１１４以降が実行される。
【０１３１】
Ｉ／Ｏプログラム２２０２は、指定実領域Ｐからの形成コピー或いは指定実領域Ｓへの形成コピーが済んでおらず（ステップ２１１４でＹＥＳ）、移行ＢＭについてのカウント値が、指定実領域Ｐ或いは指定実領域Ｓに対応した移行ビットの位置を表す番号未満であれば（つまり、指定実領域Ｓ或いは対応実領域Ｓから仮想ＳＶＯＬへのデータ要素の移行が済んでいなければ）（ステップ２１１５でＹＥＳ）、ステップ２１１６を実行する。ステップ２１１６において、Ｉ／Ｏプログラム２２０２は、指定実領域Ｐ或いは対応実領域Ｐにあるデータ要素を、対応実領域Ｓ或いは指定実領域Ｓにコピーし、その後、指定実領域Ｐ又は指定実領域Ｓへのライト対象データ要素のライト、或いは、指定実領域Ｓからのリード対象データのリードを行う。この後、Ｉ／Ｏプログラム２２０２は、指定実領域Ｐ或いは指定実領域Ｓに対応した形成ビットを‘０’に更新し、指定実領域Ｐ或いは指定実領域Ｓに対応した移行ビット及び更新ビットを‘１’に更新する。
【０１３２】
Ｉ／Ｏプログラム２２０２は、指定実領域Ｐからの形成コピー或いは指定実領域Ｓへの形成コピーが済んでおらず（ステップ２１１４でＹＥＳ）、移行ＢＭについてのカウント値が、指定実領域Ｐ或いは指定実領域Ｓに対応した移行ビットの位置を表す番号以上であれば（つまり、指定実領域Ｓ或いは対応実領域Ｓから仮想ＳＶＯＬへのデータ要素の移行が済んでいれば）（ステップ２１１５でＮＯ）、ステップ２１１７を実行する。ステップ２１１７において、Ｉ／Ｏプログラム２２０２は、指定実領域Ｐ或いは対応実領域Ｐにあるデータ要素を、対応実領域Ｓ或いは指定実領域Ｓに対応した、当該仮想ＳＶＯＬにおける仮想領域（実際にはその仮想領域に割り当てたプール領域）にコピーし、その後、指定実領域Ｐ又はコピー先の仮想領域へのライト対象データ要素のライト、或いは、その仮想領域からのリード対象データのリードを行う。
【０１３３】
Ｉ／Ｏプログラム２２０２は、指定実領域Ｐからの形成コピー或いは指定実領域Ｓへの形成コピーが済んでおり（ステップ２１１４でＮＯ）、移行ＢＭについてのカウント値が、指定実領域Ｐ或いは指定実領域Ｓに対応した移行ビットの位置を表す番号未満であれば（ステップ２１１８でＹＥＳ）、ステップ２１１９を実行する。ステップ２１１９において、Ｉ／Ｏプログラム２２０２は、指定実領域Ｓからのリード対象データのリードを行うか、或いは、指定実領域Ｐ又は指定実領域Ｓへのライト対象データ要素のライトを行い、指定実領域Ｐ又は指定実領域Ｓに対応した移行ビット及び更新ビットを‘１’に更新する。
【０１３４】
Ｉ／Ｏプログラム２２０２は、指定実領域Ｐからの形成コピー或いは指定実領域Ｓへの形成コピーが済んでおり（ステップ２１１４でＮＯ）、移行ＢＭについてのカウント値が、指定実領域Ｐ或いは指定実領域Ｓに対応した移行ビットの位置を表す番号以上であれば（ステップ２１１８でＮＯ）、ステップ２１２０を実行する。ステップ２１２０において、Ｉ／Ｏプログラム２２０２は、指定実領域Ｓに対応した仮想領域からのリード対象データのリードを行うか、或いは、指定実領域Ｐ（又は、指定実領域Ｓに対応した仮想領域）へのライト対象データ要素のライトを行い、指定実領域Ｐ又は指定実領域Ｓに対応した移行ビット及び更新ビットを‘１’に更新する。
【０１３５】
＜＜図２の矢印２０３：ＱＳ保存からＣＯＷＳ保存への切替え＞＞。
【０１３６】
図６は、ＱＳ保存からＣＯＷＳ保存への切替えの処理の流れの一例を示す。図６及び後述の図１４の説明において、ＱＳペアを構成する仮想ＳＶＯＬを「ＱＳ仮想ＳＶＯＬ」と呼び、ＣＯＷＳペアを構成する仮想ＳＶＯＬを「ＣＯＷＳ仮想ＰＶＯＬ」と呼ぶ。
【０１３７】
ＱＳ保存からＣＯＷＳ保存への切替えが行われるということは、同一のＶＯＬをＰＶＯＬとする複数のＱＳペアが存在するということ、言い換えれば、同一のＰＶＯＬについて複数のＱＳ仮想ＳＶＯＬが存在するということである。
【０１３８】
ステップ２０３２において、切替えプログラム２２０３は、複数のＱＳ仮想ＳＶＯＬから、ＱＳ仮想ＳＶＯＬの組合せを一つ選択する。
【０１３９】
ステップ２０３３において、切り替えプログラム２２０３は、選択した組合せにおける一方のＱＳ仮想ＳＶＯＬに対応した移行ＢＭを準備し、その移行ＢＭにおける先頭移行ビットの位置を表す番号を、カウント値としてセットする。
【０１４０】
ステップ２０３４において、切り替えプログラム２２０３は、カウント値が表す移行ビットに対応した二つの仮想領域（ステップ２０３２で選択された組合せを構成する二つのＱＳ仮想ＳＶＯＬにおける二つの仮想領域）に記憶されている二つのデータ要素が重複しているか否かを判断する。重複していると判断された場合、ステップ２０３５が行われ、重複していないと判断された場合、ステップ２０３６が行われる。
【０１４１】
ステップ２０３５において、切り替えプログラム２２０３は、一方の仮想領域と一方のプール領域との対応付けを解除し、その一方の仮想領域と、他方の仮想領域に対応付けられている他方のプール領域とを対応付ける。具体的には、例えば、切り替えプログラム２２０３は、一方のＱＳ仮想ＳＶＯＬに対応した領域マッピングテーブル９１０における、一方の仮想領域のアドレス９０１に対応付けるアドレス９０２を、他方のプール領域のアドレスとする。対応付けが解除された一方のプール領域は、未割当てのプール領域として管理されても良い。もし、上記他方のプール領域に二つ以上の仮想領域が直接的に又は間接的に対応付けられている場合には、その他方のプール領域に、一方の仮想領域が対応付けられる。プール領域に幾つの仮想領域が対応付けられているかは、例えば、そのプール領域に対応したプール領域管理テーブル９２０に記録されるプール領域管理情報９１２に含まれる。
【０１４２】
ステップ２０３６において、切り替えプログラム２２０３は、移行ビットの位置を表すカウント値をインクリメントする。
【０１４３】
ステップ２０３７において、切り替えプログラム２２０３は、インクリメント後のカウント値が所定値（例えば、移行ＢＭを構成するビットの数）であるか否かを判定する。カウント値が所定値でなければ、切替えプログラム２２０３は、ステップ２０３４を実行し、カウント値が所定値であれば、ステップ２０３８を実行する。
【０１４４】
ステップ２０３８において、切り替えプログラム２２０３は、未選択の組合せ（ＱＳ仮想ＳＶＯＬの組合せ）があるかどうかを判断し、有れば、ステップ２０３２を実行し、無ければ、ステップ２０３９を実行する。
【０１４５】
ステップ２０３９において、切り替えプログラム２２０３は、ＶＯＬ管理テーブル２２０５１における、上記同一のＰＶＯＬ及び複数のＱＳ仮想ＳＶＯＬにそれぞれ対応したデータ保存方式を、“ＱＳ”から“ＣＯＷＳ”に更新する。これにより、ストレージシステム２０において、各ＱＳ仮想ＳＶＯＬが各ＣＯＷＳ仮想ＳＶＯＬとなる。
【０１４６】
＜＜ＱＳ保存からＣＯＷＳ保存への切り替え中におけるＩ／Ｏ処理＞＞。
【０１４７】
図１４は、ＱＳ保存からＣＯＷＳ保存への切替え中にＩ／Ｏコマンドをホスト計算機５１Ａから受信した場合に実行される処理の流れを示す。
【０１４８】
Ｉ／Ｏプログラム２２０２は、受信したＩ／Ｏコマンドがリードコマンドである場合（ステップ２１３１でＹＥＳ）、そのリードコマンドで指定されている記憶領域（ＱＳペアを構成するＰＶＯＬの記憶領域、又は、ＱＳペアを構成するＱＳ仮想ＳＶＯＬの記憶領域）からデータ要素を読出し、読出したデータ要素をホスト計算機５１Ａに送信する（ステップ２１３２）。
【０１４９】
Ｉ／Ｏプログラム２２０２は、受信したＩ／Ｏコマンドが、ＰＶＯＬの記憶領域を指定したライトコマンドである場合（ステップ２１３１でＮＯ、ステップ２１３３でＹＥＳ）、そのライトコマンドで指定されている記憶領域にデータ要素を書込む（ステップ２１３４）。
【０１５０】
Ｉ／Ｏプログラム２２０２は、受信したＩ／Ｏコマンドが、ＱＳ仮想ＳＶＯＬの記憶領域を指定したライトコマンドである場合（ステップ２１３１でＮＯ、ステップ２１３３でＮＯ、ステップ２１３５でＹＥＳ）、そのライト先の仮想領域が移行の済んでいない仮想領域であれば（具体的には、そのライト先仮想領域に対応した移行ビットが移行済みを表す値に更新されていなければ）（ステップ２１３６でＹＥＳ）、その仮想領域にデータ要素を書込む（ステップ２１３４）。
【０１５１】
そのライト先記憶領域が移行済みの仮想領域であれば（ステップ２１３６でＮＯ）、Ｉ／Ｏプログラム２２０２は、そのライト先仮想領域が、他のＱＳ仮想ＳＶＯＬにおける他の仮想領域にマッピングされているかどうかを判断する（例えば、他のＱＳ仮想ＳＶＯＬに対応した領域マッピングテーブル９１０において、他のＱＳ仮想ＳＶＯＬの他の仮想領域のアドレス９０１にそのライト先仮想領域のアドレス９０２が対応付けられているかどうかを判断する）（ステップ２１３７）。
【０１５２】
ステップ２１３７の判断の結果が、マッピングされているとの判断結果であれば（ステップ２１３７でＹＥＳ）、Ｉ／Ｏプログラム２２０２は、上記他の仮想領域のマッピング先を、ライト先仮想領域からそのライト仮想憶領域に対応するプール領域に変更し、ライト先仮想領域に別のプール領域を対応付け（ステップ２１３８）、その別のプール領域に、ライトコマンドに従うデータ要素を書込む（ステップ２１３９）。この場合、例えば、ライト先仮想領域Ｓ１に対応するプール領域ＰＬにデータ要素Ａが記憶されており、ライト先記憶領域Ｓ１に他のＱＳ仮想ＳＶＯＬにおける他の仮想領域Ｓ２がマッピングされている場合、他の仮想領域Ｓ２のマッピング先がライト先仮想領域Ｓ１からプール領域ＳＬに変更され、ライト先仮想領域Ｓ１に別のプール領域ＰＬ´が割当てられ、別のプール領域ＰＬ´に、ライトコマンドに従うデータ要素Ｂが書き込まれる。つまり、ライト先記憶領域Ｓ１に記憶されていたデータ要素Ａが上書きされず残ることになる。
【０１５３】
一方、ステップ２１３７の判断の結果が、マッピングされていないとの判断結果であれば（ステップ２１３７でＮＯ）、Ｉ／Ｏプログラム２２０２は、ライト先記憶領域に対応付けられているプール領域に、ライトコマンドに従うデータ要素を書込む（ステップ２１３９）。この場合、例えば、ライト先仮想領域Ｓ１に対応するプール領域ＰＬにデータ要素Ａが記憶されている場合、そのプール領域ＰＬに、ライトコマンドに従うデータ要素Ｂが書き込まれる。つまり、ライト先記憶領域Ｓ１に記憶されていたデータ要素Ａがデータ要素Ｂに更新される。
【０１５４】
＜＜図２の矢印２０４：レプリケーション保存からＣＯＷＳ保存への切替え＞＞。
【０１５５】
図７は、レプリケーション保存からＣＯＷＳ保存への切替えの処理の流れの一例を示す。
【０１５６】
ステップ２０４１〜ステップ２０４６´は、図５におけるステップ２０１１〜ステップ２０１６にそれぞれ対応している。図７に示す処理流れは、図５に示した処理流れと下記の点で相違しており、その他の点は実質的に同じである。
【０１５７】
ステップ２０４２及びステップ２０４３でNOとなった場合は、レプリケーション実SVOLのデータの中身が、レプリケーション実PVOLと同じである。このため、切替えプログラム２２０３は、当該仮想ＳＶＯＬ（今回の切替え先である仮想ＳＶＯＬ）に対応する領域マッピングテーブル９１０を更新する（ステップ１２００１）。具体的には、例えば、切替えプログラム２２０３は、その領域マッピングテーブル９１０において、実領域ＳＲに対応した仮想領域ＳＶ´（当該仮想ＳＶＯＬにおける仮想領域）に対応するアドレス９０２として、仮想領域ＳＶ（既存のＣＯＷＳ仮想ＳＶＯＬの仮想領域）のアドレス、又は、仮想領域ＳＶに対応したプール領域のアドレスを書込む。この場合、ステップ２０４４が行われない。これにより、重複したデータ要素がプール２４００に存在するのを防ぐことができる。ステップ２０４３でYESとなった場合は、レプリケーション実SVOLのデータの中身が、レプリケーション実PVOLと異なるため、データを格納する領域を確保してデータを格納するステップ２０１４の処理と同様に行う（ステップ２０４４）。
【０１５８】
・ステップ２０４６´において、切り替えプログラム２２０３は、当該レプリケーション実ＳＶＯＬを構成要素とするペアを解除し、当該実ＰＶＯＬと当該仮想ＳＶＯＬとのペアをＣＯＷＳ保存が行われるペアとして作成する。
【０１５９】
＜＜レプリケーション保存からＣＯＷＳ保存への切替え中におけるＩ／Ｏ処理＞＞。
【０１６０】
図１５は、レプリケーション保存からＣＯＷＳ保存への切替え中にＩ／Ｏコマンドをホスト計算機５１Ａから受信した場合に実行される処理の流れを示す。
【０１６１】
ステップ２１４１〜ステップ２１５０´は、図１３におけるステップ２１１１〜ステップ２１２０にそれぞれ対応している。図１５に示す処理流れは、図１３に示した処理流れと下記の点で相違しており、その他の点は実質的に同じである。
【０１６２】
・ステップ２１５０´において、Ｉ／Ｏプログラム２２０２は、指定実領域Ｐ或いは対応実領域Ｐにあるデータ要素を、対応実領域Ｓ或いは指定実領域Ｓに対応した、当該仮想ＳＶＯＬにおける仮想領域（実際にはその仮想領域に割り当てたプール領域）にコピーし、その後、指定実領域Ｐ又はコピー先の仮想領域へのライト対象データ要素のライトを行う。
【０１６３】
＜＜実ＰＶＯＬから容量拡張ＶＯＬへの移行＞＞。
【０１６４】
次に、実ＰＶＯＬから容量拡張ＶＯＬ（Thin Provisioning技術に従う仮想ボリューム）への移行の処理を、図８を参照して説明する。
【０１６５】
Ｉ／Ｏプログラム２２０２は、実ＰＶＯＬを指定したライトコマンドを受けた場合、そのライトコマンドで指定されている実領域Ｐに旧データ要素（保存済みのデータ要素）が記憶されているかどうかを判断する（ステップ２０５１）。Ｉ／Ｏプログラム２２０２は、旧データ要素が記憶されている場合（ステップ２０５１でＹＥＳ）、旧データ要素を使用する仮想ＳＶＯＬ（例えば実ＰＶＯＬをＰＶＯＬとする仮想ＳＶＯＬ）があるか否か検索する（ステップ２０５２）。もし、あれば（ステップ２０５２でＹＥＳ）、Ｉ／Ｏプログラム２２０２は、旧データ要素が記憶されている実領域Ｐに対応する、仮想ＳＶＯＬの仮想領域ＳＶに、プール領域を割当て、そのプール領域に、その旧データ要素を書込むか、或いは、その仮想領域ＳＶに既に同じデータ要素が記憶されていれば、その旧データ要素を実領域Ｐから破棄する（ステップ２０５３）。Ｉ／Ｏプログラム２２０２は、ライトコマンドで指定されている実領域Ｐに対応した、容量拡張ＶＯＬにおける仮想領域ＰＶに、プール領域を割当て、プール領域に、ライトコマンドに従うデータ要素を書込む（ステップ２０５４）。その際、Ｉ／Ｏプログラム２２０２は、容量拡張ＶＯＬに対応する領域マッピングテーブル９１０に、割当てたプール領域のアドレス９０２と、そのプール領域の割当て先の仮想領域ＰＶのアドレス９０１とを記録する。
【０１６６】
実ＰＶＯＬから容量拡張ＶＯＬへの移行の別の例として、図１６を参照して説明する。この例では、移行ＢＭが利用される。具体的には、まず、Ｉ／Ｏプログラム２２０２が、実ＰＶＯＬのどの実領域まで容量拡張ＶＯＬに適用したかを示す移行ＢＭを初期化し、カウント値を、移行ＢＭの先頭の移行ビットを表す値にセットする（ステップ２１５１）。Ｉ／Ｏプログラム２２０２は、カウント値が表す移行ビットに対応した実領域から順に処理する。Ｉ／Ｏプログラム２２０２は、カウント値が表す移行ビットに対応した実領域Ｐに旧データ要素が保存されているかいないかを判定し（ステップ２１５２）、保存されていれば（ステップ２１５２でＹＥＳ）、図８のステップ２０５２及び２０５３と同様の処理を行う（ステップ２１５３乃至２１５４）。その後、Ｉ／Ｏプログラム２２０２は、実領域Ｐに対応する仮想領域ＰＶに、プール領域を割当て、プール領域に、旧データ要素を書込む（ステップ２０５５）。その際、Ｉ／Ｏプログラム２２０２は、容量拡張ＶＯＬに対応する領域マッピングテーブル９１０に、割当てたプール領域のアドレス９０２と、そのプール領域の割当て先の仮想領域ＰＶのアドレス９０１とを記録する。その後、Ｉ／Ｏプログラム２２０２は、カウント値をインクリメントし、未処理の実領域があれば、ステップ２１５２を行う。
【０１６７】
図１６（及び／又は図８）において、前述の形成ＢＭや更新ＢＭを使用する方法について説明する。
【０１６８】
例えば、移行ビットに対応する実領域Ｐ（又はライトコマンドで指定されている実領域Ｐ）に対応した形成ビットと更新ビットの両方が‘０’の場合、その実領域Ｐについては、形成コピーが済みで更新がなかったので、その実領域Ｐにおけるデータ要素と、その実領域Ｐに対応した記憶領域Ｓ（例えばレプリケーション実ＳＶＯＬにおける記憶領域）に記憶されているデータ要素が同じである。そのため、Ｉ／Ｏプログラム２２０２により、記憶領域Ｓにおけるデータ要素が破棄されて、記憶領域Ｓが解放される。さらに、実領域Ｐにおけるデータ要素が、容量拡張ＶＯＬに割当てたプール領域へ格納される。実領域Ｐ及び記憶領域Ｓに、容量拡張ＶＯＬに割当てたプール領域とするよう、実ＰＶＯＬやＳＶＯＬに対応するデータマッピングテーブル９１０がそれぞれ更新される。
【０１６９】
また、例えば、移行ビットに対応する実領域Ｐ（又はライトコマンドで指定されている実領域Ｐ）に対応した形成ビットが‘０’で更新ビットが‘１’の場合、その実領域Ｐについて、形成コピーが済みで更新があったため、実領域Ｐに記憶されているデータ要素と記憶領域Ｓに記憶されているデータ要素が異なる。記憶領域Ｓにおけるデータ要素は、その記憶領域Ｓに対応する仮想領域ＳＶに割当てられたプール領域に記憶される。
【０１７０】
また、例えば、移行ビットに対応する実領域Ｐ（又はライトコマンドで指定されている実領域Ｐ）に対応した形成ビットが‘１’の場合、形成コピーが未実施なため、その実領域Ｐに所定のデータパターンではないデータ要素（例えば‘０’ではなく‘１’を表すデータ要素）があれば、その実領域Ｐに対応する仮想領域ＰＶに、プール領域が割り当てられ、そのプール領域に、そのデータ要素が記憶され、その実領域Ｐが解放される。データ無し、或いは、所定のデータパターンのデータ要素があれば、プール領域が割当てられることなく、実領域Ｐが解放される。
【０１７１】
図８では、所定のデータパターンでは無いデータ要素が記憶されている一以上の実領域に対応した一以上の仮想領域（容量拡張ＶＯＬにおける仮想領域）の全てにプール領域が割当てられた場合に、実ＰＶＯＬから容量拡張ＶＯＬへの移行の完了となる。図１６では、所定値（最後の移行ビットを表す値）を表すカウント値についてステップ２１５２乃至ステップ２１５５が終了した場合に、実ＰＶＯＬから容量拡張ＶＯＬへの移行の完了となる。Ｉ／Ｏプログラム２２０２は、プール領域の割当てられていない仮想領域（容量拡張ＶＯＬ）を指定したリードコマンドをホスト計算機５１Ａから受けた場合には、所定のデータパターンのデータ要素（例えば‘０’を表すデータ要素）をホスト計算機５１Ａに返す。これは、例えば、仮想ＳＶＯＬについても適用することができる。すなわち、仮想ＳＶＯＬについて、プール領域の割当てられていない仮想領域を指定したリードコマンドをホスト計算機５１Ａから受けた場合には、Ｉ／Ｏプログラム２２０２（又は切替えプログラム２２０３）は、所定のデータパターンのデータ要素（例えば‘０’を表すデータ要素）をホスト計算機５１Ａに返す。
【０１７２】
＜＜データ保存方式の切り替え中における、実ＰＶＯＬに対するリード／ライト処理＞＞。
【０１７３】
Ｉ／Ｏプログラム２２０２は、例えば、データ保存方式の切り替え中において、実領域Ｐを指定したライトコマンドを受けた場合、その実領域Ｐへのライトが、実ＰＶＯＬから容量拡張ＶＯＬへの移行の開始後初めてならば、Ｉ／Ｏプログラム２２０２は、実領域Ｐに対応したプール領域を確保し、そのプール領域に、ライトコマンドに従うデータ要素を格納する。旧データ要素が既に実領域Ｐにある場合、Ｉ／Ｏプログラム２２０は、そのデータ要素を記憶しているＳＶＯＬ（例えば、レプリケーション保存におけるレプリケーション実ＳＶＯＬ）あるか否か検索する。もし、あれば、Ｉ／Ｏプログラム２２０２は、仮想ＳＶＯＬに割当てたプール領域にその旧データ要素を書込む。または、Ｉ／Ｏプログラム２２０２は、仮想ＳＶＯＬがすでに同じ旧データ要素を記憶していれば、その仮想ＳＶＯＬに対して旧データ要素を書込むことなく、ライトコマンドに従うデータ要素を、実領域Ｐにおける旧データ要素に上書きする（或いは、実領域Ｐを破棄し、実領域Ｐに対応する仮想領域ＰＶ（容量拡張ＶＯＬにおける仮想領域）にプール領域を割当て、そのプール領域に、ライトコマンドに従うデータ要素を書込む）。ＣＯＷＳ仮想ＳＶＯＬにおける仮想領域へのライトの場合、その仮想領域が、レプリケーション保存における実ＰＶＯＬに記憶されているデータ要素を共有している仮想領域であれば、Ｉ／Ｏプログラム２２０２は、ＣＯＷＳ仮想ＳＶＯＬに、その共有されているデータ要素を退避した後、ライトコマンドに従うデータ要素を、実領域Ｐにおける旧データ要素に上書きする（或いは、実領域Ｐを破棄し、実領域Ｐに対応する仮想領域ＰＶ（容量拡張ＶＯＬにおける仮想領域）にプール領域を割当て、そのプール領域に、ライトコマンドに従うデータ要素を書込む）。この後、ＣＯＷＳ仮想ＳＶＯＬにおける仮想領域に対応した形成ビットを‘０’、に更新し、差分ビットを‘１’に更新する。
【０１７４】
＜＜領域の解放＞＞。
【０１７５】
データ保存方式の移行の処理、及び／又は、実ＰＶＯＬから容量拡張ＶＯＬへの移行の処理において、重複したデータ要素が記憶されている一方の記憶領域、及び／又は、所定のデータパターンのデータ要素が記憶されている記憶領域の解放が行われる。その記憶領域が仮想領域であれば、仮想領域に割当てられているプール領域の割り当てが解除され、そのプール領域が、他の仮想領域に割当てることが可能な状態とされる。
【０１７６】
具体的には、例えば、レプリケーション保存からスナップショット保存（ＱＳ保存又はＣＯＷＳ保存）への移行において、レプリケーション実ＳＶＯＬにデータ要素が格納されていない場合、実ＰＶＯＬからデータ要素が未コピーの場合、或いは、実ＰＶＯＬにデータ要素が格納されていない場合は、そのデータ要素に対応する、仮想ＳＶＯＬにおける仮想領域が解放される。実ＰＶＯＬに代えて容量拡張ＶＯＬがレプリケーション保存におけるＰＶＯＬとなっている場合は、そのデータ要素が記憶されている、容量拡張ＶＯＬにおける仮想領域も解放される。ＰＶＯＬからコピー済みの場合でも、レプリケーション実ＳＶＯＬにデータ要素が無ければ、そのデータ要素に対応する、仮想ＳＶＯＬにおける仮想領域が解放される。なお、データ要素が格納されていないとは、論理ボリュームのフォーマットによってデータ要素として‘０’が入っている場合を示す。フォーマットによりデータ要素‘０’が格納されているのか、或いは、ライト対象のデータ要素としてデータ要素‘０’が格納されているのかどうかは、ストレージシステム２０が判断することができる。なお、例えば、実ＰＶＯＬから容量拡張ＶＯＬへの移行の際には、Ｉ／Ｏプログラム２２０２は、データ要素‘０’がフォーマットによるものかライトコマンドによるものかに関わらず、データ要素‘０’が記憶される仮想領域を解放してよい。その場合、Ｉ／Ｏプログラム２２０２は、プール領域の割当てられていない仮想領域を指定したリードコマンドをホスト計算機５１Ａから受けた場合、データ要素‘０’をホスト計算機５１Ａに返す。
【０１７７】
以上が、第一の実施形態についての説明である。なお、上記の実施形態において、例えば、レプリケーションペアにおいてＰＶＯＬとレプリケーション実ＳＶＯＬが全く同じ内容の場合は、そのＰＶＯＬが、ＱＳ仮想ＳＶＯＬのＰＶＯＬとなるだけで、レプリケーション保存からＱＳ保存への切り替えが完了する。その場合、レプリケーション実ＳＶＯＬの全ての記憶領域が解放されて良い。
【０１７８】
＜第二の実施形態＞。
【０１７９】
以下、本発明の第二の実施形態について説明する。その際、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については説明を省略或いは簡略する。
【０１８０】
本実施形態では、切替え前のデータ保存方式におけるＳＶＯＬに記憶されているデータ要素が暗号化されている場合には、切替え後のデータ保存方式におけるＳＶＯＬに記憶されるデータ要素も暗号化される。即ち、セキュリティの保証は変わらない。暗号化が行われる単位は、何でも良い。例えば、論理ボリュームを構成する記憶領域単位でも良いし、所定数の記憶領域単位でも良いし、プール単位でも良い。
【０１８１】
以下、幾つかの具体例を説明する。
【０１８２】
図１９Ａに示す具体例によれば、レプリケーション実ＳＶＯＬの属性が暗号化属性となっている。この場合、例えば、Ｉ／Ｏプログラム２２０２は、レプリケーション実ＳＶＯＬにデータ要素を書込む場合、そのデータ要素を暗号化した上でそのレプリケーション実ＳＶＯＬに書込む。この状態において、レプリケーション保存からＣＯＷＳ保存へ切替えられる場合、言い換えれば、ＰＶＯＬ８０Ｐに対応するＳＶＯＬが、レプリケーション実ＳＶＯＬ８０ＲＳからＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１に切替えられる場合、切替え元であるレプリケーション実ＳＶＯＬ８０ＲＳは暗号化属性となっているため、切替え先のＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１も暗号化属性とされる。具体的には、例えば、切替えプログラム２２０３が、レプリケーション実ＳＶＯＬ８０ＲＳに記憶されている、暗号化されているデータ要素をそのまま、ＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１の仮想領域に割当てたプール領域に書込むか、或いは、暗号化されているデータ要素を第一の暗号化／復号化方式及び／又は第一の暗号キー（例えばレプリケーション実ＳＶＯＬ８０ＲＳに対応した暗号化／復号化方式及び／又は暗号キー）で一旦復号し、復号されたデータ要素を第二の暗号化／復号化方式及び／又は第二の暗号キー（例えばＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１に対応した暗号化／復号化方式及び／又は暗号キー）で暗号化し、暗号化されたデータ要素を、ＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１の仮想領域に割当てたプール領域に書込む。
【０１８３】
ＣＯＷＳ保存の場合は、プール２４００が、暗号化属性となっていない他のＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ２と共有される場合がある。このため、プール２４００には、暗号化されているデータ要素（暗号文）と暗号化されていないデータ要素（平文）とが混在することがある。
【０１８４】
また、ＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１における仮想領域が、ＰＶＯＬ８０Ｐにおける記憶領域にマッピングされている可能性があるため（言い換えれば、ＰＶＯＬ８０Ｐに記憶されているデータ要素がＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１に共有される可能性があるため）、ＣＯＳＷ仮想ＳＶＯＬ８０ＣＳ１のＰＶＯＬ８０Ｐも暗号化されていないと、セキュリティが保障されているとは言えない。そこで、本実施形態では、図１９Ｂに示すように、レプリケーションペアにおけるＰＶＯＬが暗号化属性となっておらず、レプリケーション実ＳＶＯＬ８０ＲＳが暗号化属性となっている状態から、そのレプリケーション実ＳＶＯＬ８０ＲＳからＣＯＷＳ仮想ＳＶＯＬへの切替えが行われた場合は、ＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１のみならず、ＰＶＯＬ８０Ｐも暗号化属性とされる（例えば、ＰＶＯＬ８０Ｐに記憶済みのデータ要素がＩ／Ｏプログラム２２０２によって暗号化される）。
【０１８５】
また、図２０に示すように、論理ボリューム毎に異なる暗号キーが用意されても良い。例えば、ＰＶＯＬ８０Ｐ及びレプリケーション実ＳＶＯＬ８０ＲＳとで異なる暗号キーが、例えばメモリ２２に記憶される（例えば、メモリ２２では、どの論理ボリュームにどの暗号キーが対応しているかが記憶される）。以下、ＰＶＯＬ８０Ｐに対応する暗号キーを「暗号キーＡ」とし、レプリケーション実ＳＶＯＬ８０ＲＳに対応する暗号キーを「暗号キーＢ」とする。レプリケーション保存からＣＯＷＳ保存への切替えにおいて、ＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１に記憶されるデータ要素のうち、ＰＶＯＬ８０Ｐと共有されるデータ要素については、暗号キーＡで暗号化されていても良いし、そうではないデータ要素については、暗号キーＢで暗号化されていても良い。或いは、ＣＯＷＳ仮想ＳＶＯＬ８０ＣＳ１に対応する暗号キーＣが用意されれば、暗号キーＢに代えて暗号キーＣで暗号化されても良い。要するに、切り替え前において、ＰＶＯＬとＳＶＯＬの暗号キーが違っているので、切り替え後も、ＰＶＯＬとＳＶＯＬの暗号キーを違える（暗号キーＢのままであっても、切り替え後のＳＶＯＬにおけるデータ要素は、ＰＶＯＬとの暗号キーＡと違った暗号キーで暗号化されていることになる）。
【０１８６】
以上、レプリケーション保存からＣＯＷＳ保存への切替えを例に採って幾つかの具体例を説明したが、上記の処理は、他のデータ保存方式切り替えに応用することができる。例えば、上記の処理は、レプリケーション保存からＱＳ保存への切り替えに応用することができる。その場合、プール２４００上のデータ要素の共有が発生しない点が、レプリケーション保存からＣＯＷＳ保存への切替えの場合と異なる。また、例えば、切り替え元のＳＶＯＬで暗号化されていても切り替え先のＳＶＯＬで暗号しない形態も採用することができるが、その場合、ＣＰＵ２１は、ユーザ（ホスト計算機又は管理計算機などの所定の計算機）に警告を出すことができる。
【０１８７】
＜第三の実施形態＞。
【０１８８】
第三の実施形態では、複数の論理ボリュームから読み出されたデータ要素が互いに重複するか否かの判定に、データ要素を基に得られた値であって、データ要素のサイズよりも小さいサイズの値が利用される。その値としては、例えば、データ要素のハッシュ値、或いは、そのデータ要素の冗長コード（例えば、ＣＲＣ（Cyclic Redundancy Check）やＬＲＣ（Longitudinal Redundancy Check））を採用することができる。
【０１８９】
以下、幾つか具体例を説明する。
【０１９０】
＜＜ハッシュ値利用方式＞＞。
【０１９１】
図２０Ｂは、ハッシュ値利用方式の概念を示す。以下、この図を参照して、ハッシュ値利用方式における処理の流れを説明する。
【０１９２】
（ステップ１）例えば、ＣＰＵ２１は、論理ボリューム毎に、各一以上の記憶領域をセグメントとして管理する。ここでは、説明を分かり易くするため、一記憶領域が一セグメントであるとする。
【０１９３】
（ステップ２）任意のタイミング（例えば、データ要素が重複しているか否かの判定の際、或いはそれよりも前の段階で）、各論理ボリュームのセグメントに記憶されているデータ要素のハッシュ値が算出される。ハッシュ値の算出は、所定のハッシュアルゴリズムでデータ要素のハッシュ値を算出するコンピュータプログラムがＣＰＵ２１で実行されることにより行われても良いし、所定のハッシュアルゴリズムを実行するハードウェア回路にデータ要素を入力することでそのハードウェア回路により行われても良い。以下、ＣＰＵ２１によって実行されることとする。算出された複数のデータ要素にそれぞれ対応する複数のハッシュ値が、メモリ２２に記憶される。
【０１９４】
（ステップ３）ＣＰＵ２１は、メモリ２２に記憶された或るハッシュ値と同じ値のハッシュ値があるかどうかを、複数のハッシュ値の中から検索することで、その或るハッシュ値に対応したセグメントと同じデータ要素が記憶されているセグメントを検索する。ＣＰＵ２１は、同じ値のハッシュ値が見つかれば、（ステップ４）を実行し、見つからなければ、重複するデータ要素が存在しないと判断する。
【０１９５】
（ステップ４）ＣＰＵ２１は、値が同じハッシュ値に対応するデータ要素同士を比較する。その結果、一致が得られた場合、ＣＰＵ２１は、それらのデータ要素が互いに重複すると判断し、不一致であれば、それらのデータ要素が重複しないと判断する。
【０１９６】
以上が、ハッシュ値利用方式についての説明である。
【０１９７】
ハッシュ値が互いに異なる場合、それらに対応するデータ要素も必ず互いに異なる。このため、本方式によれば、ハッシュ値が互いに異なれば、データ要素同士を比較する必要が無くなる。
【０１９８】
また、ハッシュ値は、データ要素よりもデータサイズが小さい。このため、小さいデータサイズであるハッシュ値同士の比較で、データ要素の重複を判定することができる。また、例えば、上記のように、一度計算した全てのハッシュ値をメモリ２２に記憶しておき、適宜に、メモリ２２に記憶されているハッシュ値を利用することで、データ要素の判定の都度にディスクドライブからデータ要素を読み出す負担を無くすことができる。
【０１９９】
なお、本方式では、例えば、論理ボリュームに新たにデータ要素が書き込まれた場合には、その書込みと同期或いは非同期で（言い換えれば任意のタイミングで）、そのデータ要素を含んだ一以上のデータ要素のハッシュ値を計算してメモリ２２に保存しておくことができる。
【０２００】
＜＜冗長コード利用方式＞＞。
【０２０１】
図２１Ａは、冗長コード利用方式の概念を示す。
【０２０２】
本方式では、ハッシュ値に代えて、一つの（二以上でも良い）データ要素に対応した冗長コード（例えば、メディアドライブのデータ化けの検出のために生成されて割り当てられているコード）が利用される。具体的には、例えば、上記の（ステップ３）において、冗長コード同士が比較される。冗長コードが互いに重複していなければ、互いにデータ要素が重複していないとの判断になり、冗長コードが互いに重複していれば、（ステップ４）において、データ要素同士が比較される。
【０２０３】
上記のハッシュ値利用方式では、データ要素それ自体がメディアドライブ（例えばＨＤＤ或いはフラッシュメモリドライブ等の記憶装置）から読み出されるが、本方式では、冗長コードが読み出されれば良く、データ要素それ自体の読出しは不要である。また、本方式では、上記のハッシュ値同士の比較に代えて、読み出された冗長コード同士の比較が行われるため、ハッシュ値の計算も不要となる。
【０２０４】
なお、冗長コードのハッシュ値が計算され、ハッシュ値同士が比較されても良い。すなわち、ハッシュ値利用方式と冗長コード利用方式を組み合わせた方式が利用されても良い。この場合、データ要素よりもデータサイズの小さい冗長コードを用いてハッシュ値を算出することができる。また、この場合でも、ハッシュ値の計算のためにデータ要素をメディアドライブから読み出すことは不要である。
【０２０５】
＜＜メディアドライブ生成の冗長コードを利用する方式＞＞。
【０２０６】
図２１Ｂは、メディアドライブ生成の冗長コードを利用する方式の概念を示す。
【０２０７】
本方式は、上述した冗長コード利用方式における冗長コード（つまり、ストレージシステム２０におけるＣＰＵ２１が算出した冗長コード）に代えて、メディアドライブ内部で計算され保持されている冗長コードを利用する方式である。
【０２０８】
なお、本方式では、例えば、ＣＰＵ２１が、メディアドライブが生成した冗長コードを取得するためのコマンド（以下、冗長コードコマンド）を送信する機能を有している必要がある。そして、メディアドライブが、冗長コードコマンドをＣＰＵ２１から受領した場合に、それを解析して、その冗長コードコマンドに応答して、メディアドライブ内部で作成された冗長コード（例えばメディアドライブ内のＣＰＵによって作成された冗長コード）をＣＰＵ２１に送信する機能（例えばインタフェース）を備えている必要がある。
【０２０９】
この方式によれば、ＣＰＵ２１が個々の一以上のデータ要素について冗長コードを作成しなくても済む。
【０２１０】
ちなみに、本方式では、メディアドライブ（具体的には、例えば、メディアドライブの種類、ベンダ、インタフェース等）によっては、冗長コードを作成するための計算方式が異なる可能性がある。そして、ストレージシステムには、冗長コードの計算方式が異なる複数のメディアドライブが混在している可能性がある。この場合、例えば、メモリ２２に、どんな計算方式がどんなメディアドライブで実行されるかを表す情報や、算出される冗長コードに互換性のあるメディアドライブの組合せを表す情報などが記憶される。ＣＰＵ２１は、それらの情報を基に、冗長コードの計算方式が異なっていても比較可能な冗長コード同士であれば、本方式での重複判定（データ要素同士が重複するか否かの判定）を行い、比較不可能な冗長コード同士であれば、上述したハッシュ値利用方式、冗長コード利用方式或いはそれらの組合せの方式で、重複判定を行う。
【０２１１】
＜第四の実施形態＞。
【０２１２】
ストレージシステム２０Ａ、２０Ｂ間で、レプリケーション保存、ＱＳ保存及びＣＯＷＳ保存が行われる。
【０２１３】
ストレージシステム２０毎にプール２４００がある。例えば、ストレージシステム２０Ａ、２０Ｂ間で、レプリケーション保存が行われていて、レプリケーション保存からＣＯＷＳ保存に切り替えられる場合、ＰＶＯＬを有するストレージシステム２０Ａが、形成ＢＭと、ＰＶＯＬに対応した更新ＢＭ（以下、ＰＶＯＬ更新ＢＭ）とを有し、ＳＶＯＬを有するストレージステム２０Ｂが、ＳＶＯＬに対応した更新ＢＭ（以下、ＳＶＯＬ更新ＢＭ）とを設ける。それらのビットマップの使用方法は、例えば以下の通りである。なお、以下の説明では、ＰＶＯＬ更新ＢＭにおけるビットを「ＰＶＯＬ更新ビット」と言い、ＳＶＯＬ更新ＢＭにおけるビットを「ＳＶＯＬ更新ビット」と言う。
【０２１４】
すなわち、例えば、形成ビット、ＰＶＯＬ更新ビット、及びＳＶＯＬ更新ビットが‘０’の場合、形成コピー済みで更新がなかったので、ＰＶＯＬにおける記憶領域Ｐ上のデータ要素とレプリケーション実ＳＶＯＬにおける実領域ＲＳ上のデータ要素が同じである。このため、実領域ＲＳ上のデータ要素が破棄され、その実領域ＲＳが解放される。そして、ＣＯＷＳ仮想ＳＶＯＬにおける仮想領域ＶＳが、実領域Ｐにマッピングされる。
【０２１５】
また、例えば、形成ビットが‘０’で、ＰＶＯＬ更新ビット又はＳＶＯＬ更新ビットが‘１’の場合、形成コピー済みで更新があったため、記憶領域Ｐと実領域ＲＳにおけるデータ要素が互いに異なる。実領域ＲＳのデータ要素は、対応する仮想領域ＶＳに割当てられたプール領域に書き込まれる。
【０２１６】
また、例えば、形成ビットが‘１’の場合、形成コピーが未実施なため、現状のままとされる。
【０２１７】
＜第五の実施形態＞。
【０２１８】
２つ以上の論理ボリューム（ＶＯＬ）を連結して１つのＶＯＬとして定義される連結ＬＯＬが構成される。これにより、ＶＯＬサイズの上限がストレージシステム２０内で予め設定されても、その上限を超えたサイズのＶＯＬをホスト計算機に提供することが可能である。
【０２１９】
本実施形態では、連結ＰＶＯＬが、実ＰＶＯＬと仮想ＰＶＯＬ（例えば容量拡張ＶＯＬ）で構成される（実ＰＶＯＬ及び仮想ＰＶＯＬの数はそれぞれ１以上である）。テスト環境或いは並列処理システムなどで、複数のユーザ（複数のホスト計算機）にとっての共通のデータ（例えば、オペレーティングシステム（ＯＳ）などのデータ）が、実ＰＶＯＬに格納され、各ユーザが個別に書き換えるデータは、仮想ＰＶＯＬに格納される。
【０２２０】
以下、この連結ＶＯＬのＣＯＷＳ保存を行う処理について、図１１Ａを参照して説明する。
【０２２１】
連結ＶＯＬ１１０１のスナップショット（ＣＯＷＳ保存のための連結ＶＯＬ１１１１）が取得される。連結ＶＯＬ１１０１の実ＰＶＯＬ１１０２とペアになるＣＯＷＳ仮想ＳＶＯＬは、仮想ＳＶＯＬ１１１２であり、連結ＶＯＬ１１０１の仮想ＰＶＯＬ１１０３とペアになるＣＯＷＳ仮想ＳＶＯＬは、仮想ＳＶＯＬ１１１３である。仮想ＳＶＯＬ１１１２及び１１１３で連結ＶＯＬ１１１１が構成される。
【０２２２】
一例として、コピー元の連結ＶＯＬ１１０１をユーザＡ（ホスト計算機Ａ）が使用し、コピー先の連結ＶＯＬ１１１１をユーザＢ（ホスト計算機Ｂ）が使用する。ユーザＡ、Ｂが使用する共通のデータ（例えばＯＳ）が、ユーザＡが使用する連結ＶＯＬ１１０１の実ＰＶＯＬ１１０２に格納される。仮想ＳＶＯＬ１１１２の各仮想領域が、実ＰＶＯＬ１１０２の各実領域にマッピングされている。このため、ユーザＢが、ＯＳ等の共通データをロードする場合には、仮想ＳＶＯＬ１１１２を指定したＩ／Ｏコマンドを送信することで、その仮想ＳＶＯＬ１１１２の各仮想領域がマッピングされた、実ＰＶＯＬ１１０２の実領域から、共通データが読み出される。
【０２２３】
実ＰＶＯＬ１１０２の書き換え無しの形態（以下、パターン１）では、例えば、ユーザＡとＢは、それぞれ、仮想ＰＶＯＬ１１０３と仮想ＳＶＯＬ１１１３にデータ要素を書込む。
【０２２４】
実ＰＶＯＬ１１１０２の書き換え有りの形態（以下、パターン２）では、例えば、実ＰＶＯＬ１１０２を指定したライトコマンドを受けた場合、ＣＰＵ２１は、ユーザＢが、実ＰＶＯＬ１１０２における旧データ要素（保存済みデータ要素）を使用する可能性があるため、その旧データ要素を、プール２４００におけるプール領域に退避する。その際、ＣＰＵ２１は、そのプール領域を、そのプール領域の退避元の実領域に対応した、仮想ＳＶＯＬ１１１２における仮想領域に、マッピングする。
【０２２５】
また、別の例では、図１１Ｂに示すように、システム管理者（Ｒｏｏｔ）からＯＳのバージョンアップなどによって、ユーザＡとＢの共通部分の書き換えを行う場合（以下、パターン３）、パターン１との組み合わせにより、ユーザＡ及びＢともにＯＳのバージョンアップを行う。または、パターン２との組み合わせにより、ユーザＡのみバージョンアップを行い、ユーザＢは旧バージョンのままにすることも可能である。パターン２及びパターン３において、ユーザＢの共通部分のスナップショットを取得しておき、ある時点まで共通部分（ＯＳなど）の状態を戻せるようにしておくことも考えられる。
【０２２６】
複数ユーザには共通となるデータがあり、それを実ＰＶＯＬに集約することで、容量効率の向上を図るとともに、共通部のためキャッシュに載っている可能性が高く、キャッシュヒット率の向上も期待できる。なお、キャッシュヒットとは、例えば、リードコマンドを受けた場合に、そのリードコマンドでの対象であるデータ要素が、キャッシュメモリ（メモリ２２に含まれる）から見つかることである。もし、ＣＰＵ２１は、キャッシュヒットによりデータ要素が見つかったならば、そのキャッシュメモリ上のデータ要素をホスト計算機に送信する。もし、キャッシュヒットとならなかった場合（そのデータ要素がキャッシュメモリ見つからなかった場合）、ＣＰＵ２１は、メディアドライブからデータ要素を読出し、読み出したデータ要素をキャッシュメモリに一時保存し、そのキャッシュメモリ上のデータ要素をホスト計算機に送信する。
【０２２７】
上述した連結ＶＯＬ１１０１において、ＣＰＵ２１が、実ＰＶＯＬ１１０２に、キャッシュヒット率が低いデータ要素（例えば、キャッシュヒット率が或る閾値未満のデータ要素）を保存し、仮想ＰＶＯＬ１１０３に、キャッシュヒット率の高いデータ要素（例えば、キャッシュヒット率が或る閾値以上のデータ要素）を保存しても良い。仮想ＰＶＯＬ１１０３よりも実ＰＶＯＬ１１０２の方が、どの仮想領域にどのプール領域が割当てられているかサーチが不要な分、リード性能が高いと考えられる。このため、キャッシュヒット率が低いが故にリードが発生する可能性の高いデータ要素を、実ＰＶＯＬ１１０２に保存しておくことで、リード性能の低下を抑えることができる。
【０２２８】
＜第六の実施形態＞。
【０２２９】
第六の実施形態では、ストレージシステムの構成が異なる。以下、その一例を、図１２を参照して説明する。
【０２３０】
ストレージシステム１１０は、Ｉ／Ｆパッケージ部９０（９０Ａ、９０Ｂ）、制御部８０（８０Ａ、８０Ｂ）、不揮発メモリ２９（２９Ａ、２９Ｂ、Ｉ／Ｆパッケージ部９０と制御部８０を接続するネットワーク３３、記憶部２４及び７０を備える。各要素は少なくとも１つからなる。
【０２３１】
ストレージシステム１１０が、ＳＡＮ４１を介してホスト計算機５１に接続されている。
Ｉ／Ｆパッケージ部９０Ａが有する記憶資源（図示せず）には、どのＶＯＬがどの制御部８０に格納されているかを認識するための構成情報が記憶されている。構成情報は、制御部８０内のローカルメモリ２２や不揮発メモリ２９にも格納されている。
【０２３２】
Ｉ／Ｆパッケージ部９０Ａは、ホスト計算機５１からＩ／Ｏコマンドを受けると、Ｉ／Ｏコマンドを解析して、そのＩ／Ｏコマンドで要求されているデータが格納されているＶＯＬがどの制御部８０の配下に管理されているかを判断し、その制御部８０へ、Ｉ／Ｏコマンドを振り分ける処理を行う。また、別のＩ／Ｆパッケージ部９０Ｂ、記憶部２４及び７０へのデータ転送も行う。制御部８０は、不揮発メモリ２９へデータ要素を転送する。
【０２３３】
＜第七の実施形態＞。
【０２３４】
本実施形態では、切り替え前のデータ保存方式におけるＳＶＯＬが、切り替え後のデータ保存方式におけるＳＶＯＬのＰＶＯＬとされる。具体的には、例えば、ＰＶＯＬに対して２個のレプリケーション実ＳＶＯＬ１及び２があるとする。例えば、切替えプログラム２２０３は、図２２Ａに示すように、ＰＶＯＬとレプリケーション実ＳＶＯＬ１が同じ内容で、且つ、レプリケーション保存からＣＯＷＳ保存に切替える場合、図２２Ｂに示すように、レプリケーション実ＳＶＯＬ１をＰＶＯＬとし、レプリケーション実ＳＶＯＬ２をＣＯＷＳ仮想ＳＶＯＬ１とし、元々もＰＶＯＬを破棄することができる。
【０２３５】
レプリケーション実ＳＶＯＬが複数個ある場合、レプリケーション実ＳＶＯＬの１つが、ＣＯＷＳ仮想ＰＶＯＬに変更され、他のレプリケーション実ＳＶＯＬが、ＣＯＷＳ仮想ＰＶＯＬをＰＶＯＬとしたＳＶＯＬであるＣＯＷＳ仮想ＳＶＯＬに変更されるとする。
【０２３６】
まず、図５や図７のように、移行用ＢＭが使用され、ＶＯＬの先頭から順にデータが参照される。レプリケーション実ＳＶＯＬ１、２及び３のうち、レプリケーション実ＳＶＯＬ１が、ＣＯＷ仮想ＰＶＯＬとし、レプリケーション実ＳＶＯＬ２及び３が、それぞれ、その変更後のＣＯＷＳ仮想ＰＶＯＬをＰＶＯＬとしたＳＶＯＬであるＣＯＷＳ仮想ＳＶＯＬに変更される。
【０２３７】
レプリケーション実ＳＶＯＬ２及び３のそれぞれの先頭の実領域から、レプリケーション実ＳＶＯＬ１とデータと同じであるかどうかが判定する。もし、判定対象の実領域（レプリケーション実ＳＶＯＬ２及び３における実領域）に記憶されているデータ要素と、それに対応する、レプリケーション実ＳＶＯＬ１における実領域に記憶されているデータ要素とが、同じである場合は、その判定対象の実領域をアクセス先とする場合は、レプリケーション実ＳＶＯＬ１における実領域がアクセス先とされる（つまり実領域同士がマッピングされる）。具体的には、判定対象の実領域（レプリケーション実ＳＶＯＬ２及び３における実領域）について、ステップ１２００１と同様の処理が行われる。判定対象の実領域（レプリケーション実ＳＶＯＬ２及び３における実領域）に記憶されているデータ要素と、それに対応する、レプリケーション実ＳＶＯＬ１における実領域に記憶されているデータ要素とが、異なる場合は、判定対象の実領域について、ステップ２０１４と同様の処理が行われる。
【０２３８】
このようにすることで、元のレプリケーション実ＰＶＯＬにライトが入った場合、レプリケーション実ＰＶＯＬと前記レプリケーション実ＳＶＯＬ１にライトデータを書き込み、レプリケーション実ＳＶＯＬ２及び３についてはデータ要素を参照するためのアドレスのみ格納すればよいため、データ要素を格納するために必要な記憶領域が減り、書き込み処理回数も1回ですむ。
【０２３９】
上記でＳＶＯＬがｎ個ある場合，ペア関係はｎ個でそれぞれ独立な関係である。また、スナップショットを構成するＰＶＯＬを指定したライト要求を受信した場合、ＳＶＯＬへデータ要素をコピーし終わっていなければ、ライトデータを格納する前に、ＳＶＯＬへのコピー処理を行う必要がある。このコピー処理は、コピーをｎ個作成すればｎ回コピーが必要となる。しかし、本処理を実施すれば、コピーは１回ですむ。
【０２４０】
上記のバリエーションとして、ＱＳの仮想ＳＶＯＬを他のＱＳの仮想ＳＶＯＬのＰＶＯＬとするものもある。
【０２４１】
以上、本発明の幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、上述した複数の実施形態の二以上の実施形態を組み合わせることもできる。
【図面の簡単な説明】
【０２４２】
【図１】図１は、本発明の一実施形態に係るシステム全体の構成例を示す。
【図２】図２は、データ保存方式の段階的な切替えの流れの一例を示す。
【図３】図３Ａは、レプリケーション保存の概要図である。図３Ｂは、ＱＳ保存の概要図である。図３Ｃは、ＣＯＷＳ保存の概要図である。
【図４】図４Ａは、差分ビットマップ群の一例を示す。図４Ｂは、差分ビットマップ群の別の例を示す。
【図５】図５は、レプリケーション保存からＱＳ保存への切替えの処理の流れの一例を示す。
【図６】図６は、ＱＳ保存からＣＯＷＳ保存への切替えの処理の流れの一例を示す。
【図７】図７は、レプリケーション保存からＣＯＷＳ保存への切替えの処理の流れの一例を示す。
【図８】図８は、実ＰＶＯＬから容量拡張ＶＯＬへの切替えの処理の流れの一例を示す。
【図９】図９Ａは、領域マッピングテーブルの一レコードの構成例を示す。図９Ｂは、プール領域管理テーブルの一レコードの構成例を示す。
【図１０】図１０Ａは、ＱＳ保存の一例を示す。図１０Ｂは、ＣＯＷＳ保存の一例を示す。図１０Ｃは、ＣＯＷＳ保存の別の例を示す。
【図１１】図１１Ａは、本発明の第五の実施形態における連結ＶＯＬの構成とＣＯＷＳ保存の一例を示す。図１１Ｂは、第五の実施形態において実ＰＶＯＬの書き換えが生じるパターンでの概要を示す。
【図１２】図１２は、本発明の第六の実施形態に係るストレージシステムの構成例を示す。
【図１３】図１３は、レプリケーション保存からＱＳ保存への切替え中にＩ／Ｏコマンドをホスト計算機から受信した場合に実行される処理の流れを示す。
【図１４】図１４は、ＱＳ保存からＣＯＷＳ保存への切替え中にＩ／Ｏコマンドをホスト計算機から受信した場合に実行される処理の流れを示す。
【図１５】図１５は、レプリケーション保存からＣＯＷＳ保存への切替え中にＩ／Ｏコマンドをホスト計算機から受信した場合に実行される処理の流れを示す。
【図１６】図１６は、実ＰＶＯＬから容量拡張ＶＯＬへの切替えの処理の流れの別の一例を示す。
【図１７】図１７は、メモリに記憶されるコンピュータプログラム及び情報の一例を示す。
【図１８】図１８は、ＶＯＬ管理テーブルの構成例を示す。
【図１９】図１９Ａは、本発明の第二の実施形態における暗号化の第一の例を示す。図１９Ｂは、第二の実施形態における暗号化の第二の例を示す。
【図２０】図２０Ａは、第二の実施形態における暗号化の第三の例を示す。図２０Ｂは、本発明の第三の実施形態でのハッシュ値利用方式の概念を示す。
【図２１】図２１Ａは、第三の実施形態での冗長コード利用方式の概念を示す。図２１Ｂは、メディアドライブ生成の冗長コードを利用する方式の概念を示す。
【図２２】図２２Ａは、本発明の第七の実施形態においてデータ保存方式の切り替え前の各論理ボリュームを示す。図２２Ｂは、第七の実施形態においてデータ保存方式の切り替え後の各論理ボリュームを示す。
【符号の説明】
【０２４３】
２０Ａ、２０Ｂ、２０Ｃ、２０Ｄ…ストレージシステム  ５１…ホスト計算機  ５２…仮想化装置  ７０…外部ストレージシステム  １００Ａ、１００Ｂ…仮想ストレージシステム
【図１】
0004990066.tif 000002
【図２】
0004990066.tif 000003
【図３】
0004990066.tif 000004
【図４】
0004990066.tif 000005
【図５】
0004990066.tif 000006
【図６】
0004990066.tif 000007
【図７】
0004990066.tif 000008
【図８】
0004990066.tif 000009
【図９】
0004990066.tif 000010
【図１０】
0004990066.tif 000011
【図１１】
0004990066.tif 000012
【図１２】
0004990066.tif 000013
【図１３】
0004990066.tif 000014
【図１４】
0004990066.tif 000015
【図１５】
0004990066.tif 000016
【図１６】
0004990066.tif 000017
【図１７】
0004990066.tif 000018
【図１８】
0004990066.tif 000019
【図１９】
0004990066.tif 000020
【図２０】
0004990066.tif 000021
【図２１】
0004990066.tif 000022
【図２２】
0004990066.tif 000023