JP6852910B2 - フォールトトレラント装置、障害復帰方法、およびプログラム - Google Patents

フォールトトレラント装置、障害復帰方法、およびプログラム Download PDF

Info

Publication number
JP6852910B2
JP6852910B2 JP2019052447A JP2019052447A JP6852910B2 JP 6852910 B2 JP6852910 B2 JP 6852910B2 JP 2019052447 A JP2019052447 A JP 2019052447A JP 2019052447 A JP2019052447 A JP 2019052447A JP 6852910 B2 JP6852910 B2 JP 6852910B2
Authority
JP
Japan
Prior art keywords
module
failure
link
modules
fault
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019052447A
Other languages
English (en)
Other versions
JP2020154702A (ja
Inventor
貴司 小島
貴司 小島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Platforms Ltd
Original Assignee
NEC Platforms Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2019052447A priority Critical patent/JP6852910B2/ja
Publication of JP2020154702A publication Critical patent/JP2020154702A/ja
Application granted granted Critical
Publication of JP6852910B2 publication Critical patent/JP6852910B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、フォールトトレラント装置、障害復帰方法、およびプログラムに関する。
2つのモジュールを二重化させるフォールトトレラント装置において、CPUサブシステムを含むCPUモジュールと、IOサブシステムを含むIOモジュールとを分離独立して構成することにより、モジュール全体ではなくCPUモジュール単体、あるいはIOモジュール単体で交換できるものがあった。そのため、モジュール間リンクで障害が発生した場合、送信側のモジュールと受信側のモジュールの双方を同時に交換することが可能であった。
しかしながら、CPUモジュールとIOモジュールを分離独立することによりシステムコストが増大するため、近年ではCPUモジュールとIOモジュールを1つのモジュールに統合し、コストを削減する方式を採ることが多い。これにより、送信側のモジュールと受信側のモジュールの双方を同時に交換することができない。そのため、1つのモジュールに統合した場合、サブシステム単位でシステムから切り離す処理を行う。
例えば、特許文献1は、2つのモジュール間リンクで発生箇所を特定できない障害が発生した場合、モジュール間の通信の接続を切り離し、所定の時間、各々のモジュールを独立して動作させ、障害の発生箇所を特定することで、真の故障箇所を検出できる確率を増やすことにより、障害が発生していない側のモジュールを切り離して、最悪の場合、システムが停止してしまう確率を減らすという技術を提示している。
また、特許文献2は、障害が発生した場合、障害が発生した系を切り離し、当該系の構成情報等を正常な系に退避させ、正常な系の全情報を障害が発生した系に転送するという技術を提示している。
また、特許文献3は、一対の処理部から構成される二重化された処理装置において、一方の処理部に障害がある場合に、当該処理装置から切り離されて新たに組み込まれる処理部とのリンク確立を判断し、新たに組み込まれる処理部を対象として、その組み込みの可否をテストするという技術を提示している。
また、特許文献4は、2つのモジュール間リンクにおいて、障害が発生した後の復旧時に両系のメインメモリに格納されているデータを速やかに同期させる技術を提示している。
また、特許文献5は、チャネル装置に接続しているポ−トにおいて、リンクの障害を検出し、障害を検出したポートと入出力パスが確立されているポートから強制切り離しフレ−ムを送出させる技術を提示している。
特開2016−115239号公報 特開2013−206278号公報 特開2010−176602号公報 特開2006−178550号公報 特開平06−309186号公報
ところで、上記フォールトトレラント装置において、モジュール間リンクで障害が発生した場合、送信側のサブシステム、あるいは受信側のサブシステムのいずれに問題があるのか判定するのは非常に困難である。そのため、フォールトトレラント装置では、あらかじめ決められた条件に従い、一方のモジュールにおける、CPUサブシステムあるいはIOサブシステムのいずれかをシステムから切り離す処理を行う。
モジュール間リンクの障害の要因となっている一方のモジュールにおけるサブシステムが切り離された場合、そちらのモジュール全体を交換することにより、フォールトトレラント装置を二重化状態に復帰させることができる。これに対して、モジュール間リンクの障害の要因となっている一方のモジュールにおけるサブシステムとは逆のモジュールにおけるサブシステムがシステムから切り離された場合には、切り離されたサブシステムを含むモジュールを交換しても、再度、モジュール間リンクで障害が発生してしまう。このため、フォールトトレラント装置は、二重化状態に復帰できない。このような場合、一旦システムを停止して、モジュール間リンクの障害の要因となっている側のモジュールを再度交換する必要があった。
しかしながら、特許文献1では、障害が発生していない側のモジュールを切り離してしまう確率を減らすものの、障害が発生していない側のモジュールを交換する可能性はあり、その場合にシステムが停止してしまう可能性がある。
また、特許文献2では、障害が発生した系を特定可能としているが、上述したように、送信側のサブシステム、あるいは受信側のサブシステムのいずれに問題があるのか判定するのは非常に困難であり、障害が発生していない側のモジュールを交換した場合にシステムが停止してしまう可能性がある。
また、特許文献3、4および5では、障害発生時のモジュールの切り離しや、障害が発生していない側のモジュールを交換した場合等については何ら言及しておらず、障害が発生していない側のモジュールを交換した場合にシステムが停止してしまう可能性がある。
本発明は、このような事情を考慮してなされたものであり、その目的は、障害が発生したモジュールを特定可能なフォールトトレラント装置、障害復帰方法、およびプログラムを提供することにある。
上述した課題を解決するために、本発明のフォールトトレラント装置は、2つのモジュールを二重化させるフォールトトレラント装置であって、モジュール間リンクの障害発生を検出する障害検出部と、2つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すモジュール交換フラグを格納するとともに、前記障害検出部によって障害発生が検出されると、前記モジュール交換フラグをセットする設定部と、前記2つのモジュールのうち、いずれか1つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害検出部による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定する特定部と、前記特定部によってリンク障害要因が交換されていないモジュールにあると特定された場合に、2つのモジュール間のデータの同期を行う復帰部と、を備え、前記復帰部によるデータの同期後、交換されていないモジュールを新たなモジュールに交換する、ことを特徴とする。
また、上述した課題を解決するために、本発明の障害復帰方法は、2つのモジュールを二重化させるフォールトトレラント装置の障害復帰方法であって、モジュール間リンクの障害発生を検出するステップと、前記障害発生が検出されると、2つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すとともに、設定部に格納されたモジュール交換フラグをセットするステップと、前記2つのモジュールのうち、いずれか1つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、前記リンク障害要因が交換されていないモジュールにあると特定された場合に、2つのモジュール間のデータの同期を行うステップと、前記2つのモジュール間のデータの同期後、交換されていないモジュールを新たなモジュールに交換するステップと、を含むことを特徴とする。
また、上述した課題を解決するために、本発明のプログラムは、2つのモジュールを二重化させるフォールトトレラント装置のプログラムであって、モジュール間リンクの障害発生を検出するステップと、前記障害発生が検出されると、2つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すとともに、設定部に格納されたモジュール交換フラグをセットするステップと、前記2つのモジュールのうち、いずれか1つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、前記リンク障害要因が交換されていないモジュールにあると特定された場合に、2つのモジュール間のデータの同期を行うステップと、前記2つのモジュール間のデータの同期後、交換されていないモジュールを新たなモジュールに交換するステップと、をフォールトトレラント装置に実行させる。
この発明によれば、障害が発生したモジュールを特定可能となる。
本発明の一実施例として、モジュール1とモジュール2から構成されるフォールトトレラント装置を示すブロック図である。 本実施形態の動作を説明するためのフローチャートである。 本実施形態の動作を説明するためのフローチャートである。 本実施形態において、モジュール1のIOサブシステム11のモジュール間リンク30の送信リンクで障害が発生しているケースを示すブロック図である。 本実施形態において、モジュール1のIOサブシステム11のモジュール間リンク30の送信リンクで障害が発生しているケースで、受信側であるモジュール2のCPUサブシステム20が切り離される場合を示すブロック図である。 本実施形態において、モジュール1のIOサブシステム11のモジュール間リンク30の受信リンクで障害が発生しているケースで、受信側であるモジュール2のCPUサブシステム20が切り離される場合を示すブロック図である。 本実施形態において、モジュール2のCPUサブシステム20のモジュール間リンク30の受信リンクで障害が発生しているケースで、受信側であるモジュール2のCPUサブシステム20が切り離される場合を示すブロック図である。 本実施形態において、モジュール2のCPUサブシステム20のモジュール間リンク30の送信リンクで障害が発生しているケースで、受信側であるモジュール2のCPUサブシステム20が切り離される場合を示すブロック図である。 本発明の他の実施形態の動作を説明するためのフローチャートである。 他の実施形態の動作を説明するためのフローチャートである。 他の実施形態による、モジュール間リンク30の受信リンクで障害が発生しているケースで、送信側であるモジュール1のIOサブシステム11が切り離される場合を示すブロック図である。 他の実施形態による、モジュール間リンク30の送信リンクで障害が発生しているケースで、受信側であるモジュール1のIOサブシステム11が切り離される場合を示すブロック図である。 本実施形態によるフォールトトレラント装置の最小構成を示すブロック図である。
以下、本発明の一実施形態を、図面を参照して説明する。
A.実施形態の構成
図1は、本発明の一実施例として、モジュール1とモジュール2から構成されるフォールトトレラント装置を示すブロック図である。なお、モジュール1とモジュール2は、同一構成であるので、モジュール1に関してのみ説明する。
モジュール1は、プロセッサ100、メイン・メモリ140、ftチップセット110、IOデバイス130で構成されている。プロセッサ100は、メイン・メモリ140とftチップセット110とに接続されている。
ftチップセット110は、CPUパケット送受信部111、リンク制御部112、リンク制御部120、メモリ・コピー・エンジン121、およびIOパケット送受信部122から構成されている。リンク制御部112は、送信部113、受信部114、リンク・エラー判定部115を有する。リンク制御部120は、送信部116、受信部117、リンク・エラー判定部118、モジュール交換フラグ119を有する。
IOデバイス130は、ftチップセット110に接続され、コントローラ131と、データを格納するディスク133とを有する。コントローラ131は、DMAエンジン132を有する。
プロセッサ100は、IOデバイス130、IOデバイス230に対するパケットを生成する。プロセッサ100が生成したパケットは、パケットの中継を行うftチップセット110に送信される。ftチップセット110では、CPUパケット送受信部111がパケットを受信してIOデバイス130、モジュール2のIOデバイス230に転送する。
IOデバイス130は、プロセッサ100、モジュール2のプロセッサ200に対するパケットを生成する。IOデバイス130が生成したパケットは、パケットの中継を行うftチップセット110に送信される。ftチップセット110では、IOパケット送受信部122がパケットを受信してプロセッサ100、モジュール2のプロセッサ200へパケットを転送する。
ftチップセット110は、プロセッサ100、モジュール2のプロセッサ200、IOデバイス130、モジュール2のIOデバイス230から発行されたパケットの中継を行う。
CPUパケット送受信部111は、プロセッサ100から受信したパケットの宛先を確認し、IOデバイス130宛てのパケットであった場合にはIOパケット送受信部122に送信し、モジュール2のIOデバイス230宛のパケットであった場合にはリンク制御部112内の送信部113に送信する。また、CPUパケット送受信部111は、IOパケット送受信部122、またはリンク制御部112から受信したパケットを、プロセッサ100に送信する。
リンク制御部112は、CPUパケット送受信部111から受信したパケットを送信部113に渡す。送信部113は、そのパケットをモジュール間リンク30経由で、モジュール2のftチップセット210に送信する。リンク制御部112内の受信部114は、モジュール間リンク30経由でモジュール2のftチップセット210からパケットを受信する。その後、リンク制御部112は、リンク・エラー判定部115にて受信パケットのエラーの有無を判定し、CPUパケット送受信部111にパケットを送信する。
リンク制御部120は、IOパケット送受信部122から受信したパケットを送信部116に渡す。送信部116は、そのパケットをモジュール間リンク30経由で、モジュール2のftチップセット210に送信する。リンク制御部120内の受信部117は、モジュール間リンク30経由でモジュール2のftチップセット210からパケットを受信する。その後、リンク制御部120は、リンク・エラー判定部118にて受信パケットのエラーの有無を判定し、IOパケット送受信部122にパケットを送信する。リンク・エラー判定部118は、受信パケットのエラーを検出した際、モジュール交換フラグ119をセットする。
メモリ・コピー・エンジン121は、2つのCPUサブシステム10、20内のメイン・メモリ140、240の内容を同一にするための機能を有する。具体的には、メモリ・コピー・エンジン121は、リンク制御部120にメモリ・リード要求のパケットを通知する。リンク制御部120は、メモリ・リード要求に応じて、モジュール間リンク30を経由してモジュール2のメイン・メモリ240をリードする。リンク制御部120は、モジュール間リンク30を経由して返送されたリード・データをライト・データとしてCPUパケット送受信部111に送信する。メモリ・コピー・エンジン121は、メモリ・ライト要求のパケットをCPUパケット送受信部111に通知する。CPUパケット送受信部111は、メモリ・ライト要求に応じて、メイン・メモリ140に書込みを行うことで、メモリのコピーを行う。
IOパケット送受信部122は、CPUパケット送受信部111とリンク制御部120から出力されるパケットを比較し、一致した場合には、IOデバイス130にパケットを送信する。また、IOパケット送受信部122は、IOデバイス130から受信したパケットをCPUパケット送受信部111とリンク制御部120に送信する。
モジュール間リンク30は、モジュール1のCPUサブシステム10とモジュール2のIOサブシステム21を接続すると共に、モジュール1のIOサブシステム11とモジュール2のCPUサブシステム20を接続している。
なお、本実施形態では、モジュール間リンク30で障害が発生したときの切り離し対象をCPUサブシステム20としており、交換するモジュールをモジュール2としている。
B.実施形態の動作
図2および図3は、本実施形態の動作を説明するためのフローチャートである。また、図4は、本実施形態において、モジュール1のIOサブシステム11のモジュール間リンク30の送信リンクで障害が発生しているケースを示すブロック図である。図5は、本実施形態において、モジュール1のIOサブシステム11のモジュール間リンク30の送信リンクで障害が発生しているケースで、受信側であるモジュール2のCPUサブシステム20が切り離される場合を示すブロック図である。また、図6は、本実施形態において、モジュール1のIOサブシステム11のモジュール間リンク30の受信リンクで障害が発生しているケースで、受信側であるモジュール2のCPUサブシステム20が切り離される場合を示すブロック図である。
モジュール間リンク30で障害が発生すると、障害を保持したパケットが受信部114、117、214または217に到達する(ステップS10)。リンク・エラー判定部115、118、215、218のいずれかでは、受信パケットにエラーがあることを検出する(ステップS12)。
次に、エラーがCPUサブシステム10または20側で検出されたかIOサブシステム11または21側で検出されたかを判断する(ステップS14)。すなわち、リンク・エラー判定部115または215がエラーを検出した場合には、CPUサブシステム10または20側で検出されたことを意味し、リンク・エラー判定部118または218がエラーを検出した場合には、IOサブシステム11または21側で検出されたことを意味する。
そして、リンク・エラー判定部115または215がエラーを検出した場合には(ステップS14の「CPU」)、リンク・エラー判定部115または215は、送信部113または213に切り離し要求パケットを通知し、該切り離し要求パケットは、モジュール間リンク30を経由し、モジュール1のIOサブシステム11の受信部117またはモジュール2のIOサブシステム21の受信部217に転送される(ステップS16)。
次に、IOサブシステム11のリンク・エラー判定部118またはIOサブシステム21のリンク・エラー判定部218は、受信した切り離し要求パケットを契機に、モジュール交換フラグ119または219をセットする(ステップS18)。
例えば、図4に示すように、障害箇所が、モジュール1のIOサブシステム11のモジュール間リンク30の送信リンクである場合、モジュール2のCPUサブシステム20の受信部214に障害パケットが到達し、リンク・エラー判定部215にてエラーが検出される。エラーが検出された場合、リンク・エラー判定部215は、送信部213に切り離し要求パケットを通知する。該切り離し要求パケットは、モジュール間リンク30を経由し、モジュール1のIOサブシステム11の受信部117に転送される。リンク・エラー判定部118では、受信した切り離し要求パケットを契機にモジュール交換フラグ119をセットする。
一方、リンク・エラー判定部118または218がエラーを検出した場合には(ステップS14の「IO」)、切り離し要求パケットの通知、転送を行うことなく、リンク・エラー判定部118またはリンク・エラー判定部218が、直接、モジュール交換フラグ119または219をセットする(ステップS18)。
いずれの場合も、モジュール2のCPUサブシステム20が切り離され(ステップS20)、モジュール1のシンプレックス動作のまま(単一の系統だけでシステムを動作させること)、オンラインでモジュール2全体を交換する(ステップS22)。次に、交換したモジュール2を用いて、CPUサブシステム20とIOサブシステム21の再組込みを行う(ステップS24)。
例えば、図4に示すように、モジュール1のIOサブシステム11のモジュール間リンク30の送信リンクで障害が発生した場合、図5に示すように、モジュール2のCPUサブシステム20が切り離され(塗りつぶし部分)、モジュール1のシンプレックス動作のまま、オンラインでモジュール2全体が交換される。その後、交換されたモジュール2を用いて、CPUサブシステム20とIOサブシステム21の再組込みを行う。
一方、障害箇所が図6に示すように、モジュール1のIOサブシステム11のモジュール間リンク30の受信リンクである場合、モジュール1のIOサブシステム11の受信部117に障害パケットが到達し、リンク・エラー判定部118にてエラーが検出される。リンク・エラー判定部118では、エラーが検出された場合、モジュール交換フラグ119をセットする。この場合、図5と同様に、モジュール2のCPUサブシステム20が切り離され(塗りつぶし部分)、モジュール1のシンプレックス動作のまま、オンラインでモジュール2全体が交換される。その後、交換したモジュール2を用いて、CPUサブシステム20とIOサブシステム21の再組込みを行う。
次に、リンク・エラー判定部115、118、215、218では、受信パケットにエラーがあるか否か、すなわちモジュール間リンク30に障害があり、かつモジュール交換フラグがセットされているか否かを判断する(ステップS26)。つまり、図4または図6のように、障害箇所がモジュール1側のIOサブシステム11のモジュール間リンク30にある場合、モジュール2を交換してもモジュール2のIOサブシステム21の組込みは成功するものの、CPUサブシステム20の再組込みは成功せず、リンク・エラー判定部118が再度リンク障害を検出することになる。
そして、モジュール間リンク30に障害があり、かつモジュール交換フラグがセットされている場合には(ステップS26のYES)、リンク・エラー判定部115、118、215、218のいずれかは、リンク障害の要因がモジュール2にないと判断し、復帰モードを開始する(ステップS30)。
第1の復帰モードとして、ディスクのミラーを開始する(ステップS32)。ディスク・ミラーの動作としては、プロセッサ100は、IOデバイス130のDMAエンジン132にDMAライト指示を行う。DMAエンジン132は、DMAライト指示に応じて、ディスク133の内容をメイン・メモリ140に書き込む。メイン・メモリ140が更新された後、プロセッサ100は、IOデバイス230のDMAエンジン232にDMAリード指示を行う。DMAエンジン232は、DMAリード指示に応じて、メイン・メモリ140の内容を読み出し、ディスク233に格納する。このシーケンスは、障害の発生しているモジュール間リンク30を経由することなく、障害が発生していない経路のみを使用することで実行可能であり、このシーケンスを繰り返すことにより、ディスク133とディスク233がミラーリングされ、同一の内容となる。
次に、第2の復帰モードとして、メイン・メモリのコピーを開始する(ステップS34)。メモリ・コピーの動作としては、プロセッサ100は、モジュール2のメモリ・コピー・エンジン221にメモリ・コピー指示を行う。メモリ・コピー・エンジン221は、メモリ・コピー指示に応じて、モジュール1のメイン・メモリ140の内容を読み出し、そのままモジュール2のメイン・メモリ240に書き込む。このシーケンスは、障害の発生しているモジュール間リンク30を経由することなく、障害が発生していない経路のみを使用することで実行可能であり、このシーケンスを繰り返すことにより、メイン・メモリ140がメイン・メモリ240にコピーされ、同一の内容となる。
次に、ディスク133とディスク233の内容が同一となり、かつメイン・メモリ140とメイン・メモリ240の内容が同一となると(ステップS36)、リンク・エラー判定部118は、モジュール交換フラグ119をリセットし(ステップS38)、モジュール1の切り離しを行う(ステップS40)。これにより、モジュール2のシンプレックス動作を行うことが可能となり、復帰モードを終了する(ステップS42)。
次に、実際に障害が発生しているモジュール1が交換される(ステップS44)。この場合、実際に障害が発生しているモジュール1が交換されることによって再組込みが成功するので、二重化に復帰する(ステップS46)。
一方、モジュール2を交換して再組込み直後、モジュール間リンク30に障害がない場合には(ステップS26のNO)、リンク・エラー判定部118は、モジュール交換フラグ119をリセットする(ステップS28)。この場合、再組込みが成功し、二重化に復帰する(ステップS46)。なお、モジュール間リンク30に障害があってもモジュール交換フラグがセットされていない場合には、新たな障害が発生したと判断してステップS10に戻る。
例えば、図7および図8に示すように、モジュール2のCPUサブシステム20のモジュール間リンク30で障害が発生しているケースである。このケースにおいても、エラーの検出、CPUサブシステム20の切り離し、モジュール2の交換、モジュール2の再組込みまでの流れは前述した通りである。図7、図8に示す場合には、障害がモジュール2にあるので、モジュール2を交換することにより、障害が取り除かれる。よって、モジュール2の交換後の再組込みで、リンク障害は発生しないので、モジュール交換フラグ119をリセットし、再組込みが成功する。
上述した実施形態によれば、2つのモジュールを二重化させるフォールトトレラント装置において、リンク・エラー判定部115、118、215、218によって、モジュール間リンクに障害発生が検出されると、モジュール交換フラグ119をセットし、モジュール間リンクの障害によりモジュール2が交換された後、モジュール交換フラグ119の状態と障害発生の再検出状況とに基づいて、障害が発生したモジュールを正確に特定することができる。
また、上述した実施形態によれば、障害が発生していない側のモジュールを交換した場合であっても、障害が発生したモジュールを正確に特定することができるので、障害要因のある交換されなかったモジュール1を交換して再組込みすることにより、システムを停止することなくフォールトトレラント装置を二重化状態に復帰させることができる。
C.他の実施形態
次に、本発明の他の実施形態について説明する。
図9および図10は、他の実施形態の動作を説明するためのフローチャートである。また、図11は、本発明の他の実施形態による、モジュール間リンク30の受信リンクで障害が発生しているケースで、送信側であるモジュール1のIOサブシステム11が切り離される場合を示すブロック図である。図12は、本発明の他の実施形態による、モジュール間リンク30の送信リンクで障害が発生しているケースで、受信側であるモジュール1のIOサブシステム11が切り離される場合を示すブロック図である。
他の実施形態では、図11、図12に示すように、モジュール間リンク30で障害が発生したときの切り離し対象をIOサブシステム11としており、交換するモジュールをモジュール1としている。また、この他の実施形態では、モジュール交換フラグ119、219は、CPUサブシステム10、20側が有することになる。
モジュール間リンク30で障害が発生すると、障害を保持したパケットが受信部114、117、214または217に到達する(ステップS50)。リンク・エラー判定部115、118、215、218のいずれかでは、受信パケットにエラーがあることを検出する(ステップS52)。
次に、エラーがCPUサブシステム10または20側で検出されたかIOサブシステム11または21側で検出されたかを判断する(ステップS54)。すなわち、リンク・エラー判定部115または215がエラーを検出した場合には、CPUサブシステム10または20側で検出されたことを意味し、リンク・エラー判定部118または218がエラーを検出した場合には、IOサブシステム11または21側で検出されたことを意味する。
そして、リンク・エラー判定部118または218がエラーを検出した場合には(ステップS54の「IO」)、リンク・エラー判定部118または218は、送信部116または216に切り離し要求パケットを通知し、該切り離し要求パケットは、モジュール間リンク30を経由し、モジュール1のCPUサブシステム10の受信部114またはモジュール2のCPUサブシステム20の受信部214に転送される(ステップS56)。
次に、CPUサブシステム10のリンク・エラー判定部115またはCPUサブシステム20のリンク・エラー判定部215は、受信した切り離し要求パケットを契機に、モジュール交換フラグ119または219をセットする(ステップS58)。
いずれの場合も、モジュール1のIOサブシステム11が切り離され(ステップS60)、モジュール2のシンプレックス動作のまま(単一の系統だけでシステムを動作させること)、オンラインでモジュール1全体が交換される(ステップS62)。次に、交換されたモジュール1を用いて、CPUサブシステム10とIOサブシステム11の再組込みを行う(ステップS64)。
次に、リンク・エラー判定部115、118、215、218では、受信パケットにエラーがあるか否か、すなわちモジュール間リンク30に障害があるか否かを判断する(ステップS66)。つまり、障害箇所がモジュール2側のモジュール間リンク30である場合、モジュール1を交換しても再組込みは成功せず、再度リンク障害を検出することになる。
そして、モジュール間リンク30に障害があった場合には(ステップS56のYES)、リンク・エラー判定部115、118、215、218のいずれかは、リンク障害の要因がモジュール2にないと判断し、復帰モードを開始する(ステップS70)。
第1の復帰モードとして、メイン・メモリのコピーを開始する(ステップS72)。メモリ・コピーの動作としては、プロセッサ200は、モジュール2のメモリ・コピー・エンジン221にメモリ・コピー指示を行う。メモリ・コピー・エンジン221は、そのメモリ・コピー指示に応じて、モジュール2のメイン・メモリ240の内容を読み出し、そのリード・データを、そのままモジュール1のメイン・メモリ140に書き込む。このシーケンスは、障害の発生しているモジュール間リンク30を経由することなく、障害が発生していない経路のみを使用することで実行可能であり、このシーケンスを繰り返すことにより、メイン・メモリ240がメイン・メモリ140にコピーされ、同一の内容となる。
メモリ・コピーが完了すると、モジュール交換フラグ219をリセットし(ステップS74)、モジュール2のCPUサブシステム20が切り離しが行われ(ステップS76)、モジュール1のCPUサブシステム10とモジュール2のIOサブシステム21でのシンプレックス動作を行う(ステップS78)。
次に、第2の復帰モードとして、ディスクのミラーを開始する(ステップS80)。ディスク・ミラーの動作としては、プロセッサ100からIOデバイス230のDMAエンジン232にDMAライト指示を行い、ディスク233の内容をメイン・メモリ140にライトする。メイン・メモリ140が更新された後、プロセッサ100からIOデバイス130のDMAエンジン132にDMAリード指示を行い、メイン・メモリ140の内容をリードし、ディスク133に格納する。このシーケンスは、障害の発生しているモジュール間リンク30を経由することなく、障害が発生していない経路のみを使用することで実行可能であり、このシーケンスを繰り返すことにより、ディスク133とディスク233がミラーリングされ、同一の内容となる。
次に、ディスク133とディスク233の内容が同一となり、かつメイン・メモリ140とメイン・メモリ240の内容が同一となると(ステップS82)、モジュール2が切り離され、モジュール1のシンプレックス動作を行い(ステップS84)、復帰モードを終了する(ステップS86)。その後、実際に障害が発生しているモジュール2を交換する(ステップS88)。この結果、モジュール2のCPUサブシステム20およびIOサブシステム21の再組込みが成功し、二重化に復帰する(ステップS90)。
一方、モジュール1を交換して再組込み直後、モジュール間リンク30に障害がなかった場合には(ステップS66のNO)、リンク・エラー判定部118は、モジュール交換フラグ219をリセットする(ステップS68)。この結果、再組込みが成功し、二重化に復帰する(ステップS90)。つまり、実際の障害がモジュール1のIOサブシステム11側にある場合には、最初のモジュール1の交換にて、障害が取り除かれる。よって、交換後の再組込みで、リンク障害は発生せず、再組込みが成功する。
例えば、図11に示すように、モジュール間リンク30の受信リンクで障害が発生している場合や、図12に示すように、モジュール間リンク30の送信リンクで障害が発生している場合などには、モジュール1のIOサブシステム11が切り離され、モジュール1が交換される。このような場合、実際の障害がモジュール2側にあるので、再度、障害が発生してエラーが検出されるので、メイン・メモリのコピーおよびディスクのミラーリングを行った後、モジュール2を交換して再組込みを実行する。この結果、障害が発生していない側のモジュール1を交換した場合であっても、最終的にシステムを停止することなくフォールトトレラント装置を二重化状態に復帰させることができる。
上述した実施形態によれば、2つのモジュールを二重化させるフォールトトレラント装置において、リンク・エラー判定部115、118、215、218によって、モジュール間リンクに障害発生が検出されると、モジュール交換フラグ119をセットし、モジュール間リンクの障害によりモジュール2が交換された後、モジュール交換フラグ119の状態と障害発生の再検出状況とに基づいて、障害が発生したモジュールを正確に特定することができる。
また、上述した実施形態によれば、障害が発生していない側のモジュールを交換した場合であっても、障害が発生したモジュールを正確に特定することができるので、障害要因のある交換されなかったモジュール1を交換して再組込みすることにより、システムを停止することなくフォールトトレラント装置を二重化状態に復帰させることができる。
図13は、本実施形態によるフォールトトレラント装置の最小構成を示すブロック図である。本実施形態によるフォールトトレラント装置は、少なくとも2つのモジュール300、400からなる。モジュール300は、障害検出部301、設定部302、および特定部303を含む。同様に、モジュール400は、障害検出部401、設定部402、および特定部403を含む。障害検出部301、401は、モジュール間リンクの障害発生を検出する。設定部302、402は、各々、モジュール交換フラグ304、404を有し、障害検出部301、401によって障害発生が検出されると、モジュール交換フラグ304、404をセットする。特定部303、403は、2つのモジュール300、400のうち、いずれか1つのモジュール(例えば、モジュール400)の交換後の、前記モジュール交換フラグ304、404の状態と障害検出部301、401による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定する。
以上、図面を参照して本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
1、2、300、400 モジュール
10、20 CPUサブシステム
11、21 IOサブシステム
30 モジュール間リンク
100、200 プロセッサ
110、210 ftチップセット
111、211 CPUパケット送受信部
112、120、212、220 リンク制御部
113、116、213、216 送信部
114、117、214、217 受信部
115、118、215、218、301、302、303、401、402、403 リンク・エラー判定部(障害検出部、設定部、特定部)
119、219、304、404 モジュール交換フラグ
121、221 メモリ・コピー・エンジン
122、222 IOパケット送受信部
130、230 IOデバイス
131、231 コントローラ
132、232 DMAエンジン
133、233 ディスク
140、240 メイン・メモリ

Claims (5)

  1. 2つのモジュールを二重化させるフォールトトレラント装置であって、
    モジュール間リンクの障害発生を検出する障害検出部と、
    2つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すモジュール交換フラグを格納するとともに、前記障害検出部によって障害発生が検出されると、前記モジュール交換フラグをセットする設定部と
    前記2つのモジュールのうち、いずれか1つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害検出部による障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定する特定部と、
    前記特定部によってリンク障害要因が交換されていないモジュールにあると特定された場合に、2つのモジュール間のデータの同期を行う復帰部と、
    を備え、
    前記復帰部によるデータの同期後、交換されていないモジュールを新たなモジュールに交換する、ことを特徴とするフォールトトレラント装置。
  2. 前記特定部は、
    前記いずれか1つのモジュールの交換後に、前記モジュール交換フラグがセットされた状態で、前記障害検出部によって障害発生が再度検出された場合、リンク障害要因が交換されていないモジュールにあると特定することを特徴とする請求項1に記載のフォールトトレラント装置。
  3. 前記復帰部は、
    前記2つのモジュール間のデータの同期を行った後、前記モジュール交換フラグをリセットすることを特徴とする請求項1または請求項2に記載のフォールトトレラント装置。
  4. 2つのモジュールを二重化させるフォールトトレラント装置の障害復帰方法であって、
    モジュール間リンクの障害発生を検出するステップと、
    前記障害発生が検出されると、2つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すとともに、設定部に格納されたモジュール交換フラグをセットするステップと、
    前記2つのモジュールのうち、いずれか1つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、
    前記リンク障害要因が交換されていないモジュールにあると特定された場合に、2つのモジュール間のデータの同期を行うステップと、
    前記2つのモジュール間のデータの同期後、交換されていないモジュールを新たなモジュールに交換するステップと、
    を含むことを特徴とする障害復帰方法。
  5. 2つのモジュールを二重化させるフォールトトレラント装置のプログラムであって、
    モジュール間リンクの障害発生を検出するステップと、
    前記障害発生が検出されると、2つのモジュールのうちのいずれかのモジュールの交換が必要であることを示すとともに、設定部に格納されたモジュール交換フラグをセットするステップと、
    前記2つのモジュールのうち、いずれか1つのモジュールの交換後の、前記モジュール交換フラグの状態と前記障害発生の再検出状況とに基づいて、リンク障害要因のモジュールを特定するステップと、
    前記リンク障害要因が交換されていないモジュールにあると特定された場合に、2つのモジュール間のデータの同期を行うステップと、
    前記2つのモジュール間のデータの同期後、交換されていないモジュールを新たなモジュールに交換するステップと、
    をフォールトトレラント装置に実行させるためのプログラム。
JP2019052447A 2019-03-20 2019-03-20 フォールトトレラント装置、障害復帰方法、およびプログラム Active JP6852910B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019052447A JP6852910B2 (ja) 2019-03-20 2019-03-20 フォールトトレラント装置、障害復帰方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019052447A JP6852910B2 (ja) 2019-03-20 2019-03-20 フォールトトレラント装置、障害復帰方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2020154702A JP2020154702A (ja) 2020-09-24
JP6852910B2 true JP6852910B2 (ja) 2021-03-31

Family

ID=72559168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019052447A Active JP6852910B2 (ja) 2019-03-20 2019-03-20 フォールトトレラント装置、障害復帰方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP6852910B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001016296A (ja) * 1999-06-28 2001-01-19 Nec Corp 故障標定方法
JP6394727B1 (ja) * 2017-03-22 2018-09-26 日本電気株式会社 制御装置、制御方法、及び、フォールトトレラント装置

Also Published As

Publication number Publication date
JP2020154702A (ja) 2020-09-24

Similar Documents

Publication Publication Date Title
US7437598B2 (en) System, method and circuit for mirroring data
US7793060B2 (en) System method and circuit for differential mirroring of data
US7076687B2 (en) System and method for bi-directional failure detection of a site in a clustering system
EP0709781B1 (en) System for using mirrored memory as a robust communication path between dual disk storage controllers
JP4376750B2 (ja) 計算機システム
JP4843976B2 (ja) レプリケーションシステムと方法
US7451345B2 (en) Remote copy synchronization in disaster recovery computer systems
US20070180307A1 (en) Method & system for resynchronizing data between a primary and mirror data storage system
EP3285168B1 (en) Disaster tolerance method and apparatus in active-active cluster system
US7797571B2 (en) System, method and circuit for mirroring data
KR20040007338A (ko) 폴트 톨러런트 컴퓨터, 그의 재동기화 방법 및 재동기화프로그램이 기록된 컴퓨터 판독가능 기억매체
JP5013309B2 (ja) フォールトトレラントコンピュータ、そのトランザクション同期制御方法
JP6083480B1 (ja) 監視装置、フォールトトレラントシステムおよび方法
JP6852910B2 (ja) フォールトトレラント装置、障害復帰方法、およびプログラム
JP6620136B2 (ja) 冗長系ストレージシステム及び冗長系ストレージシステムにおける障害復旧方法
JP2004272318A (ja) 系切り替えシステムおよびその処理方法並びにその処理プログラム
JP7188895B2 (ja) 通信システム
JP4452494B2 (ja) 複数リモートストレージでのリモートコピー停止後のデータ同期化方式
JP4721057B2 (ja) データ管理システム,データ管理方法及びデータ管理用プログラム
JP7371547B2 (ja) ノード、ミラーリング型クラスタシステム、リストア検出方法、及び、プログラム
JP2004272884A5 (ja)
JPWO2008050456A1 (ja) コンピュータシステム、データ中継装置およびコンピュータシステム制御方法
JPH0983526A (ja) 多重化通信方法
JPH0973401A (ja) フォールトトレラントシステム
CN115145768A (zh) 一种四控存储数据访问系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190320

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200616

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210121

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210304

R150 Certificate of patent or registration of utility model

Ref document number: 6852910

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150