(57)【要約】  様々な例示的実施形態は、以下の１つまたは複数を含む方法および関連するネットワークノードに関する：資源割り当て装置によってサーバハードウェアの故障を検出するステップ、サーバハードウェアを利用するように構成された第１のエージェント装置を識別するステップ、およびサーバハードウェア故障に応答して第１のエージェント装置の再構成をもたらすように少なくとも１つの処置をとるステップ。様々な実施形態は追加として以下の１つまたは複数を含む：サーバハードウェアを利用するように構成された第２のエージェント装置を識別するステップ、およびサーバハードウェア故障に応答して第２のエージェント装置の再構成をもたらすように少なくとも１つの処置をとるステップ。様々な実施形態は追加として以下の１つまたは複数を含む：資源割り当て装置によって、第１のエージェント装置とは異なる第２のエージェント装置からサーバハードウェアの故障の表示を受け取るステップ。
2014522052.tif 000002
【特許請求の範囲】
【請求項１】
サーバハードウェア故障の影響を軽減するために、サーバ資源を割り当てる資源割り当て装置によって行われる方法であって、
資源割り当て装置によってサーバハードウェアの故障を検出するステップ（４１０）と、
サーバハードウェアを利用するように構成された第１のエージェント装置を識別するステップ（４１５、４２０、４３５）と、
サーバハードウェア故障に応答して第１のエージェント装置の再構成をもたらすように、少なくとも１つの処置をとるステップ（４２５）と
を含む、方法。
【請求項２】
サーバハードウェアを利用するように構成された第２のエージェント装置を識別するステップ（４１５、４２０、４３５）と、
サーバハードウェア故障に応答して第２のエージェント装置の再構成をもたらすように、少なくとも１つの処置をとるステップ（４２５）と
をさらに含む、請求項１に記載の方法。
【請求項３】
サーバハードウェアの故障を検出するステップが、
資源割り当て装置によって、サーバハードウェアの故障の表示を第２のエージェント装置から受け取るステップであって、第２のエージェント装置は第１のエージェント装置とは異なる、受け取るステップ
を含む、請求項１に記載の方法。
【請求項４】
第１のエージェント装置のためにサーバハードウェア資源を割り当てるように、第２の資源割り当て装置に指示するステップを少なくとも１つの処置が含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
第２の資源割り当て装置に指示するステップが、インターネットを通じて第２の資源割り当て装置に指示メッセージを送出するステップを含む、請求項４に記載の方法。
【請求項６】
少なくとも１つの処置が、第１のエージェント装置の動作を中断するステップを含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
少なくとも１つの処置が、第１のエージェント装置に対してエラーをシミュレートするステップを含む、請求項１から６のいずれか一項に記載の方法。
【請求項８】
第１のエージェント装置に対してエラーをシミュレートするステップが、インターネットを通じて、エージェント装置に関連する装置にエラーメッセージを送出するステップを含む、請求項７に記載の方法。
【請求項９】
第１のエージェント装置定義を記憶するエージェント装置定義記憶装置（２３０）であって、第１のエージェント装置定義は第１のエージェント装置および関連するサーバハードウェア資源を識別する、エージェント装置定義記憶装置と、
サーバハードウェア資源の故障を検出するように構成されたハードウェア故障検出器（２５０）と、
エージェント装置定義に基づいて、サーバハードウェア資源を利用するように構成されたエージェント装置として、第１のエージェント装置を識別し、
サーバハードウェア故障に応答して第１のエージェント装置の再構成をもたらすように少なくとも１つの処置をとる
ように構成されたエージェント装置保護モジュール（２６０）と
を備える、資源割り当て装置（２００）。
【請求項１０】
エージェント装置定義記憶装置（２３０）が第２のエージェント装置定義を記憶し、第２のエージェント装置定義は第２のエージェント装置および関連するサーバハードウェア資源を識別し、
エージェント装置保護モジュール（２６０）が、
サーバハードウェア資源を利用するように構成されたエージェント装置として、第２のエージェント装置を識別し、
サーバハードウェア故障に応答して第２のエージェント装置の再構成をもたらすように少なくとも１つの処置をとる
ようにさらに構成された、請求項９に記載の資源割り当て装置（２００）。
【請求項１１】
第１のエージェント装置のためにサーバハードウェア資源を割り当てるように、第２の資源割り当て装置に指示することを少なくとも１つの処置が含む、請求項９から１０のいずれか一項に記載の資源割り当て装置。
【請求項１２】
第１のエージェント装置に関連する装置イメージを第２の資源割り当て装置に送出することを少なくとも１つの処置がさらに含む、請求項１０に記載の資源割り当て装置。
【請求項１３】
第２の資源割り当て装置に指示することにおいて、エージェント装置保護モジュールが、インターネットを通じて第２の資源割り当て装置に指示メッセージを送出する、請求項１０に記載の資源割り当て装置。
【請求項１４】
少なくとも１つの処置が、第１のエージェント装置の動作を中断することを含む、請求項９から１３のいずれか一項に記載の資源割り当て装置。
【請求項１５】
少なくとも１つの処置が、第１のエージェント装置に対してエラーをシミュレートすることを含む、請求項９から１４のいずれか一項に記載の資源割り当て装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される様々な例示的実施形態は、一般にシステム信頼性および可用性に関する。
【背景技術】
【０００２】
仮想化およびクラウドコンピューティングなどの技術の進歩は、これまでは専用およびスタンドアロンのハードウェアに関連した様々なアプリケーションの、共有ハードウェア資源をもたらす機械への移行を促進してきている。このいわゆる「サーバコンソリデーション」は、利用可能な資源のより十分な利用、したがって使用されていない資源に関連するコストの低減を可能にする。例えばこれまで少ししか利用されていなかったサーバを撤退させることによって、エネルギー消費、床面積、および他のサーバコストを低減することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしスタンドアロンサーバは他の利点をもたらす。例えばスタンドアロンサーバはハードウェア故障の強固な封じ込めをもたらし、アプリケーションに関連するハードウェアが故障した場合はそのアプリケーションのみに影響を及ぼし得る。しかしサーバコンソリデーションは、単一のハードウェア故障が、複数のアプリケーションに影響を及ぼし得る可能性を生ぜしめる。例えば４つのアプリケーションがＣＰＵを共有している場合に、そのＣＰＵがハードウェア故障を経験すると、４つすべてのアプリケーションが危険に曝され救済不能となり得る。
【課題を解決するための手段】
【０００４】
様々な例示的実施形態は、ハードウェア故障の影響を軽減するために、サーバ資源を割り当てる資源割り当て装置によって行われる方法に関し、方法は以下の１つまたは複数を含む：資源割り当て装置によってサーバハードウェアの故障を検出するステップ、サーバハードウェアを利用するように構成された第１のエージェント装置を識別するステップ、およびサーバハードウェア故障に応答して第１のエージェント装置の再構成をもたらすように少なくとも１つの処置をとるステップ。
【０００５】
様々な例示的実施形態は、以下の１つまたは複数を含む資源割り当て装置に関する：第１のエージェント装置定義を記憶するエージェント装置定義記憶装置であって、第１のエージェント装置定義が第１のエージェント装置および関連するサーバハードウェア資源を識別する、エージェント装置定義記憶装置、サーバハードウェア資源の故障を検出するように構成されたハードウェア故障検出器、およびエージェント装置定義に基づいて、サーバハードウェア資源を利用するように構成されたエージェント装置として第１のエージェント装置を識別し、サーバハードウェア故障に応答して第１のエージェント装置の再構成をもたらすように少なくとも１つの処置をとるように構成されたエージェント装置保護モジュール。
【０００６】
様々な例示的実施形態は、ハードウェア故障の影響を軽減するための命令で符号化された有形で非一時的な機械可読記憶媒体に関し、有形で非一時的な機械可読記憶媒体は以下の１つまたは複数を含む：資源割り当て装置によってサーバハードウェアの故障を検出するための命令、サーバハードウェアを利用するように構成された第１のエージェント装置を識別するための命令、およびサーバハードウェア故障に応答して第１のエージェント装置の再構成をもたらすように少なくとも１つの処置をとるための命令。
【０００７】
様々な例示的実施形態は、ハードウェア故障の影響を軽減するためのハイパーバイザによって行われる方法に関し、方法は以下の１つまたは複数を含む：ハイパーバイザによってサーバハードウェアの故障を検出するステップ、サーバハードウェアを利用するように構成された第１の仮想マシンを識別するステップ、およびサーバハードウェア故障に応答して第１のマシンの再構成をもたらすように少なくとも１つの処置をとるステップ。
【０００８】
様々な実施形態は追加として以下の１つまたは複数を含む：サーバハードウェアに関連する第２のエージェント装置を識別するステップ、およびサーバハードウェア故障に応答して第２のエージェント装置の再構成をもたらすように少なくとも１つの処置をとるステップ。
【０００９】
サーバハードウェアの故障を検出するステップが以下を含む様々な実施形態が述べられる：資源割り当て装置によって、第１のエージェント装置とは異なる第２のエージェント装置から、サーバハードウェアの故障の表示を受け取るステップ。
【００１０】
少なくとも１つの処置が、第１のエージェント装置のためにサーバハードウェア資源を割り当てるように第２の資源割り当て装置に指示するステップを含む様々な実施形態が述べられる。少なくとも１つの処置が、第１のエージェント装置に関連する装置イメージを第２の資源割り当て装置に送出するステップをさらに含む様々な実施形態が述べられる。第２の資源割り当て装置に指示するステップが、インターネットを通じて第２の資源割り当て装置に指示メッセージを送出するステップを含む様々な実施形態が述べられる。
【００１１】
少なくとも１つの処置が、第１のエージェント装置の動作を中断するステップを含む様々な実施形態が述べられる。
【００１２】
少なくとも１つの処置が、第１のエージェント装置に対してエラーをシミュレートするステップを含む様々な実施形態が述べられる。第１のエージェント装置に対してエラーをシミュレートするステップが、エージェント装置に関連する装置にインターネットを通じてエラーメッセージを送出するステップを含む様々な実施形態が述べられる。
【００１３】
様々な例示的実施形態をより良く理解するために添付の図面を参照する。
【図面の簡単な説明】
【００１４】
【図１ａ】共有ハードウェア資源をもたらすための例示のシステムを示す図である。
【図１ｂ】図１ａのいくつかの構成要素に対する代替の構成を示す図である。
【図１ｃ】図１ａのいくつかの構成要素に対する他の代替の構成を示す図である。
【図２】ハードウェア故障からエージェント装置を保護するための例示の資源割り当て装置を示す図である。
【図３】複数のエージェント装置定義を記憶するための例示のデータ構成を示す図である。
【図４】ハードウェア故障からエージェント装置を保護する例示の方法を示す図である。
【発明を実施するための形態】
【００１５】
理解を容易にするために、実質的に同じまたは同様な構造体、および／または実質的に同じまたは同様な機能を有する要素を示すために、同一の参照番号が用いられている。
【００１６】
上記に鑑みて、このような資源の故障から、ハードウェア資源を共有するエージェント装置を保護する方法を提供することが望ましい。具体的には、故障によってエージェント装置が影響を受けることになる可能性を最小にしながら、このようなエージェント装置の継続する動作を可能にすることが望ましい。次に図面を参照して、様々な例示的実施形態の広範な態様が開示される。
【００１７】
図１ａは、共有ハードウェア資源を実現するための例示のシステム１００ａを示す。例示のシステムは、複数のクライアント装置１１０ａ−ｃ、ネットワーク１２０、資源割り当て装置１３０ａ−ｂ、および複数のエージェント装置１４０ａ−ｄを含むことができる。資源割り当て装置１３０ａ−ｂ、およびエージェント装置１４０ａ−ｄは、１つまたは複数のクラウドコンピューティングインフラストラクチャの中に存在することができる。
【００１８】
クライアント装置１１０ａ−ｃはそれぞれ、ネットワーク１２０などのネットワークと通信することができる任意の装置を含むことができる。ここでは３つの装置が示されるが、例示のシステム１００ａは、より少ないまたは多い装置を含むことができる。さらに例示のシステム１００ａに参加するクライアント装置の数は、動作時に変化し得る。例えばクライアント装置１１０ａは例示のシステム１００ａへの参加を中止することができ、および／または他の２つのクライアント装置（図示せず）が同様な参加を開始することができる。
【００１９】
各クライアント装置１１０ａ−ｃは、パーソナルまたはラップトップコンピュータ、端末装置、サーバ、タブレット、無線電子メール装置、携帯電話、スマートフォン、テレビションセットトップボックス、またはネットワーク１２０を通じて他の装置と通信することができる任意の他の装置とすることができる。各クライアント装置１１０ａ−ｃは、種々の理由により例示のシステム１００ａに参加することができる。例えばクライアント装置１１０ａはシンクライアントとすることができ、クライアント装置１１０ａの通常の動作に関するほとんどまたはすべての処理を行うのに、例示のシステム内の他の資源に依存することができる。他の例としてクライアント装置１１０ｂは、ほとんどのタスクを独立して行うことができるパーソナルコンピュータとすることができ、例えば大きな音楽または電子ブックコレクションなどのデータを記憶し、取り出すために例示のシステム１００ａ内の他の資源に依存することができる。他の例としてクライアント装置１１０ｃは、他の装置（図示せず）から要求を受け取り、応答するサーバとすることができる。クライアント装置１１０ｃは、クライアント装置１１０ｃが、効率、応答時間、またはサーバ負荷を計量する他の計量の何らかの基準内で処理するのに、このような要求が到来する速度が高すぎる時に、このような要求の一部分を処理するために例示のシステム１００ａ内の他の資源に依存することができる。
【００２０】
ネットワーク１２０は、例示のシステム１００ａ内の他の装置の間の通信をもたらすようになされた装置または一群の装置とすることができる。したがってネットワーク１２０は、適切な宛先にパケットを転送するための複数のルータおよび／またはスイッチを含むことができる。様々な実施形態ではネットワーク１２０は、１つまたは複数の２Ｇ、３Ｇ、および／または４Ｇシステム、および／または他の無線システムを含むことができる。さらに様々な実施形態ではネットワーク１２０は、インターネット、および／または１つまたは複数のローカルエリアネットワーク（ＬＡＮ）などの有線ネットワークを含むことができる。
【００２１】
資源割り当て装置１３０ａ−ｂはそれぞれ、エージェント装置１４０ａ−ｄを管理する装置とすることができる。例えば資源割り当て装置１３０ａはエージェント装置１４０ａ−ｂを管理することができ、資源割り当て装置１３０ｂはエージェント装置１４０ｃ−ｄを管理することができる。このようなエージェント装置１４０ａ−ｄの管理において、資源割り当て装置１３０ａ−ｂは各エージェント装置１４０ａ−ｄに対する共有ハードウェア資源の割り振りおよび／または実施を行うことができる。例えば資源割り当て装置１３０ａは、エージェント装置１  １４０ａが第１のＣＰＵ上の処理時間の２０％を使用でき、エージェント装置Ｍ  １４０ｂは同じＣＰＵの処理時間の１０％を使用できることを確実にすることができる。したがって様々な実施形態では資源割り当て装置１３０ａ−ｂは、それぞれハイパーバイザを含むことができる。資源割り当て装置１３０ａ−ｂは、例えば要求および応答メッセージ経路設定、資源予約、負荷バランス、使用量計量、および／または課金などの多数の追加の機能を行うことができる。例示のシステム１００ａは２つの資源割り当て装置１３０ａ−ｂを含むが、様々な実施形態はより少ないまたは多い資源割り当て装置（図示せず）を含み得ることに留意されたい。
【００２２】
エージェント装置１４０ａ−ｄはそれぞれ、１つまたは複数のクライアント装置１１０ａ−ｃと共に動作するように構成された装置とすることができる。各エージェント装置１４０ａ−ｄは、１つまたは複数のプロセッサ、メモリ、記憶装置、および／またはネットワークインターフェースなどのハードウェア資源を含むことができる。様々な実施形態ではエージェント装置１４０ａ−ｄは、このようなハードウェア資源を他のエージェント装置１４０ａ−ｄ、および／または資源割り当て装置１３０ａ−ｂと共有することができる。例えばエージェント装置１  １４０ａは、資源割り当て装置１３０ａおよびエージェント装置Ｍ  １４０ｂと、ＣＰＵを共有することができる。このようなハードウェア資源は１つまたは複数の物理サーバ（図示せず）の中に配置することができる。様々な実施形態では１つまたは複数のエージェント装置１４０ａ−ｄは、仮想マシンを含むことができる。
【００２３】
いくつかの実施形態によれば資源割り当て装置１３０ａ−ｂは、それらが管理するエージェント装置１４０ａ−ｄと同じ物理サーバ上に一緒に存在することができる。例えば資源割り当て装置１３０ａおよびエージェント装置１４０ａ−ｂは、単一の物理サーバ１５０ａ上に一緒に存在することができる。このような実施形態では資源割り当て装置１３０ａはハイパーバイザを含むことができ、エージェント装置１４０ａ−ｂはそれぞれ仮想装置を含むことができ、それらのすべては単一の物理サーバ上で実行することができる。同様に資源割り当て装置１３０ｂおよびエージェント装置１４０ｃ−ｄは、別の物理サーバ１６０ａ上に一緒に存在することができる。しかし本明細書で述べられる方法は、様々な代替構成に応用できることが明らかであろう。例えば図１ｂに示されるような代替構成１００ｂは、資源割り当て装置１３０ａは第１の物理サーバ１５０ｂ上に存在することができ、エージェント装置１４０ａ−ｂはすべて第２の物理サーバ１５２ｂ上に存在できることを示している。他の代替として図１ｃに示されるような代替構成１００ｃは、資源割り当て装置１３０ｃおよびエージェント装置１４０ａ−ｂは、それぞれ独立の物理サーバ１５０ｃ、１５２ｃ、１５４ｃ上に存在できることを示す。様々な追加の構成は、当業者には明らかであろう。
【００２４】
図１ａに戻ると資源割り当て装置１３０ａ−ｂは、ハードウェア故障を検出するとすぐに、エージェント装置１４０ａ−ｄをプロアクティブに保護するように構成することができる。資源割り当て装置１３０ａ−ｂは、例えば割り込みを受け取ること、ハードウェア装置から１つまたは複数ハートビート応答信号の受け取りに失敗すること、１つまたは複数のステータスレジスタを読み出すこと、無応答のハードウェア装置を識別すること、および／またはハードウェア装置にアクセスを試みたときにエラー表示を受け取ることなどの多数の方法によって、このようなハードウェア故障を検出することができる。当業者には、ハードウェア故障検出のための多数の追加の方法が明らかになるであろう。
【００２５】
ハードウェア故障を検出するとすぐに資源割り当て装置１３０ａ−ｂは最初に、故障によって潜在的に影響を受け得るエージェント装置を識別することができる。例えば資源割り当て装置１３０ａ−ｂは、どのエージェント装置が現在、故障したハードウェア装置の少なくとも割り当て分を利用するように割り振られているかを判断することができる。様々な代替実施形態では、資源割り当て装置によって管理されるすべてのエージェント装置１４０ａ−ｄは、潜在的に影響を受けると想定することができる。それぞれの潜在的に影響を受けるエージェント装置１４０ａ−ｄに対して、資源割り当て装置１３０ａ−ｂは、例えば別の資源割り当て装置１３０ａ−ｂへのエージェント装置１４０ａ−ｄのライブマイグレーションを行うこと、エージェント装置１４０ａ−ｄの動作を中断すること、および／またはエージェント装置１４０ａ−ｄに対してハードウェアエラーをシミュレートすることなどの、エージェント装置１４０ａ−ｄをハードウェア故障から保護するためのステップをとることができる。
【００２６】
ライブマイグレーションの場合は、ハードウェア故障を検出した資源割り当て装置１３０ａ−ｂは、１つまたは複数エージェント装置を別の資源割り当て装置１３０ａ−ｂに移動するように、別の資源割り当て装置１３０ａ−ｂと通信することができる。例えばハードウェアエラーを検出し、それがエージェント装置１  １４０ａに影響を与え得ると判断するとすぐに、資源割り当て装置１３０ａはエージェント装置１４０ａの代わりとなるための新しいエージェント装置（図示せず）をインスタンス化するように、資源割り当て装置１３０ｂに指示することができる。資源割り当て装置１３０ａはさらに、エージェント装置１  １４０ａが最近保持していたのと同じプロセッサ状態、メモリ内容、および／または他の状態を用いて、新しいエージェント装置を生成できるように、資源割り当て装置１３０ｂに装置イメージを送出し、それによって新しいハードウェアを利用するためのエージェント装置１４０ａのマイグレーションの影響を最小にすることができる。
【００２７】
動作を中断する、またはエラーをシミュレートする場合は、資源割り当て装置１３０ａ−ｂは何らかの他の構成要素に、エラーからエージェント装置１４０ａ−ｄを分離するようにさらなる処置をとるように促すことができる。例えば資源割り当て装置１３０ａは、ハードウェア故障を検出しそれに応答して、その旨を示すメッセージをクライアント装置１１０ａ（クライアント装置１１０ａがエージェント装置１  １４０ａに関連すると仮定して）に送出することにより、エージェント装置１  １４０ａのエラーをシミュレートすることができる。その後にクライアント装置１１０ａは、例えば要求をエージェント装置Ｍ＋１  １４０ｃなどの冗長なエージェント装置に方向付けるなどの、エラーを処理するための他の技法に依存することができる。
【００２８】
他の例では資源割り当て装置１３０ａは、ハードウェア故障を検出し、エージェント装置Ｍ  １４０ｂが潜在的に影響を受けると判断することができる。それに応答して資源割り当て装置１３０ａは、エージェント装置Ｍ  １４０ｂの動作を中断することができる。その後に例えばクライアント装置１１０ｃまたはエージェント装置Ｍ＋Ｎ  １４０ｄなどの別の装置は、エージェント装置Ｍ  １４０ｂとの通信を試みるが、応答を受け取れないことになり得る。その後にこの別の装置は、無応答のエージェント装置１４０ｂを処理するためのステップをとることができる。したがってこれらの方法を使用することよって資源割り当て装置１３０ａは、エージェント装置がハードウェアエラーによって実際に影響を受ける前に、他の装置のエラー処理機能を活動化することができる。
【００２９】
図２は、ハードウェア故障からエージェント装置を保護するための、例示の資源割り当て装置２００を示す。資源割り当て装置２００は、システム１００ａの資源割り当て装置１３０ａ−ｂの一方または両方に対応することができる。資源割り当て装置２００は、ネットワークインターフェース２１０、エージェント装置マネージャ２２０、エージェント装置定義記憶装置２３０、エージェント装置インターフェース２４０、ハードウェア故障検出器２５０、およびエージェント装置保護モジュール２６０を含むことができる。
【００３０】
ネットワークインターフェース２１０は、少なくとも１つの他の装置と通信するように構成された、ハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能命令を含む、インターフェースとすることができる。例えばネットワークインターフェース２１０は、クライアント装置、エージェント装置、および／または他の資源割り当て装置と通信することができる。したがってネットワークインターフェース２１０は、インターネットなどのネットワークを通じて通信するための１つまたは複数のイーサネット（登録商標）インターフェースを含むことができる。さらにネットワークインターフェース２１０は、異なるアドレスを有する、異なるプロトコルを有する、および／または異なる物理サーバの属する多数のインターフェースを含むことができる。さらに資源割り当て装置２００は、ネットワークインターフェース２１０またはその一部分を、例えばエージェント装置などの他の構成要素と共有することができる。
【００３１】
エージェント装置マネージャ２２０は、エージェント装置を確立し管理するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。様々な実施形態ではエージェント装置マネージャ２２０は、様々なエージェント装置の確立を求める要求を受け取り、その後に少なくとも部分的に、エージェント装置定義を生成することによって、要求されたエージェント装置を確立することができる。その際にエージェント装置マネージャ２２０は、要求、クライアント装置、契約者特権、利用可能なハードウェア資源、および／または様々な他の考慮事項に基づいて、それぞれの新しいエージェント装置にハードウェア資源の割り当て分を割り当てることができる。次いでエージェント装置マネージャ２２０は、この定義をエージェント装置定義記憶装置２３０に記憶することができる。エージェント装置マネージャ２２０は、例えばエージェント装置と、ネットワークインターフェース２１０を通じてアクセス可能な他の装置との間のメッセージ経路設定、および／または割り振られたハードウェア資源の実施などの、様々な追加の機能を行うことができる。
【００３２】
エージェント装置定義記憶装置２３０は、様々なエージェント装置定義を記憶することができる任意の機械可読媒体とすることができる。したがってエージェント装置定義記憶装置２３０は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、および／または同様な記憶媒体などの、機械可読記憶媒体を含むことができる。エージェント装置定義記憶装置２３０の内容については、以下で図３に関連してより詳しく説明する。
【００３３】
エージェント装置インターフェース２４０は、少なくとも１つのエージェント装置と通信するように構成された、ハードウェアおよび／または機械可読記憶媒体上に符号化された実行可能命令を含む、インターフェースとすることができる。様々な実施形態ではエージェント装置インターフェース２４０は、オペレーティングシステムまたは他の環境によってもたらされる１つまたは複数の通信の方法を含むことができる。例えばエージェント装置インターフェース２４０は、ソケット、パイプ、メッセージキュー、および／または共有メモリを含むことができる。代替としてまたは追加としてエージェント装置インターフェース２４０は、システムバス、ＳＣＳＩ、ＳＡＴＡ、ＰＡＴＡ、ＵＳＢ、ＩＥＥＥ１３９４などのインターフェース、および／またはイーサネットインターフェースなどのネットワークインターフェースを含むことができる。それに従って様々な実施形態ではエージェント装置インターフェース２４０は、ネットワークインターフェース２１０を含むことができる。
【００３４】
ハードウェア故障検出器２５０は、資源割り当て装置２００および／または１つまたは複数エージェント装置に関連するハードウェアの故障を検出するように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。例えば資源割り当て装置２００に関連する１つまたは複数のエージェント装置は、ハードウェアエラーに遭遇するとすぐに割り込みを送出するように構成することができる。ハードウェア故障検出器２５０はこのような割り込みを受け取り、その後にハードウェア故障が発生したと判断することができる。追加としてまたは代替としてハードウェア故障検出器２５０は定期的に、ハードウェア装置に対してポーリングする、および／またはハードウェア装置からハートビート信号を受け取ることができる。１つまたは複数のポーリング応答および／またはハートビート信号の受け取りの失敗は、ハードウェア故障が発生したことをハードウェア故障検出器２５０に知らせることができる。例えばハードウェアステータスレジスタを読み出すこと、無応答のハードウェアに遭遇すること、および／またはハードウェア装置へのアクセスの試みのすぐ後にエラーを受け取ることなど、ハードウェア故障を検出する多数の追加または代替の方法が当業者には明らかになるであろう。ハードウェア故障を検出するとすぐにハードウェア故障検出器２５０は、故障した装置をエージェント装置保護モジュール２６０に報告することができる。
【００３５】
エージェント装置保護モジュール２６０は、ハードウェア故障によって影響を受け得るエージェント装置を識別し、その後にそのような影響を回避するためのステップをとるように構成された、ハードウェアおよび／または機械可読記憶媒体上の実行可能命令を含むことができる。特定のハードウェア装置が故障したまたは故障しつつあるとの表示を、ハードウェア故障検出器２５０から受け取るとすぐに、エージェント装置保護モジュール２６０は、故障したハードウェア装置の割り当て分が割り当てられた、あるいは影響を受け得るエージェント装置を識別することができる。例えばエージェント装置保護モジュール２６０は、エージェント装置定義記憶装置を順に処理し、故障したハードウェアに関連するエージェント装置を識別することができる。代替としてエージェント装置保護モジュールは単に、資源割り当てモジュール２００に関連するいずれのエージェント装置も潜在的に影響を受けると想定することができる。
【００３６】
潜在的に影響を受けるエージェント装置を識別した後にエージェント装置保護モジュール２６０は、それぞれの識別されたエージェント装置に対して何らかの保護処置をとることができる。エージェント装置保護モジュール２６０は、それぞれの識別された装置に対して同じ処置をとることができ、または異なるエージェント装置に対して異なる保護処置が適していると判断することができる。様々な実施形態ではエージェント装置保護モジュール２６０は、エージェント装置が故障したハードウェアをもはや利用しないように、エージェント装置のための資源を再割り当てすることができる。代替としてまたは追加としてエージェント装置保護モジュールは、エージェント装置の動作を中断する、および／またはエージェント装置に関するエラーをシミュレートすることができる。その際にエージェント装置保護モジュール２６０は、ハードウェア故障がエージェント装置に実際に影響を与える前に、他の構成要素（図示せず）に救済措置をとるように促すことができる。
【００３７】
他の代替または追加の保護処置としてエージェント装置保護モジュール２６０は、１つまたは複数エージェント装置を別の資源割り当て装置にライブマイグレーションすることができる。例えばエージェント装置保護モジュール２６０は、置き換えのエージェント装置のためにハードウェアが割り当てられるべきである旨の指示を別の資源割り当て装置に送出することができる。その際にエージェント装置保護モジュール２６０は、ハードウェア要件などのエージェント装置を定義する情報を送出することができる。エージェント装置保護モジュール２６０はまた、置き換えのエージェント装置にマイグレーションされるエージェント装置のコンテキストを複製するために装置イメージを送出することができる。様々な実施形態ではエージェント装置保護モジュール２６０は、ハードウェア故障の表示を受け取るとすぐに、またはエージェント装置の正常動作時に定期的に、このような装置イメージを生成することができる。様々な実施形態ではエージェント装置保護モジュールは、エージェント装置定義記憶装置に記憶されたエージェント装置定義またはその一部分を送出することができる。送出された情報は何でも用いて、別の資源割り当て装置（図示せず）は、エージェント装置のコピーを確立し、それによって新しいハードウェアへのエージェント装置にマイグレーションすることができる。
【００３８】
図３は、複数のエージェント装置定義を記憶するための例示のデータ構成３００を示す。データ構成３００は、エージェント装置定義記憶装置２３０などのデータベース内のテーブルまたはキャッシュとすることができる。代替としてデータ構成３００は、一連のリンクリスト、配列、または同様なデータ構造体とすることができる。したがってデータ構成３００は基礎をなすデータを抽象化したものであり、このデータの記憶に適した任意のデータ構造体を用いることができることが明らかであろう。
【００３９】
データ構成３００は、エージェント装置を定義するための多数のフィールドを含むことができる。例えばデータ構成３００は、エージェント装置ＩＤフィールド３０５、プロセッサ資源フィールド３１０、メモリ資源フィールド３１５、および装置イメージフィールド３２０を含むことができる。データ構成３００は、例えば追加の資源、関連するクライアント装置および／またはユーザ、および／または最初に要求された資源などの、追加の情報を記憶するための多数の追加のフィールドを含むことができる。エージェント装置を定義するのに有用な代替または追加のデータは、当業者には明らかになるであろう。
【００４０】
エージェント装置ＩＤフィールド３０５は、資源割り当て装置によって管理される各エージェント装置に対する一意の識別子を記憶することができる。プロセッサ資源フィールド３１０は、利用可能なプロセッサのうちのどれだけの割り当て分を、エージェント装置が利用できるかの表示を記憶することができる。同様にメモリ資源フィールド３１５は、利用可能なメモリ装置のうちのどれだけの割り当て分を、エージェント装置が利用できるかの表示を記憶することができる。装置イメージ３２０は、エージェント装置に関連して生成された最近の装置イメージを規定することができる。
【００４１】
例として定義３３０は、エージェント装置０ｘ２３には、ＣＰＵ１およびＣＰＵ２の両方の処理時間の１０％が割り当てられることを示す。さらにエージェント装置０ｘ２３には、メモリバンク２上のメモリアドレス０ｘＡ００００００−０ｘＡＦＦＦＦＦＦが割り当てられることを示す。ＳＤＡ１上に／ｖａｒ／ｉｍａｇｅｓ／０３５−０００４において記憶されたイメージは、エージェント装置０ｘ２３の最近の装置イメージを記憶する。同様に定義３４０および３５０は、それぞれエージェント装置０ｘＡ１および０ｘＣＢに対して割り当てられた資源および装置イメージ位置を定義する。データ構成３００は、多数の追加の定義３６０を含むことができる。
【００４２】
図４は、ハードウェア故障からエージェント装置を保護する例示の方法４００を示す。方法４００は、例えばハードウェア故障検出器２５０および／またはエージェント装置保護モジュール２６０などの資源割り当て装置２００の構成要素によって行うことができる。
【００４３】
方法４００はステップ４０５で開始してステップ４１０に進むことができ、そこで資源割り当て装置２００は、上述の方法のいずれかによりハードウェア故障を検出することができる。次にステップ４１５で資源割り当て装置２００は、分析のために第１のエージェント装置を取り出すことができる。例えば資源割り当て装置２００は、エージェント装置定義を取り出すことができる。次いでステップ４２０で資源割り当て装置２００は、取り出したエージェント装置が、故障したハードウェアに関連するかどうかを判定することができる。そうでない場合は方法４００はステップ４３０にスキップすることができる。取り出したエージェント装置が故障したハードウェアに関連する場合は、方法４００はステップ４２５に進むことができる。様々な代替実施形態ではステップ４２０はなくてもよく、ステップ４１５はステップ４２５に直接進むことができる。それに従ってこのような代替実施形態では、資源割り当て装置２００はあらゆる関連するエージェント装置に対してステップ４２５を行うことができる。
【００４４】
ステップ４２５では資源割り当て装置２００は、ハードウェア故障から現在のエージェント装置を保護するために１つまたは複数の処置を行うことができる。上述のように資源割り当て装置２００は、エージェント装置に異なる資源を割り当てる、エージェント装置を中断する、エージェント装置に対してエラーをシミュレートする、またはエージェント装置を別の資源割り当て装置にマイグレーションすることができる。エージェント装置を保護する様々な代替の方法が当業者には明らかとなり得る。
【００４５】
ステップ４３０では資源割り当て装置２００は、ハードウェアエラーの観点から処理されるべきエージェント装置が残っているかどうかを判定することができる。そうであれば資源割り当て装置２００は次のエージェント装置を取り出すことができ、方法４００は折り返してステップ４２０に戻ることができる。すべてのエージェント装置が処理された後に、方法４００はステップ４３０からステップ４４０に進んで終了することができる。
【００４６】
様々な実施形態について述べたので、次にシステム１００ａの動作の一例について、図１−４を参照して述べる。この例のために、資源割り当て装置２００は資源割り当て装置１３０ａに対応することができ、データ構成３００はエージェント装置定義記憶装置２３０の内容を表すことができ、方法４００は資源割り当て装置２００の動作を表すことができる。定義３３０は、クライアント装置１１０ａに関連され得るエージェント装置１  １４０ａに対応することができる。エージェント装置Ｍ＋１  １４０ｃはまたクライアント装置に関連することができ、現在パッシブモードで動作しているエージェント装置１  １４０ａの冗長なコピーとすることができる。
【００４７】
ステップ４１０ではハードウェア故障検出器２５０は、ＣＰＵ２が故障したとの表示をエージェント装置０ｘＣＢから受け取ることができる。ステップ４２０ではエージェント装置保護モジュール２６０は、定義３３０に従ってエージェント装置０ｘ２３がＣＰＵ２に関連し、したがってハードウェア故障によって影響を受けることが見込まれると判断することができる。それに応答してエージェント装置保護モジュール２６０は、エージェント装置１  １４０ａ上の重大なエラーをシミュレートするようにクライアント装置１１０ａにメッセージを送出することによって保護処置をとることができる。次いでクライアント装置１１０ａは、冗長なエージェント装置Ｍ＋１  １４０ｃをアクティブモードにし、いずれの処理要求もそのエージェント装置１４０ｃにリダイレクトすることによって応答する。
【００４８】
次に方法４００は折り返してステップ４２０に戻ることができ、そこでエージェント装置保護モジュールは、定義３４０に従ってエージェント装置０ｘＡ１はＣＰＵ２に関連しないと判断することができる。それに従って資源割り当て装置２００は、エージェント装置０ｘＡ１に対してさらなる処置をとらなくてよい。このようにして処理は、資源割り当て装置２００がデータ構成３００に記憶されたすべての定義を分析するまで続けることができる。
【００４９】
上記により様々な実施形態は、ハードウェア故障によってエージェント装置が影響を受けるのを、資源割り当て装置がプロアクティブに保護することを可能にする。具体的には、故障が報告されたハードウェアに関連するエージェント装置を識別することによって、資源割り当て装置は、ハードウェア故障が実際にエージェント装置に影響を与える前に、エージェント装置を保護するためのステップをとることができる。
【００５０】
上記の説明から本発明の様々な例示的実施形態は、ハードウェアおよび／またはファームウェアにおいて実施できることが明らかであろう。さらに様々な例示的実施形態は、少なくとも１つのプロセッサによって読み出され実行されて本明細書で詳しく述べられる動作を行うことができる、機械可読記憶媒体上に記憶された命令として実施することができる。機械可読記憶媒体は、パーソナルまたはラップトップコンピュータ、サーバ、または他のコンピューティングデバイスなどの機械によって読み出しが可能な形において情報を記憶するための、任意の機構を含むことができる。したがって有形で非一時的な機械可読記憶媒体は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、および同様な記憶媒体を含むことができる。
【００５１】
当業者には、本明細書のいずれのブロック図も、本発明の原理を具体化する例示の回路の概念図を表すことが理解されるべきである。同様にいずれのフローチャート、フロー図、状態遷移図、擬似コードなどは、機械可読媒体内に実質的に表すことができる様々なプロセスを表し、コンピュータまたはプロセッサが明示的に示されているか否かに関わらず、コンピュータまたはプロセッサによってそのように実行されることが理解されよう。
【００５２】
様々な例示的実施形態について、それらのいくつかの例示の態様を具体的に参照して詳しく述べてきたが、本発明は他の実施形態も可能であり、その詳細は様々な明白な点において変更が可能であることが理解されるべきである。当業者には容易に明らかなように、本発明の趣旨および範囲内のままで、変形および変更を行うことができる。したがって上記の開示、説明、および図は説明のためのみであり、いかなる形においても特許請求の範囲によって定義される本発明を限定するものではない。
【図１ａ】
2014522052.tif 000003
【図１ｂ】
2014522052.tif 000004
【図１ｃ】
2014522052.tif 000005
【図２】
2014522052.tif 000006
【図３】
2014522052.tif 000007
【図４】
2014522052.tif 000008
【国際調査報告】
2014522052.tif 000009
2014522052.tif 000010