(57)【要約】【課題】仮想化された環境において、機能拡張を容易にすることに貢献すること。【解決手段】管理装置は、内部機能を変更可能である１又は２以上の拡張装置と、拡張装置の内部機能を利用する１又は２以上の仮想マシンとに接続する。管理装置は、拡張装置を識別する装置識別情報と、拡張装置に設定される機能を識別するための機能識別情報を対応付けた情報を格納するための機能管理テーブルを保持するデータ保持部と、仮想マシンの立ち上げ指示に応じて拡張装置を特定し、仮想マシンの機能要件を満たす機能に対応する、機能識別情報を拡張装置に設定し、機能要件を満たす機能を、内部機能として拡張装置に設定し、機能識別情報を機能管理テーブルに格納する機能管理部と、拡張装置に設定された機能識別情報に基づいて、拡張装置の内部機能に必要なドライバソフトウェアを決定する機能設定部と、を備える。【選択図】図１
2018097790.tif 000002
【特許請求の範囲】
【請求項１】
内部機能を変更可能である１又は２以上の拡張装置と、前記拡張装置の前記内部機能を利用する１又は２以上の仮想マシンとに接続する管理装置であって、
前記拡張装置を識別する装置識別情報と、該拡張装置に設定される機能を識別するための機能識別情報とを対応付けた情報を格納するための機能管理テーブルを保持するデータ保持部と、
前記仮想マシンの立ち上げ指示に応じて、前記仮想マシンに使用する拡張装置を特定し、前記仮想マシンの機能要件を満たす機能に対応する機能識別情報を該拡張装置に設定し、前記機能要件を満たす機能を前記内部機能として該拡張装置に設定し、前記機能識別情報を前記機能管理テーブルに格納する機能管理部と、
前記拡張装置に設定された機能識別情報に基づいて、該拡張装置の内部機能に必要なドライバソフトウェアを決定する機能設定部と、
を備える管理装置。
【請求項２】
前記機能管理テーブルは、さらに、前記機能識別情報と、プログラムデータの名称と、該プログラムデータが実行する処理を示す機能情報とを、前記装置識別情報に対応付けて格納し、
前記機能管理部は、前記機能管理テーブルを参照して、指定された機能要件を満たす機能情報を特定し、前記機能情報に対応する装置識別情報に基づいて前記拡張装置を特定し、特定した前記機能識別情報と、前記機能要件を満たす機能とを前記拡張装置に設定する、請求項１に記載の管理装置。
【請求項３】
前記機能要件を満たす前記拡張装置に設定された、前記機能識別情報に基づいて、前記仮想マシンに設定される第１のドライバと、該仮想マシンが、該拡張装置の内部機能を利用することを可能にする第２のドライバとを決定する、請求項１又は２に記載の管理装置。
【請求項４】
前記機能管理テーブルは、さらに、前記仮想マシンが、前記装置識別情報に対応する拡張装置を使用しているか否かを示すステータス情報を、該装置識別情報に対応付けて格納し、
前記機能管理部は、前記機能情報に対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する、請求項１乃至３のいずれか一に記載の管理装置。
【請求項５】
前記機能管理テーブルは、前記機能識別情報と、プログラムデータの名称と、前記機能情報と、該プログラムデータを実行するために必要な性能を示す性能情報とを、さらに、前記装置識別情報に対応付けて格納し、
前記機能管理部は、前記機能管理テーブルを参照し、前記仮想マシンの機能要件及び性能要件を満たす機能情報及び性能情報を特定し、特定した前記機能情報及び前記性能情報とに対応する、前記装置識別情報を特定し、前記装置識別情報に基づいて前記拡張装置を特定し、該拡張装置に、前記機能識別情報と、前記機能要件を満たす機能とを、前記内部機能として設定する、請求項１乃至４のいずれか一に記載の管理装置。
【請求項６】
前記機能管理部は、前記機能情報及び前記性能情報とに対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する、請求項１乃至５のいずれか一に記載の管理装置。
【請求項７】
前記機能設定部は、前記仮想マシンの起動に必要な定義ファイルを作成し、
前記機能設定部が作成した前記定義ファイルに基づいて、前記仮想マシンを起動する、装置管理部を備え、
前記定義ファイルは、起動対象の仮想マシンが利用する、前記拡張装置に設定した前記機能識別情報を含む、請求項１乃至６のいずれか一に記載の管理装置。
【請求項８】
内部機能を変更可能である１又は２以上の拡張装置と、
前記拡張装置の前記内部機能を利用する１又は２以上の仮想マシンと、
前記拡張装置と、前記仮想マシンとに接続する管理装置と、
を含んで構成される管理システムであって、
前記拡張装置は、該拡張装置を動作させるための情報を格納するための記憶領域を含む機能拡張制御部と、
該拡張装置が実行する機能が格納される機能格納部と、
を備え、
前記管理装置は、
前記拡張装置を識別する装置識別情報と、該拡張装置に設定される機能を識別するための機能識別情報を対応付けた情報を格納する機能管理テーブルを保持するデータ保持部と、
前記仮想マシンの立ち上げ指示に応じて、前記仮想マシンに使用する拡張装置を特定し、前記仮想マシンの機能要件を満たす機能に対応する機能識別情報を該拡張装置に設定し、前記機能要件を満たす機能を前記内部機能として該拡張装置に設定し、前記機能識別情報を前記機能管理テーブルに格納する機能管理部と、
前記拡張装置に設定された機能識別情報に基づいて、該拡張装置の前記内部機能に必要なドライバソフトウェアを決定する機能設定部と、
を備える、管理システム。
【請求項９】
内部機能を変更可能である１又は２以上の拡張装置と、前記拡張装置の前記内部機能を利用する１又は２以上の仮想マシンとに接続する管理装置の制御方法であって、
前記拡張装置を識別する装置識別情報と、該拡張装置に設定される機能を識別するための機能識別情報とを対応付けた情報を格納する工程と、
前記仮想マシンの立ち上げ指示に応じて、前記仮想マシンに使用する拡張装置を特定する工程と、
前記仮想マシンの機能要件を満たす機能に対応する、前記機能識別情報を該拡張装置に設定する工程と、
前記機能要件を満たす機能を前記内部機能として前記拡張装置に設定する工程と、
前記機能識別情報を前記機能管理テーブルに格納する工程と、
前記拡張装置に設定された前記機能識別情報に基づいて、該拡張装置の前記内部機能に必要なドライバソフトウェアを決定する工程と、
を含む管理装置の制御方法。
【請求項１０】
内部機能を変更可能である１又は２以上の拡張装置と、前記拡張装置の前記内部機能を利用する１又は２以上の仮想マシンとに接続する管理装置に実行させるプログラムであって、
前記拡張装置を識別する装置識別情報と、該拡張装置に設定される機能を識別するための機能識別情報とを対応付けた情報を格納する処理と、
前記仮想マシンの立ち上げ指示に応じて、前記仮想マシンが使用する拡張装置を特定する処理と、
前記仮想マシンの機能要件を満たす機能に対応する機能識別情報を該拡張装置に設定する処理と、
前記機能要件を満たす機能を前記内部機能として前記拡張装置に設定する処理と、
前記機能識別情報を前記機能管理テーブルに格納する処理と、
前記拡張装置に設定された前記機能識別情報に基づいて、該拡張装置の前記内部機能に必要なドライバソフトウェアを決定する処理と、
を管理装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理装置、管理システム、管理装置の制御方法及びプログラムに関する。
【背景技術】
【０００２】
情報処理を行うシステムにおいては、要件に適合する情報処理装置を速やかに起動し、機能させることが求められる。仮想化技術が進展したことで、汎用サーバで情報処理を実行するシステムにおいて、処理要件に応じた仮想マシン及び仮想マシン上のソフトウェアの入れ替えを行うことで、システムの迅速な起動、及び柔軟な運用を行うことが可能になった。
【０００３】
この汎用サーバにおける仮想化は、ネットワーク分野、ビジネス分野、ＣＡＤ（Computer Aided Design）を利用する分野、画像処理分野等、様々な分野に利用が広がっている。例えば、汎用サーバにおける仮想化をネットワーク分野に利用して、ネットワーク機能仮想化（ＮＦＶ；Network Function Virtualization）として利用が広がっている。
【０００４】
ＮＦＶにおいては、ルータ、ゲートウェイ、ファイアウォール、ロードバランサ等、ネットワーク機器の機能を、汎用オペレーティングシステム（ＯＳ；Operating System）上で動作するアプリケーションソフトウェアとして実装する。そして、汎用オペレーティングシステム（汎用ＯＳ）が、仮想化されたサーバ上で、ネットワーク機器の機能を実行することで、仮想化されたサーバは、専用のネットワーク機器（ルータ、ゲートウェイ、ファイアウォール、ロードバランサ等）の機能を代替する。
【０００５】
ここで、上記各分野で使用される汎用サーバは、使用用途に応じて、処理要件が異なる場合がある。例えば、ネットワーク機器においては、機器毎に、入出力速度の制御機能、通過パケットの処理機能等、必要な機能が異なる。そのため、汎用サーバの使用用途を変更したい場合であっても、該汎用サーバが必要な処理要件を満たしていない場合、該汎用サーバの使用用途を変更できない。
【０００６】
そこで、汎用サーバの管理者等は、ＰＣＩｅ（Peripheral Component Interconnect Express）規格インタフェースを用いてアドインカードを接続し、汎用サーバの機能拡張を行う場合がある。その場合、使用用途に適した機能を備えるアドインカードを接続することで、汎用サーバの管理者等は、希望する使用用途で、汎用サーバを使用できる。
【０００７】
特許文献１においては、ＰＣＩ（Peripheral Component Interconnect）スイッチが、管理サーバの指示に基づいて、占有状態又は共有状態で、ＰＣＩデバイスと管理サーバとを接続する技術が記載されている。そして、特許文献１に記載された技術では、管理サーバが、ＰＣＩスイッチを介して接続するＰＣＩデバイスから、該ＰＣＩデバイスの種別、性能、管理を行うために必要な機能に関する情報を取得する。その結果、特許文献１に記載された技術は、管理サーバの管理者が、管理サーバに割り当てるＰＣＩデバイスを探索することを容易にする。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−０６５５５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明の観点からなされたものである。
【００１０】
上記の通り、汎用サーバの管理者等は、ＰＣＩｅ規格インタフェースを用いてアドインカードを接続し、汎用サーバの機能拡張を行う場合がある。
【００１１】
しかし、アドインカードを利用して汎用サーバの機能拡張を行う場合には、汎用サーバの管理者等が、アドインカードの追加、アドインカードの変更等を行う必要がある。具体的には、汎用サーバの管理者等が、該汎用サーバの電源を落とし、アドインカードを抜き差しする等の作業を行う必要がある。
【００１２】
特許文献１に記載された技術では、計算機システムの機能拡張を行う場合には、ＰＣＩデバイスを追加、ＰＣＩデバイスの変更等を行う必要がある。
【００１３】
そこで、本発明は、仮想化された環境において、機能拡張を容易にすることに貢献する管理装置、管理システム、管理装置の制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の第１の視点によれば、管理装置が提供される。該管理装置は、内部機能を変更可能である１又は２以上の拡張装置と、前記拡張装置の前記内部機能を利用する１又は２以上の仮想マシンとに接続する。
さらに、該管理装置は、前記拡張装置を識別する装置識別情報と、該拡張装置に設定される機能を識別するための前記機能識別情報とを対応付けた情報を格納するための機能管理テーブルを保持するデータ保持部を備える。
さらに、該管理装置は、前記仮想マシンの立ち上げ指示に応じて、前記仮想マシンに使用する拡張装置を特定し、前記仮想マシンの機能要件を満たす機能に対応する機能識別情報を該拡張装置に設定し、前記機能要件を満たす機能を前記内部機能として該拡張装置に設定し、前記機能識別情報を前記機能管理テーブルに格納する機能管理部を備える。
さらに、該管理装置は、前記拡張装置に設定された機能識別情報に基づいて、該拡張装置の内部機能に必要なドライバソフトウェアを決定する機能設定部を備える。
【００１５】
本発明の第２の視点によれば、管理システムが提供される。該管理システムは、内部機能を変更可能である１又は２以上の拡張装置と、前記拡張装置の前記内部機能を利用する１又は２以上の仮想マシンと、前記拡張装置と、前記仮想マシンとに接続する管理装置と、を含んで構成される。
該拡張装置は、該拡張装置を動作させるための情報を格納するための記憶領域を含む機能拡張制御部を備える。
さらに、該拡張装置は、該拡張装置が実行する機能が格納される機能格納部を備える。
該管理装置は、前記拡張装置を識別する装置識別情報と、該拡張装置に設定される機能を識別するための機能識別情報を対応付けた情報を格納する機能管理テーブルを保持するデータ保持部を備える。
さらに、該管理装置は、前記仮想マシンの立ち上げ指示に応じて、前記マシンに使用する前記拡張装置を特定し、前記仮想マシンの機能要件を満たす機能に対応する機能識別情報を該拡張装置に設定し、前記機能要件を満たす機能を前記内部機能として該拡張装置に設定し、前記機能識別情報を前記機能管理テーブルに格納する機能管理部を備える。
さらに、該管理装置は、前記拡張装置に設定された機能識別情報に基づいて、該拡張装置の前記内部機能に必要なドライバソフトウェアを決定する機能設定部を備える。
【００１６】
本発明の第３の視点によれば、管理装置の制御方法が提供される。該管理装置は、内部機能を変更可能である１又は２以上の拡張装置と、前記拡張装置の前記内部機能を利用する１又は２以上の仮想マシンとに接続する。
該制御方法は、前記拡張装置を識別する装置識別情報と、該拡張装置に設定される機能を識別するための機能識別情報とを対応付けた情報を格納する工程を含む。
さらに、該制御方法は、前記仮想マシンの立ち上げ指示に応じて、前記仮想マシンに使用する拡張装置を特定する工程を含む。
さらに、該制御方法は、前記仮想マシンの機能要件を満たす機能に対応する、前記機能識別情報を該前記拡張装置に設定する工程を含む。
さらに、該制御方法は、前記機能要件を満たす機能を前記内部機能として前記拡張装置に設定する工程を含む。
さらに、該制御方法は、前記機能識別情報を前記機能管理テーブルに格納する工程を含む。
さらに、該制御方法は、前記拡張装置に設定された前記機能識別情報に基づいて、該拡張装置の前記内部機能に必要なドライバソフトウェアを決定する工程を含む。
なお、本方法は、拡張装置と仮想マシンとに接続する管理装置という、特定の機械に結び付けられている。
【００１７】
本発明の第４の視点によれば、プログラムが提供される。該プログラムは、内部機能を変更可能である１又は２以上の拡張装置と、前記拡張装置の前記内部機能を利用する１又は２以上の仮想マシンとに接続する管理装置に実行させる。
該プログラムは、前記拡張装置を識別する装置識別情報と、該拡張装置に設定される機能を識別するための機能識別情報とを対応付けた情報を格納する処理を、該管理装置に実行させる。
さらに、該プログラムは、前記仮想マシンの立ち上げ指示に応じて、前記仮想マシンに使用する拡張装置を特定する処理を、該管理装置に実行させる。
さらに、該プログラムは、前記仮想マシンの機能要件を満たす機能に対応する機能識別情報を該拡張装置に設定する処理を、該管理装置に実行させる。
さらに、該プログラムは、前記機能要件を満たす機能を前記内部機能として前記拡張装置に設定する処理を、該管理装置に実行させる。
さらに、前記機能識別情報を前記機能管理テーブルに格納する処理を、該管理装置に実行させる。
さらに、該プログラムは、前記拡張装置に設定された前記機能識別情報に基づいて、該拡張装置の前記内部機能に必要なドライバソフトウェアを決定する処理を、該管理装置に実行させる。
なお、本プログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（non-transient）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１８】
本発明の各視点によれば、仮想化された環境において、機能拡張を容易にすることに貢献する管理装置、管理システム、管理装置の制御方法及びプログラムが提供される。
【図面の簡単な説明】
【００１９】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係る管理システム１の全体構成の一例を示すブロック図である。
【図３】管理部２０と、拡張装置３０との接続の一例を示すブロック図である。
【図４】第１の実施形態に係る管理システム１の全体構成の一例を示すブロック図である。
【図５】仮想ドライバ管理部１３の内部構成の一例を示すブロック図である。
【図６】装置管理部２４の内部構成の一例を示すブロック図である。
【図７】機能管理部２５の内部構成の一例を示すブロック図である。
【図８】ドライバ管理部２６の内部構成の一例を示すブロック図である。
【図９】ＰＣＩｅデバイス３１の内部構成の一例を示すブロック図である。
【図１０】ＰＣＩｅデバイス３１の内部構成の一例を示すブロック図である。
【図１１】機能拡張制御部３１３に格納されるデータ構造の一例を示す図である。
【図１２】管理システム１の動作の一例を示すシークエンス図である。
【図１３】管理システム１の動作の一例を示すフローチャートである。
【図１４】機能管理テーブル２５１の一例を示す図である。
【図１５】管理システム１の動作の一例を示すシークエンス図である。
【図１６】管理システム１の動作の一例を示すシークエンス図である。
【図１７】管理システム１の動作の一例を示すシークエンス図である。
【図１８】管理システム１の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
初めに、図１を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各ブロック図のブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号（データ）の流れを模式的に示すものであり、双方向性を排除するものではない。
【００２１】
上述の通り、仮想化された環境において、機能拡張を容易にすることに貢献する管理装置が望まれる。
【００２２】
そこで、一例として、図１に示す管理装置１０００を提供する。管理装置１０００は、１又は２以上の拡張装置（１０１０−１〜１０１０−３）と、１又は２以上の仮想マシン（１０２０−１〜１０２０−３）とに接続する。なお、以下の説明では、拡張装置（１０１０−１〜１０１０−３）、仮想マシン（１０２０−１〜１０２０−３）は、夫々、区別する必要が無い場合には、拡張装置１０１０、仮想マシン１０２０と表記する。また、図１は、３つの拡張装置（１０１０−１〜１０１０−３）、３つの仮想マシン（１０２０−１〜１０２０−３）を示すが、これは、拡張装置１０１０、仮想マシン１０２０を３つに限定する趣旨ではない。拡張装置１０１０、仮想マシン１０２０は、１つ又は２つ、或いは４つ以上であっても良い。
【００２３】
拡張装置１０１０は、内部機能を変更可能な装置である。例えば、拡張装置１０１０は、内部機能を変更可能なＰＣＩｅデバイスを備える装置であっても良い。
【００２４】
仮想マシン１０２０は、拡張装置１０１０の内部機能を利用して動作するものとする。
【００２５】
また、管理装置１０００は、データ保持部１００１と、機能管理部１００２と、機能設定部１００３とを備える。
【００２６】
データ保持部１００１は、機能管理テーブルを保持する。機能管理テーブルには、拡張装置１０１０を識別する装置識別情報と、該拡張装置１０１０に設定される機能を識別するための機能識別情報とを対応付けた情報が格納される。
【００２７】
機能管理部１００２は、仮想マシン１０２０の立ち上げ指示に応じて、仮想マシン１０２０に使用する拡張装置１０１０を特定する。さらに、機能管理部１００２は、仮想マシン１０２０の機能要件を満たす機能に対応する、機能識別情報を該拡張装置１０１０に設定する。そして、機能管理部１００２は、機能要件を満たす機能を、拡張装置１０１０の内部機能として、該拡張装置１０１０に設定する。そして、機能管理部１００２は、拡張装置１０１０に設定した機能識別情報を、機能管理テーブルに格納する。
【００２８】
機能設定部１００３は、拡張装置１０１０に設定された機能識別情報に基づいて、拡張装置１０１０の内部機能に必要なドライバソフトウェアを決定する。
【００２９】
そして、仮想マシン１０２０は、機能設定部１００３が決定したドライバソフトウェアを利用することで、拡張装置１０１０の内部機能を利用することが可能になる。
【００３０】
また、管理装置１０００において、機能要件が変更されたとする。その場合、機能管理部１００２は、新たな機能要件を満たす機能に対応する、機能識別情報を特定する。そして、機能管理部１００２は、拡張装置１０１０に、新たな機能識別情報を設定する。さらに、機能管理部１００２は、拡張装置１０１０に、新たな機能要件を満たす機能を設定することで、該拡張装置１０１０の内部機能を変更する。その結果、管理装置１０００の管理者等は、拡張装置１０１０を抜き差しする等の作業を行うことなく拡張装置１０１０の内部機能を変更できる。
【００３１】
さらに、機能設定部１００３は、拡張装置１０１０に設定された新たな機能識別情報に基づいて、拡張装置１０１０の新たな内部機能に必要なドライバソフトウェアを決定する。その結果、仮想マシン１０２０は、新たに決定されたドライバソフトウェアを利用することで、拡張装置１０１０の新たな内部機能を利用できる。
【００３２】
また、機能管理テーブルが、拡張装置１０１０を識別する装置識別情報と、該拡張装置１０１０に設定される、機能識別情報とを対応付けて格納することで、管理装置１０００は、拡張装置１０１０に設定される、機能識別情報を容易に管理できる。
【００３３】
以上より、管理装置１０００は、仮想化された環境において、機能拡張を容易にすることに貢献する。
【００３４】
［第１の実施形態］  
第１の実施形態について、図面を用いてより詳細に説明する。なお、以下の説明では、上記の管理装置を管理部と呼ぶ。
【００３５】
図２は、本実施形態に係る管理システム１の全体構成の一例を示すブロック図である。管理システム１は、仮想マシン（１０−１〜１０−３）、管理部２０と、拡張装置（３０−１〜３０−３）とを含んで構成される。なお、以下の説明では、仮想マシン（１０−１〜１０−３）、拡張装置（３０−１〜３０−３）は、夫々、区別する必要が無い場合には、仮想マシン１０、拡張装置３０と表記する。また、図２は、３つの仮想マシン（１０−１〜１０−３）、３つの拡張装置（３０−１〜３０−３）を示すが、これは、仮想マシン１０、拡張装置３０を３つに限定する趣旨ではない。仮想マシン１０、拡張装置３０は、１つ又は２つ、或いは４つ以上であっても良い。また、図２は、本実施形態に係る管理システム１の一例であり、本実施形態に係る管理システム１を図２に示す構成に限定する趣旨ではない。
【００３６】
管理部２０は、内部機能を変更可能である、１又は２以上の拡張装置３０と、拡張装置３０の内部機能を利用する、１又は２以上の仮想マシン１０とに接続する。そして、管理部２０は、仮想化基盤２１と、オペレーティングシステム２２と、デバイス管理ソフトウェア２３とを含んで構成される。
【００３７】
仮想化基盤２１は、例えば、１台のサーバ上で、複数の仮想マシン１０を動作させるために必要なリソースを提供する。
【００３８】
オペレーティングシステム２２は、仮想化基盤２１が提供する制御方法に従って、仮想マシン１０を起動及び制御する。
【００３９】
デバイス管理ソフトウェア２３は、拡張装置３０の内部機能の管理処理を行う。
【００４０】
拡張装置３０は、管理部２０と接続し、仮想マシン１０が実行する機能を拡張する。例えば、拡張装置３０は、管理部２０と接続するアドインカードであっても良い。さらに、拡張装置３０は、内部機能を書き換え可能なＰＣＩｅデバイスを備える。さらに、拡張装置３０は、管理システム１の外部からのデータ入力、及び管理システム１の外部へのデータ出力を行う。
【００４１】
図３は、管理部２０と、拡張装置３０との接続の一例を示すブロック図である。
【００４２】
拡張装置３０（図３に示す３０−４、３０−５）は、ＰＣＩｅ規格インタフェース５０を介して、管理部２０と接続する。また、拡張装置３０（図３に示す３０−６）は、ブリッジデバイス４０を介して、管理部２０と接続しても良い。
【００４３】
図４は、本実施形態に係る管理システム１に関して、さらに詳細な全体構成の一例を示すブロック図である。図４は、本実施形態に係る管理システム１の一例であり、本実施形態に係る管理システム１を図４に示す構成に限定する趣旨ではない。また、図４は、仮想マシン１０、管理部２０、拡張装置３０の一例であり、本実施形態に係る仮想マシン１０、管理部２０、拡張装置３０を図４に示す構成に限定する趣旨ではない。
【００４４】
仮想マシン１０−１は、アプリケーションソフトウェア１１−１と、管理処理部１２−１と、仮想ドライバ管理部１３−１とを備える。同様に、仮想マシン１０−２、１０−３は、アプリケーションソフトウェア１１−２、１１−３と、管理処置部１２−２、１２−３と、仮想ドライバ管理部１３−２、１３−３とを備える。なお、以下の説明では、アプリケーションソフトウェア（１１−１〜１１−３）、管理処理部（１２−１〜１２−３）、仮想ドライバ管理部（１３−１〜１３−３）は、夫々、区別する必要が無い場合には、アプリケーションソフトウェア１１、管理処理部１２、仮想ドライバ管理部１３と表記する。
【００４５】
管理部２０は、仮想化基盤２１と、装置管理部２４と、機能管理部２５と、ドライバ管理部２６と、機能設定部２７と、接続制御部２８とを含んで構成される。例えば、図２に示すオペレーティングシステム２２が、図４に示す装置管理部２４と、ドライバ管理部２６と、機能設定部２７と、機能制御部２８との機能を実現しても良い。また、例えば、図２に示すデバイス管理ソフトウェア２３が、図４に示す機能管理部２５の機能を実現しても良い。
【００４６】
管理部２０は、ネットワーク７０を介して、ＮＦＶ制御装置６０と接続する。
【００４７】
拡張装置３０−１は、ＰＣＩｅデバイス３１−１を備える。同様に、拡張装置３０−２、３０−３は、ＰＣＩｅデバイス３１−２、３１−３を備える。
【００４８】
（仮想マシン１０）
次に、仮想マシン１０について詳細に説明する。
【００４９】
（アプリケーションソフトウェア１１）
アプリケーションソフトウェア１１は、仮想マシン１０上で動作する機能を実行するソフトウェアである。例えば、アプリケーションソフトウェア１１は、ネットワーク機能を実現するソフトウェアプログラムであっても良い。
【００５０】
例えば、ネットワーク機能は、仮想マシン１０がネットワーク７０に接続して情報を送受信するための経路制御機能（ルーティング機能）であっても良い。または、ネットワーク機能は、アクセスを監視するセキュリティ機能であっても良い。あるいは、ネットワーク機能は、輻輳を回避するための通信品質制御機能であっても良い。
【００５１】
（管理処理部１２）
管理処理部１２は、仮想マシン１０を動作させるための設定を行う。具体的には、管理処理部１２は、管理部２０の装置管理部２４から、仮想マシン１０を動作させるための各種の設定情報を取得する。ここで、各種の設定情報とは、ＰＣＩｅデバイス３１の内部に設定された機能を識別する情報、ＰＣＩパススルー情報、仮想マシン１０の動作、構成等を定義するプロファイル、仮想マシン１０を起動させるブートイメージ等を含む。なお、以下の説明において、ＰＣＩｅデバイス３１の内部に設定された機能を識別する情報を、機能識別情報とも呼ぶ。また、以下の説明において、機能識別情報を、Ｐｒｏｇｒａｍ−ＩＤとも表記する。
【００５２】
そして、管理処理部１２は、装置管理部２４から取得した設定情報に基づいて、仮想ドライバ管理部１３に、仮想マシン１０上で動作するドライバソフトウェア（図５に示す仮想ドライバ（１３１−１〜１３１−３））を制御するメッセージを送信する。例えば、管理処理部１２は、装置管理部２４から取得した設定情報に基づいて、ネットワーク７０に対するネットワーク機能を仮想ドライバ（図５に示す仮想ドライバ（１３１−１〜１３１−３））に実行させるメッセージを、仮想ドライバ管理部１３に送信しても良い。
【００５３】
そして、管理処理部１２は、装置管理部２４から取得した設定情報に基づいて、アプリケーションソフトウェア１１を起動する。例えば、管理処理部１２は、ネットワーク機能に必要なアプリケーションソフトウェア１１を起動しても良い。
【００５４】
（仮想ドライバ管理部１３）
図５は、仮想ドライバ管理部１３の内部構成の一例を示すブロック図である。仮想ドライバ管理部１３は、仮想ドライバ（１３１−１〜１３１−３）を含んで構成される。なお、以下の説明において、夫々の仮想ドライバ（１３１−１〜１３１−３）を区別する必要が無い場合、仮想ドライバ１３１と表記する。図５に示す仮想ドライバ管理部１３は、３つの仮想ドライバ（１３１−１〜１３１−３）を含んで構成されるが、これは、仮想ドライバ１３１の数を３つに限定する趣旨ではない。仮想ドライバ管理部１３が備える仮想ドライバ１３１は、１つ又は２つ、或いは４つ以上であっても良い。
【００５５】
仮想ドライバ管理部１３は、仮想マシン１０がＰＣＩｅデバイス３１を利用するための初期設定及び機能制御を行う。管理部２０は、仮想ドライバ管理部１３に設定する仮想ドライバ１３１を決定し、仮想ドライバ管理部１３に該仮想ドライバ１３１を設定する。管理部２０が仮想ドライバ１３１を決定する処理の詳細は後述する。
【００５６】
仮想ドライバ管理部１３に設定される仮想ドライバ１３１は、仮想マシン１０のアプリケーションソフトウェア１１が、ＰＣＩｅデバイス３１の内部に設定された機能を利用するためのプログラムである。例えば、アプリケーションソフトウェア１１が、ネットワーク機能を実現する場合、ＰＣＩｅデバイス３１の内部に設定される機能は、データ暗号化機能、品質保証機能、プロトコル処理機能、障害監視機能等であっても良い。
【００５７】
また、仮想ドライバ管理部１３は、管理部２０が備えるドライバソフトウェアを用いて、各ＰＣＩｅデバイス３１に応じた制御を行う。以下の説明では、管理部２０が備えるドライバソフトウェアであって、各ＰＣＩｅデバイス３１の内部機能を制御するためのドライバソフトウェアを、制御ドライバと呼ぶ。
【００５８】
例えば、管理部２０のＨＤＤ（Hard Disk Drive）（図示せず）、フラッシュメモリ等の不揮発性メモリ（図示せず）が、制御ドライバを予め格納しておいても良い。または、管理部２０は、ネットワーク７０を介して、他の機器から、ドライバソフトウェアを入手し、制御ドライバとして、管理部２０のＨＤＤ（図示せず）等に格納しても良い。
【００５９】
（管理部２０）
次に、管理部２０について詳細に説明する。
【００６０】
装置管理部２４は、管理部２０の全体と、仮想マシン１０とを管理する。
【００６１】
機能管理部２５は、拡張装置３０の内部に設定された機能を管理する。具体的には、機能管理部２５は、仮想マシン１０の立ち上げ指示に応じて、仮想マシンに使用する拡張装置３０を特定する。そして、機能管理部２５は、機能要件を満たす機能に対応する、機能識別情報を、該拡張装置３０に、特定した機能識別情報を設定し、拡張装置３０の内部機能として、機能要件を満たす機能を該拡張装置３０に設定する。
【００６２】
より具体的には、機能管理部２５は、仮想マシン１０の立ち上げ指示に応じて、仮想マシンに使用する拡張装置３０のＰＣＩｅデバイス３１を特定する。そして、機能管理部２５は、特定した該ＰＣＩｅデバイス３１に、特定した機能識別情報を設定し、ＰＣＩｅデバイス３１の内部機能として、機能要件を満たす機能を該ＰＣＩｅデバイス３１に設定する。
【００６３】
装置識別情報は、ＰＣＩｅデバイス３１の提供元（製造元等）を識別する情報（以下、Ｖｅｎｄｏｒ−ＩＤとも表記する）と、ＰＣＩｅデバイス３１の型番等を識別する情報（以下、Ｄｅｖｉｃｅ−ＩＤとも表記する）との組み合わせであっても良い。
【００６４】
ドライバ管理部２６は、ＰＣＩｅデバイス３１の初期設定を行う。さらに、ドライバ管理部２６は、ＰＣＩｅデバイス３１が、該ＰＣＩｅデバイス３１に設定された機能を実行中である場合、該機能の実行を制御する。
【００６５】
機能設定部２７は、拡張装置３０に設定された機能識別情報に基づいて、該拡張装置３０の内部機能に必要なドライバソフトウェアを決定する。具体的には、機能設定部２７は、ＰＣＩｅデバイス３１に設定された機能識別情報に基づいて、該ＰＣＩｅデバイス３１の内部機能に必要なドライバソフトウェアを決定する。
【００６６】
さらに、機能設定部２７は、仮想マシン１０の起動に必要な定義ファイルを作成する。装置管理部２４は、機能設定部２７が作成した定義ファイルに基づいて、仮想マシン１０を起動する。ここで、機能設定部２７が作成する定義ファイルは、起動対象の仮想マシン１０が参照する、拡張装置３０に設定した機能識別情報を含むものとする。
【００６７】
接続制御部２８は、ＰＣＩｅデバイス３１の物理的な実装状態を管理する。さらに、接続制御部２８は、拡張装置３０に供給する電源、及び拡張装置３０と管理部２０との電気的接続を管理する。
【００６８】
（装置管理部２４）
以下、装置管理部２４について詳細に説明する。
【００６９】
図６は、装置管理部２４の内部構成の一例を示すブロック図である。装置管理部２４は、リソースリスト２４１と、仮想マシン管理テーブル２４２と、装置管理処理部２４３とを含んで構成される。
【００７０】
リソースリスト２４１は、仮想マシン１０の構成要素の使用状態（リソースの空き）に関する情報を格納する。具体的には、リソースリスト２４１は、仮想マシン１０のＣＰＵ（Central Processing Unit）の使用状態、メモリの使用状態、ＨＤＤの使用状態等に関する情報を格納する。
【００７１】
仮想マシン管理テーブル２４２は、仮想マシン１０の動作、構成に関する情報を格納する。具体的には、仮想マシン管理テーブル２４２は、仮想マシン１０の動作、構成を定義するプロファイル、仮想マシン１０のブートイメージ、ステータス（起動、停止を示す情報等）を格納する。
【００７２】
以下、装置管理処理部２４３について詳細に説明する。
【００７３】
まず、装置管理処理部２４３は、必要な機能要件及び性能要件と、該機能要件及び該性能要件に適合する仮想マシン１０の起動とを指示するメッセージを受信する。
【００７４】
例えば、管理システム１が、仮想マシン１０を利用して、ネットワーク機能を実現するとする。その場合、装置管理処理部２４３は、ネットワーク７０を介して、ＮＦＶ制御装置６０から、実現対象のネットワーク機能に必要となる、機能要件及び性能要件を受信しても良い。さらに、装置管理処理部２４３は、ネットワーク７０を介して、ＮＦＶ制御装置６０から、実現対象のネットワーク機能に適合する、仮想マシン１０の起動を指示するメッセージを受信しても良い。
【００７５】
そして、装置管理処理部２４３は、受信したメッセージから、機能要件及び性能要件を抽出し、必要となる各種リソースを算出する。具体的には、装置管理処理部２４３は、リソースリスト２４１と、リソースの算出結果とに基づいて、起動する仮想マシン１０に必要な機能要件及び性能要件を決定する。
【００７６】
ここで、仮想マシン１０に必要な機能要件とは、受信したメッセージから抽出した機能要件を満たす、プログラムを実行するための要件である。例えば、管理システム１が、仮想マシン１０を利用して、ネットワーク機能を実現するとする。その場合、仮想マシン１０に必要な機能要件は、データ暗号化機能、回線品質保証機能（ＱｏＳ；Quality of Service）、プロトコル処理機能等を実現する、プログラムを実行するための要件である。
【００７７】
また、仮想マシン１０に必要な性能要件とは、指定された機能要件を満たす、仮想マシン１０の性能に関する要件である。例えば、仮想マシン１０に必要な性能要件とは、ＣＰＵコア数、メモリ容量、ディスク容量、処理速度、処理品質等に関する情報であっても良い。また、管理システム１が、課金額に応じてユーザにネットワーク機能を提供する場合には、仮想マシン１０に必要な性能要件は、課金限度額に関する情報を含んでも良い。
【００７８】
そして、装置管理処理部２４３は、決定した機能要件及び性能要件を満たすＰＣＩｅデバイス３１の有無を、機能管理部２５に問い合わせる。
【００７９】
ここで、決定した機能要件及び性能要件を満たすＰＣＩｅデバイス３１が見つからなかったとする。その場合、装置管理処理部２４３は、仮想マシン１０の起動を中止する。そして、装置管理処理部２４３は、仮想マシン１０の起動を中止した旨と、中止要因とを通知するメッセージを、ＮＦＶ制御装置６０に送信する。
【００８０】
一方、決定した機能要件及び性能要件を満たすＰＣＩｅデバイス３１が見つかったとする。その場合、装置管理処理部２４３は、見つかったＰＣＩｅデバイス３１の起動と、仮想マシン１０から該ＰＣＩｅデバイス３１を利用可能にする設定と、を指示するメッセージを、機能管理部２５に送信する。
【００８１】
機能管理部２５は、装置管理処理部２４３からの指示に基づいて、ＰＣＩｅデバイス３１の設定処理を実行する。さらに、機能管理部２５は、ＰＣＩｅデバイス３１の内部に設定された機能を識別する、機能識別情報を、ＰＣＩｅデバイス３１に設定する。
【００８２】
そして、機能管理部２５は、装置管理処理部２４３に、ＰＣＩｅデバイス３１の設定完了を通知する。さらに、機能管理部２５は、装置管理処理部２４３に、ＰＣＩｅデバイス３１に設定した機能識別情報を通知する。機能管理部２５の詳細については、後述する。
【００８３】
装置管理処理部２４３は、機能管理部２５から、ＰＣＩｅデバイス３１の設定完了を通知するメッセージを受信する。さらに、装置管理処理部２４３は、ＰＣＩｅデバイス３１に設定された機能識別情報を受信する。
【００８４】
装置管理処理部２４３は、仮想マシン管理テーブル２４２を参照し、仮想マシン１０の起動に必要な定義ファイルを作成する。装置管理処理部２４３が作成する定義ファイルは、仮想マシン１０からＰＣＩｅデバイス３１を利用するための設定を含むものとする。具体的には、装置管理処理部２４３が作成する定義ファイルは、ＰＣＩｅデバイス３１に設定された機能識別情報、ＰＣＩパススルー設定、仮想マシン１０の動作及び構成を定義するプロファイル、仮想マシン１０のブートイメージ等を含んでも良い。
【００８５】
装置管理処理部２４３は、定義ファイルの作成を完了すると、仮想化基盤２１を介して、仮想マシン１０を起動する。
【００８６】
装置管理処理部２４３は、仮想マシン１０の起動が完了すると、仮想マシン１０の管理処理部１２に、初期設定情報及び定義ファイルを送信する。ここで、処理設定情報とは、管理部２０を含む装置を識別するための識別番号、ＩＰ（Internet Protocol）アドレス等を含む情報である。
【００８７】
（機能管理部２５）
次に、機能管理部２５について詳細に説明する。
【００８８】
図７は、機能管理部２５の内部構成の一例を示すブロック図である。機能管理部２５は、機能管理テーブル２５１と、機能管理処理部２５２とを含んで構成される。
【００８９】
機能管理テーブル２５１には、拡張装置３０を識別する装置識別情報と、該拡張装置３０に設定される機能を識別するための機能識別情報とを対応付けた情報が格納される。例えば、機能管理テーブル２５１は、ＰＣＩｅデバイス３１の装置識別情報と、ＰＣＩｅデバイス３１の機能識別情報とを対応付けた情報を含んで構成されても良い。
【００９０】
ここで、機能管理テーブル２５１は、一つの装置識別情報に、複数の機能識別情報が対応付けて格納されても良い。具体的には、機能管理テーブル２５１は、一組のＶｅｎｄｏｒ−ＩＤとＤｅｖｉｃｅ−ＩＤとに、複数の機能識別情報を対応付けて格納されても良い。
【００９１】
また、機能管理テーブル２５１は、さらに、機能識別情報と、プログラムデータの名称と、該プログラムデータが実行する処理を示す、機能情報とを、装置識別情報に対応付けて格納しても良い。
【００９２】
また、機能管理テーブル２５１は、装置識別情報と、機能識別情報と、プログラムデータの名称と、性能情報と、機能情報と、使用状態を示す情報（以下、ステータス情報と呼ぶ）とを対応付けて格納しても良い。
【００９３】
性能情報とは、対応するプログラムデータの処理において、必要な性能を示す情報である。例えば、管理部２０のＨＤＤ（図示せず）等に、必要な性能の詳細を示す値と、性能情報が示す値とを対応付けて格納しておいても良い。例えば、必要な性能の詳細を示す値とは、ＣＰＵコア数、メモリ容量、ディスク容量、１秒間に処理可能なデータビット数等であっても良い。そして、機能管理テーブル２５１には、各ＰＣＩｅデバイス３１のプログラムデータの処理に対応する、性能情報を格納する。
【００９４】
また、機能情報とは、対応するプログラムデータが実行する処理を示す情報である。例えば、管理部２０のＨＤＤ（図示せず）等に、処理の種類と、機能情報が示す値とを対応付けて格納しておいても良い。例えば、機能情報として、データ暗号化機能＝１、回線品質保証機能＝２、プロトコル処理機能＝４等の値を、予め割り当てておいても良い。そして、機能管理テーブル２５１には、各ＰＣＩｅデバイス３１のプログラムデータの処理に対応する、機能情報を格納する。
【００９５】
また、ステータス情報とは、ＰＣＩｅデバイス３１が、仮想マシン１０から使用中の状態であるか否かを示す情報である。
【００９６】
機能管理処理部２５２は、機能管理テーブル２５１を参照して、指定された機能要件を満たす機能情報を特定する。そして、機能管理処理部２５２は、機能情報に対応する装置識別情報に基づいて拡張装置３０を特定する。そして、機能管理処理部２５２は、特定した機能識別情報と、機能要件を満たす機能とを拡張装置３０に設定する。
【００９７】
または、機能管理処理部２５２は、機能管理テーブル２５１を参照して、指定された機能要件及び性能要件を満たす機能情報及び性能情報を特定しても良い。そして、機能管理処理部２５２は、特定した機能情報と性能情報とに対応する装置識別情報に基づいて拡張装置３０を特定しても良い。そして、機能管理処理部２５２は、特定した機能識別情報と、機能要件を満たす機能とを拡張装置３０に設定しても良い。
【００９８】
また、機能管理処理部２５２は、機能管理テーブル２５１において、機能識別情報、プログラムデータの名称、性能情報、機能情報を、変更、追加、削除しても良い。さらに、機能管理テーブル２５１において、ステータス情報が使用中の状態を示す場合には、機能識別情報、プログラムデータの名称、性能情報、機能情報は、設定されていない状態であっても良い。
【００９９】
以下、機能管理処理部２５２について、より詳細に説明する。
【０１００】
機能管理処理部２５２は、装置管理処理部２４３から、機能要件及び性能要件を満たすＰＣＩｅデバイス３１の有無に関する問い合わせを受信した場合、受信した問い合わせから、機能要件及び性能要件を抽出する。
【０１０１】
機能管理処理部２５２は、機能管理テーブル２５１を参照し、抽出した機能要件及び性能要件に適合する、機能情報及び性能情報を検索する。そして、機能管理処理部２５２は、機能管理テーブル２５１を参照し、抽出した機能要件及び性能要件に適合し、仮想マシン１０から利用されていないＰＣＩｅデバイス３１が登録されているか否かを判断する。
【０１０２】
機能管理処理部２５２は、機能管理テーブル２５１に、該ＰＣＩｅデバイス３１が登録されている場合、機能要件及び性能要件を満たすＰＣＩｅデバイス３１が存在すると判断する。一方、機能管理処理部２５２は、機能管理テーブル２５１に、該ＰＣＩｅデバイス３１が登録されていない場合、機能要件及び性能要件を満たすＰＣＩｅデバイス３１が存在しないと判断する。
【０１０３】
機能管理処理部２５２は、機能要件及び性能要件を満たすＰＣＩｅデバイス３１の有無を、装置管理部２４に通知する。
【０１０４】
機能管理処理部２５２は、機能要件及び性能要件を満たすＰＣＩｅデバイス３１の起動と、仮想マシン１０から該ＰＣＩｅデバイス３１を利用可能にする設定と、を指示するメッセージを、装置管理処理部２４３から受信する。
【０１０５】
機能管理処理部２５２は、ＰＣＩｅデバイス３１の設定前に、制御ドライバが動作していないことを確認する。制御ドライバが動作している場合には、機能管理処理部２５２は、制御ドライバの動作停止を指示するメッセージを、ドライバ管理部２６に送信する。これは、不要なアクセスエラー、システムエラーの発生を回避するためである。さらに、アクセスエラー、システムエラーを回避するために、機能管理処理部２５２は、仮想ドライバ１３１の停止を指示するメッセージを、ドライバ管理部２６に送信しても良い。
【０１０６】
仮想マシン１０がＰＣＩｅデバイス３１を使用する上で、ＰＣＩｅデバイス３１の機能のダウンロード、更新が必要である場合には、機能管理処理部２５２は、機能のダウンロード、更新を指示するメッセージを、設定対象のＰＣＩｅデバイス３１に送信する。
【０１０７】
そして、機能管理処理部２５２は、ＰＣＩｅデバイス３１に、予め定義されている機能識別情報「Ｐｒｏｇｒａｍ−ＩＤ」を設定する。
【０１０８】
例えば、機能管理処理部２５２が、ランダムに機能識別情報を定義しても良い。または、ＮＦＶ制御装置６０は、仮想マシン１０の立ち上げを指示する際に、機能識別情報を定義しても良い。
【０１０９】
機能管理処理部２５２は、ＰＣＩｅデバイス３１上で、機能拡張用の空き領域に、機能識別情報を設定する。具体的には、機能管理処理部２５２は、ＰＣＩ規定においてＲｅｓｅｒｖｅｄとして割り当てられている領域に、機能識別情報を設定する。
【０１１０】
機能管理処理部２５２は、ＰＣＩｅデバイス３１に対する機能識別情報の設定を完了した場合、機能管理テーブル２５１において、ＰＣＩｅデバイス３１に対応するステータス情報を、「使用中」に更新する。
【０１１１】
管理部２０からＰＣＩｅデバイス３１に対してホットプラグを行う必要がある場合、機能管理処理部２５２は、機能設定部２７に、該ＰＣＩｅデバイス３１のホットプラグ実行を指示する。機能設定部２７の詳細は、後述する。
【０１１２】
例えば、管理部２０が、ＰＣＩｅデバイス３１の内部に設定する機能をダウンロード、更新する場合、機能管理処理部２５２は、機能設定部２７に該ＰＣＩｅデバイス３１のホットプラグの実行を指示する。なお、管理部２０は、ホットプラグを実行し、オペレーティングシステム２２を再起動しても良い。これは、ＰＣＩｅデバイス３１を再識別するための処理である。
【０１１３】
機能管理処理部２５２は、機能設定部２７からホットプラグ及び制御ドライバの設定完了を通知するメッセージを受信する。機能管理処理部２５２は、該メッセージを受信した場合、装置管理部２４に、ＰＣＩｅデバイス３１の設定完了を通知するメッセージを送信する。さらに、機能管理処理部２５２は、ＰＣＩｅデバイス３１に設定された機能識別情報を送信する。
【０１１４】
（ドライバ管理部２６）
次に、ドライバ管理部２６について詳細に説明する。
【０１１５】
図８は、ドライバ管理部２６の内部構成の一例を示すブロック図である。ドライバ管理部２６は、ドライバ管理処理部２６１と、制御ドライバ（２６２−１〜２６２−３）とを含んで構成される。以下の説明において、夫々の制御ドライバ（２６２−１〜２６２−３）を区別する必要が無い場合、制御ドライバ２６２と表記する。なお、図８に示す３つの制御ドライバ（２６２−１〜２６２−３）を含んで構成されるが、これは、ドライバ管理部２６が備える制御ドライバ２６２の数を３つに限定する趣旨ではない。ドライバ管理部２６が備える制御ドライバ２６２は、１つ又は２つ、或いは４つ以上であっても良い。
【０１１６】
なお、機能設定部２７が、ドライバ管理部２６に制御ドライバ２６２を設定する。そのため、図８に示すドライバ管理部２６は、機能設定部２７が制御ドライバ２６２を設定後の状態を示すものとする。
【０１１７】
機能管理処理部２５２が、ＰＣＩｅデバイス３１の設定前に、動作中の制御ドライバ２６２がある場合には、ドライバ管理処理部２６１は、機能管理部２５から、該制御ドライバ２６２の動作停止を指示するメッセージを受信する。さらに、ドライバ管理処理部２６１は、機能管理部２５から、仮想ドライバ１３１の動作停止を指示するメッセージを受信しても良い。
【０１１８】
ドライバ管理処理部２６１は、制御ドライバ２６２の動作停止を指示するメッセージを受信した場合、該制御ドライバ２６２の動作を停止する。また、ドライバ管理処理部２６１は、機能管理部２５から、仮想ドライバ１３１の動作停止を指示するメッセージを受信した場合、該仮想ドライバ１３１の動作を停止する。
【０１１９】
制御ドライバ２６２は、仮想マシン１０とＰＣＩｅデバイス３１とを仲介して、仮想マシン１０がＰＣＩｅデバイス３１の内部に設定された機能を利用することを実現するプログラムである。
【０１２０】
（機能設定部２７）
次に、機能設定部２７について詳細に説明する。
【０１２１】
具体的には、機能設定部２７は、機能要件を満たす拡張装置３０に設定された、機能識別情報に基づいて、仮想マシン１０に設定される第１のドライバ（仮想ドライバ１３１）を決定する。さらに、機能設定部２７は、機能要件を満たす拡張装置３０に設定された、機能識別情報に基づいて、仮想マシン１０が、拡張装置３０の内部機能を利用することを可能にする第２のドライバ（制御ドライバ２６２）を決定する。
【０１２２】
または、機能要件及び性能要件を満たす拡張装置３０に設定された、機能識別情報と装置識別情報とに基づいて、仮想ドライバ１３１と、制御ドライバ２６２とを決定しても良い。
【０１２３】
以下、機能設定部２７について、より詳細に説明する。
【０１２４】
機能設定部２７は、機能管理部２５から、ＰＣＩｅデバイス３１とのホットプラグの実行を指示するメッセージを受信する。機能設定部２７は、ＰＣＩｅデバイス３１とのホットプラグの実行を指示するメッセージを受信すると、接続制御部２８に、ホットプラグの実行を指示する。
【０１２５】
管理部２０のオペレーティングシステム２２が起動している場合、機能設定部２７は、ＰＣＩｅデバイス３１とのホットプラグを実行し、該ＰＣＩｅデバイス３１の装置識別情報、及び該ＰＣＩｅデバイス３１に設定された機能識別情報とを、ＰＣＩｅデバイス３１から読み出す。具体的には、管理部２０のオペレーティングシステム２２が起動している場合、機能設定部２７は、ＰＣＩｅデバイス３１から、Ｖｅｎｄｏｒ−ＩＤ、Ｄｅｖｉｃｅ−ＩＤ、Ｐｒｏｇｒａｍ−ＩＤを読み出す。
【０１２６】
一方、管理部２０のオペレーティングシステム２２が起動していない場合、機能管理部２５が、管理部２０に接続されているＰＣＩｅデバイス３１の装置識別情報、及び該ＰＣＩｅデバイス３１に設定された機能識別情報とを、ＰＣＩｅデバイス３１から読み出す。具体的には、機能管理部２５が、ＰＣＩｅデバイス３１から、Ｖｅｎｄｏｒ−ＩＤ、Ｄｅｖｉｃｅ−ＩＤ、Ｐｒｏｇｒａｍ−ＩＤを読み出す。そして、機能管理部２５は、読み出した装置識別情報及び機能識別情報を、機能設定部２７に通知する。
【０１２７】
なお、管理部２０のオペレーティングシステム２２が起動していない場合とは、例えば、オペレーティングシステム２２を起動後に、ＰＣＩｅデバイス３１の機能が変更された場合、障害から復旧して正常動作に移行した場合等が該当する。
【０１２８】
そして、機能設定部２７は、読み出した装置識別情報と機能識別情報とに基づいて、仮想マシン１０に設定するドライバ（仮想ドライバ１３１）、及び使用する制御ドライバ２６２を決定し、該仮想ドライバ１３１及び制御ドライバ２６２を有効にする。具体的には、機能設定部２７は、仮想マシン１０の仮想ドライバ管理部１３に、決定した仮想ドライバ１３１を設定し、有効にする。さらに、機能設定部２７は、ドライバ管理部２６に、決定した制御ドライバ２６２を設定し、有効にする。
【０１２９】
（接続制御部２８）
接続制御部２８は、ＰＣＩｅデバイス３１に設定された機能を、管理部２０に認識させるホットプラグを指示するメッセージを、機能設定部２７から受信する。接続制御部２８は、機能設定部２７からホットプラグを指示するメッセージを受信すると、ホットプラグを開始する。
【０１３０】
（ＰＣＩｅデバイス３１）
次に、ＰＣＩｅデバイス３１について、詳細に説明する。
【０１３１】
図９は、ＰＣＩｅデバイス３１の内部構成の一例を示すブロック図である。ＰＣＩｅデバイス３１は、機能格納部３１１と、機能拡張インタフェース部３１２とを含んで構成される。機能拡張インタフェース部３１２は、機能拡張制御部３１３を含んで構成される。
【０１３２】
機能格納部３１１は、拡張装置３０（具体的には、ＰＣＩｅデバイス３１）が実行する機能を格納する。例えば、機能格納部３１１は、該機能を実現するためのプログラムを格納するメモリであっても良い。または、機能格納部３１１は、ＰＬＤ（Programmable Logic Device）を用いて実現されても良い。機能格納部３１１は、書き換え可能な領域である。例えば、管理部２０は、ＰＣＩｅデバイス３１に、設定対象の機能を実現するプログラムをダウンロードし、機能格納部３１１に、該プログラムを格納しても良い。
【０１３３】
機能拡張インタフェース部３１２は、ＰＣＩｅ規格に基づいて、データを処理するための処理を実行する。
【０１３４】
機能拡張制御部３１３は、拡張装置３０（具体的には、ＰＣＩｅデバイス３１）を動作させるための情報を格納する、記憶領域を含んで構成される。具体的には、機能拡張制御部３１３は、ＰＣＩコンフィグレーション空間（Peripheral Component Interconnect Configuration Space）を含んで構成される。例えば、機能拡張制御部３１３は、ＰＣＩｅ規格に準じて、ＰＣＩｅデバイス３１を動作させるための情報を格納するレジスタであっても良い。
【０１３５】
機能拡張インタフェース部３１２は、機能管理部２５から、機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を受信すると、受信した機能識別情報を、機能拡張制御部３１３に設定する。機能拡張インタフェース部３１２は、機能拡張制御部３１３に機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を設定すると、機能管理部２５に、機能識別情報の設定完了を通知する。
【０１３６】
図１０は、ＰＣＩｅデバイス３１が、複数の機能格納部（３１１−１〜３１１−４）を備える場合の一例を示すブロック図である。以下の説明では、機能格納部（３１１−１〜３１１−４）を、夫々区別する必要が無い場合には、機能格納部３１１と記載する。なお、図１０においては、４つの機能格納部（３１１−１〜３１１−４）を示すが、これは、ＰＣＩｅデバイス３１が備える機能格納部３１１の数を４つに限定する趣旨ではない。ＰＣＩｅデバイス３１が備える機能格納部３１１は、１つ又は２つ、あるいは５つ以上であっても良い。
【０１３７】
機能管理部２５は、各機能格納部３１１に設定された機能に対応する、各機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を、機能拡張インタフェース部３１２に通知する。機能拡張インタフェース部３１２は、受信した各機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を、機能拡張制御部３１３に設定する。
【０１３８】
仮想マシン１０は、機能拡張制御部３１３に設定された機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を参照することで、ＰＣＩｅデバイス３１の内部に設定された個々の機能を識別できる。その結果、複数の仮想マシン１０が、各機能格納部３１１に設定された、各機能を利用できる。換言すると、複数の仮想マシン１０が、一つのＰＣＩｅデバイス３１の内部に設定された機能を共有できる。なお、仮想マシン１０及び管理部２０からＰＣＩｅデバイス３１にアクセスするためのアドレス設定、及びアクセス方法は、ＰＣＩ規格で定義されるＩＯ（Input Output）仮想化技術である、ＳＲ−ＩＯＶ（Single Root Input Output Virtualization）を利用しても良い。
【０１３９】
また、例えば、異なる提供元（ベンダ）のＰＣＩｅデバイス３１に、同じ機能を持たせたい場合には、各ＰＣＩｅデバイス３１に、同じ機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を設定することで、異なるベンダのＰＣＩｅデバイス３１であっても、機能を同一にできる。
【０１４０】
次に、図１１を参照しながら、機能拡張制御部３１３に機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を設定する処理について、詳細に説明する。
【０１４１】
図１１は、機能拡張制御部３１３に格納されるデータ構造の一例を示す図である。図１１に示す通り、機能拡張制御部３１３は、ＰＣＩ規定に準じた構成を備えるものとする。
【０１４２】
例えば、機能管理処理部２５２が、ＰＣＩ規格に規定されたＴｙｐｅ０のＣｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｐａｃｅ  Ｈｅａｄｅｒを用いて、ＰＣＩ規格に規定されたデバイス管理プロセスである、コンフィグレーションサイクルを行うとする。その場合、機能管理処理部２５２は、図１１に示すＰＣＩコンフィグレーション空間内のＢｙｔｅ  Ｏｆｆｓｅｔ  ３８ｈに、ダウンロードした機能に対応するＰｒｏｇｒａｍ−ＩＤを設定する。
【０１４３】
例えば、ＰＣＩｅデバイス３１が、ＩＯ仮想化技術である、ＳＲ−ＩＯＶ機能に対応するとする。その場合、機能管理処理部２５２は、ＰＣＩコンフィグレーション空間のＳＲ−ＩＯＶ  ＥｘｔｅｎｄｅＣａｐａｂｉｌｉｔｉｅｓ領域に、ダウンロードした機能に対応するＰｒｏｇｒａｍ−ＩＤを設定する。さらに、機能管理処理部２５２は、ＰＣＩコンフィグレーション空間において、ＰＣＩ規定においてＲｅｓｅｒｖｅｄとして割り当てられている領域に、Ｐｒｏｇｒａｍ−ＩＤを設定する。
【０１４４】
なお、機能管理処理部２５２は、ＰＣＩ規格に規定されたＴｙｐｅ０のＣｏｎｆｉｇｕｒａｔｉｏｎ  Ｓｐａｃｅ  Ｈｅａｄｅｒ領域、及びＳＲ−ＩＯＶ  Ｅｘｔｅｎｄｅｄ  Ｃａｐａｂｉｌｉｔｉｅｓ領域において、Ｐｒｏｇｒａｍ−ＩＤとして、同一の値を設定しても良いし、或いは異なる値を設定しても良い。
【０１４５】
次に、管理システム１の動作について説明する。なお、以下の説明では、ＮＦＶ制御装置６０からの指示に基づいて、管理部２０が、仮想マシン１０を新規に起動する場合を例示するが、これは、本実施形態に係る管理システム１の動作を限定する趣旨ではない。また、以下の説明では、ＮＦＶ制御装置６０からの指示に基づいて、管理部２０のオペレーティングシステム２２を起動する場合を例示するが、これは、本実施形態に係る管理システム１の動作を限定する趣旨ではない。
【０１４６】
まず、図１２を参照しながら、管理システム１の動作について説明する。
【０１４７】
ステップＳ００１において、ＮＦＶ制御装置６０は、ネットワーク７０を介して、管理部２０の装置管理部２４に、仮想マシン１０の起動を指示するメッセージを送信する。管理部２０は、ＮＦＶ制御装置６０からのメッセージを受信すると、オペレーティングシステム２２を起動する。なお、以下の説明において、オペレーティングシステム２２が、装置管理部２４と、ドライバ管理部２６と、機能設定部２７と、機能制御部２８の機能を実現するものとする。また、以下の説明においては、デバイス管理ソフトウェア２３が、機能管理部２５の機能を実現するものとする。
【０１４８】
ステップＳ００２において、装置管理部２４は、リソースを見積もり、機能要件及び性能要件を決定する。具体的には、装置管理部２４は、受信したメッセージから、仮想マシン１０に必要な機能要件及び性能要件を抽出し、必要となる各種リソースを計算する。そして、装置管理部２４は、リソースリスト２４１と、リソースの計算結果とに基づいて、起動要求を受けた仮想マシン１０に必要な機能要件と性能要件とを決定する。
【０１４９】
ステップＳ００３において、装置管理部２４は、機能管理部２５に、決定した機能要件及び性能要件を満たすＰＣＩｅデバイス３１の有無を問い合わせる。
【０１５０】
ステップＳ００４において、機能管理部２５は、要件を満たすＰＣＩｅデバイス３１の有無を判定する。具体的には、機能管理部２５は、機能管理テーブル２５１を参照し、装置管理部２４が決定した機能要件及び性能要件を満たす、ＰＣＩｅデバイス３１が、存在するか否かを判断する。
【０１５１】
ここで、図１３を参照して、ＰＣＩｅデバイス３１の有無を判断する処理について、詳細に説明する。
【０１５２】
ステップＳ１０１において、機能要件を満たすＰＣＩｅデバイス３１が存在するか否かを、機能管理処理部２５２は判断する。具体的には、機能管理処理部２５２は、機能管理テーブル２５１を参照して、問い合わせを受けた機能要件を満たすＰＣＩｅデバイス３１が登録されているか否かを判断する。機能要件を満たすＰＣＩｅデバイス３１が存在する場合（ステップＳ１０１のＹｅｓ分岐）には、ステップＳ１０２に遷移する。一方、機能要件を満たすＰＣＩｅデバイス３１が存在しない場合（ステップＳ１０１のＮｏ分岐）には、ステップＳ１０５に遷移する。
【０１５３】
ステップＳ１０２において、使用中ではないＰＣＩｅデバイス３１が存在するか否かを、機能管理処理部２５２は判断する。具体的には、機能管理処理部２５２は、機能管理テーブル２５１を参照して、「使用されていない」ことを示すとともに、機能要件を満たすＰＣＩｅデバイス３１が登録されているか否かを判断する。「使用されていない」ことを示すとともに、機能要件を満たすＰＣＩｅデバイス３１が存在する場合（ステップＳ１０２のＹｅｓ分岐）には、ステップＳ１０３に遷移する。一方、「使用されていない」ことを示すとともに、機能要件を満たすＰＣＩｅデバイス３１が存在しない場合（ステップＳ１０２のＮｏ分岐）には、ステップＳ１０５に遷移する。
【０１５４】
ステップＳ１０３において、性能要件を満たすＰＣＩｅデバイス３１が存在するか否かを、機能管理処理部２５２は判断する。具体的には、機能管理処理部２５２は、機能管理テーブル２５１を参照して、機能要件を満たし、「使用されていない」ことを示すとともに、性能要件を満たすＰＣＩｅデバイス３１が登録されているか否かを判断する。機能要件を満たし、「使用されていない」ことを示すとともに、性能要件を満たすＰＣＩｅデバイス３１が存在する場合（ステップＳ１０３のＹｅｓ分岐）には、機能管理処理部２５２は、利用可能なＰＣＩｅデバイス３１が存在すると判断する。一方、機能要件を満たし、「使用されていない」ことを示すとともに、性能要件を満たすＰＣＩｅデバイス３１が存在しない場合（ステップＳ１０３のＮｏ分岐）には、利用可能なＰＣＩｅデバイス３１が存在しないと判断する。
【０１５５】
なお、機能管理処理部２５２は、問い合わせを受けた機能要件及び性能要件に適合するＰＣＩｅデバイス３１が存在しない場合には、ＰＣＩｅデバイス３１に対して、必要なプログラムのダウンロード処理、更新処理を行っても良い。
【０１５６】
ここで、図１４に示す機能管理テーブル２５１を参照しながら、ＰＣＩｅデバイス３１の有無を判断する処理の一例について説明する。具体的には、データ暗号化機能（機能要件）を備え、１秒間に、４０ビットのデータを処理可能（性能要件）であるＰＣＩｅデバイス３１の有無について、機能管理処理部２５２が問い合わせを受けた場合を例示して説明する。なお、以下の説明では、説明の便宜上、図１４に示す機能管理テーブル２５１において、機能情報＝１は、データ暗号化機能を示すものとする。また、以下の説明では、説明の便宜上、図１４に示す機能管理テーブル２５１において、性能情報として示す値は、１秒間に処理可能なデータビット数であるものとする。また、以下の説明においては、説明の便宜上、図１４に示す機能管理テーブル２５１において、ステータス情報＝１は、使用中を示すものとする。一方、図１４に示す機能管理テーブル２５１において、ステータス情報＝０は、使用中ではないことを示すものとする。
【０１５７】
まず、機能管理処理部２５２は、機能管理テーブル２５１を参照して、データ暗号化機能（即ち、機能情報＝１）のＰＣＩｅデバイス３１が存在するか否かを判断する。その結果、機能管理処理部２５２は、機能管理テーブル２５１において、図１４に示す管理番号０００２、０００４、０００６に対応するＰＣＩｅデバイス３１が、機能要件を満たすと判断する。
【０１５８】
次に、機能管理処理部２５２は、機能管理テーブル２５１を参照して、管理番号０００２、０００４、０００６に対応するＰＣＩｅデバイス３１のうち、使用中ではないＰＣＩｅデバイス３１が存在するか否かを判断する。その結果、機能管理処理部２５２は、管理番号０００２、０００６に対応するＰＣＩｅデバイス３１が、使用中ではないと判断する。
【０１５９】
次に、機能管理処理部２５２は、機能管理テーブル２５１を参照して、管理番号０００２、０００６に対応するＰＣＩｅデバイス３１のうち、１秒間に、４０ビットのデータを処理可能（即ち、性能情報＝４０）であるＰＣＩｅデバイス３１が存在するか否かを判断する。その結果、機能管理処理部２５２は、管理番号０００２に対応するＰＣＩｅデバイス３１が、１秒間に、４０ビットのデータを処理可能であると判断する。そして、機能管理処理部２５２は、利用可能なＰＣＩｅデバイス３１が存在すると判断する。
【０１６０】
再び、図１２を参照しながら、管理システム１の動作について説明する。
【０１６１】
ステップＳ００５において、機能管理部２５は、判定結果を装置管理部２４に通知する。ＰＣＩｅデバイス３１が存在することを示す通知を受信した場合（ステップＳ００６のＹｅｓ分岐）には、装置管理部２４は、機能管理部２５にＰＣＩｅデバイス３１の設定を指示する（ステップＳ００７）。一方、ＰＣＩｅデバイス３１が存在しないことを示す通知を受信した場合（ステップＳ００６のＮｏ分岐）には、装置管理部２４は、ＮＦＶ制御装置６０に仮想マシン１０を起動しないことを通知する（ステップＳ００８）。
【０１６２】
次に、図１５を参照しながら、管理システム１の動作について、引き続き説明する。なお、以下の説明においては、機能管理処理部２５２が、図１４に示す機能管理テーブル２５１を参照する場合を例示して説明する。さらに、以下の説明においては、図１４に示す管理番号０００２に対応するＰＣＩｅデバイス３１が、機能要件及び性能要件を満たし、使用中ではないものとして説明する。
【０１６３】
装置管理部２４は、機能管理部２５に、ＰＣＩｅデバイス３１の設定を指示すると、ドライバ管理部２６の制御ドライバ２６２が動作していないことを確認する。ドライバ管理部２６の制御ドライバ２６２が動作している場合には、機能管理部２５は、ドライバ管理部２６に、制御ドライバ２６２の動作停止を指示する。ドライバ管理部２６は、制御ドライバ２６２の動作停止の指示を受信すると、制御ドライバ２６２の動作を停止する（ステップＳ０２１）。
【０１６４】
ドライバ管理部２６が制御ドライバ２６２の動作を停止した場合、機能管理部２５は、ＰＣＩｅデバイス３１の内部機能の更新を指示する。例えば、管理番号０００２に対応するＰＣＩｅデバイス３１が、機能要件及び性能要件を満たし、使用中ではない場合、該ＰＣＩｅデバイス３１に、ＰＣＩｅデバイス３１の内部機能の更新を指示する。なお、上記の通り、ＰＣＩｅデバイス３１が、必要な機能を設定済みである場合には、内部機能の更新指示、内部機能の更新処理は不要であることは勿論である。
【０１６５】
ＰＣＩｅデバイス３１は、内部機能の更新指示を受信すると、ＰＣＩｅデバイス３１の内部機能を更新する（ステップＳ０２２）。そして、ＰＣＩｅデバイス３１は、機能管理部２５に、機能の更新完了を通知する（ステップＳ０２３）。
【０１６６】
ステップＳ０２４において、機能管理部２５は、機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を、機能要件及び性能要件を満たすＰＣＩｅデバイス３１に設定する。例えば、管理番号０００２に対応するＰＣＩｅデバイス３１が、機能要件及び性能要件を満たし、使用中ではない場合、該ＰＣＩｅデバイス３１に、Ｐｒｏｇｒａｍ−ＩＤとして、「２０００」を設定する。該ＰＣＩｅデバイス３１は、機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を設定した場合、機能管理部２５に、機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）の設定完了を通知する。
【０１６７】
機能管理部２５は、機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）の設定完了の通知を受信した場合、機能管理テーブル２５１を更新する（ステップＳ０２５）。具体的には、機能管理部２５は、機能管理テーブル２５１において、対応するＰＣＩｅデバイス３１のステータス情報を、「使用中」に更新する。例えば、管理番号０００２に対応するＰＣＩｅデバイス３１が、機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）の設定を完了した場合、機能管理テーブル２５１において、管理番号０００２に対応するステータス情報を、使用中を示す「１」に更新する。
【０１６８】
ステップＳ０２６において、機能管理部２５は、機能設定部２７に、ホットプラグを指示する。さらに、ステップＳ０２７において、機能管理部２５は、ＰＣＩｅデバイス３１に設定した機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を、機能設定部２７に通知する。例えば、機能管理部２５は、管理番号０００２に対応するＰＣＩｅデバイス３１に設定した、Ｐｒｏｇｒａｍ−ＩＤ「２０００」を、機能設定部２７に通知する。
【０１６９】
次に、図１６を参照しながら、管理システム１の動作について、引き続き説明する。
【０１７０】
機能管理部２５が、ＰＣＩｅデバイス３１に設定した機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を、機能設定部２７に通知すると（ステップＳ０２７）、機能設定部２７は、接続制御部２８に、ＰＣＩｅデバイス３１のホットプラグの開始を指示する（ステップＳ０４１）。そして、接続制御部２８は、ＰＣＩｅデバイス３１のホットプラグを開始する。機能設定部２７は、接続制御部２８を介して、ホットプラグを実行することで、ＰＣＩｅデバイス３１の再識別を実行する（ステップＳ０４３）。
【０１７１】
ステップＳ０４４において、機能設定部２７は、ドライバ管理部２６においてロードされる制御ドライバ２６２を決定する。制御ドライバ２６２を決定する処理の詳細は、後述する。
【０１７２】
ステップＳ０４５において、ドライバ管理部２６は、機能設定部２７が決定した制御ドライバ２６２をロードする。ドライバ管理部２６は、制御ドライバ２６２のロードを完了すると、機能設定部２７に、制御ドライバ２６２の設定完了を通知する（ステップＳ０４６）。
【０１７３】
ステップＳ０４７において、機能設定部２７は、機能管理部２５に、ホットプラグの完了、及び制御ドライバ２６２の完了を通知する。機能管理部２５は、ＰＣＩｅデバイス３１の設定完了を、装置管理部２４に通知する（ステップＳ０４８）。さらに、機能管理部２５は、ＰＣＩｅデバイス３１に設定した機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を、装置管理部２４に通知する（ステップＳ０４９）。
【０１７４】
例えば、機能管理部２５は、管理番号０００２に対応するＰＣＩｅデバイス３１の設定を完了したことを示すメッセージを、装置管理部２４に送信する。さらに、機能管理部２５は、Ｐｒｏｇｒａｍ−ＩＤ「２０００」を、装置管理部２４に通知する。
【０１７５】
次に、図１７を参照しながら、管理システム１の動作について、引き続き説明する。
【０１７６】
機能管理部２５が、ＰＣＩｅデバイス３１に設定した機能識別情報（Ｐｒｏｇｒａｍ−ＩＤ）を、装置管理部２４に通知する（ステップＳ０４９）と、装置管理部２４は、定義ファイルを作成する（ステップＳ０６１）。具体的には、装置管理部２４は、仮想マシン管理テーブル２４２を参照し、仮想マシン１０の起動に必要な定義ファイルを作成する。
【０１７７】
装置管理部２４は、定義ファイルの作成を完了すると、仮想化基盤２１を介して、仮想マシン１０を起動する（ステップＳ０６２）。そして、装置管理部２４は、仮想マシン１０を起動すると、初期設定情報、及び定義ファイルを仮想マシン１０に送信する（ステップＳ０６３）。
【０１７８】
仮想マシン１０は、受信した初期設定情報、及び定義ファイルに基づいて、該仮想マシン１０を動作させるために必要な情報を設定する。そして、仮想マシン１０は、ＰＣＩｅデバイス３１を利用するための仮想ドライバ１３１を決定する（ステップＳ０６４）。
【０１７９】
次に、図１８を参照しながら、制御ドライバ２６２を決定する処理について、説明する。
【０１８０】
ステップＳ２０１において、管理部２０のオペレーティングシステム２２が、起動しているか否かを、機能管理部２５は判断する。
【０１８１】
管理部２０のオペレーティングシステム２２が起動している（ステップＳ２０１のＹｅｓ分岐）場合には、機能管理部２５が、ＰＣＩｅデバイス３１の装置識別情報と、機能識別情報とに基づいて、制御ドライバ２６２を有効にする（ステップＳ２０２）。具体的には、機能管理部２５は、管理部２０に接続されているＰＣＩｅデバイス３１から、装置識別情報と、機能識別情報とを読み出す。そして、機能管理部２５は、装置識別情報と、機能識別情報とに基づいて、ロードする制御ドライバ２６２を決定し、有効にする。
【０１８２】
一方、管理部２０のオペレーティングシステム２２が起動していない（ステップＳ２０１のＮｏ分岐）場合には、ドライバ管理部２６が、ＰＣＩｅデバイス３１の装置識別情報と、機能識別情報とに基づいて、制御ドライバ２６２を有効にする（ステップＳ２０３）。具体的には、ドライバ管理部２６は、管理部２０に接続されているＰＣＩｅデバイス３１から、装置識別情報と、機能識別情報とを読み出す。そして、ドライバ管理部２６は、装置識別情報と、機能識別情報とに基づいて、ロードする制御ドライバ２６２を決定し、有効にする。
【０１８３】
仮想ドライバ１３１を決定する処理は、図１８に示す制御ドライバ２６２を決定する処理と同様であるため、詳細な説明は省略する。なお、上記の説明においては、仮想マシン１０を起動後に、仮想ドライバ１３１を決定する処理について説明した。しかし、これは、本実施形態に係る管理システム１の動作を限定する趣旨ではない。例えば、仮想マシン１０が起動する前に、機能設定部２７は、制御ドライバ２６２と、仮想ドライバ１３１とを決定しても良い。そして、装置管理部２４は、初期設定情報と、仮想ドライバ１３１とを仮想マシン１０に通知しても良い。
【０１８４】
以上のように、本実施形態に係る管理システム１においては、内部機能を迅速かつ柔軟に変更可能である、ＰＣＩｅデバイス３１を用いることで、汎用サーバにおいて、仮想マシン１０の機能拡張を容易にすることに貢献する。
【０１８５】
また、本実施形態に係る管理システム１においては、管理部２０が、ＰＣＩｅデバイス３１に機能識別情報を設定する。上記の通り、機能識別情報は、ＰＣＩｅデバイス３１の内部に設定された機能を識別する情報である。さらに、本実施形態に係る管理システム１においては、管理部２０に、ＰＣＩｅデバイス３１を識別する装置識別情報と、機能識別情とを対応付けた、テーブル形式の一つのデータとして記憶する。そのため、本実施形態に係る管理システム１は、ＰＣＩｅデバイス３１の装置識別情報と、機能識別情報との対応関係を容易に管理することに貢献する。
【０１８６】
また、本実施形態に係る管理システム１は、一つの装置識別情報に、複数の機能識別情報を対応付けても良い。その結果、本実施形態に係る管理システム１は、一つのＰＣＩｅデバイス３１に、複数の内部機能が設定されている場合であっても、一つのＰＣＩｅデバイス３１に設定された、該複数の内部機能を容易に管理することに貢献する。
【０１８７】
また、本実施形態に係る管理システム１は、一つの機能識別情報に、複数の装置識別情報を対応付けても良い。その結果、本実施形態に係る管理システム１は、同じ機能を備える、複数のＰＣＩｅデバイス３１において、機能を共通化させた状態で、該複数のＰＣＩｅデバイス３１を容易に管理することに貢献する。
【０１８８】
上述の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【０１８９】
（付記１）上記第１の視点に係る管理装置の通りである。
【０１９０】
（付記２）前記機能管理テーブルは、さらに、前記機能識別情報と、プログラムデータの名称と、該プログラムデータが実行する処理を示す機能情報とを、前記装置識別情報に対応付けて格納され、前記機能管理部は、前記機能管理テーブルを参照して、指定された機能要件を満たす機能情報を特定し、前記機能情報に対応する装置識別情報に基づいて前記拡張装置を特定し、特定した前記拡張装置に、特定した前記機能識別情報と、前記機能要件を満たす機能とを前記拡張装置に設定する、管理装置。
【０１９１】
（付記３）前記機能要件を満たす前記拡張装置に設定された、前記機能識別情報に基づいて、前記仮想マシンに設定される第１のドライバと、該仮想マシンが、該拡張装置の内部機能を利用することを可能にする第２のドライバとを決定する、管理装置。
【０１９２】
（付記４）前記機能管理テーブルは、さらに、前記仮想マシンが、前記装置識別情報に対応する拡張装置を使用しているか否かを示すステータス情報を、該装置識別情報に対応付けて格納され、前記機能管理部は、前記機能情報に対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する、管理装置。
【０１９３】
（付記５）前記機能管理テーブルは、前記機能識別情報と、プログラムデータの名称と、前記機能情報と、該プログラムデータを実行するために必要な性能を示す性能情報とを、さらに、前記装置識別情報に対応付けて格納し、前記機能管理部は、前記機能管理テーブルを参照し、前記仮想マシンの機能要件及び性能要件を満たす機能情報及び性能情報を特定し、特定した前記機能情報及び前記性能情報とに対応する、前記装置識別情報を特定し、前記装置識別情報に基づいて前記拡張装置を特定し、該拡張装置に、前記機能識別情報と、前記機能要件を満たす機能とを、前記内部機能として設定する、管理装置。
【０１９４】
（付記６）前記機能管理部は、前記機能情報及び前記性能情報とに対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する、管理装置。
【０１９５】
（付記７）前記機能設定部は、前記仮想マシンの起動に必要な定義ファイルを作成し、前記機能設定部が作成した前記定義ファイルに基づいて、前記仮想マシンを起動する、装置管理部を備え、前記定義ファイルは、起動対象の仮想マシンが利用する、前記拡張装置に設定した前記機能識別情報を含む、管理装置。
【０１９６】
（付記８）上記第２の視点に係る管理システムの通りである。
【０１９７】
（付記９）前記拡張装置は、ＰＣＩｅインタフェースを介して、前記管理装置と接続する、管理システム。
【０１９８】
（付記１０）前記機能管理部は、前記機能拡張制御部の前記記憶領域のうち、所定の条件を満たす空き領域に、前記機能識別情報を設定する、管理システム。
【０１９９】
（付記１１）上記第３の視点に係る管理装置の制御方法の通りである。
【０２００】
（付記１２）前記機能識別情報と、プログラムデータの名称と、該プログラムデータが実行する処理を示す機能情報とを、前記装置識別情報に対応付けて格納する工程と、指定された機能要件を満たす機能情報を特定する工程と、前記機能情報に対応する装置識別情報に基づいて前記拡張装置を特定する工程と、特定した前記拡張装置に、特定した前記機能識別情報と、前記機能要件を満たす機能とを前記拡張装置に設定する工程とを含む、管理装置の制御方法。
【０２０１】
（付記１３）機能要件を満たす前記拡張装置に設定された、前記機能識別情報に基づいて、前記仮想マシンに設定される第１のドライバと、該仮想マシンが、該拡張装置の内部機能を利用することを可能にする第２のドライバとを決定する、管理装置の制御方法。
【０２０２】
（付記１４）前記仮想マシンが、前記装置識別情報に対応する拡張装置を使用しているか否かを示すステータス情報を、該装置識別情報に対応付けて格納する工程と、前記機能情報に対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する工程と、を含む管理装置の制御方法。
【０２０３】
（付記１５）前記機能識別情報と、プログラムデータの名称と、機能情報と、該プログラムデータを実行するために必要な性能を示す性能情報とを、さらに、前記装置識別情報に対応付けた情報を格納する工程と、前記仮想マシンの機能要件及び性能要件を満たす機能情報及び性能情報を特定する工程と、特定した前記機能情報及び前記性能情報とに対応する、前記装置識別情報を特定する工程と、前記装置識別情報に基づいて前記拡張装置を特定する工程と、該拡張装置に、前記機能識別情報と、前記機能要件を満たす機能とを、前記内部機能として設定する工程を含む、管理装置の制御方法。
【０２０４】
（付記１６）前記機能情報及び前記性能情報とに対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する工程を含む、管理装置の制御方法。
【０２０５】
（付記１７）前記仮想マシンの起動に必要な定義ファイルを作成する工程と、作成された前記定義ファイルに基づいて、前記仮想マシンを起動する工程とを含み、前記定義ファイルは、起動対象の仮想マシンが利用する、前記拡張装置に設定した前記機能識別情報を含む、管理装置の制御方法。
【０２０６】
（付記１８）上記第４の視点に係るプログラムの通りである。
【０２０７】
（付記１９）前記機能識別情報と、プログラムデータの名称と、該プログラムデータが実行する処理を示す機能情報とを、前記装置識別情報に対応付けて格納する処理と、指定された機能要件を満たす機能情報を特定する処理と、前記機能情報に対応する装置識別情報に基づいて前記拡張装置を特定する処理と、特定した前記拡張装置に、特定した前記機能識別情報と、前記機能要件を満たす機能とを前記拡張装置に設定する処理と、を管理装置に実行させるプログラム。
【０２０８】
（付記２０）機能要件を満たす前記拡張装置に設定された、前記機能識別情報に基づいて、前記仮想マシンに設定される第１のドライバと、該仮想マシンが、該拡張装置の内部機能を利用することを可能にする第２のドライバとを決定する処理を、管理装置に実行させるプログラム。
【０２０９】
（付記２１）前記仮想マシンが、前記装置識別情報に対応する拡張装置を使用しているか否かを示すステータス情報を、該装置識別情報に対応付けて格納する処理と、前記機能情報に対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する処理と、を管理装置に実行させるプログラム。
【０２１０】
（付記２２）前記機能識別情報と、プログラムデータの名称と、機能情報と、該プログラムデータを実行するために必要な性能を示す性能情報とを、さらに、前記装置識別情報に対応付けた情報を格納する処理と、前記仮想マシンの機能要件及び性能要件を満たす機能情報及び性能情報を特定する処理と、特定した前記機能情報及び前記性能情報とに対応する、前記装置識別情報を特定する処理と、前記装置識別情報に基づいて前記拡張装置を特定する処理と、該拡張装置に、前記機能識別情報と、前記機能要件を満たす機能とを、前記内部機能として設定する処理と、を管理装置に実行させるプログラム。
【０２１１】
（付記２３）前記機能情報及び前記性能情報とに対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する処理と、を管理装置に実行させるプログラム。
【０２１２】
（付記２４）前記仮想マシンの起動に必要な定義ファイルを作成する処理と、作成された前記定義ファイルに基づいて、前記仮想マシンを起動する処理とを管理装置に実行させ、前記定義ファイルは、起動対象の仮想マシンが利用する、前記拡張装置に設定した前記機能識別情報を含む、プログラム。
【０２１３】
上記の付記８に示す形態は、付記１に示す形態と同様に、付記２乃至７に示す形態に展開することが可能である。
【０２１４】
なお、上記の特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０２１５】
１  管理システム
１０、１０−１〜１０−３、１０２０、１０２０−１〜１０２０−３  仮想マシン
１１、１１−１〜１１−３  アプリケーションソフトウェア
１２、１２−１〜１２−３  管理処理部
１３、１３−１〜１３−３  仮想ドライバ管理部
２０  管理部
２１  仮想化基盤
２２  オペレーティングシステム
２３  デバイス管理ソフトウェア
２４  装置管理部
２５、１００２  機能管理部
２６  ドライバ管理部
２７、１００３  機能設定部
２８  接続制御部
３０、３０−１〜３０−６、１０１０、１０１０−１〜１０１０−３  拡張装置
３１、３１−１〜３１−３  ＰＣＩｅデバイス
４０  ブリッジデバイス
５０  ＰＣＩｅ規格インタフェース
５１  制御インタフェース
６０  ＮＦＶ制御装置
７０  ネットワーク
１３１、１３１−１〜１３１−３  仮想ドライバ
２４１  リソースリスト
２４２  仮想マシン管理テーブル
２４３  装置管理処理部
２５１  機能管理テーブル
２５２  機能管理処理部
２６１  ドライバ管理処理部
２６２、２６２−１〜２６２−３  制御ドライバ
３１１、３１１−１〜３１１−４  機能格納部
３１２  機能拡張インタフェース部
３１３  機能拡張制御部
１０００  管理装置
１００１  データ保持部
【図１】
2018097790.tif 000003
【図２】
2018097790.tif 000004
【図３】
2018097790.tif 000005
【図４】
2018097790.tif 000006
【図５】
2018097790.tif 000007
【図６】
2018097790.tif 000008
【図７】
2018097790.tif 000009
【図８】
2018097790.tif 000010
【図９】
2018097790.tif 000011
【図１０】
2018097790.tif 000012
【図１１】
2018097790.tif 000013
【図１２】
2018097790.tif 000014
【図１３】
2018097790.tif 000015
【図１４】
2018097790.tif 000016
【図１５】
2018097790.tif 000017
【図１６】
2018097790.tif 000018
【図１７】
2018097790.tif 000019
【図１８】
2018097790.tif 000020