(57)【特許請求の範囲】
【請求項１】
仮想マシンが作成される第１の情報処理装置と、
前記第１の情報処理装置上で作成された仮想マシンを移行可能な第２の情報処理装置と、
前記第１の情報処理装置、及び前記第２の情報処理装置との間でデータの入出力を行うことが可能なＩ／Ｏデバイスと、
前記Ｉ／Ｏデバイスと前記第１の情報処理装置、或いは前記第２の情報処理装置との間でデータの入出力を中継するＩ／Ｏスイッチ装置と、
前記Ｉ／Ｏデバイスのエミュレーションを行うエミュレーション部と、
前記第１の情報処理装置上で稼働中の前記仮想マシンを停止させるまでの間、前記第１の情報処理装置を前記Ｉ／Ｏデバイスに接続させ、且つ前記第２の情報処理装置を前記エミュレーション部に接続させると共に、前記第１の情報処理装置上の前記仮想マシンを停止させた後、前記第２の情報処理装置を前記Ｉ／Ｏデバイスに接続させる接続切替部と、
前記Ｉ／Ｏスイッチ装置に設けられており、前記エミュレーション部がエミュレーションを行っているＩ／Ｏデバイスのコンフィグレーション空間情報を該Ｉ／Ｏデバイスから取得して前記エミュレーション部へ転送する転送部と、
を具備することを特徴とする情報処理システム。
【請求項２】
前記エミュレーション部、及び前記接続切替部は、前記第１の情報処理装置からの指示により、前記Ｉ／Ｏスイッチ装置を用いて実現される、
ことを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記第１の情報処理装置は、前記Ｉ／Ｏスイッチ装置を用いて前記エミュレーション部、及び前記接続切替部を実現させた後、前記接続切替部により、前記仮想マシンを作成して停止させた後の前記第２の情報処理装置を前記エミュレーション部に接続させる、
ことを特徴とする請求項２記載の情報処理システム。
【請求項４】
複数の情報処理装置、及び複数のＩ／Ｏデバイスを接続可能なＩ／Ｏスイッチ装置において、
前記複数のＩ／Ｏデバイスのなかで指定されたＩ／Ｏデバイスのエミュレーションを行うエミュレーション部と、
前記複数の情報処理装置の接続先を、前記エミュレーション部と、該エミュレーション部がエミュレーションを行っているＩ／Ｏデバイスとの間で切り替え可能な接続切替部と、
前記エミュレーション部がエミュレーションを行っているＩ／Ｏデバイスのコンフィグレーション空間情報を該Ｉ／Ｏデバイスから取得して前記エミュレーション部へ転送する転送部と、
を具備することを特徴とするＩ／Ｏスイッチ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、稼働中の仮想マシンをコンピュータ間で移行させる技術に関する。
【背景技術】
【０００２】
近年、コンピュータの仮想化技術の一つである仮想マシン（ＶＭ：Virtual Machine）は、コンピュータシステムに広く採用されている。この仮想マシンでは、コンピュータのハードウェア（リソース）が仮想化され、仮想化したハードウェア上で異なるプログラムが動作可能となる。それにより、仮想マシンは個々に完全に独立した形で動作する。このことから、仮想マシンを用いることで、一台のコンピュータを複数のサーバとして動作させることができる。
仮想マシンは、コンピュータ上で動作する仮想マシンモニタにより作成され、その仮想マシンモニタによってハードウェアが割り当てられる。仮想マシンのＩ／Ｏ（Input/Output）、つまりハードウェアへのアクセスは、仮想マシンモニタを介して行われる。仮想マシンモニタを介することにより、ハードウェアへのアクセス速度、特にコンピュータに接続された、そのコンピュータとの間でデータの入出力を行うＩ／Ｏデバイスへのアクセス速度は低下する。このことから、最近では、Ｉ／Ｏ性能を向上させる手段として、Ｉ／Ｏデバイスを仮想マシンに対して直接割り当てる直接Ｉ／Ｏ（Ｄｉｒｅｃｔ  Ｉ／Ｏ）と呼ばれる技術がハードウェア機能として実装されてきている。このＩ／Ｏデバイスは以降「ＰＣＩ（Peripheral Component Interconnect）デバイス」と呼ぶことにする。
【０００３】
直接Ｉ／Ｏは、仮想マシン内の物理アドレス空間とコンピュータの物理アドレス空間との間で、DMA転送におけるアドレス変換（ＤＭＡ  Ｒｅｍａｐｐｉｎｇ：ＤＭＡリマッピング）を行うハードウェア（直接Ｉ／Ｏハードウェア）を用いて、仮想マシンとＰＣＩデバイス間で直接ＤＭＡ（Direct Memory Access）転送を行う。ＰＣＩデバイスの設定に係わるＰＣＩコンフィグレーション空間や、デバイス割り込みの伝達等は、仮想マシンモニタによってエミュレーションされて仮想マシンに提供される。その結果、仮想マシンは、実際のＰＣＩデバイスが直接接続されているように扱うことができる。
【０００４】
仮想マシンの仮想化技術には、或るコンピュータで稼働中の仮想マシンを稼働状態のまま他のコンピュータに移行する、ライブマイグレーションと呼ばれる技術がある。ライブマイグレーションは、例えば、運用管理上の負荷分散や障害対策等において用いられている。ライブマイグレーションでは、仮想マシンの移行前後において、仮想マシン内におけるＣＰＵやハードウェアレジスタの状態、メモリ内容、Ｉ／Ｏ転送の状態等の全てが一致していなければならない。
【０００５】
通常、仮想マシンが直接Ｉ／ＯでＰＣＩデバイスを使用している場合、その仮想マシンをライブマイグレーションすることはできない。これは、移行元のコンピュータで使用されていたＰＣＩデバイスは、移行先のコンピュータには接続されていないのが普通だからである。
【０００６】
最近では、複数のコンピュータが一つのＰＣＩデバイスへの接続を共有することができるＩ／Ｏスイッチ（以降「ＰＣＩスイッチ」）を用いることにより、ＰＣＩスイッチに接続したコンピュータ間で、直接Ｉ／Ｏを使用している仮想マシンをライブマイグレーションすることが提唱されている。ここでいう「共有」とは、必ずしも同時に使用できるということではない。ＰＣＩスイッチ内の接続関係の切り替えにより、物理的な配線を変更することなく、ＰＣＩデバイスの接続先のコンピュータを変更可能であることをさす。なお、ＰＣＩスイッチを用いたＰＣＩデバイスの共有に関しては、ＭＲ−ＩＯＶ（Multi Root I/O Virtualization）という規格がＰＣＩ−ＳＩＧによって策定されている。
【０００７】
上記ＰＣＩスイッチを接続したコンピュータ間での直接Ｉ／Ｏを使用している仮想マシンのライブマイグレーションは、従来、以下の３つの手順により行われる。
・Pre-Copyフェーズ
移行先のコンピュータ上に停止した状態の仮想マシンを作成し、移行元のコンピュータ上で稼働中の仮想マシンのメモリ内容を移行先のコンピュータに転送し、作成した仮想マシンにコピーする。
・Stop-and-Copyフェーズ
メモリ内容の転送量がある閾値を超えたら、移行元コンピュータ上で仮想マシンを一時停止する。一時停止中に、残りのメモリ内容及び転送開始後に変更されたメモリ内容、ＣＰＵ状態、エミュレーションしているハードウェアの状態などを移行先コンピュータに転送する。ＰＣＩスイッチにおいて、移行元コンピュータから直接Ｉ／Ｏで使用中のＰＣＩデバイスとの接続を切断し、移行先コンピュータに接続し、直接Ｉ／Ｏで使用可能にする。
・Activationフェーズ
移行先コンピュータにおいて、Stop-and-Copyフェーズで転送された内容を、作成した仮想マシンに反映して、その仮想マシンを再開させる。移動元の仮想マシンは破棄される。
【０００８】
上記Stop-and-Copyフェーズにおいて、移行元コンピュータとＰＣＩデバイスとの接続を切断するのは、複数のコンピュータで同一のＰＣＩコンフィグレーション空間を割り当てることができないからである。このため、ライブマイグレーションの対象とする仮想マシンは、移行元コンピュータとＰＣＩデバイスとの接続を切断してから、移行先コンピュータで仮想マシンを再開させるまでの間、停止することとなる。
この停止期間内では、移行元のコンピュータ及び移行先のコンピュータにおけるＰＣＩデバイスの切断、接続のホットプラグ処理、ＰＣＩスイッチからの接続、切断通知後は、ＢＩＯＳなどのファームウェアによるＰＣＩデバイスのコンフィグレーション処理、仮想マシンモニタによる直接Ｉ／Ｏの設定処理、などが行われる。このため、直接Ｉ／Ｏを使用しない仮想マシンのライブマイグレーションでは仮想マシンの停止時間は数１０ｍｓから２００ｍｓ程度であるのに対し、直接Ｉ／Ｏを使用する仮想マシンのライブマイグレーションでは停止時間はさらに数１００ｍｓ程度、長くなる。
【０００９】
停止時間が長くなると、サービスの提供に用いる仮想マシンでは、タイムアウトなどが生じることにより、サービスの質を低下させる可能性がある。ライブマイグレーションは、上記のように、運用管理上の負荷分散や障害対策等のために行われることが多い。このことも考慮すれば、直接Ｉ／Ｏを使用する仮想マシンのライブマイグレーションに伴う停止時間はより短くすることが重要である。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−３９６８５号公報
【特許文献２】特開２００９−１８１４１８号公報
【特許文献３】特開２００９−２１７６０８号公報
【特許文献４】国際公開ＷＯ２０１０／１１６４０２
【特許文献５】特開２００８−４６７２２号公報
【非特許文献】
【００１１】
【非特許文献１】「Intel (R) Virtualization Technology for Directed I/O Architecture Specification Rev 1.2」、http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf）
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明は、直接Ｉ／Ｏを使用する仮想マシンのライブマイグレーションに伴う停止時間をより短くするための技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明を適用した１システムは、仮想マシンが作成される第１の情報処理装置と、前記第１の情報処理装置上で作成された仮想マシンを移行可能な第２の情報処理装置と、前記第１の情報処理装置、及び前記第２の情報処理装置との間でデータの入出力を行うことが可能なＩ／Ｏデバイスと、前記Ｉ／Ｏデバイスと前記第１の情報処理装置、或いは前記第２の情報処理装置との間でデータの入出力を中継するＩ／Ｏスイッチ装置と、前記Ｉ／Ｏデバイスのエミュレーションを行うエミュレーション部と、前記第１の情報処理装置上で稼働中の前記仮想マシンを停止させるまでの間、前記第１の情報処理装置を前記Ｉ／Ｏデバイスに接続させ、且つ前記第２の情報処理装置を前記エミュレーション部に接続させると共に、前記第１の情報処理装置上の前記仮想マシンを停止させた後、前記第２の情報処理装置を前記Ｉ／Ｏデバイスに接続させる接続切替部と、前記Ｉ／Ｏスイッチ装置に設けられており、前記エミュレーション部がエミュレーションを行っているＩ／Ｏデバイスのコンフィグレーション空間情報を該Ｉ／Ｏデバイスから取得して前記エミュレーション部へ転送する転送部と、を具備する。
【発明の効果】
【００１４】
本発明を適用した場合には、直接Ｉ／Ｏを使用する仮想マシンのライブマイグレーションに伴う停止時間をより短くすることができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態によるコンピュータシステムの構成を説明する図である。
【図２】デバイスエミュレータ、切替回路、及び接続管理部の接続切替部の動作を説明する図である。
【図３】直接Ｉ／Ｏハードウェアを使用する仮想マシンのライブマイグレーションを行う場合に、移行元コンピュータ、移行先コンピュータがそれぞれ実行する処理を表すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態によるコンピュータシステムの構成を説明する図である。この図１に表す構成例は、本実施形態によるコンピュータシステムに必要な最小限の構成要素を用いて構築されたものである。そのコンピュータシステムは、２台のコンピュータ（物理的な計算機）１（１−１〜１−２）、Ｉ／ＯデバイスであるＰＣＩデバイス２、２台のコンピュータ１とＰＣＩデバイス２間のデータの入出力を中継するＩ／ＯスイッチであるＰＣＩスイッチ３を備えている。
【００１７】
コンピュータ１−１、１−２間は、通信路４によって接続されている。ＰＣＩスイッチ３は、コンピュータとの接続用に上流ポート３１を備え、ＰＣＩデバイス２との接続用に下流ポート３２を備えている。図１では、ＰＣＩスイッチ３は、４個の上流ポート３１−１〜３１−４を備えると共に、４個の下流ポート３２−１〜３２−４を備えている。各コンピュータ１−１、１−２と上流ポート３１との接続はケーブル５により行われる。
【００１８】
ＰＣＩスイッチ３は、各コンピュータ１−１、１−２とＰＣＩスイッチ設定通信路６により接続されている。このＰＣＩスイッチ設定通信路６は、例えばＬＡＮ（Local Area Network）といった通信ネットワークである。本実施形態によるＩ／Ｏスイッチは、ＰＣＩスイッチ３として実現されている。
【００１９】
各コンピュータ１−１、１−２上には、複数の仮想マシン１１（１１−１〜１１−ｎ）が作成されている。各コンピュータ１−１、１−２上で動作するプログラムである仮想マシンモニタ１２は、自身が実行されるコンピュータ１−１或いは１−２のハードウェア群１３の上に、オペレータの指示（仮想マシン定義ファイル）に応じて、複数の仮想的なハードウェア環境を構築し、仮想マシン１１を作成する。ハードウェア群１３は、割り当てられたＰＣＩデバイス２を表す情報であるＰＣＩコンフィグレーション空間が格納された制御レジスタ１３ａ、仮想マシン１１がＰＣＩデバイス２に直接的にアクセスするための直接Ｉ／Ｏハードウェア（ＨＷ）１３ｂ、ＣＰＵ（Central Processing Unit）１３ｃ、メモリモジュール１３ｄ、ネットワークカード（図１中「Ｎｅｔ」と表記）１３ｅ、スロット１３ｆ等を含む。直接Ｉ／Ｏハードウェア１３ｂによるＰＣＩデバイス２へのアクセスは、制御レジスタ１３ａを参照して行われる。上記ＰＣＩコンフィグレーション空間は、ＰＣＩデバイス２のＰＣＩコンフィグレジスタ２１にも格納されている。
【００２０】
仮想マシンモニタ１２は、直接Ｉ／Ｏ、つまり直接Ｉ／Ｏハードウェア１３ｂを用いたＰＣＩデバイス２へのアクセスに対応するための直接Ｉ／Ｏ機能１２ｂ、仮想マシン１１毎にＰＣＩデバイス２のリソース（アドレス空間）の割り当てを管理するＰＣＩリソース管理機能１２ｃを備えている。各機能１２ｂ、１２ｃは、仮想マシンモニタ１２に搭載されたサブプログラムである。
【００２１】
仮想マシンモニタ１２は、直接Ｉ／Ｏを使用する仮想マシン１１のライブマイグレーションに対応している。仮想マシンモニタ１２の移行プログラム１２ａは、そのライブマイグレーションを実現させるサブプログラムであり、スイッチ管理機能１２ｄをサブプログラムとして備えている。このスイッチ管理機能１２ｄは、直接Ｉ／Ｏを使用する仮想マシン１のライブマイグレーションを行う場合に、ＰＣＩスイッチ３の管理を行うためのものである。その管理の詳細については後述する。
【００２２】
ＰＣＩスイッチ３は、それぞれ４個の上流ポート３１、下流ポート３２の他に、上流ポート３２毎に設けられたＰＣＩブリッジ３３、各ＰＣＩブリッジ３３と各下流ポート３２間に配置された切替回路３４、デバイスエミュレータ３５、及び接続管理部３６を備える。
【００２３】
各ＰＣＩブリッジ３３は、対応する上流ポート３１を介したデータの送受信を中継する。切替回路３４は、ＰＣＩブリッジ３３（上流ポート３１）と下流ポート３２の間の接続関係を任意に切り替えることが可能な回路である。デバイスエミュレータ３５は、下流デバイス３２に接続されたＰＣＩデバイス２をエミュレートする。ＰＣＩデバイス２をエミュレートするために、ＰＣＩコンフィグレーションレジスタ３５ａを備えている。このＰＣＩコンフィグレーションレジスタ３５ａに格納すべきＰＣＩデバイス２のＰＣＩコンフィグレーション空間は、切替回路３４のコンフィグレーションレジスタ転送部３４ａがそのＰＣＩデバイス２から取得し、デバイスエミュレータ３５に出力される。
【００２４】
接続管理部３６は、切替回路３４におけるＰＣＩブリッジ３３（上流ポート３１）と下流ポート３２の間の接続関係を管理し、デバイスエミュレータ３５を制御する。このため、接続管理部３６は、接続切替部３６ａ、エミュレータ制御部３６ｂを備えている。
【００２５】
図２は、デバイスエミュレータ３５、切替回路３４、及び接続切替部３６ａの動作を説明する図である。ここで図２を参照し、デバイスエミュレータ３５、切替回路３４、及び接続切替部３６ａの動作について具体的に説明する。
【００２６】
図２に表すように、切替回路３４は、対応付けられたＰＣＩブリッジ３３がａ接点に接続されたスイッチ３４ｂを備えている。各スイッチ３４ｂは、ａ接点をｂ接点、及びｃ接点の何れかに接続させるものであり、ｂ接点は切替スイッチ３４ｃに接続させている。この切替スイッチ３４ｃは、スイッチ３４ｂ毎に、そのスイッチ３４ｂを接続すべき下流ポート３２に接続させるものである。それにより、各スイッチ３４ｂがａ接点とｂ接点を接続させている状況では、上流ポート３１と下流ポート３２の接続関係は切替スイッチ３４ｃによって管理される。
【００２７】
各スイッチ３４ｂのｃ接点には、エミュレータ３５ｂが接続されている。各エミュレータ３５ｂは、デバイスエミュレータ３５によって提供される疑似ＰＣＩデバイスである。各エミュレータ３５ｂは、それがｃ接点に接続されたスイッチ３４ｂのｂ接点が切替スイッチ３４ｃによって接続される下流ポート３２のＰＣＩデバイス２をエミュレートする。
【００２８】
各スイッチ３４ｂのｃ接点に接続されたエミュレータ３５ｂを実現させるか否か、及び実現させるべきＰＣＩデバイス２は、接続管理部３６のエミュレータ制御部３６ｂからデバイスエミュレータ３５に通知される。それにより、デバイスエミュレータ３５は、スイッチ３４ｂ毎に、エミュレートすべきＰＣＩデバイス２のエミュレートを行う。
【００２９】
接続管理部３６の接続切替部３６ａは、切替スイッチ３４ｃにおける接続関係の設定の他に、各スイッチ３４ｂのａ接点を接続させる接点の切り替えを行う。その切り替えは、エミュレータ制御部３６ｂのデバイスエミュレータ３５への指示に応じて、スイッチ３４ｂ毎に行われる。
【００３０】
デバイスエミュレータ３５によるエミュレートは、直接Ｉ／Ｏハードウェア１３ｂを使用する仮想マシン１１のライブマイグレーションのために行われる。例えば移行させる仮想マシン１１が稼動している移行元コンピュータがコンピュータ１−１、移行先コンピュータがコンピュータ１−２であり、その仮想マシン１１が直接Ｉ／Ｏハードウェア１３ｂを用いてアクセスするのが図１に表すようにＰＣＩスイッチ３の下流ポート３２−１に接続されたＰＣＩデバイスであると仮定する。その仮定では、接続管理部３６の接続切替部３６ａは、上流ポート３１−１のＰＣＩブリッジ３３にａ接点が接続されたスイッチ３４ｂではそのａ接点とｂ接点を接続させ、上流ポート３１−２のＰＣＩブリッジ３３にａ接点が接続されたスイッチ３４ｂではそのａ接点とｃ接点を接続させる（図２）。接続管理部３６のエミュレート制御部３６ｂは、デバイスエミュレータ３５に、下流ポート３２−１に接続されたＰＣＩデバイス２のなかでエミュレートを実行すべきＰＣＩデバイス２を指定して実行させる。そのようにして、コンピュータ１−１ではＰＣＩデバイス２へのアクセスを可能とさせ、コンピュータ１−２ではエミュレートされたＰＣＩデバイス２との間の通信を可能とさせる。
【００３１】
このようなことから、本実施形態では、移行元コンピュータ１上で移行させるべき仮想マシン１１を停止させる前に、移行先コンピュータ１上で作成した仮想マシン１１をＰＣＩデバイス２と接続させるホットプラグ処理を完了させることができる。また、移行先コンピュータ１でのＰＣＩデバイス２のコンフィグレーション処理、仮想マシンモニタ１２による直接Ｉ／Ｏハードウェア１３ｂの設定処理も、移行元コンピュータ１上の仮想マシン１１を停止する前に完了させる。この結果、移行元コンピュータ１上の仮想マシン１１を停止させた後に、それらの処理を行う従来と比較して、移行させる仮想マシン１１の停止時間を大幅に短縮させることができる。
【００３２】
上記のようなライブマイグレーションの実現のために、本実施形態では、ＰＣＩスイッチ３に、ＰＣＩデバイス２のエミュレーション機能（デバイスエミュレータ３５、エミュレータ制御部３６ｂ）、そのエミュレーション機能とＰＣＩデバイス２の間の接続切替機能（切替回路３４、接続切替部３６ａ）を搭載させている。それにより、ＰＣＩスイッチ３は、直接Ｉ／Ｏを使用する仮想マシン１１の移行先となるコンピュータ１に、その仮想マシン１１が直接的にアクセスするＰＣＩデバイス２との接続処理を実行可能な環境を提供する。例えば、移行先となるコンピュータ１がＰＣＩコンフィグレーションレジスタ３５ａに設定したコンフィグレーション情報を、ＰＣＩコンフィグレーションレジスタ２１へコンフィグレーションレジスタ転送部３４ａが転送する。このようにしているのは、ＰＣＩスイッチ３にそれらの機能を搭載させることにより、装置間での通信を抑え、仮想マシンの停止時間、更にはライブマイグレーションに要する時間をより短くさせるためである。
【００３３】
上記のようなライブマイグレーションは、移行元コンピュータ１、移行先コンピュータ１のそれぞれに搭載された仮想マシンモニタ１２の移行プログラム１２ａによって実現される。上記接続管理部３６の接続切替部３６ａ、エミュレータ制御部３６ｂの動作は、移行元コンピュータ１の移行プログラム１２ａのスイッチ管理機能１２ｄによって実現される。その実現のためにスイッチ管理機能１２ｄは、ＰＣＩスイッチ３に対し、例えばエミュレートを実行すべきＰＣＩデバイス２を表す情報、移行先のコンピュータ１を表す情報等の必要な情報を通知する。
【００３４】
図３は、直接Ｉ／Ｏハードウェア１３ｂを使用する仮想マシンのライブマイグレーションを行う場合に、移行元コンピュータ１、移行先コンピュータ１がそれぞれ実行する処理を表すフローチャートである。次に、図３を参照して、移行元コンピュータ１、移行先コンピュータ１がそれぞれ実行する処理について詳細に説明する。移行元コンピュータ１、移行先コンピュータ１の図３に表す処理は、移行元コンピュータ１、移行先コンピュータ１にそれぞれ搭載された１つ以上のＣＰＵ１３ｃが仮想マシンモニタ１２を実行することで実現される。
【００３５】
図３にフローチャートを表す処理の説明では、理解を容易とするために、移行させる仮想マシン１１が稼動している移行元コンピュータはコンピュータ１−１、移行先コンピュータはコンピュータ１−２と想定する。また、その仮想マシン１１が直接的にアクセスするＰＣＩデバイス２はＰＣＩスイッチ３の下流ポート３２−１に接続され、コンピュータ１−１、１−２はそれぞれ、ＰＣＩスイッチ３の上流ポート３１−１、３１−２に接続されていると想定する。
【００３６】
先ず、コンピュータ１−１の仮想マシンモニタ１２は、オペレータのライブマイグレーションの指示により、移行プログラム１２ａを起動させる。起動された移行プログラム１２ａは、移行先のコンピュータ１−２に、通信路４を介して、仮想マシン１１の移行処理を開始する旨を通知する（Ｓ１０１）。移行先のコンピュータ１−２の仮想マシンモニタ１２は、その通知を受信すると、移行プログラム１２ａを起動させる（Ｓ２０１）。
【００３７】
上記通知を送信したコンピュータ１−１の移行プログラム１２ａは、移行対象の仮想マシン１１が直接的にアクセスＰＣＩデバイス２の情報（図３中「デバイス情報」と表記）等を取得し（Ｓ１０２）、取得した情報、仮想マシン１１の使用メモリ量、その定義ファイルの内容等を、通信路４を介してコンピュータ１−２に送信する（Ｓ１０３）。コンピュータ１−２の移行プログラム１２ａは、コンピュータ１−１からそれらの情報を受信するのを待って（Ｓ２０２）、移行対象とする仮想マシン１１を作成する（Ｓ２０３）。作成した仮想マシン１１は停止状態とされる。
【００３８】
コンピュータ１−１の移行プログラム１２ａは、次に、ＰＣＩスイッチ設定通信路６を介して、ＰＣＩスイッチ３に、ＰＣＩデバイス２のエミュレーションを指示し（Ｓ１０４）、更にエミュレーションによるＰＣＩデバイス２のコンピュータ１−２への接続を指示する（Ｓ１０５）。それらの指示は、スイッチ管理機能１２ｄにより行われる。その指示を行った後に、移行プログラム１２ａは、通信路４を介して、コンピュータ１−２にＰＣＩデバイス２との接続を指示する（Ｓ１０５）。
【００３９】
ＰＣＩスイッチ３の接続管理部３６は、コンピュータ１−１からの指示に従い、デバイスエミュレータ３５にＰＣＩデバイス２のエミュレーションを開始させ、上流ポート３１−２のＰＣＩブリッジ３３にａ接点が接続されたスイッチ３４ｂを制御して、そのスイッチ３４ｂのａ接点とｃ接点を接続させる。このエミュレーションを開始する前に、デバイスエミュレータ３５は、切替回路３４のコンフィグレーションレジスタ転送部３４ａから、ＰＣＩデバイス２のＰＣＩコンフィグレーション空間を取得し、ＰＣＩコンフィグレーションレジスタ３５ａに格納する。このエミュレーションの開始、上記スイッチ３４ｂの切替制御により、エミュレーションによるＰＣＩデバイス２とコンピュータ１−２との間で通信が可能な状態となる。その状態に移行した後、コンピュータ１−２の移行プログラム１２ａは、ケーブル５を介したＰＣＩデバイス２へのアクセスにより接続処理を行う。その接続処理には、上記ホットプラグ処理、ＰＣＩデバイス２のコンフィグレーション処理、直接Ｉ／Ｏハードウェア１３ｂの設定処理が含まれる。コンピュータ１−２の移行プログラム１２ａは、そのような接続処理を行った後、接続の完了をコンピュータ１−１に通知する（以上Ｓ２０４）。
【００４０】
コンピュータ１−２上に作成された仮想マシン１１は、接続処理を実行した段階では動作させていない。このため、エミュレーションによるＰＣＩデバイス２に対して、仮想マシン１１のゲストＯＳ（オペレーティングシステム）上のデバイスドライバによるアクセスは発生しない。この結果、コンピュータ１−２の移行プログラム１２ａは、ＰＣＩデバイス２がエミュレーションによるものか否かに係わらず、接続処理を実行することができる。
【００４１】
コンピュータ１−１の移行プログラム１２ａは、コンピュータ１−２からの接続完了の通知を受信すると、稼働中の仮想マシン１１の状態を記録するために、当該仮想マシン１１のページテーブルの変更と、仮想マシン１１のハードウェア機能をエミュレーションするデバイスモデルのＩ／Ｏ転送の監視を開始する。続いて、直接Ｉ／ＯによるＰＣＩデバイス２との間のＤＭＡ転送の監視を行うよう、ＰＣＩスイッチ３に対して指示を行う（Ｓ１０６）。これらは、周知の技術を用いて行われる。このような監視は、コンピュータ１−２からの接続完了の通知を待って行わなくとも良い。
【００４２】
コンピュータ１−１の移行プログラム１２ａは、このような監視を開始した後、仮想マシン１１のメモリ内容(ページ)を、コンピュータ１−２に転送する（Ｓ１０７）。コンピュータ１−２の移行プログラム１２ａは、転送されたページを受信すると（Ｓ２０５）、作成した仮想マシン１１のメモリ空間に受信したページをコピーし、仮想マシン１１のページテーブルの作成を行う（Ｓ２０６）。
【００４３】
このコンピュータ１−１の移行プログラム１２ａによるページの転送は、転送量が一定量を超えるまで繰り返し行われる。そのページの転送が行われる度に、コンピュータ１−２の移行プログラム１２ａによる対応が行われる。
【００４４】
コンピュータ１−１の移行プログラム１２ａは、メモリ転送量が一定量を超えたら、移行対象の仮想マシンを一時停止する（Ｓ１０８）、次に移行プログラム１２ａは、ＰＣＩスイッチ３に対して、ＰＣＩデバイス２とコンピュータ１−１間のＤＭＡ転送を停止するよう指示し、それまでのＰＣＩデバイス２とコンピュータ１−１間のＤＭＡ転送により変更されたページの一覧をＰＣＩスイッチ３から取得する（Ｓ１０９）。その後、移行プログラム１２ａのスイッチ管理機能１２ｄは、ＰＣＩスイッチ３に対して、デバイスエミュレータ３５とＰＣＩデバイス２の切り替えを指示する（Ｓ１１０）。
【００４５】
スイッチ管理機能１２ｄの指示により、ＰＣＩスイッチ３の接続管理部３６の接続切替部３６ａは、切替回路３４において上流ポート３１−１のＰＣＩブリッジ３３にａ接点が接続されたスイッチ３４ｂを制御して、そのスイッチ３４ｂのａ接点とｃ接点を接続させる。また、接続切替部３６ａは、上流ポート３１−２のＰＣＩブリッジ３３にａ接点が接続されたスイッチ３４ｂを制御して、そのスイッチ３４ｂのａ接点とｂ接点を接続させ、切替スイッチ３４ｃを制御して、そのｂ接点を下流ポート３２−１に接続させる。この結果、コンピュータ１−１はＰＣＩスイッチ３のデバイスエミュレータ３５と接続され、コンピュータ１−２はＰＣＩスイッチ３を介してＰＣＩデバイス２と接続される。なお、この切り替えでは、ＰＣＩスイッチ３からコンピュータ１−２に対して、ＰＣＩデバイス２の接続・切断の通知は行われず、コンピュータ１−２にその切り替えは関知されない。コンピュータ１−２にはＰＣＩデバイス２が継続して接続されていると認識される。
【００４６】
上記ＰＣＩスイッチ３における切替処理の後、コンピュータ１−１の移行プログラム１２ａは、コンピュータ１−２に対して、変更されたページ、上記監視により得られたＣＰＵ１３ｃ及びデバイスモデルの状態を送信する（Ｓ１１１）。コンピュータ１−２の移行プログラム１２ａは、変更されたページ、ＣＰＵ１３ｃ及びデバイスモデルの状態を受信すると、受信したこれらの内容を仮想マシン１１に反映し（Ｓ２０７）、それらの受信をＰＣＩスイッチ３における接続切り替えの完了通知と見なして仮想マシン１１を再開させ、その再開をコンピュータ１−１に通知する（Ｓ２０８）。
【００４７】
仮想マシン１１の再開時、コンピュータ１−２はＰＣＩスイッチ３を介してＰＣＩデバイス２と接続されている。このため、仮想マシン１１は、移行元のコンピュータ１−１のときと同様に、直接Ｉ／Ｏにより、ＰＣＩデバイス２を利用することができる。このことから、コンピュータ１−２の移行プログラム１２ａは、仮想マシン１１の再開をコンピュータ１−１に通知することにより、仮想マシン１１の移行に係わる処理を終了する。
【００４８】
コンピュータ１−１の移行プログラム１２ａは、コンピュータ１−２から仮想マシン１１の再開通知を受信すると、移行対象の仮想マシン１１を削除する（Ｓ１１２）。次に移行プログラム１２ａのスイッチ管理機能１２ｄは、ＰＣＩスイッチ３に指示して、コンピュータ１−１とデバイスエミュレータ３５の接続を切断させ、ＰＣＩデバイス２のエミュレーションを終了させる（Ｓ１１３）。そのような切断処理をＰＣＩスイッチ３に行わせた後、コンピュータ１−１の移行プログラム１２ａは、仮想マシン１１の移行に係わる処理を完了する。
【００４９】
スイッチ管理機能１２ｄの指示により、ＰＣＩスイッチ３の接続管理部３６のエミュレータ制御部３６ｂは、デバイスエミュレータ３５によるエミュレーションを終了させる。このとき、コンピュータ１−１はデバイスエミュレータ３５と接続されているため、切替回路３４のコンピュータ１−１と接続されたスイッチ３４ｂ、切替スイッチ３４ｃに対する制御は不要である。このことから、接続切替部３６ａは動作させなくとも良い。
【００５０】
なお、本実施形態では、ＰＣＩスイッチ３に接続管理部３６及びデバイスエミュレータ３５を搭載させているが、これら接続管理部３６及びデバイスエミュレータ３５の少なくとも一方を、コンピュータシステムを構成するＰＣＩスイッチ３とは別の装置に搭載させても良い。また、コンピュータ１−１、１−２とは別の装置にライブマイグレーションを管理させ、その別の装置にＰＣＩスイッチ３への指示を行わせるようにしても良い。このようなことから、本発明の適用は様々な変形が可能である。
【符号の説明】
【００５１】
１、１−１、１−２    コンピュータ
２    ＰＣＩデバイス
３    ＰＣＩスイッチ
１１、１１−１〜１１−ｎ    仮想マシン
１２    仮想マシンモニタ
１２ａ    移行プログラム
１２ｄ    スイッチ管理機能
１３    ハードウェア群
３４    切替回路
３４ａ    スイッチ
３４ｃ    切替スイッチ
３５    デバイスエミュレータ
３６    接続管理部
３６ａ    接続切替部
３６ｂ    エミュレータ制御部
【図１】
0005742387.tif 000002
【図２】
0005742387.tif 000003
【図３】
0005742387.tif 000004