(57)【要約】【課題】信頼性の高い記憶制御装置及びその制御方法を提案する。【解決手段】上位装置から与えられるデータを記憶する運用ボリュームのある時点のデータイメージでなるスナップショットを定期的又は不定期に作成し、当該スナップショットについての差分データをプールボリュームに保持する構成の記憶制御装置において、プールボリュームを複数設定し、グループ化された複数の運用ボリュームからなるボリューム群若しくはいずれのボリューム群にも属さない１つの運用ボリュームから構成されるコピーペアごとに、それぞれ異なるプールボリュームを割り当て、各コピーペアの差分データを、それぞれ対応するプールボリュームに退避させるようにした。【選択図】図８
2007188267.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から与えられる書込み対象のデータを他の記憶制御装置と共に二重化して保有する記憶制御装置であって、
データを記憶するための記憶領域を提供する記憶デバイスと、
前記記憶領域上に運用ボリューム及びプールボリュームを設定し、前記上位装置から与えられる前記データを前記運用ボリュームに順次格納すると共に、当該運用ボリュームのある時点のデータイメージでなるスナップショットを定期的又は不定期に作成し、前記スナップショットを作成した後に前記運用ボリュームに前記データが書き込まれたときに、当該データを書き込む直前の元のデータを差分データとして前記プールボリュームに必要に応じて退避させ、新たな前記スナップショットを作成した後に、前回作成した前記スナップショットについての前記差分データを前記プールボリュームから読み出して前記他の記憶制御装置に転送するコントローラと
を備え、
前記コントローラは、
前記プールボリュームを複数設定し、グループ化された複数の前記運用ボリュームからなるボリューム群若しくはいずれの前記ボリューム群にも属さない１つの前記運用ボリュームから構成されるコピーペアごとに、それぞれ異なる前記プールボリュームを割り当てると共に、各前記コピーペアの前記差分データを、それぞれ対応する前記プールボリュームに退避させる
ことを特徴とする記憶制御装置。
【請求項２】
前記コントローラは、
前記差分データを前記他の記憶制御装置に転送するデータ転送処理を他の処理に優先して実行する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項３】
前記コントローラは、
前記他の記憶制御装置への前記差分データのデータ転送量を前記コピーペア単位で監視し、
当該データ転送量に応じて、前記コピーペア単位で、前記差分データを他の記憶制御装置に転送するデータ転送処理の優先度を動的に変化させる
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項４】
前記コントローラは、
前記コピーペアごとに、それぞれ前記スナップショットを保持する仮想的なボリュームでなる仮想ボリュームを必要に応じて複数作成する
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項５】
前記コントローラは、
前記他の記憶制御装置への前記差分データのデータ転送量を前記コピーペア単位で監視し、
当該データ転送量に応じて、前記コピーペア単位で、前記上位装置からの前記運用ボリュームに対する入出力要求に対する応答時間を動的に変化させる
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項６】
前記コントローラは、
前記コピーペアごとに、前記スナップショットを定期的に作成すると共に、当該スナップショットの作成時間間隔でなるサイクル時間を必要に応じて変化させる
ことを特徴とする請求項１に記載の記憶制御装置。
【請求項７】
前記コントローラは、
前記コピーペアの前記サイクル時間を、前記上位装置から与えられる当該コピーペアについてユーザが指定した前記サイクル時間、又はユーザにより登録された当該コピーペアが取り扱うデータの属性に応じた前記サイクル時間に変更する
ことを特徴とする請求項６に記載の記憶制御装置。
【請求項８】
前記コントローラは、
前記他の記憶制御装置への前記差分データのデータ転送量を前記コピーペア単位で監視し、
当該データ転送量に応じて、前記コピーペア単位で、前記サイクル時間を動的に変化させる
ことを特徴とする請求項６に記載の記憶制御装置。
【請求項９】
前記コントローラは、
前記スナップショットを作成してから、当該スナップショットが前記他の記憶制御装置に転送し終えるまでの時間差を前記コピーペア単位で取得し、
当該時間差に応じて、前記コピーペア単位で、前記サイクル時間を動的に変化させる
ことを特徴とする請求項６に記載の記憶制御装置。
【請求項１０】
前記コントローラは、
前記第２の記憶制御装置への前記差分データのデータ転送量の統計情報を前記コピーペア単位で取得し、
当該統計情報に基づいて、前記コピーペア単位で、前記サイクル時間を動的に変化させる
ことを特徴とする請求項６に記載の記憶制御装置。
【請求項１１】
上位装置から与えられる書込み対象のデータを他の記憶制御装置と共に二重化して保有する記憶制御装置の制御方法であって、
記憶デバイスが提供する記憶領域上に運用ボリューム及びプールボリュームを設定する第１のステップと、
前記上位装置から与えられる前記データを前記運用ボリュームに順次格納すると共に、当該運用ボリュームのある時点のデータイメージでなるスナップショットを定期的又は不定期に作成し、前記スナップショットを作成した後に前記運用ボリュームに前記データが書き込まれたときに、当該データを書き込む直前の元のデータを差分データとして前記プールボリュームに必要に応じて退避させ、新たな前記スナップショットを作成した後に、前回作成した前記スナップショットについての前記差分データを前記プールボリュームから読み出して前記他の記憶制御装置に転送する第２のステップと
を備え、
前記第１のステップでは、
前記プールボリュームを複数設定し、グループ化された複数の前記運用ボリュームからなるボリューム群若しくはいずれの前記ボリューム群にも属さない１つの前記運用ボリュームから構成されるコピーペアごとに、それぞれ異なる前記プールボリュームを割り当て、
前記第２のステップでは、
各前記コピーペアの前記差分データを、それぞれ対応する前記プールボリュームに退避させる
ことを特徴とする記憶制御装置の制御方法。
【請求項１２】
前記第２のステップでは、
前記差分データを前記他の記憶制御装置に転送するデータ転送処理を他の処理に優先して実行する
ことを特徴とする請求項１１に記載の記憶制御装置の制御方法。
【請求項１３】
前記第２のステップでは、
前記他の記憶制御装置への前記差分データのデータ転送量を前記コピーペア単位で監視し、
当該データ転送量に応じて、前記コピーペア単位で、前記差分データを他の記憶制御装置に転送するデータ転送処理の優先度を動的に変化させる
ことを特徴とする請求項１１に記載の記憶制御装置の制御方法。
【請求項１４】
前記第１のステップでは、
前記コピーペアごとに、それぞれ前記スナップショットを保持する仮想的なボリュームである仮想ボリュームを必要に応じて複数作成する
ことを特徴とする請求項１１に記載の記憶制御装置の制御方法。
【請求項１５】
前記第２のステップでは、
前記他の記憶制御装置への前記差分データのデータ転送量を前記コピーペア単位で監視し、
当該データ転送量に応じて、前記コピーペア単位で、前記上位装置からの前記運用ボリュームに対する入出力要求に対する応答時間を動的に変化させる
ことを特徴とする請求項１１に記載の記憶制御装置の制御方法。
【請求項１６】
前記第２のステップでは、
前記コピーペアごとに、前記スナップショットを定期的に作成すると共に、当該スナップショットの作成時間間隔でなるサイクル時間を必要に応じて変化させる
ことを特徴とする請求項１１に記載の記憶制御装置の制御方法。
【請求項１７】
前記第２のステップでは、
前記コピーペアの前記サイクル時間を、前記上位装置から与えられる当該コピーペアについてユーザが指定した前記サイクル時間、又はユーザにより登録された当該コピーペアが取り扱うデータの属性に応じた前記サイクル時間に変更する
ことを特徴とする請求項１６に記載の記憶制御装置の制御方法。
【請求項１８】
前記第２のステップでは、
前記他の記憶制御装置への前記差分データのデータ転送量を前記コピーペア単位で監視し、
当該データ転送量に応じて、前記コピーペア単位で、前記サイクル時間を動的に変化させる
ことを特徴とする請求項１６に記載の記憶制御装置の制御方法。
【請求項１９】
前記第２のステップでは、
前記スナップショットを作成してから、当該スナップショットが前記他の記憶制御装置に転送し終えるまでの時間差を前記コピーペア単位で取得し、
当該時間差に応じて、前記コピーペア単位で、前記サイクル時間を動的に変化させる
ことを特徴とする請求項１６に記載の記憶制御装置の制御方法。
【請求項２０】
前記第２のステップでは、
前記第２の記憶制御装置への前記差分データのデータ転送量の統計情報を前記コピーペア単位で取得し、
当該統計情報に基づいて、前記コピーペア単位で、前記サイクル時間を動的に変化させる
ことを特徴とする請求項１６に記載の記憶制御装置の制御方法。
【請求項２１】
上位装置から与えられる書込み対象のデータを他の記憶制御装置と共に二重化して保有する記憶制御装置であって、
データを記憶するための記憶領域を提供する記憶デバイスと、
前記記憶領域上に運用ボリューム及びプールボリュームを設定し、前記上位装置から与えられる前記データを前記運用ボリュームに順次格納すると共に、当該運用ボリュームのある時点のデータイメージでなるスナップショットを定期的又は不定期に作成し、前記スナップショットを作成した後に前記運用ボリュームに前記データが書き込まれたときに、当該データを書き込む直前の元のデータを差分データとして前記プールボリュームに必要に応じて退避させ、新たな前記スナップショットを作成した後に、前回作成した前記スナップショットについての前記差分データを前記プールボリュームから読み出して前記他の記憶制御装置に転送するコントローラと
を備え、
前記コントローラは、
複数の前記プールボリュームを設定し、複数の前記プールボリュームのうちの第１のプールボリュームを第１のコピーペアに割り当て、第２のプールボリュームを第２のコピーペア及び第３のコピーペアの両方のコピーペアに割り当てる
ことを特徴とする記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及びその制御方法に関し、いわゆるスナップショット機能及びリモートコピー機能が搭載された記憶制御装置に適用して好適なものである。
【背景技術】
【０００２】
従来、記憶制御装置として、ある時点における論理ボリュームのデータイメージ（スナップショット）を保持する、いわゆるスナップショット機能が搭載されたものがある。この種の記憶制御装置におけるスナップショットの作成手法としては、元の論理ボリュームとの差分だけを保持する第１のスナップショット作成方法と、データを２つの論理ボリュームに二重化して保持し、スナップショット作成時に二重化を停止して片方の論理ボリュームをスナップショットとして提供する第２のスナップショット作成方法となどが提案されている。
【０００３】
また近年では、かかる第２のスナップショット作成方法について、スナップショットを一時的に保存するテンポラリ用の論理ボリュームをさらに設け、この論理ボリュームを、スナップショットとして提供する論理ボリュームに格納されたデータをテープ媒体等に保存する際のバッファとして用いることが提案されている（特許文献１参照）。この方法によれば、スナップショット取得のために二重化を停止している時間を短縮でき、またミラー再同期化する際のオリジナルデータのミラー先論理ボリュームへのコピー量を削減し、データベースプログラムからのデータアクセス性能が低下するミラー再同期化時間を短縮することができる利点がある。
【０００４】
一方、従来、地震、火災、洪水等の天災やテロなどに対するデータ保護方法として、100〜数100〔km〕程度分離したメインセンタ及びリモートセンタにそれぞれ設置した正側及び副側の記憶制御装置間でデータを二重化して保有する、いわゆるリモートコピー機能を採用したストレージシステムが実用化されている。
【０００５】
リモートコピー機能は、同期型と非同期型の２種類に大別される。このうち、同期型は、正側の記憶制御装置及び副側の記憶制御装置の両方にデータを書き込んだことを条件として、上位装置にライト完了を報告するようにしてリモートコピーが行われ、非同期型は、正側の記憶制御装置にデータが書き込まれた段階で、上位装置にライト完了を報告し、適当な時期にそのデータを副側の記憶制御装置に転送するようにしてリモートコピーが行われる。
【０００６】
ところで、かかるリモートコピー機能を採用した従来のストレージシステムでは、正側及び副側にそれぞれ複数の記憶制御装置が存在する場合、これら正側及び副側の記憶制御装置の対応するもの同士がそれぞれ独立に通信リンクで接続されてリモートコピーが行なわれている。このため、正側の記憶制御装置が設置されたメインセンタが機能を失った場合、どの時点までのデータがリモートコピーされていたのかがリモートセンタに設置された副側の記憶制御装置ごとに異なるために、データごとにタイムスタンプを付すなどしていない場合にメインセンタ及びリモートセンタの整合性をとることが困難であった。
【０００７】
そこで、近年、メインセンタ側において、１台の記憶制御装置（以下、これを主記憶制御装置と呼ぶ）に残りの記憶制御装置（以下、これを副記憶制御装置と呼ぶ）を接続し、予め定められた契機で主記憶制御装置がリモートコピーの一時停止と一時停止の解除を繰り返し、これに連動して副記憶制御装置がリモートコピーの一時停止と一時停止解除を繰り返すことで、一時停止時におけるメインセンタとリモートセンタとの間のデータの整合性をとることが提案されている。
【特許文献１】特開２００１−３３１３７８号公報
【特許文献２】特開２００１−２０９５６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ここで、スナップショット作成方法として上述の第１のスナップショット作成方法を採用し、リモートコピー機能として非同期型を採用したストレージシステムにおいて、正側の記憶制御装置にユーザがデータを読み書きするための論理ボリューム（以下、適宜、これを第１の論理ボリュームと呼ぶ）が複数存在する場合について考える。
【０００９】
かかるストレージシステムにおいて、特定の第１の論理ボリュームに対するデータライト量が増加し、当該データライト量が正側の記憶制御装置から副側の記憶制御装置へのデータ転送量を上回った場合、当該第１の論理ボリュームによって、元の第１の論理ボリューム及び作成したスナップショット間の差分を保持するための論理ボリューム（以下、これを第２の論理ボリュームと呼ぶ）内の記憶領域が多く使用され、最悪の場合には当該記憶領域が枯渇する。
【００１０】
このため、正側の記憶制御装置において、すべての第１の論理ボリュームについて、１つの第２の論理ボリュームを共通に使用する構成とすると、特定の第１の論理ボリュームへのデータライト量が増加したときに、その影響がストレージシステム全体に及び、他の論理ボリュームのスナップショットの作成維持が困難となる問題がある。
【００１１】
本発明は以上の点を考慮してなされたもので、上記問題を解決し、信頼性の高い記憶制御装置及びその制御方法を提案しようとするものである。
【課題を解決するための手段】
【００１２】
かかる課題を解決するため本発明においては、上位装置から与えられる書込み対象のデータを他の記憶制御装置と共に二重化して保有する記憶制御装置であって、データを記憶するための記憶領域を提供する記憶デバイスと、前記記憶領域上に運用ボリューム及びプールボリュームを設定し、前記上位装置から与えられる前記データを前記運用ボリュームに順次格納すると共に、当該運用ボリュームのある時点のデータイメージでなるスナップショットを定期的又は不定期に作成し、前記スナップショットを作成した後に前記運用ボリュームに前記データが書き込まれたときに、当該データを書き込む直前の元のデータを差分データとして前記プールボリュームに必要に応じて退避させ、新たな前記スナップショットを作成した後に、前回作成した前記スナップショットについての前記差分データを前記プールボリュームから読み出して前記他の記憶制御装置に転送するコントローラとを設け、前記コントローラは、前記プールボリュームを複数設定し、グループ化された複数の前記運用ボリュームからなるボリューム群若しくはいずれの前記ボリューム群にも属さない１つの前記運用ボリュームから構成されるコピーペアごとに、それぞれ異なる前記プールボリュームを割り当てると共に、各前記コピーペアの前記差分データを、それぞれ対応する前記プールボリュームに退避させるようにした。
【００１３】
この結果、この記憶制御装置では、特定の運用ボリュームに対するデータの書込み量が増加した場合においても、その影響が他のコピーペアに及ぶのを防止することができる。
【００１４】
また本発明においては、上位装置から与えられる書込み対象のデータを他の記憶制御装置と共に二重化して保有する記憶制御装置の制御方法であって、記憶デバイスが提供する記憶領域上に運用ボリューム及びプールボリュームを設定する第１のステップと、前記上位装置から与えられる前記データを前記運用ボリュームに順次格納すると共に、当該運用ボリュームのある時点のデータイメージでなるスナップショットを定期的又は不定期に作成し、前記スナップショットを作成した後に前記運用ボリュームに前記データが書き込まれたときに、当該データを書き込む直前の元のデータを差分データとして前記プールボリュームに必要に応じて退避させ、新たな前記スナップショットを作成した後に、前回作成した前記スナップショットについての前記差分データを前記プールボリュームから読み出して前記他の記憶制御装置に転送する第２のステップとを設け、前記第１のステップでは、前記プールボリュームを複数設定し、グループ化された複数の前記運用ボリュームからなるボリューム群若しくはいずれの前記ボリューム群にも属さない１つの前記運用ボリュームから構成されるコピーペアごとに、それぞれ異なる前記プールボリュームを割り当て、前記第２のステップでは、各前記コピーペアの前記差分データを、それぞれ対応する前記プールボリュームに退避させるようにした。
【００１５】
この結果、この記憶制御装置の制御方法によれば、特定の運用ボリュームに対するデータの書込み量が増加した場合においても、その影響が他のコピーペアに及ぶのを防止することができる。
【００１６】
さらに本発明においては、上位装置から与えられる書込み対象のデータを他の記憶制御装置と共に二重化して保有する記憶制御装置であって、データを記憶するための記憶領域を提供する記憶デバイスと、前記記憶領域上に運用ボリューム及びプールボリュームを設定し、前記上位装置から与えられる前記データを前記運用ボリュームに順次格納すると共に、当該運用ボリュームのある時点のデータイメージでなるスナップショットを定期的又は不定期に作成し、前記スナップショットを作成した後に前記運用ボリュームに前記データが書き込まれたときに、当該データを書き込む直前の元のデータを差分データとして前記プールボリュームに必要に応じて退避させ、新たな前記スナップショットを作成した後に、前回作成した前記スナップショットについての前記差分データを前記プールボリュームから読み出して前記他の記憶制御装置に転送するコントローラとを設け、前記コントローラは、複数の前記プールボリュームを設定し、複数の前記プールボリュームのうちの第１のプールボリュームを第１のコピーペアに割り当て、第２のプールボリュームを第２のコピーペア及び第３のコピーペアの両方のコピーペアに割り当てるようにした。
【００１７】
この結果、この記憶制御装置では、特定の運用ボリュームに対するデータの書込み量が増加した場合においても、その影響が他のコピーペアに及ぶのを防止することができる。
【発明の効果】
【００１８】
本発明によれば、信頼性の高い記憶制御装置及びその制御方法を実現できる。
【発明を実施するための最良の形態】
【００１９】
以下図面について、本発明の一実施の形態を詳述する。
【００２０】
（１）本実施の形態によるストレージシステムの構成
図１は本実施形態に係るストレージシステム１のシステム構成を示す。このストレージシステム１は、第１の記憶制御装置２と第２の記憶制御装置３とを備える。第１の記憶制御装置２、第２の記憶制御装置３、正ホストシステム４、及び副ホストシステム５は、ＳＡＮ（Storage Area Network）６を介して相互に接続されている。なお、第１の記憶制御装置２及び正ホストシステム４間を第１のＳＡＮを介して接続すると共に、第２の記憶制御装置３及び副ホストシステム５間を別の第２のＳＡＮを介して接続し、第１の記憶制御装置２及び第２の記憶制御装置３間をファイバーチャネルやＩＰネットワーク等の専用線で接続する構成としてもよい。
【００２１】
正ホストシステム４は、常用系の上位装置として用いられるホストシステムであり、主として、システムが正常なときに、第１の記憶制御装置２にＩ／Ｏ処理を要求する。副ホストシステム５は、待機系のホストシステムであり、主として、システムに障害が発生したときに、第２の記憶制御装置３にＩ／Ｏ処理を要求し、障害発生時に正ホストシステム４が行っていた処理を引き継ぐ。正ホストシステム４、及び副ホストシステム５は、例えば、パーソナルコンピュータ、ワークステーション、メインフレームコンピュータ等である。
【００２２】
ストレージシステム１は、第１の記憶制御装置２に書き込まれたデータが第２の記憶制御装置３にリモートコピーされることにより、かかるデータを第１及び第２の記憶制御装置２，３において二重化して保有することができるように構成されている。この場合第２の記憶制御装置３は、第１の記憶制御装置２が過去に保持していたデータイメージと同一のデータイメージを保持する。これにより、第１の記憶制御装置２に障害が生じた場合でも、第２の記憶制御装置３を用いて、システムを稼動させることができる。
【００２３】
リモートコピーとしては、第１の記憶制御装置２と第２の記憶制御装置３との両方にデータを書き込んだことを条件として、正ホストシステム４にライト完了を報告する同期コピーでもよく、或いは第１の記憶制御装置２にデータが書き込まれた段階で、正ホストシステム４にライト完了を報告し、適当な時期にそのデータを第２の記憶制御装置３に転送する非同期コピーでもよい。以下の説明では、第１の記憶制御装置２を稼働系の正記憶制御装置として運用し、第２の記憶制御装置３を待機系の副記憶制御装置として運用する例を示す。
【００２４】
第１の記憶制御装置２は、主に、コントローラ１０と、記憶装置１１とを備える。
【００２５】
コントローラ１０は、ＬＡＮ（Local Area Network）インターフェース２０、フロントエンドインターフェース２１、ＣＰＵ２２、データ転送コントローラ２３、キャッシュメモリ２４、ローカルメモリ２５、及びバックエンドインターフェース２６を備える。
【００２６】
コントローラ１０は、後述のように記憶装置１１内に配置された複数のディスクドライブ３０をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５）で制御することができる。ＲＡＩＤ方式においては、複数のディスクドライブ３０が一つのＲＡＩＤグループとして管理される。ＲＡＩＤグループ上には、正ホストシステム４からのアクセス単位である複数の論理ボリューム３１が定義されている。それぞれの論理ボリューム３１には、ＬＵＮ（Logical Unit Number）がアサインされる。
【００２７】
ＣＰＵ２２は、正ホストシステム４からのデータ入出力要求に応答して、複数のディスクドライブ３０へのＩ／Ｏ処理（ライトアクセス、又はリードアクセス）を制御するプロセッサである。
【００２８】
ローカルメモリ２５には、各種マイクロプログラム、及びボリューム管理テーブルなどが格納されている。各種マイクロプログラム、及びボリューム管理テーブルの詳細については、後述する。
【００２９】
キャッシュメモリ２４は、ディスクドライブ３０に書き込むためのライトデータ、又はディスクドライブ３０から読み出したリードデータを一時的に格納するバッファメモリである。キャッシュメモリ２４は、電源バックアップされており、第１の記憶制御装置２に電源障害が発生した場合でも、キャッシュデータのロストを防ぐ不揮発性メモリとして構成されている。
【００３０】
データ転送コントローラ２３は、キャッシュメモリ２４、フロントエンドインターフェース２１、バックエンドインターフェース２６、及びＣＰＵ２２を相互に接続し、正ホストシステム４とディスクドライブ３０との間のデータ転送を制御する。正ホストシステム４からのライトアクセスが要求されると、データ転送コントローラ２３は、フロントエンドインターフェース２１を介して正ホストシステム４から受け取ったデータをキャッシュメモリ２４に書き込み、その後、そのライトデータをディスクドライブ３０へ非同期書き込みすることを目的として、そのライトデータをバックエンドインターフェース２６へ転送する。また、正ホストシステム４からのリードアクセスが要求されると、バックエンドインターフェース２６を介してディスクドライブ３０から読みとったリードデータをキャッシュメモリ２４に書き込むとともに、フロントエンドインターフェース２１にそのリードデータを転送する。
【００３１】
フロントエンドインターフェース２１は、正ホストシステム４とのインターフェースを制御するコントローラであり、例えば、ファイバチャネルプロトコルに基づく正ホストシステム４からのブロックアクセス要求を受信する機能を有する。
【００３２】
バックエンドインターフェース２６は、ディスクドライブ３０とのインターフェースを制御するコントローラであり、例えば、ディスクドライブ３０を制御するプロトコルに基づくディスクドライブ３０へのデータ入出力要求を制御する機能を有する。
【００３３】
ＬＡＮインターフェース２０は、ＬＡＮ７に接続するインターフェースであり、ＴＣＰ／ＩＰに基づいて管理端末８との間でデータ及び制御信号の送受信を制御する。
【００３４】
記憶装置１１は、複数のディスクドライブ３０を備える。ディスクドライブ３０は、ＦＣ（Fibre Channel）ディスクドライブ、ＳＡＴＡ（Serial Advanced Technology Attachment）ディスクドライブ、ＰＡＴＡ（Parallel Advanced Technology Attachment）ディスクドライブ、ＦＡＴＡ（Fibre Attached Technology Adapted）ディスクドライブ、ＳＡＳ（Serial Attached SCSI）ディスクドライブ或いはＳＣＳＩ（Small Computer System Interface）ディスクドライブ等のストレージデバイスである。
【００３５】
第１の記憶制御装置２は、ＬＡＮ（Local Area Network）７を介して管理端末８に接続されている。管理端末８は、例えば、ＣＰＵ、メモリ及びディスプレイ等のハードウェア資源を備えるコンピュータシステムである。システム管理者は、管理端末８を入力操作することにより、第１の記憶制御装置２を管理するためのコマンドを第１の記憶制御装置２に送信する。第１の記憶制御装置２を管理するためのコマンドとして、例えば、記憶デバイス３０の増設或いは減設、又はＲＡＩＤ構成の変更を指示するためのコマンド、正ホストシステム４と第１の記憶制御装置２との間の通信パスを設定するためのコマンド、ＣＰＵ２２のマイクロプログラムをメモリ２５にインストールするためのコマンド、第１の記憶制御装置２の動作状態の確認や故障部位を特定するためのコマンド等がある。
【００３６】
第２の記憶制御装置３は、主に、コントローラ４０と、記憶装置５０とを備える。
【００３７】
コントローラ４０の詳細構成は、上述したコントローラ１０の詳細構成と同様である。記憶装置５０は、複数のディスクドライブ５１を備える。コントローラ４０は、複数のディスクドライブ５１をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５）で制御することができる。ＲＡＩＤ方式においては、複数のディスクドライブ５１が一つのＲＡＩＤグループとして管理される。ＲＡＩＤグループ上には、副ホストシステム５からのアクセス単位である複数の論理ボリューム５２が定義されている。それぞれの論理ボリューム５２には、ＬＵＮ（Logical Unit Number）がアサインされる。
【００３８】
図２は各種マイクロプログラム及びボリューム管理テーブルを示す。
【００３９】
ローカルメモリ２５は、内部コピー実行プログラム６０、リモートコピー実行プログラム６１、制御プログラム６２、及びボリューム管理テーブル６３を格納する。内部コピー実行プログラム６０は、内部コピー処理、及びスナップショット更新処理を実行する。リモートコピー実行プログラム６１は、リモートコピーを実行する。制御プログラム６２は、内部コピー実行プログラム６０、及びリモートコピー実行プログラム６１を制御する。ボリューム管理テーブル６３は、複数の論理ボリューム４２に関する情報を格納する。
【００４０】
図３はボリューム管理テーブル６３のテーブル構造を示す。
【００４１】
ボリューム管理テーブル６３には、複数の論理ボリューム３１の各々について、その論理ボリューム（以下、「ＶＯＬ」と略記することがある。）３１を識別するためのＶＯＬ−ＩＤと、その論理ボリュームへのアクセスパスを示すパス情報と、その論理ボリューム３１の種類（以下、「ＶＯＬ種類」と記す。）と、その論理ボリューム３１がプールＶＯＬであるか否かを示すフラグ（以下、「プールＶＯＬ」フラグと記す。）と、その論理ボリューム３１を含んだＶＯＬペアに関する情報（以下、「ペア情報」と記す。）と、が対応付けられて格納される。ボリューム管理テーブル６３に格納される情報のうちの少なくとも一つの情報要素（例えば、ＶＯＬ−ＩＤ、ＶＯＬ種類、プールＶＯＬフラグ）は、管理端末８又は正ホストシステム４などから入力できる。
【００４２】
ＶＯＬ種類としては、例えば、「プライマリ」、「セカンダリ」、「プール」がある。「プライマリ」という種類のＶＯＬ（以下、「プライマリＶＯＬ」又は「ＰＶＯＬ」と記す。）は、コピー処理（例えば、リモートコピー処理）において、コピー元となるＶＯＬである。「セカンダリ」という種類のＶＯＬ（以下、「セカンダリＶＯＬ」又は「ＳＶＯＬ」と記す。）は、コピー処理（例えば、リモートコピー処理）において、コピー先となるＶＯＬである。セカンダリＶＯＬは、少なくともプライマリＶＯＬの容量以上の記憶容量を有する。プライマリＶＯＬもセカンダリＶＯＬも、パス情報は定義されている。但し、「プール」という種類のＶＯＬ（以下、「プールＶＯＬ」と記す。）は、パス情報が未定義である。プールＶＯＬの詳細については、後述する。
【００４３】
プールＶＯＬフラグは、それに対応する論理ボリューム３１がプールＶＯＬであるか否かを示す。具体的には、例えば、プールＶＯＬフラグが「１」であれば、それに対応する論理ボリュームは、プールＶＯＬであり、プールＶＯＬフラグが「０」であれば、それに対応する論理ボリュームは、プールＶＯＬでない。
【００４４】
ペア情報には、例えば、ペア相手情報、及びペア状態が含まれている。ペア相手情報には、例えば、ペア相手となる論理ボリューム３１（以下、ペア相手ＶＯＬ）に関する情報として、ペア相手ＶＯＬを有する記憶制御装置のＩＤ、ペア相手ＶＯＬのＶＯＬ−ＩＤ、及びパス情報などがある。ペア状態としては、例えば、「ＳＭＰＬ」、「ＣＯＰＹ」、「ＰＡＩＲ」、「ＰＳＵＳ」、「ＳＰＬＩＴ」、「ＳＳＷＳ」などがある。
【００４５】
「ＳＭＰＬ」とは、ペア生成前の正副関係のない状態を示す。
【００４６】
「ＣＯＰＹ」は、プライマリＶＯＬのデータをセカンダリＶＯＬにコピーする形成コピー中の状態を示す。「ＣＯＰＹ」では、セカンダリＶＯＬへのライトは禁止される。
【００４７】
「ＰＡＩＲ」は、プライマリＶＯＬからセカンダリＶＯＬへ非同期コピーを行っている状態を示す。「ＰＡＩＲ」では、セカンダリＶＯＬへのライトは禁止される。
【００４８】
「ＰＳＵＳ」は、プライマリＶＯＬからセカンダリＶＯＬへ非同期コピーを停止している状態を示す。「ＰＳＵＳ」では、セカンダリＶＯＬへのリード／ライトは禁止される。
【００４９】
「ＳＰＬＩＴ」は、プライマリＶＯＬとセカンダリＶＯＬとを論理的に分離して、プライマリＶＯＬの更新前後の差分データのみをセカンダリＶＯＬにコピーする状態を示す。
【００５０】
「ＳＳＷＳ」は、セカンダリＶＯＬがリード／ライト可能な状態を示す。「ＳＳＷＳ」では、セカンダリＶＯＬのデータは、前回の確定内容にリストアされ、プライマリＶＯＬは、「ＰＳＵＳ」に遷移する。
【００５１】
ＣＰＵ２２は、ボリューム管理テーブル６３を参照することにより、アクセスすべき論理ボリューム３１の種類、及びペア情報を特定することができる。また、ＣＰＵ２２は、プールＶＯＬが後述のバーチャルＶＯＬにアサインされた場合には、そのプールＶＯＬへのパスを表す情報を定義し、定義されたパス情報をボリューム管理テーブル６３に登録することができる。また、ＣＰＵ２２は、アサインされなくなったプールＶＯＬについてのパス情報を消去することにより、プールＶＯＬを未使用状態にすることができる。ＣＰＵ２２は、各プールＶＯＬについて、パス情報が登録されているか否かにより、各プールＶＯＬが使用中であるか、或いは未使用状態であるかを判別することができる。
【００５２】
図４は第１の記憶制御装置２が実行する非同期リモートコピーの処理概要を示す。
【００５３】
第１の記憶制御装置２は、ＣＰＵ２２、キャッシュメモリ２４、プライマリＶＯＬ７０、バーチャルＶＯＬ７１、複数のプールＶＯＬ７２、スナップショット管理情報７３、及び転送差分ビットマップテーブル７４を備える。
【００５４】
プールＶＯＬ７２は、ユーザが利用する運用ボリュームであるプライマリＶＯＬ７０とバーチャルＶＯＬ７１とのペア状態がスプリットされた時点以降にプライマリＶＯＬ７０のデータイメージが更新されたときに、更新前後の差分データを退避させるための論理ボリュームである。このプールＶＯＬの容量は固定的には定められておらず、退避させるべき差分データが増加したときに、これに応じてディスクドライブ３０が提供する記憶領域のうちのいずれのボリュームにも割り当てられていない部分が順次割り当てられる。これにより第１の記憶制御装置２においては、差分データの増減に動的に対応できるようになされている。
【００５５】
バーチャルＶＯＬ７１は、ある時刻にプライマリＶＯＬ７０に格納されているデータと、ある時刻以降にプライマリＶＯＬ７０からプールＶＯＬ７２に退避されたデータとから、ある時刻におけるプライマリＶＯＬ７０のデータイメージを復元するための仮想的な論理ボリュームである。バーチャルＶＯＬ７１は、プライマリＶＯＬ７０のスナップショットを論理的に保持することができる。バーチャルＶＯＬ７１は、プライマリＶＯＬ７０又はセカンダリＶＯＬ８０とペアを形成することができる。本実施の形態では、バーチャルＶＯＬ７１は、キャッシュメモリ２４の記憶領域に形成される場合を例示するが、ディスクドライブ３０（図１）の記憶領域に形成されていてもよい。説明の便宜上、バーチャルＶＯＬ７１をＰ＿ＶＶＯＬと略記する場合がある。
【００５６】
ＣＰＵ２２は、バーチャルＶＯＬ７１に、複数のプールＶＯＬ７２の中から一以上のプールＶＯＬ（例えば、どのＶＯＬにも対応付けられていない未使用のプールＶＯＬ）７２を選択し、選択された一以上のプールＶＯＬ７２をバーチャルＶＯＬ７１にアサインできる。ＣＰＵ２２は、バーチャルＶＯＬ７１にアサインされるプールＶＯＬ７２の数を、記憶資源の消費状況に応じて、適宜に増減することができる。
【００５７】
スナップショット管理情報７３は、ある時刻におけるプライマリＶＯＬ７０のデータイメージを、スナップショットを用いて復元するための情報である。ＣＰＵ２２は、スナップショット管理情報７３を参照することにより、ある時刻におけるプライマリＶＯＬ７０のデータイメージを構成する各データがプールＶＯＬ７２に存在するのか、或いはプライマリＶＯＬ７０に存在するのかを判別し、判別された方からデータを取得することにより、ある時刻におけるプライマリＶＯＬ７０のデータイメージをバーチャルＶＯＬ７１に復元できる。スナップショット管理情報７３は、プライマリＶＯＬ７０のデータ更新位置を示す差分ビットマップテーブル７５を含む。
【００５８】
転送差分ビットマップテーブル７４は、プライマリＶＯＬ７０のデータがセカンダリＶＯＬにイニシャルコピーされた後において、プライマリＶＯＬ７０のデータが更新されたときに、セカンダリＶＯＬ８０にリモートコピーされるべき差分データの位置（言い換えれば、プライマリＶＯＬ７０のデータ更新位置）を示す。
【００５９】
ＣＰＵ２２は、プライマリＶＯＬ８０とバーチャルＶＯＬ７１との間のペア状態をコピー状態にすることができる。プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態がコピー状態になっているときに、プライマリＶＯＬ７０にデータが書き込まれると、ＣＰＵ２２は、そのデータをバーチャルＶＯＬ７１又はプールＶＯＬ７２に書き込む。
【００６０】
ＣＰＵ２２は、プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態をスプリット状態にすることができる。プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態がスプリット状態になっているときに、プライマリＶＯＬ７０にデータが書き込まれると、ＣＰＵ２２は、内部コピープログラム６０（図２）を動作させて、内部コピー処理及びスナップショット更新処理を実行する。
【００６１】
第２の記憶制御装置３は、ＣＰＵ８１、キャッシュメモリ８２、セカンダリＶＯＬ８０、複数のバーチャルＶＯＬ８３、複数のプールＶＯＬ８４、スナップショット管理情報７３、及び転送差分ビットマップテーブル８５を備える。
【００６２】
プールＶＯＬ８４は、セカンダリＶＯＬ８０と１つのバーチャルＶＯＬ８３とのペア状態がスプリットされた時点以降にセカンダリＶＯＬ８０のデータイメージが更新されたときに、更新前後の差分データを退避させるための論理ボリュームである。
【００６３】
バーチャルＶＯＬ８３Ａ，８３Ｂは、ある時刻にセカンダリＶＯＬ８０に格納されているデータと、ある時刻以降にセカンダリＶＯＬ８０からプールＶＯＬ８４に退避されたデータとから、ある時刻におけるセカンダリＶＯＬ８０のデータイメージを復元するための仮想的な論理ボリュームである。バーチャルＶＯＬ８３は、セカンダリＶＯＬ８０のスナップショットを論理的に保持することができる。本実施形態では、バーチャルＶＯＬ８３は、キャッシュメモリ８２の記憶領域に形成される場合を例示するが、ディスクドライブ７１（図１）の記憶領域に形成されていてもよい。説明の便宜上、バーチャルＶＯＬ８３をＳ＿ＶＶＯＬと略記する場合がある。
【００６４】
スナップショット管理情報８６は、ある時刻におけるセカンダリＶＯＬ８０のデータイメージを、スナップショットを用いて復元するための情報である。ＣＰＵ８１は、スナップショット管理情報８６を参照することにより、ある時刻におけるセカンダリＶＯＬ８０のデータイメージを構成する各データがプールＶＯＬ８４に存在するのか、或いはセカンダリＶＯＬ８０に存在するのかを判別し、判別された方からデータを取得することにより、ある時刻におけるセカンダリＶＯＬ８０のデータイメージをバーチャルＶＯＬ８３に復元できる。スナップショット管理情報８６は、セカンダリＶＯＬ８０のデータ更新位置を示す差分ビットマップテーブル８７を含む。
【００６５】
転送差分ビットマップテーブル８５は、プライマリＶＯＬ７０のデータがセカンダリＶＯＬ８０にイニシャルコピーされた後において、プライマリＶＯＬ７０のデータが更新されたときに、リモートコピーによりセカンダリＶＯＬ８０のデータが更新された位置を示す。
【００６６】
次に、内部コピー処理、スナップショット更新処理、及びリモートコピー処理の詳細について説明を加える。以降の説明では、プライマリＶＯＬ７０とバーチャネルＶＯＬ７１との間のペア状態がスプリット状態にあることを前提とする。
【００６７】
第１の記憶制御装置２は、正ホストシステム４からライトアクセス要求を受けると（Ｓ１）、ライトデータをキャッシュメモリ２４に格納し（Ｓ２）、ライト完了を正ホストシステム４に報告する（Ｓ３）。
【００６８】
ＣＰＵ２２は、キャッシュメモリ２４に書き込まれたライトデータを読み出し、プライマリＶＯＬ７０に書き込む（Ｓ４）。このとき、ＣＰＵ２２は、更新前データ（ライトデータによって更新（上書き）される前のデータであって、かつプライマリＶＯＬ７０に書かれていた過去のデータ）をプライマリＶＯＬ７０からプールＶＯＬ７２に移動させる（Ｓ５）。
【００６９】
プライマリＶＯＬ７０とバーチャネルＶＯＬ７１との間のペア状態がスプリット状態にあるときに、内部コピーを実行すると、ある時刻におけるプライマリＶＯＬ７０のデータイメージを構成する各データは、プライマリＶＯＬ７０とプールＶＯＬ７２とに分散される。
【００７０】
次に、ＣＰＵ２２は、スナップショット管理情報７３を、プライマリＶＯＬ７０とバーチャネルＶＯＬ７１との間のペア状態がスプリットされた時点（以下、「スプリット時点」と称する。）にプライマリＶＯＬ７０に格納されているデータと、そのスプリット時点以降にプライマリＶＯＬ７０からプールＶＯＬ７２に移動されたデータとから、そのスプリット時点におけるプライマリＶＯＬ７０のデータイメージを復元するための情報に更新する（Ｓ６）。このスナップショット更新処理により、バーチャルＶＯＬ７１は、プライマリＶＯＬ７０のスナップショットを論理的に保持することができる。
【００７１】
ＣＰＵ２２は、プライマリＶＯＬ７０とバーチャネルＶＯＬ７１との間のペア状態がスプリット状態にあるときに、正ホストシステム４からライトアクセス要求を受ける都度に、上述したＳ２〜Ｓ６の処理を繰り返し実行する。
【００７２】
ＣＰＵ２２は、スプリット時点から所定時間経過後にリモートコピー実行プログラム６１（図２）を動作させ、リモートコピー処理を実行する。リモートコピー実行プログラム６１は、差分ビットマップテーブル７５を転送差分ビットマップテーブル７４にマージする。そして、リモートコピー実行プログラム６１は、転送差分ビットマップテーブル７４に基づいて、スプリット時点におけるプライマリＶＯＬ７０のデータイメージを復元するための各データがプライマリＶＯＬ７０に存在するのか、或いはプールＶＯＬ７２に存在するのかを判別し、判別された方からデータを取得して、そのデータを第２の記憶制御装置３に転送する（Ｓ７）。このリモートコピー処理により、スプリット時点におけるプライマリＶＯＬ７０のデータイメージがセカンダリＶＯＬ８０に再現される。
【００７３】
第２の記憶制御装置３は、第１の記憶制御装置２からデータを受信すると、第１の記憶制御装置２にライト完了を報告する（Ｓ８）。
【００７４】
以後、ＣＰＵ６１は、第１の記憶制御装置２から受信したデータをセカンダリＶＯＬ８０に書き込む際に、更新前データ（ライトデータによって更新（上書き）される前のデータであって、かつセカンダリＶＯＬ８０に書かれていた過去のデータ）をセカンダリＶＯＬ８０からプールＶＯＬ８４に移動させる（Ｓ９）。
【００７５】
更に、ＣＰＵ８１は、スナップショット管理情報８６を、スプリット時点にセカンダリＶＯＬ８０に格納されているデータと、スプリット時点以降にセカンダリＶＯＬ８０からプールＶＯＬ８４に移動されたデータとから、スプリット時点におけるセカンダリＶＯＬ８０のデータイメージを復元するための情報に更新する（Ｓ１０）。
【００７６】
尚、ＣＰＵ８１は、２つのバーチャルＶＯＬ８３を交互に切り替えて使用する。これにより、例えば、ＣＰＵ８１は、一方のバーチャルＶＯＬ８３にセカンダリＶＯＬ８０のスナップショットを論理的に作成しつつ、他方のバーチャルＶＯＬ８３と対応付けられた差分ビットマップテーブル８７をクリアすることができる。差分ビットマップテーブル８７をクリアするには、長時間を要する。２つのバーチャルＶＯＬ８３を交互に切り替えて使用することで、スナップショットの作成と、差分ビットマップテーブル８７のクリアを並行処理できるので、効率がよい。
【００７７】
図５は第１の記憶制御装置２において実行される非同期リモートコピーの処理シーケンスを示す。
【００７８】
非同期リモートコピーは、まず、正ホストシステム４から第１の記憶制御装置２に与えられる非同期リモートコピー処理の実行命令に基づいて、第１の記憶制御装置２及び第２の記憶制御装置３間でプライマリＶＯＬ７０のデータをすべてセカンダリＶＯＬ８０にコピーする初期コピーから行なわれる。そしてこの初期コピーが終了すると、第１の記憶制御装置２において、プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態がスプリットされる。
【００７９】
図５の時刻ｔ０は、プライマリＶＯＬ７０とバーチャルＶＯＬ７１との間のペア状態がスプリットされたスプリット時点を示す。この時刻ｔ０におけるプライマリＶＯＬ７０のデータイメージを「イメージＴ０」と称する。イメージＴ０は、プライマリＶＯＬ７０の第１のブロック領域にデータブロックＡが格納されているデータイメージとする。この時刻ｔ０の時点では、プールＶＯＬ７１に更新前データは格納されていない。スナップショット管理情報７３は、イメージＴ０を復元するための情報になっている。
【００８０】
時刻ｔ１で（つまり、スプリット状態の期間中に）、プライマリＶＯＬ７０の第１のブロック領域にデータブロックＢが上書きされると、プライマリＶＯＬ７０のデータイメージがイメージＴ０からイメージＴ１に変化する。このとき、内部コピー実行プログラム６０は、データブロックＡ（更新前データ）をプライマリＶＯＬ７０からプールＶＯＬ７２に書き込み、スナップショット管理情報７３を、プライマリＶＯＬ７０の第１のブロック領域に更新があり、かつその第１のブロック領域に存在していたデータブロックＡ（更新前データ）がプールＶＯＬ７２に格納されたことを示す情報に更新する。
【００８１】
また、時刻ｔ１で、制御プログラム６２（図２）がリモートコピー処理の実行をリモートコピー実行プログラム６１（図２）に命じる。リモートコピー実行プログラム６１は、転送差分ビットマップテーブル７４を参照することにより、イメージＴ０を構成するデータブロックＡがプールＶＯＬ７２に存在することを特定し、プールＶＯＬ７２からデータブロックＡを取得し、データブロックＡを第２の記憶制御装置３に送信する。
【００８２】
時刻ｔ２は、リモートコピー処理が完了した時点である。この結果、時刻ｔ０の時点でプライマリＶＯＬ７０に形成されていたイメージＴ０が、セカンダリＶＯＬ８０に複製される。
【００８３】
また、時刻ｔ２で（つまり、スプリット状態の期間中に）、プライマリＶＯＬ７０の第２のブロック領域にデータブロックＣが書かれると、プライマリＶＯＬ７０のデータイメージがイメージＴ１からイメージＴ２に変化する。このとき、内部コピー実行プログラム６０（図２）は、スナップショット管理情報７３を、プライマリＶＯＬ７０第２のブロック領域に更新があったことを示す情報に更新する。
【００８４】
例えば、時刻ｔ２の後であって時刻ｔ３の前に、プライマリＶＯＬ７０の第２のブロック領域にデータブロックＤが上書きされると、プライマリＶＯＬ７０のデータイメージがイメージＴ２からイメージＴ３（第１のブロック領域にデータブロックＢが存在し、第２のブロック領域にデータブロックＤが存在するデータイメージ）に変化する。このとき、内部コピー実行プログラム６０は、データブロックＣ（更新前データ）をプライマリＶＯＬ７０からプールＶＯＬ７２に移動させ、スナップショット管理情報７３を、プライマリＶＯＬ７０の第２のブロック領域に更新があり、その第２のブロック領域に存在していたデータブロックＣがプールＶＯＬ７２に格納されたことを示す情報に更新する。
【００８５】
その後、プライマリＶＯＬ７０の更新が行われる前に、時刻ｔ３で、再び、プライマリＶＯＬ７０とバーチャルＶＯＬ７１とがスプリット状態にされる。
【００８６】
この時刻ｔ３の時点で、換言すれば、スプリット状態にされた場合に、ＣＰＵ２２は、その時刻ｔ３におけるプライマリＶＯＬ７０のイメージＴ３をバーチャルＶＯＬ７１に論理的に保持することを目的として、プールＶＯＬ７２に格納されている全ての更新前データを消去する。
【００８７】
また、ＣＰＵ２２は、スナップショット管理情報７３を、イメージＴ０を復元するための情報からイメージＴ３を復元するための情報に更新する。具体的には、例えば、時刻ｔ３の時点では、プライマリＶＯＬ７０において、未だ更新が行われていない状態なので、ＣＰＵ２２は、スナップショット管理情報７３を、プライマリＶＯＬ７０で更新が行われていないことを示す情報に更新する。
【００８８】
時刻ｔ４の時点でプライマリＶＯＬ７０の第２のブロック領域にデータブロックＥが上書きされると、プライマリＶＯＬ７０のデータイメージがイメージＴ３からイメージＴ４に変化する。このとき、内部コピー実行プログラム６０は、データブロックＤ（更新前データ）をプライマリＶＯＬ７０からプールＶＯＬ７２に書き込み、スナップショット管理情報７３を、プライマリＶＯＬ７０の第２のブロック領域で更新があり、かつその第２のブロック領域に存在していたデータブロックＤがプールＶＯＬ７２に移動したことを示す情報に更新する。
【００８９】
時刻ｔ４の時点でリモートコピー処理が行われる。リモートコピー実行プログラム６１（図２）は、転送差分ビットマップテーブル７４を参照することにより、プライマリＶＯＬ７０の第１のブロック領域に更新が無いので、イメージＴ３を構成するデータブロックＢがプライマリＶＯＬ７０に存在することを把握し、更にプライマリＶＯＬ７０の第２のブロック領域に更新があったので、イメージＴ３を構成する別のデータブロックＤがプールＶＯＬ７２に存在することを把握する。リモートコピー実行プログラム６１は、プライマリＶＯＬ７０からデータブロックＢを取得し、更にプールＶＯＬ７２からデータブロックＤを取得し、データブロックＢ及びデータブロックＤを第２の記憶制御装置３に転送する。
【００９０】
時刻ｔ５の時点は、リモートコピー処理が完了した時点である。この結果、セカンダリＶＯＬ８０におけるイメージＴ０が、時刻ｔ３におけるプライマリＶＯＬ７０のイメージＴ３に更新される。つまり、セカンダリＶＯＬ８０の第１ブロック領域のデータブロックＡにデータブロックＢが上書きされ、更にセカンダリＶＯＬ８０の第２のブロック領域にデータブロックＤが書き込まれる。
【００９１】
尚、これ以降、第２の記憶制御装置３は、次のスプリット時点ｔ６のイメージＴ６を構成するデータを受信するまでの期間、イメージＴ３を保存する。
【００９２】
以後、時刻ｔ３乃至時刻ｔ５において実行された上述の処理が一定時間（１５秒）ごとに繰り返される。なお、以下においては、適宜、この一定時間をサイクルと呼び、１つのサイクルの時間をサイクル時間と呼ぶものとする。
【００９３】
つまり、第１の記憶制御装置２では、サイクルが繰り返される１５秒間隔で、プライマリＶＯＬ７０とバーチャルＶＯＬ７１とがスプリット状態にされる。そのスプリット状態にされている期間中であって、次にスプリット状態にされる時点までに（換言すれば、内部コピー処理及びスナップショット更新処理に並行して）、リモートコピー処理が実行される。そのリモートコピー処理が完了した時点以降に、再び、プライマリＶＯＬ７０とバーチャルＶＯＬ７１とがスプリット状態にされ、プールＶＯＬ７２から更新前データが消去される。このような処理が繰り返されることにより、定期的になされたスプリット時点におけるプライマリＶＯＬ７０のデータイメージ（図５の例では、時刻ｔ０におけるイメージＴ０、時刻ｔ３におけるイメージＴ３、時刻ｔ６におけるイメージＴ６）をバーチャルＶＯＬ７１に論理的に保持し、そのデータイメージをセカンダリＶＯＬ８０にコピーできる。
【００９４】
なお、このストレージシステム１の場合、このようなリモートコピー処理を単独のプライマリＶＯＬ７０についてだけでなく、コンシステンシーグループ９０（図６）についても行なうことができる。コンシステンシーグループ９０とは、図６に示すように、例えばデータベースのデータが格納されるプライマリＶＯＬ７０1と、当該データベースについてのログデータが格納されるプライマリＶＯＬ７０2と、当該データベースについての制御情報が格納されるプライマリＶＯＬ７０3となど、それぞれ関連するデータが格納されたグループ化された複数のプライマリＶＯＬ７０（７０1〜７０3）から構成されるプライマリＶＯＬ群をいう。このコンシステンシーグループ９０は、ホスト上のアプリケーションごとに必要に応じてそれぞれ設定されるものである。
【００９５】
そして、このストレージシステム１では、第１の記憶制御装置２内に所望のコンシステンシーグループ９０の各プライマリＶＯＬ７０1〜７０3とそれぞれ対応付けてバーチャルＶＯＬ７１1〜７１3を作成すると共に、第２の記憶制御装置３内に当該各プライマリＶＯＬ７０1〜７０3とそれぞれ対応付けてセカンダリＶＯＬ８０1〜８０3及びバーチャルＶＯＬ８３1〜８３3を作成できる。またこのストレージシステム１では、このコンシステンシーグループ９０のリモートコピー処理を正ホストシステム４から指示することによって、このコンシステンシーグループ９０に含まれる各プライマリＶＯＬのデータイメージを、それぞれ図５について上述した手順に従って、第１の記憶制御装置２内の対応するバーチャルＶＯＬ７１1〜７１3を介して第２の記憶制御装置３内の対応する各セカンダリＶＯＬ８０1〜８０3にコピーすることができる。
【００９６】
図７は本実施形態に係るスナップショット更新処理の概要を示し、より詳細には、プライマリＶＯＬ７０のデータイメージがイメージＴ３からイメージＴ４に変化し、バーチャルＶＯＬ７１によってイメージＴ３が論理的に保持される様子を示す。
【００９７】
スナップショット管理情報７３は、差分ビットマップテーブル１００、アドレステーブル１０１、及び差分データ制御ブロック（ＤＤＣＢ：Differential Data Control Block）１０２を含む。
【００９８】
差分ビットマップテーブル１００は、プライマリＶＯＬ７０内の複数のブロック領域（例えば、１ブロック領域は６４Ｋバイト）にそれぞれ対応する複数のビットを有する。例えば、イメージＴ３からイメージＴ４に変わる場合、図７に示すように、プライマリＶＯＬ７０の第１のブロック領域は、更新されないので、その第１のブロック領域に対応するビットは「０」のままであり、第２のブロック領域のデータブロックＤにデータブロックＤが上書きされるので、その第２のブロック領域に対応するビットが「０」から「１」に更新される。
【００９９】
アドレステーブル１０１は、プライマリＶＯＬ７０の複数のブロック領域にそれぞれ対応したアドレス領域を有する。あるブロック領域に対応する更新前データが存在していれば、そのあるブロック領域に対応するアドレス領域には、そのアドレス領域に対応するアドレスであって、差分データ制御ブロック１０２上のアドレスが格納される。
【０１００】
差分データ制御ブロック１０２は、例えば、プールＶＯＬ７２内の複数のブロック領域にそれぞれ対応する管理領域を有する。各管理領域には、プールＶＯＬ７２内のブロック領域に対応する位置に格納された更新前データがどの階層のスナップショットのデータであるかが記録される。ＣＰＵ２２は、管理領域を辿ることによって、複数階層の更新前データを取得することができる。
【０１０１】
尚、差分データ制御ブロック１０２の使用されていない領域は、空きキューとして管理される。空きキューは、空きキューカウンタ１０３によって管理される。
【０１０２】
上述の構成により、スナップショット作成時点におけるプライマリＶＯＬ７０のデータイメージを論理的にバーチャルＶＯＬ７１に複写できる。そして、バーチャルＶＯＬ７１内のデータがどの階層の更新前データであるかは、差分データ制御ブロック１０２によって管理される。
【０１０３】
（２）ストレージシステムに搭載された各種機能
次に、ストレージシステム１に採用された各種機能について説明する。
【０１０４】
（２−１）複数プール作成機能
かかるストレージシステム１において、正ホストシステム４から特定のプライマリＶＯＬ７０に対するデータライト量が増加し、当該データライト量が第１の記憶制御装置２から第２の記憶制御装置３への差分データのデータ転送量を上回った場合、そのプライマリＶＯＬ７０についての差分データによってプールＶＯＬ７２内の記憶領域が多く使用され、当該記憶領域が枯渇することとなる。このため第１の記憶制御装置２において、すべてのプライマリＶＯＬ７０について１つのプールＶＯＬ７２を共通に使用する構成とすると、特定のプライマリＶＯＬ７０へのデータライト量が増加したときに、その影響がストレージシステム１全体に及ぶ問題がある。
【０１０５】
そこでこのストレージシステム１では、第１の記憶制御装置２内にプールＶＯＬ７２を複数設定可能とし、コンシステンシーグループ９０（図６）及びこれに対応するセカンダリＶＯＬ群のペアや、いずれのコンシステンシーグループにも属さないプライマリＶＯＬ７０及びこれに対応するセカンダリＶＯＬ７０のペア（以下、これらのペアをコピーペアと呼ぶ）ごとにそれぞれ異なるプールＶＯＬ７２を割り当てることができるように構成されている。これによりこのストレージシステム１では、特定のコンシステンシーグループ９０又はいずれのコンシステンシーグループにも属さないプライマリＶＯＬ７０に対するデータライト量が増加した場合にも、その悪影響が他のコンシステンシーグループ９０又はいずれのコンシステンシーグループにも属さないプライマリＶＯＬ７０から構成されるコピーペアに及ぶのを未然に防止し得るようになされている。
【０１０６】
図８は、このような各コピーペアに対するプールＶＯＬ７２の割当て処理に関する第１の記憶制御装置２のＣＰＵ２２の処理内容を示したフローチャートである。
【０１０７】
ＣＰＵ２２は、正ホストシステム４から新たなコピーペアを設定すべき旨のコマンド（以下、これをペア設定コマンドと呼ぶ）が与えられると、ローカルメモリ２５に格納された内部コピー実行プログラム６０に基づき、この図８に示すプール割当て処理手順ＲＴ１に従って、その新たなコピーペアに対して新たなプールＶＯＬ７２を割り当てる。
【０１０８】
すなわちＣＰＵ２２は、正ホストシステム４からペア設定コマンドが与えられると、まず指定されたコピーペアを作成し（Ｓ２０）、この後、この作成したコピーペアに対してユーザが所望のプールＶＯＬ７２を指定しているか否かを判断する（Ｓ２１）。
【０１０９】
具体的には、このストレージシステム１の場合、正ホストシステム４に対してユーザが新たなコピーペアを作成すべき旨の操作入力を行なう際に、そのコピーペアに対して割り当てるプールＶＯＬをユーザが指定するか又は自動的に第１の記憶制御装置が割り当てるかを選択できる。そして、この選択結果は、ペア設定コマンドに格納されて正ホストシステム４から第１の記憶制御装置２に与えられる。かくして、かかるＣＰＵ２２は、このペア設定コマンドに基づいて、ステップＳＰ２０において作成したコピーペアに対してユーザが所望のプールＶＯＬ７２を指定しているか否かを判断する。
【０１１０】
そしてＣＰＵ２２は、この判断において否定結果を得ると（Ｓ２２：ＮＯ）、ステップＳ２０において作成したコピーペアに対応させて、予め定められた容量の新たなプールＶＯＬ７２を作成し（Ｓ２２）、この後このプールＶＯＬ７２を当該コピーペアに割り当てた後（Ｓ２３）、この一連の処理を終了する。
【０１１１】
これに対してＣＰＵ２２は、ステップＳ２１の判断において肯定結果を得ると（Ｓ２４：ＹＥＳ）、ペア設定コマンドに基づき認識されるユーザにより指定されたプールＶＯＬ７２を、かかるコピーペアに割り当て（Ｓ２４）、この後この一連の処理を終了する。
【０１１２】
このようにしてストレージシステム１では、新たなコピーペアを作成する毎にそのコピーペアに対して専用のプールＶＯＬ７２を割り当てる。
【０１１３】
なお、２つ以上のプールＶＯＬ２を新たなコピーペアに対して共通に割り当てる（例えばコピーペアの数組毎に作成済みのプールＶＯＬ７２を重複して割り当てる）ようにしてもよい。具体的には、複数のプールＶＯＬ７２のうちの第１のプールＶＯＬ７２を第１のコピーペアに割り当て、第２のプールＶＯＬ７２を第２のコピーペア及び第３のコピーペアの両方のコピーペアに割り当てるようにしてもよい。
【０１１４】
（２−２）差分データ転送制御機能
次に、このストレージシステム１に採用された差分データ転送制御機能について説明する。これに際して、まず図９を参照して、第１の記憶制御装置２に搭載されたコマンドジョブの優先処理機能について説明する。図９は、かかるコマンドジョブの優先処理機能に関する第１の記憶制御装置２のＣＰＵ２２の処理内容を機能的に分類したものである。
【０１１５】
第１の記憶制御装置２においては、ＣＰＵ２２が実行すべきジョブ（処理事項）が発生した場合、そのジョブの具体的処理内容を規定したコマンドジョブと呼ばれるコマンドがコマンドジョブ生成部１１０により生成され、これが処理キュー１１１と呼ばれるメモリ領域に順次格納される。
【０１１６】
この場合において、第１の記憶制御装置２では、かかる処理キュー１１１として、そのジョブについて予め設定された優先度（処理優先の度合い）が高い「高優先」のコマンドジョブを格納する高優先処理キュー１１１Ａと、優先度が「高優先」に比べて低い「ノーマル（通常）」のジョブを格納するノーマル処理キュー１１１Ｂとの２つの処理キュー１１１が設けられている。
【０１１７】
また第１の記憶制御装置２のローカルメモリ２５（図１）には、予めユーザや管理者によって規定された、各種コマンドジョブについて、その優先度を示す情報（以下、これをコマンドジョブ優先度情報１１２と呼ぶ）が格納されている。
【０１１８】
かくしてコマンドジョブ生成部１１０は、ＣＰＵ２２が実行すべきジョブが発生した場合、コマンドジョブ優先度情報１１２に基づいて、発生すべきコマンドジョブの優先度に応じた数のコマンドジョブを生成する。なお、このとき生成可能な最大のコマンドジョブ数は、そのコマンドジョブの優先度により予め定められており、コマンドジョブの優先度が大きければ大きいほど、そのコマンドジョブをより多く生成することができる。
【０１１９】
この後、コマンドジョブ生成部１１０は、コマンドジョブ優先情報１１２に基づいて、生成したコマンドジョブの優先度が予め定められた所定の値よりも大きいときには、当該コマンドジョブを高優先処理キュー１１１Ａに振り分け、そのコマンドジョブの優先度が当該閾値よりも小さいときには、当該コマンドジョブをノーマル処理キュー１１１Ｂに振り分ける。
【０１２０】
一方、これら高優先処理キュー１１１Ａ又はノーマル処理キュー１１１Ｂに格納された各コマンドジョブは、この後コマンドジョブスケジューラ１１３により順次処理キュー１１１から読み出されてコマンドジョブ実行部１１４に与えられる。
【０１２１】
この場合において、第１の記憶制御装置２のローカルメモリ２５には、例えば高優先処理キュー１１１Ａから読み出すコマンドジョブ数と、ノーマル処理キュー１１１Ｂから読み出すコマンドジョブ数の比率など、予めユーザ又は管理者により設定された、高優先処理キュー１１１Ａに振り分けられた各コマンドジョブをどのように優先的に処理するかの具体的な処理内容を規定したコマンドジョブ実行設定情報１１５が格納されている。
【０１２２】
そして、コマンドジョブスケジューラ１１３は、上述のように高優先処理キュー１１１Ａ又はノーマル処理キュー１１１Ｂに格納された各コマンドジョブを読み出す際には、かかるコマンドジョブ実行設定情報１１５を参照して、例えば高優先処理キュー１１１Ａに格納されたコマンドジョブを３個実行したら、ノーマル処理キュー１１１Ｂに格納されたコマンドジョブを２個実行するといった、コマンドジョブの読出し順番を規定したスケジュールを作成する。
【０１２３】
またコマンドジョブスケジューラ１１３は、この後このスケジュールに従って、高優先処理キュー１１１Ａ又はノーマル処理キュー１１１Ｂから１つずつコマンドジョブを読み出し、これをコマンドジョブ実行部１１４に与える。そして、コマンドジョブ実行部１１４は、与えられたコマンドジョブを順次実行する。
【０１２４】
ところで、この実施の形態によるストレージシステム１の場合、第１及び第２の記憶制御装置２，３間における差分データを転送する処理のコマンドジョブ（以下、これを差分データ転送処理コマンドジョブと呼ぶ）は、障害発生時におけるデータロスト量を低減するため、高優先処理キュー１１１Ａに振り分けられるように優先度が高く設定されており、これによりデータ転送ジョブが他のジョブの影響を受けずに実行できるようになされている。
【０１２５】
ところが、ストレージシステム１において、ある特定のプライマリＶＯＬ７０に対する正ホストシステム４からのデータライト量が増大した場合、そのプライマリＶＯＬ７０が属するコピーペアが第１及び第２の記憶制御装置２，３間の回線帯域を占有し、他のコピーペアの差分データ転送に悪影響を及ぼすおそれがある。
【０１２６】
そこで、このストレージシステム１の第１の記憶制御装置２には、かかる差分データの転送量が増大したコピーペアについては、当該コピーペアに対する差分データ転送処理コマンドジョブの優先度を下げることにより、コマンドジョブ生成部１１０において生成されるそのコピーペアに対する差分データ転送処理コマンドジョブの数を減少させる差分データ転送制御機能が搭載されている。
【０１２７】
図１０は、このような差分データ転送制御機能に関する第１の記憶制御装置２のＣＰＵ２２の処理内容を示すフローチャートである。かかるＣＰＵ２２は、ローカルメモリ２５に格納されたリモートコピー実行プログラム６２（図２）に基づき、この図１０に示す差分データ転送制御処理手順ＲＴ２に従って、上述のような差分データ転送制御処理を実行する。
【０１２８】
すなわちＣＰＵ２２は、第１の記憶制御装置２の電源が投入されると、この差分データ転送制御処理を開始し、まず、ローカルメモリ２５に格納されたボリューム管理テーブル６３（図２）に基づいて、１つのコピーペアを選択する（Ｓ３０）。
【０１２９】
次いでＣＰＵ２２は、選択したコピーペアについて、単位時間当たりのデータ転送量ＤＴを算出する（Ｓ３１）。具体的には、この実施の形態場合、ＣＰＵ２２は、第１の記憶制御装置２内に設定された各コピーペアについて、第１の記憶制御装置２から第２の記憶制御装置３に差分データを転送した時刻及びそのときのデータ転送量を含むログ情報を順次記憶して保持している。そこで、ＣＰＵ２２は、かかるステップＳ３１において、これらのログ情報のうちのそのコピーペアのログ情報に基づいて、当該コピーペアの単位時間当たりのデータ転送量ＤＴを算出する。
【０１３０】
続いてＣＰＵ２２は、算出したデータ転送量ＤＴが第１の閾値ＳＨ１よりも大きいか否かを判定する（Ｓ３２）。この第１の閾値ＳＨ１は、１つのコピーペアの単位時間当たりのデータ転送量として許容できる最大値として、ユーザ又は管理者によって予め設定されたものである。
【０１３１】
ＣＰＵ２２は、この判定において否定結果を得ると（Ｓ３２：ＮＯ）、そのコピーペアに対する差分データ転送処理コマンドジョブの優先度を所定量下げるようにコマンドジョブ優先度情報１１２を更新し、この後ステップＳＰ３０に戻る。
【０１３２】
これに対してＣＰＵ２２は、ステップＳ３２の判定において肯定結果を得ると（Ｓ３２：ＹＥＳ）、ステップＳ３１において算出したそのコピーペアの単位時間当たりのデータ転送量ＤＴが第２の閾値ＳＨ２よりも大きいか否かを判定する（Ｓ３４）。この第２の閾値ＳＨ２は、第１の閾値ＳＨ１よりも小さい値であり、優先度を下げたコピーペアの当該優先度を元の値に戻す場合に許容できるコピーペアの当該単位時間当たりのデータ転送量の最大値として、ユーザ又は管理者によって予め設定されたものである。
【０１３３】
かくしてＣＰＵ２２は、この判定において否定結果を得ると（Ｓ３４：ＮＯ）、ステップＳ３０に戻り、この後ステップＳ３４において選択するコピーペアを順次換えながら、同様の処理を繰り返す。
【０１３４】
一方、ＣＰＵ２２は、ステップＳ３４の判定において肯定結果を得ると（Ｓ３４：ＹＥＳ）、そのコピーペアに対する差分データ転送処理コマンドジョブの優先度を上げるようにコマンドジョブ優先度情報１１２（図９）を更新する（Ｓ３５）。そしてＣＰＵ２２は、この後ステップＳＰにおいて選択するコピーペアを順次換えながら、同様の処理を繰り返す。
【０１３５】
このようにして、このストレージシステム１では、正ホストシステム４からのデータライト量が増大して差分データのデータ転送量が増大したコピーペアの差分データ転送処理コマンドジョブの優先度を下げることにより、かかるコピーペアのデータ転送によって第１及び第２の記憶制御装置２，３間の回線帯域が占有され、他のコピーペアの差分データ転送に悪影響を及ぼすのを未然に防止できるようになされている。
【０１３６】
（２−３）副確定時間維持機能
（２−３−１）複数バーチャルＶＯＬ作成機能
かかる構成を有するストレージシステム１では、第１の記憶制御装置２内のバーチャルＶＯＬ７１が１つの場合、当該バーチャルＶＯＬ７１の内容が第２の記憶制御装置２のセカンダリＶＯＬ８０に確定しない限り、次のバーチャルＶＯＬ７１（スナップショット）を作成できない。その結果、正ホストシステム４からのデータライト量が多くなると、一時的に第１の記憶制御装置２のバーチャルＶＯＬ７１の内容が第２の記憶制御装置３のセカンダリＶＯＬ８０に確定する時間間隔が長くなってしまい、１サイクル分のデータ転送量が増大することにより、障害発生時のデータ損失量が増加する問題がある。
【０１３７】
そこで、このストレージシステム１の場合、図１１に示すように、１つのコピーペアに対して複数のバーチャルＶＯＬ７１を第１の記憶制御装置２内に作成できるようになされている。これによりこのストレージシステム１においては、正ホストシステム４からのデータライト量が多くなって、前のサイクルにおいて作成したスナップショットの差分データを転送し終える前に次のサイクルのスナップショットを作成するタイミングとなったときにも、一時的に新たなバーチャルＶＯＬ７１を作成することで定期的なスナップショットの作成を維持することができる。またこの結果として蓄積された複数スナップショット分の差分データについては、正ホストシステム４からのデータライト量が少なくなったときに、順次第２の記憶制御装置３に送信することによって、かかる未転送の差分データの増大を防止できる。
【０１３８】
図１２は、このようなバーチャルＶＯＬ７１の作成処理に関する第１の記憶制御装置２内のＣＰＵ２２の処理内容を表すフローチャートである。ＣＰＵ２２は、コピーペアごとに、この図１１に示すスナップショット作成処理手順ＲＴ３に従って、必要に応じて新たなバーチャルＶＯＬ７１を作成する。
【０１３９】
すなわちＣＰＵ２２は、１５秒ごとのサイクルの開始時にこのスナップショット作成処理手順ＲＴ１を開始し、まず、前のサイクルにおいて作成したスナップショットの差分データを第２の記憶制御装置３に転送し終えたか否かを判断する（Ｓ４０）。
【０１４０】
このステップＳ４０において肯定結果を得ることは（Ｓ４０：ＹＥＳ）、現在、第１の記憶制御装置２内には１つのバーチャルＶＯＬ７１しか存在せず、そのバーチャルＶＯＬ７１に保持されたスナップショットの差分データも既に第２の記憶制御装置３に送信し終えたことを意味する。かくして、このときＣＰＵ２２は、そのバーチャルＶＯＬ７１を用いてプライマリＶＯＬ７０のスナップショットを作成し（Ｓ４１）、この後このサイクルにおけるスナップショットの作成処理を終了する。
【０１４１】
これに対してステップＳ４０において否定結果を得ることは（Ｓ４０：ＮＯ）、現在、第２の記憶制御装置３へのデータ転送が完了した空きのバーチャルＶＯＬ７１が存在しないことを意味する。かくして、このときＣＰＵ２２は、新たなバーチャルＶＯＬ７１を作成すると共に（Ｓ４１）、このバーチャルＶＯＬ７１を用いてプライマリＶＯＬ７０のスナップショットを作成し（Ｓ４２）、この後このサイクルにおけるスナップショットの作成処理を終了する。
【０１４２】
このようにして、このストレージシステム１では、正ホストシステム４からのデータライト量に応じて第１の記憶制御装置２内のバーチャルＶＯＬ７１の数を動的に増減させることにより、障害発生時のデータ損失量が増加するのを有効に防止できる。
【０１４３】
（２−３−２）Ｉ／Ｏ遅延処理機能
一方、このストレージシステム１には、正ホストシステム４からのデータライト量が増大したときのもう１つの対策として、正ホストシステム４から第１の記憶制御装置２に与えられるＩ／Ｏ要求に対する当該第１の記憶制御装置２から正ホストシステム４への応答を遅くするＩ／Ｏ遅延処理機能が搭載されている。
【０１４４】
図１３は、このようなＩ／Ｏ遅延処理機能に関する第１の記憶制御装置２のＣＰＵ２２の処理内容を表すフローチャートである。ＣＰＵ２２は、ローカルメモリ２５に格納された所定の制御プログラム（図示せず）に基づき、この図１３に示すＩ／Ｏ遅延開始処理手順ＲＴ３に従って、必要時に正ホストシステム４からのデータライト量を抑制する。
【０１４５】
すなわちＣＰＵ２２は、まず１つのコピーペアを選択し（Ｓ５０）、そのとき第１の記憶制御装置２内にそのコピーペアのバーチャルＶＯＬ７１が複数存在するか否かを判断する（Ｓ５１）。
【０１４６】
このステップＳ５１において否定結果を得ることは（Ｓ５１：ＮＯ）、そのコピーペアが、正ホストシステム４からのデータライト量と第２の記憶制御装置３へのデータ転送量とのバランスが取れている状態にあることを意味する。かくして、このときＣＰＵ２２は、特に何もせずにステップＳ５０に戻る。
【０１４７】
これに対して、このステップＳ５１において肯定結果を得ることは（Ｓ５１：ＹＥＳ）、そのコピーペアが、正ホストシステム４からのデータライト量と第２の記憶制御装置３へのデータ転送量とのバランスが取れていない状態にあることを意味する。
【０１４８】
かくして、このときＣＰＵ２２は、まず第２の記憶制御装置３に対する単位時間当たりのデータ転送量ＤＴを算出する（Ｓ５１）。具体的にＣＰＵ２２は、そのコピーペアの過去のログ情報に基づいて、当該コピーペアについての単位時間当たりの第２の記憶制御装置へのデータ転送量を算出する（Ｓ５２）。
【０１４９】
そしてＣＰＵ２２は、この算出したデータ転送量ＤＴが、ユーザ又は管理者によって最大許容地として設定された第３の閾値ＳＨ３よりも大きいか否かを判断し（Ｓ５３）、否定結果を得ると（Ｓ５３：ＮＯ）、ステップＳ５０に戻る。
【０１５０】
これに対してＣＰＵ２２は、かかるステップＳ５３において肯定結果を得ると（Ｓ５３：ＹＥＳ）、正ホストシステム４からのＩ／Ｏ要求に対する応答を遅延させるＩ／Ｏ遅延処理を開始する。具体的に、ＣＰＵ２２は、正ホストシステム４からデータライト要求やデータリード要求が与えられた場合、直ぐに応答できる場合にも、正ホストシステム４がタイムアウトを起こさない程度の所定時間分だけ遅延させて、当該Ｉ／Ｏ要求に対する応答を正ホストシステム４に返す。
【０１５１】
なお、この実施の形態によるストレージシステム１では、かかる正ホストシステム４のタイムアウト時間を、例えば管理端末８（図１）又はその正ホストシステム４自体を用いて管理者又はユーザが自在に設定できるように構成されている。従って、このストレージシステム１では、各正ホストシステム４に共通のタイムアウト時間や異なるタイムアウト時間を設定し、そのタイムアウト時間を第１の記憶制御装置２に通知することができるため、ＣＰＵ２２は、かかるステップＳＰ５３において、このタイムアウト時間を意識しながら、正ホストシステム４からのＩ／Ｏ要求に対する応答を遅延させて当該正ホストシステム４に返すこととなる。
【０１５２】
ＣＰＵ２２は、この後対象とするコピーペアを順次変えながら同様の処理を繰り返し（Ｓ５０〜Ｓ５４）、これにより正ホストシステム４からのデータライト量が増大したコピーペアに対する正ホストシステム４からのデータライト量を順次抑制する。
【０１５３】
一方、ＣＰＵ２２は、このＩ／Ｏ遅延処理手順ＲＴ３と並行して、図１４に示すＩ／Ｏ遅延終了処理手順ＲＴ４を実行することにより、正ホストシステム４からのデータライト量を抑制する必要がなくなったコピーペアに対するＩ／Ｏ遅延処理を終了させる。
【０１５４】
すなわちＣＰＵ２２は、まず１つのコピーペアを選択し（Ｓ６０）、そのコピーペアに対して、現在Ｉ／Ｏ遅延処理を行なっているか否かを判断する（Ｓ６１）。
【０１５５】
ＣＰＵ２２は、この判断において否定結果を得るとステップＳ６０に戻り、これに対して肯定結果を得ると（Ｓ６１）、そのコピーペアについて、単位時間当たりの第２の記憶制御装置へのデータ転送量を算出する（Ｓ６２）。
【０１５６】
そしてＣＰＵ２２は、この算出したデータ転送量ＤＴが、ユーザ又は管理者によってＩ／Ｏ遅延処理を終了させるべき値として設定された第４の閾値ＳＨ４よりも大きいか否かを判断し（Ｓ６３）、否定結果を得ると（Ｓ６３：ＮＯ）、ステップＳ５０に戻る。
【０１５７】
これに対してＣＰＵ２２は、かかるステップＳ５３において肯定結果を得ると（Ｓ６３：ＹＥＳ）、そのコピーペアに対する正ホストシステム４からのＩ／Ｏ要求に対する応答を遅延させるＩ／Ｏ遅延処理を終了する（Ｓ６４）。
【０１５８】
そしてＣＰＵ２２は、この後対象とするコピーペアを順次変えながら同様の処理を繰り返し（Ｓ６０〜Ｓ６４）、これによりＩ／Ｏ遅延処理の必要がなくなったコピーペアに対する当該Ｉ／Ｏ遅延処理を順次終了させる。
【０１５９】
このようにしてこのストレージシステム１では、正ホストシステムから第１の記憶制御装置へのデータライト量が増大したときに、正ホストシステムから第１の記憶制御装置に与えられるＩ／Ｏ要求に対する当該第１の記憶制御装置から正ホストシステムへの応答を遅くすることにより、一時的に第１の記憶制御装置のバーチャルＶＯＬの内容が第２の記憶制御装置にセカンダリＶＯＬに確定する時間間隔が長くなるのを回避し、障害発生時のデータ損失量が増加するのを有効に防止し得るようになされている。
【０１６０】
（２−４）サイクル時間調整機能
上述の各種機能は、第１の記憶制御装置２内においてスナップショットが作成される周期（第１及び第２の記憶制御装置２，３間におけるデータ転送周期に相等）であるサイクル時間を調整することなく対応できるものである。一方、このストレージシステム１には、かかるサイクル時間を静的又は動的に調整できる各種の内部サイクル時間調整機能が採用されており、これにより障害発生時におけるデータロスト量を低減させ得るようになされている。
【０１６１】
具体的には、ストレージシステム１に採用された静的なサイクル時間調整機能の１つ目として、ユーザが所望するコピーペアについて、通常は１５秒のサイクル時間を所望時間に変更設定できる機能がある。
【０１６２】
実際上、ユーザは、正ホストシステム４を操作することにより、当該正ホストシステム４のディスプレイに例えば図１５に示すような所定のウインド（以下、これをサイクル時間設定ウインドと呼ぶ）１２０を表示させることができ、このサイクル時間設定ウインド１２０を用いて所望するコピーペアについて、所望するサイクル時間を設定することができる。そしてこのサイクル時間設定ウインド１２０を用いて設定されたサイクル時間が設定情報として、第１の記憶制御装置２に通知される。以下においては、この通知をサイクル時間設定通知と呼ぶものとする。
【０１６３】
第１の記憶制御装置２のＣＰＵ２２は、正ホストシステム４からサイクル時間設定通知が与えられると、このサイクル時間設定通知に基づいて、対象とするコピーペアについてのサイクル時間をユーザにより指定されたサイクル時間に設定変更する。そしてＣＰＵ２２は、この後そのコピーペアの差分データを第１の記憶制御装置２から第２の記憶制御装置３に転送する際には、当該コピーペアについて変更設定したサイクル時間でスナップショットを順次作成し、その差分データを当該サイクル時間で順次第２の記憶制御装置３に送信することとなる。
【０１６４】
またストレージシステム１に採用された静的なサイクル時間調整機能の２つ目として、コピーペアが取り扱うデータの属性を登録しておくことによって、そのコピーペアのサイクル時間を、その登録したデータの属性に応じたサイクル時間に変更できる機能がある。
【０１６５】
実際上、ユーザは、正ホストシステム４を操作することにより、当該正ホストシステム４のディスプレイに例えば図１６に示すような所定のウインド（以下、これをデータ属性登録ウインドと呼ぶ）１２１を表示させることができ、このデータ属性登録ウインド１２１を用いて、対象とするコピーペアが取り扱うデータの属性（「メール」、「データベース」、「アーカイブ」など）を登録することができる。そしてこのデータ属性登録ウインド１２１を用いて登録されたデータ属性が第１の記憶制御装置２に通知される。以下においては、この通知をデータ属性登録通知と呼ぶものとする。
【０１６６】
このとき第１の記憶制御装置２のＣＰＵ２２は、各種データ属性のサイクル時間をそれぞれ規定した変換テーブルをローカルメモリ２５（図１）内に保持している。そしてＣＰＵ２２は、正ホストシステム４から与えられる、かかるデータ属性登録通知に基づいて、対象とするコピーペアについてのサイクル時間を、当該コピーペアが取り扱うデータ属性に応じたサイクル時間に設定変更する。
【０１６７】
かくしてＣＰＵ２２は、この後そのコピーペアの差分データを第２の記憶制御装置３に転送する際には、当該コピーペアについて変更設定したサイクル時間でスナップショットを順次作成し、その差分データを当該サイクル時間で順次第２の記憶制御装置３に送信することとなる。
【０１６８】
他方、ストレージシステム１に採用された動的なサイクル時間調整機能の１つ目としては、ユーザが任意のタイミングで所望のコピーペアのサイクルを更新させることができる機能がある。この機能は、通常は１５秒のサイクルの途中で、ユーザ操作により当該サイクルを終了させて次のサイクルに強制的に更新するもので、ユーザが正ホストシステム４を操作して、例えば第１の記憶制御装置２内の所望のコピーペアのペア状態を「ＳＰＬＩＴ」に遷移させるための既存のコマンドを第１の記憶制御装置２に発行することにより実行させることができるものである。
【０１６９】
この場合、第１の記憶制御装置２のＣＰＵ２２は、かかるコマンドを受信したタイミングで、当該コマンドにより指定されたコピーペアを構成するプライマリＶＯＬ７０のスナップショットを作成し、このスナップショットについての差分データを通常の手順で第２の記憶制御装置３に送信することとなる。
【０１７０】
また、ストレージシステム１に採用された動的なサイクル時間調整機能の２つ目として、コピーペアの差分データのデータ転送量に応じて、そのコピーペアのサイクル時間を動的に変化させる機能（以下、これを第１のサイクル時間管理機能と呼ぶ）がある。
【０１７１】
実際上、第１の記憶制御装置２のＣＰＵ２２は、かかる第１のサイクル時間管理機能が設定されたコピーペアについて、そのコピーペアの差分データのデータ転送量を、例えば図８について上述した差分データ転送制御処理手順ＲＴ２のステップＳ３１において方法により監視する。
【０１７２】
そしてＣＰＵ２２は、いずれかのコピーペアのデータ転送量が予め設定された所定の第５の閾値ＳＨ５よりも大きくなったときに、そのコピーペアのサイクル時間を長くするように、当該コピーペアのサイクル時間を変更設定する一方、当該データ転送量が予め設定された所定の第６の閾値ＳＨ６（ＳＨ５＞ＳＨ６）よりも小さくなったときには、そのコピーペアのサイクル時間を短くするように、当該コピーペアのサイクル時間を変更設定する。
【０１７３】
さらに、ストレージシステム１に採用された動的なサイクル時間調整機能の３つ目として、所望するコピーペアについて、プライマリＶＯＬ７０のスナップショットを作成してからその内容がセカンダリＶＯＬ８０に反映されて、当該セカンダリＶＯＬ８０の内容が確定するまでの時間差に基づいて、そのコピーペアのサイクル時間を動的に変化させる機能（以下、これを第２のサイクル時間管理機能と呼ぶ）がある。
【０１７４】
実際上、第１の記憶制御装置２のＣＰＵ２２は、かかる第２のサイクル時間管理機能が設定されたコピーペアについて、プライマリＶＯＬ７０のスナップショットを作成してからその内容を反映したセカンダリＶＯＬ８０が確定するまでの時間差を常時監視する。
【０１７５】
そしてＣＰＵ２２は、その時間差が予め定められた第７の閾値ＳＨ７よりも大きくなったときには、そのコピーペアのサイクル時間を長くするように、当該コピーペアについてサイクル時間の設定を変更する一方、当該時間差が予め定められた第８の閾値ＳＨ８よりも小さいときには、そのコピーペアのサイクル時間を長くするように、当該コピーペアについてサイクル時間の設定を変更する。
【０１７６】
このための手段として、ＣＰＵ２２は、図１７に示すように、各コピーペアについて、プライマリＶＯＬ７０のスナップショットを作成するごとにその時刻を順次ローカルメモリ２５を用いて記憶する一方、このスナップショットにシーケンス番号を付与し、当該シーケンス番号を管理する。
【０１７７】
そしてＣＰＵ２２は、そのシーケンス番号のスナップショットの差分データを第２の記憶制御装置３に送信し終えた時点をもって、当該スナップショットについてのリモートコピー処理が完了したものと判断し、その時刻をセカンダリＶＯＬ８０の内容が確定した時刻として、図１８に示すように、そのスナップショットの作成時刻と対応付けて所定のテーブル（以下、これを時間差管理テーブルと呼ぶ）１２２に格納する。かくしてＣＰＵ２２は、この後この時間差管理テーブル１２２に基づいて、かかるスナップショットを作成した時刻からセカンダリＶＯＬ８０の内容が確定するまでの時間差を算出することとなる。
【０１７８】
図１９は、このようなサイクル時間調整機能に関するＣＰＵ２２の一連の処理の流れを示すフローチャートである。ＣＰＵ２２は、ローカルメモリ２５に格納されたリモートコピー実行プログラムに基づき、この図１９に示す第１のサイクル時間調整処理手順ＲＴ５に従って、かかるサイクル時間の調整処理を実行する。
【０１７９】
すなわちＣＰＵ２２は、第１の記憶制御装置２の電源が投入されるとこの第１のサイクル時間調整処理手順ＲＴ５を開始し、まず、上述のデータ属性登録通知又はサイクル時間設定通知を受信したか否かを判断し（Ｓ７０）、肯定を受信したか否かを順次判断する（Ｓ７０，Ｓ７１）。
【０１８０】
そしてＣＰＵ２２は、データ属性登録通知を受信していた場合には（Ｓ７０：ＹＥＳ）、そのデータ属性登録通知に基づいて、指定されたコピーペアについてのサイクル時間を、当該コピーペアが取り扱うデータ属性に応じたサイクル時間に設定変更する（Ｓ７２）。
【０１８１】
またＰＵ２２は、サイクル時間設定通知を受信していた場合には（Ｓ７１：ＹＥＳ）、そのサイクル時間設定通知に基づいて、指定されたコピーペアについてのサイクル時間を、ユーザにより指定されたサイクル時間に設定変更する（Ｓ７３）。
【０１８２】
その後ＣＰＵ２２は、第１の記憶制御装置２の運用を開始する。かかる運用を開始すると、ＣＰＵ２２は、まず、正ホストシステム４からサイクル更新指示を受信したか否かを判断する（Ｓ７４）。そしてＣＰＵ２２は、この判断において肯定結果を得ると（Ｓ７４：ＹＥＳ）、そのときのサイクルを終了させて次のサイクルを開始するようにして、サイクルを更新し（Ｓ７５）、この後ステップＳ７０に戻る。
【０１８３】
これに対してＣＰＵ２２は、ステップＳ７４の判断において否定結果を得ると（Ｓ７４：ＮＯ）、上述の第１のサイクル時間管理機能が設定された各コピーペアについて、それぞれその直近の単位時間当たりのデータ転送量を、これらコピーペアのログ情報に基づいて算出する（Ｓ７６）。
【０１８４】
そしてＣＰＵ２２は、このステップＳ７６における算出結果に基づいて、かかるコピーペアの中からサイクル時間を更新すべきコピーペア、つまり、ステップＳ７６において算出した単位時間当たりのデータ転送量が上述の第５の閾値ＳＨ５よりも大きく又は上述の第６の閾値ＳＨ６よりも小さくなったコピーペアが存在するか否かを判断する（Ｓ７７）。
【０１８５】
そしてＣＰＵ２２は、この判断において肯定結果を得ると（Ｓ７７：ＹＥＳ）、そのコピーペアのサイクル時間を、現在設定されているサイクル時間よりも長く又は短くするように設定変更する（Ｓ８０）。
【０１８６】
これに対してＣＰＵ２２は、このステップＳ７７の判断において否定結果を得ると（Ｓ７７：ＮＯ）、上述の第２のサイクル時間管理機能が設定された各コピーペアについて、それぞれプライマリＶＯＬ７０のスナップショットを作成してからその内容を反映したセカンダリＶＯＬ８０が確定するまでの時間差を図１８について上述した時間情報に基づいて算出する（Ｓ７８）。
【０１８７】
そしてＣＰＵ２２は、このステップＳ７８における算出結果に基づいて、かかるコピーペアの中からサイクル時間を更新すべきコピーペア、つまり、ステップＳ７８において算出した時間差が上述の第７の閾値ＳＨ７よりも大きく又は上述の第８の閾値ＳＨ８よりも小さくなったコピーペアが存在するか否かを判断する（Ｓ７９）。
【０１８８】
そしてＣＰＵ２２は、この判断において肯定結果を得ると（Ｓ７９：ＹＥＳ）、そのコピーペアのサイクル時間を、現在設定されているサイクル時間よりも長く又は短くするように設定変更する（Ｓ８０）。またＣＰＵ２２は、このステップＳ７９の判断において否定結果を得ると（Ｓ７９：ＮＯ）、ステップＳＰ７０に戻り、この後同様の処理を繰り返す（Ｓ７０〜Ｓ８０）。
【０１８９】
（２−４）統計情報に基づくサイクル時間調整機能
一方、この第１の記憶制御装置２には、指定されたコピーペアごとに、１日内でのデータ転送量の変動を観測し、得られた統計情報に基づいてそのコピーペアのサイクル時間を予め１時間単位でスケジュールすると共に、このスケジュールに従って当該コピーペアのサイクル時間を１日周期で必要に応じて変動させるサイクル時間調整機能が搭載されている。
【０１９０】
図２０は、このような統計情報に基づくサイクル時間調整機能に関する第１の記憶制御装置２のＣＰＵ２２の処理内容を示したフローチャートである。ＣＰＵ２２は、ローカルメモリ２５に格納されたリモートコピー実行プログラム６１（図２）に基づき、この図２０に示す第２のサイクル時間調整処理手順ＲＴ６に従って、コピーペアごとの１日分のサイクル時間を１時間単位で調整する。
【０１９１】
すなわちＣＰＵ２２は、１日（２４時間）周期でこの第２のサイクル時間調整処理手順ＲＴ６を開始し、まず１つのコピーペアを選択し（Ｓ９０）、このコピーペアについて、図に示すように、０時から２３時までの１時間毎の各時間帯（以下、これを単に時間帯と呼ぶ）におけるデータ転送量を、それぞれそのコピーペアについてのデータ転送ログデータに基づいて集計する（Ｓ９１）。そしてＣＰＵ２２は、この集計結果に基づいて、例えば図２１に示すようなテーブル（以下、これをデータ転送量集計テーブルと呼ぶ）１３０を作成する。
【０１９２】
続いてＣＰＵ２２は、このデータ転送量集計テーブル１３０に基づいて、そのコピーペアのデータ転送量が統計的に多い時間帯については当該コピーペアの差分データ転送処理コマンドジョブ数を減らすように、時間帯ごとのそのコピーペアの優先度をそれぞれ決定する。そしてＣＰＵ２２は、この決定結果に基づいて、例えば図２２に示すような時間帯ごとのそのコピーペアの優先度を規定したスケジュールスクリプト１３１を作成する（Ｓ９２）。なお、図２２は、時間帯ごとの優先度として、各時間帯における単位時間当たりにコマンドジョブ生成部１１０（図９）が生成可能なそのコピーペアの差分データ転送処理コマンドジョブ数が規定された例を示している。
【０１９３】
次いでＣＰＵ２２は、このスケジュールスクリプト１３１をローカルメモリ２５内に格納し（Ｓ９３）、この後、この統計情報に基づくサイクル時間調整機能の設定がなされたすべてのコピーペア及びコンシステンシーグループについて同様の処理を行なったか否かを判断する（Ｓ９４）。
【０１９４】
ＣＰＵ２２は、この判断において否定結果を得ると（Ｓ９４：ＮＯ）、ステップＳ９０に戻り、この後ステップＳ９４において肯定結果を得るまで、対象とすべきコピーペアを順次切り替えながら、同様の処理繰り返す（Ｓ９０〜ＳＰ９４）。
【０１９５】
そしてＣＰＵ２２は、やがてステップＳ９４の判断において肯定結果を得ると（Ｓ９４：ＹＥＳ）、この一連の処理を終了する。
【０１９６】
なおＣＰＵ２２は、この後かかる各スケジュールスクリプト１３１をそれぞれ１時間ごとに参照し、これらスケジュールスクリプト１３１に基づいて、コマンドジョブ生成部１１０（図９）が単位時間当たりに生成する対応するコピーペアの差分データ転送処理コマンドジョブのジョブ数が、このスケジュールスクリプト１３１においてそのときの時間帯について指定されたジョブ数以下となるように、コマンドジョブ優先度情報１１２（図９）を必要に応じて順次更新する。
【０１９７】
これにより、対応する各コピーペアについて、例えばデータ転送量の少ない夜間にはそのとなるように、データ転送量が１日周期で調整されることとなる。
【０１９８】
（３）本実施の形態の効果
以上の構成において、このストレージシステム１では、第１の記憶制御装置２内にプールＶＯＬ７２を複数設定でき、コピーペアが作成されるごとにそのコピーペアに対して順次異なるプールＶＯＬ７２割り当て、又は作成済みのプールＶＯＬ７２を重複して割り当てる。
【０１９９】
従って、このストレージシステム１では、特定のコンシステンシーグループ９０又はいずれのコンシステンシーグループにも属さないプライマリＶＯＬ７０に対するデータライト量が増加した場合にも、他のコピーペアについて作成したスナップショットの差分データを記憶する記憶領域が枯渇することがない。よって、第１の記憶制御装置２を上述のように構築することによって、コンシステンシーグループ９０又はいずれのコンシステンシーグループにも属さないプライマリＶＯＬ７０に対するデータライト量が増加した場合の悪影響が他のコピーペアに及ぶのを未然に防止でき、信頼性の高いストレージシステムを構築できる。
【０２００】
（４）他の実施の形態
なお上述の実施の形態においては、コンシステンシーグループごと又はコンシステンシーグループに属さないプライマリＶＯＬ７０ごとにそれぞれプールＶＯＬ７２を割り当てるようにした場合について述べたが、本発明はこれに限らず、コンシステンシーグループに属する各プライマリＶＯＬ７０をも含めて、プライマリＶＯＬ７０ごとにプールＶＯＬ７２を割り当てるようにしてもよい。このようにしても同様の効果を得ることができる。
【０２０１】
また上述の実施の形態においては、複数バーチャルＶＯＬ作成機能に関して、第１の記憶制御装置２内に作成されるバーチャルＶＯＬ７１の数を制限しない場合について述べたが、本発明はこれに限らず、第１の記憶制御装置２内に作成されるバーチャルＶＯＬ７１数を制限（例えば最大５個）するようにしてもよい。このようにすることにより、バーチャルＶＯＬ７１についての管理情報の増大化を防止することができる。
【０２０２】
さらに上述の実施の形態においては、複数バーチャルＶＯＬ作成機能に関して、バーチャルＶＯＬ７１を必要に応じて増加させる場合についてのみ述べたが、本発明はこれに限らず、不要となったバーチャルＶＯＬ７１を削除するようにして、バーチャルＶＯＬ７１の数を動的に増減させるようにしてもよい。
【０２０３】
さらに上述の実施の形態においては、第１の記憶制御装置２においてスナップショットを作成するサイクル時間を第１の記憶制御装置２から第２の記憶制御装置３への差分データのデータ転送量に応じて変動させるようにした場合について述べたが、本発明はこれに限らず、例えば正ホストシステム４から第１の記憶制御装置４に対する単位時間当たりのデータの書込み量や、対応するプールＶＯＬ７２に蓄積された差分データのデータ量、対応するプールＶＯＬ７２における記憶領域の残量に応じて対応するコピーペアのサイクル時間を変動させるようにしてもよい。
【０２０４】
さらに上述の実施の形態においては、統計情報に基づくサイクル時間調整機能について、第１の記憶制御装置２から第２の記憶制御装置３へのデータ転送量の統計情報に基づいて、１日周期かつ１時間単位でサイクル時間を必要に応じて変動させるようにした場合について述べたが、本発明はこれに限らず、１日周期に加え又は代えて、１日以外の周期（例えば週、月又は年）でサイクル時間を変動させるようにしてもよく、また１時間単位に加え又は代えて、１時間以外の単位（秒、分、複数時間、日、週又は月）単位でサイクル時間を必要に応じて変動させるようにしてもよい。
【０２０５】
さらに上述の実施の形態においては、第１の記憶制御装置２において、差分データ転送制御処理や、Ｉ／Ｏ遅延処理及び各種サイクル時間調整処理などの各種処理を独立に実行するようにした場合について述べたが、本発明はこれに限らず、例えば第１の記憶制御装置２内に作成されたバーチャルＶＯＬ７２の数に応じてこれらの処理を択一的に実行するように第１の記憶制御装置２を構築してもよい。具体的には、第１の記憶制御装置２のＣＰＵ２２が、第１の記憶制御装置２内に作成可能なバーチャルＶＯＬ７２の数が５個に制限されているものとして、当該バーチャルＶＯＬ７２の数が４個以下のときにはＩ／Ｏ遅延処理を実行し、当該バーチャルＶＯＬ７２の数が５個のときには差分データ転送制御処理を実行するといった例が考えられる。
【０２０６】
さらに上述の実施の形態においては、静的なサイクル時間調整機能の１つとして、所望するコピーペアについて、サイクル時間設定ウインド１２０を用いて所望の固定的なサイクル時間に変更設定できるようにした場合について述べたが、本発明はこれに限らず、かかるサイクル時間を時間帯に応じて異なるサイクル時間を自由に設定できるようにしてもよい。このようにすることによって、例えば夜間にバックアップをとるために、夜間のサイクル時間を長く又は短く設定するなど、運用性を向上させることができる。
【０２０７】
さらに上述の実施の形態においては、サイクル時間調整処理を、ユーザによるサイクル時間の設定や、データ属性の登録、ユーザ契機によるサイクルの更新、コピーペアの差分データのデータ転送量、スナップショットの内容がセカンダリＶＯＬ８０に確定するまでの時間差等に基づいて行なうようにした場合について述べたが、本発明はこれに限らず、他のタイミング又は条件に応じてサイクル時間調整処理を実行するように第１の記憶制御装置２を構築するようにしてもよい。
【０２０８】
例えば、第１の記憶制御装置２に障害が発生した場合等において、運用ボリュームをプライマリＶＯＬ７０からセカンダリＶＯＬ８０に切り替える場合には、プライマリＶＯＬ７０に書き込まれたすべてのデータをセカンダリＶＯＬ８０に転送し終えてから当該切り替えを行なう必要があるため、このようなときには第１の記憶制御装置２から第２の記憶制御装置３へのデータ転送が迅速に行われるように、サイクル更新を優先して行なうように第１の記憶制御装置２を構築するようにしてもよい。
【産業上の利用可能性】
【０２０９】
本発明は、記憶制御装置及びその制御方法に関し、例えば上位装置から与えられる書込み対象のデータを他の記憶制御装置と共に二重化して保有する機能が搭載された記憶制御装置に広く適用できる。
【図面の簡単な説明】
【０２１０】
【図１】本実施の形態によるストレージシステムの構成を示すブロック図である。
【図２】ローカルメモリに格納される情報の一例を示す概念図である。
【図３】ボリューム管理テーブルの構成例を示す概念図である。
【図４】ストレージシステムにおける処理の流れの説明に供する概念図である。
【図５】ストレージシステムにおけるスナップショット管理方法の説明に供するシーケンス図である。
【図６】コンシステンシーグループの説明に供する概念図である。
【図７】スプリット状態開始時とリモートコピー実行時とを含んだ全体的な流れの説明に供する概念図である。
【図８】プール割当て処理手順を示すフローチャートである。
【図９】コマンドジョブの優先処理機能の説明に供する概念図である。
【図１０】差分データ転送制御処理手順を示すフローチャートである。
【図１１】複数バーチャルＶＯＬ作成機能及びＩ／Ｏ遅延処理機能の説明に供するシーケンス図である。
【図１２】スナップショット作成処理手順を示すフローチャートである。
【図１３】Ｉ／Ｏ遅延開始処理手順を示すフローチャートである。
【図１４】Ｉ／Ｏ遅延終了処理手順を示すフローチャートである。
【図１５】サイクル時間設定ウインドを示す略線図である。
【図１６】データ属性登録ウインドを示す略線図である。
【図１７】（Ａ）及び（Ｂ）は、シーケンス番号の説明に供する概念図である。
【図１８】時間差管理テーブルを示す概念図である。
【図１９】第１のサイクル時間調整処理手順を示すフローチャートである。
【図２０】第２のサイクル時間調整処理手順を示すフローチャートである。
【図２１】データ転送量集計テーブルを示す概念図である。
【図２２】スケジュールスクリプトを示す概念図である。
【符号の説明】
【０２１１】
１……ストレージシステム、２，３……記憶制御装置、４……正ホストシステム、１０……コントローラ、１１……記憶装置、２２……ＣＰＵ、２５……ローカルメモリ、３０……ディスクドライブ、７０……プライマリＶＯＬ、７１，８３……バーチャルＶＯＬ、７４，７４Ａ，７４Ｂ，７４Ｃ……転送差分ビットマップテーブル、８０……セカンダリＶＯＬ、１１０……コマンドジョブ生成部、１１１……処理キュー、１１１Ａ……高優先処理キュー、１１１Ｂ……ノーマル処理キュー、１１２……コマンドジョブ優先度情報、１１３……コマンドジョブスケジューラ、１１４……コマンドジョブ実行部、１１５……コマンドジョブ実行設定情報、１２０……サイクル時間設定ウインド、１２１……データ属性登録ウインド、１２２……時間差管理テーブル、１３０……データ転送量集計テーブル、１３１……スケジュールスクリプト。
【図１】
2007188267.tif 000003
【図２】
2007188267.tif 000004
【図３】
2007188267.tif 000005
【図４】
2007188267.tif 000006
【図５】
2007188267.tif 000007
【図６】
2007188267.tif 000008
【図７】
2007188267.tif 000009
【図８】
2007188267.tif 000010
【図９】
2007188267.tif 000011
【図１０】
2007188267.tif 000012
【図１１】
2007188267.tif 000013
【図１２】
2007188267.tif 000014
【図１３】
2007188267.tif 000015
【図１４】
2007188267.tif 000016
【図１５】
2007188267.tif 000017
【図１６】
2007188267.tif 000018
【図１７】
2007188267.tif 000019
【図１８】
2007188267.tif 000020
【図１９】
2007188267.tif 000021
【図２０】
2007188267.tif 000022
【図２１】
2007188267.tif 000023
【図２２】
2007188267.tif 000024