(57)【要約】【課題】障害が発生したモジュールを特定可能なフォールトトレラント装置を提供する。【解決手段】リンク・エラー判定部は、障害発生が検出されると、モジュール交換フラグをセットする。リンク・エラー判定部は、モジュール間リンクの障害によりモジュールが交換された後、モジュール交換フラグの状態と障害発生の再検出状況とに基づいて、リンク障害要因が交換されたモジュールにあるのか、もしくは交換されていないモジュールにあるのかを判定する。交換されていないモジュールにリンク障害要因があると特定した場合、障害要因のある交換されなかったモジュールを交換して再組込みすることにより、二重化状態に復帰させる。【選択図】図１
2020154702.tif 000002
【特許請求の範囲】
【請求項１】
２つのモジュールを二重化させるフォールトトレラント装置であって、
モジュール間リンクの障害発生を検出する障害検出部と、
前記障害検出部によって障害発生が検出されると、モジュール交換フラグをセットする設定部と、
前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害検出部による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定する特定部と、
を備えることを特徴とするフォールトトレラント装置。
【請求項２】
前記特定部は、
前記いずれか１つのモジュールの交換後に、前記モジュール交換フラグがセットされた状態で、前記障害検出部によって障害発生が再度検出された場合、リンク障害要因が交換されていないモジュールにあると特定することを特徴とする請求項１に記載のフォールトトレラント装置。
【請求項３】
前記特定部によってリンク障害要因が交換されていないモジュールにあると特定された場合に、２つのモジュール間のデータの同期を行う復帰部をさらに備え、
前記復帰部によるデータの同期後、前記交換されていないモジュールを新たなモジュールに交換する、ことを特徴とする請求項２に記載のフォールトトレラント装置。
【請求項４】
前記復帰部は、
前記２つのモジュール間のデータの同期を行った後、前記モジュール交換フラグをリセットすることを特徴とする請求項３に記載のフォールトトレラント装置。
【請求項５】
２つのモジュールを二重化させるフォールトトレラント装置の障害復帰方法であって、
モジュール間リンクの障害発生を検出するステップと、
前記障害発生が検出されると、モジュール交換フラグをセットするステップと、
前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、
を含むことを特徴とする障害復帰方法。
【請求項６】
前記リンク障害要因が前記交換されていないモジュールにあると特定された場合に、２つのモジュール間のデータの同期を行うステップと、
前記２つのモジュール間のデータの同期後、前記交換されていないモジュールを新たなモジュールに交換するステップと、
をさらに含むことを特徴とする請求項５に記載の障害復帰方法。
【請求項７】
２つのモジュールを二重化させるフォールトトレラント装置のプログラムであって、
モジュール間リンクの障害発生を検出するステップと、
前記障害発生が検出されると、モジュール交換フラグをセットするステップと、
前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、
をフォールトトレラント装置に実行させるためのプログラム。
【請求項８】
前記リンク障害要因が前記交換されていないモジュールにあると特定された場合に、２つのモジュール間のデータの同期を行うステップと、
前記２つのモジュール間のデータの同期後、前記交換されていないモジュールを新たなモジュールに交換するステップと、
をさらに含むことを特徴とする請求項７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラント装置、障害復帰方法、およびプログラムに関する。
【背景技術】
【０００２】
２つのモジュールを二重化させるフォールトトレラント装置において、ＣＰＵサブシステムを含むＣＰＵモジュールと、ＩＯサブシステムを含むＩＯモジュールとを分離独立して構成することにより、モジュール全体ではなくＣＰＵモジュール単体、あるいはＩＯモジュール単体で交換できるものがあった。そのため、モジュール間リンクで障害が発生した場合、送信側のモジュールと受信側のモジュールの双方を同時に交換することが可能であった。
【０００３】
しかしながら、ＣＰＵモジュールとＩＯモジュールを分離独立することによりシステムコストが増大するため、近年ではＣＰＵモジュールとＩＯモジュールを１つのモジュールに統合し、コストを削減する方式を採ることが多い。これにより、送信側のモジュールと受信側のモジュールの双方を同時に交換することができない。そのため、１つのモジュールに統合した場合、サブシステム単位でシステムから切り離す処理を行う。
【０００４】
例えば、特許文献１は、２つのモジュール間リンクで発生箇所を特定できない障害が発生した場合、モジュール間の通信の接続を切り離し、所定の時間、各々のモジュールを独立して動作させ、障害の発生箇所を特定することで、真の故障箇所を検出できる確率を増やすことにより、障害が発生していない側のモジュールを切り離して、最悪の場合、システムが停止してしまう確率を減らすという技術を提示している。
【０００５】
また、特許文献２は、障害が発生した場合、障害が発生した系を切り離し、当該系の構成情報等を正常な系に退避させ、正常な系の全情報を障害が発生した系に転送するという技術を提示している。
【０００６】
また、特許文献３は、一対の処理部から構成される二重化された処理装置において、一方の処理部に障害がある場合に、当該処理装置から切り離されて新たに組み込まれる処理部とのリンク確立を判断し、新たに組み込まれる処理部を対象として、その組み込みの可否をテストするという技術を提示している。
【０００７】
また、特許文献４は、２つのモジュール間リンクにおいて、障害が発生した後の復旧時に両系のメインメモリに格納されているデータを速やかに同期させる技術を提示している。
【０００８】
また、特許文献５は、チャネル装置に接続しているポ−トにおいて、リンクの障害を検出し、障害を検出したポートと入出力パスが確立されているポートから強制切り離しフレ−ムを送出させる技術を提示している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１６−１１５２３９号公報
【特許文献２】特開２０１３−２０６２７８号公報
【特許文献３】特開２０１０−１７６６０２号公報
【特許文献４】特開２００６−１７８５５０号公報
【特許文献５】特開平０６−３０９１８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、上記フォールトトレラント装置において、モジュール間リンクで障害が発生した場合、送信側のサブシステム、あるいは受信側のサブシステムのいずれに問題があるのか判定するのは非常に困難である。そのため、フォールトトレラント装置では、あらかじめ決められた条件に従い、一方のモジュールにおける、ＣＰＵサブシステムあるいはＩＯサブシステムのいずれかをシステムから切り離す処理を行う。
【００１１】
モジュール間リンクの障害の要因となっている一方のモジュールにおけるサブシステムが切り離された場合、そちらのモジュール全体を交換することにより、フォールトトレラント装置を二重化状態に復帰させることができる。これに対して、モジュール間リンクの障害の要因となっている一方のモジュールにおけるサブシステムとは逆のモジュールにおけるサブシステムがシステムから切り離された場合には、切り離されたサブシステムを含むモジュールを交換しても、再度、モジュール間リンクで障害が発生してしまう。このため、フォールトトレラント装置は、二重化状態に復帰できない。このような場合、一旦システムを停止して、モジュール間リンクの障害の要因となっている側のモジュールを再度交換する必要があった。
【００１２】
しかしながら、特許文献１では、障害が発生していない側のモジュールを切り離してしまう確率を減らすものの、障害が発生していない側のモジュールを交換する可能性はあり、その場合にシステムが停止してしまう可能性がある。
【００１３】
また、特許文献２では、障害が発生した系を特定可能としているが、上述したように、送信側のサブシステム、あるいは受信側のサブシステムのいずれに問題があるのか判定するのは非常に困難であり、障害が発生していない側のモジュールを交換した場合にシステムが停止してしまう可能性がある。
【００１４】
また、特許文献３、４および５では、障害発生時のモジュールの切り離しや、障害が発生していない側のモジュールを交換した場合等については何ら言及しておらず、障害が発生していない側のモジュールを交換した場合にシステムが停止してしまう可能性がある。
【００１５】
本発明は、このような事情を考慮してなされたものであり、その目的は、障害が発生したモジュールを特定可能なフォールトトレラント装置、障害復帰方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
上述した課題を解決するために、本発明のフォールトトレラント装置は、２つのモジュールを二重化させるフォールトトレラント装置であって、モジュール間リンクの障害発生を検出する障害検出部と、前記障害検出部によって障害発生が検出されると、モジュール交換フラグをセットする設定部と、前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害検出部による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定する特定部と、を備えることを特徴とする。
【００１７】
また、上述した課題を解決するために、本発明の障害復帰方法は、２つのモジュールを二重化させるフォールトトレラント装置の障害復帰方法であって、モジュール間リンクの障害発生を検出するステップと、前記障害発生が検出されると、モジュール交換フラグをセットするステップと、前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害検出部による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、を含むことを特徴とする。
【００１８】
また、上述した課題を解決するために、本発明のプログラムは、２つのモジュールを二重化させるフォールトトレラント装置のプログラムであって、モジュール間リンクの障害発生を検出するステップと、前記障害発生が検出されると、モジュール交換フラグをセットするステップと、前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害検出部による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、をフォールトトレラント装置に実行させる。
【発明の効果】
【００１９】
この発明によれば、障害が発生したモジュールを特定可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施例として、モジュール１とモジュール２から構成されるフォールトトレラント装置を示すブロック図である。
【図２】本実施形態の動作を説明するためのフローチャートである。
【図３】本実施形態の動作を説明するためのフローチャートである。
【図４】本実施形態において、モジュール１のＩＯサブシステム１１のモジュール間リンク３０の送信リンクで障害が発生しているケースを示すブロック図である。
【図５】本実施形態において、モジュール１のＩＯサブシステム１１のモジュール間リンク３０の送信リンクで障害が発生しているケースで、受信側であるモジュール２のＣＰＵサブシステム２０が切り離される場合を示すブロック図である。
【図６】本実施形態において、モジュール１のＩＯサブシステム１１のモジュール間リンク３０の受信リンクで障害が発生しているケースで、受信側であるモジュール２のＣＰＵサブシステム２０が切り離される場合を示すブロック図である。
【図７】本実施形態において、モジュール２のＣＰＵサブシステム２０のモジュール間リンク３０の受信リンクで障害が発生しているケースで、受信側であるモジュール２のＣＰＵサブシステム２０が切り離される場合を示すブロック図である。
【図８】本実施形態において、モジュール２のＣＰＵサブシステム２０のモジュール間リンク３０の送信リンクで障害が発生しているケースで、受信側であるモジュール２のＣＰＵサブシステム２０が切り離される場合を示すブロック図である。
【図９】本発明の他の実施形態の動作を説明するためのフローチャートである。
【図１０】他の実施形態の動作を説明するためのフローチャートである。
【図１１】他の実施形態による、モジュール間リンク３０の受信リンクで障害が発生しているケースで、送信側であるモジュール１のＩＯサブシステム１１が切り離される場合を示すブロック図である。
【図１２】他の実施形態による、モジュール間リンク３０の送信リンクで障害が発生しているケースで、受信側であるモジュール１のＩＯサブシステム１１が切り離される場合を示すブロック図である。
【図１３】本実施形態によるフォールトトレラント装置の最小構成を示すブロック図である。
【発明を実施するための形態】
【００２１】
以下、本発明の一実施形態を、図面を参照して説明する。
【００２２】
Ａ．実施形態の構成
図１は、本発明の一実施例として、モジュール１とモジュール２から構成されるフォールトトレラント装置を示すブロック図である。なお、モジュール１とモジュール２は、同一構成であるので、モジュール１に関してのみ説明する。
【００２３】
モジュール１は、プロセッサ１００、メイン・メモリ１４０、ｆｔチップセット１１０、ＩＯデバイス１３０で構成されている。プロセッサ１００は、メイン・メモリ１４０とｆｔチップセット１１０とに接続されている。
【００２４】
ｆｔチップセット１１０は、ＣＰＵパケット送受信部１１１、リンク制御部１１２、リンク制御部１２０、メモリ・コピー・エンジン１２１、およびＩＯパケット送受信部１２２から構成されている。リンク制御部１１２は、送信部１１３、受信部１１４、リンク・エラー判定部１１５を有する。リンク制御部１２０は、送信部１１６、受信部１１７、リンク・エラー判定部１１８、モジュール交換フラグ１１９を有する。
【００２５】
ＩＯデバイス１３０は、ｆｔチップセット１１０に接続され、コントローラ１３１と、データを格納するディスク１３３とを有する。コントローラ１３１は、ＤＭＡエンジン１３２を有する。
【００２６】
プロセッサ１００は、ＩＯデバイス１３０、ＩＯデバイス２３０に対するパケットを生成する。プロセッサ１００が生成したパケットは、パケットの中継を行うｆｔチップセット１１０に送信される。ｆｔチップセット１１０では、ＣＰＵパケット送受信部１１１がパケットを受信してＩＯデバイス１３０、モジュール２のＩＯデバイス２３０に転送する。
【００２７】
ＩＯデバイス１３０は、プロセッサ１００、モジュール２のプロセッサ２００に対するパケットを生成する。ＩＯデバイス１３０が生成したパケットは、パケットの中継を行うｆｔチップセット１１０に送信される。ｆｔチップセット１１０では、ＩＯパケット送受信部１２２がパケットを受信してプロセッサ１００、モジュール２のプロセッサ２００へパケットを転送する。
【００２８】
ｆｔチップセット１１０は、プロセッサ１００、モジュール２のプロセッサ２００、ＩＯデバイス１３０、モジュール２のＩＯデバイス２３０から発行されたパケットの中継を行う。
【００２９】
ＣＰＵパケット送受信部１１１は、プロセッサ１００から受信したパケットの宛先を確認し、ＩＯデバイス１３０宛てのパケットであった場合にはＩＯパケット送受信部１２２に送信し、モジュール２のＩＯデバイス２３０宛のパケットであった場合にはリンク制御部１１２内の送信部１１３に送信する。また、ＣＰＵパケット送受信部１１１は、ＩＯパケット送受信部１２２、またはリンク制御部１１２から受信したパケットを、プロセッサ１００に送信する。
【００３０】
リンク制御部１１２は、ＣＰＵパケット送受信部１１１から受信したパケットを送信部１１３に渡す。送信部１１３は、そのパケットをモジュール間リンク３０経由で、モジュール２のｆｔチップセット２１０に送信する。リンク制御部１１２内の受信部１１４は、モジュール間リンク３０経由でモジュール２のｆｔチップセット２１０からパケットを受信する。その後、リンク制御部１１２は、リンク・エラー判定部１１５にて受信パケットのエラーの有無を判定し、ＣＰＵパケット送受信部１１１にパケットを送信する。
【００３１】
リンク制御部１２０は、ＩＯパケット送受信部１２２から受信したパケットを送信部１１６に渡す。送信部１１６は、そのパケットをモジュール間リンク３０経由で、モジュール２のｆｔチップセット２１０に送信する。リンク制御部１２０内の受信部１１７は、モジュール間リンク３０経由でモジュール２のｆｔチップセット２１０からパケットを受信する。その後、リンク制御部１２０は、リンク・エラー判定部１１８にて受信パケットのエラーの有無を判定し、ＩＯパケット送受信部１２２にパケットを送信する。リンク・エラー判定部１１８は、受信パケットのエラーを検出した際、モジュール交換フラグ１１９をセットする。
【００３２】
メモリ・コピー・エンジン１２１は、２つのＣＰＵサブシステム１０、２０内のメイン・メモリ１４０、２４０の内容を同一にするための機能を有する。具体的には、メモリ・コピー・エンジン１２１は、リンク制御部１２０にメモリ・リード要求のパケットを通知する。リンク制御部１２０は、メモリ・リード要求に応じて、モジュール間リンク３０を経由してモジュール２のメイン・メモリ２４０をリードする。リンク制御部１２０は、モジュール間リンク３０を経由して返送されたリード・データをライト・データとしてＣＰＵパケット送受信部１１１に送信する。メモリ・コピー・エンジン１２１は、メモリ・ライト要求のパケットをＣＰＵパケット送受信部１１１に通知する。ＣＰＵパケット送受信部１１１は、メモリ・ライト要求に応じて、メイン・メモリ１４０に書込みを行うことで、メモリのコピーを行う。
【００３３】
ＩＯパケット送受信部１２２は、ＣＰＵパケット送受信部１１１とリンク制御部１２０から出力されるパケットを比較し、一致した場合には、ＩＯデバイス１３０にパケットを送信する。また、ＩＯパケット送受信部１２２は、ＩＯデバイス１３０から受信したパケットをＣＰＵパケット送受信部１１１とリンク制御部１２０に送信する。
【００３４】
モジュール間リンク３０は、モジュール１のＣＰＵサブシステム１０とモジュール２のＩＯサブシステム２１を接続すると共に、モジュール１のＩＯサブシステム１１とモジュール２のＣＰＵサブシステム２０を接続している。
【００３５】
なお、本実施形態では、モジュール間リンク３０で障害が発生したときの切り離し対象をＣＰＵサブシステム２０としており、交換するモジュールをモジュール２としている。
【００３６】
Ｂ．実施形態の動作
図２および図３は、本実施形態の動作を説明するためのフローチャートである。また、図４は、本実施形態において、モジュール１のＩＯサブシステム１１のモジュール間リンク３０の送信リンクで障害が発生しているケースを示すブロック図である。図５は、本実施形態において、モジュール１のＩＯサブシステム１１のモジュール間リンク３０の送信リンクで障害が発生しているケースで、受信側であるモジュール２のＣＰＵサブシステム２０が切り離される場合を示すブロック図である。また、図６は、本実施形態において、モジュール１のＩＯサブシステム１１のモジュール間リンク３０の受信リンクで障害が発生しているケースで、受信側であるモジュール２のＣＰＵサブシステム２０が切り離される場合を示すブロック図である。
【００３７】
モジュール間リンク３０で障害が発生すると、障害を保持したパケットが受信部１１４、１１７、２１４または２１７に到達する（ステップＳ１０）。リンク・エラー判定部１１５、１１８、２１５、２１８のいずれかでは、受信パケットにエラーがあることを検出する（ステップＳ１２）。
【００３８】
次に、エラーがＣＰＵサブシステム１０または２０側で検出されたかＩＯサブシステム１１または２１側で検出されたかを判断する（ステップＳ１４）。すなわち、リンク・エラー判定部１１５または２１５がエラーを検出した場合には、ＣＰＵサブシステム１０または２０側で検出されたことを意味し、リンク・エラー判定部１１８または２１８がエラーを検出した場合には、ＩＯサブシステム１１または２１側で検出されたことを意味する。
【００３９】
そして、リンク・エラー判定部１１５または２１５がエラーを検出した場合には（ステップＳ１４の「ＣＰＵ」）、リンク・エラー判定部１１５または２１５は、送信部１１３または２１３に切り離し要求パケットを通知し、該切り離し要求パケットは、モジュール間リンク３０を経由し、モジュール１のＩＯサブシステム１１の受信部１１７またはモジュール２のＩＯサブシステム２１の受信部２１７に転送される（ステップＳ１６）。
【００４０】
次に、ＩＯサブシステム１１のリンク・エラー判定部１１８またはＩＯサブシステム２１のリンク・エラー判定部２１８は、受信した切り離し要求パケットを契機に、モジュール交換フラグ１１９または２１９をセットする（ステップＳ１８）。
【００４１】
例えば、図４に示すように、障害箇所が、モジュール１のＩＯサブシステム１１のモジュール間リンク３０の送信リンクである場合、モジュール２のＣＰＵサブシステム２０の受信部２１４に障害パケットが到達し、リンク・エラー判定部２１５にてエラーが検出される。エラーが検出された場合、リンク・エラー判定部２１５は、送信部２１３に切り離し要求パケットを通知する。該切り離し要求パケットは、モジュール間リンク３０を経由し、モジュール１のＩＯサブシステム１１の受信部１１７に転送される。リンク・エラー判定部１１８では、受信した切り離し要求パケットを契機にモジュール交換フラグ１１９をセットする。
【００４２】
一方、リンク・エラー判定部１１８または２１８がエラーを検出した場合には（ステップＳ１４の「ＩＯ」）、切り離し要求パケットの通知、転送を行うことなく、リンク・エラー判定部１１８またはリンク・エラー判定部２１８が、直接、モジュール交換フラグ１１９または２１９をセットする（ステップＳ１８）。
【００４３】
いずれの場合も、モジュール２のＣＰＵサブシステム２０が切り離され（ステップＳ２０）、モジュール１のシンプレックス動作のまま（単一の系統だけでシステムを動作させること）、オンラインでモジュール２全体を交換する（ステップＳ２２）。次に、交換したモジュール２を用いて、ＣＰＵサブシステム２０とＩＯサブシステム２１の再組込みを行う（ステップＳ２４）。
【００４４】
例えば、図４に示すように、モジュール１のＩＯサブシステム１１のモジュール間リンク３０の送信リンクで障害が発生した場合、図５に示すように、モジュール２のＣＰＵサブシステム２０が切り離され（塗りつぶし部分）、モジュール１のシンプレックス動作のまま、オンラインでモジュール２全体が交換される。その後、交換されたモジュール２を用いて、ＣＰＵサブシステム２０とＩＯサブシステム２１の再組込みを行う。
【００４５】
一方、障害箇所が図６に示すように、モジュール１のＩＯサブシステム１１のモジュール間リンク３０の受信リンクである場合、モジュール１のＩＯサブシステム１１の受信部１１７に障害パケットが到達し、リンク・エラー判定部１１８にてエラーが検出される。リンク・エラー判定部１１８では、エラーが検出された場合、モジュール交換フラグ１１９をセットする。この場合、図５と同様に、モジュール２のＣＰＵサブシステム２０が切り離され（塗りつぶし部分）、モジュール１のシンプレックス動作のまま、オンラインでモジュール２全体が交換される。その後、交換したモジュール２を用いて、ＣＰＵサブシステム２０とＩＯサブシステム２１の再組込みを行う。
【００４６】
次に、リンク・エラー判定部１１５、１１８、２１５、２１８では、受信パケットにエラーがあるか否か、すなわちモジュール間リンク３０に障害があり、かつモジュール交換フラグがセットされているか否かを判断する（ステップＳ２６）。つまり、図４または図６のように、障害箇所がモジュール１側のＩＯサブシステム１１のモジュール間リンク３０にある場合、モジュール２を交換してもモジュール２のＩＯサブシステム２１の組込みは成功するものの、ＣＰＵサブシステム２０の再組込みは成功せず、リンク・エラー判定部１１８が再度リンク障害を検出することになる。
【００４７】
そして、モジュール間リンク３０に障害があり、かつモジュール交換フラグがセットされている場合には（ステップＳ２６のＹＥＳ）、リンク・エラー判定部１１５、１１８、２１５、２１８のいずれかは、リンク障害の要因がモジュール２にないと判断し、復帰モードを開始する（ステップＳ３０）。
【００４８】
第１の復帰モードとして、ディスクのミラーを開始する（ステップＳ３２）。ディスク・ミラーの動作としては、プロセッサ１００は、ＩＯデバイス１３０のＤＭＡエンジン１３２にＤＭＡライト指示を行う。ＤＭＡエンジン１３２は、ＤＭＡライト指示に応じて、ディスク１３３の内容をメイン・メモリ１４０に書き込む。メイン・メモリ１４０が更新された後、プロセッサ１００は、ＩＯデバイス２３０のＤＭＡエンジン２３２にＤＭＡリード指示を行う。ＤＭＡエンジン２３２は、ＤＭＡリード指示に応じて、メイン・メモリ１４０の内容を読み出し、ディスク２３３に格納する。このシーケンスは、障害の発生しているモジュール間リンク３０を経由することなく、障害が発生していない経路のみを使用することで実行可能であり、このシーケンスを繰り返すことにより、ディスク１３３とディスク２３３がミラーリングされ、同一の内容となる。
【００４９】
次に、第２の復帰モードとして、メイン・メモリのコピーを開始する（ステップＳ３４）。メモリ・コピーの動作としては、プロセッサ１００は、モジュール２のメモリ・コピー・エンジン２２１にメモリ・コピー指示を行う。メモリ・コピー・エンジン２２１は、メモリ・コピー指示に応じて、モジュール１のメイン・メモリ１４０の内容を読み出し、そのままモジュール２のメイン・メモリ２４０に書き込む。このシーケンスは、障害の発生しているモジュール間リンク３０を経由することなく、障害が発生していない経路のみを使用することで実行可能であり、このシーケンスを繰り返すことにより、メイン・メモリ１４０がメイン・メモリ２４０にコピーされ、同一の内容となる。
【００５０】
次に、ディスク１３３とディスク２３３の内容が同一となり、かつメイン・メモリ１４０とメイン・メモリ２４０の内容が同一となると（ステップＳ３６）、リンク・エラー判定部１１８は、モジュール交換フラグ１１９をリセットし（ステップＳ３８）、モジュール１の切り離しを行う（ステップＳ４０）。これにより、モジュール２のシンプレックス動作を行うことが可能となり、復帰モードを終了する（ステップＳ４２）。
【００５１】
次に、実際に障害が発生しているモジュール１が交換される（ステップＳ４４）。この場合、実際に障害が発生しているモジュール１が交換されることによって再組込みが成功するので、二重化に復帰する（ステップＳ４６）。
【００５２】
一方、モジュール２を交換して再組込み直後、モジュール間リンク３０に障害がない場合には（ステップＳ２６のＮＯ）、リンク・エラー判定部１１８は、モジュール交換フラグ１１９をリセットする（ステップＳ２８）。この場合、再組込みが成功し、二重化に復帰する（ステップＳ４６）。なお、モジュール間リンク３０に障害があってもモジュール交換フラグがセットされていない場合には、新たな障害が発生したと判断してステップＳ１０に戻る。
【００５３】
例えば、図７および図８に示すように、モジュール２のＣＰＵサブシステム２０のモジュール間リンク３０で障害が発生しているケースである。このケースにおいても、エラーの検出、ＣＰＵサブシステム２０の切り離し、モジュール２の交換、モジュール２の再組込みまでの流れは前述した通りである。図７、図８に示す場合には、障害がモジュール２にあるので、モジュール２を交換することにより、障害が取り除かれる。よって、モジュール２の交換後の再組込みで、リンク障害は発生しないので、モジュール交換フラグ１１９をリセットし、再組込みが成功する。
【００５４】
上述した実施形態によれば、２つのモジュールを二重化させるフォールトトレラント装置において、リンク・エラー判定部１１５、１１８、２１５、２１８によって、モジュール間リンクに障害発生が検出されると、モジュール交換フラグ１１９をセットし、モジュール間リンクの障害によりモジュール２が交換された後、モジュール交換フラグ１１９の状態と障害発生の再検出状況とに基づいて、障害が発生したモジュールを正確に特定することができる。
【００５５】
また、上述した実施形態によれば、障害が発生していない側のモジュールを交換した場合であっても、障害が発生したモジュールを正確に特定することができるので、障害要因のある交換されなかったモジュール１を交換して再組込みすることにより、システムを停止することなくフォールトトレラント装置を二重化状態に復帰させることができる。
【００５６】
Ｃ．他の実施形態
次に、本発明の他の実施形態について説明する。
図９および図１０は、他の実施形態の動作を説明するためのフローチャートである。また、図１１は、本発明の他の実施形態による、モジュール間リンク３０の受信リンクで障害が発生しているケースで、送信側であるモジュール１のＩＯサブシステム１１が切り離される場合を示すブロック図である。図１２は、本発明の他の実施形態による、モジュール間リンク３０の送信リンクで障害が発生しているケースで、受信側であるモジュール１のＩＯサブシステム１１が切り離される場合を示すブロック図である。
【００５７】
他の実施形態では、図１１、図１２に示すように、モジュール間リンク３０で障害が発生したときの切り離し対象をＩＯサブシステム１１としており、交換するモジュールをモジュール１としている。また、この他の実施形態では、モジュール交換フラグ１１９、２１９は、ＣＰＵサブシステム１０、２０側が有することになる。
【００５８】
モジュール間リンク３０で障害が発生すると、障害を保持したパケットが受信部１１４、１１７、２１４または２１７に到達する（ステップＳ５０）。リンク・エラー判定部１１５、１１８、２１５、２１８のいずれかでは、受信パケットにエラーがあることを検出する（ステップＳ５２）。
【００５９】
次に、エラーがＣＰＵサブシステム１０または２０側で検出されたかＩＯサブシステム１１または２１側で検出されたかを判断する（ステップＳ５４）。すなわち、リンク・エラー判定部１１５または２１５がエラーを検出した場合には、ＣＰＵサブシステム１０または２０側で検出されたことを意味し、リンク・エラー判定部１１８または２１８がエラーを検出した場合には、ＩＯサブシステム１１または２１側で検出されたことを意味する。
【００６０】
そして、リンク・エラー判定部１１８または２１８がエラーを検出した場合には（ステップＳ５４の「ＩＯ」）、リンク・エラー判定部１１８または２１８は、送信部１１６または２１６に切り離し要求パケットを通知し、該切り離し要求パケットは、モジュール間リンク３０を経由し、モジュール１のＣＰＵサブシステム１０の受信部１１４またはモジュール２のＣＰＵサブシステム２０の受信部２１４に転送される（ステップＳ５６）。
【００６１】
次に、ＣＰＵサブシステム１０のリンク・エラー判定部１１５またはＣＰＵサブシステム２０のリンク・エラー判定部２１５は、受信した切り離し要求パケットを契機に、モジュール交換フラグ１１９または２１９をセットする（ステップＳ５８）。
【００６２】
いずれの場合も、モジュール１のＩＯサブシステム１１が切り離され（ステップＳ６０）、モジュール２のシンプレックス動作のまま（単一の系統だけでシステムを動作させること）、オンラインでモジュール１全体が交換される（ステップＳ６２）。次に、交換されたモジュール１を用いて、ＣＰＵサブシステム１０とＩＯサブシステム１１の再組込みを行う（ステップＳ６４）。
【００６３】
次に、リンク・エラー判定部１１５、１１８、２１５、２１８では、受信パケットにエラーがあるか否か、すなわちモジュール間リンク３０に障害があるか否かを判断する（ステップＳ６６）。つまり、障害箇所がモジュール２側のモジュール間リンク３０である場合、モジュール１を交換しても再組込みは成功せず、再度リンク障害を検出することになる。
【００６４】
そして、モジュール間リンク３０に障害があった場合には（ステップＳ５６のＹＥＳ）、リンク・エラー判定部１１５、１１８、２１５、２１８のいずれかは、リンク障害の要因がモジュール２にないと判断し、復帰モードを開始する（ステップＳ７０）。
【００６５】
第１の復帰モードとして、メイン・メモリのコピーを開始する（ステップＳ７２）。メモリ・コピーの動作としては、プロセッサ２００は、モジュール２のメモリ・コピー・エンジン２２１にメモリ・コピー指示を行う。メモリ・コピー・エンジン２２１は、そのメモリ・コピー指示に応じて、モジュール２のメイン・メモリ２４０の内容を読み出し、そのリード・データを、そのままモジュール１のメイン・メモリ１４０に書き込む。このシーケンスは、障害の発生しているモジュール間リンク３０を経由することなく、障害が発生していない経路のみを使用することで実行可能であり、このシーケンスを繰り返すことにより、メイン・メモリ２４０がメイン・メモリ１４０にコピーされ、同一の内容となる。
【００６６】
メモリ・コピーが完了すると、モジュール交換フラグ２１９をリセットし（ステップＳ７４）、モジュール２のＣＰＵサブシステム２０が切り離しが行われ（ステップＳ７６）、モジュール１のＣＰＵサブシステム１０とモジュール２のＩＯサブシステム２１でのシンプレックス動作を行う（ステップＳ７８）。
【００６７】
次に、第２の復帰モードとして、ディスクのミラーを開始する（ステップＳ８０）。ディスク・ミラーの動作としては、プロセッサ１００からＩＯデバイス２３０のＤＭＡエンジン２３２にＤＭＡライト指示を行い、ディスク２３３の内容をメイン・メモリ１４０にライトする。メイン・メモリ１４０が更新された後、プロセッサ１００からＩＯデバイス１３０のＤＭＡエンジン１３２にＤＭＡリード指示を行い、メイン・メモリ１４０の内容をリードし、ディスク１３３に格納する。このシーケンスは、障害の発生しているモジュール間リンク３０を経由することなく、障害が発生していない経路のみを使用することで実行可能であり、このシーケンスを繰り返すことにより、ディスク１３３とディスク２３３がミラーリングされ、同一の内容となる。
【００６８】
次に、ディスク１３３とディスク２３３の内容が同一となり、かつメイン・メモリ１４０とメイン・メモリ２４０の内容が同一となると（ステップＳ８２）、モジュール２が切り離され、モジュール１のシンプレックス動作を行い（ステップＳ８４）、復帰モードを終了する（ステップＳ８６）。その後、実際に障害が発生しているモジュール２を交換する（ステップＳ８８）。この結果、モジュール２のＣＰＵサブシステム２０およびＩＯサブシステム２１の再組込みが成功し、二重化に復帰する（ステップＳ９０）。
【００６９】
一方、モジュール１を交換して再組込み直後、モジュール間リンク３０に障害がなかった場合には（ステップＳ６６のＮＯ）、リンク・エラー判定部１１８は、モジュール交換フラグ２１９をリセットする（ステップＳ６８）。この結果、再組込みが成功し、二重化に復帰する（ステップＳ９０）。つまり、実際の障害がモジュール１のＩＯサブシステム１１側にある場合には、最初のモジュール１の交換にて、障害が取り除かれる。よって、交換後の再組込みで、リンク障害は発生せず、再組込みが成功する。
【００７０】
例えば、図１１に示すように、モジュール間リンク３０の受信リンクで障害が発生している場合や、図１２に示すように、モジュール間リンク３０の送信リンクで障害が発生している場合などには、モジュール１のＩＯサブシステム１１が切り離され、モジュール１が交換される。このような場合、実際の障害がモジュール２側にあるので、再度、障害が発生してエラーが検出されるので、メイン・メモリのコピーおよびディスクのミラーリングを行った後、モジュール２を交換して再組込みを実行する。この結果、障害が発生していない側のモジュール１を交換した場合であっても、最終的にシステムを停止することなくフォールトトレラント装置を二重化状態に復帰させることができる。
【００７１】
上述した実施形態によれば、２つのモジュールを二重化させるフォールトトレラント装置において、リンク・エラー判定部１１５、１１８、２１５、２１８によって、モジュール間リンクに障害発生が検出されると、モジュール交換フラグ１１９をセットし、モジュール間リンクの障害によりモジュール２が交換された後、モジュール交換フラグ１１９の状態と障害発生の再検出状況とに基づいて、障害が発生したモジュールを正確に特定することができる。
【００７２】
また、上述した実施形態によれば、障害が発生していない側のモジュールを交換した場合であっても、障害が発生したモジュールを正確に特定することができるので、障害要因のある交換されなかったモジュール１を交換して再組込みすることにより、システムを停止することなくフォールトトレラント装置を二重化状態に復帰させることができる。
【００７３】
図１３は、本実施形態によるフォールトトレラント装置の最小構成を示すブロック図である。本実施形態によるフォールトトレラント装置は、少なくとも２つのモジュール３００、４００からなる。モジュール３００は、障害検出部３０１、設定部３０２、および特定部３０３を含む。同様に、モジュール４００は、障害検出部４０１、設定部４０２、および特定部４０３を含む。障害検出部３０１、４０１は、モジュール間リンクの障害発生を検出する。設定部３０２、４０２は、各々、モジュール交換フラグ３０４、４０４を有し、障害検出部３０１、４０１によって障害発生が検出されると、モジュール交換フラグ３０４、４０４をセットする。特定部３０３、４０３は、２つのモジュール３００、４００のうち、いずれか１つのモジュール（例えば、モジュール４００）の交換後の、前記モジュール交換フラグ３０４、４０４の状態と障害検出部３０１、４０１による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定する。
【００７４】
以上、図面を参照して本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００７５】
１、２、３００、４００  モジュール
１０、２０  ＣＰＵサブシステム
１１、２１  ＩＯサブシステム
３０  モジュール間リンク
１００、２００  プロセッサ
１１０、２１０  ｆｔチップセット
１１１、２１１  ＣＰＵパケット送受信部
１１２、１２０、２１２、２２０  リンク制御部
１１３、１１６、２１３、２１６  送信部
１１４、１１７、２１４、２１７  受信部
１１５、１１８、２１５、２１８、３０１、３０２、３０３、４０１、４０２、４０３  リンク・エラー判定部（障害検出部、設定部、特定部）
１１９、２１９、３０４、４０４  モジュール交換フラグ
１２１、２２１  メモリ・コピー・エンジン
１２２、２２２  ＩＯパケット送受信部
１３０、２３０  ＩＯデバイス
１３１、２３１  コントローラ
１３２、２３２  ＤＭＡエンジン
１３３、２３３  ディスク
１４０、２４０  メイン・メモリ
【図１】
2020154702.tif 000003
【図２】
2020154702.tif 000004
【図３】
2020154702.tif 000005
【図４】
2020154702.tif 000006
【図５】
2020154702.tif 000007
【図６】
2020154702.tif 000008
【図７】
2020154702.tif 000009
【図８】
2020154702.tif 000010
【図９】
2020154702.tif 000011
【図１０】
2020154702.tif 000012
【図１１】
2020154702.tif 000013
【図１２】
2020154702.tif 000014
【図１３】
2020154702.tif 000015
【手続補正書】
【提出日】令和2年7月22日(2020.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
２つのモジュールを二重化させるフォールトトレラント装置であって、
モジュール間リンクの障害発生を検出する障害検出部と、
２つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すモジュール交換フラグを格納するとともに、前記障害検出部によって障害発生が検出されると、前記モジュール交換フラグをセットする設定部と、
２つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すモジュール交換フラグを格納するとともに、前記障害検出部によって障害発生が検出されると、前記モジュール交換フラグをセットする設定部と、
前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害検出部による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定する特定部と、
前記特定部によってリンク障害要因が交換されていないモジュールにあると特定された場合に、２つのモジュール間のデータの同期を行う復帰部と、
を備え、
前記復帰部によるデータの同期後、交換されていないモジュールを新たなモジュールに交換する、ことを特徴とするフォールトトレラント装置。
【請求項２】
前記特定部は、
前記いずれか１つのモジュールの交換後に、前記モジュール交換フラグがセットされた状態で、前記障害検出部によって障害発生が再度検出された場合、リンク障害要因が交換されていないモジュールにあると特定することを特徴とする請求項１に記載のフォールトトレラント装置。
【請求項３】
前記復帰部は、
前記２つのモジュール間のデータの同期を行った後、前記モジュール交換フラグをリセットすることを特徴とする請求項１または請求項２に記載のフォールトトレラント装置。
【請求項４】
２つのモジュールを二重化させるフォールトトレラント装置の障害復帰方法であって、
モジュール間リンクの障害発生を検出するステップと、
前記障害発生が検出されると、２つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すとともに、設定部に格納されたモジュール交換フラグをセットするステップと、
前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、
前記リンク障害要因が交換されていないモジュールにあると特定された場合に、２つのモジュール間のデータの同期を行うステップと、
前記２つのモジュール間のデータの同期後、交換されていないモジュールを新たなモジュールに交換するステップと、
を含むことを特徴とする障害復帰方法。
【請求項５】
２つのモジュールを二重化させるフォールトトレラント装置のプログラムであって、
モジュール間リンクの障害発生を検出するステップと、
前記障害発生が検出されると、２つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すとともに、設定部に格納されたモジュール交換フラグをセットするステップと、
前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、
前記リンク障害要因が交換されていないモジュールにあると特定された場合に、２つのモジュール間のデータの同期を行うステップと、
前記２つのモジュール間のデータの同期後、交換されていないモジュールを新たなモジュールに交換するステップと、
をフォールトトレラント装置に実行させるためのプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
上述した課題を解決するために、本発明のフォールトトレラント装置は、２つのモジュールを二重化させるフォールトトレラント装置であって、モジュール間リンクの障害発生を検出する障害検出部と、２つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すモジュール交換フラグを格納するとともに、前記障害検出部によって障害発生が検出されると、前記モジュール交換フラグをセットする設定部と、前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害検出部による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定する特定部と、前記特定部によってリンク障害要因が交換されていないモジュールにあると特定された場合に、２つのモジュール間のデータの同期を行う復帰部と、を備え、前記復帰部によるデータの同期後、交換されていないモジュールを新たなモジュールに交換する、ことを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
また、上述した課題を解決するために、本発明の障害復帰方法は、２つのモジュールを二重化させるフォールトトレラント装置の障害復帰方法であって、モジュール間リンクの障害発生を検出するステップと、前記障害発生が検出されると、２つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すとともに、設定部に格納されたモジュール交換フラグをセットするステップと、前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、前記リンク障害要因が交換されていないモジュールにあると特定された場合に、２つのモジュール間のデータの同期を行うステップと、前記２つのモジュール間のデータの同期後、交換されていないモジュールを新たなモジュールに交換するステップと、を含むことを特徴とする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
また、上述した課題を解決するために、本発明のプログラムは、２つのモジュールを二重化させるフォールトトレラント装置のプログラムであって、モジュール間リンクの障害発生を検出するステップと、前記障害発生が検出されると、２つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すとともに、設定部に格納されたモジュール交換フラグをセットするステップと、前記２つのモジュールのうち、いずれか１つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、前記リンク障害要因が交換されていないモジュールにあると特定された場合に、２つのモジュール間のデータの同期を行うステップと、前記２つのモジュール間のデータの同期後、交換されていないモジュールを新たなモジュールに交換するステップと、をフォールトトレラント装置に実行させる。