(58)【調査した分野】(Int.Cl.,DB名)
前記機能管理テーブルは、さらに、前記仮想マシンが、前記装置識別情報に対応する拡張装置を使用しているか否かを示すステータス情報を、該装置識別情報に対応付けて格納し、
前記機能管理部は、前記機能情報に対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する、請求項3に記載の管理装置。
前記機能管理テーブルは、前記機能識別情報と、プログラムデータの名称と、前記機能情報と、該プログラムデータを実行するために必要な性能を示す性能情報とを、さらに、前記装置識別情報に対応付けて格納し、
前記機能管理部は、前記機能管理テーブルを参照し、前記仮想マシンの機能要件及び性能要件を満たす機能情報及び性能情報を特定し、特定した前記機能情報及び前記性能情報とに対応する、前記装置識別情報を特定し、前記装置識別情報に基づいて前記拡張装置を特定し、該拡張装置に、前記機能識別情報と、前記機能要件を満たす機能とを、前記内部機能として設定する、請求項3又は4に記載の管理装置。
内部機能を変更可能である1又は2以上の拡張装置と、前記拡張装置の前記内部機能を利用する1又は2以上の仮想マシンとに接続する管理装置に実行させるプログラムであって、
前記拡張装置を識別する装置識別情報と、該拡張装置に設定される機能を識別するための機能識別情報とを対応付けた情報を格納する処理と、
前記仮想マシンの立ち上げ指示に応じて、前記仮想マシンが使用する拡張装置を特定する処理と、
前記仮想マシンの機能要件を満たす機能に対応する機能識別情報を該拡張装置に設定する処理と、
前記機能要件を満たす機能を前記内部機能として前記拡張装置に設定する処理と、
前記機能識別情報を格納する処理と、
前記拡張装置に設定された前記機能識別情報に基づいて、該拡張装置の前記内部機能に必要なドライバソフトウェアを決定する処理と、
を管理装置に実行させるプログラム。
【発明を実施するための形態】
【0020】
初めに、
図1を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各ブロック図のブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。
【0021】
上述の通り、仮想化された環境において、機能拡張を容易にすることに貢献する管理装置が望まれる。
【0022】
そこで、一例として、
図1に示す管理装置1000を提供する。管理装置1000は、1又は2以上の拡張装置(1010−1〜1010−3)と、1又は2以上の仮想マシン(1020−1〜1020−3)とに接続する。なお、以下の説明では、拡張装置(1010−1〜1010−3)、仮想マシン(1020−1〜1020−3)は、夫々、区別する必要が無い場合には、拡張装置1010、仮想マシン1020と表記する。また、
図1は、3つの拡張装置(1010−1〜1010−3)、3つの仮想マシン(1020−1〜1020−3)を示すが、これは、拡張装置1010、仮想マシン1020を3つに限定する趣旨ではない。拡張装置1010、仮想マシン1020は、1つ又は2つ、或いは4つ以上であっても良い。
【0023】
拡張装置1010は、内部機能を変更可能な装置である。例えば、拡張装置1010は、内部機能を変更可能なPCIeデバイスを備える装置であっても良い。
【0024】
仮想マシン1020は、拡張装置1010の内部機能を利用して動作するものとする。
【0025】
また、管理装置1000は、データ保持部1001と、機能管理部1002と、機能設定部1003とを備える。
【0026】
データ保持部1001は、機能管理テーブルを保持する。機能管理テーブルには、拡張装置1010を識別する装置識別情報と、該拡張装置1010に設定される機能を識別するための機能識別情報とを対応付けた情報が格納される。
【0027】
機能管理部1002は、仮想マシン1020の立ち上げ指示に応じて、仮想マシン1020に使用する拡張装置1010を特定する。さらに、機能管理部1002は、仮想マシン1020の機能要件を満たす機能に対応する、機能識別情報を該拡張装置1010に設定する。そして、機能管理部1002は、機能要件を満たす機能を、拡張装置1010の内部機能として、該拡張装置1010に設定する。そして、機能管理部1002は、拡張装置1010に設定した機能識別情報を、機能管理テーブルに格納する。
【0028】
機能設定部1003は、拡張装置1010に設定された機能識別情報に基づいて、拡張装置1010の内部機能に必要なドライバソフトウェアを決定する。
【0029】
そして、仮想マシン1020は、機能設定部1003が決定したドライバソフトウェアを利用することで、拡張装置1010の内部機能を利用することが可能になる。
【0030】
また、管理装置1000において、機能要件が変更されたとする。その場合、機能管理部1002は、新たな機能要件を満たす機能に対応する、機能識別情報を特定する。そして、機能管理部1002は、拡張装置1010に、新たな機能識別情報を設定する。さらに、機能管理部1002は、拡張装置1010に、新たな機能要件を満たす機能を設定することで、該拡張装置1010の内部機能を変更する。その結果、管理装置1000の管理者等は、拡張装置1010を抜き差しする等の作業を行うことなく拡張装置1010の内部機能を変更できる。
【0031】
さらに、機能設定部1003は、拡張装置1010に設定された新たな機能識別情報に基づいて、拡張装置1010の新たな内部機能に必要なドライバソフトウェアを決定する。その結果、仮想マシン1020は、新たに決定されたドライバソフトウェアを利用することで、拡張装置1010の新たな内部機能を利用できる。
【0032】
また、機能管理テーブルが、拡張装置1010を識別する装置識別情報と、該拡張装置1010に設定される、機能識別情報とを対応付けて格納することで、管理装置1000は、拡張装置1010に設定される、機能識別情報を容易に管理できる。
【0033】
以上より、管理装置1000は、仮想化された環境において、機能拡張を容易にすることに貢献する。
【0034】
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。なお、以下の説明では、上記の管理装置を管理部と呼ぶ。
【0035】
図2は、本実施形態に係る管理システム1の全体構成の一例を示すブロック図である。管理システム1は、仮想マシン(10−1〜10−3)、管理部20と、拡張装置(30−1〜30−3)とを含んで構成される。なお、以下の説明では、仮想マシン(10−1〜10−3)、拡張装置(30−1〜30−3)は、夫々、区別する必要が無い場合には、仮想マシン10、拡張装置30と表記する。また、
図2は、3つの仮想マシン(10−1〜10−3)、3つの拡張装置(30−1〜30−3)を示すが、これは、仮想マシン10、拡張装置30を3つに限定する趣旨ではない。仮想マシン10、拡張装置30は、1つ又は2つ、或いは4つ以上であっても良い。また、
図2は、本実施形態に係る管理システム1の一例であり、本実施形態に係る管理システム1を
図2に示す構成に限定する趣旨ではない。
【0036】
管理部20は、内部機能を変更可能である、1又は2以上の拡張装置30と、拡張装置30の内部機能を利用する、1又は2以上の仮想マシン10とに接続する。そして、管理部20は、仮想化基盤21と、オペレーティングシステム22と、デバイス管理ソフトウェア23とを含んで構成される。
【0037】
仮想化基盤21は、例えば、1台のサーバ上で、複数の仮想マシン10を動作させるために必要なリソースを提供する。
【0038】
オペレーティングシステム22は、仮想化基盤21が提供する制御方法に従って、仮想マシン10を起動及び制御する。
【0039】
デバイス管理ソフトウェア23は、拡張装置30の内部機能の管理処理を行う。
【0040】
拡張装置30は、管理部20と接続し、仮想マシン10が実行する機能を拡張する。例えば、拡張装置30は、管理部20と接続するアドインカードであっても良い。さらに、拡張装置30は、内部機能を書き換え可能なPCIeデバイスを備える。さらに、拡張装置30は、管理システム1の外部からのデータ入力、及び管理システム1の外部へのデータ出力を行う。
【0041】
図3は、管理部20と、拡張装置30との接続の一例を示すブロック図である。
【0042】
拡張装置30(
図3に示す30−4、30−5)は、PCIe規格インタフェース50を介して、管理部20と接続する。また、拡張装置30(
図3に示す30−6)は、ブリッジデバイス40を介して、管理部20と接続しても良い。
【0043】
図4は、本実施形態に係る管理システム1に関して、さらに詳細な全体構成の一例を示すブロック図である。
図4は、本実施形態に係る管理システム1の一例であり、本実施形態に係る管理システム1を
図4に示す構成に限定する趣旨ではない。また、
図4は、仮想マシン10、管理部20、拡張装置30の一例であり、本実施形態に係る仮想マシン10、管理部20、拡張装置30を
図4に示す構成に限定する趣旨ではない。
【0044】
仮想マシン10−1は、アプリケーションソフトウェア11−1と、管理処理部12−1と、仮想ドライバ管理部13−1とを備える。同様に、仮想マシン10−2、10−3は、アプリケーションソフトウェア11−2、11−3と、管理処置部12−2、12−3と、仮想ドライバ管理部13−2、13−3とを備える。なお、以下の説明では、アプリケーションソフトウェア(11−1〜11−3)、管理処理部(12−1〜12−3)、仮想ドライバ管理部(13−1〜13−3)は、夫々、区別する必要が無い場合には、アプリケーションソフトウェア11、管理処理部12、仮想ドライバ管理部13と表記する。
【0045】
管理部20は、仮想化基盤21と、装置管理部24と、機能管理部25と、ドライバ管理部26と、機能設定部27と、接続制御部28とを含んで構成される。例えば、
図2に示すオペレーティングシステム22が、
図4に示す装置管理部24と、ドライバ管理部26と、機能設定部27と、機能制御部28との機能を実現しても良い。また、例えば、
図2に示すデバイス管理ソフトウェア23が、
図4に示す機能管理部25の機能を実現しても良い。
【0046】
管理部20は、ネットワーク70を介して、NFV制御装置60と接続する。
【0047】
拡張装置30−1は、PCIeデバイス31−1を備える。同様に、拡張装置30−2、30−3は、PCIeデバイス31−2、31−3を備える。
【0048】
(仮想マシン10)
次に、仮想マシン10について詳細に説明する。
【0049】
(アプリケーションソフトウェア11)
アプリケーションソフトウェア11は、仮想マシン10上で動作する機能を実行するソフトウェアである。例えば、アプリケーションソフトウェア11は、ネットワーク機能を実現するソフトウェアプログラムであっても良い。
【0050】
例えば、ネットワーク機能は、仮想マシン10がネットワーク70に接続して情報を送受信するための経路制御機能(ルーティング機能)であっても良い。または、ネットワーク機能は、アクセスを監視するセキュリティ機能であっても良い。あるいは、ネットワーク機能は、輻輳を回避するための通信品質制御機能であっても良い。
【0051】
(管理処理部12)
管理処理部12は、仮想マシン10を動作させるための設定を行う。具体的には、管理処理部12は、管理部20の装置管理部24から、仮想マシン10を動作させるための各種の設定情報を取得する。ここで、各種の設定情報とは、PCIeデバイス31の内部に設定された機能を識別する情報、PCIパススルー情報、仮想マシン10の動作、構成等を定義するプロファイル、仮想マシン10を起動させるブートイメージ等を含む。なお、以下の説明において、PCIeデバイス31の内部に設定された機能を識別する情報を、機能識別情報とも呼ぶ。また、以下の説明において、機能識別情報を、Program−IDとも表記する。
【0052】
そして、管理処理部12は、装置管理部24から取得した設定情報に基づいて、仮想ドライバ管理部13に、仮想マシン10上で動作するドライバソフトウェア(
図5に示す仮想ドライバ(131−1〜131−3))を制御するメッセージを送信する。例えば、管理処理部12は、装置管理部24から取得した設定情報に基づいて、ネットワーク70に対するネットワーク機能を仮想ドライバ(
図5に示す仮想ドライバ(131−1〜131−3))に実行させるメッセージを、仮想ドライバ管理部13に送信しても良い。
【0053】
そして、管理処理部12は、装置管理部24から取得した設定情報に基づいて、アプリケーションソフトウェア11を起動する。例えば、管理処理部12は、ネットワーク機能に必要なアプリケーションソフトウェア11を起動しても良い。
【0054】
(仮想ドライバ管理部13)
図5は、仮想ドライバ管理部13の内部構成の一例を示すブロック図である。仮想ドライバ管理部13は、仮想ドライバ(131−1〜131−3)を含んで構成される。なお、以下の説明において、夫々の仮想ドライバ(131−1〜131−3)を区別する必要が無い場合、仮想ドライバ131と表記する。
図5に示す仮想ドライバ管理部13は、3つの仮想ドライバ(131−1〜131−3)を含んで構成されるが、これは、仮想ドライバ131の数を3つに限定する趣旨ではない。仮想ドライバ管理部13が備える仮想ドライバ131は、1つ又は2つ、或いは4つ以上であっても良い。
【0055】
仮想ドライバ管理部13は、仮想マシン10がPCIeデバイス31を利用するための初期設定及び機能制御を行う。管理部20は、仮想ドライバ管理部13に設定する仮想ドライバ131を決定し、仮想ドライバ管理部13に該仮想ドライバ131を設定する。管理部20が仮想ドライバ131を決定する処理の詳細は後述する。
【0056】
仮想ドライバ管理部13に設定される仮想ドライバ131は、仮想マシン10のアプリケーションソフトウェア11が、PCIeデバイス31の内部に設定された機能を利用するためのプログラムである。例えば、アプリケーションソフトウェア11が、ネットワーク機能を実現する場合、PCIeデバイス31の内部に設定される機能は、データ暗号化機能、品質保証機能、プロトコル処理機能、障害監視機能等であっても良い。
【0057】
また、仮想ドライバ管理部13は、管理部20が備えるドライバソフトウェアを用いて、各PCIeデバイス31に応じた制御を行う。以下の説明では、管理部20が備えるドライバソフトウェアであって、各PCIeデバイス31の内部機能を制御するためのドライバソフトウェアを、制御ドライバと呼ぶ。
【0058】
例えば、管理部20のHDD(Hard Disk Drive)(図示せず)、フラッシュメモリ等の不揮発性メモリ(図示せず)が、制御ドライバを予め格納しておいても良い。または、管理部20は、ネットワーク70を介して、他の機器から、ドライバソフトウェアを入手し、制御ドライバとして、管理部20のHDD(図示せず)等に格納しても良い。
【0059】
(管理部20)
次に、管理部20について詳細に説明する。
【0060】
装置管理部24は、管理部20の全体と、仮想マシン10とを管理する。
【0061】
機能管理部25は、拡張装置30の内部に設定された機能を管理する。具体的には、機能管理部25は、仮想マシン10の立ち上げ指示に応じて、仮想マシンに使用する拡張装置30を特定する。そして、機能管理部25は、機能要件を満たす機能に対応する、機能識別情報を、該拡張装置30に、特定した機能識別情報を設定し、拡張装置30の内部機能として、機能要件を満たす機能を該拡張装置30に設定する。
【0062】
より具体的には、機能管理部25は、仮想マシン10の立ち上げ指示に応じて、仮想マシンに使用する拡張装置30のPCIeデバイス31を特定する。そして、機能管理部25は、特定した該PCIeデバイス31に、特定した機能識別情報を設定し、PCIeデバイス31の内部機能として、機能要件を満たす機能を該PCIeデバイス31に設定する。
【0063】
装置識別情報は、PCIeデバイス31の提供元(製造元等)を識別する情報(以下、Vendor−IDとも表記する)と、PCIeデバイス31の型番等を識別する情報(以下、Device−IDとも表記する)との組み合わせであっても良い。
【0064】
ドライバ管理部26は、PCIeデバイス31の初期設定を行う。さらに、ドライバ管理部26は、PCIeデバイス31が、該PCIeデバイス31に設定された機能を実行中である場合、該機能の実行を制御する。
【0065】
機能設定部27は、拡張装置30に設定された機能識別情報に基づいて、該拡張装置30の内部機能に必要なドライバソフトウェアを決定する。具体的には、機能設定部27は、PCIeデバイス31に設定された機能識別情報に基づいて、該PCIeデバイス31の内部機能に必要なドライバソフトウェアを決定する。
【0066】
さらに、機能設定部27は、仮想マシン10の起動に必要な定義ファイルを作成する。装置管理部24は、機能設定部27が作成した定義ファイルに基づいて、仮想マシン10を起動する。ここで、機能設定部27が作成する定義ファイルは、起動対象の仮想マシン10が参照する、拡張装置30に設定した機能識別情報を含むものとする。
【0067】
接続制御部28は、PCIeデバイス31の物理的な実装状態を管理する。さらに、接続制御部28は、拡張装置30に供給する電源、及び拡張装置30と管理部20との電気的接続を管理する。
【0068】
(装置管理部24)
以下、装置管理部24について詳細に説明する。
【0069】
図6は、装置管理部24の内部構成の一例を示すブロック図である。装置管理部24は、リソースリスト241と、仮想マシン管理テーブル242と、装置管理処理部243とを含んで構成される。
【0070】
リソースリスト241は、仮想マシン10の構成要素の使用状態(リソースの空き)に関する情報を格納する。具体的には、リソースリスト241は、仮想マシン10のCPU(Central Processing Unit)の使用状態、メモリの使用状態、HDDの使用状態等に関する情報を格納する。
【0071】
仮想マシン管理テーブル242は、仮想マシン10の動作、構成に関する情報を格納する。具体的には、仮想マシン管理テーブル242は、仮想マシン10の動作、構成を定義するプロファイル、仮想マシン10のブートイメージ、ステータス(起動、停止を示す情報等)を格納する。
【0072】
以下、装置管理処理部243について詳細に説明する。
【0073】
まず、装置管理処理部243は、必要な機能要件及び性能要件と、該機能要件及び該性能要件に適合する仮想マシン10の起動とを指示するメッセージを受信する。
【0074】
例えば、管理システム1が、仮想マシン10を利用して、ネットワーク機能を実現するとする。その場合、装置管理処理部243は、ネットワーク70を介して、NFV制御装置60から、実現対象のネットワーク機能に必要となる、機能要件及び性能要件を受信しても良い。さらに、装置管理処理部243は、ネットワーク70を介して、NFV制御装置60から、実現対象のネットワーク機能に適合する、仮想マシン10の起動を指示するメッセージを受信しても良い。
【0075】
そして、装置管理処理部243は、受信したメッセージから、機能要件及び性能要件を抽出し、必要となる各種リソースを算出する。具体的には、装置管理処理部243は、リソースリスト241と、リソースの算出結果とに基づいて、起動する仮想マシン10に必要な機能要件及び性能要件を決定する。
【0076】
ここで、仮想マシン10に必要な機能要件とは、受信したメッセージから抽出した機能要件を満たす、プログラムを実行するための要件である。例えば、管理システム1が、仮想マシン10を利用して、ネットワーク機能を実現するとする。その場合、仮想マシン10に必要な機能要件は、データ暗号化機能、回線品質保証機能(QoS;Quality of Service)、プロトコル処理機能等を実現する、プログラムを実行するための要件である。
【0077】
また、仮想マシン10に必要な性能要件とは、指定された機能要件を満たす、仮想マシン10の性能に関する要件である。例えば、仮想マシン10に必要な性能要件とは、CPUコア数、メモリ容量、ディスク容量、処理速度、処理品質等に関する情報であっても良い。また、管理システム1が、課金額に応じてユーザにネットワーク機能を提供する場合には、仮想マシン10に必要な性能要件は、課金限度額に関する情報を含んでも良い。
【0078】
そして、装置管理処理部243は、決定した機能要件及び性能要件を満たすPCIeデバイス31の有無を、機能管理部25に問い合わせる。
【0079】
ここで、決定した機能要件及び性能要件を満たすPCIeデバイス31が見つからなかったとする。その場合、装置管理処理部243は、仮想マシン10の起動を中止する。そして、装置管理処理部243は、仮想マシン10の起動を中止した旨と、中止要因とを通知するメッセージを、NFV制御装置60に送信する。
【0080】
一方、決定した機能要件及び性能要件を満たすPCIeデバイス31が見つかったとする。その場合、装置管理処理部243は、見つかったPCIeデバイス31の起動と、仮想マシン10から該PCIeデバイス31を利用可能にする設定と、を指示するメッセージを、機能管理部25に送信する。
【0081】
機能管理部25は、装置管理処理部243からの指示に基づいて、PCIeデバイス31の設定処理を実行する。さらに、機能管理部25は、PCIeデバイス31の内部に設定された機能を識別する、機能識別情報を、PCIeデバイス31に設定する。
【0082】
そして、機能管理部25は、装置管理処理部243に、PCIeデバイス31の設定完了を通知する。さらに、機能管理部25は、装置管理処理部243に、PCIeデバイス31に設定した機能識別情報を通知する。機能管理部25の詳細については、後述する。
【0083】
装置管理処理部243は、機能管理部25から、PCIeデバイス31の設定完了を通知するメッセージを受信する。さらに、装置管理処理部243は、PCIeデバイス31に設定された機能識別情報を受信する。
【0084】
装置管理処理部243は、仮想マシン管理テーブル242を参照し、仮想マシン10の起動に必要な定義ファイルを作成する。装置管理処理部243が作成する定義ファイルは、仮想マシン10からPCIeデバイス31を利用するための設定を含むものとする。具体的には、装置管理処理部243が作成する定義ファイルは、PCIeデバイス31に設定された機能識別情報、PCIパススルー設定、仮想マシン10の動作及び構成を定義するプロファイル、仮想マシン10のブートイメージ等を含んでも良い。
【0085】
装置管理処理部243は、定義ファイルの作成を完了すると、仮想化基盤21を介して、仮想マシン10を起動する。
【0086】
装置管理処理部243は、仮想マシン10の起動が完了すると、仮想マシン10の管理処理部12に、初期設定情報及び定義ファイルを送信する。ここで、処理設定情報とは、管理部20を含む装置を識別するための識別番号、IP(Internet Protocol)アドレス等を含む情報である。
【0087】
(機能管理部25)
次に、機能管理部25について詳細に説明する。
【0088】
図7は、機能管理部25の内部構成の一例を示すブロック図である。機能管理部25は、機能管理テーブル251と、機能管理処理部252とを含んで構成される。
【0089】
機能管理テーブル251には、拡張装置30を識別する装置識別情報と、該拡張装置30に設定される機能を識別するための機能識別情報とを対応付けた情報が格納される。例えば、機能管理テーブル251は、PCIeデバイス31の装置識別情報と、PCIeデバイス31の機能識別情報とを対応付けた情報を含んで構成されても良い。
【0090】
ここで、機能管理テーブル251は、一つの装置識別情報に、複数の機能識別情報が対応付けて格納されても良い。具体的には、機能管理テーブル251は、一組のVendor−IDとDevice−IDとに、複数の機能識別情報を対応付けて格納されても良い。
【0091】
また、機能管理テーブル251は、さらに、機能識別情報と、プログラムデータの名称と、該プログラムデータが実行する処理を示す、機能情報とを、装置識別情報に対応付けて格納しても良い。
【0092】
また、機能管理テーブル251は、装置識別情報と、機能識別情報と、プログラムデータの名称と、性能情報と、機能情報と、使用状態を示す情報(以下、ステータス情報と呼ぶ)とを対応付けて格納しても良い。
【0093】
性能情報とは、対応するプログラムデータの処理において、必要な性能を示す情報である。例えば、管理部20のHDD(図示せず)等に、必要な性能の詳細を示す値と、性能情報が示す値とを対応付けて格納しておいても良い。例えば、必要な性能の詳細を示す値とは、CPUコア数、メモリ容量、ディスク容量、1秒間に処理可能なデータビット数等であっても良い。そして、機能管理テーブル251には、各PCIeデバイス31のプログラムデータの処理に対応する、性能情報を格納する。
【0094】
また、機能情報とは、対応するプログラムデータが実行する処理を示す情報である。例えば、管理部20のHDD(図示せず)等に、処理の種類と、機能情報が示す値とを対応付けて格納しておいても良い。例えば、機能情報として、データ暗号化機能=1、回線品質保証機能=2、プロトコル処理機能=4等の値を、予め割り当てておいても良い。そして、機能管理テーブル251には、各PCIeデバイス31のプログラムデータの処理に対応する、機能情報を格納する。
【0095】
また、ステータス情報とは、PCIeデバイス31が、仮想マシン10から使用中の状態であるか否かを示す情報である。
【0096】
機能管理処理部252は、機能管理テーブル251を参照して、指定された機能要件を満たす機能情報を特定する。そして、機能管理処理部252は、機能情報に対応する装置識別情報に基づいて拡張装置30を特定する。そして、機能管理処理部252は、特定した機能識別情報と、機能要件を満たす機能とを拡張装置30に設定する。
【0097】
または、機能管理処理部252は、機能管理テーブル251を参照して、指定された機能要件及び性能要件を満たす機能情報及び性能情報を特定しても良い。そして、機能管理処理部252は、特定した機能情報と性能情報とに対応する装置識別情報に基づいて拡張装置30を特定しても良い。そして、機能管理処理部252は、特定した機能識別情報と、機能要件を満たす機能とを拡張装置30に設定しても良い。
【0098】
また、機能管理処理部252は、機能管理テーブル251において、機能識別情報、プログラムデータの名称、性能情報、機能情報を、変更、追加、削除しても良い。さらに、機能管理テーブル251において、ステータス情報が使用中の状態を示す場合には、機能識別情報、プログラムデータの名称、性能情報、機能情報は、設定されていない状態であっても良い。
【0099】
以下、機能管理処理部252について、より詳細に説明する。
【0100】
機能管理処理部252は、装置管理処理部243から、機能要件及び性能要件を満たすPCIeデバイス31の有無に関する問い合わせを受信した場合、受信した問い合わせから、機能要件及び性能要件を抽出する。
【0101】
機能管理処理部252は、機能管理テーブル251を参照し、抽出した機能要件及び性能要件に適合する、機能情報及び性能情報を検索する。そして、機能管理処理部252は、機能管理テーブル251を参照し、抽出した機能要件及び性能要件に適合し、仮想マシン10から利用されていないPCIeデバイス31が登録されているか否かを判断する。
【0102】
機能管理処理部252は、機能管理テーブル251に、該PCIeデバイス31が登録されている場合、機能要件及び性能要件を満たすPCIeデバイス31が存在すると判断する。一方、機能管理処理部252は、機能管理テーブル251に、該PCIeデバイス31が登録されていない場合、機能要件及び性能要件を満たすPCIeデバイス31が存在しないと判断する。
【0103】
機能管理処理部252は、機能要件及び性能要件を満たすPCIeデバイス31の有無を、装置管理部24に通知する。
【0104】
機能管理処理部252は、機能要件及び性能要件を満たすPCIeデバイス31の起動と、仮想マシン10から該PCIeデバイス31を利用可能にする設定と、を指示するメッセージを、装置管理処理部243から受信する。
【0105】
機能管理処理部252は、PCIeデバイス31の設定前に、制御ドライバが動作していないことを確認する。制御ドライバが動作している場合には、機能管理処理部252は、制御ドライバの動作停止を指示するメッセージを、ドライバ管理部26に送信する。これは、不要なアクセスエラー、システムエラーの発生を回避するためである。さらに、アクセスエラー、システムエラーを回避するために、機能管理処理部252は、仮想ドライバ131の停止を指示するメッセージを、ドライバ管理部26に送信しても良い。
【0106】
仮想マシン10がPCIeデバイス31を使用する上で、PCIeデバイス31の機能のダウンロード、更新が必要である場合には、機能管理処理部252は、機能のダウンロード、更新を指示するメッセージを、設定対象のPCIeデバイス31に送信する。
【0107】
そして、機能管理処理部252は、PCIeデバイス31に、予め定義されている機能識別情報「Program−ID」を設定する。
【0108】
例えば、機能管理処理部252が、ランダムに機能識別情報を定義しても良い。または、NFV制御装置60は、仮想マシン10の立ち上げを指示する際に、機能識別情報を定義しても良い。
【0109】
機能管理処理部252は、PCIeデバイス31上で、機能拡張用の空き領域に、機能識別情報を設定する。具体的には、機能管理処理部252は、PCI規定においてReservedとして割り当てられている領域に、機能識別情報を設定する。
【0110】
機能管理処理部252は、PCIeデバイス31に対する機能識別情報の設定を完了した場合、機能管理テーブル251において、PCIeデバイス31に対応するステータス情報を、「使用中」に更新する。
【0111】
管理部20からPCIeデバイス31に対してホットプラグを行う必要がある場合、機能管理処理部252は、機能設定部27に、該PCIeデバイス31のホットプラグ実行を指示する。機能設定部27の詳細は、後述する。
【0112】
例えば、管理部20が、PCIeデバイス31の内部に設定する機能をダウンロード、更新する場合、機能管理処理部252は、機能設定部27に該PCIeデバイス31のホットプラグの実行を指示する。なお、管理部20は、ホットプラグを実行し、オペレーティングシステム22を再起動しても良い。これは、PCIeデバイス31を再識別するための処理である。
【0113】
機能管理処理部252は、機能設定部27からホットプラグ及び制御ドライバの設定完了を通知するメッセージを受信する。機能管理処理部252は、該メッセージを受信した場合、装置管理部24に、PCIeデバイス31の設定完了を通知するメッセージを送信する。さらに、機能管理処理部252は、PCIeデバイス31に設定された機能識別情報を送信する。
【0114】
(ドライバ管理部26)
次に、ドライバ管理部26について詳細に説明する。
【0115】
図8は、ドライバ管理部26の内部構成の一例を示すブロック図である。ドライバ管理部26は、ドライバ管理処理部261と、制御ドライバ(262−1〜262−3)とを含んで構成される。以下の説明において、夫々の制御ドライバ(262−1〜262−3)を区別する必要が無い場合、制御ドライバ262と表記する。なお、
図8に示す3つの制御ドライバ(262−1〜262−3)を含んで構成されるが、これは、ドライバ管理部26が備える制御ドライバ262の数を3つに限定する趣旨ではない。ドライバ管理部26が備える制御ドライバ262は、1つ又は2つ、或いは4つ以上であっても良い。
【0116】
なお、機能設定部27が、ドライバ管理部26に制御ドライバ262を設定する。そのため、
図8に示すドライバ管理部26は、機能設定部27が制御ドライバ262を設定後の状態を示すものとする。
【0117】
機能管理処理部252が、PCIeデバイス31の設定前に、動作中の制御ドライバ262がある場合には、ドライバ管理処理部261は、機能管理部25から、該制御ドライバ262の動作停止を指示するメッセージを受信する。さらに、ドライバ管理処理部261は、機能管理部25から、仮想ドライバ131の動作停止を指示するメッセージを受信しても良い。
【0118】
ドライバ管理処理部261は、制御ドライバ262の動作停止を指示するメッセージを受信した場合、該制御ドライバ262の動作を停止する。また、ドライバ管理処理部261は、機能管理部25から、仮想ドライバ131の動作停止を指示するメッセージを受信した場合、該仮想ドライバ131の動作を停止する。
【0119】
制御ドライバ262は、仮想マシン10とPCIeデバイス31とを仲介して、仮想マシン10がPCIeデバイス31の内部に設定された機能を利用することを実現するプログラムである。
【0120】
(機能設定部27)
次に、機能設定部27について詳細に説明する。
【0121】
具体的には、機能設定部27は、機能要件を満たす拡張装置30に設定された、機能識別情報に基づいて、仮想マシン10に設定される第1のドライバ(仮想ドライバ131)を決定する。さらに、機能設定部27は、機能要件を満たす拡張装置30に設定された、機能識別情報に基づいて、仮想マシン10が、拡張装置30の内部機能を利用することを可能にする第2のドライバ(制御ドライバ262)を決定する。
【0122】
または、機能要件及び性能要件を満たす拡張装置30に設定された、機能識別情報と装置識別情報とに基づいて、仮想ドライバ131と、制御ドライバ262とを決定しても良い。
【0123】
以下、機能設定部27について、より詳細に説明する。
【0124】
機能設定部27は、機能管理部25から、PCIeデバイス31とのホットプラグの実行を指示するメッセージを受信する。機能設定部27は、PCIeデバイス31とのホットプラグの実行を指示するメッセージを受信すると、接続制御部28に、ホットプラグの実行を指示する。
【0125】
管理部20のオペレーティングシステム22が起動している場合、機能設定部27は、PCIeデバイス31とのホットプラグを実行し、該PCIeデバイス31の装置識別情報、及び該PCIeデバイス31に設定された機能識別情報とを、PCIeデバイス31から読み出す。具体的には、管理部20のオペレーティングシステム22が起動している場合、機能設定部27は、PCIeデバイス31から、Vendor−ID、Device−ID、Program−IDを読み出す。
【0126】
一方、管理部20のオペレーティングシステム22が起動していない場合、機能管理部25が、管理部20に接続されているPCIeデバイス31の装置識別情報、及び該PCIeデバイス31に設定された機能識別情報とを、PCIeデバイス31から読み出す。具体的には、機能管理部25が、PCIeデバイス31から、Vendor−ID、Device−ID、Program−IDを読み出す。そして、機能管理部25は、読み出した装置識別情報及び機能識別情報を、機能設定部27に通知する。
【0127】
なお、管理部20のオペレーティングシステム22が起動していない場合とは、例えば、オペレーティングシステム22を起動後に、PCIeデバイス31の機能が変更された場合、障害から復旧して正常動作に移行した場合等が該当する。
【0128】
そして、機能設定部27は、読み出した装置識別情報と機能識別情報とに基づいて、仮想マシン10に設定するドライバ(仮想ドライバ131)、及び使用する制御ドライバ262を決定し、該仮想ドライバ131及び制御ドライバ262を有効にする。具体的には、機能設定部27は、仮想マシン10の仮想ドライバ管理部13に、決定した仮想ドライバ131を設定し、有効にする。さらに、機能設定部27は、ドライバ管理部26に、決定した制御ドライバ262を設定し、有効にする。
【0129】
(接続制御部28)
接続制御部28は、PCIeデバイス31に設定された機能を、管理部20に認識させるホットプラグを指示するメッセージを、機能設定部27から受信する。接続制御部28は、機能設定部27からホットプラグを指示するメッセージを受信すると、ホットプラグを開始する。
【0130】
(PCIeデバイス31)
次に、PCIeデバイス31について、詳細に説明する。
【0131】
図9は、PCIeデバイス31の内部構成の一例を示すブロック図である。PCIeデバイス31は、機能格納部311と、機能拡張インタフェース部312とを含んで構成される。機能拡張インタフェース部312は、機能拡張制御部313を含んで構成される。
【0132】
機能格納部311は、拡張装置30(具体的には、PCIeデバイス31)が実行する機能を格納する。例えば、機能格納部311は、該機能を実現するためのプログラムを格納するメモリであっても良い。または、機能格納部311は、PLD(Programmable Logic Device)を用いて実現されても良い。機能格納部311は、書き換え可能な領域である。例えば、管理部20は、PCIeデバイス31に、設定対象の機能を実現するプログラムをダウンロードし、機能格納部311に、該プログラムを格納しても良い。
【0133】
機能拡張インタフェース部312は、PCIe規格に基づいて、データを処理するための処理を実行する。
【0134】
機能拡張制御部313は、拡張装置30(具体的には、PCIeデバイス31)を動作させるための情報を格納する、記憶領域を含んで構成される。具体的には、機能拡張制御部313は、PCIコンフィグレーション空間(Peripheral Component Interconnect Configuration Space)を含んで構成される。例えば、機能拡張制御部313は、PCIe規格に準じて、PCIeデバイス31を動作させるための情報を格納するレジスタであっても良い。
【0135】
機能拡張インタフェース部312は、機能管理部25から、機能識別情報(Program−ID)を受信すると、受信した機能識別情報を、機能拡張制御部313に設定する。機能拡張インタフェース部312は、機能拡張制御部313に機能識別情報(Program−ID)を設定すると、機能管理部25に、機能識別情報の設定完了を通知する。
【0136】
図10は、PCIeデバイス31が、複数の機能格納部(311−1〜311−4)を備える場合の一例を示すブロック図である。以下の説明では、機能格納部(311−1〜311−4)を、夫々区別する必要が無い場合には、機能格納部311と記載する。なお、
図10においては、4つの機能格納部(311−1〜311−4)を示すが、これは、PCIeデバイス31が備える機能格納部311の数を4つに限定する趣旨ではない。PCIeデバイス31が備える機能格納部311は、1つ又は2つ、あるいは5つ以上であっても良い。
【0137】
機能管理部25は、各機能格納部311に設定された機能に対応する、各機能識別情報(Program−ID)を、機能拡張インタフェース部312に通知する。機能拡張インタフェース部312は、受信した各機能識別情報(Program−ID)を、機能拡張制御部313に設定する。
【0138】
仮想マシン10は、機能拡張制御部313に設定された機能識別情報(Program−ID)を参照することで、PCIeデバイス31の内部に設定された個々の機能を識別できる。その結果、複数の仮想マシン10が、各機能格納部311に設定された、各機能を利用できる。換言すると、複数の仮想マシン10が、一つのPCIeデバイス31の内部に設定された機能を共有できる。なお、仮想マシン10及び管理部20からPCIeデバイス31にアクセスするためのアドレス設定、及びアクセス方法は、PCI規格で定義されるIO(Input Output)仮想化技術である、SR−IOV(Single Root Input Output Virtualization)を利用しても良い。
【0139】
また、例えば、異なる提供元(ベンダ)のPCIeデバイス31に、同じ機能を持たせたい場合には、各PCIeデバイス31に、同じ機能識別情報(Program−ID)を設定することで、異なるベンダのPCIeデバイス31であっても、機能を同一にできる。
【0140】
次に、
図11を参照しながら、機能拡張制御部313に機能識別情報(Program−ID)を設定する処理について、詳細に説明する。
【0141】
図11は、機能拡張制御部313に格納されるデータ構造の一例を示す図である。
図11に示す通り、機能拡張制御部313は、PCI規定に準じた構成を備えるものとする。
【0142】
例えば、機能管理処理部252が、PCI規格に規定されたType0のConfiguration Space Headerを用いて、PCI規格に規定されたデバイス管理プロセスである、コンフィグレーションサイクルを行うとする。その場合、機能管理処理部252は、
図11に示すPCIコンフィグレーション空間内のByte Offset 38hに、ダウンロードした機能に対応するProgram−IDを設定する。
【0143】
例えば、PCIeデバイス31が、IO仮想化技術である、SR−IOV機能に対応するとする。その場合、機能管理処理部252は、PCIコンフィグレーション空間のSR−IOV ExtendeCapabilities領域に、ダウンロードした機能に対応するProgram−IDを設定する。さらに、機能管理処理部252は、PCIコンフィグレーション空間において、PCI規定においてReservedとして割り当てられている領域に、Program−IDを設定する。
【0144】
なお、機能管理処理部252は、PCI規格に規定されたType0のConfiguration Space Header領域、及びSR−IOV Extended Capabilities領域において、Program−IDとして、同一の値を設定しても良いし、或いは異なる値を設定しても良い。
【0145】
次に、管理システム1の動作について説明する。なお、以下の説明では、NFV制御装置60からの指示に基づいて、管理部20が、仮想マシン10を新規に起動する場合を例示するが、これは、本実施形態に係る管理システム1の動作を限定する趣旨ではない。また、以下の説明では、NFV制御装置60からの指示に基づいて、管理部20のオペレーティングシステム22を起動する場合を例示するが、これは、本実施形態に係る管理システム1の動作を限定する趣旨ではない。
【0146】
まず、
図12を参照しながら、管理システム1の動作について説明する。
【0147】
ステップS001において、NFV制御装置60は、ネットワーク70を介して、管理部20の装置管理部24に、仮想マシン10の起動を指示するメッセージを送信する。管理部20は、NFV制御装置60からのメッセージを受信すると、オペレーティングシステム22を起動する。なお、以下の説明において、オペレーティングシステム22が、装置管理部24と、ドライバ管理部26と、機能設定部27と、機能制御部28の機能を実現するものとする。また、以下の説明においては、デバイス管理ソフトウェア23が、機能管理部25の機能を実現するものとする。
【0148】
ステップS002において、装置管理部24は、リソースを見積もり、機能要件及び性能要件を決定する。具体的には、装置管理部24は、受信したメッセージから、仮想マシン10に必要な機能要件及び性能要件を抽出し、必要となる各種リソースを計算する。そして、装置管理部24は、リソースリスト241と、リソースの計算結果とに基づいて、起動要求を受けた仮想マシン10に必要な機能要件と性能要件とを決定する。
【0149】
ステップS003において、装置管理部24は、機能管理部25に、決定した機能要件及び性能要件を満たすPCIeデバイス31の有無を問い合わせる。
【0150】
ステップS004において、機能管理部25は、要件を満たすPCIeデバイス31の有無を判定する。具体的には、機能管理部25は、機能管理テーブル251を参照し、装置管理部24が決定した機能要件及び性能要件を満たす、PCIeデバイス31が、存在するか否かを判断する。
【0151】
ここで、
図13を参照して、PCIeデバイス31の有無を判断する処理について、詳細に説明する。
【0152】
ステップS101において、機能要件を満たすPCIeデバイス31が存在するか否かを、機能管理処理部252は判断する。具体的には、機能管理処理部252は、機能管理テーブル251を参照して、問い合わせを受けた機能要件を満たすPCIeデバイス31が登録されているか否かを判断する。機能要件を満たすPCIeデバイス31が存在する場合(ステップS101のYes分岐)には、ステップS102に遷移する。一方、機能要件を満たすPCIeデバイス31が存在しない場合(ステップS101のNo分岐)には、ステップS105に遷移する。
【0153】
ステップS102において、使用中ではないPCIeデバイス31が存在するか否かを、機能管理処理部252は判断する。具体的には、機能管理処理部252は、機能管理テーブル251を参照して、「使用されていない」ことを示すとともに、機能要件を満たすPCIeデバイス31が登録されているか否かを判断する。「使用されていない」ことを示すとともに、機能要件を満たすPCIeデバイス31が存在する場合(ステップS102のYes分岐)には、ステップS103に遷移する。一方、「使用されていない」ことを示すとともに、機能要件を満たすPCIeデバイス31が存在しない場合(ステップS102のNo分岐)には、ステップS105に遷移する。
【0154】
ステップS103において、性能要件を満たすPCIeデバイス31が存在するか否かを、機能管理処理部252は判断する。具体的には、機能管理処理部252は、機能管理テーブル251を参照して、機能要件を満たし、「使用されていない」ことを示すとともに、性能要件を満たすPCIeデバイス31が登録されているか否かを判断する。機能要件を満たし、「使用されていない」ことを示すとともに、性能要件を満たすPCIeデバイス31が存在する場合(ステップS103のYes分岐)には、機能管理処理部252は、利用可能なPCIeデバイス31が存在すると判断する。一方、機能要件を満たし、「使用されていない」ことを示すとともに、性能要件を満たすPCIeデバイス31が存在しない場合(ステップS103のNo分岐)には、利用可能なPCIeデバイス31が存在しないと判断する。
【0155】
なお、機能管理処理部252は、問い合わせを受けた機能要件及び性能要件に適合するPCIeデバイス31が存在しない場合には、PCIeデバイス31に対して、必要なプログラムのダウンロード処理、更新処理を行っても良い。
【0156】
ここで、
図14に示す機能管理テーブル251を参照しながら、PCIeデバイス31の有無を判断する処理の一例について説明する。具体的には、データ暗号化機能(機能要件)を備え、1秒間に、40ビットのデータを処理可能(性能要件)であるPCIeデバイス31の有無について、機能管理処理部252が問い合わせを受けた場合を例示して説明する。なお、以下の説明では、説明の便宜上、
図14に示す機能管理テーブル251において、機能情報=1は、データ暗号化機能を示すものとする。また、以下の説明では、説明の便宜上、
図14に示す機能管理テーブル251において、性能情報として示す値は、1秒間に処理可能なデータビット数であるものとする。また、以下の説明においては、説明の便宜上、
図14に示す機能管理テーブル251において、ステータス情報=1は、使用中を示すものとする。一方、
図14に示す機能管理テーブル251において、ステータス情報=0は、使用中ではないことを示すものとする。
【0157】
まず、機能管理処理部252は、機能管理テーブル251を参照して、データ暗号化機能(即ち、機能情報=1)のPCIeデバイス31が存在するか否かを判断する。その結果、機能管理処理部252は、機能管理テーブル251において、
図14に示す管理番号0002、0004、0006に対応するPCIeデバイス31が、機能要件を満たすと判断する。
【0158】
次に、機能管理処理部252は、機能管理テーブル251を参照して、管理番号0002、0004、0006に対応するPCIeデバイス31のうち、使用中ではないPCIeデバイス31が存在するか否かを判断する。その結果、機能管理処理部252は、管理番号0002、0006に対応するPCIeデバイス31が、使用中ではないと判断する。
【0159】
次に、機能管理処理部252は、機能管理テーブル251を参照して、管理番号0002、0006に対応するPCIeデバイス31のうち、1秒間に、40ビットのデータを処理可能(即ち、性能情報=40)であるPCIeデバイス31が存在するか否かを判断する。その結果、機能管理処理部252は、管理番号0002に対応するPCIeデバイス31が、1秒間に、40ビットのデータを処理可能であると判断する。そして、機能管理処理部252は、利用可能なPCIeデバイス31が存在すると判断する。
【0160】
再び、
図12を参照しながら、管理システム1の動作について説明する。
【0161】
ステップS005において、機能管理部25は、判定結果を装置管理部24に通知する。PCIeデバイス31が存在することを示す通知を受信した場合(ステップS006のYes分岐)には、装置管理部24は、機能管理部25にPCIeデバイス31の設定を指示する(ステップS007)。一方、PCIeデバイス31が存在しないことを示す通知を受信した場合(ステップS006のNo分岐)には、装置管理部24は、NFV制御装置60に仮想マシン10を起動しないことを通知する(ステップS008)。
【0162】
次に、
図15を参照しながら、管理システム1の動作について、引き続き説明する。なお、以下の説明においては、機能管理処理部252が、
図14に示す機能管理テーブル251を参照する場合を例示して説明する。さらに、以下の説明においては、
図14に示す管理番号0002に対応するPCIeデバイス31が、機能要件及び性能要件を満たし、使用中ではないものとして説明する。
【0163】
装置管理部24は、機能管理部25に、PCIeデバイス31の設定を指示すると、ドライバ管理部26の制御ドライバ262が動作していないことを確認する。ドライバ管理部26の制御ドライバ262が動作している場合には、機能管理部25は、ドライバ管理部26に、制御ドライバ262の動作停止を指示する。ドライバ管理部26は、制御ドライバ262の動作停止の指示を受信すると、制御ドライバ262の動作を停止する(ステップS021)。
【0164】
ドライバ管理部26が制御ドライバ262の動作を停止した場合、機能管理部25は、PCIeデバイス31の内部機能の更新を指示する。例えば、管理番号0002に対応するPCIeデバイス31が、機能要件及び性能要件を満たし、使用中ではない場合、該PCIeデバイス31に、PCIeデバイス31の内部機能の更新を指示する。なお、上記の通り、PCIeデバイス31が、必要な機能を設定済みである場合には、内部機能の更新指示、内部機能の更新処理は不要であることは勿論である。
【0165】
PCIeデバイス31は、内部機能の更新指示を受信すると、PCIeデバイス31の内部機能を更新する(ステップS022)。そして、PCIeデバイス31は、機能管理部25に、機能の更新完了を通知する(ステップS023)。
【0166】
ステップS024において、機能管理部25は、機能識別情報(Program−ID)を、機能要件及び性能要件を満たすPCIeデバイス31に設定する。例えば、管理番号0002に対応するPCIeデバイス31が、機能要件及び性能要件を満たし、使用中ではない場合、該PCIeデバイス31に、Program−IDとして、「2000」を設定する。該PCIeデバイス31は、機能識別情報(Program−ID)を設定した場合、機能管理部25に、機能識別情報(Program−ID)の設定完了を通知する。
【0167】
機能管理部25は、機能識別情報(Program−ID)の設定完了の通知を受信した場合、機能管理テーブル251を更新する(ステップS025)。具体的には、機能管理部25は、機能管理テーブル251において、対応するPCIeデバイス31のステータス情報を、「使用中」に更新する。例えば、管理番号0002に対応するPCIeデバイス31が、機能識別情報(Program−ID)の設定を完了した場合、機能管理テーブル251において、管理番号0002に対応するステータス情報を、使用中を示す「1」に更新する。
【0168】
ステップS026において、機能管理部25は、機能設定部27に、ホットプラグを指示する。さらに、ステップS027において、機能管理部25は、PCIeデバイス31に設定した機能識別情報(Program−ID)を、機能設定部27に通知する。例えば、機能管理部25は、管理番号0002に対応するPCIeデバイス31に設定した、Program−ID「2000」を、機能設定部27に通知する。
【0169】
次に、
図16を参照しながら、管理システム1の動作について、引き続き説明する。
【0170】
機能管理部25が、PCIeデバイス31に設定した機能識別情報(Program−ID)を、機能設定部27に通知すると(ステップS027)、機能設定部27は、接続制御部28に、PCIeデバイス31のホットプラグの開始を指示する(ステップS041)。そして、接続制御部28は、PCIeデバイス31のホットプラグを開始する。機能設定部27は、接続制御部28を介して、ホットプラグを実行することで、PCIeデバイス31の再識別を実行する(ステップS043)。
【0171】
ステップS044において、機能設定部27は、ドライバ管理部26においてロードされる制御ドライバ262を決定する。制御ドライバ262を決定する処理の詳細は、後述する。
【0172】
ステップS045において、ドライバ管理部26は、機能設定部27が決定した制御ドライバ262をロードする。ドライバ管理部26は、制御ドライバ262のロードを完了すると、機能設定部27に、制御ドライバ262の設定完了を通知する(ステップS046)。
【0173】
ステップS047において、機能設定部27は、機能管理部25に、ホットプラグの完了、及び制御ドライバ262の完了を通知する。機能管理部25は、PCIeデバイス31の設定完了を、装置管理部24に通知する(ステップS048)。さらに、機能管理部25は、PCIeデバイス31に設定した機能識別情報(Program−ID)を、装置管理部24に通知する(ステップS049)。
【0174】
例えば、機能管理部25は、管理番号0002に対応するPCIeデバイス31の設定を完了したことを示すメッセージを、装置管理部24に送信する。さらに、機能管理部25は、Program−ID「2000」を、装置管理部24に通知する。
【0175】
次に、
図17を参照しながら、管理システム1の動作について、引き続き説明する。
【0176】
機能管理部25が、PCIeデバイス31に設定した機能識別情報(Program−ID)を、装置管理部24に通知する(ステップS049)と、装置管理部24は、定義ファイルを作成する(ステップS061)。具体的には、装置管理部24は、仮想マシン管理テーブル242を参照し、仮想マシン10の起動に必要な定義ファイルを作成する。
【0177】
装置管理部24は、定義ファイルの作成を完了すると、仮想化基盤21を介して、仮想マシン10を起動する(ステップS062)。そして、装置管理部24は、仮想マシン10を起動すると、初期設定情報、及び定義ファイルを仮想マシン10に送信する(ステップS063)。
【0178】
仮想マシン10は、受信した初期設定情報、及び定義ファイルに基づいて、該仮想マシン10を動作させるために必要な情報を設定する。そして、仮想マシン10は、PCIeデバイス31を利用するための仮想ドライバ131を決定する(ステップS064)。
【0179】
次に、
図18を参照しながら、制御ドライバ262を決定する処理について、説明する。
【0180】
ステップS201において、管理部20のオペレーティングシステム22が、起動しているか否かを、機能管理部25は判断する。
【0181】
管理部20のオペレーティングシステム22が起動している(ステップS201のYes分岐)場合には、機能管理部25が、PCIeデバイス31の装置識別情報と、機能識別情報とに基づいて、制御ドライバ262を有効にする(ステップS202)。具体的には、機能管理部25は、管理部20に接続されているPCIeデバイス31から、装置識別情報と、機能識別情報とを読み出す。そして、機能管理部25は、装置識別情報と、機能識別情報とに基づいて、ロードする制御ドライバ262を決定し、有効にする。
【0182】
一方、管理部20のオペレーティングシステム22が起動していない(ステップS201のNo分岐)場合には、ドライバ管理部26が、PCIeデバイス31の装置識別情報と、機能識別情報とに基づいて、制御ドライバ262を有効にする(ステップS203)。具体的には、ドライバ管理部26は、管理部20に接続されているPCIeデバイス31から、装置識別情報と、機能識別情報とを読み出す。そして、ドライバ管理部26は、装置識別情報と、機能識別情報とに基づいて、ロードする制御ドライバ262を決定し、有効にする。
【0183】
仮想ドライバ131を決定する処理は、
図18に示す制御ドライバ262を決定する処理と同様であるため、詳細な説明は省略する。なお、上記の説明においては、仮想マシン10を起動後に、仮想ドライバ131を決定する処理について説明した。しかし、これは、本実施形態に係る管理システム1の動作を限定する趣旨ではない。例えば、仮想マシン10が起動する前に、機能設定部27は、制御ドライバ262と、仮想ドライバ131とを決定しても良い。そして、装置管理部24は、初期設定情報と、仮想ドライバ131とを仮想マシン10に通知しても良い。
【0184】
以上のように、本実施形態に係る管理システム1においては、内部機能を迅速かつ柔軟に変更可能である、PCIeデバイス31を用いることで、汎用サーバにおいて、仮想マシン10の機能拡張を容易にすることに貢献する。
【0185】
また、本実施形態に係る管理システム1においては、管理部20が、PCIeデバイス31に機能識別情報を設定する。上記の通り、機能識別情報は、PCIeデバイス31の内部に設定された機能を識別する情報である。さらに、本実施形態に係る管理システム1においては、管理部20に、PCIeデバイス31を識別する装置識別情報と、機能識別情とを対応付けた、テーブル形式の一つのデータとして記憶する。そのため、本実施形態に係る管理システム1は、PCIeデバイス31の装置識別情報と、機能識別情報との対応関係を容易に管理することに貢献する。
【0186】
また、本実施形態に係る管理システム1は、一つの装置識別情報に、複数の機能識別情報を対応付けても良い。その結果、本実施形態に係る管理システム1は、一つのPCIeデバイス31に、複数の内部機能が設定されている場合であっても、一つのPCIeデバイス31に設定された、該複数の内部機能を容易に管理することに貢献する。
【0187】
また、本実施形態に係る管理システム1は、一つの機能識別情報に、複数の装置識別情報を対応付けても良い。その結果、本実施形態に係る管理システム1は、同じ機能を備える、複数のPCIeデバイス31において、機能を共通化させた状態で、該複数のPCIeデバイス31を容易に管理することに貢献する。
【0188】
上述の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【0189】
(付記1)上記第1の視点に係る管理装置の通りである。
【0190】
(付記2)前記機能管理テーブルは、さらに、前記機能識別情報と、プログラムデータの名称と、該プログラムデータが実行する処理を示す機能情報とを、前記装置識別情報に対応付けて格納され、前記機能管理部は、前記機能管理テーブルを参照して、指定された機能要件を満たす機能情報を特定し、前記機能情報に対応する装置識別情報に基づいて前記拡張装置を特定し、特定した前記拡張装置に、特定した前記機能識別情報と、前記機能要件を満たす機能とを前記拡張装置に設定する、管理装置。
【0191】
(付記3)前記機能要件を満たす前記拡張装置に設定された、前記機能識別情報に基づいて、前記仮想マシンに設定される第1のドライバと、該仮想マシンが、該拡張装置の内部機能を利用することを可能にする第2のドライバとを決定する、管理装置。
【0192】
(付記4)前記機能管理テーブルは、さらに、前記仮想マシンが、前記装置識別情報に対応する拡張装置を使用しているか否かを示すステータス情報を、該装置識別情報に対応付けて格納され、前記機能管理部は、前記機能情報に対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する、管理装置。
【0193】
(付記5)前記機能管理テーブルは、前記機能識別情報と、プログラムデータの名称と、前記機能情報と、該プログラムデータを実行するために必要な性能を示す性能情報とを、さらに、前記装置識別情報に対応付けて格納し、前記機能管理部は、前記機能管理テーブルを参照し、前記仮想マシンの機能要件及び性能要件を満たす機能情報及び性能情報を特定し、特定した前記機能情報及び前記性能情報とに対応する、前記装置識別情報を特定し、前記装置識別情報に基づいて前記拡張装置を特定し、該拡張装置に、前記機能識別情報と、前記機能要件を満たす機能とを、前記内部機能として設定する、管理装置。
【0194】
(付記6)前記機能管理部は、前記機能情報及び前記性能情報とに対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する、管理装置。
【0195】
(付記7)前記機能設定部は、前記仮想マシンの起動に必要な定義ファイルを作成し、前記機能設定部が作成した前記定義ファイルに基づいて、前記仮想マシンを起動する、装置管理部を備え、前記定義ファイルは、起動対象の仮想マシンが利用する、前記拡張装置に設定した前記機能識別情報を含む、管理装置。
【0196】
(付記8)上記第2の視点に係る管理システムの通りである。
【0197】
(付記9)前記拡張装置は、PCIeインタフェースを介して、前記管理装置と接続する、管理システム。
【0198】
(付記10)前記機能管理部は、前記機能拡張制御部の前記記憶領域のうち、所定の条件を満たす空き領域に、前記機能識別情報を設定する、管理システム。
【0199】
(付記11)上記第3の視点に係る管理装置の制御方法の通りである。
【0200】
(付記12)前記機能識別情報と、プログラムデータの名称と、該プログラムデータが実行する処理を示す機能情報とを、前記装置識別情報に対応付けて格納する工程と、指定された機能要件を満たす機能情報を特定する工程と、前記機能情報に対応する装置識別情報に基づいて前記拡張装置を特定する工程と、特定した前記拡張装置に、特定した前記機能識別情報と、前記機能要件を満たす機能とを前記拡張装置に設定する工程とを含む、管理装置の制御方法。
【0201】
(付記13)機能要件を満たす前記拡張装置に設定された、前記機能識別情報に基づいて、前記仮想マシンに設定される第1のドライバと、該仮想マシンが、該拡張装置の内部機能を利用することを可能にする第2のドライバとを決定する、管理装置の制御方法。
【0202】
(付記14)前記仮想マシンが、前記装置識別情報に対応する拡張装置を使用しているか否かを示すステータス情報を、該装置識別情報に対応付けて格納する工程と、前記機能情報に対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する工程と、を含む管理装置の制御方法。
【0203】
(付記15)前記機能識別情報と、プログラムデータの名称と、機能情報と、該プログラムデータを実行するために必要な性能を示す性能情報とを、さらに、前記装置識別情報に対応付けた情報を格納する工程と、前記仮想マシンの機能要件及び性能要件を満たす機能情報及び性能情報を特定する工程と、特定した前記機能情報及び前記性能情報とに対応する、前記装置識別情報を特定する工程と、前記装置識別情報に基づいて前記拡張装置を特定する工程と、該拡張装置に、前記機能識別情報と、前記機能要件を満たす機能とを、前記内部機能として設定する工程を含む、管理装置の制御方法。
【0204】
(付記16)前記機能情報及び前記性能情報とに対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する工程を含む、管理装置の制御方法。
【0205】
(付記17)前記仮想マシンの起動に必要な定義ファイルを作成する工程と、作成された前記定義ファイルに基づいて、前記仮想マシンを起動する工程とを含み、前記定義ファイルは、起動対象の仮想マシンが利用する、前記拡張装置に設定した前記機能識別情報を含む、管理装置の制御方法。
【0206】
(付記18)上記第4の視点に係るプログラムの通りである。
【0207】
(付記19)前記機能識別情報と、プログラムデータの名称と、該プログラムデータが実行する処理を示す機能情報とを、前記装置識別情報に対応付けて格納する処理と、指定された機能要件を満たす機能情報を特定する処理と、前記機能情報に対応する装置識別情報に基づいて前記拡張装置を特定する処理と、特定した前記拡張装置に、特定した前記機能識別情報と、前記機能要件を満たす機能とを前記拡張装置に設定する処理と、を管理装置に実行させるプログラム。
【0208】
(付記20)機能要件を満たす前記拡張装置に設定された、前記機能識別情報に基づいて、前記仮想マシンに設定される第1のドライバと、該仮想マシンが、該拡張装置の内部機能を利用することを可能にする第2のドライバとを決定する処理を、管理装置に実行させるプログラム。
【0209】
(付記21)前記仮想マシンが、前記装置識別情報に対応する拡張装置を使用しているか否かを示すステータス情報を、該装置識別情報に対応付けて格納する処理と、前記機能情報に対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する処理と、を管理装置に実行させるプログラム。
【0210】
(付記22)前記機能識別情報と、プログラムデータの名称と、機能情報と、該プログラムデータを実行するために必要な性能を示す性能情報とを、さらに、前記装置識別情報に対応付けた情報を格納する処理と、前記仮想マシンの機能要件及び性能要件を満たす機能情報及び性能情報を特定する処理と、特定した前記機能情報及び前記性能情報とに対応する、前記装置識別情報を特定する処理と、前記装置識別情報に基づいて前記拡張装置を特定する処理と、該拡張装置に、前記機能識別情報と、前記機能要件を満たす機能とを、前記内部機能として設定する処理と、を管理装置に実行させるプログラム。
【0211】
(付記23)前記機能情報及び前記性能情報とに対応し、前記ステータス情報が使用中ではない状態を示す拡張装置を特定する処理と、を管理装置に実行させるプログラム。
【0212】
(付記24)前記仮想マシンの起動に必要な定義ファイルを作成する処理と、作成された前記定義ファイルに基づいて、前記仮想マシンを起動する処理とを管理装置に実行させ、前記定義ファイルは、起動対象の仮想マシンが利用する、前記拡張装置に設定した前記機能識別情報を含む、プログラム。
【0213】
上記の付記8に示す形態は、付記1に示す形態と同様に、付記2乃至7に示す形態に展開することが可能である。
【0214】
なお、上記の特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。