(57)【要約】【課題】仮想計算機におけるデバイスの制御に関して、共有方式と占有方式を含む複数の制御方式を適切に切り替えること。【解決手段】本発明は、リソースの機能を分割することで、複数の仮想計算機１２を実現し、さらに物理デバイスを複数搭載する計算機である。  計算機の管理部は、仮想デバイスの使用状態が変わった場合、制御方式に応じて利用可能な物理デバイスの中から、当該仮想デバイスと互換性のある物理デバイスを選択して対応付けを行い、その仮想デバイスの制御方式を変更する。【選択図】図２
2008146566.tif 000002
【特許請求の範囲】
【請求項１】
自身が有する処理部と記憶部を含むリソースの機能を分割することで、複数の仮想計算機を実現し、さらに周辺機器接続装置あるいはネットワーク接続装置である物理デバイスを複数搭載する計算機であって、
前記処理部と前記記憶部により構成され、前記複数の仮想計算機と前記複数の物理デバイスを管理し、前記物理デバイスを仮想的なデバイスである仮想デバイスとして前記仮想計算機に割り当て、仮想デバイスと物理デバイスを一対一で対応させる占有方式と、複数の仮想デバイスを１つの物理デバイスに対応させる共有方式と、を含む複数の制御方式のいずれかで前記仮想デバイスを管理する管理部を備え、
前記管理部は、
前記仮想デバイスが現在使用中の状態である活性状態か、現在ほとんどあるいはまったく使用されていない状態である非活性状態のうち、いずれかの使用状態に関する情報を保持する状態情報と、
前記物理デバイスと前記仮想デバイスに関して、それぞれのアドレス空間を含む構成に関する情報を保持する構成情報と、
前記仮想デバイスと前記物理デバイスの対応関係に関する情報を保持する対応関係情報と、
を有し、
前記状態情報を参照して前記仮想デバイスの使用状態が変わったと判定した場合、前記構成情報を参照して制御方式に応じて利用可能な前記物理デバイスの中から、ハードウェア仕様、識別子、アドレス空間の少なくともいずれか１つ以上の情報に基づいて当該仮想デバイスと互換性のある物理デバイスを選択して前記対応関係情報において対応付けを行い、その仮想デバイスの制御方式を変更する
ことを特徴とする計算機。
【請求項２】
前記管理部は、
前記仮想デバイスが前記活性状態と非活性状態のいずれの使用状態なのかを判定するための前記仮想デバイスの使用状況に関する判定条件、および、前記仮想デバイスがその判定条件を満たしたときに適用する前記制御方式の情報、を保持する判定条件情報と、を、さらに有し、
前記判定条件情報を参照して前記仮想デバイスの使用状態が変わったと判定した場合、
前記構成情報を参照して制御方式に応じて利用可能な前記物理デバイスの中から、ハードウェア仕様、識別子、アドレス空間の少なくともいずれか１つ以上の情報に基づいて当該仮想デバイスと互換性のある物理デバイスを選択して前記対応関係情報において対応付けを行い、その仮想デバイスの制御方式を変更する
ことを特徴とする請求項１に記載の計算機。
【請求項３】
前記判定条件は、前記仮想計算機から前記仮想デバイスに対して与えられるコマンドの種類に関する情報であることを特徴とする請求項２に記載の計算機。
【請求項４】
前記判定条件は、前記仮想デバイスの使用頻度に関するしきい値であることを特徴とする請求項２に記載の計算機。
【請求項５】
前記管理部は、
新たに選択された仮想デバイスに関する設定を記憶し、その仮想デバイスの制御方式に基づいて前記物理デバイスの設定を初期化し、その仮想デバイスに関して記憶した設定を前記物理デバイスに複製して適用する
ことを特徴とする請求項１または請求項２に記載の計算機。
【請求項６】
前記占有方式は、前記仮想計算機が前記仮想デバイスに対して与えたコマンドを前記物理デバイスに直接送信することができる直接占有方式と、前記仮想計算機が前記仮想デバイスに対して与えたコマンドを前記管理部がアドレス変換してから前記物理デバイスに転送する間接占有方式と、の２種類ある
ことを特徴とする請求項１または請求項２に記載の計算機。
【請求項７】
前記管理部は、
前記構成情報を参照して前記仮想デバイスと互換性のある物理デバイスがないと判定断した場合、前記仮想計算機におけるオペレーティングシステムに対して、前記仮想デバイスに対する制御ソフトウェアであるデバイスドライバの設定更新要求を送信することで、その仮想計算機に前記直接占有方式を実現させる
ことを特徴とする請求項６に記載の計算機。
【請求項８】
前記管理部は、
前記仮想デバイスの制御方式を変更するとき、その仮想デバイスに関するその変更前あるいは変更後の少なくともいずれかの使用状態を、前記計算機の表示部に表示させる
ことを特徴とする請求項１または請求項２に記載の計算機。
【請求項９】
自身が有する処理部と記憶部を含むリソースの機能を分割することで、複数の仮想計算機を実現し、さらに周辺機器接続装置あるいはネットワーク接続装置である物理デバイスを複数搭載する計算機による仮想デバイスの制御方法であって、
前記計算機は、
前記処理部と前記記憶部により構成され、前記複数の仮想計算機と前記複数の物理デバイスを管理し、前記物理デバイスを仮想的なデバイスである仮想デバイスとして前記仮想計算機に割り当て、仮想デバイスと物理デバイスを一対一で対応させる占有方式と、複数の仮想デバイスを１つの物理デバイスに対応させる共有方式と、を含む複数の制御方式のいずれかで前記仮想デバイスを管理する管理部を備え、
前記管理部は、
前記仮想デバイスが現在使用中の状態である活性状態か、現在ほとんどあるいはまったく使用されていない状態である非活性状態のうち、いずれかの使用状態に関する情報を保持する状態情報と、
前記物理デバイスと前記仮想デバイスに関して、それぞれのアドレス空間を含む構成に関する情報を保持する構成情報と、
前記仮想デバイスと前記物理デバイスの対応関係に関する情報を保持する対応関係情報と、
を有し、
前記状態情報を参照して前記仮想デバイスの使用状態が変わったと判定した場合、前記構成情報を参照して制御方式に応じて利用可能な前記物理デバイスの中から、ハードウェア仕様、識別子、アドレス空間の少なくともいずれか１つ以上の情報に基づいて当該仮想デバイスと互換性のある物理デバイスを選択して前記対応関係情報において対応付けを行い、その仮想デバイスの制御方式を変更する
ことを特徴とする仮想デバイスの制御方法。
【請求項１０】
前記管理部は、
前記仮想デバイスが前記活性状態と非活性状態のいずれの使用状態なのかを判定するための前記仮想デバイスの使用状況に関する判定条件、および、前記仮想デバイスがその判定条件を満たしたときに適用する前記制御方式の情報、を保持する判定条件情報と、を、さらに有し、
前記判定条件情報を参照して前記仮想デバイスの使用状態が変わったと判定した場合、
前記構成情報を参照して制御方式に応じて利用可能な前記物理デバイスの中から、ハードウェア仕様、識別子、アドレス空間の少なくともいずれか１つ以上の情報に基づいて当該仮想デバイスと互換性のある物理デバイスを選択して前記対応関係情報において対応付けを行い、その仮想デバイスの制御方式を変更する
ことを特徴とする請求項９に記載の仮想デバイスの制御方法。
【請求項１１】
前記判定条件は、前記仮想計算機から前記仮想デバイスに対して与えられるコマンドの種類に関する情報であることを特徴とする請求項１０に記載の仮想デバイスの制御方法。
【請求項１２】
前記判定条件は、前記仮想デバイスの使用頻度に関するしきい値であることを特徴とする請求項１０に記載の仮想デバイスの制御方法。
【請求項１３】
前記管理部は、
新たに選択された仮想デバイスに関する設定を記憶し、その仮想デバイスの制御方式に基づいて前記物理デバイスの設定を初期化し、その仮想デバイスに関して記憶した設定を前記物理デバイスに複製して適用する
ことを特徴とする請求項９または請求項１０に記載の仮想デバイスの制御方法。
【請求項１４】
前記占有方式は、前記仮想計算機が前記仮想デバイスに対して与えたコマンドを前記物理デバイスに直接送信することができる直接占有方式と、前記仮想計算機が前記仮想デバイスに対して与えたコマンドを前記管理部がアドレス変換してから前記物理デバイスに転送する間接占有方式と、の２種類ある
ことを特徴とする請求項９または請求項１０に記載の仮想デバイスの制御方法。
【請求項１５】
前記管理部は、
前記構成情報を参照して前記仮想デバイスと互換性のある物理デバイスがないと判定した場合、前記仮想計算機におけるオペレーティングシステムに対して、前記仮想デバイスに対する制御ソフトウェアであるデバイスドライバの設定更新要求を送信することで、その仮想計算機に前記直接占有方式を実現させる
ことを特徴とする請求項１４に記載の仮想デバイスの制御方法。
【請求項１６】
前記管理部は、
前記仮想デバイスの制御方式を変更するとき、その仮想デバイスに関するその変更前あるいは変更後の少なくともいずれかの使用状態を、前記計算機の表示部に表示させる
ことを特徴とする請求項９または請求項１０に記載の仮想デバイスの制御方法。
【請求項１７】
請求項９から請求項１６までのいずれか１項に記載の仮想デバイスの制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システムの制御や管理などに関する。
【背景技術】
【０００２】
近年、単一の計算機上のリソースを複数の仮想的な計算機に分割し、複数の計算機で構成されるシステムを少数の物理的な計算機に集約する技術が注目されている。そして、物理的な計算機の台数を減らすことによって、消費電力の低減や、管理の簡略化など、つまり、運用コストの削減を実現することができる。
【０００３】
これらの仮想計算機の制御技術は、ＰＣ（Personal Computer）アーキテクチャなどの安価な計算機において仮想計算機システムを構築するための支援技術が進歩していることから近年注目を浴びているが、これまで、メインフレーム（汎用大型計算機）などの制御において主に実現されてきた。
【０００４】
前記のような仮想計算機システムで、計算機上のネットワークインターフェースカード（ＮＩＣ）、ＳＣＳＩ（Small Computer System Interface）カードなどのデバイスを制御する方式として、２つの方式がある。なお、以降では、計算機上に実際に搭載されているデバイスを物理デバイスと呼び、仮想計算機上で認識しているデバイスを仮想デバイスと呼ぶ。
【０００５】
第一の方式は、仮想計算機の制御部（管理部）であるハイパバイザが１つあるいは複数の仮想計算機上から仮想デバイスへ発行された制御命令を検知し、制御命令をハイパバイザ上で解析して、物理デバイスの動作をエミュレートする方式である。本方式では複数の仮想計算機が単一の物理デバイスを共有できる反面、ハイパバイザによるオーバーヘッドが大きく、処理性能が劣化する。また、複数の仮想計算機が単一の物理デバイスを共有する場合、複数の仮想計算機が同時にその物理デバイスを使用した場合などの処理性能の確保が困難であり、性能予測が難しいという問題点もある。以降では、この第一の方式を共有方式と呼ぶ。
【０００６】
第二の方式は、ハイパバイザは特定の物理デバイスと仮想計算機間の対応付けを管理して計算機資源の分割のみを行い、仮想計算機から直接物理デバイスの制御を行う方式である。以降では第二の方式を占有方式と呼ぶ。占有方式は高速に動作するが、物理デバイスの共有ができないという短所がある。
【０００７】
特許文献１では、前記２つの方式を有する仮想計算機システムで、仮想デバイスの制御方式を、共有方式から占有方式に変更する、あるいは、占有方式から共有方式に変更する方法が示されている。
また、特許文献２では、前記共有方式において、仮想デバイスの使用状況を監視してメモリのページテーブルの最適化を行う方式が示されている。
【０００８】
実用的なシステムにおいて、すべての仮想デバイスを占有方式で構成した場合、計算機に搭載しなければならない物理デバイスの数は増大する。しかし、計算機上に搭載可能な物理デバイスの数には限界があり、すべての仮想デバイスを占有方式とすることは困難である。
そのため、共有方式と占有方式を混在したシステムを構成することが重要になってくる。
【０００９】
システムによっては、仮想デバイスの使用状況によって、共有方式の性能で十分な場合と、占有方式の性能を確保することが必要な場合が存在する。また、稼働中に仮想デバイスの使用状況が変化することもある。特に、使用状況が変化するシステムにおいて、安定した処理性能を確保するためには、使用状況に応じて即時に方式を変更することが重要となる。
【００１０】
また、システムにおいて、共有方式で稼動する仮想デバイスを占有方式に変更できるか、また、その逆は可能であるかはシステムに搭載されている物理デバイスの情報と、仮想デバイス、物理デバイスの設定などに依存する。たとえば、共有方式の仮想デバイスを占有方式に変更する場合、一般的なＰＣ／ＡＴ（Personal Computer/Advanced Technology）などのアーキテクチャでは、その仮想デバイスの搭載位置などの識別子が同一である必要がある。
【特許文献１】米国特許第４８８７２０２号明細書
【特許文献２】米国特許第６７２５２８９号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１では仮想デバイスの制御方式の変更方法について記載しているが、システム構成の情報と、仮想デバイスの使用状況の管理を行っていないため、制御方式の変更時期と変更後の制御方法を決定することができず、外部から変更指示を与えなければならなかった。
特許文献２においても同様に、変更後の制御方式を決定することができなかった。
【００１２】
前記変更を人間が手動で行った場合、計算機の数に比例して管理コストが増大していくため、管理コストが多くかかることになる。また、手動の作業時間を必要とする場合、使用方式の迅速な切り替えが実行できず、長期間の性能劣化を招く可能性があるので、手動部分を介さない高速な変更方式が必要となる。
【００１３】
したがって、前記の仮想デバイスの使用状況とシステム構成の両者の情報を一元的に管理して、制御方式の変更のタイミングと変更後の制御方式を決定する方法が重要となってきている。
本発明は、このような問題点に鑑みてなされたものであり、仮想計算機における仮想デバイスの制御に関して、共有方式と占有方式を含む複数の制御方式を適切に切り替えることを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、自身が有する処理部と記憶部を含むリソースの機能を分割することで、複数の仮想計算機を実現し、さらに周辺機器接続装置あるいはネットワーク接続装置である物理デバイスを複数搭載する計算機である。
計算機は、処理部と記憶部により構成され、複数の仮想計算機と複数の物理デバイスを管理し、物理デバイスを仮想的なデバイスである仮想デバイスとして仮想計算機に割り当て、仮想デバイスと物理デバイスを一対一で対応させる占有方式と、複数の仮想デバイスを１つの物理デバイスに対応させる共有方式と、を含む複数の制御方式のいずれかで仮想デバイスを管理する管理部を備えている。
【００１５】
管理部は、仮想デバイスが現在使用中の状態である活性状態か、現在ほとんどあるいはまったく使用されていない状態である非活性状態のうち、いずれかの使用状態に関する情報を保持する状態情報と、物理デバイスと仮想デバイスに関して、それぞれのアドレス空間を含む構成に関する情報を保持する構成情報と、仮想デバイスと物理デバイスの対応関係に関する情報を保持する対応関係情報と、を有している。
そして、管理部は、状態情報を参照して仮想デバイスの使用状態が変わったと判定した場合、構成情報を参照して制御方式に応じて利用可能な物理デバイスの中から、ハードウェア仕様、識別子、アドレス空間の少なくともいずれか１つ以上の情報に基づいて当該仮想デバイスと互換性のある物理デバイスを選択して対応関係情報において対応付けを行い、その仮想デバイスの制御方式を変更する。
その他の手段については後述する。
【発明の効果】
【００１６】
本発明によれば、仮想計算機における仮想デバイスの制御に関して、共有方式と占有方式を含む複数の制御方式を適切に切り替えることができる。
【発明を実施するための最良の形態】
【００１７】
以下、各図面を参照しながら、本発明を実施するための最良の形態（以下、実施形態という。）について説明する（参照図以外の図も適宜参照）。ここでは、仮想計算機における仮想デバイスの制御に関し、仮想デバイスの使用状況によって、共有方式と占有方式を変更する（切り替える）ことが有効である代表的な例の1つとして、計算機の高信頼化に向けたデバイスの冗長化技術の例を用いて説明を行う。
なお、デバイスとは、本実施形態においては、ＳＣＳＩカード、ＮＩＣおよび入出力装置のことを指すものとするが、他の実施形態を実現する場合は、それら以外に、それらと同質の装置（その他の周辺機器接続装置やネットワーク接続装置など）のことを指すこともあるものとする。
【００１８】
本実施形態の前提と概要についてまず説明すると、企業のシステムではハードウェアの故障に備えて、計算機上のデバイスを複数搭載して冗長化を行うことが一般的である。冗長化の方式として、現用系（現用状態、活性状態）、待機系（待機状態、非活性状態）のデバイスを用いる方式がある。
【００１９】
前記の方式では、現用系と待機系の役割を持った複数の同種のデバイスを組として定義して、仮想的に１つのデバイスとして扱う。
デバイスの機能を果たすために、通常は現用系の役割を持つデバイスを使用する。
待機系のデバイスは、デバイスが故障していないことを確認するために少数のアクセスを行う以外は、使用しない。
そして、現用系のデバイスが故障した場合には、仮想計算機上で稼動するＯＳは待機系として定義されたデバイスを代替のデバイスとして使用する。
【００２０】
デバイスをすべて占有方式で使用するとデバイス数が増大する。前記冗長構成では待機系ではデバイスの処理性能は求められないため、待機系では共有方式でデバイスを使用することによって、物理デバイスの総数を削減することができる一方、現用系では占有的にデバイスを割り当てることで高速かつ安定した処理性能を確保できる。
【００２１】
また、計算機システムで少数の予備デバイスを用意しておき、待機系のデバイスが現用系の代替デバイスとして使用された場合、本実施形態の仮想計算機システムの制御方式によりハイパバイザなどの制御ソフトウェアがデバイスの使用状況の変化を検知する。そして、仮想デバイスの制御方式を共有方式から予備デバイスを使用した占有方式に変更することによって、使用状況に応じたデバイスの制御方式の変更ができることになる、つまり、システムの状況の変化に対応してデバイスの処理性能を継続して確保することができるようになる。以下、これらについて詳細に説明する。
【００２２】
［第１実施形態］
はじめに、第１実施形態について説明する。まず、仮想計算機システムを稼動させる計算機１０の構成の一例に関して、図１を参照して説明する。図１は、計算機１０などの構成図である。
【００２３】
計算機１０は、１つ以上のＣＰＵ（Central Processing Unit）２０１（２０１−１〜２０１−３の総称。以下、他の構成についても同様に表記する。）（処理部）を持ち、フロントサイドバス２０２を介してノースブリッジ２０３に接続している。
ノースブリッジ２０３は、メモリ２０４（記憶部）およびＩＯ（Input/Output）ブリッジ２０５と接続し、ＣＰＵ２０１とメモリ２０４との間で行われるデータ転送、メモリ２０４とＩＯブリッジ２０５との間で行われるデータ転送の制御を実行する。ノースブリッジ２０３は、たとえば、情報通信制御用のＬＳＩ（Large Scale Integration）チップにより実現することができる。
【００２４】
ＩＯブリッジ２０５は、中継装置であり、ＰＣＩ（Peripheral Component Interconnect）バスなどの１つ以上のＩＯバス２０６と接続し、ＩＯバス２０６上に接続されたＩＯデバイスとノースブリッジ２０３とのデータ転送の制御を実行する。
ＩＯデバイスの例として、ここでは、外部記憶装置２１０と接続するためのＳＣＳＩカード２０７（周辺機器）、ネットワークと接続するためのＮＩＣ（Network Interface Card）２０８（ネットワーク接続装置）、および、キーボードやディスプレイなどと接続するための入出力装置２０９（周辺機器）を挙げている。
【００２５】
ＣＰＵ２０１は、ノースブリッジ２０３を介してメモリ２０４上に配置されたプログラムを読み込んで実行し、前記プログラムの内容に従って、必要に応じてノースブリッジ２０３、ＩＯブリッジ２０５を介してＳＣＳＩカード２０７、ＮＩＣ２０８などに命令を発行し、データ転送制御を実行する。
また、メモリ２０４およびＩＯデバイス（ＳＣＳＩカード２０７、ＮＩＣ２０８など）は、それぞれ計算機１０上で一意なアドレス空間（アドレスとして利用可能なメモリ領域）を持つ。ＣＰＵ２０１はデータ転送先のアドレスを指定してデータ転送命令を発行する。メモリ２０４およびＩＯデバイスは、それぞれ指定されたアドレスに対応したデータの転送を実行する。
【００２６】
次に、図２を参照して、計算機１０を制御する仮想計算機システムの構成の一例について説明する。図２は、仮想計算機システムの構成図である。
ハイパバイザ１１（管理部）は、主に計算機１０上で動作するファームウェアもしくはミドルウェアなどのプログラムとして実装され（つまり、ＣＰＵ２０１とメモリ２０４によって実現され）、前記計算機１０の制御、および仮想計算機１２（１２−１〜１２−３）の制御を管理し、単一の計算機１０の資源を分割して論理的に複数の仮想計算機１２に割り当てる。ハイパバイザ１１は、オペレーティングシステム（以下ＯＳと呼ぶ。）よりも下位層のプログラムとして実行されるため、計算機１０の起動時に、ＢＩＯＳ（Basic Input/Output System）などのシステム初期化プログラムの実行後に、ＯＳなどを介さずに直接実行される。
【００２７】
ハイパバイザ１１の制御下において、計算機１０上では１つ以上の仮想計算機１２が動作する。仮想計算機１２はそれぞれが論理的には図１に示す構成に示される各要素と同等の構成で為るが、すべての機能がハードウェアで実装（実現）される図１の計算機１０とは異なり、すべての制御あるいは部分的な制御がハイパバイザ１１のプログラムの動作によって実行される。それぞれの仮想計算機１２上では、１つのＯＳ１３（１３−１〜１３−３）が動作する。
第１実施形態においては、ＮＩＣ２０８の冗長化の場合を例にとり、以降ではＩＯデバイスの例としてＮＩＣ２０８を用いて説明を行う。また、ＩＯバス２０６の例として、ＰＣＩを用いて説明を行う。
【００２８】
計算機１０は、ＩＯデバイスとして少なくとも1つ以上の物理ＮＩＣ１０１（１０１−１〜１０１−４。ＮＩＣ２０８と同様）を有する。ここでは、仮想計算機１２上の仮想ＮＩＣ１２１と区別するため、計算機１０が有するＮＩＣを「物理ＮＩＣ」と呼んでいる。
【００２９】
仮想計算機１２は、それぞれ２つ以上の仮想ＮＩＣ１２１を有する。前記仮想計算機１２上で動作するＯＳ１３は、前記仮想ＮＩＣ１２１を使用して冗長構成をとる。
【００３０】
ハイパバイザ１１は特定の仮想計算機１２に対して、特定の物理ＮＩＣ１０１を占有的に割り当てる機能を有する。ある物理ＮＩＣ１０１が特定の仮想計算機１２に割り当てられた場合、前記物理ＮＩＣ１０１は前記計算機１０からのデータ転送処理のみを実行する。
また、ハイパバイザ１１は仮想ＮＩＣ制御部１１１（１１１−１〜１１１−２）を有し、仮想計算機１２上の仮想ＮＩＣ１２１の機能をプログラム上で実行（実現）することができる。仮想ＮＩＣ制御部１１１は、図６で後述する複数の方式によってＮＩＣ制御を実行する。
【００３１】
仮想ＮＩＣ制御部１１１は、仮想ＮＩＣ制御部１１１内の処理部１１５が仮想ＮＩＣ１２１の冗長化における状態、および、仮想計算機１２のシステム構成を参照して、仮想ＮＩＣ１２１を処理する方式を選択する。仮想ＮＩＣ状態管理部１１４は、仮想ＮＩＣ１２１の使用状況を監視して冗長化における状態を判定する。
物理ＮＩＣ１０１を使用したデータ転送命令の制御方式の詳細については後述する。
【００３２】
物理ＮＩＣ状態管理部１１３は仮想計算機１２のシステム構成を管理する。
具体的には、計算機１０が有する物理ＮＩＣ１０１のハードウェア（仕様）構成情報の管理と、仮想計算機１２のシステム構成の管理と、前記仮想計算機１２上の仮想ＮＩＣ１２１と前記物理ＮＩＣ１０１の割り当て管理とを行う。
【００３３】
次に、仮想計算機システムにおける仮想計算機１２の構成管理方式と、仮想計算機１２のシステム構成の例について説明する。
図３は、物理ＮＩＣ状態管理部１１３の構成例を示した図である。
【００３４】
物理ＮＩＣ情報収集部３０４および物理ＮＩＣ割り当て部３０５は、ハイパバイザ１１上で動作するプログラムであり、物理ＮＩＣ一覧３０１（構成情報）、仮想ＮＩＣ一覧３０２（構成情報）、および、物理・仮想ＮＩＣマッピング一覧３０３（対応関係情報）は、ハイパバイザ１１が管理するメモリ２０４の領域中に確保されたデータの格納領域にある。
【００３５】
物理ＮＩＣ情報収集部３０４は、計算機１０が有する物理ＮＩＣ１０１のハードウェア・ソフトウェアに関する情報を収集する機能であり、ハイパバイザ１１上で動作するプログラムなどにより実装される。
物理ＮＩＣ情報収集部３０４は、ハイパバイザ１１が計算機１０上で起動した時点で実行され、ＢＩＯＳなどにより物理ＮＩＣ１０１に割り当てられたコンフィグレーション空間を介して構成情報を収集し、物理ＮＩＣ一覧３０１を作成する。
【００３６】
物理ＮＩＣ割り当て部３０５は、物理ＮＩＣ１０１と仮想計算機１２上の仮想ＮＩＣ１２１との対応付けを管理し、他の機能（構成）から新規の仮想ＮＩＣ１２１と物理ＮＩＣ１０１との対応付けの要求を受信し、条件に該当する物理ＮＩＣ１０１を割り当てる。
【００３７】
物理ＮＩＣ一覧３０１は、物理ＮＩＣ１０１のハードウェア・ソフトウェアに関する情報の一覧で、テーブルなどの形式で保持される。物理ＮＩＣ一覧３０１は、物理ＮＩＣ情報収集部３０４によって、計算機１０の起動時などに情報収集が行われて項目が設定される。
物理ＮＩＣ一覧３０１の構成の一例を、図４を用いて説明する。図４は、物理ＮＩＣ一覧３０１の構成例を示した図である。
【００３８】
物理ＮＩＣ一覧３０１において、物理ＮＩＣ１０１のＭＡＣ（Media Access Control）アドレス４０１は物理ＮＩＣ１０１ごとに一意に割り当てられた識別子であり、物理ＮＩＣ１０１中の記録領域に保持されている。
【００３９】
デバイス搭載位置４０３は、ＰＣＩなどにおいてＰＣＩバス中の位置を表す識別子で、計算機１０上での物理ＮＩＣ１０１の搭載位置によって決定される。ＰＣＩでは、デバイス搭載位置４０３はデバイスの基本情報を取得・設定を行う命令を発行する際のアドレスとして用いられる。
【００４０】
モデル名４０２は物理ＮＩＣ１０１の仕様をあらわす識別子であり、前記モデル名４０２に従ってＯＳがアクセスするためのコマンド仕様が決定される。
【００４１】
ＭＭＩＯアドレス４０４およびＩＯアドレス４０５は、物理ＮＩＣ１０１を制御するために使用するアドレスであり、物理ＮＩＣ１０１のデータ転送処理の制御はこれらのアドレスを用いて行われる。通常は計算機１０の起動時にＢＩＯＳなどのシステム初期化プログラムによって、これらのアドレスが決定される。
【００４２】
仮想ＮＩＣ一覧３０２は仮想計算機上の仮想ＮＩＣに関する情報の一覧を保持する。
仮想ＮＩＣ一覧３０２のテーブルの項目は物理ＮＩＣ一覧３０１と同一であるので、重複説明を省略する。
【００４３】
ただし、それぞれの項目の内容は物理ＮＩＣ情報収集部３０４によって収集されるのではなく、仮想計算機１２の定義時、あるいは仮想計算機１２の起動時にハイパバイザ１１によって値が決定され、直接ハイパバイザ１１によって更新される点で、物理ＮＩＣ一覧３０１の場合と異なる。
【００４４】
ＭＡＣアドレス４０１の決定方法は、ハイパバイザ１１にあらかじめ割り当てられている特定のアドレス空間の中からランダムに１つのアドレスを選択するなどの公知技術を用い、各種アドレスの決定はＰＣ／ＡＴ互換機でのＢＩＯＳによる決定方法と同一の決定方法を用いて仮想計算機１２上で一意なアドレス空間を割り当てることが可能であり、詳細な説明については省略する。
【００４５】
ＭＭＩＯアドレス４０４、およびＩＯアドレス４０５については、仮想計算機上１２で一意なアドレス空間であるだけでなく、仮想ＮＩＣ一覧３０２、物理ＮＩＣ一覧３０１のすべてのアドレス値を参照して、できる限り計算機１０上のすべての物理ＮＩＣ１０１の中で一意なアドレスを割り当てるようにする。
【００４６】
物理・仮想ＮＩＣマッピング一覧３０３は、計算機１０上で稼動する仮想計算機１２上の仮想ＮＩＣ１２１と物理ＮＩＣ１０１の対応付けに関する情報一覧で、テーブルなどの形式で保持される。
物理・仮想ＮＩＣマッピング一覧３０３の構成の一例を、図５を用いて説明する。図５は、物理・仮想ＮＩＣマッピング一覧３０３の構成例を示した図である。
【００４７】
仮想計算機番号５０１は、仮想計算機１２を一意に特定する識別子である。仮想ＮＩＣ識別子５０２は、仮想計算機１２上で仮想ＮＩＣ１２１を一意に特定する識別子で、たとえば仮想ＮＩＣ一覧３０２中のデバイス搭載位置４０３を用いる。
【００４８】
冗長構成５０３および冗長化状態５０４（状態情報）は、仮想計算機１２上のＯＳ１３が仮想ＮＩＣ１２１を冗長構成で使用している場合の状態を保持する。冗長構成５０３は、仮想計算機１２上で仮想ＮＩＣ１２１をチーミング（チーム化）する際のチーム名を保持する。冗長化状態５０４は、仮想ＮＩＣ１２１が現用系、あるいは待機系のいずれの状態にあるかを示す。前記冗長構成５０３および冗長化状態５０４の項目値の入力、更新方法については、ハイパバイザ１１における仮想ＮＩＣ１２１の実行方式の制御・管理方法の説明において後述する。
なお、本実施形態では冗長構成を前提とした状態表現を用いて説明しているが、これに限定されるものではなく、他の状況を表す状態表現、あるいはアクセス頻度などの、より汎用的な状態表現を用いてもよい。
【００４９】
物理ＮＩＣ識別子５０５は、前記仮想計算機番号５０１および仮想ＮＩＣ識別子５０２で示される仮想ＮＩＣ１２１に対応付けられた物理ＮＩＣ１０１を一意に特定する識別子で、たとえば物理ＮＩＣ一覧３０１中のデバイス搭載位置４０３の情報を用いる。
【００５０】
物理ＮＩＣ使用方式５０６は、ハイパバイザ１１が仮想計算機１２上のＯＳ１３から仮想ＮＩＣ１２１に発行された命令を制御する方法を示す。制御方式の例は図６のＡ、Ｂ、Ｃなどがあり、その詳細については後述する。
【００５１】
冗長構成に関する情報は、図１３を用いて後述する入力方法に従って、仮想計算機システムの管理者が入力する。
仮想計算機システムの構成例を図６に示す。なお、ハイパバイザ１１における「仮想ＮＩＣ実行機能」は、図２の仮想ＮＩＣ制御部１１１のことを示している。
【００５２】
図６に示すように、本構成例では３台の仮想計算機１２−１〜１２−３が稼動しており、それぞれ２つずつの仮想ＮＩＣ１２１（「Ａ」〜「Ｆ」。以下、仮想ＮＩＣ「Ａ」、あるいは単に「Ａ」などともいう。物理ＮＩＣ１０１に関しても同様）を持つ。また、計算機１０上には「ａ」〜「ｅ」の物理ＮＩＣ１０１が搭載されている。
【００５３】
各仮想計算機１２上では、２つの仮想ＮＩＣ１２１がペアとなって現用系・待機系による冗長構成を組んでいる。ここでは、それぞれ、「Ａ」、「Ｃ」、「Ｅ」が現用系として動作し、「Ｂ」、「Ｄ」、「Ｆ」が待機系として動作している。通常のネットワークトラフィックは現用系の仮想ＮＩＣ１２１のみを使用して送信される。待機系の仮想ＮＩＣ１２１ではまったくデータの送信は行わないか、定期的に仮想計算機上のＯＳ１３による通信確認のデータ送信のみが行われる。
それぞれのＯＳ１３が仮想ＮＩＣ１２１「Ａ」、「Ｃ」、「Ｅ」において障害を検知すると、前記ＯＳ１３はそれぞれペアリングされた仮想ＮＩＣ「Ｂ」、「Ｄ」、「Ｆ」を使用してデータ送信を行うように変更する。
【００５４】
各現用系の仮想ＮＩＣ１２１「Ａ」、「Ｃ」、「Ｅ」には、それぞれ物理ＮＩＣ１０１「ａ」、「ｃ」、「ｄ」が割り当てられている。待機系の仮想ＮＩＣ１２１「Ｂ」、「Ｄ」、「Ｆ」には物理ＮＩＣ「ｅ」が割り当てられていて、後述する図８（Ａ）の共有方式により共有で使用されている。
【００５５】
仮想ＮＩＣ１２１上の冗長構成、および、仮想ＮＩＣ１２１と物理ＮＩＣ１０１の割り当て（対応）の情報は、物理・仮想ＮＩＣマッピング一覧３０３に記録されている。
【００５６】
物理ＮＩＣ１０１「ｂ」は、どの仮想ＮＩＣ１２１にも割り当てられていないため、システムにおいて故障が発生して前記ＯＳ１３が待機系の仮想ＮＩＣ１２１「Ｂ」、「Ｄ」、「Ｆ」を使用してデータ送信を始めた場合に、その仮想ＮＩＣ１２１に対して占有的に割り当てることができる。
【００５７】
次に、仮想計算機１２がデータ転送命令を実行する場合の、ハイパバイザ１１による制御の実行方式の例について、図７および図８を参照して説明する。
図７は、一般的な計算機１０上でＮＩＣ２０８へのアクセスにメモリマップトＩＯ（以下、ＭＭＩＯと呼ぶ）を使用した場合の、ＮＩＣ（ＮＩＣ１０１および仮想ＮＩＣ１２１）の制御方法を示す。
【００５８】
計算機１０におけるＭＭＩＯによるアクセス方式では、計算機１０のメモリ２０４のアドレス空間上のＭＭＩＯアドレス７０１にＯＳ１３がコマンドを示すデータを書き込む処理を実行することによって、ＮＩＣのコントロールレジスタ７０２にアクセスすることができる。これによりＮＩＣの制御を行う。ＭＭＩＯアドレス７０１は計算機１０の起動時にシステム初期化を行うＢＩＯＳなどによって機器ごとに個別の値が割り当てられる。
【００５９】
各ＮＩＣのＭＭＩＯアドレス７０１は、メモリ２０４におけるＰＣＩコンフィグレーション空間と呼ばれる別のアドレス空間上のＰＣＩコンフィグレーションレジスタ７０３に記載されている値を用いる。ＭＭＩＯアドレス７０１を変更する場合は、本領域（ＰＣＩコンフィグレーションレジスタ７０３）の値を変更する。本領域の値は、物理ＮＩＣ１０１の場合は計算機１０上で一意である必要があり、仮想ＮＩＣ１２１の場合は仮想計算機１２上で一意である必要がある。
【００６０】
前記のＭＭＩＯの制御方式を踏まえ、仮想計算機１２におけるＭＭＩＯアクセス処理を制御するハイパバイザ１１の構成例を、図８（Ａ）〜（Ｃ）を用いて説明する。図２に示すハイパバイザ１１中の処理部１１５は以下の（Ａ）〜（Ｃ）の各処理方式を実装する。
【００６１】
図２の処理部１１５は仮想ＮＩＣ１２１に対応する物理・仮想ＮＩＣマッピング一覧３０３中の物理ＮＩＣ使用方式５０６を参照して処理方式を決定し、その内容に示された、以下の（Ａ）〜（Ｃ）などの処理方式を選択して実行する。
【００６２】
図８（Ａ）は、仮想計算機１２上の複数のＮＩＣ機能が単一の物理ＮＩＣ１０１を共有する場合の処理部１１５の構成例である。以降では、図８（Ａ）の方式を共有方式と呼ぶ。
【００６３】
仮想ＮＩＣエミュレーション部８０１は、仮想ＮＩＣ処理実行部８１１および仮想レジスタ８１２（ハードウェア仕様で定められた数の仮想コンフィグレーションレジスタと仮想レジスタ）を備えて構成される。また、処理部１１５は、仮想ＮＩＣエミュレーション部８０１の他に、仮想デバイス１２１に対する制御ソフトウェアである物理ＮＩＣデバイスドライバ８１３を備えている。
仮想ＮＩＣ処理実行部８１１および物理ＮＩＣデバイスドライバ８１３は、ハイパバイザ１１上で動作するプログラムである。仮想レジスタ８１２は、ハイパバイザが管理するメモリ２０４中の領域に確保されたデータの格納領域である。
【００６４】
仮想ＮＩＣ処理実行部８１１および仮想レジスタ８１２は、仮想計算機１２の１つの仮想ＮＩＣごとに１つ存在する。
物理ＮＩＣデバイスドライバ８１３は、物理ＮＩＣ１０１ごとに１つずつ存在し、一般的なＯＳのデバイスドライバ機能と同様に物理ＮＩＣ１０１に対する制御を実行する。
【００６５】
図８（Ａ）では、仮想計算機１２のＮＩＣ機能ごとに、１つの仮想計算機１２内で一意なＭＭＩＯアドレス１を割り当てる。前記ＭＭＩＯアドレス１は計算機１０上の複数の仮想計算機１２で同一の値となってもよい。仮想計算機１２上のＯＳは前記ＭＭＩＯアドレス１を使用してメモリ空間を介したＩＯデバイスの制御命令を発行する。
【００６６】
ハイパバイザ１１は、仮想計算機１２上のＭＭＩＯアドレス１へのアクセスを検知し、仮想ＮＩＣ１２１のエミュレートを開始する。仮想ＮＩＣエミュレーション部８０１中の仮想ＮＩＣ処理実行部８１１はＭＭＩＯアドレスに対するアクセス内容を読み込んで、物理ＮＩＣ１０１が行うデータ転送処理、および、ハードウェアの設定処理をエミュレートするプログラム上で実行し、必要に応じて処理・設定の結果を仮想レジスタ８１２に反映する。
【００６７】
物理ＮＩＣ１０１が起こした割り込み処理は、前記物理ＮＩＣデバイスドライバ８１３がトラップし、仮想計算機１２上の割り込みに変換して、仮想計算機１２に送信する。
【００６８】
図８（Ａ）の方式は、ハイパバイザ１１が介入し、さらに物理ＮＩＣ１０１が実行する処理を一旦プログラム上でエミュレートして実行するため動作速度が遅いが、物理ＮＩＣデバイスドライバ８１３が複数の仮想ＮＩＣ処理実行部８１１から受信したデータ転送要求を、整合性を保ちながら物理ＮＩＣ１０１へのデータ転送要求に変換することができるため、複数の仮想ＮＩＣエミュレーション部８０１で１つの物理ＮＩＣ１０１を共有することができる。
また、物理ＮＩＣデバイスドライバ８１３を介することにより、仮想計算機１２上の仮想ＮＩＣ１２１と物理ＮＩＣ１０１が異なるコマンド仕様を持っている場合も、物理ＮＩＣデバイスドライバ８１３でその差異を吸収することにより柔軟に対応できる。
【００６９】
図８（Ｂ），（Ｃ）は、仮想計算機１２上の仮想ＮＩＣ１２１に対して特定の物理ＮＩＣ１０１を一対一で割り当て、単一の物理ＮＩＣ１０１が単一の仮想ＮＩＣ１２１のデータ転送を実行する場合の処理部１１５の構成例である。
【００７０】
図８（Ｂ）は、仮想ＮＩＣ１２１のアドレス空間と物理ＮＩＣ１０１のアドレス空間を同一にすることができない場合や、ＩＯデバイスがメモリアクセスをする際のアドレスを、仮想計算機１２上のアドレスから計算機１０上の実際のアドレスに変換するのを支援するハードウェアが存在しない場合などに、使用される。以降では、図８（Ｂ）の方式を間接占有方式と呼ぶ。
アドレスを変換するハードウェアの例としては、Ｉｎｔｅｌ（登録商標）が提唱する「Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  ｆｏｒ  Ｄｉｒｅｃｔ  Ｉ／Ｏ」仕様に準拠したハードウェアなどが考えられるが、前記の様なハードウェアが存在しない場合は、デバイス（物理ＮＩＣ１０１）を占有方式とするために間接占有方式を用いる。
【００７１】
図８（Ｂ）では、ハイパバイザ１１上には、１つの仮想ＮＩＣ１２１ごとに１つのアドレス変換部８０２が存在する。アドレス変換部８０２は、それぞれ対応付けられた物理ＮＩＣ１０１のＭＭＩＯアドレス２の情報を保持している。
仮想計算機１２上のＯＳ１３は、前記ＭＭＩＯアドレス１を使用してメモリ空間を介するＩＯデバイスの制御命令を発行する。
【００７２】
ハイパバイザ１１は、仮想計算機１２上のＭＭＩＯアドレス１へのアクセスを検知して、仮想ＮＩＣ１２１の制御を実行する。アドレス変換部８０２は、ＭＭＩＯアドレスによるアクセス内容を読み込んで、その内容をそのままＭＭＩＯアドレス２へのメモリアクセスとして再実行する。この際、アドレス変換部８０２は必要に応じて読み込んだデータ転送要求のアドレスの変換を実行するが、それ以外の変更・解析は行わなくてよい。
物理ＮＩＣ１０１が起こした割り込み処理は、ハイパバイザ１１がトラップし、必要に応じてデバイス識別子を仮想計算機１２上のデバイス識別子に変換して仮想計算機１２に送信する。
【００７３】
図８（Ｃ）は、図８（Ｂ）と同一の条件に加えて、仮想計算機１２上のＭＭＩＯアドレス１と物理ＮＩＣ１０１の有するＭＭＩＯアドレス２が同一である場合のハイパバイザ１１の構成例である。以降では図８（Ｃ）を直接占有方式と呼ぶ。
【００７４】
図８（Ｃ）では、仮想計算機１２上のＯＳ１３は、物理ＮＩＣ１０１のＭＭＩＯアドレス２を使用してメモリ空間を介したＩＯデバイスの制御命令を発行する。
ＮＩＣへのデータ転送要求は、ＯＳ１３から直接物理ＮＩＣ１０１に転送される。
ハイパバイザ１１は、アドレス変換を一切行う必要が無く、ＭＭＩＯアドレス２へのアクセスの検知を行わない。
物理ＮＩＣ１０１が起こした割り込み処理については、図８（Ｂ）と同一の方式のほかに、ＣＰＵ２０１が特定の仮想計算機１２と一対一で割り付けられている場合には割り込み処理をハイパバイザ１１でトラップせずに直接仮想計算機１２上に送信する方式を用いてもよい。
【００７５】
直接占有方式では、計算機１０が、ＩＯデバイスがメモリアクセスをする際のアドレスを、仮想計算機１２上のアドレスから計算機１０上の実際のアドレスに変換するのを支援するハードウェアを有していることが適用の前提となる。
【００７６】
占有方式（（Ｂ）と（Ｃ））は共有方式（Ａ）と比べて、高速に処理ができる。特に、（Ｃ）はプログラムによるオーバーヘッドが無く高速である。しかし、（Ｂ）は仮想ＮＩＣ１２１と物理ＮＩＣ１０１のコマンド仕様が同一でなければならず、また、複数の仮想ＮＩＣ１２１が物理ＮＩＣ１０１を共有できない。さらに、（Ｃ）は仮想ＮＩＣ１２１と物理ＮＩＣ１０１のデバイス搭載位置などの識別子が一致し、ＭＭＩＯアドレス４０４などのアドレス空間が計算機１０上の全物理ＮＩＣ１０１のアドレスの中で一意である必要があり、適用可能な構成が制限される。
【００７７】
つまり、まとめると、まず、（Ａ）は、仮想計算機１２が物理ＮＩＣ１０１へアクセスするのにハイパバイザ１１によるプログラムの稼動が必要となりオーバーヘッドが発生して処理速度が遅くなってしまうが、複数の仮想ＮＩＣ１２１と１つの物理ＮＩＣ１０１を対応付けることができる。
また、（Ｂ）は、仮想計算機１２が物理ＮＩＣ１０１へアクセスするのにハイパバイザ１１によるアドレス変換だけが必要となり、処理速度はこの３つの方式の中で中程度である。
【００７８】
そして、（Ｃ）は、仮想計算機１２が物理ＮＩＣ１０１へアクセスするのにハイパバイザ１１によるアドレス変換が不要なため処理速度が速いが、アドレス空間の使用など構成に制限がかかる。
すなわち、それぞれの方式には、構成の柔軟性と動作（処理）速度に対するトレードオフの関係が成り立っている。
【００７９】
なお、本実施形態では仮想ＮＩＣ１２１へのアクセス方法としてＭＭＩＯによるアクセスを使用しているが、ＩＯポートを経由するアクセスなどの他のインターフェースを使用してもよい。
【００８０】
次に、図９〜図１２を用いて、ハイパバイザ１１における仮想ＮＩＣ１２１の状態管理方式について説明する。
図９は、仮想ＮＩＣ１２１の状態管理を行う仮想ＮＩＣ状態管理部１１４の構成例などを示す図である。
【００８１】
コマンド履歴・統計情報９０１および処理切り替えポリシー９０２（判定条件情報）は、ハイパバイザ１１が管理するメモリ２０４領域中に確保されたデータの格納領域であり、仮想ＮＩＣ１２１に対してそれぞれ１つずつ生成される。
【００８２】
コマンド履歴・統計情報９０１は、仮想ＮＩＣ１２１が実行するコマンドの履歴情報、および、統計情報を保存する。コマンド履歴・統計情報９０１は、図１０に示すコマンド履歴情報９０１−１、および、図１１に示すコマンド統計情報９０１−２で構成される。
ＮＩＣのコマンドの一例を図１０を用いて示す。コマンドはメモリ２０４中にデータとして格納される。
コマンドには、初期化、アドレス設定などのＮＩＣの設定を更新するコマンドや、実際のデータの送信・受信を実行するコマンドなどがある。
【００８３】
仮想ＮＩＣ１２１へのコマンドはＭＭＩＯアクセスなどによって仮想計算機１０上のＯＳ１３から発行される。共有方式（Ａ）の方式では、ハイパバイザ１１がその内容を読み取る。
コマンド履歴・統計部９０３は、前記のハイパバイザ１１が読み取ったコマンドのコマンド名１００２を解析して記録処理を決定する。
前記コマンドがＮＩＣの設定を変更するコマンドである場合、コマンドとして読み取ったデータ列をそのままコマンド履歴・統計情報９０１の履歴領域１００１にコピーする。
コマンドが送受信のコマンドであった場合、コマンド履歴・統計部９０３は統計情報のカウンタ（使用頻度）をインクリメントする。カウンタは図１１に示すようにコマンド名と実行回数のカウンタで構成される。
カウンタは一定時間でクリアされる。このようにすることで、単位時間当たりのコマンドの実行回数を記録することができる。
【００８４】
なお、間接占有方式、および、直接占有方式の方式では、コマンド履歴・統計情報９０１を収集せず、これらの方式を使用している場合は後述する処理切り替えポリシー９０２の判定対象１２０２としてコマンド履歴・統計情報９０１は使用できないとしてもよい。
【００８５】
処理切り替えポリシー９０２は、仮想ＮＩＣ１２１の実行する処理を変更する条件と実行する変更内容を規定する規則である。処理切り替えポリシー９０２は、ハイパバイザ１１が管理するメモリ２０４上の領域に配置されるデータ列などとして実装される。
【００８６】
処理切り替えポリシー９０２の定義方法の一例としては仮想計算機システムの実装によって固定的に定義する、あるいは、仮想計算機システムの管理者（以下、単に管理者と呼ぶ。）がＧＵＩ（Graphical User Interface）もしくはコマンドラインなどのユーザインターフェースを用いて入力して定義するなどの方法がある。
【００８７】
処理切り替えポリシー９０２の構成の一例を図１２に示す。
処理切り替えポリシー９０２は、１つの対象状態１２０１、1つ以上の判定対象１２０２および判定条件１２０３の組、１つのポリシー適用後状態１２０４および１つのポリシー適用後処理方式１２０５で構成される。
【００８８】
対象状態１２０１、判定対象１２０２、判定条件１２０３は、本ポリシーを適用するための条件を示す。判定対象１２０２は、仮想ＮＩＣ１２１の冗長化状態５０４を示す。
判定対象１２０２は、本ポリシーの実行を判定するために参照する管理情報を示す。たとえば、「コマンド履歴情報９０１−１」「コマンド統計情報９０１−２」、仮想ＮＩＣ一覧３０２の「デバイス搭載位置４０３」「ＭＭＩＯアドレス４０４」などである。
【００８９】
判定条件１２０３の一例としては、判定対象１２０２ごとにそれぞれ次のようなものがある。
（１）コマンド履歴情報
コマンド履歴情報９０１−１のコマンド命令種類（図１０のコマンド名１００２の種類）を参照する。複数のコマンド命令種類の列を、判定条件１２０３に記載されるコマンド命令種類の列と比較し、コマンド列が一致した場合に判定条件１２０３に合致すると判断する。
【００９０】
（２）コマンド統計情報
図１１のコマンド統計情報９０１−２のカウンタを判定条件１２０３の値と比較し、一定のしきい値を超えた場合、もしくは下回った場合に判定条件１２０３に合致すると判断する。
【００９１】
（３）デバイス搭載位置／ＭＭＩＯアドレス
たとえば、デバイス搭載位置（４０３）／ＭＭＩＯアドレス（４０４）が計算機１０上で一意なことである。条件を満たしたときに判定条件に合致すると判断する。
【００９２】
ポリシー適用後状態１２０４およびポリシー適用後処理方式１２０５は、それぞれ、ポリシーの適用後に適用される状態および処理方式の内容を示す。ポリシー適用後状態１２０４には、物理・仮想ＮＩＣマッピング一覧３０３の仮想ＮＩＣ１２１に対応する冗長化状態５０４の値が入り、ポリシー適用後処理方式１２０５には、物理ＮＩＣ使用方式５０６の値が入る。
【００９３】
ＮＩＣ用途変更管理部９０４は、コマンド履歴・統計情報９０１、および、仮想ＮＩＣ一覧３０２を参照して条件に合うポリシーを処理切り替えポリシー９０２から検索し、条件に合致するポリシーが処理切り替えポリシー９０２に存在する場合はポリシーに従った処理を実行する。
【００９４】
以降では、第１実施形態におけるハイパバイザ１１のシステム構成管理、および制御手順について説明する。
【００９５】
仮想計算機１２のシステム構成を定義するための、仮想ＮＩＣ一覧３０２および物理・仮想ＮＩＣマッピング一覧３０３の作成手順の例を、図１３のフローチャートを用いて説明する。図１３は、仮想計算機１２の構成情報の入力手順を示したフローチャートである。
なお、以下の手順において、管理者は、ＧＵＩまたはコマンドラインなどのインターフェースを使用して、仮想計算機１２の構成情報を入力する。
【００９６】
まず、管理者は、所定数の仮想計算機１２の定義を入力する（ステップ１３０１）。それぞれの仮想計算機１２には、計算機１０上で一意な仮想計算機番号５０１を割り当てて入力する。なお、前記仮想計算機番号５０１は、ハイパバイザ１１が仮想計算機１２の定義順に自動的に割り振ってもよい。
次に、管理者は、ステップ１３０１において定義された仮想計算機１２が有する1つ以上の仮想ＮＩＣ１２１（機能）を定義する（ステップ１３０２）。
【００９７】
続いて、ＭＡＣアドレス４０１およびデバイス搭載位置４０３の生成は、ハイパバイザ１１で自動生成するか否か（ステップ１３０３）で、その生成方法が分かれる。
ハイパバイザ１１が自動生成する場合（ステップ１３０３でＹｅｓ）、ハイパバイザ１１は定義順などに従って自動的にそれらの値を生成する（ステップ１３０４）。
ハイパバイザ１１が自動生成しない場合（ステップ１３０３でＮｏ）、管理者は、ユーザインターフェースなどを用いてそれらの値を入力する（ステップ１３０５）。
【００９８】
次に、モデル名４０２の生成は、ハイパバイザ１１で自動生成するか否か（ステップ１３０６）で、その生成方法が分かれる。
ハイパバイザ１１が自動生成する場合（ステップ１３０６でＹｅｓ）、ハイパバイザ１１は自動的に規定値を使用する方式などによって生成する（ステップ１３０７）。
ハイパバイザ１１が自動生成しない場合（ステップ１３０６でＮｏ）、管理者は、ユーザインターフェースなどを用いて所定のリストから選択する方式などにより入力を行う（ステップ１３０８）。
【００９９】
続いて、物理ＮＩＣ１０１と仮想ＮＩＣ１２１の対応付けは、ハイパバイザ１１で自動生成するか否か（ステップ１３０９）で、その対応付け方法が分かれる。
ハイパバイザ１１が自動で対応付けする場合（ステップ１３０９でＹｅｓ）、ハイパバイザ１１の物理ＮＩＣ割り当て部３０５は、後述する方式に従って所定の条件に合致する物理ＮＩＣ１０１を仮想ＮＩＣ１２１に割り当て、項目を設定、つまり対応付けを生成する（ステップ１３１０）。
ハイパバイザ１１が自動生成しない場合（ステップ１３０９でＮｏ）、管理者は、ユーザインターフェースなどを用いて対応付けを入力する（ステップ１３１１）。
【０１００】
前記仮想計算機１２上で仮想ＮＩＣ１２１を冗長構成で用いる場合に、仮想計算機１２上での仮想ＮＩＣ１２１の冗長構成に従って、管理者が冗長構成５０３および冗長化状態５０４を入力する（ステップ１３１２）。なお、このステップ１３１２は仮想計算機１２の定義と同時に行う必要は無く、任意の時点で管理者がユーザインターフェースを用いて入力する、あるいは仮想計算機上１２上で冗長構成の状態を取得し、その情報をハイパバイザ１１に送信するプログラムを用意しておき、仮想計算機１２の起動後に、該仮想計算機１２上でプログラムを実行するなどの方法により入力してもよい。
【０１０１】
本入力手順において入力が省略された項目は、物理ＮＩＣ割り当て部３０５が後述する方法によって決定する。
このようにして、仮想ＮＩＣ一覧３０２および物理・仮想ＮＩＣマッピング一覧３０３が作成される。
【０１０２】
次に、図１４のフローチャートを用いて、図９中のＮＩＣ用途変更管理部９０４がポリシーを実行する（処理切り替えポリシー９０２を使用して処理を行う）手順などを説明する。図１４は、処理切り替えポリシーの実行手順のフローチャートである。
ＮＩＣ用途変更管理部９０４は、特定の仮想ＮＩＣ１２１と対応付けられており、本手順を実行する契機としては、前記仮想ＮＩＣ１２１のコマンド履歴・統計部９０３がコマンド履歴情報９０１−１を更新したとき、コマンド統計情報９０１−２のカウンタをクリアする直前、あるいは一定の時間間隔で実行するときなどが考えられる。
【０１０３】
まず、コマンド履歴・統計部９０３は、処理切り替えポリシー９０２を参照（検索）し（ステップ１４０１）、たとえば、図１２の例で説明した条件が成立しているか（適用可能なポリシーはあるか）を確認（判断）する。
条件が成立しているポリシーが存在しない場合（ステップ１４０２でＮｏ）、処理を終了する（ステップ１４０２）。
【０１０４】
条件が成立しているポリシーが存在する場合（ステップ１４０２でＹｅｓ）、ＮＩＣ用途変更管理部９０４は、ポリシー適用後状態１２０４およびポリシー適用後処理方式１２０５の情報を使用して、物理・仮想ＮＩＣマッピング一覧３０３の情報を更新する（ステップ１４０３）。このとき、ポリシー適用後処理方式１２０５がポリシー適用前と異なる場合、仮想ＮＩＣ１２１に対応する物理ＮＩＣ識別子５０５の情報を空欄に変更する。
【０１０５】
仮想ＮＩＣ状態管理部１１４は、物理ＮＩＣ状態管理部１１３中の物理ＮＩＣ割り当て部３０５に対して、ＮＩＣ用途変更管理部９０４に対応する仮想ＮＩＣ１２１の識別子（仮想計算機番号５０１および仮想ＮＩＣ識別子５０２）をパラメータとして、仮想ＮＩＣ１２１に対応する物理ＮＩＣ１０１の割り当て要求を送信する（ステップ１４０４）。
その後、再びステップ１４０１に戻り、ステップ１４０１以降の処理を繰り返す。
このようにして、ＮＩＣ用途変更管理部９０４などによってポリシーを実行することができる。
【０１０６】
なお、ＮＩＣ用途変更管理部９０４はハイパバイザ１１の外部から状態変更を受け付けるプログラミングインターフェースを備え、前記インターフェースを経由して外部から状態変更の指示を受け付けてもよい。外部から状態変更を受け付ける場合は、図１２のポリシー適用後状態１２０４およびポリシー適用後処理方式１２０５を入力パラメータとして受け付け、ステップ１４０３およびステップ１４０４を実行する。
【０１０７】
次に、図１５のフローチャートを用いて、図３中の物理ＮＩＣ割り当て部３０５が仮想ＮＩＣ１２１に対応する物理ＮＩＣ１０１を割り当てる方式について説明する。図１５は、物理ＮＩＣ割り当て部３０５による物理ＮＩＣ割り当ての実行手順などを示したフローチャートである。
【０１０８】
物理ＮＩＣ割り当て部３０５は、ＮＩＣ用途変更管理部９０４などの他の機能から、仮想ＮＩＣ１２１への物理ＮＩＣ１０１の割り当て要求を受け付たとき、（あるいは、仮想計算機１２の起動時に）ハイパバイザ１１によって実行される（ステップ１５０１）。前記要求は、仮想ＮＩＣ１２１を一意に示すための識別子（仮想計算機番号５０１および仮想ＮＩＣ識別子５０２）を、入力パラメータとして必要とする。
以降の説明では、前記入力パラメータで一意に識別された仮想ＮＩＣ１２１を仮想ＮＩＣ（Ａ）と呼ぶ。
【０１０９】
次に、物理ＮＩＣ割り当て部３０５は、物理・仮想ＮＩＣマッピング一覧３０３を参照して、仮想ＮＩＣ（Ａ）に対応する物理ＮＩＣ使用方式５０６が決定されているかどうかを確認する（ステップ１５０２）。前記物理ＮＩＣ使用方式５０６が空欄である（決定していない）場合（ステップ１５０２でＮｏ）、ステップ１５０３を実行する。
【０１１０】
物理ＮＩＣ割り当て部３０５は、図１４に示すステップ１４０１〜１４０３を実行する、すなわち、前記物理ＮＩＣ使用方式５０６の更新を実行（決定）する（ステップ１５０３）。
なお、前記ステップ１４０１〜１４０３の実行後にも物理ＮＩＣ使用方式５０６が決定しなかった場合、ハイパバイザ１１の実装により定めた初期値などを強制的に使用してもよい。本実施形態では、初期値として共有方式を使用することとして説明を行う。
【０１１１】
続いて、物理ＮＩＣ割り当て部３０５は、物理・仮想ＮＩＣマッピング一覧３０３を参照して、仮想ＮＩＣ（Ａ）に対応する物理ＮＩＣ識別子５０５が決定されているか（対応付けられているか）を確認する（ステップ１５０４）。前記物理ＮＩＣ識別子５０５が空欄の場合、ステップ１５０５〜１５１０を実行して仮想ＮＩＣ（Ａ）に対応する物理ＮＩＣ識別子５０５を決定する。
【０１１２】
具体的には、物理ＮＩＣ割り当て部３０５は、物理ＮＩＣ一覧３０１および物理・仮想ＮＩＣマッピング一覧３０３を参照して仮想ＮＩＣ（Ａ）と互換性のある物理デバイス（物理ＮＩＣ１０１）の一覧を検索し（ステップ１５０５）、互換性のある物理デバイスがあるか否かを判断する（ステップ１５０６）。
互換性の確認方法は、物理ＮＩＣ使用方式５０６、デバイス搭載位置４０３、および、図７中の各種アドレス空間などに依存する。互換性の確認方法の一例のフローチャートを図１６に示す。図１６は、仮想ＮＩＣと互換性のある物理ＮＩＣの選択手順を示したフローチャートである。図１６での動作主体は物理ＮＩＣ割り当て部３０５である。
なお、以降では、仮想ＮＩＣ（Ａ）と互換性を比較する物理ＮＩＣ１０１を物理ＮＩＣ（Ｂ）と呼ぶ。
【０１１３】
物理ＮＩＣ使用方式５０６が直接占有方式の場合（ステップ１６０１でＹｅｓ）、計算機１０がデバイス識別番号の変換機能を持たず（ステップ１６０２でＮｏ）、仮想ＮＩＣ（Ａ）と物理ＮＩＣ（Ｂ）のモデル名４０２とデバイス搭載位置４０３（デバイス識別子）が一致し（ステップ１６０３でＹｅｓ）、さらに仮想ＮＩＣ（Ａ）のＭＭＩＯアドレス４０４およびＩＯアドレス４０５が全ての物理ＮＩＣ１０１の中で一意である（ステップ１６０４でＹｅｓ）ことが互換性確保のために必要となる。
【０１１４】
物理ＮＩＣ使用方式５０６が間接占有方式の場合（ステップ１６０１でＮｏ→ステップ１６０５でＹｅｓ）、物理ＮＩＣ（Ｂ）が仮想ＮＩＣ（Ａ）と対応付けられておらず（ステップ１６０６でＮｏ）、また、互換性確保のために、仮想ＮＩＣ（Ａ）と物理ＮＩＣ（Ｂ）のモデル名４０２が同一である（ステップ１６０７でＹｅｓ）必要がある。
ステップ１６０４の後も、同様に、ステップ１６０６以降の処理に進む。
【０１１５】
図１５に戻って、前記ステップ１５０６で互換性のある物理ＮＩＣ１０１がなかった場合（Ｎｏ）、物理ＮＩＣ使用方式５０６を変更（ステップ１５０７）した後、その変更が成功であれば（ステップ１５０８でＹｅｓ）、ステップ１５０５以降の処理を繰り返す。
【０１１６】
物理ＮＩＣ割り当て部３０５は、その実装によって事前に定められた順序に従って、仮想ＮＩＣ（Ａ）の物理ＮＩＣ使用方式５０６を変更する。たとえば、直接占有方式→間接占有方式→共有方式の順で前記物理ＮＩＣ使用方式の値を変更する。なお、本実施形態では所定の順番としているが、事前に変更順序を定義するテーブルをハイパバイザ１１上に作成しておき、テーブルに定義されている順番に従って変更するなどの方式を行ってもよい。また、０回以上の所定の回数の物理ＮＩＣ使用方式５０６の変更を行っても互換性のあるデバイスを発見できなかった場合（つまり、変更が成功しなかった場合）（ステップ１５０８でＮｏ）、物理ＮＩＣ１０１の割り当て失敗処理を行い（ステップ１５１１）、処理を終了する。
【０１１７】
互換性のある物理ＮＩＣ１０１が１つ以上発見された場合（ステップ１５０６でＹｅｓ）、物理ＮＩＣ割り当て部３０５は、所定の手順に従って物理ＮＩＣ１０１（物理デバイス）を１つ選択する（ステップ１５０９）。選択手順の例としては、一番初めに発見された物理ＮＩＣ１０１を選択するなどの方法がある。
【０１１８】
続いて、物理ＮＩＣ割り当て部３０５は、物理・仮想ＮＩＣマッピング一覧３０３中の、仮想ＮＩＣ（Ａ）に対応する物理ＮＩＣ識別子５０５の値を前記ステップ１５０９で選択した物理ＮＩＣ１０１の識別子に変更する（ステップ１５１０）。
このようにして、仮想ＮＩＣ１２１に対して物理ＮＩＣ１０１を割り当てることができる。
【０１１９】
図１５の手順の完了後に、物理ＮＩＣ割り当て部３０５は仮想ＮＩＣ（Ａ）に割り当てられた物理ＮＩＣ１０１に対して物理ＮＩＣ初期化手順を実行する。物理ＮＩＣ１０１の初期化手順の一例を、図１７のフローチャートを用いて説明する。図１７は、物理ＮＩＣ１０１の初期化手順のフローチャートである。
【０１２０】
なお、物理ＮＩＣ１０１の初期化手順の実行時は、入力パラメータとして物理ＮＩＣ識別子５０５を必要とする。以降では、前記の物理ＮＩＣ識別子５０５で識別される物理ＮＩＣ１０１を物理ＮＩＣ（Ｂ）と呼び、物理ＮＩＣ（Ｂ）と対応付けられた仮想ＮＩＣを仮想ＮＩＣ（Ａ）と呼ぶ。
【０１２１】
物理ＮＩＣ割り当て部３０５は、物理・仮想ＮＩＣマッピング一覧３０３を参照して、物理ＮＩＣ（Ｂ）に対応する物理ＮＩＣ使用方式５０６を取得する。前記物理ＮＩＣ使用方式５０６が直接占有方式を使用している場合（ステップ１７０１でＹｅｓ）、物理ＮＩＣ識別子５０５を検索キーの値として物理ＮＩＣ（Ｂ）のＰＣＩコンフィグレーションレジスタ７０３（図７参照）を検索し、対応するレジスタ値のＭＭＩＯアドレス、ＩＯアドレスを仮想ＮＩＣ（Ａ）の値で更新する（書き換える）（ステップ１７０２）。
【０１２２】
物理ＮＩＣ割り当て部３０５は、仮想ＮＩＣ（Ａ）に対応するコマンド履歴情報９０１−１を参照し、前記コマンド履歴情報９０１−１にコマンド命令（コマンド名１００２）が記録されているかどうかを確認する（ステップ１７０３）。コマンド命令が記録されている場合（ステップ１７０３でＹｅｓ）、最も古いコマンド命令（コマンド履歴情報９０１−１）を読み込み（ステップ１７０４）、前記コマンド命令を物理ＮＩＣ（Ｂ）に対して発行する（ステップ１７０５）。
【０１２３】
物理ＮＩＣ割り当て部３０５は、前記ステップ１７０５で発行したコマンド命令をコマンド履歴情報９０１−１のリストから削除する（ステップ１７０６）。削除方法は実装状態に依存するが、たとえばコマンド履歴情報９０１−１がリングバッファ形式で実装されている場合、削除はリングバッファのポインタアドレスをインクリメントすることによって実行する。
【０１２４】
物理ＮＩＣ割り当て部３０５は、物理ＮＩＣ（Ｂ）の各種レジスタ値を、仮想ＮＩＣ（Ａ）に対応する仮想レジスタ８１２の内容で上書き（更新）する（ステップ１７０７）。
また、物理ＮＩＣ割り当て部３０５は、割り込みハンドラを設定し（ステップ１７０８）、必要に応じて、計算機１０のハードウェアに対して仮想計算機１２と物理ＮＩＣ１０１の所有関係の（定義）情報（定義テーブルなど。不図示）を更新する（ステップ１７０９）。
【０１２５】
ハードウェアの情報の一例としては、Ｉｎｔｅｌ（登録商標）社が公開している「Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  ｆｏｒ  Ｄｉｒｅｃｔｅｄ  Ｉ／Ｏ」の仕様書に記載されるドメイン情報およびキャッシュなどの情報がある。ドメイン情報とは、物理ＮＩＣ識別子５０５と仮想計算機番号５０１の対応関係を示す情報である。コンテキストキャッシュ情報は、仮想ＮＩＣ識別子５０２と物理ＮＩＣ識別子５０５の対応関係を示す情報である。
このようにして、物理ＮＩＣ１０１を初期化することができる。
【０１２６】
次に、図６の構成例のシステム上で仮想ＮＩＣ１２１の処理方式を動的に変更する場合の、仮想計算機システム全体での制御手順を、図１８および図１９を用いて説明する。
【０１２７】
（第一の動作例）
第一の動作例として、仮想計算機１２上の現用系ＮＩＣに障害が発生し、現用系ＮＩＣから待機系ＮＩＣに動作が変更された場合に、物理ＮＩＣ１０１を共有方式から直接占有方式に変更する制御手順の例について、図１８のシーケンスを用いて説明する。図１８は、共有方式から直接占有方式に変更する場合のハイパバイザ１１の動作例のシーケンスである。また、本動作例において、処理切り替えポリシー９０２として図１２に示した例を用いる。
【０１２８】
通常時においては、仮想計算機上１２「１」のＯＳ１３は仮想ＮＩＣ「Ａ」として認識されている物理ＮＩＣ「ａ」に対して、データ送信コマンドを発行する（ステップ１８０１）。
仮想ＮＩＣ「Ａ」は物理ＮＩＣ「ａ」に対して直接占有方式で割り当てられており、仮想ＮＩＣ「Ａ」に対するＮＩＣ制御のコマンド命令はハイパバイザ１１を経由することなく物理ＮＩＣ「ａ」に転送される。
【０１２９】
物理ＮＩＣ「ａ」において障害が発生した場合、前記ＯＳ１３からのデータ転送命令の失敗、もしくは、物理ＮＩＣ「ａ」のリンクダウンを検出して、前記ＯＳ１３は仮想計算機１２−１上でデータ転送に使用するＮＩＣを待機系の仮想ＮＩＣ「Ｂ」に変更する（ステップ１８０２）。
ただし、ステップ１８０２は仮想計算機１２−１上で実行された動作であり、ハイパバイザ１１は前記切り替えの発生を直接的に検知することはできない。
【０１３０】
仮想ＮＩＣ「Ｂ」に発行された制御コマンドは仮想ＮＩＣ「Ｂ」のコマンド履歴・統計部９０３に送信される。コマンド履歴・統計部９０３では、データ転送命令を解析してコマンド統計情報９０１を更新（履歴・統計処理）する（ステップ１８０３）。その後、仮想ＮＩＣ「Ｂ」の処理部１１５においてコマンドが解析され、共有方式を用いてプログラム上で機能がエミュレート（コマンド実行）される（ステップ１８０４）。
また、ステップ１８０４の後も、ステップ１８０３と同様の処理が行われる（ステップ１８０４−２）。
【０１３１】
コマンド履歴・統計情報９０１情報の更新を契機として、もしくは、一定時間ごとに、仮想ＮＩＣ用途変更管理部９０４が図１４において説明した手順に従い、ポリシーを確認する（ステップ１８０５）。
ＮＩＣ用途変更管理部９０４は、待機系の仮想ＮＩＣ「Ｂ」における単位時間当たりの送信パケット数が一定値を超えたことなどを検知すると、ポリシーを適用して物理・仮想ＮＩＣマッピング情報３０３の冗長化状態５０４、および物理ＮＩＣ使用方式５０６を変更する（ステップ１８０６）。
【０１３２】
物理ＮＩＣ割り当て部３０５は、仮想ＮＩＣ「Ｂ」の処理部１１５（仮想ＮＩＣ「Ｂ」に対応する仮想ＮＩＣ制御部１１１の処理部１１５。以下同様）の状態を確認する（ステップ１８０７）。物理ＮＩＣ割り当て部３０５は、仮想ＮＩＣ「Ｂ」が新規コマンドを読み込むタイミング、もしくは、処理すべき命令がなくアイドル状態となるまで処理を停止し、それらのいずれかの状態になった時点で、処理部がコマンドを実行することを抑制（停止）するように指示する。以降、処理部ではコマンドの実行を停止する。
【０１３３】
物理ＮＩＣ割り当て部３０５は、図１５に示す方法に従って、仮想ＮＩＣ「Ｂ」と互換性のある物理ＮＩＣを検索する。
物理ＮＩＣ「ｂ」はデバイス識別番号（ＭＡＣアドレス４０１）が仮想ＮＩＣと物理ＮＩＣで一致し、なおかつ仮想ＮＩＣ「Ｂ」のＭＭＩＯアドレス４０４が計算機１０上のすべての物理ＮＩＣ１０１上で一意であるため、互換性があると確認され（図１５のステップ１５０６でＹｅｓ）、物理ＮＩＣ「ｂ」が選択される（物理ＮＩＣの対応付けが行われる）（ステップ１８０８）。
【０１３４】
次に、物理ＮＩＣ割り当て部３０５は、物理ＮＩＣ「ｂ」に対して、図１７に示す手順に従ってＭＭＩＯアドレス４０４、ＩＯアドレス４０５、およびレジスタを仮想ＮＩＣ「Ｂ」の値に書き換え、コマンド履歴情報９０１−１に記録された設定コマンドを再実行し、物理ＮＩＣ「ｂ」を初期化する（ステップ１８０９）。
【０１３５】
待機系仮想ＮＩＣ「Ｂ」の処理部は、前記ステップ１８０９の実行後に、ステップ１８０７の時点でコマンドを読み込むタイミングであった場合、読み込んだコマンドを物理ＮＩＣ「ｂ」に対して発行（転送）する（ステップ１８１０）。
【０１３６】
仮想ＮＩＣ「Ｂ」の各種アドレスを物理ＮＩＣ「ｂ」が引き継いでいるため、ステップ１８１０以降のコマンド実行、および、結果状態の確認は仮想計算機１２上のＯＳ１３から直接物理ＮＩＣ「ｂ」に対して発行される（ステップ１８１１）。
このようにして、上記手順により、直接占有方式の高速な実装方式によって、物理ＮＩＣ「ｂ」を占有的に仮想ＮＩＣ「Ｂ」に割り当てることが実現される。
【０１３７】
（第二の動作例）
第二の動作例として、仮想計算機１２上の現用系ＮＩＣに障害が発生し、待機系ＮＩＣに動作が変更された場合に、物理ＮＩＣ１０１を間接占有方式に変更する制御手順の例について、図１９を用いて説明する。図１９は、共有方式から間接占有方式に変更する場合のハイパバイザ１１の動作例のシーケンスである。
【０１３８】
図１９における動作の概要は図１８と同様であるが、物理ＮＩＣ割り当て部３０５の動作以降の処理が異なる。図１９のステップ１９０１〜１９０９は、図１８のステップ１８０１〜１８０７と同一であるので、説明を省略する。
【０１３９】
ステップ１９０９の後、物理ＮＩＣ割り当て部３０５は、図１５に示す方法に従って、仮想ＮＩＣ「Ｄ」と互換性のある物理ＮＩＣを検索する。しかしながら、物理ＮＩＣ「ｂ」はデバイス識別番号が仮想ＮＩＣ「Ｄ」と一致せず、互換性があるデバイスとして認められない（ステップ１９１０）。
【０１４０】
続いて、物理ＮＩＣ割り当て部３０５は、図１５中のステップ１５０７の手順を実行する。本動作例では、物理ＮＩＣ使用方式５０６を直接占有方式から間接占有方式に変更する。
物理ＮＩＣ割り当て部３０５は、前記条件で再び互換性のあるデバイスを検索する。物理ＮＩＣ「ｂ」はモデル名が仮想ＮＩＣ「Ｄ」と同一であり、互換性があると確認されて間接占有方式用のデバイスとして選択される（ステップ１９１１）。
【０１４１】
次に、物理ＮＩＣ割り当て部３０５は、図１７の手順に従ってレジスタを仮想ＮＩＣ「Ｂ」の値に書き換え、コマンド履歴情報９０１−１に記録された設定コマンドを再実行して物理ＮＩＣ「ｂ」を初期化する（ステップ１９１３）。
【０１４２】
これにより、ステップ１９１３以降、仮想計算機１２「２」のＮＩＣに関するデータ転送命令（ステップ１９１５，１９１７）などは、一度仮想ＮＩＣ「Ｄ」の処理部に転送される。前記処理部は間接占有方式の方式に従って、デバイス識別子、アドレスを書き換え、コマンドを物理ＮＩＣ「ｂ」に対して発行する（コマンド転送する）（ステップ１９１４，１９１６，１９１８）。
このように、上記手順により、直接占有方式が実行不可能なシステム構成である場合も、定められた手順に従って物理ＮＩＣ１０１を仮想ＮＩＣ１２１に対して占有的に割り当てるように処理方式を変更することができる。
【０１４３】
上記の第一の動作例、および第二の動作例に示したとおりに、本実施形態で示した仮想計算機システムを用いることによって、まず、仮想計算機１２上で仮想ＮＩＣ１２１が待機系として使用されている場合は複数の仮想ＮＩＣ１２１が一つの物理ＮＩＣを共有することで物理ＮＩＣ１０１の数を減少させることができる。さらに、使用状況の変化に応じて仮想ＮＩＣ１２１の状態管理を行い、システム構成を参照しつつ所定の手順に従って物理ＮＩＣ１０１を占有的に仮想ＮＩＣ１２１に割り当てる制御を行い、低オーバーヘッドのデータ転送処理を選択する制御を実現することができる。
［第２実施形態］
【０１４４】
第２実施形態は第１実施形態と同一のシステム構成をとる。第１実施形態の構成に対して以下の処理を変更する。
【０１４５】
図１５に示す物理ＮＩＣ割り当て部３０５の処理中のステップ１５０５において、直接占有方式の互換デバイスが存在せず、間接占有方式の互換デバイスが発見された場合において、図１７に示す初期化処理を実行せずに、仮想計算機１２上のＯＳ１３にデバイス情報の更新通知を送信する。
更新通知の例としてはデバイスのホットプラグの既存の方式を用いることができるため、詳細については省略する。
【０１４６】
デバイス搭載位置４０３が仮想ＮＩＣ１２１と物理ＮＩＣ１０１で異なる場合の処理の一例としては、物理ＮＩＣ１０１のデバイス搭載位置４０３を指定してデバイスの追加を通知し、その後仮想ＮＩＣ１２１のデバイス搭載位置４０３を指定してデバイスの削除を通知する方法がある。
また、ステップ１５１０における物理・仮想ＮＩＣマッピング一覧３０３の更新時に、仮想ＮＩＣ１２１の各種アドレスおよびデバイス搭載位置４０３を物理ＮＩＣ１０１の値に更新する。
【０１４７】
仮想計算機１２上のＯＳ１３は通知されたデバイスに対するデバイスドライバの再初期化を実行する。
これにより、仮想ＮＩＣ１２１のデバイス搭載位置４０３、および、ＭＭＩＯアドレス４０４などの各種アドレス空間が更新されたことが仮想計算機１２上のＯＳ１３に通知されるため、間接占有方式ではなく、高速な直接転送方式を用いることができる。
【０１４８】
以上で実施形態の説明を終えるが、本発明の態様はこれらに限定されるものではない。
たとえば、本実施形態では、ＮＩＣを例に挙げて説明したが、その他に、ＳＣＳＩカードなどの別のデバイスにも同様に本発明を適用することができる。
また、ハイパバイザは、仮想デバイスの制御方式を変更するとき、その仮想デバイスのそのときの使用状態を、計算機の表示部（不図示）に表示させるようにしてもよい。
【０１４９】
さらに、仮想計算機における仮想デバイスの制御に関し、共有方式と占有方式のほかに、別の制御方式も設け、３つ以上の制御方式の中から適切な制御方式を選んで切り替えるようにしてもよい。
その他、ハードウェアやフローチャートなどの具体的な構成について、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【０１５０】
【図１】計算機などの構成図である。
【図２】仮想計算機システムの構成図である。
【図３】物理ＮＩＣ状態管理部の構成例を示した図である。
【図４】物理ＮＩＣ一覧／仮想ＮＩＣ一覧の構成例を示した図である。
【図５】物理・仮想ＮＩＣマッピング一覧の構成例を示した図である。
【図６】仮想計算機システムの構成例である。
【図７】ＮＩＣのアクセスインターフェースの一例を示した図である。
【図８】仮想ＮＩＣ制御部の処理部の構成例を示した図である。
【図９】仮想ＮＩＣ状態管理部の構成例などを示した図である。
【図１０】コマンド履歴情報の構成例を示した図である。
【図１１】コマンド統計情報の構成例を示した図である。
【図１２】処理切り替えポリシーの構成例を示した図である。
【図１３】仮想計算機の構成情報の入力手順のフローチャートである。
【図１４】処理切り替えポリシーの実行手順のフローチャートである。
【図１５】物理ＮＩＣ割り当ての実行手順のフローチャートである。
【図１６】仮想ＮＩＣと互換性のある物理ＮＩＣの選択手順のフローチャートである。
【図１７】物理ＮＩＣの初期化手順のフローチャートである。
【図１８】共有方式から直接占有方式に変更する場合のハイパバイザの動作例のシーケンスである。
【図１９】共有方式から間接占有方式に変更する場合のハイパバイザの動作例のシーケンスである。
【符号の説明】
【０１５１】
１０    仮想計算機
１１    ハイパバイザ
１２    仮想計算機
１３    オペレーティングシステム（ＯＳ）
１０１  物理ＮＩＣ
１１１  仮想ＮＩＣ制御部
１２１  仮想ＮＩＣ
１１３  物理ＮＩＣ状態管理部
１１４  仮想ＮＩＣ状態管理部
１１５  処理部
２０１  ＣＰＵ
２０４  メモリ
２０７  ＳＣＳＩカード
２０８  ＮＩＣ
２０９  入出力装置
２１０  外部記憶装置
３０１  物理ＮＩＣ一覧
３０２  仮想ＮＩＣ一覧
３０３  物理・仮想ＮＩＣマッピング一覧
３０５  物理ＮＩＣ割り当て部
４０１  ＭＡＣアドレス
４０２  モデル名
４０３  デバイス搭載位置
４０４  ＭＭＩＯアドレス
４０５  ＩＯアドレス
５０１  仮想計算機番号
５０２  仮想ＮＩＣ識別子
５０３  冗長構成
５０４  冗長化状態
５０５  物理ＮＩＣ識別子
５０６  物理ＮＩＣ使用方式
７０１  ＭＭＩＯアドレス
７０２  レジスタ
７０３  ＰＣＩコンフィグレーションレジスタ
８０１  エミュレーション部
８０２  アドレス変換部
８１１  仮想ＮＩＣ処理実行部
８１２  仮想レジスタ
８１３  物理ＮＩＣデバイスドライバ
９０１  コマンド履歴・統計情報
９０２  処理切り替えポリシー
９０３  コマンド履歴・統計部
９０４  ＮＩＣ用途変更管理部
【図１】
2008146566.tif 000003
【図２】
2008146566.tif 000004
【図３】
2008146566.tif 000005
【図４】
2008146566.tif 000006
【図５】
2008146566.tif 000007
【図６】
2008146566.tif 000008
【図７】
2008146566.tif 000009
【図８】
2008146566.tif 000010
【図９】
2008146566.tif 000011
【図１０】
2008146566.tif 000012
【図１１】
2008146566.tif 000013
【図１２】
2008146566.tif 000014
【図１３】
2008146566.tif 000015
【図１４】
2008146566.tif 000016
【図１５】
2008146566.tif 000017
【図１６】
2008146566.tif 000018
【図１７】
2008146566.tif 000019
【図１８】
2008146566.tif 000020
【図１９】
2008146566.tif 000021