(57)【特許請求の範囲】
【請求項１】
複数の物理計算機が、ＩＯスイッチを介してＩＯデバイスと接続して該ＩＯデバイスを共有することができる計算機システムであって、
前記複数の物理計算機はそれぞれ、該物理計算機上に構築された複数の仮想計算機（ＬＰＡＲ）と、自らの該物理計算機上に構築された該複数のＬＰＡＲを管理する仮想計算機モニタを有し、
前記ＩＯデバイスは、１の該物理計算機に割当てられることができるＰＦ（Physical Function）と、該複数のＬＰＡＲに割当てられることができる複数のＶＦ（Virtual Function）を有し、
前記複数の物理計算機のうち１の物理計算機の前記仮想計算機モニタは、該複数のＬＰＡＲに割当てられた前記ＩＯデバイスの該複数のＶＦに対するＶＦイベントを実行するＶＦ実行手段を有し、かつ該ＩＯデバイス内の該ＰＦが割当てられ、かつ該ＰＦを制御することができるマスタ仮想計算機モニタを構成し、
前記複数の物理計算機のうち他の物理計算機の前記仮想計算機モニタは、該複数のＬＰＡＲに割当てられた前記ＩＯデバイスの該複数のＶＦに対するＶＦイベントを実行するＶＦ実行手段を有し、かつ該複数のＬＰＡＲを制御することができるが、該ＩＯデバイス内の該ＰＦが割当てられず、該ＰＦの制御を行わないスレーブ仮想計算機モニタを構成し、
更に、前記マスタ仮想計算機モニタは、該マスタ仮想計算機モニタ又は該スレーブ仮想計算機モニタが検知した、該ＩＯデバイスの該ＰＦに対するＰＦイベントを実行するＰＦ実行手段を有すること、を特徴とする計算機システム。
【請求項２】
前記ＩＯデバイスは、ＰＣＩ−ＳＩＧ規格に基くＳＲ−ＩＯＶ（Single Root IO Virtualization）デバイスであることを特徴とする請求項１の計算機システム。
【請求項３】
前記スレーブ仮想計算機モニタに管理されている、あるＶＦを割当てられた該ＬＰＡＲから該ＰＦへの該ＰＦイベントに対し、前記スレーブ仮想計算機モニタが該ＰＦイベントを検出した場合、前記スレーブ仮想計算機モニタは前記マスタ仮想計算機モニタへ該ＰＦイベントを通知し、前記マスタ仮想計算機モニタは該ＰＦイベントの通知を受信して、該ＰＦイベント実行手段によって該ＰＦのイベントを実行することを特徴とする請求項１又は２の計算機システム。
【請求項４】
前記マスタ仮想計算機モニタは、該ＰＦイベントの通知を受信した後、前記スレーブ仮想計算機モニタへＡＣＫを送信し、前記スレーブ仮想計算機モニタは該ＰＦイベントのＡＣＫ受信処理を実行することを特徴とする請求項３の計算機システム。
【請求項５】
前記マスタ仮想計算機モニタに割当てられた該ＰＦからあるＶＦへのＶＦイベントに対し、前記マスタ仮想計算機モニタが該ＶＦイベントを検出した場合、
前記マスタ仮想計算機モニタは、該あるＶＦが割当てられたＬＰＡＲを管理する前記スレーブ仮想計算機モニタへ該ＶＦイベントを通知し、
前記スレーブ仮想計算機モニタは該ＶＦイベントの通知を受信し、該ＶＦイベントを該あるＶＦが割当てられた該ＬＰＡＲへ伝達して、該ＬＰＡＲは自ら有する該ＶＦ実行手段を用いて該あるＶＦを制御して該ＶＦイベントを実行することを特徴とする請求項１乃至４のいずれかの計算機システム。
【請求項６】
該あるＶＦが割当てられた該ＬＰＡＲを管理する前記スレーブ仮想計算機モニタは、該ＶＦイベントの通知を受信した後、前記マスタ仮想計算機モニタへＡＣＫを送信し、前記マスタ仮想計算機モニタは該ＶＦイベントのＡＣＫ受信処理を実行することを特徴とする請求項５の計算機システム。
【請求項７】
該複数のＳＲ−ＩＯＶデバイスの各ＰＦを任意の該仮想計算機モニタに割当てて、該ＳＲ−ＩＯＶ毎に前記マスタ仮想計算機モニタを設定することを特徴とする請求項２乃至４のいずれかの計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム、デバイス共有方法及びそのプログラムに係り、特に、ＰＦ（Physical Function）とＶＦ（Virtual Function）の間でインタフェースが必要なＰＣＩのＳＲ−ＩＯＶ（Single Root-IO Virtualization）デバイスを複数の物理計算機上に形成される複数の仮想計算機で共有するＰＣＩデバイス共有に関するものである。
【背景技術】
【０００２】
計算機システムを、より高集約、省電力、低コスト、高効率に利用するために、物理計算機上に複数の仮想計算機（ＬＰＡＲ）を構築し、それらの仮想計算機でＩ／Ｏデバイスを共有する仮想計算機システムが実用化されている。
【０００３】
この種の従来技術に関して、例えば特許文献１には、単一の物理計算機上に構築された複数の仮想計算機でＰＣＩのＩ／Ｏデバイスを共有するＩ／Ｏデバイスの仮想共有化方法が開示されている。
更に、非特許文献１には、ＰＣＩ−ＳＩＧの規格が開示される。これによれば、ＳＲ−ＩＯＶに対応したデバイス内に形成される複数のＶＦを、ＳＲ−ＩＯＶに対応したＶＭＭ（Virtual Machine Monitor）上の複数の仮想計算機に割当てることで、デバイスを共有することが可能である。
また、非特許文献２には、ＰＣＩ−ＳＩＧで計画中の規格が開示される。これによれば、ＭＲ−ＩＯＶ（Multi-Root IOV）に対応したデバイス内に形成される、ＰＦとＶＦを、ＭＲ−ＩＯＶに対応した計算機システム上の複数の物理計算機に割当てることで、デバイスを共有することが可能である。
【０００４】
【特許文献１】特開２００４−２５２５９１公報
【非特許文献１】Single Root I/O Virtualization and Sharing Specification Revision 1.0(Sep.11, 2007) Chapter 1 Architectural Overview page 11 to page 24
【非特許文献２】Multi-Root I/O Virtualization and Sharing Specification Revision 1.0(May 12, 2008) Chapter 1 Architectural Overview page 15 to page 34
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のような普通のＰＣＩデバイスやＳＲ−ＩＯＶデバイスは比較的に安価であるが、複数の物理計算機間でデバイス共有して集約化することができない。
また、ＭＲ−ＩＯＶデバイスは複数の物理計算機間でデバイス共有するこができ、高集約化が可能であるが、比較的高価である。
【０００６】
本発明の目的は、ＰＦとＶＦの間でインタフェースが必要なＳＲ−ＩＯＶデバイスを複数の物理計算機で共有することにある。
【課題を解決するための手段】
【０００７】
本発明は、ＰＣＩのＳＲ−ＩＯＶデバイスをＩＯスイッチ経由で複数の物理計算機上の仮想計算機モニタ上に割当てる環境において、ＰＦを第１の仮想計算機モニタに割当て、複数のＶＦは任意の仮想計算機モニタ上のＬＰＡＲに割当てる。ＶＦからＰＦへのイベントを第２の仮想計算機モニタで検出した場合には、ＰＦが割当てられた第１の仮想計算機モニタへ通信して第１の仮想計算機モニタ上でＰＦイベントを実行する。また、第１の仮想計算機モニタがＰＦからＶＦへのイベントを検出した場合は、対象となるＶＦが割当てられた第２の仮想計算機モニタへ通信して第２の仮想計算機モニタ上のＬＰＡＲでＶＦイベントを実行する。
【０００８】
好ましい例によれば、本発明は、複数の物理計算機を、ＩＯスイッチを介してＩＯデバイスと接続して該ＩＯデバイスを共有することができる計算機システムであって、
該複数の物理計算機は、該物理計算機上に構築された複数のＬＰＡＲと、該複数のＬＰＡＲを管理する仮想計算機モニタと、を有し、
前記ＩＯデバイスは、１の該物理計算機に割当てられることができるＰＦ（Physical Function）と、該複数のＬＰＡＲに割当てられることができる複数のＶＦ（Virtual Function）とを有し、
前記複数の仮想計算機モニタは、該ＩＯデバイス内の該ＰＦが割当てられる第１の仮想計算機モニタと、該ＰＦが割当てられない第２の仮想計算機モニタを含み、かつ、
該第１及び第２の仮想計算機モニタは、該複数のＬＰＡＲに割当てられた、前記ＩＯデバイスの該複数のＶＦに対するＶＦイベントを実行するＶＦ実行手段を有し、
該第１の仮想計算機モニタは、該第１又は第２の仮想計算機モニタが検知した、該ＩＯデバイスの該ＰＦに対するＰＦイベントを実行するＰＦ実行手段を有すること、を特徴とする計算機システムとして構成される。
【０００９】
また、好ましい例では、本発明は、各物理計算機上に構築される１又は複数のＬＰＡＲと、該複数のＬＰＡＲを管理する複数の仮想計算機モニタと、を有する複数の物理計算機と、１の該物理計算機に割当てられることができるＰＦ（Physical Function）と、該複数のＬＰＡＲに割当てられることができる複数のＶＦ（Virtual Function）とを有する、ＰＣＩ−ＳＩＧ規格に基くＳＲ−ＩＯＶ（Single Root IO Virtualization）デバイスを、ＩＯスイッチを介して接続して構成する計算機システムにおけるデバイスの共有方法であって、
該ＳＲ−ＩＯＶデバイス内の該ＰＦが割当てられる第１の仮想計算機モニタと、該ＰＦが割当てられない第２の仮想計算機モニタを含む、複数の前記仮想計算機モニタを構成するステップと、
該第１及び第２の仮想計算機モニタにおいて、該複数のＬＰＡＲに割当てられた、前記ＳＲ−ＩＯＶデバイスの該複数のＶＦに対するＶＦイベントを実行するステップと、
該第１の仮想計算機モニタにおいて、該第１又は第２の仮想計算機モニタで検知された、該ＳＲ−ＩＯＶデバイスの該ＰＦに対するＰＦイベントを実行するステップと、を有することを特徴とするデバイス共有方法として構成される。
【００１０】
更に好ましい例では、本発明は、各物理計算機上に構築される１又は複数のＬＰＡＲと、該複数のＬＰＡＲを管理する仮想計算機モニタと、を有する複数の物理計算機と、
１の該物理計算機に割当てられることができるＰＦ（Physical Function）と、該複数のＬＰＡＲに割当てられることができる複数のＶＦ（Virtual Function）とを有する、ＰＣＩ−ＳＩＧ規格に基くＳＲ−ＩＯＶ（Single Root IO Virtualization）デバイスを、ＩＯスイッチを介して接続して構成する計算機システムで実行されるデバイスの共有化のためのプログラムであって、
該ＳＲ−ＩＯＶデバイス内の該ＰＦが割当てられる第１の仮想計算機モニタと、該ＰＦが割当てられない第２の仮想計算機モニタにおいて、該複数のＬＰＡＲに割当てられた、前記ＳＲ−ＩＯＶデバイスの該複数のＶＦに対するＶＦイベントを実行する手段と、
該第１の仮想計算機モニタにおいて、該第１又は第２の仮想計算機モニタで検知された、該ＳＲ−ＩＯＶデバイスの該ＰＦに対するＰＦイベントを実行する手段と、を有することを特徴とするプログラムとして構成される。
【発明の効果】
【００１１】
本発明によれば、ＳＲ−ＩＯＶデバイスを複数の物理計算機で共有することが可能である。また、ＭＲ−ＩＯＶが適用されるであろう計算機システムに比べて、安価で集約化した計算機システムを実現することできる。
【発明を実施するための最良の形態】
【００１２】
好ましい例によれば、計算機システムは、物理計算機として複数のブレードサーバがシャーシに搭載され、また複数のＳＲ−ＩＯＶデバイスがＩＯボックスに搭載され、複数のシャーシと複数のＩＯボックスはＩＯスイッチで接続して構成される。複数のブレードサーバ上で仮想計算機モニタを実行し、その上で複数のＬＰＡＲを実行し、ＬＰＡＲがＳＲ−ＩＯＶデバイスのＶＦを使用する。任意のブレードサーバ上の仮想計算機モニタでＰＦを制御する必要があり、ＰＦを制御するブレードサーバ上の仮想計算機モニタをマスタ仮想計算機モニタ（第１の仮想計算機モニタ）、それ以外のＶＦを使用しているＬＰＡＲを実行している仮想計算機モニタをスレイブ仮想計算機モニタ（第２の仮想計算機モニタ）とする。複数のＳＲ−ＩＯＶデバイスの各ＰＦをそれぞれ別の仮想計算機モニタで制御する場合は、ＳＲ−ＩＯＶデバイス毎に別々のマスタ仮想計算機モニタを設定することができる。
以下図面を参照して、本発明の実施例について説明する。
【００１３】
[実施例１]
図１は一実施例による計算機システムの構成例を示す。
この計算機システムは、複数の物理計算機１０，２０，３０が、ＩＯスイッチ５０を介して複数のＳＲ−ＩＯＶデバイス６１，６２に接続されて、ＳＲ−ＩＯＶデバイスを共有するシステムである。
複数のＳＲ−ＩＯＶデバイス６１，６２は、デバイス毎にＰＦ（Physical Function）７０と複数のＶＦ（Virtual Function）のＶＦ［１］７１〜ＶＦ［ｍ］７２〜ＶＦ［ｎ］７３を有する。ここで、ＰＦとは物理計算機に割り当てられるＩＯＶが持つ機能及びＩＯＶを管理する機能（例えば初期設定機能やリセット機能）である。ＶＦとはＬＰＡＲに割当てられるＩＯＶの機能であり、例えばネットワークを接続するカードが持つ機能やストレージを接続するカードが持つ、種々の機能である。
【００１４】
物理計算機１０は、複数の仮想計算機（ＬＰＡＲ）１２１，１２２と、これらのＬＰＡＲを制御しかつＰＦ７０を制御するマスタ仮想計算機モニタ（ＶＭＭ）１１を有する。同様にして、物理計算機２０，３０は、複数の仮想計算機（ＬＰＡＲ）２２１，２２２と、これらのＬＰＡＲを制御するがＰＦ７０の制御を行わないスレイブ仮想計算機モニタ（ＶＭＭ）２１を有する。ＬＰＡＲやマスタ及びスレイブ仮想計算機モニタは、物理計算機上で関係するプログラムが実行されることでそれぞれの機能が実現される。
【００１５】
なおここで、仮想計算機モニタをマスタとスレイブに分けて規定したのは、１台のＳＲ−ＩＯＶデバイス内の単一のＰＦが割当てられるのは、１台の仮想計算機モニタのみであるので、そのＰＦが割り当てられたものをマスタ計算機モニタ１１と言い、それ以外のスレイブ仮想計算機モニタと言うことにした。
【００１６】
ＩＯスイッチ５０は、複数の物理計算機１０、２０、３０と、複数のＳＲ−ＩＯＶデバイス６１，６２とを接続する。マスタ仮想計算機モニタ１１とスレイブ仮想計算機モニタ２１間の通信は、ネットワークＬＡＮ４１及び通信部１１０，２１０を介して行われる。また、マスタ仮想計算機モニタ１１及びスレイブ仮想計算機モニタ２１とＳＲ−ＩＯＶデバイス間の通信は、ＩＯスイッチ５０を通る専用線通信４２を介して行われる。
【００１７】
ＳＲ−ＩＯＶデバイス６１内のＰＦ７０は、ＩＯスイッチ５０を通ってマスタ仮想計算機モニタ１１に割当てられる。また、ＳＲ−ＩＯＶデバイス６１内のＶＦ７１〜ＶＦ７３は、マスタ仮想計算機モニタ１１又はスレイブ仮想計算機モニタ２１の制御により、これらの仮想計算機モニタによって管理される複数のＬＰＡＲ１２１、１２２、２２１、２２２に、ＩＯスイッチ５０を通って割当てられる。
【００１８】
物理計算機１０上の複数のＬＰＡＲ１２１，１２２は、それらが割当てられた複数のＶＦ７１〜７３を制御するＶＦドライバ１２１１を有する。同様に、物理計算機２０，３０上の複数のＬＰＡＲ２２１，２２２も、それらが割当てられた複数のＶＦ７１〜７３を制御するＶＦドライバ２２１１を有する。
【００１９】
マスタ仮想計算機モニタ１１は、スレイブ仮想計算機モニタ２１との間で通信を行う通信部１１０、スレイブ仮想計算機モニタ２１から送信されるＰＦイベントを受信するＰＦイベント受信部１１１、スレイブ仮想計算機モニタ２１から送信されるＶＦイベントを受信するＶＦイベント受信部１１２、ＰＦイベントを実行するＰＦイベント実行部１１３、ＶＦイベントを実行するＶＦイベント実行部１１４、ＰＦ７０を制御するＰＦドライバ１１５、を有する。また、スレイブ仮想計算機モニタ２１も同様に、通信部２１０、ＰＦイベント受信部２１１、ＶＦイベント受信部２１２、ＰＦイベント実行部２１３、ＶＦイベント実行部２１４、ＰＦドライバ２１５、を有する。ここで、ＰＦイベントとは、ＰＦ７０が実行すべきイベントであり、例えばネットワークエラーの処理や、ストレージにおける回復不可能なエラーに対する処理等がある。ＶＦイベントとは、ＶＦ７１〜７３が実行すべきイベントであり、例えば電源の異常が発生した時にＬＰＡＲによる処理を安全に終了させるための処理である。
【００２０】
上述の説明から理解されるように、ＳＲ−ＩＯＶデバイス６１のＰＦ７０の制御はマスタ仮想計算機モニタ１１のＰＦドライバ１１５のみの制御によるので、スレイブ仮想計算機モニタ２１のＰＦドライバ２１５やＰＦイベント受信部２１１、ＰＦイベント実行部２１３は用を成さない。しかし、複数の仮想計算機モニタはマスタとスレイブの役割を切替えて運用することがある。そこで今までスレイブ仮想計算機モニタであったものが、切り替わった後にマスタ仮想計算機モニタとなることがある。その場合、マスタ仮想計算機モニタに切り替わったスレイブ仮想計算機モニタ２１は、以後、ＰＦドライバ２１５が、ＳＲ−ＩＯＶデバイス６１のＰＦ７０を制御することになる。また、スレイブ仮想計算機モニタ２１のＰＦドライバ２１５やＰＦイベント受信部２１１も有効に使用されるようになる。
【００２１】
次に、図２及び図３を参照して、ＶＦドライバ１２１１、２２１１からＰＦ７０へのＰＦイベントが発生した場合の仮想計算機モニタのＰＦイベント処理について説明する。
これらの処理は、マスタ及びスレイブ仮想計算機モニタのプログラムの実行によって各処理動作が行われる。
以下の説明において、計算機システムは、物理計算機の数は２台（物理計算機１０と２０）、各物理計算機１０，２０に構築されるＬＰＡＲの数は、それぞれＬＰＡＲ１２１とＬＰＡＲ２２１の１台ずつ、ＳＲ−ＩＯＶのデバイスの数はＳＲ−ＩＯＶ６０の１台、とする。
この例で、処理ステップ（Ｓ２００〜Ｓ２３５）は、ＶＦ［ｍ］７２が割当てられた、マスタ仮想計算機モニタ１１上のＬＰＡＲ１２１からＰＦ７０へのＰＦイベントが発生した場合、例えば、ＶＦドライバ１２１１で障害を検知しＰＦ７０へ通知する場合の処理を示す。
【００２２】
まず、ＶＦドライバ１２１１は、割込み処理又はレジスタＷｒｉｔｅによりＰＦ７０向けのＰＦイベントを発生させる（Ｓ２００）。割り込みとは、ＶＦドライバ１２１１がＰＦイベントを検知して、それをマスタ仮想計算機モニタ１１に割り込みさせる処理である。レジスタＷｒｉｔｅとは、ＳＲ−ＩＯＶデバイスが持つ、イベント監視用のレジスタであり、マスタ仮想計算機モニタはレジスタにフラグが書き込まれたことを監視することで、イベント発生を検知する。
マスタ仮想計算機モニタ１１は、割り込み処理又はレジスタＷｒｉｔｅを参照して、ＰＦイベントを検出する（Ｓ２０５）。即ち、割込みをトラップ又はレジスタＷｒｉｔｅをトラップして実現する。
【００２３】
次に、何れの仮想計算機モニタがＰＦイベントを検出したかをチェックする（Ｓ２１０）。もし、マスタ仮想計算機モニタ１１がＰＦイベントを検出した場合には、ＰＦイベント受信部１１１でＰＦイベントを認識する（Ｓ２１５）。ＰＦイベントが認識されると、ＰＦイベント実行部１１３で割込み生成又はレジスタＷｒｉｔｅによりＰＦドライバ１１５にＰＦイベントを伝達する（Ｓ２２０）。
ＰＦイベントを認識したＰＦドライバ１１５はイベントの種類に応じた処理を実行する（Ｓ２２５）。例えば、ＶＦ［ｍ］７２が割当てられたＶＦドライバ１２１１で障害を検出したので、ＰＦドライバはＶＦ［ｍ］７２をリセットするなどの障害の処置を実行する。
【００２４】
イベント生成元のＶＦ［ｍ］７２へのＡＣＫ処理（イベントの受信が正常に完了したことの通知処理）が必要なＰＦイベントの場合は（Ｓ２３０）、マスタ仮想計算機モニタ１１は割込み処理又はレジスタＷｒｉｔｅによりＬＰＡＲ１２１上のＶＦドライバ１２１１へＡＣＫを伝達し、ＶＦドライバ１２１１はＡＣＫ受信処理を実行する（Ｓ２３５）。
【００２５】
次に、処理ステップ（Ｓ２００〜Ｓ２６５）は、スレイブ仮想計算機モニタ２１上のＶＦ［ｎ］７３が割当てられたＬＰＡＲ２２１からＰＦ７０へのイベントが発生した場合、例えば、ＶＦドライバ２２１１で障害を検知しＰＦ７０へ通知する場合の処理を示す。
ＶＦドライバ２２１１が、割込み処理又はレジスタＷｒｉｔｅによりＰＦ７０向けのＰＦイベントを発生させると（Ｓ２００）、スレイブ仮想計算機モニタ２１はＰＦイベントを検出する（Ｓ２０５）。スレイブ仮想計算機モニタ２１がＰＦイベントを検出した場合（Ｓ２１０、ＮＯ）、スレイブ仮想計算機モニタ２１にはＰＦが割当てられていないので、ＰＦが割当てられているマスタ仮想計算機モニタ１１へ通信部２１０を経由してＰＦイベントを通知する（Ｓ２５０）。なお、スレイブ仮想計算機モニタ２１からマスタ仮想計算機モニタ１１への通信は、通信部２１０、ネットワークＬＡＮ４１、通信部１１０を介して行なわれる。
【００２６】
マスタ仮想計算機モニタ１１におけるＰＦイベント処理は、図３に示すように、マスタ仮想計算機モニタ１１の通信部１１０がＰＦイベントを受信し（Ｓ３００）、ＰＦイベント受信部１１１でＰＦイベントを認識する（Ｓ３１０）。ＰＦイベントが認識されると、ＰＦイベント実行部１１３で割込み生成又はレジスタＷｒｉｔｅによりＰＦドライバ１１５にＰＦイベントを伝達する（Ｓ３２０）。
【００２７】
ＰＦイベントを認識したＰＦドライバ１１５はイベントの種類に応じた処理を実行する（Ｓ３３０）。認識されたイベントの種類に応じて、例えばネットワークエラーの処理やストレージにおける回復不可能なエラーに対する処理を行う。
そして、ＶＦ７３へのＡＣＫが必要なイベントか否かを判断する（Ｓ３４０）。その結果、イベント発生元のＶＦ［ｎ］７３へのＡＣＫ処理が必要なＰＦイベントの場合（例えば、イベント発生元のＶＦ７３がイベントの処理結果を知る必要がある場合）は、通信部１１０を経由してスレイブ仮想計算機モニタ２１へＡＣＫを送信する（Ｓ３５０）。
【００２８】
図２に戻って、スレイブ仮想計算機モニタ２１はＡＣＫ処理が必要なＰＦイベントの場合（Ｓ２５５、ＹＥＳ）、通信部２１０はＡＣＫの受信を待つ。そして、ＡＣＫを受信したら（Ｓ２６０）、スレイブ仮想計算機モニタ２１は割込み処理又はレジスタＷｒｉｔｅによりＶＦ［ｎ］７３が割当てられているＬＰＡＲ２２１上のＶＦドライバ２２１１へＡＣＫを伝達し、ＶＦドライバ２２１１はＡＣＫ受信処理を実行する（Ｓ２６５）。
【００２９】
[実施例２]
この例は、図１に示す仮想計算機システムにおいて、ＰＦ７０が割当てられたマスタ仮想計算機モニタ１１のＰＦドライバ１１５からＶＦ［１］７１〜ＶＦ［ｍ］７２〜ＶＦ［ｎ］７３へのＶＦイベントが発生した場合の処理動作について示すものである。
処理動作については、図４及び図５のフローチャートを参照する。ここで、計算機システムにおける物理計算機の台数、各物理計算機上のＬＰＡＲの数、ＳＲ−ＩＯＶデバイス数は、実施例１と同じとする。また、これらの処理動作は、マスタ及びスレイブ仮想計算機モニタのプログラムの実行によって行われる。
【００３０】
図示の、処理ステップ（Ｓ４００〜Ｓ４３５）は、マスタ仮想計算機モニタ１１上で制御しているＰＦ７０からＬＰＡＲ１２１に割当てられているＶＦ［ｍ］７２へのＶＦイベントが発生した場合、例えばＰＦドライバ１１５で障害を検出し全てのＶＦ（ＶＦ［１］７１〜ＶＦ［ｍ］７２〜ＶＦ［ｎ］７３）へ通知する場合の処理を示す。
【００３１】
まず、ＰＦドライバ１１５が、割込み処理又はレジスタＷｒｉｔｅによりＶＦ［ｍ］７２向けのＶＦイベントを発生させる（Ｓ４００）。すると、マスタ仮想計算機モニタ１１がＶＦイベントを検出する（Ｓ４０５）。即ち、割込みをトラップするか又はレジスタＷｒｉｔｅをトラップして実現する。
【００３２】
そして、対象となるＶＦはマスタ仮想計算機モニタ１１上のＬＰＡＲ１２１，１２２に割り当てられているかを判断する（Ｓ４１０）。その結果、対象となるＶＦ［ｍ］７２がマスタ仮想計算機モニタ１１上のＬＰＡＲ１２１に割当てられている場合は、ＶＦイベント受信部１１２でＶＦイベントを認識する（Ｓ４１５）。
ＶＦイベントが認識されると、ＶＦイベント実行部１１４で割込み処理又はレジスタＷｒｉｔｅによりＶＦ［ｍ］７２が割当てられたＬＰＡＲ１２１上のＶＦドライバ１２１１にＶＦイベントを伝達する（Ｓ４２０）。
【００３３】
ＶＦイベントを認識したＶＦドライバ１２１１はイベントの種類に応じた処理を実行する（Ｓ４２５）。例えば、ＰＦ７０で障害を検出したので全てのＶＦ７１〜７３のＶＦドライバはデバイスの実行を安全に終了しようとする。
ＰＦ７０へのＡＣＫ処理が必要なＶＦイベントの場合は（Ｓ４３０）、マスタ仮想計算機モニタ１１は割込み処理又はレジスタＷｒｉｔｅによりＰＦドライバ１１５へＡＣＫを伝達し、ＰＦドライバ１１５はＡＣＫ受信処理を実行する（Ｓ４３５）。
【００３４】
次に、処理ステップ（Ｓ４００〜Ｓ４６５）は、マスタ仮想計算機モニタ１１上で制御しているＰＦ７０からスレイブ仮想計算機モニタ２１上のＬＰＡＲ２２１に割当てられているＶＦ［ｎ］７３へのＶＦイベントが発生した場合（例えば、ＰＦドライバ１１５で障害を検知しＶＦ［１］７１〜ＶＦ［ｍ］７２〜ＶＦ［ｎ］７３へ通知する場合）の処理を示す。
【００３５】
ＰＦドライバ１１５が、割込み処理又はレジスタＷｒｉｔｅによりＶＦ［ｎ］７３向けのＶＦイベントを発生させると（Ｓ４００）、マスタ仮想計算機モニタ１１はＶＦイベントを検出する（Ｓ４０５）。
そして、対象となるＶＦはマスタ仮想計算機モニタ１１上のＬＰＡＲに割り当てられているかを判断する（Ｓ４１０）。その結果、対象となるＶＦ［ｎ］７３がスレイブ仮想計算機モニタ２１上のＬＰＡＲ２２１に割当てられている場合には、対象となるＶＦ［ｎ］７３が割当てられているＬＰＡＲ２２１を制御しているスレイブ仮想計算機モニタ２１へ通信部１１０を経由してＶＦイベントを通知する（Ｓ４５０）。
【００３６】
スレイブ仮想計算機モニタ２１におけるＶＦイベント処理については、図５を参照する。スレイブ仮想計算機モニタ２１の通信部１１０がＶＦイベントを受信し（Ｓ５００）、ＶＦイベント受信部１１２でＶＦイベントを認識する（Ｓ５１０）。
ＶＦイベントが認識されると、ＶＦイベント実行部１１４で割込み生成又はレジスタＷｒｉｔｅによりＶＦ［ｎ］７３が割当てられたＬＰＡＲ２２１上のＶＦドライバ２２１１にＶＦイベントを伝達する（Ｓ５２０）。
【００３７】
ＶＦイベントを認識したＶＦドライバ２２１１はイベントの種類に応じた処理を実行する（Ｓ５３０）。そして、ＰＦ７０へのＡＣＫが必要なイベントか否かを判断する（Ｓ５４０）。その結果、ＰＦ７０へのＡＣＫ処理が必要なＶＦイベントの場合は、通信部２１０を経由してマスタ仮想計算機モニタ１１へＡＣＫを送信する（Ｓ５５０）。
【００３８】
図４に戻って、ＡＣＫ処理が必要なＶＦイベントの場合（Ｓ４５５、ＹＥＳ）、通信部１１０はＡＣＫの受信を待ち、もしＡＣＫを受信したら（Ｓ４６０）、マスタ仮想計算機モニタ１１は割込み処理又はレジスタＷｒｉｔｅによりＰＦドライバ１１５へＡＣＫを伝達し、ＰＦドライバ１１５はＡＣＫ受信処理を実行する（Ｓ４６５）。
【図面の簡単な説明】
【００３９】
【図１】一実施例による計算機システムの構成例を示す図。
【図２】仮想計算機モニタのＰＦイベント処理を示すフローチャート図。
【図３】マスタ仮想計算機モニタにおけるＰＦイベント処理を示すフローチャート図。
【図４】仮想計算機モニタのＶＦイベント処理を示すフローチャート図。
【図５】スレイブ仮想計算機モニタにおけるＶＦイベント処理を示すフローチャート図。
【符号の説明】
【００４０】
１０，２０，３０：物理計算機  
１１：マスタ仮想計算機モニタ        １２：スレイブ仮想計算機モニタ  
１２１，１２２，２２１，２２２：ＬＰＡＲ  
１２１１，２２１１：ＶＦドライバ    １１５，２１５：ＰＦドライバ  
５０：ＩＯスイッチ                  ６１，６２：ＳＲ−ＩＯＶデバイス  
７０：ＰＦ                          ７１、７２、７３：ＶＦ。
【図１】
0004934642.tif 000002
【図２】
0004934642.tif 000003
【図３】
0004934642.tif 000004
【図４】
0004934642.tif 000005
【図５】
0004934642.tif 000006