ネットワークサーバ間で仮想マシンを移行させるための方法であって、前記サーバはデータ通信のためにデータ通信ネットワークに結合されており、前記ネットワークはネットワーキングデバイスを含み、前記方法は、仮想マシン管理モジュールVMMMによって特定のサーバ上に1つまたはそれ以上の仮想マシンを確立するステップと、データ通信のために前記ネットワークデバイスを前記特定のサーバに結合しているリンクのリンク統計を前記VMMMから前記ネットワーキングデバイスに問い合わせるステップと、前記VMMMが前記リンク統計に依存して、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するステップと、もし前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化していれば、前記特定のサーバ上で実行している仮想マシンを行先サーバに移行させるステップとを含む、方法。前記特定のサーバ上で実行している仮想マシンを行先サーバに移行させるステップはさらに、前記ネットワークデバイスを他のサーバに結合しているリンクのリンク統計を前記ネットワークデバイスに問い合わせるステップと、前記リンク統計に依存して、劣化していないリンクを識別するステップと、前記劣化していないリンクによって前記ネットワークデバイスに結合されているサーバを、前記特定のサーバ上で実行している前記仮想マシンに対する前記行先サーバとして選択するステップとを含む、請求項1に記載の方法。仮想マシンを移行させるステップは、劣化していないリンクが利用可能なときにのみ前記仮想マシンを移行させるステップをさらに含み、前記ステップは、前記ネットワークデバイスを他のサーバに結合しているリンクのリンク統計を前記ネットワークデバイスに問い合わせるステップと、前記ネットワークデバイスを他のサーバに結合しているリンクの前記リンク統計に依存して、前記ネットワークデバイスが故障していると判断するステップと、前記ネットワークサーバ間のデータ通信のためのフェールオーバネットワークデバイスを選択するステップと、前記特定のサーバ上の前記仮想マシンを移行させないステップとを含む、請求項1または2に記載の方法。前記リンク統計は、前記ネットワークデバイスを前記特定のサーバに結合している前記リンク上で受け取られたエラーのバイトを表す複数のタイムスタンプを押されたエントリを含み、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するステップはさらに、エラーのバイトを表す前記タイムスタンプを押されたエントリからビットエラー率を算出するステップと、前記算出されたビットエラー率が予め定められた閾値よりも大きいかどうかを判断するステップと、もし前記算出されたビットエラー率が前記予め定められた閾値よりも大きければ、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化していると判断するステップとを含む、請求項1から3のいずれか1項に記載の方法。前記リンク統計は、前記ネットワークデバイスを前記特定のサーバに結合している前記リンク上で受け取られたテストデータのシンボルエラーを記述する情報を含み、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するステップはさらに、シンボルエラーを記述する前記情報に依存して、前記シンボルエラーの頻度を算出するステップと、シンボルエラーを記述する前記情報に依存して、前記ネットワークデバイスを前記特定のサーバに結合している前記リンク上のシンボルエラーの頻度が予め定められた閾値よりも大きいかどうかを判断するステップと、もしシンボルエラーの前記頻度が前記予め定められた閾値よりも大きければ、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化していると判断するステップとを含む、請求項1から4のいずれか1項に記載の方法。前記サーバを互いのサーバおよび前記ネットワークデバイスに結合しているリンクを通過する前記サーバ間のデータ通信を前記ネットワークデバイスによってモニタリングするステップと、前記サーバを互いのサーバおよび前記ネットワークデバイスに結合している前記リンクを通過する前記サーバ間の前記データ通信を記述するリンク統計を管理情報ベースMIBに保存するステップとをさらに含む、請求項1から5のいずれか1項に記載の方法。ネットワークサーバ間で仮想マシンを移行させるための装置であって、前記サーバはデータ通信のためにデータ通信ネットワークに結合されており、前記ネットワークはネットワーキングデバイスを含み、前記装置はコンピュータプロセッサと、前記コンピュータプロセッサに動作的に結合されたコンピュータメモリとを有し、前記装置は、仮想マシン管理モジュールVMMMによって特定のサーバ上に1つまたはそれ以上の仮想マシンを確立するための手段と、データ通信のために前記ネットワークデバイスを前記特定のサーバに結合しているリンクのリンク統計を前記VMMMから前記ネットワーキングデバイスに問い合わせるための手段と、前記VMMMが前記リンク統計に依存して、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するための手段と、もし前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化していれば、前記特定のサーバ上で実行している仮想マシンを行先サーバに移行させるための手段とを含む、装置。前記特定のサーバ上で実行している仮想マシンを行先サーバに移行させるための前記手段はさらに、前記ネットワークデバイスを他のサーバに結合しているリンクのリンク統計を前記ネットワークデバイスに問い合わせるための手段と、前記リンク統計に依存して、劣化していないリンクを識別するための手段と、前記劣化していないリンクによって前記ネットワークデバイスに結合されているサーバを、前記特定のサーバ上で実行している前記仮想マシンに対する前記行先サーバとして選択するための手段とを含む、請求項7に記載の装置。仮想マシンを移行させるための前記手段は、劣化していないリンクが利用可能なときにのみ前記仮想マシンを移行させるための手段をさらに含み、前記手段は、前記ネットワークデバイスを他のサーバに結合しているリンクのリンク統計を前記ネットワークデバイスに問い合わせるための手段と、前記ネットワークデバイスを他のサーバに結合しているリンクの前記リンク統計に依存して、前記ネットワークデバイスが故障していると判断する手段と、前記ネットワークサーバ間のデータ通信のためのフェールオーバネットワークデバイスを選択するための手段と、前記特定のサーバ上の前記仮想マシンを移行させない手段とを含む、請求項7または8に記載の装置。前記リンク統計は、前記ネットワークデバイスを前記特定のサーバに結合している前記リンク上で受け取られたエラーのバイトを表す複数のタイムスタンプを押されたエントリを含み、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するための前記手段はさらに、エラーのバイトを表す前記タイムスタンプを押されたエントリからビットエラー率を算出するための手段と、前記算出されたビットエラー率が予め定められた閾値よりも大きいかどうかを判断するための手段と、もし前記算出されたビットエラー率が前記予め定められた閾値よりも大きければ、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化していると判断する手段とを含む、請求項7から9のいずれか1項に記載の装置。前記リンク統計は、前記ネットワークデバイスを前記特定のサーバに結合している前記リンク上で受け取られたテストデータのシンボルエラーを記述する情報を含み、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化しているかどうかを判断するための前記手段はさらに、シンボルエラーを記述する前記情報に依存して、前記シンボルエラーの頻度を算出するための手段と、シンボルエラーを記述する前記情報に依存して、前記ネットワークデバイスを前記特定のサーバに結合している前記リンク上のシンボルエラーの頻度が予め定められた閾値よりも大きいかどうかを判断するための手段と、もしシンボルエラーの前記頻度が前記予め定められた閾値よりも大きければ、前記ネットワークデバイスを前記特定のサーバに結合している前記リンクが劣化していると判断する手段とを含む、請求項7から10のいずれか1項に記載の装置。前記サーバを互いのサーバおよび前記ネットワークデバイスに結合しているリンクを通過する前記サーバ間のデータ通信を前記ネットワークデバイスによってモニタリングするための手段と、前記サーバを互いのサーバおよび前記ネットワークデバイスに結合している前記リンクを通過する前記サーバ間の前記データ通信を記述するリンク統計を管理情報ベースMIBに保存するための手段とをさらに含む、請求項7から11のいずれか1項に記載の装置。コンピュータプログラムであって、コンピュータシステムにロードされてそこで実行されるときに、請求項1から6のいずれか1項に記載の方法のすべての前記ステップを前記コンピュータシステムに行わせるための、コンピュータ読取り可能媒体に保存されたコンピュータプログラムコードを含む、コンピュータプログラム。現在のコンピュータシステムは、データ通信のためにしばしばネットワーク化されており、かつしばしば仮想マシン、すなわちハードウェアをエミュレートするソフトウェアを使用することによっていくつかのオペレーティングシステムを同時に実行させる。時々、コンピュータシステムをつなぐネットワークデバイスおよびデータ通信リンクが障害を起こし始めることがある。現在の仮想マシンおよび仮想マシンを実行するコンピュータシステムの間のデータ通信を維持する方法は典型的に、修正動作を取る前に完全な通信障害が起こるまで待つか、または仮想マシンを実行するコンピュータからの大量の処理力を要求する。よって、公知の技術のこれらの欠点に対処することが望ましい。したがって本発明は第1の局面において、ネットワークサーバ間で仮想マシンを移行させるための方法を提供し、このサーバはデータ通信のためにデータ通信ネットワークに結合されており、このネットワークはネットワーキングデバイスを含み、この方法は、仮想マシン管理モジュールvirtualmachinemanagementmodule:VMMMによって特定のサーバ上に1つまたはそれ以上の仮想マシンを確立するステップと、データ通信のためにネットワークデバイスをその特定のサーバに結合しているリンクのリンク統計をVMMMからネットワーキングデバイスに問い合わせるステップと、VMMMがそのリンク統計に依存して、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップと、もしネットワークデバイスを特定のサーバに結合しているリンクが劣化していれば、その特定のサーバ上で実行している仮想マシンを行先サーバに移行させるステップとを含む。好ましくは、特定のサーバ上で実行している仮想マシンを行先サーバに移行させるステップは、ネットワークデバイスを他のサーバに結合しているリンクのリンク統計をネットワークデバイスに問い合わせるステップと、そのリンク統計に依存して、劣化していないリンクを識別するステップと、その劣化していないリンクによってネットワークデバイスに結合されているサーバを、特定のサーバ上で実行している仮想マシンに対する行先サーバとして選択するステップとをさらに含む。好ましくは、仮想マシンを移行させるステップは、劣化していないリンクが利用可能なときにのみ仮想マシンを移行させるステップをさらに含み、このステップは、ネットワークデバイスを他のサーバに結合しているリンクのリンク統計をネットワークデバイスに問い合わせるステップと、ネットワークデバイスを他のサーバに結合しているリンクのリンク統計に依存して、そのネットワークデバイスが故障していると判断するステップと、ネットワークサーバ間のデータ通信のためのフェールオーバネットワークデバイスを選択するステップと、特定のサーバ上の仮想マシンを移行させないステップとを含む。好ましくは、リンク統計は、ネットワークデバイスを特定のサーバに結合しているリンク上で受け取られたエラーのバイトを表す複数のタイムスタンプを押されたエントリを含み、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップはさらに、エラーのバイトを表すタイムスタンプを押されたエントリからビットエラー率を算出するステップと、算出されたビットエラー率が予め定められた閾値よりも大きいかどうかを判断するステップと、もし算出されたビットエラー率が予め定められた閾値よりも大きければ、ネットワークデバイスを特定のサーバに結合しているリンクが劣化していると判断するステップとを含む。好ましくは、リンク統計は、ネットワークデバイスを特定のサーバに結合しているリンク上で受け取られたテストデータのシンボルエラーを記述する情報を含み、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップはさらに、シンボルエラーを記述する情報に依存して、シンボルエラーの頻度を算出するステップと、シンボルエラーを記述する情報に依存して、ネットワークデバイスを特定のサーバに結合しているリンク上のシンボルエラーの頻度が予め定められた閾値よりも大きいかどうかを判断するステップと、もしシンボルエラーの頻度が予め定められた閾値よりも大きければ、ネットワークデバイスを特定のサーバに結合しているリンクが劣化していると判断するステップとを含む。この方法はさらに、サーバを互いのサーバおよびネットワークデバイスに結合しているリンクを通過するサーバ間のデータ通信をネットワークデバイスによってモニタリングするステップと、サーバを互いのサーバおよびネットワークデバイスに結合しているリンクを通過するサーバ間のデータ通信を記述するリンク統計を管理情報ベースmanagementinformationbase:MIBに保存するステップとを含んでもよい。第2の局面において、本発明はネットワークサーバ間で仮想マシンを移行させるための装置を提供し、このサーバはデータ通信のためにデータ通信ネットワークに結合されており、このネットワークはネットワーキングデバイスを含み、この装置はコンピュータプロセッサと、コンピュータプロセッサに動作的に結合されたコンピュータメモリとを有し、この装置は、仮想マシン管理モジュールVMMMによって特定のサーバ上に1つまたはそれ以上の仮想マシンを確立するための手段と、データ通信のためにネットワークデバイスをその特定のサーバに結合しているリンクのリンク統計をVMMMからネットワーキングデバイスに問い合わせるための手段と、VMMMがそのリンク統計に依存して、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するための手段と、もしネットワークデバイスを特定のサーバに結合しているリンクが劣化していれば、その特定のサーバ上で実行している仮想マシンを行先サーバに移行させるための手段とを含む。第2の局面の装置は、第1の局面の好ましいステップを行うように適合された手段をさらに提供してもよい。第3の局面においては、コンピュータシステムにロードされてそこで実行されるときに、第1の局面に従う方法のすべてのステップを前記コンピュータシステムに行わせるための、コンピュータ読取り可能媒体に保存されたコンピュータプログラムコードを含むコンピュータプログラムが提供される。つまり、ネットワークサーバ間で仮想マシンを移行させるための方法、装置および製品が記載される。本発明の実施形態において、サーバはデータ通信のために、ネットワーキングデバイスを含むデータ通信ネットワークに結合されている。本発明の実施形態に従って仮想マシンを移行させるステップは、仮想マシン管理モジュールVMMMによって特定のサーバ上に1つまたはそれ以上の仮想マシンを確立するステップと、データ通信のためにネットワークデバイスをその特定のサーバに結合しているリンクのリンク統計をVMMMからネットワーキングデバイスに問い合わせるステップと、VMMMがそのリンク統計に依存して、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップとを含む。もしネットワークデバイスを特定のサーバに結合しているリンクが劣化していれば、その特定のサーバ上で実行している仮想マシンを行先サーバに移行させる。本発明の好ましい実施形態を、添付の図面を参照しながら単なる例として説明する。本発明に従ってネットワークサーバ間で仮想マシンを移行させるための例示的な方法、装置および製品を、図1から始まる添付の図面を参照しながら説明する。図1は、本発明の実施形態に従って仮想マシンがネットワークサーバ間で移行される例示的なデータセンタの線画を示す。データセンタ120は、ミッションクリティカルコンピュータシステムおよび関連コンポーネントを収容するために用いられる設備である。こうしたデータセンタは、環境制御空調、消火など、冗長/バックアップ電源、冗長データ通信接続、および設備内の区画化されたセキュリティゾーンへのバイオメトリックアクセス制御によって強調される高いセキュリティを含んでもよい。加えてデータセンタは、典型的にはコンピュータおよび通信機器である大量の電子機器を収容してもよい。データセンタは、ある組織がその動作のために必要なデータを処理する目的のために維持していてもよい。たとえば銀行がデータセンタを有してもよく、そこでは銀行の顧客の口座情報が維持されており、それらの口座に関わるトランザクションが行われる。実際には、中規模またはそれより大きい企業はいずれも何らかの種類のデータセンタを有しており、大企業はしばしば何十ものデータセンタを有する。仮想マシンvirtualmachine:VMは、本明細書においてこの用語が用いられるとき、コンピュータなどのマシンのソフトウェアの実装を示す。仮想マシンは、各々が自身のオペレーティングシステムを実行し得る異なる仮想マシンの間で、基礎をなす物理マシンのリソースを共有することを可能にする。仮想化を提供するソフトウェア層は、仮想マシンモニタまたはハイパーバイザと呼ばれる。ハイパーバイザは、複数のオペレーティングシステムがホストコンピュータ上で別々の仮想マシンにおいて同時に実行できるようにするために、ソフトウェアおよびハードウェアプラットフォーム仮想化を行う自動計算機のモジュールである。ハイパーバイザはホストのハードウェアで直接実行されて、ハードウェアアクセスを制御したり、ゲストオペレーティングシステムをモニタしたりする。ゲストオペレーティングシステムはハイパーバイザの上のレベルで実行される。ハイパーバイザによって提供されるプラットフォーム仮想化を、本明細書においては仮想化環境と呼ぶ。仮想化環境とは、オペレーティングシステムおよびその他のソフトウェアアプリケーションの観点から、計算プラットフォームの物理的特徴、すなわちコンピュータプロセッサ、コンピュータメモリ、I/Oアダプタなどが取り除かれている環境である。VMは、たとえば以下のものなどを含む多くの利益を提供する。複数のOS環境が、互いに強固に分離されて、同じ物理的コンピュータハードウェアリソース上に共存できる、基礎をなす物理的コンピュータハードウェアリソースのISAとはいくらか異なる命令セットアーキテクチャinstructionsetarchitecture:ISA、アプリケーションプロビジョニング、保全、高可用性、および災害回復、ならびに当業者の読者が考えるようなその他の利益。図1のシステムは一般的に、サーバ間のVM移行が可能である。移行Migrationとは、本明細書においてこの用語が用いられるとき、1つの物理的サーバから別の物理的サーバへの仮想マシンの効果的な移動である。移行は、本明細書においては1つのサーバから別のサーバへのVMの効果的な移動という観点で記述される。なぜなら移行は移動movementの手段を示すのではなく、移動の最終結果を示すからである。つまり、移行は2つの状態を説明しており、第1の状態は特定のVMが特定のサーバ上で実行されている状態であり、第2の状態はその特定のVMがもはやその特定のサーバ上で実行されておらず、代わりに別のサーバ上で実行されている状態である。したがってこの第1の状態から第2の状態へと、特定のVMが特定のサーバから他のサーバに移動したと言ってもよい。しかし、VMのこうした移動を行う手段は本発明の範囲内で大きく変動し得る。VMを特定のサーバから別のサーバに移行させるということは、たとえば特定のサーバ上で実行しているVMを表すデータをその特定のサーバのメモリから別のサーバのメモリにコピーすること、特定のサーバ上で実行しているVMの以前確立されたイメージを別のサーバにアップロードしてそこで実行し、その特定のサーバで実行しているVMの実行を停止すること、別のサーバに仮想マシンのデフォルトイメージを確立し、そのVMのデフォルトイメージにおいて特定のサーバのVMで実行しているのと同じユーザレベルアプリケーションのインスタンスを実行することなどを含んでもよい。図1の例におけるデータセンタ120の例は、いくつかのブレードサーバを収容するように特定的に構成されたタイプのサーバシャーシであるBladeCenterRIBM社の登録商標100を含む。サーバは、本明細書においてこの用語が用いられるとき、一般的にネットワーク接続を通じてサービス例、データベースアクセス、ファイル転送、リモートアクセスまたはリソース例、ファイルスペースを提供するマルチユーザコンピュータを示す。サーバという用語は、状況によってはサーバのコンピュータハードウェア、およびサーバ上で実行されるあらゆるサーバアプリケーションソフトウェアまたはオペレーティングシステムソフトウェアを包括的に示す。サーバアプリケーションとは、ユーザからの要求に応答を送り返すことによって処理するための接続を受け入れるアプリケーションプログラムである。サーバアプリケーションはクライアントアプリケーションの使用中に同じコンピュータ上で実行されてもよいし、サーバアプリケーションはコンピュータネットワークを通じて接続を受け入れてもよい。サーバアプリケーションの例は、ファイルサーバ、データベースサーバ、バックアップサーバ、プリントサーバ、メールサーバ、ウェブサーバ、FTPサーバ、アプリケーションサーバ、VPNサーバ、DHCPサーバ、DNSサーバ、WINSサーバ、ログオンサーバ、セキュリティサーバ、ドメインコントローラ、バックアップドメインコントローラ、プロキシサーバ、ファイアウォールなどを含む。ブレードサーバとは、物理的スペースおよびエネルギの使用を最小限にするために最適化されたモジュラー設計を有するサーバコンピュータである。標準的なラックマウントサーバは少なくとも電源コードおよびネットワークケーブルによって機能できるのに対し、ブレードサーバはスペースの節約、電力消費の最小化およびその他の考慮から、多くのコンポーネントを除去しているが、コンピュータとみなされるすべての機能的コンポーネントはなおも有している。複数のブレードサーバを保持できるBladeCenterRIBM社の登録商標は、たとえば電力、冷却、ネットワーク化、さまざまな相互接続および管理などのサービスを提供するが、ブレードプロバイダが異なれば、ブレード自体ときにはエンクロージャ全体に何を含ませるかに関して異なる原則を有する。図1の例において、BladeCenterRIBM社の登録商標100は2つのキャビネットベイ104、106を含み、その各々はいくつかのコンポーネントを含む。キャビネットベイ104はいくつかのブレードサーバ108を含み、その各々は電源132から電力供給されている。キャビネットベイ106はBladeCenterRIBM社の登録商標100のための電源132と、データ通信ネットワークルータ130と、ネットワークスイッチ134と、以下により詳細に説明される仮想マシン管理モジュールVMMM102とを含む。キャビネットベイ106はさらに、独立ディスクの冗長アレイRedundantArrayofIndependentDisks:RAID136および電源ストリップ138も含む。図1においては、説明を明確にするためにBladeCenterRIBM社の登録商標100内のブレードサーバ108のうち2つ、すなわちブレードサーバ152およびブレードサーバ128を拡大した形で示している。しかし、BladeCenterRIBM社の登録商標100のブレードサーバ108の各々がサーバ152、128と類似のコンポーネントを含んでもよく、本発明の実施形態に従ってVM移行に関与するときには類似の態様で動作してもよいことを当業者の読者は理解するだろう。本発明の実施形態に従ってVM移行が行われるシステムにおいて有用なサーバの例として、サーバ152を考える。サーバ152は、少なくとも1つのコンピュータプロセッサ156またはCPUと、ランダムアクセスメモリ168randomaccessmemory:RAMとを含み、ランダムアクセスメモリ168は高速メモリバス166およびバスアダプタ158を通じてプロセッサ156およびサーバ152の他のコンポーネントに接続されている。サーバ152のRAM168にはハイパーバイザ140が保存されており、ハイパーバイザ140は2つの仮想マシン114、116がサーバ152の基礎をなすハードウェア上で実行されて、サーバ152のハードウェアリソースを利用することを可能にする。仮想マシン114内または別の言い方で仮想マシン114上で実行されるのは、オペレーティングシステム154および2つのユーザレベルアプリケーション122、123である。本発明の実施形態に従うVM移行に関与するサーバにおいて有用なオペレーティングシステムは、UNIXR、リナックスR、マイクロソフトXPR、AIXRIBM社の登録商標、IBMRのi5/OSRIBM社の登録商標、および当業者が考えるその他のものを含む。仮想マシン116内で実行されるのは、オペレーティングシステム154および2つのユーザレベルアプリケーション124、125である。仮想マシン116内で実行されるオペレーティングシステム154は、仮想マシン114内で実行される同じオペレーティングシステム154の別のインスタンスであってもよいし、全体的に別のタイプのオペレーティングシステム154であってもよい。つまり、サーバ152内の両方のオペレーティングシステムが同じ、たとえばUNIXRなどであってもよいし、両方のオペレーティングシステムが異なっていて、たとえばUNIXRおよびマイクロソフトXPRなどであってもよい。図1の例においては、RAM168の中にハイパーバイザ140と、オペレーティングシステム154と、ユーザレベルアプリケーション122~125とが示されているが、こうしたソフトウェアの多くのコンポーネントは典型的に、たとえばディスクドライブ170などの不揮発性メモリにも保存されている。図1のサーバ152は、拡張バス160およびバスアダプタ158を通じてプロセッサ156およびサーバ152の他のコンポーネントに結合されているディスクドライブアダプタ172を含む。ディスクドライブアダプタ172は、ディスクドライブ170の形の不揮発性データ記憶装置をサーバ152に接続する。本発明の実施形態に従うネットワークサーバ間の仮想マシン移行に関与するサーバにおいて有用なディスクドライブアダプタは、統合ドライブエレクトロニクスIntegratedDriveElectronics:IDEアダプタ、小型コンピュータシステムインタフェースSmallComputerSystemInterface:SCSIアダプタ、および当業者が考えるその他のものを含む。当業者が考えるように、不揮発性コンピュータメモリは光ディスクドライブ、電気消去可能プログラマブルリードオンリメモリelectricallyerasableprogrammableread-onlymemoryいわゆるEEPROMまたはフラッシュメモリ、RAMドライブなどとして実装されてもよい。図1のサーバ152の例は、1つまたはそれ以上の入力/出力input/output:I/Oアダプタ178を含む。I/Oアダプタは、たとえばコンピュータ表示スクリーンなどの表示デバイスへの出力を制御するためのソフトウェアドライバおよびコンピュータハードウェアなど、ならびにキーボードおよびマウスなどのユーザ入力デバイス181からのユーザ入力などを通じて、ユーザオリエンテッド入力/出力を実装する。図1のサーバ152の例はビデオアダプタ209を含むが、これは表示スクリーンまたはコンピュータモニタなどの表示デバイス180へのグラフィック出力のために特別に設計されたI/Oアダプタの例である。ビデオアダプタ209は、高速ビデオバス164と、バスアダプタ158と、同じく高速バスであるフロントサイドバス162とを通じてプロセッサ156に接続されている。図1の例示的サーバ152は、他のコンピュータとのデータ通信、およびデータ通信ネットワーク図1には示さずとのデータ通信のための通信アダプタ167を含む。こうしたデータ通信は、RS-232接続、ユニバーサルシリアルバスUniversalSerialBus:USBなどの外部バス、およびIPデータ通信ネットワークなどのデータ通信ネットワークを通じて、ならびに当業者が考えるその他のやり方で連続的に行われてもよい。通信アダプタはハードウェアレベルのデータ通信を実装し、それを通じて1つのコンピュータが、直接またはデータ通信ネットワークを通じて、別のコンピュータにデータ通信を送る。本発明の実施形態に従うVM移行に関与するサーバにおいて有用な通信アダプタの例は、ワイヤードダイヤルアップ通信のためのモデム、ワイヤードデータ通信ネットワーク通信のためのイーサネットRIEEE802.3アダプタ、および無線データ通信ネットワーク通信のための802.11アダプタを含む。サーバ152のみがプロセッサ156、RAM168、バスアダプタ158、通信アダプタ167などを含むものとして示されているが、図1の例のブレードサーバ108のいずれも、より特定的にはサーバ128も類似のコンポーネントを含んでもよいことを当業者の読者は認識するだろう。図1のBladeCenterRIBM社の登録商標100のスイッチ134は、ネットワークデバイスすなわちコンピュータネットワークにおけるデータを仲介するユニットの例である。ネットワーキングデバイスは、ネットワーク機器、中間システムIntermediateSystems:ISまたは網間接続装置InterWorkingUnits:IWUsとも呼ばれてもよい。最終受信機であるか、またはデータを生成するユニットは、ホストまたはデータ端末機器と呼ばれる。ネットワーキングデバイスの例は以下を含む。ゲートウェイ:異なるプロトコルを用いる別のネットワークとインタフェースするネットワークノードにおけるデバイス。開放型システム間相互接続OpenSystemInterconnection:OSIの第4層から第7層で動作する。ルータ:データパケットをその行先に向けて転送するための次のネットワークポイントを決定する専用のネットワークデバイス。典型的にOSI第3層で動作する。ブリッジ:複数のネットワークセグメントをデータリンク層に沿って接続するデバイス。OSI第2層で動作する。スイッチ:1つのネットワークセグメントからのトラフィックを、特定のラインまたはリンク、すなわちそのセグメントを別のネットワークセグメントに接続する対象となる単数または複数の行先に割り当てるデバイス。スイッチはハブとは異なり、ネットワークトラフィックを分割して、ネットワーク上のすべてのシステムに送るのではなく異なる行先に送る。OSI第2層で動作する。多層スイッチ:OSI第2層におけるスイッチングに加えて、より上のプロトコル層での機能を提供するスイッチ。ハブ:複数のセグメントをともに接続して、それらをあたかも単一のセグメントであるかのように動作させるデバイス。ハブを用いるとき、すべての付加デバイスは同じブロードキャストドメインおよび同じコリジョンドメインを共有する。したがって、1度に送信できるのはハブに接続された1つのコンピュータのみである。ネットワークトポロジに依存して、ハブはネットワークオブジェクトワークステーション、サーバなどの間のレベル1OSIモデル接続を提供する。加えてハブは、個々のノード間の専用接続を提供するスイッチに比べ、すべてのオブジェクトに共有される帯域幅を提供してもよい。OSI第1層で動作する。リピータ:受け取ったデジタル信号を増幅または再生し、一方でそのデジタル信号をネットワークの1つの部分から別の部分にセットするデバイス。OSI第1層で動作する。プロトコル変換器:たとえば非同期伝送と同期伝送など、2つの異なるタイプの伝送を互いに変換するハードウェアデバイス。ブリッジルータ:ルータおよびブリッジの機能の組み合わせで動作するデバイス。OSI第2層およびOSI第3層の両方で動作する。デジタル媒体受信機:コンピュータネットワークをホームシアタに接続するデバイス。図1の例におけるスイッチ134は、ブレードサーバ108、152および128も含むを、互いとのデータ通信のため、ならびにルータ130およびVMMM102とのデータ通信のために結合する。図1の仮想マシン管理モジュール102VMMMは、図1の例におけるネットワークサーバ108、152および128も含む間の仮想マシン移行を行うために構成された、コンピュータハードウェアおよびソフトウェアの集約を含む自動計算機のモジュールである。加えてVMMMは、移行技術に関わらず、他の仮想マシン管理も行っていてもよい。すなわちVMMM102は、作業負荷、冗長性または可用性のバランスを取る態様で、サーバ間でのVMの割り当てを管理してもよい。VMMM102は、リソース割り当てを管理するか、または別の管理モジュールとともに作業して動作特徴、すなわちスロットリングサーバthrottlingserversなどを制御することによって、VMの動作を管理してもよい。VMMM102はさらに、仮想マシンの割り当て解除を管理して、仮想マシンの電源を完全に切るのではなく待機モードにするかどうかなどを選択してもよい。これらは、本発明の実施形態に従うVM移行のために動作するVMMMが行い得る数多くのタスクのうちのほんのわずかである。図1の例におけるVMMM102は、最初に特定のサーバ上に1つまたはそれ以上のVMを確立することによって、本発明の実施形態に従って図1のBladeCenterRIBM社の登録商標100内のブレードサーバ108間でVMを移行させてもよい。説明の目的のために、図1の例におけるVMMM102はサーバ152上に仮想マシン114および仮想マシン116を確立すると考える。次いでVMMMは、ネットワーキングデバイスすなわちスイッチ134に、データ通信のためにネットワークデバイスを特定のサーバに結合しているリンクのリンク統計112を問い合わせてもよい。リンクは、本明細書においてこの用語が記載されるとき、状況によってはデバイス間のデータ通信を支持するための2つのデバイス間の物理的または論理的結合を示す。リンク統計は、サーバ108、152、128を互いのサーバおよびスイッチ134に結合しているリンクを通過するデータ通信を記述する。次いでVMMM102は、リンク統計112に依存して、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断してもよく、もしネットワークデバイスを特定のサーバに結合しているリンクが劣化していれば、VMMMはその特定のサーバ152上で実行している仮想マシン、たとえばVM114を、たとえばサーバ128などの行先サーバに移行させてもよい。図1のデータセンタ120においてVM移行を行うVMMM102の例として、VMMM102は最初にサーバ152上にVM114およびVM116を確立し、サーバ128上にはVMを確立しないものと考える。サーバ152およびサーバ128を含むサーバ108がネットワークスイッチ134を介して互いにデータ通信メッセージを渡し合う際に、ネットワークスイッチ134はそのデータ通信をモニタし、問い合わせを介してVMMM102によってアクセス可能な予め規定されたメモリ領域にリンク統計を保存する。VMMM102は時々スイッチ134にリンク統計112を問い合わせ、サーバ152およびスイッチ134を結合しているリンクが劣化しているかどうかを判断する。もしそのリンクが劣化していれば、VMMM102はVM114およびVM116をサーバ128に移行し、それはここではVM118およびVM119と示される。サーバ128において現在ハイパーバイザが実行中でなければ、VMMMはVM118、119を確立する前にまずサーバ128においてハイパーバイザ142を開始してもよい。VMMM102はVMに加えて、サーバ152のVM114、116において実行されているユーザレベルアプリケーション122~125もサーバ128のVM118、119に移行させてもよい。図1の例においては、ユーザレベルアプリケーション122~125が移行されて、ユーザレベルアプリケーション126、127、129および131と示されている。本明細書において通信リンクを説明するために用いられる劣化しているdegradingという用語は、リンクが標準以下のレベルで動作しているかもしれないこと、および故障に近いかもしれないことを示す。本明細書において、劣化しているという用語は、VM移行が事後対応の態様ではなく予防的態様で行われること、すなわち緩和に焦点をおいた態様で行われることを示すために用いられている。つまり、図1の例のVMMMはリンクの故障後にVMを移行させるのではなく、完全な故障の前にVMを移行させることによって、もしリンクが完全に故障すれば起こり得るデータ通信および生産性などの損失を緩和する。このやり方によって、サーバおよびVMの可用性が増加する。当業者の読者はさらに、データ通信をモニタリングするステップおよびリンクが劣化しているかどうかを判断するステップが、VMを支持して使用可能にしているハイパーバイザによって行われるのではなく、ネットワークデバイスおよびVMMMによって行われていることを認識するだろう。このやり方によって、ハイパーバイザおよびハイパーバイザが動作しているサーバに、データ通信をモニタリングしたりデータ通信リンクが劣化しているかどうかを判断したりするステップの負担がかからず、サーバの動作の効率が上がり、動作のオーバーヘッドが減少する。リンクは、たとえばデータ通信パケットにおける周期的冗長検査CyclicalRedundancyCheck:CRCエラーをもたらす信号エラーを引き起こす電磁干渉、および連結シンボル信号がケーブル特徴に対してスイッチハードウェアを不整合させる原因となる物理的ケーブルの経時変化などを含むさまざまな原因によって劣化し得る。これらはリンク劣化の原因として可能性のある多くの要因のうちのほんのわずかな例であり、こうした原因の各々は十分に本発明の範囲内にある。図1に示される例示的なシステムを構成するサーバおよびその他のデバイスの配置は説明のためのものであって、制限のためのものではない。本発明のさまざまな実施形態に従って有用なデータ処理システムは、当業者が考えるように、図1に示されていない付加的なサーバ、ルータ、その他のデバイス、およびピアトゥピアアーキテクチャを含んでもよい。こうしたデータ処理システムにおけるネットワークは、たとえばTCP伝送制御プロトコルTransmissionControlProtocol、IPインターネットプロトコルInternetProtocol、HTTPハイパーテキスト転送プロトコルHyperTextTransferProtocol、WAP無線アクセスプロトコルWirelessAccessProtocol、HDTPハンドヘルドデバイス移送プロトコルHandheldDeviceTransportProtocol、および当業者が考えるようなその他のものなどを含む多くのデータ通信プロトコルを支持してもよい。図1に示されているものに加えて、さまざまなハードウェアプラットフォームにおいて本発明のさまざまな実施形態が実装されてもよい。図2は、本発明の実施形態に従ってネットワークサーバ間で仮想マシンを移行させるための例示的なシステムのネットワーク図を示す。図2の例示的システムは図1の例に示されるシステムと以下の点で類似である。すなわち、図2のシステムもサーバ152、128と、スイッチ134の形のネットワークデバイスと、VMMM102とを含み、これらはすべてデータ通信ネットワークのローカルエリアネットワークlocalareanetwork:LAN101を介して互いに結合されるかまたはデータ通信している。サーバ152、128およびVMMM102は、データ通信のために他のサーバ150にも結合されている。図2のシステム例におけるサーバ152、128および150は、データ通信のためにデータ通信リンクを介してスイッチ134に結合されている。サーバ152はデータ通信のためにリンク192を通じてデータ通信ネットワーク101およびスイッチ134に結合され、サーバ128はデータ通信のためにリンク194を通じてデータ通信ネットワーク101およびスイッチ134に結合され、他のサーバ150のうちの少なくとも1つはデータ通信のためにリンク190を通じてデータ通信ネットワーク101およびスイッチ134に結合される。リンクは、本明細書においてこの用語が記載されるとき、状況によってはデバイス間のデータ通信を支持するための2つのデバイス間の物理的または論理的結合を示す。たとえばサーバをスイッチに結合するイーサネットRケーブルは、リンクの一例であり得る。たとえばサーバとスイッチのポートなど、2つの端点によって指定される論理的結合もリンクの一例であり得る。ネットワークデバイスとサーバとの間の関係を説明するために本明細書において用いられる結合されるcoupledという用語は、サーバとネットワークデバイスとの間の直接または別様のあらゆる接続を説明するために示される。つまり、ネットワークデバイスとサーバとの間の関係を説明するときの結合されるという用語は、ネットワークデバイスとネットワークデバイスとの直接的な物理的接続に限定されず、他のネットワークデバイスを通じた間接的な接続も含み得る。図2のシステムにおいて、サーバ152、128および150は、図1に示されて説明されたサーバと類似のコンポーネントを含む、すなわちプロセッサ156、RAM168、バスアダプタ158、通信アダプタ178などを含むコンピュータとして実装される。図2の例におけるスイッチ134も、サーバ152および128と類似のタイプのコンピュータ、すなわち自動計算機として実装される。スイッチ134は、RAM168に結合されたプロセッサ156を含む。このスイッチはもちろんより多くのコンポーネント、ソフトウェアおよびハードウェアを含んでもよいが、説明を明確にするために図2の例においてはRAMおよびプロセッサのみが示されている。スイッチ134のRAM168にはトラフィックモニタ202が保存されている。トラフィックモニタ202はコンピュータプログラム命令のモジュールであり、これが実行されることによって、ネットワークスイッチ134はサーバ152、128、150を互いのサーバおよびスイッチ134に結合しているリンク190、192、194を通過するサーバ152、128、150間のデータ通信をモニタし、サーバを互いのサーバおよびスイッチに結合しているリンクを通過するサーバ間のデータ通信を記述するリンク統計112を管理情報ベースMIB204に保存する。リンク統計の例は、各リンクに対する、特定のデバイスからそのリンクに沿って送信されたバイト数、特定のデバイスによってそのリンクに沿って受信されたバイト数、そのリンクに沿って運ばれたエラーのバイト数、およびそのリンクに沿って伝播されたシンボルエラーのインスタンスなどを含む。上述のとおり、リンク統計はMIBに保存されてもよい。MIBは、通信ネットワーク内のエンティティを管理するために用いられる仮想データベースである。このデータベースは階層的木構造であり、エントリはオブジェクト識別子によってアドレス指定されている。インターネット文書コメント要求RequestForComments:RFCsにおいてMIBが考察されており、特にRFC1155TCP/IPに基づくインターネットのための管理情報の構造および識別StructureandIdentificationofManagementInformationforTCP/IPbasedinternetsならびにその2つの関連項目、RFC1213TCP/IPに基づくインターネットのネットワーク管理のための管理情報ベースManagementInformationBaseforNetworkManagementofTCP/IP-basedinternetsおよびRFC1157簡単なネットワーク管理プロトコルASimpleNetworkManagementProtocolに考察されている。図1に関して上述したとおり、スイッチ134に加えて、VMMM102も自動計算機すなわちコンピュータとして実装されてもよい。したがってさらなる説明のために、図2はコンピュータとして実装されるVMMM102の例を示す。図2のVMMM102の例は、サーバ152、128のコンポーネントと類似のコンポーネントを含み、すなわちプロセッサ156、バスアダプタ158、通信アダプタ178、RAM168などを含む。VMMM102のRAM168には仮想マシンアロケータ110が保存されている。VMアロケータ110はコンピュータプログラム命令のモジュールであって、これが実行されるときに、本発明の実施形態に従ってネットワークサーバ間で仮想マシンが移行される。VMアロケータ110の例は、最初に特定のサーバ上に1つまたはそれ以上の仮想マシン114、116を確立し、データ通信のためにネットワークデバイス134をその特定のサーバ152に結合しているリンク192のリンク統計112をネットワーキングデバイス134に問い合わせ、そのリンク統計112に依存して、ネットワークデバイス134を特定のサーバ152に結合しているリンク192が劣化しているかどうかを判断し、もしリンク192が劣化していれば、特定のサーバ152上で実行している仮想マシン114、116を行先サーバ128または150に移行させることによって、図2のシステムにおけるサーバ152、128および150間でVMを移行させてもよい。VMアロケータ110は、仮想マシン114、116の移行に加えて、VM114、116内で実行されるユーザレベルアプリケーション122、123、124、125も移行させてもよい。たとえば図2のシステムにおいて、VMアロケータ110は、サーバ152上のVM114をサーバ128上のVM118に移行させてもよい。VMアロケータ110はさらに、VM114内で実行されるユーザレベルアプリケーション122、123をVM118内で実行されるユーザレベルアプリケーション126、127に移行させてもよい。類似の態様で、VMアロケータ110は、サーバ152上のVM116をサーバ128上のVM119に移行させてもよい。VMアロケータ110はさらに、VM116内で実行されるユーザレベルアプリケーション124、125をVM119内で実行されるユーザレベルアプリケーション129、131に移行させてもよい。図2に示される例示的なシステムを構成するサーバおよびその他のデバイスの配置は説明のためのものであって、制限のためのものではない。本発明のさまざまな実施形態に従って有用なデータ処理システムは、当業者が考えるように、図2に示されていない付加的なサーバ、ルータ、その他のデバイス、およびピアトゥピアアーキテクチャを含んでもよい。こうしたデータ処理システムにおけるネットワークは、たとえばTCP伝送制御プロトコル、IPインターネットプロトコル、HTTPハイパーテキスト転送プロトコル、WAP無線アクセスプロトコル、HDTPハンドヘルドデバイス移送プロトコル、および当業者が考えるようなその他のものなどを含む多くのデータ通信プロトコルを支持してもよい。図2に示されているものに加えて、さまざまなハードウェアプラットフォームにおいて本発明のさまざまな実施形態が実装されてもよい。さらなる説明のために、図3は本発明の実施形態に従ってネットワークサーバ間で仮想マシンを移行させるための例示的な方法を示す流れ図を示す。図3の方法において、サーバ312、318はデータ通信のためのデータ通信リンク192、194を通じて、ネットワーキングデバイス310を含むデータ通信ネットワークに結合されている。ネットワーキングデバイスは、本明細書においてこの用語が用いられるとき、データ通信のために他のデバイスを結合することができ、かつそれら他のデバイスを互いのデバイスおよびネットワークデバイスに結合するリンクを通過するデータ通信を記述するリンク統計を提供できる自動計算機を示す。ネットワーキングデバイスの例は、当業者の読者が考えるように、ネットワークスイッチ、ネットワークルータ、ハブなどを含む。図3の方法は、仮想マシン管理モジュール102によって特定のサーバ312上に1つまたはそれ以上の仮想マシン316を確立する302ステップを含む。仮想マシン管理モジュール102によって特定のサーバ312上に1つまたはそれ以上の仮想マシン316を確立する302ステップは、特定のサーバ上でハイパーバイザを実行し、特定の構成の仮想マシン、すなわち当業者の読者が考えるようなプロセッサ数、メモリリソースなどを有する仮想マシンを支持するようにハイパーバイザを構成することによって行われてもよい。加えて図3の方法は、データ通信のためにネットワークデバイス310を特定のサーバ312に結合しているリンク192のリンク統計112をVMMM102からネットワーキングデバイス310に問い合わせる304ステップを含む。ネットワーキングデバイス310にリンク統計112を問い合わせる304ステップは、たとえばMIB204に関する問い合わせを受け取るためのネットワークアドレスまたはポートとして予め指定されたネットワークデバイスのネットワークアドレスまたはポートに要求を送ることなどを含むさまざまなやり方で行われてもよく、この要求は特定のリンクを識別するオブジェクト識別子か、または特定のサーバを識別するオブジェクト識別子を含む。VMMMがリンク統計112を問い合わせすることができる別のやり方は、ネットワークデバイスに保存されたデータ通信トラフィックに関するすべてのデータを要求して、その要求したデータからリンク統計112を導き出すことである。加えて図3の方法は、VMMM102がそのリンク統計112に依存して、ネットワークデバイス310を特定のサーバ312に結合しているリンク192が劣化しているかどうかを判断し306、もしネットワークデバイス310を特定のサーバ312に結合しているリンク192が劣化していなければ、予め規定された時間だけ待って308から再びネットワークデバイスに問い合わせるステップを含む。すなわち図3の方法において、VMMM102は周期的にネットワークデバイス310にリンク統計112をポーリングするように構成される。もしネットワークデバイス310を特定のサーバ312に結合しているリンク192が劣化していれば、図3の方法は、特定のサーバ312上で実行している仮想マシン316を行先サーバ318に移行させる314ステップを続ける。特定のサーバ312上で実行している仮想マシン316を行先サーバ318に移行させる314ステップは、たとえば特定のサーバ312のメモリからVMを表すデータをコピーして、そのデータを行先サーバ318のメモリに書込むことによって特定のサーバ312上で動作するVMのインスタンスの正確なコピーを確実にすること、デフォルト仮想マシンの予め構成されたイメージ特定のVM316を生成するために用いられたのと同じイメージをロードすること、特定のVM316のさまざまな属性を指定する構成ファイルを特定のサーバ312から検索し、その属性を用いて行先サーバ318上に別のVM336を開始させることなどを含むさまざまなやり方で行われてもよい。仮想マシンを移行させる314ステップは、仮想マシン内で実行されるあらゆるアプリケーションを移行させるステップも含んでもよい。さらなる説明のために、図4は、本発明の実施形態に従ってネットワークサーバ間で仮想マシンを移行させるためのさらなる例示的な方法を示す流れ図を示す。図4の方法は図3の方法と類似であり、特定のサーバ312上に1つまたはそれ以上の仮想マシン316を確立する302ステップと、ネットワーキングデバイス310に問い合わせる304ステップと、リンク192が劣化しているかどうかを判断する306ステップと、もしリンク192が劣化していれば仮想マシン316を行先サーバ318に移行させる314ステップとを同様に含む。しかし、図4の方法が図3の方法と異なる点は、図4の方法が、サーバを互いのサーバおよびネットワークデバイス310に結合しているリンク192、194を通過するサーバ間のデータ通信をネットワークデバイス310によってモニタリングする402ステップと、サーバを互いのサーバおよびネットワークデバイスに結合しているリンクを通過するサーバ間のデータ通信を記述するリンク統計112を、VMMM102によるアクセスが可能な管理情報ベースMIBに保存する406ステップとを含むことである。ネットワークデバイス310は、さまざまなやり方でデータ通信をモニタしてもよい。モニタリングするステップによって、当業者の読者が考えるように、各リンクに対する、ネットワークデバイスから特定のリンクに沿って送信されたバイト数、ネットワークデバイスによって特定のリンクに沿って受信されたバイト数、特定のリンクから受信されたエラーのバイト数、およびシンボルエラーのインスタンスの数などが得られる。さらなる説明のために、図5は、本発明の実施形態に従ってネットワークサーバ間で仮想マシンを移行させるためのさらなる例示的な方法を示す流れ図を示す。図5の方法は図3の方法と類似であり、特定のサーバ312上に1つまたはそれ以上の仮想マシン316を確立する302ステップと、ネットワーキングデバイス310に問い合わせる304ステップと、リンク192が劣化しているかどうかを判断する306ステップと、もしリンク192が劣化していれば仮想マシン316を行先サーバ318に移行させる314ステップとを同様に含む。しかし、図5の方法が図3の方法と異なる点は、図5の方法において、もしリンク192が劣化していれば仮想マシン316を行先サーバ318に移行させる314ステップが、ネットワークデバイスを他のサーバに結合しているリンクのリンク統計をネットワークデバイスに問い合わせる502ステップと、そのリンク統計に依存して、劣化していないリンクを識別する508ステップと、その劣化していないリンクによってネットワークデバイスに結合されているサーバを、特定のサーバ上で実行している仮想マシンに対する行先サーバ318として選択する510ステップとをさらに含むことである。すなわち図5の方法において、VMMMは、劣化しているリンクのために仮想マシンを特定のサーバ312から、劣化しているリンクを介してネットワークおよびネットワークデバイス310に結合されていない別のサーバに移行させる。劣化していないリンクを伴うサーバが複数存在するとき、VMMMは、ラウンドロビンスタイル選択アルゴリズムに従うやり方、行先サーバとして選択すべき次のサーバを指定する規則の組に従うやり方、作業負荷のバランスを取るための最適化ルーチンによるやり方、および当業者の読者が考えるようなその他のやり方を含むさまざまなやり方で、特定のVM316に対する行先サーバ318としてサーバを選択510してもよい。さらなる説明のために、図6は、本発明の実施形態に従ってネットワークサーバ間で仮想マシンを移行させるためのさらなる例示的な方法を示す流れ図を示す。図6の方法は図3の方法と類似であり、特定のサーバ312上に1つまたはそれ以上の仮想マシン316を確立する302ステップと、ネットワーキングデバイス310に問い合わせる304ステップと、リンク192が劣化しているかどうかを判断する306ステップと、もしリンク192が劣化していれば仮想マシン316を行先サーバ318に移行させる314ステップとを同様に含む。しかし、図6の方法が図3の方法と異なる点は、図6の方法において、仮想マシンを移行させる314ステップは、劣化していないリンクが利用可能なときにのみ行われることである。すなわち図6の方法において、仮想マシン316を移行させる314ステップは、ネットワークデバイスを他のサーバに結合しているリンクのリンク統計604をネットワークデバイスに問い合わせる602ステップと、ネットワークデバイスを他のサーバに結合しているリンクのリンク統計604に依存して、ネットワークデバイス310が故障していると判断する606ステップとを含む。つまり、他のすべてのリンクに対するリンク統計が劣化リンクを示すとき、すなわち劣化していないと考えられるリンクがないとき、VMMMは1つのリンクを支持するハードウェアまたはソフトウェアではなく、ネットワークデバイス全体が故障していると判断する。加えて図6の方法は、ネットワークサーバ間のデータ通信のためのフェールオーバネットワークデバイス616を選択する608ステップと、特定のサーバ上の仮想マシンを移行させない610ステップとを含む。フェールオーバネットワークデバイス616を選択するステップは、たとえばフェールオーバデバイスのリスト上に指定された次に利用可能なデバイスを選択することなどによるさまざまなやり方で行われてもよい。フェールオーバネットワークデバイス616を選択する608ステップはさらに、故障していると判断されたネットワークデバイス310を通さずに、リンク612および614を確立することなどによって、フェールオーバネットワークデバイス616を通るデータ通信を再ルーティングするステップを含んでもよい。図6の方法においては、サーバ312に起こり得るハードウェアまたはソフトウェアデータ通信障害ではなく、ネットワークデバイス310が故障している。したがって、サーバ312がフェールオーバネットワークデバイス616を介してデータ通信できる限り、仮想マシン316を別のサーバに移行させる必要はない。上記のとおり、本発明の実施形態に従ってVMを移行させるステップは特に、VMMMがリンク統計に依存して、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断するステップを含む。さらなる説明のために、図7は、本発明の実施形態に従って、VMMMがリンク統計に依存して、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断する306ための例示的な方法を示す流れ図を示す。図7の方法において、ネットワークデバイスが集めるリンク統計はいくつかのタイムスタンプを押されたエントリ702を含み、その各々はネットワークデバイスを特定のサーバに結合しているリンク上で受け取られたエラーのバイトを表す。図7の例において、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断する306ステップは、エラーのバイトを表すタイムスタンプを押されたエントリからビットエラー率biterrorrate706を算出し704、算出されたビットエラー率706が予め定められた閾値710よりも大きいかどうかを判断する708ことによって行われる。もしビットエラー率706が予め定められた閾値710以下であれば、図7の方法を行うVMMMはそのリンクが劣化していないと判断する714。しかし、もし算出されたビットエラー率706が予め定められた閾値710よりも大きければ、VMMMはネットワークデバイスを特定のサーバに結合しているリンクが劣化していると判断する712。図8は、本発明の実施形態に従って、VMMMがリンク統計に依存して、ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断する306ためのさらなる例示的な方法を示す流れ図を示す。図8の方法において、ネットワークデバイスが集めて図8の方法を行うVMMMに提供するリンク統計は、ネットワークデバイスを特定のサーバに結合しているリンク上で受け取られたテストデータのシンボルエラー802を記述する情報を含む。シンボルエラー802とは、テストパターンにおいて受信側に送信されたシンボルの変更である。テストパターンの一例は、サーバからネットワークデバイスに周期的に送られるデータのバイトを含む。ネットワークデバイスおよびサーバの両方が、データのバイトの適切な形成を認識している。データのテストバイトを形成するビットのいずれか1つが誤っていれば、ネットワークスイッチはそのインスタンスをシンボルエラーとして記録する。たとえば、サーバからネットワークスイッチに送られたデータのバイトを含むテストパターンがビットパターン11111111を有しており、10001010として受け取られたと考える。ネットワークデバイスはシンボルエラーのインスタンスを記録し、場合によってはそのシンボルエラーのインスタンスに含まれるビットエラーの数を示す。この例において、ネットワークデバイスは、シンボルエラーの現在のインスタンスにおいて5つのビットエラーが起こったことを示してもよい。ネットワークデバイスを特定のサーバに結合しているリンクが劣化しているかどうかを判断する306ステップは、シンボルエラー802を記述する情報に依存して、シンボルエラーの頻度806を算出する804ステップと、シンボルエラー802を記述する情報に依存して、ネットワークデバイスを特定のサーバに結合しているリンク上のシンボルエラー802の頻度806が予め定められた閾値810よりも大きいかどうかを判断する808ステップとを含む。もしシンボルエラー802の頻度806が予め定められた閾値810以下であれば、VMMMはそのリンクが劣化していないと判断する814。もしシンボルエラー802の頻度806が予め定められた閾値810よりも大きければ、VMMMはネットワークデバイスを特定のサーバに結合しているリンクが劣化していると判断する812。当業者に認識されるように、本発明の局面はシステム、方法またはコンピュータプログラム製品として具現化されてもよい。したがって本発明の局面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、またはソフトウェアおよびハードウェアの局面を組み合わせた実施形態の形を取ってもよく、本明細書においてこれらはすべて一般的に回路、モジュールまたはシステムと呼ばれることがある。さらに、本発明の局面は、コンピュータ読取り可能プログラムコードが具現化された、1つまたはそれ以上のコンピュータ読取り可能媒体単数または複数において具現化されるコンピュータプログラム製品の形を取ってもよい。1つまたはそれ以上のコンピュータ読取り可能媒体単数または複数のあらゆる組み合わせが使用されてもよい。コンピュータ読取り可能媒体は、コンピュータ読取り可能信号媒体またはコンピュータ読取り可能記憶媒体であってもよい。コンピュータ読取り可能記憶媒体は、たとえば電子、磁気、光学、電磁気、赤外、または半導体のシステム、装置、もしくはデバイス、または前述のもののあらゆる好適な組み合わせなどであってもよいがそれに限定されない。コンピュータ読取り可能記憶媒体のより特定的な例非網羅的なリストは以下を含み得る。すなわち、1つまたはそれ以上のワイヤを有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM、リードオンリメモリROM、消去可能プログラマブルリードオンリメモリEPROMerasableprogrammableread-onlymemoryまたはフラッシュメモリ、光ファイバ、ポータブルコンパクトディスクリードオンリメモリcompactdiscread-onlymemory:CD-ROM、光学記憶装置、磁気記憶装置、または前述のもののあらゆる好適な組み合わせである。この文書の文脈において、コンピュータ読取り可能記憶媒体は、命令実行システム、装置またはデバイスによって、またはそれに関連して使用されるためのプログラムを含有または保存できるあらゆる有形の媒体であってもよい。コンピュータ読取り可能信号媒体は、たとえばベースバンド内または搬送波の部分などとしてコンピュータ読取り可能プログラムコードが具現化された伝播データ信号を含んでもよい。こうした伝播信号は、電磁気信号、光学信号、またはそのあらゆる好適な組み合わせを含むがそれに限定されないさまざまな形のいずれかを取ってもよい。コンピュータ読取り可能信号媒体は、コンピュータ読取り可能記憶媒体ではなく、命令実行システム、装置またはデバイスによって、またはそれに関連して使用されるプログラムを通信、伝播または移送できるあらゆるコンピュータ読取り可能媒体であってもよい。コンピュータ読取り可能媒体において具現化されるプログラムコードは、無線、ワイヤライン、光ファイバケーブル、RFなど、または前述のもののあらゆる好適な組み合わせを含むがそれに限定されないあらゆる適切な媒体を用いて伝送されてもよい。本発明の局面に対する動作を行うためのコンピュータプログラムコードは、オブジェクト指向プログラミング言語、たとえばJavaR、SmalltalkR、Cなど、および従来の手続き型プログラミング言語、たとえばCプログラミング言語または類似のプログラミング言語などを含む、1つまたはそれ以上のプログラミング言語のあらゆる組み合わせで書かれていてもよい。プログラムコードは、すべてがユーザのコンピュータで実行されてもよいし、スタンドアロンソフトウェアパッケージとして部分的にユーザのコンピュータで実行されてもよいし、一部がユーザのコンピュータで、一部がリモートコンピュータで実行されてもよいし、すべてがリモートコンピュータまたはサーバで実行されてもよい。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワークLANまたは広域ネットワークwideareanetwork:WANを含むあらゆるタイプのネットワークを通じてユーザのコンピュータに接続されてもよいし、たとえば、インターネットサービスプロバイダを用いてインターネットを通じて外部コンピュータへの接続が行われてもよい。本発明の実施形態に従う方法、装置システムおよびコンピュータプログラム製品の流れ図もしくはブロック図またはその両方を参照して、本発明の局面を上述した。流れ図もしくはブロック図またはその両方の各ブロック、ならびに流れ図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータプログラム命令によって実装され得ることが理解されるだろう。これらのコンピュータプログラム命令が、汎用コンピュータもしくは専用コンピュータのプロセッサ、またはマシンを生成するためのその他のプログラマブルデータ処理装置に与えられることによって、そのコンピュータのプロセッサまたはその他のプログラマブルデータ処理装置を介して実行された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能/動作を実装するための手段を生成するようにしてもよい。これらのコンピュータプログラム命令は、コンピュータ、その他のプログラマブルデータ処理装置またはその他のデバイスに特定の態様で機能するよう指示できるコンピュータ読取り可能媒体の中に保存されることによって、コンピュータ読取り可能媒体中に保存された命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能/動作を実現する命令を含む製造品を生成するようにしてもよい。さらに、コンピュータプログラム命令は、コンピュータ、その他のプログラマブルデータ処理装置またはその他のデバイスにロードされることによって、そのコンピュータ、その他のプログラマブル装置またはその他のデバイスにおいて一連の動作ステップを行わせることにより、コンピュータまたはその他のプログラマブル装置において実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定された機能/動作を実装するためのプロセスを提供するような、コンピュータに実装されるプロセスを生成してもよい。図面中の流れ図およびブロック図は、本発明のさまざまな実施形態に従うシステム、方法およびコンピュータプログラム製品の実装可能なアーキテクチャ、機能および動作を例示するものである。これに関して、流れ図またはブロック図における各ブロックは、指定された論理機能単数または複数を実装するための1つまたはそれ以上の実行可能な命令を含むモジュール、セグメント、またはコードの部分を表していてもよい。さらに、いくつかの代替的な実装においては、ブロック中に示される機能が図面に示される以外の順序で起こることがあることに留意すべきである。たとえば、連続して示される2つのブロックは、伴われる機能に依存して、実際には実質的に同時に実行されてもよいし、それらのブロックがときには逆の順序で実行されてもよい。さらに、ブロック図もしくは流れ図またはその両方の各ブロック、およびブロック図もしくは流れ図またはその両方のブロックの組み合わせは、指定された機能もしくは動作を行う専用ハードウェアベースシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実装され得ることが注目される。前述の説明から、本発明のさまざまな実施形態において多くの修正および変更が行われてもよいことを当業者は理解するだろう。