(57)【特許請求の範囲】
【請求項１】
ネットワーク・サーバ間で仮想マシンを移行させるための方法であって、前記サーバはデータ通信のためにデータ通信ネットワークに結合されており、前記ネットワークはネットワーク・デバイスを含み、前記方法は、
仮想マシン管理モジュール（「ＶＭＭＭ」）によって特定のサーバ上に１つまたはそれ以上の仮想マシンを確立するステップと、
データ通信のために前記ネットワーク・デバイスを前記特定のサーバに結合しているリンクのリンク統計を前記ＶＭＭＭから前記ネットワーク・デバイスに問い合わせるステップと、
前記ＶＭＭＭが前記リンク統計に依存して、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するステップと、
もし前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化していれば、前記特定のサーバ上で実行している仮想マシンを行先サーバに移行させるステップと
を含み、前記ネットワーク・デバイスを前記行先サーバに結合するリンクのリンク統計が、当該リンクが劣化していないことを示す、方法。
【請求項２】
前記特定のサーバ上で実行している仮想マシンを行先サーバに移行させるステップはさらに、
前記ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計を前記ネットワーク・デバイスに問い合わせるステップと、
前記リンク統計に依存して、劣化していないリンクを識別するステップと、
前記劣化していないリンクによって前記ネットワーク・デバイスに結合されているサーバを、前記特定のサーバ上で実行している前記仮想マシンに対する前記行先サーバとして選択するステップと
を含む、請求項１に記載の方法。
【請求項３】
仮想マシンを移行させるステップは、劣化していないリンクが利用可能なときにのみ前記仮想マシンを移行させるステップをさらに含み、前記ステップは、
前記ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計を前記ネットワーク・デバイスに問い合わせるステップと、
前記ネットワーク・デバイスを他のサーバに結合しているリンクの前記リンク統計に依存して、前記ネットワーク・デバイスが故障していると判断するステップと、
前記ネットワーク・サーバ間のデータ通信のためのフェールオーバ・ネットワーク・デバイスを選択するステップと、
前記特定のサーバ上の前記仮想マシンを移行させないステップと
を含む、請求項１または２に記載の方法。
【請求項４】
前記リンク統計は、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンク上で受け取られたエラーのバイトを表す複数のタイムスタンプを押されたエントリを含み、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するステップはさらに、
エラーのバイトを表す前記タイムスタンプを押されたエントリからビット・エラー率を算出するステップと、
前記算出されたビット・エラー率が予め定められた閾値よりも大きいかどうかを判断するステップと、
もし前記算出されたビット・エラー率が前記予め定められた閾値よりも大きければ、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化していると判断するステップと
を含む、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記リンク統計は、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンク上で受け取られたテスト・データのシンボル・エラーを記述する情報を含み、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するステップはさらに、
シンボル・エラーを記述する前記情報に依存して、前記シンボル・エラーの頻度を算出するステップと、
シンボル・エラーを記述する前記情報に依存して、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンク上のシンボル・エラーの頻度が予め定められた閾値よりも大きいかどうかを判断するステップと、
もしシンボル・エラーの前記頻度が前記予め定められた閾値よりも大きければ、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化していると判断するステップと
を含む、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記サーバを互いのサーバおよび前記ネットワーク・デバイスに結合しているリンクを通過する前記サーバ間のデータ通信を前記ネットワーク・デバイスによってモニタリングするステップと、
前記サーバを互いのサーバおよび前記ネットワーク・デバイスに結合している前記リンクを通過する前記サーバ間の前記データ通信を記述するリンク統計を管理情報ベース（「ＭＩＢ」）に保存するステップと
をさらに含む、請求項１から５のいずれか１項に記載の方法。
【請求項７】
ネットワーク・サーバ間で仮想マシンを移行させるための装置であって、前記サーバはデータ通信のためにデータ通信ネットワークに結合されており、前記ネットワークはネットワーク・デバイスを含み、前記装置はコンピュータ・プロセッサと、前記コンピュータ・プロセッサに動作的に結合されたコンピュータ・メモリとを有し、前記装置は、
仮想マシン管理モジュール（「ＶＭＭＭ」）によって特定のサーバ上に１つまたはそれ以上の仮想マシンを確立するための手段と、
データ通信のために前記ネットワーク・デバイスを前記特定のサーバに結合しているリンクのリンク統計を前記ＶＭＭＭから前記ネットワーク・デバイスに問い合わせるための手段と、
前記ＶＭＭＭが前記リンク統計に依存して、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するための手段と、
もし前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化していれば、前記特定のサーバ上で実行している仮想マシンを行先サーバに移行させるための手段と
を含み、前記ネットワーク・デバイスを前記行先サーバに結合するリンクのリンク統計が、当該リンクが劣化していないことを示す、装置。
【請求項８】
前記特定のサーバ上で実行している仮想マシンを行先サーバに移行させるための前記手段はさらに、
前記ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計を前記ネットワーク・デバイスに問い合わせるための手段と、
前記リンク統計に依存して、劣化していないリンクを識別するための手段と、
前記劣化していないリンクによって前記ネットワーク・デバイスに結合されているサーバを、前記特定のサーバ上で実行している前記仮想マシンに対する前記行先サーバとして選択するための手段と
を含む、請求項７に記載の装置。
【請求項９】
仮想マシンを移行させるための前記手段は、劣化していないリンクが利用可能なときにのみ前記仮想マシンを移行させるための手段をさらに含み、前記手段は、
前記ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計を前記ネットワーク・デバイスに問い合わせるための手段と、
前記ネットワーク・デバイスを他のサーバに結合しているリンクの前記リンク統計に依存して、前記ネットワーク・デバイスが故障していると判断する手段と、
前記ネットワーク・サーバ間のデータ通信のためのフェールオーバ・ネットワーク・デバイスを選択するための手段と、
前記特定のサーバ上の前記仮想マシンを移行させない手段と
を含む、請求項７または８に記載の装置。
【請求項１０】
前記リンク統計は、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンク上で受け取られたエラーのバイトを表す複数のタイムスタンプを押されたエントリを含み、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するための前記手段はさらに、
エラーのバイトを表す前記タイムスタンプを押されたエントリからビット・エラー率を算出するための手段と、
前記算出されたビット・エラー率が予め定められた閾値よりも大きいかどうかを判断するための手段と、
もし前記算出されたビット・エラー率が前記予め定められた閾値よりも大きければ、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化していると判断する手段と
を含む、請求項７から９のいずれか１項に記載の装置。
【請求項１１】
前記リンク統計は、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンク上で受け取られたテスト・データのシンボル・エラーを記述する情報を含み、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するための前記手段はさらに、
シンボル・エラーを記述する前記情報に依存して、前記シンボル・エラーの頻度を算出するための手段と、
シンボル・エラーを記述する前記情報に依存して、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンク上のシンボル・エラーの頻度が予め定められた閾値よりも大きいかどうかを判断するための手段と、
もしシンボル・エラーの前記頻度が前記予め定められた閾値よりも大きければ、前記ネットワーク・デバイスを前記特定のサーバに結合している前記リンクが劣化していると判断する手段と
を含む、請求項７から１０のいずれか１項に記載の装置。
【請求項１２】
前記サーバを互いのサーバおよび前記ネットワーク・デバイスに結合しているリンクを通過する前記サーバ間のデータ通信を前記ネットワーク・デバイスによってモニタリングするための手段と、
前記サーバを互いのサーバおよび前記ネットワーク・デバイスに結合している前記リンクを通過する前記サーバ間の前記データ通信を記述するリンク統計を管理情報ベース（「ＭＩＢ」）に保存するための手段と
をさらに含む、請求項７から１１のいずれか１項に記載の装置。
【請求項１３】
コンピュータ・プログラムであって、コンピュータ・システムにロードされてそこで実行されるときに、請求項１から６のいずれか１項に記載の方法のすべての前記ステップを前記コンピュータ・システムに行わせるためのコンピュータ・プログラム・コードを含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、より特定的には、ネットワーク・リンク動作の劣化を検出した際にネットワーク・サーバ間で仮想マシンを移行させるための方法、装置および製品である。
【背景技術】
【０００２】
１９４８年のＥＤＶＡＣコンピュータ・システムの開発は、コンピュータ時代の始まりとしてしばしば引用される。その頃からコンピュータ・システムは進化して、極度に複雑なデバイスとなった。現在のコンピュータは、ＥＤＶＡＣなどの初期のシステムよりもかなり精巧になっている。コンピュータ・システムは典型的に、ハードウェアおよびソフトウェア・コンポーネント、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入力／出力デバイスなどの組み合わせを含む。半導体処理およびコンピュータ・アーキテクチャの進歩によってコンピュータの性能が高くなるに従って、より高性能のハードウェアを活用するためにコンピュータ・ソフトウェアが一層精巧に進化してきた結果、現在のコンピュータ・システムはほんの数年前よりもかなり強力になっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
現在のコンピュータ・システムは、データ通信のためにしばしばネットワーク化されており、かつしばしば仮想マシン、すなわちハードウェアをエミュレートするソフトウェアを使用することによっていくつかのオペレーティング・システムを同時に実行させる。時々、コンピュータ・システムをつなぐネットワーク・デバイスおよびデータ通信リンクが障害を起こし始めることがある。現在の仮想マシンおよび仮想マシンを実行するコンピュータ・システムの間のデータ通信を維持する方法は典型的に、修正動作を取る前に完全な通信障害が起こるまで待つか、または仮想マシンを実行するコンピュータからの大量の処理力を要求する。よって、公知の技術のこれらの欠点に対処することが望ましい。
【課題を解決するための手段】
【０００４】
したがって本発明は第１の局面において、ネットワーク・サーバ間で仮想マシンを移行させるための方法を提供し、このサーバはデータ通信のためにデータ通信ネットワークに結合されており、このネットワークはネットワーキング・デバイスを含み、この方法は、仮想マシン管理モジュール（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｍａｎａｇｅｍｅｎｔ  ｍｏｄｕｌｅ：「ＶＭＭＭ」）によって特定のサーバ上に１つまたはそれ以上の仮想マシンを確立するステップと、データ通信のためにネットワーク・デバイスをその特定のサーバに結合しているリンクのリンク統計をＶＭＭＭからネットワーキング・デバイスに問い合わせるステップと、ＶＭＭＭがそのリンク統計に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップと、もしネットワーク・デバイスを特定のサーバに結合しているリンクが劣化していれば、その特定のサーバ上で実行している仮想マシンを行先サーバに移行させるステップとを含む。
【０００５】
好ましくは、特定のサーバ上で実行している仮想マシンを行先サーバに移行させるステップは、ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計をネットワーク・デバイスに問い合わせるステップと、そのリンク統計に依存して、劣化していないリンクを識別するステップと、その劣化していないリンクによってネットワーク・デバイスに結合されているサーバを、特定のサーバ上で実行している仮想マシンに対する行先サーバとして選択するステップとをさらに含む。
【０００６】
好ましくは、仮想マシンを移行させるステップは、劣化していないリンクが利用可能なときにのみ仮想マシンを移行させるステップをさらに含み、このステップは、ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計をネットワーク・デバイスに問い合わせるステップと、ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計に依存して、そのネットワーク・デバイスが故障していると判断するステップと、ネットワーク・サーバ間のデータ通信のためのフェールオーバ・ネットワーク・デバイスを選択するステップと、特定のサーバ上の仮想マシンを移行させないステップとを含む。好ましくは、リンク統計は、ネットワーク・デバイスを特定のサーバに結合しているリンク上で受け取られたエラーのバイトを表す複数のタイムスタンプを押されたエントリを含み、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップはさらに、
エラーのバイトを表すタイムスタンプを押されたエントリからビット・エラー率を算出するステップと、
算出されたビット・エラー率が予め定められた閾値よりも大きいかどうかを判断するステップと、もし算出されたビット・エラー率が予め定められた閾値よりも大きければ、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化していると判断するステップとを含む。好ましくは、リンク統計は、ネットワーク・デバイスを特定のサーバに結合しているリンク上で受け取られたテスト・データのシンボル・エラーを記述する情報を含み、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップはさらに、シンボル・エラーを記述する情報に依存して、シンボル・エラーの頻度を算出するステップと、シンボル・エラーを記述する情報に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンク上のシンボル・エラーの頻度が予め定められた閾値よりも大きいかどうかを判断するステップと、もしシンボル・エラーの頻度が予め定められた閾値よりも大きければ、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化していると判断するステップとを含む。この方法はさらに、サーバを互いのサーバおよびネットワーク・デバイスに結合しているリンクを通過するサーバ間のデータ通信をネットワーク・デバイスによってモニタリングするステップと、サーバを互いのサーバおよびネットワーク・デバイスに結合しているリンクを通過するサーバ間のデータ通信を記述するリンク統計を管理情報ベース（ｍａｎａｇｅｍｅｎｔ  ｉｎｆｏｒｍａｔｉｏｎ  ｂａｓｅ：「ＭＩＢ」）に保存するステップとを含んでもよい。
【０００７】
第２の局面において、本発明はネットワーク・サーバ間で仮想マシンを移行させるための装置を提供し、このサーバはデータ通信のためにデータ通信ネットワークに結合されており、このネットワークはネットワーキング・デバイスを含み、この装置はコンピュータ・プロセッサと、コンピュータ・プロセッサに動作的に結合されたコンピュータ・メモリとを有し、この装置は、仮想マシン管理モジュール（「ＶＭＭＭ」）によって特定のサーバ上に１つまたはそれ以上の仮想マシンを確立するための手段と、データ通信のためにネットワーク・デバイスをその特定のサーバに結合しているリンクのリンク統計をＶＭＭＭからネットワーキング・デバイスに問い合わせるための手段と、ＶＭＭＭがそのリンク統計に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するための手段と、もしネットワーク・デバイスを特定のサーバに結合しているリンクが劣化していれば、その特定のサーバ上で実行している仮想マシンを行先サーバに移行させるための手段とを含む。
【０００８】
第２の局面の装置は、第１の局面の好ましいステップを行うように適合された手段をさらに提供してもよい。
【０００９】
第３の局面においては、コンピュータ・システムにロードされてそこで実行されるときに、第１の局面に従う方法のすべてのステップを前記コンピュータ・システムに行わせるための、コンピュータ読取り可能媒体に保存されたコンピュータ・プログラム・コードを含むコンピュータ・プログラムが提供される。
【００１０】
つまり、ネットワーク・サーバ間で仮想マシンを移行させるための方法、装置および製品が記載される。本発明の実施形態において、サーバはデータ通信のために、ネットワーキング・デバイスを含むデータ通信ネットワークに結合されている。本発明の実施形態に従って仮想マシンを移行させるステップは、仮想マシン管理モジュール（「ＶＭＭＭ」）によって特定のサーバ上に１つまたはそれ以上の仮想マシンを確立するステップと、データ通信のためにネットワーク・デバイスをその特定のサーバに結合しているリンクのリンク統計をＶＭＭＭからネットワーキング・デバイスに問い合わせるステップと、ＶＭＭＭがそのリンク統計に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップとを含む。もしネットワーク・デバイスを特定のサーバに結合しているリンクが劣化していれば、その特定のサーバ上で実行している仮想マシンを行先サーバに移行させる。
【００１１】
本発明の好ましい実施形態を、添付の図面を参照しながら単なる例として説明する。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に従って仮想マシンがネットワーク・サーバ間で移行される例示的なデータ・センタの線画を示す図である。
【図２】本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるための例示的なシステムのネットワーク図である。
【図３】本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるための例示的な方法を示す流れ図である。
【図４】本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるためのさらなる例示的な方法を示す流れ図である。
【図５】本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるためのさらなる例示的な方法を示す流れ図である。
【図６】本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるためのさらなる例示的な方法を示す流れ図である。
【図７】本発明の実施形態に従って、ＶＭＭＭがリンク統計に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するための例示的な方法を示す流れ図である。
【図８】本発明の実施形態に従って、ＶＭＭＭがリンク統計に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するためのさらなる例示的な方法を示す流れ図である。
【発明を実施するための形態】
【００１３】
本発明に従ってネットワーク・サーバ間で仮想マシンを移行させるための例示的な方法、装置および製品を、図１から始まる添付の図面を参照しながら説明する。図１は、本発明の実施形態に従って仮想マシンがネットワーク・サーバ間で移行される例示的なデータ・センタの線画を示す。データ・センタ（１２０）は、ミッション・クリティカル・コンピュータ・システムおよび関連コンポーネントを収容するために用いられる設備である。こうしたデータ・センタは、環境制御（空調、消火など）、冗長／バックアップ電源、冗長データ通信接続、および設備内の区画化されたセキュリティ・ゾーンへのバイオメトリック・アクセス制御によって強調される高いセキュリティを含んでもよい。加えてデータ・センタは、典型的にはコンピュータおよび通信機器である大量の電子機器を収容してもよい。データ・センタは、ある組織がその動作のために必要なデータを処理する目的のために維持していてもよい。たとえば銀行がデータ・センタを有してもよく、そこでは銀行の顧客の口座情報が維持されており、それらの口座に関わるトランザクションが行われる。実際には、中規模またはそれより大きい企業はいずれも何らかの種類のデータ・センタを有しており、大企業はしばしば何十ものデータ・センタを有する。
【００１４】
仮想マシン（ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ：「ＶＭ」）は、本明細書においてこの用語が用いられるとき、コンピュータなどのマシンのソフトウェアの実装を示す。仮想マシンは、各々が自身のオペレーティング・システムを実行し得る異なる仮想マシンの間で、基礎をなす物理マシンのリソースを共有することを可能にする。仮想化を提供するソフトウェア層は、仮想マシン・モニタまたはハイパーバイザと呼ばれる。ハイパーバイザは、複数のオペレーティング・システムがホスト・コンピュータ上で別々の仮想マシンにおいて同時に実行できるようにするために、ソフトウェアおよびハードウェア・プラットフォーム仮想化を行う自動計算機のモジュールである。ハイパーバイザはホストのハードウェアで直接実行されて、ハードウェア・アクセスを制御したり、ゲスト・オペレーティング・システムをモニタしたりする。ゲスト・オペレーティング・システムはハイパーバイザの上のレベルで実行される。ハイパーバイザによって提供されるプラットフォーム仮想化を、本明細書においては仮想化環境と呼ぶ。仮想化環境とは、オペレーティング・システムおよびその他のソフトウェア・アプリケーションの観点から、計算プラットフォームの物理的特徴、すなわちコンピュータ・プロセッサ、コンピュータ・メモリ、Ｉ／Ｏアダプタなどが取り除かれている環境である。
【００１５】
ＶＭは、たとえば以下のものなどを含む多くの利益を提供する。
複数のＯＳ環境が、互いに強固に分離されて、同じ物理的コンピュータ・ハードウェア・リソース上に共存できる、
基礎をなす物理的コンピュータ・ハードウェア・リソースのＩＳＡとはいくらか異なる命令セット・アーキテクチャ（ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ａｒｃｈｉｔｅｃｔｕｒｅ：ＩＳＡ）、
アプリケーション・プロビジョニング、保全、高可用性、および災害回復、ならびに
当業者の読者が考えるようなその他の利益。
【００１６】
図１のシステムは一般的に、サーバ間のＶＭ移行が可能である。「移行（Ｍｉｇｒａｔｉｏｎ）」とは、本明細書においてこの用語が用いられるとき、１つの物理的サーバから別の物理的サーバへの仮想マシンの効果的な移動である。移行は、本明細書においては１つのサーバから別のサーバへのＶＭの「効果的な」移動という観点で記述される。なぜなら移行は移動（ｍｏｖｅｍｅｎｔ）の手段を示すのではなく、移動の最終結果を示すからである。つまり、移行は２つの状態を説明しており、第１の状態は特定のＶＭが特定のサーバ上で実行されている状態であり、第２の状態はその特定のＶＭがもはやその特定のサーバ上で実行されておらず、代わりに別のサーバ上で実行されている状態である。したがってこの第１の状態から第２の状態へと、特定のＶＭが特定のサーバから他のサーバに移動したと言ってもよい。しかし、ＶＭのこうした「移動」を行う手段は本発明の範囲内で大きく変動し得る。ＶＭを特定のサーバから別のサーバに移行させるということは、たとえば特定のサーバ上で実行しているＶＭを表すデータをその特定のサーバのメモリから別のサーバのメモリにコピーすること、特定のサーバ上で実行しているＶＭの以前確立されたイメージを別のサーバにアップロードしてそこで実行し、その特定のサーバで実行しているＶＭの実行を停止すること、別のサーバに仮想マシンのデフォルト・イメージを確立し、そのＶＭのデフォルト・イメージにおいて特定のサーバのＶＭで実行しているのと同じユーザレベル・アプリケーションのインスタンスを実行することなどを含んでもよい。
【００１７】
図１の例におけるデータ・センタ（１２０）の例は、いくつかのブレード・サーバを収容するように特定的に構成されたタイプのサーバ・シャーシであるＢｌａｄｅＣｅｎｔｅｒ（Ｒ）（ＩＢＭ社の登録商標）（１００）を含む。サーバは、本明細書においてこの用語が用いられるとき、一般的にネットワーク接続を通じてサービス（例、データベース・アクセス、ファイル転送、リモート・アクセス）またはリソース（例、ファイル・スペース）を提供するマルチユーザ・コンピュータを示す。「サーバ」という用語は、状況によってはサーバのコンピュータ・ハードウェア、およびサーバ上で実行されるあらゆるサーバ・アプリケーション・ソフトウェアまたはオペレーティング・システム・ソフトウェアを包括的に示す。サーバ・アプリケーションとは、ユーザからの要求に応答を送り返すことによって処理するための接続を受け入れるアプリケーション・プログラムである。サーバ・アプリケーションはクライアント・アプリケーションの使用中に同じコンピュータ上で実行されてもよいし、サーバ・アプリケーションはコンピュータ・ネットワークを通じて接続を受け入れてもよい。サーバ・アプリケーションの例は、ファイル・サーバ、データベース・サーバ、バックアップ・サーバ、プリント・サーバ、メール・サーバ、ウェブ・サーバ、ＦＴＰサーバ、アプリケーション・サーバ、ＶＰＮサーバ、ＤＨＣＰサーバ、ＤＮＳサーバ、ＷＩＮＳサーバ、ログオン・サーバ、セキュリティ・サーバ、ドメイン・コントローラ、バックアップ・ドメイン・コントローラ、プロキシ・サーバ、ファイアウォールなどを含む。
【００１８】
ブレード・サーバとは、物理的スペースおよびエネルギの使用を最小限にするために最適化されたモジュラー設計を有するサーバ・コンピュータである。標準的なラックマウント・サーバは少なくとも電源コードおよびネットワーク・ケーブルによって機能できるのに対し、ブレード・サーバはスペースの節約、電力消費の最小化およびその他の考慮から、多くのコンポーネントを除去しているが、コンピュータとみなされるすべての機能的コンポーネントはなおも有している。複数のブレード・サーバを保持できるＢｌａｄｅＣｅｎｔｅｒ（Ｒ）（ＩＢＭ社の登録商標）は、たとえば電力、冷却、ネットワーク化、さまざまな相互接続および管理などのサービスを提供するが、ブレード・プロバイダが異なれば、ブレード自体（ときにはエンクロージャ全体）に何を含ませるかに関して異なる原則を有する。
【００１９】
図１の例において、ＢｌａｄｅＣｅｎｔｅｒ（Ｒ）（ＩＢＭ社の登録商標）（１００）は２つのキャビネット・ベイ（１０４、１０６）を含み、その各々はいくつかのコンポーネントを含む。キャビネット・ベイ（１０４）はいくつかのブレード・サーバ（１０８）を含み、その各々は電源（１３２）から電力供給されている。キャビネット・ベイ（１０６）はＢｌａｄｅＣｅｎｔｅｒ（Ｒ）（ＩＢＭ社の登録商標）（１００）のための電源（１３２）と、データ通信ネットワーク・ルータ（１３０）と、ネットワーク・スイッチ（１３４）と、以下により詳細に説明される仮想マシン管理モジュール（「ＶＭＭＭ」）（１０２）とを含む。キャビネット・ベイ（１０６）はさらに、独立ディスクの冗長アレイ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ：「ＲＡＩＤ」）（１３６）および電源ストリップ（１３８）も含む。
【００２０】
図１においては、説明を明確にするためにＢｌａｄｅＣｅｎｔｅｒ（Ｒ）（ＩＢＭ社の登録商標）（１００）内のブレード・サーバ（１０８）のうち２つ、すなわちブレード・サーバ（１５２）およびブレード・サーバ（１２８）を拡大した形で示している。しかし、ＢｌａｄｅＣｅｎｔｅｒ（Ｒ）（ＩＢＭ社の登録商標）（１００）のブレード・サーバ（１０８）の各々がサーバ（１５２、１２８）と類似のコンポーネントを含んでもよく、本発明の実施形態に従ってＶＭ移行に関与するときには類似の態様で動作してもよいことを当業者の読者は理解するだろう。本発明の実施形態に従ってＶＭ移行が行われるシステムにおいて有用なサーバの例として、サーバ（１５２）を考える。サーバ（１５２）は、少なくとも１つのコンピュータ・プロセッサ（１５６）または「ＣＰＵ」と、ランダム・アクセス・メモリ（１６８）（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：「ＲＡＭ」）とを含み、ランダム・アクセス・メモリ（１６８）は高速メモリ・バス（１６６）およびバス・アダプタ（１５８）を通じてプロセッサ（１５６）およびサーバ（１５２）の他のコンポーネントに接続されている。
【００２１】
サーバ（１５２）のＲＡＭ（１６８）にはハイパーバイザ（１４０）が保存されており、ハイパーバイザ（１４０）は２つの仮想マシン（１１４、１１６）がサーバ（１５２）の基礎をなすハードウェア上で実行されて、サーバ（１５２）のハードウェア・リソースを利用することを可能にする。仮想マシン（１１４）内（または別の言い方で仮想マシン（１１４）「上」）で実行されるのは、オペレーティング・システム（１５４）および２つのユーザレベル・アプリケーション（１２２、１２３）である。本発明の実施形態に従うＶＭ移行に関与するサーバにおいて有用なオペレーティング・システムは、ＵＮＩＸ（Ｒ）、リナックス（Ｒ）、マイクロソフトＸＰ（Ｒ）、ＡＩＸ（Ｒ）（ＩＢＭ社の登録商標）、ＩＢＭ（Ｒ）のｉ５／ＯＳ（Ｒ）（ＩＢＭ社の登録商標）、および当業者が考えるその他のものを含む。仮想マシン（１１６）内で実行されるのは、オペレーティング・システム（１５４）および２つのユーザレベル・アプリケーション（１２４、１２５）である。仮想マシン（１１６）内で実行されるオペレーティング・システム（１５４）は、仮想マシン（１１４）内で実行される同じオペレーティング・システム（１５４）の別のインスタンスであってもよいし、全体的に別のタイプのオペレーティング・システム（１５４）であってもよい。つまり、サーバ（１５２）内の両方のオペレーティング・システムが同じ、たとえばＵＮＩＸ（Ｒ）などであってもよいし、両方のオペレーティング・システムが異なっていて、たとえばＵＮＩＸ（Ｒ）およびマイクロソフトＸＰ（Ｒ）などであってもよい。
【００２２】
図１の例においては、ＲＡＭ（１６８）の中にハイパーバイザ（１４０）と、オペレーティング・システム（１５４）と、ユーザレベル・アプリケーション（１２２〜１２５）とが示されているが、こうしたソフトウェアの多くのコンポーネントは典型的に、たとえばディスク・ドライブ（１７０）などの不揮発性メモリにも保存されている。
【００２３】
図１のサーバ（１５２）は、拡張バス（１６０）およびバス・アダプタ（１５８）を通じてプロセッサ（１５６）およびサーバ（１５２）の他のコンポーネントに結合されているディスク・ドライブ・アダプタ（１７２）を含む。ディスク・ドライブ・アダプタ（１７２）は、ディスク・ドライブ（１７０）の形の不揮発性データ記憶装置をサーバ（１５２）に接続する。本発明の実施形態に従うネットワーク・サーバ間の仮想マシン移行に関与するサーバにおいて有用なディスク・ドライブ・アダプタは、統合ドライブ・エレクトロニクス（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ：「ＩＤＥ」）アダプタ、小型コンピュータ・システム・インタフェース（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ：「ＳＣＳＩ」）アダプタ、および当業者が考えるその他のものを含む。当業者が考えるように、不揮発性コンピュータ・メモリは光ディスク・ドライブ、電気消去可能プログラマブル・リード・オンリ・メモリ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）（いわゆる「ＥＥＰＲＯＭ」または「フラッシュ」メモリ）、ＲＡＭドライブなどとして実装されてもよい。
【００２４】
図１のサーバ（１５２）の例は、１つまたはそれ以上の入力／出力（ｉｎｐｕｔ／ｏｕｔｐｕｔ：「Ｉ／Ｏ」）アダプタ（１７８）を含む。Ｉ／Ｏアダプタは、たとえばコンピュータ表示スクリーンなどの表示デバイスへの出力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアなど、ならびにキーボードおよびマウスなどのユーザ入力デバイス（１８１）からのユーザ入力などを通じて、ユーザオリエンテッド入力／出力を実装する。図１のサーバ（１５２）の例はビデオ・アダプタ（２０９）を含むが、これは表示スクリーンまたはコンピュータ・モニタなどの表示デバイス（１８０）へのグラフィック出力のために特別に設計されたＩ／Ｏアダプタの例である。ビデオ・アダプタ（２０９）は、高速ビデオ・バス（１６４）と、バス・アダプタ（１５８）と、同じく高速バスであるフロント・サイド・バス（１６２）とを通じてプロセッサ（１５６）に接続されている。
【００２５】
図１の例示的サーバ（１５２）は、他のコンピュータとのデータ通信、およびデータ通信ネットワーク（図１には示さず）とのデータ通信のための通信アダプタ（１６７）を含む。こうしたデータ通信は、ＲＳ−２３２接続、ユニバーサル・シリアル・バス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ：「ＵＳＢ」）などの外部バス、およびＩＰデータ通信ネットワークなどのデータ通信ネットワークを通じて、ならびに当業者が考えるその他のやり方で連続的に行われてもよい。通信アダプタはハードウェア・レベルのデータ通信を実装し、それを通じて１つのコンピュータが、直接またはデータ通信ネットワークを通じて、別のコンピュータにデータ通信を送る。本発明の実施形態に従うＶＭ移行に関与するサーバにおいて有用な通信アダプタの例は、ワイヤード・ダイヤルアップ通信のためのモデム、ワイヤード・データ通信ネットワーク通信のためのイーサネット（Ｒ）（ＩＥＥＥ８０２．３）アダプタ、および無線データ通信ネットワーク通信のための８０２．１１アダプタを含む。
【００２６】
サーバ（１５２）のみがプロセッサ（１５６）、ＲＡＭ（１６８）、バス・アダプタ（１５８）、通信アダプタ（１６７）などを含むものとして示されているが、図１の例のブレード・サーバ（１０８）のいずれも、より特定的にはサーバ（１２８）も類似のコンポーネントを含んでもよいことを当業者の読者は認識するだろう。
【００２７】
図１のＢｌａｄｅＣｅｎｔｅｒ（Ｒ）（ＩＢＭ社の登録商標）（１００）のスイッチ（１３４）は、ネットワーク・デバイスすなわちコンピュータ・ネットワークにおけるデータを仲介するユニットの例である。ネットワーキング・デバイスは、ネットワーク機器、中間システム（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍｓ：ＩＳ）または網間接続装置（ＩｎｔｅｒＷｏｒｋｉｎｇ  Ｕｎｉｔｓ：ＩＷＵｓ）とも呼ばれてもよい。最終受信機であるか、またはデータを生成するユニットは、ホストまたはデータ端末機器と呼ばれる。
【００２８】
ネットワーキング・デバイスの例は以下を含む。
ゲートウェイ：異なるプロトコルを用いる別のネットワークとインタフェースするネットワーク・ノードにおけるデバイス。開放型システム間相互接続（Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ：「ＯＳＩ」）の第４層から第７層で動作する。
ルータ：データ・パケットをその行先に向けて転送するための次のネットワーク・ポイントを決定する専用のネットワーク・デバイス。典型的にＯＳＩ第３層で動作する。
ブリッジ：複数のネットワーク・セグメントをデータ・リンク層に沿って接続するデバイス。ＯＳＩ第２層で動作する。
スイッチ：１つのネットワーク・セグメントからのトラフィックを、特定のラインまたは「リンク」、すなわちそのセグメントを別のネットワーク・セグメントに接続する対象となる単数または複数の行先に割り当てるデバイス。スイッチはハブとは異なり、ネットワーク・トラフィックを分割して、ネットワーク上のすべてのシステムに送るのではなく異なる行先に送る。ＯＳＩ第２層で動作する。
多層スイッチ：ＯＳＩ第２層におけるスイッチングに加えて、より上のプロトコル層での機能を提供するスイッチ。
ハブ：複数のセグメントをともに接続して、それらをあたかも単一のセグメントであるかのように動作させるデバイス。ハブを用いるとき、すべての付加デバイスは同じブロードキャスト・ドメインおよび同じコリジョン・ドメインを共有する。したがって、１度に送信できるのはハブに接続された１つのコンピュータのみである。ネットワーク・トポロジに依存して、ハブはネットワーク・オブジェクト（ワークステーション、サーバなど）の間のレベル１ＯＳＩモデル接続を提供する。加えてハブは、個々のノード間の専用接続を提供するスイッチに比べ、すべてのオブジェクトに共有される帯域幅を提供してもよい。ＯＳＩ第１層で動作する。
リピータ：受け取ったデジタル信号を増幅または再生し、一方でそのデジタル信号をネットワークの１つの部分から別の部分にセットするデバイス。ＯＳＩ第１層で動作する。
プロトコル変換器：たとえば非同期伝送と同期伝送など、２つの異なるタイプの伝送を互いに変換するハードウェア・デバイス。
ブリッジ・ルータ：ルータおよびブリッジの機能の組み合わせで動作するデバイス。ＯＳＩ第２層およびＯＳＩ第３層の両方で動作する。
デジタル媒体受信機：コンピュータ・ネットワークをホーム・シアタに接続するデバイス。
【００２９】
図１の例におけるスイッチ（１３４）は、ブレード・サーバ（１０８、１５２および１２８も含む）を、互いとのデータ通信のため、ならびにルータ（１３０）およびＶＭＭＭ（１０２）とのデータ通信のために結合する。
【００３０】
図１の仮想マシン管理モジュール（１０２）（「ＶＭＭＭ」）は、図１の例におけるネットワーク・サーバ（１０８、１５２および１２８も含む）間の仮想マシン移行を行うために構成された、コンピュータ・ハードウェアおよびソフトウェアの集約を含む自動計算機のモジュールである。加えてＶＭＭＭは、移行技術に関わらず、他の仮想マシン管理も行っていてもよい。すなわちＶＭＭＭ（１０２）は、作業負荷、冗長性または可用性のバランスを取る態様で、サーバ間でのＶＭの割り当てを管理してもよい。ＶＭＭＭ（１０２）は、リソース割り当てを管理するか、または別の管理モジュールとともに作業して動作特徴、すなわちスロットリング・サーバ（ｔｈｒｏｔｔｌｉｎｇ  ｓｅｒｖｅｒｓ）などを制御することによって、ＶＭの動作を管理してもよい。ＶＭＭＭ（１０２）はさらに、仮想マシンの割り当て解除を管理して、仮想マシンの電源を完全に切るのではなく待機モードにするかどうかなどを選択してもよい。これらは、本発明の実施形態に従うＶＭ移行のために動作するＶＭＭＭが行い得る数多くのタスクのうちのほんのわずかである。
【００３１】
図１の例におけるＶＭＭＭ（１０２）は、最初に特定のサーバ上に１つまたはそれ以上のＶＭを確立することによって、本発明の実施形態に従って図１のＢｌａｄｅＣｅｎｔｅｒ（Ｒ）（ＩＢＭ社の登録商標）（１００）内のブレード・サーバ（１０８）間でＶＭを移行させてもよい。説明の目的のために、図１の例におけるＶＭＭＭ（１０２）はサーバ（１５２）上に仮想マシン（１１４）および仮想マシン（１１６）を確立すると考える。次いでＶＭＭＭは、ネットワーキング・デバイスすなわちスイッチ（１３４）に、データ通信のためにネットワーク・デバイスを特定のサーバに結合しているリンクのリンク統計（１１２）を問い合わせてもよい。リンクは、本明細書においてこの用語が記載されるとき、状況によってはデバイス間のデータ通信を支持するための２つのデバイス間の物理的または論理的結合を示す。リンク統計は、サーバ（１０８、１５２、１２８）を互いのサーバおよびスイッチ（１３４）に結合しているリンクを通過するデータ通信を記述する。
【００３２】
次いでＶＭＭＭ（１０２）は、リンク統計（１１２）に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断してもよく、もしネットワーク・デバイスを特定のサーバに結合しているリンクが劣化していれば、ＶＭＭＭはその特定のサーバ（１５２）上で実行している仮想マシン、たとえばＶＭ（１１４）を、たとえばサーバ（１２８）などの行先サーバに移行させてもよい。
【００３３】
図１のデータ・センタ（１２０）においてＶＭ移行を行うＶＭＭＭ（１０２）の例として、ＶＭＭＭ（１０２）は最初にサーバ（１５２）上にＶＭ（１１４）およびＶＭ（１１６）を確立し、サーバ（１２８）上にはＶＭを確立しないものと考える。サーバ（１５２）およびサーバ（１２８）を含むサーバ（１０８）がネットワーク・スイッチ（１３４）を介して互いにデータ通信メッセージを渡し合う際に、ネットワーク・スイッチ（１３４）はそのデータ通信をモニタし、問い合わせを介してＶＭＭＭ（１０２）によってアクセス可能な予め規定されたメモリ領域にリンク統計を保存する。ＶＭＭＭ（１０２）は時々スイッチ（１３４）にリンク統計（１１２）を問い合わせ、サーバ（１５２）およびスイッチ（１３４）を結合しているリンクが劣化しているかどうかを判断する。もしそのリンクが劣化していれば、ＶＭＭＭ（１０２）はＶＭ（１１４）およびＶＭ（１１６）をサーバ（１２８）に移行し、それはここではＶＭ（１１８）およびＶＭ（１１９）と示される。サーバ（１２８）において現在ハイパーバイザが実行中でなければ、ＶＭＭＭはＶＭ（１１８、１１９）を確立する前にまずサーバ（１２８）においてハイパーバイザ（１４２）を開始してもよい。ＶＭＭＭ（１０２）はＶＭに加えて、サーバ（１５２）のＶＭ（１１４、１１６）において実行されているユーザレベル・アプリケーション（１２２〜１２５）もサーバ（１２８）のＶＭ（１１８、１１９）に移行させてもよい。図１の例においては、ユーザレベル・アプリケーション（１２２〜１２５）が移行されて、ユーザレベル・アプリケーション（１２６、１２７、１２９および１３１）と示されている。
【００３４】
本明細書において通信リンクを説明するために用いられる「劣化している（ｄｅｇｒａｄｉｎｇ）」という用語は、リンクが標準以下のレベルで動作しているかもしれないこと、および故障に近いかもしれないことを示す。本明細書において、「劣化している」という用語は、ＶＭ移行が事後対応の態様ではなく予防的態様で行われること、すなわち緩和に焦点をおいた態様で行われることを示すために用いられている。つまり、図１の例のＶＭＭＭはリンクの故障後にＶＭを移行させるのではなく、完全な故障の前にＶＭを移行させることによって、もしリンクが完全に故障すれば起こり得るデータ通信および生産性などの損失を緩和する。このやり方によって、サーバおよびＶＭの可用性が増加する。当業者の読者はさらに、データ通信をモニタリングするステップおよびリンクが劣化しているかどうかを判断するステップが、ＶＭを支持して使用可能にしているハイパーバイザによって行われるのではなく、ネットワーク・デバイスおよびＶＭＭＭによって行われていることを認識するだろう。このやり方によって、ハイパーバイザおよびハイパーバイザが動作しているサーバに、データ通信をモニタリングしたりデータ通信リンクが劣化しているかどうかを判断したりするステップの負担がかからず、サーバの動作の効率が上がり、動作のオーバーヘッドが減少する。
【００３５】
リンクは、たとえばデータ通信パケットにおける周期的冗長検査（Ｃｙｃｌｉｃａｌ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ：ＣＲＣ）エラーをもたらす信号エラーを引き起こす電磁干渉、および連結シンボル信号がケーブル特徴に対してスイッチ・ハードウェアを不整合させる原因となる物理的ケーブルの経時変化などを含むさまざまな原因によって劣化し得る。これらはリンク劣化の原因として可能性のある多くの要因のうちのほんのわずかな例であり、こうした原因の各々は十分に本発明の範囲内にある。
【００３６】
図１に示される例示的なシステムを構成するサーバおよびその他のデバイスの配置は説明のためのものであって、制限のためのものではない。本発明のさまざまな実施形態に従って有用なデータ処理システムは、当業者が考えるように、図１に示されていない付加的なサーバ、ルータ、その他のデバイス、およびピア・トゥ・ピア・アーキテクチャを含んでもよい。こうしたデータ処理システムにおけるネットワークは、たとえばＴＣＰ（伝送制御プロトコル（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ））、ＩＰ（インターネット・プロトコル（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ））、ＨＴＴＰ（ハイパーテキスト転送プロトコル（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ））、ＷＡＰ（無線アクセス・プロトコル（Ｗｉｒｅｌｅｓｓ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ））、ＨＤＴＰ（ハンドヘルド・デバイス移送プロトコル（Ｈａｎｄｈｅｌｄ  Ｄｅｖｉｃｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ））、および当業者が考えるようなその他のものなどを含む多くのデータ通信プロトコルを支持してもよい。図１に示されているものに加えて、さまざまなハードウェア・プラットフォームにおいて本発明のさまざまな実施形態が実装されてもよい。
【００３７】
図２は、本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるための例示的なシステムのネットワーク図を示す。図２の例示的システムは図１の例に示されるシステムと以下の点で類似である。すなわち、図２のシステムもサーバ（１５２、１２８）と、スイッチ（１３４）の形のネットワーク・デバイスと、ＶＭＭＭ（１０２）とを含み、これらはすべてデータ通信ネットワークのローカル・エリア・ネットワーク（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ：「ＬＡＮ」）（１０１）を介して互いに結合されるかまたはデータ通信している。サーバ（１５２、１２８）およびＶＭＭＭ（１０２）は、データ通信のために他のサーバ（１５０）にも結合されている。
【００３８】
図２のシステム例におけるサーバ（１５２、１２８および１５０）は、データ通信のためにデータ通信リンクを介してスイッチ（１３４）に結合されている。サーバ（１５２）はデータ通信のためにリンク（１９２）を通じてデータ通信ネットワーク（１０１）およびスイッチ（１３４）に結合され、サーバ（１２８）はデータ通信のためにリンク（１９４）を通じてデータ通信ネットワーク（１０１）およびスイッチ（１３４）に結合され、他のサーバ（１５０）のうちの少なくとも１つはデータ通信のためにリンク（１９０）を通じてデータ通信ネットワーク（１０１）およびスイッチ（１３４）に結合される。リンクは、本明細書においてこの用語が記載されるとき、状況によってはデバイス間のデータ通信を支持するための２つのデバイス間の物理的または論理的結合を示す。たとえばサーバをスイッチに結合するイーサネット（Ｒ）・ケーブルは、「リンク」の一例であり得る。たとえばサーバとスイッチのポートなど、２つの端点によって指定される論理的結合もリンクの一例であり得る。ネットワーク・デバイスとサーバとの間の関係を説明するために本明細書において用いられる「結合される（ｃｏｕｐｌｅｄ）」という用語は、サーバとネットワーク・デバイスとの間の直接または別様のあらゆる接続を説明するために示される。つまり、ネットワーク・デバイスとサーバとの間の関係を説明するときの「結合される」という用語は、ネットワーク・デバイスとネットワーク・デバイスとの直接的な物理的接続に限定されず、他のネットワーク・デバイスを通じた間接的な接続も含み得る。
【００３９】
図２のシステムにおいて、サーバ（１５２、１２８および１５０）は、図１に示されて説明されたサーバと類似のコンポーネントを含む、すなわちプロセッサ（１５６）、ＲＡＭ（１６８）、バス・アダプタ（１５８）、通信アダプタ（１７８）などを含むコンピュータとして実装される。図２の例におけるスイッチ（１３４）も、サーバ（１５２および１２８）と類似のタイプのコンピュータ、すなわち自動計算機として実装される。スイッチ（１３４）は、ＲＡＭ（１６８）に結合されたプロセッサ（１５６）を含む。このスイッチはもちろんより多くのコンポーネント、ソフトウェアおよびハードウェアを含んでもよいが、説明を明確にするために図２の例においてはＲＡＭおよびプロセッサのみが示されている。スイッチ（１３４）のＲＡＭ（１６８）にはトラフィック・モニタ（２０２）が保存されている。トラフィック・モニタ（２０２）はコンピュータ・プログラム命令のモジュールであり、これが実行されることによって、ネットワーク・スイッチ（１３４）はサーバ（１５２、１２８、１５０）を互いのサーバおよびスイッチ（１３４）に結合しているリンク（１９０、１９２、１９４）を通過するサーバ（１５２、１２８、１５０）間のデータ通信をモニタし、サーバを互いのサーバおよびスイッチに結合しているリンクを通過するサーバ間のデータ通信を記述するリンク統計（１１２）を管理情報ベース（「ＭＩＢ」）（２０４）に保存する。リンク統計の例は、各リンクに対する、特定のデバイスからそのリンクに沿って送信されたバイト数、特定のデバイスによってそのリンクに沿って受信されたバイト数、そのリンクに沿って運ばれたエラーのバイト数、およびそのリンクに沿って伝播されたシンボル・エラーのインスタンスなどを含む。
【００４０】
上述のとおり、リンク統計はＭＩＢに保存されてもよい。ＭＩＢは、通信ネットワーク内のエンティティを管理するために用いられる仮想データベースである。このデータベースは階層的（木構造）であり、エントリはオブジェクト識別子によってアドレス指定されている。インターネット文書コメント要求（Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｃｏｍｍｅｎｔｓ：「ＲＦＣｓ」）においてＭＩＢが考察されており、特にＲＦＣ１１５５「ＴＣＰ／ＩＰに基づくインターネットのための管理情報の構造および識別（Ｓｔｒｕｃｔｕｒｅ  ａｎｄ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  ｏｆ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  ｆｏｒ  ＴＣＰ／ＩＰ  ｂａｓｅｄ  ｉｎｔｅｒｎｅｔｓ）」ならびにその２つの関連項目、ＲＦＣ１２１３「ＴＣＰ／ＩＰに基づくインターネットのネットワーク管理のための管理情報ベース（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂａｓｅ  ｆｏｒ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  ｏｆ  ＴＣＰ／ＩＰ−ｂａｓｅｄ  ｉｎｔｅｒｎｅｔｓ）」およびＲＦＣ１１５７「簡単なネットワーク管理プロトコル（Ａ  Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）」に考察されている。
【００４１】
図１に関して上述したとおり、スイッチ（１３４）に加えて、ＶＭＭＭ（１０２）も自動計算機すなわちコンピュータとして実装されてもよい。したがってさらなる説明のために、図２はコンピュータとして実装されるＶＭＭＭ（１０２）の例を示す。図２のＶＭＭＭ（１０２）の例は、サーバ（１５２、１２８）のコンポーネントと類似のコンポーネントを含み、すなわちプロセッサ（１５６）、バス・アダプタ（１５８）、通信アダプタ（１７８）、ＲＡＭ（１６８）などを含む。ＶＭＭＭ（１０２）のＲＡＭ（１６８）には仮想マシン・アロケータ（１１０）が保存されている。ＶＭアロケータ（１１０）はコンピュータ・プログラム命令のモジュールであって、これが実行されるときに、本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンが移行される。ＶＭアロケータ（１１０）の例は、最初に特定のサーバ上に１つまたはそれ以上の仮想マシン（１１４、１１６）を確立し、データ通信のためにネットワーク・デバイス（１３４）をその特定のサーバ（１５２）に結合しているリンク（１９２）のリンク統計（１１２）をネットワーキング・デバイス（１３４）に問い合わせ、そのリンク統計（１１２）に依存して、ネットワーク・デバイス（１３４）を特定のサーバ（１５２）に結合しているリンク（１９２）が劣化しているかどうかを判断し、もしリンク（１９２）が劣化していれば、特定のサーバ（１５２）上で実行している仮想マシン（１１４、１１６）を行先サーバ（１２８または１５０）に移行させることによって、図２のシステムにおけるサーバ（１５２、１２８および１５０）間でＶＭを移行させてもよい。
【００４２】
ＶＭアロケータ（１１０）は、仮想マシン（１１４、１１６）の移行に加えて、ＶＭ（１１４、１１６）内で実行されるユーザレベル・アプリケーション（１２２、１２３、１２４、１２５）も移行させてもよい。たとえば図２のシステムにおいて、ＶＭアロケータ（１１０）は、サーバ（１５２）上のＶＭ（１１４）をサーバ（１２８）上のＶＭ（１１８）に移行させてもよい。ＶＭアロケータ（１１０）はさらに、ＶＭ（１１４）内で実行されるユーザレベル・アプリケーション（１２２、１２３）をＶＭ（１１８）内で実行されるユーザレベル・アプリケーション（１２６、１２７）に移行させてもよい。類似の態様で、ＶＭアロケータ（１１０）は、サーバ（１５２）上のＶＭ（１１６）をサーバ（１２８）上のＶＭ（１１９）に移行させてもよい。ＶＭアロケータ（１１０）はさらに、ＶＭ（１１６）内で実行されるユーザレベル・アプリケーション（１２４、１２５）をＶＭ（１１９）内で実行されるユーザレベル・アプリケーション（１２９、１３１）に移行させてもよい。
【００４３】
図２に示される例示的なシステムを構成するサーバおよびその他のデバイスの配置は説明のためのものであって、制限のためのものではない。本発明のさまざまな実施形態に従って有用なデータ処理システムは、当業者が考えるように、図２に示されていない付加的なサーバ、ルータ、その他のデバイス、およびピア・トゥ・ピア・アーキテクチャを含んでもよい。こうしたデータ処理システムにおけるネットワークは、たとえばＴＣＰ（伝送制御プロトコル）、ＩＰ（インターネット・プロトコル）、ＨＴＴＰ（ハイパーテキスト転送プロトコル）、ＷＡＰ（無線アクセス・プロトコル）、ＨＤＴＰ（ハンドヘルド・デバイス移送プロトコル）、および当業者が考えるようなその他のものなどを含む多くのデータ通信プロトコルを支持してもよい。図２に示されているものに加えて、さまざまなハードウェア・プラットフォームにおいて本発明のさまざまな実施形態が実装されてもよい。
【００４４】
さらなる説明のために、図３は本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるための例示的な方法を示す流れ図を示す。図３の方法において、サーバ（３１２、３１８）はデータ通信のためのデータ通信リンク（１９２、１９４）を通じて、ネットワーキング・デバイス（３１０）を含むデータ通信ネットワークに結合されている。ネットワーキング・デバイスは、本明細書においてこの用語が用いられるとき、データ通信のために他のデバイスを結合することができ、かつそれら他のデバイスを互いのデバイスおよびネットワーク・デバイスに結合するリンクを通過するデータ通信を記述するリンク統計を提供できる自動計算機を示す。ネットワーキング・デバイスの例は、当業者の読者が考えるように、ネットワーク・スイッチ、ネットワーク・ルータ、ハブなどを含む。
【００４５】
図３の方法は、仮想マシン管理モジュール（１０２）によって特定のサーバ（３１２）上に１つまたはそれ以上の仮想マシン（３１６）を確立する（３０２）ステップを含む。仮想マシン管理モジュール（１０２）によって特定のサーバ（３１２）上に１つまたはそれ以上の仮想マシン（３１６）を確立する（３０２）ステップは、特定のサーバ上でハイパーバイザを実行し、特定の構成の仮想マシン、すなわち当業者の読者が考えるようなプロセッサ数、メモリ・リソースなどを有する仮想マシンを支持するようにハイパーバイザを構成することによって行われてもよい。
【００４６】
加えて図３の方法は、データ通信のためにネットワーク・デバイス（３１０）を特定のサーバ（３１２）に結合しているリンク（１９２）のリンク統計（１１２）をＶＭＭＭ（１０２）からネットワーキング・デバイス（３１０）に問い合わせる（３０４）ステップを含む。ネットワーキング・デバイス（３１０）にリンク統計（１１２）を問い合わせる（３０４）ステップは、たとえばＭＩＢ（２０４）に関する問い合わせを受け取るためのネットワーク・アドレスまたはポートとして予め指定されたネットワーク・デバイスのネットワーク・アドレスまたはポートに要求を送ることなどを含むさまざまなやり方で行われてもよく、この要求は特定のリンクを識別するオブジェクト識別子か、または特定のサーバを識別するオブジェクト識別子を含む。ＶＭＭＭがリンク統計（１１２）を問い合わせすることができる別のやり方は、ネットワーク・デバイスに保存されたデータ通信トラフィックに関するすべてのデータを要求して、その要求したデータからリンク統計（１１２）を導き出すことである。
【００４７】
加えて図３の方法は、ＶＭＭＭ（１０２）がそのリンク統計（１１２）に依存して、ネットワーク・デバイス（３１０）を特定のサーバ（３１２）に結合しているリンク（１９２）が劣化しているかどうかを判断し（３０６）、もしネットワーク・デバイス（３１０）を特定のサーバ（３１２）に結合しているリンク（１９２）が劣化していなければ、予め規定された時間だけ待って（３０８）から再びネットワーク・デバイスに問い合わせるステップを含む。すなわち図３の方法において、ＶＭＭＭ（１０２）は周期的にネットワーク・デバイス（３１０）にリンク統計（１１２）をポーリングするように構成される。
【００４８】
もしネットワーク・デバイス（３１０）を特定のサーバ（３１２）に結合しているリンク（１９２）が劣化していれば、図３の方法は、特定のサーバ（３１２）上で実行している仮想マシン（３１６）を行先サーバ（３１８）に移行させる（３１４）ステップを続ける。特定のサーバ（３１２）上で実行している仮想マシン（３１６）を行先サーバ（３１８）に移行させる（３１４）ステップは、たとえば特定のサーバ（３１２）のメモリからＶＭを表すデータをコピーして、そのデータを行先サーバ（３１８）のメモリに書込むことによって特定のサーバ（３１２）上で動作するＶＭのインスタンスの正確なコピーを確実にすること、デフォルト仮想マシンの予め構成されたイメージ（特定のＶＭ（３１６）を生成するために用いられたのと同じイメージ）をロードすること、特定のＶＭ（３１６）のさまざまな属性を指定する構成ファイルを特定のサーバ（３１２）から検索し、その属性を用いて行先サーバ（３１８）上に別のＶＭ（３３６）を開始させることなどを含むさまざまなやり方で行われてもよい。仮想マシンを移行させる（３１４）ステップは、仮想マシン内で実行されるあらゆるアプリケーションを移行させるステップも含んでもよい。
【００４９】
さらなる説明のために、図４は、本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるためのさらなる例示的な方法を示す流れ図を示す。図４の方法は図３の方法と類似であり、特定のサーバ（３１２）上に１つまたはそれ以上の仮想マシン（３１６）を確立する（３０２）ステップと、ネットワーキング・デバイス（３１０）に問い合わせる（３０４）ステップと、リンク（１９２）が劣化しているかどうかを判断する（３０６）ステップと、もしリンク（１９２）が劣化していれば仮想マシン（３１６）を行先サーバ（３１８）に移行させる（３１４）ステップとを同様に含む。
【００５０】
しかし、図４の方法が図３の方法と異なる点は、図４の方法が、サーバを互いのサーバおよびネットワーク・デバイス（３１０）に結合しているリンク（１９２、１９４）を通過するサーバ間のデータ通信をネットワーク・デバイス（３１０）によってモニタリングする（４０２）ステップと、サーバを互いのサーバおよびネットワーク・デバイスに結合しているリンクを通過するサーバ間のデータ通信を記述するリンク統計（１１２）を、ＶＭＭＭ（１０２）によるアクセスが可能な管理情報ベース（「ＭＩＢ」）に保存する（４０６）ステップとを含むことである。ネットワーク・デバイス（３１０）は、さまざまなやり方でデータ通信をモニタしてもよい。モニタリングするステップによって、当業者の読者が考えるように、各リンクに対する、ネットワーク・デバイスから特定のリンクに沿って送信されたバイト数、ネットワーク・デバイスによって特定のリンクに沿って受信されたバイト数、特定のリンクから受信されたエラーのバイト数、およびシンボル・エラーのインスタンスの数などが得られる。
【００５１】
さらなる説明のために、図５は、本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるためのさらなる例示的な方法を示す流れ図を示す。図５の方法は図３の方法と類似であり、特定のサーバ（３１２）上に１つまたはそれ以上の仮想マシン（３１６）を確立する（３０２）ステップと、ネットワーキング・デバイス（３１０）に問い合わせる（３０４）ステップと、リンク（１９２）が劣化しているかどうかを判断する（３０６）ステップと、もしリンク（１９２）が劣化していれば仮想マシン（３１６）を行先サーバ（３１８）に移行させる（３１４）ステップとを同様に含む。
【００５２】
しかし、図５の方法が図３の方法と異なる点は、図５の方法において、もしリンク（１９２）が劣化していれば仮想マシン（３１６）を行先サーバ（３１８）に移行させる（３１４）ステップが、ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計をネットワーク・デバイスに問い合わせる（５０２）ステップと、そのリンク統計に依存して、劣化していないリンクを識別する（５０８）ステップと、その劣化していないリンクによってネットワーク・デバイスに結合されているサーバを、特定のサーバ上で実行している仮想マシンに対する行先サーバ（３１８）として選択する（５１０）ステップとをさらに含むことである。すなわち図５の方法において、ＶＭＭＭは、劣化しているリンクのために仮想マシンを特定のサーバ（３１２）から、劣化しているリンクを介してネットワークおよびネットワーク・デバイス（３１０）に結合されていない別のサーバに移行させる。劣化していないリンクを伴うサーバが複数存在するとき、ＶＭＭＭは、ラウンド・ロビン・スタイル選択アルゴリズムに従うやり方、行先サーバとして選択すべき次のサーバを指定する規則の組に従うやり方、作業負荷のバランスを取るための最適化ルーチンによるやり方、および当業者の読者が考えるようなその他のやり方を含むさまざまなやり方で、特定のＶＭ（３１６）に対する行先サーバ（３１８）としてサーバを選択（５１０）してもよい。
【００５３】
さらなる説明のために、図６は、本発明の実施形態に従ってネットワーク・サーバ間で仮想マシンを移行させるためのさらなる例示的な方法を示す流れ図を示す。図６の方法は図３の方法と類似であり、特定のサーバ（３１２）上に１つまたはそれ以上の仮想マシン（３１６）を確立する（３０２）ステップと、ネットワーキング・デバイス（３１０）に問い合わせる（３０４）ステップと、リンク（１９２）が劣化しているかどうかを判断する（３０６）ステップと、もしリンク（１９２）が劣化していれば仮想マシン（３１６）を行先サーバ（３１８）に移行させる（３１４）ステップとを同様に含む。
【００５４】
しかし、図６の方法が図３の方法と異なる点は、図６の方法において、仮想マシンを移行させる（３１４）ステップは、劣化していないリンクが利用可能なときにのみ行われることである。すなわち図６の方法において、仮想マシン（３１６）を移行させる（３１４）ステップは、ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計（６０４）をネットワーク・デバイスに問い合わせる（６０２）ステップと、ネットワーク・デバイスを他のサーバに結合しているリンクのリンク統計（６０４）に依存して、ネットワーク・デバイス（３１０）が故障していると判断する（６０６）ステップとを含む。つまり、他のすべてのリンクに対するリンク統計が劣化リンクを示すとき、すなわち劣化していないと考えられるリンクがないとき、ＶＭＭＭは１つのリンクを支持するハードウェアまたはソフトウェアではなく、ネットワーク・デバイス全体が故障していると判断する。
【００５５】
加えて図６の方法は、ネットワーク・サーバ間のデータ通信のためのフェールオーバ・ネットワーク・デバイス（６１６）を選択する（６０８）ステップと、特定のサーバ上の仮想マシンを移行させない（６１０）ステップとを含む。フェールオーバ・ネットワーク・デバイス（６１６）を選択するステップは、たとえばフェールオーバ・デバイスのリスト上に指定された次に利用可能なデバイスを選択することなどによるさまざまなやり方で行われてもよい。フェールオーバ・ネットワーク・デバイス（６１６）を選択する（６０８）ステップはさらに、故障していると判断されたネットワーク・デバイス（３１０）を通さずに、リンク（６１２および６１４）を確立することなどによって、フェールオーバ・ネットワーク・デバイス（６１６）を通るデータ通信を再ルーティングするステップを含んでもよい。
【００５６】
図６の方法においては、サーバ（３１２）に起こり得るハードウェアまたはソフトウェア・データ通信障害ではなく、ネットワーク・デバイス（３１０）が故障している。したがって、サーバ（３１２）がフェールオーバ・ネットワーク・デバイス（６１６）を介してデータ通信できる限り、仮想マシン（３１６）を別のサーバに移行させる必要はない。
【００５７】
上記のとおり、本発明の実施形態に従ってＶＭを移行させるステップは特に、ＶＭＭＭがリンク統計に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップを含む。さらなる説明のために、図７は、本発明の実施形態に従って、ＶＭＭＭがリンク統計に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断する（３０６）ための例示的な方法を示す流れ図を示す。
【００５８】
図７の方法において、ネットワーク・デバイスが集めるリンク統計はいくつかのタイムスタンプを押されたエントリ（７０２）を含み、その各々はネットワーク・デバイスを特定のサーバに結合しているリンク上で受け取られたエラーのバイトを表す。図７の例において、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断する（３０６）ステップは、エラーのバイトを表すタイムスタンプを押されたエントリからビット・エラー率（ｂｉｔ  ｅｒｒｏｒ  ｒａｔｅ）（７０６）を算出し（７０４）、算出されたビット・エラー率（７０６）が予め定められた閾値（７１０）よりも大きいかどうかを判断する（７０８）ことによって行われる。もしビット・エラー率（７０６）が予め定められた閾値（７１０）以下であれば、図７の方法を行うＶＭＭＭはそのリンクが劣化していないと判断する（７１４）。しかし、もし算出されたビット・エラー率（７０６）が予め定められた閾値（７１０）よりも大きければ、ＶＭＭＭはネットワーク・デバイスを特定のサーバに結合しているリンクが劣化していると判断する（７１２）。
【００５９】
図８は、本発明の実施形態に従って、ＶＭＭＭがリンク統計に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断する（３０６）ためのさらなる例示的な方法を示す流れ図を示す。図８の方法において、ネットワーク・デバイスが集めて図８の方法を行うＶＭＭＭに提供するリンク統計は、ネットワーク・デバイスを特定のサーバに結合しているリンク上で受け取られたテスト・データのシンボル・エラー（８０２）を記述する情報を含む。シンボル・エラー（８０２）とは、テスト・パターンにおいて受信側に送信されたシンボルの変更である。テスト・パターンの一例は、サーバからネットワーク・デバイスに周期的に送られるデータのバイトを含む。ネットワーク・デバイスおよびサーバの両方が、データのバイトの適切な形成を認識している。データのテスト・バイトを形成するビットのいずれか１つが誤っていれば、ネットワーク・スイッチはそのインスタンスをシンボル・エラーとして記録する。たとえば、サーバからネットワーク・スイッチに送られたデータのバイトを含むテスト・パターンがビット・パターン１１１１１１１１を有しており、１０００１０１０として受け取られたと考える。ネットワーク・デバイスはシンボル・エラーのインスタンスを記録し、場合によってはそのシンボル・エラーのインスタンスに含まれるビット・エラーの数を示す。この例において、ネットワーク・デバイスは、シンボル・エラーの現在のインスタンスにおいて５つのビット・エラーが起こったことを示してもよい。
【００６０】
ネットワーク・デバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断する（３０６）ステップは、シンボル・エラー（８０２）を記述する情報に依存して、シンボル・エラーの頻度（８０６）を算出する（８０４）ステップと、シンボル・エラー（８０２）を記述する情報に依存して、ネットワーク・デバイスを特定のサーバに結合しているリンク上のシンボル・エラー（８０２）の頻度（８０６）が予め定められた閾値（８１０）よりも大きいかどうかを判断する（８０８）ステップとを含む。もしシンボル・エラー（８０２）の頻度（８０６）が予め定められた閾値（８１０）以下であれば、ＶＭＭＭはそのリンクが劣化していないと判断する（８１４）。もしシンボル・エラー（８０２）の頻度（８０６）が予め定められた閾値（８１０）よりも大きければ、ＶＭＭＭはネットワーク・デバイスを特定のサーバに結合しているリンクが劣化していると判断する（８１２）。
【００６１】
当業者に認識されるように、本発明の局面はシステム、方法またはコンピュータ・プログラム製品として具現化されてもよい。したがって本発明の局面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアおよびハードウェアの局面を組み合わせた実施形態の形を取ってもよく、本明細書においてこれらはすべて一般的に「回路」、「モジュール」または「システム」と呼ばれることがある。さらに、本発明の局面は、コンピュータ読取り可能プログラム・コードが具現化された、１つまたはそれ以上のコンピュータ読取り可能媒体（単数または複数）において具現化されるコンピュータ・プログラム製品の形を取ってもよい。
【００６２】
１つまたはそれ以上のコンピュータ読取り可能媒体（単数または複数）のあらゆる組み合わせが使用されてもよい。コンピュータ読取り可能媒体は、コンピュータ読取り可能信号媒体またはコンピュータ読取り可能記憶媒体であってもよい。コンピュータ読取り可能記憶媒体は、たとえば電子、磁気、光学、電磁気、赤外、または半導体のシステム、装置、もしくはデバイス、または前述のもののあらゆる好適な組み合わせなどであってもよいがそれに限定されない。コンピュータ読取り可能記憶媒体のより特定的な例（非網羅的なリスト）は以下を含み得る。すなわち、１つまたはそれ以上のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）またはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ：ＣＤ−ＲＯＭ）、光学記憶装置、磁気記憶装置、または前述のもののあらゆる好適な組み合わせである。この文書の文脈において、コンピュータ読取り可能記憶媒体は、命令実行システム、装置またはデバイスによって、またはそれに関連して使用されるためのプログラムを含有または保存できるあらゆる有形の媒体であってもよい。
【００６３】
コンピュータ読取り可能信号媒体は、たとえばベースバンド内または搬送波の部分などとしてコンピュータ読取り可能プログラム・コードが具現化された伝播データ信号を含んでもよい。こうした伝播信号は、電磁気信号、光学信号、またはそのあらゆる好適な組み合わせを含むがそれに限定されないさまざまな形のいずれかを取ってもよい。コンピュータ読取り可能信号媒体は、コンピュータ読取り可能記憶媒体ではなく、命令実行システム、装置またはデバイスによって、またはそれに関連して使用されるプログラムを通信、伝播または移送できるあらゆるコンピュータ読取り可能媒体であってもよい。
【００６４】
コンピュータ読取り可能媒体において具現化されるプログラム・コードは、無線、ワイヤライン、光ファイバ・ケーブル、ＲＦなど、または前述のもののあらゆる好適な組み合わせを含むがそれに限定されないあらゆる適切な媒体を用いて伝送されてもよい。
【００６５】
本発明の局面に対する動作を行うためのコンピュータ・プログラム・コードは、オブジェクト指向プログラミング言語、たとえばＪａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋など、および従来の手続き型プログラミング言語、たとえば「Ｃ」プログラミング言語または類似のプログラミング言語などを含む、１つまたはそれ以上のプログラミング言語のあらゆる組み合わせで書かれていてもよい。プログラム・コードは、すべてがユーザのコンピュータで実行されてもよいし、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータで実行されてもよいし、一部がユーザのコンピュータで、一部がリモート・コンピュータで実行されてもよいし、すべてがリモート・コンピュータまたはサーバで実行されてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＷＡＮ）を含むあらゆるタイプのネットワークを通じてユーザのコンピュータに接続されてもよいし、（たとえば、インターネット・サービス・プロバイダを用いてインターネットを通じて）外部コンピュータへの接続が行われてもよい。
【００６６】
本発明の実施形態に従う方法、装置（システム）およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方を参照して、本発明の局面を上述した。流れ図もしくはブロック図またはその両方の各ブロック、ならびに流れ図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装され得ることが理解されるだろう。これらのコンピュータ・プログラム命令が、汎用コンピュータもしくは専用コンピュータのプロセッサ、またはマシンを生成するためのその他のプログラマブル・データ処理装置に与えられることによって、そのコンピュータのプロセッサまたはその他のプログラマブル・データ処理装置を介して実行された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能／動作を実装するための手段を生成するようにしてもよい。
【００６７】
これらのコンピュータ・プログラム命令は、コンピュータ、その他のプログラマブル・データ処理装置またはその他のデバイスに特定の態様で機能するよう指示できるコンピュータ読取り可能媒体の中に保存されることによって、コンピュータ読取り可能媒体中に保存された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能／動作を実現する命令を含む製造品を生成するようにしてもよい。
【００６８】
さらに、コンピュータ・プログラム命令は、コンピュータ、その他のプログラマブル・データ処理装置またはその他のデバイスにロードされることによって、そのコンピュータ、その他のプログラマブル装置またはその他のデバイスにおいて一連の動作ステップを行わせることにより、コンピュータまたはその他のプログラマブル装置において実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するような、コンピュータに実装されるプロセスを生成してもよい。
【００６９】
図面中の流れ図およびブロック図は、本発明のさまざまな実施形態に従うシステム、方法およびコンピュータ・プログラム製品の実装可能なアーキテクチャ、機能および動作を例示するものである。これに関して、流れ図またはブロック図における各ブロックは、指定された論理機能（単数または複数）を実装するための１つまたはそれ以上の実行可能な命令を含むモジュール、セグメント、またはコードの部分を表していてもよい。さらに、いくつかの代替的な実装においては、ブロック中に示される機能が図面に示される以外の順序で起こることがあることに留意すべきである。たとえば、連続して示される２つのブロックは、伴われる機能に依存して、実際には実質的に同時に実行されてもよいし、それらのブロックがときには逆の順序で実行されてもよい。さらに、ブロック図もしくは流れ図またはその両方の各ブロック、およびブロック図もしくは流れ図またはその両方のブロックの組み合わせは、指定された機能もしくは動作を行う専用ハードウェア・ベース・システム、または専用ハードウェアとコンピュータ命令との組み合わせによって実装され得ることが注目される。
【００７０】
前述の説明から、本発明のさまざまな実施形態において多くの修正および変更が行われてもよいことを当業者は理解するだろう。
【図１】
0005889284.tif 000002
【図２】
0005889284.tif 000003
【図３】
0005889284.tif 000004
【図４】
0005889284.tif 000005
【図５】
0005889284.tif 000006
【図６】
0005889284.tif 000007
【図７】
0005889284.tif 000008
【図８】
0005889284.tif 000009