(57)【要約】【課題】デバイスの利用効率を向上できるようにすることを目的とする。【解決手段】物理計算機２００Ａの仮想計算機部３００は、デバイス２０１Ａを利用するデバイス利用処理を含むアプリケーションプログラムを実行する第一の仮想計算機として機能する。デバイス割り当て機構部２２０は、仮想計算機部３００によってアプリケーションプログラムに含まれるデバイス利用処理が開始されるときにデバイス２０１Ａを仮想計算機部３００に割り当てることができるか否かを判定する。デバイス割り当て機構部２２０は、デバイス２０１Ａを仮想計算機部３００に割り当てることができないと判定したときに他の物理計算機２００Ｂ・２００Ｃのうちデバイス２０１Ａと同じ種類のデバイスを割り当てることができる物理計算機２００を割り当て可能装置として選択する。仮想計算機モニタ部２１０は割り当て可能装置に仮想計算機部３００をライブマイグレーションする。【選択図】図１
2015099445.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の物理計算機と接続する情報処理装置であって、
第一のデバイスと、
前記第一のデバイスを利用するデバイス利用処理を含むアプリケーションプログラムを実行する第一の仮想計算機として機能する第一の仮想計算機部と、
前記第一の仮想計算機部によって前記アプリケーションプログラムに含まれる前記デバイス利用処理が開始されるときに前記第一のデバイスを前記第一の仮想計算機に割り当てることができるか否かを判定し、前記第一のデバイスを前記第一の仮想計算機に割り当てることができないと判定したときに前記１つ以上の物理計算機のうち前記第一のデバイスと同じ種類のデバイスを割り当てることができる物理計算機を割り当て可能装置として選択するデバイス割り当て機構部と、
前記デバイス割り当て機構部によって選択された前記割り当て可能装置に前記第一の仮想計算機をライブマイグレーションするライブマイグレーション部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記情報処理装置は、前記１つ以上の物理計算機の物理計算機毎に物理計算機が備えるデバイスの種類と、物理計算機が備えるデバイスが割り当て済みであるか否かを表す割り当て状態とを示すデバイス割り当てリストを記憶し、
前記デバイス割り当て機構部は、前記デバイス割り当てリストに基づいて、前記割り当て可能装置を選択する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記ライブマイグレーション部は、前記デバイス割り当て機構部によって前記第一のデバイスを前記第一の仮想計算機に割り当てることができると判定された場合、前記第一の仮想計算機に前記第一のデバイスをパススルー方式で割り当てる
ことを特徴とする請求項１または請求項２記載の情報処理装置。
【請求項４】
前記情報処理装置は、第二の仮想計算機として機能する第二の仮想計算機部を備え、前記第一の仮想計算機と前記第二の仮想計算機とのそれぞれの優先度を示す仮想計算機優先度リストを記憶し、
前記デバイス割り当て機構部は、前記第一の仮想計算機部と前記第二の仮想計算機部とのそれぞれが前記デバイス利用処理を開始した場合、前記仮想計算機優先度リストに基づいて、前記第一の仮想計算機と前記第二の仮想計算機とのうちの優先度が高い方の仮想計算機から先に前記第一のデバイスを割り当てることができるか否かを判定する
ことを特徴とする請求項１から請求項３のいずれかに記載の情報処理装置。
【請求項５】
前記情報処理装置は、デバイス割り当て部と、前記第一の仮想計算機より優先度が低い第二の仮想計算機として機能する第二の仮想計算機部とを備え、
前記デバイス割り当て機構部は、前記第二の仮想計算機に前記第一のデバイスが割り当てられている場合、前記第一の仮想計算機に前記第一のデバイスを割り当てることができると判定し、
前記デバイス割り当て部は、前記第一の仮想計算機に前記第一のデバイスを割り当てることができると判定された場合、前記第二の仮想計算機から前記第一のデバイスを解放し、前記第一の仮想計算機に前記第一のデバイスを割り当てる
ことを特徴とする請求項１から請求項３のいずれかに記載の情報処理装置。
【請求項６】
第一のデバイスを備えて１つ以上の物理計算機と接続する情報処理装置を用いるデバイス利用方法であって、
第一の仮想計算機部が、前記第一のデバイスを利用するデバイス利用処理を含むアプリケーションプログラムを実行する第一の仮想計算機として機能し、
デバイス割り当て機構部が、前記第一の仮想計算機部によって前記アプリケーションプログラムに含まれる前記デバイス利用処理が開始されるときに前記第一のデバイスを前記第一の仮想計算機に割り当てることができるか否かを判定し、前記第一のデバイスを前記第一の仮想計算機に割り当てることができないと判定したときに前記１つ以上の物理計算機のうち前記第一のデバイスと同じ種類のデバイスを割り当てることができる物理計算機を割り当て可能装置として選択し、
ライブマイグレーション部が、前記デバイス割り当て機構部によって選択された前記割り当て可能装置に前記第一の仮想計算機をライブマイグレーションする
ことを特徴とするデバイス利用方法。
【請求項７】
第一のデバイスを利用するデバイス利用処理を含むアプリケーションプログラムを実行する第一の仮想計算機として機能する第一の仮想計算機処理と、
前記第一の仮想計算機処理によって前記アプリケーションプログラムに含まれる前記デバイス利用処理が開始されるときに前記第一のデバイスを前記第一の仮想計算機に割り当てることができるか否かを判定し、前記第一のデバイスを前記第一の仮想計算機に割り当てることができないと判定したときに前記第一のデバイスと同じ種類のデバイスを割り当てることができる物理計算機を割り当て可能装置として選択するデバイス割り当て機構処理と、
前記デバイス割り当て機構処理によって選択された前記割り当て可能装置に前記第一の仮想計算機をライブマイグレーションするライブマイグレーション処理と
をコンピュータに実行させるためのデバイス利用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスの利用方法に関するものである。
【背景技術】
【０００２】
従来の仮想環境において、アプリケーションプログラムを実行する複数の物理計算機は、入出力デバイスを備え、アプリケーションプログラムが実行される際にアプリケーションプログラムが利用する入出力デバイスを確保できるか否かを判定する。そして、入出力デバイスを確保できる物理計算機は、仮想計算機を起動し、起動した仮想計算機に入出力デバイスを割り当て、起動した仮想計算機によってアプリケーションプログラムを実行する（例えば、特許文献１）。
この仮想環境では、仮想計算機が停止するまで仮想計算機に割り当てた入出力デバイスを他の仮想計算機に割り当てることができないため、仮想計算機が停止するまで同じ入出力デバイスを利用する他のアプリケーションプログラムを実行することができない。
【０００３】
また、別の仮想環境では、複数の物理計算機と入出力デバイスを備えるデバイスコントローラとがネットワークに接続し、デバイスコントローラが入出力デバイスを要求する物理計算機に入出力デバイスをマッピングする（例えば、特許文献２）。
この仮想環境では、デバイスコントローラとして機能する特殊なハードウェアデバイスが必要であり、また、入出力デバイスの増設が困難である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２５９１０８号公報
【特許文献２】特開２０１０−２３７７３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、デバイスの利用効率を向上できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の情報処理装置は１つ以上の物理計算機と接続する。
前記情報処理装置は、
第一のデバイスと、
前記第一のデバイスを利用するデバイス利用処理を含むアプリケーションプログラムを実行する第一の仮想計算機として機能する第一の仮想計算機部と、
前記第一の仮想計算機部によって前記アプリケーションプログラムに含まれる前記デバイス利用処理が開始されるときに前記第一のデバイスを前記第一の仮想計算機に割り当てることができるか否かを判定し、前記第一のデバイスを前記第一の仮想計算機に割り当てることができないと判定したときに前記１つ以上の物理計算機のうち前記第一のデバイスと同じ種類のデバイスを割り当てることができる物理計算機を割り当て可能装置として選択するデバイス割り当て機構部と、
前記デバイス割り当て機構部によって選択された前記割り当て可能装置に前記第一の仮想計算機をライブマイグレーションするライブマイグレーション部とを備える。
【発明の効果】
【０００７】
本発明によれば、割り当て可能装置に第一の仮想計算機をライブマイグレーションすることによって第一の仮想計算機に割り当て可能装置のデバイスを割り当てることができるため、デバイスの利用効率を向上することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１における計算機システム１００の構成図である。
【図２】実施の形態１における仮想計算機部３００および仮想計算機モニタ部２１０の機能構成を示す図である。
【図３】実施の形態１における計算機システム１００のデバイス利用方法を示すフローチャートである。
【図４】実施の形態１におけるデバイス割り当て処理（Ｓ２００）のフローチャートである。
【図５】実施の形態１におけるデバイス割り当てリスト２９１の一例を示す図である。
【図６】実施の形態１におけるデバイス解放処理（Ｓ１５０）のフローチャートである。
【図７】実施の形態１における物理計算機２００のハードウェア構成の一例を示す図である。
【図８】実施の形態２における物理計算機２００の機能構成図である。
【図９】実施の形態３における物理計算機２００の機能構成図である。
【図１０】実施の形態３における仮想計算機優先度リスト２９２の一例を示す図である。
【図１１】実施の形態３におけるデバイス割り当て処理（Ｓ２００）のフローチャートである。
【図１２】実施の形態４におけるデバイス割り当て処理（Ｓ２００）のフローチャートである。
【図１３】実施の形態４における割り当て変更処理（Ｓ３００）のフローチャートである。
【図１４】実施の形態４における仮想計算機の状態遷移の一例を示す図である。
【図１５】実施の形態４におけるデバイス割り当てリスト２９１の状態遷移の一例を示す図である。
【発明を実施するための形態】
【０００９】
実施の形態１．
デバイスの利用効率を向上させる形態について説明する。
【００１０】
図１は、実施の形態１における計算機システム１００の構成図である。
実施の形態１における計算機システム１００の構成について、図１に基づいて説明する。
【００１１】
計算機システム１００は、ネットワーク１０９に接続する複数の物理計算機２００（２００Ａ、２００Ｂ、２００Ｃ）を備える。
【００１２】
物理計算機２００Ａ（情報処理装置の一例）は、仮想計算機モニタ部２１０と、デバイス割り当て機構部２２０と、リスト更新部２３０と、デバイス割り当てリスト２９１とを備える。
また、物理計算機２００Ａは、１つ以上の仮想計算機部３００と、１つ以上の入出力デバイス（以下、デバイス２０１という）とを備える。但し、物理計算機２００Ａはデバイス２０１を内蔵しなくても構わない。つまり、デバイス２０１は物理計算機２００Ａに外付けされても構わない。
他の物理計算機２００（２００Ｂ、２００Ｃ）の構成は、物理計算機２００Ａと同様である。
【００１３】
仮想計算機部３００は、仮想計算機（ＶＭ）として機能し、デバイス２０１（例えば、デバイス２０１Ａ）を利用するデバイス利用処理を含むアプリケーションプログラムを実行する。以下、デバイス利用処理を開始または終了する仮想計算機部３００をデバイス利用計算機という。
デバイス利用計算機は、デバイス利用処理を開始するときに、利用するデバイス２０１（以下、利用デバイスという）の割り当てをデバイス割り当て機構部２２０に要求する。
【００１４】
デバイス割り当て機構部２２０は、デバイス利用計算機が利用デバイスの割り当てを要求したときに、デバイス利用計算機に利用デバイスを割り当てることができるか否かをデバイス割り当てリスト２９１に基づいて判定する。
デバイス利用計算機に利用デバイスを割り当てることができると判定した場合、デバイス割り当て機構部２２０は、利用デバイスの割り当てを仮想計算機モニタ部２１０に要求する。
デバイス利用計算機に利用デバイスを割り当てることができないと判定した場合、デバイス割り当て機構部２２０は、利用デバイスと同じ種類のデバイス２０１（以下、同種デバイスという）を割り当てることができる他の物理計算機２００（以下、割り当て可能装置という）が有るか否かをデバイス割り当てリスト２９１に基づいて判定する。
割り当て可能装置が有ると判定した場合、デバイス割り当て機構部２２０は、割り当て可能装置へのデバイス利用計算機のライブマイグレーション（移動）を仮想計算機モニタ部２１０に要求する。
割り当て可能装置が無いと判定した場合、デバイス割り当て機構部２２０は、デバイス利用計算機を一時停止する。
【００１５】
デバイス割り当てリスト２９１は、物理計算機毎に、物理計算機と、物理計算機が備えるデバイスと、デバイスの割り当て状態と、デバイスが割り当てられた仮想計算機部とを示す。
デバイス割り当てリスト２９１は、物理計算機２００Ａが備える記憶部（図示省略）に記憶される。
【００１６】
仮想計算機モニタ部２１０は、仮想計算機モニタ（ＶＭＭ）として機能し、仮想計算機部３００を制御する。例えば、仮想計算機モニタ部２１０は以下のように動作する。
仮想計算機モニタ部２１０は、利用デバイスの割り当てが要求された場合、デバイス利用計算機に利用デバイスを割り当てる。
仮想計算機モニタ部２１０は、割り当て可能装置へのデバイス利用計算機のライブマイグレーションが要求された場合、デバイス利用計算機を割り当て可能装置にライブマイグレーションする。その後、割り当て可能装置の仮想計算機モニタ部２１０は、デバイス利用計算機を再開し、利用デバイスと同じ種類のデバイスである同種デバイスをデバイス利用計算機に割り当てる。
【００１７】
リスト更新部２３０は、各物理計算機２００の仮想計算機モニタ部２１０と通信し、デバイス割り当てリスト２９１を更新する。
【００１８】
図２は、実施の形態１における仮想計算機部３００および仮想計算機モニタ部２１０の機能構成を示す図である。
実施の形態１における仮想計算機部３００および仮想計算機モニタ部２１０の機能構成について、図２に基づいて説明する。
【００１９】
仮想計算機部３００は、アプリケーション部３１０と、デバイス利用フック部３２０と、ゲストＯＳ部３３０とを備える。
【００２０】
アプリケーション部３１０は、デバイス２０１を利用するデバイス利用処理を含むアプリケーションプログラムを実行する。アプリケーション部３１０はアプリケーションプログラム毎に存在する。
【００２１】
デバイス利用フック部３２０は以下のようにデバイス利用処理をフックする。
デバイス利用フック部３２０は、デバイス利用処理の開始を検出し、デバイス利用処理が実行される前に利用デバイスの割り当てをゲストＯＳ部３３０を介してデバイス割り当て機構部２２０に要求する。
【００２２】
ゲストＯＳ部３３０は仮想計算機用のＯＳ（ゲストＯＳ）を実行する。
ゲストＯＳ部３３０は、割り当て機構ドライバ部３３１とデバイスドライバ部３３２とを備える。
割り当て機構ドライバ部３３１は、デバイス利用フック部３２０の要求に従って、利用デバイスの割り当てをデバイス割り当て機構部２２０に要求する。
デバイスドライバ部３３２は、デバイス利用処理で発生した利用デバイスの制御を仮想計算機モニタ部２１０に要求する。デバイスドライバ部３３２はデバイス２０１毎に存在する。
【００２３】
仮想計算機モニタ部２１０は、デバイス割り当て部２１１と、ライブマイグレーション部２１２と、デバイス模擬部２１３とを備える。
デバイス割り当て部２１１は、利用デバイスの割り当てが要求された場合、利用デバイスをデバイス利用計算機に割り当てる。
ライブマイグレーション部２１２は、割り当て可能装置へのデバイス利用計算機のライブマイグレーションが要求された場合、デバイス利用計算機を割り当て可能装置にライブマイグレーションする。
デバイス模擬部２１３は、デバイスドライバ部３３２の要求に従って利用デバイスを制御する。
【００２４】
図３は、実施の形態１における計算機システム１００のデバイス利用方法を示すフローチャートである。
実施の形態１における計算機システム１００のデバイス利用方法について、図３に基づいて説明する。
【００２５】
図３に示すフローチャートは、各物理計算機２００の仮想計算機部３００においてアプリケーションプログラムに含まれるデバイス利用処理が開始または終了する度に実行される。
【００２６】
Ｓ１１０において、デバイス利用処理を開始または終了するデバイス利用計算機（仮想計算機）のデバイス利用フック部３２０は、デバイス利用処理の開始またはデバイス利用処理の終了を検出する。つまり、デバイス利用計算機のデバイス利用フック部３２０はデバイス利用処理をフックする。
Ｓ１１０の後、処理はＳ１２０に進む。
【００２７】
Ｓ１２０において、デバイス利用計算機のデバイス利用フック部３２０は、検出した内容を判定する。
デバイス利用処理の開始を検出した場合、処理はＳ１３０に進む。
デバイス利用処理の終了を検出した場合、処理はＳ１４０に進む。
【００２８】
Ｓ１３０において、デバイス利用計算機のデバイス利用フック部３２０は、デバイス利用処理で利用される利用デバイスを特定し、特定した利用デバイスがデバイス利用計算機に割り当て済みであるか否かを判定する。
【００２９】
例えば、デバイス利用フック部３２０は、利用デバイスがデバイス利用計算機に割り当て済みであるか否かを以下のように判定する。
デバイス利用フック部３２０は、利用デバイス用のデバイスドライバがデバイス利用計算機用の記憶領域にロードされていれば、利用デバイスがデバイス利用計算機に割り当て済みであると判定する。
デバイス利用フック部３２０は、デバイス割り当てリスト２９１に基づいて、利用デバイスがデバイス利用計算機に割り当て済みであるか否かを判定する。
デバイス利用フック部３２０は、利用デバイスがデバイス利用計算機に割り当て済みであるか否かを仮想計算機モニタ部２１０に問い合わせる。
【００３０】
利用デバイスがデバイス利用計算機に割り当て済みであると判定された場合（ＹＥＳ）、デバイス利用方法の処理は終了する。
利用デバイスがデバイス利用計算機に割り当て済みでないと判定された場合（ＮＯ）、処理はＳ２００に進む。
【００３１】
Ｓ２００において、デバイス利用計算機を備える物理計算機２００はデバイス利用計算機に利用デバイスを割り当てる。
そして、デバイス利用計算機は、デバイスドライバ部３３２を介して利用デバイスを利用しながらアプリケーションプログラムを実行する。
デバイス割り当て処理（Ｓ２００）の詳細については後述する。
Ｓ２００の後、デバイス利用方法の処理は終了する。
【００３２】
Ｓ１４０において、デバイス利用計算機のデバイス利用フック部３２０は、利用デバイスがデバイス利用計算機に割り当て済みであるか否かを判定する（Ｓ１３０と同様）。
利用デバイスがデバイス利用計算機に割り当て済みであると判定された場合（ＹＥＳ）、処理はＳ１５０に進む。
利用デバイスがデバイス利用計算機に割り当て済みでないと判定された場合（ＮＯ）、デバイス利用方法の処理は終了する。
【００３３】
Ｓ１５０において、デバイス利用計算機を備える物理計算機２００はデバイス利用計算機から利用デバイスの割り当てを解除する。つまり、物理計算機２００はデバイス利用計算機から利用デバイスを解放する。
デバイス解放処理（Ｓ１５０）の詳細については後述する。
Ｓ１５０の後、デバイス利用方法の処理は終了する。
【００３４】
図４は、実施の形態１におけるデバイス割り当て処理（Ｓ２００）のフローチャートである。
実施の形態１におけるデバイス割り当て処理（Ｓ２００）について、図４に基づいて説明する。
【００３５】
Ｓ２１０において、デバイス利用計算機のデバイス利用フック部３２０は、割り当て機構ドライバ部３３１を介して利用デバイスの割り当てをデバイス割り当て機構部２２０に要求する。
つまり、デバイス利用計算機において、デバイス利用フック部３２０は利用デバイスの割り当てを割り当て機構ドライバ部３３１に要求し、割り当て機構ドライバ部３３１は利用デバイスの割り当てをデバイス割り当て機構部２２０に要求する。
Ｓ２１０の後、処理はＳ２２０に進む。
【００３６】
Ｓ２２０において、デバイス割り当て機構部２２０は、利用デバイスをデバイス利用計算機に割り当てることができるか否かをデバイス割り当てリスト２９１（図５参照）に基づいて判定する。
利用デバイスをデバイス利用計算機に割り当てることができると判定した場合（ＹＥＳ）、処理はＳ２３０に進む。
利用デバイスをデバイス利用計算機に割り当てることができないと判定した場合（ＮＯ）、処理はＳ２４０に進む。
【００３７】
図５は、実施の形態１におけるデバイス割り当てリスト２９１の一例を示す図である。
実施の形態１におけるデバイス割り当てリスト２９１に基づいて、図５に基づいて説明する。
【００３８】
デバイス割り当てリスト２９１は、物理計算機２００毎に、物理計算機２００を識別する識別子と、物理計算機２００が備えるデバイス２０１の種類を識別する識別子と、デバイス２０１の割り当て状態と、デバイス２０１が割り当てられている仮想計算機部３００を識別する識別子とを示す。
例えば、デバイス割り当てリスト２９１は、物理計算機ＰＭＡのデバイスＤＡが仮想計算機ＶＭＡに割り当てられていることを示し、物理計算機ＰＭＡのデバイスＤＢがいずれの仮想計算機部３００にも割り当てられていないことを示している。
例えば、デバイス利用計算機が物理計算機ＰＭＡに備わる仮想計算機ＶＭＢであり、利用デバイスが物理計算機ＰＭＡのデバイスＤＢである場合、デバイス割り当て機構部２２０は、物理計算機ＰＭＡのデバイスＤＢが未割り当てであるため、利用デバイスをデバイス利用計算機に割り当てることが可能であると判定する。
例えば、デバイス利用計算機が物理計算機ＰＭＡに備わる仮想計算機ＶＭＢであり、利用デバイスが物理計算機ＰＭＡのデバイスＤＡである場合、デバイス割り当て機構部２２０は、物理計算機ＰＭＡのデバイスＤＡが他の仮想計算機ＶＭＡに割り当て済みであるため、利用デバイスをデバイス利用計算機に割り当てることが可能でないと判定する。
図４に戻り、Ｓ２３０から説明を続ける。
【００３９】
Ｓ２３０において、デバイス割り当て機構部２２０は利用デバイスの割り当てを仮想計算機モニタ部２１０に要求し、仮想計算機モニタ部２１０のデバイス割り当て部２１１は利用デバイスをデバイス利用計算機に割り当てる。デバイスの割り当て方法の一例としてホットプラグが挙げられる。
また、仮想計算機モニタ部２１０のデバイス割り当て部２１１は利用デバイスの割り当てを各物理計算機２００のリスト更新部２３０に通知し、各物理計算機２００のリスト更新部２３０は通知内容に従ってデバイス割り当てリスト２９１（図５参照）を更新する。つまり、リスト更新部２３０は利用デバイスの割り当て状態を割り当て済みにし、利用デバイスが割り当てられた仮想計算機の欄にデバイス利用計算機の識別名を設定する。
Ｓ２３０の後、デバイス割り当て処理（Ｓ２００）は終了する。
【００４０】
Ｓ２４０において、デバイス割り当て機構部２２０はデバイス利用計算機の一時停止を仮想計算機モニタ部２１０に要求し、仮想計算機モニタ部２１０はデバイス利用計算機を一時停止する。
但し、デバイス利用計算機が一時停止の状態である場合、仮想計算機モニタ部２１０はデバイス利用計算機を一時停止する必要はない。
Ｓ２４０の後、処理はＳ２５０に進む。
【００４１】
Ｓ２５０において、デバイス割り当て機構部２２０は、利用デバイスを同じ種類のデバイス２０１である同種デバイスを割り当てることができる割り当て可能装置（物理計算機）が有るか否かをデバイス割り当てリスト２９１（図５参照）に基づいて判定する。
図５において、利用デバイスの種類がデバイスＤＢである場合、デバイス割り当て機構部２２０は、物理計算機ＰＭＢのデバイスＤＢが未割り当てであるため、割り当て可能装置（物理計算機ＰＭＢ）があると判定する。
割り当て可能装置が有ると判定した場合（ＹＥＳ）、処理はＳ２６０に進む。
割り当て可能装置が無いと判定した場合（ＮＯ）、処理はＳ２２０に戻る。
【００４２】
Ｓ２６０において、デバイス割り当て機構部２２０は割り当て可能装置へのデバイス利用計算機のライブマイグレーションを仮想計算機モニタ部２１０に要求し、仮想計算機モニタ部２１０のライブマイグレーション部２１２はデバイス利用計算機を割り当て可能装置にライブマイグレーションする。
このとき、ライブマイグレーション部２１２は、デバイス利用計算機のメモリイメージをメモリから取得し、取得したデバイス利用計算機のメモリイメージをネットワーク１０９を介して割り当て可能装置に送信（移動）する。そして、割り当て可能装置の仮想計算機モニタ部２１０はデバイス利用計算機のメモリイメージを受信し、デバイス利用計算機のメモリイメージをメモリに記憶し、デバイス利用計算機のメモリイメージを用いてデバイス利用計算機の一時停止を解除する。つまり、割り当て可能装置の仮想計算機モニタ部２１０はデバイス利用計算機の動作を再開させる。デバイス利用計算機のメモリイメージは、メモリの記憶領域のうちのデバイス利用計算機用に確保された記憶領域に記憶されているデータである。また、割り当て可能装置の仮想計算機モニタ部２１０は、デバイス利用計算機を実行するための仮想計算機部３００を生成する。
Ｓ２６０の後、処理はＳ２７０に進む。
【００４３】
Ｓ２７０において、割り当て可能装置の仮想計算機モニタ部２１０のデバイス割り当て部２１１は、ライブマイグレーションされたデバイス利用計算機に利用デバイスと同じ種類のデバイス２０１である同種デバイスを割り当てる。
また、割り当て可能装置の仮想計算機モニタ部２１０のデバイス割り当て部２１１は、利用デバイスの割り当てを割り当て可能装置のリスト更新部２３０および他の物理計算機２００のリスト更新部２３０に通知する。そして、各物理計算機２００のリスト更新部２３０は通知内容に従ってデバイス割り当てリスト２９１（図５参照）を更新する。つまり、リスト更新部２３０は利用デバイスの割り当て状態を割り当て済みにし、利用デバイスが割り当てられた仮想計算機の欄にデバイス利用計算機の識別名を設定する。
Ｓ２７０の後、デバイス割り当て処理（Ｓ２００）は終了する。
【００４４】
図６は、実施の形態１におけるデバイス解放処理（Ｓ１５０）のフローチャートである。
実施の形態１におけるデバイス解放処理（Ｓ１５０）について、図６に基づいて説明する。
【００４５】
Ｓ１５１において、デバイス利用計算機のデバイス利用フック部３２０は、利用デバイスの解放を割り当て機構ドライバ部３３１を介してデバイス割り当て機構部２２０に要求する。
つまり、デバイス利用フック部３２０は利用デバイスの解放を割り当て機構ドライバ部３３１に要求し、割り当て機構ドライバ部３３１は利用デバイスの解放をデバイス割り当て機構部２２０に要求する。
Ｓ１５１の後、処理はＳ１５２に進む。
【００４６】
Ｓ１５２において、デバイス割り当て機構部２２０は利用デバイスの解放を仮想計算機モニタ部２１０に要求する。
Ｓ１５２の後、処理はＳ１５３に進む。
【００４７】
Ｓ１５３において、仮想計算機モニタ部２１０のデバイス割り当て部２１１は、デバイス利用計算機から利用デバイスの割り当てを解除する。つまり、仮想計算機モニタ部２１０のデバイス割り当て部２１１はデバイス利用計算機から利用デバイスを解放する。デバイスの解放方法の一例としてアンプラグが挙げられる。
また、仮想計算機モニタ部２１０のデバイス割り当て部２１１は利用デバイスの解放を各物理計算機２００のリスト更新部２３０に通知し、各物理計算機２００のリスト更新部２３０は通知内容に従ってデバイス割り当てリスト２９１（図５参照）を更新する。つまり、リスト更新部２３０は、利用デバイスの割り当て状態を未割り当てにし、利用デバイスが割り当てられた仮想計算機の欄からデバイス利用計算機の識別名を削除する。
Ｓ１５３の後、デバイス解放処理（Ｓ１５０）は終了する。
【００４８】
図７は、実施の形態１における物理計算機２００のハードウェア構成の一例を示す図である。
実施の形態１における物理計算機２００のハードウェア構成の一例について、図７に基づいて説明する。但し、物理計算機２００のハードウェア構成は図７に示す構成と異なる構成であってもよい。
【００４９】
物理計算機２００は、演算装置９０１、補助記憶装置９０２、主記憶装置９０３、通信装置９０４および入出力装置９０５を備えるコンピュータである。
演算装置９０１、補助記憶装置９０２、主記憶装置９０３、通信装置９０４および入出力装置９０５はバス９０９に接続している。
【００５０】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリまたはハードディスク装置である。
主記憶装置９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、有線または無線でインターネット、ＬＡＮ（ローカルエリアネットワーク）、電話回線網またはその他のネットワークを介して通信を行う。
入出力装置９０５は、例えば、マウス、キーボード、ディスプレイ装置である。
【００５１】
プログラムは、通常は補助記憶装置９０２に記憶されており、主記憶装置９０３にロードされ、演算装置９０１に読み込まれ、演算装置９０１によって実行される。
例えば、オペレーティングシステム（ＯＳ）が補助記憶装置９０２に記憶される。また、「〜部」として説明している機能を実現するプログラムが補助記憶装置９０２に記憶される。そして、ＯＳおよび「〜部」として説明している機能を実現するプログラムは主記憶装置９０３にロードされ、演算装置９０１によって実行される。「〜部」は「〜処理」「〜工程」「〜プロセス」「〜タスク」と読み替えることができる。
【００５２】
「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等の処理の結果を示す情報、データ、ファイル、信号値または変数値が主記憶装置９０３または補助記憶装置９０２に記憶される。また、物理計算機２００が使用するその他のデータが主記憶装置９０３または補助記憶装置９０２に記憶される。
【００５３】
実施の形態１により、仮想計算機がデバイスを利用するときに自物理計算機に空いているデバイスが無い場合、仮想計算機を他の物理計算機にライブマイグレーションし、デバイスの利用効率を向上させることができる。
【００５４】
実施の形態２．
仮想計算機部３００にデバイス２０１をパススルー方式で割り当てる形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００５５】
計算機システム１００の構成は実施の形態１と同様である（図１参照）。
【００５６】
図８は、実施の形態２における物理計算機２００の機能構成図である。
実施の形態２における物理計算機２００の機能構成について、図８に基づいて説明する。
【００５７】
物理計算機２００は、実施の形態１（図２参照）で説明した構成のうち、デバイス模擬部２１３を備えていない。
デバイス割り当て部２１１がデバイス２０１をパススルー方式で仮想計算機部３００に割り当てることにより、デバイスドライバ部３３２が仮想計算機モニタ部２１０を介せずにデバイス２０１を直接に制御することができるためである。
パススルー方式は、仮想計算機部のゲストＯＳ（デバイスドライバ）が仮想計算機モニタを介せずにデバイスを直接に制御するための方式である。パススルー方式はＩ／Ｏパススルーまたはデバイスパススルーともいう。
【００５８】
デバイス利用方法の処理は実施の形態１と同様である（図３、図４、図６参照）。
但し、Ｓ２３０（図４）およびＳ２７０（図４）において、仮想計算機モニタ部２１０はデバイス利用計算機に利用デバイスをパススルー方式で割り当てる。
【００５９】
実施の形態２により、仮想計算機にデバイスをパススルー方式で割り当てることができる。
【００６０】
実施の形態３．
複数のデバイス割り当て要求が発生した場合にデバイスの割り当てを要求した各仮想計算機の優先度に基づいてデバイスを割り当てる形態について説明する。
以下、実施の形態１、２のいずれとも異なる事項について主に説明する。説明を省略する事項については実施の形態１、２の少なくともいずれかと同様である。
【００６１】
計算機システム１００の構成は実施の形態１、２と同様である（図１参照）。
【００６２】
図９は、実施の形態３における物理計算機２００の機能構成図である。
実施の形態３における物理計算機２００の機能構成について、図９に基づいて説明する。
【００６３】
物理計算機２００は、実施の形態１（図２参照）で説明した構成に加えて、仮想計算機優先度リスト２９２を備える。
仮想計算機優先度リスト２９２は、各仮想計算機部３００の優先度を示すリストである。
デバイス割り当て機構部２２０は、仮想計算機優先度リスト２９２に基づいて、各仮想計算機部３００の優先度順に各仮想計算機部３００に対するデバイスの割り当てを仮想計算機モニタ部２１０に要求する。
【００６４】
図１０は、実施の形態３における仮想計算機優先度リスト２９２の一例を示す図である。
図１０に示すように、仮想計算機優先度リスト２９２は、仮想計算機毎に仮想計算機の識別子と仮想計算機の優先度とを示す。
【００６５】
デバイス利用方法の処理は実施の形態１、２と同様である（図３参照）。
但し、デバイス割り当て処理（Ｓ２００）は図１１に示す通りである。
【００６６】
図１１は、実施の形態３におけるデバイス割り当て処理（Ｓ２００）のフローチャートである。
実施の形態３におけるデバイス割り当て処理（Ｓ２００）について、図１１に基づいて説明する。
【００６７】
Ｓ２１１において、複数のデバイス利用フック部３２０が利用デバイスの割り当てを割り当て機構ドライバ部３３１を介してデバイス割り当て機構部２２０に要求する。つまり、複数のデバイス利用計算機（仮想計算機部３００）が利用デバイスの割り当てをデバイス割り当て機構部２２０に要求する。
Ｓ２１１の後、処理はＳ２１２に進む。
【００６８】
Ｓ２１２において、デバイス割り当て機構部２２０は、未選択である複数のデバイス利用計算機のうち最も優先度が高いデバイス利用計算機を仮想計算機優先度リスト２９２（図１０参照）に基づいて選択する。
Ｓ２１２の後、処理はＳ２２０に進む。
【００６９】
Ｓ２２０以降の処理はＳ２１２で選択されたデバイス利用計算機に対して実行される。
Ｓ２２０からＳ２７０は実施の形態１、２と同様である（図４参照）。
【００７０】
Ｓ２８０において、デバイス割り当て機構部２２０は、未選択のデバイス利用計算機が残っているか否かを判定する。
未選択のデバイス利用計算機が残っている場合（ＹＥＳ）、処理はＳ２１２に戻る。
未選択のデバイス利用計算機が残っていない場合（ＮＯ）、デバイス割り当て処理（Ｓ２００）は終了する。
【００７１】
実施の形態３により、複数の仮想計算機がデバイスの割り当てを要求した場合に仮想計算機の優先度順に仮想計算機にデバイスを割り当て、同じデバイスを利用する仮想計算機の競合を防ぐことができる。
【００７２】
実施の形態３において、実施の形態２と同様に、仮想計算機にデバイスをパススルー方式で割り当てても構わない。
【００７３】
実施の形態４．
デバイスの割り当てを見直す形態、つまり、デバイスの再割り当てを行う形態について説明する。
以下、実施の形態１から３のいずれとも異なる事項について主に説明する。説明を省略する事項については実施の形態１から３の少なくともいずれかと同様である。
【００７４】
計算機システム１００の構成は実施の形態１と同様である（図１参照）。
物理計算機２００の機能構成は実施の形態３と同様である（図９参照）。
【００７５】
デバイス利用方法の処理は実施の形態１、２と同様である（図３参照）。
但し、デバイス割り当て処理（Ｓ２００）は図１２に示す通りである。
【００７６】
図１２は、実施の形態４におけるデバイス割り当て処理（Ｓ２００）のフローチャートである。
実施の形態４におけるデバイス割り当て処理（Ｓ２００）について、図１２に基づいて説明する。
【００７７】
Ｓ２１０、Ｓ２３０からＳ２７０は実施の形態１、２と同様である。
【００７８】
Ｓ２２１において、デバイス割り当て機構部２２０は、利用デバイスをデバイス利用計算機に割り当てることができるか否かをデバイス割り当てリスト２９１および仮想計算機優先度リスト２９２に基づいて判定する。
例えば、デバイス割り当て機構部２２０は、利用デバイスをデバイス利用計算機に割り当てることができるか否かを以下のように判定する。
利用デバイスがいずれの仮想計算機部３００にも割り当てられていない場合、デバイス割り当て機構部２２０は、利用デバイスをデバイス利用計算機に割り当てることができると判定する。
利用デバイスがデバイス利用計算機よりも優先度が高い仮想計算機部３００に割り当てられている場合、デバイス割り当て機構部２２０は、利用デバイスをデバイス利用計算機に割り当てることができないと判定する。
利用デバイスがデバイス利用計算機よりも優先度が低い仮想計算機部３００に割り当てられている場合、デバイス割り当て機構部２２０は、利用デバイスをデバイス利用計算機に割り当てることができると判定する。この場合、利用デバイスが割り当てられている仮想計算機部３００（以下、割り当て済み計算機という）に対する利用デバイスの割り当てを変更する必要がある。
Ｓ２２１の後、処理はＳ２２２に進む。
【００７９】
Ｓ２２２において、デバイス割り当て機構部２２０は、割り当て済み計算機に対する利用デバイスの割り当てを変更するか否かを判定する。
割り当て済み計算機に対する利用デバイスの割り当てを変更すると判定した場合（ＹＥＳ）、処理はＳ３００に進む。割り当て変更処理（Ｓ３００）については後述する。
割り当て済み計算機に対する利用デバイスの割り当てを変更しないと判定した場合（ＮＯ）、処理はＳ２３０に進む。
【００８０】
図１３は、実施の形態４における割り当て変更処理（Ｓ３００）のフローチャートである。
実施の形態４における割り当て変更処理（Ｓ３００）について、図１３に基づいて説明する。
【００８１】
Ｓ３１０において、デバイス割り当て機構部２２０は、割り当て済み計算機に割り当てられている利用デバイスの割り当ての変更を仮想計算機モニタ部２１０に要求する。
Ｓ３１０の後、処理はＳ３２０に進む。
【００８２】
Ｓ３２０において、仮想計算機モニタ部２１０のデバイス割り当て部２１１は、割り当て済み計算機から利用デバイスを解放し、デバイス利用計算機に利用デバイスを割り当てる。
また、仮想計算機モニタ部２１０のデバイス割り当て部２１１は利用デバイスの解放および割り当てを各物理計算機２００のリスト更新部２３０に通知し、各物理計算機２００のリスト更新部２３０は通知内容に従ってデバイス割り当てリスト２９１（図５参照）を更新する。
Ｓ３２０の後、割り当て済み計算機を新たなデバイス利用計算機と見なして、新たなデバイス利用計算機に対するデバイス割り当て処理（Ｓ２００）（図１２参照）が実行される。
【００８３】
図１４は、実施の形態４における仮想計算機の状態遷移の一例を示す図である。
図１５は、実施の形態４におけるデバイス割り当てリスト２９１の状態遷移の一例を示す図である。
図１４に示す順序で仮想計算機ＶＭＡがデバイスＤＡを利用し、仮想計算機ＶＭＢがデバイスＤＡおよびデバイスＤＢを利用する場合、デバイス割り当てリスト２９１は図１５に示すように変化する。
ここで、仮想計算機ＶＭＡおよび仮想計算機ＶＭＢは物理計算機ＰＭＡに備わり、仮想計算機ＶＭＢは仮想計算機ＶＭＡよりも優先度が高いものとする。
【００８４】
（０）仮想計算機ＶＭＡがデバイスＤＡを利用する処理を開始し、仮想計算機ＶＭＡに物理計算機ＰＭＡのデバイスＤＡが割り当てられる。
（１）仮想計算機ＶＭＢがデバイスＤＡおよびデバイスＤＢを利用する処理を開始し、仮想計算機ＶＭＡから物理計算機ＰＭＡのデバイスＤＡが解放され、仮想計算機ＶＭＢにデバイスＤＡおよびデバイスＤＢが割り当てられる。
また、仮想計算機ＶＭＡは物理計算機ＰＭＢにライブマイグレーションされ、仮想計算機ＶＭＡに物理計算機ＰＭＢのデバイスＤＡが割り当てられる。
（３）仮想計算機ＶＭＢがデバイスＤＡおよびデバイスＤＢを利用する処理を終了し、仮想計算機ＶＭＢから物理計算機ＰＭＡのデバイスＤＡおよびデバイスＤＡが解放される。
（４）仮想計算機ＶＭＡがデバイスＤＡを利用する処理を終了し、仮想計算機ＶＭＡから物理計算機ＰＭＢのデバイスＤＡが解放される。
【００８５】
実施の形態４により、デバイスの割り当てを見直し、デバイスの利用効率を向上させることができる。
【００８６】
各実施の形態は、計算機システム１００の形態の一例である。
つまり、計算機システム１００は、各実施の形態で説明した構成要素の一部を備えなくても構わない。また、計算機システム１００は、各実施の形態で説明していない構成要素を備えても構わない。さらに、計算機システム１００は、各実施の形態の構成要素の一部または全てを組み合わせたものであっても構わない。
【００８７】
各実施の形態においてフローチャート等を用いて説明した処理手順は、各実施の形態に係る方法（例えば、デバイス利用方法）の処理手順の一例であり、また、各実施の形態に係るプログラム（例えば、デバイス利用プログラム）の処理手順の一例である。つまり、各実施の形態に係る方法およびプログラムは、各実施の形態で説明した処理手順と一部異なる処理手順で実現されても構わない。
【符号の説明】
【００８８】
１００  計算機システム、１０９  ネットワーク、２００  物理計算機、２０１  デバイス、２１０  仮想計算機モニタ部、２１１  デバイス割り当て部、２１２  ライブマイグレーション部、２１３  デバイス模擬部、２２０  デバイス割り当て機構部、２３０  リスト更新部、２９１  デバイス割り当てリスト、２９２  仮想計算機優先度リスト、３００  仮想計算機部、３１０  アプリケーション部、３２０  デバイス利用フック部、３３０  ゲストＯＳ部、３３１  割り当て機構ドライバ部、３３２  デバイスドライバ部、９０１  演算装置、９０２  補助記憶装置、９０３  主記憶装置、９０４  通信装置、９０５  入出力装置、９０９  バス。
【図１】
2015099445.tif 000003
【図２】
2015099445.tif 000004
【図３】
2015099445.tif 000005
【図４】
2015099445.tif 000006
【図５】
2015099445.tif 000007
【図６】
2015099445.tif 000008
【図７】
2015099445.tif 000009
【図８】
2015099445.tif 000010
【図９】
2015099445.tif 000011
【図１０】
2015099445.tif 000012
【図１１】
2015099445.tif 000013
【図１２】
2015099445.tif 000014
【図１３】
2015099445.tif 000015
【図１４】
2015099445.tif 000016
【図１５】
2015099445.tif 000017