複数のコンピュータを備えたコンピュータシステムにおいて、前記コンピュータシステムは、前記複数のコンピュータとして、仮想マシンが作成される第1のコンピュータと、該第1のコンピュータ上の仮想マシンを移行可能な第2のコンピュータと、を少なくとも備えると共に、該第1のコンピュータ、及び該第2のコンピュータとの間でデータの入出力を行うことが可能なI/Oデバイスと、該I/Oデバイスと該第1のコンピュータ、或いは該第2のコンピュータとの間でデータの入出力を中継するI/Oスイッチと、を備え、前記第1のコンピュータ上で稼働中であり、前記I/Oデバイスに直接的にアクセスできる仮想マシンを前記第2のコンピュータ上に移行させるライブマイグレーションを行う場合に、前記I/Oデバイスのエミュレーションを行うエミュレーション手段と、前記第1のコンピュータ上の前記仮想マシンを停止させるまでの間、前記第1のコンピュータを前記I/Oデバイスに接続させ、且つ前記第2のコンピュータを前記エミュレーション手段に接続させると共に、前記第1のコンピュータ上の前記仮想マシンを停止させた後、前記第2のコンピュータを前記I/Oデバイスに接続させる接続切替手段と、を具備することを特徴とするコンピュータシステム。前記エミュレーション手段、及び前記接続切替手段は、前記第1のコンピュータからの指示により、前記I/Oスイッチを用いて実現される、ことを特徴とする請求項1記載のコンピュータシステム。前記第1のコンピュータは、前記I/Oスイッチを用いて前記エミュレーション手段、及び前記接続切替手段を実現させた後、前記接続切替手段により、前記仮想マシンを作成して停止させた後の前記第2のコンピュータを前記エミュレーション手段に接続させる、ことを特徴とする請求項2記載のコンピュータシステム。複数のコンピュータ、及び複数のI/Oデバイスを接続可能なI/Oスイッチにおいて、前記複数のI/Oデバイスのなかで指定されたI/Oデバイスのエミュレーションを行うエミュレーション手段と、前記複数のコンピュータの接続先を、前記エミュレーション手段と、該エミュレーション手段がエミュレーションを行っているI/Oデバイスとの間で切り替え可能な接続切替手段と、を具備することを特徴とするI/Oスイッチ。I/Oデバイスが接続されるI/Oポートを有する第1のコンピュータと、I/Oデバイスが接続されるI/Oポートを有する第2のコンピュータと、前記第1のコンピュータが有するI/Oポートと、前記第2のコンピュータが有するI/Oポートとに接続され、前記I/Oポートと接続先のデバイスとの接続を切り換えるI/Oスイッチと、前記I/Oスイッチ接続されるI/Oデバイスとを備え、前記I/Oデバイスは、DMA転送を行うために設定されるアドレス情報を保持するコンフィグレジシスタを有し、前記I/Oスイッチは、前記コンフィグレジシスタのコンフィグレーション空間情報を取得し、前記コンフィグレーション空間情報に基づいて設定されるアドレス情報を前記コンフィグレジシスタへ転送するコンフィグレジスタ転送部と、前記取得したコンフィグレーション空間情報に基づいて、切り換え先のコンピュータへ前記I/Oデバイスのデバイスエミュレートを行い、切り換え先のコンピュータから設定されるアドレス情報を取得するデバイスエミュレータとを有し、前記I/Oデバイスと前記コンフィグレジスタ転送部とを接続し、前記I/Oデバイスのコンフィグレーション空間情報を取得し、前記第2のコンピュータと前記デバイスエミュレータとを接続し、前記第2のコンピュータから設定されるアドレス情報を取得し、前記I/Oデバイスと前記コンフィグレジスタ転送部とを接続し、前記取得したアドレス情報を、前記I/Oデバイスのコンフィグレジシスタへ転送し、前記第2のコンピュータの接続先を前記デバイスエミュレータから前記アドレス情報が転送されたI/Oデバイスへ切り換えることを特徴とするコンピュータシステム。本発明は、直接I/Oを使用する仮想マシンのライブマイグレーションに伴う停止時間をより短くするための技術を提供することを目的とする。本発明を適用した1システムは、仮想マシンが作成される第1のコンピュータと、該第1のコンピュータ上の仮想マシンを移行可能な第2のコンピュータと、を少なくとも備えると共に、該第1のコンピュータ、及び該第2のコンピュータとの間でデータの入出力を行うことが可能なI/Oデバイスと、該I/Oデバイスと該第1のコンピュータ、或いは該第2のコンピュータとの間でデータの入出力を中継するI/Oスイッチと、を備え、更に、第1のコンピュータ上で稼働中であり、I/Oデバイスに直接的にアクセスできる仮想マシンを第2のコンピュータ上に移行させるライブマイグレーションを行う場合に、I/Oデバイスのエミュレーションを行うエミュレーション手段と、第1のコンピュータ上の仮想マシンを停止させるまでの間、第1のコンピュータをI/Oデバイスに接続させ、且つ第2のコンピュータをエミュレーション手段に接続させると共に、第1のコンピュータ上の仮想マシンを停止させた後、第2のコンピュータをI/Oデバイスに接続させる接続切替手段と、を具備する。本発明を適用した場合には、直接I/Oを使用する仮想マシンのライブマイグレーションに伴う停止時間をより短くすることができる。以下、本発明の実施形態について、図面を参照しながら詳細に説明する。図1は、本実施形態によるコンピュータシステムの構成を説明する図である。この図1に表す構成例は、本実施形態によるコンピュータシステムに必要な最小限の構成要素を用いて構築されたものである。そのコンピュータシステムは、2台のコンピュータ物理的な計算機11-1~1-2、I/OデバイスであるPCIデバイス2、2台のコンピュータ1とPCIデバイス2間のデータの入出力を中継するI/OスイッチであるPCIスイッチ3を備えている。コンピュータ1-1、1-2間は、通信路4によって接続されている。PCIスイッチ3は、コンピュータとの接続用に上流ポート31を備え、PCIデバイス2との接続用に下流ポート32を備えている。図1では、PCIスイッチ3は、4個の上流ポート31-1~31-4を備えると共に、4個の下流ポート32-1~32-4を備えている。各コンピュータ1-1、1-2と上流ポート31との接続はケーブル5により行われる。PCIスイッチ3は、各コンピュータ1-1、1-2とPCIスイッチ設定通信路6により接続されている。このPCIスイッチ設定通信路6は、例えばLANLocalAreaNetworkといった通信ネットワークである。本実施形態によるI/Oスイッチは、PCIスイッチ3として実現されている。各コンピュータ1-1、1-2上には、複数の仮想マシン1111-1~11-nが作成されている。各コンピュータ1-1、1-2上で動作するプログラムである仮想マシンモニタ12は、自身が実行されるコンピュータ1-1或いは1-2のハードウェア群13の上に、オペレータの指示仮想マシン定義ファイルに応じて、複数の仮想的なハードウェア環境を構築し、仮想マシン11を作成する。ハードウェア群13は、割り当てられたPCIデバイス2を表す情報であるPCIコンフィグレーション空間が格納された制御レジスタ13a、仮想マシン11がPCIデバイス2に直接的にアクセスするための直接I/OハードウェアHW13b、CPUCentralProcessingUnit13c、メモリモジュール13d、ネットワークカード図1中Netと表記13e、スロット13f等を含む。直接I/Oハードウェア13bによるPCIデバイス2へのアクセスは、制御レジスタ13aを参照して行われる。上記PCIコンフィグレーション空間は、PCIデバイス2のPCIコンフィグレジスタ21にも格納されている。仮想マシンモニタ12は、直接I/O、つまり直接I/Oハードウェア13bを用いたPCIデバイス2へのアクセスに対応するための直接I/O機能12b、仮想マシン11毎にPCIデバイス2のリソースアドレス空間の割り当てを管理するPCIリソース管理機能12cを備えている。各機能12b、12cは、仮想マシンモニタ12に搭載されたサブプログラムである。仮想マシンモニタ12は、直接I/Oを使用する仮想マシン11のライブマイグレーションに対応している。仮想マシンモニタ12の移行プログラム12aは、そのライブマイグレーションを実現させるサブプログラムであり、スイッチ管理機能12dをサブプログラムとして備えている。このスイッチ管理機能12dは、直接I/Oを使用する仮想マシン1のライブマイグレーションを行う場合に、PCIスイッチ3の管理を行うためのものである。その管理の詳細については後述する。PCIスイッチ3は、それぞれ4個の上流ポート31、下流ポート32の他に、上流ポート32毎に設けられたPCIブリッジ33、各PCIブリッジ33と各下流ポート32間に配置された切替回路34、デバイスエミュレータ35、及び接続管理部36を備える。各PCIブリッジ33は、対応する上流ポート31を介したデータの送受信を中継する。切替回路33は、PCIブリッジ33上流ポート31と下流ポート32の間の接続関係を任意に切り替えることが可能な回路である。デバイスエミュレータ35は、下流デバイス32に接続されたPCIデバイス2をエミュレートする。PCIデバイス2をエミュレートするために、PCIコンフィグレーションレジスタ35aを備えている。このPCIコンフィグレーションレジスタ35aに格納すべきPCIデバイス2のPCIコンフィグレーション空間は、切替回路33のコンフィグレーションレジスタ転送部34aがそのPCIデバイス2から取得し、デバイスエミュレータ35に出力される。接続管理部36は、切替回路33におけるPCIブリッジ33上流ポート31と下流ポート32の間の接続関係を管理し、デバイスエミュレータ35を制御する。このため、接続管理部36は、接続切替部36a、エミュレータ制御部36bを備えている。図2は、デバイスエミュレータ35、切替回路33、及び接続切替部36aの動作を説明する図である。ここで図2を参照し、デバイスエミュレータ35、切替回路33、及び接続切替部36aの動作について具体的に説明する。図2に表すように、切替回路33は、対応付けられたPCIブリッジ33がa接点に接続されたスイッチ34bを備えている。各スイッチ34bは、a接点をb接点、及びc接点の何れかに接続させるものであり、b接点は切替スイッチ34cに接続させている。この切替スイッチ34cは、スイッチ34b毎に、そのスイッチ34bを接続すべき下流ポート32に接続させるものである。それにより、各スイッチ34bがa接点とb接点を接続させている状況では、上流ポート31と下流ポート32の接続関係は切替スイッチ34cによって管理される。各スイッチ34bのc接点には、エミュレータ35bが接続されている。各エミュレータ35bは、デバイスエミュレータ35によって提供される疑似PCIデバイスである。各エミュレータ35bは、それがc接点に接続されたスイッチ34bのb接点が切替スイッチ34cによって接続される下流ポート32のPCIデバイス2をエミュレートする。各スイッチ34bのc接点に接続されたエミュレータ35bを実現させるか否か、及び実現させるべきPCIデバイス2は、接続管理部36のエミュレータ制御部36bからデバイスエミュレータ35に通知される。それにより、デバイスエミュレータ35は、スイッチ34b毎に、エミュレートすべきPCIデバイス2のエミュレートを行う。接続管理部36の接続切替部36aは、切替スイッチ34cにおける接続関係の設定の他に、各スイッチ34bのa接点を接続させる接点の切り替えを行う。その切り替えは、エミュレータ制御部36bのデバイスエミュレータ35への指示に応じて、スイッチ34b毎に行われる。デバイスエミュレータ35によるエミュレートは、直接I/Oハードウェア13bを使用する仮想マシン11のライブマイグレーションのために行われる。例えば移行させる仮想マシン11が稼動している移行元コンピュータがコンピュータ1-1、移行先コンピュータがコンピュータ1-2であり、その仮想マシン11が直接I/Oハードウェア13bを用いてアクセスするのが図1に表すようにPCIスイッチ3の下流ポート32-1に接続されたPCIデバイスであると仮定する。その仮定では、接続管理部36の接続切替部36aは、上流ポート31-1のPCIブリッジ33にa接点が接続されたスイッチ34bではそのa接点とb接点を接続させ、上流ポート31-2のPCIブリッジ33にa接点が接続されたスイッチ34bではそのa接点とc接点を接続させる図2。接続管理部36のエミュレート制御部36bは、デバイスエミュレータ35に、下流ポート32-1に接続されたPCIデバイス2のなかでエミュレートを実行すべきPCIデバイス2を指定して実行させる。そのようにして、コンピュータ1-1ではPCIデバイス2へのアクセスを可能とさせ、コンピュータ1-2ではエミュレートされたPCIデバイス2との間の通信を可能とさせる。このようなことから、本実施形態では、移行元コンピュータ1上で移行させるべき仮想マシン11を停止させる前に、移行先コンピュータ1上で作成した仮想マシン11をPCIデバイス2と接続させるホットプラグ処理を完了させることができる。また、移行先コンピュータ1でのPCIデバイス2のコンフィグレーション処理、仮想マシンモニタ12による直接I/Oハードウェア13bの設定処理も、移行元コンピュータ1上の仮想マシン11を停止する前に完了させる。この結果、移行元コンピュータ1上の仮想マシン11を停止させた後に、それらの処理を行う従来と比較して、移行させる仮想マシン11の停止時間を大幅に短縮させることができる。上記のようなライブマイグレーションの実現のために、本実施形態では、PCIスイッチ3に、PCIデバイス2のエミュレーション機能デバイスエミュレータ35、エミュレータ制御部36b、そのエミュレーション機能とPCIデバイス2の間の接続切替機能切替回路34、接続切替部36aを搭載させている。それにより、PCIスイッチ3は、直接I/Oを使用する仮想マシン11の移行先となるコンピュータ1に、その仮想マシン11が直接的にアクセスするPCIデバイス2との接続処理を実行可能な環境を提供する。例えば、移行先となるコンピュータ1がPCIコンフィグレーションレジスタ35aに設定したコンフィグレーション情報を、PCIコンフィグレーションレジスタ21へコンフィグレーションレジスタ転送部34aが転送する。このようにしているのは、PCIスイッチ3にそれらの機能を搭載させることにより、装置間での通信を抑え、仮想マシンの停止時間、更にはライブマイグレーションに要する時間をより短くさせるためである。上記のようなライブマイグレーションは、移行元コンピュータ1、移行先コンピュータ1のそれぞれに搭載された仮想マシンモニタ12の移行プログラム12aによって実現される。上記接続管理部36の接続切替部36a、エミュレータ制御部36bの動作は、移行元コンピュータ1の移行プログラム12aのスイッチ管理機能12dによって実現される。その実現のためにスイッチ管理機能12dは、PCIスイッチ3に対し、例えばエミュレートを実行すべきPCIデバイス2を表す情報、移行先のコンピュータ1を表す情報等の必要な情報を通知する。図3は、直接I/Oハードウェア13bを使用する仮想マシンのライブマイグレーションを行う場合に、移行元コンピュータ1、移行先コンピュータ1がそれぞれ実行する処理を表すフローチャートである。次に、図3を参照して、移行元コンピュータ1、移行先コンピュータ1がそれぞれ実行する処理について詳細に説明する。移行元コンピュータ1、移行先コンピュータ1の図3に表す処理は、移行元コンピュータ1、移行先コンピュータ1にそれぞれ搭載された1つ以上のCPU13cが仮想マシンモニタ12を実行することで実現される。図3にフローチャートを表す処理の説明では、理解を容易とするために、移行させる仮想マシン11が稼動している移行元コンピュータはコンピュータ1-1、移行先コンピュータはコンピュータ1-2と想定する。また、その仮想マシン11が直接的にアクセスするPCIデバイス2はPCIスイッチ3の下流ポート32-1に接続され、コンピュータ1-1、1-2はそれぞれ、PCIスイッチ3の上流ポート31-1、31-2に接続されていると想定する。先ず、コンピュータ1-1の仮想マシンモニタ12は、オペレータのライブマイグレーションの指示により、移行プログラム12aを起動させる。起動された移行プログラム12aは、移行先のコンピュータ1-2に、通信路4を介して、仮想マシン11の移行処理を開始する旨を通知するS101。移行先のコンピュータ1-2の仮想マシンモニタ12は、その通知を受信すると、移行プログラム12aを起動させるS201。上記通知を送信したコンピュータ1-1の移行プログラム12aは、移行対象の仮想マシン11が直接的にアクセスPCIデバイス2の情報図3中デバイス情報と表記等を取得しS102、取得した情報、仮想マシン11の使用メモリ量、その定義ファイルの内容等を、通信路4を介してコンピュータ1-2に送信するS103。コンピュータ1-2の移行プログラム12aは、コンピュータ1-1からそれらの情報を受信するのを待ってS202、移行対象とする仮想マシン11を作成するS203。作成した仮想マシン11は停止状態とされる。コンピュータ1-1の移行プログラム12aは、次に、PCIスイッチ設定通信路6を介して、PCIスイッチ3に、PCIデバイス2のエミュレーションを指示しS104、更にエミュレーションによるPCIデバイス2のコンピュータ1-2への接続を指示するS105。それらの指示は、スイッチ管理機能12dにより行われる。その指示を行った後に、移行プログラム12aは、通信路4を介して、コンピュータ1-2にPCIデバイス2との接続を指示するS105。PCIスイッチ3の接続管理部36は、コンピュータ1-1からの指示に従い、デバイスエミュレータ35にPCIデバイス2のエミュレーションを開始させ、上流ポート31-2のPCIブリッジ33にa接点が接続されたスイッチ34bを制御して、そのスイッチ34bのa接点とc接点を接続させる。このエミュレーションを開始する前に、デバイスエミュレータ35は、切替回路34のコンフィグレーションレジスタ転送部34aから、PCIデバイス2のPCIコンフィグレーション空間を取得し、PCIコンフィグレーションレジスタ35aに格納する。このエミュレーションの開始、上記スイッチ34bの切替制御により、エミュレーションによるPCIデバイス2とコンピュータ1-2との間で通信が可能な状態となる。その状態に移行した後、コンピュータ1-2の移行プログラム12aは、ケーブル5を介したPCIデバイス2へのアクセスにより接続処理を行う。その接続処理には、上記ホットプラグ処理、PCIデバイス2のコンフィグレーション処理、直接I/Oハードウェア13bの設定処理が含まれる。コンピュータ1-2の移行プログラム12aは、そのような接続処理を行った後、接続の完了をコンピュータ1-1に通知する以上S204。コンピュータ1-2上に作成された仮想マシン11は、接続処理を実行した段階では動作させていない。このため、エミュレーションによるPCIデバイス2に対して、仮想マシン11のゲストOSオペレーティングシステム上のデバイスドライバによるアクセスは発生しない。この結果、コンピュータ1-2の移行プログラム12aは、PCIデバイス2がエミュレーションによるものか否かに係わらず、接続処理を実行することができる。コンピュータ1-1の移行プログラム12aは、コンピュータ1-2からの接続完了の通知を受信すると、稼働中の仮想マシン11の状態を記録するために、当該仮想マシン11のページテーブルの変更と、仮想マシン11のハードウェア機能をエミュレーションするデバイスモデルのI/O転送の監視を開始する。続いて、直接I/OによるPCIデバイス2との間のDMA転送の監視を行うよう、PCIスイッチ3に対して指示を行うS106。これらは、周知の技術を用いて行われる。このような監視は、コンピュータ1-2からの接続完了の通知を待って行わなくとも良い。コンピュータ1-1の移行プログラム12aは、このような監視を開始した後、仮想マシン11のメモリ内容を、コンピュータ1-2に転送するS107。コンピュータ1-2の移行プログラム12aは、転送されたページを受信するとS205、作成した仮想マシン11のメモリ空間に受信したページをコピーし、仮想マシン11のページテーブルの作成を行うS206。このコンピュータ1-1の移行プログラム12aによるページの転送は、転送量が一定量を超えるまで繰り返し行われる。そのページの転送が行われる度に、コンピュータ1-2の移行プログラム12aによる対応が行われる。コンピュータ1-1の移行プログラム12aは、メモリ転送量が一定量を超えたら、移行対象の仮想マシンを一時停止するS108、次に移行プログラム12aは、PCIスイッチ3に対して、PCIデバイス3とコンピュータ1-1間のDMA転送を停止するよう指示し、それまでのPCIデバイス3とコンピュータ1-1間のDMA転送により変更されたページの一覧をPCIスイッチ3から取得するS109。その後、移行プログラム12aのスイッチ管理機能12dは、PCIスイッチ3に対して、デバイスエミュレータ35とPCIデバイス3の切り替えを指示するS110。スイッチ管理機能12dの指示により、PCIスイッチ3の接続管理部36の接続切替部36aは、切替回路34において上流ポート31-1のPCIブリッジ33にa接点が接続されたスイッチ34bを制御して、そのスイッチ34bのa接点とc接点を接続させる。また、接続切替部36aは、上流ポート31-2のPCIブリッジ33にa接点が接続されたスイッチ34bを制御して、そのスイッチ34bのa接点とb接点を接続させ、切替スイッチ34cを制御して、そのb接点を下流ポート32-1に接続させる。この結果、コンピュータ1-1はPCIスイッチ3のデバイスエミュレータ35と接続され、コンピュータ1-2はPCIスイッチ3を介してPCIデバイス2と接続される。なお、この切り替えでは、PCIスイッチ3からコンピュータ1-2に対して、PCIデバイス2の接続切断の通知は行われず、コンピュータ1-2にその切り替えは関知されない。コンピュータ1-2にはPCIデバイス2が継続して接続されていると認識される。上記PCIスイッチ3における切替処理の後、コンピュータ1-1の移行プログラム12aは、コンピュータ1-2に対して、変更されたページ、上記監視により得られたCPU13c及びデバイスモデルの状態を送信するS111。コンピュータ1-2の移行プログラム12aは、変更されたページ、CPU13c及びデバイスモデルの状態を受信すると、受信したこれらの内容を仮想マシン11に反映しS207、それらの受信をPCIスイッチ3における接続切り替えの完了通知と見なして仮想マシン11を再開させ、その再開をコンピュータ1-1に通知するS208。仮想マシン11の再開時、コンピュータ1-2はPCIスイッチ3を介してPCIデバイス2と接続されている。このため、仮想マシン11は、移行元のコンピュータ1-1のときと同様に、直接I/Oにより、PCIデバイス2を利用することができる。このことから、コンピュータ1-2の移行プログラム12aは、仮想マシン11の再開をコンピュータ1-1に通知することにより、仮想マシン11の移行に係わる処理を終了する。コンピュータ1-1の移行プログラム12aは、コンピュータ1-2から仮想マシン11の再開通知を受信すると、移行対象の仮想マシン11を削除するS112。次に移行プログラム12aのスイッチ管理機能12dは、PCIスイッチ3に指示して、コンピュータ1-1とデバイスエミュレータ35の接続を切断させ、PCIデバイス2のエミュレーションを終了させるS113。そのような切断処理をPCIスイッチ3に行わせた後、コンピュータ1-1の移行プログラム12aは、仮想マシン11の移行に係わる処理を完了する。スイッチ管理機能12dの指示により、PCIスイッチ3の接続管理部36のエミュレータ制御部36bは、デバイスエミュレータ35によるエミュレーションを終了させる。このとき、コンピュータ1-1はデバイスエミュレータ35と接続されているため、切替回路34のコンピュータ1-1と接続されたスイッチ34b、切替スイッチ34cに対する制御は不要である。このことから、接続切替部36aは動作させなくとも良い。なお、本実施形態では、PCIスイッチ3に接続管理部36及びデバイスエミュレータ35を搭載させているが、これら接続管理部36及びデバイスエミュレータ35の少なくとも一方を、コンピュータシステムを構成するPCIスイッチ3とは別の装置に搭載させても良い。また、コンピュータ1-1、1-2とは別の装置にライブマイグレーションを管理させ、その別の装置にPCIスイッチ3への指示を行わせるようにしても良い。このようなことから、本発明の適用は様々な変形が可能である。