(57)【要約】      （修正有）【課題】真の故障箇所を検出できる確率を増すことにより、誤って障害が発生していない側の系を切り離したり、サーバが停止してしまう確率を低減したフォールトトレラントシステムを提供する。【解決手段】２つのサーバ１１Ａ、１１Ｂを並列して動作させるフォールトトレラントシステム１０において、各々のサーバが、２つのサーバ間の通信で発生箇所を特定できないエラーを検出した場合、他方のサーバとの通信の接続を切り離し、所定の時間、各々のサーバを独立して動作させ、エラーの発生箇所を特定する。【選択図】図１
2016115239.tif 000002
【特許請求の範囲】
【請求項１】
２つのサーバを並列して動作させるフォールトトレラントシステムにおいて、
各々の前記サーバが、
２つの前記サーバ間の通信で、発生箇所を特定できないエラーを検出した場合、他方の前記サーバとの通信の接続を切り離すクロスリンク手段と、
所定の時間、各々の前記サーバを独立して動作させ、前記エラーの発生箇所を特定する制御手段と、を包含する、フォールトトレラントシステム。
【請求項２】
さらに、各々の前記サーバが、前記フォールトトレラントシステムの外部とのアクセスを行う、入出力手段を備え、
前記クロスリンク手段が、前記エラーを検出した場合、前記入出力手段との通信の接続を切り離し、その後で、他方の前記サーバとの通信の接続を切り離す、請求項１に記載のフォールトトレラントシステム。
【請求項３】
前記制御手段が、前記所定の時間で、前記エラーの発生箇所を特定できなかった場合は、予め決定されているプライオリティの高い前記サーバの前記クロスリンク手段が、他方の前記サーバとの通信の接続を切り離す、請求項１または２に記載のフォールトトレラントシステム。
【請求項４】
ロックステップ動作により、前記２つのサーバを並列して動作させる、請求項１乃至３のいずれか１項に記載のフォールトトレラントシステム。
【請求項５】
２つのサーバを並列して動作させるフォールトトレラントシステムにおいて、
各々の前記サーバが、
２つの前記サーバ間の通信で、発生箇所を特定できないエラーを検出した場合、他方の前記サーバとの通信の接続を切り離し、
所定の時間、各々の前記サーバを独立して動作させ、前記エラーの発生箇所を特定する、フォールトトレラント方法。
【請求項６】
さらに、各々の前記サーバが、前記エラーを検出した場合、前記フォールトトレラントシステムの外部との通信の接続を切り離し、その後で、他方の前記サーバとの通信の接続を切り離す、請求項５に記載のフォールトトレラント方法。
【請求項７】
前記所定の時間で、前記エラーの発生箇所を特定できなかった場合は、
予め決定されているプライオリティの高い前記サーバの他方の前記サーバとの通信の接続を切り離す、請求項５または６に記載のフォールトトレラント方法。
【請求項８】
２つのサーバを並列して動作させるフォールトトレラントシステムにおいて、
各々の前記サーバが、
２つの前記サーバ間の通信で、発生箇所を特定できないエラーを検出した場合、他方の前記サーバとの通信の接続を切り離す処理と、
所定の時間、各々の前記サーバを独立して動作させ、前記エラーの発生箇所を特定する処理と、をコンピュータに実行させるプログラム。
【請求項９】
さらに、各々の前記サーバが、前記エラーを検出した場合、前記フォールトトレラントシステムの外部との通信の接続を切り離し、その後で、他方の前記サーバとの通信の接続を切り離す処理を前記コンピュータに実行させる請求項８に記載のプログラム。
【請求項１０】
前記所定の時間で、前記エラーの発生箇所を特定できなかった場合は、
予め決定されているプライオリティの高い前記サーバの他方の前記サーバとの通信の接続を切り離す処理を前記コンピュータに実行させる請求項８または９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントシステム、フォールトトレラント方法、及び、そのためのプログラムに関する。
【背景技術】
【０００２】
特許文献１は、フォールトトレラントコンピュータシステムのシステムダウンの可能性を大幅に小さくすることが可能となる技術について開示している。起動時に、フォールトトレラントコンピュータシステムを構成する２台のコンピュータ内の一方のコンピュータのモジュールでエラーが検出された場合に、エラーを発生したモジュールを当該コンピュータから切り離すとともに、エラーを発生したモジュールと対をなす他方のコンピュータのモジュールも切り離す。そして、正常なモジュールのみを使用して、両コンピュータを縮退したハードウェア構成で、かつ、二重化を維持しつつシステムを起動できる。
【０００３】
特許文献２は、フォールトトレラント機能を実現するために、具体的なエラー箇所を特定することが不可能な場合は、動作モードが「アクティブ」モードのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）サブシステムでサービスを継続し、動作モードが「スタンバイ」モードのＣＰＵサブシステムを切り離す技術について開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−０４１５０３号公報
【特許文献２】特開２００６−１７８６１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
多重化された複数のＣＰＵ（プロセッサ）が常に同期を取りながら同じタイミングで同一動作を実行するロックステップ動作等により、２つの系を多重化して並列して動作させているフォールトトレラントコンピュータシステム（フォールトトレラントシステム）においては、次のような課題がある。
【０００６】
フォールトトレラントシステムは、すぐには故障箇所が判明せず、系を切り離す必要がある障害が発生した場合、例えば、予め決定されているプライオリティの高い系を残して系の切り離し動作を行う、等としている。
【０００７】
しかし、この場合、一定時間後に、残した側の系で障害が発生していたことが判明するケースが考えられる。そして、最悪の場合、サーバが停止してしまうことになる。
【０００８】
特許文献１は、起動時に、明らかにエラーの発生したことが判明している一方のコンピュータのモジュール、及び、そのモジュールと対をなす他方のコンピュータのモジュールを切り離すだけであり、エラーの発生箇所が容易に判明するような限定されたケースにしか適用できない。
【０００９】
また、特許文献２は、予め設定されたアクティブモードのＣＰＵサブシステム、すなわち、前述のプライオリティの高い系を動作させる技術である。
【００１０】
このため、本発明の目的は、前述した課題である、フォールトトレラントシステムにおいて、真の故障箇所を検出できる確率を増やすことにより、誤って、障害が発生していない側の系を切り離し、最悪の場合サーバが停止してしまう確率を減らす手段を提供することにある。
【課題を解決するための手段】
【００１１】
本発明のフォールトトレラントシステムは、２つのサーバを並列して動作させるフォールトトレラントシステムにおいて、各々の前記サーバが、２つの前記サーバ間の通信で、発生箇所を特定できないエラーを検出した場合、他方の前記サーバとの通信の接続を切り離すクロスリンク手段と、所定の時間、各々の前記サーバを独立して動作させ、前記エラーの発生箇所を特定する制御手段と、を包含する。
【００１２】
本発明のフォールトトレラント方法は、２つのサーバを並列して動作させるフォールトトレラントシステムにおいて、各々の前記サーバが、２つの前記サーバ間の通信で、発生箇所を特定できないエラーを検出した場合、他方の前記サーバとの通信の接続を切り離し、所定の時間、各々の前記サーバを独立して動作させ、前記エラーの発生箇所を特定する。
【００１３】
本発明のコンピュータプログラムは、２つのサーバを並列して動作させるフォールトトレラントシステムにおいて、各々の前記サーバが、２つの前記サーバ間の通信で、発生箇所を特定できないエラーを検出した場合、他方の前記サーバとの通信の接続を切り離す処理と、所定の時間、各々の前記サーバを独立して動作させ、前記エラーの発生箇所を特定する処理と、をコンピュータに実行させる。
【発明の効果】
【００１４】
本発明によれば、フォールトトレラントシステムにおいて、真の故障箇所を検出できる確率を増やすことにより、誤って、障害が発生していない側の系を切り離し、最悪の場合サーバが停止してしまう確率を減らす効果を奏することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】図１は、フォールトトレラントシステムの構成の一例を示すブロック図である。
【図２】図２は、フォールトトレラントシステムをコンピュータ装置で実現したハードウェア回路の一例を示すブロック図である。
【図３】図３は、フォールトトレラントシステムの動作を示すフローチャートである。
【図４】図４は、第二の実施形態に係る、フォールトトレラントシステムの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１６】
発明を実施するための第一の形態について、図面を参照して詳細に説明する。
【００１７】
図１は、フォールトトレラントシステム１０の構成の一例を示すブロック図である。
【００１８】
フォールトトレラントシステム１０は、２系統のサーバ１１Ａ、及び、サーバ１１Ｂから構成される。なお、以下、サーバ１１Ａを「Ａ系」、サーバ１１Ｂを「Ｂ系」とも記述する。
【００１９】
Ａ系のサーバ１１Ａは、制御部１２Ａ、ＦＴ（フォールトトレラント）クロスリンク部１３Ａ、及び、ＩＯ（入出力）部１４Ａから構成される。
【００２０】
同様に、Ｂ系のサーバ１１Ｂは、制御部１２Ｂ、ＦＴクロスリンク部１３Ｂ、及び、ＩＯ部１４Ｂから構成される。
【００２１】
制御部１２Ａ、１２Ｂは、所定の時間、各々のサーバ１１Ａ、１１Ｂを独立して動作させ、エラーの発生箇所を特定する。
【００２２】
一方のサーバのＦＴクロスリンク部１３Ａ、または、１３Ｂは、２つのサーバ１１Ａ、１１Ｂ間の通信で、発生箇所を特定できないエラーを検出した場合、他方のサーバ１１Ａ、または、１１ＢのＦＴクロスリンク部１３Ａ、または、１３Ｂとの通信の接続を切り離す。
【００２３】
ＩＯ部１４Ａは、フォールトトレラントシステム１０の外部とのアクセスを行う。
【００２４】
また、ＦＴクロスリンク部１３ＡとＦＴクロスリンク部１３Ｂは、クロスリンク１５を介して、接続される。
【００２５】
ところで、本実施形態は、例えば、２つの系をロックステップ動作させているフォールトトレラントシステム１０において、すぐには故障箇所が判明しない、故障側の系を切り離す必要がある障害が発生した場合に、正確に故障側の系を切り離すことを特徴としている。
【００２６】
フォールトトレラントシステム１０において、系間の通信を行うクロスリンク１５でエラーを検出する等、すぐには故障箇所が判明せず、かつ、系を切り離す必要がある障害が発生する場合を想定する。この場合、各サーバ１１Ａ、１１Ｂは、一時的にフォールトトレラントシステム１０の外部とのアクセスを停止し、スプリットモードと呼ばれる、それぞれの系を独立して動作させる特殊なモードに入る。
【００２７】
そして、フォールトトレラントシステム１０は、切り離す側の系を決定せずに暫く動作させることにより、その後に真の故障箇所を特定できた際に、故障している側の系を切り離し、故障していない側のサーバ１１Ａ、または、１１Ｂの系を有効な系として外部とのアクセスを再開する。
【００２８】
なお、所定の時間で、真の故障箇所を特定できなかった場合、フォールトトレラントシステム１０は、予め決定されているプライオリティの高い系を残して切り離し動作を行い、外部とのアクセスを再開する。
【００２９】
図２は、フォールトトレラントシステム１０をコンピュータ装置２０で実現したハードウェア回路の一例を示すブロック図である。
【００３０】
Ａ系のサーバ２１Ａは、ＣＰＵ２２Ａ、メモリ２３Ａ、ＦＴチップセット２４Ａ、及び、ＩＯデバイス２５Ａで構成されている。
【００３１】
同様に、Ｂ系のサーバ２１Ｂは、ＣＰＵ２２Ｂ、メモリ２３Ｂ、ＦＴチップセット２４Ｂ、及び、ＩＯデバイス２５Ｂで構成されている。
【００３２】
ＣＰＵ２２Ａ、２２Ｂは、オペレーティングシステムを動作させてサーバ２１Ａ、２１Ｂの全体を制御する。また、ＣＰＵ２２Ａ、２２Ｂは、例えばドライブ装置などに装着された記録媒体からメモリ２３Ａ、２３Ｂにプログラムやデータを読み出す。また、ＣＰＵ２２Ａ、２２Ｂは、第一の実施の形態におけるサーバ１１Ａ、１１Ｂの一部として機能し、プログラムに基づいて各種の処理を実行する。ＣＰＵ２２Ａ、２２Ｂは、複数のＣＰＵによって構成されていてもよい。
【００３３】
メモリ２３Ａ、２３Ｂは、例えば、半導体メモリ等である。
【００３４】
メモリ２３Ａ、２３ＢとＣＰＵ２２Ａ、２２Ｂは、図１の制御部１２Ａ、１２Ｂに対応する。
【００３５】
Ａ系のＦＴチップセット２４Ａは、クロスリンク２６を介し、Ｂ系のＦＴチップセット２４Ｂと接続されている。
【００３６】
ＦＴチップセット２４Ａ、２４Ｂは、例えば、電子回路チップである。ＦＴチップセット２４Ａ、２４Ｂは、図１のＦＴクロスリンク部１３Ａ、１３Ｂに対応する。
【００３７】
ＩＯデバイス２５Ａ、２５Ｂは、サーバ２１Ａ、２１Ｂの外部とのデータの送受信を行う。ＩＯデバイス２５Ａ、２５Ｂは、例えば、電子回路チップである。ＩＯデバイス２５Ａ、２５Ｂは、図１のＩＯ部１４Ａ、１４Ｂに対応する。
【００３８】
クロスリンク２６は、サーバ２１Ａとサーバ２１Ｂ間のデータ転送を行う。クロスリンク２６は、相互接続が可能な信号伝送路であり、例えば、クロスケーブルによって構成される。
【００３９】
図３は、フォールトトレラントシステム１０の動作を示すフローチャートである。
【００４０】
図３では、すぐには障害箇所が判明しない障害として、Ｂ系の故障が原因によるクロスリンク１５の障害を検出した場合の動作を例に説明する。
【００４１】
まず、フォールトトレントシステム１０が二重化動作中の状態を想定する（ステップＳ１）。この状態で、クロスリンク１５でエラーを検出した場合（ステップＳ２）、ＦＴクロスリンク部１３Ａ、１３Ｂは、ＩＯ部１４Ａ、１４Ｂを経由する通信を一時停止することで外部とのアクセスを一時停止する（ステップＳ３）。
【００４２】
そして、フォールトトレラントシステム１０は、スプリットモードに移行する（ステップＳ４）。
【００４３】
なお、スプリットモードとは、ＦＴクロスリンク部１３ＡとＦＴクロスリンク部１３Ｂ間のクロスリンク１５の通信を停止し、Ａ系とＢ系が、それぞれ独立して動作するモードを示す。
【００４４】
このモードで、サーバ１１Ａ、１１Ｂが、系ごとに動作を継続する（ステップＳ５）。
【００４５】
そして、所定の時間が経過するまでは、制御部１２Ａ、１２Ｂは、各々のサーバ１１Ａ、１１Ｂを独立して動作させ、一定時間が経過するまで、各ＦＴクロスリンク部１３Ａ、１３Ｂのエラー検出（故障解析）の結果を待つ（ステップＳ６）。
【００４６】
制御部１２Ａ、１２Ｂは、一定時間内においては、故障個所が判明しないときに、ステップＳ５〜Ｓ７を繰り返す。
【００４７】
ここで、一定時間が経過しないで（ステップＳ６でＮｏ）、Ｂ系の故障が制御部１２Ｂにより判明する（ステップＳ７でＹｅｓ）とする。
【００４８】
この場合、フォールトトレラントシステム１０において、故障していない側の系（Ａ系）がシステムのアクティブな系として動作する（ステップＳ８）。
【００４９】
そして、ＦＴクロスリンク部１３Ａは、ＩＯ部１４Ａとの通信を再開する（ステップＳ９）。これにより、フォールトトレラントシステム１０は、今回の例ではＡ系のみでシステムの運用を再開する（ステップＳ１０）。
【００５０】
一方、故障箇所が所定の時間を経過しても判明しない場合（ステップＳ６でＹｅｓ）、フォールトトレラントシステム１０は、予め決定されているプライオリティの高い系をシステムのアクティブな系として選択する（ステップＳ１１）。
【００５１】
そして、例えば、予め決定されているプライオリティの高い系がＡ系である場合、ＦＴクロスリンク部１３Ａは、ＩＯ部１４Ａとの通信を再開する（ステップＳ９）。これにより、フォールトトレラントシステム１０は、片系（Ａ系）で運用を再開する（ステップＳ１０）。
【００５２】
本実施形態に係るフォールトトレラントシステム１０は、以下に記載するような効果を奏する。
【００５３】
その効果は、フォールトトレラントシステム１０において、真の故障箇所を検出できる確率を増やすことにより、誤って、障害が発生していない側の系を切り離し、最悪の場合サーバが停止してしまう確率を減らすことが可能となる。
【００５４】
その理由は、２系から構成されるフォールトトレラントシステム１０において、障害が発生して系を切り離す場合、切り離す側の系を決定せずに、所定の時間、各々の系を独立して動作させ、真の故障箇所を検出できる確率を増やすからである。
＜第二の実施形態＞
次に、本発明を実施するための第二の形態について図面を参照して詳細に説明する。
【００５５】
図４は、第二の実施形態に係る、フォールトトレラントシステム３０の構成の一例を示すブロック図である。
【００５６】
フォールトトレラントシステム３０は、サーバ３１Ａ、及び、サーバ３１Ｂにより構成される。
【００５７】
フォールトトレラントシステム３０は、２つのフォールトトレラントサーバ３１Ａ、３１Ｂを並列して動作させる。各々のサーバ３１Ａ、３１Ｂが、２つのサーバ３１Ａ、３１Ｂ間の通信で、発生箇所を特定できないエラーを検出した場合、他方のサーバ３１Ａ、３１Ｂとの通信の接続を切り離すクロスリンク部３３Ａ、３３Ｂと、所定の時間、各々のサーバ３１Ａ、３１Ｂを独立して動作させ、エラーの発生箇所を特定する、制御部３２Ａ、３２Ｂと、を包含する。
【００５８】
本実施形態に係るフォールトトレラントシステム３０は、以下に記載するような効果を奏する。
【００５９】
その効果は、フォールトトレラントシステム３０において、真の故障箇所を検出できる確率を増やすことにより、誤って、障害が発生していない側の系を切り離し、最悪の場合サーバが停止してしまう確率を減らすことが可能となる。
【００６０】
その理由は、２系から構成されるフォールトトレラントシステム３０において、障害が発生して系を切り離す場合、切り離す側の系を決定せずに、所定の時間、各々の系を独立して動作させ、真の故障箇所を検出できる確率を増やすからである。
【００６１】
以上、図面を参照して本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００６２】
１０    フォールトトレラントシステム
１１Ａ    サーバ
１１Ｂ    サーバ
１２Ａ    制御部
１２Ｂ    制御部
１３Ａ    ＦＴクロスリンク部
１３Ｂ    ＦＴクロスリンク部
１４Ａ    ＩＯ部
１４Ｂ    ＩＯ部
１５    クロスリンク
２０    コンピュータ装置
２１Ａ    サーバ
２１Ｂ    サーバ
２２Ａ    ＣＰＵ
２２Ｂ    ＣＰＵ
２３Ａ    メモリ
２３Ｂ    メモリ
２４Ａ    ＦＴチップセット
２４Ｂ    ＦＴチップセット
２５Ａ    ＩＯデバイス
２５Ｂ    ＩＯデバイス
２６    クロスリンク
３０    フォールトトレラントシステム
３１Ａ    サーバ
３１Ｂ    サーバ
３２Ａ    制御部
３２Ｂ    制御部
３３Ａ    クロスリンク部
３３Ｂ    クロスリンク部
【図１】
2016115239.tif 000003
【図２】
2016115239.tif 000004
【図３】
2016115239.tif 000005
【図４】
2016115239.tif 000006