(57)【要約】【課題】それぞれクラスタサービスを行なっているホストコンピュータが接続される３以上のデータセンタからなるデータセンターシステムで、フェイルオーバーを行なう場合、速やかにフェイルオーバ処理がされ、フェイルオーバ後の処理が遅滞なく開始されるようにする必要がある。【解決手段】３つ以上のデータセンタからなるデータセンタシステムにおいて、メインデータセンタで稼動中のホストコンピュータがフェイルオーバーを行なう場合に、各センタのホストコンピュータは、稼動優先順位情報を保持し、当該優先順位情報に基づいて、フェイルオーバ先のホストコンピュータを選択する。【選択図】  図４
2005018510.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータセンタと、第２のデータセンタと、第３のデータセンタとからなるデータセンタシステムであって、
前記データセンタシステムは、
第１のホストコンピュータと第１の記憶システムからなる前記第１のデータセンタと、
第２のホストコンピュータと、第１の記憶システムのコピーデータを保持する第２の記憶システムとからなる前記第２のデータセンタと、
第３のホストコンピュータと、前記第１の記憶システムと前記第２の記憶システムとが配置される距離よりも遠地に配置され、前記第１の記憶システムのコピーデータを保持する第３の記憶システムと、からなる前記第３のデータセンタと、で構成され、
前記第１のホストコンピュータと、前記第２のホストコンピュータと、前記第３のホストコンピュータは、それぞれ、稼動優先順位を保持するメモリ領域と、前記クラスタサービスプログラム保持するメモリ領域と、を有し
前記クラスタサービスプログラムは、前記稼動優先順位を保持するメモリ領域を参照して実行され、
前記稼動優先順位情報に基づいて、前記第１のホストコンピュータが、フェイルオーバーするホストコンピュータを選択することを特徴とするデータセンタシステム。
【請求項２】
第１のデータセンタと、第２のデータセンタと、第３のデータセンタとからなるデータセンタシステムであって、
前記データセンタシステムは、
第１のホストコンピュータと第１の記憶システムからなる前記第１のデータセンタと、
第２のホストコンピュータと、第１の記憶システムのコピーデータを保持する第２の記憶システムとからなる前記第２のデータセンタと、
第３のホストコンピュータと、前記第１の記憶システムと前記第２の記憶システムとが配置される距離よりも遠地に配置され、前記第１の記憶システムのコピーデータを保持する第３の記憶システムと、からなる前記第３のデータセンタと、で構成され、
前記第１の記憶システムと、前記第２の記憶システムとの間は、同期方式によるリモートコピーを実行し、
前記第１の記憶システムと、前記第３の記憶システムとの間は、非同期方式よるリモートコピー実行し、
前記第１のホストコンピュータと、前記第２のホストコンピュータと、前記第３のホストコンピュータは、それぞれ、リモートコピーの方式を保持するメモリ領域と、前記クラスタサービスプログラム保持するメモリ領域と、を有し  前記第１のホストコンピュータが、フェイルオーバを実行する場合に、前記リモートコピーの方式を保持するメモリ領域を参照して、前記第２の記憶システムに接続される前記第２のホストコンピュータ対してフェイルオーバーすることを特徴とするデータセンタシステム。
【請求項３】
請求項１に記載のデータセンタシステムにおいて、
前記稼動優先順位情報が、リモートコピーの種別によって定義されることを特徴とするデータセンタシステム。
【請求項４】
請求項２に記載のデータセンタシステムにおいて、
前記第２の記憶システムに接続される前記第２のホストコンピュータがフェイルオバー不可能な場合に、前記第３のホストコンピュータに対してフェイルオーバすることを特徴とするデータセンタシステム。
【請求項５】
請求項１に記載のデータセンタシステムにおいて、
前記稼動優先順位情報が管理テーブルとしてホストコンピュータ毎に定義され、前記管理テーブルは、リモートコピーの種別を示す項目、及び少なくとも１つ以上の稼動優先順位を示す項目を有することを特徴とするデータセンタシステム。
【請求項６】
請求項５に記載のデータセンタシステムにおいて、前記稼動優先順位を保持する管理テーブルを、管理者が登録する手段を有することを特徴とするデータセンタシステム。
【請求項７】
請求項１記載のコンピューターシステムであって、
前記第１のホストコンピュータが、前記稼動優先順位情報を作成するために、前記第１の記憶システム、前記第２の記憶システム、前記第３の記憶システムのいずれかが保持する記憶システムの構成情報を読み出すことを特徴とするデータセンタシステム。
【請求項８】
第１のホストコンピュータと第１の記憶システムからなる第１のデータセンタと、
第２のホストコンピュータと、第１の記憶システムのコピーデータを保持する第２の記憶システムとからなる第２のデータセンタと、
第３のホストコンピュータと、前記第１の記憶システムと前記第２の記憶システムとの距離よりも遠地に配置され、前記第１の記憶システムのコピーデータを保持する第３の記憶システムと、からなる第３のデータセンタと、で構成され、前記第１のホストコンピュータと前記第２のホストコンピュータと前記第３のホストコンピュータとが、クラスタサービスを行なうデータセンタシステムの制御方法であって、
この制御方法は、
前記第１のホストコンピュータの稼動状態を前記第１のホストコンピュータ以外のホストコンピュータが監視する第１のステップと、
前記第１のホストコンピュータ以外のコンピュータが、前記第１のホストコンピュータの稼動障害を検出した場合に、前記稼動障害を検出したホストコンピュータが、このホストコンピュータ内部のメモリに保持される稼動優先順位情報を参照して、フェイルオバー先となるホストコンピュータを選択する第２のステップと、
前記ホストコンピュータを選択するステップにおいて選択されたホストコンピュータに対して前記第１のホストコンピュータのフェイルオーバ処理を行なう第３のステップと、からなることを特徴とするデータセンタシステムの制御方法。
【請求項９】
請求項８に記載のデータセンタシステムの制御方法において、
前記第２のステップにおける稼動優先順位情報が、リモートコピー種別によって定義されることを特徴とするデータセンタシステムの制御方法。
【請求項１０】
請求項８に記載のデータセンタシステムの制御方法において、
前記第２のステップにおいて選択されるホストコンピュータが、前記第２のホストコンピュータであることを特徴とするデータセンタシステムの制御方法。
【請求項１１】
請求項８に記載のデータセンタシステムの制御方法において、
前記第１の記憶システム前記第２の記憶システムとの間に同期方式のリモートコピーが実行され、前記第１の記憶システムと前記第３の記憶システムとの間に非同期方式のリモートコピーが実行されている場合に、前記第２のステップにおいて、前記第２の記憶システムが前記第１のホストコンピュータのフェイルオーバ先として選択されることを特徴とするデータセンタシステムの制御方法。
【請求項１２】
請求項１１に記載のデータセンタシステムの制御方法において、
前記稼動優先順位情報を前記第１、第２、及び第３の記憶システム内に蓄積される構成情報を読み出して生成することを特徴とするデータセンタシステムの制御方法。
【請求項１３】
請求項８に記載のデータセンタシステムの制御方法において、
前記各ホストコンピュータは、どのホストコンピュータがリモートコピー元の記憶システムに接続されるホストコンピュータであるかを示す動作フラグを有し、前記第１のホストコンピュターの稼動に障害が発生した場合に、当該第１のホストコンピュータの動作を引きつぐホストコンピュータが、自身に記録される前記動作フラグをオンにするとともに、他のホストコンピュータの内の動作フラグ状態も更新する第４のステップと、
前記引継ぎを行なったホストコンピュータが、このホストコンピュータに接続される記憶システムをリモートコピー元とするようにリモートコピーを他の記憶システムとの間に設定する第５のステップと、を有することを特徴とするデータセンタシステムの制御方法。
【請求項１４】
請求項１３に記載のデータセンタシステムの制御方法において、
前記第５のステップにおいて、前記リモートコピーを設定する場合に、前記新たにリモートコピー先となる記憶システムが、フェイルオーバー前に非同期コピー方式のリモートコピー先であった場合に、前記記憶システムに対して、前記非同期方式のリモートコピー期間において未転送のであったデータを新たに設定されたリモートコピーのデータ転送に先立って転送することを特徴とするデータセンタシステムの制御方法。
【請求項１５】
第１のホストコンピュータと第１の記憶システムからなる第１のデータセンタと、
第２のホストコンピュータと、第１の記憶システムのコピーデータを保持する第２の記憶システムとからなる第２のデータセンタと、
第３のホストコンピュータと、前記第１の記憶システムと前記第２の記憶システムとの距離よりも遠地に配置され、前記第１の記憶システムのコピーデータを保持する第３の記憶システムと、からなる第３のデータセンタと、で構成され、前記第１のホストコンピュータと前記第２のホストコンピュータと前記第３のホストコンピュータとが、クラスタサービスを行なうデータセンタシステムの各ホストコンピュータまたは各記憶システムのいずれかに搭載されるアプリケーションプログラムであって、
このアプリケーションプログラムは、
前記第１のホストコンピュータの稼動状態を前記第１のホストコンピュータ以外のホストコンピュータに監視させる第１のステップと、
前記第１のホストコンピュータ以外のコンピュータが、前記第１のホストコンピュータの稼動障害を検出した場合に、前記稼動障害を検出したホストコンピュータが、このホストコンピュータ内部のメモリに保持される稼動優先順位情報を参照して、フェイルオバー先となるホストコンピュータを選択する第２のステップと、
前記ホストコンピュータを選択するステップにおいて選択されたホストコンピュータに対して前記第１のホストコンピュータのフェイルオーバ処理を行なう第３のステップと、を有することを特徴とするアプリケーションプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のデータセンタからなるデータセンタシステムに関し、特にデータセンタ毎に接続されるホストコンピュータがクラスタ構成である場合のフェイルオーバー、フェイルバック制御に関する。
【０００２】
【従来の技術】
昨今のＩＴ化社会に伴ってコンピュータが貴重な情報を持つようになり、天災などに突如遭遇してもデータを安全に格納・保持することが極めて重要となった。それに伴い、記憶システムやデータの冗長化およびそれらの回復手段の整備は欠くことができない。
【０００３】
ところで、システムの冗長化を図るための手段の一つにクラスタサービスの利用がある。クラスタとはコンピュータに何らかの障害が発生した場合を想定して、予めメインコンピュータとは別に待機状態のコンピュータを準備し、万一稼動中のメインコンピュータが停止しても待機状態のコンピュータに処理を移し、コンピュータを止めることなく稼動を維持するシステムのことである。
【０００４】
また、稼動中のメインコンピュータが停止して待機状態のコンピュータに処理が移ると、メインコンピュータが認識していたディスクボリュームを、待機状態のコンピュータに認識させるようにする。このような特徴から、クラスタサービスは重要なシステムに取り入れられている技術である。
【０００５】
一方、データの冗長化という面では、ホストコンピュータに接続される複数の記憶システム間でデータのコピーを保持する技術がある。特に物理的に離れた記憶システム同士でデータの送受信を行う技術をリモートコピーと呼び、現在の記憶システムはホストコンピュータの介在なしに、複数の記憶システム同士がデータのコピーを行うリモートコピー技術も提案されている。
【０００６】
上述のようなリモートコピーの技術とクラスタ構成の技術とを組み合わせると、システムとデータの冗長性を強化できる。
【０００７】
この点を、２台のホストコンピュータにそれぞれ一台ずつ記憶システムが接続され、これらのホストコンピュータの一つを待機系コンピュータとし、もう一つを稼動系コンピュータとしてクラスタを構成している状態を例にとって説明する。
【０００８】
稼動しているホストコンピュータに接続される記憶システムから、もう一方の待機状態のホストコンピュータに接続される記憶システムにリモートコピーを実施している場合は、稼動系の記憶システム（リモートコピー元）のボリュームを、その記憶システムに接続する稼動中のホストコンピュータから認識できるように設定し、待機系の記憶システム（リモートコピー先）のボリュームをその記憶システムに接続する待機系のホストコンピュータから認識できるように設定する。
【０００９】
このようなシステムにおいて稼動系のホストコンピュータに障害が発生すると、クラスタサービスによって待機中のホストコンピュータに処理が移動し、待機中のホストコンピュータからリモートコピー先の記憶システムのデータを認識することができるようになる。
【００１０】
さらに、処理を受け取ったホストコンピュータに接続される記憶システムを新たにリモートコピー元として設定し、リモートコピー元であった記憶システムをリモートコピー先となるように設定することも可能である。
【００１１】
このようにホストコンピュータに障害が発生しても、記憶システムのリモートコピーの向きを張り替え（コピー元とコピー先を入れ替えること）ることで、システム全体の稼動を停止することなくリモートコピーを継続する事が可能である。
【００１２】
ところでこのようなリモートコピーの方法には同期転送方式と非同期転送方式がある。このリモートコピーの処理の具体的な流れを図３に示す。ここで各システムを構成するそれぞれのコンピュータをノードＡ、ノードＢ、ノードＣ、ノードＤと呼ぶ。
【００１３】
同期転送方式のリモートコピー１２００では、ノードＡ１０１０からの書込み命令を記憶システムＡ１０２０が受領すると（▲１▼）、同データの書込み命令を記憶システムＢ１０２１に発行し（▲２▼）、記憶システムＢ１０２１でのデータの書き込みが完了すると完了通知が記憶システムＡ１０２０へ送信され（▲３▼）、書き込み完了通知をノードＡ１０１０に発行する（▲４▼）。
【００１４】
この場合、ノードＡに接続される記憶システムＡ１０２０が保持するデータと記憶システムＢ１０２１が保持するデータとが一致性を保ちながら更新される。このような方式は同期転送方式のリモートコピーと呼ばれる。
【００１５】
一方、非同期転送方式のリモートコピー１２０１では、ノードＣ１０１３からの書込み命令を記憶システムＣ１０２２が受領すると（▲１▼）、同データの書込み完了命令をノードＣ１０１３に発行し（▲２▼）、記憶システムＣ１０２２はノードＣ１０１３の要求する処理とは非同期に記憶システムＤ１０２３への書込み命令を発行し（▲３▼）、書き込み完了通知を受領する（▲４▼）。
【００１６】
これらの両方式による違いは、次のとおりである。まず、同期転送方式のリモートコピー１２００を実施する記憶システムＡはホストコンピュータであるノードＡ１０１０の書き込み命令と同期してリモートコピー元の記憶システムＡ１０２０に書き込まれたデータをリモートコピー先の記憶システムＢ１０２１にコピーするため、通常これらの記憶システムは同じデータを保持する。
【００１７】
一方、非同期転送方式のリモートコピー１２０１を実施する記憶システムは、ホストコンピュータであるノードＣ１０１３からの書き込み命令と非同期に、リモートコピー元記憶システムＣ１０２２に書き込まれたデータをリモートコピー先記憶システムＤ１０２３にコピーする。
【００１８】
つまり、記憶システムＣ１０２２は、ノードＣ１０１３に対して、データの書込みが完了した旨の通知を発行した後で、ノードＣ１０１３から書き込み要求を受けたデータをリモートコピー先である記憶システムＤ１０２３に転送する。
【００１９】
この場合のデータの転送は、記憶システムＣ１０２２独自のタスクスケジュールで行われるので、リモートコピー先記憶システムＤ１０２３はリモートコピー元よりも古いデータを持つ時間が長いが、リモート先記憶システムＤ１０２３へのデータの転送処理を待たずにノードＣ１０１３にデータ書き込みの完了を通知するので、ノードＣ１０１３は、直ちに次の処理に移ることができる。（例えば特許文献１）
【特許文献１】
米国特許５，５５４，３４７号公報
【００２０】
【発明が解決しようとする課題】
しかしながら、昨今では先述のとおり、情報システムが保持するデータの重要性がさらに高まっており、このような記憶システムを２拠点に配するようなシステムであっても十分とは言えないものとなってきた。また、特に情報処理システムの稼動が、仮に障害が発生したとしても中断されることなく、或いはその中断期間をさらに短くすることが切望される。本発明の第一の目的はこのような課題を解決することである。
【００２１】
【課題を解決するための手段】
上述のような課題を解決するための本願発明の装置構成の一つを図２を用いて簡単に説明する。
図２に示すように、本願発明のシステムは、それぞれが記憶システムを有する情報処理システムを少なくとも３拠点有し、それらの情報処理システムは、ネットワークで接続されている。
【００２２】
主業務を実行する稼動中のコンピュータ１０１０（以下、ノードＡ）に接続されてコピー元となる第１の記憶システムＡは、その近地に設置する第２の記憶システムＢ１０２１とそれよりも遠地に設置する第３の記憶システムＣ１０２２とそれぞれネットワークで接続されている。
【００２３】
ここで、コピー元となる記憶システムＡと比較的近い場所に設置された記憶システムＢ間で同期転送方式のリモートコピー１０８０を行い、コピー元となる記憶システムＡと記憶システムＢとの距離よりも、記憶システムＡと記憶システムＣとの距離が遠くなるように設置される記憶システムＣとの間のデータの転送を非同期転送方式のリモートコピーによって行うように構成する。
【００２４】
さらに、コピー元記憶システムＡの近地に設置する記憶システムＢと、コピー元の遠地に設置する記憶システムＣ間で非同期転送方式のリモートコピーを実施するように構成しても良い。
【００２５】
このような構成により、データの冗長性や情報処理システム自体の冗長性を高めることができる。また、コピー元となる稼動系情報処理システムに近い情報処理システムとの間におけるデータ転送を同期方式とし、コピー元となる稼動系情報処理システムに遠い情報処理システムとの間におけるデータ転送方式を非同期転送方式にしたので、同期方式のデータ転送による利点と、非同期転送による利点とを全体として享受することが可能となる。
【００２６】
同期転送方式によるリモートコピーを用いると両記憶システム間で同じデータを保持できるという利点があるものの、遠地に設置した記憶システムとの間のデータ転送に対してこの方式を用いると、データのコピーに時間を要するため、効率が悪くなることがある。
【００２７】
一方、非同期転送方式のリモートコピーは、接続される両記憶システム間にデータ内容の一時的な差異があるものの、リモートコピーの処理が記憶システムや、その上位にあるコンピュータの処理を妨げる事は無い。
【００２８】
従って、図２に示すようにリモートコピー元となる記憶システムと、その近地に設置する記憶システムとの間では同期転送方式のリモートコピーを行い、そして、リモートコピー元となる記憶システムの遠地に設置する記憶システムとの間では、非同期転送方式を用いる上記の構成が全体として性能をバランスよく保つのである。
【００２９】
換言すれば、コピー元データセンタ、近地のコピー先データセンタ、遠地のコピー先データセンタの３拠点を設け、各データセンタ内に記憶システムを設置し、それぞれをネットワーク接続する場合には、コピー元データセンタから近地のコピー先データセンタに同期転送方式によってリモートコピーを実施し、コピー元データセンタから遠地のコピー先データセンタに非同期転送方式によってリモートコピーを実施する構成が３データセンタ以上からなる多拠点のリモートコピー構成として非常に有効である。
【００３０】
ここで、近地とは、例えば渋谷−恵比寿間のような数Ｋｍの距離、遠地とは、例えば東京と大阪のような数百Ｋｍの距離を指すが、これらは固定的なものでなく、システムに要求される上位装置へのレスポンス性能や、障害復旧の瞬時性などによって、どの程度を遠地、近地とするかが定められることは言うまでもない。例えば、近地を同じビルのほかのフロアーにするという運用もあろう。
【００３１】
以下、説明の便宜のために、コピー元データセンタ（以下、「メインデータセンタ」）と、その近地にあるデータセンタと遠地にあるデータセンタとを有し、各データセンタが記憶システムを有して記憶システム同士が互いにコンピュータネットワークで接続しているデータセンタ構成を、３データセンタと呼ぶ。
【００３２】
本願発明の３データセンタの構成の一態様には例えば次ような構成が考えられる。各データセンタは、ホストコンピュータとそれに接続される記憶システムによって構成される。各データセンタのホストコンピュータ同士は、同一のネットワーク（例えばＴＣＰ／ＩＰを利用したネットワークなど）によって接続される。これらのホストコンピュータには、クラスタサービスを提供するソフトウェアが常駐され、オペレータの指示や障害の検出によって、その業務を他のコンピュータに受け継がせることができるように構成されている。
【００３３】
また記憶システム間は、ホストコンピュータ間の結合とは別のネットワーク（例えばＳＡＮなど）によって接続され、メインデータセンタの記憶システムから近地のデータセンタの記憶システムへのデータ転送は同期転送方式のリモートコピーを行うように構成し、メインデータセンタ内の記憶システムから遠地のデータセンタ内の記憶システムへのデータ転送は、非同期転送方式のリモートコピーを実施するように構成する。
【００３４】
このように接続されたデータセンタは、メインデータセンタの記憶システムに接続されたホストコンピュータに障害が発生した場合であっても、近地または遠地のどちらかのホストコンピュータにフェイルオーバー（実行中の業務を引き渡し）し、他のホストコンピュータによっての業務の稼動を維持することができる。
【００３５】
このようにフェイルオーバーを行う場合に、近地の同期転送方式によってデータを転送されていた記憶システムに接続されているホストコンピュータにフェイルオーバーすると、この記憶システムは、元のメインーデータセンタと同じデータを保持しているため、すぐに業務を引き継いで、稼動することができる。
【００３６】
この場合、新たなホストコンピュータが業務を行うこととなるので、そのホストコンピュータに接続されている記憶システムが、メインの記憶システムとなる。
【００３７】
一方、フェイルオーバーの後に更新または蓄積されるデータについても、上述の要求から冗長化する必要があるので、元のメインデータセンタに接続されていた記憶システムに対してリモートコピーを行う。この場合、新たなメインの記憶システムから、フェイルオーバー前にメインのデータセンタを構成していた記憶システムに対して、同期コピーを行うように構成すれば良い。  換言すれば、リモートコピーを実施する向きを変えるだけでリモートコピー環境の構築を含むフェイルオーバーの処理が終了する。
【００３８】
ところで、フェイルオーバー先として、データの転送方式に非同期式を採用している遠地のデータセンタのホストコンピュータを選択した場合は、そのホストコンピュータに接続される記憶システムはコピー元に比べ古いデータを保持している可能性が大きい。
【００３９】
そのため、フェイルオーバー処理に先立って、フェイルオーバー前のメインデータセンタ内の記憶システムの最新のデータか、それと同期して更新されているその他のデータセンタ内の記憶システム内のデータのいずれかを、参照してデータを最新の状態になるまで更新するか、それらからデータをコピーしてくる必要がある。つまり非同期でデータ転送されることの多い比較的遠地の記憶システムは最新のデータを保持していないため、このような記憶システムに接続されているホストコンピュータにフェイルオーバーする場合には、元のコピー元または同期方式でデータの転送がされている比較的近地の記憶システムが保持する最新のデータを新たに稼動系となるホストコンピュータに接続ざれる記憶システムにコピーすれば良い。
【００４０】
本発明の目的を換言すれば、主として稼動しているメインデータセンタと、複数のサブデータセンタで構成された環境において、メインデータセンタ内で稼動中のホストコンピュータを何らかの事情で、他のサブデータセンタ内のコンピュータにフェイルオーバーさせる場合に、上述のような種々のファクターを勘案して最適なフェイルオーバー対象となるコンピュータが選択可能なシステムを提供することである。
【００４１】
従って、この目的を達成するための本願発明のデータセンタシステムは、各データセンタ内のノード即ち、コンピュータが、自身に接続されている記憶システムから、リモートコピー状態を含む構成情報を取得し、記憶システムのリモートコピー状態とホストコンピュータとの関連を示すリモートコピー状態管理テーブル（以下、「管理テーブル」）を作成する。
【００４２】
この管理テーブルを全てのホストコンピュータで共有することで、各データセンタ内のホストコンピュータは、他のホストコンピュータとその他のホストコンピュータに接続される記憶システムがどのような方式のリモートコピー環境となっているかを認識することができる。
【００４３】
メインデータセンタ内のホストコンピュータか、そのホストコンピュータに接続される記憶システムのいずれかに障害が発生した場合や、それらの稼動の中止をしたい場合、メインデータセンタ内のホストコンピュータは、前述の管理テーブルを参照して、フェイルオーバー先として、他のデータセンタ内の適当なコンピュータを決定する。
【００４４】
具体的には、フェイルオーバーを行おうとするホストコンピュータは、管理テーブルを参照して自身に接続された記憶システムと同期して更新されている記憶システムに接続されているコンピュータを優先してフェイルオーバー先に選択するのである。
【００４５】
フェイルオーバー先として選択されたコンピュータに接続される記憶システムは、フェイルオーバー以降は、主としてデータを記憶するメイン記憶システムとなるから、フェイルオーバー前のメイン記憶システムに対するコピー元となるようにリモートコピーの方向を変更する。この変更は、記憶システムを管理する構成情報を変更することで行う。構成情報は、各記憶システム内に保持され、各記憶システムはこの構成情報を参照して、各記憶システム間でのデータの転送を行うのである。
【００４６】
ところで、フェイルオーバー先としてどのデータセンタのホストコンピュータが適当であるかは、ホストコンピュータが、先述の管理テーブルを参照して、フェイルオーバーが必要となる度に最適なものを選択するようにプログラムを組み込んでも良いが、予め優先度を決定し、それを管理テーブルに蓄積しておき、その管理テーブルの優先度を参照して、フェイルオーバー先を決定するようにしても良い。
【００４７】
また、ホストコンピュータが当該ホストコンピュータに接続される記憶システムと他のホストコンピュータに接続される記憶システムとがどのような形式のリモートコピーを行っているかに関する情報を収集し、それら収集した情報に基づいて自動的にフェイルオーバー優先度を決定して、当該管理テーブルに蓄積するようにしても良い。
【００４８】
一方、フェイルオーバーは、稼動中のホストコンピュータに障害が発生した場合にも必要となる。このような場合は、この稼動中のホストコンピュータからのコマンド発行で、フェイルオーバーを行うことはできない。従って、サブデータセンタの待機系のホストコンピュータのそれぞれは、常にメインデータセンタのホストコンピュータの稼動状態をネットワークを通じてハートビート等で確認し、その通信が途絶えた場合には、待機系のホストコンピュータの内、最も優先度の高いホストコンピュータによってフェイルオーバーが実行されなければならない。
【００４９】
即ち、サブデータセンタ内のノードである各ホストコンピュータは、稼動中のホストコンピュータの障害を検出した場合、自身がそのホストコンピュータにとって、最優先のフェイルオーバー先であるかどうかを前述の管理テーブルを参照して確認する。確認の結果、自身が最優先のフェイルオーバー先であると認識したホストコンピュータは、フェイルオーバー処理を開始する。
【００５０】
一方、ホストコンピュータは管理テーブルを参照して、自身に接続される記憶システムがメインの記憶システムになった場合に、他のホストコンピュータに接続される記憶システムをリモート先として、どのような方式でデータを転送するかを決定し、管理テーブルを更新する。記憶システムは、更新された管理テーブルに基づいて、同期方式のリモートコピーや、非同期方式のリモートコピーを他のデータセンタの記憶システムに対して設定する。
【００５１】
この場合、当該新たにメインとなったコンピュータにフェイルオーバーが必要となったときに、最優先でフェイルオーバー先となるコンピュータに接続される記憶システムと、この新たにメインとなったコンピュータとの間のリモートコピーの方式を同期方式としておくことで、さらにフェイルオーバーが必要となった際にも、最も効率よく、フェイルオーバーが可能なデータセンタにフェイルオーバーがされることとなる。
これまでに述べてきた、本願の課題を解決するためのデータセンタシステムの具体的な構成は、例えば次のように構成される。
第１のデータセンタと、第２のデータセンタと、第３のデータセンタとからなるデータセンタシステムであって、前記データセンタシステムは、第１のホストコンピュータと第１の記憶システムからなる前記第１のデータセンタと、  第２のホストコンピュータと、第１の記憶システムのコピーデータを保持する第２の記憶システムとからなる前記第２のデータセンタと、第３のホストコンピュータと、前記第１の記憶システムと前記第２の記憶システムとが配置される距離よりも遠地に配置され、前記第１の記憶システムのコピーデータを保持する第３の記憶システムと、からなる前記第３のデータセンタと、で構成され、  前記第１のホストコンピュータと、前記第２のホストコンピュータと、前記第３のホストコンピュータは、それぞれ、稼動優先順位を保持するメモリ領域と、前記クラスタサービスプログラム保持するメモリ領域と、を有し前記クラスタサービスプログラムは、前記稼動優先順位を保持するメモリ領域を参照して実行され、  前記稼動優先順位情報に基づいて、前記第１のホストコンピュータが、フェイルオーバーするホストコンピュータを選択するように構成されてなる。
さらにまた本願課題を解決するための本願データセンタシステムの構成は、第１のデータセンタと、第２のデータセンタと、第３のデータセンタとからなるデータセンタシステムであって、このデータセンタシステムは、  第１のホストコンピュータと第１の記憶システムからなる前記第１のデータセンタと、第２のホストコンピュータと、第１の記憶システムのコピーデータを保持する第２の記憶システムとからなる前記第２のデータセンタと、第３のホストコンピュータと、前記第１の記憶システムと前記第２の記憶システムとが配置される距離よりも遠地に配置され、前記第１の記憶システムのコピーデータを保持する第３の記憶システムと、からなる前記第３のデータセンタと、で構成され、前記第１の記憶システムと、前記第２の記憶システムとの間は、同期方式によるリモートコピーを実行し、前記第１の記憶システムと、前記第３の記憶システムとの間は、非同期方式よるリモートコピー実行し、  前記第１のホストコンピュータと、前記第２のホストコンピュータと、前記第３のホストコンピュータは、それぞれ、リモートコピーの方式を保持するメモリ領域と、前記クラスタサービスプログラム保持するメモリ領域と、を有し  前記第１のホストコンピュータが、フェイルオーバを実行する場合に、前記リモートコピーの方式を保持するメモリ領域を参照して、前記第２の記憶システムに接続される前記第２のホストコンピュータ対してフェイルオーバーするように構成される。
【００５２】
またこのような構成をとるデータセンタシステムは、第１のホストコンピュータの稼動状態を第１のホストコンピュータ以外のホストコンピュータが監視する第１のステップと、
前記第１のホストコンピュータ以外のコンピュータが、前記第１のホストコンピュータの稼動障害を検出した場合に、前記稼動障害を検出したホストコンピュータが、このホストコンピュータ内部のメモリに保持される稼動優先順位情報を参照して、フェイルオバー先となるホストコンピュータを選択する第２のステップと、前記ホストコンピュータを選択するステップにおいて選択されたホストコンピュータに対して前記第１のホストコンピュータのフェイルオーバ処理を行なう第３のステップと、からなる。
また、このような制御を行なうプログラムを各ホストコンピュータに搭載することにより、当該プログラムが各ホストコンピュータで実行され、データセンタシステム内でのフェイルオーバーや、フェイルバックが制御される。
【００５３】
【発明の実施の形態】
本願発明を図を用いて詳細に説明する。図１は本発明を適用したデータセンタシステムの１例である。データセンタシステム１０００は、メインデータセンタ１００１、近地のサブデータセンタ１００２、近地よりもメインデータセンタから遠い位置遠地のサブデータセンタ１００３からなる３データセンタ構成のデータセンタシステムである。
【００５４】
データセンタ１００１は、ノードＡ１０１０とそれに接続される記憶システムＡ１０２０で構成されている。他のサブデータセンタ１００２及び１００３も同様にそれぞれ、ノード及びそれに接続される記憶システムで構成される。
【００５５】
各ノードは、パーソナルコンピュータやワークステーションなどホストコンピュータと成り得るものである。ノード１０１０、ノード１０１１、ノード１０１２はクラスタサービスを行うためのソフトウェア１０６０と後述する管理テーブル１０８０を有する。これらのノードは、ネットワーク１０３０で接続されており、例えば、ＴＣＰ／ＩＰを利用したネットワークで接続される。
【００５６】
記憶システムＡ１０２０、記憶システムＢ１０２１、記憶システムＣ１０２２は、データを蓄積するためのハードディスクドライブ１０５０と構成情報１０９０を有する。構成情報１０９０は、各記憶システム内のメモリに保持され、記憶システムはこの構成情報を参照しながら、上位装置から受領したデータの書き込みや読み出し命令を処理する。この構成情報には、どのようなハードディスクが接続されているかという情報や、ハードディスク上に論理的に構成される論理ボリュームに関する情報が記録される他、他の記憶システムとの間でリモートコピーによりデータがコピーがなされるために必要な情報が蓄積される。
【００５７】
例えば、記憶システムのどの論理ボリュームがどの記憶システムのどの論理ボリュームにコピーされるかというペア情報も含んでいる。またそのリモートコピーの方式が非同期方式であるか、同期方式であるかという情報もこの構成情報として格納されている。
【００５８】
また、記憶システムＡ１０２０、記憶システムＢ１０２１、記憶システムＣ１０２２は、それぞれネットワーク１０４０、１０４１，１０４２で接続されている。これらの接続にはＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などを利用することが可能であるが限定されるものではない。
【００５９】
ネットワークで接続される記憶システム同士はそれぞれ双方向のリモートコピーが可能であり、そのリモートコピーの方式は種々選択可能である。本実施例においては、記憶システムＡ１０２０から記憶システムＢ１０２１へは同期転送方式のリモートコピーが設定され、記憶システムＡ１０２０から記憶システムＣ１０２２へは非同期転送方式のリモートコピーが設定されている状態を示している。
【００６０】
図４はフェイルオーバーを行う際に、フェイルオーバーの対象となるノードを同期転送方式のリモートコピーを実施する記憶システムに接続されるノードに優先的割り当てる実施形態を示している。
【００６１】
データセンタシステム１３００の構成は図１を用いて説明したデータセンタシステム１０００と同じであるがノードの稼動優先順位を明瞭にするために、各データセンタを構成するノードをそれぞれ、最優先ノード１３１０、次優先ノード１３１１、待機ノード１３１２として示している。
【００６２】
ここで、最優先ノードとは、現在稼動しているノードを示し、次優先ノードとは、最優先ノードが何らかの理由でフェイルオーバーする場合に次に優先するノードで現在稼動しているノードのＪＯＢを受け継ぐノードである。待機ノードは次優先ノードよりも優先度の低いノードで、次優先ノードへのフェイルオーバーが何らかの理由で行えない場合に、選択されるノードである。
【００６３】
図４においては、３つのデータセンタからなる図を用いて説明しているがデータセンタの数は、適宜設定可能である。例えば、データセンタ４つある場合には、現在稼動している最優先ノード以下、順に３種の優先度が決定されることになる。
【００６４】
図中、記憶システムＡ１０２０から記憶システムＢ１０２１へは同期転送方式によるリモートコピーを実施しているものとする。記憶システムＡ１０２０は最優先ノード１３１０からの書込み命令を受けて、記憶システム１０２０のハードディスクドライブ１０５０へデータを書込む。併せて、記憶システムＢ１０２１へも同データの書込み命令を発行し、記憶システム１０２１は、そのデータの書き込みを完了すると、データ書込み完了通知を記憶システム１０２０に送信する。記憶システムＡ１０２０は、記憶システムＢ１０２１からの書込み完了通知を受領した後、その旨を最優先ノード１３１０に送信する。
【００６５】
つまり、最優先ノードからの書き込み命令と同期してに記憶システムＡ１０２０と記憶システムＢ１０２１にデータの書込みがなされるため、記憶システムＡ１０２０と記憶システムＢ１０２１は原則として同じデータを保持する。
【００６６】
尚、ここでいうデータの書込みの完了とは、記憶システムに内蔵されるハードディスクそのものへの書き込みの完了のみを意味するのではなく、記憶システムによってハードディスクへの書き込みが出来る状態になったものを含む。
【００６７】
記憶システムは、記憶システムの内部に高速のキャッシュメモリを有し、多くの記憶システムは、上位装置から受けた書き込み命令を一旦このキャッシュに読み込み、キャッシュへの読み込みが完了した時点で、上位装置に対して書込み完了の通知を発行するように構成されている。このことにより上位装置は、応答速度の遅いハードディスクへのアクセス完了待つことを必要としなくなるのである。
【００６８】
一方、本図の記憶システムＡ１０２０から記憶システムＣ１０２２へはデータの転送方式１０８２は、非同期転送方式によるリモートコピーを実施している。記憶システムＡ１０２０は最優先ノード１３１０からのデータの書込み命令を受けると、記憶システム内のキャッシュメモリ（図示しない）にデータを書込んだ後、データ書込み完了通知を最優先ノード１３１０へ発行する。記憶システム１０２０Ａは最優先ノード１３１０の書き込み命令とは非同期的に記憶システムＣ１０２２へデータの書込み命令を発行する。つまり、記憶記憶システムＡ１０２０は、自身のキャッシュメモリに取り込んだ書き込みデータを、任意のタイミングで、記憶システム１０２２に対して書き込むように命令する。従って、記憶システム１０２２は記憶システム１０２０に比べて古いデータを保持する可能性がある。
【００６９】
ここで、図４の最優先ノード１３１０に障害が発生した場合について説明する。現在稼動中の最優先ノードに障害が発生した場合、この最優先ノードは処理を継続することができなくなるので、遅滞なくほかのいずれかのノードに処理を移行する作業、即ちフェイルオーバーを行う必要がある。このフェイルオーバー処理は、上述のとおりできる限り短時間で終了することが望ましい。
【００７０】
そこで、本願発明においては、どのノードを選択するかについて、その接続されている記憶システムの状態に着目する。記憶システムに蓄積されるデータが、障害発生の直前まで稼動していたノードが接続していた記憶システムのデータに最もデータイメージが近いものを選択することによって、ノードの切り替えに伴うデータの整合に係る時間を最小限に留めることができるからである。
【００７１】
このため、本願発明のデータセンタシステム１３００を構成する各データセンタ内のノードは、管理テーブル１０８０に、最優先ノードに接続されている記憶システムと同期方式でリモートコピーが行われている記憶システムに関する情報と、当該記憶システムに接続されているノードを特定する情報が蓄積されている。
【００７２】
最優先ノードに障害が発生したことを検出したデータセンタシステム内のいずれかのノードは、この管理テーブル１０８０を参照して、自身が現在稼動中のノードに代わって、処理を引き継ぐノードであるかどうかを確認するのである。
【００７３】
また、現在稼動中の最優先ノードからの制御によって、他のノードにフェイルオーバーを行う場合も同様に、管理テーブル１０８０を参照して、フェイルオーバーを行うノードを選択するのである。
【００７４】
次に図５を用いて、図４で参照した管理テーブルがどのように作成されるかを詳細に説明する。図５は、最優先ノード１３１０が行う管理テーブルを作成するための処理手順を示している。  最優先ノード１３１０は記憶システムＡ１０２０から、リモートコピー種別を得るために構成情報１０９０を読み出す（ステップ１４１１）。
【００７５】
図４に示すデータセンタシステム１３００における記憶システム１０２０の構成情報１０９０は少なくとも次の３つの情報を保持している。
１．記憶記憶システムＡ１０２０がリモートコピー元（最優先ノードに接続されている記憶システムであるということでもある。）であること。
２．記憶システムＢ１０２１との間では同期転送方式によってデータのリモートコピーを行っていること。
３．記憶システムＣ１０２２との間ではが非同期転送方式によってデータのリモートコピーを行っているということ。
【００７６】
ノードから、構成情報の要求を受けた記憶システムは上述のようなデータ転送方式の種別を含む構成情報１０９０を、その要求を発行したノードにわたす。このようにノードが記憶システムの構成情報を取得するには、ノードから記憶システムに対してＳＣＳＩのモードセレクトコマンドのＶｅｎｄｏｒＵｎｉｑｕｅ等を送信することによって行えば良い。
【００７７】
構成情報を受領した最優先ノード１３１０は構成情報１０９０から必要な情報を集めて管理テーブル１４５０を作成する（ステップ１４１２）。
【００７８】
管理テーブルの１構成例をリモートコピー状態管理テーブル（以下、適宜、管理テーブルと呼ぶ）１４５０に示す。
【００７９】
例示した管理テーブル１４５０はノードを特定するためのノード種別と、データ転送方式を特定するためのリモートコピー種別と、現在稼動中のノードに接続されているものであるかどうかを示す動作フラグを要素としている。
【００８０】
ノード種別にはＩＰアドレスまたはコンピュータ名など、ノードとなっているコンピュータを一意に識別できる要素が格納される。リモートコピー種別は最優先のノードに接続される記憶システムと、どのような転送方式（種別）のリモートコピが行われているかを示している。
【００８１】
今、ＩＰ０００１が最優先ノードであるとすると、それに接続されている記憶システムは、リモートコピー元となるから、このリモートコピーの形態の欄にはリモートコピー元を示す情報が記載される。その下の欄には、ＩＰ０００２とＩＰ０００１とのデータ転送の方式が同期転送方式であることが示され、ＩＰ０００３とＩＰ０００１とが非同期転送方式であることがその下の欄に示されている。動作フラグは、どのノードが稼動中のノードであるかを示している。本管理テーブルでは、稼動中のものを「１」としている。この場合、通常、リモートコピー元となっている記憶システムに接続されるノードの動作フラグの欄が「１」となる。
【００８２】
ステップ１４１２で作成された管理テーブル１４５０を、最優先ノード１３１０と同一ネットワーク上にある次優先ノード１３１１と、待機ノード１３１２にそれそれコピーする。（１４１３）
尚、管理テーブルの存在形態は、例えばファイル、ポインタの集合、データベース、バイナリなどどのようなものでもよく、限定されるものではない。また図４の説明ではデータ転送方式の差異によるフェイルオーバー時の処理軽減に着目して、フェイルオーバーを行うノードを決定しようとする場合の管理テーブルを示したので、図５に示す管理テーブルを構成する要素としてリモートコピーの態様を示すものを利用しているが、記憶システムの性能に着眼して次に最優先ノード即ち、稼動ノードとなるものを決定するような場合は、構成情報から記憶システムの性能に関する情報を抽出してこの管理テーブルを作成すれば良い。
【００８３】
ここで、障害が発生した場合の詳細な説明に先立って、障害について簡単に説明する。稼動中のデータセンタに発生する障害はノード側の障害と、ノードに接続される記憶システムの障害の２つに大別される。いずれの障害の場合にもデータセンタシステムを構成する他のデータセンタにその業務を引き継ぎ、運用の中断を最小限にとどめるような手段を講じなければならない。業務を引き継ぐ場合には、フェイルオバー処理によってノードの処理を他のノードに引き継がせる作業と、引き継いだ新たなノードが制御する記憶システム内のデータを障害が発生する直前までのデータに更新してやる作業がある。
【００８４】
ところで、ノードのみに障害が発生した場合、記憶システム自体には障害がないので、障害が発生したノードの処理をフェイルオーバで他のノードに移し、当該新たなノードで元の記憶システムを制御するという方法も考えられる。同一のデータセンタにクラスタ構成の複数のノードがあるような場合がこれにあたる。しかしながら、同一データセンタ内の全てのノードに何らかの障害が発生した場合には、他のデータセンタのノードを用いてフェイルオーバを行ない業務を継続させる必要がある。このような場合、記憶システムとノードとの物理的な距離が大きくなってしまうと応答性能の劣化に繋がるので、フェイルオーバ先のノードは、同じデータセンタ内の記憶システムをメインの記憶システムとして用いることになる。従って、ノードの選択にあたってはフェイルオーバー後のデータの回復処理（障害発生時までの状態にデータを更新すること）に最も適した記憶システムを選択する必要が生じるのである。
【００８５】
図６は、図４の最優先ノード１３１０に接続される記憶システム１０２０で障害が発生した場合に、最優先ノード１３１０と次優先ノード１３１１で実行される処理を示したものである。
【００８６】
図６のステップ１５１１において、記憶システムに何らかの障害が発生すると最優先ノード（稼動中のノード）から記憶システムへのデータの書き込みがなされなくなる。
【００８７】
つまり、最優先ノード１３１０に接続する記憶システム１０２０で障害が発生すると、記憶システムＡ１０２０への書込み処理がエラーとなり（ステップ１５１１）、最優先ノードのリソースは、オフラインとなる（ステップ１５１２）。リソースとは記憶システムのハードディスクドライブやノード自身が持つディスク、上位装置と記憶システムに接続するために利用するＮＩＣ（ＮｅｔｗｏｒｋＩｎｔｅｒｆａｃｅＣａｒｄ）などのハードウエアやユーザアプリケーションなどで最優先ノード１３１０が使用していたものをさす。
【００８８】
このエラーを検出した稼動中のノード１３１０は、次優先ノード１３１１や待機ノード１３１２など管理テーブル１０８０に登録されているノードが正常状態にあるかどうかを図４に示す通信路１０３０を介して確認する（１５１３）。ノード１３１０は他のノードが全て正常状態にあれば、管理テーブル１０８０からリモートコピー形態の欄を検索し、同期転送方式リモートコピーを実施している記憶システムに接続する次優先ノードのＩＰアドレスを取得する（ステップ１５１４）。
【００８９】
同期転送方式リモートコピーを実施する記憶システムが複数ある場合には、管理テーブルに他の情報、例えば記憶システムの性能情報等を蓄積しておき、それらに基づいて最も適した記憶システムを決定するようにしてもよいし、検索で最も早くヒットした記憶システムとしてもよい。
【００９０】
次優先ノードのＩＰアドレスが見つかると最優先ノード１０１０が持つ管理テーブル１０８０内の（動作フラグ）欄の、「最優先ノード」であることを示すフラグを下ろし、新たに稼動ノードとなるＩＰアドレスに対応する動作フラグの欄に稼動中であることを示すフラグを立てる。（ステップ１５１５）。そして、この更新された管理テーブルをデータセンタシステム内の他のノードに通信線１０３０を介して送信し、他のノードが有する管理テーブルも更新する。（ステップ１５１６）
次いで、各ノードはクラスタ管理ソフトウェアを起動してフェイルオーバーを実行する（ステップ１５３０）。
【００９１】
フェイルオーバーの処理にはクラスタの切り替え、データの新たな最優先ノードへの移動、ＩＰアドレスの切り替え、アプリケーションの引継ぎなどがある。
【００９２】
新たに最優先ノードとなったノード１３１１は記憶システムＢ１０２１に対して、記憶システム１０２１から記憶システム１０２２との間にリモートコピーペアを作成する命令を発行し、リモートコピーペアを生成する。（リモートコピーペアを再生成することからの張替えと呼ぶこともある。）（ステップ１５２１）。この段階で、記憶システム１０２１はリモートコピー元となり、記憶システム１０２２へのリモートコピーが実施出来るようになる。これらのリモートコピーペアに関する情報は、記憶システム１０２１の構成情報として記憶システム１０２１内に蓄積される。
【００９３】
新たに最優先ノードとなったノード１３１１は、図５で説明した手順に従って、管理テーブルを作成し、データセンタシステムの他のノードに送信する。（ステップ１５２２）
次いでノード１３１１は記憶システム１０２１のリソースをディスクの再マウントやＩＰアドレスの切り替え等の処理で次優先ノードでオンラインにして（ステップ１５２３）、記憶システムＢ１０２１のハードディスクドライブへの接続を可能とし、アプリケーションの再実行等を行って、ノード１３１１は障害発生前と同じ状態の正常稼動を始める（ステップ１５２３）。
【００９４】
尚、フェイルオーバーの契機は、オペレータによって計画的に実行される他、障害発生の検出を契機に行なわれる。この障害発生は、図４に示す最優先ノード１３１０、次優先ノード１３１１、待機ノード１３１２に搭載される各クラスタサービスソフトウェアがｐｉｎｇの応答を監視するなどのハートビートを用いて常にリソースを監視していることにより検出される。。
【００９５】
図７は、図４に示す稼動中の最優先ノード１３１０で障害が発生した場合の最優先ノード１３１０の処理及び、次優先ノード１３１１と待機ノード１３１２の処理を示したものである。図４でも述べたようにこれらのノードの優先度は固定的なものではないが、本願発明の理解を助けるために、障害前まで稼動しているノード１３１０を最優先のノード、最優先のノードがフェイルオーバーする際にその対象となるノード１３１１を次優先ノード、それ以外のノード１３１２を待機ノードとそれぞれ呼称して説明する。
【００９６】
図４の最優先ノード１３１０、次優先ノード１３１１、待機ノード１３１２の各クラスタサービスは障害を検出するため、ｐｉｎｇの応答を監視するなどのハートビートを用いて常にリソースを監視する（ステップ１６１１、ステップ１６２１、ステップ１６３１）。これらの監視は記憶システム間を接続する通信網とは異なる通信回線１０３０を用いて行われる。
【００９７】
最優先ノード１３１０でノード自体に障害が発生すると次優先ノード１３１１や待機ノード１３１２は、最優先ノード１３１０からのハートビートを受けることができない。次優先ノード１３１１または待機ノード１３１２は、正常なハートビートを得られないことから、最優先ノード１０３０に何らかの異常が発生したことを検知する。
【００９８】
次優先ノード１３１１及び待機ノード１３１２が異常が発生したことを検知した場合（ステップ１６２１、ステップ１６３１）、それぞれのノードは、そのノード自身のメモリに記録されている管理テーブル１０８０を参照する。管理テーブルの詳細は図５に示す。
【００９９】
そして、リモートコピー形態を検索して、その項が「同期転送方式」となっているノード（図４においては、データセンタシステム内のノード１３１１（次優先ノード））を検索する。（ステップ１６２２、ステップ１６３２）
次に各ノードは、自分が次に最優先ノードなって稼動するノードかどうかを調べる。（ステップ１６２３、ステップ１６３３）。
【０１００】
その調査は、次に稼動するノードと自ノードのＩＰアドレスが一致するかどうかによって行えば良い。ＩＰアドレスに代えて、マシン名を管理テーブル１０８０に蓄積している場合は、マシン名によることとなる。
【０１０１】
上記の処理によって次優先ノード１３１１が次に稼動するノードであると検出されると、次優先ノード内の管理テーブルの最優先ノードの動作フラグ欄のフラグを「１」から「０」にし、次優先ノードの動作フラグ欄のフラグを「０」から「１」にする。（ステップ１６２４）。
【０１０２】
この段階で、これまでの次優先ノードは、最優先ノードとなる。また、前の待機ノード１３１２は、次優先ノードとなる。最優先ノードとなったノード１３１１は、待機ノード１３１２に通信線１０３０を介して新たな管理テーブル１０８０をコピーする（ステップ１６２５）。
【０１０３】
新たに最優先ノードとなったノード１３１１で、記憶システム１０２１に対し、記憶システム１０２１と記憶システム１０２０との間に記憶システム１０２１をコピー元とする同期転送方式によるリモートコピーペアを形成するように命令を発行する。さらに、記憶システム１０２１と記憶システム１０２２との間に記憶システム１０２１をコピー元とする非同期転送方式によるリモートペアを形成する旨の命令を発行する。（ステップ１６２６）
次いでノード１３１１は、新たな管理テーブルの情報及び構成情報に基づいて記憶システム１３２１のリソースをオンラインにする。（ステップ１６２７）
この段階でノード１３１１はフェイルオーバー前の最優先ノード１３１０と同じ状態となるのである（ステップ１６２８）。
【０１０４】
ところで、元々同期コピーを行なっていたノード１３１０と、ノード１３１１は、配下の記憶システムのデータの整合性が取れているので、同期コピーの方向を変更することで、フェイルオーバー後、直ちに運用を開始できる。
【０１０５】
しかしながら、非同期コピーを行なっていた元の最優先ノードと待機ノードとの間については、フェイルオーバー後のデータの整合性を保証する必要がある。以下その点について説明する。
上述のとおり、新たに最優先ノードとなったノード１３１１は記憶システムＢ１０２１に対し、記憶システムＢ１０２１から記憶システムＡ１０２０に、記憶システムＢ１０２１をコピー元とする同期転送方式によるリモートコピーを実施するよう命令を発行する。
【０１０６】
さらに、この新たに最優先ノードとなったノード１３１１は記憶システム１０２１Ｂに対し、記憶システムＢ１０２１から記憶システムＣ１０２２へ、記憶システムＢ１０２１をコピー元とする非同期転送方式によるリモートコピーを実施するよう命令を発行する。
【０１０７】
しかし、これまで記憶システムＡ１０２０との間で、非同期のコピーを行なっていた記憶システムＣ１０２２が保持するデータは、最新のデータになっているとは限らない。つまり、まだ記憶システムＣ１０２２へのコピーが完了していないデータ（以下、未転送データと呼ぶ）が記憶システムＡ１０２０に残っている可能性がある。換言すれば、記憶システムＣ１０２２が最新の状態となっておらず、記憶システムＡ１０２０が記憶システムＣ１０２２の未転送データを保持している可能性があるということである。
【０１０８】
そこで、新たな最優先ノード１３１１は、配下の記憶システムＢ１０２１に対して、「記憶システムＡ１０２０が保持する未転送データに関する情報を要求する命令を発行する」ように指示する。
【０１０９】
この指示を受けた記憶システムＢ１０２１は、例えばＳＣＳＩのＶｅｎｄｏｒＵｎｉｑｕｅコマンドを利用した未転送データ情報要求コマンドを記憶システムＡ１０２０に発行し、未転送データに関する情報を要求する。
【０１１０】
記憶システムＡ１０２０は、記憶システムＢ１０２１の上記要求を受けて、未転送データに関する情報を記憶システムＢ１０２１に送信する。
【０１１１】
ここで図１１を用いて未転送データの情報について説明する。
未転送データαは図１１に示すようにヘッダーに総ブロック数Ｎと、Ｎ個のデータブロックからなるデータ構造を持つ。（図中ブロックＡ１、ブロックＡ２・・・ブロックＡｎとして示す。）
各データブロックはブロックアドレスとそのデータから構成される。（図中データ１、データ２、・・・データｎ）
ここでは説明を簡単にするため、データ１〜データｎは固定長とするが、可変長のデータを保持し、データサイズをブロック中に保持することも可能である。
【０１１２】
未転送データに関する情報を要求された記憶システムＡ１０２０は、自装置内の未転送のデータブロックの数である総ブロック数Ｎを記憶システムＢ１０２１に応答する。記憶システムＢ１０２１は、受領した未転送データα内のブロック数Ｎが正の値を保持しているかどうかを判定し、正である場合には、記憶システムＡ１０２０が未転送データブロックを保持していると判断する。
【０１１３】
そして、ブロック数Ｎ個分の容量を持つ未転送データαを記憶システムＢ１０２１に転送する。記憶システムＢ１０２１は記憶システムＣ１０２２へ記憶システムＢをコピー元とする非同期転送のデータ方式を設定し、記憶システムＡ１０２０から受領した未転送データαを順次、記憶システムＣ１０２２コピーする。
【０１１４】
ここで、記憶システムＢ１０２１から記憶システムＣへ未転送データαのコピーが完了する前に、記憶システムＢ１０２１に対して、新たに最優先ノードとなったノード１３１１からＷｒｉｔｅ命令が来た場合には、そのデータの記憶システムＣ１０２２へのコピーを、未転送データαよりも後に実施するように記憶システムＢ１０２１はタスクスケジュールを組む。
【０１１５】
このような方法をとることで、未転送データαの記憶システムＣ１０２２への書き込みが完了する前に、ノード１３１１から記憶システムＢ１０２１へ書き込まれたデータを記憶システムＣ１０２２に書き込むことがないように抑止する。
【０１１６】
また、記憶システムＢ１０２１が記憶システムＡ１０２０から受領した未転送データαに上書きされるようなデータがノード１３１１からのＷｒｉｔｅ命令で書き込まれた場合には、最新のデータのみを記憶システムＣ１０２２に送るために、記憶システムＡ１０２０から受領したが上書きされたことで不要となったデータを、記憶システムＣ１０２２へ書き込まないようにして記憶システムＢ１０２１から記憶システムＣ１０２２へのデータ転送量を削減しても良い。
【０１１７】
また、これまで記憶システムＡ１０２０から記憶システムＣ１０２２への未転送データαを記憶システムＢ１０２１を経由して記憶システムＣ１０２２へコピーする方法について述べてきたが、未転送データαを記憶システムＡ１０２０から直接記憶システムＣ１０２２へ転送する方法をとっても良い。
【０１１８】
以下、その具体例を説明する。ノード１３１０に障害が発生するなどして、ノード１３１１にフェイルオーバーすると、記憶システムＢ１０２１はＳＣＳＩのＶｅｎｄｏｒＵｎｉｑｕｅコマンドを利用した未転送データ要求コマンドを用いて記憶システムＡ１０２０が保持する未転送データαのブロック数Ｎを確認する。
【０１１９】
ブロック数Ｎが正の値を保持している場合には、定期的にブロック数Ｎの値を確認して、その値が０となるまでの間、ノード１３１１から記憶システムＢ１０２１へのＷｒｉｔｅ命令があっても記憶システムＣ１０２２への書き込みを抑止する。（非同期リモートコピーを中断して、データ整合性のためのコピーを優先する。）
そして、ブロック数Ｎが０であることを確認すると記憶システムＢ１０２１は記憶システムＣ１０２２への書き込み抑止を解除し、リモートコピーを開始する。このようにして、非同期コピーによりデータを蓄積していた記憶システムのデータ欠如を解消するのである。
【０１２０】
本願発明を言い換えれば、運用中のノードが何らかの理由で他のノードに処理をフェイルオーバーする必要ができた場合の次ノードの選択方法として、まず、同期コピーをおこなっている記憶システムを配下に有するノードを選択して、フェイルオーバー直後であってもその運用を引き継ぐ。このことにより、フェイルオーバー直後から、データセンタの運用が可能となる。
【０１２１】
そして、その新たに運用系となった最優先ノードの配下の記憶システムのデータは、これまで遠隔地に待機系として存在していた記憶システムとの間で二重化されるように制御される。
【０１２２】
上述のとおり、この待機系として存在していた記憶システムは、遠隔地にあるという理由から前の最優先ノードとの間で、非同期コピーを行なわれていることが多い。そこで本願発明においては、新たに非同期コピーのリモートコピー先となる記憶システムのデータを、二重化データとして利用できるようにするために、前の最優先ノード配下の記憶システムとの間のリモートコピーが未完了のデータについてタスクスケジュール管理を行い、新たに開始する非同期リモートコピーに先立って、コピー処理するのである。
【０１２３】
この場合そのタスク制御を行なうのは、フェイルオーバー後に最優先ノードとなるノードの配下の記憶システムが行なえば、新たに最優先ノードとなったノードからのＩ／Ｏ要求と未転送データとの転送優先制御を行い易くなる。
【０１２４】
尚、また、図４における待機ノード１３１２は図７のステップ１６３３の処理によって自ノードがフェイルオーバーを受けないことが確認され、ステップ１６３４からステップ１６３８の処理はされないで他ノードの監視を行う状態に戻る。
【０１２５】
無論、この記憶システム１０２２においても、新たに優先ノードとなったノードからの指示により、新たなリモートコピーのリモートコピー先とリモートコピー元の定義がなされることはいうまでもない。また、この記憶システム１０２２が、フェイルオーバー前の非同期リモートコピーの未完了分について、稼動開始直後からタスク管理されて、先に蓄積すべきデータの転送を受けることは上述の通りである。
【０１２６】
このようにして障害発生または、保守管理のためにフェイルオーバーがなされ、図４のメインデータセンタ１００１の機能が、近地のサブデータセンタ１００２で引き継がれ、業務が中断されることなく（或いは中断があったとしても短期間のうちに）、引き継がれるのである。
【０１２７】
ところで、このように業務がサブセンタ１００２に引き継がれている間に、メインデータセンタ１００１での稼動が回復できるようになった場合、次のようにして復旧処理を行う。
【０１２８】
図９は、リモートコピー状態管理テーブルの他の実施例を示している。この図９に示すリモートコピー状態管理テーブルには、優先キーが各ノードに定義されている。データセンタシステムに障害や保守のための計画停止がない場合には、優先キーに定義された最高順位のノードが最優先ノードとして稼動系（リモートコピー元）となり、その他のノードが待機系（リモートコピー先）となる。
【０１２９】
図９の優先キー１は、数字の値の少ない順に優先度が高い状態を表している。図１０は、ノードＡに発生した障害が理由で２番目の優先順位のノードＢが、稼動系となっている場合に、優先順位の高いノードＡが障害から回復した後に、ノードＢが、ノードＡにフェイルバックする場合の手順を示す。尚、ノードＡの配下に接続される記憶システムを記憶システムＡ、ノードＢの配下に接続される記憶システムを記憶システムＢ、ノードＣの配下に接続される記憶システムを記憶システムＣとして説明する。
【０１３０】
ノードＢよりも優先度の高い最優先ノードＡが障害から復旧すると、ノードＡはノードＡの内部に保持した図９のリモートコピー状態管理テーブル（以下管理テーブルという。）を参照して、現在稼動中のノードを検索する。この場合、ノードＡが保持している管理テーブルが最新のものに更新されていない可能性があるので、稼動ノードをまず検索する。（ステップ２０１１）
図１０においては、ノードＢが稼動系となっているので、ノードＢが保持する管理テーブルをノードＢより収集してノードＡ内の新管理テーブルとして保持する（ステップ２０１２）。
【０１３１】
もしも、この例では、ノードＢが稼動中である場合を示しているが、ノードＢが稼動中でない場合には、順次優先順位の低いノードについて稼動中であるかどうか検索すれば良い。
【０１３２】
ノードＡはノードＢから受領した管理テーブル内の情報を、ノードＡが稼動中となるようにフラグを立て直す。具体的には現在稼動中の、ノードＢの稼動フラグを下げ、ノードＡの稼動フラグを立てる（ステップ２０１３）。更新した管理テーブルをノードＢとノードＣにコピーする（ステップ２０１４）。
【０１３３】
次に稼動中のノードＢにフェイルバックを要求すると（ステップ２０１５）、要求を受けた稼動中のノードＢは記憶システムへのＩ／Ｏを停止し（ステップ２０２１）、リソースオフラインとする（ステップ２１２２）。
【０１３４】
新たに最優先となったノードＡはフェイルバックすると、配下の記憶システムＡに対して最新のデータである記憶システムＢのデータを吸い上げるよう命令を発行し、記憶システムＡから記憶システムＢへは同期転送方式でのリモートコピーを、記憶システムＡから記憶システムＣへは非同期転送方式のリモートコピーを実施するよう記憶システムＡへ命令を発行し、リモートコピーペアの張替え２０１６を行う。ノードＡは記憶システムＡのハードディスクやリソースのオンライン（ステップ２０１７）とし、ノードＢの処理を引き継ぎを経て正常稼動となる（ステップ２０１８）。
【０１３５】
尚、この場合において、フェイルバック前の非同期リモートコピー中のデータについて、前述のようにデータの整合性をとるために、未転送データについてタスクスケジュール管理がされることは言うまでもない。
【０１３６】
第２の実施形態では、同期転送方式のリモートコピーを実行する記憶システムに接続するノードにのみフェイルオーバーし、非同期転送方式のリモートコピーを実施する記憶システムは単なるバックアップを行う。
【０１３７】
第２の実施形態は図５に示す管理テーブル１４５０に登録されるノードのうち、リモートコピー状態が非同期転送方式とされるノードを次に稼動するノードの検索処理１５１４，１６２２、１６３２において、リモートコピー種別が「同期転送方式」であるノードを検索対象外として検索処理を行う他は、第１の実施形態と同様の処理により実施する。
【０１３８】
第３の実施形態では最優先ノードのフェイルオーバー優先順位をノードまたは記憶システムが自動的に設定する。
【０１３９】
第３の実施形態は、図９のテーブルに示すように複数の優先キーをを管理テーブルの要素として追加し、フェイルオーバー先の選択条件として利用する。、またこの優先キーは、ノード毎に優先順位をつける情報として利用でき、上述のように、何らかの理由で最優先ノードから次の優先ノードにフェイルオーバーした後、優先キーの示す優先順位に従って、優先度の高い元のノードにフェイルバックを行なう。
この優先キーは、図９に示すように複数もつようにして、各種条件に応じて優先度自体を変更するようにしても良い。
【０１４０】
最優先ノード１３１０がフェイルオーバーする場合に、第１の実施形態ではリモートコピー種別をキーに次に稼動するノードを検索したが、第３の実施形態ではフェイルオーバー時に優先させたい項目のキーデータを「優先キー」に登録する。例えば、最優先ノード１３１０から次優先ノード１３１１へ、最優先ノード１３１０から待機ノード１３１２へそれぞれｐｉｎｇコマンドを実行し、そのレスポンスタイムを「優先キー」に登録することも可能である。
【０１４１】
図具体的には、図７に示す最優先ノード１３１０のフェイルオーバー時に次の稼動ノードを検索する処理１６２２や１６３２において、リモートコピー種別を検索対象とせず「優先キー」を検索対象とする。例えば、レスポンスタイムの小さいノードを次に優先するノードとして検索し、近地の記憶システムを自動的に判断しフェイルオーバー先として設定するようにすることも可能である。
【０１４２】
第４の実施形態では現在稼動中の最優先ノード１３１０のフェイルオーバー優先順位を予めユーザが設定する。
【０１４３】
図８にユーザ手動による管理テーブル登録処理１８１０を示す。管理テーブル登録処理１８１０は最優先ノード１３１０にて実行される処理である。
【０１４４】
フェイルオーバーの順番を決めるためのキーとなる「優先キー」があれば（ステップ１８１１）「優先キー」を入力する（ステップ１８１６）。次に、ノードの登録１８１２、リモートコピー形態の登録１８１３、優先キー値または優先順位の登録１８１４を同一ネットワークにつながる全ノードについておこない（ステップ１８２１）、各ノードに管理テーブルファイルをコピーする（１８１５）。ノード登録やリモートコピー形態の登録は手動で行わなくとも図５に示す最優先ノード処理Ａ１４１０を用いても良い。
【０１４５】
上記、第１の実施形態から第４の実施形態まで、３データセンタ間でのシステムについて述べてきたが、図１において記憶システムＡ１０２０と記憶システムＢ１０２１との間で非同期転送方式を用いている場合も本システムは適用することができ、さらに３データセンタ以上のデータセンタが存在するシステムにも適用可能である。
【０１４６】
さらにまた、クラスタサービスを有するホストコンピュータが接続する記憶システムが３組以上存在し、ホストコンピュータは同一のコンピュータネットワークで接続し、記憶システムがコンピュータネットワークに接続して記憶システム間でリモートコピーを実施するシステムにおいても本発明が適用できることは言うまでも無い。
【０１４７】
【発明の効果】
本発明の構成により、障害発生時に無駄の無いフェイルオーバーの処理が可能となる。
【図面の簡単な説明】
【図１】本発明にかかるシステム構成の一例を示した説明図である。
【図２】リモートコピー実施構成の一例を示した図である。
【図３】同期転送方式のリモートコピーと非同期転送方式のリモートコピーの処理を示した図である。
【図４】同期転送方式のリモートコピーを優先するフェイルオーバーを示す図である。
【図５】リモートコピー状態管理テーブル作成のフローチャートである。
【図６】記憶システム障害発生時の同期転送方式リモートコピー優先フェイルオーバーの処理を示すフローチャートである。
【図７】ノード障害発生時の同期転送方式リモートコピー優先フェイルオーバーの処理を示すフローチャートである。
【図８】管理テーブル手動登録処理手順を示すフローチャートである。
【図９】優先キーを複数持つ場合の管理テーブルを示す表である。
【図１０】復旧監視および復旧処理を示すフローチャートである。
【図１１】未転送データのデータフォーマットを示す図である。
【符号の説明】
１０００・・・データセンタシステム、１００１・・・メインデータセンタ、１０１０・・・ノードＡ、１０９０・・・管理テーブル、１０６０・・・クラスタサービス、１０２０・・・記憶システムＡ、１０５０・・・ハードディスクドライブ、１０２１・・・記憶システムＢ、１００２・・・近地のサブデータセンタ、１００３・・・遠地のサブデータセンタ、１０２２・・・記憶システムＣ
【図１】
2005018510.tif 000003
【図２】
2005018510.tif 000004
【図３】
2005018510.tif 000005
【図４】
2005018510.tif 000006
【図５】
2005018510.tif 000007
【図６】
2005018510.tif 000008
【図７】
2005018510.tif 000009
【図８】
2005018510.tif 000010
【図９】
2005018510.tif 000011
【図１０】
2005018510.tif 000012
【図１１】
2005018510.tif 000013