(57)【要約】【課題】  一括サスペンドを行う処理では、データの入力順序の一貫性を保証できる単位は、ロジカルボリュームのペアの集合としてのコピーグループであった。サスペンド予約時刻がコマンド投入時刻に近すぎると、処理中に予約時刻を経過し、サスペンド失敗となる。【解決手段】  コピーグループコンテナに対してサスペンド予約時刻を指定してサスペンド指示をホスト装置から出す。データの入力順序の一貫性を保証する時刻であるＣ／Ｔ時刻を、それぞれのコピーグループ単位でサスペンド予約時刻と比較することで一括サスペンドの成功／失敗を検知する。全てのＣ／Ｔ時刻がサスペンド予約時刻と一致すれば成功、それ以外であれば失敗とする。【選択図】  図１
2005202532.tif 000002
【特許請求の範囲】
【請求項１】
ローカルサイトに設けられたディスクアレイ装置と、リモートサイトに設けられ、前記ローカルサイトのデータをコピーするディスクアレイ装置とに接続された計算機システムは、
前記ローカルサイトのディスクアレイ装置に設けられたロジカルボリュームに記憶されるデータを、前記リモートサイトのディスクアレイ装置に設けられたロジカルボリュームにコピーする手段、
前記コピー手段の前提となるロジカルボリュームのペア状態を、ホスト装置からの要求の中で指定する予約時刻にサスペンドする手段、
データの入力順序の一貫性を保証できる単位としてペアの集合であるＣ／Ｔグループを管理する手段、
前記Ｃ／Ｔグループの集合であるコピーグループコンテナにおける各グループのサスペンド終了の有無を判定して管理する手段、
前記コピーグループコンテナ単位でペア状態の時刻指定一括サスペンドを行う手段とを有することを特徴とする計算機システム。
【請求項２】
前記計算機システムは、さらに、各コピーグループのＣ／Ｔ時刻をサスペンド予約時刻と比較して時刻指定一括サスペンドの成功／失敗を検出する手段を有することを特徴とする請求項１記載の計算機システム。
【請求項３】
一括サスペンドを失敗した場合に、コピーグループコンテナ単位の一括サスペンドを成功裏に実行するに充分な処理時間を計算する手段と、計算した結果をユーザに提示する手段を有することを特徴とする請求項２記載の計算機システム。
【請求項４】
一括サスペンドを失敗した場合に、コピーグループコンテナ単位の一括サスペンドを成功裏に実行するに充分な処理時間を計算する手段と、前記計算結果に基づいて一括サスペンドを再実行する手段を有することを特徴とする請求項２記載の計算機システム。
【請求項５】
前記の処理時間をサスペンドを開始する予約時刻として指定して一括サスペンド処理を特定の回数を上限として再実行する手段と、開始時刻の予約をコマンドのオプションとして選択できる手段とを有することを特徴とする請求項３記載もしくは請求項４記載の計算機システム。
【請求項６】
サスペンドを失敗してサスペンド予約時刻を計算する際の安全係数と冗長時間とコマンド再実行を許す回数の上限値を定めたリトライ回数を指定する手段とを有することを特徴とする請求項５記載の計算機システム。
【請求項７】
一括サスペンドを失敗した場合に、即時サスペンドもしくは一括サスペンドの再実行をユーザインターフェースで選択する手段を含むことを特徴とする請求項６記載の計算機システム。
【請求項８】
ローカルサイトに設けられたディスクアレイ装置と、リモートサイトに設けられ、前記ローカルサイトのデータをコピーするディスクアレイ装置とに接続された計算機システムにおける複数コピーグループの一括サスペンド方法は、
前記ローカルサイトのディスクアレイ装置に設けられたロジカルボリュームと、前記ロジカルボリュームに記憶されたデータをコピーする、前記リモートサイトのディスクアレイ装置に設けられたロジカルボリュームとで、データの入力順序の一貫性を保証できる単位としてのペアであるコピーグループを複数構成し、
前記リモートサイトへの二重書きを停止し、前記ローカルサイトへの書込みだけを行うサスペンド処理の予約時刻の設定コマンドを前記ローカルサイトへ送信し、
前記ローカルサイトへのＩ／Ｏ送信時刻と、前記予約時刻と、前記予約時刻の前記ローカルサイトへの到達時刻とに基づいて、前記サスペンド処理が成功したかどうかを前記コピーグループのそれぞれについて判定し、
前記コピーグループのいずれもが前記サスペンド処理を成功していれば、複数コピーグループの一括サスペンドが成功したと判定することを特徴とする複数コピーグループの一括サスペンド方法。
【請求項９】
前記複数コピーグループの一括サスペンドが失敗した場合、遅延時刻に基づいて前記予約時刻を再設定することを特徴とする請求項８記載の複数コピーグループの一括サスペンド方法。
【請求項１０】
前記コピーグループのそれぞれにおいて、前記設定コマンドが前記予約時刻後に前記ローカルサイトに到達し、前記コマンドの到達時刻以前に、前記予約時刻以降に送信されたＩ／Ｏが前記ローカルサイトに到達した場合、前記サスペンド処理は失敗と判定することを特徴とする請求項８記載の複数コピーグループの一括サスペンド方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスク記憶装置間の非同期データ転送によるリモートコピーの作成および現用とリモートそれぞれのディスク記憶装置に格納された記憶内容の同期制御に関する。
【背景技術】
【０００２】
近年、ハードウェアの処理性能の飛躍的向上やネットワークの高速化等が、従来は困難であった大量のデータを扱う業務のコンピュータシステム化を可能にしつつある。データ量の増大と相まって、データの保全が重要な課題となっている。要件として、業務を止めることなく大切なデータを安全に保護すること、そして万一災害が発生した場合にも回復までにかかる時間を短縮することがある。
【０００３】
このような要件を満たすための技術のひとつに、複数のサーバと大型ディスクアレイ装置を用いて構成するＨＡ（Ｈｉｇｈ  Ａｖａｉｌａｂｉｌｉｔｙ：高可用性）クラスタがある。ＨＡクラスタ構成では、地震等の災害に備えて遠隔地にあるデータセンターでデータを２重化する。即ち、あるサイトに設置した大型ディスクアレイ装置のボリューム（ここではローカルボリューム或いは正ボリュームと呼ぶ）に格納されるデータを、遠隔地に設置した大型ディスクアレイ装置のボリューム（ここではリモートボリューム或いは副ボリュームと呼ぶ）にも格納する。このため、通常は、大型ディスクアレイ装置間を接続してホスト装置からの書込みデータを大型ディスクアレイ装置間で転送する方法を用いる。遠隔地にデータを転送してボリュームの複製を作成することをリモートコピーと言う。
【０００４】
大型ディスクアレイ装置間でデータを転送する方式には、大別すると同期転送方式と非同期転送方式の２種類がある。同期転送方式はデータを転送する度にそのデータの受領を示す情報を転送元が受け取る方式であり、比較的近距離でのデータの転送に適する。一方、非同期転送方式は受領応答を受けないままデータを一方的に転送するもので、遠距離でのデータの転送に適する。
【０００５】
特開２００３−９９３０６号公報で、一般的なＨＡクラスタでのリモートコピーについて論じている。
【０００６】
リモートコピーをバックアップの目的で使用するために、正ボリュームと副ボリュームが作るボリュームペアを複数まとめたグループに対して、ハードウェアの機能として、複数コピーペア間でのデータの一貫性を保証する機能がある。このグループをＣ／Ｔグループ（Ｃｏｎｓｉｓｔｅｎｃｙ  Ｔｉｍｅグループ）と呼ぶ。Ｃ／Ｔグループ単位でのリモートコピーは、ボリュームペアの形成、ペア状態のサスペンド（二重書きを停止し、正ボリュームにだけ書込みが行われるようにすること）、ペア状態の回復、ペア状態の削除等のグループ操作機能からなる。Ｃ／Ｔはデータの入力順序の一貫性を保証できる時刻を表し、通常は最近処理したレコードのタイムスタンプに相当する。
【０００７】
ペア状態のサスペンドを行うと副ボリュームへの書込みは停止し、副ボリュームのＣ／Ｔ時刻が凍結される。サスペンド中の正ボリュームに対する書込みは、サイドキャッシュファイルに保存され、ペア状態回復時に副ボリュームに反映する。そのため、正ボリュームのＣ／Ｔ時刻も副ボリュームのＣ／Ｔ時刻と一致して凍結される。
【０００８】
複数コピーペア間でのデータ一貫性を維持することによって、副側のコピーグループ内のファイルを計画的なサスペンド直前の状態や障害発生直前の状態で保全することができる。これによってコピーグループ単位のファイル回復処理時間を短縮できる。
【０００９】
【特許文献１】特開２００３−９９３０６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明ではコピーを行うボリュームペアの集合をコピーグループと呼び、Ｉ／Ｏの順序を保証する必要があるコピーグループをＣ／Ｔグループと定義する。
【００１１】
一般に、コピーグループを用いたリモートコピーについて、ハードウェアの仕組としてＣ／Ｔグループ単位の同期をとったサスペンドをハードウェアが保証している。
【００１２】
しかし、従来、複数のコピーグループに対して同期を取って一括サスペンドを行う処理には、いくつかの制約があった。
【００１３】
まず、データの入力順序の一貫性を保証することができる単位は、ロジカルボリュームのペアの単純な集合としてのコピーグループであった。
【００１４】
次に、サスペンド予約時刻がコマンド投入時刻に近すぎると、サスペンドのコマンドがＤＫＣ（ディスク制御装置）に到達する前にサスペンド予約時刻を経過してしまい、コマンドの実行を中止してサスペンド失敗となる可能性があるため、ある程度余裕を持って時刻を指定する必要があった。
【００１５】
また、コピーグループ内のボリュームペア数が多い場合に、一部のペアしかサスペンドしないでタイムアウトする可能性があった。
【００１６】
本発明の目的は、まずリモートコピーを行う過程で実行するペア状態のサスペンド処理において、データの入力順序の一貫性を保証できる単位を複数のコピーグループに拡張することである。加えて、時刻指定一括サスペンドが失敗した場合に、リトライすることで一括サスペンドを成功させることである。
【課題を解決するための手段】
【００１７】
上記の目的を達成するために以下のような手段を用いる。
【００１８】
本発明ではコピーグループの概念を拡張し、各グループごとのデータの一貫性を保証する従来のコピーグループの集合をコピーグループコンテナと呼ぶ。
【００１９】
本発明では、コピーグループは、ハードウェアの機能としてデータの入力順序の一貫性を保証できる単位であるＣ／Ｔグループに対してソフトウェアによる管理機能を付加したものと考える。
【００２０】
複数のＣ／Ｔグループ（ここではコピーグループ）を同期して一括でサスペンドするために、本発明で定義したコピーグループコンテナに対してサスペンド予約時刻を指定したサスペンド指示をホスト装置から出力する。
【００２１】
サスペンド予約時刻を経過して初めてのＩ／Ｏを発行するタイミングで、コピーグループ毎のサスペンド処理を開始する。サスペンド処理が終了した時刻をそれぞれのコピーグループのサスペンド終了時刻として記録する。
【００２２】
サスペンド処理はサスペンド予約時刻を過ぎて始まり、終了する時刻はコピーグループ間で概ね一致しないが、データの一貫性に着目すればサスペンド予約時刻を経過して初めてのＩ／Ｏ以降は正副ボリュームに対してデータの書込みを行わないため、データの入力順序の一貫性を保証する時刻であるＣ／Ｔ時刻はサスペンド予約時刻と一致する。
【００２３】
コピーグループ単位でＣ／Ｔ時刻をサスペンド予約時刻と比較することで一括サスペンドの成功／失敗を検知する。全てのＣ／Ｔ時刻がサスペンド予約時刻と一致すれば成功、ひとつでも一致しないコピーグループがあれば失敗とする。
【００２４】
失敗した場合はコピーグループ単位で一旦サスペンドを解除し、確実にＣ／Ｔ時刻を一致してサスペンド可能なサスペンド予約時刻を計算して再設定し、一括サスペンドを再実行する。
【００２５】
再実行可能な回数は上限を設けて、上限に達した場合はエラーとして終了する。
【発明の効果】
【００２６】
本発明によれば、ハードウェアの機能としてＣ／Ｔグループの単位でしか不可能であったサスペンドが、ソフトウェアの機能を用いて、複数のＣ／Ｔグループ間で同期をとってサスペンドすることができる。
【００２７】
また、何らかの理由で正常にサスペンドできなかった場合も、ほとんど確実にサスペンドが成功する時刻を指定し直してサスペンドを再実行することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施例を、図面を用いて詳細に説明する。
【００２９】
図１は本発明の計算機システムの全体構成を示す論理ブロック図である。
【００３０】
ホスト装置１０１ａは正側のホスト装置であり、ホスト装置１０１ｂと１０１ｃは副側のホスト装置である。それぞれのホスト装置では、コピー制御機能１０２とＡＰＰ機能（アプリケーション機能）１０３の２つのソフトウェアが動作する。本発明では、一括サスペンド指示を出す正側のホスト装置は、図１のように１台であることを前提とする。
【００３１】
１０４ａ、１０４ｂ、１０４ｃはそれぞれ正側ＤＫＣ（ディスク制御装置）であり、１０４ｄと１０４ｅは副側ＤＫＣである。ＤＫＣはディスクアレイを制御する装置であり、ホスト装置からのＩ／Ｏや各種命令に基づいてロジカルボリュームに対する入出力動作を行う。
【００３２】
１０５ａ、１０５ｂ、１０５ｄは、ＩＤが００のＣ／Ｔグループ群であり、合せて１０６ａのコピーグループＡを構成している。同等に、１０５ｃと１０５ｅは、ＩＤが１６のＣ／Ｔグループ群であり、合せて１０６ｂのコピーグループＢを構成している。
【００３３】
１０５ｆはＩＤが０１〜１５のＣ／Ｔグループ群であり、同じ正側ＤＫＣＩ１０４ａに属していてもコピーグループＡ１０６ａには属さない。よって、コピーグループコンテナ１０７としてデータの一貫性を保証する場合には対象外となるＣ／Ｔグループである。
【００３４】
即ち、コピーグループコンテナ１０７としてデータの入力順序の一貫性を保証する対象になるのはコピーグループＡ１０６ａとコピーグループＢ１０６ｂに属するＣ／Ｔグループのみである。
【００３５】
Ｃ／Ｔグループの中には、例えば１０８のようなロジカルボリュームがあり、正側ＤＫＣに属するロジカルボリュームと副側ＤＫＣに属するロジカルボリュームでペアを構成する。ペア１０９ａは、正側ＤＫＣＩ(１０４ａ)と副側ＤＫＣＩ(１０４ｄ)に属するロジカルボリューム同士のペアである。ペア１０９ｂは、正側ＤＫＣII(１０４ｂ)と副側ＤＫＣＩ(１０４ｄ)に属するロジカルボリューム同士のペアである。同様に、ペア１０９ｃは、正側ＤＫＣIII(１０４ｃ)と副側ＤＫＣII(１０４ｅ)に属するロジカルボリューム同士のペアである。図１の例ではそれぞれのペアはロジカルボリュームが１対１でペアを構成し、ペア間で重複するロジカルボリュームがない構成を想定している。よって、ペア１０９ａ、１０９ｂ、１０９ｃは全て３ペアずつの構成である。
【００３６】
１１０ａはコピーグループＡ１０６ａがデータの一貫性を保証してサスペンドし、Ｃ／Ｔ時刻がＴＡであることを示している。同様に、１１０ｂはコピーグループＢ１０６ｂのＣ／Ｔ時刻がＴＢであることを示している。
【００３７】
１１１のように一括サスペンドの予約時刻ＴＳとＣ／Ｔ時刻ＴＡ及びＴＢが一致すれば一括サスペンドは成功とし、ひとつでも一致しなければ失敗となる。
【００３８】
次に、コピー制御機能１０２の構成を、図１１の論理ブロック図を用いて説明する。
【００３９】
コピー制御機能１０２は、各ホスト装置の中で動作するソフトウェアである。
【００４０】
図１１の中の例えば直線１１０１のような線は、制御信号やデータの流れを示す。
【００４１】
コピー制御機能１０２の下位機能として、投入されたコマンドを解釈してリモートコピーを実現する各種処理を制御するコマンド解釈機能１１０２と、実際の処理を受け持つコピー実行機能１１０３がある。
【００４２】
コピー実行機能１１０３の中には、コピーグループ及びコピーグループコンテナを管理するコピーグループ／コピーグループコンテナ管理機能１１０４が有り、後述するコピーグループコンテナ及びコピーグループ管理テーブル１１０５、サスペンド処理状態テーブル１１０６、ＤＫＣ別コマンド受理状態テーブル１１０７の３つのテーブルを管理している。
【００４３】
図２は、図１の構成で一括サスペンドを行い、１回で成功した場合のタイムチャートである。
【００４４】
タイムチャートの横軸２０１は時間軸であり、ホスト装置１０１ａ、正側ＤＫＣＩ(１０４ａ)、正側ＤＫＣII(１０４ｂ)、正側ＤＫＣIII(１０４ｃ)、副側ＤＫＣＩ(１０４ｄ)、副側ＤＫＣＩ(１０４ｅ)それぞれの時間軸上で相互に作用する信号や処理を各種矢印で表現する。
【００４５】
時刻ＴＸ２０２はサスペンドコマンド投入時刻を表し、一括サスペンド予約時刻ＴＳ２０３をコマンドのオプションとして指定してコマンドを投入する。投入したコマンドはコマンド伝播線２０４で示すように正側ＤＫＣに伝播して行く。菱形で表現した時点が、コマンドが到達した時刻である。正側ＤＫＣII(１０４ｂ)へは、ハードウェアの機能によって同一のＣ／Ｔグループに属する正側ＤＫＣである正側ＤＫＣＩ(１０４ａ)を経由してコマンドが伝播する。
【００４６】
正側ＤＫＣは、コマンドが到達すると一点鎖線の矢印で表現した受理メッセージ２０５をホスト装置１０１ａに対して送信する。
【００４７】
ホスト装置１０１ａが、一括サスペンド予約時刻ＴＳ２０３を経過する前に全ての正側ＤＫＣからＤＫＣ側でのコマンドの受信時刻を含むコマンド受理メッセージ２０５を受信できたため、時刻ＴＳ２０３からそれぞれのコピーグループがサスペンド処理を開始する。ただし、実際の動作は、時刻ＴＳ２０３を過ぎて初めてのＩ／Ｏがホスト装置１０１ａから正側ＤＫＣに対して出された時刻にサスペンド処理を開始する。コピーグループＡ１０６ａはＷＲ(３)２０８ａのＩ／Ｏによってサスペンド処理を開始し、コピーグループＢ１０６ｂはＷＲ(４)２０８ｂのＩ／Ｏによってサスペンド処理を開始する。どちらもＩ／Ｏを副側に反映せず、サイドキャッシュファイル２１０にデータを格納する。
【００４８】
なお、一括サスペンド予約時刻ＴＳ２０３を経過した後で全ての正側ＤＫＣからＤＫＣ側でのコマンドの受信時刻を含むコマンド受理メッセージ２０５を受信した場合、コマンドの受信時刻を見て処理を続行することもでき、失敗とみなしてサスペンド処理の再実行を行うこともできる。
【００４９】
それぞれのコピーグループでサスペンド処理が終了したら、サスペンド終了通知２１１をホスト装置１０１ａに送信する。それぞれのコピーグループがサスペンド処理を終了した時刻はホスト装置１０１ａにサスペンド終了通知２１１が届いた時刻Ｔｉ（ｉ＝Ａ，Ｂ）となり、コピーグループＡ１０６ａのサスペンド処理終了時刻はＴＡ２１２ａ、コピーグループＢ１０６ｂのサスペンド処理終了時刻はＴＢ２１２ｂとなる。しかし、図２の場合はそれぞれのＣ／Ｔ時刻は一括サスペンド予約時刻ＴＳ２０３と一致する。
【００５０】
全てのサスペンド終了通知２１１をホスト装置１０１ａが受信したら、コピーグループコンテナ１０７の一括サスペンド処理が終了する。
【００５１】
ＷＲ(１)２０６はコマンド投入以前のＩ／Ｏであり、正側のロジカルボリュームのデータを副側のロジカルボリュームにコピーする。ＷＲ(２)２０７のＩ／Ｏは、正側ＤＫＣIII(１０４ｃ)に到達した時刻は一括サスペンド予約時刻ＴＳ２０３を過ぎているが、Ｉ／Ｏをホスト装置１０１ａから発行した時刻が時刻ＴＳ２０３以前であるため、サスペンド開始の契機となるＩ／Ｏとはみなさないでコピー処理を行う。なお、ＷＲ(２)２０７のようなＩ／Ｏにはホスト装置から出力されたときの時間が含まれているため、ＤＫＣ側では、この時刻と一括サスペンド予約時刻ＴＳ２０３とを比較することにより副側のロジカルボリュームへのデータのコピーの可否を判定できる。
【００５２】
ＷＲ(５)２０９は、サスペンド処理が正常終了した後のＩ／Ｏのため、Ｉ／Ｏを副側に反映せずサイドキャッシュファイル２１０に格納する。
【００５３】
サイドキャッシュファイル２１０に格納したＩ／Ｏは、ペア状態の再開処理時に各ロジカルボリュームに反映してペア状態に移行する。
【００５４】
図３は、図１の構成で一括サスペンドを行い、失敗した場合のタイムチャートである。
【００５５】
タイムチャートの横軸２０１、ホスト装置１０１ａ、正側ＤＫＣＩ(１０４ａ)、正側ＤＫＣII(１０４ｂ)、正側ＤＫＣIII(１０４ｃ)、副側ＤＫＣＩ(１０４ｄ)、副側ＤＫＣＩ(１０４ｅ)、時刻ＴＸ２０２、一括サスペンド予約時刻ＴＳ２０３、ＷＲ(１)２０６、ＷＲ(２)２０７は図２と同様である。
【００５６】
ＷＲ(３)３０１は、ホスト装置１０１ａから送信を開始した時刻が一括サスペンド予約時刻ＴＳ２０３を過ぎているにも関らず、Ｉ／Ｏが正側ＤＫＣIII(１０４ｃ)に到着した際にはまだコマンドが到着及び受理されていないため、コピー処理３０３のように普通に副側へ反映されてしまう。この時点でＣ／Ｔ時刻は一括サスペンド予約時刻ＴＳ２０３ではなく、ＷＲ(３)３０１がホスト装置１０１ａから送信を開始した時刻になってしまう。
【００５７】
その後、サスペンドコマンド伝播線３０２のようにして、コマンドが正側ＤＫＣIII(１０４ｃ)に大幅に遅れて到着し、コマンド受理通知３０４によってホスト装置１０１ａへコマンド到着時刻が通知され、サスペンドの失敗をホスト装置が検知する。ＴＥＲＲ３０５がサスペンド失敗検知時刻となる。なお、図２のＷＲ(４)、(５)のように一括サスペンド予約時刻ＴＳ２０３を過ぎて出力されたＩ／Ｏがサスペンドコマンド到着後にＤＫＣ側に到着した場合、サスペンド処理は行われない。
【００５８】
上記の図２及び３の説明から、サスペンドコマンドが一括サスペンド予約時刻ＴＳ２０３後にＤＫＣ側に到達し、その到達時刻以前に、予約時刻ＴＳ以降にホスト装置１０１ａから送信されたＩ／ＯがＤＫＣ側に到達した場合、サスペンド処理は失敗とみなされる。
【００５９】
コピーグループコンテナを構成するコピーグループのうちたったひとつでもサスペンドの失敗を検知したら、一括サスペンド処理は失敗となる。
【００６０】
本発明では、成功するまで特定の回数を上限として一括サスペンド処理の再実行を試みる。その際、一括サスペンド予約時刻ＴＳ２０３を、一括サスペンド処理をほとんど確実に成功できるであろう時刻に自動設定してコマンドを再投入する。
【００６１】
図４は、新たに自動設定する一括サスペンド再予約時刻ＴＳ２４０１の根拠となるタイムチャートである。
【００６２】
タイムチャートの横軸２０１、ホスト装置１０１ａ、正側ＤＫＣＩ(１０４ａ)、正側ＤＫＣII(１０４ｂ)、正側ＤＫＣIII(１０４ｃ)、副側ＤＫＣＩ(１０４ｄ)、副側ＤＫＣＩ(１０４ｅ)、時刻ＴＸ２０２、一括サスペンド予約時刻ＴＳ２０３は図２と同様である。
【００６３】
コピーグループＡ１０６ａに属する正側ＤＫＣへのサスペンドコマンド伝播線４０２に従ってコマンドが到着する時刻４０３は、一括サスペンド予約時刻ＴＳ２０３よりも以前の時刻であるため、コピーグループＡ１０６ａは成功裏にサスペンドを終了すると想定する。
【００６４】
それに対してコピーグループＢ１０６ｂは、正側ＤＫＣIII(１０４ｃ)にサスペンドコマンド伝播線３０２に従って時刻４０４にコマンドが到着する。時刻４０４は一括サスペンド予約時刻ＴＳ２０３以後の時刻であるため、コピーグループＢ１０６ｂはサスペンド処理を失敗する。
【００６５】
コマンド受理通知３０４によってサスペンドコマンドが大幅に遅れて到着したことを検知したホスト装置１０１ａは、全ての正側ＤＫＣからの通知が出揃ったタイミングで失敗を検知し、サスペンドコマンドの再実行の準備を開始する。
【００６６】
失敗の検知からサスペンドコマンド再投入までの所要時間ＴＬＯＳＳ４０５は、各コピーグループのサスペンド成功／失敗を全て検知しサスペンドが成功したコピーグループのサスペンド状態を解除して、一括サスペンド再予約時刻ＴＳ２４０１を算出するために費やされた時間である。
【００６７】
時刻ＴＸ２４０６は、一括サスペンド再予約時刻ＴＳ２４０１を指定して一括サスペンドコマンドを再投入する時刻であるが、時刻ＴＸ２４０６から時刻ＴＳ２４０１までの時間には以下の時間要素を含む。
【００６８】
即ち、各コピーグループがコマンド投入からサスペンド処理終了をホスト装置に通知するまでに要した時間とコマンド投入からサスペンド失敗をホスト装置に通知するまでに要した時間の最長時間に安全係数ＮＳＣ４０９を乗じた時間要素４０７。そして、さらに安全のために確保する冗長時間ＴＲＤＤ４０８である。
【００６９】
安全係数ＮＳＣ４０９と冗長時間ＴＲＤＤ４０８はユーザが指定する。また、それぞれ最適値を決める方法として図８のフローチャートに示すように、今まで指定した値を履歴として保持し、最大値をデフォルト値として自動設定する機能を使用しても良い。
【００７０】
まず、安全係数がユーザから指定されたかどうかを判定する（ステップ８０１）。
【００７１】
指定されていれば、その値を使用する（ステップ８０２）。指定されていなければ、履歴の中の最大値を使用する（ステップ８０３）。初期値は１．０である。
【００７２】
安全係数の指定された値が履歴の中の最大値よりも大きいかどうか判定する（ステップ８０４）。
【００７３】
最大値よりも大きい値が指定された場合は、安全係数の履歴の最大値を更新する（ステップ８０５）。
【００７４】
次に、冗長時間がユーザから指定されたかどうかを判定する（ステップ８０６）。
【００７５】
指定されていれば、その値を使用する（ステップ８０７）。指定されていなければ、履歴の中の最大値を使用する（ステップ８０８）。初期値は０．０である。
【００７６】
冗長時間の指定された値が履歴の中の最大値よりも大きいかどうか判定する（ステップ８０９）。
【００７７】
最大値よりも大きい値が指定された場合は、冗長時間の履歴の最大値を更新する（ステップ８１０）。
【００７８】
一括サスペンド再予約時刻ＴＳ２４０１を算出する一般式を図１２の数１に示す。数１の中でｉはコピーグループを識別する添字であり、便宜上具体的な値はＡ、Ｂ、Ｃ、・・・とする。
【００７９】
第一項ｍａｘ  Ｔｉ１２０１は、各コピーグループ単位で行うサスペンド終了通知が終了する時刻とサスペンド失敗通知が終了する時刻の中で最遅の時刻を表す。例えば図３の場合は、それぞれのコピーグループがサスペンド処理を開始する前にサスペンド処理の失敗を検知する場合のためＴＥＲＲ３０５が該当する可能性が非常に高い。
【００８０】
第２項のＴＬＯＳＳ４０５を加えたｍａｘ  Ｔｉ  ＋  ＴＬＯＳＳ４０６は、一括サスペンドコマンド再投入時刻ＴＸ２４０６と等しい。第３項は前述の時間要素４０７であり、第４項は冗長時間ＴＲＤＤ４０８である。
【００８１】
ｍａｘ  Ｔｉ１２０１と時間要素４０７に関しては、サスペンドコマンドの受理後にホスト装置から送信される初めてのＩ／Ｏが長時間に渡って出ないコピーグループが存在した場合は共に値が大きくなるため、一括サスペンド再予約時刻ＴＳ２４０１が不必要に遅延することが予想できる。
【００８２】
これはサスペンドコマンドの再実行が確実に成功する確率を可能な限り高くするため、必要な冗長性である。ただし、サスペンド処理を開始してから終了するまでの時間が運用に耐えない程の長時間である場合は、適当な時間でサスペンド処理を打ち切ってタイムアウトとする。
【００８３】
次に、図５のフローチャートを用いて、ホスト装置が行う処理を説明する。
【００８４】
ホスト装置から一括サスペンド予約時刻を指定してサスペンドコマンドを投入する（ステップ５０１）。
【００８５】
コマンドが各コピーグループに属する正側ＤＫＣに到着すると、コマンドを受理した正側ＤＫＣは到着時刻をコマンド受理通知としてホスト装置に送信する。
【００８６】
ホスト装置は、各ＤＫＣからのコマンド受理通知を待つ（ステップ５０２）。
【００８７】
コマンド受理通知が届いたら、図７に示すＤＫＣ別コマンド受理状態テーブルを更新し（ステップ５０３）、図６に示すサスペンド処理状態テーブルを更新する（ステップ５０４）。
【００８８】
当該コピーグループのコマンド受理通知が全部出揃うまでステップ５０２〜５０４を繰返す（ステップ５０５）。一括サスペンド再予約時刻ＴＳ２４０１が設定されるまでの間，新たなＩ／Ｏは、図２のＷＲ(３)〜(５)のように、データはコピーされずにサイドキャッシュに保持される。
【００８９】
図６のサスペンド処理状態テーブルは、コピーグループＩＤ６０１、コマンド投入時刻ＴＸ６０２、サスペンド予約時刻ＴＳ６０３、サスペンド終了時刻Ｔｉ６０４、正側ＤＫＣ番号６０５、コマンド受理通知受信ＤＫＣ６０６、サスペンド成功／失敗通知６０７、リトライカウント６０８で構成する。
【００９０】
図７のＤＫＣ別コマンド受理状態テーブルは、コピーグループＩＤ６０１、ＤＫＣ番号７０１、サスペンドコマンド受理時刻７０２、受理状態フラグ７０３で構成する。
【００９１】
サスペンドコマンドを再実行している時の各テーブルの内容は、リトライカウント６０８が異なるだけでほとんどは再設定した値が入っている。例えば、コマンド投入時刻ＴＸ６０２には一括サスペンドコマンド再投入時刻ＴＸ２４０６が入っており、サスペンド予約時刻ＴＳ６０３には一括サスペンド再予約時刻ＴＳ２４０１が入っている。
【００９２】
当該コピーグループのコマンド受理通知が全部出揃ったら、その中にひとつでも受理異常の通知が含まれているか調べる（ステップ５０６）。即ち、ＤＫＣ別コマンド受理状態テーブルの受理状態フラグ７０３が異常となっているか調べ、異常であれば一括サスペンドが失敗したこととしてステップ５０９へ進む。
【００９３】
受理異常の通知がひとつもなければ、各ＤＫＣからサスペンド結果通知が出揃うのを待つ（ステップ５０７）。
【００９４】
サスペンド結果通知が全て成功であれば、一括サスペンドは成功として終了する（ステップ５０８）。ひとつでもサスペンド結果通知に失敗が含まれていれば、一括サスペンドが失敗したこととしてステップ５０９へ進む。
【００９５】
ステップ５０９ではサスペンドの失敗状態を判定し、致命的な失敗で再実行しても正常処理に戻ることができない場合は、その旨のエラーメッセージを表示して終了する（ステップ５１０）。致命的な失敗としては、例えば、ＤＫＣのサイドキャッシュが満杯で再実行ができない場合、時期を逸してアプリケーション（ＡＰ）としては再設定しても意味がない場合などがある。
【００９６】
再実行すれば回復できそうな失敗の場合は、サスペンド処理状態テーブルのリトライカウント６０８を調べてリトライの回数を判定して上限の回数に達していなければ再実行を続行し（ステップ５１１）、上限を超えていればその旨のエラーメッセージを表示して終了する（ステップ５１０）。
【００９７】
一括サスペンドコマンドを再実行する場合は、エラーメッセージを表示（ステップ５１２）してサスペンド状態にあるペアがあればこの状態を解除する（ステップ５１３）。
【００９８】
数１によって、再指定するサスペンド予約時刻を計算する（ステップ５１４）。
【００９９】
サスペンド処理状態テーブルのリトライカウント６０８を１増やす（ステップ５１５）。
【０１００】
計算したサスペンド予約時刻を指定して一括サスペンドコマンドを再実行する（ステップ５０１）。
【０１０１】
図９に、図１で示したコピーグループコンテナ１０７の中にコピーグループがいくつか存在する構成を管理するためのテーブル構成の例を示す。
【０１０２】
コピーグループの集合としてコピーグループコンテナを扱う構成の場合、コピーグループコンテナＩＤ９０１の中に存在するコピーグループを、コピーグループＩＤ９０２としてテーブルに登録する。それぞれのコピーグループが下位要素として持っているロジカルボリュームのペアは、コピーグループ単位の所属ペア９０３としてテーブルに登録する。
【０１０３】
コピーグループ単位の状態は、コピーグループステータス９０４として参照できる。
【０１０４】
図１０にサスペンドコマンドの実行例を示す。
【０１０５】
ＲＥＡＤＹ１００１はコマンドプロンプトである。
【０１０６】
ＳＵＳＰＥＮＤコマンドの第一引数１００２は、コピーグループコンテナ名である。
【０１０７】
第２引数ＡＴＴＩＭＥ１００３でサスペンド予約時刻を指定している。第３引数ＮＳＣ１００４で、安全係数を指定している。第４引数ＴＲＤＤ１００５で冗長時間を指定している。
【０１０８】
第５引数ＲＴＹＭＡＸ１００６は、サスペンドコマンドのリトライ回数の上限値である。
【０１０９】
コマンドを投入すると、現在時刻１００７とサスペンド予約時刻１００８を表示して、サスペンド実行待ち１００９になる。
【０１１０】
サスペンド予約時刻を過ぎてサスペンドが始まると、現在時刻１０１０を表示してコピーグループ毎にサスペンドの処理経過１０１１を表示する。この例では、ＣｏｐｙＧｒｏｕｐ２がサスペンドに失敗して、エラーメッセージ１０１２を表示した。
【０１１１】
これで一括サスペンドの失敗を検知した状態となり、ユーザに即時サスペンドかリトライかを選択させるメニュー１０１３を表示する。
【０１１２】
「２」を入力してリトライ１０１４を選択すると、サスペンド予約時刻を計算して現在時刻と計算結果１０１５を表示する。
【０１１３】
それで良ければＯＫと入力してＥｎｔｅｒキーを押下するが、妥当でない場合はこの例のように予約時刻１０１６を再入力する。
【０１１４】
これでサスペンドコマンドが再投入されてサスペンド実行待ち１００９になる。
【０１１５】
以下、ステップ１０１０以下の処理を繰返す。
【０１１６】
以上に述べた本発明の処理方法を実行するためのプログラムを計算機で読み取り可能な記憶媒体に格納し，このプログラムをメモリに読み込んで実行することもできる。
【図面の簡単な説明】
【０１１７】
【図１】本発明の計算機システムの全体構成を示す論理ブロック図である。
【図２】図１の構成で一括サスペンドを行い、成功した場合のタイムチャートである。
【図３】図１の構成で一括サスペンドを行い、失敗した場合のタイムチャートである。
【図４】一括サスペンド再予約時刻の算出方法を説明するタイムチャートである。
【図５】ホスト装置のコピー制御機能が行う処理を説明するフローチャートである。
【図６】サスペンドの処理状態を保持するテーブル構造を説明する表である。
【図７】ＤＫＣ別にコマンド受理状態を保持するテーブル構造を説明する表である。
【図８】安全係数と冗長時間の指定値の扱いを説明するフローチャートである。
【図９】コピーグループコンテナの管理を行うためのテーブル構造を説明する表である。
【図１０】サスペンドコマンドの実行例を表す図である。
【図１１】コピー制御機能の構成を示す論理ブロック図である。
【図１２】一括サスペンド再実行時に指定するサスペンド予約時刻を算出する式である。
【符号の説明】
【０１１８】
１０１ａ  正側のホスト装置
１０１ｂ  副側のホスト装置
１０１ｃ  副側のホスト装置
１０２    コピー制御機能
１０３    ＡＰＰ機能（アプリケーション機能）
１０４ａ  正側ＤＫＣ（ディスク制御装置）
１０４ｂ  正側ＤＫＣ（ディスク制御装置）
１０４ｃ  正側ＤＫＣ（ディスク制御装置）
１０４ｄ  副側ＤＫＣ（ディスク制御装置）
１０４ｅ  副側ＤＫＣ（ディスク制御装置）
１０５ａ  ＩＤが００のＣ／Ｔグループ群
１０５ｂ  ＩＤが００のＣ／Ｔグループ群
１０５ｃ  ＩＤが１６のＣ／Ｔグループ群
１０５ｄ  ＩＤが００のＣ／Ｔグループ群
１０５ｅ  ＩＤが１６のＣ／Ｔグループ群
１０５ｆ  ＩＤが０１〜１５のＣ／Ｔグループ群
１０６ａ  コピーグループＡ
１０６ｂ  コピーグループＢ
１０７    コピーグループコンテナ
１０８    ロジカルボリューム
１０９ａ  ロジカルボリュームのペア
１０９ｂ  ロジカルボリュームのペア
１０９ｃ  ロジカルボリュームのペア
１１０ａ  コピーグループＡのＣ／Ｔ時刻ＴＡ
１１０ｂ  コピーグループＢのＣ／Ｔ時刻ＴＢ
１１１    サスペンド成功／失敗の条件
【図１】
2005202532.tif 000003
【図２】
2005202532.tif 000004
【図３】
2005202532.tif 000005
【図４】
2005202532.tif 000006
【図５】
2005202532.tif 000007
【図６】
2005202532.tif 000008
【図７】
2005202532.tif 000009
【図８】
2005202532.tif 000010
【図９】
2005202532.tif 000011
【図１０】
2005202532.tif 000012
【図１１】
2005202532.tif 000013
【図１２】
2005202532.tif 000014