(57)【特許請求の範囲】
【請求項１】
仮想機械において稼働している複数のアプリケーションのうちのそれぞれのアプリケーションの動作状態を示す情報を前記仮想機械において稼働している監視エージェントから受信するステップと、
前記仮想機械において稼働していない意思決定エージェントによって、前記複数のアプリケーションのうちのそれぞれのアプリケーションの優先順位を検出するステップと、
前記仮想機械を再起動するべきであるかどうかを、前記複数のアプリケーションのうちのそれぞれのアプリケーションの前記動作状態及び前記優先順位に基づいて、判定するステップと、
前記仮想機械を再起動するべきであるかどうかに関する前記判定に基づいて、前記監視エージェントがタイムアウトインターバルの満了前にハートビートメッセージを仮想化コントローラに対して送信するべきであるかどうかを決定するステップであって、前記ハートビートメッセージは、前記複数のアプリケーションのそれぞれの動作状態を識別し、前記仮想化コントローラは、前記監視エージェントが前記タイムアウトインターバルの満了前に前記ハートビートメッセージを送信しない場合に、前記仮想機械を再起動するように構成されており、且つ、前記決定は、演算装置によって実行される、ステップと、を有する方法。
【請求項２】
前記判定は、意思決定エージェントによって実行され、且つ、前記意思決定エージェントは、前記仮想機械において稼働してはいない請求項１に記載の方法。
【請求項３】
前記情報が、前記アプリケーションが適切に稼働していないと識別していることに応答して、前記監視エージェントが前記アプリケーションを再起動するように試みるべきであると決定するステップを更に有し、前記アプリケーションを再起動するための前記試みは、前記仮想機械を再起動するべきであるかどうかに関する前記判定の前に、実行される請求項２に記載の方法。
【請求項４】
前記情報が、前記アプリケーションが意図的にオフライン状態とされていると識別していることに応答して、前記仮想化コントローラに対してハートビートメッセージを提供しないように、前記仮想化コントローラに対して前記監視エージェントの登録を解除する要求を送信し、前記仮想化コントローラに登録された前記監視エージェントの情報を解除するべく決定するステップを更に有する請求項１に記載の方法。
【請求項５】
前記監視エージェントの登録が解除された後に、前記監視エージェントが前記アプリケーションの監視を継続するステップを更に有する請求項４に記載の方法。
【請求項６】
管理者から通知を受け取るステップを更に有し、前記通知は、前記アプリケーションが意図的にオフライン状態とされているのかどうか、又は、前記監視エージェントが前記アプリケーションの監視を継続するべきであるのかどうか、のうちの少なくとも１つを通知する請求項１に記載の方法。
【請求項７】
１つ又は複数のプロセッサと、
前記１つ又は複数のプロセッサに結合されると共にプログラム命令を保存するメモリと、
を有するシステムであって
前記プログラム命令は、
仮想機械において稼働している複数のアプリケーションのうちのそれぞれのアプリケーションの動作状態を示す情報を前記仮想機械において稼働している監視エージェントから受信し、
前記仮想機械において稼働していない意思決定エージェントによって、前記複数のアプリケーションのうちのそれぞれのアプリケーションの優先順位を検出し、
前記仮想機械を再起動するべきであるかどうかを、前記複数のアプリケーションのうちのそれぞれのアプリケーションの前記動作状態及び前記優先順位に基づいて、判定し、且つ、
前記仮想機械を再起動するべきであるかどうかに関する前記判定に基づいて、前記監視エージェントがタイムアウトインターバルの満了前にハートビートメッセージを仮想化コントローラに対して送信するべきであるかどうかを決定し、前記ハートビートメッセージは、前記複数のアプリケーションのそれぞれの動作状態を識別し、前記仮想化コントローラは、前記監視エージェントが前記タイムアウトインターバルの満了前に前記ハートビートメッセージを送信しない場合に、前記仮想機械を再起動するように構成される、ように、前記１つ又は複数のプロセッサによって実行可能である、システム。
【請求項８】
前記プログラム命令は、意思決定エージェントを実装するように構成され、且つ、前記意思決定エージェントは、前記仮想機械において稼働してはいない請求項７に記載のシステム。
【請求項９】
前記プログラム命令は、前記情報が、前記アプリケーションが意図的にオフライン状態とされていると識別していることに応答して、前記仮想化コントローラに対してハートビートメッセージを提供しないように、前記仮想化コントローラに対して前記監視エージェントの登録を解除する要求を送信し、前記仮想化コントローラに登録された前記監視エージェントの情報を解除するべく決定するように、前記１つ又は複数のプロセッサによって更に実行可能である請求項７に記載のシステム。
【請求項１０】
プログラム命令を有するコンピュータ可読ストレージ媒体であって、
前記プログラム命令は、
仮想機械内において稼働している複数のアプリケーションのうちのそれぞれのアプリケーションの動作状態を示す情報を前記仮想機械において稼働している監視エージェントから受信し、
前記仮想機械において稼働していない意思決定エージェントによって、前記複数のアプリケーションのうちのそれぞれのアプリケーションの優先順位を検出し、
前記仮想機械を再起動するべきであるかどうかを、前記複数のアプリケーションのうちのそれぞれのアプリケーションの前記動作状態及び前記優先順位に基づいて、判定し、且つ、
前記仮想機械を再起動するべきかどうかに関する前記判定に基づいて、前記監視エージェントがタイムアウトインターバルの満了前に仮想化コントローラに対してハートビートメッセージを送信するべきであるかどうかを決定し、前記ハートビートメッセージは、前記複数のアプリケーションのそれぞれの動作状態を識別し、前記仮想化コントローラは、前記監視エージェントが前記タイムアウトインターバルの満了前に前記ハートビートメッセージを送信しない場合に、前記仮想機械を再起動させるように、構成される、ように、１つ又は複数のプロセッサによって実行可能である、媒体。
【請求項１１】
前記プログラム命令は、意思決定エージェントを実装するように、前記１つ又は複数のプロセッサによって更に実行可能であり、且つ、前記意思決定エージェントは、前記仮想機械において稼働してはいない請求項１０に記載のコンピュータ可読ストレージ媒体。
【請求項１２】
前記プログラム命令は、前記情報が、前記アプリケーションが意図的にオフライン状態とされていると識別していることに応答して、前記仮想化コントローラに対してハートビートメッセージを提供しないように、前記仮想化コントローラに対して前記監視エージェントの登録を解除する要求を送信し、前記仮想化コントローラに登録された前記監視エージェントの情報を解除するべく決定するように、前記１つ又は複数のプロセッサによって更に実行可能である請求項１０に記載のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高可用性に関し、且つ、より具体的には、仮想機械における高可用性アプリケーションの提供に関する。
【背景技術】
【０００２】
仮想化システムによれば、（実際には、同一タイプのオペレーティングシステムの別個のインスタンスであり得る）複数のオペレーティングシステムが、同一期間に、同一ハードウェア上において稼働することができる。それぞれの稼働しているオペレーティングシステムは、独立した「仮想機械」として機能すると共に、独立したハードウェア上において稼働するスタンドアロンのオペレーティングシステムと実質的に同一の方式により、やり取り及び使用することができる。仮想機械によれば、事実上、１つのハードウェア演算装置をいくつかの仮想機械に分割することにより、ハードウェアリソースの使用効率を向上させることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
いくつかの仮想化システムは、１つ又は複数の装置上に実装された１つ又は複数の仮想機械を管理することができる仮想化コントローラを提供している。このような仮想化コントローラは、仮想機械と通信することが可能であり、且つ、それらの仮想機械の動作を制御することができる。いくつかの環境においては、特定の仮想機械に障害が発生した場合に、その障害が発生した仮想機械を仮想化コントローラが別の演算装置上において再起動することができるように、仮想化コントローラは、仮想機械の高可用性を提供する方式により、仮想機械を管理することもできる。しかしながら、高可用性仮想機械を提供している従来の仮想化システムにおいては、仮想機械において稼働しているアプリケーションの可用性を効果的に向上させることはできないであろう。
【課題を解決するための手段】
【０００４】
高可用性仮想機械環境において稼働するアプリケーションの高可用性を提供するための様々なシステム及び方法が開示される。例えば、一方法は、仮想機械において稼働している複数のアプリケーションのうちのそれぞれのアプリケーションの動作状態を示す情報を仮想機械において稼働している監視エージェントから受信するステップを伴う。本方法は、仮想機械において稼働していない意思決定エージェントによって、複数のアプリケーションのうちのそれぞれのアプリケーションの優先順位を検出するステップを伴う。本方法は、仮想機械を再起動するべきであるかどうかを、複数のアプリケーションのうちのそれぞれのアプリケーションの動作状態及び優先順位に基づいて、判定するステップを伴う。次いで、この判定に基づいて、本方法は、監視エージェントがタイムアウトインターバルの満了前にハートビートメッセージを仮想化コントローラに送信するべきであるかどうかを決定する。ハートビートメッセージは、前記複数のアプリケーションのそれぞれの動作状態を識別する。仮想化コントローラは、監視エージェントがタイムアウトインターバルの満了前にハートビートメッセージを送信しない場合に、その仮想機械を再起動するように構成されている。ハートビートメッセージを送信するかどうかを決定する動作は、演算装置によって実行される。いくつかの実施形態においては、判定動作は、意思決定エージェントを実装する演算装置によって実行され、この意思決定エージェントは、その仮想機械において稼働してはいない。
【０００５】
受信される情報は、仮想機械において稼働しているいくつかのアプリケーションのうちのそれぞれのアプリケーションの動作状態を識別することができる。仮想機械を再起動するかどうかに関する判定は、それぞれのアプリケーションの動作状態及び優先順位に基づいたものであってよい。
【０００６】
一例として、本方法は、複数のアプリケーションのうちの相対的に高い優先順位のアプリケーションが適切に稼働しており、且つ、複数のアプリケーションのうちの相対的に低い優先順位のアプリケーションに障害が発生していると情報が識別していることに応答して、仮想機械を再起動するべきではないと判定することができる。或いは、この代わりに、本方法は、複数のアプリケーションのうちの相対的に高い優先順位のアプリケーションに障害が発生しており、且つ、複数のアプリケーションのうちの相対的に低い優先順位のアプリケーションが適切に稼働していると情報が識別していることに応答して、仮想機械を再起動するべきであると判定することができる。一実施形態においては、本方法は、アプリケーションが適切に動作していないと情報が識別していることに応答して、監視エージェントがアプリケーションの再起動をまず試みるべきであると判定することが可能であり、この場合に、アプリケーションの再起動の試みは、仮想機械を再起動するべきかどうかに関する判定の前に、実行される。
【０００７】
本方法は、アプリケーションが意図的にオフライン状態とされていると情報が識別していることに応答して、仮想化コントローラに対してハートビートメッセージを提供しないように監視エージェントを登録解除するべく決定することができる。監視エージェントは、その監視エージェントが登録解除された後にも、アプリケーションの監視を継続することができる。本方法は、アプリケーションが再度オンライン状態にあると情報が識別していることに応答して、ハートビートメッセージを仮想化コントローラに提供するように監視エージェントを再登録するべく決定することができる。
【０００８】
本方法は、管理者から通知を受け取るステップを伴うことができる。通知は、例えば、アプリケーションが意図的にオフライン状態とされているのかどうか、及び／又は、監視エージェントがアプリケーションの監視を継続するべきであるのかどうか、を示すことができる。
【０００９】
システムの一例は、１つ又は複数のプロセッサと、１つ又は複数のプロセッサに結合されたメモリと、を含むことができる。メモリは、上述の方法のような方法を実行するように稼働することができるプログラム命令を保存する。同様に、このようなプログラム命令は、コンピュータ可読ストレージ媒体上に保存することもできる。
【００１０】
以上の内容は、概要であり、且つ、従って、必然的に、詳細内容の単純化、一般化、及び省略を含んでおり、従って、当業者であれば、この概要は、例示を目的としたものに過ぎず、且つ、決して限定を意図したものと解釈するべきではないことを理解するであろう。請求項によってのみ規定される本発明のその他の態様、発明上の特徴、及び利点については、以下に提供される非限定的な詳細な説明から明らかとなろう。
【００１１】
本発明については、添付図面を参照することにより、更に十分に理解することが可能であり、且つ、その多数の目的、特徴、及び利点について、当業者に明らかとなろう。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態による高可用性仮想機械環境においてアプリケーションの高可用性を提供するシステムのブロックダイアグラムである。
【図２】本発明の別の実施形態による高可用性仮想機械環境においてアプリケーションの高可用性を提供する別のシステムのブロックダイアグラムである。
【図３】本発明の一実施形態による高可用性仮想機械環境においてアプリケーションの高可用性を提供する方法のフローチャートである。
【図４】本発明の一実施形態による、ハートビート信号を複数の監視対象アプリケーションを稼働させている仮想機械から仮想化コントローラに対して送信できるようにするかどうかを判定する方法のフローチャートである。
【図５】本発明の一実施形態による、監視エージェント及び意思決定エージェントの両方をソフトウェアに実装する方法を示す演算装置のブロックダイアグラムである。
【図６】本発明の一実施形態による、様々な演算装置がネットワークを介して通信する方法を示すネットワーク接続されたシステムのブロックダイアグラムである。
【発明を実施するための形態】
【００１３】
本発明には、様々な変更及び代替形態が可能であるが、添付図面及び詳細な説明には、例として、本発明の特定の実施形態が提供されている。これらの図面及び詳細な説明は、開示されている特定の形態に本発明を限定することを意図したものではないことを理解されたい。むしろ、本発明は、添付の請求項によって規定されている本発明の精神及び範囲に含まれるすべての変更形態、均等物、及び代替形態を含んでいる。
【００１４】
図１は、仮想化システムのブロックダイアグラムである。図示のように、仮想化システムは、２つのホスト１０（１）及び１０（２）を含む。この例においては、それぞれのホストは、２つの仮想機械（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）を実装している。図示のように、ホスト１０（１）は、ＶＭ３０（１）及びＶＭ３０２（２）を実装している。同様に、ホスト１０（２）は、ＶＭ３０（３）及びＶＭ３０（４）を実装している。代替実施形態は、この例に示されているものとは異なる数のＶＭをホスト当たりに実装することが可能であり、且つ、同一のシステムが、同一システム内のその他のホストとは異なる数のＶＭをそれぞれが実装する１つ又は複数のホストを含むことができることに留意されたい。
【００１５】
仮想機械ＶＭ３０（１）〜ＶＭ３０（４）は、それぞれ、稼働しているオペレーティングシステムの自己充足型インスタンスを提供している。同一ホスト上において稼働するＶＭは、同一の又は異なるオペレーティングシステムを使用して実装することができる。ＶＭとやり取りするクライアントは、通常、独立したハードウェア上において稼働するスタンドアロンのオペレーティングシステムとやり取りするのと全く同一の方式によってやり取りすることになる。仮想機械は、Ｐａｌｏ  Ａｌｔｏ，  ＣＡに所在するＶＭｗａｒｅ，  Ｉｎｃ．社が提供しているものなどの仮想化ソフトウェアを使用して実装することができる。
【００１６】
アプリケーションは、それぞれのＶＭにおいて稼働する。このようなアプリケーションは、データベースアプリケーション、メールサーバー、又はこれらに類似したものであってよい。この場合に、アプリケーション４０（１）は、ＶＭ３０（１）において稼働しており、アプリケーション４０（２）は、ＶＭ３０（２）において稼働しており、アプリケーション４０（３）及び４０（４）は、ＶＭ３０（３）において稼働しており、且つ、アプリケーション４０（５）は、ＶＭ３０（４）において稼働している。図示のように、複数のアプリケーションが単一のＶＭにおいて稼働することができる。所与のＶＭにおいて稼働しているアプリケーションのタイプは、同一仮想化システム内の別のＶＭにおいて稼働しているアプリケーションのタイプと同一であっても異なっていてもよい。
【００１７】
監視エージェント（１つの特殊なタイプのアプリケーション）も、それぞれのＶＭにおいて稼働する。それぞれの監視エージェントは、同一のＶＭにおいて稼働している１つ又は複数のアプリケーションの状態を監視すると共に監視対象アプリケーションの状態を意思決定エージェントに報告するように構成されている。図示のように、監視エージェント５０（１）は、ＶＭ３０（１）において稼働し、且つ、アプリケーション４０（１）の状態を監視している。監視エージェント５０（２）は、ＶＭ３０（２）において稼働し、且つ、アプリケーション４０（２）の状態を監視している。監視エージェント５０（３）は、ＶＭ３０（３）において稼働し、且つ、アプリケーション４０（３）及び４０（４）のうちのそれぞれのアプリケーションの状態を監視している。監視エージェント５０（４）は、ＶＭ３０（４）において稼働し、且つ、アプリケーション４０（５）の状態を監視している。図１は、単一の監視エージェントが複数のアプリケーションを監視することができる実施形態を示しているが、代替実施形態は、監視対象のアプリケーションと監視エージェントの間に１対１の対応関係が存在するように、ＶＭ当たり複数のエージェントを利用してもよい。監視エージェントは、所与のＶＭにおいて稼働しているアプリケーションのすべてではなく、その一部を監視するように構成することもできることに留意されたい。
【００１８】
いくつかの実施形態においては、監視エージェントは、Ｃｕｐｅｒｔｉｎｏ，  ＣＡに所在するＳｙｍａｎｔｅｃ，  Ｃｏｒｐ．社から入手可能なＶＥＲＩＴＡＳ  Ｃｌｕｓｔｅｒ  Ｓｅｒｖｅｒ（ＶＣＳ）エージェントとして実装されている。このような実施形態においては、それぞれのＶＭは、独立した単一ノードクラスタとして構成することができる。監視エージェントは、単一ノードクラスタの監視サービスグループとして構成することができる。又、ＶＭ内のそれぞれの監視対象アプリケーションも、単一ノードクラスタのサービスグループとして構成される。監視サービスグループは、同一の単一ノードクラスタ内のその他のサービスグループの状態を監視する。
【００１９】
意思決定エージェント（別の特殊なタイプのアプリケーション）は、それぞれのＶＭにおいて稼働する。意思決定エージェントは、１つ又は複数の対応する監視エージェントによって識別される１つ又は複数のアプリケーションの状態に基づいて、実行するべき動作が存在する場合に、実行するべき動作を判定するように、構成されている。意思決定エージェントの動作については、後程詳述する。図示されているように、意思決定エージェント６０（１）は、ＶＭ３０（１）において稼働しており、意思決定エージェント６０（２）は、ＶＭ３０（２）において稼働しており、意思決定エージェント６０（３）は、ＶＭ３０（３）において稼働しており、且つ、意思決定エージェント６０（４）は、ＶＭ３０（４）において稼働している。いくつかの実施形態においては、監視エージェント及び意思決定エージェントの機能を、それぞれのＶＭにおいて稼働する単一のエージェントとして組み合わせてもよい。
【００２０】
ホスト１０（１）及び１０（２）は、仮想化コントローラ８０を実装するサーバー７０と（例えば、ネットワークを介して）通信するように結合されている。仮想化コントローラ８０は、ホスト１０（１）及び１０（２）上に実装されているＶＭを制御している。従って、仮想化コントローラ８０は、それぞれのＶＭの状態を監視し、それぞれのＶＭが適切に稼働しているかどうかを識別する。ＶＭの障害の検出に応答して、仮想化コントローラ８０は、状況を是正するための動作を実行することができる。このような動作は、同一の又は別のホスト上における障害が発生したＶＭの再起動又は障害に結び付く問題を矯正するための試みを含むことができる。
【００２１】
仮想化コントローラ８０は、いくつかの実施形態においては、ＶＭｗａｒｅ  ｖＣｅｎｔｅｒ  Ｓｅｒｖｅｒ（商標）として実装することができる。このような実施形態においては、仮想化コントローラ８０は、ＶＭｗａｒｅ  Ｔｏｏｌ（商標）によって提供されるハートビートチャネルを介してＶＭと通信することが可能であり、ＶＭｗａｒｅ  Ｔｏｏｌ（商標）は、それぞれのＶＭにおいて設置及び稼働することができる。このような実施形態において別のホスト上においてＶＭを再起動するために使用されるメカニズムは、ｖＭｏｔｉｏｎ（商標）であってよい。これらの機能は、Ｐａｌｏ  Ａｌｔｏ，  ＣＡに所在するＶＭｗａｒｅ  Ｉｎｃ．社によって提供されるものなどの仮想化ソフトウェアを使用して実装することができる。
【００２２】
この場合に、仮想化コントローラ８０は、それぞれのＶＭからのハートビートメッセージに依存してそのＶＭの状態を判定している。それぞれのＶＭ上におけるアプリケーション（例えば、後程詳述する監視エージェント）は、仮想化コントローラ８０に登録することにより、その登録されたアプリケーションがハートビートを仮想化コントローラ８０に対して送信することを通知する。特定のＶＭからハートビートを受信している状態においては、仮想化コントローラ８０は、その特定のＶＭから、期間（タイムアウトインターバルとも呼称する）当たりに１回ずつ、ハートビートを受信するものと予想する。ハートビートが所与の期間内に受信されない場合には（又は、一連のハートビートが連続した期間にわたって受信されない場合には）、仮想化コントローラ８０は、ＶＭに障害が発生したものと判定することになり、且つ、（例えば、そのＶＭを別のホスト上において再起動することによって）矯正動作を実行することになる。
【００２３】
図１の仮想化環境において稼働するアプリケーションの高可用性を提供するために、それぞれの監視エージェントは、仮想化コントローラ８０に登録し、そのＶＭのハートビートを提供することになる。従って、監視エージェント５０（１）は、登録してＶＭ３０（１）のハートビートメッセージを提供することになり、監視エージェント５０（２）は、登録してＶＭ３０（２）のハートビートメッセージを提供することになり、監視エージェント５０（３）は、登録してＶＭ３０（３）のハートビートメッセージを提供することになり、且つ、監視エージェント５０（４）は、登録してＶＭ３０（４）のハートビートメッセージを提供することになる。
【００２４】
上述のように、監視エージェント５０（１）〜５０（４）は、アプリケーションを監視し、且つ、それらのアプリケーションの状態について意思決定エージェント６０（１）〜６０（４）のうちの個々の意思決定エージェントに対して報告することになる。特定のＶＭにおける監視対象アプリケーションの状態に基づいて、そのＶＭ内の意思決定エージェントは、アプリケーションを再起動するべきかどうか、仮想化コントローラによるＶＭの監視を継続するべきかどうか、及び、ＶＭのハートビートメッセージを送信するべきかどうかを決定することになる。次いで、意思決定エージェントは、その決定について監視エージェントに報告し、監視エージェントが、その決定された動作を実行することになる。
【００２５】
監視エージェントと同一のＶＭ内のそれぞれの監視対象アプリケーションごとに、監視エージェントは、そのアプリケーションが適切に稼働しているかどうかを検出することができる。少なくともいくつかの実施形態においては、監視エージェントは、稼働していないアプリケーションが、障害に起因して稼働していないのか、又は、意図的にオフライン状態とされたことに起因して稼働していないのか、を弁別することもできる。例えば、監視エージェントは、アプリケーションがオフライン状態とされていることを管理者が監視エージェントに対して通知することができるインターフェイス（例えば、グラフィカルユーザーインターフェイス、コマンドラインインターフェイス、又はこれらに類似したもの）を提供することが可能であり、且つ、監視エージェントは、これに応答して、アプリケーションと関連する状態情報を更新し、アプリケーションが意図的にオフライン状態とされていることを通知することができる。管理者は、監視エージェントによって検出される現在の動作状態とは無関係に、任意の時点において、アプリケーションをオフライン状態としたり、又は、オンライン状態に復帰させ（且つ、その動作をインターフェイスを介して識別す）ることができることに留意されたい。
【００２６】
アプリケーションが稼働していないことを監視エージェントが検出した際に、監視エージェントは、（例えば、アプリケーションと関連付けられた保存されている情報にアクセスすることによって）アプリケーションが稼働を中止する前にそのアプリケーションがオフライン状態とされたことを管理者が通知しているかどうかを確認することができる。アプリケーションが、意図的にオフライン状態とされた後に再起動された際には、管理者は、再度、（例えば、インターフェイスを介して）アプリケーション状態の変化について監視エージェントに通知することができる。或いは、この代わりに、監視エージェントは、単純に、アプリケーションが次のハートビート期間において再起動されたことを検出すると共にそのアプリケーションと事前に関連付けられている任意の状態情報をクリアすることもできる。
【００２７】
従って、監視エージェントは、それぞれの監視対象アプリケーションが適切に稼働しているかどうかを識別する。適切に稼働していない場合には、監視エージェントは、少なくともいくつかの実施形態においては、アプリケーションが、障害に起因して稼働していないのか、又は、意図的にオフライン状態とされたことに起因して稼働していないのか、を更に弁別する。監視エージェントは、アプリケーション及びその検出された稼働状態について記述する情報を生成すると共にこの情報を意思決定エージェントに対して提供することができる。例えば、監視エージェント５０（１）は、アプリケーション４０（１）に障害が発生していることを検出すると共にそのアプリケーション４０（１）に障害が発生していることを示す情報を意思決定エージェント６０（１）に対して送信することができる。
【００２８】
監視エージェントから、それぞれのアプリケーションの状態（例えば、オンライン状態にある、障害状態にある、又は意図的にオフライン状態とされた状態にある）について記述した情報を受信することに応答して、意思決定エージェントは、実行するべき動作を決定する。ＶＭ内に監視対象アプリケーションが１つしか存在していない場合には、意思決定エージェントは、そのアプリケーションが正常に稼働している場合には、（仮想化コントローラがＶＭを再起動させないことを保証する）ハートビートメッセージを送信するように決定することになる。アプリケーションに障害が発生している場合には、意思決定エージェントは、ハートビートメッセージの送信を禁止するように決定し、この結果、仮想化コントローラは、その障害が発生したアプリケーションが稼働していたＶＭを再起動することになり、これにより、障害が発生したアプリケーションも、事実上、再起動されたＶＭにおいて再起動されることになる。
【００２９】
アプリケーションが意図的にオフライン状態とされている場合には（即ち、アプリケーションが稼働してはいないが、障害は発生していない場合には）、意思決定エージェントは、監視エージェントが、仮想化コントローラに対してハートビートを提供しないように登録を取り消すべきであると決定することができる。監視エージェントは、登録を取り消すための要求を仮想化コントローラに対して送信することにより、登録を取り消すことができる。この登録の取り消しにより、登録を取り消されたＶＭは、事実上、高可用性のための監視対象ＶＭの組から外されることになる。この結果、仮想化コントローラは、そのＶＭから定期的なハートビートメッセージを受け取ることを予想しなくなり、且つ、ハートビートがそのＶＭから受信されない際にそのＶＭを再起動することもなくなる。
【００３０】
インターフェイス（例えば、アプリケーションが意図的にオフライン状態とされた際に管理者が通知できるように使用される）により、監視エージェントが再登録するべき時点を管理者が指定できるようにすることもできる。例えば、管理者は、アプリケーションがオンライン状態に復帰した際に、監視エージェントがハートビートメッセージを再登録するべきかどうかを指定することができる。例えば、アプリケーションがアップグレードのためにオフライン状態とされている際には、管理者は、登録の取り消しが一時的であるべきであると指定することができる。この代わりに、もはやサービスの提供に使用されなくなったことを理由としてアプリケーションがオフライン状態とされている場合には、管理者は、その登録の取り消しが永久的であるべきであると指定することもできる。
【００３１】
監視エージェントは、ハートビート期間当たりに一回ずつ、それぞれの監視対象アプリケーションの状態を取得及び報告することができる。同様に、意思決定エージェントは、ハートビート期間当たりに一回ずつ、情報を受信すると共にその情報に基づいて決定を生成することができる。監視エージェントがハートビートを仮想化コントローラに送信するように登録されていない期間中においては、監視エージェントは、それにも拘わらず、アプリケーションの状態を監視すると共に意思決定エージェントに対するアプリケーションの状態に関する報告を継続することができる。同様に、期間当たりに一回ずつ、意思決定エージェントは、監視エージェントから情報を受信すると共にその情報を使用して実行するべき動作（例えば、ハートビートを送信するのか、ハートビートを送信しないのか、又は、登録を取り消すのか）を決定することができる。登録が取り消されている際にもアプリケーションの監視を継続することにより、監視エージェントは、アプリケーションがオンライン状態に復帰したことを検出することができる。この動作の検出に応答して、意思決定エージェントは、仮想化コントローラに対してハートビートメッセージを送信するべく監視エージェントが再登録するようにさせてもよい。
【００３２】
複数のアプリケーションが監視されている場合には、監視エージェントは、それぞれの監視対象アプリケーションの状態について適切な意思決定エージェントに対して報告することになり、次いで、その意思決定エージェントは、それぞれのアプリケーションの状態及び優先順位に基づいて、実行するべき動作を決定する。アプリケーションの優先順位は、（例えば、情報をコマンドラインインターフェイス又はグラフィカルユーザーインターフェイスを介して入力することによって）管理者が構成することが可能であり、且つ、意思決定エージェントによって保存することができる。
【００３３】
一般に、意思決定エージェントは、その決定を下す際に、相対的に低い優先順位のアプリケーションよりも相対的に高い優先順位のアプリケーションの状態に対して大きな重みを付与することになる。アプリケーションの優先順位を考慮した様々な異なるアルゴリズムのいずれかを使用することにより、このプロセスを実装することができる。例えば、単純なアルゴリズムは、単純に、最高優先順位のアプリケーションの状態を評価すると共にそのアプリケーションの状態に基づいて判定を実行することができる。最高優先順位のアプリケーションが適切に稼働している場合には、意思決定エージェントは、任意の相対的に低い優先順位のアプリケーションの状態とは無関係に、監視エージェントがハートビートを送信するべきであると決定することができる。同様に、すべての相対的に低い優先順位のアプリケーションが適切に稼働している場合にも、最高優先順位のアプリケーションに障害が発生している場合には、意思決定エージェントは、監視エージェントがハートビートメッセージを送信するべきではないと決定することができる。この例においては、すべての重みが、最高優先順位のアプリケーションの状態に対して付与されている。
【００３４】
その他のアルゴリズムは、最高優先順位のアプリケーション以外のアプリケーションに対して重みを割り当てていない上述の例よりも大きな重みを相対的に低い優先順位のアプリケーションに対して割り当てることができる。例えば、１つのアルゴリズムは、ＶＭにおいて監視されている障害が発生したアプリケーションの優先順位の合計をそのＶＭ内において監視されている適切に稼働しているアプリケーションの優先順位の合計と比較することができる。障害が発生したアプリケーションに対応する合計が大きい場合には、意思決定エージェントは、ハートビートの送信を停止するように決定することができる。同様に、適切に稼働しているアプリケーションに対応する合計が大きい場合には、意思決定エージェントは、ハートビートの送信を継続するように決定することができる。合計が等しい場合には、意思決定エージェントは、一実施形態においては、ハートビートの送信を停止するように決定することができる。別のアルゴリズムは、適切に稼働している及び意図的にオフライン状態とされているアプリケーションの優先順位の合計を障害が発生しているアプリケーションの優先順位の合計と比較することができる。前者の合計が大きい場合には、意思決定エージェントは、監視エージェントがハートビートの送信を継続するようにさせることになる。後者の合計が大きい場合には、意思決定エージェントは、ハートビートの送信を妨げることになる。
【００３５】
意思決定エージェントは、複数のアプリケーションの状態を単一のハートビート通信チャネルに圧縮することにより、事実上、複数のアプリケーションの状態を単一通信チャネル上の単一のハートビートメッセージに多重化している。この結果、本システムは、単一のハートビート通信チャネルのみであるにも拘わらず、構成された優先順位に基づいて、複数のアプリケーションの高可用性を提供することができる。
【００３６】
上述の例において、アプリケーションに障害が発生した場合の標準的な応答は、ハートビートメッセージの送信を停止させることにより、障害が発生したアプリケーションが稼働しているＶＭを再起動させるというものである。その他の実施形態においては、障害が発生したアプリケーションを収容しているＶＭを自動的に再起動させる代わりに、意思決定エージェントは、まず、障害が発生したアプリケーションの再起動を監視エージェントが試みるべできあると決定してもよい。意思決定エージェントがＶＭを再起動するべきであると決定する前に、（例えば、管理者がインターフェイスを介して情報を入力することにより）、障害が発生したアプリケーションについてこの決定が下される回数を制御することができる再試行の試みの許容最大数によって意思決定エージェントを構成することができる。再起動のための時間をアプリケーションに付与するために、意思決定エージェントは、監視エージェントがアプリケーションの再起動を試みている際に仮想化コントローラへの登録を取り消すように、監視エージェントに対して指示してもよい。
【００３７】
上述のように、それぞれの意思決定エージェントを制御するために使用される様々な情報は、管理者が情報をインターフェイスを介して入力することによって構成することができる。この情報は、ＶＭごとに、且つ、アプリケーションごとに、変化することができる。従って、１つのＶＭにおいて、管理者は、別のＶＭにおいてアプリケーションＡのインスタンスに対して割り当てられているものよりも高い優先順位をアプリケーションＡに付与するように、選択することができる。
【００３８】
図２は、可視化システムの別の例を示している。この例は、意思決定エージェントが監視エージェントとは異なる演算装置上において稼働するように、監視エージェントと意思決定エージェントの機能を分離する方法を示している。更には、この例は、監視エージェントと意思決定エージェントの間に１対１の対応関係が存在する必要がないことをも示している。
【００３９】
図２の例においては、サーバー７０及びホスト１０（１）及び１０（２）は、図１に示されているものと同様の方式によって構成されている。但し、それぞれのＶＭにおいて稼働する独立した意思決定エージェントの代わりに、別個の意思決定エージェント６０が演算装置９０上において稼働しており、この演算装置９０は、ホスト１０（１）及び１０（２）と通信するように結合されている。この例においては、それぞれの監視エージェント５０（１）〜５０（４）は、その監視エージェントによって生成された情報を単一の意思決定エージェント６０に対して送信するように構成されており、次いで、この単一の意思決定エージェント６０が、上述のもののような技法を使用することにより、その情報を処理し、決定を生成する。次いで、意思決定エージェント６０は、その決定を表す情報を適切な監視エージェントに対して返す。例えば、アプリケーション４０（３）よりも高い優先順位を有するアプリケーション４０（４）に障害が発生したことを通知する情報を監視エージェント５０（３）から受信するのに応答して、意思決定エージェント６０は、監視エージェント５０（３）が、仮想化コントローラ７０へのハートビートメッセージの送信を停止するべきであると決定することができる。この決定を識別する情報の受信に応答して、監視エージェント５０（３）は、仮想化コントローラ８０へのハートビートメッセージの送信を中止することになり、その結果、仮想化コントローラ８０は、ＶＭ３０（３）を異なるホスト（例えば、ホスト１０（１））上において再起動することになる。
【００４０】
図１の例と同様に、管理者は、それぞれのＶＭ上の異なるアプリケーションが様々な優先順位を有するように、意思決定エージェント６０を構成することができる。管理者は、それぞれのアプリケーションごとに、且つ、それぞれのＶＭごとに、異なる情報を提供することができる。意思決定エージェントは、監視エージェントがそれに基づいて情報を送信した監視エージェントから受け取った情報の所与の組を処理するために使用する優先順位及びその他の情報（例えば、障害が発生したアプリケーションが稼働しているＶＭをフェイルオーバーするように決定する前にアプリケーションの再起動を試みる回数など）を選択することができる。従って、監視エージェント５０（１）からの情報の受信に応答して、意思決定エージェント６０は、ＶＭ３０（１）と関連する情報を使用して受信情報を処理するように選択することができる。
【００４１】
図３は、仮想化環境において高可用性アプリケーションを提供する方法を示している。この方法は、意思決定エージェントとの関連において動作する監視エージェントによって実行することができる。上述のように、これらのコンポーネントは、互いに同一の演算装置上において稼働してもしなくてもよい。
【００４２】
本方法は、３００に示されているように、仮想機械において稼働している監視エージェントが仮想機械において稼働しているアプリケーションの状態を検出した際に始まる。動作３００の実行は、監視サービスグループエージェントが、監視対象のアプリケーションを含む別のサービスグループの状態を監視するステップを伴ってもよい。動作３００の結果を表す情報を監視エージェントから意思決定エージェントに送信することが可能であり、意思決定エージェントは、監視エージェントと統合してもしなくてもよい。
【００４３】
３０５の判定において、監視対象アプリケーションが適切に稼働している場合には、３１０に示されているように、仮想機械を監視している仮想化コントローラに対してハートビートメッセージを提供するように監視エージェントが現在登録されているかどうかについての判定を実行することができる。動作３０５及び３１０は、監視エージェントによって生成された情報を処理する意思決定エージェントによって実行することができる。
【００４４】
ハートビートメッセージを提供するように監視エージェントが現在登録されていない場合には、監視エージェントは、３１５に示されているように、ハートビートメッセージを提供するように登録され、且つ、その結果、現在の期間においてハートビートを送信することになる。監視エージェントがハートビートを提供するように現在登録されている場合には、３２０に示されているように、監視エージェントは、ハートビートメッセージを現在の期間において仮想化コントローラに対して送信することになる。動作３１５及び３２０の実行は、意思決定エージェントが、実行する動作を決定し、且つ、その決定を監視エージェントに伝達するステップと、次いで、監視エージェントが、意思決定エージェントによって選択された動作を実行するステップと、を伴うことができる。
【００４５】
アプリケーションが適切に稼働していない場合には、３２５に示されているように、アプリケーションに障害が発生しているのか、又は、意図的にオフライン状態とされているか、に関する決定が実行される。動作３２５の実行は、（例えば、意図的にオフライン状態とされているアプリケーションの場合には、管理者が入力した情報を使用することによって）監視エージェントがアプリケーションの状態を検出するステップと、意思決定エージェントがその情報を処理するステップと、を伴うことができる。
【００４６】
アプリケーションに障害が発生している場合には、監視エージェントは、３４０及び３４５に示されているように、（未だ登録されていない場合には）ハートビートを提供するように登録されることになる。この結果、監視エージェントは、３３０に示されているように、ハートビートメッセージを仮想化コントローラに対して送信しないことになる。
【００４７】
一方、アプリケーションが意図的にオフライン状態とされている場合には、監視エージェントは、３３５に示されているように、仮想化コントローラにハートビートを送信しないように登録解除されることになる。動作３３０及び３３５の実行は、意思決定エージェントが、実行するべき動作を決定し、且つ、その決定を監視エージェントに対して伝達するステップと、次いで、監視エージェントが、意思決定エージェントによって選択された動作を実行するステップと、を伴うことができる。
【００４８】
図３の方法（及び、同様に、後述する図４の方法）は、ハートビート期間当たりに一回ずつ、反復することができる。従って、一例として、１つの期間において、アプリケーションは、適切に動作していると検出される可能性があり、且つ、次の期間において、同一のアプリケーションが、意図的にオフライン状態とされていると検出される可能性がある。これに応答して、監視エージェントの登録を取り消すことができる。この後のいくつかの期間において、アプリケーションは、再度、オンライン状態にあると検出される可能性があり、従って、監視エージェントを、再度、ハートビートを提供するように登録することができる。この後のある時点において、監視エージェントは、アプリケーションに障害が発生していることを検出する可能性があり、その結果、監視エージェントは、ハートビートの送信を中止することにより、（アプリケーションが稼働している仮想機械を再起動させることによって）アプリケーションを再起動させることができる。
【００４９】
図４は、仮想化環境において複数のアプリケーションの高可用性を提供する方法の一例である。図３の方法と同様に、この方法は、意思決定エージェントとの関連において動作している監視エージェントによって実行することができる。
【００５０】
図３の方法は、監視エージェントが、監視エージェントと同一の仮想機械において稼働しているいくつかの監視対象アプリケーションのうちのそれぞれのアプリケーションの動作状態（例えば、適切に稼働している、障害が発生している、又は意図的にオフライン状態とされている）を検出した際に４００において始まる。意思決定エージェントが、（例えば、管理者が入力した構成情報に対してアクセスすることによって）監視対象アプリケーションのうちのそれぞれのアプリケーションの優先順位を検出することもできる。
【００５１】
４０５において、意思決定エージェントは、アプリケーションの動作状態を識別する情報と、優先順位と、を使用し、１つ又は複数のアプリケーションの望ましい組が適切に稼働しているかどうかを判定する。意思決定エージェントは、この決定を下すために、上述のアルゴリズムのうちの１つを、又は、アプリケーションの優先順位を考慮した任意のその他のアルゴリズムを使用することができる。
【００５２】
望ましいアプリケーションが稼働しており、且つ、監視エージェントが、仮想化コントローラに対して仮想機械のハートビートを提供するように現在登録されている場合には、意思決定エージェントは、４２０に示されているように、監視エージェントが現在の期間においてハートビートメッセージを送信するべきであると決定する。監視エージェントが、現在登録されていない場合には、監視エージェントは、登録され（４１５）、且つ、その結果、ハートビートメッセージを送信することになる（４２０）。
【００５３】
望ましいアプリケーションが適切に稼働していない場合には、意思決定エージェントは、４２５に示されているように、（例えば、最高優先順位のアプリケーションの動作状態を調べることにより、障害が発生した及び意図的にオフライン状態とされたアプリケーションの優先順位の合計を比較することにより、又は、これらに類似したものにより）望ましいアプリケーションに障害が発生しているのか、又は、意図的にオフライン状態とされているのか、を判定することができる。望ましいアプリケーションに障害が発生している場合には、監視エージェントは、４４０及び４４５に示されているように、（未だ登録されていない場合には）ハートビートを提供するように登録されることになる。意思決定エージェントは、監視エージェントが現在の期間においてハートビートメッセージを送信しないようにさせることが可能であり（４３０）、この結果、仮想化コントローラは、障害が発生したアプリケーションが稼働していたＶＭを別のホスト上において再起動させることになる。一方、望ましいアプリケーションが意図的にオフライン状態とされている場合には、意思決定エージェントは、４３５に示されているように、監視エージェントが仮想化コントローラとの登録を取り消すようにすることができる。
【００５４】
図５は、上述の監視エージェント及び／又は意思決定エージェントを実装する能力を有する演算システム５１０のブロックダイアグラムである。演算システム５１０は、コンピュータ可読命令を実行する能力を有する任意のシングル又はマルチプロセッサ演算装置又はシステムを概略的に表している。演算システム５１０の例は、限定を伴うことなしに、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアントサイド端末、サーバー、分散型演算システム、ハンドヘルド型装置（例えば、パーソナルデジタルアシスタント及び携帯電話機）、ネットワーク装置、ストレージコントローラ（例えば、アレイコントローラ、テープドライブコントローラ、又はハードドライブコントローラ）、及びこれらに類似したものを含む様々な装置のうちの任意の１つ又は複数の装置を含む。その最も基本的な構成においては、演算システム５１０は、少なくとも１つのプロセッサ５１４と、システムメモリ５１６と、を含んでもよい。監視エージェント及び／又は意思決定エージェントを実装するソフトウェアを実行することにより、演算システム５１０は、仮想化環境における１つ又は複数のアプリケーションの高可用性を提供するように構成された特殊目的演算装置となる。
【００５５】
プロセッサ５１４は、データを処理する又は命令を解釈及び実行する能力を有する任意のタイプ又は形態の処理ユニットを概略的に表している。特定の実施形態においては、プロセッサ５１４は、ソフトウェアアプリケーション又はモジュールから命令を受け取ってもよい。これらの命令は、本明細書に記述及び／又は図示されている実施形態のうちの１つ又は複数の実施形態の機能をプロセッサ５１４に実行させてもよい。例えば、プロセッサ５１４は、本明細書に記述されている動作を実行してもよいと共に／又は実行するための手段であってもよい。又、プロセッサ５１４は、本明細書に記述及び／又は図示されている任意のその他の動作、方法、又はプロセスを実行してもよいと共に／又は実行するための手段であってもよい。
【００５６】
システムメモリ５１６は、データ及び／又はその他のコンピュータ可読命令を保存する能力を有する任意のタイプ又は形態の揮発性又は不揮発性のストレージ装置又は媒体を概略的に表している。システムメモリ５１６の例は、限定を伴うことなしに、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、又は任意のその他の適切なメモリ装置を含む。必須ではないが、特定の実施形態においては、演算システム５１０は、揮発性のメモリユニット（例えば、システムメモリ５１６など）と不揮発性のストレージ装置（例えば、後程詳述する主ストレージ装置５３２など）の両方を含んでもよい。一例においては、監視エージェント５０（例えば、図５及び図２の監視エージェント５０（１）〜５０（４）のうちの１つ）又は意思決定エージェント６０（例えば、図１の意思決定エージェント６０（１）〜６０（４）のうちの１つ又は図２の意思決定エージェント６０）の１つ又は複数をシステムメモリ５１６内に読み込んでもよい。
【００５７】
特定の実施形態においては、演算システム５１０は、プロセッサ５１４及びシステムメモリ５１６に加えて、１つ又は複数のコンポーネント又は要素も含んでもよい。例えば、図５に示されているように、演算システム５１０は、メモリコントローラ５１８、入出力（Ｉ／Ｏ）コントローラ５２０、及び通信インターフェイス５２２を含んでもよく、これらのそれぞれは、通信インフラストラクチャ５１２を介して相互接続されてもよい。通信インフラストラクチャ５１２は、演算装置の１つ又は複数のコンポーネントの間の通信を促進する能力を有する任意のタイプ又は形態のインフラストラクチャを概略的に表している。通信インフラストラクチャ５１２の例は、限定を伴うことなしに、通信バス（ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＰＣＩｅ（ＰＣＩ  ｅｘｐｒｅｓｓ）、又はこれらに類似したバスなど）と、ネットワークと、を含む。
【００５８】
メモリコントローラ５１８は、メモリ又はデータを処理するか又は演算システム５１０の１つ又は複数のコンポーネント間における通信を制御する能力を有する任意のタイプ又は形態の装置を概略的に表している。例えば、特定の実施形態においては、メモリコントローラ５１８は、プロセッサ５１４、システムメモリ５１６、及びＩ／Ｏコントローラ５２０の間における通信を通信インフラストラクチャ５１２を介して制御してもよい。特定の実施形態においては、メモリコントローラ５１８は、単独で又はその他の要素との組合せにおいて、本明細書に記述及び／又は図示されている動作又は機能のうちの１つ又は複数を実行してもよいと共に／又はこれを実行するための手段であってもよい。
【００５９】
Ｉ／Ｏコントローラ５２０は、演算装置の入出力機能を調整及び／又は制御する能力を有する任意のタイプ又は形態のモジュールを概略的に表している。例えば、特定の実施形態においては、Ｉ／Ｏコントローラ５２０は、プロセッサ５１４、システムメモリ５１６、通信インターフェイス５２２、ディスプレイアダプタ５２６、入力インターフェイス５３０、及びストレージインターフェイス５３４などの演算システム５１０の１つ又は複数の要素の間のデータの転送を制御又は促進してもよい。
【００６０】
通信インターフェイス５２２は、演算システム５１０と１つ又は複数の更なる装置の間の通信を促進する能力を有する任意のタイプ又は形態の通信装置又はアダプタを概略的に表している。例えば、特定の実施形態においては、通信インターフェイス５２２は、演算システム５１０と更なる演算システムを含むプライベート又はパブリックネットワークの間の通信を促進してもよい。通信インターフェイス５２２の例は、限定を伴うことなしに、有線ネットワークインターフェイス（ネットワークインターフェイスカードなど）、無線ネットワークインターフェイス（無線ネットワークインターフェイスカードなど）、モデム、及び任意のその他の適切なインターフェイスを含む。少なくとも１つの実施形態においては、通信インターフェイス５２２は、インターネットなどのネットワークに対する直接リンクを介してリモートサーバーに対する直接接続を提供してもよい。又、通信インターフェイス５２２は、例えば、ローカルエリアネットワーク（Ｅｔｈｅｒｎｅｔネットワークなど）、パーソナルエリアネットワーク、電話又はケーブルネットワーク、セルラー電話接続、衛星データ接続、又は任意のその他の適切な接続を通じて、このような接続を間接的に提供してもよい。
【００６１】
又、特定の実施形態において、通信インターフェイス５２２は、演算システム５１０と１つ又は複数の更なるネットワーク又はストレージ装置の間の通信を外部バス又は通信チャネルを介して促進するように構成されたホストアダプタを表してもよい。ホストアダプタの例は、限定を伴うことなしに、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ホストアダプタ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ホストアダプタ、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）１３９４ホストアダプタ、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）及びｅＳＡＴＡ（ｅｘｔｅｒｎａｌ  ＳＡＴＡ）ホストアダプタ、ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）及びＰＡＴＡ（Ｐａｒａｌｌｅｌ  ＡＴＡ）ホストアダプタ、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌインターフェイスアダプタ、Ｅｔｈｅｒｎｅｔアダプタ、又は、これらに類似したものを含む。
【００６２】
通信インターフェイス５２２は又、演算システム５１０が分散又はリモート演算に関与することを許容してもよい。例えば、通信インターフェイス５２２は、リモート装置から命令を受信しても、実行のためにリモート装置に対して命令を送信してもよい。
【００６３】
図５に示されているように、演算システム５１０は、ディスプレイアダプタ５２６を介して通信インフラストラクチャ５１２に結合された少なくとも１つの表示装置５２４も含んでもよい。表示装置５２４は、ディスプレイアダプタ５２６によって転送された情報を視覚的に表示する能力の有る任意のタイプ又は形態の装置を概略的に表している。同様に、ディスプレイアダプタ５２６は、表示装置５２４上における表示ために通信インフラストラクチャ５１２から（又は、当技術分野において既知のように、フレームバッファから）グラフィックス、テキスト、及びその他のデータを転送するように構成された任意のタイプ又は形態の装置を概略的に表している。
【００６４】
図５に示されているように、演算システム５１０は、入力インターフェイス（５３０）を介して通信インフラストラクチャ５１２に結合された少なくとも１つの入力装置５２８も含んでもよい。入力装置５２８は、コンピュータ又は人間によって生成された入力を演算システム５１０に提供する能力を有する任意のタイプ又は形態の入力装置を概略的に表している。入力装置５２８の例は、限定を伴うことなしに、キーボード、ポインティング装置、音声認識装置、又は任意のその他の入力装置を含む。
【００６５】
図５に示されているように、演算システム５１０は、ストレージインターフェイス５３４を介して通信インフラストラクチャ５１２に結合された主ストレージ装置５３２及びバックアップストレージ装置５３３も含んでもよい。ストレージ装置５３２及び５３３は、データ及び／又はその他のコンピュータ可読命令を保存する能力を有する任意のタイプ又は形態のストレージ装置又は媒体を概略的に表している。例えば、ストレージ装置５３２及び５３３は、磁気ディスクドライブ（例えば、所謂ハードドライブ）、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ、又はこれらに類似したものであってよい。ストレージインターフェイス５３４は、ストレージ装置５３２及び５３３と演算システム５１０のその他のコンポーネントの間においてデータを転送するための任意のタイプ又は形態のインターフェイス又は装置を概略的に表している。主ストレージ装置５３２のようなストレージ装置は、構成情報５９０（例えば、上述のアプリケーションの優先順位及びアプリケーション当たりの再試行の試みの数を示す構成情報）などの情報を保存することができる。
【００６６】
特定の実施形態においては、ストレージ装置５３２及び５３３は、コンピュータソフトウェア、データ、又はその他のコンピュータ可読情報を保存するように構成された着脱自在のストレージユニットとの間において読取り及び／又は書込みを実行するように構成してもよい。適切な着脱自在のストレージユニットの例は、限定を伴うことなしに、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリ装置、又はこれらに類似したものを含む。又、ストレージ装置５３２及び５３３は、コンピュータソフトウェア、データ、又はその他のコンピュータ可読命令を演算システム５１０に読み込むことができるようにするためのその他の類似の構造又は装置を含んでもよい。例えば、ストレージ装置５３２及び５３３は、ソフトウェア、データ、又はその他のコンピュータ可読情報の読取り及び書込みを実行するように構成してもよい。又、ストレージ装置５３２及び５３３は、演算システム５１０の一部であってもよく、又は、その他のインターフェイスシステムを通じてアクセスされる別個の装置であってもよい。
【００６７】
多くのその他の装置又はサブシステムを演算システム５１０に接続してもよい。逆に、本明細書に記述及び／又は図示されている実施形態を実施するために、図５に示されているコンポーネント及び装置のすべてが存在する必要はない。又、以上において参照した装置及びサブシステムは、図５に示されているものとは異なる方法によって相互接続してもよい。
【００６８】
演算システム５１０は又、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を利用してもよい。例えば、本明細書に開示されている実施形態のうちの１つ又は複数をコンピュータ可読ストレージ媒体上のコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御ロジックとも呼称される）として符号化してもよい。コンピュータ可読ストレージ媒体の例は、磁気ストレージ媒体（例えば、ハードディスクドライブ及びフロッピーディスク）、光ストレージ媒体（例えば、ＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭ）、電子ストレージ媒体（例えば、半導体ドライブ及びフラッシュ媒体）、及びこれらに類似したものを含む。又、このようなコンピュータプログラムは、メモリ内における保存のために、インターネットなどのネットワークを介して、又は、担持媒体上において、演算システム５１０に転送することもできる。
【００６９】
コンピュータプログラムを収容するコンピュータ可読媒体を演算システム５１０に装着してもよい。次いで、コンピュータ可読媒体上に保存されているコンピュータプログラムのすべて又は一部をシステムメモリ５１６及び／又はストレージ装置５３２及び５３３の様々な部分に保存してもよい。演算システム５１０に読み込まれたコンピュータプログラムは、プロセッサ５１４によって実行された際に、プロセッサ５１４が本明細書に記述及び／又は図示されている実施形態のうちの１つ又は複数の実施形態の機能を実行するようにさせてもよいと共に／又は実行するための手段となるようにさせてもよい。更には、或いは、この代わりに、本明細書に記述及び／又は図示されている実施形態のうちの１つ又は複数をファームウェア及び／又はハードウェアとして実装してもよい。例えば、演算システム５１０は、本明細書に開示されている実施形態のうちの１つ又は複数を実装するように適合されたＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）として構成してもよい。
【００７０】
図６は、クライアントシステム６１０、６２０、及び６３０並びにサーバー６４０及び６４５をネットワーク６５０に結合してもよいネットワークアーキテクチャ６００のブロックダイアグラムである。クライアントシステム６１０、６２０、及び６３０は、図５の演算システム５１０などの任意のタイプ又は形態の演算装置又はシステムを概略的に表している。
【００７１】
同様に、サーバー６４０及び６４５は、様々なデータベースサービスを提供すると共に／又は特定のソフトウェアアプリケーションを稼働させるように構成されたアプリケーションサーバー又はデータベースサーバーなどの演算装置又はシステムを概略的に表している。ネットワーク６５０は、例えば、イントラネット、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、又はインターネットを含む任意の通信又はコンピュータネットワークを概略的に表している。一例においては、クライアントシステム６１０、６２０、及び／又は６３０並びに／若しくはサーバー６４０及び／又は６４５は、図１及び図２に示されているように、監視エージェント及び／又は意思決定エージェントを含んでもよい。
【００７２】
図６に示されているように、１つ又は複数のストレージ装置６６０（１）〜６６０（Ｎ）をサーバー６４０に対して直接的に装着してもよい。同様に、１つ又は複数のストレージ装置６７０（１）〜６７０（Ｎ）をサーバー６４５に対して直接的に装着してもよい。ストレージ装置６６０（１）〜６６０（Ｎ）及びストレージ装置６７０（１）〜６７０（Ｎ）は、データ及び／又はその他のコンピュータ可読命令を保存する能力を有する任意のタイプ又は形態のストレージ装置又は媒体を概略的に表している。特定の実施形態においては、ストレージ装置６６０（１）〜６６０（Ｎ）及びストレージ装置６７０（１）〜６７０（Ｎ）は、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＳＭＢ（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋ）、又はＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）などの様々なプロトコルを使用してサーバー６４０及び６４５と通信するように構成されたＮＡＳ（Ｎｅｔｗｏｒｋ−Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）装置を表してもよい。
【００７３】
又、サーバー６４０及び６４５をＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ファブリック６８０に接続してもよい。ＳＡＮファブリック６８０は、複数のストレージ装置の間の通信を促進する能力を有する任意のタイプ又は形態のコンピュータネットワーク又はアーキテクチャを概略的に表している。ＳＡＮファブリック６８０は、サーバー６４０及び６４５、複数のストレージ装置６９０（１）〜６９０（Ｎ）、及び／又はインテリジェットストレージアレイ６９５の間の通信を促進してもよい。又、ＳＡＮファブリック６８０は、装置６９０（１）〜６９０（Ｎ）及びアレイ６９５が、クライアントシステム６１０、６２０、及び６３０にとって、ローカルに装着された装置として見えるように、クライアントシステム６１０、６２０、及び６３０、及びストレージ装置６９０（１）〜６９０（Ｎ）、並びに／又はインテリジェントストレージアレイ６９５の間の通信をネットワーク６５０並びにサーバー６４０及び６４５を介して促進してもよい。ストレージ装置６６０（１）〜６６０（Ｎ）及びストレージ装置６７０（１）〜６７０（Ｎ）と同様に、ストレージ装置６９０（１）〜６９０（Ｎ）及びインテリジェントストレージアレイ６９５も、データ及び／又はその他のコンピュータ可読媒体命令を保存する能力を有する任意のタイプ又は形態のストレージ装置又は媒体を概略的に表している。
【００７４】
特定の実施形態においては、且つ、図５の演算システム５１０を参照すれば、図５の通信インターフェイス５２２などの通信インターフェイスを使用し、それぞれのクライアントシステム６１０、６２０、及び６３０とネットワーク６５０の間の接続を提供してもよい。クライアントシステム６１０、６２０、及び６３０は、例えば、ウェブブラウザ又はその他のクライアントソフトウェアを使用することにより、サーバー６４０又は６４５上の情報に対してアクセスすることができてもよい。このようなソフトウェアは、クライアントシステム６１０、６２０、及び６３０が、サーバー６４０、サーバー６４５、ストレージ装置６６０（１）〜６６０（Ｎ）、ストレージ装置６７０（１）〜６７０（Ｎ）、ストレージ装置６９０（１）〜６９０（Ｎ）、又はインテリジェットストレージアレイ６９５によってホスティングされたデータに対してアクセスできるようにしてもよい。図６は、データを交換するためのネットワーク（インターネットなど）の使用法を示しているが、本明細書に記述及び／又は図示されている実施形態は、インターネット又は任意の特定のネットワークに基づいた環境に限定されるものではない。
【００７５】
少なくとも一実施形態においては、本明細書に開示されている実施形態のうちの１つ又は複数の実施形態のすべて又は一部をコンピュータプログラムとして符号化してもよく、且つ、サーバー６４０、サーバー６４５、ストレージ装置６６０（１）〜６６０（Ｎ）、ストレージ装置６７０（１）〜６７０（Ｎ）、ストレージ装置６９０（１）〜６９０（Ｎ）、インテリジェントストレージアレイ６９５、又はこれらの任意の組合せに読み込んでもよく、且つ、これらによって実行してもよい。又、本明細書に開示されている実施形態のうちの１つ又は複数の実施形態のすべて又は一部をコンピュータプログラムとして符号化してもよく、サーバー６４０内に保存してもよく、サーバー６４５によって実行してもよく、且つ、ネットワーク６５０上においてクライアントシステム６１０、６２０、及び６３０に分配してもよい。
【００７６】
いくつかの例においては、図１のシステム１００のすべて又は一部は、クラウド演算の又はネットワークに基づいた環境の一部を表してもよい。クラウド演算環境は、様々なサービス及びアプリケーションをインターネットを介して提供してもよい。これらのクラウドに基づいたサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど）には、ウェブブラウザ又はその他のリモートインターフェイスを通じてアクセス可能であってよい。本明細書に記述されている様々な機能は、リモートデスクトップ環境又は任意のその他のクラウドに基づいた演算環境を通じて提供してもよい。
【００７７】
更には、本明細書に記述されているコンポーネントの１つ又は複数は、データ、物理的装置、及び／又は物理的装置の表現を１つの形態から別の形態に変換してもよい。例えば、監視エージェントとの関連において動作する意思決定エージェントは、ハートビートメッセージの送信を制御することにより、仮想機械を別のホスト上において再起動させるように、仮想化システムの構成を変換してもよい。
【００７８】
以上、いくつかの実施形態との関連において、本発明について説明したが、本発明は、本明細書に記述されている特定の形態に限定されるものと解釈してはならない。逆に、本発明は、添付の請求項によって規定された本発明の範囲に合理的に含まれうる代替形態、変形形態、及び均等物も含むものと解釈されたい。
【産業上の利用可能性】
【００７９】
本発明は、演算装置及びネットワーク接続された演算装置の分野に適用される。
【図１】
0005851503.tif 000002
【図２】
0005851503.tif 000003
【図３】
0005851503.tif 000004
【図４】
0005851503.tif 000005
【図５】
0005851503.tif 000006
【図６】
0005851503.tif 000007