(57)【要約】【課題】冗長化システムにおいて、障害発生時にシステムを縮退した後、更に別の箇所に障害が発生した時でも動作を継続できるようにする。【解決手段】２つの系で互いにロックステップ動作する冗長化サーバのいずれかが、障害発生時に、通常は障害が発生した系の中の障害デバイスを特定し、ＯＳ動作を一時的に停止し、プロセッサのコンテキストデータを退避し、障害デバイスに対応する二重化対象のデバイスが使用しているデータを、別のデバイス上にコピーし、退避したコンテキストデータを使用しない構成情報に変更し、正常に動作している系の情報を、障害が発生した系にコピーし、両系のプロセッサに対して同時にリセットをかけ、両系のプロセッサで、同時に初期化を開始し、退避していたコンテキストデータを読み込み、障害デバイスを使用しない構成でＯＳ動作を復帰し、同期状態を維持したまま障害デバイスを切り離して動作する。【選択図】図１
2013206278.tif 000002
【特許請求の範囲】
【請求項１】
第１の系の冗長化サーバと、
第２の系の冗長化サーバと
を含み、
前記第１の系の冗長化サーバ及び前記第２の系の冗長化サーバの各々は、互いにロックステップ動作し、障害発生時に、通常は一旦障害が発生した系を切り離して動作を維持し、ユーザポリシーでの選択に従って、障害が発生した箇所を縮退させた構成で二重化動作に復帰する
冗長化システム。
【請求項２】
請求項１に記載の冗長化システムであって、
前記第１の系の冗長化サーバ及び前記第２の系の冗長化サーバの各々は、
障害発生時に、正常に動作している系である場合、系間の通信経路を使用して、障害が発生した系の中の障害デバイスを特定する手段と、
ＯＳ動作を一時的に停止し、プロセッサのコンテキストデータを退避する手段と、
正常に動作している系のデバイスのうち、前記障害デバイスに対応する二重化対象のデバイスが使用しているデータを、別のデバイス上にコピーする手段と、
退避したコンテキストデータを、前記障害デバイスを使用しない構成情報に変更する手段と、
系間の通信経路を使用して、正常に動作している系の情報を、障害が発生した系にコピーする手段と、
両系のメモリ内のデータに対してはリセットをかけず、両系のプロセッサに対して同時にリセットをかける手段と、
両系のプロセッサで、同時に初期化を開始し、退避していたコンテキストデータを読み込み、前記障害デバイスを使用しない構成でＯＳ動作を復帰し、同期状態を維持したまま前記障害デバイスを切り離して動作する手段と
を具備する
冗長化システム。
【請求項３】
２つの系で互いにロックステップ動作する手段と、
障害発生時に、通常は一旦障害が発生した系を切り離して動作を維持する手段と、
ユーザポリシーでの選択に従って、障害が発生した箇所を縮退させた構成で二重化動作に復帰する手段と
を具備する
冗長化サーバ。
【請求項４】
請求項３に記載の冗長化サーバであって、
障害発生時に、正常に動作している系である場合、系間の通信経路を使用して、障害が発生した系の中の障害デバイスを特定する手段と、
ＯＳ動作を一時的に停止し、プロセッサのコンテキストデータを退避する手段と、
正常に動作している系のデバイスのうち、前記障害デバイスに対応する二重化対象のデバイスが使用しているデータを、別のデバイス上にコピーする手段と、
退避したコンテキストデータを、前記障害デバイスを使用しない構成情報に変更する手段と、
系間の通信経路を使用して、正常に動作している系の情報を、障害が発生した系にコピーする手段と、
両系のメモリ内のデータに対してはリセットをかけず、両系のプロセッサに対して同時にリセットをかける手段と、
両系のプロセッサで、同時に初期化を開始し、退避していたコンテキストデータを読み込み、前記障害デバイスを使用しない構成でＯＳ動作を復帰し、同期状態を維持したまま前記障害デバイスを切り離して動作する手段と
を更に具備する
冗長化サーバ。
【請求項５】
冗長化サーバが、
２つの系で互いにロックステップ動作することと、
障害発生時に、通常は一旦障害が発生した系を切り離して動作を維持することと、
ユーザポリシーでの選択に従って、障害が発生した箇所を縮退させた構成で二重化動作に復帰することと
を含む
冗長化システムの可用性向上方法。
【請求項６】
請求項５に記載の冗長化システムの可用性向上方法であって、
前記冗長化サーバが、
障害発生時に、正常に動作している系である場合、系間の通信経路を使用して、障害が発生した系の中の障害デバイスを特定することと、
ＯＳ動作を一時的に停止し、プロセッサのコンテキストデータを退避することと、
正常に動作している系のデバイスのうち、前記障害デバイスに対応する二重化対象のデバイスが使用しているデータを、別のデバイス上にコピーすることと、
退避したコンテキストデータを、前記障害デバイスを使用しない構成情報に変更することと、
系間の通信経路を使用して、正常に動作している系の情報を、障害が発生した系にコピーすることと、
両系のメモリ内のデータに対してはリセットをかけず、両系のプロセッサに対して同時にリセットをかけることと、
両系のプロセッサで、同時に初期化を開始し、退避していたコンテキストデータを読み込み、前記障害デバイスを使用しない構成でＯＳ動作を復帰し、同期状態を維持したまま前記障害デバイスを切り離して動作することと
を更に含む
冗長化システムの可用性向上方法。
【請求項７】
冗長化サーバ用のプログラムであって、
２つの系で互いにロックステップ動作するステップと、
障害発生時に、通常は一旦障害が発生した系を切り離して動作を維持するステップと、
ユーザポリシーでの選択に従って、障害が発生した箇所を縮退させた構成で二重化動作に復帰するステップと
を冗長化サーバに実行させるための
プログラム。
【請求項８】
請求項７に記載のプログラムであって、
障害発生時に、正常に動作している系である場合、系間の通信経路を使用して、障害が発生した系の中の障害デバイスを特定するステップと、
ＯＳ動作を一時的に停止し、プロセッサのコンテキストデータを退避するステップと、
正常に動作している系のデバイスのうち、前記障害デバイスに対応する二重化対象のデバイスが使用しているデータを、別のデバイス上にコピーするステップと、
退避したコンテキストデータを、前記障害デバイスを使用しない構成情報に変更するステップと、
系間の通信経路を使用して、正常に動作している系の情報を、障害が発生した系にコピーするステップと、
両系のメモリ内のデータに対してはリセットをかけず、両系のプロセッサに対して同時にリセットをかけるステップと、
両系のプロセッサで、同時に初期化を開始し、退避していたコンテキストデータを読み込み、前記障害デバイスを使用しない構成でＯＳ動作を復帰し、同期状態を維持したまま前記障害デバイスを切り離して動作するステップと
を更に冗長化サーバに実行させるための
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長化システムに関し、特に冗長化システムの可用性向上方法に関する。
【背景技術】
【０００２】
システムを構成する装置を多重化（冗長化）した冗長化システムの１つとして、フォールトトレラント（ＦＴ：Ｆａｕｌｔ  Ｔｏｒｅｒａｎｔ）システムが知られている。
【０００３】
フォールトトレラントシステムは、多重化（冗長化）された装置を、運用系（Ａｃｔｉｖｅ）と待機系（Ｓｔａｎｄｂｙ）とに分け、運用系と待機系とを切り替えることで、システムに障害（異常）が発生した場合でも正常な動作を保ち続ける能力を持つ。
【０００４】
一般的に、フォールトトレラントシステムは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備える情報処理装置（フォールトトレラントサーバ等）を複数台使って構成され、ＣＰＵの冗長性を確保するため、複数の情報処理装置のＣＰＵをクロックレベルで同期して動作させている。
【０００５】
もし、何らかの理由により、ＣＰＵ間で同期が取れない状態（同期ずれ）となった場合、異常が発生したＣＰＵを同期動作から切り離すことにより、そのＣＰＵの属する情報処理装置をフォールトトレラントシステムから切り離し、フォールトトレラントシステム自体は正常に稼動させ続ける仕組みとなっている。
【０００６】
このように、フォールトトレラントシステムでは、通常の障害発生時には、障害が発生した片側の系を切り離し、正常な残りの系のみで動作を継続する。しかし、片側の系を切り離した場合、冗長性が失われてしまい、更に障害が発生した時にはシステムが停止してしまうという問題がある。
【０００７】
関連する技術として、特許文献１（特開平１１−１３４２１０号公報）にシステムの冗長化方法が開示されている。この関連技術では、各モジュールを少なくとも二重の冗長化とし、モジュール内の各機能を複数に分割してブロック化するか、各機能要素を複数個備え、モジュール内のいずれかの機能の一部に障害が発生した場合は、障害の発生したブロック又は障害を起こしている機能要素のみを切り離して縮退動作させ、更に平行運転している正常な冗長モジュールも、障害を起こして縮退動作を行っているモジュールと同一構成になるように縮退させて平行運転させる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１１−１３４２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、従来と異なる構成・手順で、障害が発生した箇所のみを縮退させて二重化動作に復帰する冗長化システムを提供することである。
【課題を解決するための手段】
【００１０】
冗長化システムは、第１の系の冗長化サーバと、第２の系の冗長化サーバとを含む。第１の系の冗長化サーバ及び第２の系の冗長化サーバの各々は、互いにロックステップ（Ｌｏｃｋｓｔｅｐ）動作し、障害発生時に、通常は（基本的には）一旦障害が発生した系を切り離して動作を維持し、ユーザポリシーでの選択に従って、障害が発生した箇所を縮退させた構成で二重化動作に復帰する。なお、ロックステップ動作とは、２つのプロセッサで全く同じ処理を実行して結果を比較し、エラーを判定する動作である。なお、ロックステップ動作とは、２つのプロセッサで全く同じ処理を実行して結果を比較し、エラーを判定する動作である。
【００１１】
本発明に係る冗長化サーバは、２つの系で互いにロックステップ動作する処理機構と、障害発生時に、通常は一旦障害が発生した系を切り離して動作を維持する処理機構と、ユーザポリシーでの選択に従って、障害が発生した箇所を縮退させた構成で二重化動作に復帰する処理機構とを具備する。
【００１２】
本発明に係る冗長化システムの可用性向上方法は、冗長化サーバが、２つの系で互いにロックステップ動作することと、障害発生時に、通常は一旦障害が発生した系を切り離して動作を維持することと、ユーザポリシーでの選択に従って、障害が発生した箇所を縮退させた構成で二重化動作に復帰することとを含む。
【００１３】
本発明に係るプログラムは、冗長化サーバ用のプログラムであって、２つの系で互いにロックステップ動作するステップと、障害発生時に、通常は一旦障害が発生した系を切り離して動作を維持するステップと、ユーザポリシーでの選択に従って、障害が発生した箇所を縮退させた構成で二重化動作に復帰するステップとを冗長化サーバに実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【発明の効果】
【００１４】
冗長化システムにおいて、障害発生時にシステムを縮退した後、更に別の箇所に障害が発生した時でも動作を継続できる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係るフォールトトレラントシステムの構成例を示すブロック図である。
【図２】本発明に係るフォールトトレラントシステムの障害発生時の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
本発明は、冗長化システムを対象としている。ここでは、冗長化システムの１つであるフォールトトレラントシステムを例に説明する。但し、実際には、フォールトトレラントシステムに限定されない。例えば、クラスタシステムや、その他の冗長化システムでも良い。
【００１７】
＜実施形態＞
以下に、本発明の実施形態について添付図面を参照して説明する。
【００１８】
［システム構成］
図１を参照して、本発明に係るフォールトトレラントシステムの構成例について説明する。
【００１９】
本発明に係るフォールトトレラントシステムは、フォールトトレラントサーバ１０と、フォールトトレラントサーバ２０を含む。
【００２０】
ここでは、フォールトトレラントサーバ１０は、第１の系（Ａ系）のコンピュータシステムである。また、フォールトトレラントサーバ２０は、第２の系（Ｂ系）のコンピュータシステムである。
【００２１】
第１の系のフォールトトレラントサーバ１０と第２の系のフォールトトレラントサーバ２０は、冗長化構成のため、全く同じ構成であると好適である。少なくとも、冗長化に対応した構成要素については、全く同じ構成となる。
【００２２】
第１の系のフォールトトレラントサーバ１０と第２の系のフォールトトレラントサーバ２０は、互いにロックステップ（Ｌｏｃｋｓｔｅｐ）動作し、障害発生時に、通常は（基本的には）一旦障害が発生した系を切り離して動作を維持し、ユーザポリシーでの選択に従って、障害が発生した箇所を縮退させた構成で二重化動作に復帰する。なお、ロックステップ動作とは、２つのプロセッサで全く同じ処理を実行して結果を比較し、エラーを判定する動作である。
【００２３】
「ユーザポリシーでの選択に従って」とは、以下の（ポリシー１）又は（ポリシー２）のいずれかをユーザが選択できるようにすることを意味している。
【００２４】
（ポリシー１）障害が発生した時に、従来のフォールトトレラントシステムのように、冗長性は失われるが、モジュール毎に切り離しを行い、縮退動作をせずに動作を継続する。
【００２５】
（ポリシー２）冗長性を重視して、障害が発生した箇所のみを縮退させて二重化動作に復帰する。
【００２６】
ここでは、障害発生時に、通常は（ポリシー１）に従って、一旦障害が発生した系を切り離して動作を維持する。そして、ユーザにより（ポリシー２）が選択された場合に、障害が発生した箇所のみを縮退させて二重化動作に復帰する。無論、反対に、通常は（ポリシー２）に従って、障害が発生した箇所のみを縮退させて二重化動作に復帰し、ユーザにより（ポリシー１）が選択された場合に、一旦障害が発生した系を切り離して動作を維持するようにすることも可能である。
【００２７】
［フォールトトレラントサーバの構成］
次に、第１の系のフォールトトレラントサーバ１０及び第２の系のフォールトトレラントサーバ２０の各々の構成例について説明する。
【００２８】
第１の系のフォールトトレラントサーバ１０は、ＣＰＵ１１（１１−ａ、ａ＝１〜ｘ：ｘは任意）と、メモリ１２（１２−ｂ、ｂ＝１〜ｙ：ｙは任意）と、チップセット１３と、ＦＴ（Ｆａｕｌｔ  Ｔｏｒｅｒａｎｔ）制御チップ１４と、ＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ：入出力）コントローラ１５を備える。
【００２９】
同様に、第２の系のフォールトトレラントサーバ２０は、ＣＰＵ２１（２１−ａ、ａ＝１〜ｘ：ｘは任意）と、メモリ２２（２２−ｂ、ｂ＝１〜ｙ：ｙは任意）と、チップセット２３と、ＦＴ制御チップ２４と、ＩＯコントローラ２５を備える。
【００３０】
ＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）の各々は、メモリ１２（１２−ｂ、ｂ＝１〜ｙ）のいずれかと接続されている。同様に、ＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）の各々は、メモリ２２（２２−ｂ、ｂ＝１〜ｙ）のいずれかと接続されている。
【００３１】
チップセット１３は、ＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）と接続されている。同様に、チップセット２３は、ＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）と接続されている。
【００３２】
ＦＴ制御チップ１４は、チップセット１３及びＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）と接続されている。ＦＴ制御チップ１４は、チップセット１３及びＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）に、信号１４１を送信する。同様に、ＦＴ制御チップ２４は、チップセット２３及びＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）と接続されている。ＦＴ制御チップ２４は、チップセット２３及びＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）に、信号２４１を送信する。ここでは、ＦＴ制御チップ１４とＦＴ制御チップ２４は、クロスリンクを介して互いに接続されており、第１の系のフォールトトレラントサーバ１０と第２の系のフォールトトレラントサーバ２０の間のデータ転送を行う。なお、クロスリンクとは、相互接続のための通信経路である。
【００３３】
ＩＯコントローラ１５は、ＦＴ制御チップ１４と接続されている。同様に、ＩＯコントローラ２５は、ＦＴ制御チップ２４と接続されている。ＩＯコントローラ１５及びＩＯコントローラ２５は、入出力装置や補助記憶装置（ＤＩＳＫ等）等の外部装置と接続することが可能である。
【００３４】
図示しないが、ここでは、本体用のファームウェアである本体ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）が、ＦＴ制御チップ１４に接続されているフラッシュメモリや、ＦＴ制御チップ２４に接続されているフラッシュメモリに格納されている。また、本体用のソフトウェア（ＳＷ：Ｓｏｆｔｗａｒｅ）が、ＩＯコントローラ１５に接続されている補助記憶装置や、ＩＯコントローラ２５に接続されている補助記憶装置に格納されている。ＦＴ制御チップ１４やＦＴ制御チップ２４は、これらの本体ＢＩＯＳやソフトウェアを利用することができる。
【００３５】
［同期リセットの動作］
次に、同期リセット（ＳｙｎｃＲｅｓｅｔ）の動作について説明する。
【００３６】
第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４及び第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４は、本体ＢＩＯＳの同期リセット（ＳｙｎｃＲｅｓｅｔ）コマンドを発行する。
【００３７】
第１の系のフォールトトレラントサーバ１０内において、ＦＴ制御チップ１４は、チップセット１３及びＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）を介して、メモリ１２（１２−ｂ、ｂ＝１〜ｙ）の各々をセルフリフレッシュモードに移行させる。同様に、第２の系のフォールトトレラントサーバ２０内において、ＦＴ制御チップ２４は、チップセット２３及びＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）を介して、メモリ１２（１２−ｂ、ｂ＝１〜ｙ）の各々をセルフリフレッシュモードに移行させる。なお、ＦＴ制御チップ１４及びＦＴ制御チップ２４は、一方が本体ＢＩＯＳの同期リセット（ＳｙｎｃＲｅｓｅｔ）コマンドを発行した場合、クロスリンクを介して、他方に当該同期リセット（ＳｙｎｃＲｅｓｅｔ）コマンドを通知／転送するようにしても良い。
【００３８】
次に、第１の系のフォールトトレラントサーバ１０内において、ＦＴ制御チップ１４は、チップセット１３及びＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）に対して、信号１４１として、同期リセット（ＳｙｎｃＲｅｓｅｔ）信号を送信し、同期リセット（ＳｙｎｃＲｅｓｅｔ）をアサート（ａｓｓｅｒｔ）する。すなわち、チップセット１３及びＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）に対して、同期リセット（ＳｙｎｃＲｅｓｅｔ）をアクティブな（有効な／論理的に真の）状態にする。同様に、第２の系のフォールトトレラントサーバ２０内において、ＦＴ制御チップ２４は、チップセット２３及びＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）に対して、信号２４１として、同期リセット（ＳｙｎｃＲｅｓｅｔ）信号を送信し、同期リセット（ＳｙｎｃＲｅｓｅｔ）をアサートする。なお、ＦＴ制御チップ１４及びＦＴ制御チップ２４は、一方が同期リセット（ＳｙｎｃＲｅｓｅｔ）信号を送信する場合、クロスリンクを介して、他方に当該同期リセット（ＳｙｎｃＲｅｓｅｔ）信号を通知／転送するようにしても良い。
【００３９】
［クロスリンクによる同期処理］
なお、第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４及び第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４は、クロスリンクを介して互いに同期を取っている。したがって、ＦＴ制御チップ１４及びＦＴ制御チップ２４は、上記の同期リセット（ＳｙｎｃＲｅｓｅｔ）の動作を同時に実行する。
【００４０】
［ＣＰＵの初期化処理のロックステップ動作］
更に、第１の系のフォールトトレラントサーバ１０のＣＰＵ１１及び第２の系のフォールトトレラントサーバ２０のＣＰＵ２１は、全ての処理についてロックステップ動作するため、同期リセット（ＳｙｎｃＲｅｓｅｔ）による初期化処理自体もロックステップ動作する。
【００４１】
［セルフリフレッシュ動作によるメモリ内のデータ維持］
また、第１の系のフォールトトレラントサーバ１０のＣＰＵ１１及び第２の系のフォールトトレラントサーバ２０のＣＰＵ２１は、リセット処理期間中において、メモリ１２（１２−ｂ、ｂ＝１〜ｙ）の各々及びメモリ２２（２２−ｂ、ｂ＝１〜ｙ）の各々に格納されたデータを、セルフリフレッシュ動作により維持している。
【００４２】
［同期リセットの解除の動作］
また、上記の同期リセット（ＳｙｎｃＲｅｓｅｔ）の動作と同様に、同期リセット（ＳｙｎｃＲｅｓｅｔ）の解除の動作も同時に実行する。
【００４３】
以下に、同期リセット（ＳｙｎｃＲｅｓｅｔ）の解除の動作について説明する。同期リセット（ＳｙｎｃＲｅｓｅｔ）の解除の動作は、基本的に、上記の同期リセット（ＳｙｎｃＲｅｓｅｔ）の動作と同じ手順で行われる。
【００４４】
第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４及び第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４は、本体ＢＩＯＳの同期リセット（ＳｙｎｃＲｅｓｅｔ）解除コマンドを発行する。
【００４５】
第１の系のフォールトトレラントサーバ１０内において、ＦＴ制御チップ１４は、チップセット１３及びＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）を介して、メモリ１２（１２−ｂ、ｂ＝１〜ｙ）の各々をアクティブモードに移行させる。同様に、第２の系のフォールトトレラントサーバ２０内において、ＦＴ制御チップ２４は、チップセット２３及びＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）を介して、メモリ１２（１２−ｂ、ｂ＝１〜ｙ）の各々をアクティブモードに移行させる。なお、ＦＴ制御チップ１４及びＦＴ制御チップ２４は、一方が本体ＢＩＯＳの同期リセット（ＳｙｎｃＲｅｓｅｔ）解除コマンドを発行した場合、クロスリンクを介して、他方に当該同期リセット（ＳｙｎｃＲｅｓｅｔ）解除コマンドを通知／転送するようにしても良い。
【００４６】
次に、第１の系のフォールトトレラントサーバ１０内において、ＦＴ制御チップ１４は、チップセット１３及びＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）に対して、信号１４１として、同期リセット（ＳｙｎｃＲｅｓｅｔ）解除信号を送信し、同期リセット（ＳｙｎｃＲｅｓｅｔ）をネゲート（ｎｅｇａｔｅ）する。すなわち、チップセット１３及びＣＰＵ１１（１１−ａ、ａ＝１〜ｘ）に対して、同期リセット（ＳｙｎｃＲｅｓｅｔ）をインアクティブな（無効な／論理的に偽の）状態にする。同様に、第２の系のフォールトトレラントサーバ２０内において、ＦＴ制御チップ２４は、チップセット２３及びＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）に対して、信号２４１として、同期リセット（ＳｙｎｃＲｅｓｅｔ）解除信号を送信し、同期リセット（ＳｙｎｃＲｅｓｅｔ）をネゲートする。同期リセット（ＳｙｎｃＲｅｓｅｔ）解除信号の例として、同期リセット（ＳｙｎｃＲｅｓｅｔ）信号のビットを反転した信号等が考えられる。なお、ＦＴ制御チップ１４及びＦＴ制御チップ２４は、一方が同期リセット（ＳｙｎｃＲｅｓｅｔ）解除信号を送信する場合、クロスリンクを介して、他方に当該同期リセット（ＳｙｎｃＲｅｓｅｔ）解除信号を通知／転送するようにしても良い。
【００４７】
［障害発生時の動作］
次に、図２のフローチャートを参照して、図１の回路の動作について説明する。
【００４８】
ここでは、第１の系のフォールトトレラントサーバ１０の「メモリ１２−６」と第２の系のフォールトトレラントサーバ２０の「メモリ２２−６」を「待機メモリ」として、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）では「未使用の状態」で動作させている時に、第２の系のフォールトトレラントサーバ２０の「メモリ２２−５」で障害が発生した場合の動作について説明する。
【００４９】
（１）ステップＳ１
第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４及び第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４は、二重化動作中において、ＣＰＵやメモリ等のデバイスに障害が発生したか確認する。なお、第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４及び第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４は、障害が発生していない場合（ステップＳ１でＮｏ）、監視を継続する。
【００５０】
（２）ステップＳ２
第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４及び第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４は、障害が発生した場合（ステップＳ１でＹｅｓ）、障害が発生した系を切り離すことを決定する。ここでは、第２の系のフォールトトレラントサーバ２０のメモリ２２−５で障害が発生している。したがって、正常に動作している第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４は、障害が発生した第２の系のフォールトトレラントサーバ２０を切り離すことを決定する。
【００５１】
（３）ステップＳ３
正常に動作している第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４は、ソフトウェア制御により、クロスリンクを使用して、障害が発生した第２の系のフォールトトレラントサーバ２０のメモリ２２−５の障害を認識する。
【００５２】
（４）ステップＳ４
第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４は、ソフトウェア（ＳＷ）制御により、信号１４１として、システム管理割り込み（ＳＭＩ：Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔｓ）信号を発生して、クロスリンクを使用して、障害が発生した第２の系のフォールトトレラントサーバ２０のＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）で動作しているＯＳの動作を一時停止する。例えば、第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４は、クロスリンクを使用して、第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４に、システム管理割り込み（ＳＭＩ）信号を通知する。或いは、システム管理割り込み（ＳＭＩ）信号の発生を要求する。第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４は、クロスリンクを使用して第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４からシステム管理割り込み信号／当該信号の発生要求を受信した際、信号２４１として、システム管理割り込み信号を発生して、ＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）で動作しているＯＳの動作を一時停止する。
【００５３】
（５）ステップＳ５
第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４は、ソフトウェア（ＳＷ）制御により、第２の系のフォールトトレラントサーバ２０のＣＰＵ２１（２１−ａ、ａ＝１〜ｘ）のコンテキストデータ（構成情報）を、ＦＴ制御チップ１４の内部にある記憶領域に退避する。但し、実際には、コンテキストデータの退避先は、前述の記憶領域に限定されない。コンテキストデータの例として、レジスタ等のハードウェア（ＨＷ：Ｈａｒｄｗａｒｅ）の設定情報や、ＣＰＵの状態情報、プログラム／プロセス／タスク等の実行に必要な各種情報等が考えられる。
【００５４】
（６）ステップＳ６
また、第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４は、ソフトウェア（ＳＷ）制御により、障害が発生したメモリに対応する二重化対象のメモリのデータを、別のメモリ（待機メモリ）にコピー（複写）する。ここでは、障害が発生したメモリ２２−５に対応する二重化対象のメモリ１２−５のデータを、メモリ１２−６にコピーする。これにより、ＦＴ制御チップ１４は、正常に動作している第１の系のフォールトトレラントサーバ１０が、障害が発生した第２の系のフォールトトレラントサーバ２０を切り離し可能な状態にする。
【００５５】
（７）ステップＳ７
また、第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４は、ソフトウェア（ＳＷ）制御により、退避したコンテキストデータを、メモリ１２−５を使用しない代わりにメモリ１２−６を使用する構成情報に変更する。
【００５６】
（８）ステップＳ８
また、第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４は、ソフトウェア（ＳＷ）制御により、クロスリンクを使用して、正常に動作している第１の系のフォールトトレラントサーバ１０の全情報を、障害が発生した第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４にコピーする。
【００５７】
（９）ステップＳ９
そして、第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４及び第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４は、本体ＢＩＯＳの同期リセット（ＳｙｎｃＲｅｓｅｔ）コマンドを発行する。すなわち、上記の「同期リセット（ＳｙｎｃＲｅｓｅｔ）の動作」を行う。これにより、第１の系のフォールトトレラントサーバ１０のＣＰＵ１１及び第２の系のフォールトトレラントサーバ２０のＣＰＵ２１は、同期リセット（ＳｙｎｃＲｅｓｅｔ）により、初期化処理を開始する。
【００５８】
（１０）ステップＳ１０
第１の系のフォールトトレラントサーバ１０のＦＴ制御チップ１４及び第２の系のフォールトトレラントサーバ２０のＦＴ制御チップ２４は、同期リセット（ＳｙｎｃＲｅｓｅｔ）による初期化処理中に退避していたコンテキストデータを、第１の系のフォールトトレラントサーバ１０のＣＰＵ１１及び第２の系のフォールトトレラントサーバ２０のＣＰＵ２１に読み込ませる。
【００５９】
（１１）ステップＳ１１
第１の系のフォールトトレラントサーバ１０のＣＰＵ１１及び第２の系のフォールトトレラントサーバ２０は、読み込みによるコンテキストデータの復旧により、当該コンテキストデータの示す状態を復元し、障害メモリを切り離した状態で、システム管理割り込み（ＳＭＩ）から処理に復帰し、停止していたＯＳの動作を再開する。なお、障害メモリを切り離した状態とは、障害が発生したメモリ２２−５と、それに対応する二重化対象のメモリ１２−５と、を使用しない状態である。
【００６０】
＜ハードウェアの例示＞
以下に、本発明に係るフォールトトレラントシステムを実現するための具体的なハードウェアの例について説明する。
【００６１】
第１の系のフォールトトレラントサーバ１０や第２の系のフォールトトレラントサーバ２０の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。なお、実際には、計算機に限らず、中継機器や周辺機器、その他の電子機器でも良い。
【００６２】
また、本発明に係るフォールトトレラントシステムの実施例として、ラックマウントサーバ（ｒａｃｋ  ｍｏｕｎｔ  ｓｅｒｖｅｒ）が考えられる。この場合、第１の系のフォールトトレラントサーバ１０や第２の系のフォールトトレラントサーバ２０の例として、ラックマウント型のハードウェア（ＰＣ、ＲＡＩＤストレージ、ファイアウォール専用機等）が考えられる。
【００６３】
また、第１の系のフォールトトレラントサーバ１０や第２の系のフォールトトレラントサーバ２０は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。
【００６４】
なお、ＣＰＵ１１やＣＰＵ２１は、プロセッサの例示に過ぎない。プロセッサの例として、ＣＰＵの他にも、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ（ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ）、或いは、専用の機能を有する半導体集積回路（ＬＳＩ：Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等が考えられる。また、ＣＰＵ１１やＣＰＵ２１は、上記のようなプロセッサを有する電子回路等でも良い。
【００６５】
また、メモリ１２やメモリ２２は、メモリの例示に過ぎない。メモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置等が考えられる。現在の市場で使用されているメモリの殆どは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。ＤＲＡＭは、駆動方式の違いにより、「ＳＤＲＡＭ」（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、「ＤＤＲ  ＳＤＲＡＭ」（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＳＤＲＡＭ）、「ＤＤＲ２  ＳＤＲＡＭ」（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ２  ＳＤＲＡＭ）、「ＤＤＲ３  ＳＤＲＡＭ」（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ３  ＳＤＲＡＭ）等に分類することができる。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）等でも良い。
【００６６】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。一例として、「ＣＰＵ、メモリ、ノースブリッジ、及びＢＩＯＳを搭載したＣＰＵモジュール」等が存在する。したがって、電子機器等に搭載される１チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例も考えられる。
【００６７】
また、ＦＴ制御チップ１４とＦＴ制御チップ２４のクロスリンクのために使用するインターフェースの例として、リンク回線に接続されるリンクポートの他にも、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００６８】
また、リンク回線の例として、データバス、シリアル通信回線、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）等が考えられる。
【００６９】
ＩＯコントローラ１５やＩＯコントローラ２５の例として、プロセッサとファームウェアを内蔵したモジュールを想定している。また、ＩＯコントローラ１５やＩＯコントローラ２５は、サウスブリッジの機能を持ったチップでも良い。また、ＩＯコントローラ１５やＩＯコントローラ２５は、独立した装置（計算機等）でも良い。
【００７０】
但し、実際には、これらの例に限定されない。
【００７１】
＜本発明の特徴＞
本発明は、２つの系で互いにロックステップ動作するフォールトトレラントサーバにおいて、通常は（基本的には）障害発生時に片側の系を切り離して動作を維持するが、ユーザポリシーでの選択に従って、障害が発生した箇所のみを縮退させて二重化動作に復帰することを特徴としている。
【００７２】
具体的には、フォールトトレラントサーバにおいて、ＣＰＵやメモリの障害発生時に、一旦障害が発生した系の切り離しを行う。
【００７３】
正常に動作している系は、系間の通信経路を使用して障害が発生した系の中の障害デバイスを特定する。
【００７４】
そして、ＯＳ動作を一時的に停止し、ＣＰＵのコンテキストデータ（レジスタ等のＨＷ設定情報）を退避する。
【００７５】
そして、正常に動作している系のデバイスのうち、特定した障害デバイスに対応する二重化対象のデバイスが使用しているデータを、別のデバイス上にコピーして切り離し可能な状態をつくる。
【００７６】
そして、退避したコンテキストデータを、障害デバイスを使用しない構成情報に変更する。
【００７７】
そして、系間の通信経路を使用して正常に動作している系の全情報を、障害が発生した系にコピーする。
【００７８】
そして、両系のメモリ内のデータに対してはリセットをかけず、両系のＣＰＵに対して同時に／同じタイミングでリセットをかける。
【００７９】
両系のＣＰＵは同時に初期化を開始し、退避していたコンテキストデータを読み込み、情報を復帰する。
【００８０】
これにより、障害デバイスを使用しない構成でＯＳ動作を復帰することになり、同期状態を維持したまま、障害発生部分（障害デバイス）を切り離して動作することが可能となる。
【００８１】
本発明では、障害が発生した箇所のみを縮退させて二重化動作に復帰しているので、更に別の箇所に障害が発生した時でも動作を継続できる。
【００８２】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【００８３】
１０、２０…  フォールトトレラントサーバ
１１、２１…  ＣＰＵ
１２、２２…  メモリ
１３、２３…  チップセット
１４、２４…  ＦＴ制御チップ
１４１、２４１…  信号
１５、２５…  ＩＯコントローラ
【図１】
2013206278.tif 000003
【図２】
2013206278.tif 000004