(57)【要約】【課題】仮想マシン処理の効率を高めるための方法を提供する。【解決手段】親仮想マシンをホストコンピュータ上に提供する。親仮想マシンを一時的にまたは永続的に中止する。子仮想マシンは親仮想マシンに関連付けられた全格納されたデータを初めは備えていない。親仮想マシンをフォークして、新しいロケーションで子仮想マシンを生成する。子仮想マシンは、親仮想マシンに関連付けられた格納データの全てを最初は持っていなくてもよい。【選択図】　図２
2004133894.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシン処理の効率を高めるための方法において、
第１のホストシステム上に親仮想マシンを提供するステップと、
前記親仮想マシンを一時的に中止するステップと、
前記親仮想マシンをフォーキングして、少なくとも一つの新しいロケーションにおいて少なくとも一つの子仮想マシンを生成するステップとを備えたことを特徴とする方法。
【請求項２】
前記少なくとも一つの新しいロケーションは、前記第１のホストコンピュータシステム上に存在することを特徴とする請求項１に記載の方法。
【請求項３】
前記少なくとも一つの新しいロケーションは、前記第２のホストコンピュータシステム上に存在することを特徴とする請求項１に記載の方法。
【請求項４】
前記親仮想マシンを一時的に中止するステップおよび前記親仮想マシンをフォーキングするステップは、約１ミリ秒の時間間隔中に実行されることを特徴とする請求項１に記載の方法。
【請求項５】
前記親仮想マシンはネットワークサーバであることを特徴とする請求項１に記載の方法。
【請求項６】
仮想マシン処理の効率を高めるための方法において、
格納されたデータに関連付けられた親仮想マシンを第１のホストシステム上に提供するステップと、
前記親仮想マシンを一時的に中止するステップと、
前記親仮想マシンをフォーキングして、格納されたデータの第１の部分なしに、少なくとも一つの新しいロケーションにおいて少なくとも一つの子仮想マシンを生成するステップとを備えたことを特徴とする方法。
【請求項７】
前記少なくとも一つの新しいロケーションは前記第１のホストコンピュータシステム上に存在することを特徴とする請求項６に記載の方法。
【請求項８】
前記少なくとも一つの新しいロケーションは第２のホストコンピュータシステム上に存在することを特徴とする請求項６に記載の方法。
【請求項９】
前記親仮想マシンを一時的に中止するステップおよび前記親仮想マシンをフォーキングするステップは、約１ミリ秒の時間間隔中に実行されることを特徴とする請求項６に記載の方法。
【請求項１０】
前記親仮想マシンはネットワークサーバであることを特徴とする請求項６に記載の方法。
【請求項１１】
デマンドページングを用いて、格納されたデータの第１の部分の副部分を前記少なくとも一つの子仮想マシンに送信するステップをさらに備えることを特徴とする請求項６に記載の方法。
【請求項１２】
前記デマンドページングを用いるステップは、前記少なくとも一つの子仮想マシンが前記第１の部分の第１の副部分にアクセスする場合、前記少なくとも一つの子仮想マシンを一時的に中止するステップ、および、前記第１の副部分を前記少なくとも一つの子仮想マシンに送信するステップを備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記デマンドページングを用いるステップは、前記親仮想マシンに関連付けられた格納されたデータの前記第１の部分の全てが、前記少なくとも一つの子仮想マシンに送信されていない場合、前記第１の部分の第２の副部分を前記少なくとも一つの子仮想マシンに送信するステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記デマンドページングを用いるステップは、前記少なくとも一つの子仮想マシンが前記少なくとも一つの親仮想マシンの前記少なくとも一つのメモリにアクセスしない場合、第１の部分のメモリページを前記少なくとも一つの子仮想マシンに送信するステップを備えることを特徴とする請求項１１に記載の方法。
【請求項１５】
前記第１の部分は前記親仮想マシンに関連付けられた前記格納されたデータのすべてであることを特徴とする請求項６に記載の方法。
【請求項１６】
前記デマンドページングを用いるステップは、前記親仮想マシンが第１の副部分を変更しようとする場合に、第１の副部分が親仮想マシンによって変更される前に、前記第１の副部分を少なくとも一つの子仮想マシンに送信するステップを備えることを特徴とする請求項１１に記載の方法。
【請求項１７】
前記デマンドページングを用いるステップは、前記親仮想マシンに関連付けられた前記格納されたデータの前記第１の部分の全てが、前記少なくとも一つの子仮想マシンに送信されていない場合、前記第１の部分の第２の副部分を前記少なくとも一つの子仮想マシンに送信するステップをさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記デマンドページングを用いるステップは、前記親仮想マシンが第１の副部分を変更しようとする場合、前記第１の副部分が前記親仮想マシンによって変更される前に、当該第１の副部分をコピーするステップをさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１９】
前記第１の副部分のコピーは一時的なコピーであることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記デマンドページングを用いるステップは、前記親仮想マシンに関連付けられた前記格納されたデータの前記第１の部分の全てが、前記少なくとも一つの子仮想マシンに送信されていない場合、第１の部分の第２の副部分を前記少なくとも一つの子仮想マシンに送信するステップをさらに備えることを特徴とする請求項１８に記載の方法。
【請求項２１】
仮想マシン処理の効率を高めるための方法において、
格納されたデータに関連付けられた親仮想マシンを第１のホストシステム上に提供するステップと、
前記親仮想マシンを一時的に中止するステップと、
前記親仮想マシンをマイグレートして、少なくとも一つの新しいロケーションにおいて前記格納されたデータの第１の部分なしに、少なくとも一つの子仮想マシンを生成するステップとを備えたことを特徴とする方法。
【請求項２２】
前記少なくとも一つの新しいロケーションは前記第１のホストコンピュータシステム上にあることを特徴とする請求項２１に記載の方法。
【請求項２３】
前記少なくとも一つの新しいロケーションは第２のホストコンピュータシステム上にあることを特徴とする請求項２１に記載の方法。
【請求項２４】
前記親仮想マシンを一時的に中止するステップおよび親仮想マシンをマイグレートするステップは、約１ミリ秒の時間間隔中に実行されることを特徴とする請求項２１に記載の方法。
【請求項２５】
前記親仮想マシンはネットワークサーバであることを特徴とする請求項２１に記載の方法。
【請求項２６】
前記親仮想マシンを削除するステップをさらに備えることを特徴とする請求項２１に記載の方法。
【請求項２７】
デマンドページングを用いて、前記格納されたデータの前記第１の部分を前記少なくとも一つの子仮想マシンに送信するステップをさらに備えることを特徴とする請求項２１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的に仮想マシンの分野に関し、特に詳細には、フォーキング（ｆｏｒｋｉｎｇ）およびマイグレーション（ｍｉｇｒａｔｉｏｎ）の概念を仮想マシンに適応するための方法に関する。
【背景技術】
【０００２】
コンピュータは、システム命令の特定の組を実行するよう設計されている汎用の中央処理装置（ＣＰＵ）を備えている。類似のアーキテクチャーまたは設計仕様を提供する一群のプロセッサは、同じプロセッサファミリーのメンバーと考えられる。現在のプロセッサファミリーの例は、アリゾナ州フェニックスのモトローラ（株）により製造されたプロセッサ６８０Ｘ０のファミリー、カリフォルニア州サニーベイルのインテル（株）により製造されたプロセッサ８０Ｘ８６のファミリー、および、モトローラ（株）により製造され、カルフォルニア州クパチーノのアップルコンピュータ（株）により製造されたコンピュータで用いられているＰｏｗｅｒＰＣプロセッサファミリーを含む。ある群のプロセッサは、アーキテクチャーおよび設計仕様が類似しているために同一のファミリーに属しているが、プロセッサはクロックスピードおよび他の性能パラメータにしたがってファミリー内でも幅広く相違していることがある。
【０００３】
マイクロプロセッサの各ファミリーは、そのプロセッサファミリーに対して独自の命令を実行する。プロセッサあるいはファミリーのプロセッサが実行する命令の集合セットは、プロセッサ命令セットとして知られている。一例として、インテルの８０Ｘ８６プロセッサファミリーで用いられる命令セットは、ＰｏｗｅｒＰＣのプロセッサファミリーで用いられる命令セットと互換性がない。インテルの８０Ｘ８６命令セットは、複雑命令セットコンピュータ（ＣＩＳＣ）のフォーマットに基づいている。モトローラのＰｏｗｅｒＰＣ命令セットは、縮小命令セットコンピュータ（ＲＩＳＣ）フォーマットに基づいている。ＣＩＳＣプロセッサは多数の命令を用いており、その命令のいくつかは複雑な機能を実行できるが、実行するために多数のクロックサイクルが必要である。ＲＩＳＣプロセッサはより少数の利用可能な命令を用いて、より速いスピードで実行される、より単純なファンクションセットを実行する。
【０００４】
コンピュータシステム間のプロセッサファミリーの独自性は、典型的には、コンピュータシステムのハードウェアアーキテクチャの別の要素間で互換性をなくすことになる。インテルの８０Ｘ８６プロセッサファミリーのプロセッサで製造されたコンピュータシステムは、ＰｏｗｅｒＰＣプロセッサファミリーのプロセッサで製造されたコンピュータシステムのハードウェアアーキテクチャと異なるハードウェアアーキテクチャを有している。プロセッサ命令セットおよびコンピュータシステムのハードウェアアーキテクチャの独自性のために、アプリケーションソフトウェアプログラムは、典型的には、特定のオペレーティングシステムを実行する特定のコンピュータシステム上で実行されるように書き込まれる。
【０００５】
コンピュータ製造者は、製造者の製品ラインに関連付けられたマイクロプロセッサのファミリー上で実行されるアプリケーションがわずかであるよりは、より多いことによってその機能を最大化することを望んでいる。コンピュータシステム上で実行できるオペレーティングシステムおよびアプリケーションプログラムの数を増やすために、ホストと呼ばれる一種類のＣＰＵを有する所定のコンピュータは、ホストコンピュータがゲストと呼ばれる関連のない種類のＣＰＵの命令を受取って実行することを、エミュレートするようにするエミュレータプログラムを実行する技術分野が開発されている。したがって、そのホストコンピュータは、１つまたは２つ以上のホスト命令が所定のゲスト命令に応答して呼び出されるようにするアプリケーションを実行する。いくつかの場合において、ホストコンピュータは、それ自体のハードウェアアーキテクチャのために設計された、エミュレーションプログラム以外のソフトウェア、および、関連のないハードウェアアーキテクチャを備えるコンピュータのために記述されたソフトウェアの双方を実行できる。より具体的な例として、例えば、アップルコンピュータ（株）により製造されたコンピュータシステムは、ＰＣを基本としたコンピュータシステムのために書き込まれたオペレーティングシステムおよびプログラムを実行できる。単一のＣＰＵ上で複数の非互換性のオペレーティングシステムを同時に実行するためのエミュレータプログラムを用いることも可能である。この構成において、各オペレーティングシステムは他のオペレーティングシステムと非互換性であるが、エミュレータプログラムは２つのオペレーティングシステムの１つをホストすることができ、それによって、別の非互換性のオペレーティングシステムを同じコンピュータシステム上で同時に実行できるようにする。
【０００６】
ゲストコンピュータシステムをホストコンピュータシステム上でエミュレートする時、ゲストコンピュータシステムは、仮想マシンであるといえる。その理由は、ゲストコンピュータシステムは、ゲストコンピュータシステムのハードウェアアーキテクチャの動作のソフトウェアによる表現としてだけ存在するからである。エミュレータおよび仮想マシンという用語は、コンピュータシステム全体のハードウェアアーキテクチャを模倣するか、あるいは、エミュレートする能力を示すために互換的に用いられる。一例として、カルフォルニア州、サンマテオ市のＣｏｎｎｅｃｔｉｘ（株）によって作られたＶｉｒｔｕａｌ
ＰＣソフトウェアは、Ｉｎｔｅｌ８０Ｘ８６ペンティアムプロセッサ、および種々のマザーボードコンポーネントおよびカードを含むコンピュータ全体をエミュレートする。これらのコンポーネントの動作は、ホストマシン上で実行される仮想マシンのなかでエミュレートされる。ＰｏｗｅｒＰＣプロセッサを備えるコンピュータシステムのような、ホストコンピュータのオペレーティングシステムソフトウェアおよびハードウェアアーキテクチャ上で実行されるエミュレータプログラムは、ゲストコンピュータシステム全体のオペレーションを模倣している。エミュレータプログラムは、ホストマシンのハードウェアアーキテクチャとエミュレートされた環境内で実行されるソフトウェアによって送信される命令との間での互換を行うものとして作用する。
【０００７】
実際のマシンに対する仮想マシンの一つの利点は、迅速かつ安価に複数例の仮想マシンを生成する機能を有していることである。もし、仮想マシンの実装によって許されるならば、複数の仮想マシンは単一のホストマシン（ホストコンピュータシステム）の環境中に同時に存在することができる。ホストマシンの資源を種々の仮想マシン間で分割することができる。例えば、４つのプロセッサおよび１ギガバイトのランダムアクセスメモリ（ＲＡＭ）を提供する単一のホストマシンを、４つの仮想マシンに平等に分割し、各仮想マシンに１つのプロセッサおよび２５６メガバイトのＲＡＭを与えることができる。他の資源割り当ての分割も可能である。
【０００８】
この柔軟性のある資源割り当ては、仮想マシンをあるホストマシンから他のホストマシンへ移動させる機能と組合わされるときに、さらにより有用となる。これによりシステムの「負荷バランシング」が可能となる。例えば、仮想マシンが、１つのホストマシン上で利用できる以上の処理能力を必要とするときに、余分の能力を備える他のホストマシンに移動させることができる。
【考案の開示】
【発明が解決しようとする課題】
【０００９】
あるコンピュータ環境において、（ハードウェアおよびソフトウェアの双方の）構成がほぼ同一である複数のマシンを有することは有用である。例えば、Ａｍａｚｏｎ．ｃｏｍのような大規模な電子商取引のウェブサイトは、構成がほぼ同一の何十または何百もウェブサーバを有している。この構成配置によって容易に拡張することができる。現在の容量が適切でないとき、追加サーバを迅速にオンラインで設置可能である。
【００１０】
ほぼ同一の構成が有用である他の場合は、構成の変更のテストにおいてである。任務上重大なアプリケーションを取り扱うときには、ＩＳ管理者はソフトウェア構成の変更のテストを、その変更を製造システムに適用する前に、行うことをしばしば望んでいる。例えば、新しい「セキュリティパッチ」がウィンドウズ（登録商標）オペレーティングシステムに対してマイクロソフト（株）によって利用可能となった場合、管理者は、プロダクションサーバ上にそのパッチをインストールする前に、別個のサーバマシン上でこのパッチをテストすることを望むこともある。
【課題を解決するための手段】
【００１１】
本発明は、一つの実施形態において、仮想マシンプロセッシングの効率を増すための方法を提供する。その方法の一つのステップは親仮想マシンを提供することである。他のステップは親仮想マシンを一時的に中止することである。他のステップは、親仮想マシンをフォークして、新しいロケーションで子仮想マシンを生成することである。
【００１２】
本発明は、仮想マシンプロセッシングの効率を増すための他の方法を提供する。この方法の一つのステップは、格納されたデータに関連付けられた親仮想マシンを提供することである。この方法の他のステップは、親仮想マシンを永続的に中止することである。もう一つのステップは、親仮想マシンをフォークして、格納されたデータの少なくとも第１の部分なしに、新しいロケーションで子仮想マシンを生成することである。
【００１３】
さらに、本発明は仮想マシンプロセッシングの効率を高めるためのもう一つの方法を提供する。この方法の一つのステップは、格納されたデータに関連付けられた親仮想マシンを提供することである。この方法の他のステップは、親仮想マシンを永続的に中止することである。もう一つのステップは、親仮想マシンをマイグレートして、格納されたデータの少なくとも第１の部分なしに、新しいロケーションで子仮想マシンを生成することである。
【００１４】
本発明の一つの実施形態の利点は、仮想マシンのフォーキングを可能にすることにある。フォークを行う能力により仮想マシンの前述の複数の例の実用性が増加する。ある状況の下で、仮想マシンの大抵の機能および仮想マシン上で実行するアプリケーションが、大きく影響されないのに十分なほど迅速に、フォーキングは複数の例を生成することができる。
【００１５】
本発明の一実施形態の他の利点は、本発明により仮想マシンの処理の効率が増大することである。
【００１６】
本発明の方法の一つの実施形態は、フォーキング時間が親仮想マシンのメモリのサイズによって影響されないという利点を備えている。親仮想マシンの非メモリ部分が僅か数百キロバイトのデータから構成されているときには、フォーキング時間はあるシステム上で約１ミリ秒である。
【００１７】
デマンドページングがその方法に加えられるならば、全実行時間もまた親のメモリのサイズに依存することができる。しかしながら、デマンドページングは、親および子の仮想マシン上で実行するアプリケーションとコンフリクトを生じない。
【００１８】
前述の利点のいずれも本発明にとって重要である。本発明の特定の実施によっては一部の利点のみを達成するだけかもしれない。例えば、本発明の一つの実施は仮想マシンをフォーキングすることを提供するだけかもしれない。本発明の他の技術的な利点は、以下の図、詳細な説明および特許請求の範囲から当業者であれば明らかなことである。
【発明を実施するための最良の形態】
【００１９】
エミュレートされたコンピュータシステム、すなわち仮想マシンにおいて、エミュレーションプログラムは、ホストコンピュータシステムにおけるエミュレートされた動作環境を提供する。コンピュータシステム１０におけるエミュレートされた動作環境のためのハードウェアおよびソフトウェアアーキテクチャの論理層の図が図１に示されている。エミュレーションプログラム１４は、ホストコンピュータシステムハードウェア、すなわちプロセッサ１１で動作するホストオペレーティングシステム上で動作する。エミュレーションプログラム１４は、ゲストオペレーティングシステム１８を含むゲストコンピュータシステム１６をエミュレートする。ゲストアプリケーションプログラムはゲストオペレーティングシステム１８上で実行することができる。図１のエミュレートされた動作環境においては、エミュレーションプログラム１４の実行のために、ホストオペレーティングシステム１２およびホストコンピュータシステムハードウェア１１と一般的に非互換性のオペレーティングシステム上で動作するようにゲストアプリケーション２０が設計されていても、ゲストアプリケーション２０はコンピュータシステム１０上で動作する。
【００２０】
図２および図３を参照して、「フォーキング」は、ＵＮＩＸ（登録商標）プロセスおよびそのアドレス空間の複製を記述するために、ＵＮＩＸ（登録商標）プログラマーに用いられている用語である。もとのプロセスおよびフォークの双方は、フォーキングポイントから独立したプロセスとして動作することができる。フォーキングの実装は、両アドレス空間中の全メモリページが、「ライト禁止」（ｗｒｉｔｅ　ｐｒｏｔｅｃｔｅｄ）としてマークされた「コピーオンライト（ｃｏｐｙ　ｏｎ　ｗｒｉｔｅ）」と呼ばれる技術を伴う。もとのプロセスあるいはフォークされたプロセスのいずれかが、ページに書き込むとき、各プロセスがそれ自体のコピーを持つようにコピーが行われる。変更されていないページは、引き続き２つのプロセス間で共有されることができる。この技術はメモリ資源を節約するだけではなく、その他の可能な技術よりも速くフォーキングする。
【００２１】
本発明において、単一のプロセスをフォーキングすることの概念は、仮想マシンの概念と組合わされている。本発明によれば、オリジナルの仮想マシンとそのフォーク間で、プライベートなコピーに対する共有された資源の速い変換を行うことができる。しかしながら、資源の分配は、同一のホスト上で両仮想マシンが動作している場合にだけ可能である。
【００２２】
仮想マシンのフォーキングを使用して、既存の仮想マシンを迅速に複製することができる。例えば、ユーザーが新しいパッチをテストしたいならば、仮想マシンをフォークし、そして、非生産フォーク（ｎｏｎ−ｐｒｏｄｕｃｔｉｏｎ　ｆｏｒｋ）にそのパッチをつけることができる。そのパッチがテストされたならば、限定されたリスクでオリジナルコピーにつけることが可能となる。あるいはまた、パッチのテストがいったん完了したならば、生産および非生産の仮想マシンはスワップすることができる。
【００２３】
図２には仮想マシンをフォークするための方法２０の流れ図を示す。ステップ２０２において、親仮想マシンを中止する。ステップ２０４において、コピーすなわち「スナップショット（ｓｎａｐｓｈｏｔ）」を、親仮想マシンのメモリ以外の全ての構成要素で作る。ステップ２０６において、そのスナップショットを新しいロケーション、すなわち、その親のロケーション以外のロケーションに移動させる。そのスナップショットを新しいロケーションに移動することにより、新しい子仮想マシンを生成する。その子は親と同じホストコンピュータシステム上に配置してもよいし、あるいは配置しなくてもよい。ステップ２０８において、親のメモリの部分を、デマンドページングを用いている子に送信する。図３に示されているデマンドページングは、親から子へメモリの部分あるいはページを送信する方法である。デマンドページングにおいて、子が積極的に要求することに基づいて、親のメモリに優先度が付けられる。
【００２４】
図３は仮想マシンをフォークする際に用いられる、ステップ２０８のデマンドページングの流れ図である。ステップ３０２において、子にまだ送信されていない親のメモリの一部分を親仮想マシンが変更しようとしているか否かを判断する。親仮想マシンがメモリの一部分を変更しようとしているならば、ステップ３０４において、親がそのメモリの一部分を変更することを許される前に、そのメモリの一部分を、子の仮想マシンに送信するが、あるいはその一部分の一時的なコピーが作成される。一時的なコピーはデマンドページングの方法の中のまだ決定されていない後のポイントまで、親によってセーブされ、そのポイントにおいて、そのコピーが子に送信される。親がメモリの一部分を変更しようとしていないか、あるいはステップ３０４が完了している場合には、その方法はステップ３０６に進む。
【００２５】
ステップ３０６において、子仮想マシンが親仮想マシンのメモリにアクセス中であるか否かを判断する。子が親のメモリにアクセス中であるならば、ステップ３０８において、子仮想マシンは一時的に中止され、子によって要求される親のメモリの一部分が親から子へ送信される。その子が親のメモリにアクセス中でないならば、ステップ３１０において、子によって積極的に要求されていない親のメモリの部分を親から子へ送信してもよい。ステップ３０８あるいはステップ３１０が完了したならば、その方法はステップ３１２へ進む。
【００２６】
ステップ３１２において、親仮想マシンのメモリの全部が子仮想マシンに送信されたか否かを判断する。メモリの全部が送信されていないのであれば、本方法は上述したステップ３０２に進む。メモリの全部が送信されたならば、デマンドページング方法は終了する。
【００２７】
ここで、図４および図５を参照するに、「マイグレーティング」は、あるホストマシンから他のホストマシンへの仮想マシンの移動を示す用語である。仮想マシンがマイグレートされるとき、オリジナルの仮想マシンは永続的に中止されている。そして、コピーが新しいロケーションで動作する。マイグレーションを実行する一つの手順は、ディスク上のファイルに（全てのＲＡＭを含む）仮想マシンの全ての状態をセーブし、ついでファイルを新しいホストにコピーして、マシンの状態を回復する。
【００２８】
本発明では、マイグレーティングはその実行においてはフォーキングと類似している。フォークされた仮想マシンと同様に、マイグレートされた仮想マシンは、それが生成されたほぼ直後に、すなわち生成後１ないし２秒内に動作を始動する。この特徴はデマンドページングおよび「コピーオンアクセス（ｃｏｐｙ−ｏｎ−ａｃｃｅｓｓ）」の使用により生じている。ここで、コピーオンアクセスは、子が親のメモリにアクセスするうえで子に親のメモリをコピーすることと定義される。コピーオンアクセスは仮想マシンをマイグレーティングするためのデマンドページングの一側面である。
【００２９】
コピーオンアクセスは、既存の技術に対する本発明の利点でもある。既存の技術は親のランダムアクセスメモリ（ＲＡＭ）の全体のコピーをセーブし、および回復する。既存の技術のセーブおよび回復することは、親に割当てられたメモリのサイズに依存して、５秒から６０秒の時間がかかってしまう。
【００３０】
仮想マシンをマイグレートする一つの応用は、負荷バランシングである。他の応用は故障回復（ｆａｉｌ−ｏｖｅｒ）あるいはハードウェアメンテナンスのためのものである。例えば、ホストマシン中のハードウェアがメンテナンス（例えば、メモリの増設）を要求するときには、仮想マシンはバックアップマシンに一時的にマイグレートされ、中断時間を避ける。
【００３１】
図４は仮想マシンをマイグレートするための方法４０の流れ図である。ステップ４０２において、親の仮想マシンを永続的に中止している。ステップ２０４において、コピーあるいは「スナップショット」は、親仮想マシンのメモリ以外の全ての構成要素で作られている。ステップ２０６において、そのスナップショットを新しいロケーション、すなわち、その親のロケーション以外のロケーションに移動させる。そのスナップショットを新しいロケーションに移動することにより、新しい子仮想マシンを生成する。その子は親と同じホストコンピュータシステム上に配置してもよいし、あるいは配置しなくてもよい。ステップ４０４において、親のメモリの部分をデマンドページングを用いている子に送信する。図５に示されているデマンドページングは、親から子へメモリの部分あるいはページを送信する方法である。デマンドページングにおいて、子が積極的に要求することに基づいて、親のメモリに優先度が付けられる。
【００３２】
図５は、仮想マシンをマイグレートするのに用いられるステップ４０４のデマンドページングの流れ図である。ステップ３０６において、子仮想マシンが親仮想マシンのメモリにアクセス中であるか否かを判断する。子が親のメモリにアクセスするならば、ステップ３０８において、子仮想マシンは一時的に中止され、子によって要求される親のメモリの一部分が親から子へ送信される。その子が親のメモリにアクセス中でないならば、ステップ３１０において、子によって積極的に要求されていない親のメモリの部分を親から子へ送信してもよい。ステップ３０８あるいはステップ３１０が完了したならば、その方法はステップ３１２へ進む。
【００３３】
ステップ３１２において、親仮想マシンのメモリの全部が子仮想マシンに送信されたか否かを判断する。メモリの全部が送信されていないのであれば、本方法は上述したステップ５０２に進む。ステップ５０２において、親のメモリを削除する。ステップ５０２の後、デマンドページング方法は終了する。
【００３４】
本発明は、その適用にあたって、特定のコンピュータシステムアーキテクチャー、特にインテル８０Ｘ８６アーキテクチャーのエミュレーションに限定されない。
【００３５】
本発明を詳細に記載してきたが、特許請求の範囲により定義されている本発明の精神および範囲から離れることなく、種々の変更、代用および代替を行うことができる。
【図面の簡単な説明】
【００３６】
【図１】ホストコンピュータシステムにおいて動作するエミュレートされたコンピュータシステムの要素の論理的関係の図である。
【図２】仮想マシンをフォークするための方法の流れ図である。
【図３】仮想マシンをフォークする際に用いられるデマンドページングの流れ図である。
【図４】仮想マシンをマイグレートするための方法の流れ図である。
【図５】仮想マシンをマイグレートする際に用いられるデマンドページングの流れ図である。
【図１】
2004133894.tif 000003
【図２】
2004133894.tif 000004
【図３】
2004133894.tif 000005
【図４】
2004133894.tif 000006
【図５】
2004133894.tif 000007
【外国語明細書】
2004133894.tif 000008
2004133894.tif 000009
2004133894.tif 000010
2004133894.tif 000011
2004133894.tif 000012
2004133894.tif 000013
2004133894.tif 000014
2004133894.tif 000015
2004133894.tif 000016
2004133894.tif 000017
2004133894.tif 000018
2004133894.tif 000019
2004133894.tif 000020
2004133894.tif 000021
2004133894.tif 000022
2004133894.tif 000023
2004133894.tif 000024
2004133894.tif 000025
2004133894.tif 000026
2004133894.tif 000027
2004133894.tif 000028
2004133894.tif 000029