(57)【要約】【課題】  共有記憶装置システムを前提とした共有排他ソフトウエアでリモートコピーを適用した環境において共有排他制御を正常に行えるようにする。【課題手段】  ＳＡＮ等のネットワーク１０１０ａで接続された記憶装置システム１０２０ａを有するサイト１０８０ａと、同様にネットワーク１０１０ｂで接続した記憶装置システム１０２０ｂを有するサイト１０８０ｂとを上位装置間ネットワーク１０７０で接続したコンピュータシステムにおいて、各上位装置１０００ａ〜１０００ｄに調停エミュレーションソフトウエアを備え、既存の共有ボリュームを用いた共有排他制御で各サイト内１０８０ａと１０８０ｂでの調停Ａ２０００、調停Ｂ２０１０で共有排他制御を行い、次に各サイト内での調停に勝った上位装置によるサイト間での調停Ｃ２０２０の共有排他制御を行う２段階調停を実施して１つの上位装置（１０００ａ）を決定する。【選択図】        図２
2005215885.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上のリモートコピー用論理ボリュームを有する複数の記憶装置システムと、それぞれの前記記憶装置システムに接続される一つ以上の上位装置と、該複数の記憶装置システムをネットワークとによって相互に接続したコンピュータシステムであって、
前記複数のリモートコピー用論理ボリュームはリモートコピーグループを構成し、
前記リモートコピーグループを構成するリモートコピー用論理ボリュームは前記記憶装置システムの間で同一の内容を持つように制御され、
リモートコピーを意識しない共有論理ボリュームを用いた共有排他制御を上記リモートコピーを用いた環境において各コピーグループ内の論理ボリュームに接続される上位装置を用いて行うことを特徴とするコンピュータシステム。
【請求項２】
前記共有排他制御をＳＣＳＩコマンドのリザーブ系コマンドによってを行うことを特徴とする請求項１に記載のコンピュータシステムのデータ制御方法。
【請求項３】
前記上位装置の間がネットワークで接続されてクラスタリング化され、  前記上位装置の間を接続する前記ネットワークの障害時に、記憶装置システム内論理ボリュームを用いて共有排他制御を行うことを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
ロックファイルによって共有排他制御を行うことを特徴とする請求項１に記載のコンピュータシステム。
【請求項５】
ロックセクタによって共有排他制御を行うことを特徴とする請求項１に記載のコンピュータシステム。
【請求項６】
ＭＳＣＳによってクラスタリング化されていることを特徴とする請求項３に記載のコンピュータシステム。
【請求項７】
複数の上位装置にネットワークで接続された記憶装置システムを有する２以上のサイトを上位装置間ネットワークで接続し、前記２以上の各サイトの前記記憶装置システム間をリモートコピーラインで接続してなり、
前記サイトを構成する前記上位装置の各々に調停エミュレーション実行部と、クラスタリング部を備え、
前記調停エミュレーション実行部により各々のサイト内の調停を実行して各サイト内の調停勝ち上位装置をそれぞれ決定する第１段階と、
前記調停エミュレーション実行部により、前記各サイト間で前記各サイト内の調停勝ち上位装置間での調停を実行してサイト間の調停勝ち上位装置を決定する第２段階との２段階調停を行うことを特徴とするコンピュータシステムにおける共有排他制御方式。
【請求項８】
前記上位装置に、リモートコピー制御モジュールを有し、前記記憶装置システムに調停用ディスクを有することを特徴とする請求項７に記載のコンピュータシステムにおける共有排他制御方式。
【請求項９】
前記上位装置に備える前記クラスタリング部は、クラスタ制御メイン部とクラスタディスクドライバを有し、
前記調停エミュレーション実行部は、ＳＣＳＩコマンドトラップモジュールとサイト間調停エミュレーション制御モジュールを有し、
前記ＳＣＳＩコマンドトラップモジュールは前記クラスタディスクドライバから発行されるＳＣＳＩコマンドをトラップし、トラップしたＳＣＳＩコマンドを前記調停用ディスクへ発行して、前記リモートコピー制御モジュールを介したサイト間のリモートコピーペアのボリューム状態を対応させることを特徴とする請求項８に記載のコンピュータシステムにおける共有排他制御方式。
【請求項１０】
複数の上位装置にネットワークで接続された記憶装置システムを有する２以上のサイトを上位装置間ネットワークで接続し、前記２以上の各サイトの前記記憶装置システム間をリモートコピーラインで接続してなり、
前記上位装置は、クラスタリング部、調停エミュレーション部を有すると共に、上位装置プロセッサ、メモリ、上位装置記憶ディスク、ディスクインターフェースを少なくとも備え、
前記記憶装置システムは、調停用ディスクを有すると共に、上位装置との間に介在するホストインターフェース、記憶装置プロセッサ、物理ディスク、キャッシュメモリ、共有メモリ、ディスクコピーインターフェースを備え、
前記記憶装置システムとは前記ディスクインターフェースを介してネットワークにより接続されていることを特徴とする請求項８に記載のコンピュータシステムにおける共有排他制御方式。
【請求項１１】
複数の上位装置にネットワークで接続された調停用ディスクを持つ記憶装置システムを有する２以上のサイトを上位装置間ネットワークで接続し、前記２以上の各サイトの前記記憶装置システム間をリモートコピーラインで接続してなり、
前記サイトを構成する前記上位装置の各々に、ＳＣＳＩコマンドトラップモジュールとサイト間調停エミュレーション制御モジュールを有する調停エミュレーション実行部と、クラスタ制御メイン部とクラスタディスクドライバを有するクラスタリング部を備えたコンピュータシステムであって、
前記ＳＣＳＩコマンドトラップモジュールは、前記クラスタドライバより発行されたＳＣＳＩコマンドをトラップし、トラップしたＳＣＳＩコマンドを処理中の上位装置に繋がる記憶装置システムに対して発行すると共に、このＳＣＳＩコマンドの前記調停用ディスクからの戻り値をＳＣＳＩコマンドトラップモジュールでキャッチし、
前記戻り値が「Ｃｏｎｆｌｉｃｔ」の場合は、このＳＣＳＩコマンドの戻り値をセットし、前記クラスタディスクドライバへＳＣＳＩコマンドの戻り値を返し、
前記戻り値が「ＧＯＯＤ」又は「ＥＲＲＯＲ」の場合は、前記サイト間調停エミュレーション制御モジュールで処理した後、前記クラスタディスクドライバへＳＣＳＩコマンドの戻り値を返すことを特徴とする共有排他制御方式を備えたコンピュータシステム。
【請求項１２】
前記ＳＣＳＩコマンドトラップモジュールよりリード系又はライト系の処理要求がある場合、
前記サイト間調停エミュレーション制御モジュールは、リモートコピーペアの状態を確認する「ペア状態確認」ペア操作を行い、ペアステイタスが「コピー元ステイタス」及び「ペア分割ステイタス」の場合は、ＳＣＳＩコマンドの戻り値のセットの有無をチェックすることを特徴とする請求項１１に記載の共有排他制御方式を備えたコンピュータシステム。
【請求項１３】
前記サイト間調停エミュレーション制御モジュールのＳＣＳＩコマンドの戻り値のセットの有無をチェックにおいて、ＳＣＳＩコマンドの戻り値がセットされていない場合は、ＳＣＳＩコマンド戻り値に「ＧＯＯＤ」をセット後、ＳＣＳＩコマンドエミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知することを特徴とする請求項１１に記載の共有排他制御方式を備えたコンピュータシステム。
【請求項１４】
前記ＳＣＳＩコマンドトラップモジュールよりのリード系又はライト系の処理要求がある場合、
前記サイト間調停エミュレーション制御モジュールは、リモートコピーペアの状態を確認する「ペア状態確認」ペア操作を行い、ペアステイタスが「コピー先ステイタス」の場合は、ＳＣＳＩコマンドの戻り値に「Ｃｏｎｆｌｉｃｔ」をセットした後、ＳＣＳＩコマンドエミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知することを特徴とする請求項１１に記載の共有排他制御方式を備えたコンピュータシステム。
【請求項１５】
前記ＳＣＳＩコマンドトラップモジュールよりリザーブ系の処理要求がある場合、
前記サイト間調停エミュレーション制御モジュールは、リモートコピーペアの状態を確認する「ペア状態確認」ペア操作を行い、ペアステイタスが「コピー元ステイタス」の場合は、ＳＣＳＩコマンド戻り値をチェックし、ＳＣＳＩコマンド戻り値がセットされている場合は、ＳＣＳＩコマンドエミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知し、セットされていない場合はＳＣＳＩコマンド戻り値に「ＧＯＯＤ」をセット後、ＳＣＳＩコマンドエミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知することを特徴とする請求項１１に記載の共有排他制御方式を備えたコンピュータシステム。
【請求項１６】
前記サイト間調停エミュレーション制御モジュールは、リモートコピーペアの状態を確認する「ペア状態確認」ペア操作を行い、ペアステイタスが「ペア分割ステイタス」の場合は、前記サイト間調停エミュレーション制御モジュールよりリモートコピー制御モジュールを介してペア形成を指示し、ペア形成が成功した場合はＳＣＳＩコマンドの戻り値をチェックし、
セットされている場合はＳＣＳＩコマンドエミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知し、セットされていない場合はＳＣＳＩコマンド戻り値に「ＧＯＯＤ」をセットした後、エミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知し、
前記ペア形成の指示でペア形成が失敗した場合は、ＳＣＳＩコマンド戻り値に「Ｃｏｎｆｌｉｃｔ」をセットした後、ＳＣＳＩコマンドエミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知することを特徴とする請求項１１に記載の共有排他制御方式を備えたコンピュータシステム。
【請求項１７】
前記ＳＣＳＩコマンドトラップモジュールよりリザーブ系の処理要求がある場合、
前記サイト間調停エミュレーション制御モジュールは、リモートコピーペアの状態を確認する「ペア状態確認」ペア操作を行い、ペアステイタスが「コピー先ステイタス」の場合は、ＳＣＳＩコマンド戻り値に「Ｃｏｎｆｌｉｃｔ」をセットした後、ＳＣＳＩコマンドエミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知することを特徴とする請求項１１に記載の共有排他制御方式を備えたコンピュータシステム。
【請求項１８】
前記ＳＣＳＩコマンドトラップモジュールよりリリース系又はリセット系の処理要求がある場合、
前記サイト間調停エミュレーション制御モジュールは、リモートコピーペアの状態を確認する「ペア状態確認」ペア操作を行い、ペアステイタスが「コピー先ステイタス」及び「コピー元ステイタス」の場合、前記サイト間調停エミュレーション制御モジュールよりリモートコピー制御モジュールを介してペア分割を指示し、ＳＣＳＩコマンドの戻り値に「ＧＯＯＤ」をセットしてＳＣＳＩコマンドエミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知することを特徴とする請求項１１に記載の共有排他制御方式を備えたコンピュータシステム。
【請求項１９】
前記ペアステイタスが「ペア分割ステイタス」の場合、ＳＣＳＩコマンド戻り値に「ＧＯＯＤ」をセットしてＳＣＳＩコマンドエミュレーション処理終了を前記ＳＣＳＩコマンドトラップモジュールへ通知することを特徴とする請求項１１に記載の共有排他制御方式を備えたコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遠隔地にあるストレージシステムを構成するディスク装置等へデータのコピー（リモートコピー）を行うボリュームを用いたコンピュータシステムにおける複数の上位装置間の調停（共有排他制御) 機能を備えたデータ格納システムに係り、このような共有排他制御機能を備えたコンピュータシステムにおける共有排他制御方式及びその装置に好適なものである。
【背景技術】
【０００２】
本発明は、遠隔地にあるリモートコピーを行うボリュームを有する複数の上位装置を用いて構築した共有ディスクモデルのクラスタシステムに好適な調停を可能にしたコンピュータシステムを提供する。
【０００３】
上位装置であるホストコンピュータ及び複数の記憶装置システム即ちストレージシステムを有する情報処理システムを構築したコンピュータシステムにおいて、複数の記憶装置システム間でのデータコピーを行う技術としてリモートコピーがある。リモートコピーとは、情報処理システムにおいて、上位装置が介在すること無しに、物理的に離れた場所にある複数の記憶装置システム同士がデータのコピー、すなわちデータの二重書きを行う技術である。また、上記の記憶装置システムとは、複数の記憶装置及びそれらの記憶装置を制御するコントローラとから構成されるシステム、所謂ストレージシステムを指す。
【０００４】
このようなリモートコピーを行う情報処理システムにおいては、物理的に離れた場所にそれぞれ配置された記憶装置システムの間が専用回線あるいは公衆回線でお互いに接続されている。この接続に用いられる専用回線あるいは公衆回線をリモートコピーラインといい、以下では専用回線等と称する。
【０００５】
ある記憶装置システムが有する論理的な記憶領域（以下、論理ボリューム）のうち、リモートコピーの対象となる論理ボリューム（以下、コピー元論理ボリューム）の容量と同容量の論理ボリュームがコピー元論理ボリュームがコピーされる記憶装置システムに確保される。この確保された論理ボリューム（以下、コピー先論理ボリューム）は、コピー元論理ボリュームと一対一の対応関係（以下、コピーペア）を有するように形成される。コピー元論理ボリュームのデータは、専用回線等を介してコピー先論理ボリュームにコピーされる。
【０００６】
コピー元論理ボリュームに含まれるデータの更新があった場合、更新されたデータは専用回線等を介してコピー先論理ボリュームを有する記憶装置システムに転送され、コピー元論理ボリュームに対応するコピー先論理ボリュームにも更新されたデータが書き込まれる。リモートコピーの技術を用いると、複数の記憶装置システムを有する情報処理システムにおいて、複数の記憶装置システムで同一内容の論理ボリュームを保持する事ができる。
【０００７】
コピー元とコピー先というコピーペアを作成することによって、コピー元からコピー先へとコピー方向が一方方向に決定される。コピー元論理ボリュームには上位装置より書き込み処理をすることができる。逆に、コピー先論理ボリュームは、上位装置の書き込み処理をすることはできない。リモートコピーに関する技術は「特許文献１」、あるいは「特許文献２」に開示されている。
【０００８】
従来、複数の上位装置から共有される記憶装置は、任意の上位装置からの共有排他制御要求に基づき、個々の上位装置からのアクセス要求に対する共有排他制御を実現している。例えば、上位装置と記憶装置とのインターフェースとしてＳＣＳＩ（Small Computer System Interface ）を採用する情報処理システムにおいては、上記ＳＣＳＩで規定するリザーブ系のコマンドを用いて前記記憶装置の論理ボリューム単位での共有排他制御を実現することができる。
【０００９】
論理ボリュームをある上位装置がリザーブした際には、リザーブした上位装置からのみのリードアクセス、ライトアクセスが可能な状態となる。なお、ＳＣＳＩに関する技術としては「非特許文献１」に記載された「ＳＣＡＳＩ−２」詳細解説の項目６．１５に説明がある。
【００１０】
現状のリモートコピー技術環境ではＳＣＳＩのリザーブ系コマンドによる共有排他制御機構は考慮されておらず、ある記憶装置システム中の論理ボリュームをリザーブコマンドによりロックした際も、他の記憶装置システム内のリモートコピー対応論理ボリュームにはロックの状態が伝わらないようになっている。
【００１１】
この他の共有排他制御方法としては、共有される記憶装置内の共有ボリュームを用いたロックファイルを用いた方法や、ディスクの特定のセクタを用いた共有排他方法がある。
【００１２】
また、クラスタリング（単に、クラスタとも称する）は、複数の上位装置（ホストコンピュータ又はホストサーバー）を結合して、あたかも１個の単独装置のように振舞わせることを可能にする公知の技術である。クラスタリングは、並列処理、負荷バランス、及びフォールトトレランスの目的に使用される。クラスタ（クラスタコンピューティングシステム）を構成する上位装置であるクラスタサーバーは、協力して、計算機負荷やリスクの分散をさせる。もし、クラスタコンピューティングシステム中の一つのサーバーが障害になっても、オペレーティングシステムは障害中のプロセスをクラスタコンピューティングシステム中のほかの正常サーバーに移すことができる。これにより、ユーザは、障害サーバーが回復するまでの間も仕事を続けることができる。
【００１３】
クラスタを構成する各上位装置群は、当該上位装置群を接続するネットワーク、典型的にはインターネット等のＩＰ（Internet protocol)を用いたネットワーク、によって接続される。このネットワークを用いることによって、各上位装置はお互いの状態を相互に通信している。この通信をクラスタ通信、あるいはハートビート通信と称する。
【００１４】
複数の上位装置によって一つの記憶装置に接続し、クラスタを構築するモデルのクラスタを共有ディスクモデルクラスタと呼ぶ。この共有ディスクモデルクラスタには、ハートビートが失われた際に、共有ディスク内の論理ボリュームを用いて共有排他制御を用いることにより、お互いの稼動状態を確認して、処理が分裂し個別に動作する状況（スプリットブレイン) になることを阻止しているモデルが存在する。この処理の分裂を防ぐ制御を調停（アービトレーション）と呼ぶ。例えば、マイクロソフトクラスタサーバー(Microsoft Cluster Server ：以下、「ＭＳＣＳ」) がそうである。
【００１５】
なお、本発明は、ＭＳＣＳに限定されるものではなく、共有ディスク装置を用いたコンピュータシステムにおける共有排他制御を行うシステム全般に適用できるものであるが、ここでは、ＭＳＣＳを例として説明する。ＭＳＣＳにおいては、排他制御を行う管理用ボリューム（調停用ディスク又は調停用ボリューム又はクォーラムディスク）に対してＳＣＳＩコマンドの発行を行いて共有排他制御を実現し、スプリットブレイン状態を回避している。マイクロソフトクラスタの動作に関しては「特許文献３」、「特許文献４」に開示がある。
【特許文献１】特開２００３−７６５９２号公報
【特許文献２】米国特許明細書第５，７４２，７９２号
【特許文献３】米国特許明細書第６，２７９，０３２号
【特許文献４】米国特許明細書第６，４０１，１２０号
【非特許文献１】「ＳＣＳＩ−２」（１９９７年２月１日第３版ＣＱ出版発行）
【発明の開示】
【発明が解決しようとする課題】
【００１６】
上記従来技術では、共有ディスクを前提とした共有排他を行うソフトウエア、例えば一部クラスタソフトウエアは、リモートコピーを適応した環境において共有排他制御が正常に行えず動作できない。
【００１７】
本発明の第１の目的は、共有された記憶装置環境で共有排他制御を行って動作することを想定したソフトウエアを、リモートコピー適応環境下において正常に動作させる手段を備えたコンピュータシステムを提供することにある。
【００１８】
本発明の第２の目的は、クラスタソフトウエアＭＳＣＳの行う共有ボリュームを用いた調停をリモートコピー適応環境下において正常に動作させる手段を備えたコンピュータシステムを提供することにある。
【００１９】
本発明の第３の目的は、クラスタソフトウエアＭＳＣＳをリモートコピー適応環境下において正常に動作させる手段を備えたコンピュータシステムを提供することにある。
【課題を解決するための手段】
【００２０】
上記第１の目的のための共有排他制御のリモートコピー環境適応は、コンピュータシステムの各上位装置に調停エミュレーションソフトウエアを備え、各上位装置の調停エミュレーションソフトウエアで２段階調停を行うことによって実現される。この２段階調停は、既存の共有ボリュームを用いた共有排他制御を用いることによって各サイト内での共有排他制御を行い、次に各サイト内での調停に勝った上位装置によるサイト間の共有排他制御を行う。
【００２１】
上記第２の目的達成のためのサイト間の共有排他制御は、リモートコピーペアを形成するボリュームはコピー元又はコピー先というボリューム属性を持ち、リモートコピーペアを形成する各ボリュームにおいて一つのボリュームでコピー元の属性を持つことができることを利用して実現する。
【００２２】
上記第３の目的のためのＭＳＣＳのリモートコピー環境適応は、ＭＳＣＳの発行するＳＣＳＩコマンドをトラップし、ＳＣＳＩコマンドの戻り値を操作することによって実現される。ＭＳＣＳの調停によって利用されるＳＣＳＩコマンドのリード（Read）系コマンド、ライト（Write ）系コマンド、ロック系コマンドをトラップすることによって、ＭＳＣＳにはひとつの共有ボリュームを用いた共有排他制御が行われているように振舞うことによって、リモートコピー環境への適応を実現する。
【発明の効果】
【００２３】
上記第１の目的のための手段により、共有された記憶装置環境で共有排他制御を行って動作することを想定したソフトウエアが、リモートコピー適応環境下において正常に動作できるコンピュータシステムを構築することができる。
【００２４】
上記第２の目的のための手段により、クラスタソフトウエアＭＳＣＳの行う共有ボリュームを用いた調停をリモートコピー適応環境下において正常に動作可能としたコンピュータシステムを構築することができる。
【００２５】
上記第３の目的のための手段により、クラスタソフトウエアＭＳＣＳをリモートコピー適応環境下において正常に動作可能としたコンピュータシステムを構築することができる。
【００２６】
本発明によれば、複数の記憶装置システム間でリモートコピーペアを形成時にコピーペアを形成したボリュームは双方向にコピーを行うことができる。各上位装置はリモートコピーペアを形成したどのボリュームにも自由に書き込むことができる。その結果、上位装置は、距離の離れたサイト内の複数の記憶装置システムを同一の記憶装置システムとして扱うことができる。また、リモートコピー構成時において、リモートコピーペアとして構成された記憶装置システム間でリザーブ状態を伝播できるようになる。よって、リモートコピー環境時もＳＣＳＩのリザーブ系コマンド等による排他制御が利用可能となる。
【発明を実施するための最良の形態】
【００２７】
図１は本発明のコンピュータシステムを構成する上位装置と記憶装置システムの一例を説明する構成図である。なお、記憶装置システムは、ディスクアレイ装置や半導体記憶装置などで構成される。図１において、上位装置１０００ａ，・・１０００ｂを通信網であるＳＡＮ（Storage Area Network）１０１０ａで接続した共有の記憶装置システム１０２０ａ、上位装置１０００ｃ，・・１０００ｄを同じくＳＡＮ１０１０ｂで接続した共有の記憶装置システム１０２０ｂを有する。記憶装置システム１０２０ａと記憶装置システム１０２０ｂはリモートコピーライン１０６０で接続されている。
【００２８】
上位装置１０００ａは、上位装置プロセッサ１５００、メモリ１５１０、キーボード１５２０、ディスクインターフェース（ディスクＩ／Ｆ）１５４０、上位装置記憶ディスク１５５０、ディスプレイ１５６０、およびこれらの間を通信可能とするシステムバス１５３０などで構成される。なお、上位装置１０００ｂ、１０００ｃ、１０００ｄも１０００ａと同様を有する。
【００２９】
上位装置プロセッサ１５００は上位装置１０００ａ内の演算を行う機能を有する。メモリ１５１０は主として上位装置を動作させるオペレーションシステムやその他のソフトウエアがロードされ、各プログラム実行時にプログラムの命令（コマンド）を記憶する場所として用いられる。キーボード１５２０は上位装置内で動作する各種ソフトウエアなどへの入力処理を行う際などに用いられる。
【００３０】
ディスプレイ１５６０は、上位装置内で動作する各種ソフトウエアなどからの出力を表示するために用いられる。ディスクＩ／Ｆ１５４０は、上位装置より外部記憶装置への入出力（Ｉ／Ｏ）要求を処理する際に用いられる。ディスクＩ／Ｆ１５４０としてＳＣＳＩインターフェースを持つものやファイバーなどのＳＡＮ環境のインターフェースを持つものなどがある。上位装置記憶ディスク１５５０は、上位装置より実行されるプログラムデータ及び上位装置の固有データが格納される。
【００３１】
記憶出力１０２０ａ（１０２０ｂも同様）は、ホストインターフェース（ホストＩ／Ｆ）１５７０、ディスクコピーインターフェース（ＤＫＣＩ／Ｆ）１５９０、ディスク制御部１６２０、共有メモリ１６４０、キャッシュメモリ１６００、これらの間を通信可能とするクロスバスイッチなどで構成されるスイッチング制御部１６１０、及び物理ディスク１６３０などで構成される。
【００３２】
ホストＩ／Ｆ１５７０はＣＰＵやメモリを備え、主として上位装置との間の通信機能を提供する。このホストＩ／Ｆ１５７０は上位装置からのデータＩ／Ｏ（データ入出力）要求を受信して、そのデータＩ／Ｏ要求を共有メモリ１６４０に書き込む。なお、リモートコピーの機能は、ＤＫＣＩ／Ｆ１５９０のＣＰＵ、メモリがこの機能を実現するプログラムを実行することで提供される。
【００３３】
キャッシュメモリ１６００は、主としてホストＩ／Ｆ１５７０、ＤＫＣＩ／Ｆ１５９０とディスク制御部１６２０との間で授受されるデータを一時的に記憶するために用いられる。例えば、ホストＩ／Ｆ１５７０が上位装置から受信したデータ入出力コマンドが書き込みコマンドである場合には、ホストＩ／Ｆ１５７０は上位装置から受信した書込みデータをキャッシュメモリ１６００に書き込む。また、ディスク制御部１６２０はキャッシュメモリ１６００から書込みデータを読み出して物理ディスクに書き込む。
【００３４】
ディスク制御部１６２０は、ホストＩ／Ｆ１５７０やＤＫＣＩ／Ｆ１５９０より共有メモリ１６４０に書き込まれたＩ／Ｏ要求を読み出し、そのＩ／Ｏ要求に設定されているコマンド（ここでは、ＳＣＳＩコマンド）に従って物理ディスク１６３０にデータの書込みや読み出しなどの処理を実行する。ディスク制御部１６２０は、読み出しコマンドの場合は物理ディスク１６３０から読み出したデータをキャッシュメモリ１６００に書き込む。また、データの書込み完了通知や読み出し完了通知などをホストＩ／Ｆ１５７０に送信する。ディスク制御部１６２０は、物理ディスク１６３０を所謂ＲＡＩＤ（Redundant Array of Inexpensive Disks）方式のＲＡＩＤレベル（例えば、０、１、５）に従って、複数の物理ディスクに一つの論理ボリュームを分散配置する機能を備えることもある。物理ディスク１６３０は、例えば、ハードディスク装置である。物理ディスク１６３０は記憶装置システムと一体型とすることもできるし、別体とすることもできる。
【００３５】
ＤＫＣＩ／Ｆ１５９０は、他の記憶システムとデータ転送をするための通信インターフェースであり、リモートコピーにおける他の記憶装置システムへのデータの転送は、このＤＫＣＩ／Ｆ１５９０を介して行われる。
【実施例１】
【００３６】
以下、本発明のコンピュータシステムの実施例１について図面を参照して詳細に説明する。図２は、本発明を適用したコンピュータシステムの構成図である。図２において、このコンピュータシステムは、記憶装置システム１０２０ａにＳＡＮ１０１０ａを介して接続された複数の上位装置１０００ａ，１０００ｂからなるサイト１０８０ａと、記憶装置システム１０２０ｂにＳＡＮ１０１０ｂを介して接続された複数の上位装置１０００ｃ，１０００ｄからなるサイト１０８０ｂで構成されている。記憶装置システム１０２０ａには、調停用ディスク１０３０ａが配置されている。記憶装置システム１０２０ｂには、調停用ディスク１０３０ｂが配置されている。
【００３７】
記憶装置システム１０２０ａと記憶装置システム１０２０ｂは、専用回線等（専用回線あるいは公衆回線）を用いたリモートコピーライン１０６０で接続されているものとする。記憶装置システム１０２０ａ、記憶装置システム１０２０ｂは、リモートコピーライン１０６０経由で、ＳＣＳＩプロトコル又はＩＰプロトコルあるいはそれらの組み合わせを用いて通信されているものとする。調停用ディスク１０３０ａと調停用ディスク１０３０ｂは、リモートコピーライン１０６０を介してリモートコピーペアを形成しているものとする。
【００３８】
上位装置１０００ａおよび上位装置１０００ｂと、上位装置１０００ｃおよび上位装置１０００ｄとは、専用回線や公衆回線を用いた上位装置間ネットワーク１０７０で接続されているものとする。上位装置１０００ａと上位装置１０００ｂと上位装置１０００ｃと上位装置１０００ｄは、上位装置間ネットワーク１０７０経由で、ＩＰプロトコルを用いて通信しているものとする。特に、本実施例で説明するＭＳＣＳに関しては、各上位装置は、クラスタ構成のノードと呼ばれる。各ノードは、上位装置間ネットワーク１０７０をＷＡＮ(Wide Area Network) で構成されている。この上位装置間ネットワーク１０７０はクラスタ通信( ハートビート) に用いられる。
【００３９】
上位装置１０００ａ、上位装置１０００ｂ、上位装置１０００ｃ、および上位装置１０００ｄのそれぞれには、クラスタを構築するのに必要な、クラスタソフトウエアを備えたクラスタリング部１０４０ａ、１０４０ｂ、１０４０ｃ、１０４０ｄ、及び本実施例の機能を実現する調停エミュレーションソフトウエアを備えた調停エミュレーション実行部１０５０ａ、１０５０ｂ、１０５０ｃ、１０５０ｄが配置されている。なお、以下の記述および特許請求の範囲の記述では、理解を容易にするため、クラスタリング部を、それらが備えるクラスタソフトウエア１０４０ａ、１０４０ｂ、１０４０ｃ、１０４０ｄとして説明する。また、同様に、調停エミュレーション実行部もそれらが備える調停エミュレーションソフトウエア１０５０ａ、１０５０ｂ、１０５０ｃ、１０５０ｄとして説明する。
【００４０】
図３は、図２に示した構成における２段階調停の概念図である。図３において、サイト１０８０ａを構成する上位装置１０００ａおよび上位装置１０００ｂと、サイト１０８０ｂを構成する上位装置１０００ｃおよび上位装置１０００ｄのハートビートが途絶えた場合、各上位装置はクラスタの制御権を得るために調停（アービトレーション）を行う。図２で説明したリモートコピー環境での調停は、以下の手順で行われる。
【００４１】
まず、お互いのサイト内での調停が行われ、次にサイト間での調停が行われる。具体的に説明すると、ハートビート断絶時、サイト１０８０ａ内で上位装置１０００ａと上位装置１０００ｂによる調停Ａ２０００が行われる。また、サイト１０８０ｂ内で上位装置１０００ｃと上位装置１０００ｄによる調停Ｂ２０１０が行われる。この調停Ａ２０００及び調停Ｂ２０１０によって、各サイト内での調停に勝ち、クラスタの制御権を得る可能性のある上位装置が１つ決定する。
【００４２】
本実施例においては、調停Ａ２０００において上位装置１０００ａが調停Ａ勝ち２１００、上位装置１０００ｂが調停Ａ負け２１１０になったものとする。また、調停Ｂ２０１０において上位装置１０００ｃが調停Ｂ勝ち２１２０、上位装置１０００ｄが調停Ｂ負け２１３０になるものととする。
【００４３】
調停Ａ２０００、調停Ｂ２０１０の終了後、サイト間の調停が行われる。本実施例においては、各サイト内の調停に勝った上位装置１０００ａと上位装置１０００ｃによって、調停Ｃ２０２０のサイト間調停が行われる。ここでは、調停Ｃ２０２０において上位装置１０００ａが調停Ｃ勝ち２１４０、上位装置１０００ｃが調停Ｃ負け２１５０になったとする。これら調停Ａ２０００、調停Ｂ２０１０及び調停Ｃ２０２０によって、サイト内の調停勝ち上位装置、サイト間の調停勝ち上位装置が順に決定し、リモートコピー環境下のクラスタシステムの制御権を得られる１つの上位装置（ここでは上位装置１０００ａ）が決定する。
【００４４】
図４は、クラスタを構成している上位装置内のソフトウエアモジュール構成である。ここでは、上位装置を参照符号１０００として説明する。上位装置１０００の記憶ディスク（図１の上位装置記憶ディスク１５５０）には、クラスタソフトウエア１０４０、調停エミュレーションソフトウエア１０５０が配置される。また、これらのソフトウエア以外にリモートコピーの制御を上位装置から可能とするソフトウエアが必要となる。なお、本実施例で用いるクラスタソフトウエア１０４０はＭＳＣＳである。
【００４５】
クラスタソフトウエア１０４０は、クラスタ制御メイン部３０００とクラスタディスクドライバ３０１０からなる。クラスタ制御メイン部３０００は、各種クラスタの制御を行うモジュールとなり、クラスタ通信を行ったり、クラスタの管理する資源の管理を行ったり、クラスタの調停を行うためにクラスタディスクドライバ３０１０の制御を行ったりする。クラスタディスクドライバ（モジュール）３０１０は、クラスタが利用する共有ボリュームを用いた共有排他制御を実現する機能を有する。
【００４６】
調停エミュレーションソフトウエア１０５０は、ＳＣＳＩコマンドトラップモジュール３０２０及びサイト間調停エミュレーション制御モジュール３０４０から構成される。ＳＣＳＩコマンドトラップモジュール３０２０は、クラスタディスクドライバ３０１０から発行されたＳＣＳＩコマンドをディスクへ到達する前にトラップするモジュールである。例えば、クラスタディスクドライバ３０１０から調停用ディスク１０３０に対して発行されたＳＣＳＩコマンド３１００は、ＳＣＳＩコマンドトラップモジュール３０２０にトラップされる。ＳＣＳＩコマンドトラップモジュール３０２０は、実際に調停ディスク１０３０に対してトラップしたＳＣＳＩコマンド３１１０を発行し、発行したＳＣＳＩコマンドの戻り値３１３０を取得したり、必要に応じてサイト間調停エミュレーション制御モジュール３０４０を介した処理を行ったりする。
【００４７】
これらの処理終了後、ＳＣＳＩコマンドトラップモジュール３０２０は、クラスタディスクドライバ３０１０より発行されたＳＣＳＩコマンド３１００の戻り値として、ＳＣＳＩコマンドの戻り値３１２０をセットする。サイト間調停エミュレーション制御モジュール３０４０は、ＳＣＳＩコマンドトラップモジュール３０２０よりトラップされたＳＣＳＩコマンドと、サイト間のリモートコピーペアのボリューム状態を対応させる機能を有する。ＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０間の連絡内容３０５０は図５で後述する。
【００４８】
サイト間調停エミュレーション制御モジュール３０４０は、リモートコピー制御モジュール３０３０を介してリモートコピーのペア関係制御（図４では、リモートコピーペア制御と表記）３０７０を行う。このリモートコピーのペア関係制御３０７０のペアの操作には、「ペア形成指示」、「ペア分割指示」、「ペア状態確認」がある。「ペア形成指示」はペアの形成を行う命令とする。「ペア分割指示」はペアの分割を行う。リモートコピーのボリュームペア状態とペア操作の関係は図６で後述する。つまり、サイト間調停エミュレーション制御モジュール３０４０は、ペア操作指示をリモートコピー制御モジュール３０３０に出すことによって、リモートコピー制御モジュールは指示に対するリモートコピーのペア関係制御３０７０を行う。
【００４９】
つまり、調停エミュレーションソフトウエア１０５０において行われるサイト内及びサイト間の調停は、ＳＣＳＩコマンドトラップモジュール３０２０において実際の調停ディスク１０３０に発行されるＳＣＳＩコマンド及びサイト間調停エミュレーション制御モジュール３０４０によって行われるペア操作によって、サイト内の調停、及びサイト間の調停が行われ、システムの排他制御が実現できる。サイト内の排他とサイト間の排他を表す条件を図６に示す。図６の関係によりシステム全体としての排他を実現しており、この図６の関係を満たすように、調停エミュレーションソフトウエア１０５０は動作する。
【００５０】
図５は、ＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０間の連絡内容３０５０の説明図である。ＳＣＳＩコマンド種別１１０は、ＳＣＳＩコマンドトラップモジュール３０２０よりトラップされたＳＣＳＩコマンドの種類を示し、リード（Read）系コマンド、ライト（Write ）系コマンド、リザーブ（Reserve ）系コマンド、リリース（Release ）系コマンド及びリセット（Reset ）系コマンドの種別コードが値となる。
【００５１】
ＳＣＳＩコマンド戻り値（ＳＣＳＩステイタス）１２０としては、ＳＣＳＩコマンドのそれぞれのコマンドに対して規格化されているＳＣＳＩコマンドの戻り値１２０がセットされるものとする。ＳＣＳＩコマンドの戻り値１２０は、ＳＣＳＩコマンドの成功を表すステイタスは「ＧＯＯＤ」とし、他のリザーブ系コマンドによる排他状態による失敗時のステイタスは「Conflict」とし、その他の失敗時を「ERROR 」として表すものとする。リザーブ系コマンド及びリセット系コマンドは、戻り値を持たないものや必ずＳＣＳＩコマンドの戻り値１２０が「ＧＯＯＤ」となるものがある。
【００５２】
ＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０間の連絡方法には、関数呼び出しや共有メモリを用いたイベント通知がある。関数呼び出しは、ＳＣＳＩコマンドトラップモジュール３０２０がＳＣＳＩコマンド種別１１０とＳＣＳＩコマンドの戻り値１２０を引数としてサイト間エミュレーション制御モジュール３０４０が実行される。その戻り値として、ＳＣＳＩコマンドの戻り値を受け取る方式とする。共有メモリを用いたイベント通知方法では、ＳＣＳＩコマンドトラップモジュール３０２０がＳＣＳＩコマンドトラップをイベントとしてサイト間エミュレーション制御モジュール３０４０に通知する。サイト間エミュレーション制御モジュール３０４０が処理終了後、ＳＣＳＩコマンド処理終了をイベントしてＳＣＳＩコマンドとＳＣＳＩコマンドトラップモジュール３０２０に通知する。イベントを受け取った各ＳＣＳＩコマンドトラップモジュールは、お互いのモジュールより更新・参照が可能な共有メモリを用いてＳＣＳＩコマンド種別１１０及びＳＣＳＩコマンドの戻り値１２０情報の連絡を行う。
【００５３】
図６は、ボリュームのペア状態( ペアステイタス) とペア操作の状態遷移図である。この状態遷移は図４のリモートコピー制御モジュール３０３０とサイト間調停エミュレーション制御モジュール３０４０間の連絡内容３０６０を説明するものである。ボリュームのペアステイタスは、リモートコピーのペアボリュームの状態として記憶装置システム１０２０（例えば、図１〜図３における記憶装置システム１０２０ａ，１０２０ｂ）内の制御モジュールにて管理される。ペア操作は、上位装置１０００内のリモートコピー制御モジュール３０３０（図４）によって行われるリモートコピーペアに対するペア操作である。
【００５４】
図６において、ボリュームのペアステイタスは、「ペア分割ステイタス」５０５０、「コピー元ステイタス」５０６０及び「コピー先ステイタス」５０７０がある。「ペア分割ステイタス」５０５０はリモートコピーが取られていないボリュームの状態を表し、このステイタス中のボリュームに対して、このボリュームに繋がる上位装置からはリード／ライト（Read/Write）アクセスは可能な状態となる。
【００５５】
「ペア分割ステイタス」５０５０は、記憶装置システム１０２０によっては、ペア分割時のデータの変更差分データをビットマップ等に記憶しておき、ペア再同期時に時間短縮の図れるものや、分割後のペア再同期時に新規にコピーを取ることなしにペア状態になれるものや、再同期時にボリュームの全データのコピーからリモートコピーを作成する必要のあるものなどがある。
【００５６】
「コピー元ステイタス」５０６０は、リモートコピーペアのコピー元となるボリュームのペアステイタスである。「コピー元ステイタス」５０６０のボリュームは、このボリュームに繋がる上位装置からは、リード／ライト（Read/Write）アクセスが可能な状態であり、このボリュームに変更が行われると、コピー先ボリュームに変更内容が更新されるペアステイタスである。
【００５７】
「コピー先ステイタス」５０７０は、「コピー元ステイタス」５０６０と対になる。「コピー先ステイタス」５０７０のボリュームは、「コピー元ステイタス」５０６０のボリューム内容が同期又は非同期に反映される。「コピー先ステイタス」５０７０のボリュームは、このボリュームに繋がる上位装置からは、ライト（Write ）アクセスできない。リード（Read）アクセスに関しては、可能なものと不可能なものがある。
【００５８】
次に、状態遷移「ペア形成指示」にかかる状態遷移５１００及び５１１０について説明する。リモートコピーペアを形成する予定のそれぞれのボリュームのペアステイタス初期状態は、「ペア分割ステイタス」５０５０であるとする。「ペア形成指示」が発行される上位装置が繋がる記憶装置システム１０２０（図２、図３の１０２０ａ，１０２０ｂ）内ボリュームのペアステイタスは、「ペア形成指示」が発行されると「コピー元ステイタス」５０６０となり（状態遷移５１００）、コピーペアを形成する他方の記憶装置システム内のボリュームのペアステイタスは「ペア分割ステイタス」５０５０から「コピー先ステイタス」５０７０となる（状態遷移５１１０）。
【００５９】
次に、状態遷移「ペア分割指示」にかかる状態遷移５２００及び５２１０について説明する。既にリモートコピーペアを形成しているコピーペアボリュームは、それぞれ「コピー元ステイタス」５０６０及び「コピー先ステイタス」５０７０であるとする。ここで、ボリュームのペアステイタスが「コピー元ステイタス」５０６０を表すボリュームに繋がる上位装置より「ペア分割指示」が発行されると、ペア操作前「コピー元ステイタス」５０６０及び「コピー先ステイタス」５０７０のペア状態は、共に「ペア分割ステイタス」５０５０となる（状態遷移５２００及び状態遷移５２１０）。また、ボリュームのペアステイタスが、「コピー先ステイタス」５０７０を表すボリュームに繋がる上位装置より「ペア分割指示」が発行されると、上記と同様に、ペア操作前「コピー元ステイタス」５０６０及び「コピー先ステイタス」５０７０のペア状態は、共に「ペア分割ステイタス」５０５０となる（状態遷移５２００及び状態遷移５２１０）。
【００６０】
図７は、本発明の実施例１における調停エミュレーションソフトウエアが行うロックエミュレートのロック状態テーブルの説明図であり、図２に示された調停エミュレーションソフトウエア１０５０（１０５０ａ〜１０５０ｄ）の状態テーブルを示す。本実施例では、調停ボリューム１０３０（図４の調停用ディスク１０３０）の調停ディスクのＳＣＳＩリザーブ（SCSI Reserve）状態２２０と調停ボリュームのペアステイタス２３０を用いてサイト内の調停による勝ち負け及びサイト間の調停による勝ち負けを決定する。本実施例では、サイト内の調停及びサイト間の調停を利用することで、最終的に調停に勝つ上位装置１０００は、1 つの上位装置１０００（図２では上位装置１０００ａ）となる。
【００６１】
本実施例は、クラスタソフトウエアＭＳＣＳを例として説明しているので、ＭＳＣＳの調停に勝ったノードは、調停用ディスク１０３０（図４）をロックする。つまり、図４において、上位装置１０００内のクラスタディスクドライバ３０１０が、調停用ディスク１０３０をＳＣＳＩリザーブ（SCSI Reserve）状態とする。本実施例における調停ボリュームである調停用ディスク１０３０のＳＣＳＩリザーブ状態２１０は、自ノードロック状態２５０、他ノードロック状態２６０、ロックなし状態（どのノードもロック状態でない）２７０、及び状態遷移中がある。
【００６２】
自ノードロック状態２５０は、自らの上位装置が調停用ディスク１０３０をリザーブ（Reserve ）できている状態である。自ノードロック状態２５０は、同一サイト内において調停用ディスク１０３０がＳＣＳＩリザーブ状態であり、且つ図６で説明した調停ボリューム（調停用ディスク）のペアステイタスが「コピー元ステイタス」５０６０である。
【００６３】
他ノードロック状態２６０は、他の上位装置が、調停用ディスク１０３０をリザーブ（Reserve ）している状態である。この他ノードロック状態２６０は、他サイト内の上位装置における調停用ディスク１０３０のペアステイタスが「コピー元ステイタス」５０６０であり、自サイト内の調停用ディスク１０３０のペアステイタスが「コピー先ステイタス」５０７０である状態、又は自サイト内の他上位装置が調停用ディスク１０３０をＳＣＳＩリザーブ状態としており、自サイト内の調停用ディスク１０３０のペアステイタスが「コピー元ステイタス」５０６０である状態である。
【００６４】
ロック無し状態２７０は、どのノードも調停用ディスクをリザーブしていない状態である。ロック無し状態２７０には、すべての上位装置がロックを持っていない状態と、ある上位装置がロックを行う遷移中の状態、ある上位装置がロックを解除する遷移中の状態という３つの状態がある。すべての上位装置がロックを持っていない状態は、調停用ディスクのリザーブ（Reserve ）状態２２０がノンリザーブ（Non-Reserve ）状態であり、ペアステイタスが「ペア分割ステイタス」５０５０の場合である。
【００６５】
状態遷移中の２つの場合は、ペアステイタスが「ペア分割ステイタス」５０５０であるが、ある上位装置が調停用ディスクをＳＣＳＩリザーブ（SCSI Reserve）状態としている場合と、自上位装置側サイトの調停用ディスク１０３０のペアステイタスが「コピー元ステイタス」５０６０であり、自サイト内の調停用ディスクのＳＣＳＩリザーブ（SCSI Reserve）状態２２０がノンリザーブ状態の場合とがある。
【００６６】
本実施例は、図７で説明した調停用ディスク１０３０のリザーブ状態として図４のクラスタディスクドライバ３０１０に伝えることを実現する為に、調停エミュレーションソフトウエア１０５０において、以下の図８、図９、図１０、図１１で説明する制御フローを行うことによって実現される。
【００６７】
図８は、本発明の実施例１における全体の制御のフローを説明するフローチャートである。図８のフローチャートを図４を参照して説明する。図８は、クラスタドライバ３０１０よりＳＣＳＩコマンドが発行されてから、発行されたＳＣＳＩコマンドに対する処理を調停エミュレーションソフトウエア１０５０にて行い、ＳＣＳＩコマンド発行元クラスタドライバ３０１０へＳＣＳＩコマンドの戻り値をセットするまでの制御に係る処理フローである。
【００６８】
図８において、ＳＣＳＩコマンドトラップモジュール３０２０の行う処理フローに関して説明する。ＳＣＳＩコマンドトラップモジュール３０２０では、ステップ７０００においてクラスタドライバ３０１０より発行されたＳＣＳＩコマンドのトラップが行われる。ＳＣＳＩコマンドトラップ後に、処理はステップ７０１０に移る。ステップ７０１０は、ステップ７０００にてトラップされたＳＣＳＩコマンドを処理中の上位装置に繋がる記憶装置システム１０２０（図１〜図３に記憶装置システム１０２０、１０２０ａ、１０２０ｂ）内の調停用ディスク１０３０に対して発行する。このＳＣＳＩコマンドの調停用ディスク１０３０からの戻り値をＳＣＳＩコマンドトラップモジュール３０２０でキャッチし、処理はステップ７０２０に移る。
【００６９】
ステップ７０２０では、ステップ７０２０で得たＳＣＳＩコマンドの調停用ディスク１０３０からの戻り値の判定を行う。戻り値がコンフリクト（「Ｃｏｎｆｌｉｃｔ」）の場合、処理はステップ７０４０に移る。一方、戻り値が「ＧＯＯＤ」又は「ＥＲＲＯＲ」の場合は、ＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０の連絡内容（図５）の内容として、ＳＣＳＩコマンドの戻り値をセットする。この連絡内容のセット終了後、処理はステップ７０３０に移る。ステップ７０３０は、サイト間調停エミュレーション制御モジュール３０４０で行われる処理となる。ステップ７０３０の処理フローは、図９、図１０及び図１１で後述する。
【００７０】
ステップ７０３０終了後、処理はステップ７０４０に移る。ステップ７０４０はステップ７０１０でディスクより受け取ったＳＣＳＩコマンドの戻り値、もしくはサイト間調停エミュレーション制御モジュール処理にてセットされたＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０の連絡内容（図５参照）をステップ７０００でトラップしたＳＣＳＩコマンドの戻り値としてセットする（ＳＣＳＩコマンドの戻り値をセット（１））。ステップ７０４０の処理終了後、クラスタディスクドライバ３０１０は、発行したＳＣＳＩコマンドの戻り値を受領することができる。
【００７１】
上記したように、ステップ７０２０において、戻り値が「ＧＯＯＤ」である場合と「ＥＲＲＯＲ」である場合には処理をステップ７０３０に移している。ここで、ステイタス「ＥＲＲＯＲ」に関し、「ＥＲＲＯＲ」の場合に処理をステップ７０３０に移す理由としては、リモートコピーペアのペアステイタス「コピー先ステイタス」５０７０（図６参照）によって、ディスクへの書き込みが失敗した場合に、ステイタス「Ｃｏｎｆｌｉｃｔ」が帰ってこないケースが考えられる。本実施例において、リモートコピーのペアステイタスを、ＳＣＳＩプロトコルを用いた排他制御と組み合わせて行っているので、書き込み失敗をＳＣＳＩコマンドの戻り値として「Ｃｏｎｆｌｉｃｔ」で正確にリザーブ状態を表したステイタスで返さないと、上位で動くソフトウエア（本実施例ではＭＳＣＳ）が正常に動作できない。
【００７２】
図９、図１０及び図１１は、サイト間調停エミュレーション制御モジュール３０４０の処理（図８におけるステップ７０３０）の制御フローチャートである。図９は、ＳＣＳＩコマンドのリード（Read）系又はライト（Write ）系のコマンドに対するサイト間調停エミュレーション制御モジュール処理制御フローチャートである。図４のサイト間調停エミュレーション制御モジュール３０４０が、リード系又はライト系のＳＣＳＩコマンドに対する処理を開始した際に、最初にステップ８０００が実行される。ステップ８０００では、サイト間調停エミュレーション制御モジュール３０４０よりリモートコピー制御モジュール３０３０を介して、リモートコピーペアの状態を確認する「ペア状態確認」ペア操作が行われる。ペア操作確認操作終了後、図６で説明したペアステイタス「コピー元ステイタス」５０６０及び「ペア分割ステイタス」５０５０の場合は、処理はステップ８０１０に処理が移る。また、ペアステイタス「コピー先ステイタス」５０７０の場合は、処理はステップ８０３０に移る。
【００７３】
ステップ８０１０では、ＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０の連絡内容（図５）をチェックし、ＳＣＳＩコマンドの戻り値１２０がセットされていない場合はステップ８０２０に処理が移る。また、ＳＣＳＩコマンドの戻り値１２０がセットされている場合は、サイト間調停エミュレーション制御モジュール３０４０での処理は終了し、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。ステップ８０２０では、ＳＣＳＩコマンドの戻り値１２０に「ＧＯＯＤ」をセットする。ＳＣＳＩコマンドの戻り値１２０をセット終了後、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。
【００７４】
ステップ８０３０では、ＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０の連絡内容（図５）として、ＳＣＳＩコマンドの戻り値１２０に「Ｃｏｎｆｌｉｃｔ」をセットする。ＳＣＳＩコマンドの戻り値１２０をセット終了後、サイト間調停エミュレーション制御モジュール３０４０での処理は終了し、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。
【００７５】
図１０は、ＳＣＳＩコマンドのリザーブ系に対するサイト間調停エミュレーション制御モジュールの処理制御フローチャートである。図４におけるサイト間調停エミュレーション制御モジュール３０４０がリザーブ系のＳＣＳＩコマンドに対する処理を開始した際に、最初にステップ９０００が実行される。ステップ９０００では、サイト間調停エミュレーション制御モジュール３０４０より、リモートコピー制御モジュール３０３０を介してリモートコピーペアの状態を確認する「ペア状態確認」ペア操作が行われる。ペア操作終了後、調停ボリュームペアステイタスが「コピー元ステイタス」５０６０（図６参照）である場合は、ステップ９０１０に処理が移り、「ペア分割ステイタス」５０５０の場合は処理はステップ９０３０に移り、「コピー先ステイタス」５０７０の場合はステップ９０８０に処理が移る。
【００７６】
ステップ９０１０では、ＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０の連絡内容（図５）をチェックし、ＳＣＳＩコマンドの戻り値１２０がセットされていない場合は、ステップ９０２０に処理が移る。また、ＳＣＳＩコマンドの戻り値１２０がセットされている場合は、サイト間調停エミュレーション制御モジュール３０４０での処理は終了し、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。ステップ９０２０では、ＳＣＳＩコマンドの戻り値１２０に「ＧＯＯＤ」をセットする。ＳＣＳＩコマンドの戻り値１２０をセット終了後、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。
【００７７】
ステップ９０３０では、サイト間調停エミュレーション制御モジュール３０４０よりリモートコピー制御モジュール３０３０を介してリモートコピーペアの形成を行う「ペア形成指示」ペア操作が行われる。ペア操作終了後、処理はステップ９０４０に移る。ステップ９０４０では、ステップ９０３０で行った「ペア形成指示」のペア操作の成功又は失敗によって処理を分岐する。すなわち、「ペア形成指示」のペア操作が成功した際は処理はステップ９０５０に移り、ペア操作が失敗した際は処理はステップ９０６０に移る。ステップ９０５０では、ＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０の連絡内容（図５）をチェックし、ＳＣＳＩコマンドの戻り値１２０がセットされていない場合はステップ９０７０に移る。
【００７８】
また、ＳＣＳＩコマンドの戻り値１２０がセットされている場合は、サイト間調停エミュレーション制御モジュール３０４０での処理は終了し、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。ステップ９０７０では、ＳＣＳＩコマンドの戻り値１２０に「ＧＯＯＤ」をセットする。ＳＣＳＩコマンドの戻り値１２０をセット終了後、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。ステップ９０８０は、ＳＣＳＩコマンドの戻り値１２０に「Ｃｏｎｆｌｉｃｔ」をセットする。ＳＣＳＩコマンドの戻り値１２０をセット終了後、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。
【００７９】
図１１は、ＳＣＳＩコマンドのリリース（Release ）系又はリセット（Reset ）系に対するサイト間調停エミュレーション制御モジュール処理制御フローチャートである。サイト間調停エミュレーション制御モジュール３０４０がリリース系又はリセット系のＳＣＳＩコマンドに対する処理を開始した際に、最初にステップ１００００が実行される。ステップ１００００では、サイト間調停エミュレーション制御モジュール３０４０よりリモートコピー制御モジュール３０３０を介して、リモートコピーペアの状態を確認する「ペア状態確認」ペア操作が行われる。ペア操作確認操作終了後、図６で説明したペアステイタス「コピー元ステイタス」５０６０及び「コピー先ステイタス」５０７０の場合は、処理はステップ１００１０に移る。また、ペアステイタス「ペア分割ステイタス」５０５０の場合は、処理はステップ１００３０に移る。
【００８０】
ステップ１００１０では、サイト間調停エミュレーション制御モジュール３０４０よりリモートコピー制御モジュール３０３０を介してリモートコピーペアの形成を行う「ペア分割指示」ペア操作が行われる。ペア操作終了後、処理はステップ１００２０に移る。ステップ１００２０は、ＳＣＳＩコマンドの戻り値１２０に「ＧＯＯＤ」をセットする。ＳＣＳＩコマンドの戻り値１２０をセット終了後、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。ステップ１００３０は、ＳＣＳＩコマンドの戻り値１２０に「ＧＯＯＤ」をセットする。ＳＣＳＩコマンドの戻り値１２０をセット終了後、処理をＳＣＳＩコマンドトラップモジュール３０２０へ戻す。
【００８１】
以上説明した実施例１により、遠隔地にあるリモートコピーを行うボリュームを有する複数の上位装置を用いた共有ディスクモデルのクラスタシステムにおける当該遠隔地にあるリモートコピーを行うボリュームを用いた共有ディスクモデルに好適な調停を可能にしたコンピュータシステムを提供することができる。
【実施例２】
【００８２】
上記した実施例１では、図８で説明した制御フローを用いて調停エミュレーションソフトウエア１０５０の制御を行うものである。すなわち、実施例１での制御は、クラスタディスクドライバ３０１０が発行したＳＣＳＩコマンドを最初に自サイトの調停ディスク１０３０に発行し、次の段階で処理をサイト間調停エミュレーション制御モジュール３０４０に移すという順序で処理を行うようにしている。これに対し、実施例２では、次のような制御フローとした。
【００８３】
図１２は、本発明の実施例２における全体の制御のフローを説明するフローチャートである。実施例２では、実施例１における図８の制御フローに代えて図１２に示す制御フローを用いて調停エミュレーションソフトウエア１０５０の制御を行うものである。図１２に示す制御フローでは、図４のクラスタドライバ３０１０よりＳＣＳＩコマンドが発行される。そして、発行されたＳＣＳＩコマンドに対する処理を調停エミュレーションソフトウエア１０５０にて行い、ＳＣＳＩコマンド発行元クラスタドライバ３０１０へＳＣＳＩコマンドの戻り値をセットするまでの処理フローとなる。
【００８４】
図１２のフローチャートにおいて、ＳＣＳＩコマンドトラップモジュール３０２０の行う処理フロー、ＳＣＳＩコマンドトラップモジュール３０２０の処理フローに関して説明する。本実施例のＳＣＳＩコマンドトラップモジュール３０２０では、ステップ１１０１０においてクラスタディスクドライバ３０１０より発行されたＳＣＳＩコマンドのトラップが行われる。ＳＣＳＩコマンドのトラップ後、処理はステップ７０３０に移る。ステップ７０３０の処理終了後、処理はステップ１１０２０に移る。
【００８５】
ステップ１１０２０は、ステップ７０３０でセットされたサイト間調停エミュレーション制御モジュール処理にてセットされたＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０の連絡内容（図５参照）のＳＣＳＩコマンドの戻り値１２０の判定を行う。ＳＣＳＩコマンドの戻り値１２０の判定において、「Ｃｏｎｆｌｉｃｔ」のステイタスがセットされている場合は、処理をステップ１１０３０（ＳＣＳＩコマンドの戻り値をセット（２））に移す。また、「Ｃｏｎｆｌｉｃｔ」以外のステイタスがセットされている場合は、処理をステップ７０１０に移す。ステップ７０１０の処理終了後、処理はステップ１１０３０に移る。
【００８６】
ステップ１１０３０は、ステップ７０１０でクラスタディスクドライバ３０１０より受け取ったＳＣＳＩコマンドの戻り値、もしくはサイト間調停エミュレーション制御モジュール処理７０３０にてセットされたＳＣＳＩコマンドトラップモジュール３０２０とサイト間調停エミュレーション制御モジュール３０４０の連絡内容（図５）を、ステップ１１０１０でトラップしたＳＣＳＩコマンドの戻り値としてセットする。ステップ１１０３０の処理終了後、クラスタディスクドライバ３０１０は、発行したＳＣＳＩコマンドの戻り値を受領することができる。
【００８７】
以上説明した実施例２によっても、遠隔地にあるリモートコピーを行うボリュームを有する複数の上位装置を用いた共有ディスクモデルのクラスタシステムにおける当該遠隔地にあるリモートコピーを行うボリュームを用いた共有ディスクモデルに好適な調停を可能にしたコンピュータシステムを提供することができる。
【実施例３】
【００８８】
実施例１、実施例２では、ＳＣＳＩコマンドトラップモジュール３０２０においてトラップしたＳＣＳＩコマンドの処理の順番をＳＣＳＩコマンドの種類に関わらずに、自サイトの調停用ディスク１０３０に発行するというステップと、サイト間調停エミュレーション制御モジュール３０４０の処理というステップとを決められた順に行う制御である。これに対し、実施例３では、この処理の順番をＳＣＳＩコマンドの種類毎に変えて制御を行うようにした。
【００８９】
例えば、ＳＣＳＩコマンドの、「Reserve 」コマンド、「Reset 」コマンド及び「Release 」コマンドは、図８の処理フローを用いた制御を行う。つまり、ＳＣＳＩコマンドトラップモジュール３０２０において、「Reserve 」コマンド、「Reset 」コマンド及び「Release 」コマンドをトラップした場合は、ステップ７０１０のローカルサイトの調停ディスクへＳＣＳＩコマンドの発行を行う処理に移る。また、ＳＣＳＩコマンドの「Read」コマンド及び「Write 」コマンドは、図１２の処理フローを用いた制御を行う。つまり、ＳＣＳＩコマンドトラップモジュール３０２０において、「Read」コマンド及び「Write 」コマンドをトラップした場合は、ステップ７０３０のサイト間調停エミュレーション制御モジュールの処理に移る。実施例３では、このような処理を行う。
【００９０】
このように、実施例３によれば、実施例１および実施例２の効果に加えて、ＳＣＳＩコマンドの種類毎に処理の順番を変更することによってシステムの環境にあった処理順序を行うことにより、自サイトの調停ディスク１０３０に、コマンドの発行というステップと、サイト間調停エミュレーション制御モジュール３０４０の処理というステップのどちらか一方の処理で制御が終了するケースが多くなり、システム全体の性能を改善することができる。
【実施例４】
【００９１】
図１３は、本発明の実施例４を説明するコンピュータシステムの構成図である。実施例１、実施例２、及び実施例３では、２サイトのリモートコピー環境での実施例について説明した。実施例４では、図１３に示すような複数サイトを有するコンピュータシステムでのリモートコピー環境に本発明を実施したものである。図１３中、図２と同一参照符号は同一機能部分に対応する。なお、図１３では、図２のサイト１０８０ａと１０８０ｂに加えてサイト１０８０ｃ、・・・を上位装置間ネットワーク１０７０で接続すると共に、各サイトのリモートコピーライン１０６０ａ，１０６０ｂ，１０６０ｃをリモートコピーネットワーク１２０１０で接続してある。
【００９２】
すなわち、各サイトの記憶装置システム１０２０（１０２０ａ，１０２０ｂ，１０２０ｃ）はリモートコピーライン１０６０（１０６０ａ，１０６０ｂ，１０６０ｃ）がリモートコピーネットワーク１２０１０で相互に接続される。図６で説明した「コピー元ステイタス」５０６０となれる調停用ディスク１０３０は１つであるので、実施例１での説明と同様に各サイト内の調停と各サイト間の調停によって、１つの調停に勝つ上位装置１０００を決定することができる。
【００９３】
本実施例により、実施例１〜実施例３の効果に加えて、３以上のサイトで構成されたコンピュータシステムにおいても、各サイト内とサイト間での調停でリモートコピー環境下のクラスタシステムの制御権を獲得した一つの上位装置１０００を決定することができるという効果が得られる。
【実施例５】
【００９４】
実施例１、実施例２及び実施例３では、ＳＣＳＩプロトコルのロック系コマンドを用いた調停に関する共有排他制御のリモートコピー環境適応に関して説明した。実施例５は、ＳＣＳＩプロトコルでない、共有ボリューム内のロックファイルを用いたロック制御のリモートコピー環境に本発明を適用したものである。ロックファイルによる共有排他制御をリモートコピー環境に適用するには、図４で説明したＳＣＳＩコマンドトラップモジュール３０２０をロックファイルを監視するモジュールに変更し、図７に示した調停ボリュームのロック状態の調停用ディスクのＳＣＳＩリザーブ（SCSI Reserve）状態２２０をロックファイルのロック状態に変更する。
【００９５】
例えば、ＳＣＳＩコマンドトラップモジュール３０２０において、ロックファイルを監視するモジュールに変更する。ＳＣＳＩコマンドトラップモジュールＳＣＳＩコマンドトラップを行う処理７０００、１１０１０では、ロックファイルへのアクセスの監視を行う処理へと変更する。また、ローカルサイト調停ディスクへＳＣＳＩコマンド発行処理７０１０では、ロックファイルの共有ディスクへの書込み、削除処理及び存在確認などを行う処理へと変更する。また、ＳＣＳＩコマンドの戻り値をセットする処理７０４０、１１０３０では、ロックファイルへのアクセスに対する要求に対する要求の戻り値、ロックファイルの書込み処理、削除処理、存在確認の結果をセットする処理へと変更する。ここで、自上位装置が書き込んだロックファイルが存在する場合、自上位装置がロックを行っているシステムとすると、自上位装置がロックを行っている状態は、図７で説明した自ノードロック状態２５０は、自ノードロックファイルが存在し且つ調停ボリュームのペア状態２３０がコピー元ステイタスである状態となる。
【００９６】
本実施例によれば、このような変更を加えることで、サイト内のロックに関しては既存のロック制御を行い、サイト内のロックを行った上位装置がサイト間の調停を行えるようになり、ロックファイルを用いた共有排他制御をリモートコピー環境への適用することができる。
【実施例６】
【００９７】
実施例１、実施例２及び実施例３ではＳＣＳＩプロトコルのロック系コマンドを用いた調停に関する共有排他制御のリモートコピー環境適応に本発明を適用したものである。また、実施例５はロックファイルを用いた調停に関する共有排他制御のリモートコピー環境に本発明を適用したものである。これに対し、実施例６では、ＳＣＳＩプロトコルでない、共有ボリュームないの特定のロックセクタ用いたロック制御のリモートコピー環境に本発明を適用したものである。
【００９８】
実施例６において、ロックセクタによる共有排他制御をリモートコピー環境に適応するには、図４のＳＣＳＩコマンドトラップモジュールをロックセクタを監視するモジュールに変更し、図７に示した調停ボリュームのロック状態の調停ディスクのＳＣＳＩリザーブ（SCSI Reserve）状態２２０を、ロックセクタのロック状態に変更する。
【００９９】
例えば、ＳＣＳＩコマンドトラップモジュール３０２０において、ロックセクタを監視するモジュールに変更する。ＳＣＳＩコマンドトラップモジュールＳＣＳＩコマンドトラップを行う処理７０００、１１０１０では、ロックセクタへのアクセスの監視を行う処理へと変更する。また、ローカルサイト調停ディスクへＳＣＳＩコマンド発行処理７０１０では、ロックセクタの共有ディスクへの書込み、削除処理及び存在確認などを行う処理へと変更する。また、ＳＣＳＩコマンドの戻り値をセットする処理７０４０、１１０３０では、ロックセクタへのアクセスに対する要求に対する要求の戻り値、ロックファイルの書込み処理、削除処理、存在確認の結果をセットする処理へと変更する。ここで、自上位装置のＩＤをロックセクタに書き込んだ場合、自上位装置がロックを行っているシステムとすると、自上位装置がロックを行っている状態は、図７で説明した自ノードロック状態２５０は、自ノードのＩＤがロックセクタに存在し且つ調停ボリュームのペア状態２３０がコピー元ステイタスである状態となる。
【０１００】
本実施例によれば、このような変更を加えることで、サイト内のロックに関しては既存のロック制御を行い。サイト内のロックを行ったホストがサイト間の調停を行えるようになり、ロックセクタを用いた共有排他制御をリモートコピー環境に適用させることができる。
【実施例７】
【０１０１】
実施例１、実施例２及び実施例３では、クラスタソフトウエアＭＳＣＳの調停ボリュームに本発明を適応したものである。実施例７においては、調停ボリュームでないクラスタ管理の共有ディスクに本発明を適用したものである。実施例７も図８又は図１２の制御フローを用いてサイト間での運用が可能である。これらの制御フローの説明は繰り返しとなるので省略する。
【０１０２】
本実施例により、調停ボリュームでないクラスタ管理の共有ディスクにおける共有排他制御をリモートコピー環境に適用させることができる。
【図面の簡単な説明】
【０１０３】
【図１】本発明のコンピュータシステムを構成する上位装置と記憶装置システムの一例を説明する構成図である。
【図２】本発明を適用したコンピュータシステムの構成図である。
【図３】図２に示した構成における２段階調停の概念図である。
【図４】クラスタを構成している上位装置内のソフトウエアモジュール構成の説明図である。
【図５】ＳＣＳＩコマンドトラップモジュールとサイト間調停エミュレーション制御モジュール間の連絡内容の説明図である。
【図６】ボリュームのペア状態( ペアステイタス) とペア操作の状態遷移図である。
【図７】本発明の実施例１における調停エミュレーションソフトウエアが行うロックエミュレートのロック状態テーブルの説明図である。
【図８】本発明の実施例１における全体の制御のフローを説明するフローチャートである。
【図９】ＳＣＳＩコマンドのリード系又はライト系のコマンドに対するサイト間調停エミュレーション制御モジュール処理制御フローチャートである。
【図１０】ＳＣＳＩコマンドのリザーブ系に対するサイト間調停エミュレーション制御モジュールの処理制御フローチャートである。
【図１１】ＳＣＳＩコマンドのリリース系又はリセット系に対するサイト間調停エミュレーション制御モジュール処理制御フローチャートである。
【図１２】本発明の実施例２における全体の制御のフローを説明するフローチャートである。
【図１３】本発明の実施例４を説明するコンピュータシステムの構成図である。
【符号の説明】
【０１０４】
１０００・・・上位装置
１０１０・・・ＳＡＮ
１０２０・・・記憶装置システム
１０３０・・・調停用ディスク
１０４０・・・クラスタソフトウエア
１０５０・・・調停エミュレーションソフトウエア
１０６０・・・リモートコピーライン
１０７０・・・上位装置間ネットワーク
１０８０・・・サイト
１０９０・・・コンピュータシステム
２０００・・・調停Ａ
２０１０・・・調停Ｂ
２０２０・・・調停Ｃ
３０００・・・クラスタ制御メイン部
３０１０・・・クラスタディスクドライバ
３０２０・・・ＳＣＳＩコマンドトラップモジュール
３０３０・・・リモートコピー制御モジュール
３０４０・・・サイト間調停エミュレーション制御モジュール
５０５０・・・ペア分割ステイタス
５０６０・・・コピー元ステイタス
５０７０・・・コピー先ステイタス。
【図１】
2005215885.tif 000003
【図２】
2005215885.tif 000004
【図３】
2005215885.tif 000005
【図４】
2005215885.tif 000006
【図５】
2005215885.tif 000007
【図６】
2005215885.tif 000008
【図７】
2005215885.tif 000009
【図８】
2005215885.tif 000010
【図９】
2005215885.tif 000011
【図１０】
2005215885.tif 000012
【図１１】
2005215885.tif 000013
【図１２】
2005215885.tif 000014
【図１３】
2005215885.tif 000015