(57)【要約】【課題】Ｉ／Ｏデバイスを直接制御している仮想マシンを稼動させたまま、サーバ間で仮想マシンを移動させることができるようにする。【解決手段】仮想マシンが稼動するサーバ１０及び２０とＩ／Ｏデバイス４０とをスター型接続方式で接続するバススイッチとしてのPCI Expressスイッチ３０に、Ｉ／Ｏデバイス４０からのメモリアクセス要求（パケット）を複製して同一内容のパケットをサーバ１０及び２０に送信するパケット複製ユニット３０Ｆと、指定アドレス領域に対するメモリアクセス要求を抑止する出力抑止ユニット３０Ｇと、割込みに係るメモリアクセス要求を複製対象から除外する複製除外ユニット３０Ｈと、を組み込む。そして、パケット複製ユニット３０Ｆ，出力抑止ユニット３０Ｇ及び複製除外ユニット３０Ｈを適宜制御し、仮想マシンを稼動させたまま移動させる。【選択図】図２
2010257209.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンが稼動する複数のサーバと入出力デバイスとをスター型接続方式で接続するバススイッチであって、
前記入出力デバイスから一のサーバへのメモリアクセス要求を複製して、複数のサーバに同一内容のメモリアクセス要求を送信する複製ユニットと、
第１の指定アドレス領域に対するメモリアクセス要求を抑止する抑止ユニットと、
前記複製ユニットにより複製されるメモリアクセス要求のうち、割込みに係るメモリアクセス要求を複製対象から除外する複製除外ユニットと、
を含むことを特徴とするバススイッチ。
【請求項２】
前記抑止ユニットは、前記入出力デバイスから一のサーバへのメモリアクセス要求を到着順にキューに順次蓄積することで、前記メモリアクセス要求を抑止することを特徴とする請求項１記載のバススイッチ。
【請求項３】
前記複製除外ユニットは、第２の指定アドレス領域に対するメモリアクセス要求を複製対象から除外することを特徴とする請求項１又は請求項２に記載のバススイッチ。
【請求項４】
仮想マシンが稼動する複数のサーバと入出力デバイスとをスター型接続方式で接続するバススイッチと、
前記バススイッチを制御する制御手段と、
を含み、
前記バススイッチは、前記入出力デバイスから一のサーバへのメモリアクセス要求を複製して、複数のサーバに同一内容のメモリアクセス要求を送信する複製ユニットと、第１の指定アドレス領域に対するメモリアクセス要求を抑止する抑止ユニットと、前記複製ユニットにより複製されるメモリアクセス要求のうち、割込みに係るメモリアクセス要求を複製対象から除外する複製除外ユニットと、を備える一方、
前記制御手段は、前記仮想マシンの移動指示があったときに、前記メモリアクセス要求が移動元サーバ及び移動先サーバに送信されるように前記複製ユニットを制御した後、前記移動元サーバの仮想マシンが使用していたメモリの内容を移動先サーバに転送している間に、転送中のメモリアドレス領域に対するメモリアクセス要求が抑止されるように前記抑止ユニットを制御すると共に、割込みに係るメモリアクセス要求が複製対象から除外されるように前記複製除外ユニットを制御すること
を特徴とするコンピュータシステム。
【請求項５】
仮想マシンが稼動する複数のサーバと入出力デバイスとの間に介在し、前記入出力デバイスから一のサーバへのメモリアクセス要求を複製して、複数のサーバに同一内容のメモリアクセス要求を送信する複製ユニットと、第１の指定アドレスに対するメモリアクセス要求を抑止する抑止ユニットと、前記複製ユニットにより複製されるメモリアクセス要求のうち、割込みに係るメモリアクセス要求を複製対象から除外する複製除外ユニットと、を備えたバススイッチを制御するコンピュータが、
前記仮想マシンの移動指示があったときに、前記メモリアクセス要求が移動元サーバ及び移動先サーバに送信されるように前記複製ユニットを制御するステップと、前記移動元サーバの仮想マシンが使用していたメモリの内容を移動先サーバに転送している間に、転送中のメモリアドレス領域に対するメモリアクセス要求が抑止されるように前記抑止ユニットを制御するステップと、割込みに係るメモリアクセス要求が複製対象から除外されるように前記複製除外ユニットを制御するステップと、
を実行することを特徴とするコンピュータシステムの管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ間で仮想マシンを移動させる技術に関する。
【背景技術】
【０００２】
近年、ハイパーバイザと呼ばれる制御プログラムにより、１台の物理サーバ上に複数台の仮想マシンを構築し、各仮想マシンごとに任意のＯＳ（Operating System）やアプリケーションを動作させる仮想化技術が実用化されている。仮想マシンは、ハイパーバイザにより仮想化されたメモリアドレスを利用するため、ハイパーバイザを介して入出力デバイス（Ｉ／Ｏデバイス）を制御しなければならず、Ｉ／Ｏデバイスをアクセスするときにオーバヘッドが生じて性能低下をもたらしている。このため、ハイパーバイザにより仮想化されたメモリアドレスとＩ／Ｏデバイスのメモリアドレスとを相互に変換する機構を備えることで、仮想マシンからＩ／Ｏデバイスを直接制御できるようにした技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２１２５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、仮想マシン環境では、例えば、夜間など稼働率が低下したときに、仮想マシンを１台の物理サーバに集約することで、省電力化を図ることが可能となる。しかし、Ｉ／Ｏデバイスを直接制御している仮想マシンでは、Ｉ／Ｏデバイスの状態をハイパーバイザが管理していないため、仮想マシンを稼動させたまま移動させることができなかった。
【０００５】
そこで、従来技術の問題点に鑑み、Ｉ／Ｏデバイスを直接制御している仮想マシンを稼動させたまま、サーバ間で仮想マシンを移動させることができるようにした技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
このため、本技術では、仮想マシンが稼動する複数のサーバと入出力デバイスとをスター型接続方式で接続するバススイッチに、入出力デバイスからのメモリアクセス要求を複製して同一内容のメモリアクセス要求を複数のサーバに送信する複製ユニットと、第１の指定アドレス領域に対するメモリアクセス要求を抑止する抑止ユニットと、割込みに係るメモリアクセス要求を複製対象から除外する複製除外ユニットと、を組み込む。また、本技術では、仮想マシンの移動指示があったときに、メモリアクセス要求が移動元サーバ及び移動先サーバに送信されるように複製ユニットを制御し、移動元サーバの仮想マシンが使用していたメモリの内容を移動先サーバに転送している間に、転送中のメモリアドレス領域に対するメモリアクセス要求が抑止されるように抑止ユニットを制御し、割込みに係るメモリアクセス要求が複製対象から除外されるように複製除外ユニットを制御する。
【発明の効果】
【０００７】
本技術によれば、入出力デバイスを直接制御する仮想マシンを稼動させたまま、仮想マシンを移動元サーバから移動先サーバに移動させることができる。
【図面の簡単な説明】
【０００８】
【図１】本技術を適用したコンピュータシステムの一実施形態図である。
【図２】PCI Expressスイッチの詳細構成図である。
【図３】PCI Expressスイッチの動作を説明するフローチャートである。
【図４】移動元サーバで実行される移動処理のフローチャートである。
【図５】移動元サーバで実行される移動処理のフローチャートである。
【図６】移動先サーバで実行される移動処理のフローチャートである。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照して本技術を詳述する。
図１は、本技術を適用したコンピュータシステムの一実施形態を示す。
２台の物理サーバ（以下「サーバ」という）１０及び２０は、スター型接続方式を採用するバススイッチとしてのPCI Expressスイッチ３０（登録商標）を介して、ネットワークアダプタやハードディクスコントローラなどのＩ／Ｏデバイス４０に接続される。サーバ１０は、中央処理装置ＣＰＵ，メモリＭＥＭ及びＩＯハブＨＵＢを含む。また、サーバ１０では、仮想化技術を具現化するハイパーバイザ１２により、仮想的なコンピュータとしての少なくとも１台の仮想マシン（ＶＭ；Virtual Machine）１４が構築される。仮想マシン１４は、ＩＯハブＨＵＢに組み込まれたＩＯＭＭＵ（Input/Output Memory Management Unit）１６を介して、ハイパーバイザ１２により仮想化されたメモリアドレスを有するＶＭメモリ１８とＩ／Ｏデバイス４０との間でデータを直接授受できるようになっている。ここで、ＩＯＭＭＵ１６は、ＶＭメモリ１８のメモリアドレスとＩ／Ｏデバイス４０のメモリアドレスを相互に変換するためのハードウエアである。サーバ２０は、サーバ１０と同一構成であるため、その説明は省略するものとする。また、サーバ１０及び２０は、仮想マシン制御のためハイパーバイザが使用する管理ネットワーク５０に、ＮＩＣ（Network Interface Controller）６０を経由して接続されているものとする。
【００１０】
なお、制御手段の一例としてのハイパーバイザ１２及び２２は、ＣＤ−ＲＯＭなどのコンピュータ読取可能な記録媒体に記録されたコンピュータシステムの管理プログラムを、サーバ１０及び２０にインストールすることで実装される。
【００１１】
PCI Expressスイッチ３０は、ＰＣＩ−ＳＩＧ（Peripheral Component Interconnect Special Interest Group）のＭＲ−ＩＯＶ（Multi-Root I/O Virtualization）規格に準拠したＬＳＩ（Large Scale Integration）であって、複数の物理サーバに接続可能となっている。また、前述したＩ／Ｏデバイス４０も、ＰＣＩ−ＳＩＧのＭＲ−ＩＯＶ規格に準拠したデバイスであって、複数の物理サーバに接続可能となっている。
【００１２】
PCI Expressスイッチ３０は、図２に示すように、各サーバ１０及び２０にパケットを送受信するための入力バッファ３０Ａ及び出力バッファ３０Ｂと、Ｉ／Ｏデバイス４０にパケットを送受信するための入力バッファ３０Ｃ及び出力バッファ３０Ｄと、ルーティングユニット３０Ｅと、を含む。入力バッファ３０Ａ及び３０Ｃ並びに出力バッファ３０Ｂ及び３０Ｄには、送受信するパケットを一時的に蓄積するキューが備えられている。ルーティングユニット３０Ｅは、サーバ１０又は２０とＩ／Ｏデバイス４０との間、又は、２つのサーバ１０及び２０の間でパケットを送受信するルーティング制御を行う。また、PCI Expressスイッチ３０は、仮想マシンを稼動させたたま物理サーバ間で移動させることができるようにすべく、パケット複製ユニット３０Ｆ，出力抑止ユニット３０Ｇ及び複製除外ユニット３０Ｈを更に含む。
【００１３】
パケット複製ユニット３０Ｆは、Ｉ／Ｏデバイス４０からのメモリアクセス要求、即ち、メモリ書込要求パケット（以下「パケット」という）が入力バッファ３０Ｃに到着したときに、サーバ１０及び２０に対して同一パケットを送信すべく、パケットを複製する機能を提供する。出力抑止ユニット３０Ｇは、Ｉ／Ｏデバイス４０からのパケットが入力バッファ３０Ｃに到着したときに、指定アドレス領域に対するパケットが入力バッファ３０Ｃから出力されることを抑止する機能を提供する。複製除外ユニット３０Ｈは、パケット複製ユニット３０Ｆにより複製されるパケットのうち、割込要求パケットを複製対象から除外する機能を提供する。割込要求パケットを複製対象から除外する機能は、例えば、パケットを複製するアドレス領域を指定して、パケットの複製を除外するアドレス領域を指定して、コンフィグレーションアクセスをトラックしてＭＳＩ／ＭＳＩ−Ｘ（Message Signaled Interrupt）を認識して自動的に除外するなどで実装することができる。パケット複製ユニット３０Ｆ，出力抑止ユニット３０Ｇ及び複製除外ユニット３０Ｈは、夫々、PCI Expressスイッチ３０外部からの制御信号に応じて制御される。
【００１４】
そして、ハイパーバイザ１２及び２２は、PCI Expressスイッチ３０に備えられたパケット複製ユニット３０Ｆ，出力抑止ユニット３０Ｇ及び複製除外ユニット３０Ｈから提供される各機能を制御して、仮想マシンを稼動させたままの移動を実現する。このとき、パケット複製ユニット３０Ｆ，出力抑止ユニット３０Ｇ及び複製除外ユニット３０Ｈから提供される各機能は、次のような形態で用いられる。なお、以下の説明では、サーバ１０の仮想マシン１４を稼動させたままサーバ２０に移動させるものとする。
（１）パケット複製ユニット３０Ｆが提供する複製機能
仮想マシン１４を稼動させたままの移動では、移動中にも仮想マシン１４及びＩ／Ｏデバイス４０は動作を継続する。このため、ハイパーバイザ１２及び２２が協働して移動のための処理、例えば、ＶＭメモリ１８の内容をサーバ２０に転送しているときにも、Ｉ／Ｏデバイス４０から仮想マシン１４のメモリ空間への書き込みを含んだメモリアクセスが発生する。このアクセスは、仮想マシン１４とＩ／Ｏデバイス４０との間で直接行われるものであり、ハイパーバイザ１２が関与することができない。
【００１５】
そこで、PCI Expressスイッチ３０に複製機能を設けることで、Ｉ／Ｏデバイス４０からのメモリ書き込みは、移動元サーバ１０と移動先サーバ２０との両方に行なわれるようにする。このようにすると、ハイパーバイザ１２が関与しないＩ／Ｏデバイス４０からのメモリ書き込みも、移動元サーバ１０と移動先サーバ２０とでメモリ内容の同期がとれる。
（２）出力抑止ユニット３０Ｇが提供する抑止機能
複製機能により、Ｉ／Ｏデバイス４０からのメモリ書き込みを移動元サーバ１０及び移動先サーバ２０に行なったとしても、メモリ内容が不一致となる場合が想定される。例えば、移動元サーバ１０のＶＭメモリ１８からデータを読み出して移動先サーバ２０に転送しているときに、Ｉ／Ｏデバイス４０からのメモリ書き込みがあると、移動元サーバ１０のＶＭメモリ１８及び移動先サーバ２０のＶＭメモリ２８が上書きされる。その後、移動元サーバ１０から移動先サーバ２０にＶＭメモリ１８のデータが到着すると、そのＶＭメモリ１８は古いデータにより上書きされてしまうこととなる。
【００１６】
そこで、PCI Expressスイッチ３０に抑止機能を設けることで、移動元サーバ１０から移動先サーバ２０へと転送中のメモリ領域を上書きするパケットの出力を抑止し、移動元サーバ１０と移動先サーバ２０のメモリ内容が不一致となることを回避する。
（３）複製除外ユニット３０Ｈが提供する除外機能
ＣＰＵでは、特定アドレスに対するメモリ書き込みは、そのアドレス及びデータ内容に応じて割込みに変換するという機能が備えられている。仮想マシン１４の移動中には、複製機能により、Ｉ／Ｏデバイス４０からのメモリ書き込みは、移動元サーバ１０及び移動先サーバ２０に送信される。しかし、割込みは、移動元サーバ１０及び移動先サーバ２０の双方に送信することができない。なぜならば、仮想マシン１４の移動中には、移動元サーバ１０の仮想マシン１４は割込みを処理できるが、移動先サーバ２０の仮想マシン２４は割込みを処理できず、移動元及び移動先で二重に割込み処理してしまうおそれがあるためである。
【００１７】
そこで、PCI Expressスイッチ３０に除外機能を設けることで、Ｉ／Ｏデバイス４０からの割込みを複製対象から除外し、移動元サーバ１０及び移動先サーバ２０で二重に割込みが処理されないようにする。
【００１８】
図３は、PCI Expressスイッチ３０が、Ｉ／Ｏデバイス４０から入力バッファ３０Ｃにパケットが到着したことを契機として実行する動作を示す。なお、図３に示すフローチャートは、各ユニットの動作を説明するものではなく、PCI Expressスイッチ３０全体としてどのような動作が行われるかを説明するものである。
【００１９】
ステップ１（図では「Ｓ１」と略記する。以下同様。）において、PCI Expressスイッチ３０が、パケットにより書き込まれるメモリ領域がロック中であるか否かを判定する。ここで、パケットにより書き込まれるメモリ領域がロック中であるか否かは、例えば、パケット内容と出力抑止ユニット３０Ｇに入力される制御信号のロック情報（ロック中のメモリアドレスを示す情報）との比較から判定することができる。そして、PCI Expressスイッチ３０が、メモリ領域がロック中であればステップ２へと進む一方（Ｙｅｓ）、メモリ領域がロック中でなければステップ５へと進む（Ｎｏ）。
【００２０】
ステップ２において、PCI Expressスイッチ３０が、出力抑止ユニット３０Ｇにより、入力バッファ３０Ｃのキューからパケットが出力されることを抑止する。ここで、パケット出力が抑止されている間、入力バッファ３０Ｃに到着したパケットは、キューに到着順に順次蓄積される。
【００２１】
ステップ３において、PCI Expressスイッチ３０が、パケットにより書き込まれるメモリ領域のロックが解除されたか否かを判定する。ここで、メモリ領域のロックが解除されたか否かは、例えば、出力抑止ユニット３０Ｇに制御信号が入力されなくなったか否かを介して判定することができる。そして、PCI Expressスイッチ３０が、メモリ領域のロックが解除されたならばステップ４へと進む一方（Ｙｅｓ）、メモリ領域のロックが解除されていなければ待機する（Ｎｏ）。
【００２２】
ステップ４において、PCI Expressスイッチ３０が、出力抑止ユニット３０Ｇによるパケット出力の抑止を解除する。
ステップ５において、PCI Expressスイッチ３０が、パケットの複製指示があるか否かを判定する。ここで、パケットの複製指示があるか否かは、例えば、パケット複製ユニット３０Ｆに制御信号が入力されているか否かを介して判定することができる。そして、PCI Expressスイッチ３０が、パケットの複製指示があればステップ６へと進む一方（Ｙｅｓ）、パケットの複製指示がなければステップ９へと進む（Ｎｏ）。
【００２３】
ステップ６において、PCI Expressスイッチ３０が、パケットが複製対象であるか否かを判定する。ここで、パケットが複製対象であるか否かは、次のような３つの方法で判定することができる。第１の方法は、特定のアドレス領域に対するＩ／Ｏデバイス４０からのパケットのみを複製対象とする、即ち、複製対象のパケットを指定する方法である。第２の方法は、特定のアドレス領域以外に対するＩ／Ｏデバイス４０からのパケットのみを複製対象とする、即ち、複製対象から除外するパケットを指定する方法である。第３の方法は、サーバ１０からのPCI Expressスイッチ３０のコンフィグレーション設定動作を監視し、割込みに使用するメモリアドレスを検出し、検出されたアドレス領域に対するＩ／Ｏデバイス４０からのパケットを複製対象から除外する方法である。そして、PCI Expressスイッチ３０が、パケットが複製対象であればステップ７へと進む一方（Ｙｅｓ）、パケットが複製対象でなければステップ９へと進む（Ｎｏ）。
【００２４】
ステップ７において、PCI Expressスイッチ３０が、パケット複製ユニット３０Ｆにより、入力バッファ３０Ｃに到着したパケットを複製する。ここで、複製したパケットには、入力バッファ３０Ｃに到着したパケットとは異なる宛先が設定される。
【００２５】
ステップ８において、PCI Expressスイッチ３０が、入力バッファ３０Ｃに到着したパケット、及び、パケット複製ユニット３０Ｆにより複製されたパケットを、各宛先のサーバ１０及び２０に送出する。
【００２６】
ステップ９において、PCI Expressスイッチ３０が、入力バッファ３０Ｃに到着したパケットを、宛先のサーバ１０又は２０に送出する。
かかるPCI Expressスイッチ３０によれば、Ｉ／Ｏデバイス４０から入力バッファ３０Ｃにパケットが到着すると、そのパケットにより書き込まれるメモリ領域がロック中であるか否か判定される。そして、メモリ領域がロック中であれば、そのロックが解除されるまで、入力バッファ３０Ｃのキューからパケットが出力されることが抑止される。また、パケットの複製指示があり、かつ、そのパケットが複製対象（割込要求パケット以外）であれば、パケットが複製された後、各パケットの宛先にパケットが送出される。一方、パケットの複製指示がなく、又は、そのパケットが複製対象でない割込要求であれば、Ｉ／Ｏデバイス４０から到着したパケットが宛先に送出される。
【００２７】
次に、かかるコンピュータシステムにおいて、仮想マシンを移動させる移動処理内容を説明する。
図４及び図５は、移動元サーバ１０のハイパーバイザ１２が、管理者などから仮想マシンの移動指示があったことを契機として実行する移動処理を示す。なお、仮想マシンの移動指示には、少なくとも、サーバ２０に仮想マシンを移動させることを示す移動先情報が含まれている。
【００２８】
ステップ１１では、ハイパーバイザ１２が、移動指示に含まれる移動先情報により特定される移動先サーバ２０のハイパーバイザ２２に、仮想マシン移動を開始することを通知する。
【００２９】
ステップ１２では、ハイパーバイザ１２が、移動先サーバ２０から応答があったか否かを判定する。そして、ハイパーバイザ１２が、移動先サーバ２０から応答があれば処理をステップ１３へと進める一方（Ｙｅｓ）、移動先サーバ２０から応答がなければ処理を待機させる（Ｎｏ）。
【００３０】
ステップ１３では、ハイパーバイザ１２が、PCI Expressスイッチ３０にパケット複製を指示、即ち、PCI Expressスイッチ３０のパケット複製ユニット３０Ｆに制御信号を出力する。
【００３１】
ステップ１４では、ハイパーバイザ１２が、仮想マシン１４のＶＭメモリ１８を分割しつつ移動先サーバ２０のＶＭメモリ２８に転送するために、ＶＭメモリ１８へのデータ書き込みをロックするメモリロック領域を設定する。ここで、メモリロック領域の大きさは、例えば、１つのパケットに含むことができるデータサイズに応じて決定すればよい。また、ハイパーバイザ１２は、PCI Expressスイッチ３０の出力抑止ユニット３０Ｇに対して、メモリロック領域を特定するロック情報を含んだ制御信号を出力する。
【００３２】
ステップ１５では、ハイパーバイザ１２が、ＶＭメモリ１８のメモリロック領域からデータを読み出す。
ステップ１６では、ハイパーバイザ１２が、管理ネットワーク５０を介して、ＶＭメモリ１８から読み出したデータをパケット形式で移動先サーバ２０に送信する。
【００３３】
ステップ１７では、ハイパーバイザ１２が、移動先サーバ２０から応答があったか否かを判定する。そして、ハイパーバイザ１２が、移動先サーバ２０から応答があれば処理をステップ１８へと進める一方（Ｙｅｓ）、移動先サーバ２０から応答がなければ処理を待機させる（Ｎｏ）。
【００３４】
ステップ１８では、ハイパーバイザ１２が、ＶＭメモリ１８の転送が完了したか否かを判定する。ここで、ＶＭメモリ１８の転送が完了したか否かは、例えば、ＶＭメモリ１８の最後のアドレスまでデータを転送したか否かを介して判定することができる。そして、ハイパーバイザ１２が、ＶＭメモリ１８の転送が完了したならば処理をステップ１９へと進める一方（Ｙｅｓ）、ＶＭメモリ１８の転送が完了していなければ処理をステップ１４へと戻す（Ｎｏ）。
【００３５】
ステップ１９では、ハイパーバイザ１２が、移動元サーバ１０で稼動していた仮想マシン１４を停止させる。
ステップ２０では、ハイパーバイザ１２が、PCI Expressスイッチ３０に対して、Ｉ／Ｏデバイス４０から入力バッファ３０Ｃに到着したパケットを移動先サーバ２０に転送することを指示するための切替指示を出力する。
【００３６】
ステップ２１では、ハイパーバイザ１２が、ステップ１４〜ステップ１８においてＶＭメモリ１８を転送していた間に、移動元サーバ１０のＶＭメモリ１８に仮想マシン１４が上書きした上書領域を検出する。ここで、上書領域は、例えば、移動元サーバ１０のＣＰＵが備えるページテーブルに付随しているメモリの上書きフラグを参照することで、特定することができる。
【００３７】
ステップ２２では、ハイパーバイザ１２が、ＶＭメモリ１８の上書領域から、所定サイズのデータを読み出す。ここで、所定サイズは、例えば、１つのパケットに含むことができるデータサイズに応じて決定すればよい。
【００３８】
ステップ２３では、ハイパーバイザ１２が、管理ネットワーク５０を介して、ＶＭメモリ１８から読み出したデータをパケット形式で移動先サーバ２０に送信する。
ステップ２４では、ハイパーバイザ１２が、移動先サーバ２０から応答があったか否かを判定する。そして、ハイパーバイザ１２が、移動先サーバ２０から応答があれば処理をステップ２５へと進める一方（Ｙｅｓ）、移動先サーバ２０から応答がなければ処理を待機させる（Ｎｏ）。
【００３９】
ステップ２５では、ハイパーバイザ１２が、上書領域のメモリ転送が完了したか否かを判定する。ここで、上書領域のメモリ転送が完了したか否かは、例えば、上書領域の最後のアドレスまでデータを転送したか否かを介して判定することができる。そして、ハイパーバイザ１２が、上書領域のメモリ転送が完了したならば処理をステップ２６へと進める一方（Ｙｅｓ）、上書領域のメモリ転送が完了していなければ処理をステップ２２へと戻す（Ｎｏ）。
【００４０】
ステップ２６では、ハイパーバイザ１２が、移動元サーバ１０から仮想マシン１４のプロセッサ状態を取り出す。ここで、プロセッサ状態とは、例えば、仮想マシン１４の各種レジスタの状態，プログラムカウンタの値などを意味する。
【００４１】
ステップ２７では、ハイパーバイザ１２が、管理ネットワーク５０を介して、移動先サーバ２０にパケット形式でプロセッサ状態を送信する。
ステップ２８では、ハイパーバイザ１２が、移動先サーバ２０から応答があったか否かを判定する。そして、ハイパーバイザ１２が、移動先サーバ２０から応答があれば処理をステップ２９へと進める一方（Ｙｅｓ）、移動先サーバ２０から応答がなければ処理を待機させる（Ｎｏ）。
【００４２】
ステップ２９では、ハイパーバイザ１２が、移動元サーバ１０から仮想マシン１４を削除する。
図６は、移動先サーバ２０のハイパーバイザ２２が、移動元サーバ１０から仮想マシン移動を開始する通知を受けたことを契機として実行する移動処理を示す。
【００４３】
ステップ３１では、ハイパーバイザ２２が、仮想マシン２４が使用するＶＭメモリ２８をメモリＭＥＭ上に確保する。
ステップ３２では、ハイパーバイザ２２が、ＶＭメモリ２８のメモリアドレスとＩ／Ｏデバイス４０のメモリアドレスを相互に変換可能とすべく、ＩＯハブＨＵＢに組み込まれたＩＯＭＭＵ２６を設定する。
【００４４】
ステップ３３では、ハイパーバイザ２２が、管理ネットワーク５０を介して、移動元サーバ１０に仮想サーバの移動準備が完了したことを示す応答を返信する。
ステップ３４では、ハイパーバイザ２２が、移動元サーバ１０からパケットを受信したか否か、即ち、移動元サーバ１０のＶＭメモリ１８のデータを受信したか否かを判定する。そして、ハイパーバイザ２２が、移動元サーバ１０からパケットを受信したならば処理をステップ３５へと進める一方（Ｙｅｓ）、移動元サーバ１０からパケットを受信していなければ処理を待機させる（Ｎｏ）。なお、ハイパーバイザ２２は、移動元サーバ１０から長時間パケットが到着しないときに、処理が無限ループに陥ることを回避すべく、所定時間経過したときにループを抜け出るタイムアウト処理を平行して行うことが望ましい。
【００４５】
ステップ３５では、ハイパーバイザ２２が、ＶＭメモリ２８に受信データを書き込む。
ステップ３６では、ハイパーバイザ２２が、PCI Expressスイッチ３０の出力抑止ユニット３０Ｇに対して、パケット出力抑止を解除する制御信号を出力する。
【００４６】
ステップ３７では、ハイパーバイザ２２が、管理ネットワーク５０を介して、移動元サーバ１０にデータ書き込みが完了したことを示す応答を返信する。
ステップ３８では、ハイパーバイザ２２が、移動元サーバ１０からプロセッサ状態を受信したか否かを判定する。そして、ハイパーバイザ２２が、プロセッサ状態を受信したならば処理をステップ３９へと進める一方（Ｙｅｓ）、プロセッサ状態を受信していなければ処理をステップ３４へと戻す（Ｎｏ）。
【００４７】
ステップ３９では、ハイパーバイザ２２が、受信したプロセッサ状態に基づいて、仮想マシン２４のプロセッサ状態を設定する。これにより、移動元サーバ１０の仮想マシン１４と移動先サーバ２０の仮想マシン２４との間で、プロセッサ状態の同期をとることができる。
【００４８】
ステップ４０では、ハイパーバイザ２２が、移動先サーバ２０の仮想マシン２４を起動させる。
ステップ４１では、ハイパーバイザ２２が、管理ネットワーク５０を介して、移動先サーバ１０に仮想マシン２４が起動されたことを示す応答を返信する。
【００４９】
かかる移動処理によれば、移動元サーバ１０から移動先サーバ２０に仮想マシン１４を移動するときに、移動先サーバ２０において、仮想マシン２４が使用するＶＭメモリ２８の領域が確保されると共に、仮想マシン２４からＩ／Ｏデバイス４０を直接制御するためのＩＯＭＭＵ２６が設定される。また、移動元サーバ１０から移動先サーバ２０に対して、移動元サーバ１０の仮想マシン１４が使用していたＶＭメモリ１８が分割されつつ転送される。
【００５０】
移動元サーバ１０から移動先サーバ２０へのＶＭメモリ１８の転送が完了すると、移動元サーバ１０の仮想マシン１４が停止され、Ｉ／Ｏデバイス４０からPCI Expressスイッチ３０に到着したパケットは、移動先サーバ２０へと転送され始める。また、移動元サーバ１０から移動先サーバ２０にＶＭメモリ１８を転送している間、移動元サーバ１０においてデータが上書きされたＶＭメモリ１８の上書領域は、ＶＭメモリ１８の転送が完了した後、移動元サーバ１０から移動先サーバ２０に分割されつつ転送される。
【００５１】
そして、移動元サーバ１０から移動先サーバ２０への上書領域の転送が完了すると、移動元サーバ１０の仮想マシン１４のプロセッサ状態が移動先サーバ２０へと送信される。プロセッサ状態を受信した移動先サーバ２０では、移動元サーバ１０の仮想マシン１４のプロセッサ状態を再現すべく、仮想マシン２４のプロセッサ状態が設定されると共に、仮想マシン２４が起動される。一方、移動元サーバ１０では、仮想マシン１４が削除される。
【００５２】
よって、ハイパーバイザ１２及び２２とPCI Expressスイッチ３０とが協働することで、Ｉ／Ｏデバイス４０を直接制御する仮想マシン１４を稼動させたまま、仮想マシン１４を移動元サーバ２０から移動先サーバ２０に移動させることができる。
【００５３】
なお、前記実施形態で説明したコンピュータシステムは、２台のサーバを備えているが、３台以上のサーバを備えていてもよい。
以上の実施形態に関し、更に以下の付記を開示する。
【００５４】
（付記１）仮想マシンが稼動する複数のサーバと入出力デバイスとをスター型接続方式で接続するバススイッチであって、前記入出力デバイスから一のサーバへのメモリアクセス要求を複製して、複数のサーバに同一内容のメモリアクセス要求を送信する複製ユニットと、第１の指定アドレス領域に対するメモリアクセス要求を抑止する抑止ユニットと、前記複製ユニットにより複製されるメモリアクセス要求のうち、割込みに係るメモリアクセス要求を複製対象から除外する複製除外ユニットと、を含むことを特徴とするバススイッチ。
【００５５】
（付記２）前記抑止ユニットは、前記入出力デバイスから一のサーバへのメモリアクセス要求を到着順にキューに順次蓄積することで、前記メモリアクセス要求を抑止することを特徴とする付記１記載のバススイッチ。
【００５６】
（付記３）前記複製除外ユニットは、第２の指定アドレス領域に対するメモリアクセス要求を複製対象から除外することを特徴とする付記１又は付記２に記載のバススイッチ。
【００５７】
（付記４）前記複製除外ユニットは、第２の指定アドレス領域以外に対するメモリアクセス要求を複製対象から除外することを特徴とする付記１又は付記２に記載のバススイッチ。
【００５８】
（付記５）前記複製除外ユニットは、前記一のサーバからのコンフィグレーション設定動作を監視し、割込みに係るメモリアクセス要求を処理するアドレス領域を検出し、検出されたアドレス領域に対するメモリアクセス要求を複製対象から除外することを特徴とする付記１又は付記２に記載のバススイッチ。
【００５９】
（付記６）仮想マシンが稼動する複数のサーバと入出力デバイスとをスター型接続方式で接続するバススイッチと、前記バススイッチを制御する制御手段と、を含み、前記バススイッチは、前記入出力デバイスから一のサーバへのメモリアクセス要求を複製して、複数のサーバに同一内容のメモリアクセス要求を送信する複製ユニットと、第１の指定アドレス領域に対するメモリアクセス要求を抑止する抑止ユニットと、前記複製ユニットにより複製されるメモリアクセス要求のうち、割込みに係るメモリアクセス要求を複製対象から除外する複製除外ユニットと、を備える一方、前記制御手段は、前記仮想マシンの移動指示があったときに、前記メモリアクセス要求が移動元サーバ及び移動先サーバに送信されるように前記複製ユニットを制御した後、前記移動元サーバの仮想マシンが使用していたメモリの内容を移動先サーバに転送している間に、転送中のメモリアドレス領域に対するメモリアクセス要求が抑止されるように前記抑止ユニットを制御すると共に、割込みに係るメモリアクセス要求が複製対象から除外されるように前記複製除外ユニットを制御することを特徴とするコンピュータシステム。
【００６０】
（付記７）仮想マシンが稼動する複数のサーバと入出力デバイスとの間に介在し、前記入出力デバイスから一のサーバへのメモリアクセス要求を複製して、複数のサーバに同一内容のメモリアクセス要求を送信する複製ユニットと、第１の指定アドレスに対するメモリアクセス要求を抑止する抑止ユニットと、前記複製ユニットにより複製されるメモリアクセス要求のうち、割込みに係るメモリアクセス要求を複製対象から除外する複製除外ユニットと、を備えたバススイッチを制御するコンピュータが、前記仮想マシンの移動指示があったときに、前記メモリアクセス要求が移動元サーバ及び移動先サーバに送信されるように前記複製ユニットを制御するステップと、前記移動元サーバの仮想マシンが使用していたメモリの内容を移動先サーバに転送している間に、転送中のメモリアドレス領域に対するメモリアクセス要求が抑止されるように前記抑止ユニットを制御するステップと、割込みに係るメモリアクセス要求が複製対象から除外されるように前記複製除外ユニットを制御するステップと、を実行することを特徴とするコンピュータシステムの管理方法。
【００６１】
（付記８）仮想マシンが稼動する複数のサーバと入出力デバイスとの間に介在し、前記入出力デバイスから一のサーバへのメモリアクセス要求を複製して、複数のサーバに同一内容のメモリアクセス要求を送信する複製ユニットと、第１の指定アドレスに対するメモリアクセス要求を抑止する抑止ユニットと、前記複製ユニットにより複製されるメモリアクセス要求のうち、割込みに係るメモリアクセス要求を複製対象から除外する複製除外ユニットと、を備えたバススイッチを制御するコンピュータに、前記仮想マシンの移動指示があったときに、前記メモリアクセス要求が移動元サーバ及び移動先サーバに送信されるように前記複製ユニットを制御するステップと、前記移動元サーバの仮想マシンが使用していたメモリの内容を移動先サーバに転送している間に、転送中のメモリアドレス領域に対するメモリアクセス要求が抑止されるように前記抑止ユニットを制御するステップと、割込みに係るメモリアクセス要求が複製対象から除外されるように前記複製除外ユニットを制御するステップと、を実現させるためのコンピュータシステムの管理プログラム。
【符号の説明】
【００６２】
１０    サーバ（移動元サーバ）
１２    ハイパーバイザ
１４    仮想マシン
１８    ＶＭメモリ
２０    サーバ（移動先サーバ）
２２    ハイパーバイザ
２４    仮想マシン
２８    ＶＭメモリ
３０    PCI Expressスイッチ
３０Ｆ  パケット複製ユニット
３０Ｇ  出力抑止ユニット
３０Ｈ  複製除外ユニット
４０    Ｉ／Ｏデバイス
【図１】
2010257209.tif 000003
【図２】
2010257209.tif 000004
【図３】
2010257209.tif 000005
【図４】
2010257209.tif 000006
【図５】
2010257209.tif 000007
【図６】
2010257209.tif 000008