JP6398658B2 - アプリケーション・データを回復する方法 - Google Patents

アプリケーション・データを回復する方法 Download PDF

Info

Publication number
JP6398658B2
JP6398658B2 JP2014240195A JP2014240195A JP6398658B2 JP 6398658 B2 JP6398658 B2 JP 6398658B2 JP 2014240195 A JP2014240195 A JP 2014240195A JP 2014240195 A JP2014240195 A JP 2014240195A JP 6398658 B2 JP6398658 B2 JP 6398658B2
Authority
JP
Japan
Prior art keywords
node
memory
memory controller
application
failover
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.)
Expired - Fee Related
Application number
JP2014240195A
Other languages
English (en)
Other versions
JP2015210812A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2015210812A publication Critical patent/JP2015210812A/ja
Application granted granted Critical
Publication of JP6398658B2 publication Critical patent/JP6398658B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2025Failover techniques using centralised failover control functionality
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、それだけではないが特に並列コンピューティング環境および高性能コンピューティング(HPC: high performance computing)用途における、障害のあった計算ノードからのデータの回復に関する。本発明は、障害耐性のある分散式コンピューティングの分野で特に用途を見出し、エクサスケール・コンピュータに力点を置く。
HPCシステムにおいては通例、計算集約的なおよび他の大規模なアプリケーションが実行される。そのようなHPCシステムはしばしば、実行可能形式の処理スレッドまたはプロセスのようなイベントの独立した諸シーケンスが並列に自律的に実行できる複数の処理ユニットまたは「コア」がある分散環境を提供する。
多くの異なるハードウェア構成およびプログラミング・モデルがHPCに適用可能である。現在HPCに対する一般的なアプローチは、それぞれ一つまたは複数のマルチコア・プロセッサ(または「チップ」)を有する複数のノードが高速ネットワークによって相互接続されるクラスター・システムである。各ノードは独自のメモリ領域をもつと想定され、該メモリ領域はそのノード内のすべてのコアにとってアクセス可能である。クラスター・システムは、一般的機能を実行するための既存のコード・ライブラリを利用して、ソース・コードを書く人間のプログラマーによってプログラムされることができる。次いでソース・コードはコンパイルされて、より低レベルの実行可能コード、たとえば特定の命令セットをもつプロセッサ型によって実行されることができるISA(Instruction Set Architecture[命令セット・アーキテクチャ])レベルのコードに、あるいは特定のプロセッサ専用のアセンブリ言語にされる。しばしば、アセンブリ・コードをアセンブルまたは(仮想マシンの場合)インタープリットして実行可能な機械コードにする最終段がある。アプリケーションの実行可能形式(時に単に「実行可能物」と称される)は、オペレーティング・システム(OS)の監督のもとで実行され、ハードウェアを制御するためにOSおよびライブラリを使用する。使用されるソフトウェアの種々のレイヤーはまとめてソフトウェア・スタックと称されてもよい。
本稿で使うところの「ソフトウェア・スタック」という用語は、アプリケーションを実行するために必要とされるソフトウェアすべてを含み、基礎レベルのソフトウェア(オペレーティング・システムまたはOS);たとえばノード間のインターコネクト、ディスクまたは他のメモリなどのようなハードウェア・コンポーネントとインターフェースをもつライブラリ(やはり一種のシステム・ソフトウェア)およびアプリケーション自身を含む。現在実行中のアプリケーションは、システム・ソフトウェアの上の、ソフトウェア・スタックの最上レイヤーと見ることができる。
複数のコアをもつコンピュータ・システムのアプリケーションは、プログラマーが複数コアの並列処理能力を活用できるようにするためのライブラリを増補した通常のコンピュータ言語(C/C++またはフォートランのような)で書かれてもよい。この点に関し、コアで実行される「プロセス」という言い方をするのが通例である。(マルチスレッド化された)プロセスは、マルチコアCPU内のいくつかのコアにまたがって実行されてもよく、各ノードは一つまたは複数のCPUを含んでいてもよい。そのような一つのライブラリは、メッセージ渡しインターフェース(MPI: Message Passing Interface)であり、これは分散メモリ・モデル(各プロセスがその独自のメモリ領域をもつものと想定される)を使い、プロセス間の通信を容易にする。MPIは、プロセスのグループが定義され、区別されることを許容し、いわゆる「バリア同期(barrier synchronisation)」のためのルーチンを含む。これは、複数のプロセスまたは処理要素が協働できるようにするために重要な特徴である。
あるいはまた、共有メモリ並列プログラミングでは、すべてのプロセスまたはコアが同じメモリまたはメモリ領域にアクセスできる。共有メモリ・モデルでは、プロセス間のデータの通信を明示的に指定する必要はない(あるプロセスによってなされる変更は他のすべてのプロセスにとって透明なので)。しかしながら、同時に一つのプロセスのみがデータを修正することを保証するために、共有メモリへのアクセスを制御するライブラリを使うことが必要であることがある。
エクサスケール・コンピュータ(すなわち、1エクサフロップ(1018浮動小数点演算毎秒)の持続的性能を発揮できるHPCシステム)は2020年までには配備されることが期待されている。この時間枠でエクサスケール・システムを開発するいくつかの国家的プロジェクトが発表されている。ペタスケール(現在の最新技術、約1015フロップス)からエクサスケールへの移行は、ハードウェア技術における根本的な変更を必要とするものと予期されている。もはやプロセッサ・クロック周波数におけるさらなる上昇はなく、よってパフォーマンス改善は並列性または並行性の増大(可能性としては約10億個のコアまで)から帰結することになる。エクサスケール・システムの電力使用を受け容れ可能な窓内に保つという要求は、低電力(かつ低コスト)コンポーネントが使用される可能性が高いことを意味し、その結果、各コンポーネントについての平均故障間隔が短くなる。このように、エクサスケール・システムは、今日の最新技術のシステムよりもずっと多くのコンポーネントを含むことになる。そして、各コンポーネントは、今日の対応物より頻繁に故障する可能性が高くなる。エクサスケール・システムについての平均コンポーネント故障間隔は(現行のシステムの場合の日単位ではなく)分単位で測られる可能性が高い。
したがって、エクサスケール・ソフトウェアは特に、これらの障害に対する向上した耐性を必要とすることになり、コンポーネント障害を乗り越えて実行を継続することができる必要があるであろう。HPCアプリケーションは一般に、作業が利用可能な計算コアのすべてを横断して分散されることを保証するよう、慎重に負荷バランスが取られるので、故障したノードに割り当てられていた作業を実行するために置換ノードがアプリケーションにとって利用可能にされることが重要となりうる(この作業をすでにロードされている残りのノードの一つまたは複数に割り当てることは、負荷バランスを崩壊させ、著しいパフォーマンス劣化につながる可能性が高い)。
図1は、障害を起こしたノードを置換ノードで置き換えるプロセスを示している。この図は、システム中の六つのノード(ノード0〜5)を示しており、ノード5が障害を起こし、もはやアプリケーションの実行に寄与できなくなっている。もちろん、現実には、ずっと多くのノードがコンピュータ・システムを構成している。置換ノード(ノード6)がシステムに利用可能にされ、障害を起こしたノードを置き換えるために挿入される。ひとたび置換ノードがアプリケーションに割り当てられたら、実行を継続するために必要とされるデータ(たとえば、アプリケーションによって計算された変数の値)で初期化することも必要である。
置換ノードを初期化する必要性は新しいものではなく、既知の初期化技法は次のようなものを含む。
・ノードをチェックポイント・ファイルから再開する。この方法は、データが正しい値に初期化されることを保証する。しかしながら、チェックポイントを生成するのは時間がかかる(大量のデータを別のノード上のメモリまたはディスク上のファイルにコピーすることに関わるため)。よって、データは一般に定期的にチェックポイント化され、チェックポイント間の間隔は比較的大きい。よって、チェックポイントからデータを復元するとき、最後のチェックポイント以降のすべての計算が繰り返される必要がある(少なくとも障害を起こしたノード上で、可能性としてはグローバルに)。このように、チェックポイント化には、時間的に二重のオーバーヘッドがある。まずはチェックポイントを生成する時、そしてチェックポイントから復元するために読み、再計算する時に再びである。
・障害を起こしたノード上の値を、生き残っているノード上の等価なデータの値から補間する。この方法は常に可能なわけではない(たとえば、各ノードがモデリング・アルゴリズムにおいて空間の別個の領域を受け持つ場合には、単にその境界上の値からこの領域の全体にわたる解を補間することが可能である可能性は低い)。障害を起こしたノード上のデータを他のノード上のデータから補間することが可能であるとしても、これを行なう結果として正確さが失われる。
これら従来技術の技法はいずれも欠点をもち、よって置換ノードを初期化する代替的な方法を提供することが望ましい。
本発明のある側面の実施形態によれば、インターコネクトによって接続された複数のノードを有するコンピュータ・システムにおいて障害を起こしたノードのメモリからアプリケーション・データを回復し、該アプリケーション・データを置換ノードに書き込む方法であって、前記コンピュータ・システムのノードがアプリケーションを実行し、該アプリケーションはアプリケーション・データを生成し、該アプリケーションの最も最近の状態をノード・メモリに記憶し;障害を起こしたノードのノード・メモリはその後、フェイルオーバー・メモリ・コントローラを使って制御され;前記フェイルオーバー・メモリ・コントローラは前記アプリケーション・データを障害を起こしたノードのノード・メモリから前記置換ノードのノード・メモリに前記インターコネクトを通じてコピーする、方法が提供される。
発明者らは、必要とされているのが、ノード外に繰り返しデータをコピーする必要なしに(そのようなコピーは時間がかかり、たいていの場合不必要なので)、障害を起こしたノード上の実際のデータ(正確さが失われる補間されたものではなく)を、好ましくは(ある時間前のものではなく)障害直前の状態から得る方法であることを認識するに至った。
発明実施形態は、現在の最新技術の限界を克服するために、障害を起こしたノードのメモリから直接データを回復する方法を提案する。
このように、発明実施形態によれば、複数のノードがあり、あるノードが障害を起こす場合、そのノードは置換ノードで置き換えられる。次いで、フェイルオーバー・メモリ・コントローラ(事実上、ノードが障害を起こしたときに使われるスタンバイ・メモリ・コントローラ)が障害を起こしたノードのノード・メモリの制御を受け持ち、アプリケーション・データを障害を起こしたノードのノード・メモリから置換ノードのノード・メモリにコピーする。したがって、この方法は、アプリケーションの最も最近の状態であるアプリケーション・データを復元でき、障害を起こしたノードからの、アプリケーションによって使用されているノード・メモリの内容全体を含め、それを置換ノードにコピーすることができる。置換ノードは、アプリケーションの実行において前に使われていなかったノードであってもよい。置換ノードは、アプリケーションを実行するノードの障害があった場合のための予備に取っておかれたノードであってもよい。置換ノードは、初期化されたあとは、他のノードと同じ仕方で扱われてもよい。
複数のノードを有するシステムにおけるアルゴリズムの並列実行において、アプリケーション・データは、たとえば、そのノード上で計算された当該アルゴリズムの部分の最新バージョンを含むことができる。
ノード・メモリの全部がアプリケーション・データのために利用可能でないこともある。ノード・メモリは、たとえばオペレーティティング・システムのプロセスのような他のプロセスによっても使用されてもよい。ノード・メモリのある種の部分は、他の用途のために予約されていて、よってアプリケーション・データのためには利用不能であることもある。そのような状況では、アプリケーションはノード・メモリの一部を、好ましくはフェイルオーバー・メモリ・コントローラに登録してもよい。この登録は、現在実行中のノードのものであってもよく、よって障害を起こしたノード・メモリの正しいセクションのみをコピーすることを許容してもよい。代替的または追加的に、この登録は、置換ノードのものであってもよく、データが置換ノードの利用可能なセクションにコピーされることを保証してもよい。登録は、アプリケーションが実行中の任意の時点に行なわれることができるが、ノード障害の前に行なわれる。好ましい実施形態では、登録は、アプリケーションがノード内でメモリを割り当てられたのちできるだけ早く行なわれる。
登録されるノード・メモリの部分は、アプリケーションによる使用のために利用可能であるメモリの部分であることも、あるいは利用可能でないメモリの部分であることもできる(これらは等価であり、よってどちらのオプションでも障害を起こしたノードの正しいセクションおよび/または利用可能な置換セクションの判別を許容することになる)。ノード・メモリの前記部分は、障害を起こしたノード、置換ノードまたは障害を起こしたノードと置換ノードの両方のノード・メモリの一部分であることができる。それらのノードの一方または両方においてノード・メモリの全部がアプリケーション・データに利用可能ではない状況では、この実施形態は、障害を起こしたノードのアプリケーション・データのみが置換ノードにコピーされることおよび/またはそのデータが置換ノードのノード・メモリの利用可能な部分にコピーされることを保証できる。登録は好ましくは、アプリケーションにおいて使用される全ノードについてのパターンとしてではなく、ノード毎であり、そのため、各ノードは内部的にどのようにアプリケーションにメモリが割り当てられるかを決定できる。
好ましい発明実施形態では、障害を起こしたノードは完全に機能しなくなる可能性が高い。これは、ノード自身における、またはノードをシステムの残りの部分に接続する通信ファブリックにおける電気的障害のため、あるいは他の何らかの欠陥のためでありうる。メモリへの電力接続が利用不能でないことがある(たとえばインターコネクトまたはメモリ・コントローラ障害ではメモリへの電源供給は無傷であるが、内容がアクセスできなくなることがある)が、多くのノード障害シナリオにおいては電力が失われる可能性が高い。
いくつかの発明実施形態によれば、ノード障害はこのように、もはやノードへの電力供給がないこと、特にノード・メモリへの電力供給がもはやないことを意味しうる。そのような状況においては、システムの残りの部分から独立な補助電源を提供することが適切であることがある。補助電力は、システムの任意の一部または全部に電力を供給できるが、好ましくは障害を起こしたノードのノード・メモリに給電する。好ましくは、補助電力は、ノード障害があるときに自動的にスイッチ・オンされる。補助電力は、電力障害によってメモリが消し去られないよう、メモリへの電力を連続的に維持するよう作用できる。補助電源は、いかなる好適な手段によって制御されてもよいが、好ましくは、フェイルオーバー・メモリ・コントローラによって制御される。
発明実施形態の補助電源は、いかなる種類の好適な電源であってもよいが、好ましくはバッテリー(一つまたは複数の電池)である。補助電源はシステムのどこに設けられてもよいが、好ましくは(ノードに付随していても別個に設けられてもよい)フェイルオーバー・メモリ・コントローラと一緒である。複数のフェイルオーバー・メモリ・コントローラがある場合、発明実施形態は、それぞれが独自のフェイルオーバー・メモリ・コントローラにリンクされた同数の補助電源を設けていてもよいし、あるいはそれぞれがいくつかのフェイルオーバー・メモリ・コントローラにリンクされた、より少数の補助電源を設けていてもよい。
補助電源は、任意の時点でフェイルオーバー・メモリ・コントローラに電力を供給できてもよい。これは、ノードの障害の前でもあとでもよく、好ましくは両方である。補助電源がフェイルオーバー・メモリ・コントローラの電源となるとき、フェイルオーバー・メモリ・コントローラのインターコネクト接続および電力を必要としうる他の任意のそのようなインターコネクト接続の電源となることも好ましい。
発明実施形態においては、補助電力は、ノードのノード・メモリに、直接的にまたはプロセッサまたはノード・メモリ・コントローラのような当該ノードの別のコンポーネントを介して供給されてもよい。好ましくは、補助電力は、障害を起こしたノードのノード・メモリに直接供給される。
フェイルオーバー・メモリ・コントローラの、ノードのインターコネクトへの接続は、直接的であっても、または障害を起こしたノードのプロセッサまたはノード・メモリ・コントローラのような別のコンポーネントを介してであってもよい。好ましくは、フェイルオーバー・メモリ・コントローラはインターコネクトに直接結合される。
本コンピュータ・システムは、ノードをモニタリングする(たとえばオペレーティング・システム・レベルでの)(中央)管理プロセスを有していてもよい。そのような状況では、管理プロセスがノード障害を検出できて、置換ノードを同定して、フェイルオーバー・メモリ・コントローラにアプリケーション・データを障害を起こしたノードのノード・メモリから置換ノードのノード・メモリにコピーするよう命令することが望ましい。管理プロセスがアプリケーションを再開することも好ましい。
発明実施形態において、本システムは、一つの補助電源または複数の補助電源を有しうる。システムにおけるノードの数および補助電源の数に依存して、各補助電源は単一のノードのためにまたは一群のノードのために設けられてもよい。
同様に、本システムは、一つのフェイルオーバー・メモリ・コントローラまたは複数のフェイルオーバー・メモリ・コントローラを有していてもよい。システム中のノードの数およびフェイルオーバー・メモリ・コントローラの数に依存して、各フェイルオーバー・メモリ・コントローラは単一のノードのためにまたは一群のノードのために設けられてもよい。
本発明の別の側面の実施形態によれば、それぞれが独自のノード・メモリおよびノード・メモリ・コントローラを有する、インターコネクトによって接続された複数のノードを有するコンピュータ・システム上で実行されるときに、障害を起こしたノードからの回復において使うためのフェイルオーバー・メモリ・コントローラであって、当該フェイルオーバー・メモリ・コントローラは障害を起こしたノードの前記メモリ・コントローラおよび/またはメモリに接続するよう動作可能であり;当該フェイルオーバー・メモリ・コントローラは、障害を起こしたノードのノード・メモリに記憶されているアプリケーション・データの、置換ノードのノード・メモリへの、前記インターコネクトを通じた転送を制御するよう構成されている、フェイルオーバー・メモリ・コントローラが提供される。
この側面は、前記コンピュータ・システムの一部として提供されてもよいフェイルオーバー・メモリ・コントローラに関係する。上記で概説したように、可能性としてはノード毎に一つで、複数のフェイルオーバー・メモリ・コントローラがあってもよい。発明実施形態では、その唯一の(またはそれぞれの)フェイルオーバー・メモリ・コントローラは、障害を起こしたノードを含む前記コンピュータ・システム内のノードの一部または全部、好ましくは該ノードの全部に関して自律的であってもよい。しかしながら、フェイルオーバー・メモリ・コントローラは、必要とされるときにノードの諸部分を制御する能力を有することができる。
本発明の別の側面の実施形態によれば、それぞれが独自のノード・メモリおよびノード・メモリ・コントローラを有する複数のノードと;それらのノード上でアプリケーションを実行するときに障害を起こしたノードからの回復において使うためのフェイルオーバー・メモリ・コントローラと;それらのノードおよび前記フェイルオーバー・メモリ・コントローラを接続するインターコネクトとを有するコンピュータ・システムであって、前記フェイルオーバー・メモリ・コントローラは障害を起こしたノードの前記メモリ・コントローラおよび/またはメモリに接続するよう動作可能であり;前記フェイルオーバー・メモリ・コントローラは、障害を起こしたノードのノード・メモリに記憶されているアプリケーション・データの、置換ノードのノード・メモリへの、前記インターコネクトを通じた転送を制御するよう構成されている、コンピュータ・システムが提供される。
前記フェイルオーバー・メモリ・コントローラは、好ましくは、障害を起こしたノードの前記メモリに、また障害を起こしたノードの前記メモリ・コントローラに直接接続される。たとえば前記ノード・メモリ・コントローラが前記ノード・メモリを整合した(consistent)状態のままにし(ノード・メモリ・コントローラが障害を受けたことも考えられるので、これは可能であればである)、次いで前記フェイルオーバー・コントローラに制御を渡すことを保証するためである。
前記コンピュータ・システムはHPCシステムまたはインターコネクトによって接続された分散したメモリおよびノードをもつ他の任意のコンピュータ・システムであってもよい。
コンピュータ・システム実施形態によれば、フェイルオーバー・メモリ・コントローラは、ノードの電力およびインターコネクト接続とは別個であってもなくてもよい、電力接続およびインターコネクト接続を有していてもよい。好ましくは、フェイルオーバー・メモリ・コントローラは、ノード電力およびインターコネクト接続とは別個の電力接続および/またはインターコネクト接続を有する。これは、フェイルオーバー・メモリ・コントローラのより多くの自律性を許容する。好ましい発明実施形態では、フェイルオーバー・メモリ・コントローラへの電源(これは前記補助電源と同じであってもよいが必ずしもそうでなくてもよい)は、すべてのノードの動作状態と独立であり、よって、その後電力を供給するために、いずれか特定のノードがいまだ動作しているかどうかには依拠しない。たいていの場合、フェイルオーバー・メモリ・コントローラは、コンピュータ・システムの残りの部分と、最終的には同じ電源を使ってもよい。発明実施形態は、システム全体が電力を失う状況において使われるよう特に設計されているのではない。
本発明の別の側面の実施形態によれば、フェイルオーバー・メモリ・コントローラおよびそれぞれノード・メモリを含む複数のノードを有するコンピュータ・システム上で走るデーモン(ユーザー制御のもとでではなくバックグラウンド・プロセスとして実行されるコンピュータ・プログラム)であって、前記複数のノードおよびフェイルオーバー・メモリ・コントローラはみなインターコネクトによって接続されており、当該デーモンは前記ノード上でのアプリケーションの実行をモニタリングし、当該デーモンはノード障害を検出し、置換ノードを同定し、フェイルオーバー・メモリ・コントローラに、障害を起こしたノードのノード・メモリから置換ノードのノード・メモリに前記インターコネクトを通じてアプリケーション・データをコピーするよう命令する、デーモンが提供される。
事実上、このデーモンは、先述した管理プロセスを提供できる。よって、本デーモンは、オペレーティング・システムの一部として自動的に実行されうる。
さらに一般的なプログラム側面によれば、分散コンピュータ・システムのようなコンピューティング装置にロードされたときに該コンピューティング装置を、上記の方法定義のいずれかまたはその任意の組み合わせに基づく方法段階を実行するよう構成するプログラムが提供される。
本発明の種々の側面の任意のものの特徴およびサブ特徴は自由に組み合わされてもよい。たとえば、フェイルオーバー・メモリ・コントローラおよび/またはコンピュータ・システムの好ましい実施形態は、方法の一つまたは複数の好ましい特徴に対応する機能を組み込むよう構成されてもよい。
本発明は、コンピュータ・ハードウェア、ファームウェア、ソフトウェアまたはそれらの組み合わせにおいて実装されることができる。実施形態は、コンピュータ・プログラムまたはコンピュータ・プログラム・プロダクト、すなわち情報担体において、たとえば非一時的な機械可読記憶デバイスにおいてまたは伝搬する信号において有体に具現されたコンピュータ・プログラムとして実装されることができる。
コンピュータ・プログラムは、コンピュータ・プログラム部分または二つ以上のコンピュータ・プログラムの形であることができ、コンパイル型またはインタープリタ型言語を含む任意の形のプログラミング言語で書くことができ、ライブラリ、スタンドアローン・プログラムとしてまたはモジュール、コンポーネント、サブルーチンまたはデータ処理環境における使用に好適な他のユニットとしてを含め、任意の形で展開できる。
本発明の方法段階は、入力データに対して作用して出力を生成することによって本発明の機能を実行するようコンピュータ・プログラムを実行するプログラム可能なプロセッサによって実行されることができる。
本発明は個別的な実施形態を使って記述されている。他の実施形態が付属の請求項の範囲内である。たとえば、本発明の段階は、異なる順序で実行され、それでいて望ましい結果を達成することができる。
好ましい実施形態に基づく装置は、ある種の機能を実行するよう構成される、動作可能であるまたは配置されるものとして記述される。この構成または配置は、ハードウェアまたはミドルウェアまたは他の任意の好適なシステムの使用によってであることができる。好ましい実施形態では、構成または配置はソフトウェアによる。
本発明についてこれから、図面に示される個別的な限定しない実施形態を参照しつつ説明する。
障害を起こしたノードの置換を示す概略図である。 本発明の一般的な実施形態を描くフローチャートである。 発明実施形態に基づく復元方法の概観である。 aは従来技術のノード障害回復のフローチャートであり、bは発明実施形態に基づく障害を起こしたノードの回復のフローチャートである。 発明実施形態に基づく、置換ノードへのデータの移動を示す概略図である。 発明実施形態に基づく、ノード中のコンポーネントおよび該ノードから出るリンクの概略的なレイアウトを示す図である。
図2は、一般的な発明実施形態を表わすフローチャートである。ステップS10において、計算ノードがアプリケーションを実行する。ステップS20において、アプリケーション・データが生成され、アプリケーションの最も最近の状態がノード・メモリに記憶される。ステップS30においてノードが障害を起こす場合、フェイルオーバー・メモリ・コントローラがステップS40において、障害を起こしたノードのノード・メモリを制御する。最後に、フェイルオーバー・メモリ・コントローラは、ステップS50において、障害を起こしたノードのメモリから置換ノードのメモリにデータをコピーする。
ファイルオーバー・メモリ・コントローラは故障後に使われるだけなので、アプリケーション・データは、データ保存のような冗長なタスクを実行することなく、障害を起こしたノードから回復される。こうして、本方法は、事後反応的なものである。さらに、単一のフェイルオーバー・メモリ・コントローラが、必要であれば複数のノード上のメモリと対話することができる。発明実施形態は、アプリケーション・データ全体をあるノードから別のノードにコピーすることによって、並列に実行しているアプリケーションにおける予期されない障害に対応することができる。
発明実施形態において提案される方法は、コンピュータ・システムにフェイルオーバー・メモリ・コントローラを追加することに関わる。この部分は、一つまたは複数のノード内または各ノード内のメモリ・コントローラの機能と重複することができる。これは、フェイルオーバー・メモリ・コントローラに電力を供給し、障害を起こしたノードのメモリへの電力を維持し、それにより該メモリ内のデータが回復され、次いで置換ノードに転送されることを許容する補助/バックアップ電源に取り付けられてもよい。ノードの障害管理プロセスが提供されてもよい。たとえば、一つのノード上での障害に続いて、管理プロセスが障害を検出し、置換ノードを同定し、フェイルオーバー・メモリ・コントローラに、障害を起こしたノードのメモリに接続してその内容を置換ノードのメモリに直接コピーするよう指示する。これは、(標準的なチェックポイント化に比べ)障害後にアプリケーションを改めて初期化するために必要とされる時間を短縮し、繰り返さなければならない計算の量を最小限にする(プロセッサ・レジスタ内のデータは回復されないので、少量の計算はいまだ繰り返される必要がある)。
置換ノードが割り当てられることのできる二つの主要な方法がある。第一に、アプリケーションは、実際に必要とするより多くのノード(可能性としては、余剰な10%の「スペア」ノード)が割り当てられた状態で立ち上げられることができる。その際、アプリケーションを走らせているノードの一つにおいて障害が検出される(アプリケーション自身によって、あるいは何らかのモニタリング・ソフトウェア・フレームワーク、たとえば前記管理プロセスを通じて)場合、スペア・ノードがリザーブされており、待っていてくれる。
あるいはまた(可能性としては好ましいことに)、システム・ジョブ・スケジューラが、任意の走っているアプリケーションに割り当てられることのできるスペア・ノードのプールを保持することができる。その場合、ノード障害の検出に続いて、アプリケーション(またはモニタリング・フレームワーク)はジョブ・スケジューラに接触し、スペア・ノードの一つへのアクセスを要求する。このシナリオでは、ジョブ・スケジューラは、新しいジョブが実行を始める際にスペア・ノードの十分大きなプールが利用可能なままであることを保証することを受け持つ。
図3は、だめになったノードからの回復のための方法の具体的な実施形態を示している。図3は、コンピュータ・システム10内の多くのノード20のうちの二つを示している。障害を起こした(またはだめになった)ノードは、左側にノード20Aとして示されており、新しい/置換ノードは右側にノード20Bとして示されている。各ノードはメモリ60およびメモリ・コントローラ50を含む。他のノード部分は当業者に既知であり、図示していない。バッテリー40およびフェイルオーバー・メモリ・コントローラ30が両ノードとは別個に、可能性としては同じ物理的支持体の上に設けられている。バッテリーは障害を起こしたノード20Aのメモリおよびフェイルオーバー・メモリ・コントローラ30にリンクされて示されている。バッテリー40が置換ノード20Bのメモリ60にリンクされる必要はない。そのノードはいまだ電源に接続されているからである。フェイルオーバー・メモリ・コントローラ30は、ネットワーク/インターコネクトを通じて置換ノード20Bのメモリ60にもリンクされている。
よって、フェイルオーバー・メモリ・コントローラおよびバッテリーは、コンピュータ・システムにおいて追加的な部分である。ノード障害の場合、バッテリーが、障害を起こしたノード上のメモリに電力を供給し、フェイルオーバー・メモリ・コントローラ(やはりバッテリーによって電力を受ける)がそのメモリの内容を回復し、障害を起こしたノードの代わりとなることが意図されている新しいノードに転送する。マネージャ70がこのプロセス(障害を起こしたノードを同定し、フェイルオーバー・メモリ・コントローラを障害を起こしたノードに向け、メモリがどこにコピーされるべきかを指定する)を制御する。
図4のaおよびbのフローチャートは、回復のない従来技術の障害を起こしたノードと、メモリの内容を新しいホスト・ノードに転送する発明実施形態のフェイルオーバー・メモリ・コントローラを使うノードの回復とを示している。
回復が提供されない場合、図4のaのように、アプリケーションはS110において開始され、ステップS120においてノード障害があり、ステップS130において、障害を起こしたノード上のメモリの内容はアプリケーションにとって失われる。
図4のbでは、ファイルオーバー・メモリ・コントローラがデータを回復するために使われる。ステップS210において開始したのちすぐ、アプリケーションは、ステップS220において、ノード・メモリのどの部分を使っているか(あるいは等価なことだが、どの部分が他の使用のために予約されていて、アプリケーションのために利用可能でないか)を登録することが必要である。これは、CPU上の全メモリのいくつかの部分は他のプロセス、たとえばオペレーティング・システム(OS)よって使用されるからである。等価な諸プロセスが置換ノード上で走っている可能性が高く、それらのプロセスが使っているメモリを上書きすることは望ましくないであろう(それは、新たなノード上で問題を引き起こす可能性が高く、可能性としては新たなノードまで故障させうる)。このように、アプリケーションによって直接使用されているメモリのみが、障害後に転送されるべきであり、よってこれが早い段階において登録されることが必要である。
この登録に続いて、アプリケーションは、ノード障害S230があるまで走り続ける。その間、マネージャ・デーモンが各ノードの健全性をモニタリングする(これを行なうためのデーモンはすでに存在しており、さらなる説明はここでは割愛する)。ステップS240における障害の検出に続いて、マネージャはステップS250において(障害を起こしたノードの代わりとするために)新しいホスト・ノードをアプリケーションに割り当て、そのノード上で当該アプリケーションをスタートアップするプロセスを開始し(S270)、フェイルオーバー・メモリ・コントローラに通知する(S260)。通知は、他の動作と並列であることができる。その間、アプリケーションは、残りの諸ノード上で継続されることができる(ただし、実行は最終的には、障害を起こしたノードからのデータを待って同期点においてホールドされる可能性が高い)。復元ステップS280では、障害を起こしたノードのメモリに対して電力が補助電源によって維持され、フェイルオーバー・メモリ・コントローラは前に登録されたメモリのセクションからのデータをコピーし、次いで、置換ノード上のメモリに直接転送する(新しいノード上のメモリ・コントローラの通知を含む)。ひとたびメモリが置換ノードに成功裏にコピーされ終わったら、管理デーモンはこのノード上で実行を再開することができる。
フェイルオーバー・コントローラは一つまたは複数のノードを受け持つことができる。上記のプロセスは、フェイルオーバー・メモリ・コントローラが、受け持ちの各ノード上のメモリおよびメモリ・コントローラに直接接続されることおよびネットワークへのアクセスをもつことを要求する。バッテリーは、ノード上のメモリに接続される必要があり(だが必ずしもメモリ・コントローラに接続される必要はない)、フェイルオーバー・メモリ・コントローラのネットワーク接続に電力を与えてもよい。
図5は、障害を起こしたノード20A上のメモリ60から置換ノード20B上のメモリ60へのデータの移動を示している。アプリケーション・データのみが回復される(置換ノードは他のデータ、たとえばOSの、自分自身のインスタンスを有しているので)。この構成は、アプリケーションが、スタートアップ時に該アプリケーションによって使用されるメモリをフェイルオーバー・メモリ・コントローラに登録しておくことを必要とする。ただし、他の方法論があるまたは該アプリケーションにとって利用可能なメモリの設定された部分がある場合にはこの限りではない。
フェイルオーバー・メモリ・コントローラは、各ノードに一対一の追加として(可能性としては同じ回路基板上だが、独自のネットワーク接続および電力供給を含め自律的に作用する)、あるいはそれぞれが一群のプロセッサの(可能性としてはシステム全体の)メモリの回復を受け持つ当該システム内の(一つまたは複数の)別個の諸コンポーネントとして実装されることができる。発明実施形態は、これらの可能性のどれでも同じようにうまく機能する。
図6は、システムのコンポーネント間の物理的な関係を描いている(従来技術に対する相違は太く示されている)。この図は、障害を起こしたノード、管理デーモンおよび新しいノードを示している。
障害を起こした(または古い)ノードはメモリ・コントローラ50と、メモリ60と、CPU 80と、ハードディスクドライブ(HDD)90とを、ネットワーク・コネクタ100を介した外部接続とともに有する。このノードはフェイルオーバー・メモリ・コントローラ30およびバッテリー40をも含んでいる。フェイルオーバー・メモリ・コントローラ30はメモリ・コントローラ50に直接接続され、バッテリー40はメモリ60およびフェイルオーバー・メモリ・コントローラ30に直接接続されている。ネットワーク接続100は、CPU 80およびフェイルオーバー・メモリ・コントローラ30の管理デーモン70への接続を許容する。
太線内のバッテリーおよびフェイルオーバー・メモリ・コントローラは古いノード内に位置しているように示されているが、そうでなくてもよい。フェイルオーバー・メモリ・コントローラおよびバッテリーは代替的に、システム内の他のところに収容されることもでき(ネットワークに接続されており、ノードのメモリにアクセスするためにCPUおよびメモリ・コントローラをバイパスできる限り)、一つのフェイルオーバー・メモリ・コントローラが二つ以上のノード上のメモリを受け持っていてもよい。
発明実施形態は、次の利点の一部または全部をもちうる。
・アプリケーションの最も最近の可能な状態(標準的なチェックポイントが使われる場合の過去の何らかの距離のところからのバージョンではなく)が回復されるので、ノードの障害後に繰り返される必要のある計算の量が非常に著しく軽減される。
・解における正確さが失われない。これに対し、障害を起こしたノード上で解を生き残った解から補間すると、誤差が増す結果となりうる。
まとめると、好ましい発明実施形態によれば、システム内の処理ユニットから自律的に機能し、それらの処理ユニットのメモリにアクセスできるフェイルオーバー・メモリ・コントローラが最も重要な区別する技術的特徴である。故障したノード上のメモリに電力を供給するためのバッテリーまたは他の補助電源の使用も区別する技術的特徴である。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
インターコネクトによって接続された複数のノードを有するコンピュータ・システムにおいて障害を起こしたノードのメモリからアプリケーション・データを回復し、該アプリケーション・データを置換ノードに書き込む方法であって、
前記コンピュータ・システムのノードがアプリケーションを実行し、該アプリケーションはアプリケーション・データを生成し、該アプリケーションの最も最近の状態をノード・メモリに記憶し;
前記ノードが障害を起こし;
前記障害を起こしたノードのノード・メモリはその後、フェイルオーバー・メモリ・コントローラを使って制御され;
前記フェイルオーバー・メモリ・コントローラは前記アプリケーション・データを前記障害を起こしたノードのノード・メモリから前記置換ノードのノード・メモリに前記インターコネクトを通じてコピーする、
方法。
(付記2)
前記アプリケーションが走っており、前記ノード障害の前に、前記アプリケーションはノード・メモリの一部を、前記障害を起こしたノードおよび/または前記置換ノードのノード・メモリにおいて前記アプリケーションによって利用可能または利用不能であると登録する、
付記1記載の方法。
(付記3)
前記アプリケーションが前記一部を前記フェイルオーバー・メモリ・コントローラに登録する、付記2記載の方法。
(付記4)
前記障害を起こしたノードのノード・メモリが前記障害後に補助電力を供給され、補助電源は前記フェイルオーバー・メモリ・コントローラによって制御される、付記1または2記載の方法。
(付記5)
前記補助電源が、前記フェイルオーバー・メモリ・コントローラと一緒に設けられたバッテリーの形である、付記1ないし4のうちいずれか一項記載の方法。
(付記6)
前記補助電源が、前記障害の前およびあとに前記フェイルオーバー・メモリ・コントローラに給電する、付記1ないし5のうちいずれか一項記載の方法。
(付記7)
前記補助電源が、前記フェイルオーバー・メモリ・コントローラのインターコネクト接続に給電する、付記1ないし6のうちいずれか一項記載の方法。
(付記8)
前記補助電力は、前記障害を起こしたノードのプロセッサまたはノード・メモリ・コントローラのような別のコンポーネントを介してではなく、前記ノード・メモリに直接供給される、付記1ないし7のうちいずれか一項記載の方法。
(付記9)
前記フェイルオーバー・メモリ・コントローラは、前記障害を起こしたノードのプロセッサまたはノード・メモリ・コントローラのような別のコンポーネントを介してではなく、前記インターコネクトに直接結合される、付記1ないし8のうちいずれか一項記載の方法。
(付記10)
前記コンピュータ・システムの管理プロセスがノードをモニタリングし、前記ノード障害を検出し、前記置換ノードを同定し、前記フェイルオーバー・メモリ・コントローラに前記アプリケーション・データを前記障害を起こしたノードのノード・メモリから前記置換ノードのノード・メモリにコピーするよう命令する、付記1ないし9のうちいずれか一項記載の方法。
(付記11)
前記管理プロセスがまた、前記置換ノード上の前記アプリケーションを再開する、付記10記載の方法。
(付記12)
補助電源および/またはフェイルオーバー・メモリ・コントローラが単一のノードのためにまたは一群のノードのために設けられる、付記1ないし11のうちいずれか一項記載の方法。
(付記13)
それぞれが独自のノード・メモリおよびノード・メモリ・コントローラを有する、インターコネクトによって接続された複数のノードを有するコンピュータ・システム上でアプリケーションを走らせているときに、障害を起こしたノードからの回復において使うためのフェイルオーバー・メモリ・コントローラであって、
当該フェイルオーバー・メモリ・コントローラは前記障害を起こしたノードの前記メモリ・コントローラおよび/またはメモリに接続するよう動作可能であり;
当該フェイルオーバー・メモリ・コントローラは、前記障害を起こしたノードのノード・メモリに記憶されているアプリケーション・データの、置換ノードのノード・メモリへの、前記インターコネクトを通じた転送を制御するよう構成されている、
フェイルオーバー・メモリ・コントローラ。
(付記14)
前記フェイルオーバー・メモリ・コントローラは、前記コンピュータ・システム内のノードから自律的である、付記13記載のフェイルオーバー・メモリ・コントローラ。
(付記15)
それぞれが独自のノード・メモリおよびノード・メモリ・コントローラを有する複数のノードと;
それらのノード上でアプリケーションを実行するときに障害を起こしたノードからの回復において使うためのフェイルオーバー・メモリ・コントローラと;
それらのノードおよび前記フェイルオーバー・メモリ・コントローラを接続するインターコネクトとを有するコンピュータ・システムであって、
前記フェイルオーバー・メモリ・コントローラは障害を起こしたノードの前記メモリ・コントローラおよび/またはメモリに接続するよう動作可能であり;
前記フェイルオーバー・メモリ・コントローラは、前記障害を起こしたノードのノード・メモリに記憶されているアプリケーション・データの、置換ノードのノード・メモリへの、前記インターコネクトを通じた転送を制御するよう構成されている、
コンピュータ・システム。
(付記16)
前記フェイルオーバー・メモリ・コントローラが各ノードのために設けられる、
付記15記載のコンピュータ・システム。
(付記17)
前記フェイルオーバー・メモリ・コントローラは、ノードの電力およびインターコネクト接続とは別個の電力接続およびインターコネクト接続を有する、
付記15または16記載のコンピュータ・システム。
(付記18)
フェイルオーバー・メモリ・コントローラおよびそれぞれノード・メモリを含む複数のノードを有するコンピュータ・システム上で走るデーモンであって、前記複数のノードおよびフェイルオーバー・メモリ・コントローラはみなインターコネクトによって接続されており、
当該デーモンは前記ノード上でのアプリケーションの実行をモニタリングし、
当該デーモンはノード障害を検出し、置換ノードを同定し、前記フェイルオーバー・メモリ・コントローラに、前記障害を起こしたノードのノード・メモリから前記置換ノードのノード・メモリに前記インターコネクトを通じてアプリケーション・データをコピーするよう命令する、
デーモン。
S10 ノードがアプリケーションを実行
S20 アプリケーション・データを生成し、アプリケーションの最新の状態をノード・メモリに記憶
S30 ノード障害?
S40 フェイルオーバー・メモリ・コントローラが、障害を起こしたノードのノード・メモリを制御
S50 フェイルオーバー・メモリ・コントローラが、障害を起こしたノードのメモリから置換ノードのノード・メモリにデータをコピー
S110 アプリケーション開始
S120 ノード障害
S130 障害を起こしたノード上のメモリの内容はアプリケーションにとって失われる
S210 アプリケーション開始
S220 アプリケーションがメモリをフェイルオーバー・メモリ・コントローラに登録
S230 ノード障害
S240 ノード障害がデーモンによって検出される
S250 新たなホスト・ノードを開始
S260 フェイルオーバー・メモリ・コントローラを介してメモリを回復
S270 新しいホスト上でアプリケーションを開始
S280 復旧

20A ノード
20B 新しいノード
30 フェイルオーバー・メモリ・コントローラ
40 バッテリー
50 メモリ・コントローラ
60 メモリ
70 マネージャ(管理デーモン)
80 CPU
90 HDD
100 ネットワーク

Claims (19)

  1. インターコネクトによって接続された複数のノードを有するコンピュータ・システムにおいて障害を起こしたノードのメモリからアプリケーション・データを回復し、該アプリケーション・データを置換ノードに書き込む方法であって、
    前記コンピュータ・システムのノードがアプリケーションを実行し、該アプリケーションはアプリケーション・データを生成し、該アプリケーションの最も最近の状態をノード・メモリに記憶し;
    前記ノードが障害を起こし;
    前記障害を起こしたノードのノード・メモリはその後、フェイルオーバー・メモリ・コントローラを使って制御され;
    前記フェイルオーバー・メモリ・コントローラは前記アプリケーション・データを前記障害を起こしたノードのノード・メモリから前記置換ノードのノード・メモリに前記インターコネクトを通じてコピー
    前記アプリケーションが走っている間であって前記ノード障害の前に、前記アプリケーションは、前記障害を起こしたノードおよび/または前記置換ノードのノード・メモリにおいて前記アプリケーションによって利用可能または利用不能であるノード・メモリの一部を登録する、
    方法。
  2. 前記アプリケーションが、前記利用可能または利用不能であるノード・メモリの一部を登録することを、前記障害を起こしたノードが内部的に前記アプリケーションにメモリを割り当てた後に行なう、
    請求項1記載の方法。
  3. 前記アプリケーションが前記一部を前記フェイルオーバー・メモリ・コントローラに登録する、請求項2記載の方法。
  4. 前記障害を起こしたノードのノード・メモリが前記障害後に補助電力を供給され、補助電源は前記フェイルオーバー・メモリ・コントローラによって制御される、請求項1または2記載の方法。
  5. 前記補助電源が、前記フェイルオーバー・メモリ・コントローラと一緒に設けられたバッテリーの形である、請求項1ないし4のうちいずれか一項記載の方法。
  6. 前記補助電源が、前記障害の前およびあとに前記フェイルオーバー・メモリ・コントローラに給電する、請求項1ないし5のうちいずれか一項記載の方法。
  7. 前記補助電源が、前記フェイルオーバー・メモリ・コントローラのインターコネクト接続に給電する、請求項1ないし6のうちいずれか一項記載の方法。
  8. 前記補助電力は、前記障害を起こしたノードのプロセッサまたはノード・メモリ・コントローラのような別のコンポーネントを介してではなく、前記ノード・メモリに直接供給される、請求項1ないし7のうちいずれか一項記載の方法。
  9. 前記フェイルオーバー・メモリ・コントローラは、前記障害を起こしたノードのプロセッサまたはノード・メモリ・コントローラのような別のコンポーネントを介してではなく、前記インターコネクトに直接結合される、請求項1ないし8のうちいずれか一項記載の方法。
  10. 前記コンピュータ・システムの管理プロセスがノードをモニタリングし、前記ノード障害を検出し、前記置換ノードを同定し、前記フェイルオーバー・メモリ・コントローラに前記アプリケーション・データを前記障害を起こしたノードのノード・メモリから前記置換ノードのノード・メモリにコピーするよう命令する、請求項1ないし9のうちいずれか一項記載の方法。
  11. 前記管理プロセスがまた、前記置換ノード上の前記アプリケーションを再開する、請求項10記載の方法。
  12. 補助電源および/またはフェイルオーバー・メモリ・コントローラが単一のノードのためにまたは一群のノードのために設けられる、請求項1ないし11のうちいずれか一項記載の方法。
  13. それぞれが独自のノード・メモリおよびノード・メモリ・コントローラを有する、インターコネクトによって接続された複数のノードを有するコンピュータ・システム上でアプリケーションを走らせているときに、障害を起こしたノードからの回復において使うためのフェイルオーバー・メモリ・コントローラであって、
    当該フェイルオーバー・メモリ・コントローラは前記障害を起こしたノードの前記メモリ・コントローラおよび/またはメモリに接続するよう動作可能であり;
    当該フェイルオーバー・メモリ・コントローラは、前記障害を起こしたノードのノード・メモリに記憶されているアプリケーション・データの、置換ノードのノード・メモリへの、前記インターコネクトを通じた転送を制御するよう構成されており
    前記アプリケーションが走っている間であって前記ノード障害の前に、前記アプリケーションは、前記障害を起こしたノードおよび/または前記置換ノードのノード・メモリにおいて前記アプリケーションによって利用可能または利用不能であるノード・メモリの一部を登録する、
    フェイルオーバー・メモリ・コントローラ。
  14. 前記フェイルオーバー・メモリ・コントローラは、前記コンピュータ・システム内のノードから自律的である、請求項13記載のフェイルオーバー・メモリ・コントローラ。
  15. それぞれが独自のノード・メモリおよびノード・メモリ・コントローラを有する複数のノードと;
    それらのノード上でアプリケーションを実行するときに障害を起こしたノードからの回復において使うためのフェイルオーバー・メモリ・コントローラと;
    それらのノードおよび前記フェイルオーバー・メモリ・コントローラを接続するインターコネクトとを有するコンピュータ・システムであって、
    前記フェイルオーバー・メモリ・コントローラは障害を起こしたノードの前記メモリ・コントローラおよび/またはメモリに接続するよう動作可能であり;
    前記フェイルオーバー・メモリ・コントローラは、前記障害を起こしたノードのノード・メモリに記憶されているアプリケーション・データの、置換ノードのノード・メモリへの、前記インターコネクトを通じた転送を制御するよう構成されており
    前記アプリケーションが走っている間であって前記ノード障害の前に、前記アプリケーションは、前記障害を起こしたノードおよび/または前記置換ノードのノード・メモリにおいて前記アプリケーションによって利用可能または利用不能であるノード・メモリの一部を登録する、
    コンピュータ・システム。
  16. 前記フェイルオーバー・メモリ・コントローラが各ノードのために設けられる、
    請求項15記載のコンピュータ・システム。
  17. 前記フェイルオーバー・メモリ・コントローラは、ノードの電力およびインターコネクト接続とは別個の電力接続およびインターコネクト接続を有する、
    請求項15または16記載のコンピュータ・システム。
  18. フェイルオーバー・メモリ・コントローラおよびそれぞれノード・メモリを含む複数のノードを有するコンピュータ・システム上で走るデーモンであって、前記複数のノードおよびフェイルオーバー・メモリ・コントローラはみなインターコネクトによって接続されており、
    当該デーモンは前記ノード上でのアプリケーションの実行をモニタリングし、
    当該デーモンはノード障害を検出し、置換ノードを同定し、前記フェイルオーバー・メモリ・コントローラに、前記障害を起こしたノードのノード・メモリから前記置換ノードのノード・メモリに前記インターコネクトを通じてアプリケーション・データをコピーするよう命令
    前記アプリケーションが走っている間であって前記ノード障害の前に、前記アプリケーションは、前記障害を起こしたノードおよび/または前記置換ノードのノード・メモリにおいて前記アプリケーションによって利用可能または利用不能であるノード・メモリの一部を登録する、
    デーモン。
  19. 前記アプリケーションが前記複数のノードによって分散式に実行される、請求項1ないし12のうちいずれか一項記載の方法。
JP2014240195A 2014-04-25 2014-11-27 アプリケーション・データを回復する方法 Expired - Fee Related JP6398658B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP14165974.8A EP2937785B1 (en) 2014-04-25 2014-04-25 A method of recovering application data
EP14165974.8 2014-04-25

Publications (2)

Publication Number Publication Date
JP2015210812A JP2015210812A (ja) 2015-11-24
JP6398658B2 true JP6398658B2 (ja) 2018-10-03

Family

ID=50624447

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014240195A Expired - Fee Related JP6398658B2 (ja) 2014-04-25 2014-11-27 アプリケーション・データを回復する方法

Country Status (3)

Country Link
US (1) US9852033B2 (ja)
EP (1) EP2937785B1 (ja)
JP (1) JP6398658B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015016832A1 (en) 2013-07-30 2015-02-05 Hewlett-Packard Development Company, L.P. Recovering stranded data
US9785480B2 (en) 2015-02-12 2017-10-10 Netapp, Inc. Load balancing and fault tolerant service in a distributed data system
US20170046212A1 (en) * 2015-08-13 2017-02-16 Qualcomm Incorporated Reducing system downtime during memory subsystem maintenance in a computer processing system
US11223681B2 (en) 2020-04-10 2022-01-11 Netapp, Inc. Updating no sync technique for ensuring continuous storage service in event of degraded cluster state
US12282662B2 (en) 2022-08-29 2025-04-22 Hewlett Packard Enterprise Development Lp Chassis servicing and migration in a scale-up NUMA system
US20250355747A1 (en) * 2024-05-14 2025-11-20 Bank Of America Corporation Systems and methods for migrating application functionality using advanced computational models for data analysis and automated processing

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683314B2 (ja) * 1985-07-01 1994-10-19 株式会社日立製作所 呼情報救済方式
US5632013A (en) 1995-06-07 1997-05-20 International Business Machines Corporation Memory and system for recovery/restoration of data using a memory controller
US5708771A (en) 1995-11-21 1998-01-13 Emc Corporation Fault tolerant controller system and method
US5724501A (en) * 1996-03-29 1998-03-03 Emc Corporation Quick recovery of write cache in a fault tolerant I/O system
US6360331B2 (en) * 1998-04-17 2002-03-19 Microsoft Corporation Method and system for transparently failing over application configuration information in a server cluster
US6898727B1 (en) * 2000-03-22 2005-05-24 Emc Corporation Method and apparatus for providing host resources for an electronic commerce site
US6675316B1 (en) * 2000-07-12 2004-01-06 International Business Machines Corporation Method and system for recovery of the state of a failed CPU/cache/memory node in a distributed shared memory system
US6952792B2 (en) * 2002-03-19 2005-10-04 International Business Machines Corporation Failover system for storage area network
US7028154B2 (en) * 2002-06-18 2006-04-11 Hewlett-Packard Development Company, L.P. Procedure to reduce copy time for data backup from short-term to long-term memory
US7085886B2 (en) 2003-05-28 2006-08-01 International Buisness Machines Corporation Autonomic power loss recovery for a multi-cluster storage sub-system
US7293197B2 (en) * 2003-08-13 2007-11-06 Micro Memory Llc Non-volatile memory with network fail-over
US7536506B2 (en) * 2004-06-21 2009-05-19 Dot Hill Systems Corporation RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage
US7337277B2 (en) * 2004-11-18 2008-02-26 International Business Machines Corporation Apparatus, system, and method for flushing cache data
JP4572138B2 (ja) * 2005-04-26 2010-10-27 Necインフロンティア株式会社 サーバ装置、サーバシステム、及びサーバシステムでの系切り換え方法
US8099627B1 (en) 2005-06-28 2012-01-17 Symantec Operating Corporation Persistent images of distributed shared memory segments and in-memory checkpoints
US7814065B2 (en) * 2005-08-16 2010-10-12 Oracle International Corporation Affinity-based recovery/failover in a cluster environment
US7533197B2 (en) 2006-11-08 2009-05-12 Sicortex, Inc. System and method for remote direct memory access without page locking by the operating system
US8055933B2 (en) * 2009-07-21 2011-11-08 International Business Machines Corporation Dynamic updating of failover policies for increased application availability
US8555105B2 (en) * 2010-04-12 2013-10-08 International Business Machines Corporation Fallover policy management in high availability systems
US9684573B2 (en) * 2010-04-29 2017-06-20 Veritas Technologies Llc Dismounting a storage volume
US9329952B2 (en) * 2010-12-07 2016-05-03 International Business Machines Corporation Reducing application downtime during failover
US9336103B1 (en) * 2014-04-02 2016-05-10 Veritas Us Ip Holdings Llc Using a network bubble across multiple hosts on a disaster recovery site for fire drill testing of a multi-tiered application

Also Published As

Publication number Publication date
JP2015210812A (ja) 2015-11-24
EP2937785A1 (en) 2015-10-28
US20150309893A1 (en) 2015-10-29
EP2937785B1 (en) 2016-08-24
US9852033B2 (en) 2017-12-26

Similar Documents

Publication Publication Date Title
JP6398658B2 (ja) アプリケーション・データを回復する方法
US8307363B2 (en) Virtual machine system, restarting method of virtual machine and system
US11704197B2 (en) Basic input/output system (BIOS) device management
US11226859B2 (en) Systems and methods for error recovery
US8219851B2 (en) System RAS protection for UMA style memory
US20160328229A1 (en) System and method of online firmware update for baseboard management controller (bmc) devices
US7007192B2 (en) Information processing system, and method and program for controlling the same
US9195553B2 (en) Redundant system control method
CN104836850A (zh) 一种实例节点管理的方法及管理设备
JP2009516277A (ja) 少なくとも2つのレジスタ付き処理ユニットを有するシステムにおいてエラーを除去する装置および方法
US10379931B2 (en) Computer system
CN108268302B (zh) 实现设备启动的方法和装置
US20150082085A1 (en) Multi-transactional system using transactional memory logs
CN105653405A (zh) 一种通用引导程序的故障处理方法及系统
EP2804105B1 (en) Method of improving fault tolerance in a computing system arranged to find a computational solution
CN116991637B (zh) 嵌入式系统的运行控制方法及装置、电子设备及存储介质
JP3022768B2 (ja) 仮想計算機システム
CN115378800A (zh) 无服务器架构分布式容错系统、方法、装置、设备及介质
US12554600B2 (en) Single voting processor architecture
US12197290B2 (en) Lockstep processor recovery for vehicle applications
JP7056057B2 (ja) 情報処理装置、情報処理方法、情報処理システム、及び、コンピュータ・プログラム
US20120233420A1 (en) Fault-tolerant system, memory control method, and computer-readable recording medium storing programs
US20070038849A1 (en) Computing system and method
Fu et al. Research on rtos-integrated tmr for fault tolerant systems
Lee et al. Reliable Software Distributed Shared Memory Using Page Migration

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180627

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: 20180807

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180820

R150 Certificate of patent or registration of utility model

Ref document number: 6398658

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees