(57)【要約】【課題】メモリを効率的に利用する。【解決手段】コピー元領域１３１ａからコピー先領域１３１ｂへのコピーの進捗状況を示す進捗情報を記憶装置１３０に格納する。また進捗情報を所定サイズ単位で分割して形成される部分進捗情報をメモリ１２１に設定する部分進捗情報管理部１１と、部分進捗情報に基づき、コピー元領域１３１ａに記憶されたコピー元データのコピーを、コピー先領域１３１ｂに格納するコピー処理を実行するコピー処理部１４とを備える。【選択図】図１
2016099703.tif 000002
【特許請求の範囲】
【請求項１】
コピー元データを格納するコピー元領域から前記コピー元データのコピーを格納するコピー先領域へのコピーを制御するストレージ制御装置であって、
前記コピー元領域から前記コピー先領域へのコピーの進捗状況を示す、記憶装置に格納された進捗情報について、当該進捗情報を所定サイズ単位で分割して形成される部分進捗情報をメモリに設定する部分進捗情報管理部と、
前記部分進捗情報に基づき、前記コピー元領域に記憶されたコピー元データのコピーを、前記コピー先領域に格納するコピー処理を実行するコピー処理部と
を備えることを特徴とする、ストレージ制御装置。
【請求項２】
前記部分進捗情報を構成するビット列の状態を表す状態情報を前記メモリに格納する状態情報管理部を備え、
前記コピー処理部が、前記状態情報を参照して前記コピー処理を実行する
ことを特徴とする、請求項１記載のストレージ制御装置。
【請求項３】
前記状態情報が、前記部分進捗情報を構成するビット列について、当該部分進捗情報に対応する前記コピー元領域において未コピーの領域とコピー済みの領域とが混在することと、当該部分進捗情報が前記メモリに設定されていることとを示す場合に、前記コピー処理部が、前記メモリに格納されている当該部分進捗情報に基づいて前記コピー処理を行なう
ことを特徴とする、請求項１又は２記載のストレージ制御装置。
【請求項４】
前記状態情報が、前記部分進捗情報を構成するビット列について、当該部分進捗情報に対応する前記コピー元領域の全てが未コピーであることを示す場合に、前記コピー処理部が、前記部分進捗情報に対応する前記コピー元領域のデータを前記コピー先領域へコピーする
ことを特徴とする、請求項１〜３のいずれか１項に記載のストレージ制御装置。
【請求項５】
前記状態情報が、前記部分進捗情報を構成するビット列について、当該部分進捗情報に対応する前記コピー元領域において未コピーの領域とコピー済みの領域とが混在することと、当該部分進捗情報が前記メモリに設定されていないこととを示す場合に、前記部分進捗情報管理部が、当該部分進捗情報を前記記憶装置に格納された前記進捗情報から読み出して前記メモリに設定する
ことを特徴とする、請求項１〜４のいずれか１項に記載のストレージ制御装置。
【請求項６】
前記状態情報が、前記部分進捗情報を構成するビット列について、当該部分進捗情報に対応する前記コピー元領域の全てがコピー済であることを示す場合に、前記コピー処理部は前記コピー処理を行なわない
ことを特徴とする、請求項１〜５のいずれか１項に記載のストレージ制御装置。
【請求項７】
前記部分進捗情報の処理順序を管理する処理順序管理部を備え、
前記コピー処理部が、前記処理順序が先の前記部分進捗情報を優先してコピー処理を実行することを特徴とする、請求項１〜６のいずれか１項に記載のストレージ制御装置。
【請求項８】
前記処理順序管理部が、複数の前記部分進捗情報において、対応する前記コピー元領域において未コピーの領域が多いことを示す前記部分進捗情報の処理順序を先にすることを特徴とする、請求項７記載のストレージ制御装置。
【請求項９】
コピー元データを格納するコピー元領域から前記コピー元データのコピーを格納するコピー先領域へのコピーを制御するコピー制御方法であって、
前記コピー元領域から前記コピー先領域へのコピーの進捗状況を示す、記憶装置に格納された進捗情報について、当該進捗情報を所定サイズ単位で分割して形成される部分進捗情報をメモリに設定する処理と、
前記部分進捗情報に基づき、前記コピー元領域に記憶されたコピー元データのコピーを、前記コピー先領域に格納するコピー処理を実行する処理と、
を備えることを特徴とするコピー制御方法。
【請求項１０】
コピー元データを格納するコピー元領域から前記コピー元データのコピーを格納するコピー先領域へのコピーを制御するコピー制御プログラムであって、
前記コピー元領域から前記コピー先領域へのコピーの進捗状況を示す、記憶装置に格納された進捗情報について、当該進捗情報を所定サイズ単位で分割して形成される部分進捗情報をメモリに設定し、
前記部分進捗情報に基づき、前記コピー元領域に記憶されたコピー元データのコピーを、前記コピー先領域に格納するコピー処理を実行する、
処理をコンピュータに実行させるコピー制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置，コピー制御方法及びコピー制御プログラムに関する。
【背景技術】
【０００２】
ストレージ装置におけるソースボリューム（例えば業務ボリューム）をバックアップする手法の一つとして、ＯＰＣ（One Point Copy）が知られている。ＯＰＣとは、バックアップ対象となるデータについて所定時点におけるデータであるスナップショットを作成するものである。ＯＰＣを実行するストレージ装置は、ユーザからＯＰＣ指示を受けると、当該ＯＰＣ指示を受けた時点におけるソースボリュームの全データをコピーし、スナップショット（バックアップデータ）として格納することにより、ソースボリュームのバックアップを行なう。
【０００３】
これらの技術をサポートするために、データイメージを一定の区画に分割し、区画毎にコピーが完了しているか否かを記録することが行なわれる場合がある。このようなコピーが完了しているか否かを示すデータは、コピービットマップや差分ビットマップと称される。
コピービットマップは、コピー元ボリュームを所定サイズ（例えば８ＫＢ）単位の複数の単位領域に区分し、これらの単位領域毎に、当該単位領域に格納されているデータがコピー先ボリュームに転送されたか否かを表す情報を対応付けることにより作成される。
【０００４】
ストレージ装置においては、このコピービットマップを構成するデータは、データアクセスが高速なメモリ上に格納され、このコピービットマップを参照・更新しながらＯＰＣが実行される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３３１１００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年においては、ストレージ装置において、ディスクドライブ容量の増大により、利用可能なデータ容量が増加している。このようにボリュームサイズが増大するとコピービットマップのサイズも増大する。
しかしながら、従来のストレージ装置においては、上述の如くコピービットマップはメモリ上に保持されているので、コピービットマップのサイズが増大することによりメモリの容量が圧迫され、メモリ不足が生じる場合があるという課題がある。
【０００７】
１つの側面では、本発明は、メモリを効率的に利用できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
このため、このストレージ制御装置は、コピー元データを格納するコピー元領域から前記コピー元データのコピーを格納するコピー先領域へのコピーを制御するストレージ制御装置であって、前記コピー元領域から前記コピー先領域へのコピーの進捗状況を示す進捗情報を記憶装置に格納する。また、当該進捗情報を所定サイズ単位で分割して形成される部分進捗情報をメモリに設定する部分進捗情報管理部と、前記部分進捗情報に基づき、前記コピー元領域に記憶されたコピー元データのコピーを、前記コピー先領域に格納するコピー処理を実行するコピー処理部とを備える。
【発明の効果】
【０００９】
一実施形態によれば、メモリを効率的に利用できる。
【図面の簡単な説明】
【００１０】
【図１】実施形態の一例としてのストレージシステムの構成を模式的に示す図である。
【図２】（ａ），（ｂ）は実施形態の一例としてのストレージシステムにおけるコピービットマップとオンキャッシュビットマップとを例示する図である。
【図３】（ａ），（ｂ）は実施形態の一例としてのストレージシステムにおけるコピービットマップとリプレゼントビットマップとを例示する図である。
【図４】実施形態の一例としてのストレージシステムにおける管理リンクを例示する図である。
【図５】実施形態の一例としてのストレージシステムにおける管理リンクにおけるオンキャッシュビットマップの並び替えを説明するための図である。
【図６】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行時の基本的な処理を説明するための図である。
【図７】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行時の基本的な処理を説明するための図である。
【図８】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行時の基本的な処理を説明するための図である。
【図９】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行時の基本的な処理を説明するための図である。
【図１０】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行時の基本的な処理を説明するための図である。
【図１１】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行中にＩ／Ｏが発生した場合の処理を説明するための図である。
【図１２】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行中にＩ／Ｏが発生した場合の処理を説明するための図である。
【図１３】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行中にＩ／Ｏが発生した場合の処理を説明するための図である。
【図１４】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行中にＩ／Ｏが発生した場合の処理を説明するための図である。
【図１５】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行中にＩ／Ｏが発生した場合の処理を説明するための図である。
【図１６】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行中にＩ／Ｏが発生した場合の処理を説明するための図である。
【図１７】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行中にＩ／Ｏが発生した場合の処理を説明するための図である。
【図１８】実施形態の一例としてのストレージシステムにおけるＯＰＣの処理を説明するためのフローチャートである。
【図１９】実施形態の一例としてのストレージシステムにおけるＯＰＣ実行中にホスト装置からのＩ／Ｏ要求が発生した場合の処理を説明するためのフローチャートである。
【図２０】実施形態の一例としてのストレージシステムにおける複数のＯＰＣセッションの処理を説明するための図である。
【図２１】実施形態の一例としてのストレージシステムのシステム構成の変形例を示す図である。
【図２２】実施形態の一例としてのストレージシステムにおけるコピー元ストレージ装置とコピー先ストレージ装置とについて、ＲＯＰＣによるデータコピー時の処理と、ＲＯＰＣ範囲へのライト発生時の処理とを示す図である。
【図２３】実施形態の一例としてのストレージシステムにおけるＲＯＰＣ処理時におけるネットワーク障害発生時の処理を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本ストレージ制御装置，コピー制御方法及びコピー制御プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形（実施形態及び各変形例を組み合わせる等）して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１２】
（Ａ）構成
図１は実施形態の一例としてのストレージシステム１の構成を模式的に示す図である。
実施形態の一例としてのストレージシステム１は、図１に示すように、ストレージ装置１００とホスト装置２とを備えている。
図１に示す例においては、ストレージ装置１００に上位装置としてのホスト装置２が接続されている。
【００１３】
ホスト装置２は、情報処理装置であり、例えば、図示しない、ＣＰＵ（Central Processing Unit）やＲＡＭ（Random Access Memory），ＲＯＭ（Read Only Memory）等をそなえたコンピュータである。また、ホスト装置２は、アダプタ２０１を備え、このアダプタ２０１がストレージ装置１００に備えられたアダプタ１２４と通信回線を介して接続される。
【００１４】
ホスト装置２は、接続されたストレージ装置１００のボリューム１３１ａ，１３１ｂ，１３１ｃにデータの書き込みや読み出しを行なう。例えば、ホスト装置２はストレージ装置１００の業務ボリュームであるコピー元ボリューム１３１ａに対してリードやライトのデータアクセス要求（Input／Output要求：Ｉ／Ｏ要求）を行なう。ストレージ装置１００は、このデータアクセス要求に応じてコピー元ボリューム１３１ａに対するデータアクセスを行ない、ホスト装置２に対して応答を行なう。
【００１５】
また、ホスト装置２は、ストレージ装置１００におけるコピーセッションについてのセッション情報の作成等を行なう。
セッション情報は、コピーセッションに関する情報であって、例えば、セッションＩＤ（Session ID），コピー元のＬＵＮ（Logical Unit Number）及び開始ＬＢＡ（Logical Block Address），コピー先のＬＵＮ及び開始ＬＢＡ及びＢＣ（Block Count）である。セッション情報は既知の手法を用いて作成することができる。
【００１６】
また、ホスト装置２によって作成されたセッション情報は、ストレージ装置１００に送信され、このストレージ装置１００のメモリ１２１等に保持される。
ストレージ装置１００は、ＣＭ（Controller Module：ストレージ制御装置）１１１と記憶装置１３０とをそなえる。
ストレージ装置１００は、ホスト装置２に対して記憶領域を提供するものであり、例えば、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置である。なお、図１中においては、便宜上、ストレージ装置１００に１つのホスト装置２が接続された状態を示しているが、ストレージ装置１００に２以上のホスト装置が接続されてもよい。
【００１７】
ストレージ装置１００は、図１に示すように、ＣＭ１１１及び記憶装置１３０をそなえる。記憶装置１３０は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）であり、メモリ１２１のＲＡＭに比べて大きなデータ容量を有する。ストレージ装置１００においては、この記憶装置１３０の記憶領域がデータボリュームに対して割り当てられる。
【００１８】
図１に示す例においては、記憶装置１３０にデータボリューム１３１ａ，１３１ｂ，１３１ｃが形成されている。
本ストレージシステム１は、後述の如く、ストレージ装置１００に備えられた一のデータボリューム（論理ボリューム）のデータを、他のデータボリュームに転送することによりコピーするデータコピー機能をそなえる。
【００１９】
以下、データコピーとして、データボリューム１３１ａのデータをデータボリューム１３１ｂに格納する例について説明する。すなわち、データボリューム１３１ａがコピー元領域に相当し、データボリューム１３１ｂがコピー先領域に相当するものとする。以下、データボリューム１３１ａをコピー元ボリューム１３１ａといい、データボリューム１３１ｂをコピー先ボリューム１３１ｂという場合がある。
【００２０】
また、記憶装置１３０の記憶領域の一部（図１に示す例においてはデータボリューム１３１ｃの一部）は、コピービットマップ領域１３２として用いられる。
コピービットマップ領域１３２には、コピービットマップ３０１（図２（ｂ）参照）が格納される。
コピービットマップ３０１は、例えば、コピー元ボリュームを所定サイズ（例えば８ＫＢ）単位の複数の単位領域に区分し、これらの単位領域毎に、当該単位領域に格納されているデータがコピー先ボリュームに転送（コピー）されたか否かを表す情報を対応付けることにより作成される。すなわち、コピービットマップ３０１は、コピー元領域から前記コピー先領域へのコピーの進捗状況を示す進捗情報である。
【００２１】
後述するコピー処理部１４は、コピー元ボリューム１３１ａからコピー先ボリューム１３１ｂへのコピーを行なう際に、コピーの進捗やコピーの結果等を管理するためにこのコピービットマップを使用する。
図２（ａ），（ｂ）は実施形態の一例としてのストレージシステム１におけるコピービットマップ３０１とオンキャッシュビットマップ３０３とを例示する図であり、（ａ）はオンキャッシュビットマップ３０３を、（ｂ）はリプレゼントビットマップを、それぞれ例示する。
【００２２】
図２（ｂ）に例示するように、コピービットマップ３０１は、コピー元ボリューム１３１ａの所定のサイズの領域のコピーを行なうべきか否かを、１ビット値で管理する。この１ビットには、対応する領域のデータが未コピーである、すなわちコピーを行なう必要がある場合は値“１”が設定される。また、対応する領域のデータがコピー済みである、すなわちコピーを行なう必要がない場合は値“０”が設定される。
【００２３】
これにより、コピービットマップ３０１は、コピー元領域からコピー先領域へのコピーの進捗状況を示す進捗情報として機能する。コピービットマップ３０１は、コピー元領域からコピー先領域へのコピーの進捗状況を０もしくは１で表すビット列として構成される。
また、このコピービットマップ３０１を格納するコピービットマップ領域１３２を備える記憶装置１３０は、進捗情報を格納する第１の記憶部として機能する。
【００２４】
ＣＭ１１１はストレージ装置１００における種々の制御を行なうものであり、上位装置であるホスト装置２からのストレージアクセス要求（アクセス制御信号）に従って、記憶装置１３０のデータボリューム１３１ａ，１３１ｂ，１３１ｃへのアクセス制御等、各種制御を行なう。
ＣＭ１１１は、図１に示すように、メモリ１２１，ＣＰＵ１１０及びアダプタ１２４，１２５を備える。なお、図１に示す例においては、ストレージ装置１００に１つのＣＭ１１１がそなえられているが、これに限定されるものではなく、２以上のＣＭ１１１をそなえてもよい。
【００２５】
アダプタ１２４は、ホスト装置２と通信可能に接続するインタフェースコントローラであり、ホスト装置２のアダプタ２０１と通信回線を介して接続される。アダプタ１２４は、例えば、ネットワークアダプタやファイバチャネルアダプタである。
そして、例えばオペレータがホスト装置２から、コピー元ボリューム１３１ａからコピー先ボリューム１３１ｂへのデータコピーを指示すると、このアダプタ１２４がデータコピーの指示を受信する受信部として機能する。
【００２６】
アダプタ１２５は、図示しない回線を介して他のストレージ装置１００等と通信可能に接続するインタフェースコントローラである。
メモリ１２１は、ＲＯＭ及びＲＡＭを含む記憶メモリである。
メモリ１２１のＲＡＭの一部は、図１に示すように、リプレゼントビットマップ領域２１，オンキャッシュビットマップ領域２２及び管理リンク領域２３として用いられる。
【００２７】
オンキャッシュビットマップ領域２２には、記憶装置１３０（コピービットマップ領域１３２）に格納されたコピービットマップ３０１の一部に相当する単位コピービットマップ３０１１が、オンキャッシュビットマップ３０３として格納（設定）される。
単位コピービットマップ３０１１は、コピービットマップ３０１を所定サイズ（リプレゼントサイズ）単位で分割することにより形成されるビット列に相当する。コピービットマップ３０１において連続するリプレゼントサイズのビット列を複写することにより、単位コピービットマップ３０１１が生成される。
【００２８】
以下、便宜上、コピービットマップ３０１を所定サイズ（リプレゼントサイズ）単位で分割して形成されるビット列を複写することによって単位コピービットマップ３０１１を作成することを、単に、コピービットマップ３０１を分割して単位コピービットマップ３０１１を作成すると表現する。
図２（ａ）に示す例においては、コピービットマップ３０１を８ビット単位で分割することで作成された複数の単位コピービットマップ３０１１を示している。
【００２９】
本ストレージシステム１においては、記憶装置１３０に格納されたコピービットマップ３０１の一部を、単位コピービットマップ３０１１として、メモリ１２１上のオンキャッシュビットマップ領域２２に格納する。メモリ１２１は、一般にＨＤＤよりもデータアクセスが高速であるので、メモリ１２１上のオンキャッシュビットマップ領域２２に単位コピービットマップ３０１１を格納することで、この単位コピービットマップ３０１１に高速アクセスを行なうことができる。
【００３０】
以下、オンキャッシュビットマップ領域２２にある単位コピービットマップ３０１１をオンキャッシュビットマップ３０３という場合がある。
図２（ａ）に示す例においては、オンキャッシュビットマップ領域２２に“00110100”，“11000111”及び“10011111”の３つのオンキャッシュビットマップ３０３が格納されている。
【００３１】
リプレゼントビットマップ領域２１には、リプレゼントビットマップ３０２が格納される。リプレゼントビットマップ３０２は、コピービットマップ３０１における所定の範囲のビット列の状態を表す状態情報である。このリプレゼントビットマップ３０２は、コピービットマップ３０１において連続する所定サイズ（リプレゼントサイズ）のビット列の状態を、このリプレゼントサイズよりも小さなビット数の値で表す。
【００３２】
図３（ａ），（ｂ）は実施形態の一例としてのストレージシステム１におけるコピービットマップ３０１とリプレゼントビットマップ３０２とを例示する図であり、（ａ）はコピービットマップ３０１を、（ｂ）はリプレゼントビットマップ３０２を、それぞれ例示する。
図３（ｂ）には、図３（ａ）の各単位コピービットマップ３０１１に対応するリプレゼントビットマップ３０２を例示している。
【００３３】
図３（ａ）に示す例においては、コピービットマップ３０１を８ビット単位で分割することで作成した複数の単位コピービットマップ３０１１を示している。本ストレージシステム１においては、リプレゼントビットマップ３０２は、図３（ｂ）に示すように、これらの単位コピービットマップ３０１１の状態を２ビットの値で表す。
具体的には、単位コピービットマップ３０１１を構成する全てのビットが０である場合には、リプレゼントビットマップ３０２の値として“００”が設定される。すなわち、リプレゼントビットマップ３０２の値“００”は、単位コピービットマップ３０１１に対応するコピー元領域１３１ａの全てがコピー済であることを示す。
【００３４】
また、単位コピービットマップ３０１１を構成する全てのビットが１である場合には、リプレゼントビットマップ３０２の値として“１１”が設定される。すなわち、リプレゼントビットマップ３０２の値“１１”は、単位コピービットマップ３０１１に対応するコピー元領域１３１ａの全てが未コピーであることを示す。
また、単位コピービットマップ３０１１を構成するビットに０と１とが混在し、且つ、メモリ１２１のオンキャッシュビットマップ領域にその単位コピービットマップ３０１１が格納されている場合には、リプレゼントビットマップ３０２の値として“１０”が設定される。すなわち、リプレゼントビットマップ３０２の値“１０”は、単位コピービットマップ３０１１に対応するコピー元領域１３１ａにおいて未コピーの領域とコピー済みの領域とが混在することと、この単位コピービットマップ３０１１がメモリ１２１のオンキャッシュビットマップ領域に設定されていることとを示す。
【００３５】
一方、単位コピービットマップ３０１１を構成するビットに０と１とが混在し、且つ、メモリ１２１のオンキャッシュビットマップ領域にその単位コピービットマップ３０１１が格納されていない場合には、リプレゼントビットマップ３０２の値として“０１”が設定される。すなわち、リプレゼントビットマップ３０２の値“０１”は、単位コピービットマップ３０１１に対応するコピー元領域１３１ａにおいて未コピーの領域とコピー済みの領域とが混在することと、この単位コピービットマップ３０１１がメモリ１２１のオンキャッシュビットマップ領域に設定されていないこととを示す。
【００３６】
また、以下、リプレゼントビットマップ３０２における、各単位コピービットマップ３０１１に対応する部分のそれぞれを識別情報（リプレゼントＩＤ）を用いて表す。図３（ｂ）においては、リプレゼントビットマップ３０２を構成する各値の下側にリプレゼントＩＤを示している。この図３（ｂ）に示す例においては、リプレゼントＩＤとして整数（１〜６）を用いた例を示しており、これらの数字を符号“＜”，“＞”で囲んで表している。
【００３７】
上述の如く、リプレゼントビットマップ３０２は、メモリ１２１に格納されている各単位コピービットマップ３０１１の状態を示しているので、リプレゼントＩＤは、各単位コピービットマップ３０１１に対応すると言える。
管理リンク領域２３には、管理リンク３０４（図４参照）が格納される。管理リンク３０４は、メモリ１２１のオンキャッシュビットマップ領域２２のオンキャッシュビットマップ３０３（単位コピービットマップ３０１１）に関する情報である。
【００３８】
管理リンク３０４には、メモリ１２１上に保持されているオンキャッシュビットマップ３０３の位置と、このオンキャッシュビットマップ３０３に対応する記憶装置１３０上のコピービットマップ領域１３２での位置やデータボリューム１３１ｃの範囲の情報が関係付けられている。
管理リンク３０４は処理対象の単位コピービットマップ３０１１をキューとして管理するものであり、リンク制御により、処理対象の単位コピービットマップ３０１１を後述するコピースケジューラ１０よって優先的に処理する順番に並べて管理する。
【００３９】
図４は実施形態の一例としてのストレージシステム１における管理リンク３０４を例示する図である。
この図４に例示する管理リンク３０４においては、単位コピービットマップ３０１１（オンキャッシュビットマップ３０３）の処理順番をリプレゼントＩＤを用いて表している。すなわち、文字列“［TOP］”と文字列“［END］”との間に、処理対象のオンキャッシュビットマップ３０３を処理順番に応じて並べて配置している。この図４に示す例では、管理リンク３０４にリプレゼントＩＤが２，５，４で表される３つのオンキャッシュビットマップ３０３が登録されており、リプレゼントＩＤが２，５，４の順でこれらの単位コピービットマップ３０１１が処理されることを示している。
【００４０】
また、メモリ１２１のＲＡＭにおける所定の領域には、例えば、コピー元ボリューム１３１ａからコピー先ボリューム１３１ｂへコピーされるデータが一時的に格納され、これによりメモリ１２１は、コピーバッファメモリとして機能する。
さらに、メモリ１２１のＲＡＭにおける他の所定の領域には、ホスト装置２から受信したデータや、ホスト装置２に対して送信するデータが一時的に格納され、これによりメモリ１２１はバッファメモリとしても機能する。
【００４１】
また、メモリ１２１のＲＡＭにおける他の所定の領域には、後述するＣＰＵ１１０がプログラムを実行する際に、データやプログラムが一時的に格納・展開される。
メモリ１２１のＲＯＭには、ストレージ制御装置としての制御に係るソフトウェアプログラム（例えば、ストレージ制御プログラムやコピー制御プログラム）やこのプログラム用のデータ類が書き込まれている。メモリ１２１上のソフトウェアプログラムは、ＣＰＵ１１０に適宜読み込まれて実行される。又、メモリ１２１のＲＡＭは、一次記憶メモリあるいはワーキングメモリとしても利用される。
【００４２】
ＣＰＵ１１０は、種々の制御や演算を行なう処理装置であり、メモリ１２１等に格納されたプログラムを実行することにより、種々の機能を実現する。
そして、ＣＰＵ１１０は、図１に示すように、コピースケジューラ１０及びストレージアクセス制御部１６として機能する。例えば、ＣＰＵ１１０がコピー制御プログラムを実行することで、コピースケジューラ１０としての機能が実現され、また、ストレージ制御プログラムを実行することで、ストレージアクセス制御部１６としての機能が実現される。
【００４３】
なお、コピースケジューラ１０及びストレージアクセス制御部１６としての機能を実現するための上記プログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００４４】
ストレージアクセス制御部１６は記憶装置１３０（データボリューム１３１ａ〜１３１ｃ）に対するデータアクセスを制御するものであり、記憶装置１３０に対してデータのライトやリードを行なう。例えば、ストレージアクセス制御部１６は、ホスト装置２からのライトアクセス要求に応じてコピー元ボリューム１３１ａに対してデータのライトを行ない、ホスト装置２に対して完了応答を行なう。
【００４５】
なお、このストレージアクセス制御部１６としての機能は既知の種々の手法を用いて実現することができ、その詳細な説明は省略する。
コピースケジューラ１０は、前述した、ストレージ装置１００に備えられた一のデータボリューム（例えばコピー元ボリューム１３１ａ）のデータを、他のデータボリューム（例えばコピー先ボリューム１３１ｂ）にデータ転送することによりコピーするデータコピー機能を実現する。
【００４６】
このコピースケジューラ１０は、図１に示すように、オンキャッシュビットマップ管理部１１，リプレゼントビットマップ管理部１２，管理リンク制御部１３及びコピー処理部１４としての機能を備える。
コピー処理部１４は、前述したコピービットマップ３０１（単位コピービットマップ３０１１，オンキャッシュビットマップ３０３）に基づきコピー処理（ＯＰＣ）を行なう。つまり、コピー処理部１４は、コピービットマップ３０１（単位コピービットマップ３０１１，オンキャッシュビットマップ３０３）において“１”を設定されたビットに対応するコピー元ボリューム１３１ａのデータブロックを、コピー先ボリューム１３１ｂの対応領域にコピー（上書き）する。
【００４７】
ここで、ＯＰＣは、ボリュームのクローンを作成する機能であり、コピー元ボリューム１３１ａの先頭からデータをコピー先ボリューム１３１ｂへコピーする初期コピーを行なう。また、ＯＰＣにおいては、未コピー領域へ書き込みがあった時は、この書き込みが行なわれるコピーの領域のデータを先行してコピー先ボリューム１３１ｂにコピーする。
本ストレージシステム１においては、コピー領域全体の状態を管理するコピービットマップ３０１をメモリ１２１に比べて容量の大きい記憶装置１３０の領域に保持する。
【００４８】
オンキャッシュビットマップ管理部１１は、このコピービットマップ３０１全体のうち細かなアクセスが必要な一部（単位コピービットマップ３０１１）をオンキャッシュビットマップ３０３として、アクセス速度の速いメモリ１２１のオンキャッシュビットマップ領域２２に格納（設定）する制御を行なう。
また、このメモリ１２１上のオンキャッシュビットマップ領域２２に格納されるオンキャッシュビットマップ３０３の数（容量）には予め上限が設定されている。オンキャッシュビットマップ管理部１１は、オンキャッシュビットマップ３０３を、この上限を超えるまではこのオンキャッシュビットマップ領域２２で管理する。なお、上限を超えた部分については、単位コピービットマップ３０１１はオンキャッシュビットマップ領域２２に格納されず、コピー処理部１４は、記憶装置１３０のコピービットマップ３０１を用いることになる。
【００４９】
なお、前述の如く、オンキャッシュビットマップ領域２２に格納されている単位コピービットマップ３０１１であって、その単位コピービットマップ３０１１を構成するビットに０と１とが混在するものについては、リプレゼントビットマップ３０２の値として“１０”が設定される。また、単位コピービットマップ３０１１を構成するビットに０と１とが混在し、且つ、メモリ１２１のオンキャッシュビットマップ領域にその単位コピービットマップ３０１１が格納されていない場合には、リプレゼントビットマップ３０２の値として“０１”が設定される。
【００５０】
また、オンキャッシュビットマップ管理部１１は、コピー処理部１４がコピー処理を完了したオンキャッシュビットマップ３０３については、オンキャッシュビットマップ領域２２から解放する。
リプレゼントビットマップ管理部１２は、リプレゼントビットマップ３０２を管理する。リプレゼントビットマップ管理部１２は、メモリ１２１上にリプレゼントビットマップ領域２１の確保を行なう。そして、リプレゼントビットマップ管理部１２は、このリプレゼントビットマップ領域２１において、記憶装置１３０のコピービットマップ領域１３２のコピービットマップ３０１について、所定のリプレゼントサイズの範囲（単位コピービットマップ３０１１）毎に、その状態を２ビットの値で表す。すなわち、リプレゼントビットマップ管理部１２はリプレゼントビットマップ３０２を作成する。
【００５１】
リプレゼントビットマップ管理部１２は、単位コピービットマップ３０１１を構成する全てのビットが０である場合には、リプレゼントビットマップ３０２の値として“００”を設定する。また、リプレゼントビットマップ管理部１２は、単位コピービットマップ３０１１を構成する全てのビットが１である場合には、リプレゼントビットマップ３０２の値として“１１”を設定する。また、リプレゼントビットマップ管理部１２は、単位コピービットマップ３０１１を構成するビットに０と１とが混在し、且つ、メモリ１２１のオンキャッシュビットマップ領域２２にその単位コピービットマップ３０１１が格納されている場合には、リプレゼントビットマップ３０２の値として“１０”を設定する。一方、単位コピービットマップ３０１１を構成するビットに０と１とが混在し、且つ、メモリ１２１のオンキャッシュビットマップ領域２２にその単位コピービットマップ３０１１が格納されていない場合には、リプレゼントビットマップ３０２の値として“０１”を設定する。
【００５２】
管理リンク制御部１３は、管理リンク３０４の管理を行なう。
本ストレージシステム１において、コピースケジューラ１０によりＯＰＣが起動されると、初期コピー処理によりコピー元ボリューム１３１ａの先頭の領域から順次コピーが実行される。
ただし、コピー処理部１４は、管理リンク３０４にオンキャッシュビットマップ３０３が登録されている領域に対しては、このオンキャッシュビットマップ３０３を用いて優先的にコピーを行なう。
【００５３】
例えば、管理リンク制御部１３は、初期コピー処理でコピービットマップ３０１のページが切り替わる時に、次のページを処理する前に管理リンク３０４をチェックする。そして、管理リンク３０４にオンキャッシュビットマップ３０３が登録されている場合には、そのオンキャッシュビットマップ３０３に対応する領域を優先してコピーする。
コピー処理が完了したオンキャッシュビットマップ３０３はメモリ１２１のオンキャッシュビットマップ３０３から解放されるので、メモリ１２１を効率的に用いることができる。
【００５４】
なお、メモリ１２１上においては、オンキャッシュビットマップ領域２２として設定された容量を超えるオンキャッシュビットマップ３０３を管理することはできない。従って、オンキャッシュビットマップ領域２２の大きさに応じて、管理リンク３０４に登録できるオンキャッシュビットマップ３０３（リプレゼントビットマップ３０２）の数には制限がある。
【００５５】
本実施形態においては、管理リンク３０４に登録できるオンキャッシュビットマップ３０３の数は、オンキャッシュビットマップ領域２２に保持できるオンキャッシュビットマップ３０３（単位コピービットマップ３０１１）の最大数から１つ減算した数となる。
１つ減算する理由は、管理リンク領域２３の枯渇時に、更に記憶装置１３０のコピービットマップ３０１から単位コピービットマップ３０１１を読み込む必要がある場合に備えて、一時的にオンキャッシュビットマップ３０３を格納する領域として利用するために、１つ分の予備領域を確保するためである。
【００５６】
例えば、図１４においては、オンキャッシュビットマップ３０３を格納するための３つの領域を破線の四角で表すとともに、更に１つの予備領域を破線の四角で表している。
そして、本例においては、管理リンク３０４に最大値である個数（例えば、３つ）のオンキャッシュビットマップ３０３がつながれた状態を、管理リンク３０４がＭＡＸ状態であるという場合がある。
【００５７】
また、管理リンク制御部１３は、管理リンク３０４に登録されたオンキャッシュビットマップ３０３の並べ替えを行なう機能も備える。
すなわち、管理リンク制御部１３は、管理リンク３０４に登録されている複数のオンキャッシュビットマップ３０３を、各オンキャッシュビットマップ３０３を構成する各ビットにおいて“１”の数が少ないものが優先して処理されるように並べ替えを行なう。
【００５８】
図５は実施形態の一例としてのストレージシステム１における管理リンク３０４におけるオンキャッシュビットマップ３０３の並び替えを説明するための図である。
この図５に示す例においては、リプレゼントＩＤ“１”〜“５”の５つのオンキャッシュビットマップ３０３が示されている。例えば、リプレゼントＩＤ“１”のオンキャッシュビットマップ３０３は５つの“０”と３つの“１”とを備える。従って、このリプレゼントＩＤ“１”のオンキャッシュビットマップ３０３を構成する“１”の数は３である。
【００５９】
同様に、リプレゼントＩＤ“２”〜“５”の各オンキャッシュビットマップ３０３を構成する“１”の数は、それぞれ６，１，７，４である。
従って、これらのリプレゼントＩＤ“１”〜“５”の５つのオンキャッシュビットマップ３０３を、“１”の数が少ない順に並べると、図５に示すように、リプレゼントＩＤ“３”，“１”，“５”，“２”，“４”となる。
【００６０】
管理リンク制御部１３は、このように、管理リンク３０４につなげられたオンキャッシュビットマップ３０３を、各オンキャッシュビットマップ３０３を構成する各ビットにおいて“１”の数が少ないものが優先して処理されるように並べ替えを行なう。
また、この管理リンク３０４の並べ替えは、任意のタイミングで行なうことができ、例えば、定期的に行なってもよく、また、ＣＰＵ１１０の負荷に余裕がある状態（負荷が所定の閾値以下）に行なってもよく、種々変形して実施することができる。
【００６１】
（Ｂ）動作
（Ｂ−１）ＯＰＣにおける基本的な処理
上述の如く構成された実施形態の一例としてのストレージシステム１におけるＯＰＣ実行時の基本的な処理（処理Ａ１〜Ａ５）を、図６〜図１０を用いて説明する。なお、図６〜図１０は、それぞれ各過程におけるコピービットマップ３０１，リプレゼントビットマップ３０２，オンキャッシュビットマップ３０３及び管理リンク３０４を例示する図である。
【００６２】
これらの図６〜図１０に示すコピービットマップは、記憶装置１３０のコピービットマップ領域１３２に格納されているコピービットマップ３０１を表す。
また、これらの図６〜図１０においては、コピービットマップ３０１におけるコピー処理部１４によるコピーの実行中の単位コピービットマップ３０１１に対応するリプレゼントビットマップ３０２を第１ビットマップポイントにより表している。例えば、図６に示すように、本実施形態においては、符号“ＩＩ”を用いて第１ビットマップポイントを示しており、この第１ビットマップポイントは、リプレゼントビットマップ３０２における、リプレゼントＩＤ“１”の単位コピービットマップ３０１１に対応する部分を示している。
【００６３】
この第１ビットマップポイントを参照することで、処理中の単位コピービットマップ３０１１についてのリプレゼントビットマップ３０２の値を知ることができる。
また、図６〜図１０においては、オンキャッシュビットマップ３０３におけるコピー処理部１４によるコピーの実行中の位置（ビット位置）を、第２ビットマップポイントにより表している。例えば、図７に示すように、本実施形態においては符号“Ｉ”を用いて第２ビットマップポイントを示しており、この第２ビットマップポイントはリプレゼントＩＤ“１”のオンキャッシュビットマップ３０３の先頭のビットを指している。
【００６４】
（Ａ１）先ず、図６に示すように、コピースケジューラ１０がＯＰＣセッションを作成する際に、コピー処理部１４は、記憶装置１３０上のコピービットマップ領域１３２にコピービットマップ３０１を割り当て、このコピービットマップ３０１に全て“１”を書き込む（設定する）。
また、リプレゼントビットマップ管理部１２は、メモリ１２０上のリプレゼントビットマップ領域２１のリプレゼントビットマップ３０２を、全て“１１”を設定することで初期化する。
【００６５】
なお、図６に示す例においては、初期状態であり、オンキャッシュビットマップ領域２２にはオンキャッシュビットマップ３０３は格納されておらず、また、管理リンク３０４にもオンキャッシュビットマップ３０３が登録されていない状態を示している。
（Ａ２）コピー処理部１４はリプレゼントビットマップ３０２の先頭の２ビットに第１ビットマップポイントを設定して、コピー処理を開始する。
【００６６】
なお、前述した図６に示す例においては、リプレゼントビットマップ３０２における先頭部分（リプレゼントＩＤ“１”）の値が“１１”であるので、メモリ１２１のオンキャッシュビットマップ領域２２に、このリプレゼントＩＤ“１”の単位コピービットマップ３０１１の領域を割り当てる。そして、この割り当てたオンキャッシュビットマップ領域２２におけるリプレゼントＩＤ“１”の領域の全ビットに“１”を設定することで初期化を行なう。
【００６７】
また、これにより、図７に示すように、オンキャッシュビットマップ領域２２にリプレゼントＩＤ“１”のオンキャッシュビットマップ３０３が格納されたことになる。これにより、リプレゼントビットマップ管理部１２は、リプレゼントビットマップ３０２におけるリプレゼントＩＤ“１”に対応する部分の値を“１０”に変更する。
その後、このリプレゼントＩＤ“１”のオンキャッシュビットマップ３０３を管理リンク３０４に設定する。なお、以下、管理リンク３０４にオンキャッシュビットマップ３０３（単位コピービットマップ３０１１）を設定することを、管理リンク３０４につなげると表現する場合がある。また、管理リンク３０４からオンキャッシュビットマップ３０３（単位コピービットマップ３０１１）を削除することを、管理リンク３０４から外すと表現する場合がある。
【００６８】
（Ａ３）コピー処理部１４は、オンキャッシュビットマップ３０３について、第２ビットマップポイントを進めながらコピーしていく。図８に示す例においては、リプレゼントＩＤ“１”のオンキャッシュビットマップ３０３において、先頭から４ビット目に対応する領域のコピー処理がコピー処理部１４によって行なわれている状態を示している。
（Ａ４）図９に示す例においては、コピー処理を繰り返し行なうことで、リプレゼントＩＤ“１”のオンキャッシュビットマップ３０３のコピー処理が完了し、その全ビットが“０”になっている。
【００６９】
これに応じて、リプレゼントビットマップ管理部１２は、このリプレゼントＩＤ“１”に対応するリプレゼントビットマップ３０２を“００”に変更する。また、管理リンク制御部１３は、このリプレゼントＩＤ“１”に対応するリプレゼントビットマップ３０２を管理リンク３０４から外す。
その後、コピー処理部１４は、オンキャッシュビットマップ３０３に合わせて、記憶装置１３０上のコピービットマップ３０１において、リプレゼントＩＤ“１”に対応する部分のビットを全て“０”に書き換える。これにより、メモリ１２１上のオンキャッシュビットマップ３０３と記憶装置１３０上のコピービットマップ３０１とが同期される。
【００７０】
コピー処理部１４は、コピー処理部１４はリプレゼントビットマップ３０２において後続する次の位置に第１ビットマップポイントを設定する（進める）。
（Ａ５）以下、コピービットマップ３０１におけるリプレゼントＩＤ“２”以降の単位コピービットマップ３０１１についても、コピー処理部１４は、同様にコピー処理を行なう。
【００７１】
なお、未コピー領域にホスト装置２からデータのＩ／Ｏ要求が来ない限りは、上記処理が繰り返し行なわれる。そして、図１０に示すように、全てのリプレゼントビットマップ３０２が“００”となった時点で、ＯＰＣは完了する。
（Ｂ−２）ＯＰＣ実行中にＩ／Ｏが発生した場合の処理
次に、上述の如く構成された実施形態の一例としてのストレージシステム１におけるＯＰＣ実行中にＩ／Ｏが発生した場合の処理（処理Ｂ０〜Ｂ６）を、図１１〜図１７を用いて説明する。なお、図１１〜図１７は、それぞれ各過程におけるコピービットマップ３０１，リプレゼントビットマップ３０２，オンキャッシュビットマップ３０３及び管理リンク３０４を例示する図である。
【００７２】
なお、図１１〜図１７においても、コピービットマップは、記憶装置１３０のコピービットマップ領域１３２に格納されているコピービットマップ３０１を表す。また、コピービットマップ３０１におけるコピー処理部１４によるコピーの実行中の単位コピービットマップ３０１１を、第１ビットマップポイントにより表している。また、オンキャッシュビットマップ３０３におけるコピー処理部１４によるコピーの実行中の位置（ビット位置）を、第２ビットマップポイントにより表している。
【００７３】
さらに、図１１〜図１７においては、オンキャッシュビットマップ３０３におけるホスト装置２からのライト要求（Ｉ／Ｏ要求）が行なわれた位置（ビット位置）を、第３ビットマップポイントにより表している。例えば、図１１に示すように、本実施形態においては符号“Ｗ”を用いて第１ビットマップポイントを示しており、この第３ビットマップポイントはリプレゼントＩＤ“５”のオンキャッシュビットマップ３０３の先頭から４ビット目を指している。
【００７４】
（Ｂ０）図１１に示す例においては、コピービットマップ３０１におけるリプレゼントＩＤ“２”の単位コピービットマップ３０１１（オンキャッシュビットマップ３０３）のＯＰＣを実行中である。また、オンキャッシュビットマップ領域２２及び管理リンク３０４にはリプレゼントＩＤ“２”のオンキャッシュビットマップ３０３だけが格納されている。
【００７５】
そして、このＯＰＣ実行中に、リプレゼントＩＤ“５”の単位コピービットマップ３０１１の先頭から４ビット目にホスト装置２からライト要求（ホストライト）が発行されたものとする。なお、以下、ホストライト要求の対象領域に対応する単位コピービットマップ３０１１のことを、単にホストライト対象の単位コピービットマップ３０１１という場合がある。
【００７６】
（Ｂ１）図１１に示す例において、ホストライト対象の単位コピービットマップ３０１１のリプレゼントビットマップ３０２の値は“１１”である（図１１の符号Ｐ０参照）。
この場合には、図１２に示すように、オンキャッシュビットマップ管理部１１は、オンキャッシュビットマップ領域２２に、ホストライト対象の単位コピービットマップ３０１１であるリプレゼントＩＤ“５”の単位コピービットマップ３０１１の領域を割り当てる（図１２の符号Ｐ１参照）。そして、オンキャッシュビットマップ管理部１１は、この割り当てた全領域に“１”を設定して初期化する。これにより、オンキャッシュビットマップ領域２２にリプレゼントＩＤ“５”の単位コピービットマップ３０１１（オンキャッシュビットマップ３０３）が設定（格納）される。
【００７７】
また、管理リンク制御部１３は、リプレゼントＩＤ“５”の単位コピービットマップ３０１１（オンキャッシュビットマップ３０３）をつなげる（図１２の符号Ｐ２参照）。
コピー処理部１４がこのホストライト対象のデータを、コピー元ボリューム１３１ａからコピー先ボリューム１３１ｂにコピーし、その後、ストレージアクセス制御部１６が対象の領域にホストライトを行なう。
【００７８】
また、リプレゼントビットマップ管理部１２は、ホストライト対象の単位コピービットマップ３０１１のリプレゼントビットマップ３０２の値を“１０”に更新する（図１２の符号Ｐ３参照）。
（Ｂ２）次に、図１３に示すように、別のホストライトが発行されたとする。図１３に示す例においては、リプレゼントＩＤ“５”の単位コピービットマップ３０１１の先頭から６ビット目にホストライトが発行されている（図１３の符号Ｐ４参照）。
【００７９】
この時、ホストライト対象の単位コピービットマップ３０１１のリプレゼントビットマップ３０２の値は“１０”である（図１３の符号Ｐ５参照）。前述の如く、リプレゼントビットマップ３０２の値が“１０”である場合には、その単位コピービットマップ３０１１はメモリ１２１のオンキャッシュビットマップ領域２２に格納されている（単位コピービットマップ３０１１の領域は割り当て済み）。
【００８０】
そこで、コピー処理部１４は、管理リンク３０４を参照して、メモリ１２１上のオンキャッシュビットマップ領域２２におけるリプレゼントＩＤ“５”のオンキャッシュビットマップ３０３の位置を得る（図１３の符号Ｐ６参照）。
コピー処理部１４は、このリプレゼントＩＤ“５”のオンキャッシュビットマップ３０３を参照し、このオンキャッシュビットマップ３０３における、ホストライト対象の領域のＯＰＣを行なう。その後、ストレージアクセス制御部１６はホストライトに応じたライト処理を実行する。
【００８１】
（Ｂ３）さらに、図１４に示すように、別のホストライトが発行されたとする。図１４に示す例においては、リプレゼントＩＤ“４”の単位コピービットマップ３０１１の先頭から２ビット目にホストライトが発行されている（図１４の符号Ｐ７参照）。
このように、管理リンク３０４につながれていない新たな単位コピービットマップ３０１１にホストライトが発行された場合も、前述した処理（Ｂ１）と同様に、管理リンク制御部１３は、管理リンク３０４にリプレゼントＩＤ“４”の単位コピービットマップ３０１１（オンキャッシュビットマップ３０３）をつなげる（図１４の符号Ｐ８参照）。
【００８２】
図１４に示す例においては、管理リンク３０４に先にリプレゼントＩＤ“２”，“５”の２つのオンキャッシュビットマップ３０３が繋げられており、この管理リンク３０４に更にリプレゼントＩＤ“４”のオンキャッシュビットマップ３０３がつなげられる。
本ストレージシステム１においては、管理リンク３０４につなげられるオンキャッシュビットマップ３０３の最大数は３であるので、これにより、管理リンク３０４は最大までつながった状態となる。
【００８３】
（Ｂ４）更に、図１５に示すように、別のホストライトが発行されたとする。図１５に示す例においては、リプレゼントＩＤ“６”の単位コピービットマップ３０１１の先頭から５ビット目にホストライトが発行されている（図１５の符号Ｐ９参照）。
管理リンク３０４には、既に最大数である３つのオンキャッシュビットマップ３０３がつながっているので、単位コピービットマップ３０１１は、管理リンク３０４の予備領域に登録される（図１５の符号Ｐ１０参照）。
【００８４】
コピー処理部１４は、このリプレゼントＩＤ“６”のオンキャッシュビットマップ３０３を参照し、このオンキャッシュビットマップ３０３における、ホストライト対象の領域のＯＰＣを行なう。
リプレゼントＩＤ“６”のオンキャッシュビットマップ３０３のＯＰＣが行なわれた後に、ストレージアクセス制御部１６はホストライトに応じたライト処理を実行する。
【００８５】
管理リンク制御部１３は、管理リンク３０４がＭＡＸ状態である場合には、予備領域に格納されているオンキャッシュビットマップ３０３を、記憶装置１３０のコピービットマップ領域１３２に書き戻す。すなわち、記憶装置１３０のコピービットマップ３０１を、リプレゼントＩＤ“６”のオンキャッシュビットマップ３０３を用いて更新する。
その後、オンキャッシュビットマップ管理部１１は、この書き戻しを行なったオンキャッシュビットマップ３０３をオンキャッシュビットマップ領域２２から削除する。すなわち、メモリ１２１上から解放する。
【００８６】
また、これに合わせて、リプレゼントビットマップ管理部１２は、当該オンキャッシュビットマップ３０３に対応するリプレゼントビットマップ３０２の値を、“０１”に更新する（図１５の符号Ｐ１１参照）。
（Ｂ５）図１５に示した状態において、ＯＰＣの処理が進み、リプレゼントＩＤ“２”のオンキャッシュビットマップ３０３のコピーが完了すると、本来であれば、コピービットマップ３０１において、リプレゼントＩＤ“２”に後続するリプレゼントＩＤ“３”の単位コピービットマップ３０１１に進むことになる。
【００８７】
しかし、本ストレージシステム１においては、管理リンク３０４において、リプレゼントＩＤ“２”に後続する他のオンキャッシュビットマップ３０３が登録されている場合には、コピー処理部１４は、この管理リンク３０４のオンキャッシュビットマップ３０３を優先してコピー処理を行なう。
図１６に示す例においては、コピービットマップ３０１においてリプレゼントＩＤ“２”に後続するリプレゼントＩＤ“３”の単位コピービットマップ３０１１よりも、管理リンク３０４の先頭に登録されているリプレゼントＩＤ“５”のオンキャッシュビットマップ３０３を優先して処理する。
【００８８】
これはメモリ１２１（オンキャッシュビットマップ領域２２）上に保持するオンキャッシュビットマップ３０３の数を積極的に減らすことで、メモリ１２１上に空きを作るためである。すなわち、メモリ１２１において、オンキャッシュビットマップ３０３を格納するためのオンキャッシュビットマップ領域２２が枯渇し、記憶装置１３０へのデータ書き戻しが発生することで処理性能ダウンが発生することを阻止する。
【００８９】
なお、コピービットマップ３０１における本来のＯＰＣスケジュールの位置（第１ビットマップポイント）は、メモリ１２１等の所定の記憶領域に記憶しておく。
（Ｂ６）次に、図１７に示すように、別のホストライトが発行されたとする。図１７に示す例においては、リプレゼントＩＤ“６”の単位コピービットマップ３０１１の先頭から２ビット目にホストライトが発行されている（図１７の符号Ｐ１２参照）。
【００９０】
図１６に示した状態においては、このホストライト対象であるリプレゼントＩＤ“６”の単位コピービットマップ３０１１のリプレゼントビットマップ３０２の値は“０１”である（図１６の符号Ｐ１３参照）。前述の如く、リプレゼントビットマップ３０２の値が“０１”である場合には、その単位コピービットマップ３０１１はメモリ１２１のオンキャッシュビットマップ領域２２に格納されていない（単位コピービットマップ３０１１の領域は未割り当て）。
【００９１】
そこで、オンキャッシュビットマップ管理部１１は、図１７に示すように、リプレゼントＩＤ“６”の単位コピービットマップ３０１１を、記憶装置１３０のコピービットマップ領域１３２に格納されているコピービットマップ３０１から読み出し、メモリ１２１のオンキャッシュビットマップ領域２２に格納する（図１７の符号Ｐ１４参照）。
また、図１６に示した状態においては、管理リンク３０４には空きがあるので、管理リンク制御部１３は、リプレゼントＩＤ“６”のオンキャッシュビットマップ３０３を管理リンク３０４につなげる（図１７の符号Ｐ１５参照）。
【００９２】
その後、リプレゼントビットマップ管理部１２が、リプレゼントビットマップ３０２におけるリプレゼントＩＤ“６”の単位コピービットマップ３０１１に対応する値を“１０”に変更する。
コピー処理部１４は、このリプレゼントＩＤ“６”のオンキャッシュビットマップ３０３を参照し、このオンキャッシュビットマップ３０３における、ホストライト対象の領域のＯＰＣを行なう。その後、ストレージアクセス制御部１６はホストライトに応じたライト処理を実行する。
【００９３】
次に、上述の如く構成された実施形態の一例としてのストレージシステム１におけるＯＰＣの処理を、図１８に示すフローチャート（ステップＳ１〜Ｓ１５）に従って説明する。
ステップＳ１において、リプレゼントビットマップ管理部１２はリプレゼントビットマップ領域２１をメモリ１２１に割り当てる。また、オンキャッシュビットマップ管理部１１はオンキャッシュビットマップ領域２２をメモリ１２１に割り当てる。
【００９４】
ステップＳ２において、リプレゼントビットマップ管理部１２はリプレゼントビットマップ３０２の先頭にビットマップポイント（第１ビットマップポイント）を設定する。
ステップＳ３において、リプレゼントビットマップ管理部１２は、第１ビットマップポイントが示す２ビットの値を確認する。
ステップＳ４において、第１ビットマップポイントが示す２ビットの値が“００”であるか否かを確認する。第１ビットマップポイントが示す２ビットの値が“００”である場合（ステップＳ４のＹｅｓルート参照）、ステップＳ５に移行する。
【００９５】
ステップＳ５においては、リプレゼントビットマップ管理部１２が、第１ビットマップポイントがリプレゼントビットマップ３０２の末尾であるか否かを確認する。
第１ビットマップポイントがリプレゼントビットマップ３０２の末尾である場合には（ステップＳ５のＹｅｓルート参照）、ＯＰＣが完了したとして、処理を終了する。
一方、第１ビットマップポイントがリプレゼントビットマップ３０２の末尾でない場合には（ステップＳ５のＮｏルート参照）、ステップＳ１５に移行する。
【００９６】
ステップＳ１５においては、第２ビットマップポイントをリプレゼントビットマップ３０２において１つ（２ビット分）進める。その後、ステップＳ３に戻る。
ステップＳ４における確認の結果、第１ビットマップポイントが示すリプレゼントビットマップ３０２の２ビットの値が“００”でない場合（ステップＳ４のＮｏルート参照）、ステップＳ６に移行する。
【００９７】
ステップＳ６においては、管理リンク３０４にオンキャッシュビットマップ３０３が登録されているか否かを確認する。管理リンク３０４にオンキャッシュビットマップ３０３が登録されている場合には（ステップＳ６のＹｅｓルート参照）、ステップＳ８に移行する。
ステップＳ８において、第２ビットマップポイントを、管理リンク３０４における先頭のオンキャッシュビットマップ３０３の先頭に設定する。
【００９８】
一方、管理リンク３０４にオンキャッシュビットマップ３０３が登録されていない場合には（ステップＳ６のＮｏルート参照）、ステップＳ７に移行する。
ステップＳ７においては、管理リンク制御部１３がオンキャッシュビットマップ３０３を管理リンク３０４に登録する。また、ステップＳ３において確認した第１ビットマップポイントが示すリプレゼントビットマップ３０２の２ビットの値に応じて、以下の処理を行なう。
【００９９】
すなわち、第１ビットマップポイントが示すリプレゼントビットマップ３０２の２ビットの値が“１１”である場合には、オンキャッシュビットマップ領域２２の全てに“１”を書き込むことで初期化を行なう。
また、第１ビットマップポイントが示すリプレゼントビットマップ３０２の２ビットの値が“０１”である場合には、記憶装置１３０上に保持しているコピービットマップ３０１から、第１ビットマップポイントに対応する位置の単位コピービットマップ３０１１をオンキャッシュビットマップ領域２２にコピーする。また、リプレゼントビットマップ３０２における第１ビットマップポイントの位置の値を“１０”に更新し、ステップＳ８に移行する。
【０１００】
ステップＳ９において、第２ビットマップポイントが表す位置のビット値を確認し、ビット＝１である場合に、コピー処理部１４は、コピー元ボリューム１３１ａから当該ビットに対応する領域のデータをコピー先ボリューム１３１ｂにコピーする（ＯＰＣを実行する）。
ステップＳ１０において、リプレゼントビットマップ３０２における第１ビットマップポイントの位置の値を“１０”に更新する。ステップＳ１１において、第２ビットマップポイントが処理中のオンキャッシュビットマップ３０３の末尾であるか否かを確認する。
【０１０１】
第２ビットマップポイントが処理中のオンキャッシュビットマップ３０３の末尾ではない場合には（ステップＳ１１のＮｏルート参照）、ステップＳ１２において第２ビットマップポイントを次に進めた後、ステップＳ９に戻る。
一方、第２ビットマップポイントが処理中のオンキャッシュビットマップ３０３の末尾である場合には（ステップＳ１１のＹｅｓルート参照）、ステップＳ１３に移行する。
【０１０２】
ステップＳ１３においては、リプレゼントビットマップ３０２における第１ビットマップポイントの位置の値を“００”に更新し、処理を行なったオンキャッシュビットマップ３０３を管理リンク３０４から外す。
ステップＳ１４において、チェック対象のリプレゼントビットマップ３０２が“００”であるか否かを確認する。ステップＳ８で設定した管理リンク３０４の先頭にあるオンキャッシュビットマップ３０３がステップＳ３でチェックしている第１ビットマップポイントの指すリプレゼントビットマップでない場合は、ステップＳ１３で更新するリプレゼントビットマップ３０２は管理リンク３０４の先頭にあるオンキャッシュビットマップ３０３であり、ステップＳ１４の時点で第１ビットマップポイントのリプレゼントビットマップ３０２は“００”でないことがある。チェック対象のリプレゼントビットマップ３０２が“００”でない場合には（ステップＳ１４のＮｏルート参照）、ステップＳ６に戻る。ステップＳ８で、再度、管理リンク３０４の先頭にあるオンキャッシュビットマップ３０３を処理し、ステップＳ３でチェック対象となっているリプレゼントビットマップ３０２が“００”になるまで管理リンク３０４内のオンキャッシュビットマップ３０３の処理を続けていく。
【０１０３】
また、チェック対象のリプレゼントビットマップ３０２が“００”である場合には（ステップＳ１４のＹｅｓルート参照）、ステップＳ５に移行する。
このステップＳ５において、リプレゼントビットマップ管理部１２が、第１ビットマップポイントがリプレゼントビットマップ３０２の末尾であるか否かを確認する。
第１ビットマップポイントがリプレゼントビットマップ３０２の末尾でない場合には（ステップＳ５のＮｏルート参照）、ステップＳ１５において、第２ビットマップポイントをリプレゼントビットマップ３０２において１つ（２ビット分）進める。その後、ステップＳ３に戻る。
【０１０４】
また、第１ビットマップポイントがリプレゼントビットマップ３０２の末尾である場合には（ステップＳ５のＹｅｓルート参照）、ＯＰＣが完了したとして、処理を終了する。
次に、実施形態の一例としてのストレージシステム１におけるＯＰＣ実行中にホスト装置２からのＩ／Ｏ要求が発生した場合の処理を、図１９に示すフローチャート（ステップＳ２１〜Ｓ３３）に従って説明する。
【０１０５】
本ストレージシステム１において、ホスト装置２からのＩ／Ｏ要求が発生すると、先ず、ステップＳ２１において、Ｉ／Ｏ要求がＯＰＣによるコピー範囲に発生しているか否かが確認される。
Ｉ／Ｏ要求がＯＰＣによるコピー範囲に発生していない場合には（ステップＳ２１のＮｏルート参照）、ステップＳ２３に移行する。ステップＳ２３においては、ホスト装置２から受信したＩ／Ｏ要求を処理する。すなわち、データボリューム１３１ａ〜１３１ｃに対するデータのリードやライトを行なう。このＩ／Ｏ要求の処理が完了すると、処理を終了する。
【０１０６】
一方、Ｉ／Ｏ要求がＯＰＣによるコピー範囲に発生している場合には（ステップＳ２１のＹｅｓルート参照）、ステップＳ２２に移行する。ステップＳ２２においては、リプレゼントビットマップ管理部１２は、ホスト装置２からのＩ／Ｏ要求が発生している領域に対応するリプレゼントビットマップ３０２の値が“００”であるか否かを確認する。
確認の結果、リプレゼントビットマップ３０２の値が“００”である場合には（ステップＳ２２のＹｅｓルート参照）、ステップＳ２３に移行する。すなわち、ステップＳ２３においては、ホスト装置２から受信したＩ／Ｏ要求を処理し、処理を終了する。
【０１０７】
前述の如く、リプレゼントビットマップ３０２の値が“００”である場合には、対応する単位コピービットマップ３０１１を構成する全てのビットが０であることを示す。すなわち、ホスト装置２からのＩ／Ｏ要求が発生している領域はＯＰＣのコピー処理が不要である、もしくは、ＯＰＣのコピー処理が既に完了していることを示す。従って、記憶装置１３０にアクセスして、コピービットマップ領域１３２のコピービットマップ３０１を確認することなく、処理を完了させることができる。
【０１０８】
また、確認の結果、リプレゼントビットマップ３０２の値が“００”でない場合には（ステップＳ２２のＮｏルート参照）、ステップＳ２４に移行する。
ステップＳ２４においては、ステップＳ２２において確認したリプレゼントビットマップ３０２の２ビットの値に応じて、以下の処理を行なう。
リプレゼントビットマップ３０２の２ビットの値が“１１”である場合には、  前述の如く、対応する単位コピービットマップ３０１１を構成する全てのビットが１であることを示す。
【０１０９】
そこで、オンキャッシュビットマップ管理部１１は、オンキャッシュビットマップ領域２２に、オンキャッシュビットマップ３０３としての範囲を確保した後、この範囲内の全てのビットに“１”を書き込む。これにより、ホスト装置２からのＩ／Ｏ要求が発生している領域に対応するオンキャッシュビットマップ３０３がオンキャッシュビットマップ領域２２に作成される。この際、記憶装置１３０へのアクセスは発生しない。
【０１１０】
また、リプレゼントビットマップ３０２の２ビットの値が“１０”である場合には、前述の如く、単位コピービットマップ３０１１を構成するビットに０と１とが混在し、且つ、メモリ１２１のオンキャッシュビットマップ領域にその単位コピービットマップ３０１１が格納されていることを示す。
そこで、リプレゼントビットマップ３０２の２ビットの値が“１０”である場合には、オンキャッシュビットマップ管理部１１が、ホスト装置２からのＩ／Ｏ要求が発生している領域に対応するオンキャッシュビットマップ３０３をオンキャッシュビットマップ領域２２から読み出す。この際、記憶装置１３０へのアクセスは発生しない。
【０１１１】
また、リプレゼントビットマップ３０２の２ビットの値が“０１”である場合には、前述の如く、単位コピービットマップ３０１１を構成するビットに０と１とが混在し、且つ、メモリ１２１のオンキャッシュビットマップ領域にその単位コピービットマップ３０１１が格納されていないことを示す。
そこで、リプレゼントビットマップ３０２の２ビットの値が“０１”である場合には、
オンキャッシュビットマップ管理部１１は、記憶装置１３０にアクセスして、コピービットマップ領域１３２のコピービットマップ３０１を読み出し、このコピービットマップ３０１をオンキャッシュビットマップ領域２２にコピーする。これにより、ホスト装置２からのＩ／Ｏ要求が発生している領域に対応するオンキャッシュビットマップ３０３がオンキャッシュビットマップ領域２２に作成される。なお、この際には記憶装置１３０へのアクセスが発生する。
【０１１２】
また、その後、リプレゼントビットマップ３０２の２ビットの値がいずれの値であっても、リプレゼントビットマップ３０２における対応する領域の値を“１０”に更新する処理を行なう。
さらに、このステップＳ２４においては、生成したオンキャッシュビットマップ３０３を、管理リンク制御部１３が管理リンク３０４に登録する。
【０１１３】
また、この際、既に管理リンク３０４がＭＡＸ状態である場合には、管理リンク制御部１３は、オンキャッシュビットマップ３０３は管理リンク３０４の予備領域に登録される。
その後、ステップＳ２５において、オンキャッシュビットマップ管理部１１は、ステップＳ２４において作成されたオンキャッシュビットマップ３０３において、ホスト装置２からのＩ／Ｏ要求位置に対応するコピービットマップの値が“０”であるか否かを確認する。
【０１１４】
オンキャッシュビットマップ３０３において、ホスト装置２からのＩ／Ｏ要求位置に対応するコピービットマップの値が“０”でない場合には（ステップＳ２５のＮｏルート参照）、ステップＳ２６に移行する。ステップＳ２６においては、コピー処理部１４は、コピー元ボリューム１３１ａから当該ビットに対応する領域のデータをコピー先ボリューム１３１ｂにコピーする（ＯＰＣを実行する）。
【０１１５】
ステップＳ２７において、オンキャッシュビットマップ管理部１１は、オンキャッシュビットマップ３０３におけるコピー処理部１４がステップＳ２６においてコピー処理を行なった領域の値（ビット値）を“０”に更新する。その後、ステップＳ２８に移行する。
また、オンキャッシュビットマップ３０３において、ホスト装置２からのＩ／Ｏ要求位置に対応するコピービットマップの値が“０”である場合にも（ステップＳ２５のＹｅｓルート参照）、ステップＳ２８に移行する。
【０１１６】
ステップＳ２８において、ストレージアクセス制御部１６が、ホスト装置２からのＩ／Ｏ要求を処理する。
ステップＳ２９において、オンキャッシュビットマップ管理部１１は、ステップＳ２４において作成されたオンキャッシュビットマップ３０３の全ての値が“０”であるか否かを確認する。
【０１１７】
このオンキャッシュビットマップ３０３が全て“０”である場合には（ステップＳ２９のＹｅｓルート参照）、ステップＳ３０に移行する。ステップＳ３０においては、プレゼントビットマップ３０２における当該オンキャッシュビットマップ３０３に対応する位置の値を“００”に更新し、処理を行なったオンキャッシュビットマップ３０３を管理リンク３０４から外す。この処理が完了すると、処理を終了する。
【０１１８】
また、ステップＳ２９における確認の結果、オンキャッシュビットマップ３０３が全て“０”でない場合には（ステップＳ２９のＮｏルート参照）、ステップＳ３１に移行する。ステップＳ３１においては、ホスト装置２からＩ／Ｏ要求を受信した時点で、管理リンク３０４がＭＡＸ状態であったか否かが確認される。
ホスト装置２からＩ／Ｏ要求を受信した時点では、管理リンク３０４がＭＡＸ状態でなかった場合には（ステップＳ３１のＮｏルート参照）、処理を終了する。
【０１１９】
また、ホスト装置２からＩ／Ｏ要求を受信した時点で、管理リンク３０４がＭＡＸ状態であった場合には（ステップＳ３１のＹｅｓルート参照）、ステップＳ３２に移行する。ステップＳ３２においては、予備領域に格納されているオンキャッシュビットマップ３０３を、記憶装置１３０のコピービットマップ領域１３２に書き戻す。
その後、オンキャッシュビットマップ管理部１１は、この書き戻しを行なったオンキャッシュビットマップ３０３をオンキャッシュビットマップ領域２２から削除する。すなわち、メモリ１２１上から解放する。
【０１２０】
また、ステップＳ３３において、リプレゼントビットマップ管理部１２は、当該オンキャッシュビットマップ３０３に対応するリプレゼントビットマップ３０２の値を、“０１”に更新する。その後、処理を終了する。
（Ｃ）効果
このように実施形態の一例としてのストレージシステム１によれば、コピービットマップ３０１をメモリ１２１上に格納する代わりに、メモリ１２１に比べてデータ容量が大きい記憶装置１３０のコピービットマップ領域１３２に格納する。これにより、メモリ１２１の使用量を削減することができる。また、コピー元ボリューム１３１ａのサイズが増大した場合であっても、メモリ不足が発生することがない。
【０１２１】
また、メモリ１２１上にリプレゼントビットマップ領域２１を作成し、このリプレゼントビットマップ領域２１に、リプレゼントビットマップ３０２を格納する。リプレゼントビットマップ３０２が、コピービットマップ３０１において連続するリプレゼントサイズのビット列（単位コピービットマップ３０１１）の状態を表す。
従って、コピービットマップ３０１をＨＤＤなどの容量の大きな記憶装置１３０に格納し、メモリ１２１上にリプレゼントビットマップ３０２という形で２ビットの情報でコピービットマップ３０１（単位コピービットマップ３０１１）の状態を管理する。これにより、コピー容量の大きなコピーセッションについてもメモリ領域を節約してコピー処理を行なうことができる。
【０１２２】
ここで、リプレゼントビットマップ３０２は以下のいずれかの状態を表す。
００：対象のコピービットマップ領域が全て0
１１：対象のコピービットマップ領域が全て1
０１：対象のコピービットマップ領域に0と1が混在し、且つ、メモリ１２１上のオンキャッシュビットマップ領域２２に保持されていない。
【０１２３】
１０：対象のコピービットマップ領域に0と1が混在し、且つ、メモリ１２１上のオンキャッシュビットマップ領域２２に保持されている。
コピー処理部１４が、リプレゼントビットマップ３０２を参照しながらＯＰＣを実行するが、この際、リプレゼントビットマップ３０２の値が０１以外の場合には、ディスクアクセスが発生しない。
【０１２４】
このように、ＯＰＣ実行時に、リプレゼントビットマップ３０２を参照することで不要な記憶装置１３０へのアクセスを無くすことができ、コピービットマップ３０１をメモリ１２１に比べてデータアクセスが低速な記憶装置１３０上に格納しても影響が少ない。
リプレゼントビットマップ３０２が“００”の場合には、対応する単位コピービットマップ３０１１の領域は全てコピー済みなのでＯＰＣが不要である。すなわち、記憶装置１３０へのディスクアクセスは発生しない。
【０１２５】
リプレゼントビットマップ３０２が“１１”の場合には、対応する単位コピービットマップ３０１１の領域は全て未コピーなので、オンキャッシュビットマップ３０３を“１”で初期化することで再現することができる。従って、記憶装置１３０のコピービットマップ領域１３２からコピービットマップ３０１を読み出してコピーする必要がなく、記憶装置１３０へのディスクアクセスは発生しない。
【０１２６】
リプレゼントビットマップ３０２が“１０”の場合には、メモリ１２１（オンキャッシュビットマップ領域２２）上にオンキャッシュビットマップ３０３が存在しているので、コピー処理部１４は、このオンキャッシュビットマップ３０３を用いてＯＰＣを実行することができる。従って、記憶装置１３０のコピービットマップ領域１３２からコピービットマップ３０１を読み出してコピーする必要がなく、記憶装置１３０へのディスクアクセスは発生しない。
【０１２７】
リプレゼントビットマップ３０２が“０１”の場合には、メモリ１２１上に、対応する単位コピービットマップ３０１１がない。従って、記憶装置１３０のコピービットマップ領域１３２に保持されているコピービットマップ３０１から、対応する単位コピービットマップ３０１１をオンキャッシュビットマップ領域２２にコピーする必要がある。この場合には、記憶装置１３０へのディスクアクセスが生じる。
【０１２８】
また、管理リンク制御部１３が、管理リンク３０４を用いてオンキャッシュビットマップ３０３を管理することで早くメモリ１２１を解放できる。すなわち、管理リンク３０４に処理対象のリプレゼントビットマップ３０２をキューとして管理し、この管理リンク３０４の先頭キューを優先してＯＰＣ処理する。これにより、ＯＰＣ完了後のオンキャッシュビットマップ３０３をメモリ１２１から解放することで、メモリ１２１を効率的に使用できる。
【０１２９】
さらに、管理リンク制御部１３が、管理リンク３０４のキューの並べ替えを行なう。具体的には、管理リンク制御部１３は、未コピーもしくは要コピーを示す“１”の数が少ないオンキャッシュビットマップ３０３が優先して処理されるように並び替える。これにより、後少しコピーを行なえばメモリ１２１上から解放できる状態のオンキャッシュビットマップ３０３が優先して処理され、メモリ１２１（オンキャッシュビットマップ領域２２）の空き領域を効率的に確保することができる。これにより、コピーの性能を維持したままメモリ領域の節約が可能となる。
【０１３０】
また、更新中のコピービットマップ３０１をオンキャッシュビットマップ３０３としてメモリ１２１上に置くことで、記憶装置１３０へのディスクアクセスを減らすことができる。これにより、コピーの性能を維持したままメモリ領域の節約が可能となる。
さらに、管理リンク制御部１３が、処理優先度をリンクで管理し優先度の低いものをディスク上に置き直すことによっても、コピーの性能を維持したままメモリ領域の節約が可能となる。
【０１３１】
（Ｄ）その他
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態においては、１つのＯＰＣセッションが処理される例について示しているが、これに限定されるものではなく、複数のＯＰＣセッションが並行して処理される場合に適用することもできる。
【０１３２】
図２０は実施形態の一例としてのストレージシステム１における複数のＯＰＣセッションの処理を説明するための図である。
この図２０に示す例においては、データボリューム１３１ａからデータボリューム１３１ｂへのコピーを行なうセッションＡと、データボリューム１３１ｂからデータボリューム１３１ｃへのコピーを行なうセッションＢとが並行して処理されている場合を示している。
【０１３３】
なお、この図２０においては、セッションＡに関するリプレゼントＩＤをＡ１〜Ａ６で表し、セッションＢに関するリプレゼントＩＤをＢ１〜Ｂ６で表している。
このように複数のセッションが同時に実行される場合には、記憶装置１３０には、セッション毎にコピービットマップ領域１３２が設けられ、これらのコピービットマップ領域１３２に、セッション毎にコピービットマップ３０１が格納される。
【０１３４】
また、リプレゼントビットマップ３０２についても、メモリ１２１には、セッション毎にリプレゼントビットマップ領域２１が設けられ、これらのリプレゼントビットマップ領域２１に、セッション毎にリプレゼントビットマップ３０２が格納される。すなわち、リプレゼントビットマップ管理部１２はセッション毎にリプレゼントビットマップ３０２の管理を行なう。
【０１３５】
なお、図２０に示すように、第１ビットマップポイントも各セッションのリプレゼントビットマップ３０２にそれぞれ備えられる。
一方、オンキャッシュビットマップ３０３については、メモリ１２１内のオンキャッシュビットマップ領域２２に、各セッションについてのオンキャッシュビットマップ３０３が混在した状態で格納される。
【０１３６】
オンキャッシュビットマップ管理部１１は、オンキャッシュビットマップ領域２２において、複数のセッションについてのオンキャッシュビットマップ３０３を混在した状態で管理する。なお、オンキャッシュビットマップ領域２２のオンキャッシュビットマップ３０３を参照する際には、オンキャッシュビットマップ管理部１１は、管理リンク３０４の情報により該当するオンキャッシュビットマップ３０３のアドレスを算出する。
【０１３７】
このように、オンキャッシュビットマップ領域２２については、複数のセッションで共用することで、メモリ１２１における使用領域を削減することができ、また、管理も容易である。
管理リンク３０４については、管理リンク制御部１３は、複数のセッションについての管理リンク３０４をオンキャッシュビットマップ３０３を混在した状態で管理する。すなわち、管理リンク制御部１３は、１本の管理リンク３０４に、複数のセッションについてのオンキャッシュビットマップ３０３を混在してつなげることで管理する。
【０１３８】
このように、複数のセッションについて１本の管理リンク３０４を用いて管理することで、管理リンク３０４におけるオンキャッシュビットマップ３０３の並べ替え処理を行なう。これにより、複数のセッションＡ，Ｂを総合してオンキャッシュビットマップ３０３がメモリ１２１から解放されやすくなる。
また、管理リンク３０４にオンキャッシュビットマップ３０３がつながっている場合は、複数セッションＡ，Ｂの通常ＯＰＣスケジュールを両方止めて、管理リンク３０４につながったオンキャッシュビットマップ３０３の処理を優先して行なうようにする。
【０１３９】
また、上述した実施形態においては、同一のストレージ装置１００内に備えられたコピー元ボリューム１３１ａからコピー先ボリューム１３１ｂへＯＰＣを行なう例について示しているが、これに限定されるものではない。
図２１は実施形態の一例としてのストレージシステム１のシステム構成の変形例を示す図である。
【０１４０】
この図２１に示す変形例においては、ストレージ装置１００ａとストレージ装置１００ｂとがネットワーク５０を介して通信可能に接続されている。
なお、ストレージ装置１００ａとストレージ装置１００ｂとは、いずれも前述したストレージ装置１００と同様の構成を備える。以下、ストレージ装置１００ａをストレージ装置Ａと、またストレージ装置１００ｂをストレージ装置Ｂという場合がある。
【０１４１】
各ストレージ装置１００ａ，１００ｂは、それぞれアダプタ１２５によりネットワーク５０に接続されている。
この図２１に示すような、ストレージ装置１００１，１００ｂをネットワーク５０を介して接続し、これらのストレージ装置１００ａ，１００ｂ間のデータコピー（リモートＯＰＣ（ＲＯＰＣ））に適用してもよい。
【０１４２】
上述の如く、ストレージ装置１００ａとストレージ装置１００ｂは、いずれも図１に示したストレージ装置１００と同様の構成を備える。例えば、ストレージ装置１００ａ，１００ｂのいずれにおいても、メモリ１２１にリプレゼントビットマップ領域２１，オンキャッシュビットマップ領域２２及び管理リンク領域２３が備えられ、また、記憶装置１３０にコピービットマップ領域１３２が備えられている。これらの設定、例えば、ビットマップサイズ（ビットマップの粗さ）等は両装置１００ａ，１００ｂで同じものにそろえる必要がある。
【０１４３】
以下に、ストレージ装置１００ａに備えられたデータボリューム（コピー元ボリューム）１３１ａから、ストレージ装置１００ｂに備えられたデータボリューム（コピー先ボリューム）１３１ｂにデータのＲＯＰＣを実行する場合について説明する。
図２２に、ストレージ装置１００ａとストレージ装置１００ｂとについて、ＲＯＰＣによるデータコピー時の処理と、ＲＯＰＣ範囲へのライト発生時の処理とを示す。
【０１４４】
ストレージ装置１００ａにおいては、上述した同一装置内でのコピーと同様に、リプレゼントビットマップ３０２に応じてメモリ１２１上に単位コピービットマップ３０１１を読み込み、コピーが必要なデータについてコピーしていく。
しかし、ＲＯＰＣの場合は、コピー先ボリューム１３１ｂが他のストレージ装置１００ｂにあるため、データをコピーする代わりに、ネットワーク５０に接続されたアダプタ１２５経由で他のストレージ装置１００ｂへデータを転送する必要がある。また、同時にコピー先ボリューム１３１ｂについてのボリューム内位置情報（ＬＢＡ：Logical Block Address）も送信する。
【０１４５】
また、ＲＯＰＣによるコピー範囲にホストライトが発生した場合には、ストレージ装置１００ａは、ライトの処理前に該当するデータとコピー先ＬＢＡをストレージ装置１００ｂに送信する。ストレージ装置１００ｂからコピー完了応答を受信後に、オンキャッシュビットマップ３０３やリプレゼントビットマップ３０２を“０”にしてライトを実行する。
【０１４６】
ストレージ装置１００ｂにおいては、コピー先ボリューム１３１ｂへのデータ及びＬＢＡを受信すると、ＬＢＡの示す箇所にライト要求が来たものと同様の処理が行なわれる。最終的にストレージ装置１００ａからストレージ装置１００ｂにはコピー範囲全てのデータが送信される。このため、ストレージ装置１００ｂから見ると、コピー範囲全てにライト要求が来たのと同等となる。よって結果的には全てのコピービットマップ３０１が“１”から“０”に書き換わることとなる。
【０１４７】
但し、注意すべき状況として、ストレージ装置１００ａとストレージ装置１００ｂとの間の経路（例えば、ネットワーク５０）が切断されると、ＲＯＰＣの動作が、経路が復旧するまでの間停止してしまう。
ＲＯＰＣセッション以外に複数のＯＰＣセッションが動いている場合、停止したＲＯＰＣセッションが多くメモリ上に保持されることは、メモリの空きをできるだけ増やしてディスクアクセスの回数を減らすという目的を考えると望ましくない。
【０１４８】
そのため、ＲＯＰＣセッションが停止している間は、管理リンク３０４の並びはストレージ装置１００ａ，１００ｂ内のＯＰＣのオンキャッシュビットマップ３０３を優先的に処理することが望ましい。
図２３は実施形態の一例としてのストレージシステム１におけるＲＯＰＣ処理時におけるネットワーク障害発生時の処理を説明するための図である。
【０１４９】
この図２３に示す例においては、ＯＰＣセッションとＲＯＰＣセッションとが並行して処理されている状態を示している。
なお、この図２３においては、ＯＰＣセッションに関するリプレゼントＩＤをＬ１〜Ｌ６で表し、ＲＯＰＣセッションに関するリプレゼントＩＤをＲ１〜Ｒ６で表している。
ストレージ装置１００ａとストレージ装置１００ｂとの間の経路が正常な状態（経路正常時）においては、管理リンク３０４には、ＯＰＣによる処理とＲＯＰＣによる処理とが、例えば、処理発生順に応じて登録されている。
【０１５０】
一方、ストレージ装置１００ａとストレージ装置１００ｂとの間の経路に、経路切断等の異常が発生した状態（経路異常時）においては、管理リンク制御部１３は、ＯＰＣセッションの処理を優先して処理すべく、管理リンク３０４のキューの並べ替えを行なう。
ＯＰＣセッションが数多く管理リンク３０４に接続されるならば、停止中のＲＯＰＣセッションのオンキャッシュビットマップ３０３が優先的に記憶装置１３０上のコピービットマップ領域１３２に書き戻されることとなる。
【０１５１】
また、上述した実施形態においては、リプレゼントサイズが８ビットの例を示しているが、これに限定されるものではなく、例えば、２０４８ビット等、リプレゼントサイズは任意に設定することができる。
（Ｅ）付記
（付記１）
コピー元データを格納するコピー元領域から前記コピー元データのコピーを格納するコピー先領域へのコピーを制御するストレージ制御装置であって、
前記コピー元領域から前記コピー先領域へのコピーの進捗状況を示す、記憶装置に格納された進捗情報について、当該進捗情報を所定サイズ単位で分割して形成される部分進捗情報をメモリに設定する部分進捗情報管理部と、
前記部分進捗情報に基づき、前記コピー元領域に記憶されたコピー元データのコピーを、前記コピー先領域に格納するコピー処理を実行するコピー処理部と
を備えることを特徴とする、ストレージ制御装置。
【０１５２】
（付記２）
前記部分進捗情報を構成するビット列の状態を表す状態情報を前記メモリに格納する状態情報管理部を備え、
前記コピー処理部が、前記状態情報を参照して前記コピー処理を実行する
ことを特徴とする、付記１記載のストレージ制御装置。
【０１５３】
（付記３）
前記状態情報が、前記部分進捗情報を構成するビット列について、当該部分進捗情報に対応する前記コピー元領域において未コピーの領域とコピー済みの領域とが混在することと、当該部分進捗情報が前記メモリに設定されていることとを示す場合に、前記コピー処理部が、前記メモリに格納されている当該部分進捗情報に基づいて前記コピー処理を行なう
ことを特徴とする、付記１又は２記載のストレージ制御装置。
【０１５４】
（付記４）
前記状態情報が、前記部分進捗情報を構成するビット列について、当該部分進捗情報に対応する前記コピー元領域の全てが未コピーであることを示す場合に、前記コピー処理部が、前記部分進捗情報に対応する前記コピー元領域のデータを前記コピー先領域へコピーする
ことを特徴とする、付記１〜３のいずれか１項に記載のストレージ制御装置。
【０１５５】
（付記５）
前記状態情報が、前記部分進捗情報を構成するビット列について、当該部分進捗情報に対応する前記コピー元領域において未コピーの領域とコピー済みの領域とが混在することと、当該部分進捗情報が前記メモリに設定されていないこととを示す場合に、前記部分進捗情報管理部が、当該部分進捗情報を前記記憶装置に格納された前記進捗情報から読み出して前記メモリに設定する
ことを特徴とする、付記１〜４のいずれか１項に記載のストレージ制御装置。
【０１５６】
（付記６）
前記状態情報が、前記部分進捗情報を構成するビット列について、当該部分進捗情報に対応する前記コピー元領域の全てがコピー済であることを示す場合に、前記コピー処理部は前記コピー処理を行なわない
ことを特徴とする、付記１〜５のいずれか１項に記載のストレージ制御装置。
【０１５７】
（付記７）
前記部分進捗情報の処理順序を管理する処理順序管理部を備え、
前記コピー処理部が、前記処理順序が先の前記部分進捗情報を優先してコピー処理を実行することを特徴とする、付記１〜６のいずれか１項に記載のストレージ制御装置。
（付記８）
前記処理順序管理部が、複数の前記部分進捗情報において、対応する前記コピー元領域において未コピーの領域が多いことを示す前記部分進捗情報の処理順序を先にすることを特徴とする、付記７記載のストレージ制御装置。
【０１５８】
（付記９）
コピー元データを格納するコピー元領域から前記コピー元データのコピーを格納するコピー先領域へのコピーを制御するコピー制御方法であって、
前記コピー元領域から前記コピー先領域へのコピーの進捗状況を示す、記憶装置に格納された進捗情報について、当該進捗情報を所定サイズ単位で分割して形成される部分進捗情報をメモリに設定する処理と、
前記部分進捗情報に基づき、前記コピー元領域に記憶されたコピー元データのコピーを、前記コピー先領域に格納するコピー処理を実行する処理と、
を備えることを特徴とするコピー制御方法。
【０１５９】
（付記１０）
前記部分進捗情報を構成するビット列の状態を表す状態情報を前記メモリに格納する処理と、
前記状態情報を参照して前記コピー処理を実行する処理と
を備えることを特徴とする、付記９記載のコピー制御方法。
【０１６０】
（付記１１）
前記部分進捗情報の処理順序を管理する処理と、
前記処理順序が先の前記部分進捗情報を優先してコピー処理を実行する
処理と
を備えることを特徴とする、付記９又は１０記載のコピー制御方法。
【０１６１】
（付記１２）
複数の前記部分進捗情報において、対応する前記コピー元領域において未コピーの領域が多いことを示す前記部分進捗情報の処理順序を先にする処理
を備えることを特徴とする、付記１１記載のコピー制御方法。
（付記１３）
コピー元データを格納するコピー元領域から前記コピー元データのコピーを格納するコピー先領域へのコピーを制御するコピー制御プログラムであって、
前記コピー元領域から前記コピー先領域へのコピーの進捗状況を示す、記憶装置に格納された進捗情報について、当該進捗情報を所定サイズ単位で分割して形成される部分進捗情報をメモリに設定し、
前記部分進捗情報に基づき、前記コピー元領域に記憶されたコピー元データのコピーを、前記コピー先領域に格納するコピー処理を実行する、
処理をコンピュータに実行させるコピー制御プログラム。
【０１６２】
（付記１４）
前記部分進捗情報を構成するビット列の状態を表す状態情報を前記メモリに格納し、
前記状態情報を参照して前記コピー処理を実行する
処理を前記コンピュータに実行させる付記１３記載のコピー制御プログラム。
（付記１５）
前記部分進捗情報の処理順序を管理し、
前記処理順序が先の前記部分進捗情報を優先してコピー処理を実行する
処理を前記コンピュータに実行させる、付記１３又は１４記載のコピー制御プログラム。
【０１６３】
（付記１６）
複数の前記部分進捗情報において、対応する前記コピー元領域において未コピーの領域が多いことを示す前記部分進捗情報の処理順序を先にする
処理を前記コンピュータに実行させる付記１５記載のコピー制御プログラム。
（付記１７）
コピー元データを格納するコピー元領域と、
前記コピー元データのコピーを格納するコピー先領域と、
前記コピー元領域から前記コピー先領域へのコピーの進捗状況を示す進捗情報を格納する記憶装置と、
前記記憶装置に格納された前記進捗情報について、当該進捗情報を所定サイズ単位で分割して形成される部分進捗情報をメモリに設定する部分進捗情報管理部と、
前記部分進捗情報に基づき、前記コピー元領域に記憶されたコピー元データのコピーを、前記コピー先領域に格納するコピー処理を実行するコピー処理部と
を備えることを特徴とする、ストレージシステム。
【０１６４】
（付記１８）
前記部分進捗情報を構成するビット列の状態を表す状態情報を前記メモリに格納する状態情報管理部を備え、
前記コピー処理部が、前記状態情報を参照して前記コピー処理を実行する
ことを特徴とする、付記１７記載のストレージシステム。
【０１６５】
（付記１９）
前記部分進捗情報の処理順序を管理する処理順序管理部を備え、
前記コピー処理部が、前記処理順序が先の前記部分進捗情報を優先してコピー処理を実行することを特徴とする、付記１７又は１８記載のストレージシステム。
（付記２０）
前記処理順序管理部が、複数の前記部分進捗情報において、対応する前記コピー元領域において未コピーの領域が多いことを示す前記部分進捗情報の処理順序を先にすることを特徴とする、付記１９記載のストレージシステム。
【符号の説明】
【０１６６】
１    ストレージシステム
２    ホスト装置
１０    コピースケジューラ
１１    オンキャッシュビットマップ管理部（部分進捗上違法管理部）
１２    リプレゼントビットマップ管理部（状態情報管理部）
１３    管理リンク制御部（処理順序管理部）
１４    コピー処理部
１５    ストレージアクセス制御部
２１    リプレゼントビットマップ領域
２２    オンキャッシュビットマップ領域
２３    管理リンク領域
１００，１００ａ，１００ｂ    ストレージ装置
１１０    ＣＰＵ
１１１    ＣＭ（ストレージ制御装置）
１２１    メモリ
１２４，１２５，２０１    アダプタ
１３０    記憶装置
１３１ａ    データボリューム（コピー元ボリューム）
１３１ｂ    データボリューム（コピー先ボリューム）
１３１ｃ    データボリューム
１３２    コピービットマップ領域
３０１    コピービットマップ（進捗情報）
３０２    リプレゼントビットマップ（状態情報）
３０３    オンキャッシュビットマップ（部分進捗情報）
３０４    管理リンク
【図１】
2016099703.tif 000003
【図２】
2016099703.tif 000004
【図３】
2016099703.tif 000005
【図４】
2016099703.tif 000006
【図５】
2016099703.tif 000007
【図６】
2016099703.tif 000008
【図７】
2016099703.tif 000009
【図８】
2016099703.tif 000010
【図９】
2016099703.tif 000011
【図１０】
2016099703.tif 000012
【図１１】
2016099703.tif 000013
【図１２】
2016099703.tif 000014
【図１３】
2016099703.tif 000015
【図１４】
2016099703.tif 000016
【図１５】
2016099703.tif 000017
【図１６】
2016099703.tif 000018
【図１７】
2016099703.tif 000019
【図１８】
2016099703.tif 000020
【図１９】
2016099703.tif 000021
【図２０】
2016099703.tif 000022
【図２１】
2016099703.tif 000023
【図２２】
2016099703.tif 000024
【図２３】
2016099703.tif 000025