(57)【要約】【課題】ＳＲ−ＩＯＶ対応デバイスにおけるＶＦをエミュレートする。【解決手段】仮想化機構により仮想計算機上でゲストＯＳが稼動するようになっている仮想計算機システムにおいて、ＳＲ−ＩＯＶ対応デバイスはＰＦ（Ｐｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎ）とＶＦ（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）とを有し、仮想化機構が、ＰＦを監視し、監視対象のＰＦのリンク状態がリンクアップ状態の場合に第１モードを設定し、リンクダウン状態の場合に第２モードを設定し、第２モードが設定されている場合に、ゲストＯＳからのＶＦに係るコマンドに対して、そのＶＦに係るＳＲ−ＩＯＶ対応デバイスに応答させず、そのＶＦがリンクダウン状態である旨をエミュレートする。【選択図】図３
2014235578.tif 000002
【特許請求の範囲】
【請求項１】
物理ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、物理メモリと、ＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）対応デバイスと、仮想化機構とを有し、
前記物理ＣＰＵ及び前記物理メモリを論理的に分割してなる論理資源が前記仮想化機構によって割り当てられた仮想計算機上で、ゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が稼動する仮想計算機システムにおいて、
前記ＳＲ−ＩＯＶ対応デバイスは、物理的なネットワークデバイスであるＰＦ（Ｐｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎ）と、前記ＰＦに対応する仮想的なネットワークデバイスであるＶＦ（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）とを有し、
前記仮想化機構は、
前記ＰＦのリンク状態を監視し、
監視対象のＰＦのリンク状態が、リンクアップ状態の場合に第１モードを設定し、リンクダウン状態の場合に第２モードを設定し、
前記第２モードが設定されている場合に、前記ゲストＯＳからのＶＦに係るコマンドに対して、前記ＶＦに係るＳＲ−ＩＯＶ対応デバイスに応答させず、前記ＶＦがリンクダウン状態である旨をエミュレートする
仮想計算機システム。
【請求項２】
前記仮想化機構は、前記第１モードが設定されている場合、前記ゲストＯＳからの前記ＶＦに係るコマンドに対して、前記ＶＦに係るＳＲ−ＩＯＶ対応デバイスに応答させる
請求項１に記載の仮想計算機システム。
【請求項３】
前記仮想化機構は、前記第２モードが設定されている場合において、
前記ゲストＯＳからのＶＦに係るコマンドがＶＦのリンク状態を取得する旨のコマンドである場合に、前記ＶＦに係るＳＲ−ＩＯＶ対応デバイスに応答させず、前記ＶＦがリンクダウン状態である旨をエミュレートし、
前記ゲストＯＳからのＶＦに係るコマンドがＶＦのリンク状態を取得する旨のコマンドでない場合は、前記ＶＦに係るＳＲ−ＩＯＶデバイスに応答させる
請求項２に記載の仮想計算機システム。
【請求項４】
前記第２モードの設定とは、前記ゲストＯＳからのＶＦに係るコマンドの処理がエラーとなるように設定することであり、
前記仮想化機構は、前記ＶＦに係るコマンドの処理のエラーを検知して、前記ＶＦがリンクダウン状態である旨をエミュレートする
請求項１乃至３の何れか１項に記載の仮想計算機システム。
【請求項５】
前記ＶＦに係るコマンドの処理がエラーとなる設定とは、前記ＶＦに係るＳＲ−ＩＯＶ対応デバイスが応答しないように、前記物理メモリにおいて、前記ＶＦに係るＭＭＩＯ（Ｍｅｍｏｒｙ−Ｍａｐｐｅｄ  Ｉ／Ｏ）領域を特定するために参照されるフラグを、参照不可能な状態に設定することである
請求項４に記載の仮想計算機システム。
【請求項６】
前記仮想化機構によって物理メモリを論理的に分割してなる論理資源を割り当てられた仮想計算機の仮想メモリであって、前記ゲストＯＳからのＶＦに係るコマンドの応答は前記仮想メモリ上の領域に格納するようになっており、
前記ＶＦがリンクダウン状態である旨のエミュレートとは、前記ゲストＯＳからのＶＦに係るコマンドの応答が格納される仮想メモリ上の領域に対応する物理メモリ上の領域に、前記ＶＦがリンクダウン状態である旨を書き込むことである
請求項１乃至５の何れか１項に記載の仮想計算機システム。
【請求項７】
前記仮想化機構は、監視対象に設定されたＳＲ−ＩＯＶ対応デバイスの有するＰＦのリンク状態を監視し、当該ＰＦのリンク状態の変化を検知すると、モードの設定を変更する
請求項１乃至６の何れか１項に記載の仮想計算機システム。
【請求項８】
物理ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、物理メモリと、ＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）対応デバイスと、仮想化機構とを有し、
物理ＣＰＵ及び物理メモリを論理的に分割してなる論理資源が前記仮想化機構によって割り当てられた仮想計算機上で、ゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が稼動する仮想計算機システムにおいて、
前記ＳＲ−ＩＯＶ対応デバイスは、物理的なネットワークデバイスであるＰＦ（Ｐｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎ）と、前記ＰＦに対応する仮想的なネットワークデバイスであるＶＦ（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）とを有し、
前記仮想化機構において、前記ＰＦのリンク状態を監視し、監視対象のＰＦのリンク状態が、リンクアップ状態の場合に第１モードを設定し、リンクダウン状態の場合に第２モードを設定し、前記第２モードが設定されている場合に、前記ゲストＯＳからのＶＦに係るコマンドに対して、前記ＶＦに係るＳＲ−ＩＯＶ対応デバイスに応答させず、前記ＶＦがリンクダウン状態である旨をエミュレートする
ＳＲ−ＩＯＶ対応デバイスの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機及びＳＲ−ＩＯＶ対応デバイスの技術に関する。
【背景技術】
【０００２】
物理計算機上に複数の仮想計算機を構築する仮想計算機システムが実用化されている。仮想計算機システムを用いることで、物理計算機のリソースの効率的な利用、システムの導入及び運用に要するコストの削減等が期待できる。近年では、ミッションクリティカルなシステムにおいても仮想計算機システムの導入が進んでおり、仮想計算機システムにも信頼性及び可用性の向上が求められている。
【０００３】
可用性を向上させる手法のひとつに冗長化手法がある。例えば、通信ネットワークの冗長化手法としては、物理計算機に複数のＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）を備えておき、現用系のＮＩＣがリンクダウンした場合に、待機系のＮＩＣに切り替えることによって通信を継続する手法がある。
【０００４】
また、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）デバイス側で仮想化をサポートするＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）規格が策定された（非特許文献１）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】ＰＣＩ−ＳＩＧ，Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ａｎｄ  Ｓｈａｒｉｎｇ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  １．１，２０１０年１月２０日，Ｐ．１７
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、ＳＲ−ＩＯＶ対応デバイス（ＮＩＣ）を用いて仮想計算機の通信ネットワークを冗長化することが考えられる。しかし、ＳＲ−ＩＯＶ規格に準拠したＮＩＣであっても、必ずしも全てのＮＩＣが完全に同じ動作をするわけではない。
【０００７】
そこで、本発明の目的は、ＳＲ−ＩＯＶ対応デバイスに動作の違いが存在する場合であっても、その違いを考慮することなく仮想計算機がＳＲ−ＩＯＶ対応デバイスに係る機能を利用できるようにすることにある。
【課題を解決するための手段】
【０００８】
本発明の一実施例に係る仮想計算機システムは、物理ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、物理メモリと、ＳＲ−ＩＯＶ対応デバイスと、仮想化機構とを有する。物理ＣＰＵ及び物理メモリを論理的に分割してなる論理資源が仮想化機構によって割り当てられた仮想計算機上で、ゲストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が稼動する。ＳＲ−ＩＯＶ対応デバイスは、物理的なネットワークデバイスであるＰＦ（Ｐｈｙｓｉｃａｌ  Ｆｕｎｃｔｉｏｎ）と、ＰＦに対応する仮想的なネットワークデバイスであるＶＦ（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎ）とを有する。仮想化機構は、ＰＦのリンク状態を監視し、監視対象のＰＦのリンク状態が、リンクアップ状態の場合に第１モードを設定し、リンクダウン状態の場合に第２モードを設定し、第２モードが設定されている場合に、ゲストＯＳからのＶＦに係るコマンドに対して、ＶＦに係るＳＲ−ＩＯＶ対応デバイスに応答させず、ＶＦがリンクダウン状態である旨をエミュレートする。なお、「仮想化機構」は、例えば、後述のようにハイパバイザであるが、ハイパバイザのようなコンピュータプログラムを実行するプロセッサを有したハードウェアデバイス（例えば回路）であっても良い。
【発明の効果】
【０００９】
本発明によれば、ＳＲ−ＩＯＶ対応デバイスに動作の違いが存在する場合であっても、その違いを考慮することなく仮想計算機がＳＲ−ＩＯＶ対応デバイスに係る機能を利用することができる。
【図面の簡単な説明】
【００１０】
【図１】２つのＮＩＣを用いてネットワーク冗長化を行った仮想計算機システムの構成例を示す模式図である。
【図２】ＳＲ−ＩＯＶ対応のＮＩＣを用いて通信ネットワークの冗長化を行った仮想計算機システムの構成例を示す模式図である。
【図３】仮想計算機システムの構成例を示すブロック図である。
【図４】ＰＣＩコンフィグレーションレジスタのフォーマット例を示す。
【図５】監視対象デバイス管理テーブルの構成例である。
【図６】ＰＦリンク状態管理テーブルの構成例である。
【図７】パススルーモードの場合における仮想計算機システムの動作例を説明する図である。
【図８】エミュレーションモードの場合における仮想計算機システムの動作例を説明する図である。
【図９】ＰＦリンク状態管理テーブルの作成処理の一例を示すフローチャートである。
【図１０】ＰＦのリンク状態の変化を検知する処理の一例を示すフローチャートである。
【図１１】モード切替部における処理の一例を示すフローチャートである。
【図１２】ＶＦ  ＭＭＩＯエミュレーション部における処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、ＳＲ−ＩＯＶ対応デバイスを備える仮想計算機システムにおける実施例について、図面を用いて説明する。
【００１２】
図１は、２つのＮＩＣを用いて通信ネットワークの冗長化を行った仮想計算機システムの構成例を示す模式図である。以下、図１を用いて、従来の通信ネットワークの冗長化の一例を説明する。
【００１３】
物理計算機１０は、ＮＩＣ２１、２１を備える。ハイパバイザ１９は、物理計算機１０の備えるＮＩＣ２１、２１のリソースを仮想ＮＩＣ２２、２２として仮想化し、仮想計算機に割り当てる。
【００１４】
仮想計算機１２上のゲストＯＳ１３で動作する冗長化ソフトウェア１３１は、仮想ＮＩＣ２２、２２を用いて通信ネットワークの冗長構成１００１を組む。これにより、一方のＮＩＣ２１がリンクダウン状態となっても、他方のＮＩＣ２１がリンクアップ状態であれば、ゲストＯＳ１３は、リンクアップ状態の仮想ＮＩＣ２２を用いて、通信ネットワーク９０との通信を継続できる。ここで、リンクアップとは、ＮＩＣ２１が通信ネットワーク９０と通信可能な状態をいう。リンクダウンとは、ＮＩＣ２１が通信ネットワーク９０と通信不可能な状態をいう。
【００１５】
図２は、ＳＲ−ＩＯＶ対応デバイス（ＮＩＣ）を用いて通信ネットワークの冗長化を行った仮想計算機システムの構成例を示す模式図である。以下、図２を用いて、ＳＲ−ＩＯＶ対応デバイスを用いた一般的な通信ネットワークの冗長化の一例を示す。
【００１６】
ＳＲ−ＩＯＶ対応デバイス３０は、１つのデバイス上で複数の仮想的なＮＩＣを実現する機能を有する。ＳＲ−ＩＯＶ対応デバイスは、物理的なＮＩＣに相当するＰＦ３４と、仮想的なＮＩＣとして実現されるＶＦ３２とを有する。ＶＦ３２は、ＰＦ３４を介して外部の通信ネットワーク９０と通信する。１つのＰＦ３４に複数のＶＦ３２が対応付けられても良い。
【００１７】
物理計算機１０は、ＳＲ−ＩＯＶ対応デバイス３０、３０を備える。ハイパバイザ１９は、物理計算機１０の備えるＶＦ３２のリソースをＶＦ３３、３３として仮想計算機１２に割り当てる。
【００１８】
仮想計算機１２上のゲストＯＳ１３で動作する冗長化ソフトウェア１３１は、ＶＦ３３、３３を用いて通信ネットワークの冗長構成１１０１を組む。これにより、一方のＶＦ３３がリンクダウン状態となっても、他方のＶＦ３３がリンクアップ状態であれば、ゲストＯＳ１３は、リンクアップ状態のＶＦ３３を用いて、通信ネットワーク９０との通信を継続できる。
【００１９】
ＳＲ−ＩＯＶ対応デバイス３０において、ＰＦ３４がリンクダウンすると、ＶＦ３２は外部の通信ネットワーク９０と通信できなくなる。
【００２０】
冗長化ソフトウェア１３１は、現用系のＶＦ３３が外部の通信ネットワークと通信できない場合、待機系のＶＦ３３に切り替える。つまり、冗長化ソフトウェア１３１は、現用系のＶＦ３３のリンクダウンを検知すると、待機系のＶＦ３３に切り替える。よって、ＳＲ−ＩＯＶ対応デバイス３０は、ＰＦ３４がリンクダウンした時には、そのＰＦ３４に対応するＶＦ３２のリンク状態を「リンクダウン状態」としなければならない。
【００２１】
ところが、ＰＦ３４とＶＦ３２との間のリンク状態の関係については、ＳＲ−ＩＯＶ規格で規定されていない。そのため、ＰＦ３４がリンクダウンとなっても、ＶＦ３２を「リンクダウン状態」とせずに、ＶＦ３２を「リンクアップ状態」のままとするＳＲ−ＩＯＶ対応デバイスが存在する。
【００２２】
このようなＳＲ−ＩＯＶ対応デバイスを用いた場合、ＰＦ３４がリンクダウンして現用系のＶＦ３２が外部の通信ネットワーク９０と通信できなくなったとしても、ＶＦ３２は「リンクアップ状態」のままなので、冗長化ソフトウェア１３１からは、ＶＦ３３が「リンクアップ状態」として見えてしまう。そのため、冗長化ソフトウェア１３１は、ＰＦ３４がリンクダウンしているにもかかわらず、現用系のＶＦ３３を待機系のＶＦ３３に切り替えることができない。つまり、冗長化ソフトウェア１３１は、通信ネットワークの冗長化を正常に実行することができない。
以下では、このような問題を解決する仮想計算機システムの実施例について説明する。
【００２３】
図３は、仮想計算機システムの構成例を示すブロック図である。仮想計算機システムは、物理計算機１０と、ハイパバイザ１１とを有する。
【００２４】
物理計算機１０は、物理ＣＰＵ４１と、物理メモリ４２と、記憶デバイス（不図示）、ＳＲ−ＩＯＶ対応デバイス３０とを備える。
【００２５】
物理ＣＰＵ４１は、物理計算機１０に係るＩ／Ｏを処理したり、様々なコンピュータプログラム（以下「プログラム」という）を実行したりする。
【００２６】
物理メモリ４２は、様々なプログラム及びデータ等を一時的に保持する。物理メモリ４２内の記憶媒体は、揮発性メモリで良い。揮発性メモリは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等であっても良い。物理メモリ４２は、メモリの領域（ページ）を管理するためのページテーブル５２を有する。
【００２７】
記憶デバイス（不図示）は、様々なプログラム及びデータ等を保持する。記憶デバイス内の記憶媒体は、不揮発性メモリでよい。不揮発性メモリは、追記型のメモリ、例えば、フラッシュメモリ、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：磁気抵抗メモリ）、ＰＲＡＭ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：相変化メモリ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：抵抗変化メモリ）などであっても良い。
【００２８】
ＳＲ−ＩＯＶ対応デバイス３０は、ＳＲ−ＩＯＶに対応するＰＣＩデバイスである。このＳＲ−ＩＯＶ対応デバイス３０は、ＮＩＣであって良い。ＳＲ−ＩＯＶ対応デバイス３０は、例えば、ＰＣＩコンフィグレーションレジスタ５１と、ＰＦ３４と、ＶＦ３２とを有する。
【００２９】
ＰＣＩコンフィグレーションレジスタ（以下「ＰＣＩコンフィグ」という）５１は、ＰＣＩデバイスに関する様々な情報を保持する。ＰＣＩコンフィグ５１は、原則、全てのＰＣＩデバイスが有する。
【００３０】
図４は、ＰＣＩコンフィグレーションレジスタのフォーマット例を示す。
図４に示すように、ＰＣＩコンフィグ５１のアドレス「０ｘ００」から２バイトの領域４０１に「ベンダＩＤ」が格納される。アドレス「０ｘ０２」から２バイトの領域４０２に「デバイス１Ｄ」が格納される。アドレス「０ｘ２Ｃ」から２バイトの領域４０３に「サブシステムベンダＩＤ」が格納される。アドレス「０ｘ２Ｅ」から２バイトの領域４０４に「サブシステムデバイスＩＤ」が格納される。これら４つの情報で、ＰＣＩデバイスの種類を判別することができる。以下、図３の説明に戻る。
【００３１】
ＰＦ３４は、ＳＲ−ＩＯＶ対応デバイス３０において、従来のＰＣＩデバイスの機能を指す。本実施例の場合、このＰＦ３４は、物理的なＮＩＣに該当する。
【００３２】
ＶＦ３２は、ＳＲ−ＩＯＶ対応デバイス３０において、ＰＦ３４のリソースを共有する。１つのＰＦ３４に対して複数のＶＦ３２が対応付けられた場合、その複数のＶＦ３２は、その１つのＰＦ３４のリソースを共有する。本実施例の場合、このＶＦ３２は、仮想的なＮＩＣに該当する。ＶＦ３２は、仮想計算機１２にＰＣＩデバイスとして認識される。つまり、本実施例の場合、仮想計算機１２は、ＶＦ３２を仮想的なＮＩＣ（ＶＦ３２１）として認識する。したがって、ＰＦ３４がリンクダウンしている場合、仮想計算機１２は、そのＰＦ３４のリソースを共有しているＶＦ３２（ＶＦ３２１）を介して、通信ネットワーク９０にアクセスすることはできない。
【００３３】
仮想計算機１２は、仮想的なリソース（以下「仮想リソース」という）である、仮想ＣＰＵ３２３と、仮想メモリ３２２とを有する。これらの仮想リソースは、ハイパバイザ１１が、物理計算機１０のリソースを割り当てることによって実現される。仮想計算機１２上では、ゲストＯＳ１３が実行される。つまり、ゲストＯＳ１３は、仮想計算機１２の仮想リソースを通常のリソースとして認識する。よって、ゲストＯＳ１３は、ＶＦ３２１（ＶＦ３２）を介して通信ネットワーク９０にアクセスすることができる。
【００３４】
ハイパバイザ１１は、仮想化機構の一種であり、物理ＣＰＵ４１及び物理メモリ４２を論理的に分割してなる論理リソースを、仮想計算機１２に仮想リソースとして割り当てる。これにより、仮想計算機１２が実現される。仮想化機構の一種であるハイパバイザ１１は、物理計算機１０上で動作するソフトウェアであっても良いし、物理計算機１０に備えられたハードウェアであっても良いし、物理計算機１０とは別の装置であっても良いし、又はこれらの組み合わせであっても良い。
【００３５】
ハイパバイザ１１は、ＰＦ監視部１０１と、ＶＦ  ＭＭＩＯエミュレーション部１０２と、論理ＣＰＵ割込ハンドラ１０３と、モード切替部１０４とを有する。また、ハイパバイザ１１は、監視対象デバイス管理テーブル３００と、ＰＦリンク状態管理テーブル２００とを有する。
【００３６】
ＰＦ監視部１０１、モード切替部１０４、及びＶＦ  ＭＭＩＯエミュレーション部１０２は、各処理を行う処理部として集積回路化するなどしてハードウェアで実現することもできる。以下の説明において、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するＣＰＵによって処理が行われるものとする。なお、各処理部をハードウェアで実現した場合にはその各処理部が主体となって各処理を行う。また、以下の説明では、「ｘｘｘテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｘｘｘテーブル」を「ｘｘｘ情報」と呼ぶことができる。以下、各テーブル２００、３００及び各部１０１〜１０４について説明する。
【００３７】
図５は、監視対象デバイス管理テーブル３００の構成例を示す。
監視対象デバイス管理テーブル３００は、ハイパバイザ１１で監視する必要のあるＰＦ３４を有するＳＲ−ＩＯＶ対応デバイス３０をエントリとして管理する。
【００３８】
監視対象デバイス管理テーブル３００は、フィールドとして、エントリ番号３０１と、ベンダＩＤ３０２と、デバイスＩＤ３０３と、サブシステムベンダＩＤ３０４と、サブシステムデバイスＩＤ３０５とを有する。つまり、監視対象デバイス管理テーブル３００は、ＰＣＩデバイスの種類毎に異なるＩＤの組み合わせを有する。
【００３９】
例えば、図５において、エントリ番号「０」のエントリ３００は、ベンダＩＤが「０ｘＡＡＡＡ」、デバイスＩＤが「０ｘＢＢＢＢ」、サブシステムベンダＩＤが「０ｘＣＣＣＣ」、サブシステムデバイスＩＤが「０ｘＤＤＤＤ」のデバイスに対応する。
【００４０】
ハイパバイザ１１は、ＰＣＩコンフィグ５１を参照して、監視対象デバイス管理テーブル３００のエントリ３００と一致するベンダＩＤ、デバイスＩＤ、サブシステムベンダＩＤ、及びサブシステムデバイスＩＤの組み合わせを有するデバイスの種類を特定し、その特定したデバイスの種類に係るＰＦ３４を監視対象とする。
【００４１】
監視対象デバイス管理テーブル３００は、ハイパバイザ１１に予め設定されていても良いし、ハイパバイザ１１起動時に所定の処理によって自動的に生成されても良い。
【００４２】
図６は、ＰＦリンク状態管理テーブル２００の構成例を示す。
ＰＦリンク状態管理テーブル２００は、ＰＦ３４の現状のリンク状態をエントリ２１０として管理する。
【００４３】
ＰＦリンク状態管理テーブル２００は、フィールドとして、エントリ番号２０１と、セグメント番号２０２と、バス番号２０３と、デバイス番号２０４と、ファンクション番号２０５と、ＰＦリンク状態２０６とを有する。
【００４４】
セグメント番号２０２と、バス番号２０４と、デバイス番号２０４と、ファンクション番号２０５とを組み合わせた番号を「デバイス識別番号」といっても良い。つまり、１つのエントリ２１０が、１つのＰＦ３４に対応する。
【００４５】
ＰＦリンク状態２０６は、ＰＦ３４の現状のリンク状態が、「リンクアップ」又は「リンクダウン」の何れであるかを示す。例えば、ＰＦリンク状態２０６が「１」の場合を「リンクアップ」、「０」の場合を「リンクダウン」としても良い。ＰＦリンク状態２０６は、ＰＦ３４のリンク状態の変化に伴って適宜更新される。
【００４６】
ハイパバイザ１１は、監視対象デバイス管理テーブル３００にエントリ３１０されているＰＣＩデバイスの種類に基づいて特定される或るＰＦ３４のリンク状態を、このＰＦリンク状態管理テーブル２００で管理する。
【００４７】
例えば、図６において、エントリ番号「０」のエントリ２１０は、セグメント番号が「０ｘ０」、バス番号が「０ｘａａ」、デバイス番号が「０ｘａ」、ファンクション番号が「０ｘ０」のＰＦ３４のＰＦリンク状態が「リンクアップ」であることを示す。以下、図３の説明に戻る。
【００４８】
ＰＦ監視部１０１は、ＰＦリンク状態管理テーブル２００に格納されているＰＦ３４を監視する。つまり、ＰＦ監視部１０１は、ＰＦリンク状態管理テーブル２００に格納されている各ＰＦ３４のリンク状態を、所定のタイミング（例えば、１秒間隔）で取得する。そして、ＰＦ監視部１０１は、その取得したリンク状態（つまり、リンクアップ又はリンクダウン）を、そのＰＦ３４に対応するエントリ２１０のＰＦリンク状態２０６に格納する。ここで、ＰＦリンク状態２０６の変化を検知した場合、ＰＦ監視部１０１は、モード設定手段１０４に、モードの切替を要求する。
【００４９】
例えば、ＰＦリンク状態２０６が「リンクアップ」から「リンクダウン」に変化したことを検知した場合、ＰＦ監視部１０１は、モード設定手段１０４に「エミュレーションモード」への切替を要求する。
【００５０】
例えば、ＰＦ３４リンク状態２０６が「リンクダウン」から「リンクアップ」に変化したことを検知した場合、ＰＦ監視部１０１は、モード設定手段１０４に「パススルーモード」への切替を要求する。各モードの詳細については後述する。
【００５１】
モード切替部１０４は、ハイパバイザ１１におけるＶＦ３２に係る動作モードを設定する。モード切替部１０４は、ＰＦ監視部１０１から「パススルーモード」への切替要求を受信した場合、ハイパバイザ１１がパススルーモード（第１モード）で動作するように設定する。
【００５２】
例えば、モード切替部１０４は、物理メモリ４２のページテーブル５２のＶＦ３２に係るＭＭＩＯ（Ｍｅｍｏｒｙ−Ｍａｐｐｅｄ  Ｉ／Ｏ）領域に対応するＶａｌｉｄビットを「ＯＮ」に設定する。これにより、ゲストＯＳ１３は、従来と同様にＶＦ３２にアクセスできる。
【００５３】
モード切替部１０４は、ＰＦ監視部１０１から「エミュレーションモード」への切替要求を受信した場合、ハイパバイザ１１がエミュレーションモード（第２モード）で動作するように設定する。
【００５４】
例えば、モード切替部１０４は、物理メモリ４２のページテーブル５２のＶＦ３２に係るＭＭＩＯ領域に対応するＶａｌｉｄビットを「ＯＦＦ」に設定する。この場合、ゲストＯＳ１３がＶＦ３２にアクセスした場合、ページフォルト（エラー）が発生する。つまり、エミュレーションモードでは、意図的にページフォルトを発生させているとも言える。
【００５５】
このページフォルトは、物理計算機１０からハイパバイザ１１に割込通知される。このページフォルトの割込通知を論理ＣＰＵ割込ハンドラ１０３がトラップする。
【００５６】
論理ＣＰＵ割込ハンドラ１０３は、物理計算機１０からのページフォルト割込通知をトラップすると、ＶＦ  ＭＭＩＯエミュレーション部１０２に対して、エミュレーション要求を発行する。上述のとおり、このページフォルト割込通知は、モード切替部１０４によってエミュレーションモードが設定されている場合に発生する。
【００５７】
ＶＦ  ＭＭＩＯエミュレーション部１０２は、ＶＦ３２をエミュレートする。ＶＦ  ＭＭＩＯエミュレーション部１０２は、ゲストＯＳ１３からのＶＦ３２１へのアクセスに対して、ゲストＯＳ１２があたかもＳＲ−ＩＯＶ対応デバイス３０の有するＶＦ３２にアクセスしたように振る舞うことによって、ＶＦ３２をエミュレートする。つまり、ゲストＯＳ１２は、ＳＲ−ＩＯＶ対応デバイス３０の有するＶＦ３２にアクセスしたのか、それともＶＦ  ＭＭＩＯエミュレーション部１０２によってエミュレートされたＶＦにアクセスしたのかを区別し得ない。
【００５８】
アクセスＶＦ  ＭＭＩＯエミュレーション部１０２は、論理ＣＰＵ割込ハンドラ１０３から、エミュレーション要求を受信すると、ゲストＯＳ１３からのＶＦ３２へのアクセス（コマンド）の応答を格納すべき記憶領域（以下「ＶＦ応答格納領域」という）に、ＶＦ３２がリンクダウン状態である旨を格納する。そして、ＶＦ  ＭＭＩＯエミュレーション部１０２は、ゲストＯＳ１３に対して、ＶＦ３２へのアクセスに対する完了通知（仮想Ｉ／Ｏ割込通知）を発行する。これにより、ＰＦ３４がリンクダウンしている場合、ゲストＯＳ１３は、ＶＦ３２がリンクダウン状態であることを正しく認識することができる。
【００５９】
以下、「パススルーモード」の場合と、「エミュレーションモード」の場合とにおける仮想計算機システムの動作例を、図面を用いて更に説明する。
【００６０】
図７は、パススルーモードの場合における仮想計算機システムの動作例を説明するための図である。
【００６１】
モード切替部１０４は、ＰＦ監視手段１０１から「パススルーモード」への切替要求を受信すると、物理メモリ４２のページテーブル５２のＶＦ３２に係るＭＭＩＯ領域に対応するＶａｌｉｄビット６３を「ＯＮ」に設定する（Ｓ１１０１）。
【００６２】
ゲストＯＳ１３は、例えば、ＳＲ−ＩＯＶ対応デバイス３０の有するコマンドＩ／Ｆレジスタ６１に、ＶＦ３２のリンク状態を取得するコマンド（以下「ＶＦリンク状態取得コマンド」という）を書き込む（Ｓ１１０２）。
【００６３】
ここで、Ｖａｌｉｄビット６３は「ＯＮ」なので、このＶＦリンク状態取得コマンドの書き込みは成功する。
【００６４】
ＳＲ−ＩＯＶ対応デバイス３０は、このコマンドＩ／Ｆレジスタ６１に書き込まれたＶＦリンク状態取得コマンドに基づいて、ＶＦ応答格納領域６２にＶＦ３２のリンク状態を書き込む（Ｓ１１０３）。本実施例では、ＰＦ３４のリンク状態が「リンクアップ」の場合にこのパススルーモードとなるので、ここでは、ＳＲ−ＩＯＶ対応デバイス３０は、ＶＦ応答格納領域６２に、ＶＦ３２は「リンクアップ状態」である旨を書き込む。このＶＦ応答格納領域６２は、物理メモリ４２に存在しても良いし、他の記憶領域に存在しても良い。
【００６５】
そして、物理計算機１０が発行したコマンド完了通知をハイパバイザ１１が受け、ゲストＯＳ１３に通知（仮想Ｉ／Ｏ割込通知）する（Ｓ１１０４）。
【００６６】
ゲストＯＳ１３は、このコマンド完了通知を受けて、ＶＦ応答格納領域６２からＶＦ３２のリンク状態を取得する（Ｓ１１０５）。これにより、ゲストＯＳ１３は、ＶＦ３２が「リンクアップ状態」であることを認識する。
【００６７】
ここで、仮に、仮想計算機システムが、上記の課題で述べたようなＰＦのリンク状態が「リンクアップ」から「リンクダウン」に変化した場合に、そのＰＦに対応するＶＦのリンク状態を「リンクアップ」と応答するＳＲ−ＩＯＶ対応デバイスを備えているとする。このＳＲ−ＩＯＶ対応デバイスは、ＰＦのリンク状態が「リンクダウン」の場合、上記のステップＳ１１０３において、ＶＦ応答格納領域にＶＦは「リンクアップ状態」であると書き込む。例えば、ＳＲ−ＩＯＶデバイスが、ＰＦがリンクダウンの時にもＶＦとＶＦとの間で通信を継続させるように設計されている場合等である。この場合、ゲストＯＳは、ＰＦが「リンクダウン」しているにも関わらず、そのＰＦ３４に対応するＶＦ３２が「リンクアップ状態」であると誤認識してしまう。
【００６８】
しかし、本実施例に係る仮想計算機システムは、ＰＦ３４のリンク状態が「リンクダウン」である場合、次のエミュレーションモードで動作するので、このような誤認識が発生しないのである。
【００６９】
図８は、エミュレーションモードの場合における仮想計算機システムの動作例を説明するための図である。
【００７０】
モード切替部１０４は、ＰＦ監視部１０１から「エミュレーションモード」への切替要求を受信すると、物理メモリ４２のページテーブル５２のＶＦ３２に係るＭＭＩＯ領域に対応するＶａｌｉｄビット６３を「ＯＦＦ」に設定する（Ｓ１２０１）。
【００７１】
ゲストＯＳ１３は、コマンドＩ／Ｆレジスタ６１に、ＶＦ３２のＶＦリンク状態取得コマンドを書き込もうとする（Ｓ１２０２）。しかし、Ｖａｌｉｄビット６３が「ＯＦＦ」なので、このＶＦリンク状態取得コマンドのアクセスは失敗する。
【００７２】
よって、物理計算機１０は、ハイパバイザ１１に、ページフォルト割込通知を発行する（Ｓ１２０３）。
【００７３】
論理ＣＰＵ割込ハンドラ１０３は、このページフォルト割込通知を検知すると、ＶＦ  ＭＭＩＯエミュレーション部１０２に、エミュレーション要求を発行する（Ｓ１２０４）。
【００７４】
ＶＦ  ＭＭＩＯエミュレーション部１０２は、ゲストＯＳ１３からのコマンドがＶＦリンク状態取得コマンドである場合、ＶＦ応答格納領域６２に、ＶＦ３２は「リンクダウン状態」である旨を書き込む（Ｓ１２０５）。
【００７５】
そして、ＶＦ  ＭＭＩＯエミュレーション部１０２は、ゲストＯＳ１３にコマンド完了通知（仮想Ｉ／Ｏ割込通知）を発行する（Ｓ１２０６）。
【００７６】
ゲストＯＳ１３は、このコマンド完了通知を受けて、ＶＦ応答格納領６２からＶＦ３２のリンク状態を取得する（Ｓ１２０６）。これにより、ゲストＯＳ１３は、ＶＦ３２のリンク状態が「リンクダウン状態」であることを正しく認識できる。
【００７７】
上述の構成によれば、ＳＲ−ＩＯＶ対応デバイス３０に改修（実質的な改修）を加えなくても、ゲストＯＳ１３にＶＦ３２のリンク状態を正しく認識させることができる。また、仮想計算機１２及び／又はゲストＯＳ１３に改修を加えなくても、ゲストＯＳ１３に正しいＶＦ３２のリンク状態を認識させることができる。つまり、物理計算機１０がＰＦ３４とのリンク状態を正しくＶＦ３２のリンク状態が異なり得るに反映させることのできないＳＲ−ＩＯＶ対応デバイス３０を備える場合であっても、その問題をハイパバイザ１１内で吸収することができる。次に、各手段の処理の詳細について、図面を参照しながら説明する。
【００７８】
図９は、ＰＦリンク状態管理テーブル２００の作成処理の一例を示すフローチャートである。このＰＦリンク状態管理テーブル２００の作成処理は、ハイパバイザ１１の起動時に実行されるとしても良い。
【００７９】
ＰＦ監視部１０１は、仮想計算機システム内に未確認デバイスが残っているか否かを判定する（Ｓ１０１）。未確認デバイスが残っていない場合（Ｓ１０１：ＮＯ）、ＰＦ監視部１０１は、当該処理を終了する（ＥＮＤ）。
【００８０】
未確認デバイスが残っている場合（Ｓ１０１：ＹＥＳ）、ＰＦ監視部１０１は、未確認デバイスの１つを選択する（Ｓ１０２）。そして、ＰＦ監視部１０１は、その選択した未確認デバイスのＰＣＩコンフィグ５１を参照し、そのデバイスのデバイス識別情報を特定する（Ｓ１０３）。
【００８１】
ＰＦ監視部１０１は、その特定したデバイス識別情報が、監視対象デバイス管理テーブル３００の何れかのエントリ３１０に一致するか否かを判定する（Ｓ１０４）。
【００８２】
デバイス識別情報が監視対象デバイス管理テーブル３００の何れかのエントリ３１０に一致した場合（Ｓ１０４：ＹＥＳ）、ＰＦ監視部１０１は、そのデバイスに係るＰＦ３４のセグメント番号、バス番号、デバイス番号及びファンクション番号を特定し、ＰＦリンク状態管理テーブル２００に新規エントリ２１０として登録する（Ｓ１０５）。このとき、ＰＦ監視部１０１は、この新規エントリ２１０のＰＦリンク状態２０６の初期値を「リンクダウン状態」としても良い。
【００８３】
デバイス識別情報が監視対象デバイス管理テーブル３００の何れのエントリ３１０にも一致しない場合（Ｓ１０４：ＮＯ）、ＰＦ監視部１０１は、そのままステップＳ１０１に戻る。
【００８４】
以上の処理により、監視対象のデバイスに係るＰＦ３４が、ＰＦリンク状態管理テーブル２００に登録される。
【００８５】
図１０は、ＰＦ３４のリンク状態の変化を検知する処理の一例を示すフローチャートである。この処理は、ハイパバイザ１１の稼働中、繰り返し実行されるとして良い。
【００８６】
ＰＦ監視部１０１は、ＰＦリンク状態管理テーブル２００の最初のエントリ２１０を選択する（Ｓ２０１）。ＰＦ３４監視手段１０１は、その選択したエントリ２１０に係るＰＦ３４のリンク状態を取得する（Ｓ２０２）。
【００８７】
ＰＦ３４監視手段は、その取得したリンク状態と、その選択したエントリに係るリンク状態とを比較し、リンク状態が変化しているか否かを判定する（Ｓ２０３）。リンク状態が変化していない場合（Ｓ２０３：ＮＯ）、ＰＦ監視部１０１は、ステップＳ２１０に進む。
【００８８】
リンク状態が変化している場合（Ｓ２０３：ＹＥＳ）、ＰＦ監視部１０１は、その選択したエントリ２１０のＰＦリンク状態２０６を、その取得したＰＦ３４のリンク状態に書き換える（Ｓ２０４）。
【００８９】
ＰＦ監視部１０１は、その取得したＰＦ３４のリンク状態が「リンクダウン」であるか否かを判定する（Ｓ２０５）。
【００９０】
その取得したＰＦ３４のリンク状態が「リンクダウン」である場合（Ｓ２０５：ＹＥＳ）、ＰＦ監視部１０１は、モード切替部１０４に、「エミュレーションモード」への切替を要求し（Ｓ２０７）、ステップＳ２１０に進む。
【００９１】
その取得したＰＦ３４のリンク状態が「リンクアップ」である場合（Ｓ２０５：ＮＯ）、ＰＦ監視部１０１は、モード切替部１０４に、「パススルーモード」への切替を要求し（Ｓ２０６）、ステップＳ２１０に進む。
【００９２】
ステップＳ２１０において、ＰＦ監視部１０１は、ＰＦリンク状態管理テーブル２００に未選択のエントリ２１０が残っているか否かを判定する（Ｓ２１０）。
【００９３】
ＰＦリンク状態管理テーブル２００に未選択のエントリ２１０が残っている場合（Ｓ２１０：ＹＥＳ）、ＰＦ監視部１０１は、未選択のエントリ２１０の中から次のエントリ２１０を選択し（Ｓ２１１）、ステップＳ２０２に戻る。
【００９４】
ＰＦリンク状態管理テーブル２００に未選択のエントリ２１０が残っていない場合（Ｓ２１０：ＮＯ）、ＰＦ監視部１０１は、ＰＦリンク状態管理テーブル２００に格納されているエントリ２１０を全て未選択にする（Ｓ２２０）。そして、ＰＦ監視部１０１は、例えば１秒待機した後（Ｓ２１１）、ステップＳ２０１に戻る。つまり、ＰＦ監視部１０１は、ＰＦリンク状態管理テーブル２００に登録されている全てのエントリ２１０について一通りリンク状態を確認したので、また最初から各エントリのリンク状態を確認する。
【００９５】
以上の処理により、ＰＦリンク状態管理テーブル２００に登録されているＰＦ３４のリンク状態の変化を検知することができる。
【００９６】
図１１は、モード切替部１０４における処理の一例を示すフローチャートである。
【００９７】
モード切替部１０４は、ＰＦ監視部１０１から発行されたモード切替要求（図１０のステップＳ２０６、Ｓ２０７に対応）が、パススルーモードへの切替要求であるか、又はエミュレーションモードへの切替要求であるかを判定する（Ｓ３０１）。
【００９８】
パススルーモードへの切替要求である場合（Ｓ３０１：パススルーモード）、モード切替部１０４は、ページテーブル５２のＶＦ３２に係るＭＭＩＯ領域に対応するＶａｌｉｄビット６３を「ＯＮ」に設定し（Ｓ３０２）、当該処理を終了する（ＥＮＤ）。
【００９９】
エミュレーションモードへの切替要求である場合（Ｓ３０３：エミュレーションモード）、モード切替部１０４は、ページテーブル５２のＶＦ３２に係るＭＭＩＯ領域に対応するＶａｌｉｄビット６３を「ＯＦＦ」に設定し（Ｓ３０３）、当該処理を終了する（ＥＮＤ）。
【０１００】
図１２は、ＶＦ  ＭＭＩＯエミュレーション部１０２における処理の一例を示すフローチャートである。
【０１０１】
このＶＦ  ＭＭＩＯエミュレーション部１０２は、上述の通り、ＶＦ３２に係るＭＭＩＯ領域に対応するＶａｌｉｄビットが６３「ＯＦＦ」の場合に実行される。つまり、このＶＦ  ＭＭＩＯエミュレーション部１０２は、ハイパバイザ１１がエミュレーションモードの場合に実行される。
【０１０２】
ＶＦ  ＭＭＩＯエミュレーション部１０２は、ゲストＯＳ１３からのコマンドが、コマンドＩ／Ｆレジスタ６１への書き込みであるか否かを判定する（Ｓ４０１）。
【０１０３】
ゲストＯＳ１３からのコマンドがコマンドＩ／Ｆレジスタ６１への書き込みでない場合（Ｓ４０１：ＮＯ）、ＶＦ  ＭＭＩＯエミュレーション部１０２は、ゲストＯＳ１３からのコマンドをそのままＶＦ３２に通し（Ｓ４２０）、当該処理を終了する（ＥＮＤ）。
【０１０４】
ゲストＯＳ１３からのコマンドがコマンドＩ／Ｆレジスタ６１への書き込みである場合（Ｓ３０１：ＹＥＳ）、ＶＦ  ＭＭＩＯエミュレーション部１０２は、このコマンドがＶＦリンク状態取得コマンドであるか否かを判定する（Ｓ４１０）。
【０１０５】
ゲストＯＳ１３からのコマンドがＶＦ３２リンク状態取得コマンドでない場合（Ｓ４１０：ＮＯ）、ＶＦ  ＭＭＩＯエミュレーション部１０２は、ゲストＯＳ１３からのコマンドをそのままＶＦ３２に通し（Ｓ４２０）、当該処理を終了する（ＥＮＤ）。つまり、このコマンドは、通常通りコマンドＩ／Ｆレジスタ６１に書き込まれる。
【０１０６】
ゲストＯＳ１３からのコマンドがＶＦ３２リンク状態取得コマンドである場合（Ｓ４１０：ＹＥＳ）、ＶＦ  ＭＭＩＯエミュレーション部１０２は、ＶＦ応答格納領域６２に、ＶＦ３２がリンクダウン状態である旨を書き込む（Ｓ４１１）。
【０１０７】
そして、ＶＦ  ＭＭＩＯエミュレーション部１０２は、ゲストＯＳ１３に対してコマンド完了通知（仮想Ｉ／Ｏ割込通知）を上げ（Ｓ４１２）、当該処理を終了する（ＥＮＤ）。このコマンド完了通知を受けたゲストＯＳ１３は、ＶＦ応答格納領域６２からＶＦ３２のリンク状態（つまり「リンクダウン状態」）を取得する。
【０１０８】
上記の図１２及び図１３の処理により、図１０及び図１１に示したように、ゲストＯＳ１３は、ＰＦ３４のリンク状態に対応したＶＦ３２のリンク状態を正しく取得することができる。つまり、ゲストＯＳ１３は、ＰＦ３４がリンクダウンの場合には、ＶＦ３２がリンクダウン状態であることを正しく認識することができる。
【０１０９】
上述した実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【０１１０】
上述した実施例では、ハイパバイザ１１がＰＦ３４のリンクダウンを検知してＶＦ応答格納領域６２にＶＦ３２がリンクダウン状態である旨をライトし、ゲストＯＳ１３はそのＶＦ応答格納領域６２を参照することでＶＦ３２がリンクダウン状態であることを認識しているが、例えば、ハイパバイザ１１はＰＦ３４のリンクダウンを検知した場合、そのＰＦ３４に対応するＶＦ３２がリンクダウン状態となった旨をゲストＯＳ１３に通知するとしても良い。
【符号の説明】
【０１１１】
１…仮想計算機システム  １０…物理計算機  １１…ハイパバイザ  １２…仮想計算機  １３…ゲストＯＳ  ３０…ＳＲ−ＩＯＶ対応デバイス
【図１】
2014235578.tif 000003
【図２】
2014235578.tif 000004
【図３】
2014235578.tif 000005
【図４】
2014235578.tif 000006
【図５】
2014235578.tif 000007
【図６】
2014235578.tif 000008
【図７】
2014235578.tif 000009
【図８】
2014235578.tif 000010
【図９】
2014235578.tif 000011
【図１０】
2014235578.tif 000012
【図１１】
2014235578.tif 000013
【図１２】
2014235578.tif 000014