(57)【要約】      （修正有）【課題】リモートＤＫＣコマンドの伝達経路の定義と制御を自動化することで、ユーザがホストコマンドやスクリプトの記述や書き換えに要する手間を削減する。【解決手段】ストレージ制御装置に形成されるボリュームのリモートコピーを行うリモートコピー制御方法において、ストレージ装置ＤＴに対するコマンドの伝達経路となる中継用のストレージ装置ＤＩの識別子と、ストレージ装置ＤＩのうちホスト計算機に接続されたストレージ装置ＤＰの識別子を判別する情報とを登録したルート情報を含むルートリストからストレージ装置ＤＴの識別子を含むルート情報を検索し、このルート情報で表されるストレージ装置ＤＰの識別子を求めるステップと、求められた識別子に対応するストレージ装置ＤＰに対して、ストレージ装置ＤＩの識別子とストレージ装置ＤＴの識別子とを入力情報に含んだボリュームＶＴのリモートコピーコマンドを発行するステップとを有する。【選択図】  図２
2005182130.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ装置に形成されるボリュームのリモートコピーを行うリモートコピー制御方法において、
該ストレージ装置の少なくとも１つに接続されたホスト計算機に対するストレージ装置内のリモートコピー対象のボリューム・ペアのコピー元またはコピー先のボリュームＶＴの識別子と、該ボリュームＶＴが属するストレージ装置ＤＴの識別子とを登録したボリュームペアリストから、該ボリュームＶＴが属するストレージ装置ＤＴの識別子を求めるステップと、
該ストレージ装置ＤＴに対するコマンドの伝達経路となる中継用のストレージ装置ＤＩの識別子と、該ストレージ装置ＤＩのうち該ホスト計算機に接続されたストレージ装置ＤＰの識別子を判別する情報とを登録したルート情報を含むルートリストからストレージ装置ＤＴの識別子を含むルート情報を検索し、該ルート情報で表されるストレージ装置ＤＰの識別子を求めるステップと、
求められた該識別子に対応する該ストレージ装置ＤＰに対して、該ストレージ装置ＤＩの識別子と該ストレージ装置ＤＴの識別子とを入力情報に含んだ該ボリュームＶＴのリモートコピーコマンドを発行するステップと、
を有することを特徴とするリモートコピー制御方法。
【請求項２】
請求項１記載の制御方法において、
該ストレージ装置ＤＰからリモートコピーコマンドのエラー情報を受信するステップと、
該ルートリストを検索して、該ストレージ装置ＤＴの識別子を含み、かつエラー情報を受信したルート情報とは異なるルート情報に表される、コマンドの伝達経路となる中継用のストレージ装置ＥＩの識別子と、ストレージ装置ＥＩのうち該ホスト計算機に接続されたストレージ装置ＥＰの識別子とを求めるステップと、
該ストレージ装置ＥＰに対して、ストレージ装置ＥＩの識別子と該ストレージ装置ＤＴの識別子とを入力情報に含んだ該ボリュームＶＴのリモートコピーコマンドを発行するステップと、
を含むことを特徴とするリモートコピー制御方法。
【請求項３】
請求項２記載の制御方法において、
前記ルートリスト内のルート情報に優先順位を設定するステップと、
エラー情報を受信したときのルート情報に設定された優先順位を下げるステップと、
を含むことを特徴とするリモートコピー制御方法。
【請求項４】
請求項１記載の制御方法において、
該ホスト計算機を一意に識別するホスト識別子を取得するステップと、
該ルート情報に該ホスト識別子を付加するステップと、
該ルート情報に付加されたホスト識別子と該ホスト計算機のホスト識別子が一致しないルート情報を該ルートリストから削除するステップと、
を含むことを特徴とするリモートコピー制御方法。
【請求項５】
請求項１記載の制御方法において、
該ボリュームＶＴの正副属性を該ストレージ装置ＤＴに問い合わせるステップと、
該ボリュームＶＴの正副属性とホストコマンドが必要とする正副属性が一致しないとき、該ボリュームＶＴとペアになっているボリュームＶＳを前記ボリュームペアリストから求めるステップと、
該ボリュームＶＳが属する該ストレージ装置に対してリモートコピーコマンドを発行するステップと、
を含むことを特徴とするリモートコピー制御方法。
【請求項６】
複数のディスク制御装置に形成されるボリュームに対するコマンドの転送において、
ディスク制御装置の少なくとも１つに接続されたホスト計算機に対するホストコマンドの識別子から識別される、ディスク制御装置内のリモートコピー対象のボリューム・ペアのコピー元またはコピー先のボリュームＶＴの識別子と該ボリュームＶＴが含まれるディスク制御装置ＤＴの識別子とを登録したボリュームペアリストから、異なるディスク制御装置の識別子を抽出するステップと、
抽出されたディスク制御装置の識別子の中で該ホスト計算機からコマンドを直接投入できるディスク制御装置Ｄ１を求めるステップと、
該ボリュームペアリストに含まれるボリューム・ペアとなるディスク制御装置の識別子Ｓと識別子Ｄとの少なくとも一方が他のペアと異なるペアのディスク制御装置の識別子の組から構成されるＤＫＣパスリストを作成するステップと、
該ＤＫＣパスリストから、識別子Ｄ１を含む組を求めるステップと、
該ホスト計算機の識別子と、該識別子Ｄ１と、該識別子Ｄ１を含む組に含まれる識別子Ｄ１とは異なるディスク制御装置の識別子Ｄ２とを含むルート情報を含んだルートリストを作成するステップと、
を有することを特徴とするディスク制御装置のコマンドパス制御方法。
【請求項７】
請求項６記載のコマンドパス制御方法において、
該ディスク制御装置を含む組に含まれる前記該ディスク制御装置Ｄ１とは異なるディスク制御装置Ｄ２から、異なるディスク制御装置を経由してリモートコピーコマンドを受信できるかどうかを識別する情報を取得するステップと、
受信可能な場合のみ該ディスク制御装置Ｄ２の識別子を含むルート情報をルートリストに追加するステップと、
を含むことを特徴とするディスク制御装置のコマンドパス制御方法。
【請求項８】
請求項６記載のコマンドパス制御方法において、
前記ホスト計算機ＨＰから、指定されたすべての前記ボリュームペアリストに含まれるディスク制御装置Ｄの識別子を抽出するステップと、
該ディスク制御装置Ｄの識別子のリストを、該ホスト計算機ＨＰを含むすべてのホスト計算機ＨＲに転送するステップと、
すべての前記該ディスク制御装置Ｄに対してリモートコピーコマンドを発行し、成功したディスク制御装置Ｄ１の識別子とリモートコピーコマンドを発行したホスト計算機ＨＲの識別子とを該ホスト計算機ＨＰに転送するステップと、
転送された該ディスク制御装置Ｄ１の識別子と該ホスト計算機ＨＲの識別子とを含むホストパスリストを作成するステップと、
を含むことを特徴とするコマンドパス制御方法。
【請求項９】
請求項６記載のコマンドパス制御方法において、
該ホスト計算機を一意に識別するホスト識別子と、該ホスト計算機からコマンドを直接投入できるディスク制御装置ＤＰの識別子との組を１つ乃至複数含んだホストパスリストに含まれる該ディスク制御装置ＤＰの識別子をすべて求めるステップと、
該該ディスク制御装置ＤＰの論理パス情報ＰＰを取得するステップと、
該論理パス情報ＰＰに含まれるディスク制御装置ＤＩの識別子を抽出するステップと、
該ディスク制御装置ＤＰの識別子と該ディスク制御装置ＤＩの識別子とを含むルート情報を生成するステップと、
該ディスク制御装置ＤＩの論理パス情報ＰＩを取得するステップと、
該論理パス情報ＰＩに含まれるディスク制御装置ＤＴの識別子を抽出するステップと、
該ルート情報に、該ディスク制御装置ＤＴの識別子を付加するステップと、
を含むことを特徴とするコマンドパス制御方法。
【請求項１０】
請求項１記載のリモートコピー制御方法において、
指定されたボリュームペアリストに含まれるボリューム・ペアのコピー先のボリュームＶＴの識別子とボリュームＶＴが属するストレージ装置装置ＤＴをすべて複写したボリュームペアリストを作成するステップと、
ボリュームＶＴとペアになるボリュームＶＳの識別子と、ボリュームＶＳが属するストレージ装置ＶＴを取り込むステップと
を含むことを特徴とするリモートコピー制御方法。
【請求項１１】
請求項１記載のリモートコピー制御方法において、
該ストレージ装置の少なくとも１つに接続されたホスト計算機に対するホストコマンドのオペランドに記載された識別子から識別される、該ストレージ装置内のリモートコピー対象ボリューム・ペアのコピー元またはコピー先のボリュームＶＴの識別子と該ボリュームＶＴが属するアダプタＡＴの識別子とを登録したボリュームペアリストから、少なくとも一方のアダプタＡＴの識別子が異なるボリューム・ペアをすべて抽出するステップと、
抽出されたボリューム・ペアに含まれるアダプタ間の論理パスを形成するコマンドを発行するステップと、
を含むことを特徴とするリモートコピー制御方法。
【請求項１２】
ディスク制御装置内のボリュームに対するコマンドの伝達方法において、
該ディスク制御装置内のリモートコピー対象ボリューム・ペアのコピー元またはコピー先のボリュームＶＴの識別子とボリュームＶＴが属するアダプタＡＴの識別子とを１つ乃至複数登録した、指定されたすべてのボリュームペアリストから、少なくとも一方のアダプタＡＴの識別子が異なるボリューム・ペアをすべて抽出するステップと、
抽出した前記ボリューム・ペアに含まれる２つのアダプタ間の論理パスを形成するコマンドを発行するステップと、
を含むことを特徴とするコマンドの伝達方法。
【請求項１３】
ディスク制御装置内のボリュームに対するコマンドの伝達方法において、
ディスク制御装置ＤＰと論理パスのあるディスク制御装置ＤＩに対してディスク制御装置ＤＰの識別子を含むルート情報ＲＰを送信するステップと、
該ルート情報ＲＰを受信したディスク制御装置ＤＩにおいて、該ルート情報ＲＰにディスク制御装置ＤＩの識別子を付加したルート情報ＲＩをディスク制御装置ＤＰに送信するステップと、
該ルート情報ＲＩを受信した該ディスク制御装置ＤＰにおいて、該ルート情報を該ディスク制御装置ＤＰ内のルートリストに付加するステップと、
を含むことを特徴とするコマンドの伝達方法。
【請求項１４】
ストレージ装置内のボリュームに対するコマンドの制御方法において、
ストレージ装置内のリモートコピー対象のボリューム・ペアのコピー元またはコピー先のボリュームＶＴの識別子を登録するボリュームペアリストを参照して、該ボリュームＶＴが属するストレージ装置ＤＴの識別子を求めるステップと、
ホスト計算機に接続されたストレージ装置ＤＰの識別子を登録するホストパスリストからストレージ装置ＤＰの識別子を求めるステップと、
ストレージ装置ＤＰに対して、該ストレージ装置ＤＴの識別子を入力情報に含んだボリュームＶＴのリモートコピーコマンドを発行するステップと、
該リモートコピーコマンドを受信したストレージ装置ＤＣの識別子と識別子ＤＴとが一致しない場合に、ストレージ装置ＤＣからリモートコピーコマンドを転送可能なストレージ装置ＤＩの識別子のルート情報を登録したルートリストから該識別子ＤＴを含むルート情報を求め、該ルート情報で表されるストレージ装置ＤＩにリモートコピーコマンドを転送するステップと、
を含むことを特徴とするコマンドの制御方法。
【請求項１５】
転送機能付きリモートコピーコマンドを受信するステップと、
ディスク制御装置ＤＣからリモートコピーコマンドを転送できるディスク制御装置ＤＩの識別子のルートを表すルート情報を保持するステップと、
ディスク制御装置ＤＣの識別子とリモートコピーコマンドの転送先となるボリュームが含まれるディスク制御装置ＤＴとを照合するステップと、
該ルート情報からリモートコピーコマンドの転送先となるボリュームが含まれるディスク制御装置ＤＴの識別子を含むルート情報を求めるステップと、
該ルート情報で表されるディスク制御装置ＤＩにリモートコピーコマンドを転送するステップと、
を有することを特徴とするディスク制御装置のコマンドパスの制御方法。
【請求項１６】
ホスト計算機から送られるコマンドを処理すると共に、ホスト計算機で利用されるデータを記憶するボリュームを備えた複数のストレージ装置を有し、該ストレージ装置間を接続してボリュームのリモートコピーを行うストレージシステムにおいて、
リモートコピーのコピー元またはコピー先のボリュームＶＴの識別子と、該ボリュームＶＴが属するストレージ装置ＤＴの識別子とを保持するボリュームペアリスト、及び
該ホスト計算機の識別子と、該ストレージ装置ＤＴの識別子と、該ホスト計算機から該ストレージ装置ＤＴへのコマンドの伝達経路となる中継用のストレージ装置ＤＩの識別子と、該ストレージ装置ＤＩのうち前記ホスト計算機に接続された該ストレージ装置ＤＰの識別子を判別する情報とを含むルート情報を保持するルートリストを格納する記憶装置と、
該ボリュームペアリストを参照してボリュームＶＴを含むストレージ装置ＤＴの識別子を取得する手段と、
該ルートリストを参照して該ストレージ装置ＤＴを含むルート情報を探し、該ルート情報に含まれる該ストレージ装置ＤＰの識別子を取得する手段と、
取得された識別子に関連する該ストレージ装置ＤＰに対して、該ストレージ装置ＤＴ内のボリュームＶＴのリモートコピーを要求する手段と、
を有するストレージシステム。
【請求項１７】
該ホスト計算機は、前記記憶装置及び処理装置を有し、該記憶装置は更に前記識別子の取得手段を実現するためのプログラムを格納し、かつ該処理装置で該プログラムを実行することにより前記取得手段を実現することを特徴とする請求項１６記載のストレージシステム。
【請求項１８】
前記ボリュームペアリストは、該ホスト計算機が有する記憶装置に格納され、前記ルートリストは、少なくとも該ストレージ装置ＤＴが有する記憶装置に格納され、かつ、
中継用の該ストレージ装置ＤＩは、リモートコピーを要求するコマンドを受け、該ストレージ装置ＤＰに転送する手段を有することを特徴とする請求項１６記載のストレージシステム。
【請求項１９】
ホスト計算機で利用されるデータを記憶するボリュームを備えた複数のストレージ装置を接続してボリュームのリモートコピーを行うリモートコピー制御方法において、
リモートコピーのコピー元またはコピー先のボリュームＶＴの識別子と、該ボリュームＶＴが属するストレージ装置ＤＴの識別子とを登録するボリュームペアリストを主記憶措置にロードするステップと、
該ホスト計算機の識別子と、該ストレージ装置ＤＴの識別子と、該ホスト計算機から該ストレージ装置ＤＴへのコマンドの伝達経路となる中継用のストレージ装置ＤＩの識別子と、該ストレージ装置ＤＩのうち前記ホスト計算機に接続された該ストレージ装置ＤＰの識別子を判別する情報とを含むルート情報を保持するルートリストを主記憶装置にロードするステップと、
該ボリュームペアリストを参照してボリュームＶＴを含むストレージ装置ＤＴの識別子を取得するステップと、
該ルートリストを参照して該ストレージ装置ＤＴを含むルート情報を探し、該ルート情報に含まれる該ストレージ装置ＤＰの識別子を取得するステップと、
取得された識別子に関連する該ストレージ装置ＤＰに対して、該ストレージ装置ＤＴ内のボリュームＶＴのリモートコピーするコマンドを発行するステップと、
を有するリモートコピー制御方法。
【請求項２０】
ホスト計算機で処理されるデータを記憶するボリュームを備える複数のディスク制御装置を接続してボリュームのリモートコピーを行うためのコマンドを転送する方法において、
ディスク制御装置の少なくとも１つに接続されたホスト計算機に対するホストコマンドの識別子から識別される、ディスク制御装置内のリモートコピー対象となるボリューム・ペアのコピー元またはコピー先のボリュームＶＴの識別子と該ボリュームＶＴが含まれるディスク制御装置ＤＴの識別子とを含むボリュームペアリストをメモリ内に用意するステップと、
該ボリュームペアリストから、異なるディスク制御装置の識別子を抽出し、抽出されたディスク制御装置の識別子の中で該ホスト計算機からコマンドを直接投入できるディスク制御装置Ｄ１を求めるステップと、
該ボリュームペアリストに含まれるボリューム・ペアとなるディスク制御装置の識別子Ｓと識別子Ｄとの少なくとも一方が他のペアと異なるペアのディスク制御装置の識別子の組から構成されるＤＫＣパスリストをメモリ内に用意するステップと、
該ＤＫＣパスリストから、識別子Ｄ１を含む組を求めるステップと、
該ホスト計算機の識別子と、該識別子Ｄ１と、該識別子Ｄ１を含む組に含まれる識別子Ｄ１とは異なるディスク制御装置の識別子Ｄ２とを含むルート情報を含んだルートリストをメモリ内に用意するステップと、
該ルートリストを参照して該ディスク制御装置ＤＴを含むルート情報を探し、該ルート情報に含まれるコピー先となる該ディスク制御装置ＤＰの識別子を取得するステップと、
取得された識別子に関連する該ディスク制御装置ＤＰに対して、該ディスク制御装置ＤＴ内のボリュームＶＴのリモートコピーコマンドを送るステップと、
を有するリモートコピーコマンドの転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リモートコピー制御方法に係り、特にホスト計算機（単にホストという）を介さず、ストレージ装置間でデータを二重化するリモートコピー機能に関する。更に詳しく言うと、３サイト以上に設置されたディスク制御装置（ＤＫＣ：Disk Controller）間のリモートコピーにおいて、ホストからの直接的なパスが無いディスク制御装置に対するコマンドの伝達経路の定義、及び制御方法に関する。
【背景技術】
【０００２】
ストレージ装置のボリュームに格納されたデータを災害等から守るため、距離の離れたディスク制御装置にボリュームの複製を保持し、同期または非同期にて更新データを転送するリモートコピー技術が知られている。
【０００３】
例えば、特開２００３−１２２５０９公報(特許文献１)や特表２００２−５４２５２６公報（特許文献２）には、災害時のリスク低減や通信路の必要バンド幅を抑える目的で、３つのディスク制御装置をカスケード接続し、データの複製を維持する方法が開示されている。各ディスク制御装置に対してホストがあるとは限らず、ネットワーク障害やホスト障害の可能性のあるホスト経由よりディスク制御装置間の通信回線を通じてリモートコピーや状態取得を行う方が信頼性の点で有利であるため、ホストからディスク制御装置間の通信回線を通じて更新データを転送するマルチホップ方式が開示されている。
【０００４】
【特許文献１】特開２００３−１２２５０９公報
【０００５】
【特許文献２】特表２００２−５４２５２６公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記の従来技術によれば、ホストから他のディスク制御装置を経由した、ボリューム・ペアに対するリモートコピー操作内容を記述したＤＫＣに対するコマンド（リモートＤＫＣコマンド）を発行するためには、ホストコマンドのオペランドに経路であるマルチホップリストを記述しなければならない。このため、ディスク制御装置間やディスク制御装置とホスト間の接続構成が変更された場合、ホストコマンドを記述したすべてのファイルを変更する必要がある。また、リカバリ用にリモートサイトからコマンドを実行する処理を記述する場合、リカバリサイトのホストからの経路を求めてマルチホップリストを記述しなければならない。複数の経路からコマンドを投入可能なとき、リンク障害が発生したあと別の経路でコマンドを投入するには、その経路を記述したホストコマンドを記述しなければならない。
【０００７】
本発明の目的は、リモートＤＫＣコマンドの伝達経路の定義及び制御を自動的に行うことにある。
本発明の他の目的は、ユーザがホストコマンドやスクリプトを記述したり、書き換えたりする際の手間を削減することにある。
【課題を解決するための手段】
【０００８】
本発明に係るリモートコピー制御方法に関して、好ましくは、ディスク制御装置の如きストレージ装置に形成されるボリュームのリモートコピーを行うリモートコピー制御方法において、ストレージ装置の少なくとも１つに接続されたホスト計算機に対するストレージ装置内のリモートコピー対象のボリューム・ペアのコピー元またはコピー先のボリュームＶＴの識別子と、ボリュームＶＴが属するストレージ装置ＤＴの識別子とを登録したボリュームペアリストから、ボリュームＶＴが属するストレージ装置ＤＴの識別子を求めるステップと、ストレージ装置ＤＴに対するコマンドの伝達経路となる中継用のストレージ装置ＤＩの識別子と、ストレージ装置ＤＩのうちホスト計算機に接続されたストレージ装置ＤＰの識別子を判別する情報とを登録したルート情報を含むルートリストからストレージ装置ＤＴの識別子を含むルート情報を検索し、このルート情報で表されるストレージ装置ＤＰの識別子を求めるステップと、求められた識別子に対応するストレージ装置ＤＰに対して、ストレージ装置ＤＩの識別子とストレージ装置ＤＴの識別子とを入力情報に含んだボリュームＶＴのリモートコピーコマンドを発行するステップとを有して構成される。
【０００９】
また、本発明に係るストレージシステムに関して、好ましくは、ホスト計算機から送られるコマンドを処理すると共に、ホスト計算機で利用されるデータを記憶するボリュームを備えた複数のストレージ装置を有し、ストレージ装置間を接続してボリュームのリモートコピーを行うストレージシステムにおいて、リモートコピーのコピー元またはコピー先のボリュームＶＴの識別子と、ボリュームＶＴが属するストレージ装置ＤＴの識別子とを保持するボリュームペアリスト、及びホスト計算機の識別子と、ストレージ装置ＤＴの識別子と、ホスト計算機からストレージ装置ＤＴへのコマンドの伝達経路となる中継用のストレージ装置ＤＩの識別子と、ストレージ装置ＤＩのうち前記ホスト計算機に接続されたストレージ装置ＤＰの識別子を判別する情報とを含むルート情報を保持するルートリストを格納する記憶装置と、ボリュームペアリストを参照してボリュームＶＴを含むストレージ装置ＤＴの識別子を取得する手段と、ルートリストを参照してストレージ装置ＤＴを含むルート情報を探し、このルート情報に含まれるストレージ装置ＤＰの識別子を取得する手段と、取得された識別子に関連するストレージ装置ＤＰに対して、ストレージ装置ＤＴ内のボリュームＶＴのリモートコピーを要求する手段と、
を有して構成される。
好ましい例では、ホスト計算機は、上記記憶装置及び処理装置を有し、記憶装置は更に上記識別子の取得手段を実現するためのプログラムを格納し、かつこの処理装置でプログラムを実行することにより上記取得手段を実現する。
【発明の効果】
【００１０】
本発明によれば、リモートＤＫＣコマンドの伝達経路の定義及び制御を自動的に行うことができる。これによってユーザがホストコマンドやスクリプトを記述したり、書き換えたりする際の手間を削減することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施形態について詳細に説明する。
図１は、一実施例に係るストレージシステムのハードウェア構成の一例を示す図である。
図１において、第一のホスト計算機１００aおよび第二のホスト計算機（単にホストという）１００cは、それぞれ中央処理装置１０１、主記憶装置１０２、チャネルなどの入出力インタフェース１０３を備えており、ネットワークや通信回線などの通信路１０４を介してディスク制御装置（以下単にＤＫＣという）１１０と接続される。
【００１２】
第一のＤＫＣ１１０ａ、第二のＤＫＣ１１０ｂ、第三のＤＫＣ１１０ｃは、それぞれ、１つ又は複数のチャネルアダプタなどのインタフェース１１２、共有メモリ１１３、１つ又は複数のディスクアダプタ１１４を有し、スイッチや内部バス１１１により相互に接続されている。ディスクアダプタ１１４には１つ又は複数のディスク装置が接続され、そのディスク装置には論理的または物理的な記憶領域であるボリューム１１５（１１５a〜ｆ）が割当てられている。
【００１３】
ホスト１００ａはＤＫＣ１１０ａに接続され、ホスト１００cはＤＫＣ１１０ｃに接続される。また、ＤＫＣ１１０ａ、ＤＫＣ１１０ｂ、ＤＫＣ１１０ｃは通信路１０４を介して相互に接続される。図示していないが、ホスト１００a、１００cは、キーやマウスによる入力器及びＧＵＩ画面を有する表示器を有する端末装置を具備する。また、ホストは、外部記憶装置を備え、後述するプログラムや各種のリストを格納する。
なお、ホスト１００は最低１つあればよく、例えばホスト１００cは無くてもよい。また、第三の他のホスト１００があってもよい。また、ＤＫＣ１１０は、互いに接続されたＤＫＣ１１０の組が最低１つあればよい。例えば、ＤＫＣ１１０ｃは無くてもよく、ＤＫＣ１１０ａと１１０ｃとの接続は無くてもよい。図示以外の第三の他のＤＫＣ１１０があってもよい。
【００１４】
図２は、ストレージシステムにおけるボリュームペア制御の全体的な処理機能を示す図である。
ホスト１００ａ、１００cの主記憶装置１０２には、同一ＤＫＣ１１０内または異なるＤＫＣ１１０間のボリューム１１５のペアを定義するボリュームペアリスト１２０、ホスト１００とＤＫＣ１１０間のコマンドパスの有無を定義するホストパスリスト１３０、異なるＤＫＣ１１０間のコマンドパスの有無を定義するＤＫＣパスリスト１４０、各ホスト１００から各ＤＫＣ１１０までのコマンドパスのルートを定義するルートリスト１５０、ボリューム１１５間のリモートコピー処理を要求するためのホストコマンドを記述したスクリプト１６０がそれぞれテーブル形式で格納される。
【００１５】
更に、主記憶装置１０２には、リスト１２０を作成するボリュームペアリスト作成処理２００、リスト１３０を作成するホストパスリスト作成処理３００、ホスト１００とＤＫＣ１１０間のコマンドパスの有無を調べるホストパス検出処理３２０、リスト１４０を作成するＤＫＣパスリスト作成処理４００、リスト１５０を作成するルート作成処理５００、スクリプト１６０の記述内容に従ってリスト１２０に記載されたボリューム間のリモートコピー処理を、リスト１５０内のルートに記述されたＤＫＣ１１０を経由して要求するボリュームペア制御処理７００を実行するための各プログラムが格納されている。これらのプログラムは適宜、中央処理装置１０１に転送して実行される。
通常、これらのリスト及びプログラムを外部記憶装置（図示せず）にファイルとして保存しておき、必要なときに主記憶装置１０２にロードして実行される。
【００１６】
ここで、コマンドパスとは、ホスト１００とＤＫＣ１１０間やＤＫＣ１１０間で、ＤＫＣ１１０やＤＫＣ１１０内のボリューム１１５に対する要求（ＤＫＣコマンド）を伝送することが可能な通信回線１０４内の論理パスである。例えば、ＤＫＣ１１０内で代表してＤＫＣコマンドを受け取るボリューム１１５のディスク装置が接続されているアダプタ１１４と他のＤＫＣ１１０のアダプタ１１４またはホスト１００のインタフェース１０３との論理パスである。または、ボリュームペアのデータ転送のために形成したアダプタ１１４間の論理パスのうち、送信側ＤＫＣと受信側ＤＫＣが共に等しい論理パスの集合である。
【００１７】
なお、リスト１２０〜１５０及びスクリプト１６０は、同時に主記憶装置１０２上に存在する必要はなく、関係するプログラムの実行時に存在していればよい。例えば、ルートリスト作成処理５００を完了した場合、ボリュームペア制御処理７００に必要なリスト１２０とリスト１５０とを外部記憶装置内のファイルに保存して、これらを主記憶装置から消去し、別途作成したスクリプト１６０と共に、処理７００を実行するまでボリューム１１５内のファイルに保持しておいてよい。
【００１８】
図３は、図２におけるボリュームペアリスト１２０の一例を示す図である。
図において、リスト１２０ａは、ＤＫＣ１１０ａ内のボリュームとＤＫＣ１１０ｂ内のボリュームとのペアリストである。リスト１２０ａには、リスト１２０を識別するための識別子"Pair AB"と、ボリューム１１５ａとボリューム１１５ｃとがペアであることを示すペア定義と、ボリューム１１５ｂとボリューム１１５ｄがペアであることを示すペア定義が含まれている。ペア定義には、双方のボリュームの識別子、例えばデバイス番号（ボリューム１１５ａの場合はＶＡ１）を"dev#="に続けて記述し、ボリューム１１５の属するＤＫＣ１１０の識別子、例えばＤＫＣ１１０の製造番号（ＤＫＣ１１０ａの場合はＤＡ）を"seq="に続けて記述する。
【００１９】
同様に、リスト１２０ｂには、ＤＫＣ１１０ｂ内のボリューム１１５c、１１５ｄとＤＫＣ１１０ｃ内のボリューム１１５ｅ、１１５ｆとのペア定義が含まれる。またリスト１２０ｃには、ＤＫＣ１１０ａ内のボリューム１１５ａ、１１５ｂとＤＫＣ１１０ｃ内のボリューム１１５ｅ、１１５ｆとのペア定義が含まれる。ここで、ボリューム・ペアのうち、コピー元のボリューム１１５をプライマリボリューム、コピー先のボリューム１１５をセカンダリボリュームと呼ぶ。また、ペア定義のうち、プライマリボリュームに関する定義をプライマリ定義、セカンダリボリュームに関する定義をセカンダリ定義と呼ぶ。
【００２０】
なお、リスト１２０a〜１２０cでは、ペアの双方がすべて同じＤＫＣ１１０内のボリュームである必要はない。例えば、プライマリprimのseqが同じＤＫＣであり、セカンダリsecのseqが異なるＤＫＣから成るペア定義が同じリスト内に含まれてもよい。また、ペアの確立、同期、コピー等の同じ操作を同時に行うのであれば、リスト１２０ａ、１２０ｂ及び１２０ｃを１つのリストに記述してもよい。
また、リスト１２０a〜１２０cは、リストに含まれる各ボリューム１１５のペアの双方を一意に識別できる情報が含まれていれば、図３に示すようなリスト１２０a〜１２０cに示す形式には限定されない。例えば、主記憶装置１０２上の配列に記憶された形式やそのダンプ形式でもよい。各ボリューム１１５が接続されたアダプタ１１４の識別情報など他の情報を含んでいてもよい。
【００２１】
図４は、図２に示すボリュームペアリスト１２０の作成処理２００のフローチャートである。
まず、ペアの一方のＤＫＣ識別子とボリューム識別子とを、ホストの端末装置のフィールドやコマンドやＧＵＩ画面のダイアログなどから入力する（ステップ２０３）。複数のボリュームを一括して定義するためにボリューム数も入力できる。キー入力やＧＵＩ画面のメニュー選択やボタンクリックが発生したときに、他のリスト１２０の識別名を入力させ、他のリスト１２０から、各ペア定義のプライマリ定義をコピーすることもできる（ステップ２０１〜２０２）。例えば、リスト１２０ｃを作成するとき、"Pair AB"を入力させて、リスト１２０ａからボリューム１１５ａとボリューム１１５ｂとのプライマリ定義をコピーする。同様に、セカンダリ定義の取り込み要求であれば（ステップ２０４）、他のリスト１２０の識別名を入力させ、他のリスト１２０のセカンダリ定義をコピーし（ステップ２０５）、取り込み要求でなければ、各プライマリ定義に対応したセカンダリボリュームのＤＫＣ識別子とボリューム識別子とを入力させる（ステップ２０６）。最後に、入力された情報から図３の形式でファイルに出力する（ステップ２０７）。ファイルはホスト１００に接続されたＤＫＣ１１０のボリューム内に格納される。
【００２２】
図５は、図２のホストパスリスト１３０の一例を示す。
ホストパスリスト１３０は、ホスト１００とＤＫＣ１１０間におけるコマンドパスの存在の有無を判別するための情報である。リスト１３０は、ボリュームペア制御処理７００を実行するホスト１００から、ＤＫＣコマンドを投入するＤＫＣ１１０を識別するために、リスト１５０を作るために利用される。パス定義を示すタグ"<path>"と"</path>"との間には、"host="に続けてホスト１００の識別子を記述し、"DKC="に続けてそのホスト１００とコマンドパスがあるＤＫＣ１１０の識別子を指定する。例えば、図５において、ホスト識別子がＨＡであるホスト１００ａとＤＫＣ１１０ａ間にパスがあり、ホスト識別子がＨＣであるホスト１００ｃとＤＫＣ１１０ｃ間にパスがあることを示す。このホスト識別子は、ユーザがホストごとに付けた名称であるが、ホスト１００内から収集したＣＰＵＩＤや、ＯＳの初期設定パラメータで識別子を定義してもよい。
なお、リスト１３０の形式は、ＤＫＣ１１０の識別子と、そのＤＫＣ１１０に対してコマンドパスがあるホスト１００の識別子の一覧が分かる形式であれば、図５に示す形式でなくてもよい。
【００２３】
図６は、ホストパスリスト作成処理３００ａのフローチャートの一例を示す。
まず、抽出対象とするリスト１２０の一覧を取得する（ステップ３０１）。これは、リスト１２０を識別するＩＤ（例えば図３のリスト１２０ａのＰａｉｒＡＢ）をロードしたり、又はリスト１２０の名称の一覧を記述したファイルをＤＫＣ内のボリュームからロードしたり、或いはリスト１２０のＩＤや名称をホスト１００の端末装置のＧＵＩ画面から表示、入力することにより取得する。
次に、一覧中の全てのリスト１２０のプライマリ定義とセカンダリ定義から、異なるＤＫＣ１１０の識別子を全て抽出する（ステップ３０２）。例えば、図３の３つのリスト１２０ａ〜cからは、"seq #="に続くワードを抽出して同一名称を排除し、ＤＡ、ＤＢ、ＤＣという３つの識別子を抽出する。次に、抽出したＤＫＣ１１０の識別子を端末装置の画面に表示してそれぞれの識別子のＤＫＣ１１０が接続されているホスト１００の識別子を入力する（ステップ３０３）。なお、ホスト１００の識別子をファイルに出力して、リスト１３０をユーザに作成させてもよい。
【００２４】
図７は、ホストパス検出処理３２０のフローチャートの一例を示す。
処理３００ｂからＤＫＣ１１０の一覧を受信し（ステップ３２１）、一覧中の全てのＤＫＣ１１０に対して、ステップ３２２〜３２４を実行する。即ちＤＫＣ情報の取得などＤＫＣ１１０やボリュームの構成や状態に影響を与えない非リモートＤＫＣコマンドを各ＤＫＣ１１０に発行する（ステップ３２２）。そして発行したコマンドが成功すれば（ステップ３２３）、そのＤＫＣ１１０を成功したＤＫＣ１１０のリストに加える（ステップ３２４）。全てのＤＫＣ１１０に対してＤＫＣコマンドを実行した後（ステップ３２５）、成功したＤＫＣ１１０のリストを処理３００ｂに送信する（ステップ３２６）。
【００２５】
図８は、図２のＤＫＣパスリスト１４０の一例を示す。
ＤＫＣパスリスト１４０は、ＤＫＣ１１０間のコマンドパスの存在を判別するための情報であり、ルートリスト１５０を作成するために用いられる。パス定義を示すタグ"<path>"と"</path>"の間には、"DKC="に続けてコマンドパスがある双方のＤＫＣ１１０の識別子を指定する。
図８に示す例では、ＤＫＣ１１０ａとＤＫＣ１１０ｂ間、ＤＫＣ１１０ｂとＤＫＣ１１０ｃ間、ＤＫＣ１１０ａとＤＫＣ１１０ｃ間にそれぞれコマンドパスがあることを示している。
なお、リスト１４０は、コマンドパスがある双方のＤＫＣ１１０の識別子の組の一覧がわかる形式であれば、図８に示す形式でなくてもよい。
【００２６】
図９は、ＤＫＣパスリスト作成処理４００のフローチャートの一例を示す。
まず、ホストパスリスト作成処理３００と同様に、対象となるリスト１２０の一覧を取得する（ステップ４０１）。次に、一覧中の全てのリスト１２０から、プライマリ定義のＤＫＣ１１０の識別子とセカンダリ定義のＤＫＣ１１０の識別子とのいずれかが異なるすべての組を抽出する。例えば、図３に示す３つのリスト１２０から、ＤＡとＤＢ，ＤＢとＤＣ，ＤＡとＤＣという３つの組を抽出し（ステップ４０２）、抽出したペアのプライマリのＤＫＣ識別子とセカンダリのＤＫＣを持つエントリをＤＫＣパスリスト１４０に加える（ステップ４０３）。最後に、ＤＫＣパスリスト１４０内の各組のＤＫＣ１１０間のコマンドパスまたはアダプタ１１４間の論理パスを形成するＤＫＣコマンドをＤＫＣ１１０に投入する（ステップ４０４）。
【００２７】
なお、ステップ４０２〜４０３において、ＤＫＣ１１０の組を抽出する代わりに、アダプタ１１４の識別子を含むリスト１２０から、プライマリ定義またはセカンダリ定義のＤＫＣ１１０の識別子またはアダプタ１１４の識別子のいずれかが異なる組を抽出してもよい。また、ステップ４０４を行う代わりに、ホストコマンドでパスを設定したり、スクリプト１６０にて設定してもよい。また、ステップ４０１とステップ４０２の代わりに、ＤＫＣ１１０にＤＫＣコマンドを送り、事前にホストコマンドなどでＤＫＣ１１０に定義させたコマンドパスの情報を受信してリスト４０３を作成してもよい。
【００２８】
図１０は、図２におけるルートリスト１５０の一例１５０ａを示す。
ルートリスト１５０ａは、あるＤＫＣ１１０からホスト１００へのコマンドパス経路の情報を表す。リスト１５０ａ内の各行には、少なくとも、ホスト１００の識別子と、そのホスト１００からパスのあるＤＫＣ１１０の識別子と、ＤＫＣ１１０からパスがあるＤＫＣ１１０の識別子の組み合わせが含まれる。この識別子は任意の数である。
例えば、最初の行にあるホストルート「ＨＡ  ＤＡ−ＤＢ−ＤＣ」に関して、ホストＨＡからルートの末端のＤＫＣ１１０ｃ内のボリューム１１５に対する要求を行う場合には、ＤＫＣ１１０ａに対してＤＫＣコマンドを投入し、ＤＫＣ１１０ｂを経由してＤＫＣ１１０ｃにＤＫＣコマンドを転送する必要があることを示している。
更に好ましくは、ルートリスト１５０ａには、更にルートの優先順位に関する情報を含む。優先順位とは、ＤＫＣに対してホストがコマンドを発行する優先度であり、例えばエラーの発生率の高いＤＫＣは優先順位を低くするが如きである。この優先順位の設定は、ユーザによる入力値として設定してもよいし、エラー発生率などの情報をロードして付加してもよい。
【００２９】
図１１は、図２におけるルートリスト作成処理５００のフローチャートの一例を示す。
まず、ホストパスリスト１３０をコピーして、ホストパスリスト１３０をルートリスト１５０の初期リストとし（ステップ５０１）、リスト内の各ルートについて検索する。その結果、検索未完了のルートがあれば、未完了のマークをつける。そしてルートリスト１５０をチェックして、未完了マークの付いたルートがあれば（ステップ５０２）、そのルートの終端のＤＫＣ１１０の識別子を選ぶ（ステップ５０３）。選択したルートの終端のＤＫＣの識別子を識別子Ｓとする。
識別子Ｓのタイプ情報を取得していなければ（ステップ５０４）、ＤＫＣコマンドを終端ＤＫＣに対して発行して終端ＤＫＣから終端ＤＫＣがリモートＤＫＣコマンドをサポートしているかどうかを示す情報を取得する（ステップ５０５）。そしてその終端ＤＫＣがリモートＤＫＣコマンドをサポートしているか否かを確認し（ステップ５０６）、サポートしていなければ検索未完了マークをはずす（ステップ５０９）。
【００３０】
次に、終端ＤＫＣの識別子Ｓがエントリ中のＤＫＣ１１０の組のいずれか一方と一致するＤＫＣペアをＤＫＣパスリスト１４０から検索する（ステップ５０７）。ＤＫＣペアが見つからなければ（ステップ５０８）、検索未完了マークをはずす（ステップ５０９）。検索の結果、ＤＫＣペアが見つかった場合は、ＤＫＣペアに含まれる終端ＤＫＣの識別子ＳとペアになっているＤＫＣ１１０の識別子Ｄがルート内に含まれているかどうかを調べる（ステップ５１０）。そして、終端ＤＫＣの識別子Ｓとペアとなっているものが含まれていなければ、２度目以降であれば付加する前のルートを複製した後、ルートに識別子Ｄを付加する（ステップ５１１）。ＤＫＣペアが複数みつかった場合は、すべてのＤＫＣペアを処理するまでステップ５１０〜５１１を繰り返す（ステップ５１２）。
一方、識別子Ｄを付加しなかった場合は（ステップ５１１）、検索未完了マークをはずす（ステップ５０９）。ステップ５０３〜５１３を検索未完了マークの付いたルートがなくなるまで繰り返し実行した後、リスト１５０ｂの形式（図１８）に変換する。リスト１５０ａの形式に変換するときは、さらに、各ルートに対して、ルートのサブセットを作る。
【００３１】
図１２は、図２におけるスクリプト１６０の一例を示す。
スクリプト１６０には、ボリュームペア処理７００（或いは処理８００（図２１））に対して処理を要求するためのホストコマンドが含まれる。１行目の"LOADPAIR ID(Pair AB)"は、Pair ABの識別子をもつボリュームペアリスト１２０ａを主記憶装置１０２上にロードし、処理７００が認識できるようにする要求であることを示す。２行目に示す"LOADROUTE ID(3DC) HOST(HA)"は、識別子３ＤＣをもつルートリスト１５０をロードし、ホスト識別子がＨＡであることを処理７００に伝える要求であることを示す。ただし、処理７００でＣＰＵＩＤやＯＳの初期設定パラメータを取得し、ホスト識別子とする場合は、オペランド"HOST(HA)"は不要である。３行目の"ESTABLISH ID(Pair AB)"は、ボリュームペアリスト１２０ａ内のボリュームペアのリモートコピーを開始する要求であることを示す。
尚、スクリプト１６０には、リモートコピー開始以外のホストコマンドが含まれていてもよい。１行目を記述するかわりに、３行目を実行した時点でリスト１２０ａを主記憶装置にロードしてもよい。リスト１２０内にリスト１５０のＩＤを記述し、２行目を記述するかわりに、リスト１２０ａをロードした時点でリスト１５０をロードしてもよい。
【００３２】
図１３は、図２におけるボリュームペア制御処理７００のフローチャートを示す。
ホストコマンドのオペランドに指定されたボリュームグループのボリュームペアリスト１２０を、それが格納されている外部記憶装置から主記憶装置１０２にロードし（ステップ７０１）、オペランドやＣＰＵＩＤや初期設定パラメータからホスト識別子を取得する（ステップ７０２）。同様にしてルートリスト１５０を主記憶装置１０２にロードし、ステップ７０２で取得したホスト識別子が含まれないルートを除外し（ステップ７０３）、図１３の形式であれば図１０の形式に変換し（ステップ７０４）、ボリュームペアリスト１２０内の全ペアを処理するまで、ボリューム制御コマンド作成処理７１０を繰り返す（ステップ７０５）。
【００３３】
図１４は、図１３の実施形態におけるボリューム制御コマンド作成処理７１０のフローチャートを示す。
ペアの同期方向、即ちボリューム間でのコピーする方向を問い合わせ、主記憶装置１０２に記録する（ステップ７１１）。そしてＤＫＣコマンドの発行先ボリュームがプライマリであるかセカンダリであるかを、ＤＫＣコマンド種別とペア方向により判別し（ステップ７１２）、ＤＫＣコマンド発行先ボリュームが属する発行先ＤＫＣをボリュームペアリスト１２０から求め（ステップ７１３）、発行先ＤＫＣを末尾に持つルートのうち、優先順位の最も高いルートをルートリスト１５０から求める（ステップ７１４）。ただし、プライマリとセカンダリが固定であればステップ７１１〜７１２の処理は無くてもよい。
【００３４】
そしてルート内のＤＫＣ識別子の数に対する判定を行い（ステップ７１５）、もしＤＫＣ識別子の数が１つであれば、非リモートＤＫＣコマンドを発行する（ステップ７１６）。もしその数が２つ以上であれば、リモートＤＫＣコマンドの入力情報（図１５の１８０ａ）にルート上のＤＫＣの識別子を付加し、リモートＤＫＣコマンドを発行する（ステップ７１７）。ＤＫＣ１１０からＤＫＣコマンドの成功応答があれば終了する（ステップ７１８）。
【００３５】
それに対して、ＤＫＣ１１０からエラー応答があった場合には、ルートの優先順位を落とし（ステップ７１９）、発行先ＤＫＣを末尾にもつルートのうち、次に優先順位が高いルートをルートリスト１５０から求める（ステップ７２０）。
まだ実行していないルートがあれば（ステップ７２１）、ステップ７１５に戻り、再び別のルートでＤＫＣコマンド実行を試みる。全てのルートで実行したときにスクリプトにエラーコードを返す。ただし、ステップ７１９〜７２１を必ずしも行わなくてもよく、ＤＫＣ１１０からエラー応答があった時点でホストコマンド発行元にエラーコードを返してもよい。
【００３６】
図１５は、ＤＫＣコマンドの入力情報の構成を示す図である。
（Ａ）は、一実施形態におけるリモートＤＫＣコマンドの入力情報の例１８０ａを示し、（Ｂ）は、他の実施形態におけるリモートＤＫＣコマンドの入力情報の例１８０ｂを示す。
入力情報１８０ａ及び１８０ｂは、共にターゲットボリュームの識別子１８２と、ターゲットボリュームが属するＤＫＣ１１０の識別子１８３を含む。しかし、入力情報１８０ａには、更にルート上のＤＫＣ１１０の識別子１８１を１つ乃至複数含む点が相違する。
【００３７】
以上説明したように本実施形態によれば、ボリュームペアリストからルートリストを生成し、ペアリスト内のボリュームに対するコマンドの転送経路をルートリストから得るため、ペアリストやルートリストを使用することができる。このため、特定の構成タイプを定義したり、ユーザがスクリプト内で経路を記述する必要がなく、構成が変更になってもスクリプトを書き換える必要がなくなる。
あるホストでボリュームペアリストを作成し、ボリュームペアリストとルートリストを運用が想定される各ホストに転送すれば、再定義をすることなく複数のサイト・複数の運用形態(通常/ failover/ failback)で同じ定義情報を利用しリモートコピーのスクリプトも実行することができる。また、リンク障害時に、スクリプト内で記述しなくても、別のパスにてコマンドを自動再投入することができる。
【００３８】
本発明は上記した実施形態に限定されずに、種々変形して実施し得る。以下、その幾つかの例について説明する。
【００３９】
図１６は、他の実施形態によるボリュームペア制御の全体的な処理機能を示す図である。
図２に示す実施形態と比べると、ルートリスト１５０の作成処理をホスト１００ではなく、ＤＫＣ１１０で行う点が相違する。このルートリスト１５０はＤＫＣ１１０の共有メモリ１１３に格納される。
即ち、ホスト１００の主記憶装置１０２上には、上記実施形態と同じリスト１２０、リスト１３０、スクリプト１６０、ボリュームペアリスト定義処理２００、ホストパスリスト作成処理３００、ホストパス検出処理３２０、ＤＫＣパスリスト作成処理４００が存在する。また、上記実施形態のボリュームペア制御処理７００とは異なるボリュームペア制御処理８００が主記憶装置１０２上に存在する。また、すべてのＤＫＣ１１０内の共有メモリ１１３上には、他のＤＫＣ１１０とのＤＫＣ１１０単位またはアダプタ１１４単位のパス情報１４１が存在する。また、１つ乃至複数のＤＫＣ１１０には、ルートリスト１５０と、このリスト１５０を作成するルートリスト作成処理６００、他のＤＫＣ１１０にＤＫＣコマンドを転送するコマンド転送処理８２０が存在する。
【００４０】
この実施形態によれば、ボリュームリスト１２０を元にルートリスト１５０を作成するところと、ルートリスト１５０のルート情報を元にＤＫＣコマンドを転送するＤＫＣ１１０を判別し、エラーなどの状況により動的に転送ルートを変更するところに特徴がある。
【００４１】
図１７は、他の実施形態によるホストパスリスト１３０を作成するため処理３００ｂのフローチャート図を示す。これは図６の代替方法である。
まず、図６に示す方法と同様に、リスト１２０の一覧を取得し（ステップ３１１）、ＤＫＣ１１０の一覧を抽出する（ステップ３１２）。次に、ＤＫＣ１１０のいずれかが接続されているホスト１００（処理３００を実行しているホスト１００も含む）に対して、ＤＫＣ１１０の一覧を転送し、ホストパス検出処理３２０の実行を依頼する（ステップ３１３）。そのホスト１００からパスがあるＤＫＣ１１０の一覧を受信し（ステップ３１４）、受信した情報（ホスト１００とＤＫＣ１１０の組）からリスト１３０を作成する（ステップ３１５）。
【００４２】
図１８は、図２におけるルートリスト１５０の他の例１５０ｂを示す。
この例のルートリスト１５０bは、図１０に示すルートリスト１５０aの例の変形例であり、一部が重複するルート（例えば、ＤＡ−ＤＢ−ＤＣとＤＡ−ＤＢ）は、最長のルートのみが記述される。ホスト識別子と優先順位に続いて、ルート上のＤＫＣ１１０の識別子をルート順に記載する。
なお、ルートリスト１５０ｂは、ホスト識別子と、ホスト１００から各ＤＫＣ１１０へ経由するＤＫＣ１１０の識別子の一覧が分かる形式であれば、図１０や図１８に示す形式でなくてもよく、他の情報を含んでいてもよい。例えば、主記憶装置１０２上の配列でもよい。ファイルに保管するときは図１８の形式とし、ファイルをロードするときに図１０の形式に変換してもよい。また、図１０の形式に変換したのち、処理７００が実施されるホスト１００を含まないルートを消去してもよい。
【００４３】
図１９は、他の実施形態によるルートリスト１５０の作成処理６００ａのフローチャートを示す。
この例は、図１１の変形例（方法１）であり、ホスト内ではなく、ＤＫＣ内でルートリストを作成する。ＤＫＣ内で作成すると、ホスト内で作成することに比べて、ハード内の情報とホスト内情報の不一致が無くなり、ホスト内処理が簡易化される。アダプタ間のパスをＤＫＣに対して定義すれば、ルートが生成される。ホストからはルートをＤＫＣコマンドに付加する必要がなくなり、相手先さえ指定すればよい。
【００４４】
処理６００aでは、各ＤＫＣ１１０の処理は同じである。各ＤＫＣ１１０は、自己ＤＫＣ内のパス情報１４１を元にして、自己ＤＫＣの識別子を他のＤＫＣに転送するとともに、他のＤＫＣから送られてきたパス情報１４１を自己ＤＫＣ内のルートリストに加えてルートリストを作成する。ホスト１００からルート作成要求のＤＫＣコマンドを発行すると、処理６００が実行される。ホストからのルート作成要求を受信したＤＫＣは、次に示すステップ６０１〜６０９の処理を実行する。
自己ＤＫＣ内のパス情報１４１に記載された他のＤＫＣ１１０に対してルート取得要求を行う（ステップ６０１）。コマンドの要求元がホストでなければ（ステップ６０２）、ルートに自己ＤＫＣの識別子を加えて送信する（ステップ６０３）。自己ＤＫＣがリモートＤＫＣコマンドをサポートしており（ステップ６０４）、かつ自己ＤＫＣ１１０内のパス情報１４１内に、ルート内のどのＤＫＣとも一致しないＤＫＣ１１０があれば（ステップ６０５）、そのＤＫＣ１１０に対して、ルートを送信してルート取得要求を行う（ステップ６０６）。
コマンドの要求元がホストでなければ（ステップ６０７）、受信したルートを送信する（ステップ６０８）。そして受信したルートをルートリスト１５０に加える（ステップ６０９）。  また、他のＤＫＣからルート取得要求を受信したＤＫＣでも、同様にステップ６０１〜６０９の処理を実行する。
【００４５】
図２０は、更に他の実施形態によるルートリスト１５０の作成処理６００ｂのフローチャートを示す（方法２）。
処理６００aでは、各ＤＫＣの処理は同じであったが、処理６００ｂでは、ホストと接続されたＤＫＣ（正ＤＫＣ）と、ホストに接続されていないＤＫＣ（副ＤＫＣ）との処理が異なる。正ＤＫＣは、副ＤＫＣに対してパス情報取得要求を行い、正ＤＫＣ内でルートを作成する。
【００４６】
ルート作成要求のＤＫＣコマンドを受け取ったＤＫＣ１１０では、まず自己ＤＫＣ１１０内のパス情報１４１にある他のＤＫＣ１１０に対して、パス情報１４１取得要求を行う（ステップ６１１）。そして自己ＤＫＣ１１０のパス情報１４１をルートリストの初期リストとし（ステップ６１２）、図１１のステップ５０２〜５１２の処理を行い（ステップ６１３）、作成したルートと、ルートから生成したルートのサブセットを、リスト１５０に加える（ステップ６１４）。
他のＤＫＣ１１０からパス情報１４１の取得要求を受信したＤＫＣ１１０では、要求を受信すると（ステップ６２１）、送信済でなければ（ステップ６２２）、パス情報１４１を送信し（ステップ６２３）、情報１４１に記載された各ＤＫＣ１１０に情報１４１の取得要求を送信し（ステップ６２４）受信した情報１４１を転送する（ステップ６２５）。
【００４７】
図２１は、他の実施形態によるボリュームペア制御処理８００のフローチャートを示す。
ホストでは、ボリューム制御処理７００と同様に、指定されたボリュームグループのボリュームペアリスト１２０をロードし（ステップ８０１）、ホスト識別子を取得する（ステップ８０２）。同様にホストパスリスト１３０をロードし（ステップ８０３）、ボリュームペアリスト１２０内の全ペアを処理するまでボリューム制御コマンド作成処理８１０を繰り返す（ステップ８０４）。
【００４８】
図２２は、図２１に示した実施形態によるボリューム制御コマンド作成処理８１０のフローチャート図を示す。
ホストでは、ボリューム制御コマンド作成処理７１０と同様に、まずペアの同期方向を問い合わせて記録し（ステップ８１１）、ＤＫＣコマンドの発行先ボリュームがプライマリであるかセカンダリであるかを判別する（ステップ８１２）。次に、ＤＫＣコマンドのターゲットボリュームが属するターゲットＤＫＣをリスト１２０から求めてリモートＤＫＣコマンドの入力情報１８０ｂ内に記述し（ステップ８１３）、リスト１３０に記載されたＤＫＣ１１０に対してリモートＤＫＣコマンドを発行する（ステップ８１４）。リモートＤＫＣコマンドを受信したＤＫＣ１１０は、処理８２０を実行してルートに従ってターゲットＤＫＣにＤＫＣコマンドを転送し、実行結果をホスト１００に返す。受信した実行結果は、ホストコマンド発行元スクリプトに返される（ステップ８１５）。
【００４９】
図２３は、図２２に示した実施形態におけるボリューム制御コマンド転送処理８２０のフローチャートを示す。
リモートＤＫＣコマンドを受信したＤＫＣでは、ＤＫＣコマンドの入力情報に記述されたターゲットＤＫＣの識別子と自己ＤＫＣの識別子が同じかを判定し（ステップ８２１）、両者が同じならば、コマンドを実行して結果を返却する（ステップ８２２）。両者のコマンドが同じでなければ、ＤＫＣ１１０内のルートリスト１５０を参照して自己ＤＫＣの識別子のあるルートを抽出し（ステップ８２３）、ルート上で自己ＤＫＣの次にあるＤＫＣに対してコマンドを転送する（ステップ８２４）。そしてそのＤＫＣから実行結果を受信して（ステップ８２５）、終了する。
【００５０】
上記以外にも本発明の趣旨を逸脱しない範囲で、変形して実施することができることは明らかである。
【図面の簡単な説明】
【００５１】
【図１】一実施形態によるストレージシステムのハードウェア構成を示す図。
【図２】一実施形態によるボリュームペア制御の全体的な処理機能を示す図。
【図３】一実施形態におけるボリュームペアリスト１２０の一例を示す図。
【図４】一実施形態によるボリュームペアリスト作成処理２００のフローチャートを示す図。
【図５】一実施形態におけるホストパスリスト１３０の一例を示す図。
【図６】一実施形態におけるホストパスリスト作成処理３００のフローチャートを示す図。
【図７】一実施形態におけるホストパス検出処理３２０のフローチャートを示す図。
【図８】一実施形態におけるＤＫＣパスリスト１４０の一例を示す図。
【図９】一実施形態におけるＤＫＣパスリスト作成処理４００のフローチャートを示す図。
【図１０】一実施形態におけるルートリスト１５０の一例を示す図。
【図１１】一実施形態におけるルートリスト作成処理５００のフローチャートを示す図。
【図１２】一実施形態におけるスクリプト１６０の一例を示す図。
【図１３】一実施形態におけるボリュームペア制御処理７００のフローチャートを示す図。
【図１４】一実施形態によるボリューム制御コマンド作成処理７１０のフローチャートを示す図。
【図１５】一実施形態におけるＤＫＣコマンドの入力情報の構成を示す図。
【図１６】他の実施形態によるボリュームペア制御の全体的な処理機能を示す図。
【図１７】他の実施形態によるホストパスリスト作成処理のフローチャートを示す図。
【図１８】他の実施形態によるルートリスト１５０bの例を示す図。
【図１９】他の実施形態によるルートリスト作成処理６００aのフローチャートを示す図。
【図２０】更に他の実施形態によるルートリスト作成処理のフローチャートを示す図。
【図２１】他の実施形態によるボリュームペア制御処理８００のフローチャートを示す図。
【図２２】他の実施形態によるボリューム制御コマンド作成処理８１０のフローチャート図。
【図２３】他の実施形態によるボリューム制御コマンド転送処理８２０のフローチャート図。
【符号の説明】
【００５２】
１００：計算機システム、        １０１：中央処理装置、    １０２：主記憶装置、
１０３：入出力インタフェース、  １０４：通信路、          １１０：ディスク制御装置、１１２：インタフェース、          １１３：共有メモリ、      １１４：ディスクアダプタ、１１５：ディスクボリューム、    １２０：ボリュームペアリスト、
１３０：ホストパスリスト、      １４０：ＤＫＣパスリスト１４０、
１５０：ルートリスト、          １６０：スクリプト、
２００：ボリュームペアリスト作成処理      ３００：ホストパスリスト作成処理、
４００：ＤＫＣパスリスト作成処理、        ５００：ルート作成処理、
７００：ボリュームペア制御処理。
【図１】
2005182130.tif 000003
【図２】
2005182130.tif 000004
【図３】
2005182130.tif 000005
【図４】
2005182130.tif 000006
【図５】
2005182130.tif 000007
【図６】
2005182130.tif 000008
【図７】
2005182130.tif 000009
【図８】
2005182130.tif 000010
【図９】
2005182130.tif 000011
【図１０】
2005182130.tif 000012
【図１１】
2005182130.tif 000013
【図１２】
2005182130.tif 000014
【図１３】
2005182130.tif 000015
【図１４】
2005182130.tif 000016
【図１５】
2005182130.tif 000017
【図１６】
2005182130.tif 000018
【図１７】
2005182130.tif 000019
【図１８】
2005182130.tif 000020
【図１９】
2005182130.tif 000021
【図２０】
2005182130.tif 000022
【図２１】
2005182130.tif 000023
【図２２】
2005182130.tif 000024
【図２３】
2005182130.tif 000025