(57)【特許請求の範囲】
【請求項１】
第１のＣＰＵサブシステムと、第１のＩＯサブシステムと、前記第１のＣＰＵサブシステムおよび前記第１のＩＯサブシステムに接続する第１の制御手段とを備えた第１のサブシステムと、
第２のＣＰＵサブシステムと、第２のＩＯサブシステムと、前記第２のＣＰＵサブシステムおよび前記第２のＩＯサブシステムに接続する第２の制御手段とを備えた第２のサブシステムとを含み、
前記第１の制御手段と前記第２の制御手段は、
前記第１のサブシステムと前記第２のサブシステムの一方を主系、他方を従系とする二重化を制御し、２つのシステム内とシステム間の接続状態を制御するよう構成され、
前記第１のＣＰＵサブシステムが主系のＣＰＵサブシステム、前記第２のＣＰＵサブシステムが従系のＣＰＵサブシステムとして動作中に、前記第１のＣＰＵサブシステムと前記第２のＣＰＵサブシステムとの同期ずれが発生した場合、前記第２のＣＰＵサブシステムの電源オフ、電源オンを行った後に、前記第１のＣＰＵサブシステムのコンテキストを前記第２のＣＰＵサブシステムにコピーし、前記第１のＣＰＵサブシステムおよび前記第２のＣＰＵサブシステムに対し、同期のためにリセットをかけ、
前記同期ずれが解消できない場合に、前記第２のＣＰＵサブシステムと前記第２のＩＯサブシステムとのインタフェースと、前記第２のＣＰＵサブシステムと前記第１のＩＯサブシステムとのインタフェースが正常に動作していることを確認可能な接続状態に変更する、
フォールトトレラントサーバ。
【請求項２】
前記第１の制御手段は、第１の同期手段と、第１の接続手段とを備え、
前記第２の制御手段は、前記第１の同期手段と連係する第２の同期手段と、第２の接続手段とを備え、
前記第１のＣＰＵサブシステムが主系のＣＰＵサブシステム、前記第２のＣＰＵサブシステムが従系のＣＰＵサブシステムとして動作中に、前記第１のＣＰＵサブシステムと前記第２のＣＰＵサブシステムに同期ずれが発生した場合、前記第２の同期手段が前記第２のＣＰＵサブシステムの電源オフ、電源オンを行った後に、前記第１の同期手段および前記第２の同期手段は、前記第１のＣＰＵサブシステムのコンテキストを前記第２のＣＰＵサブシステムにコピーし、前記第１のＣＰＵサブシステムおよび前記第２のＣＰＵサブシステムに対し、同期のためにリセットをかけ、
前記第１の同期手段および前記第２の同期手段により同期ずれが解消できない場合に、前記第１の接続手段および前記第２の接続手段は、前記第２のＣＰＵサブシステムと前記第２のＩＯサブシステムとのインタフェースと、前記第２のＣＰＵサブシステムと前記第１のＩＯサブシステムとのインタフェースが正常に動作していることを確認可能な接続状態に変更する
請求項１に記載のフォールトトレラントサーバ。
【請求項３】
前記接続手段による接続状態の変更後に、前記第２のＣＰＵサブシステムが前記第２のＣＰＵサブシステムと前記第２のＩＯサブシステムとのインタフェース、および、前記第２のＣＰＵサブシステムと前記第１のＩＯサブシステムとが正常であることを確認した場合に、前記第１の制御手段は、主系のＣＰＵサブシステムを、前記第１のＣＰＵサブシステムから前記第２のＣＰＵサブシステムに切り替える
請求項２に記載のフォールトトレラントサーバ。
【請求項４】
前記第１の制御手段は、前記第１のＣＰＵサブシステムに対して制御を行うＣＰＵ二重化制御回路と、ＩＯサブシステムに対して制御を行うＩＯ二重化制御回路とを含む
請求項１乃至３の何れか一項に記載のフォールトトレラントサーバ。
【請求項５】
前記第１の制御手段により、主系のＣＰＵサブシステムを、前記第１のＣＰＵサブシステムから前記第２のＣＰＵサブシステムに切り替えた後で、
前記第１の同期手段が前記第１のＣＰＵサブシステムの電源オフ、電源オンを行った後に、前記第１の同期手段および前記第２の同期手段は、前記第２のＣＰＵサブシステムのコンテキストを前記第１のＣＰＵサブシステムにコピーし、前記第１のＣＰＵサブシステムおよび前記第２のＣＰＵサブシステムに対し、同期のためにリセットをかける
請求項２又は３に記載のフォールトトレラントサーバ。
【請求項６】
第１のＣＰＵサブシステムと、第１のＩＯサブシステムと、前記第１のＣＰＵサブシステムおよび前記第１のＩＯサブシステムに接続する第１の制御手段とを備えた第１のサブシステムと、
第２のＣＰＵサブシステムと、第２のＩＯサブシステムと、前記第２のＣＰＵサブシステムおよび前記第２のＩＯサブシステムに接続する第２の制御手段とを備えた第２のサブシステムとを含み、
前記第１の制御手段と前記第２の制御手段は、
前記第１のサブシステムと前記第２のサブシステムの一方を主系、他方を従系とする二重化を制御し、２つのシステム内とシステム間の接続状態を制御するよう構成されるフォールトトレラントサーバにおいて、
前記第１のＣＰＵサブシステムが主系のＣＰＵサブシステム、前記第２のＣＰＵサブシステムが従系のＣＰＵサブシステムとして動作中に、前記第１のＣＰＵサブシステムと前記第２のＣＰＵサブシステムとの同期ずれが発生した場合、前記第２のＣＰＵサブシステムの電源オフ、電源オンを行った後に、前記第１のＣＰＵサブシステムのコンテキストを前記第２のＣＰＵサブシステムにコピーし、前記第１のＣＰＵサブシステムおよび前記第２のＣＰＵサブシステムに対し、同期のためにリセットをかけ、
前記同期ずれが解消できない場合に、前記第２のＣＰＵサブシステムと前記第２のＩＯサブシステムとのインタフェースと、前記第２のＣＰＵサブシステムと前記第１のＩＯサブシステムとのインタフェースが正常に動作していることを確認可能な接続状態に変更する、
同期化方法。
【請求項７】
第１のＣＰＵサブシステムと、第１のＩＯサブシステムと、前記第１のＣＰＵサブシステムおよび前記第１のＩＯサブシステムに接続する第１の制御手段とを備えた第１のサブシステムと、
第２のＣＰＵサブシステムと、第２のＩＯサブシステムと、前記第２のＣＰＵサブシステムおよび前記第２のＩＯサブシステムに接続する第２の制御手段とを備えた第２のサブシステムとを含み、
前記第１の制御手段と前記第２の制御手段は、
前記第１のサブシステムと前記第２のサブシステムの一方を主系、他方を従系とする二重化を制御し、２つのシステム内とシステム間の接続状態を制御するよう構成されるフォールトトレラントサーバに、
前記第１のＣＰＵサブシステムが主系のＣＰＵサブシステム、前記第２のＣＰＵサブシステムが従系のＣＰＵサブシステムとして動作中に、前記第１のＣＰＵサブシステムと前記第２のＣＰＵサブシステムとの同期ずれが発生した場合、前記第２のＣＰＵサブシステムの電源オフ、電源オンを行った後に、前記第１のＣＰＵサブシステムのコンテキストを前記第２のＣＰＵサブシステムにコピーし、前記第１のＣＰＵサブシステムおよび前記第２のＣＰＵサブシステムに対し、同期のためにリセットをかける同期機能と、
前記同期機能により前記同期ずれが解消できない場合に、前記第２のＣＰＵサブシステムと前記第２のＩＯサブシステムとのインタフェースと、前記第２のＣＰＵサブシステムと前記第１のＩＯサブシステムとのインタフェースが正常に動作していることを確認可能な接続状態に変更する接続機能と
を、実現させる
コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントサーバにおける同期化方法に関する。
【背景技術】
【０００２】
フォールトトレラントサーバは、そのサーバを構成するハードウェア部品のうちで一つのハードウェア部品が故障した場合でも、システムを停止することなく稼働を続けることが可能なサーバである。フォールトトレラントサーバ（以下において、「ＦＴサーバ」ともいう）は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メインメモリ、ハードディスク及びＩ／Ｏ関連機器のすべてが二重に搭載されている。そして、それらの二重化された機器（デバイス）は、同期されている。
【０００３】
デバイスの同期制御は、一般的に、外部からの信号やソフトウェア制御、タイミング調整などの方法により行われる。しかし、例えば、フォールトトレラントサーバを構成するＣＰＵサブシステムなどのように、その一部がブラックボックスとなっているデバイスは、上述の方法では、完全に制御できない部分も存在する。すなわち、ＣＰＵサブシステムは、個体差による稀なキャリビレーションミスの発生や、起動時に保持しているレジスタ値を変更できないために、外部環境変化時に同期がとれないことがある。
【０００４】
ＣＰＵサブシステムの同期ずれを解消するためには、ＣＰＵサブシステムにパワーサイクル（電源をオフ、再度電源をオン）を実施する方法が最も一般的である。
【０００５】
ここで、＃０系（主系）と＃１系（従系）の２つのＣＰＵサブシステムが同期動作するＦＴサーバの一般的な同期化処理について、図１１のフローチャートを用いて説明する。始めに、ＦＴサーバは、両系（＃０系および＃１系）のＣＰＵサブシステムを起動する（ステップＳ９１０、Ｓ９２０）。次に、ＦＴサーバは、＃０系のＣＰＵサブシステムから＃１系のＣＰＵサブシステムにコンテキストをコピーする（ステップＳ９３０）。ここで、コンテキストとは、メモリやＣＰＵのレジスタの内容である。そして、同期のために両系にリセットをかける（ステップＳ９４０）。その結果、同期ずれがない場合（ステップＳ９５０にて「Ｎｏ」）、＃０系のＣＰＵサブシステムと＃１系のＣＰＵサブシステムは、同期化完了となる。
【０００６】
ＣＰＵの同期制御は、基準となるクロック信号に対してタイミングの調整を行う。しかし、ＣＰＵの仕様によっては、外部からの信号やソフトウェア手続きだけでは完全に制御できない部分も存在し、稀に個体差や環境の変化から期待と異なるレジスタ値設定やクロック間位相差が発生することがある。そのため、同期ずれ発生時（ステップＳ９５０にて「Ｙｅｓ」）にＦＴサーバは、従系のＣＰＵサブシステムを切り離し（ステップＳ９８０）、再度組み込む（ステップＳ９６０）ことにより従系のＣＰＵサブシステムにパワーサイクルをかける。これにより、もしも従系のＣＰＵサブシステムが期待と異なる状態となっていた場合に同期ずれを解消できる。
【０００７】
しかし、従系ではなく、主系のＣＰＵサブシステムが期待と異なる状態になっていた場合、このＦＴサーバは、従系のＣＰＵサブシステムの切り離しと、組み込みを行っても、同期ずれを解消することはできない。そして、ＦＴサーバは、従系のＣＰＵサブシステムをＮ回（Ｎは、あらかじめ定めた閾値）以上切り離した後（ステップＳ９７０にて「Ｙｅｓ」）に、従系（＃１系）のＣＰＵサブシステムが故障していると判定する（ステップＳ９９０）。したがって、主系のＣＰＵサブシステムが期待と異なる状態になっていた場合に、同期ずれを解消できないままとなる。その結果、フォールトトレラントサーバの安定的な運用ができない。
【０００８】
ここで、関連技術としては、例えば以下の特許文献がある。
【０００９】
特許文献１は、二重化計算機のオンライン稼働時の片系保守における信頼性を向上させると共に、簡潔な構成のＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）装置の使用を可能とする二重化計算機を開示している。
【００１０】
特許文献２は、オンライン業務中にプロセッサモジュールの処理能力を拡張することができるフォールトトレラントコンピュータを開示している。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平０９−１４６８５３号公報
【特許文献２】特開平０８−０１６５３３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
特許文献１に提案されている技術は、復旧系（従系）のＩＯ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）サブシステムで障害が発生した場合に、そのＩＯサブシステムを交換後、稼働系（主系）に接続する前に、その復旧系のＩＯサブシステムを、復旧系のＣＰＵサブシステムに接続して評価を行う。
【００１３】
図１１に示す関連技術と特許文献１と２に提案されている技術は、次の点を考慮していない。それら技術は、主系と従系のＣＰＵサブシステムを切り替える前に、従系のＣＰＵサブシステムから各々（主系及び従系の各々）のＩＯサブシステムへのインタフェースが正常に動作していることを確認することを考慮していない。そのため、例えば従系のＣＰＵサブシステムと主系のＩＯサブシステムとの間のパスに不良が生じていたりアクセス先に不良がある場合に、主系と従系のＣＰＵサブシステムを切り替えることによって、予期せぬ動作を誘引し、ストール等が発生する虞がある。
【００１４】
したがって、前述した関連技術では、サーバを停止させないで、二重化への復帰を安定的に実現することができない。
【００１５】
そこで、本発明は、フォールトトレラントサーバにおけるＣＰＵの同期ずれを解消する動作において、無停止で、二重化への復帰を安定的に実現することが可能なフォールトトレラントサーバ等の提供を主たる目的とする。
【課題を解決するための手段】
【００１６】
上記の目的を達成すべく、本発明の一態様に係るフォールトトレラントサーバは、以下の構成を備える。
【００１７】
即ち、本発明の一態様に係るフォールトトレラントサーバは、
第１のＣＰＵサブシステムと、第１のＩＯサブシステムと、前記第１のＣＰＵサブシステムおよび前記第１のＩＯサブシステムに接続する第１の制御手段とを備えた第１のサブシステムと、
第２のＣＰＵサブシステムと、第２のＩＯサブシステムと、前記第２のＣＰＵサブシステムおよび前記第２のＩＯサブシステムに接続する第２の制御手段とを備えた第２のサブシステムとを含み、
前記第１の制御手段と前記第２の制御手段は、
前記第１のサブシステムと前記第２のサブシステムの一方を主系、他方を従系とする二重化を制御し、２つのシステム内とシステム間の接続状態を制御するよう構成され、
前記第１のＣＰＵサブシステムが主系のＣＰＵサブシステム、前記第２のＣＰＵサブシステムが従系のＣＰＵサブシステムとして動作中に、前記第１のＣＰＵサブシステムと前記第２のＣＰＵサブシステムとの同期ずれが発生した場合、前記第２のＣＰＵサブシステムの電源オフ、電源オンを行った後に、前記第１のＣＰＵサブシステムのコンテキストを前記第２のＣＰＵサブシステムにコピーし、前記第１のＣＰＵサブシステムおよび前記第２のＣＰＵサブシステムに対し、同期のためにリセットをかけ、
前記同期ずれが解消できない場合に、前記第２のＣＰＵサブシステムと前記第２のＩＯサブシステムとのインタフェースと、前記第２のＣＰＵサブシステムと前記第１のＩＯサブシステムとのインタフェースが正常に動作していることを確認可能な接続状態に変更する。
【００１８】
同目的を達成する本発明の一態様に係る同期化方法は、
第１のＣＰＵサブシステムと、第１のＩＯサブシステムと、前記第１のＣＰＵサブシステムおよび前記第１のＩＯサブシステムに接続する第１の制御手段とを備えた第１のサブシステムと、
第２のＣＰＵサブシステムと、第２のＩＯサブシステムと、前記第２のＣＰＵサブシステムおよび前記第２のＩＯサブシステムに接続する第２の制御手段とを備えた第２のサブシステムとを含み、
前記第１の制御手段と前記第２の制御手段は、
前記第１のサブシステムと前記第２のサブシステムの一方を主系、他方を従系とする二重化を制御し、２つのシステム内とシステム間の接続状態を制御するよう構成されるフォールトトレラントサーバにおいて、
前記第１のＣＰＵサブシステムが主系のＣＰＵサブシステム、前記第２のＣＰＵサブシステムが従系のＣＰＵサブシステムとして動作中に、前記第１のＣＰＵサブシステムと前記第２のＣＰＵサブシステムとの同期ずれが発生した場合、前記第２のＣＰＵサブシステムの電源オフ、電源オンを行った後に、前記第１のＣＰＵサブシステムのコンテキストを前記第２のＣＰＵサブシステムにコピーし、前記第１のＣＰＵサブシステムおよび前記第２のＣＰＵサブシステムに対し、同期のためにリセットをかけ、
前記同期ずれが解消できない場合に、前記第２のＣＰＵサブシステムと前記第２のＩＯサブシステムとのインタフェースと、前記第２のＣＰＵサブシステムと前記第１のＩＯサブシステムとのインタフェースが正常に動作していることを確認可能な接続状態に変更する。
【００１９】
更に、同目的は、上記構成を有するフォールトトレラントサーバ、或いは、同期化方法を、コンピュータによって実現するコンピュータ・プログラム、及びそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００２０】
上記の本発明によれば、フォールトトレラントサーバにおけるＣＰＵの同期ずれを解消する動作において、無停止で、二重化への復帰を安定的に実現することができるという効果がある。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態に係るフォールトトレラントサーバの構成を示すブロック図である。
【図２】本発明の第２の実施形態に係るフォールトトレラントサーバの構成を示すブロック図である。
【図３】本発明の第２の実施形態に係るフォールトトレラントサーバにおけるサブシステムの接続状態の一例を説明する図である。
【図４】本発明の第２の実施形態に係るＣＰＵ二重化制御回路およびＩＯ二重化制御回路の構成を示すブロック図である。
【図５】本発明の第２の実施形態に係るフォールトトレラントサーバにおけるＣＰＵサブシステムを再同期する処理を説明するフローチャートである。
【図６】本発明の第２の実施形態に係るフォールトトレラントサーバにおける従系のＣＰＵサブシステムと、ＩＯサブシステムとのＩ／Ｆ（ＩｎｔｅｒＦａｃｅ）を確認する処理を説明するフローチャートである。
【図７】本発明の第２の実施形態に係るフォールトトレラントサーバにおいて、＃１系ＣＰＵサブシステムと、＃１系ＩＯサブシステムとのＩ／Ｆを確認する処理を説明するフローチャートである。
【図８】本発明の第２の実施形態に係るフォールトトレラントサーバにおいて、＃１系ＣＰＵサブシステムと、＃０系ＩＯサブシステムとのＩ／Ｆを確認する処理を説明するフローチャートである。
【図９】本発明の第２の実施形態に係るフォールトトレラントサーバにおけるサブシステムの接続状態を説明する図である。
【図１０】本発明の第２の実施形態に係るフォールトトレラントサーバにおける主系のＣＰＵサブシステムを切り替える処理を説明するフローチャートである。
【図１１】一般的なフォールトトレラントサーバにおけるＣＰＵ再同期化手法を説明するフローチャートである。
【発明を実施するための形態】
【００２２】
次に、本発明を実施する形態について図面を参照して詳細に説明する。
【００２３】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係るフォールトトレラントサーバの構成を示すブロック図である。
【００２４】
図１を参照すると、本実施形態に係るフォールトトレラントサーバは、第１のサブシステム１１と、第２のサブシステム２１とを備えている。第１のサブシステム１１は、第１のＣＰＵサブシステム１２と、第１のＩＯサブシステム１３と、第１の制御部１４とを含む。また、第２のサブシステム２１は、第２のＣＰＵサブシステム２２と、第２のＩＯサブシステム２３と、第２の制御部２４とを含む。
【００２５】
第１の制御部１４と第２の制御部２４は、第１のサブシステム１１と第２のサブシステム２１の一方を主系、他方を従系とする二重化を制御し、２つのシステム内とシステム間の接続状態を制御するよう構成される。
【００２６】
また、第１のＣＰＵサブシステム１２が主系、第２のＣＰＵサブシステム２２が従系のＣＰＵサブシステムとして動作中に、第１のＣＰＵサブシステム１２と前記第２のＣＰＵサブシステム２２との同期ずれが発生した場合、第１の制御部１４と第２の制御部２４は、次のように動作する。
【００２７】
（１）第２のＣＰＵサブシステム２２の電源オフ、電源オンを行った後に、第１のＣＰＵサブシステム１２のコンテキストを第２のＣＰＵサブシステム２２にコピーする。
【００２８】
（２）コピー後に、第１のＣＰＵサブシステム１２および前記第２のＣＰＵサブシステム２２に対し、同期のためにリセットをかける。
【００２９】
（３）リセット後も同期ずれが解消できない場合に、第２のＣＰＵサブシステム２２と第２のＩＯサブシステム２３とのインタフェースと、第２のＣＰＵサブシステム２２と第１のＩＯサブシステム１３とのインタフェースが正常に動作していることを確認可能な接続状態に変更する。
【００３０】
以上のように、本実施形態のフォールトトレラントサーバは、ＣＰＵサブシステムの系切り替え（主系と従系の切り替え）処理を行う前に、切り替え先のＣＰＵサブシステムと各々のＩＯサブシステムとのインタフェースの動作を接続状態の変更によって検証する。これによって、切り替え後に動作不良が発生する可能性を排除する。
【００３１】
ところで、第１の制御部１４は、第１の同期部３１と、第１の接続部３２とを含む。そして、第２の制御部２４は、第２の同期部４１と、第２の接続部４２とを含む。第１の制御部１４と第２の制御部２４は、互いに接続され、相互に通信が可能である。つぎに、これら各部の構成と動作について説明する。
【００３２】
第１同期部３１と第２同期部４１は、互いに連携して同期ずれの復旧動作を行う。第１の同期部３１は、同期ずれの復旧動作時に、第１のＣＰＵサブシステム１２のコンテキストを取得し、第２の同期部４１に渡すことができる。第２の同期部４１は、第１のＣＰＵサブシステム１２のコンテキストを第２のＣＰＵサブシステム２２にコピーすることができる。
【００３３】
第１の接続部３２は、第１のＣＰＵサブシステム１２の接続先と、第１のＩＯサブシステム１３の接続先とをそれぞれ決定する、接続状態の設定及び変更機能を有する。たとえば、第１の接続部３２は、第１のＣＰＵサブシステム１２の接続先として、第１のＩＯサブシステム１３、第２のＩＯサブシステム２３またはそれら２つのＩＯサブシステムに設定することを可能にする。また、第１の接続部３２は、第１のＩＯサブシステム１３の接続先として、第１のＣＰＵサブシステム１２または第２のＣＰＵサブシステム２２に設定することを可能にする。
【００３４】
第２の接続部４２は、第２のＣＰＵサブシステム２２の接続先と、第２のＩＯサブシステム２３の接続先とをそれぞれ決定する、接続状態の設定及び変更機能を有する。たとえば、第２の接続部４２は、第２のＣＰＵサブシステム２２の接続先として、第１のＩＯサブシステム１３、第２のＩＯサブシステム２３またはそれら２つのＩＯサブシステムに設定することを可能にする。また、第２の接続部４２は、第２のＩＯサブシステム２３の接続先として、第１のＣＰＵサブシステム１２または第２のＣＰＵサブシステム２２に設定することを可能にする。
【００３５】
第１の接続部３２と第２の接続部４２は、互いに連携して接続状態を制御してもよい。
【００３６】
第１のＣＰＵサブシステム１２を主系のＣＰＵサブシステムとして動作中に、第１のＣＰＵサブシステム１２と第２のＣＰＵサブシステム２２に同期ずれが発生した場合、第１の制御部１４と第２の制御部２４は、次のように動作する。
【００３７】
最初、第２の同期部４１は、第２のＣＰＵサブシステム２２に対して電源をオフ、再度電源をオンする。それから、第１の同期部３１および第２の同期部４１は、第１のＣＰＵサブシステム１２のコンテキストを第２のＣＰＵサブシステム２２にコピーする。コピー完了後に、第１の同期部３１は、第１のＣＰＵサブシステム１２に対し、および第２の同期部４１を経由して前記第２のＣＰＵサブシステム２２に対し、同期のためにリセットを同時にかける。
【００３８】
第１の同期部３１および第２の同期部４１により同期ずれが解消できない場合に、第１の接続部３２および第２の接続部４２は、第２のＣＰＵサブシステム２２と第２のＩＯサブシステム２３とのインタフェースと、第２のＣＰＵサブシステム２２と前記第１のＩＯサブシステム１３とのインタフェースとがそれぞれ正常であるかを確認できるよう接続状態を変更する。
【００３９】
第１の接続部３２および第２の接続部４２による接続状態の変更に応じて、第２のＣＰＵサブシステム２２がそれぞれのインタフェースが正常であることを確認できた場合に、第１の接続部３２は、次のように動作する。第１の制御部１４の第１の接続部３２は、主系のＣＰＵサブシステムを、第１のＣＰＵサブシステム１２から第２のＣＰＵサブシステム２２に切り替える。
【００４０】
以上、説明したように、第１の実施形態には、フォールトトレラントサーバにおけるＣＰＵの同期ずれを解消する動作において、無停止で、二重化への復帰を安定的に実現することができるという効果がある。その理由は、ＣＰＵサブシステムの系切り替え処理を行う前に切り替え先のＣＰＵサブシステムと各々のＩＯサブシステムとのインタフェースの動作を接続状態の変更によって検証するからである。これによって、切り替え後に動作不良が発生する可能性を排除する。
【００４１】
＜第２の実施形態＞
次に上述した第１の実施形態に係るフォールトトレラントサーバを基本とする第２の実施形態について説明する。図２は、本発明の第２の実施形態に係るフォールトトレラントサーバの構成を示すブロック図である。ただし、図２に示す構成は、一例であって、本発明は、図２に示すフォールトトレラントサーバに限定されない。
【００４２】
本実施形態に係るフォールトトレラントサーバは、＃０系サブシステム１０１と、＃１系サブシステム１１１とが同期動作し、ＣＰＵとＩＯの二重化を実現している。＃０系サブシステム１０１と、＃１系サブシステム１１１は、一方が主系のサブシステムとして動作し、もう一方が従系のサブシステムとして動作する。
【００４３】
＃０系サブシステム１０１は、＃０系ＣＰＵサブシステム１０２と、ＣＰＵ二重化制御回路１０５と、ＩＯ二重化制御回路１０６と、＃０系ＩＯサブシステム１０７とを含む。同様に、＃１系サブシステム１１１は、１系ＣＰＵサブシステム１１２と、ＣＰＵ二重化制御回路１１５と、ＩＯ二重化制御回路１１６と、＃１系ＩＯサブシステム１１７とを含む。
【００４４】
ＣＰＵ二重化制御回路１０５と、ＩＯ二重化制御回路１０６は、第１の実施形態の第１の制御部１４の一例である。同様に、ＣＰＵ二重化制御回路１１５と、ＩＯ二重化制御回路１１６は、第１の実施形態の第２の制御部２４の一例である。
【００４５】
＃０系ＣＰＵサブシステム１０２は、ＣＰＵ１０４とＤＩＭＭ１０３（メモリ、ＤＩＭＭ：Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）とを含み、＃１系ＣＰＵサブシステム１１２とクロック単位で同期している。＃１系ＣＰＵサブシステム１１２は、ＣＰＵ１１４とＤＩＭＭ１１３とを含む。
【００４６】
＃０系ＩＯサブシステム１０７は、増設ＰＣＩカード１０８（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）と、オンボードＬＡＮ１０９（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と、ＨＤＤ１１０（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）とを含む。そして、＃０系ＩＯサブシステム１０７は、＃１系ＩＯサブシステム１１７と同期動作している。＃１系ＩＯサブシステム１１７は、増設ＰＣＩカード１１８と、オンボードＬＡＮ１１９と、ＨＤＤ１２０とを含む。
【００４７】
これらのサブシステムの要素を同期動作させるため、＃０系サブシステム１０１と＃１系サブシステム１１１は、それぞれ、ＣＰＵ二重化制御回路１０５、１１５と、ＩＯ二重化制御回路１０６、１１６とを組み込んだチップを搭載している。＃０系サブシステム１０１と＃１系サブシステム１１１は、システムバックプレーン１２１によって接続されている。
【００４８】
二重化時には、ＣＰＵ二重化制御回路１０５、１１５は、ＩＯ二重化制御回路１０６、１１６と、図２に示すように接続されている。すなわち、＃０系のＣＰＵ二重化制御回路１０５は、＃１系のＣＰＵ二重化制御回路１１５と＃０系、＃１系のＩＯ二重化制御回路１０６、１１６とに接続されている。同様に、＃１系のＣＰＵ二重化制御回路１１５は、＃０系のＣＰＵ二重化制御回路１０５と＃０系、＃１系のＩＯ二重化制御回路１０６、１１６とに接続されている。
【００４９】
しかし、二重化されていない状態では、ＣＰＵ二重化制御回路１０５、１１５の一方と、ＩＯ二重化制御回路１０６、１１６の一方とが接続可能である。たとえば、図３に示すように、＃０系のＣＰＵ二重化制御回路１０５は、＃１系のＩＯ二重化制御回路１１６と接続されて、＃１系のＣＰＵ二重化制御回路１１５と、＃０系のＩＯ二重化制御回路１０６とは接続されない。同様に、＃１系のＣＰＵ二重化制御回路１１５は、＃０系のＩＯ二重化制御回路１０６と接続されて、＃０系のＣＰＵ二重化制御回路１０５と、＃１系のＩＯ二重化制御回路１１６とは接続されない。このような接続方法は、ＣＰＵ二重化制御回路１０５、１１５と、ＩＯ二重化制御回路１０６、１１６を実装する制御ソフトウェアによって実現される。
【００５０】
図４は、本発明の第２の実施形態に係るＣＰＵ二重化制御回路とＩＯ二重化制御回路の構成を示すブロック図である。図４に示すように、ＣＰＵ二重化制御回路１０５は、ＣＰＵ同期部１０５１と、ＣＰＵ接続部１０５２とを含む。ＣＰＵ二重化制御回路１１５は、ＣＰＵ同期部１１５１と、ＣＰＵ接続部１１５２とを含む。また、ＩＯ二重化制御回路１０６は、ＩＯ同期部１０６１と、ＩＯ接続部１０６２とを含む。ＩＯ二重化制御回路１１６は、ＩＯ同期部１１６１と、ＩＯ接続部１１６２とを含む。
【００５１】
ＣＰＵ同期部１０５１とＣＰＵ同期部１１５１は、互いに連携して、＃０系ＣＰＵサブシステム１０２と＃１系ＣＰＵサブシステム１１２との同期ずれの復旧動作を行う。
【００５２】
ＣＰＵ接続部１０５２は、＃０系ＣＰＵサブシステム１０２の接続先を決定する、接続状態の設定及び変更機能を有する。
【００５３】
ＣＰＵ接続部１１５２は、＃１系ＣＰＵサブシステム１１２の接続先を決定する、接続状態の設定及び変更機能を有する。
【００５４】
ＩＯ同期部１０６１とＩＯ同期部１１６１は、互いに連携して、＃０系ＩＯサブシステム１０７と＃１系ＩＯサブシステム１１７とを二重化するための動作を行う。
【００５５】
ＩＯ接続部１０６２は、＃０系ＩＯサブシステム１０７の接続先を決定する、接続状態の設定及び変更機能を有する。
【００５６】
ＩＯ接続部１１６２は、＃１系ＩＯサブシステム１１７の接続先を決定する、接続状態の設定及び変更機能を有する。
【００５７】
本実施形態における処理の流れについて、図５〜８に示すフローチャートを用いて説明する。
【００５８】
図５は、本発明の第２の実施形態に係るフォールトトレラントサーバ（ＦＴサーバ）におけるＣＰＵサブシステムを再同期する処理を説明するフローチャートである。＃０系と＃１系の２つのＣＰＵサブシステムが同期動作するＦＴサーバにおいて、初回起動時における主系のＣＰＵサブシステムは、＃０系ＣＰＵサブシステム１０２として説明する。
【００５９】
始めに、ＦＴサーバは、両系（＃０系および＃１系）のＣＰＵサブシステム（＃０系ＣＰＵサブシステム１０２および＃１系ＣＰＵサブシステム１１２）を起動する（ステップＳ１１０、Ｓ１２０）。次に、ＣＰＵ同期部１０５１とＣＰＵ同期部１１５１は、＃０系ＣＰＵサブシステム１０２から＃１系ＣＰＵサブシステム１１２にコンテキストをコピーする（ステップＳ１３０）。ここで、コンテキストとは、メモリ（ＤＩＭＭ１０３）やＣＰＵ１０４のレジスタの内容である。そして、主系である＃０系のＣＰＵ同期部１０５１は、同期のために両系（２つのＣＰＵサブシステム）に同時にリセットをかける（ステップＳ１４０）。その結果、ＣＰＵ同期部１０５１は同期ずれがないと判断した場合（ステップＳ１５０にて「Ｎｏ」）、＃０系ＣＰＵサブシステム１０２と＃１系ＣＰＵサブシステム１１２は、同期化完了となる。
【００６０】
ＣＰＵの同期制御は、基準となるクロック信号に対してタイミングの調整を行う。しかし、ＣＰＵの仕様によっては、外部からの信号やソフトウェア手続きだけでは完全に制御できない部分も存在し、稀に個体差や環境の変化から期待と異なるレジスタ値設定やクロック間位相差が発生することがある。
【００６１】
そのため、同期ずれ発生時（ステップＳ１５０にて「Ｙｅｓ」）に、ＣＰＵ同期部１１５１は、従系のＣＰＵサブシステム（＃１系ＣＰＵサブシステム１１２）を切り離し（ステップＳ１８０）、再度組み込む（ステップＳ１６０）。すなわち、従系のＣＰＵ同期部１１５１は、＃１系ＣＰＵサブシステム１１２に電源をオフ、再度電源をオンする（パワーサイクルをかける）。これにより、もしも従系のＣＰＵサブシステム（＃１系ＣＰＵサブシステム１１２）が期待と異なる状態となっていた場合に同期ずれを解消できる。
【００６２】
しかし、従系ではなく、主系のＣＰＵサブシステム（＃０系ＣＰＵサブシステム１０２）が期待と異なる状態になっていた場合、このＦＴサーバは、従系のＣＰＵサブシステムの切り離しと、組み込みを行っても、同期ずれを解消することはできない。その結果、ＣＰＵ同期部１１５１は、従系のＣＰＵサブシステムをＮ回（Ｎは、あらかじめ定めた閾値）以上繰り返して切り離す（電源をオフにする）ことになる。Ｎ回以上切り離した後（ステップＳ１７０にて「Ｙｅｓ」）に、従系のＣＰＵサブシステム（＃１系ＣＰＵサブシステム１１２）の電源がオンになり起動する。そして、＃１系ＣＰＵサブシステム１１２は、＃１系ＣＰＵサブシステム１１２と、ＩＯサブシステム（＃０系ＩＯサブシステム１０７および＃１系ＩＯサブシステム１１７）とのインタフェースの動作を確認する（ステップＳ１９０）。この場合、ＣＰＵ接続部１０５２、ＣＰＵ接続部１１５２、ＩＯ接続部１０６２およびＩＯ接続部１１６２による接続状態の変更に応じて、＃１系ＣＰＵサブシステム１１２は、変更された接続状態での動作を確認する。
【００６３】
上記の各インタフェースで動作が正常であることが確認されると、ＣＰＵ二重化制御回路１０５１のＣＰＵ接続部１０５２は、ＣＰＵ接続部１１５２およびＩＯ接続部１１６２と連係して主系のＣＰＵサブシステムを切り替える（ステップＳ２００）。すなわち、主系のＣＰＵサブシステムは、＃０系ＣＰＵサブシステム１０２から＃１系ＣＰＵサブシステム１１２に切り替わる。これにより、ＦＴサーバは、同期するようになる。
【００６４】
図５におけるＳ１９０の従系のＣＰＵサブシステムと各ＩＯサブシステムとのＩ／Ｆを確認する処理について、図６のフローチャートを用いて、従系のＣＰＵサブシステムが＃１系である場合を例に説明する。
【００６５】
図６は、本発明の第２の実施形態に係るフォールトトレラントサーバにおいて、従系のＣＰＵサブシステムとＩＯサブシステムとのＩ／Ｆを確認する処理を説明するフローチャートである。また、図９は、本発明の第２の実施形態に係るフォールトトレラントサーバにおけるサブシステムの接続状態を説明する図である。図９は、従系のＣＰＵサブシステムとＩＯサブシステムとのインタフェース（Ｉ／Ｆ）を確認する処理における＃０系ＣＰＵサブシステム１０２、＃０系ＩＯサブシステム１０７、＃１系ＣＰＵサブシステム１１２、＃１系ＩＯサブシステム１１７の接続状態を説明する図である。なお、図を簡素化するために二重化回路の記述は、省略している。
【００６６】
図６において、ＦＴサーバの＃１系ＣＰＵサブシステム１１２は、始めに、＃１系ＣＰＵサブシステム１１２と、＃１系ＩＯサブシステム１１７とのＩ／Ｆが正常に動作していることを確認する(ステップＳ１９１）。
【００６７】
Ｓ１９１の処理の詳細を、図７を用いて説明する。図７は、本発明の第２の実施形態に係るフォールトトレラントサーバにおいて、＃１系ＣＰＵサブシステム１１２と、＃１系ＩＯサブシステム１１７とのＩ／Ｆを確認する処理を説明するフローチャートである。
【００６８】
始めに、ＦＴサーバは、従系である＃１系ＣＰＵサブシステム１１２を起動する（ステップＳ３１０）。次に、ＣＰＵ同期部１０５１とＣＰＵ同期部１１５１は、主系である＃０系ＣＰＵサブシステム１０２から、従系である＃１系ＣＰＵサブシステム１１２にコンテキストをコピーして、両系を一致させる（ステップＳ３２０）。Ｓ３１０〜Ｓ３２０において、サブシステムの接続状態は、図９の（ａ）の状態である。
【００６９】
それから、ＣＰＵ接続部（１０５２および１１５２）と、ＩＯ接続部（１０６２および１１６２）は、主系のサブシステム（＃０系サブシステム１０１）と、従系のサブシステム（＃１系サブシステム１１１）の動作を分離する（ステップＳ３３０）。この状態（図９の（ｂ）の接続状態）において、＃０系サブシステム１０１は、＃１系サブシステム１１１と接続されていないように見える。このとき、同様に、＃１系サブシステム１１１からは、＃０系サブシステム１０１と接続されていないように見える。サブシステムを分離した後は、＃０系ＣＰＵサブシステム１０２と＃０系ＩＯサブシステム１０７によって、運用は、継続される。
【００７０】
一方、図９の（ｂ）の接続状態において、＃１系ＣＰＵサブシステム１１２は、＃１系ＣＰＵサブシステム１１２と＃１系ＩＯサブシステム１１７とのＩ／Ｆが正常に動作しているかを確認する（ステップＳ３４０）。＃１系ＣＰＵサブシステム１１２は、例えば、ダミーのデータを、（ＣＰＵ接続部１１５２及びＩＯ接続部１１６２を経由して）＃１系ＩＯサブシステム１１７に送り、返却される結果が期待値の通りであるかを確認する。Ｓ３３０〜Ｓ３４０において、サブシステムの接続状態は、図９の（ｂ）の状態である。
【００７１】
確認した結果が正常でない場合（図６のＳ１９２にて「Ｎｏ」）、＃１系サブシステム１１１は、交換する必要があると＃１系ＣＰＵサブシステム１１２によって判断される(ステップＳ１９５）。確認した結果が正常である場合（図６のＳ１９２にて「Ｙｅｓ」）、＃１系ＣＰＵサブシステム１１２は、＃１系ＣＰＵサブシステム１１２と、＃０系ＩＯサブシステム１０７とのＩ／Ｆが正常に動作しているかを確認する（ステップＳ１９３）。
【００７２】
ステップＳ１９３での確認処理の詳細について、図８を用いて説明する。図８は、本発明の第２の実施形態に係るフォールトトレラントサーバにおいて、＃１系ＣＰＵサブシステム１１２と、＃０系ＩＯサブシステム１０７とのＩ／Ｆを確認する処理を説明するフローチャートである。
【００７３】
始めに、ＣＰＵ接続部１１５２と、ＩＯ接続部１１６２は、＃１系ＣＰＵサブシステム１１２と＃１系ＩＯサブシステム１１７を切り離す（ステップＳ４１０）。次に、ＩＯ同期部（１０６１および１１６１）は、＃０系ＩＯサブシステム１０７から＃１系ＩＯサブシステム１１７に、コンテキストをコピーして、ＩＯを二重化する（ステップＳ４２０）。それから、ＦＴサーバは、＃１系ＣＰＵサブシステム１１２を起動する（ステップＳ４３０）。ＣＰＵ同期部（１０５１および１１５１）は、運用中の＃０系ＣＰＵサブシステム１０２のコンテキストを＃１系ＣＰＵサブシステム１１２にコピーする（ステップＳ４４０）。Ｓ４１０〜Ｓ４４０において、サブシステムの接続状態は、図９の（ｃ）の状態である。
【００７４】
ＣＰＵ接続部１０５２とＩＯ接続部１０６２は、＃０系ＩＯサブシステム１０７を＃０系ＣＰＵサブシステム１０２から切り離す（ステップＳ４５０）。＃０系ＣＰＵサブシステム１０２と＃１系ＩＯサブシステム１１７により、運用は、継続される。ここで、ＣＰＵ接続部１１５２とＩＯ接続部１０６２は、切り離された＃０系ＩＯサブシステム１０７を＃１系ＣＰＵサブシステム１１２に組み込む。そして、＃１系ＣＰＵサブシステム１１２は、＃１系ＣＰＵサブシステム１１２と＃０系ＩＯサブシステム１０７とのＩ／Ｆが正常に動作していることを確認する（ステップＳ４６０）。Ｓ４５０〜Ｓ４６０において、サブシステムの接続状態は、図９の（ｄ）の状態である。
【００７５】
それから、ＩＯ同期部（１０６１および１１６１）は、運用中の＃１系ＩＯサブシステム１１７から＃０系ＩＯサブシステム１０７にコンテキストをコピーして二重化を行う（ステップＳ４７０）。その後、ＣＰＵ接続部１１５２とＩＯ接続部１０６２は、＃０系ＩＯサブシステム１０７を＃１系ＣＰＵサブシステム１１２から切り離す（ステップＳ４８０）。Ｓ４７０〜Ｓ４８０において、サブシステムの接続状態は、図９の（ｅ）の状態である。
【００７６】
確認した結果が正常でない場合（図６のＳ１９４にて「Ｎｏ」）、ＣＰＵ接続部１０５２とＩＯ接続部１１６２は、＃１系ＩＯサブシステム１１７を＃０系ＣＰＵサブシステム１０２から切り離す（ステップＳ１９６）。そして、＃１系サブシステム１１１を交換（ステップＳ１９５）した後に、ＦＴサーバは、Ｓ１９１から処理する。確認した結果が正常である場合（図６のＳ１９４にて「Ｙｅｓ」）、図６に示す従系のＣＰＵサブシステムとＩＯサブシステムとのＩ／Ｆを確認する処理（図５のＳ１９０）を終了する。そして、ＣＰＵ二重化制御回路１０５１は、主系のＣＰＵサブシステムを、＃０系ＣＰＵサブシステム１０２から＃１系ＣＰＵサブシステム１１２に切り替える（ステップＳ２００）。
【００７７】
次に、図５におけるＳ２００の主系のＣＰＵサブシステムを切り替える処理について、図１０のフローチャートを用いて説明する。
【００７８】
図１０は、本発明の第２の実施形態に係るフォールトトレラントサーバにおける主系のＣＰＵサブシステムを切り替える処理を説明するフローチャートである。始めに、ＦＴサーバは、従系のＣＰＵサブシステム（＃１系ＣＰＵサブシステム１１２）を起動する（ステップＳ２０１）。それから、ＣＰＵ同期部１０５１とＣＰＵ同期部１１５１は、主系のＣＰＵサブシステムから、従系のＣＰＵサブシステムにコンテキストをコピーし、両系のコンテキストを一致させる（ステップＳ２０２）。すなわち、ＣＰＵ同期部１０５１とＣＰＵ同期部１１５１は、＃０系ＣＰＵサブシステム１０２から＃１系ＣＰＵサブシステム１１２にコンテキストをコピーする。それから、ＣＰＵ二重化制御回路１０５は、主系と従系を切り替える（ステップＳ２０３）。
【００７９】
次に、ＦＴサーバは、従系となった＃０系ＣＰＵサブシステム１０２にパワーサイクルを実施する（ステップＳ２０４）。ＣＰＵ同期部１０５１とＣＰＵ同期部１１５１は、主系のＣＰＵサブシステムから、従系のＣＰＵサブシステムにコンテキストをコピーし、両系のコンテキストを一致させる（ステップＳ２０５）。すなわち、ＣＰＵ同期部１０５１とＣＰＵ同期部１１５１は、＃１系ＣＰＵサブシステム１１２からと、＃０系ＣＰＵサブシステム１０２にコンテキストをコピーする。そして、ＣＰＵ同期部１１５１は、同期するために＃１系ＣＰＵサブシステム１１２と＃０系ＣＰＵサブシステム１０２にリセットをかける（ステップＳ２０６）。このようにして、ＦＴサーバは、同期化を完了する。
【００８０】
この手法を用いることにより、主系のＣＰＵサブシステムであった＃０系ＣＰＵサブシステム１０２にパワーサイクルをかけることが可能となり、図１１を用いて前述した主系のＣＰＵサブシステムが期待と異なる状態になっていた場合にも同期ずれを解消することができる。
【００８１】
以上、説明したように、第２の実施形態には、フォールトトレラントサーバにおけるＣＰＵの同期ずれを解消する動作において、無停止で、二重化への復帰を安定的に実現することができるという効果がある。その理由は、ＣＰＵサブシステムの系切り替え処理を行う前に切り替え先のＣＰＵサブシステムとＩＯサブシステムとの動作を検証することによって、切り替え後に動作不良が発生する可能性を排除するからである。
【００８２】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００８３】
１１    第１のサブシステム
１２    第１のＣＰＵサブシステム
１３    第１のＩＯサブシステム
１４    第１の制御部
２１    第２のサブシステム
２２    第２のＣＰＵサブシステム
２３    第２のＩＯサブシステム
２４    第２の制御部
３１    第１の同期部
３２    第１の接続部
４１    第２の同期部
４２    第２の接続部
１０１    ＃０系サブシステム
１０２    ＃０系ＣＰＵサブシステム
１０３    ＤＩＭＭ
１０４    ＣＰＵ
１０５    ＣＰＵ二重化制御回路
１０６    ＩＯ二重化制御回路
１０７    ＃０系ＩＯサブシステム
１０８    増設ＰＣＩカード
１０９    オンボードＬＡＮ
１１０    ＨＤＤ
１１１    ＃１系サブシステム
１１２    ＃１系ＣＰＵサブシステム
１１３    ＤＩＭＭ
１１４    ＣＰＵ
１１５    ＣＰＵ二重化制御回路
１１６    ＩＯ二重化制御回路
１１７    ＃１系ＩＯサブシステム
１１８    増設ＰＣＩカード
１１９    オンボードＬＡＮ
１２０    ＨＤＤ
【図１】
0006540113.tif 000002
【図２】
0006540113.tif 000003
【図３】
0006540113.tif 000004
【図４】
0006540113.tif 000005
【図５】
0006540113.tif 000006
【図６】
0006540113.tif 000007
【図７】
0006540113.tif 000008
【図８】
0006540113.tif 000009
【図９】
0006540113.tif 000010
【図１０】
0006540113.tif 000011
【図１１】
0006540113.tif 000012