(57)【特許請求の範囲】
【請求項１】
実コンピュータ内の第１のロジカル・パーティション（「ＬＰＡＲ」）から第２のロジカル・パーティションに、第１の仮想計算機および通信キューをマイグレーションするための方法において、マイグレーションの前に、前記第１の仮想計算機が前記第１の仮想計算機に専用の第１の専用メモリ内に前記第１の仮想計算機のオペレーティング・システムおよびアプリケーションを有し、マイグレーションの前に、前記通信キューが前記第１のＬＰＡＲ内の前記第１の仮想計算機および第２の仮想計算機によって共用されアクセス可能な第１の共用メモリに常駐し、前記方法が、
前記第１の仮想計算機および前記第２の仮想計算機が前記第１のＬＰＡＲ内の前記通信キューを更新するのを防止するために、前記第１のＬＰＡＲ内で前記第１の仮想計算機および前記第２の仮想計算機を停止するステップと、
前記第１の仮想計算機および前記第２の仮想計算機が停止されている間に、前記第１のＬＰＡＲが前記第２のＬＰＡＲに前記第１の仮想計算機の前記オペレーティング・システムおよび前記アプリケーション、ならびに前記通信キューを伝達し、前記第２のＬＰＡＲが前記第２のＬＰＡＲ内の第２の専用メモリに前記第１の仮想計算機の前記オペレーティング・システムおよび前記アプリケーションを書き込み、前記第２のＬＰＡＲが前記第２のＬＰＡＲ内の第２の共用メモリに前記通信キューを書き込むステップと、
前記第１の仮想計算機に対応するマイグレーションされた仮想計算機のために前記第２のＬＰＡＲ内の前記第２の専用メモリおよびプロセッサのシェアを割り振り、前記第２の共用メモリ内で前記通信キューへのアクセスを前記マイグレーションされた仮想計算機に許可するステップと、
前記第１の仮想計算機および前記第２の仮想計算機を停止する前記ステップの前に、前記第２の仮想計算機が前記通信キューに作業項目を供給するステップと、
前記第１の仮想計算機および前記第２の仮想計算機が停止されている間に、前記第１のＬＰＡＲが前記第２のＬＰＡＲに前記第２の仮想計算機のオペレーティング・システムおよびアプリケーションを伝達し、前記第２のＬＰＡＲが前記第２のＬＰＡＲ内の第３の専用メモリに前記第２の仮想計算機の前記オペレーティング・システムおよび前記アプリケーションを書き込むステップと、
前記第２の仮想計算機に対応するマイグレーションされた他の仮想計算機のために前記第２のＬＰＡＲ内の前記第３の専用メモリおよびプロセッサのシェアを割り振り、前記第２の共用メモリ内で前記通信キューへのアクセスを前記マイグレーションされた他の仮想計算機に許可するステップと、
を有する、方法。
【請求項２】
実コンピュータ内の第１のロジカル・パーティション（「ＬＰＡＲ」）から第２のＬＰＡＲに、第１の仮想計算機および通信キューをマイグレーションするためのシステムにおいて、マイグレーションの前に、前記第１の仮想計算機が前記第１の仮想計算機に専用の第１の専用メモリ内に前記第１の仮想計算機のオペレーティング・システムおよびアプリケーションを有し、マイグレーションの前に、前記通信キューが前記第１のＬＰＡＲ内の前記第１の仮想計算機および第２の仮想計算機によって共用されアクセス可能な第１の共用メモリに常駐し、前記システムが、
前記第１の仮想計算機および前記第２の仮想計算機が前記第１のＬＰＡＲ内の前記通信キューを更新するのを防止するために、前記第１のＬＰＡＲ内で前記第１の仮想計算機および前記第２の仮想計算機を停止する手段と、
前記第１の仮想計算機および前記第２の仮想計算機が停止されている間に動作可能で、前記第２のＬＰＡＲに前記第１の仮想計算機の前記オペレーティング・システムおよび前記アプリケーション、ならびに前記通信キューを伝達する、前記第１のＬＰＡＲ内の手段と、前記第２のＬＰＡＲ内の第２の専用メモリに前記第１の仮想計算機の前記オペレーティング・システムおよび前記アプリケーションを書き込む、前記第２のＬＰＡＲ内の手段と、前記第２のＬＰＡＲ内の第２の共用メモリに前記通信キューを書き込む、前記第２のＬＰＡＲ内の手段と、
前記第１の仮想計算機に対応するマイグレーションされた仮想計算機のために前記第２のＬＰＡＲ内の前記第２の専用メモリおよびプロセッサのシェアを割り振り、前記第２の共用メモリ内で前記通信キューへのアクセスを前記マイグレーションされた仮想計算機に許可する手段と、
前記第１の仮想計算機および前記第２の仮想計算機を停止する前に、前記通信キューに作業項目を供給する、前記第２の仮想計算機内の手段と、
前記第１の仮想計算機および前記第２の仮想計算機が停止されている間に動作可能で、前記第２のＬＰＡＲに前記第２の仮想計算機のオペレーティング・システムおよびアプリケーションを伝達する、前記第１のＬＰＡＲ内の手段と、前記第２のＬＰＡＲ内の第３の専用メモリに前記第２の仮想計算機の前記オペレーティング・システムおよび前記アプリケーションを書き込む、前記第２のＬＰＡＲ内の手段と、
前記第２の仮想計算機に対応するマイグレーションされた他の仮想計算機のために前記第２のＬＰＡＲ内の前記第３の専用メモリおよびプロセッサのシェアを割り振り、前記第２の共用メモリ内で前記通信キューへのアクセスを前記マイグレーションされた他の仮想計算機に許可する手段と、
を有する、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システムに関し、詳細には、同じ実コンピュータ内のあるロジカル・パーティションから他のロジカル・パーティションへのまたはある実コンピュータから他の実コンピュータへの仮想計算機のマイグレーションに対処するものである。
【背景技術】
【０００２】
仮想計算機オペレーティング・システムは、現在、周知のものであり、ハイパバイザ・プログラムと、ハイパバイザによって形成された個別の仮想計算機とを含む。ＩＢＭのｚ／ＶＭＴＭオペレーティング・システムでは、ハイパバイザ・プログラムは制御プログラム（「ＣＰ」）と呼ばれている。各仮想計算機も「ユーザ部分」または「ゲスト」と呼ばれている。仮想計算機は、プロセッサ（複数も可）、メモリ、ストレージ、および入出力（すなわち、ネットワーク・カード、プリンタ、およびディスプレイ）などのコンピュータ・リソースの仮想共用／パーティショニングである。ゲスト・オペレーティング・システムは、各仮想計算機上で実行される／動作する。各ゲスト・オペレーティング・システム上では１つまたは複数のアプリケーションが実行される。
【０００３】
実コンピュータ・リソースを論理的に分割することによりコンピュータを論理的にパーティショニングすることも知られていた。ユーザは、各ロジカル・パーティション（「ＬＰＡＲ」）、すなわち、各ＬＰＡＲ用のプロセッサ、メモリ、およびストレージの量を定義していた。各ＬＰＡＲには、特定の実コンピュータ・リソースまたは全コンピュータ・リソースのうちのシェア（share）を割り振ることができるであろう。その場合、コンピュータによっては、各ロジカル・パーティション内に複数の仮想計算機を形成するために各ＬＰＡＲに個別のハイパバイザがロードされた。このような各仮想計算機は、そのＬＰＡＲに割り振られたリソースの仮想共用であった。
【０００４】
各アプリケーションおよびゲスト・オペレーティング・システムが仮想計算機内で実行される場合でも、それらはそれ自体の専用実コンピュータ上で実行されている場合と同様に動作する。以下に示すのは、既知の仮想計算機がそのプロセッサまたはプロセッサ時間のシェアを使用して作業項目を実行する方法の一例である。各仮想計算機は、それ自体の同期またはロック機能、作業キュー割当て機能、作業スケジューラ、およびその仮想計算機に割り当てられた作業項目またはタスクの関連キューを有する。この例では、同期またはロック機能、作業キュー割当て機能、作業スケジューラ、および作業キューはすべてその仮想計算機に専用のものである。同期またはロック機能は、どの作業項目が逐次実行されなければならないか、ならびにどのタスクが並列に実行されなければならないかを制御するために作業キューに関するロックを管理する。作業キュー割当て機能は、仮想計算機内のプログラム機能であって、仮想計算機によって生成されたときに仮想計算機の作業キューに作業項目を追加するものである。作業項目は、割当てアルゴリズムに基づく位置でキューに追加される。割当てアルゴリズムは、各作業項目の相対優先レベルおよび作業項目が作成された順序、すなわち、先入れ先出しなどの要因を考慮することができる。キュー上の各作業項目は、そのタイプを示す情報と、したがって、仮想計算機内のどの機能がそれを処理するのに最も適しているかを示す情報とを含む。「作業スケジューラ」は、実行のためにそのキュー上の各作業項目をスケジューリングするプログラム機能である。作業スケジューラは、仮想プロセッサによる実行のために仮想計算機内の適切な機能に作業項目を渡す。
【０００５】
複数の仮想計算機が１つの作業キューを共用して、仮想計算機およびそのそれぞれの実プロセッサのシェア間に作業項目を分散することも知られていた。サーバ仮想計算機は、他の「作業」仮想計算機に関するこの共用作業キューを「ホスティング」するために使用されていた。共用作業キューは、サーバ仮想計算機に専用のメモリに常駐する。作業仮想計算機が新しい作業項目を作成し、この作業仮想計算機用の作業キュー割当て機能がこの新しい作業項目をサーバ仮想計算機に送信することを決定すると、それは通信プロトコル（たとえば、ＴＣＰ／ＩＰ）および仮想入出力デバイス・ドライバを使用して、その作業項目をこのサーバ仮想計算機に送信する。次に、サーバ仮想計算機は、サーバ仮想計算機が決定した順序でこの新しい作業項目を共用作業キュー上に配置する。共用作業キュー上の作業項目を実行するために作業仮想計算機内の仮想ＣＰＵが使用可能になっているとき、この作業計算機内の作業スケジューラは、通信プロトコルおよび仮想入出力デバイス・ドライバを使用して、サーバ仮想計算機に対する要求を行う。応答として、サーバ仮想計算機は、通信プロトコルを使用して、その要求を行った作業仮想計算機に作業項目を送信する。この配置は共用作業キューを提供するが、作業キューに作業項目を送信するとともに作業キューから作業項目を入手するために高オーバヘッドの通信プロトコルを必要とする。
【０００６】
Ｃａｓｅｙ他により２００３年４月２９日に出願され、「Management of Virtual Machines to Utilize Shared Resources」という名称の米国特許出願第１０／４２５４７０号は、アプリケーション（複数も可）がリソース制限付きであるときに、そのオペレーティング・システムおよびアプリケーション（複数も可）を含む、仮想計算機の「クローン作成」を開示している。そのアプリケーション（複数も可）を実行している追加の仮想計算機（そのリソースのシェアを含む）が存在するので、これは、全コンピュータ・リソースのうち、そのアプリケーション（複数も可）に割り振られる部分を増加することになる。この特許出願は、参照によりこの開示内容の一部として本明細書に関連するものである。Ｄｏｎｏｖａｎ他により２００３年４月２９日に出願され、「Management of Locks in a Virtual Machine Environment」という名称の米国特許出願第１０／４２５４６８号は、複数の仮想計算機によって共用される作業キューおよび作業キュー・ロック構造を備えた共用メモリを開示している。複数の仮想計算機は、共用ロック構造および共用作業キューに直接アクセスすることができる。この特許出願は、参照によりこの開示内容の一部として本明細書に組み込まれる。
【０００７】
コンピュータがそのコンピュータに挿入された物理的通信カードを含むことは知られていた。通信カードが他のコンピュータからのメッセージを受信すると、その通信カードはコンピュータ内のＣＰＵに割込みを送信する。応答として、ＣＰＵは、コンピュータ内のプログラム機能を呼び出して、そのメッセージをフェッチして処理することになる。物理的通信カードは取り外して、他のコンピュータに挿入することができるであろう。物理的通信カード内のメモリに収容されているが、まだ元のコンピュータによって読み取られていないメッセージは、他のパーソナル・コンピュータに使用可能なものにはならないであろう。また、元のコンピュータから他のパーソナル・コンピュータへの移動中に物理的通信カードに送信されたメッセージは失われるであろう。
【０００８】
コンピュータが（ディスク）ストレージにデータを書き込み、それからデータを読み取るために物理的ブロック入出力カードを含むことも知られていた。書込みモード中にコンピュータのＣＰＵは、ブロック入出力に１つのデータ・ブロックを渡し、それがストレージに書き込まれることを要求する。応答として、ブロック入出力カードは、そのデータをストレージに書き込み、次に入出力が完了したことを示す割込みをＣＰＵに返送する。その割込みを受信すると、ＣＰＵは、そのデータ・ブロックが正常にストレージに書き込まれたことを把握し、したがって、たとえば、メモリからのデータの消去を続行することができる。読取りモード中にＣＰＵは、指定のデータ・ブロックをストレージから読み取るようブロック入出力カードに要求する。応答として、ブロック入出力カードは、そのデータをストレージから読み取り、それをＣＰＵにとってアクセス可能なバッファに書き込む。次に、ブロック入出力カードは、入出力が完了したことを示す割込みをＣＰＵに返送する。その割込みを受信した後、ＣＰＵは、バッファからデータを読み取ることができる。物理的ブロック入出力カードは取り外して、他のコンピュータに挿入することができるであろう。しかし、元のコンピュータから他のパーソナル・コンピュータへの移動中に物理的ブロック入出力カード上で現在進行中の入出力要求は失われるであろう。
【０００９】
ある実コンピュータから他のコンピュータにならびにある実コンピュータ内のあるＬＰＡＲから他のＬＰＡＲに仮想計算機をマイグレーションすることは知られていた。Ａｄｅｓｓｅ  ＣｏｒｐｏｒａｔｉｏｎのＳｉｎｇｌｅ  Ｓｙｓｔｅｍ  Ｉｍａｇｅは、仮想計算機の状態を保管し、その仮想計算機をマイグレーションすることができるであろうが、進行中の入出力がまったくなく、その仮想計算機が通信装置を備えていない場合に限られていた。Ｂｒｏｏｋｈａｖｅｎ  Ｎａｔｉｏｎａｌ  Ｌａｂｏｒａｔｏｒｙによる「Guest Save/Restore Facility」というタイトルのリサーチ・プロジェクトは、仮想計算機の状態を保管し、将来のある時期にその仮想計算機をレジュームすることができるであろうが、進行中の入出力がまったくなく、その仮想計算機が通信装置を備えていない場合に限られていた。ＭｉｒａＳｏｆｔ，  Ｉｎｃ．の分散装置は、仮想計算機の状態を保管し、その仮想計算機をマイグレーションすることができるであろうが、進行中の入出力がまったくなく、その仮想計算機が通信装置を備えていない場合に限られていた。これら３通りの製品では、仮想計算機間通信はまったく許可されていなかった。「作動時（in flight）」入出力、すなわち、ある仮想計算機から他の仮想計算機に送信されたが、まだ他の仮想計算機によって受信または処理されていない通信およびデータを処理する能力はまったくなかった。
【００１０】
ＶＭＷａｒｅ  ＣｏｒｐｏｒａｔｉｏｎのＶＭＭｏｔｉｏｎプログラムは、そのプログラム・コード、状態情報、レジスタ、メモリなどを含むアプリケーションをある実コンピュータから他の実コンピュータにマイグレーションする。アプリケーションが実行されるコンピュータ・システムは、仮想ネットワーク・インターフェース・カードを有する通信装置を使用する。アプリケーションのマイグレーションの前に、ある程度の期間の間、着信通信は停止され、マイグレーション中に「作動時」通信がまったく発生しないように前の通信は完了していた。また、アプリケーションが実行されるコンピュータ・システムは、ブロック・データの保管のためにディスク・ドライバとディスクを使用する。アプリケーションのマイグレーションの前に、ある程度の期間の間、ディスク入出力操作は停止され、マイグレーション中に原因不明の入出力がまったく発生しないように前のディスク入出力操作は完了していた。
【００１１】
現在、ある実コンピュータから他の実コンピュータにＬｉｎｕｘイメージを移動することを対象とする「パーティション・イメージ」というオープン・ソース・プロジェクトが存在する。これは、Ｌｉｎｕｘイメージの状態をディスクに保管し、次にこのイメージを他のコンピュータにマイグレーションすることができる。しかし、イメージが保管される前に、すべての通信およびディスク入力は完了し、停止しなければならない。また、Ｔｉｖｏｌｉ  Ｓｙｓｔｅｍ  Ａｕｔｏｍａｔｉｏｎプログラムは、あるコンピュータから他のコンピュータにアプリケーションを移動する。アプリケーションが実行されるコンピュータ・システムは、ソース・コンピュータからターゲット・コンピュータへの通信のために物理的カードを使用する。また、コンピュータ・システムは、データ・ブロックの保管のためにディスク・ドライバとディスクを使用する。マイグレーションの前に、ある程度の期間の間、通信装置は停止され、マイグレーション中に作動時通信がまったく発生しないように前の通信は完了していた。同様に、マイグレーションの前に、ある程度の期間の間、ディスク入出力操作は停止され、マイグレーション中に原因不明の入出力がまったく発生しないように前の入出力要求は完了していた。
【特許文献１】米国特許出願第１０／４２５４７０号
【特許文献２】米国特許出願第１０／４２５４６８号
【非特許文献１】「z/VM 4.2.0General Information」というＩＢＭ資料（文書番号：ＧＣ２４−５９９１−０３）
【非特許文献２】「IBM z/VMV4R4.0 CP Programming Services」というマニュアル
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の一目的は、同じ実コンピュータ内のあるロジカル・パーティションから他のロジカル・パーティションにまたはある実コンピュータから他の実コンピュータに、仮想計算機を効率よくマイグレーションすることにある。
【００１３】
本発明の他の目的は、通信を失ったり、相当な量の時間の間、後続の通信を停止せずに、仮想計算機への通信が進行中の間に仮想計算機をマイグレーションすることにある。
【課題を解決するための手段】
【００１４】
本発明は、第１の実コンピュータから第２の実コンピュータにまたは同じ実コンピュータ内の第１のＬＰＡＲから第２のＬＰＡＲに、第１の仮想計算機および通信キューをマイグレーションするためのシステム、コンピュータ・プログラム、および方法にある。マイグレーションの前に、第１の仮想計算機は、第１の仮想計算機に専用の第１の専用メモリ内にオペレーティング・システムおよびアプリケーションを有する。マイグレーションの前に、通信キューは、第１のコンピュータまたは第１のＬＰＡＲ内の第１の仮想計算機および第２の仮想計算機によって共用される第１の共用メモリに常駐する。第１の仮想計算機は、第１のコンピュータまたは第１のＬＰＡＲ内で停止される。第１のコンピュータまたは第１のＬＰＡＲは、第２のコンピュータまたは第２のＬＰＡＲにオペレーティング・システムおよびアプリケーションを伝達し、第２のコンピュータまたは第２のＬＰＡＲは、第２のコンピュータまたは第２のＬＰＡＲ内の第１の仮想計算機に専用の第２の専用メモリにオペレーティング・システムおよびアプリケーションを書き込む。第１のコンピュータまたは第１のＬＰＡＲは、第２のコンピュータまたは第２のＬＰＡＲに通信キューを伝達し、第２のコンピュータまたは第２のＬＰＡＲは、第２のコンピュータまたは第２のＬＰＡＲ内の第２ならびに第３および第４の仮想計算機によって共用される第２の共用メモリに通信キューを書き込む。第１の仮想計算機は、第２のコンピュータまたは第２のＬＰＡＲ内でレジュームされる。
【００１５】
本発明の他の特徴により、第１の実コンピュータから第２の実コンピュータにまたは同じ実コンピュータ内の第１のＬＰＡＲから第２のＬＰＡＲに、第１の仮想計算機および通信キューをマイグレーションするためのシステム、方法、およびプログラムがある。マイグレーションの前に、第１の仮想計算機は、第１の仮想計算機に専用の第１の専用メモリ内にオペレーティング・システムおよびアプリケーションを有する。通信キューは、第１のコンピュータまたは第１のＬＰＡＲ内の第１の仮想計算機および第２の仮想計算機によって共用される第１の共用メモリに常駐する。オペレーティング・システムおよびアプリケーションは、第１の専用メモリから第１および第２のコンピュータまたは第１および第２のＬＰＡＲによって共用される共用ストレージにコピーされる。通信キューは、第１の共用メモリから共用ストレージにコピーされる。第２の実コンピュータまたは第２のＬＰＡＲには、共用ストレージ内のオペレーティング・システム、アプリケーション、および通信キューが通知される。オペレーティング・システムおよびアプリケーションは、共用ストレージから第２のコンピュータまたは第２のＬＰＡＲ内の第１の仮想計算機に専用の第２の専用メモリにコピーされる。第１の仮想計算機は、第２のコンピュータまたは第２のＬＰＡＲ内でレジュームされる。通信キューは、共用ストレージから第２のコンピュータまたは第２のＬＰＡＲ内の第１、第３、および第４の仮想計算機によって共用される第２の共用メモリにコピーされる。
【００１６】
本発明の他の特徴により、第１の実コンピュータから第２の実コンピュータにまたは同じ実コンピュータ内の第１のＬＰＡＲから第２のＬＰＡＲに、第１の仮想計算機をマイグレーションするためのシステム、方法、およびプログラムがある。マイグレーションの前に、第１の仮想計算機は、第１の仮想計算機に専用の第１の専用メモリ内にオペレーティング・システムおよびアプリケーションを有する。第１の仮想計算機の通信キューは、第１および第２のコンピュータまたは第１および第２のＬＰＡＲによって共用される共用メモリに常駐する。オペレーティング・システムおよびアプリケーションは、第１の専用メモリから共用メモリにコピーされる。オペレーティング・システムおよびアプリケーションは、共用メモリから第２のコンピュータまたは第２のＬＰＡＲ内の第１の仮想計算機に専用の第２の専用メモリにコピーされる。次に、第１の仮想計算機は、第２のコンピュータまたは第２のＬＰＡＲ内でレジュームされる。
【発明を実施するための最良の形態】
【００１７】
次に、図面に関して本発明を詳細に説明するが、同様の参照番号は図面全体を通して同様の要素を示す。図１は、本発明の一実施形態により全体を１１０で示したコンピュータ・システムを示している。コンピュータ・システム１１０は、ＣＰＵ２３と、ＲＡＭ２４と、ロジカル・パーティショニング・プログラム２５と、ネットワーク・ポート（図示せず）と、オペレータ・コンソール２７とを含む実／物理的コンピュータ２０を含む。また、コンピュータ・システム１１０は、外部（ディスク）ストレージ２６も含む。一例として、実コンピュータ２０は、ＩＢＭ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）のｚＳｅｒｉｅｓ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）メインフレームにすることができるが、本発明は他のサーバ・コンピュータまたはパーソナル・コンピュータでも実現することができる。図１に図示した実施形態では、プログラム２５は実コンピュータ２０をロジカル・パーティション（「ＬＰＡＲ」）３０および３１に分割するが、プログラム２５は、所望であれば、コンピュータ２０をより多くのロジカル・パーティションに分割することができるであろう。ＬＰＡＲは、コンピュータ２０の実コンピュータ・リソースのロジカル・パーティショニングである。たとえば、コンピュータ２０が８つのプロセッサを含む場合、ＬＰＡＲ３０には４つのプロセッサを割り振ることができ、ＬＰＡＲ３１には他の４つのプロセッサを割り振ることができる。また、プログラム２５は、概して「仮想」メモリとして、全メモリ２４をＬＰＡＲ３０とＬＰＡＲ３１との間で分割する。図示した実施形態では、ＬＰＡＲ３０および３１はいずれも、大きいファイルの保管などの一般的な目的のために、ならびに差し迫った機能停止の場合の緊急メモリ・バックアップのために、ストレージ２６にアクセスするか、それを共用することができる。「仮想」メモリ割振りは、実メモリ内の物理的場所にかかわらず、各ＬＰＡＲに対する仮想メモリ・アドレス範囲の割振りに基づくものである。プログラム２５は、アドレス変換テーブルにより、各ＬＰＡＲによって使用される仮想アドレスを実データが保管される実メモリ・アドレスに変換する。両方のＬＰＡＲ内の仮想計算機は、仮想アドレスによって共用ストレージ２６にアクセスする。
【００１８】
ハイパバイザ・プログラム４０および４１は、それぞれＬＰＡＲ３０および３１上で実行される。ハイパバイザ４０は、ＬＰＡＲ３０を複数の仮想計算機３３、３４、および３５に分割する。換言すれば、ハイパバイザ４０は、ＬＰＡＲ３０のコンピュータ・リソース（プロセッサ（複数も可）２３およびメモリ２４のシェアを含む）を論理的に分割し仮想化して、それぞれの仮想計算機３３〜３５用のプラットフォームを形成する。実プロセッサ（複数も可）２３の仮想シェアは、ＬＰＡＲ３０に割り振られたプロセッサ（複数も可）のタイム・シェアである。実メモリ２４の仮想シェアは、ＲＡＭ２４にマッピングされたある範囲の仮想アドレスである。ハイパバイザ４０は、ＬＰＡＲ３０内の各仮想計算機についてＲＡＭ２４にマッピングされたある範囲の（仮想）専用メモリ（「ＶＰＭ」）を割り振る。また、ハイパバイザ４０は、ＬＰＡＲ３０内のすべての仮想計算機３３〜３５についてＲＡＭ２４にマッピングされた（仮想）共用メモリ５０を定義する。仮想計算機３３〜３５がその（仮想）専用メモリまたは仮想共用メモリ５０をアドレス指定すると、ハイパバイザ４０は仮想メモリ・アドレスを実メモリ２４の実アドレスに変換する。（必要であれば、ハイパバイザ４０は、ＬＰＡＲ３０上の仮想計算機３３〜３５のみによる使用のために共用ストレージ２６の一部を定義し、ＬＰＡＲ３１上の仮想計算機のみによる使用のために共用ストレージ２６の他の一部を定義することもできる。）
【００１９】
ＬＰＡＲ３０内の各仮想計算機ごとに、ゲスト・オペレーティング・システムおよびアプリケーション（複数も可）はその仮想計算機に割り振られた（仮想）プロセッサ（複数も可）上で実行される。ゲスト・オペレーティング・システム４３〜４５はそれぞれ仮想計算機３３〜３５上で実行され、アプリケーション５３〜５５はそれぞれゲスト・オペレーティング・システム４３〜４５上で実行される。しかし、各ゲスト・オペレーティング・システム上で複数のアプリケーションが実行される可能性もある。一例として、ゲスト・オペレーティング・システムは、Ｌｉｎｕｘ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの米国およびその他の国における商標）オペレーティング・システムまたはＩＢＭのＣＭＳ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）オペレーティング・システムにすることができる。ＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ（いずれもＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの米国およびその他の国における商標）オペレーティング・システム、Ｕｎｉｘ（Ｏｐｅｎ  Ｇｒｏｕｐの米国およびその他の国における商標）オペレーティング・システム、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＳｏｌａｒｉｓ（いずれもＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の米国およびその他の国における商標）オペレーティング・システム、またはＨｅｗｌｅｔｔ  ＰａｃｋａｒｄのＨＰ  ＵＸオペレーティング・システムなどの他のゲスト・オペレーティング・システムも実行可能である。一例として、アプリケーション５３〜５５は、ＩＢＭのＤＢ２（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）データベース管理アプリケーション、ＩＢＭのＷｅｂｓｐｈｅｒｅ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）アプリケーション、またはその他のアプリケーションにすることができる。アプリケーション５３〜５５が同じ実コンピュータまたは異なる実コンピュータ上の他の仮想計算機からの通信を生成するかまたはその通信のターゲットになる可能性があることを除いて、アプリケーション５３〜５５の性質は本発明のいかなる部分も形成するものではない。また、アプリケーション５３〜５５は、「ブロック」メモリからデータ・ブロックを読み取るか、または「ブロック」メモリに、場合によってはそのアプリケーション自体の専用ブロック・メモリに、その他の場合には同じＬＰＡＲ内の他の仮想計算機のブロック・メモリに、データ・ブロックを書き込むことを要求することができる。
【００２０】
ＬＰＡＲ３０内の各仮想計算機用のゲスト・オペレーティング・システムおよびアプリケーション（複数も可）は、その仮想計算機に割り振られた専用メモリに保管される。仮想計算機の専用メモリは、ゲスト・オペレーティング・システムおよびアプリケーション（複数も可）によって生成されたデータ、オペレーティング・システムおよびアプリケーション（複数も可）に関するプログラム状況ワード（「ＣＰＵ状況」とも呼ばれる）、ゲスト・オペレーティング・システムおよびアプリケーション（複数も可）による処理中に使用されるデータ・レジスタも収容する。プログラム状況ワードは、プログラム内のどの行が現在実行中であるかまたは次に実行されるかを示す。また、プログラム状況ワードは、どの割込みが許可されるか、どの命令が許可されるか、ならびにどのメモリがアクセス可能であるかも示す。
【００２１】
同様に、ハイパバイザ４１は、最初にＬＰＡＲ３１を仮想計算機３６および３７に分割し、その後、ＬＰＡＲ３０からのそれぞれのマイグレーション後にＬＰＡＲ３１を追加の仮想計算機３３Ｍ、３４Ｍ、および３５Ｍにさらに分割する。換言すれば、ハイパバイザ４１は、ＬＰＡＲ３１のコンピュータ・リソース（プロセッサ（複数も可）２３、メモリ２４、およびストレージ２６のシェアを含む）を論理的に分割し仮想化して、仮想計算機３６、３７、３３Ｍ、３４Ｍ、および３５Ｍのそれぞれを形成する。ハイパバイザ４１は、これらの仮想計算機のそれぞれについてＲＡＭ２４にマッピングされたある範囲の（仮想）専用メモリ（「ＶＰＭ」）を割り振る。また、ハイパバイザ４１は、ＬＰＡＲ３１内のすべての仮想計算機３６、３７、３３Ｍ、３４Ｍ、および３５ＭについてＲＡＭ２４にマッピングされた（仮想）共用メモリ５１も定義する。仮想計算機３６，３７、３３Ｍ、３４Ｍ、または３５Ｍあるいは仮想計算機３６，３７、３３Ｍ、３４Ｍ、または３５Ｍ内のアプリケーションがその（仮想）専用メモリまたは仮想共用メモリ５１をアドレス指定すると、ハイパバイザ４１は仮想メモリ・アドレスを実メモリ２４の実アドレスに変換する。
【００２２】
ＬＰＡＲ３１内の各仮想計算機ごとに、ゲスト・オペレーティング・システムおよびアプリケーション（複数も可）はその仮想計算機に割り振られたプロセッサ（複数も可）上で実行される。ゲスト・オペレーティング・システム４６および４７はそれぞれ仮想計算機３６および３７上で実行され、アプリケーション５６および５７はそれぞれゲスト・オペレーティング・システム４６および４７上で実行される。しかし、各ゲスト・オペレーティング・システム上で複数のアプリケーションが実行される可能性もある。一例として、ゲスト・オペレーティング・システムは、Ｌｉｎｕｘ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの米国およびその他の国における商標）オペレーティング・システムまたはＩＢＭのＣＭＳ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）オペレーティング・システムにすることができる。ＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ（いずれもＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの米国およびその他の国における商標）オペレーティング・システム、Ｕｎｉｘ（Ｏｐｅｎ  Ｇｒｏｕｐの米国およびその他の国における商標）オペレーティング・システム、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＳｏｌａｒｉｓ（いずれもＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の米国およびその他の国における商標）オペレーティング・システム、またはＨｅｗｌｅｔｔ  ＰａｃｋａｒｄのＨＰ  ＵＸオペレーティング・システムなどの他のゲスト・オペレーティング・システムも実行可能である。一例として、アプリケーション５６〜５７は、ＩＢＭのＤＢ２（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）データベース管理アプリケーション、ＩＢＭのＷｅｂｓｐｈｅｒｅ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）アプリケーション、またはその他のアプリケーションにすることができる。アプリケーション５６〜５７が同じ実コンピュータまたは異なる実コンピュータ上の他の仮想計算機からの通信を生成するかまたはその通信のターゲットになる可能性があることを除いて、アプリケーション５６〜５７の性質は本発明のいかなる部分も形成するものではない。また、アプリケーション５６および５７は、「ブロック」メモリからデータ・ブロックを読み取るか、または「ブロック」メモリに、場合によってはそのアプリケーション自体の専用ブロック・メモリに、その他の場合には同じＬＰＡＲ内の他の仮想計算機のブロック・メモリに、データ・ブロックを書き込むことを要求することができる。
【００２３】
ＬＰＡＲ３１内の各仮想計算機用のゲスト・オペレーティング・システムおよびアプリケーション（複数も可）は、その仮想計算機に割り振られた専用メモリに保管される。仮想計算機の専用メモリは、ゲスト・オペレーティング・システムおよびアプリケーション（複数も可）によって生成されたデータ、オペレーティング・システムおよびアプリケーション（複数も可）に関するプログラム状況ワード（「ＣＰＵ状況」とも呼ばれる）、ゲスト・オペレーティング・システムおよびアプリケーション（複数も可）による処理中に使用されるデータ・レジスタも収容する。
【００２４】
一例として、ハイパバイザ・プログラム４０および４１のそれぞれは、ＬＰＡＲまたは実コンピュータから仮想計算機のそれぞれを形成するその現行の機能とともに、既存のＩＢＭ  ｚ／ＶＭ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）バージョン４．２．０または４．３．０という仮想計算機オペレーティング・システムを含むことができる。しかし、ハイパバイザ４０および４１は、後述の通り、仮想計算機と関連の通信キューおよびブロック・メモリをマイグレーションするための本発明による新しいプログラミングも含む。既存のｚ／ＶＭ４．２．０オペレーティング・システムの詳細は、PO Box 29570, IBM Publications, Raleigh, North Carolina 27626-0570のＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐ．から、またはwww.IBM.com/shop/publications/orderのＷＷＷ上で入手可能な「z/VM 4.2.0 General Information」というＩＢＭ資料（文書番号：ＧＣ２４−５９９１−０３）に開示されている。この資料は、参照によりこの開示内容の一部として本明細書に組み込まれる。ｚ／ＶＭオペレーティング・システムでは、ハイパバイザ４０および４１は制御プログラム（「ＣＰ」）と呼ばれ、「仮想計算機」は「ゲスト仮想計算機」とも呼ばれる。
【００２５】
上記で説明した通り、ハイパバイザ４０は、ＬＰＡＲ３０上のすべての仮想計算機３３〜３５によって共用される共用メモリ域５０を定義し管理する。すべての仮想計算機３３〜３５は、適切なアドレスを把握している場合、共用メモリ５０と、その適切なアドレスによって共用メモリに保管されたデータ構造に直接アクセスすることができる。しかし、ＬＰＡＲ３１内の仮想計算機（すなわち、マイグレーションしたときの仮想計算機３６および３７ならびに３３Ｍ、３４Ｍ、および３５Ｍ）は、共用メモリ５０にアクセスすることができない。仮想計算機３３〜３５のそれぞれについて、共用メモリ５０内にそれぞれの通信キューとそれぞれのブロック・メモリが存在する。簡単にするために、図１は、仮想計算機３５用の１つの通信キュー５２と１つのブロック・メモリ５４のみを示しているが、他の仮想計算機３３および３４のそれぞれは同様にそれぞれの通信キューとブロック・メモリを有することになる。
【００２６】
図示した実施形態では、図７に関して以下に説明する通り、通信キュー５２は、仮想計算機３３および３４がそれに対して通信の形で作業項目を供給することができ、仮想計算機３５がそれから処理すべき作業項目を獲得することができる作業キューである。したがって、仮想計算機３３および３４は、仮想計算機３５に通信することができる。同様に、仮想計算機３３用の通信キューは、作業項目を供給することにより、仮想計算機３４および３５が仮想計算機３３に通信することを許可し、仮想計算機３４用の通信キューは、作業項目を供給することにより、仮想計算機３３および３５が仮想計算機３４に通信することを許可する。
【００２７】
プログラムおよびデータの保管のために仮想計算機３３〜３５が共用メモリ５０、すなわち、ＲＡＭを使用する図示した実施形態では、ブロック・メモリ５４はファイルおよびディレクトリを収容する、共用メモリ５０内のメモリ領域である。各ディレクトリは、ブロック・メモリ５４の内容をリストする。ブロック・メモリ５４が共用される本発明の一実施形態では、仮想計算機３３〜３５のそれぞれは、ブロック・メモリ５４にデータ・ブロックを書き込み、そこからデータ・ブロックを読み取ることができる。ブロック・メモリが専用である本発明の他の実施形態では、ＬＰＡＲ３０内の各ブロック・メモリは仮想計算機３３〜３５のそれぞれに専用であり、その仮想計算機のみがそのブロック・メモリにデータ・ブロックを書き込み、そこからデータ・ブロックを読み取ることができるようになっている。
【００２８】
同様に、ハイパバイザ４１は、ＬＰＡＲ３１上のすべての仮想計算機、すなわち、仮想計算機３６および３７ならびにマイグレーション後の仮想計算機３３Ｍ、３４Ｍ、および３５Ｍによって共用される共用メモリ域５１を定義し管理する。これらのすべての仮想計算機３６および３７ならびにマイグレーション後の仮想計算機３３Ｍ、３４Ｍ、および３５Ｍは、適切なアドレスを把握している場合、共用メモリ５１と、その適切なアドレスによって共用メモリに保管されたデータ構造に直接アクセスすることができる。しかし、ＬＰＡＲ３０内の仮想計算機（すなわち、仮想計算機３３〜３５）は、共用メモリ５１にアクセスすることができない。仮想計算機３６および３７ならびにマイグレーション後の仮想計算機３３Ｍ、３４Ｍ、および３５Ｍのそれぞれについて、共用メモリ５１内にそれぞれの通信キューとそれぞれのブロック・メモリが存在する。簡単にするために、図１は、マイグレーション済み仮想計算機３５Ｍ用のマイグレーション済み通信キュー５２−１とマイグレーション済みブロック・メモリ５４−１のみを示しているが、ＬＰＡＲ３１上の他の仮想計算機のそれぞれは同様にそれぞれの通信キューとブロック・メモリを有することになる。
【００２９】
図示した実施形態では、図７に関して以下に説明する通り、通信キュー５２−１は、通信キュー５２のマイグレーション済みコピーである。マイグレーション後、通信キュー５２−１は、仮想計算機３３Ｍおよび３４Ｍがそれに対して通信の形で作業項目を供給することができ、仮想計算機３５Ｍがそれから処理すべき作業項目を入手することができる作業キューである。したがって、仮想計算機３３Ｍおよび３４Ｍは、仮想計算機３５Ｍに通信することができる。同様に、仮想計算機３６用の通信キューは、仮想計算機３７が仮想計算機３６に通信することを許可し、仮想計算機３７用の通信キューは、仮想計算機３６が仮想計算機３７に通信することを許可する。また、仮想計算機３６および３７は、ハイパバイザ４１により、マイグレーション済み仮想計算機３５Ｍとその通信キューの位置を発見し、その後、マイグレーション済み仮想計算機３５Ｍの通信キューに作業項目を供給することもできる。逆に、マイグレーション済み仮想計算機３５Ｍは、ハイパバイザ４１により、仮想計算機３６および３７とその通信キューの位置を発見し、その後、仮想計算機３６および３７の通信キューに作業項目を供給することができる。同様に、マイグレーション済み仮想計算機３３Ｍおよび３４Ｍは、ハイパバイザ４１により、仮想計算機３６および３７とその通信キューの位置を発見し、その後、仮想計算機３６および３７の通信キューに作業項目を供給することができる。
【００３０】
データの保管のために仮想計算機３６、３７、３３Ｍ、３４Ｍ、および３５Ｍが共用メモリ５１、すなわち、ＲＡＭを使用する図示した実施形態では、ブロック・メモリ５４−１はファイルおよびディレクトリを収容する、共用メモリ５１内のメモリ領域である。ブロック・メモリ５４−１は、ブロック・メモリ５４のマイグレーション済みコピーである。このディレクトリは、ブロック・メモリ５４−１の内容をリストする。ブロック・メモリ５４−１が共用される本発明の一実施形態では、仮想計算機３６、３７、３３Ｍ、３４Ｍ、および３５Ｍのそれぞれは、ブロック・メモリ５４−１にデータ・ブロックを書き込み、そこからデータ・ブロックを読み取ることができる。ブロック・メモリ５４−１が専用である本発明の他の実施形態では、ＬＰＡＲ３１内の各ブロック・メモリは仮想計算機３６、３７、３３Ｍ、３４Ｍ、および３５Ｍのそれぞれに専用であり、その仮想計算機のみがそのブロック・メモリにデータ・ブロックを書き込み、そこからデータ・ブロックを読み取ることができるようになっている。
【００３１】
図１の実施形態では、仮想計算機３３〜３５のすべての通信キューは共用メモリ５０内にあり、ＬＰＡＲ３０内のすべての仮想計算機３３〜３５では直接アクセス可能であるが、ＬＰＡＲ３１内の仮想計算機では直接アクセス可能ではない。したがって、元々ＬＰＡＲ３０に常駐するすべての仮想計算機による、元々ＬＰＡＲ３０に常駐する他の仮想計算機の通信キューへのアクセスを維持するためには、そのうちの１つまたは全部をマイグレーションする必要がある場合、すべての仮想計算機３３〜３５がＬＰＡＲ３０からＬＰＡＲ３１に同時にマイグレーションされる。これは、「作動時」通信、すなわち、現在、ＬＰＡＲ３０内の作業キュー上にある通信項目がターゲット仮想計算機によって処理され、失われないことを保証する。また、後述の通り、通信プロセスの遅延が最小になるように、マイグレーション・プロセスは迅速である。（同様に、仮想計算機３６および３７の通信キューは共用メモリ５１に常駐し、ＬＰＡＲ３１内の他の仮想計算機３７および３６では直接アクセス可能であるが、ＬＰＡＲ３０内の仮想計算機では直接アクセス可能ではない。したがって、元々ＬＰＡＲ３１に常駐するすべての仮想計算機による、元々ＬＰＡＲ３１に常駐する他の仮想計算機の通信キューへのアクセスを維持するためには、そのうちの一方または両方をマイグレーションする必要がある場合、両方の仮想計算機３６および３７があいまってＬＰＡＲ３０にマイグレーションされるであろう。）
【００３２】
仮想計算機３３〜３５のマイグレーションは、種々の方法で開始することができる。たとえば、ハイパバイザ４０がクラッシュしそうであることを把握している場合、ハイパバイザ４０はその仮想計算機３３〜３５のそれぞれの専用メモリ内容をストレージ２６にコピーすることができる。次に、ハイパバイザ４０は、後述の通り、ＬＰＡＲ３１およびハイパバイザ４１への仮想計算機３３〜３５のマイグレーションを開始することができ、その結果、仮想計算機３３〜３５はハイパバイザ４０のクラッシュ後にアクティブのままになる。もう１つの例として、ユーザがハイパバイザ４０を更新または保守したいと希望する可能性があり、このような場合、ユーザは仮想計算機３３〜３５のゲスト・オペレーティング・システム４３〜４５に通知する。応答として、ゲスト・オペレーティング・システム４３〜４５は、後述の通り、ハイパバイザ４０がＬＰＡＲ３１およびハイパバイザ４１への仮想計算機３３〜３５のマイグレーションを開始することを要求することになり、その結果、仮想計算機３３〜３５はハイパバイザ４０の更新または保守中にアクティブのままになる。仮想計算機３３〜３５は、ハイパバイザ４０の更新または保守後にＬＰＡＲ３０およびハイパバイザ４０にマイグレーションして戻すことができる。もう１つの例として、システム管理者は、ＬＰＡＲ３０がリソース制限付きであり、ＬＰＡＲ３１が過剰リソースを有することを通知することができ、その結果、システム管理者は、ＬＰＡＲ３１にマイグレーションするよう、ＬＰＡＲ３０内の仮想計算機３３〜３５内のゲスト・オペレーティング・システム４３〜４５に通知することができる。応答として、仮想計算機３３〜３５のゲスト・オペレーティング・システム４３〜４５は、ロード・バランシングのために、後述の通り、ハイパバイザ４０がＬＰＡＲ３１およびハイパバイザ４１への仮想計算機３３〜３５のマイグレーションを開始することを要求する。（図示していないが、この最後の例では、ＬＰＡＲ３０上で実行されているその他のアプリケーションまたは仮想計算機３３〜３５の通信キューまたはブロック・メモリを共用しないＬＰＡＲ３０上のその他の仮想計算機が存在する可能性があると思われ、これらのその他のアプリケーションおよびその他の仮想計算機は仮想計算機３３〜３５とマイグレーションする必要がない。）
【００３３】
以下に示すのは、図１および図９に関して、システム１１０内のＬＰＡＲ３０からＬＰＡＲ３１への仮想計算機３５のマイグレーションの説明である。（仮想計算機３３〜３５は互いの通信キューにアクセスするので）この説明は、仮想計算機３５（ならびに通信キュー５２およびブロック・メモリ５４）と同時にマイグレーションされる他の仮想計算機３３および３４（ならびにその通信キューおよびブロック・メモリ）にも適用される。仮想計算機３５のマイグレーションは、ＬＰＡＲ３０からＬＰＡＲ３１への仮想計算機３５の専用メモリ（「ＶＰＭ」）の内容のマイグレーションならびに仮想計算機３５の通信キュー５２およびブロック・メモリ５４のマイグレーションを含む。
【００３４】
ＬＰＡＲ３０内の仮想計算機３５の（仮想）専用メモリは、ゲスト・オペレーティング・システム４５、アプリケーション（複数も可）５５、アプリケーション（複数も可）によって生成されたデータ、オペレーティング・システムおよびアプリケーション（複数も可）に関するプログラム状況ワード（「ＣＰＵ状況」とも呼ばれる）、ゲスト・オペレーティング・システムおよびアプリケーション（複数も可）による処理中に使用されるデータ・レジスタを保管する。（仮想計算機３５は、ＬＰＡＲ３０からのコンピュータ・リソースのうち、それに割り振られたシェアも有するが、本発明のこの実施形態では、ＬＰＡＲ３０からのコンピュータ・リソースのシェアは仮想計算機３５とともにＬＰＡＲ３０からＬＰＡＲ３１にマイグレーションされず、その代わりに、マイグレーション済み仮想計算機３５ＭがＬＰＡＲ３１からコンピュータ・リソースのそのシェアを受け取ることになる。）
【００３５】
上記で説明した通り、仮想計算機３５の通信キュー５２は元々共用メモリ５０に常駐し、この通信キューにアクセスできるＬＰＡＲ３０内のすべての仮想計算機は同時にマイグレーションされる。したがって、通信キュー５２のマイグレーション（および仮想計算機３３および３４用の通信キューのマイグレーション）の直前に、ハイパバイザ４０は、互いの通信キューにアクセスするＬＰＡＲ３０上のすべての仮想計算機を停止し、それらがそのマイグレーション中にこれらのキューのいずれかに通信項目を追加するかまたはこれらのキューのいずれかから通信項目を除去することを試みないようにする（ステップ９０２）。図示した例では、仮想計算機３３〜３５は互いの通信キューにアクセスし、したがって、ステップ９０２でハイパバイザ４０はすべての仮想計算機３３〜３５を停止する。以下に説明する通り、移動すべき物理的カードがまったくなく、その結果として、マイグレーションに必要な時間が短いので、その停止の期間は短く、たとえば、５ミリ秒である。
【００３６】
追加の仮想計算機も同時にマイグレーションすることが必要になる可能性もある。本発明の一実施形態では、各ブロック・メモリはそのそれぞれの仮想計算機に専用のものであり、すなわち、同じＬＰＡＲ内であっても、他の仮想計算機はいずれも、他の仮想計算機のブロック・メモリに書き込んだり、そこから読み取ったりすることができない。この実施形態では、そのブロック・メモリのために同じＬＰＡＲ上の複数の仮想計算機をグループとしてマイグレーションする必要はまったくない。しかし、依然として互いの通信キューへのそれぞれのアクセスのために同じＬＰＡＲ上の複数の仮想計算機をグループとしてマイグレーションする必要がある。しかし、本発明の他の実施形態では、同じＬＰＡＲ内の各仮想計算機は、同じＬＰＡＲ内の他の各仮想計算機のブロック・メモリにアクセスすることができる。この他の実施形態では、互いのブロック・メモリにアクセスできる同じＬＰＡＲ上のすべての仮想計算機は同時にマイグレーションする必要がある。仮想計算機のこのグループは一般に、互いの通信キューにアクセスできる仮想計算機のグループと一致することになり、互いの通信キューへのアクセスのためにとにかく同時にマイグレーションする必要がある。
【００３７】
ステップ９０２でＬＰＡＲ３０内のすべての必須仮想計算機が停止された後、ハイパバイザ４０は、ＬＰＡＲ３０内の仮想計算機３５の専用メモリ（「ＶＰＭ」）の内容をＬＰＡＲ３１の作業メモリ８１に伝達する（ステップ９０３）。ステップ９０３でハイパバイザ４０は、ＬＰＡＲ３０内の通信キュー５２およびブロック・メモリ５４の仮想アドレスも、仮想計算機３５の専用メモリ内容に併せてＬＰＡＲ３１の作業メモリ８１に伝達する。これらは、共用メモリ５０から通信キュー５２およびブロック・メモリ５４をアドレス指定するために仮想計算機３５によって使用される仮想アドレスである。以下に詳述する通り、マイグレーション済み仮想計算機３５Ｍは、共用メモリ５１から通信キュー５２−１およびブロック・メモリ５４−１をアドレス指定するためにこれらの同じ仮想アドレスを使用することになり、ハイパバイザ４１はこれらの仮想アドレスを共用メモリ５１にマッピングすることになる。次に、ハイパバイザ４０は、ＬＰＡＲ３０内の共用メモリ５０から仮想計算機３５の通信キュー５２をＬＰＡＲ３１の作業メモリ８１に伝達する（ステップ９０４）。次に、ハイパバイザ４０は、ＬＰＡＲ３０内の共用メモリ５０から仮想計算機３５のブロック・メモリ５４をＬＰＡＲ３１の作業メモリ８１に伝達する（ステップ９０８）。マイグレーション前の予測された機能停止のために、上記のデータ構造（すなわち、ＶＰＭの内容、通信キューの仮想アドレス、ブロック・メモリの仮想アドレス、通信キューまたはブロック・メモリ）のいずれかがストレージ２６にコピーされ、ＬＰＡＲ３０が再始動された後であって仮想計算機３５がＬＰＡＲ３０内のメモリに再作成される前にマイグレーションが行われる場合、ＬＰＡＲ３０は、マイグレーションのためにＬＰＡＲ３１に伝達するためにこれらのデータ構造をストレージ２６からフェッチすることができる。しかし、一般に、ハイパバイザ４０は、仮想計算機３５の専用メモリからＶＰＭの内容、通信キューの仮想アドレス、およびブロック・メモリの仮想アドレスをフェッチし、共用メモリ５０から通信キューおよびブロック・メモリをフェッチする。ステップ９０３および９０４のＬＰＡＲ３０からＬＰＡＲ３１への伝達は、知られているＩＢＭのｚＳｅｒｉｅｓ ＩＵＣＶ、ＳＮＡ、またはＴＣＰ／ＩＰ通信機能などの任意の使用可能な通信機能を使用することができる。「ＩＵＣＶ」は、ユーザ間通信機能（Inter-User Communications Vehicle）を表し、仮想計算機で実行されるプログラムがハイパバイザを介して他の仮想計算機内の他のプログラムと通信できるようにする２地点間通信機能である。ＩＵＣＶ通信は、「パス」と呼ばれる事前定義リンケージによりソース仮想計算機とターゲット仮想計算機との間で行われる。「パス」はハイパバイザによって定義される構成体である。たとえば、一方の仮想計算機がＩＵＣＶを介して他の仮想計算機と通信したいと希望する場合、一方の仮想計算機は、ハイパバイザがこの通信用のパスＩＤを指定することを要求する。ハイパバイザは、一方の仮想計算機が使用することになるパスＩＤをもう一方の仮想計算機にも通知する。一方の仮想計算機がこの通信を行いたいと希望する場合、一方の仮想計算機は、��イパバイザに通信情報を提供し、パスＩＤも指定する。次に、ハイパバイザは、この情報を受信し、それをバッファに保管し、指定のパスＩＤで通信が待機中であることをＩＵＣＶ割込みを介してもう一方の仮想計算機に通知する。次に、もう一方の仮想計算機は、指定のパスＩＤでハイパバイザから通信情報を要求することができる。通信中の各仮想計算機は、複数のパスを有することができ、同じパス上で複数のメッセージを同時に送受信することができる。このＩＵＣＶ通信機能については、「IBM z/VM V4R4.0 CP Programming Services」というマニュアルにさらに記載されている。このマニュアルは、PO Box 29570,Raleigh, North Carolina 27626-0570のＩｎｔｅｒｎａｔｉｏｎａｌ Ｂｕｓｉｎｅｓｓ Ｍａｃｈｉｎｅｓ Ｃｏｒｐｏｒａｔｉｏｎから入手可能である。
【００３８】
次に、仮想計算機３５は、ＬＰＡＲ３０から仮想計算機３５を「削除」するよう、すなわち、仮想計算機３５に対するリソース割振りをＬＰＡＲ３０から削除するよう、ハイパバイザ４０に要求する。応答として、ハイパバイザ４０は仮想計算機３５のリソース割振りを削除する（ステップ９１２）。それにもかかわらず、ハイパバイザ４０は、後でユーザがＬＰＡＲ３０内の仮想計算機３５を再起動したいと希望する場合に備えて、ＬＰＡＲ３０内の仮想計算機３５の記述を保存することになる。
【００３９】
次に、ハイパバイザ４１は、マイグレーションすべき仮想計算機のためにＬＰＡＲ３１からのコンピュータ・リソース（仮想プロセッサ（複数も可）、仮想専用メモリ、仮想共用メモリ、仮想専用ストレージ、および仮想共用ストレージ）を割り振る（ステップ９２８）。ハイパバイザ４１は、上記のデータ構造の伝達に基づいて、仮想計算機がＬＰＡＲ３１でレジュームされるのを待っている（そして仮想リソースを必要とする）ことを把握する。次に、ハイパバイザ４１は、作業メモリ８１からの仮想計算機の専用メモリ内容（通信キュー５２およびブロック・メモリ５４に関する仮想アドレスを含む）をＬＰＡＲ３１内のマイグレーション済み仮想計算機３５Ｍの最近割り振られた（仮想）専用メモリにコピーする。これはＬＰＡＲ３１内にマイグレーション済み仮想計算機３５Ｍを形成するものであるが、仮想計算機３５Ｍはまだレジューム／起動されていない。マイグレーション済み仮想計算機３５Ｍは元の仮想計算機３５と同一であるが、ＬＰＡＲ３１内の仮想計算機の総数およびＬＰＡＲ３１に割り振られたリソースの総量に応じて、リソース割振りについて何らかの変更が行われている可能性がある。次に、ハイパバイザ４１あるいは仮想計算機３６または３７のゲスト・オペレーティング・システム（ＬＰＡＲ３０からマイグレーションされた仮想計算機のレジュームを担当するもの）は、仮想計算機３５Ｍを「レジューム」するためのコマンドを発行する（ステップ９３４）。応答として、仮想計算機３５Ｍ内のゲスト・オペレーティング・システム４５Ｍおよびアプリケーション（複数も可）は、マイグレーション済みプログラム状況（ポインタ）によって示されるポイントで実行をレジュームすることになる。
【００４０】
次に、ＬＰＡＲ３０からの仮想計算機のマイグレーションを担当するハイパバイザ４１あるいは仮想計算機３６または３７のゲスト・オペレーティング・システムは、仮想計算機３５の通信キューをＬＰＡＲ３１の作業メモリ８１から共用メモリ５１（そこで、その通信キューは例示のために図１では５２−１として名称変更されている）にコピーする（ステップ９４０）。次に、ＬＰＡＲ３０からＬＰＡＲ３１へのブロック・メモリのマイグレーションを担当するハイパバイザ４１あるいは仮想計算機３６または３７のゲスト・オペレーティング・システムは、ブロック・メモリ５４をＬＰＡＲ３１の作業メモリ８１から共用メモリ５１（そこで、そのブロック・メモリは例示のために５４−１として名称変更されている）にコピーする（ステップ９４４）。
【００４１】
次に、マイグレーション済み仮想計算機３５Ｍ内のゲスト・オペレーティング・システム４５Ｍは、ハイパバイザ４１がＬＰＡＲ３１内の仮想計算機３５Ｍに通信キュー５２−１を「付加」することを要求する（ステップ９５０）。この付加により、仮想計算機３５Ｍ内のゲスト・オペレーティング・システム４５Ｍは、その仮想計算機３５Ｍがどのアドレスを使用してその通信キュー５２−１を参照することになるかをハイパバイザ４１に通知する。（これらは、ＬＰＡＲ３０に常駐していたときに仮想計算機３５によって使用されたアドレスであり、そのアドレスは仮想計算機３５の専用メモリ内容とともに仮想計算機３５Ｍの仮想専用メモリにコピーされている。）応答として、ハイパバイザ４１は、これらのアドレスを、通信キュー５２−１が現在常駐する共用メモリ５１内の位置に相関させる。（同様に、他のマイグレーション済み仮想計算機３３Ｍおよび３４Ｍは、ハイパバイザ４１が共用メモリ５１にそれぞれの通信キューを付加することを要求することになる。）すべての仮想計算機３３〜３５が（上述のように）同時にマイグレーションされるので、レジュームされると、それらは、マイグレーションの前にＬＰＡＲ３０で使用したものと同じ仮想アドレスを使用して、互いの通信キューにアクセスすることになる。ハイパバイザ４１は、これらのアドレスを（共用メモリ５０の代わりに）共用メモリ５１内の位置に付加することになる。
【００４２】
次に、マイグレーション済み仮想計算機３５Ｍ内のゲスト・オペレーティング・システムは、ハイパバイザ４１がＬＰＡＲ３１内の仮想計算機３５Ｍにブロック・メモリ５４−１を「付加（attach）」することを要求する（ステップ９５４）。この付加により、仮想計算機３５Ｍ内のゲスト・オペレーティング・システムは、仮想計算機３５Ｍがブロック・メモリ５４−１にどのアドレスを使用することになるかをハイパバイザ４１に通知する。（これらは、ＬＰＡＲ３０に常駐していたときに仮想計算機３５によって使用されたアドレスであり、そのアドレスは仮想計算機３５の専用メモリ内容とともに仮想計算機３５Ｍの専用メモリにコピーされている。）応答として、ハイパバイザ４１は、このブロック・メモリをマイグレーション済み仮想計算機３５Ｍの仮想共用メモリに割り振ることにより、ブロック・メモリ５４−１をマイグレーション済み仮想計算機３５Ｍにとって使用可能なものにする。他の仮想計算機３３〜３４もマイグレーションされ、それらがＬＰＡＲ３０内の仮想計算機３５のブロック・メモリにアクセスできた場合、それらは、ＬＰＡＲ３０でブロック・メモリ５４にアクセスするために使用したものと同じ仮想アドレスを使用して、ＬＰＡＲ３１で仮想計算機３５Ｍのブロック・メモリにアクセスすることになる。ハイパバイザ４１は、これらの仮想アドレスをＬＰＡＲ３１内のブロック・メモリ５４−１に変換することになる。
【００４３】
次に、マイグレーション済み仮想計算機３５Ｍは、マイグレーションのためにＬＰＡＲ３０で仮想計算機３５が停止されたときに進行中だった１つまたは複数の作業項目がある場合に、その作業項目の実行を継続する。このような作業項目がある場合、その作業項目は、プログラム状況ワードによって示される通り、マイグレーション中に停止されたポイントから継続される。通信キュー５２−１からの他の作業項目を実行するために仮想計算機３５Ｍが使用可能である場合（判断９９０のＹＥＳ分岐）、仮想計算機３５Ｍは、通信キュー５２−１から次の作業項目を獲得し、後述の通り、それを処理する（ステップ９９４）。通信キュー５２−１（または仮想計算機３５Ｍの任意の他のマイグレーション済み作業キュー）上にそれ以上の項目がまったくない場合、仮想計算機は、実行すべき作業があることを示す割込みを待つだけである。
【００４４】
上記の通り、仮想計算機３６および３７は、その後、３５Ｍによって開始された任意の使用可能な通信プロトコル（たとえば、ＩＵＣＶ）により、仮想計算機３５Ｍ（ならびに仮想計算機３３Ｍおよび３４Ｍ）を知ることができる。次に、仮想計算機３６および３７が共用メモリ５１内の通信キュー５２−１により仮想計算機３５Ｍと通信したいと希望する場合、仮想計算機３６および３７は、ハイパバイザ４１に照会して、仮想計算機３５Ｍ用の通信キュー５２−１のアドレスを知ることができる。同様に、仮想計算機３５Ｍ（ならびに仮想計算機３３Ｍおよび３４Ｍ）が仮想計算機３６および３７を知り、それと通信したいと希望する場合、仮想計算機３５Ｍ（ならびに仮想計算機３３Ｍおよび３４Ｍ）は、ハイパバイザ４１に照会して、仮想計算機３６および３７用の共用メモリ５１内のそれぞれの通信キューのアドレスを知ることができる。また、仮想計算機３６および３７が共用メモリ５１内のブロック・メモリ５４−１にアクセスして（許可されている場合）、データの書込みまたは読取りを行いたいと希望する場合、仮想計算機３６および３７は、ハイパバイザ４１に照会して、仮想計算機３５Ｍ用のブロック・メモリ５４−１のアドレスを知ることができる。同様に、仮想計算機３５Ｍが共用メモリ５１内の仮想計算機３６および３７のブロック・メモリを知り、それにアクセスしたいと希望する場合（許可されている場合）、仮想計算機３５Ｍは、ハイパバイザ４１に照会して、仮想計算機３６および３７用の共用メモリ５１内のそれぞれのブロック・メモリのアドレスを知ることができる。
【００４５】
図２は、本発明の他の実施形態により２つの個別の物理的コンピュータ１２０および１２１を有するコンピュータ・システム２１０を示している。コンピュータ１２０は、仮想計算機３３〜３５を定義するハイパバイザ・プログラム４０を含む。システム１１０とは異なり、コンピュータ１２０は、複数のＬＰＡＲに分割されないかまたは単一ＬＰＡＲである。コンピュータ１２１は、最初に仮想計算機３６および３７を定義し、後でマイグレーション済み仮想計算機３３Ｍ、３４Ｍ、および３５Ｍを追加するハイパバイザ・プログラム４１を含む。システム１１０とは異なり、コンピュータ１２１は、複数のＬＰＡＲに分割されないかまたは単一ＬＰＡＲである。コンピュータ１２０は、仮想計算機３３〜３５用の共用メモリ５０を含む。コンピュータ１２１は、仮想計算機３６および３７用の共用メモリ５１を含み、後でマイグレーション済み仮想計算機３３Ｍ、３４Ｍ、および３５Ｍも含む。コンピュータ１２０および１２１はどちらも、それぞれのメモリの一般使用のためにならびに緊急バックアップのために、ストレージ２６を共用する。それぞれのコンピュータ１２０および１２１内の各仮想計算機は、それぞれの共用メモリ内にそれぞれの通信キューおよびブロック・メモリを含む。システム２１０内の仮想計算機（複数も可）のマイグレーションは、システム１１０内の仮想計算機のマイグレーションと同じであり、ここで繰り返す必要はない。
【００４６】
図３は、本発明の他の実施形態による他のコンピュータ・システム３１０を示している。システム１１０内のように、システム３１０は、単一の物理的コンピュータ２０と、ＬＰＡＲ３０および３１と、それぞれのハイパバイザ・プログラム４０および４１とを含む。ハイパバイザ４０は仮想計算機３３〜３５を定義する。ハイパバイザ４１は、仮想計算機３６、３７を定義し、後で唯一のマイグレーション済み仮想計算機３５Ｍも定義する。システム３１０は、ＬＰＡＲ３０用の共用メモリ５０および共用ストレージ６０と、ＬＰＡＲ３１用の共用メモリ５１および共用ストレージ６１とを含む。しかし、システム１１０とは異なり、システム３１０では、共用ストレージ６０および６１は、仮想計算機３５をＬＰＡＲ３０からＬＰＡＲ３１にマイグレーションするプロセスで使用されない。その代わりに、システム３１０は（システム１１０とは異なり）、両方のＬＰＡＲ３０および３１とハイパバイザ４０および４１によって共用されるメモリ９０（すなわち、ＲＡＭ２４の仮想記憶域）を含む。共用メモリ９０は、両方のＬＰＡＲ３０および３１上のすべての仮想計算機３３〜３７および３５Ｍによって共用される。したがって、仮想計算機がアドレスを把握していれば、両方のＬＰＡＲ上のすべての仮想計算機が共用メモリ９０内のすべてのデータ構造にアクセスすることができる。システム１１０内のように、システム３１０内の各仮想計算機は、システム１１０内と同じ内容を有するそれぞれの専用メモリを含む。システム３１０は、仮想計算機３５をＬＰＡＲ３０からＬＰＡＲ３１にマイグレーションして、マイグレーション済み仮想計算機３５Ｍの仮想専用メモリ内容をマイグレーションするプロセスで共用メモリ９０を使用する。しかし、システム３１０内の両方のＬＰＡＲ３０および３１上の各仮想計算機用の通信キューおよびブロック・メモリは元々共用メモリ９０（共用メモリ５０または６０ではない）に保管される。その結果として、システム３１０内の仮想計算機３３〜３５のマイグレーション中に、それぞれの通信キューおよびブロック・メモリをマイグレーションする必要はない。たとえば、ＬＰＡＲ３１内のマイグレーション済み仮想計算機３５Ｍは、（マイグレーション前の）ＬＰＡＲ３０内の仮想計算機３５がマイグレーションの前に共用メモリ９０からの通信キュー５２およびブロック・メモリ５４に直接アクセスしたように、共用メモリ９０からの通信キュー５２およびブロック・メモリ５４に直接アクセスする。仮想計算機３５のマイグレーションのために、共用メモリ９０内のある位置から共用メモリ９０内の他の位置に通信キュー５２およびブロック・メモリ５４を移動する必要すらない。また、複数仮想計算機のうちの１つをマイグレーションすることが望ましいだけであるときには、互いの通信キューまたはブロック・メモリにアクセスする複数仮想計算機のグループを停止またはマイグレーションする必要はまったくない。これは、マイグレーション済み仮想計算機の通信キューおよびブロック・メモリが移動せず、他のマイグレーション済み仮想計算機がマイグレーション中にマイグレーション済み仮想計算機の通信キュー（および許可されている場合にはブロック・メモリ）への書込みおよびそこからの読取りを継続できるからである。
【００４７】
以下に示すのは、図３および図１０に関して、システム３１０内のＬＰＡＲ３０からＬＰＡＲ３１への仮想計算機３５のマイグレーションの説明である。仮想計算機３５のマイグレーションは、ＬＰＡＲ３０内の専用メモリからＬＰＡＲ３１内の専用メモリへの仮想計算機３５の専用メモリ（「ＶＰＭ」）の内容のマイグレーションを含む。通信キュー５２またはブロック・メモリ５４の移動はまったく行われず、このマイグレーションは、ＬＰＡＲ３１内のマイグレーション済み仮想計算機３５Ｍに両方を再付加することのみを必要とする。
【００４８】
ＬＰＡＲ３０内の仮想計算機３５の（仮想）専用メモリは、ゲスト・オペレーティング・システム４５、アプリケーション（複数も可）５５、アプリケーション（複数も可）によって生成されたデータ、オペレーティング・システムおよびアプリケーション（複数も可）に関するプログラム状況ワード（「ＣＰＵ状況」とも呼ばれる）、ゲスト・オペレーティング・システムおよびアプリケーション（複数も可）による処理中に使用されるデータ・レジスタを保管する。（仮想計算機３５は、ＬＰＡＲ３０からのコンピュータ・リソースのうち、それに割り振られたシェアも有するが、ＬＰＡＲ３０からのコンピュータ・リソースのシェアは仮想計算機３５とともにＬＰＡＲ３０からＬＰＡＲ３１にマイグレーションされず、その代わりに、マイグレーション済み仮想計算機３５ＭがＬＰＡＲ３１からコンピュータ・リソースのそのシェアを受け取ることになる。）仮想計算機３５のマイグレーションを開始するために、ハイパバイザ４０は、仮想計算機３５の専用メモリ（「ＶＰＭ」）の内容を共用メモリ９０（そこで、その内容は例示のために図３では仮想計算機の専用メモリ内容３５−Ａとして名称変更されている）にコピーする（ステップ１０００）。ステップ１０００では、ハイパバイザ４０は、仮想計算機３５の専用メモリ内容に併せて、通信キュー５２およびブロック・メモリ５４の仮想アドレスも共用メモリ９０にコピーする。これらは、共用メモリ９０から通信キュー５２およびブロック・メモリ５４をアドレス指定するために仮想計算機３５によって使用される仮想アドレスである。以下に詳述する通り、マイグレーション済み仮想計算機３５Ｍは、共用メモリ９０から通信キュー５２およびブロック・メモリ５４をアドレス指定するためにこれらの同じ仮想アドレスを使用することになり、ハイパバイザ４１はこれらの仮想アドレスを共用メモリ９０にマッピングすることになる。ステップ１０００によって示されるマイグレーションのポイントでは、仮想計算機３５は依然としてＬＰＡＲ３０およびハイパバイザ４０内で実行中である。次に、ハイパバイザ４１は、ＬＰＡＲ３０内の仮想計算機３５の実行を停止し（ステップ１００２）、次にＬＰＡＲ３０から仮想計算機３５を削除する（ステップ１０２８）。
【００４９】
仮想計算機３５の通信キュー５２は、仮想計算機３５のマイグレーション前およびマイグレーション後に共用メモリ９０に常駐し、マイグレーションのために共用メモリ９０内で通信キュー５２の移動はまったく行われない。（通信キュー５２は移動しないので、通信キュー５２にアクセスするＬＰＡＲ３０上の他の仮想計算機を停止する必要がない。）同様に、仮想計算機３５のブロック・メモリ５４は、仮想計算機３５のマイグレーション前およびマイグレーション後に共用メモリ９０に常駐し、マイグレーションのために共用メモリ９０内でブロック・メモリ５４の移動はまったく行われない。（ブロック・メモリ５４は移動しないので、ブロック・メモリ５４にアクセスするＬＰＡＲ３０上の他の仮想計算機がある場合にその仮想計算機を停止する必要がない。）
【００５０】
次に、ハイパバイザ４１は、マイグレーションすべき仮想計算機のためにＬＰＡＲ３１からのコンピュータ・リソース（仮想プロセッサ（複数も可）、仮想専用メモリおよび仮想共用メモリ、ならびに仮想専用ストレージおよび仮想共用ストレージ）を割り振る（ステップ１０２８）。ハイパバイザ４１は、ハイパバイザ４０または仮想計算機３５内のゲスト・オペレーティング・システム４５からのマイグレーション要求または事前通知を行うときのユーザ入力に基づいて、仮想計算機３５がＬＰＡＲ３１でレジュームされるのを待っている（そして仮想リソースを必要とする）ことを把握する。（この通知は、ＴＣＰ／ＩＰまたは任意の他の通信プロトコルを介して行うことができる。）次に、ハイパバイザ４１は、共用メモリ９０からの仮想計算機の専用メモリ内容３５−Ａ（通信キュー５２およびブロック・メモリ５４に関する仮想アドレスを含む）を最近割り振られたＬＰＡＲ３１の（仮想）専用メモリにコピーする（ステップ１０３０）。これはＬＰＡＲ３１内にマイグレーション済み仮想計算機３５Ｍを形成するものであるが、仮想計算機３５Ｍはまだレジューム／起動されていない。マイグレーション済み仮想計算機３５Ｍは元の仮想計算機３５と同一であるが、ＬＰＡＲ３１内の仮想計算機の総数およびＬＰＡＲ３１に割り振られたリソースの総量に応じて、リソース割振りについて何らかの変更が行われている可能性がある。次に、ハイパバイザ４１あるいは仮想計算機３６または３７のゲスト・オペレーティング・システム（ＬＰＡＲ３０からマイグレーションされた仮想計算機のレジュームを担当するもの）は、仮想計算機３５を「レジューム」するためのコマンドを発行する（ステップ１０３４）。応答として、仮想計算機３５Ｍ内のゲスト・オペレーティング・システムおよびアプリケーション（複数も可）は、マイグレーション済みプログラム状況ワード（ポインタ）によって示されるポイントで実行をレジュームすることになる。
【００５１】
次に、マイグレーション済み仮想計算機３５Ｍ内のゲスト・オペレーティング・システム４５Ｍは、ハイパバイザ４１がＬＰＡＲ３１内の仮想計算機３５Ｍに通信キュー５２を「付加」することを要求する（ステップ１０５０）。この付加により、仮想計算機３５Ｍ内のゲスト・オペレーティング・システムは、その仮想計算機３５Ｍがどのアドレスを使用して通信キュー５２を参照することになるかをハイパバイザ４１に通知する。（これらは、仮想計算機３５がＬＰＡＲ３０に常駐していたときに通信キュー５２を参照するために仮想計算機３５によって使用されたアドレスであり、そのアドレスは仮想計算機３５の専用メモリ内容とともに共用メモリ９０にコピーされている。）応答として、ハイパバイザ４１は、これらのアドレスを、通信キュー５２が常駐する共用メモリ９０内の位置に相関させる。通信キュー５２は移動されていないので、仮想計算機３３、３４、および３５Ｍは、仮想計算機３５Ｍのマイグレーション後に通信キュー５２にアクセスすることができ、仮想計算機３３または３４に対する変更はまったく行われない。また、仮想計算機３６および３７は、仮想計算機３５のマイグレーション前と同じように、仮想計算機３５のマイグレーション後に通信キュー５２にアクセスする（すなわち、作業項目を供給する）ことができる。
【００５２】
次に、マイグレーション済み仮想計算機３５Ｍ内のゲスト・オペレーティング・システムは、ハイパバイザ４１がＬＰＡＲ３１内の仮想計算機３５Ｍにブロック・メモリ５４を「付加」することを要求する（ステップ１０５４）。この付加により、仮想計算機３５Ｍ内のゲスト・オペレーティング・システム４５Ｍは、仮想計算機３５Ｍがブロック・メモリ５４にどのアドレスを使用することになるかをハイパバイザ４１に通知する。（これらは、ＬＰＡＲ３０に常駐していたときに仮想計算機３５によって使用されたアドレスであり、そのアドレスは仮想計算機３５の専用メモリ内容とともに共用メモリ９０にコピーされている。）応答として、ハイパバイザ４１は、このブロック・メモリをマイグレーション済み仮想計算機３５Ｍの仮想共用メモリに割り振ることにより、ブロック・メモリ５４をマイグレーション済み仮想計算機３５Ｍにとって使用可能なものにする。ハイパバイザ４１は、これらの仮想アドレスを共用メモリ９０内のブロック・メモリ５４に変換することになる。
【００５３】
次に、マイグレーション済み仮想計算機３５Ｍは、マイグレーションのためにＬＰＡＲ３０で仮想計算機３５が停止されたときに進行中だった１つまたは複数の作業項目がある場合に、その作業項目の実行を継続する。このような作業項目がある場合、その作業項目は、プログラム状況ワードに基づいて、マイグレーション中に停止されたポイントから継続される。通信キュー５２からの他の作業項目を実行するために仮想計算機３５Ｍが使用可能である場合（判断１０９０のＹＥＳ分岐）、仮想計算機３５Ｍは、通信キュー５２から次の作業項目を獲得し、後述の通り、それを処理する（ステップ１０９４）。通信キュー５２または任意の他のマイグレーション済み作業キュー上にそれ以上の項目がまったくない場合、仮想計算機は、実行すべき作業があることを示す割込みを待つだけである（ステップ１０９８）。
【００５４】
仮想計算機３６および３７がＬＰＡＲ３０内の仮想計算機３５を把握していない場合、その後、任意の通信プロトコル、たとえば、ＩＵＣＶを使用して３５Ｍによって開始された通信により、ＬＰＡＲ３１内の仮想計算機３５Ｍを知ることができる。次に、仮想計算機３６および３７が共用メモリ９０内の通信キュー５２により仮想計算機３５Ｍと通信したいと希望する場合、仮想計算機３６および３７は、ハイパバイザ４１に照会して、仮想計算機３５Ｍ用の通信キュー５２のアドレスを知ることができる。同様に、仮想計算機３５Ｍが仮想計算機３６または３７をまだ把握しておらず、仮想計算機３６および３７を知り、それと通信したいと希望する場合、仮想計算機３５Ｍは、ハイパバイザ４１に照会して、仮想計算機３６および３７用の共用メモリ９０内のそれぞれの通信キューのアドレスを知ることができる。また、仮想計算機３６および３７が共用メモリ９０内のブロック・メモリ５４にアクセスして（許可されている場合）、データの書込みまたは読取りを行いたいと希望する場合、仮想計算機３６および３７は、まだそのアドレスを把握していないのであれば、ハイパバイザ４１に照会して、仮想計算機３５Ｍ用のブロック・メモリ５４のアドレスを知ることができる。同様に、仮想計算機３５Ｍが共用メモリ９０内の仮想計算機３６および３７のブロック・メモリをまだ把握しておらず、それを知り、それにアクセスしたいと希望する場合（許可されている場合）、仮想計算機３５Ｍは、ハイパバイザ４１に照会して、仮想計算機３６および３７用の共用メモリ９０内のそれぞれのブロック・メモリのアドレスを知ることができる。
【００５５】
図４は、本発明の他の実施形態により２つの個別の物理的コンピュータ１２０および１２１を有するコンピュータ・システム４１０を示している。コンピュータ１２０は、仮想計算機３３〜３５を定義するハイパバイザ・プログラム４０を含む。システム３１０とは異なり、システム４１０内のコンピュータ１２０は、複数のＬＰＡＲに分割されないかまたは単一ＬＰＡＲである。システム３１０とは異なり、システム４１０内のコンピュータ１２１は、複数のＬＰＡＲに分割されないかまたは単一ＬＰＡＲである。コンピュータ・システム４１０は、共用メモリ９０の性質を除き、コンピュータ・システム３１０に類似している。コンピュータ・システム４１０では、個別の実コンピュータ１２０および１２１が存在するので、共用メモリ９０は「不均一メモリ・アクセス（nonuniform memory access）」デバイスとして実現することができ、一方の実コンピュータがメモリ・デバイスに接近しているために一方の実コンピュータの方がもう一方の実コンピュータより高速でメモリにアクセスできる。この実施形態では、メモリ９０は、一方の実コンピュータに差し込まれるカード上に存在することができ、ケーブルを介してもう一方の実コンピュータからアクセス可能である。コンピュータ１２１は、最初に仮想計算機３６および３７を定義し、後でマイグレーション済み仮想計算機３５Ｍを追加するハイパバイザ・プログラム４１を含む。それぞれのコンピュータ１２０および１２１内の各仮想計算機は、共用メモリ９０内にそれぞれの通信キューおよびブロック・メモリを含む。システム４１０内の仮想計算機のマイグレーションは、システム３１０内の仮想計算機のマイグレーションと同じであり、ここで繰り返す必要はない。
【００５６】
図５は、本発明の他の実施形態による他のコンピュータ・システム５１０を示している。システム１１０内のように、システム５１０は、単一の物理的コンピュータ２０と、ＬＰＡＲ３０および３１と、それぞれのハイパバイザ・プログラム４０および４１とを含む。ハイパバイザ４０は仮想計算機３３〜３５を定義する。ハイパバイザ４１は、仮想計算機３６、３７を定義し、後でマイグレーション済み仮想計算機３３Ｍ、３４Ｍ、および３５Ｍも定義する。システム５１０は、ＬＰＡＲ３０用の共用メモリ５０と、ＬＰＡＲ３１用の共用メモリ５１とを含む。システム１１０および５１０のいずれでも、各仮想計算機は同じ専用メモリ内容を含む。また、システム１１０および５１０のいずれでも、各仮想計算機の通信キューおよびブロック・メモリは、その仮想計算機が常駐するＬＰＡＲの共用メモリ内に常駐する。システム１１０および５１０のいずれでも、仮想計算機のマイグレーション中に、専用メモリ内容は元の専用メモリから共用ストレージにコピーされ、通信キューおよびブロック・メモリは共用メモリから共用ストレージにコピーされる。しかし、システム１１０とは異なり、システム５１０では、共用ストレージは両方のＬＰＡＲ３０および３１に共通のものである。その結果として、システム５１０内の仮想計算機３３〜３５ならびにそれぞれの通信キューおよびブロック・メモリのマイグレーション中に、専用メモリ内容、通信キュー、およびブロック・メモリをあるストレージから他のストレージにあるいはある保管場所から他の保管場所にコピーする必要はない。システム１１０および５１０のいずれでも、専用メモリ内容をストレージからＬＰＡＲ３１の専用メモリにコピーする必要があり、通信キューおよびブロック・メモリをストレージからＬＰＡＲ３１の共用メモリにコピーする必要がある。
【００５７】
以下に示すのは、図５および図１１に関して、システム５１０内のＬＰＡＲ３０からＬＰＡＲ３１に仮想計算機３５をマイグレーションするプロセスのより詳細な説明であり、この説明は他の仮想計算機３３および３４にも適用される。３つの仮想計算機３３〜３５はいずれも互いの通信キューにアクセスするので、３つの仮想計算機３３〜３５ならびにそれぞれの通信キューおよびブロック・メモリはすべて同時にマイグレーションされる。
【００５８】
ＬＰＡＲ３０内の仮想計算機３５の（仮想）専用メモリは、ゲスト・オペレーティング・システム４５、アプリケーション（複数も可）５５、アプリケーション（複数も可）によって生成されたデータ、オペレーティング・システムおよびアプリケーション（複数も可）に関するプログラム状況ワード（「ＣＰＵ状況」とも呼ばれる）、ゲスト・オペレーティング・システムおよびアプリケーション（複数も可）による処理中に使用されるデータ・レジスタを保管する。（仮想計算機３５は、ＬＰＡＲ３０からのコンピュータ・リソースのうち、それに割り振られたシェアも有するが、ＬＰＡＲ３０からのコンピュータ・リソースのシェアは本発明のこの実施形態では仮想計算機３５とともにＬＰＡＲ３０からＬＰＡＲ３１にマイグレーションされず、その代わりに、マイグレーション済み仮想計算機３５ＭがＬＰＡＲ３１からコンピュータ・リソースのそのシェアを受け取ることになる。）仮想計算機３５のマイグレーションを開始するために、ハイパバイザ４０は、仮想計算機３５の専用メモリ（「ＶＰＭ」）の内容を共用ストレージ５６０（そこで、その内容は例示のために図５では仮想計算機の専用メモリ内容３５−２として名称変更されている）にコピーする（ステップ１１００）。ステップ１１００では、ハイパバイザ４０は、仮想計算機３５の専用メモリ内容に併せて、通信キュー５２およびブロック・メモリ５４の仮想アドレスも共用ストレージ５６０にコピーする。これらは、共用メモリ５０から通信キュー５２およびブロック・メモリ５４をアドレス指定するために仮想計算機３５によって使用される仮想アドレスである。以下に詳述する通り、マイグレーション済み仮想計算機３５Ｍは、共用メモリ５１から通信キュー５２−３およびブロック・メモリ５４−３をアドレス指定するためにこれらの同じ仮想アドレスを使用することになり、ハイパバイザ４１はこれらの仮想アドレスを共用メモリ５１にマッピングすることになる。ステップ１１００によって示されるマイグレーションのポイントでは、仮想計算機３５は依然としてＬＰＡＲ３０およびハイパバイザ４０内で実行中である。
【００５９】
下記では、仮想計算機３５の通信キュー５２のマイグレーションの開始について説明する。この説明は、通信キュー５２と同時にマイグレーションされる仮想計算機３３および３４の通信キューのマイグレーションにも適用される。仮想計算機３５の通信キュー５２は元々共用メモリ５０に常駐する。通信キュー５２のマイグレーション（および仮想計算機３３および３４用の通信キューのマイグレーション）の直前に、ハイパバイザ４０は、互いの通信キューにアクセスするＬＰＡＲ３０上のすべての仮想計算機を停止し、それらがそのマイグレーション中にこれらのキューのいずれかに通信項目を追加するかまたはこれらのキューのいずれかから通信項目を除去することを試みないようにする（ステップ１１０２）。図示した例では、仮想計算機３３〜３５は互いの通信キューにアクセスし、したがって、ステップ１１０２でハイパバイザ４０はすべての仮想計算機３３〜３５を停止する。しかし、移動すべき物理的カードがまったくないので、その停止の期間は短く、たとえば、５ミリ秒である。次に、ハイパバイザ４０は、仮想計算機３５の通信キュー５２を共用メモリ５０から共用ストレージ５６０（そこで、その通信キューは例示のために図５では通信キュー５２−２として名称変更されている）にコピーする（ステップ１１０４）。
【００６０】
下記では、仮想計算機３５のブロック・メモリ５４のマイグレーションの開始について説明する。本発明の一実施形態では、各ブロック・メモリはそのそれぞれの仮想計算機に専用のものであり、すなわち、同じＬＰＡＲ内であっても、他の仮想計算機はいずれも、他の仮想計算機のブロック・メモリに書き込んだり、そこから読み取ったりすることができない。この実施形態では、そのブロック・メモリのために同じＬＰＡＲ上の複数の仮想計算機をグループとしてマイグレーションする必要はまったくない。しかし、依然として互いの通信キューへのそれぞれのアクセスのために同じＬＰＡＲ上の複数の仮想計算機をグループとしてマイグレーションする必要がある。しかし、本発明の他の実施形態では、同じＬＰＡＲ内の各仮想計算機は、同じＬＰＡＲ内の他の各仮想計算機のブロック・メモリにアクセスすることができる。この他の実施形態では、互いのブロック・メモリにアクセスできる同じＬＰＡＲ上のすべての仮想計算機は同時にマイグレーションする必要がある。仮想計算機のこのグループは一般に、互いの通信キューにアクセスできる仮想計算機のグループと一致することになり、互いの通信キューへのアクセスのためにとにかく同時にマイグレーションする必要がある。以下に示すのは、仮想計算機３５のブロック・メモリ５４のマイグレーションの説明である。この説明は、仮想計算機３３および３４のブロック・メモリのマイグレーションにも適用される。仮想計算機３５のブロック・メモリ５４は元々共用メモリ５０に常駐する。次に、ハイパバイザ４０は、仮想計算機３５のブロック・メモリ５４を共用メモリ５０から共用ストレージ５６０（そこで、そのブロック・メモリは例示のために図５ではブロック・メモリ５４−２として名称変更されている）にコピーする（ステップ１１０８）。
【００６１】
次に、仮想計算機３５は、それが削除されることを希望していることをハイパバイザ４０に通知することにより、ＬＰＡＲ３０からそれ自体を削除する（ステップ１１１２）。応答として、ハイパバイザ４０はＬＰＡＲ３０内の仮想計算機３５を削除する。（同様に、マイグレーション中の他の仮想計算機３３および３４もＬＰＡＲ３０からそれ自体を削除する。）
【００６２】
次に、ハイパバイザ４１は、マイグレーションすべき仮想計算機（複数も可）のためにＬＰＡＲ３１からのコンピュータ・リソース（仮想プロセッサ（複数も可）、仮想専用メモリおよび仮想共用メモリ、ならびに仮想専用ストレージおよび仮想共用ストレージ）を割り振る（ステップ１１２８）。ハイパバイザ４１は、ハイパバイザ４０または仮想計算機３５内のゲスト・オペレーティング・システム４５からのマイグレーション要求または事前通知を行うときのユーザ入力に基づいて、仮想計算機３５がＬＰＡＲ３１でレジュームされるのを待っている（そして仮想リソースを必要とする）ことを把握する。（この通知は、ＴＣＰ／ＩＰまたは任意の他の通信プロトコルを介して行うことができる。）次に、ハイパバイザ４１は、共用ストレージ５６０からの仮想計算機の専用メモリ内容３５−２（通信キュー５２およびブロック・メモリ５４に関する仮想アドレスを含む）を最近割り振られたＬＰＡＲ３１の（仮想）専用メモリにコピーする（ステップ１１３０）。これはＬＰＡＲ３１内にマイグレーション済み仮想計算機３５Ｍを形成するものであるが、仮想計算機３５Ｍはまだレジューム／起動されていない。マイグレーション済み仮想計算機３５Ｍは元の仮想計算機３５と同一であるが、ＬＰＡＲ３１内の仮想計算機の総数およびＬＰＡＲ３１に割り振られたリソースの総量に応じて、リソース割振りについて何らかの変更が行われている可能性がある。次に、ハイパバイザ４１あるいは仮想計算機３６または３７のゲスト・オペレーティング・システム（ＬＰＡＲ３０からマイグレーションされた仮想計算機のレジュームを担当するもの）は、仮想計算機３５を「レジューム」するためのコマンドを発行する（ステップ１１３４）。応答として、仮想計算機３５Ｍ内のゲスト・オペレーティング・システム４５Ｍおよびアプリケーション（複数も可）は、マイグレーション済みプログラム状況ワード（ポインタ）によって示されるポイントで実行をレジュームすることになる。
【００６３】
次に、ＬＰＡＲ３０からの仮想計算機のマイグレーションを担当するハイパバイザ４１あるいは仮想計算機３６または３７のゲスト・オペレーティング・システムは、仮想計算機３５の通信キュー５２−２を共用ストレージ５６０から共用メモリ５１（そこで、その通信キューは例示のために図５では５２−３として名称変更されている）にコピーする（ステップ１１４０）。次に、ＬＰＡＲ３０からＬＰＡＲ３１へのブロック・メモリのマイグレーションを担当するハイパバイザ４１あるいは仮想計算機３６または３７のゲスト・オペレーティング・システムは、ブロック・メモリ５４−２を共用ストレージ５６０から共用メモリ５１（そこで、そのブロック・メモリは例示のために５４−３として名称変更されている）にコピーする（ステップ１１４４）。
【００６４】
次に、マイグレーション済み仮想計算機３５Ｍ内のゲスト・オペレーティング・システム４５Ｍは、ハイパバイザ４１がＬＰＡＲ３１内の仮想計算機３５Ｍに通信キュー５２−３を「付加」することを要求する（ステップ１１５０）。この付加により、仮想計算機３５Ｍ内のゲスト・オペレーティング・システム４５Ｍは、その仮想計算機３５Ｍがどのアドレスを使用して通信キュー５２−３を参照することになるかをハイパバイザ４１に通知する。（これらは、ＬＰＡＲ３０に常駐していたときに仮想計算機３５によって使用されたアドレスであり、そのアドレスは仮想計算機３５の専用メモリ内容とともに共用ストレージ５６０にコピーされている。）応答として、ハイパバイザ４１は、これらのアドレスを、通信キュー５２−３が現在常駐する共用メモリ５１内の位置に相関させる。（同様に、他のマイグレーション済み仮想計算機３４Ｍおよび３５Ｍは、ハイパバイザ４１が共用メモリ５１にそれぞれの通信キューを付加することを要求することになる。）すべての仮想計算機３３〜３５が同時にマイグレーションされるので、レジュームされると、それらは、マイグレーションの前にＬＰＡＲ３０で使用したものと同じ仮想アドレスを使用して、互いの通信キューにアクセスすることになる。ハイパバイザ４１は、これらのアドレスを（共用メモリ５０の代わりに）共用メモリ５１内の位置に付加することになる。
【００６５】
次に、マイグレーション済み仮想計算機３５Ｍ内のゲスト・オペレーティング・システムは、ハイパバイザ４１がＬＰＡＲ３１内の仮想計算機３５Ｍにブロック・メモリ５４−３を「付加」することを要求する（ステップ１１５４）。この付加により、仮想計算機３５Ｍ内のゲスト・オペレーティング・システムは、仮想計算機３５Ｍがブロック・メモリ５４−３にどのアドレスを使用することになるかをハイパバイザ４１に通知する。（これらは、ＬＰＡＲ３０に常駐していたときに仮想計算機３５によって使用されたアドレスであり、そのアドレスは仮想計算機３５の専用メモリ内容とともに共用ストレージ５６０にコピーされている。）応答として、ハイパバイザ４１は、このブロック・メモリをマイグレーション済み仮想計算機３５Ｍの仮想共用メモリに割り振ることにより、ブロック・メモリ５４−３をマイグレーション済み仮想計算機３５Ｍにとって使用可能なものにする。他の仮想計算機３３〜３４がＬＰＡＲ３０内の仮想計算機３５のブロック・メモリにアクセスできた場合、それらは、ＬＰＡＲ３０でブロック・メモリ５４にアクセスするために使用したものと同じ仮想アドレスを使用して、ＬＰＡＲ３１で仮想計算機３５Ｍのブロック・メモリにアクセスすることになる。ハイパバイザ４１は、これらの仮想アドレスをＬＰＡＲ３１内のブロック・メモリ５４−３に変換することになる。
【００６６】
次に、マイグレーション済み仮想計算機３５Ｍは、マイグレーションのためにＬＰＡＲ３０で仮想計算機３５が停止されたときに進行中だった１つまたは複数の作業項目がある場合に、その作業項目の実行を継続する。このような作業項目がある場合、その作業項目は、プログラム状況ワードによって示される通り、マイグレーション中に停止されたポイントから継続される。通信キュー５２−３からの他の作業項目を実行するために仮想計算機３５Ｍが使用可能である場合（判断１１９０のＹＥＳ分岐）、仮想計算機３５Ｍは、通信キュー５２−３から次の作業項目を獲得し、後述の通り、それを処理する（ステップ１１９４）。通信キュー５２−３（または仮想計算機３５Ｍの任意の他のマイグレーション済み作業キュー）上にそれ以上の項目がまったくない場合、仮想計算機は、実行すべき作業があることを示す割込みを待つだけである（ステップ１１９８）。
【００６７】
上記の通り、仮想計算機３６および３７は、その後、任意の通信プロトコル、たとえば、ＩＵＣＶを介して３５Ｍによって開始された通信により、仮想計算機３５Ｍ（ならびに仮想計算機３３Ｍおよび３４Ｍ）を知ることができる。次に、仮想計算機３６および３７が共用メモリ５１内の通信キュー５２−３により仮想計算機３５Ｍと通信したいと希望する場合、仮想計算機３６および３７は、ハイパバイザ４１に照会して、仮想計算機３５Ｍ用の通信キュー５２−３のアドレスを知ることができる。同様に、仮想計算機３５Ｍ（ならびに仮想計算機３３Ｍおよび３４Ｍ）が仮想計算機３６および３７を知り、それと通信したいと希望する場合、仮想計算機３５Ｍ（ならびに仮想計算機３３Ｍおよび３４Ｍ）は、ハイパバイザ４１に照会して、仮想計算機３６および３７用の共用メモリ５１内のそれぞれの通信キューのアドレスを知ることができる。また、仮想計算機３６および３７が共用メモリ５１内のブロック・メモリ５４−３にアクセスして（許可されている場合）、データの書込みまたは読取りを行いたいと希望する場合、仮想計算機３６および３７は、ハイパバイザ４１に照会して、仮想計算機３５Ｍ用のブロック・メモリ５４−３のアドレスを知ることができる。同様に、仮想計算機３５Ｍが共用メモリ５１内の仮想計算機３６および３７のブロック・メモリを知り、それにアクセスしたいと希望する場合（許可されている場合）、仮想計算機３５Ｍは、ハイパバイザ４１に照会して、仮想計算機３６および３７用の共用メモリ５１内のそれぞれのブロック・メモリのアドレスを知ることができる。
【００６８】
図６は、本発明の他の実施形態により２つの個別の物理的コンピュータ１２０および１２１を有するコンピュータ・システム６１０を示している。コンピュータ１２０は、仮想計算機３３〜３５を定義するハイパバイザ・プログラム４０を含む。システム５１０とは異なり、システム６１０内のコンピュータ１２０は、複数のＬＰＡＲに分割されないかまたは単一ＬＰＡＲである。コンピュータ１２１は、仮想計算機３６および３７を定義し、後でマイグレーション済み仮想計算機３３Ｍ、３４Ｍ、および３５Ｍも定義するハイパバイザ・プログラム４１を含む。コンピュータ１２０は、仮想計算機３３〜３５用の共用メモリ５０を含む。コンピュータ１２１は、仮想計算機３６および３７用であって、後でマイグレーション済み仮想計算機３３Ｍ、３４Ｍ、および３５Ｍ用でもある共用メモリ５１を含む。両方のコンピュータ１２０および１２１は、システム５１０内のようにストレージ５６０を共用する。それぞれのコンピュータ１２０および１２１内の各仮想計算機は、それぞれの共用メモリ内にそれぞれの通信キューおよびブロック・メモリを含む。システム６１０内の仮想計算機（複数も可）のマイグレーションは、システム５１０内の仮想計算機のマイグレーションと同じであり、ここで繰り返す必要はない。
【００６９】
図７は、マイグレーション前のすべてのコンピュータ・システム１１０、２１０、３１０、４１０、５１０、および６１０内の共用メモリ５０または９０内の通信キュー５２およびブロック・メモリ５４とそれらの使用法を示している。（通信キューおよびブロック・メモリは、それらが共用メモリ５０または９０に常駐するマイグレーション後は同様に使用される。）図示した状態では、キュー５２は３つの作業項目７０、７１、および７２を有する。「通信」キュー５２上の「作業」項目は、図示した他の仮想計算機からの通信である場合もあれば、仮想計算機３５による実行のために仮想計算機３５自体により預けられた（deposited）作業項目である場合もある。（同様に、他の仮想計算機の「通信」キューは、他の仮想計算機からの通信である場合もあれば、その作業項目を処理することになる同じ仮想計算機により預けられた作業項目である場合もある。）図示した例では、仮想計算機３３内の機能１４３（データベース機能など）が作業項目７０を作成し、次にそれを仮想計算機３３内の作業キュー割当て機能（「ＷＱＡＦ」）１５３に供給した。次に、ＷＱＡＦ１５３は、作業／通信項目のターゲット（すなわち、仮想計算機３５）に基づいて、その項目をキュー５２上に置いて、それをキュー５２に転送しなければならないと判定した。同様に、図示した例では、仮想計算機３４内の機能１４４（インターネット・アプリケーション機能など）が作業項目７１を作成し、次にそれを仮想計算機３４内の作業キュー割当て機能（「ＷＱＡＦ」）１５４に渡した。次に、ＷＱＡＦ１５４は、作業／通信項目のターゲット（すなわち、仮想計算機３５）に基づいて、その項目をキュー５２上に置いて、それをキュー５２に転送しなければならないと判定した。（仮想計算機３３〜３５のいずれかが作業項目７２を作成した。）仮想計算機３５内のスケジューラ１６５は、他の作業項目を実行するために仮想計算機３５が使用可能である時期を決定する。そのときにスケジューラ１６５は、キュー・ポインタによって示されたキュー５２から作業項目７２などの作業項目を獲得することになる。次に、スケジューラ１６５は、作業項目を解析して、その作業項目を処理するための仮想計算機３５内の適切な機能を決定することになる。次に、スケジューラ１６５は処理のためにその作業項目をその機能に渡すことになる。キュー５２は共用メモリに常駐し、スケジューラ１６５は、前の作業項目の完了後あるいはそれが他の作業項目を実行する能力を有するときに、キュー５２に新しい項目がないかどうかをチェックするので、ある項目が実行のためにキュー５２上で待機中であるときに割込みがスケジューラ１６５に警告する必要はまったくない。しかし、本発明の一実施形態では、仮想計算機３５は、実行すべき作業項目がまったくないときにアイドル状態に入る。このような場合、新しい作業項目が仮想計算機３５用のキュー５２に到着すると、その作業をキュー５２上に置いた仮想計算機は、仮想計算機３５に割込みを送信して、仮想計算機３５をウェイクアップする。応答として、仮想計算機３５は、キュー５２に新しい作業項目がないかどうかを自動的にチェックすることになる。
【００７０】
システム１１０、２１０、３１０、４１０、５１０、および６１０の図示した実施形態では、各ブロック・メモリは、ファイルと、メモリ領域内のファイルをリストするそれぞれのディレクトリとを保管するための共用メモリの一領域である。仮想計算機３３、３４、および３５用のブロック・メモリは共用メモリ５０または９０のそれぞれの領域を有し、仮想計算機３６、３７、３３Ｍ、３４Ｍ、および３５Ｍ用のブロック・メモリは共用メモリ５０または９０のそれぞれの領域を有する。図７に図示した実施形態では、種々の仮想計算機は他の仮想計算機のブロック・メモリにブロックを書き込んだり、そこからブロックを読み取ることができる。したがって、仮想計算機３３〜３５は、仮想計算機３３〜３５のいずれかからのブロック・メモリにデータ・ブロックを書き込んだり、そこからデータを読み取るためのそれぞれのデバイス・ドライバ（図示せず）を有する。いずれかの仮想計算機３３〜３５は、他の仮想計算機３３〜３５のいずれかにデータ・ブロックを転送するかまたはそれ自体のデータ・ブロックの保管のためにそれぞれの共用メモリを使用することができる。同様に、仮想計算機３６、３７、３３Ｍ、３４Ｍ、および３５Ｍは、仮想計算機３６、３７、３３Ｍ、３４Ｍ、および３５Ｍのいずれかのブロック・メモリにデータ・ブロックを書き込んだり、そこからデータを読み取るためのそれぞれのデバイス・ドライバ（図示せず）を有する。したがって、いずれかの仮想計算機３６、３７、３３Ｍ、３４Ｍ、および３５Ｍは、他の仮想計算機３６、３７、３３Ｍ、３４Ｍ、または３５Ｍのいずれかにデータ・ブロックを転送するかまたはそれ自体のデータ・ブロックの保管のためにその共用メモリを使用することができる。
【００７１】
図８は、ブロック・メモリの他の実施形態を示しており、各仮想計算機は専用ブロック・メモリを有し、任意の他の仮想計算機のブロック・メモリに書き込んだり、そこから読み取ることができない。したがって、各仮想計算機は、それ自体のブロック・メモリにデータ・ブロックを書き込んで、その専用メモリを解放し、次に専用メモリで必要なときにそのデータ・ブロックを読み戻すことができる。
【００７２】
上記に基づいて、本発明を実施するコンピュータ・システムが開示されている。しかし、本発明の範囲を逸脱せずに、多数の変更および置換えを行うことができる。たとえば、各仮想計算機は、上述の通信キューとともにマイグレーションされる他の作業キューを有することができる。したがって、本発明は、限定としてではなく例示として開示されており、本発明の範囲を決定するために特許請求の範囲を参照されたい。
【図面の簡単な説明】
【００７３】
【図１】２つのロジカル・パーティションと、それぞれの共用メモリと、各ロジカル・パーティション内の複数の仮想計算機とを備えた１つの実コンピュータのブロック図であり、一方のロジカル・パーティションからもう一方のロジカル・パーティションに仮想計算機をマイグレーションするための本発明の一実施形態によるプロセスを示す図である。
【図２】２つの個別の実コンピュータと、それぞれの共用メモリと、各実コンピュータ内の複数の仮想計算機とのブロック図であり、一方の実コンピュータからもう一方の実コンピュータに仮想計算機をマイグレーションするための本発明の他の実施形態によるプロセスを示す図である。
【図３】２つのロジカル・パーティションと、各ロジカル・パーティション内の複数の仮想計算機と、両方のロジカル・パーティションによって共用されるメモリとを備えた１つの実コンピュータのブロック図であり、一方のロジカル・パーティションからもう一方のロジカル・パーティションに仮想計算機をマイグレーションするための本発明の他の実施形態によるプロセスを示す図である。
【図４】２つの個別の実コンピュータと、各実コンピュータ内の複数の仮想計算機と、両方の実コンピュータによって共用されるメモリとのブロック図であり、一方の実コンピュータからもう一方の実コンピュータに仮想計算機をマイグレーションするための本発明の他の実施形態によるプロセスを示す図である。
【図５】２つのロジカル・パーティションと、それぞれの共用メモリと、両方のロジカル・パーティションによって共用されるストレージと、各ロジカル・パーティション内の複数の仮想計算機とを備えた１つの実コンピュータのブロック図であり、一方のロジカル・パーティションからもう一方のロジカル・パーティションに仮想計算機をマイグレーションするための本発明の一実施形態によるプロセスを示す図である。
【図６】２つの個別の実コンピュータと、それぞれの共用メモリと、両方のコンピュータによって共用されるストレージと、各実コンピュータ内の複数の仮想計算機とのブロック図であり、一方の実コンピュータからもう一方の実コンピュータに仮想計算機をマイグレーションするための本発明の他の実施形態によるプロセスを示す図である。
【図７】図１、図２、図３、図４、図５、および図６の共用メモリ内の仮想計算機用の通信キューと共用ブロック・メモリを示すブロック図である。
【図８】図１、図２、図３、図４、図５、および図６の共用メモリ内の仮想計算機用の通信キューと専用ブロック・メモリを示すブロック図である。
【図９】図１および図２のコンピュータ・システム内の仮想計算機マイグレーション・プロセスを示す流れ図である。
【図１０】図３および図４のコンピュータ・システム内の仮想計算機マイグレーション・プロセスを示す流れ図である。
【図１１】図５および図６のコンピュータ・システム内の仮想計算機マイグレーション・プロセスを示す流れ図である。
【符号の説明】
【００７４】
２０：物理的コンピュータ
２３：ＣＰＵ
２４：ＲＡＭ
２５：ロジカル・パーティション・プログラム
２６：ストレージ
２７：コンソール
３０：ロジカル・パーティション（ＬＰＡＲ）
３１：ロジカル・パーティション（ＬＰＡＲ）
３３：仮想計算機
３３Ｍ：仮想計算機
３４：仮想計算機
３４Ｍ：仮想計算機
３５：仮想計算機
３５Ｍ：仮想計算機
３６：仮想計算機
３７：仮想計算機
４０：ハイパバイザ
４１：ハイパバイザ
４３：オペレーティング・システム
４４：オペレーティング・システム
４５：オペレーティング・システム
４５Ｍ：仮想専用メモリ（ＶＰＭ）
４６：オペレーティング・システム
４７：オペレーティング・システム
５０：共用メモリ
５１：共用メモリ
５２：通信キュー
５２−１：通信キュー
５３：アプリケーション
５４：アプリケーション
５４：ブロック・メモリ
５４−１：ブロック・メモリ
５５：アプリケーション
５６：アプリケーション
５７：アプリケーション
８０：作業メモリ
８１：作業メモリ
１１０：コンピュータ・システム
【図１】
0004769484.tif 000002
【図２】
0004769484.tif 000003
【図３】
0004769484.tif 000004
【図４】
0004769484.tif 000005
【図５】
0004769484.tif 000006
【図６】
0004769484.tif 000007
【図７】
0004769484.tif 000008
【図８】
0004769484.tif 000009
【図９】
0004769484.tif 000010
【図１０】
0004769484.tif 000011
【図１１】
0004769484.tif 000012