(57)【特許請求の範囲】
【請求項１】
仮想マシンの対称型ライブ・マイグレーションのための方法であって、
第１の仮想マシンの一組のメモリ・ページについての第１の最長時間未使用マップを生成するステップであって、前記第１の最長時間未使用マップは前記第１の仮想マシンの前記メモリ・ページの各々についてのメタデータを含み、前記メタデータは前記第１の仮想マシンの前記メモリ・ページの各々についての物理アドレス位置を含む、ステップと、
前記第１の仮想マシンの動作中、前記第１の仮想マシンの第１のメモリ・ページ及び前記第１の仮想マシンの前記第１のメモリ・ページについての前記メタデータを、前記第１の仮想マシンから第２の仮想マシンに送るステップと、
前記第２の仮想マシンの第１のメモリ・ページ及び前記第２の仮想マシンの前記第１のメモリ・ページについての前記メタデータを、前記第２の仮想マシンから前記第１の仮想マシンにおいて受け取るステップと、
を含み、
前記第１の仮想マシンの前記メモリ・ページは、前記第１の仮想マシンの前記メモリ・ページの各々がどれくらい最近に使用されたかに基づいて、前記第１の最長時間未使用マップの第１の位置から前記第１の最長時間未使用マップの最後の位置に配列され、最長時間未使用であった前記メモリ・ページは前記第１の最長時間未使用マップの前記第１の位置で示され、最短時間未使用であった前記メモリ・ページは前記第１の最長時間未使用マップの前記最後の位置で示され、
前記第１の仮想マシンの前記第１のメモリ・ページは、前記第１の最長時間未使用マップの前記第１の位置に配置され、前記第２の仮想マシンの前記第１のメモリ・ページは、前記第２の仮想マシンの前記メモリ・ページについての第２の最長時間未使用マップの対応する第１の位置に配置される、方法。
【請求項２】
前記第１及び第２の仮想マシンの前記最長時間未使用マップ内の前記メモリ・ページの前記配列に基づいて、前記第１及び第２の仮想マシンの他のメモリ・ページの各々を前記送るステップ及び前記受け取るステップを繰り返すステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１の仮想マシンの前記メモリ・ページの全てを前記第２の仮想マシンに送り、前記第２の仮想マシンの前記メモリ・ページの全てを前記第１の仮想マシンにおいて受け取った後、前記第２の仮想マシンの前記メモリ・ページと共に受け取った前記メタデータ内の前記物理アドレス位置に基づいて、前記第２の仮想マシンから受け取った前記メモリ・ページをソートするステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記ソートするステップの後に、前記第２の仮想マシンから受け取った前記メモリ・ページの各々を利用する仮想マシンをアクティブにするステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記送るステップの前、前記第１の仮想マシンの前記メモリ・ページの組が前記第２の仮想マシンの一組の前記メモリ・ページより小さい場合、前記第１の仮想マシンの前記メモリ・ページの組のサイズを論理的に増大させて、前記第２の仮想マシンの前記メモリ・ページの組に実質的に一致させるステップをさらに含む、請求項１に記載の方法。
【請求項６】
前記送るステップは、前記第１の仮想マシンの前記第１のメモリ・ページについての前記メタデータを、前記第１の仮想マシンの前記第１のメモリ・ページ内に埋め込むステップを含む、請求項１に記載の方法。
【請求項７】
前記送るステップは、
前記第１の仮想マシンの前記第１のメモリ・ページから分離したパケットを生成するステップであって、前記パケットは前記第１の仮想マシンの前記第１のメモリ・ページについての前記メタデータを含む、ステップと、
前記パケットを前記第１の仮想マシンから第２の仮想マシンに送るステップと、
を含む、請求項１に記載の方法。
【請求項８】
前記送るステップの後、前記第２の仮想マシンから前記第１の仮想マシンの前記第１のメモリ・ページを要求するステップと、
前記第２の仮想マシンから前記第１の仮想マシンの前記第１のメモリ・ページを受け取るステップと、
前記第１の仮想マシンの前記第１のメモリ・ページを前記第１の最長時間未使用マップの最後の位置に配置するステップと、
をさらに含む、請求項１に記載の方法。
【請求項９】
前記受け取るステップの後、前記第２の仮想マシンから、前記第２の仮想マシンの前記第１のメモリ・ページに対する要求を受け取るステップと、
前記第２の仮想マシンの前記第１のメモリ・ページを前記第２の仮想マシンに送るステップと、
前記第２の仮想マシンから、前記第２の仮想マシンの前記第２の最長時間未使用マップの前記対応する位置に配置された前記第１の仮想マシンの前記メモリ・ページを受け取るステップと、
をさらに含む、請求項１に記載の方法。
【請求項１０】
プロセッサ及び前記プロセッサに通信可能に結合できるメモリと共に使用するための、仮想マシンの対称型ライブ・マイグレーションのための情報処理システムであって、
前記プロセッサ及び前記メモリに通信可能に結合できるマイグレーション・マネージャを含み、前記マイグレーション・マネージャは、
第１の仮想マシンの一組のメモリ・ページについての第１の最長時間未使用マップを生成し、前記第１の最長時間未使用マップは前記第１の仮想マシンの前記メモリ・ページの各々についてのメタデータを含み、前記メタデータは前記第１の仮想マシンの前記メモリ・ページの各々についての物理アドレス位置を含み、
前記第１の仮想マシンの動作中、前記第１の仮想マシンの前記メモリ・ページの第１のもの及び前記第１の仮想マシンの前記第１のメモリ・ページについての前記メタデータを、前記第１の仮想マシンから第２の仮想マシンに送り、
前記第２の仮想マシンの第１のメモリ・ページ及び前記第２の仮想マシンの前記第１のメモリ・ページについての前記メタデータを、前記第２の仮想マシンから前記第１の仮想マシンにおいて受け取り、
前記第１の仮想マシンの前記メモリ・ページは、前記第１の仮想マシンの前記メモリ・ページの各々がどれくらい最近に使用されたかに基づいて、前記第１の最長時間未使用マップの第１の位置から前記第１の最長時間未使用マップの最後の位置に配列され、最長時間未使用であった前記メモリ・ページは前記第１の最長時間未使用マップの前記第１の位置で示され、最短時間未使用であった前記メモリ・ページは前記第１の最長時間未使用マップの前記最後の位置で示され、
前記第１の仮想マシンの前記第１のメモリ・ページは、前記第１の最長時間未使用マップの前記第１の位置に配置され、前記第２の仮想マシンの前記第１のメモリ・ページは、前記第２の仮想マシンの前記メモリ・ページについての第２の最長時間未使用マップの対応する第１の位置に配置される、情報処理システム。
【請求項１１】
前記マイグレーション・マネージャは、前記第１及び第２の仮想マシンの前記最長時間未使用マップ内の前記メモリ・ページの前記配列に基づいて、前記第１及び第２の仮想マシンの他のメモリ・ページの各々を前記送るステップ及び前記受け取るステップを繰り返す、請求項１０に記載の情報処理システム。
【請求項１２】
前記マイグレーション・マネージャは、前記第１の仮想マシンの前記メモリ・ページの全てを前記第２の仮想マシンに送り、前記第２の仮想マシンの前記メモリ・ページの全てを前記第１の仮想マシンにおいて受け取った後、前記第２の仮想マシンの前記メモリ・ページと共に受け取った前記メタデータ内の前記物理アドレス位置に基づいて、前記第２の仮想マシンから受け取った前記メモリ・ページをソートする、請求項１１に記載の情報処理システム。
【請求項１３】
前記マイグレーション・マネージャは、前記ソートするステップの後、前記第２の仮想マシンから受け取った前記メモリ・ページの各々を利用する仮想マシンをアクティブにする、請求項１２に記載の情報処理システム。
【請求項１４】
前記マイグレーション・マネージャは、前記送るステップの前、前記第１の仮想マシンの前記メモリ・ページの組が前記第２の仮想マシンの一組の前記メモリ・ページより小さい場合、前記第１の仮想マシンの前記メモリ・ページの組のサイズを論理的に増大させて、前記第２の仮想マシンの前記メモリ・ページの組に実質的に一致させる、請求項１０に記載の情報処理システム。
【請求項１５】
前記マイグレーション・マネージャは、前記第１の仮想マシンの前記第１のメモリ・ページについての前記メタデータを前記第１の仮想マシンの前記第１のメモリ・ページ内に埋め込むことにより、前記メモリ・ページの前記第１のものを送る、請求項１０に記載の情報処理システム。
【請求項１６】
前記マイグレーション・マネージャは、
前記第１の仮想マシンの前記第１のメモリ・ページから分離した、前記第１の仮想マシンの前記第１のメモリ・ページについての前記メタデータを含むパケットを生成し、
前記パケットを前記第１の仮想マシンから第２の仮想マシンに送る、
請求項１０に記載の情報処理システム。
【請求項１７】
前記マイグレーション・マネージャは、
前記送るステップの後、前記第２の仮想マシンから前記第１の仮想マシンの前記第１のメモリ・ページを要求し、
前記第２の仮想マシンから前記第１の仮想マシンの前記第１のメモリ・ページを受け取り、
前記第１の仮想マシンの前記第１のメモリ・ページを前記第１の最長時間未使用マップの最後の位置に配置する、
請求項１０に記載の情報処理システム。
【請求項１８】
前記マイグレーション・マネージャは、
前記受け取るステップの後、前記第２の仮想マシンから、前記第２の仮想マシンの前記第１のメモリ・ページに対する要求を受け取り、
前記第２の仮想マシンの前記第１のメモリ・ページを前記第２の仮想マシンに送り、
前記第２の仮想マシンから、前記第２の仮想マシンの前記第２の最長時間未使用マップの前記対応する位置に配置された前記第１の仮想マシンの前記メモリ・ページを受け取る、請求項１０に記載の情報処理システム。
【請求項１９】
請求項１〜９の何れか１項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項２０】
請求項１９記載の前記コンピュータ・プログラムをコンピュータ可読ストレージ媒体に記録した、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、仮想マシンの分野に関し、より具体的には、仮想マシンのマイグレーションに関する。
【背景技術】
【０００２】
仮想マシンのシステム・マイグレーションは、ハードウェア及び／又はソフトウェアのアップグレードがインストールされている間にバックアップ・システムを与えることを含む、様々な理由で実行される。コピーされる仮想マシン（メモリ、システム、アプリケーションなどを含む）はソース仮想マシンと呼ばれ、マイグレーションの結果として構築される仮想マシンはターゲット仮想マシンと呼ばれる。
【０００３】
マイグレーションの１つのタイプは、動作中の仮想マシンをマイグレートするライブ・マイグレーション（live migration）である。仮想マシン・ゲストのライブ・マイグレーションは、基幹システムを有する企業により望まれることが多い。従来のマイグレーション・システムは、一般に、次のような２つのゲストの間のライブ・マイグレーション（又は、「スワッピング」）を実行する。ゲストＡがゲストＢの物理マシン上にマイグレートされ、次に、ゲストＢがゲストＡの物理マシン上にマイグレートされる。しかしながら、この従来のマイグレーション・プロセスは、物理マシンの少なくとも１つが、付加的な仮想ゲストをサポートするのに十分なハードウェア・リソースを有することを必要とする。言い換えれば、少なくとも１つの物理マシンが付加的な仮想ゲストをサポートするのに十分なハードウェア・リソースを有していない場合、マイグレーション・プロセスを実行することができない。また、従来のライブ・マイグレーション・プロセスでは、常に１つの仮想マシンしかマイグレートさせることができない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
仮想マシンの対称型ライブ・マイグレーションのための方法、情報処理システム及びコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００５】
本発明の一実施形態は、仮想マシンの対称型ライブ・マイグレーションのための方法を提供する。このコンピュータ実施の方法は、第１の仮想マシンの一組のメモリ・ページについての第１の最長時間未使用（least recently used）マップを生成するステップを含む。第１の最長時間未使用マップは、第１の仮想マシンのメモリ・ページの各々についてのメタデータを含む。メタデータは、第１の仮想マシンのメモリ・ページの各々についての物理アドレス位置を含む。第１の仮想マシンの動作中、第１の仮想マシンのメモリ・ページの第１のもの及び第１の仮想マシンの第１のメモリ・ページについてのメタデータを、第１の仮想マシンから第２仮想マシンに送る。第２の仮想マシンの第１のメモリ・ページ及び第２仮想マシンの第１のメモリ・ページについてのメタデータを、第２の仮想マシンから第１の仮想マシンにおいて受け取る。第１の仮想マシンのメモリ・ページは、第１の仮想マシンのメモリ・ページの各々がどれほど最近に使用されたかに基づいて、第１の最長時間未使用マップの第１の位置から第１の最長時間未使用マップの最後の位置に配列される。最長時間未使用であったメモリ・ページは第１の最長時間未使用マップの第１の位置で示される。最短時間未使用（most recently used）であったメモリ・ページは第１の最長時間未使用マップの最後の位置で示される。第１の仮想マシンの第１のメモリ・ページは、第１の最長時間未使用マップの第１の位置に配置される。第２の仮想マシンの第１のメモリ・ページは、第２の仮想マシンのメモリ・ページについての第２の最長時間未使用マップの対応する第１の位置に配置される。
【０００６】
本発明の別の実施形態は、仮想マシンの対称型ライブ・マイグレーションのための情報処理システムを提供する。この情報処理システムは、プロセッサ及びプロセッサに通信可能に結合されたメモリを含む。マイグレーション・マネージャが、メモリ及びプロセッサに通信可能に結合される。マイグレーション・マネージャは、第１の仮想マシンの一組のメモリ・ページについての第１の最長時間未使用マップを生成する。第１の最長時間未使用マップは、第１の仮想マシンのメモリ・ページの各々についてのメタデータを含む。メタデータは、第１の仮想マシンのメモリ・ページの各々についての物理アドレス位置を含む。第１の仮想マシンの動作中、第１の仮想マシンのメモリ・ページの第１のもの及び第１の仮想マシンの第１のメモリ・ページについてのメタデータを、第１の仮想マシンから第２の仮想マシンに送る。第２の仮想マシンの第１のメモリ・ページ及び第２の仮想マシンの第１のメモリ・ページについてのメタデータを、第２の仮想マシンから第１の仮想マシンにおいて受け取る。第１の仮想マシンのメモリ・ページは、第１の仮想マシンのメモリ・ページの各々がどれくらい最近に使用されたかに基づいて、第１の最長時間未使用マップの第１の位置から第１の最長時間未使用マップの最後の位置に配列される。最長時間未使用であったメモリ・ページは第１の最長時間未使用マップの第１の位置で示される。最短時間未使用であったメモリ・ページは第１の最長時間未使用マップの最後の位置で示される。第１の仮想マシンの第１のメモリ・ページは、第１の最長時間未使用マップの第１の位置に配置される。第２の仮想マシンの第１のメモリ・ページは、第２の仮想マシンのメモリ・ページについての第２の最長時間未使用マップの対応する第１の位置に配置される。
【０００７】
ここで本発明を、以下の図面に示されるような、その好ましい実施形態を参照して説明する。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態による、動作環境を示すブロック図である。
【図２】本発明の一実施形態による、エミュレートされた動作環境についてのハードウェア及びソフトウェア・アーキテクチャの論理階層化を示す。
【図３】本発明の一実施形態による、２つ又はそれ以上の仮想マシンが同じ物理ハードウェア上にある仮想化コンピューティング・システムを示す。
【図４】本発明の一実施形態による、仮想マシンについてのＬＲＵマップを示す。
【図５】本発明の一実施形態による、２つの仮想マシンの対称型ライブ・マイグレーションを示す。
【図６】本発明の一実施形態による、２つの仮想マシンの対称型ライブ・マイグレーションを示す。
【図７】本発明の一実施形態による、２つの仮想マシンの対称型ライブ・マイグレーションを示す。
【図８】本発明の一実施形態による、２つの仮想マシンの対称型ライブ・マイグレーションを示す。
【図９】本発明の一実施形態による、２つの仮想マシンの対称型ライブ・マイグレーションを示す。
【図１０】本発明の一実施形態による、対称型ライブ・マイグレーション・プロセスを示す動作フロー図である。
【図１１】本発明の一実施形態による、対称型ライブ・マイグレーション・プロセスを示す動作フロー図である。
【図１２】本発明の一実施形態による、情報処理システムを示すブロック図である。
【発明を実施するための形態】
【０００９】
本発明の種々の実施形態が、添付図面を参照してここで以下に詳細に説明される。
【００１０】
ゲスト・コンピュータ・システムがホスト・コンピュータ・システム上でエミュレートされるとき、そのゲスト・コンピュータ・システムは、ホスト・コンピュータ内では、１つ又は複数の特定のハードウェア・アーキテクチャの動作の純粋なソフトウェア表現として存在するため、「仮想マシン（virtual machine）であると言われる。エミュレータ、仮想マシン、及びプロセッサ・エミュレーションという用語は、コンピュータ・システム全体のハードウェア・アーキテクチャを模倣する（mimic）又はエミュレートする能力を表すために、時として区別なく用いられる。これらのコンポーネントの動作は、ホスト・マシン上で動作中の仮想マシンにおいてエミュレートされる。ホスト・コンピュータのオペレーティング・システムのソフトウェア及びハードウェア・アーキテクチャ上で動作中のエミュレータ・プログラムによって、ゲスト・コンピュータ・システム全体の動作が模倣される。
【００１１】
エミュレータ・プログラムは、ホスト・マシンのハードウェア・アーキテクチャと、エミュレートされた環境内で実行されるソフトウェアにより伝送される命令との間のインターチェンジ（interchange）として働く。このエミュレータ・プログラムは、物理コンピュータ・ハードウェア上で直接動作するオペレーティング・システムである、ホスト・オペレーティング・システム（ＨＯＳ）とすることができる。代替的に、エミュレートされた環境は、ハードウェアのすぐ上位で動作するソフトウェア層である仮想マシン・モニタ（ＶＭＭ、virtual machine monitor）とすることもでき、このＶＭＭは、該ＶＭＭが仮想化しているハードウェアと同じであるインタフェースを露出させることによって、マシンのリソースの全てを仮想化する（これにより、ＶＭＭが、その上で動作するオペレーティング・システム層に気付かれずに済むことが可能になる）。ホスト・オペレーティング・システム及びＶＭＭは、同じ物理ハードウェア上で並んで動作することができる。
【００１２】
物理マシンに優る、仮想マシン（ＶＭ）の多くの利点のうちの１つは、同じ仮想マシンの複数のインスタンスを迅速かつ安価に作成する能力である。仮想マシンの実装が許す場合、単一のホスト・マシン（ホスト・コンピュータ・システム）環境内に複数の仮想マシンが同時に存在することができ、種々の仮想マシンの間でホスト・マシンのリソースを分割することができる。この柔軟なリソース割当ては、仮想マシンを１つのホスト・マシンから別のホスト・マシンに移動させる又は「マイグレートさせる」能力と組み合せたときにさらに有用となる。仮想マシンを１つのホスト・マシンから別のホスト・マシンに迅速かつ容易にマイグレートさせ得ることは、例えば、「負荷バランシング（load balancing）」システムにおいて、ハードウェア又はソフトウェアのアップグレードを実行するのに、又は障害回復を処理するのに有用である。
【００１３】
図１は、本発明の一実施形態による動作環境を示す。図示のように、動作環境１００は、１つ又は複数のネットワーク１０６に通信可能に結合された複数の情報処理システム（簡単にするために、２つのシステムだけが示される）を含む。第１の情報処理システム１０２は、ネットワーク１０６を介してターゲット・ホスト・システムである第２の情報処理システム１０４と通信可能に結合された、ソース・ホスト・システムである。ネットワーク１０６は、任意のタイプの有線及び／又は無線通信ネットワークとすることができる。例えば、ネットワーク１０６は、イントラネット、エクストラネット、又はインターネットのようなインターネットワーク、或いはそれらの組み合わせとすることができる。ネットワーク１０６は、無線、有線、及び／又は光ファイバ・リンクを含むことができる。
【００１４】
ソース・ホスト・システム１０２は、１つ又は複数の仮想マシン１１２をホストするため「ソース・ホスト」と呼ばれ、ターゲット・ホスト・システム１０４は、ソース・ホスト１０２上の仮想マシン１１２がマイグレートされることになるシステムであるため「ターゲット・ホスト」と呼ばれる。ターゲット・ホスト・システム１０４は、それ自体の仮想マシン１２２のためのソース・ホスト・システムと呼ぶこともでき、本実施形態において、ソース・ホスト・システム１０４上で仮想マシン１２２がマイグレートされるため、ソース・ホスト・システム１０２を、この仮想マシン１２２のためのターゲット・ホスト・システムと呼ぶこともできる。従って、情報処理システムのいずれも、もう一方に対してソース・ホスト・システムであり、かつ、もう一方に対してターゲット・ホスト・システムであることができる。以下の説明において、「第１の情報処理システム」及び「第２の情報処理システム」という用語は、どちらもそれ自体に対してソース・ホスト・システムと呼び、他方に対してターゲット・ホスト・システムと呼ぶように用いられる。
【００１５】
ソース・ホスト・システム１０２は、いずれのタイプの情報処理システムとして機能することもできる。本実施形態において、ソース・ホスト・システム１０２は、命令を読み出して実行し、かつ、システム１０２内のアプリケーション及び／又はプロセス、及び又は、共有物理リソースとしてのユーザ・システムからの多数の対話要求を処理することができる、少なくとも１つの処理回路（例えば、ＣＰＵ）を含む高速処理装置である。ユーザがソース・ホスト・システム１０２と対話するこの実施形態において、ユーザは、ユーザ・システムを介して、ソース・ホスト・システム１０２上で、例えばシステム・テストの開発及び実行、アプリケーション・プログラムの実行、及びシステム・マイグレーションの開始などの様々なタスクを開始することができる。図１には単一のソース・ホスト・システム１０２だけが示されるが、直接結合を介して、或いは、１つ又は複数のネットワークを介して互いに通信する、複数のホスト・システムを容易に実装することができる。例えば、分散ネットワーク・アーキテクチャを通して複数のホスト・システムを相互接続することができる。単一のソース・ホスト・システム１０２はまた、集合的にプロセスを実行するホストのクラスタを表すものとすることもできる。
【００１６】
この実施形態において、ソース・ホスト・システム１０２は、データにアクセスして、データをソース・データ・ストレージ装置１０８内に格納することができる。ソース・データ・ストレージ装置１０８は、任意のタイプのストレージを指し、ソース・ホスト・システム１０２の内部又は外部の２次ストレージ要素（例えば、ハードディスク・ドライブ、テープ、又はストレージ・サブシステム）を含むことができる。ソース・データ・ストレージ装置１０８内に格納することができるデータの型は、１つ又は複数のソース仮想マシン１１２（例えば、仮想ゲスト）内に含まれるソース・メモリ１１０、及びマイグレーション・データ１１１（例えば、データ構造体）を含む。この実施形態において、ソース・メモリ１１０のコンテンツは、メモリ・ページ１１４を含む。
【００１７】
この実施形態のシステム１０２はまた、メモリ・ページ１１４のマイグレーション中にマイグレーション・マネージャ１１８が用いる最長時間未使用（ＬＲＵ）マップ１１５を含む。この実施形態において、メモリ・ページ１１４の各々に関する物理アドレス位置情報を格納するために、随意的にマイグレーション・パケット１１７が用いられる。マイグレーション・パケット１１７は、マイグレーション中、対応するメモリ・ページ１１４と共にターゲット・システム１０４に送られる。この実施形態において、ソース仮想マシン構成情報及び／又はソース・メモリ・アクセス・データもデータ・ストレージ装置１０８内に格納される。図１に示すソース・データ・ストレージ装置１０８は、単純化及び説明の容易化のために示される例示的な装置である。この又は更に別の実施形態において、ソース・ホスト・システム１０２により用いられる複数のソース・データ・ストレージ装置１０８が存在してもよい。
【００１８】
この実施形態において、ソース・ホスト・システム１０２は、ソース・ハイパーバイザ１１６及び１つ又は複数の仮想マシン１１２を含む種々のアプリケーションを実行する。「ハイパーバイザ」という用語は、１つ又は複数の仮想マシンの実行をサポートする低レベルのアプリケーションを指す。ソース・ハイパーバイザ１１６は、ソース・ホスト・システム１０２のリソースへのアクセスを管理し、仮想マシン・モニタとして機能して、仮想マシンの同時実行をサポートする。各々の仮想マシンは、特定のゲスト・オペレーティング・システム及びゲスト・オペレーティング・システムをターゲットにするように書かれたソフトウェアを実行するための複数のユーザ・セッションをサポートすることができる。例えば、１つの仮想マシンは、Ｌｉｎｕｘ（登録商標）オペレーティング・システムのインスタンスをサポートすることができ、第２の仮想マシンは、ｚ／ＯＳ（登録商標）オペレーティング・システムのインスタンスを実行する。他のゲスト・オペレーティング・システムを、仮想マシンを通してソース・ハイパーバイザ１１６によりサポートすることもできる。
【００１９】
この実施形態において、ソース・ハイパーバイザ１１６は、ソース・メモリ１１０をソース仮想マシン１１２からターゲット仮想マシン１２２（例えば、仮想ゲスト）上のターゲット・メモリ１２０にマイグレートさせるための種々のマイグレーション動作を実行する、マイグレーション・マネージャ１１８を含む。この例示的な実施形態において、ソース・ハイパーバイザ１１６は、仮想マシン制御バス１２４を通して、ソース・ホスト・システム１０２上の仮想マシンの実行制御を管理する。各々の仮想マシン制御バス１２４は、割り込み、デバイス・ドライバ・コマンド、デバイス・ドライバ・データ等の低レベルの制御情報の交換を処理することができる。
【００２０】
図１はまた、ソース・ホスト・システム１０２のような、別のシステムのターゲット・ホスト・システムである別の情報処理システム１０４も示す。ターゲット・ホスト・システム１０４は、ネットワーク１０６を介してソース・ホスト・システム１０２と通信可能に結合される。ターゲット・ホスト・システム１０４は、任意のタイプの情報処理システムとして機能することができる。この実施形態において、ターゲット・ホスト・システム１０４は、命令を読み出して実行し、かつ、システム１０４内のアプリケーション及び／又はプロセスからの、及び／又は、共有物理リソースのようなユーザ・システムからの多数の対話要求を処理することができる、少なくとも１つの処理回路（例えば、ＣＰＵ）を含む高速処理装置である。
【００２１】
ユーザがターゲット・ホスト・システム１０４と対話するこの実施形態において、ユーザは、ユーザ・システムを介してターゲット・ホスト・システム１０４上で、システム・テストの開発及び実行、アプリケーション・プログラムの実行、及びシステム・マイグレーションの開始などの様々なタスクを開始することができる。図１には単一のターゲット・ホスト・システム１０４だけが示されるが、直接結合を介して、或いは、１つ又は複数のネットワークを介して互いに通信する複数のホスト・システムを容易に実装することができる。例えば、分散ネットワーク・アーキテクチャを通して複数のホスト・システムを相互接続することができる。単一のターゲット・ホスト・システム１０４はまた、集合的にプロセスを実行するホストのクラスタを表すものとすることもできる。
【００２２】
この実施形態において、ターゲット・ホスト・システム１０４は、データにアクセスし、データをターゲット・データ・ストレージ装置１２６内に格納することができる。ターゲット・データ・ストレージ装置１２６は、任意のタイプのストレージを指し、ターゲット・ホスト・システム１０４の内部又は外部の２次ストレージ要素（例えば、ハードディスク・ドライブ、テープ、又はストレージ・サブシステム）を含むことができる。ターゲット・データ・ストレージ装置１２６内に格納することができるデータの型は、１つ又は複数のターゲット仮想マシン１２２内に含まれるターゲット・メモリ１２０、及びマイグレーション・データ１２１（例えば、データ構造体）を含む。この実施形態において、ターゲット・メモリ１２０のコンテンツは、メモリ・ページ１２８を含む。
【００２３】
この実施形態のシステム１０４はまた、メモリ・ページ１２８のマイグレーション中にマイグレーション・マネージャ１３２が用いる最長時間未使用（ＬＲＵ）マップ１２９を含む。この実施形態において、メモリ・ページ１２８の各々に関する物理アドレス位置情報を格納するために、随意的にマイグレーション・パケット１３１が用いられる。マイグレーション・パケット１３１は、マイグレーション中、対応するメモリ・ページ１２８と共にターゲット・システム１０２に送られる。この実施形態において、ターゲット仮想マシン構成情報及び／又はターゲット・メモリ・アクセス・データもまた、データ・ストレージ装置１２６内に格納される。図１に示すターゲット・データ・ストレージ装置１２６は、単純化及び説明の容易化のために示される例示的な装置である。この又は更に別の実施形態において、ターゲット・ホスト・システム１０４により用いられる複数のターゲット・データ・ストレージ１２６が存在してもよい。
【００２４】
この実施形態において、ターゲット・ホスト・システム１０４は、ターゲット・ハイパーバイザ１３０及び１つ又は複数の仮想マシン１２２を含む種々のアプリケーションを実行する。ターゲット・ハイパーバイザ１３０は、ターゲット・ホスト・システム１０４のリソースへのアクセスを管理し、仮想マシン・モニタとして機能して、仮想マシンの同時実行をサポートする。各々の仮想マシンは、特定のゲスト・オペレーティング・システム、及びゲスト・オペレーティング・システムをターゲットにして書かれたソフトウェアを実行するための複数のユーザ・セッションをサポートすることができる。例えば、１つの仮想マシンは、Ｌｉｎｕｘ（登録商標）オペレーティング・システムのインスタンスをサポートすることができ、第２の仮想マシンは、ｚ／ＯＳ（登録商標）オペレーティング・システムのインスタンスを実行する。仮想マシンを通してターゲット・ハイパーバイザ１３０により、他のゲスト・オペレーティング・システムをサポートすることもできる。
【００２５】
この実施形態において、ターゲット・ハイパーバイザ１３０は、ターゲット・メモリ１２０をターゲット仮想マシン１２２からソース仮想マシン１１２上のソース・メモリ１１０にマイグレートさせるための種々のマイグレーション動作を実行する、マイグレーション・マネージャ１３２を含む。ターゲット・ハイパーバイザ１３０は、仮想マシン制御バス１３４を通してターゲット・ホスト・システム１０４上の仮想マシン１２２の実行制御を管理する。各々の仮想マシン制御バス１３４は、割り込み、デバイス・ドライバ・コマンド、デバイス・ドライバ・データ等の低レベルの制御情報の交換を処理することができる。
【００２６】
概念的な観点から見ると、情報処理システムは、一般に、基礎をなすハードウェア層上で実行される１つ又は複数のソフトウェア層を含む。抽象化のため、この階層化を行うことができる。所定のソフトウェア層のための界面を定めることにより、その層をそれより上の他の層とは異なるように実装することができる。うまく設計されたコンピュータ・システムにおいては、各層は、その直下にある層についてしか認識していない（そして、その直下にある層にしか依存していない）。このことにより、層又は「スタック」（複数の隣接層）を、その層又はスタックの上の層に悪影響を与えずに置き換えることが可能になる。例えば、ソフトウェア・アプリケーション（上位層）は、典型的には、ファイルを何らかの形の恒久的ストレージに書き込むために、下位のオペレーティング・システム（下位層）に依存しており、これらのアプリケーションは、データをフロッピー・ディスク、ハードドライブ、又はネットワーク・フォルダに書き込むことの間の違いを理解する必要はない。ファイルに書き込むために、この下位層が新しいオペレーティング・システム・コンポーネントと置き換えられる場合、上位層のソフトウェア・アプリケーションの動作は影響を受けないままである。
【００２７】
階層化されたソフトウェアの柔軟性により、仮想マシン（ＶＭ）が、実際には別のソフトウェア層である仮想ハードウェア層を提示することが可能になる。このように、ＶＭは、その上のソフトウェア層に対して、それらのソフトウェア層が自分自身のプライベート・コンピュータ・システム上で実行されているような錯覚を起こさせることができ、従って、ＶＭは、単一の「ホスト・システム」上で複数の「ゲスト・システム」が同時に実行されることを可能にする。
【００２８】
図２は、本発明の一実施形態による、情報処理システムにおけるエミュレートされた動作環境のためのハードウェア及びソフトウェア・アーキテクチャの論理階層化を表す図である。エミュレーション・プログラム２０２は、ホスト・オペレーティング・システム２０３及び／又はハードウェア・アーキテクチャ２０４上で実行される。エミュレーション・プログラム２０２は、ゲスト・ハードウェア・アーキテクチャ２０６及びゲスト・オペレーティング・システム２０８をエミュレートする。１つ又は複数のソフトウェア・アプリケーション２１０が、順次、ゲスト・オペレーティング・システム２０８上で実行される。図２のエミュレートされた動作環境において、エミュレーション・プログラム２０２の動作のために、ソフトウェア・アプリケーション２１０は、一般にホスト・オペレーティング・システム及びハードウェア・アーキテクチャ２０４とは両立しないオペレーティング・システム上で実行されるように設計されたとしても、エミュレートされた環境を含む情報処理システム上で実行することができる。
【００２９】
図３は、本発明の一実施形態による、仮想化コンピューティング・システム３００を示す。図３の仮想化コンピューティング・システムは、物理コンピュータ・ハードウェア３０４の上で直接実行されるホスト・オペレーティング・システム・ソフトウェア層（ホストＯＳ）３０２を含む。ホストＯＳ３０２は、ホストＯＳが仮想化しているハードウェアと同じであるインタフェースを露出させることによって、マシンのリソースの全てを仮想化する（これにより、ホストＯＳが、その上で動作するオペレーティング・システム層に気付かれずに済むことが可能になる）。
【００３０】
ホストＯＳ３０２の上には、２つの仮想マシン（ＶＭ）の実装、即ち、この例示的な実施形態においては仮想化されたＩｎｔｅｌ３８６（商標）プロセッサであるＶＭ  Ａ３０６と、この例示的な実施形態においては、Ｍｏｔｏｒｏｌａ  ６８０Ｘ０ファミリーのプロセッサのうちの１つの仮想化バージョンであるＶＭ  Ｂ３０８とがある。ＶＭ３０６及び３０８の各々の上には、ゲスト・オペレーティング・システム（ゲストＯＳ）Ａ３１０及びゲストＯＳ  Ｂ３１２がある。ゲストＯＳ  Ａ３１０の上には、実行中の２つのアプリケーション、即ち、アプリケーションＡ１  ３１４及びアプリケーションＡ２  ３１６がある。ゲストＯＳ  Ｂ３１２の上には、アプリケーションＢ１  ３１８がある。ＶＭ  Ａ３０６及びＶＭ  Ｂ３０８は、ソフトウェア構成として存在する仮想化されたコンピュータ・ハードウェア表現であり、これは、ＶＭ  Ａ３０６及びＶＭ  Ｂ３０８を、それぞれゲストＯＳ  Ａ３１０及びゲストＯＳ  Ｂ３１２に提示するだけでなく、ゲストＯＳ  Ａ３１０及びゲストＯＳ  Ｂ３１２が実の物理コンピュータ・ハードウェア３０４と間接的に対話するのに必要なソフトウェア・ステップの全てをも実行する、専用ソフトウェア・コードの存在のために可能にされる。この完全な機能は、仮想マシン・モニタ（ＶＭＭ）と呼ぶことができ、ここで、図３の例示的な実施形態のような実施形態において、ＶＭＭは、ホスト・オペレーティング・システム３０２の一部を構成する。
【００３１】
他の実施形態において、ＶＭＭは、ホスト・オペレーティング・システム３０２の上で実行され、かつ、ホスト・オペレーティング・システム３０２を通じてのみコンピュータ・ハードウェアと対話するアプリケーションとすることができる。さらに他の実施形態において、ＶＭＭは、幾つかのレベル上で、ホスト・オペレーティング・システム３０２を介してコンピュータ・ハードウェア３０４と間接的に対話するが、他のレベル上では、コンピュータ・ハードウェア３０４と直接対話する（ホスト・オペレーティング・システムがコンピュータ・ハードウェアと直接対話するのと類似の方法で）部分的に独立したソフトウェア・システムを含む。さらに別の実施形態においては、ＶＭＭは、全てのレベル上で、ホスト・オペレーティング・システムを用いずに（コンピュータ・ハードウェア３０４の使用を調整し、競合等を回避する限り、依然としてホスト・オペレーティング・システム３０２と対話するが）コンピュータ・ハードウェア３０４と直接対話する（ホスト・オペレーティング・システムがコンピュータ・ハードウェアと直接対話するのと類似の方法で）完全に独立したソフトウェア・システムを含むことができる。
【００３２】
ＶＭＭを実装するためのこれらの変形の全てが、本明細書で説明される種々のプロセスを実行するための代替的な実施形態を形成すると予想され、本発明は、いずれかの特定のＶＭＭ構成に対するこれらの代替的な実施形態により限定されるものではない。さらに、ＶＭ  Ａ３０６及び／又はＶＭ  Ｂ３０８を介するアプリケーション３１４、３１６及び３１８の間の対話へのいずれの言及も（恐らく、ハードウェア・エミュレーション・シナリオにおける）、実際には、アプリケーション３１４、３１６及び３１８とＶＭＭとの間の対話であるように解釈すべきである。同様に、アプリケーションＶＭ  Ａ３０６及び／又はＶＭＢ３０８とホスト・オペレーティング・システム３０２及び／又はコンピュータ・ハードウェア３０４との間の対話（恐らく、コンピュータ・ハードウェア３０４上でコンピュータ命令を直接又は間接的に実行するための）へのいずれの言及も、実際には必要に応じて、ＶＭＭとホスト・オペレーティング・システム３０２又はコンピュータ・ハードウェア３０４との間の対話であるように解釈すべきである。
【００３３】
図３に示されるように、仮想化コンピューティング・システム３００は、ネットワーク１０６を介して、別の仮想化コンピューティング・システム３０１に随意的に通信可能に結合させることができる。第２の仮想化コンピューティング・システム３０１を囲む破線３０３は、これが本発明の別の実施形態であることを示す。第２の仮想化コンピューティング・システム３０１は、上述した第１の仮想化コンピューティング・システム３００と類似のコンポーネントを含む。
【００３４】
本発明の実施形態において、仮想マシン（仮想ゲスト）のライブ・マイグレーションが、第１の情報処理システム１０２上の１つ又は複数の仮想マシン１１２と第２の情報処理システム１０４上の１つ又は複数の仮想マシン１２２との間で実行される。このライブ・マイグレーション・プロセスは、第１の情報処理システム１０２上の仮想マシン１１２を第２の情報処理システム１０４へ、かつ、第２の情報処理システム１０４上の仮想マシン１２２を第１の情報処理システム１０２へ、同時にマイグレートさせる対称型ライブ・マイグレーション・プロセス（symmetric live migration process）である。また、２つの仮想化コンピューティング・システム３００及び３０１が互いに結合される図３の実施形態において、仮想マシンの対称型マイグレーションは、それも可能ではあるが単にホスト内だけではなく、物理ホスト間で行うことができる。例えば、ＯＳ  Ａ３１０は、ＯＳ  Ｂ３１２、ＯＳ  Ｍ３２０、又はＯＳ  Ｎ３２２のいずれかもスワップすることもできる。同じホスト内のＯＳ  Ｂ３１２のようなＯＳをスワップすることは、とりわけ、仮想マシンのアップグレード及びシャッフリングに有用である。複数の物理ホスト間でマイグレートさせることは、とりわけ、マシン故障時のスワップ・シナリオに有用である。また、オペレーティング・システム３１０、３１２、３２０及び３２２のいずれも、サポートされるゲストを有する別のハイパーバイザとすることができることに留意すべきである。
【００３５】
本発明の対称型ライブ・マイグレーションは、仮想ゲストの物理マシンがそれぞれのゲスト及び新しくマイグレートされるゲストをサポートするのに十分なリソースを有さない場合でも実行できるので有用である。この対称型ライブ・マイグレーション・プロセスはまた、オーバーコミット（overcommit）が選択肢にない状況において用いることもできる。メモリ・ページは、１つのシステムから別のシステム上の中間表現に移動され、その逆も実質的に同時に行われる。この中間表現を用いて、新しいシステム上のマイグレートされた仮想マシンをアクティブにする直前に、新しいシステム上に仮想マシンのオリジナルの表現が復元される。スワップされるページを制御するためにＬＲＵ論理マップを用いること（従来より用いられる物理アドレスの順序付け（ordering）とは対照的に）を組み合わせることにより、以前の転送のロールバックが必要なときにデマンド・ページング（demand paging）が可能になる。メモリ・ページのメタデータ・タグ付けは、非自明のスワップ（non-obvious swap）を用いて、以前のページ選択における「間違い」を元に戻すことを可能にする。最終的なゲストの再起動のために、ソーティング・ルーチンを用いて、ＬＲＵ表現をもとの物理表現に変換することができる。
【００３６】
本発明の実施形態において、各々のマイグレーション・マネージャは、それぞれの仮想マシンが用いるメモリ・ページの最長時間未使用（ＬＲＵ）マップを保持する。割り当てられたベージ番号のスタックを保持するといった、いずれかの機構を用いてＬＲＵマップを実装することができる。ページが参照されると、ページの対応するページ番号が、スタックの上部に移動される。ページがスワップ・アウトされるとき、ページの対応するページ番号がスタックから除去される。ＬＲＵマップの使用は、すぐに再使用される可能性が低いメモリ・ページが、すぐに再使用される可能性がより高いメモリ・ページより前にマイグレートされることを保証する。このことは、仮想マシンの動作を中断せずにマイグレーションが行われることを可能にし、かつ、マイグレーション・プロセスをユーザに対してトランスペアレントにする。言い換えれば、仮想マシンの動作は、マイグレーション・プロセス中に停止されない。本発明のさらに別の実施形態は、ＬＲＵマップの代りに別の手段を用いる。
【００３７】
メモリ・ページのＬＲＵマップを作成することに加えて、マイグレーション・マネージャは、メモリ・ページの物理アドレスも監視する。例えば、一実施形態において、各々のメモリ・ページについてのマイグレーション・マネージャは、メモリ・ページ内の１又は複数の使用可能なビットを用いて、メモリ・ページ自体の中にオリジナルのホスト・システムの物理ページ・オフセットを保持する。別の言い方をすれば、マイグレーション・マネージャは、メモリ・ページの物理アドレスをそれ自体の中に埋め込む。代替的な実施形態において、マイグレーション・マネージャは、メモリ・ページの物理アドレスを、メモリ・ページの外部の位置に保持する。例えば、マイグレーション・マネージャは、この物理アドレス情報を、メモリ・ページの外部にあるログ内に保持することができる。そして、メモリ・ページが１つの物理システムから別の物理システムにスワップされるたびに、マイグレーション・マネージャは、メモリ・ページと共にスワップされるメモリ・ページの物理アドレスを含むパケットを送る。
【００３８】
図４は、本発明の一実施形態による、情報処理システム内の仮想マシンに関する例示的なＬＲＵマップを示す。具体的には、図４は、第１の情報処理システム１０２上の仮想マシンＡ（例えば、ゲストＡ）１１２のメモリ・ページ４０６のＬＲＵマップ４０２と、第２の情報処理システム上の仮想マシンＢ（例えば、ゲストＢ）１２２のメモリ・ページ４０８のＬＲＵマップ４０４とを示す。メモリ・ページ４０６及び４０８は、最長時間未使用のものがマップの上部に、かつ、最短時間未使用のものがマップの下部になるように配列される。この実施形態において、各々のメモリ・ページ４０６及び４０８についてのエントリは、そのオリジナルのホスト・システム内にメモリ・ページの物理ページ・オフセットを含んだメタデータ４１０及び４１２を含む。上述のように、これは単に例示的な実施形態にすぎず、さらに別の実施形態においては、メモリ・ページの物理アドレス情報をメモリ・ページ自体の外部に格納することもできる。例えば、この情報をハードウェア・レジスタ内に格納することができる。
【００３９】
この実施形態において、第１及び第２のシステム１０２及び１０４のマイグレーション・マネージャ１１８及び１３２は、対称型ライブ・マイグレーション動作をいつ実行するかを決定するために、互いに通信している。例えば、一方のシステムが負荷バランシングを行う必要がある場合、マイグレーション・マネージャ１１８及び１３２は、互いに通信して対称型ライブ・マイグレーション動作を開始する。両方のシステム１０２及び１０４がページ要求を同時に送る場合、種々の規則／ポリシーを実装して、どちらのシステムが第１のメモリ・ページをスワップするかを決定することができる。
【００４０】
対称型ライブ・マイグレーション動作が実行されると、各々のマイグレーション・マネージャ１１８及び１３２は、他方のシステムにおける仮想マシンが必要とするハードウェア・リソースを取り出す。言い換えれば、各々のマイグレーション・マネージャ１１８及び１３２は、そのマイグレーション・マネージャのシステムにマイグレートされる仮想マシンのサイズを決定する。これは、対称型ライブ・マイグレーションにおいて、メモリ・ページを対称的にスワップするために行われる。従って、一方の仮想マシンが他方よりも少ないメモリ・ページを有する場合、大きい方の仮想マシンにおける付加的なメモリ・ページには、スワッピングのための、小さい方の仮想マシンにおける対応するメモリ・ページがない。従って、この実施形態において、仮想マシン１１２及び１２２のサイズが異なる場合、小さい方の仮想マシンを管理するマイグレーション・マネージャは、その小さい方の仮想マシンのサイズをパディングして（pad）、大きい方の仮想マシンのサイズに実質的に一致させる。例えば、小さい方の仮想マシンのマイグレーション・マネージャは、ｈｉｇｈｍｅｍ（ハイメモリ）をその小さい方の仮想マシンに論理的に付加することができる。さらに、各々のマイグレーション・マネージャは、ページのスワッピング及びソーティングを行うために空きメモリのページをとっておく必要がある。代替的に、ハードウェア・フィーチャ・レジスタとして、付加的なスペースを実装することができる。そのような実施形態において、ハードウェア・フィーチャ・レジスタは、ページのスワッピング及びソーティングのために用いられ、空きページの必要性をなくす。ページの物理的位置を含むパケットは、依然としてターゲット・ホスト・システムに送られる。
【００４１】
図５−図９は、本発明の一実施形態による、仮想マシンの例示的な対称型ライブ・マイグレーションを示す。図５は、第１の情報処理システム１０２上の仮想マシン１１２の論理マップ５０２と、第２の情報処理システム１０４上の仮想マシン１２２の論理マップ５０４とを示す。図５−図９の例において、仮想マシン１１２及び１２２は同じ数のメモリ・ページを有するが、仮想マシンの１つがメモリ・ページに関してより小さい場合、この実施形態において、小さい方の仮想マシンのサイズをパディングして、大きい方の仮想マシンのサイズと実質的に一致させる。
【００４２】
図５に示すように、仮想マシン１１２は、そのオリジナル／ソース・システム１０２上のメモリ・ページ５０６の物理ページ・オフセットを示すメタデータ５０８が埋め込まれている第１のメモリ・ページ５０６を有する。仮想マシン１１２はまた、そのオリジナル／ソース・システム１０２上のメモリ・ページ５１０の物理ページ・オフセットを示すメタデータ５１２が埋め込まれている第２のメモリ・ページ５１０を有する。第３のメモリ・ページ５１４には、そのオリジナル／ソース・システム１０２上のメモリ・ページ５１６の物理ページ・オフセットを示すメタデータ５１６が埋め込まれている。第４のメモリ・ページ５１８には、そのオリジナル／ソース・システム１０２上のメモリ・ページ５１８の物理ページ・オフセットを示すメタデータ５２０が埋め込まれている。仮想マシン１１２はまた、そのオリジナル／ソース・システム１０２上のメモリ・ページ５２２の物理ページ・オフセットを示すメタデータ５２４が埋込まれている第５のメモリ・ページ５２２も有する。
【００４３】
仮想マシン１２２は、そのオリジナル／ソース・システム１０４上のメモリ・ページ５２６の物理ページ・オフセットを示すメタデータ５２８が埋込まれている第１のメモリ・ページ５２６を有する。仮想マシン１２２はまた、そのオリジナル／ソース・システム１０４上のメモリ・ページ５３０の物理ページ・オフセットを示すメタデータ５３２も埋込まれている第２のメモリ・ページ５３０を有する。第３のメモリ・ページ５３４には、そのオリジナル／ソース・システム１０４上のメモリ・ページ５３４の物理ページ・オフセットを示すメタデータ５３６が埋め込まれている。第４のメモリ・ページ５３８には、そのオリジナル／ソース・システム１０４上のメモリ・ページ５３８の物理ページ・オフセットを示すメタデータ５４０が埋め込まれている。仮想マシン１２２はまた、そのオリジナル／ソース・システム１０４上のメモリ・ページ５４２の物理ページ・オフセットを示すメタデータ５４４が埋め込まれている第５のメモリ・ページ５４２も有する。
【００４４】
対称型ライブ・マイグレーション・プロセスが開始すると、各々のマイグレーション・マネージャ１１８及び１３２は、データ・ストレージ１０８及び１２６内のページアウトされたメモリ・ページを他のシステムのデータ・ストレージにコピーする。例えば、第１の情報処理システム１０２におけるマイグレーション・マネージャ１１８は、そのページング・データ・セットを第２の情報処理システム１０４のデータ・ストレージ１２６にコピーし、第２の情報処理システム１０４におけるマイグレーション・マネージャ１３２は、そのページング・データ・セットを第１の情報処理システム１０２のデータ・ストレージ１０８にコピーする。仮想マシンＡ１１２のメモリ・ページ５０６、５１０、５１４、５１８及び５２２、及び、仮想マシンＢ１２２のメモリ・ページ５２６、５３０、５３４、５３８及び５４２が対称的にスワップされ、仮想マシン１１２及び１２２のＬＲＵマップ５０２及び５０４を通ってトップダウン式に移動する。
【００４５】
図６は、この実施形態において、仮想マシン１１２及び１２２のＬＲＵマップ５０２及び５０４内の第１のメモリ・ページ５０６及び５２６の対称型スワッピングが初めに行われることを示す。図示のように、仮想マシンＡ１１２の第１のメモリ・ページ５０６は、今や、仮想マシンＢのＬＲＵマップ５０４の、仮想マシンＢ１２２の第１のメモリ・ページ５２６があったのと同じ位置にある。仮想マシンＢ１２２の第１のメモリ・ページ５２６は、今や、仮想マシンＡのＬＲＵマップ５０２の、仮想マシンＡ１１２の第１のメモリ・ページ５０６があったのと同じ位置にある。この実施形態においては、この対称型スワッピングは、スワッピングの完了時に仮想マシンについてのＬＲＵポインタ６０２及び６０４をロックステップ方式で進めることによって追跡される。この実施形態において、これらのポインタ６０２及び６０４のための付加的なスペースが各システム上に割り当てられているが、これは必須ではない。代替的に、付加的なスペースをハードウェア・フィーチャ・レジスタとして実装することもできる。
【００４６】
図７は、付加的な対称型スワップ動作が実行されたことを示す。図示のように、仮想マシンＡ１１２の第２のメモリ・ページ５１０は、今や、仮想マシンＢのＬＲＵマップ５０４の、仮想マシンＢ１２２の第２のメモリ・ページ５３０があったのと同じ位置にある。仮想マシンＢ１２２の第２のメモリ・ページ５３０は、今や、仮想マシンＡのＬＲＵマップ５０２の、仮想マシンＡ１１２の第２のメモリ・ページ５１０があったのと同じ位置にある。さらに、仮想マシンＡ１１２の第３のメモリ・ページ５１４は、今や、仮想マシンＢのＬＲＵマップ５０４の、仮想マシンＢ１２２の第３のメモリ・ページ５３４があったのと同じ位置にある。仮想マシンＢ１２２の第３のメモリ・ページ５３４は、今や、仮想マシンＡのＬＲＵマップ５０２の、仮想マシンＡ１１２の第３のメモリ・ページ５１４があったのと同じ位置にある。このプロセスは、メモリ・ページの全てが対称的にスワップされるまで継続する。
【００４７】
対称型ライブ・マイグレーション・プロセス中のいずれかの時点で、仮想マシンの１つが、既にスワップされた自分のページ（即ち、対応するＬＲＵマップ内のポインタの論理的に上にあるページによって示されるような、他のシステムに既に送られたページ）を必要とする場合には、この仮想マシンは、この欠落したページを他方のシステムから要求することができる。この要求が行われると、要求されたページをオリジナルのホストにスワップ・バックしなければならない。図７は、仮想マシンＡが、オフセット「２」を有するそのメモリ・ページ５１４を第２のシステム１０４から戻すことを必要とする例を示す。これにより、スワップ段階の終わりのソーティングが正しくなくなるので、単に、この戻されたページを、オリジナル・ホスト・システム１０２のデータ・ストレージ１０８内のどこかに置くことはできない。従って、この実施形態において、マイグレーション・マネージャは、逆戻りしたページを要求側サイドのＬＲＵマップの下部に置くことによって、以前の対称型ページ・スワップを逆戻りさせる。要求側によりオリジナルの側にスワップ・バックされた対称的に整列されたページは、ポインタが進められた位置に置かれる。ＬＲＵマップの対称性は乱されないので、スワッピングは通常どおり継続することができる。
【００４８】
さらに、ゲストの速度を落とし、レジスタ状態を圧縮するための機構を実装することもできる。幾つかの実施形態において、１つ又は複数の機構を用いて、所望の進展が見られないときにゲストの速度を落とすことができる。例えば、ゲストが全速力で動作している場合、一定の時間間隔に１０００ページを参照することができる。これらの１０００ページの一部は既にターゲット・システムに送られている可能性が高い。ここでソース・システムがこれらのページを取り戻す必要があり、ゲストがこれらのページを処理する後の時点でこれらのページを再び送り出す場合、このことは、マイグレーション・プロセスを劇的に減速させる。ゲストがさらにゆっくりと動作する場合、同じ時間間隔において１０００ページではなくて１００ページしか参照することができず、ソース・システムは、ターゲット・システムから多くのページを取り戻す必要がなくなる。ゲストを減速させるための１つの簡単なスキームは、その優先順位を低くすることである（ホスト・システムが優先順位に基づいたＣＰＵスケジューリングを用いる場合）。優先順位がより低い場合、ゲストが取得するＣＰＵサイクルはより少なくなり、従って、ゲストはゆっくりと動作する。ページの大部分がターゲット・システムに転送された後、ターゲット・システム上のこのゲストについてのシステム状態は、ソース・システム上のオリジナルの状態と同一でなければならないので、レジスタのコンテンツも同様に転送される。ゲスト・システムは、レジスタ状態（及び、あらゆる残りのページ）の転送のために一時停止される。
【００４９】
図８は、この例において、仮想マシンＡ１１２により戻すように要求されたメモリ・ページ５１４が仮想マシンＡ１１２のＬＲＵマップ５０２の下部に置かれることを示す。逆戻りしたメモリ・ページ５１４と対称的に整列された仮想マシンＢ１２２のメモリ・ページ５３４もまた、ポインタが進められたＬＲＵマップ５０４内の位置において、そのオリジナルのシステム１０４にスワップ・バックされる。図８に示すように、逆戻りしたメモリ・ページ５１４はそのオリジナルのＬＲＵマップ５０２の下部に置かれ、かつ、対応する対称的に整列されたメモリ・ページ５３４はそのオリジナルのホスト・システム１０４にスワップ・バックされたので、ページの逆戻りが要求されたときにポインタ６０２によって指示された位置及びその位置の下にあるメモリ・ページ５１８及び５２２は、ＬＲＵマップ５０２内の１つ上の位置に移動する。
【００５０】
ひとたび対称型ライブ・マイグレーション・プロセスが完了すると（即ち、仮想マシンＡ１１２の全てのメモリ・ページ５０６、５１０、５１４、５１８及び５２２の全てが第２の情報処理システム１０４にマイグレートされ、仮想マシンＢの全てのメモリ・ページ５２６、５３０、５３４、５３８及び５４２が第１の情報処理システム１０２にマイグレートされる）、図９に示すように、マイグレーション・マネージャ１１８及び１３２は、スワッピング・プロセス中、システム上のゲストをアクティブにする前に、ページ内に埋め込まれた又は別のパケット内に含められたそれらの物理位置によってメモリ・ページをソートする。言い換えれば、各々のマイグレート・マネージャ１１８及び１３２は、メモリ・ページをそれらの物理オリジネータ・メタデータによってソートし、メモリ・ページをそれらの物理アドレスによって整列させる。
【００５１】
図１０及び図１１は、本発明の一実施形態による、２つ又はそれ以上の仮想マシンを対称的にマイグレートさせるプロセスを示す、動作フロー図である。図１０及び図１１の動作フローは、マイグレーション・プロセス中に、両方の情報処理システム上で同時に実行することができる。ステップ１００２において図１０の動作フローが開始し、直ちにステップ１００４へ進む。ステップ１０４において、マイグレーション・マネージャは、各々のメモリ・ページの物理アドレス位置情報をメモリ・ページ自体の中に埋め込む。代替的に、マイグレーション・マネージャは、この情報をメモリ・ページの外部に格納し、マイグレーション中に、このアドレス情報を含む別個のパケットを、メモリ・ページと共に送ることができる。
【００５２】
ステップ１００６において、マイグレーション・マネージャは、メモり・ページについてのＬＲＵマップを保持する。ステップ１００８において、マイグレーション・マネージャは、対称型ライブ・マイグレーション・プロセスが開始されたかどうかを判断する。この判断の結果が否定である場合、マイグレーション・マネージャは、再び、対称型ライブ・マイグレーション・プロセスが開始したかどうかを判断する。この判断の結果が肯定である場合、ステップ１０１０において、マイグレーション・マネージャは、他方の仮想マシン（即ち、現システムにマイグレートされる仮想マシン）のサイズがそのシステムでホストされている仮想マシンと等しいかどうかを判断する。
【００５３】
この判断の結果が肯定である場合、制御は、ステップ１０１８へ進む。この判断の結果が否定である場合、ステップ１０１２において、マイグレーション・マネージャは、他方の仮想マシンのサイズがホストされる仮想マシンより大きいかどうかを判断する。この判断の結果が否定である場合、ステップ１０１４において、マイグレーション・マネージャは、他方のマイグレーション・マネージャが他方の仮想マシンのサイズを調節したかどうかを判断する。この判断の結果が肯定であるとき、制御は、ステップ１０１６へ進む。ステップ１０１２における判断が肯定的である場合、ステップ１０１６において、マイグレーション・マネージャは、ホストされる仮想マシンのサイズをパディングして、他方の仮想マシンのサイズに実質的に一致させる。
【００５４】
ステップ１０１８において、マイグレーション・マネージャは、ＬＲＵマップ内の各メモリ・ページを、このマップの上部で開始して、他方のシステム上の対称的に整列された位置に対称的にスワップする。マイグレーション・マネージャはまた、他方のシステムからの対応するメモリ・ページを対称的に受け取り、この受け取ったメモリ・ページを、システムから対称的にスワップ・アウトされたメモリ・ページの位置に置く。ステップ１０２０において、マイグレーション・マネージャは、スワップ後にＬＲＵマップ・ポインタを進める。次に、制御は図１１のステップ１１０２に進む。
【００５５】
ステップ１１０２において、マイグレーション・マネージャは、ホスト・システムがスワップされたページを戻すことを要求するかどうかを判断する。この判断の結果が肯定であるとき、ステップ１１０４において、マイグレーション・マネージャは、ターゲット・システムからのページを戻すことを要求する。ステップ１１０６において、マイグレーション・マネージャは、要求された、戻されたページを受け取り、受け取ったページをＬＲＵマップの下部に置く。次に、制御はステップ１１１０へ進む。
【００５６】
ステップ１１０２における判断の結果が否定である場合、ステップ１１１０において、マイグレーション・マネージャは、ターゲット・システムがスワップされたページを戻すことを要求するかどうかを判断する。この判断の結果が肯定である場合、ステップ１１１２において、マイグレーション・マネージャは、要求されたページをターゲット・システムに送り返す。ステップ１１１４において、マイグレーション・マネージャは、ターゲット・システムに送り返されたメモリ・ページと対称的に整列された対応するメモリ・ページを、ターゲット・システムから受け取る。次に、制御はステップ１１１６へ進む。
【００５７】
ステップ１１１０における判断の結果が否定である場合、ステップ１１１６において、マイグレーション・マネージャは、全てのメモリ・ページが対称的にスワップされたかどうかを判断する。この判断の結果が否定である場合、制御は、図１０のステップ１０１８へ進む。この判断の結果が肯定である場合（即ち、仮想マシンが対称的にスワップされた場合）、ステップ１１１８において、マイグレーション・マネージャは、各々の対称的にスワップされたメモリ・ページ又は各メモリ・ページと共に受け取った外部パケットを分析して、各メモリ・ページと関連した物理アドレスを識別する。ステップ１１２０において、マイグレーション・マネージャは、ターゲット・システムから受け取ったメモリ・ページの各々を、それらの物理アドレス情報に基づいて整列させる。ステップ１１２２において、マイグレーション・マネージャは、マイグレートされた仮想マシンをアクティブにする。次に、制御フローはステップ１１２４で終了する。
【００５８】
図１２は、本発明の一実施形態による情報処理システムを示すブロック図である。例えば、情報処理システム１２００は、図１の情報処理システムのいずれかとすることができ、それらのシステムに関して上述したコンポーネントを含むことができる。情報処理システム１２００は、本発明の１つ又は複数の実施形態を実施するように適合された、適切に構成された処理システムに基づいたものである。同様に、任意の適切に構成された処理システムを、本発明の実施形態によって、情報処理システム１２００として用いることもできる。
【００５９】
情報処理システム１２００は、コンピュータ１２０２を含む。コンピュータ１２０２は、主メモリ１２０６に接続されたプロセッサ１２０４と、マス・ストレージ・インタフェース１２０８と、ネットワーク・アダプタ・ハードウェア１２１０とを有する。システムバス１２１２は、これらのシステム・コンポーネントを相互接続する。マス・ストレージ・インタフェース１２０８は、データ・ストレージ装置１２１４のようなマス・ストレージ装置を情報処理システム１２００に接続するために用いられる。データ・ストレージ装置１２１４の１つの特定のタイプは、ＣＤ／ＤＶＤドライブのような光学式ドライブであり、これを用いて、コンピュータ可読媒体又は（これらに限定されるものではないが）ＣＤ若しくはＤＶＤ１２１６のようなストレージ製品にデータを格納し、これからデータを読み出すことができる。別のタイプのデータ・ストレージは、例えば、ＮＴＦＳ型ファイル・システムの動作をサポートするように構成されたデータ・ストレージ装置である。
【００６０】
この実施形態において、主メモリ１２０６は、仮想マシン１１２及び１２２、ハイパーバイザ１１６及び１３０、マイグレーション・マネージャ１１８及び１３２、データ・ストレージ装置１０８及び１２６、メモリ・ページ１１４及び１２８（及びマイグレーション・データ）、並びにＬＲＵマップ１１５及び１２９（及びマイグレーション・パケット）を含む。主メモリ１２０６のコンポーネントは、主メモリ１２０６内に同時に存在するように示されているが、常時主メモリ内に完全に常駐している必要はなく、同時に完全に常駐している必要さえない。この実施形態において、情報処理システム１２００は、従来の仮想アドレス指定機構を用いて、プログラムが、主メモリ１２０６及びデータ・ストレージ装置１２１６のような複数の小さいストレージ・エンティティにアクセスするのではなく、あたかも大きい単一のストレージ・エンティティ（コンピュータ・システム・メモリと呼ばれる）にアクセスするかのように動作することを可能にする。「コンピュータ・システム・メモリ」という用語は、本明細書において、情報処理システム１２００の仮想メモリ全体を総称するように用いられる。
【００６１】
コンピュータ１２０２に対して１つだけのＣＰＵ１２０４が示されるが、複数のＣＰＵを有するコンピュータ・システムを同様に効果的に用いることもできる。本発明のさらに別の実施形態は、ＣＰＵ１２０４のオフロード処理のために用いられる、各々が別個の完全にプログラムされたマイクロプロセッサを含むインタフェースを組み込む。主メモリ内に含まれるオペレーティング・システムは、Ｌｉｎｕｘ、ＵＮＩＸ、Ｗｉｎｄｏｗｓ  ＸＰ、又はＷｉｎｄｏｗｓ  Ｓｅｒｖｅｒオペレーティング・システムのような適切なマルチタスク・オペレーティング・システムである。本発明のさらに別の実施形態は、他のいずれの適切なオペレーティング・システムを用いることもできる。本発明の幾つかの実施形態は、オペレーティング・システムのコンポーネントの命令を、情報処理システム１２００内に配置された任意のプロセッサ上で実行することを可能にする、オブジェクト指向フレームワーク機構のようなアーキテクチャを用いる。ネットワーク・アダプタ・ハードウェア１２１０は、１つ又は複数のネットワーク１０６へのインタフェースを提供するために用いられる。本発明のさらに別の実施形態は、今日のアナログ及び／又はデジタル技術を含む又は将来のネットワーキング機構を介する、いずれかのデータ通信接続と共に動作するように適合させることができる。
【００６２】
本発明の例示的な実施形態は、完全に機能するコンピュータ・システムに関連して説明されたが、当業者であれば、実施形態は、ＣＤ、ＤＶＤ、ＣＤ−ＲＯＭ、他の形態の記録可能媒体、或いは、例えば図１２のコンピュータ可読媒体若しくはストレージ製品１２１６などの他の形態のコンピュータ可読記憶媒体を介して、プログラム製品として配布することが可能であることを認識するであろう。
【００６３】
現在のところ本発明の好ましい実施形態であると考えられるものを示し、説明してきたが、当業者であれば、本発明の真の範囲から逸脱することなく、種々の他の修正をなすこと、及び、均等物に置き換えることが可能であることを理解するであろう。さらに、本明細書で説明される本発明の中心的な概念から逸脱することなく、特定の状況を本発明の教示に適合させるように、多くの修正をなすことができる。さらに、本発明の一実施形態は、上述した特徴の全てを含んでいなくてもよい。従って、本発明は、開示される特定の実施形態に限定されるものではなく、添付の特許請求の範囲に入る全ての実施形態を含むことが意図されている。
【符号の説明】
【００６４】
１００：動作環境
１０２：情報処理システム（ソース・ホスト・システム）
１０４：情報処理システム（ターゲット・ホスト・システム）
１０６：ネットワーク
１０８、１２６、１２１４、１２１６：データ・ストレージ装置
１１０、１２０：メモリ
１１１、１２１：マイグレーション・データ
１１２、１２２、３０６、３０８：仮想マシン（ＶＭ）
１１４、１２８、４０６、４０８、５０６、５１０、５１４、５１８、５２２、５２６、５３０、５３４、５３８、５４２：メモリ・ページ
１１５、１２９、４０２、４０４：最長時間未使用（ＬＲＵ）マップ
１１６、１３０：ハイパーバイザ
１１７、１３１：マイグレーション・パケット
１１８、１３２：マイグレーション・マネージャ
１２４、１３４：仮想マシン制御バス
２０２：エミュレーション・プログラム
２０３：ホスト・オペレーティング・システム
２０４：ホスト・ハードウェア・アーキテクチャ
２０６：ゲスト・ハードウェア・アーキテクチャ
２０８：ゲスト・オペレーティング・システム
２１０：ソフトウェア・アプリケーション
３００、３０１：仮想化コンピューティング・システム
３０２：ホスト・オペレーティング・システム・ソフトウェア層（ホストＯＳ）
３０４：物理コンピュータ・ハードウェア
３１０、３１２、３２０、３２２：ゲスト・オペレーティング・システム（ゲストＯＳ）
３１４、３１６、３１８：アプリケーション
４１０、４１２、５０８、５１２、５１６、５２０、５２４、５２８、５３２、５３６、５４０、５４４：メタデータ
５０２、５０４：論理マップ（ＬＲＵマップ）
６０２、６０４：ＬＲＵポインタ
１２００：情報処理システム
１２０２：コンピュータ
１２０４：プロセッサ（ＣＰＵ）
１２０６：主メモリ
１２０８：マス・ストレージ・インタフェース
１２１０：ネットワーク・ハードウェア・アダプタ
【図１】
0005619173.tif 000002
【図２】
0005619173.tif 000003
【図３】
0005619173.tif 000004
【図４】
0005619173.tif 000005
【図５】
0005619173.tif 000006
【図６】
0005619173.tif 000007
【図７】
0005619173.tif 000008
【図８】
0005619173.tif 000009
【図９】
0005619173.tif 000010
【図１０】
0005619173.tif 000011
【図１１】
0005619173.tif 000012
【図１２】
0005619173.tif 000013