以下、本発明を実施するための実施の形態(以下、実施形態という)を、図面に従って説明する。
図1には、本実施形態に係る情報処理システム10のシステム構成図を示した。図1に示されるように、情報処理システム10は、1又は複数のコンピュータ300を含むコンピュータ群30の少なくとも一部のコンピュータ資源の利用を要求するクライアント装置200と、当該クライアント装置200からの利用要求を受け付け、コンピュータ資源の割り当て等の各種制御処理を担当する管理装置100を含む。本実施形態においては、コンピュータ群30に含まれる各コンピュータ300、管理装置100、及びクライアント装置200は、インターネット等のネットワーク20を介して相互にデータ通信することとするが、上記各装置がデータ通信可能であれば各装置の接続態様は上記態様に限られない。
コンピュータ群30は、1又は複数のコンピュータ300を含み、各コンピュータ300はネットワーク302を介して相互にデータ通信可能に接続されている。コンピュータ群30に含まれる各コンピュータ300は、1又は複数のプロセッサ、メモリ、磁気ディスク装置等を含むコンピュータ資源(ハードウェアリソース)を備えており、コンピュータ群30に備えられたコンピュータ資源は1又は複数に分割されて、仮想マシンと呼ばれる論理コンピュータとして構成されることとしてよい。なお、仮想マシンは、全部又は一部のハードウェアの使用時間を分割してその少なくとも一部を割り当てて構成することとしてもよい。
管理装置100は、クライアント装置200からコンピュータ群30の利用要求を受け付け、当該クライアント装置200に仮想マシンを割り当てると共に、クライアント装置200から要求されたデータ処理を割り当てた仮想マシンに実行させるための制御を行うコンピュータである。この管理装置100に備えられた機能の詳細については後述する。
クライアント装置200は、ユーザーからの入力を受け付けるコンピュータであり、ユーザーからの入力に応じて、コンピュータ群30から仮想マシンの割当を要求すると共に、要求に応じて割り当てられた仮想マシンを利用したデータ処理の実行を要求する。このクライアント装置200に備えられた機能の詳細についても後述する。
図2には、情報処理システム10に含まれる各装置の機能ブロック図を示した。以下、図2に示された機能ブロック図を参照しながら、情報処理システム10に含まれる管理装置100及びクライアント装置200に備えられた機能の詳細について説明する。
コンピュータ群30に含まれるコンピュータ資源は、複数に分割されて仮想マシンが複数構成される。図2に示した例において、VM1〜VM4は、コンピュータ300のコンピュータ資源を4つに分割して構成した仮想マシンである。本実施形態においては、仮想マシンは予め構成されていることとしてよく、構成される仮想マシンの中には、一台のコンピュータ300を1又は複数に分割して構成した仮想マシンが少なくとも1つは含まれることとする。
図2に示されるように、管理装置100は、仮想マシン情報送受信部102、仮想マシン情報保持部104、仮想マシン割当要求受付部106、仮想マシン割当部108、処理データ格納先情報生成部110、処理データ格納先情報送信部112、サービス要求受付部114、サービス情報保持部116、及びサービス配置部118を備える。上記の各部の機能は、CPU等の制御手段、メモリ、磁気ディスク装置等の記憶手段、外部デバイスとデータを送受信する通信手段等を備えたコンピュータが、コンピュータ読み取り可能な情報記憶媒体に格納されたプログラムを読み込み実行することで実現されるものとしてよい。なお、プログラムは情報記憶媒体によって管理装置100として機能するコンピュータに供給されることとしてもよいし、インターネット等のデータ通信手段を介して当該コンピュータに供給されることとしてもよい。
仮想マシン情報送受信部102は、コンピュータ群30に含まれ仮想マシンの情報を管理する管理コンピュータとの間で、コンピュータ群30において構成された仮想マシンの情報を送受信するものである。仮想マシンの情報は、管理装置100とコンピュータ群30との間で定期的に送受信されることとしてもよいし、情報に変更があった場合に送受信されることとしてもよい。例えば、仮想マシンの情報には、仮想マシンの状態を示す状態情報や、仮想マシンを構成するハードウェアリソースを示すリソース情報等を含むこととしてよい。例えば、状態情報には、仮想マシン毎に、割り当てられたクライアント装置200の識別情報(クライアント名等)と、実行しているサービス名(データ処理名等)を含むこととしてよく、リソース情報には、仮想マシン毎に、コンピュータ群30のうちのどのコンピュータ300のどのハードウェアを含み構成されているかを示す情報を含むこととしてよい。
仮想マシン情報保持部104は、仮想マシン情報送受信部102により受信された仮想マシンの情報を保持するものである。
図3には、仮想マシン情報保持部104に保持される仮想マシン状態管理テーブル(状態情報)の一例を示した。図3に示されるように、仮想マシン状態管理テーブルには、仮想マシンを識別する仮想マシンIDに対応付けて、当該仮想マシンが割り当てられているクライアント装置200を識別するクライアント名と、当該仮想マシンにおいて実行しているデータ処理を示すサービス名とが格納される。仮想マシン状態管理テーブルにおいて、クライアント名が空欄の場合には、その仮想マシンは、どのクライアント装置200にも割り当てられていない(すなわち空いている)ことを示している。
仮想マシン割当要求受付部106は、クライアント装置200から仮想マシンの割当要求を受け付けるものである。仮想マシンの割当要求には、クライアント装置200を識別するクライアント名と共に、クライアント装置200が要求するコンピュータ資源を示す情報(例えばプロセッサ数、メモリ容量、ディスク容量等)を含むこととしてもよい。
仮想マシン割当部108は、仮想マシン割当要求受付部106により受け付けた割当要求に応じて、クライアント装置200に仮想マシンを割り当てるものである。例えば、仮想マシン割当部108は、仮想マシン情報保持部104に保持される仮想マシン状態管理テーブルを参照し、クライアント名が格納されていない仮想マシンを選択して、クライアント装置200に割り当てることとしてよい。この際に、仮想マシン割当部108は、仮想マシンが1つのコンピュータのコンピュータ資源から構成されているものを検索し、その中から仮想マシンを選択することとしてもよいし、クライアント装置200からの割当要求にコンピュータ資源を示す情報が含まれる場合には、そのコンピュータ資源を満足する仮想マシンを選択するようにしてもよい。もし、空いている(又は指定された条件に合致する)仮想マシンが存在しない場合には、仮想マシン割当部108はクライアント装置200に割当不可の情報を送信するように制御することとしてよい。
図4には、仮想マシン割当部108により仮想マシンを割り当てた後に更新された仮想マシン状態管理テーブルの一例を示した。図4に示されるように、仮想マシン「VM1」がクライアント「CL1」に割り当てられた場合には、仮想マシン状態管理テーブルにおける「VM1」に対応付けられたクライアント名の欄に「CL1」が格納される。
処理データ格納先情報生成部110は、仮想マシン割当部108により割り当てられた仮想マシンの情報に基づいて、仮想マシンが処理する処理データの格納先を示す格納先情報を生成(特定)するものである。例えば、処理データ格納先情報生成部110は、仮想マシン割当部108により割り当てられた仮想マシンに含まれるストレージ(データ格納装置)内に格納されるファイル名を格納先情報として生成することとしてよい。格納先情報は、仮想マシンにおいてデータが一意に識別されるものであれば如何なる生成規則に基づいて生成されてもよい。本実施形態では、例えば処理データ格納先情報生成部110は、仮想マシン(VM1)、仮想マシンのストレージ(S1)、ストレージに格納されるファイル名(File1)からなるパス(/VM1/S1/File1)を格納先情報として生成することとしてよい。
処理データ格納先情報送信部112は、処理データ格納先情報生成部110により生成された格納先情報を、仮想マシンの割当要求を行ったクライアント装置200に送信するものである。
サービス要求受付部114は、クライアント装置200から、当該クライアント装置200に割り当てられた仮想マシンにおいてデータ処理(サービス)の実行要求を受け付けるものである。例えば、サービス要求受付部114は、クライアント装置200から、クライアント名と共に、実行するデータ処理を識別するサービス識別情報(サービス名等)を受け付けることとしてよい。
サービス情報保持部116は、サービス識別情報によりそれぞれ識別されるサービスを構成するデータ処理の情報を保持するものである。サービス情報保持部116は更に、各データ処理を構成するプログラムの実体データを保持しておくこととしてよい。
図5には、サービス情報保持部116により保持されるサービス定義テーブルの一例を示した。図5に示されるように、サービス定義テーブルは、サービス名に対応付けて、当該サービスを構成するプログラム(データ処理要素、プリミティブサービス)の情報を示す構成プログラムを格納して構成されている。構成プログラムの情報において、A,B,Cと格納されている場合には、A,B,Cの処理を当該順序で実行することを示す。
サービス配置部118は、サービス要求受付部114で受け付けたサービスを構成するプログラムを、サービス情報保持部116を参照して取得し、当該取得したプログラムを、仮想マシン割当部108により割り当てた仮想マシンに配置(デプロイ)するものである。例えば、サービス配置部118は、サービスを構成するプログラム、プログラムの実行順序、処理対象のデータが格納された格納先の情報を含むデプロイ情報を生成し、当該生成したデプロイ情報を仮想マシンに転送することによりサービスの配置を行うこととしてよい。また、サービス配置部118により仮想マシンに配置されたプログラムに基づいて、仮想マシンは処理データ格納先情報生成部110により生成された格納先に格納された処理データを実行する。
図6には、サービス配置部118によりサービス(プログラム)が配置された場合に更新された仮想マシン状態管理テーブルの一例を示した。図6に示されるように、サービス配置部118により仮想マシンへのプログラムの配置(デプロイ)が完了した後、もしくは配置するプログラムを特定した後には、割り当てられた仮想マシンのサービス名の欄に配置されたサービスを示す情報が格納される。
仮想マシンは、サービス配置部118によるプログラムが配置された後に、クライアント装置200から転送された処理データを対象として、配置されたプログラムを指定された実行順序で実行する。仮想マシンは、上記処理の結果得られた処理結果データを、クライアント装置200に送信すると共に、管理装置100にはサービス配置部118により配置されたプログラムの実行が完了したことを通知する。管理装置100は、仮想マシンからプログラムの実行完了の通知を受けると、仮想マシン状態管理テーブルに格納された当該仮想マシンのレコードを更新する。具体的には、管理装置100は、仮想マシンに対応付けられたクライアント名及びサービス名の項目のデータを消去して、仮想マシン状態管理テーブルを更新することとしてよい。また、仮想マシンは、配置されたプログラムの実行を完了した後に、当該配置されたプログラム及びクライアント装置200から転送された処理データの両者を削除することとしてよい。この際、仮想マシンは、クライアント装置200からの要求に応じて上記データを削除することとしてもよいし、処理が終了してから一定の期間が経過した後に上記データを削除するようにしてもよい。
次に、クライアント装置200に備えられる機能について説明する。図2に示されるように、クライアント装置200は、仮想マシン割当要求部202、処理データ格納先情報受信部204、処理データ転送部206、サービス要求部208、及び処理結果取得部210を備える。上記の各部の機能は、CPU等の制御手段、メモリ等の記憶手段、外部デバイスとデータを送受信する通信手段等を備えたコンピュータが、コンピュータ読み取り可能な情報記憶媒体に格納されたプログラムを読み込み実行することで実現されるものとしてよい。なお、プログラムは情報記憶媒体によってクライアント装置200として機能するコンピュータに供給されることとしてもよいし、インターネット等のデータ通信手段を介して当該コンピュータに供給されることとしてもよい。
仮想マシン割当要求部202は、管理装置100にコンピュータ群30からの仮想マシンの割当を要求するものである。仮想マシン割当要求部202は、仮想マシンの割当要求時に、クライアント装置200を識別するクライアント名と共に、必要なコンピュータ資源を示す情報を併せて管理装置100に送信することとしてもよい。
処理データ格納先情報受信部204は、仮想マシン割当要求部202による割当要求に応じて仮想マシンが割り当てられた場合に、当該割り当てられた仮想マシンによる処理の対象となる処理データの格納先を示す格納先情報を、管理装置100から受信するものである。本実施形態では、処理データ格納先情報受信部204は、管理装置100の処理データ格納先情報送信部112により送信された格納先情報を受信することとする。
処理データ転送部206は、処理データ格納先情報受信部204により受信された格納先情報により示される格納先に、処理データを転送するものである。処理データ転送部206は、格納先情報に示されるファイル名に処理データのファイル名を変更した後に、仮想マシンにアクセスしてデータ転送を行い、その際に処理データの格納先のパスを格納先情報に示されるパスに基づいて定めることとしてよい。
サービス要求部208は、処理データ転送部206により転送される処理データを処理するサービス(データ処理)を識別する情報を管理装置100に送信し、処理データに対するサービスの実行を要求するものである。本実施形態では、サービス要求部208により管理装置100に送信されたサービス要求は、管理装置100のサービス要求受付部114により受け付けられることとする。
処理結果取得部210は、サービス要求部208により要求した処理データに対して指定したサービス(データ処理)が実行された場合に、当該サービスの処理結果を取得するものである。なお、処理結果取得部210は、仮想マシンから送信された処理結果を受信して取得することとしてよい。
次に、図7に示されたシーケンス図を参照しながら、本実施形態に係る情報処理システム10及びクライアント装置200に割り当てられた仮想マシンにより行われる処理の流れを説明する。
まず、クライアント装置200は、管理装置100に仮想マシンの割当要求を送信する(S1001)。管理装置100は、クライアント装置200から受信した割当要求に応じて、仮想マシン状態管理テーブルを参照し、未だ割り当てられていない仮想マシンがあるか否かを判断し(S1002)、「ない」と判断する場合には(S1002:N)、割当不可の情報をクライアント装置200に送信し(S1003)、「ある」と判断する場合には(S1002:Y)、仮想マシンをクライアント装置200に割り当てる(S1004)。そして、管理装置100は、上記割り当てた仮想マシンにおけるデータの格納先を示す格納先情報を生成すると共に(S1005)、当該生成した格納先情報をクライアント装置200に送信する(S1006)。
クライアント装置200は、管理装置100から受信した格納先情報に示される仮想マシンにおける格納先に処理データを転送し(S1007)、さらに管理装置100に処理データを処理するサービス(データ処理)を識別するサービス識別情報を送信する(S1008)。管理装置100は、クライアント装置200から受信したサービス識別情報に基づいて、サービスを構成するプログラムを特定すると共に、当該特定した各プログラム、各プログラムの実行順序及び実行対象に基づくデプロイ情報を生成し(S1009)、当該生成したデプロイ情報を仮想マシンに転送する(S1010)。
仮想マシンでは、管理装置100から受信したデプロイ情報に基づいてプログラムを配置した後に処理データに対するデータ処理を実行し(S1011)、その処理結果をクライアント装置200に送信する(S1012)。そして、仮想マシンは、管理装置100にサービスの完了通知を送信する(S1013)と共に、配置されたサービス及び処理データを削除する(S1014)。また、管理装置100は、仮想マシンからの完了通知を受けると、仮想マシン状態管理テーブルにおける仮想マシンに関するレコードを特定し、当該特定したレコードにおけるクライアント名及びサービス名の欄を削除し更新する(S1015)。以上によりクライアント装置200から要求されるデータ処理に関する一連の処理を終了する。
本実施形態に係る情報処理システム10では、クライアント装置200に割り当てられる仮想マシンのハードウェアリソースに含まれるストレージに処理データを格納し、仮想マシンに処理データを処理させることで、処理データをデータ転送することに起因する処理の遅延が発生しない。
次に、本発明に係る第2の実施形態について説明する。第2の実施形態に係る情報処理システム10は、仮想マシン毎に実行待ちキューを保持し、仮想マシンにより今後実行されるデータ処理に係るデータ量に基づいてクライアント装置200に割り当てる仮想マシンを選択している点で第1の実施形態に係る情報処理システム10とは異なっており、仮想マシンを割り当てた後の処理は共通している。以下、第1の実施形態に係る情報処理システム10との相違点について説明する。
第2の実施形態に係る仮想マシン情報保持部104は、仮想マシン毎の状態を示す仮想マシン状態管理テーブルと、仮想マシン毎に割り当てられた実行待ち状態にある処理を示す処理情報を格納した実行待ちキューを保持している。
図8には、仮想マシン状態管理テーブルの一例を示した。図8に示されるように、仮想マシン情報管理テーブルは、仮想マシンの識別情報(仮想マシンID)毎に、割り当てられたクライアント装置200を示すクライアント名、実行しているサービスを示すサービス名、実行しているサービスによる処理対象とする処理データ名、処理データのデータサイズを関連付けて格納している。
図9には、実行待ちキューの一例を示した。実行待ちキューは、仮想マシン毎に設けられ、仮想マシン割当部108により割り当てられた処理を示す処理情報が、割り当てられた順に待ち行列の最後部に格納される。例えば、処理情報は、仮想マシン情報管理テーブルのレコードに対応する情報としてよく、クライアント名、サービス名、処理データ名、データサイズの各項目を含むこととしてよい。
仮想マシン割当要求受付部106は、クライアント装置200から仮想マシンの割当要求を受け付ける。この割当要求には、クライアント装置200を識別するクライアント名、実行を要求するサービス名、処理データのデータサイズの各情報が含まれる。
仮想マシン割当部108は、クライアント装置200から仮想マシンの割当要求を受け付けると、仮想マシン情報保持部104に保持される仮想マシン状態管理テーブル及び実行待ちキューを参照し、仮想マシン毎に、現在実行しているサービス及び今後実行するサービスにより処理されるデータサイズの合計値を算出する。そして、仮想マシン割当部108は、上記算出したデータサイズの合計値が最小の仮想マシンをクライアント装置200に割り当てる。仮想マシン割当部108により仮想マシンが割り当てられると、当該割り当てられた仮想マシンの実行待ちキューに、クライアント装置200から受け付けた割当要求に含まれる処理情報が追加される。クライアント装置200に仮想マシンが割り当てられた後は、第1の実施形態と同様の処理が実行されるが、サービス配置部118が実行待ちキューを参照して次に実行するサービスを配置する点で第1の実施形態と異なるためその点を以下説明する。
サービス配置部118は、仮想マシンから処理の完了通知を受けると、当該仮想マシンの実行待ちキューを参照し、実行待ちキューにおける第1順位の処理情報を取得する。サービス配置部118は、上記取得した処理情報に基づいてデプロイ情報を生成し、生成したデプロイ情報を仮想マシンに転送する。サービス配置部118は、サービスの配置を完了すると、当該サービスの配置を行った仮想マシンに関する仮想マシン状態管理テーブルの該当項目(クライアント名、サービス名、処理データ名、データサイズ等)を更新すると共に、実行待ちキューにおいて処理を実行した処理情報を削除すると共に他の処理情報の処理順位を1つずつ繰り上げて更新する。
第2の実施形態に係る情報処理システム10では、仮想マシンに空き状態がなくともクライアント装置200からのサービス要求に応じる際に、クライアント装置200に処理するデータ量が少ない仮想マシンを割り当てることで、クライアント装置200へのサービスの提供までの時間が短縮される。
次に、本発明に係る第3の実施形態について説明する。第3の実施形態に係る情報処理システム10は、仮想マシンにより今後実行されるデータ処理に係る処理時間に基づいてクライアント装置200に割り当てる仮想マシンを選択している点で第2の実施形態に係る情報処理システム10とは異なっており、他の点は共通している。以下、第2の実施形態に係る情報処理システム10との相違点について説明する。
第3の実施形態に係るサービス情報保持部116は、仮想マシンにおいて実行されるサービス毎に、単位データ当たりの処理速度情報を保持する。
図10には、サービス情報保持部116により保持されるサービス定義テーブルの一例を示した。図10に示されるように、サービス定義テーブルには、サービスを識別する識別情報(サービス名)に対応付けて、当該サービスを構成するプログラム(データ処理要素)の情報を示す構成プログラムと、単位データ当たりの処理速度を示す処理速度情報が格納される。処理速度情報は、基本構成(1単位当たり)の仮想マシンが1秒当たりに処理するデータ量を示しており、図10の例であれば、サービス1であれば仮想マシンが1秒間に1Mバイトのデータ量を処理することを示している。処理速度情報は、事前に処理時間を計測し保持しておくこととしてよい。
仮想マシン情報保持部104は、仮想マシン毎の処理性能を保持しておくこととしてよく、例えば基本構成の仮想マシンを基準とした処理速度の比を性能情報として保持しておくこととしてよい。
仮想マシン割当部108は、クライアント装置200から仮想マシンの割当要求を受け付けると、仮想マシン情報保持部104に保持される仮想マシン状態管理テーブル及び実行待ちキューを参照し、仮想マシン毎に、現在実行しているサービス及び今後実行するサービスの完了に要する処理時間の合計値を算出する。具体的には、仮想マシン割当部108は、処理情報に含まれるデータサイズを、サービスに対応付けられた処理速度に仮想マシンの性能情報を乗じて得た仮想マシン処理速度で除して処理時間を算出することとしてよい。そして、仮想マシン割当部108は、仮想マシン毎に上記算出した処理時間を合計し、その合計値が最小の仮想マシンをクライアント装置200に割り当てる。仮想マシン割当部108により仮想マシンが割り当てられると、当該割り当てられた仮想マシンの実行待ちキューに、クライアント装置200から受け付けた割当要求に含まれる処理情報が追加される。クライアント装置200に仮想マシンが割り当てられた後の処理は第2の実施形態と同じであるため説明を省略する。
第3の実施形態に係る情報処理システム10では、仮想マシンに空き状態がなくともクライアント装置200からのサービス要求に応じる際に、割り当てられたサービスを完了するまでの処理時間が短い仮想マシンをクライアント装置200に割り当てることで、クライアント装置200へのサービスの提供までの時間が短縮される。
次に、本発明に係る第4の実施形態について説明する。第4の実施形態に係る情報処理システム10は、管理装置100が処理データを仮想マシンに転送するようにした点で第1の実施形態に係る情報処理システム10とは異なっており、他の点は共通している。以下、第4の実施形態に係る情報処理システム10における処理の流れを、図11に示したシーケンス図を参照しながら説明する。
まず、クライアント装置200は、管理装置100に仮想マシンの割当要求を送信する(S2001)。管理装置100は、クライアント装置200から受信した割当要求に応じて、仮想マシン状態管理テーブルを参照し、未だ割り当てられていない仮想マシンがあるか否かを判断し(S2002)、「ない」と判断する場合には(S2002:N)、割当不可の情報をクライアント装置200に送信し(S2003)、「ある」と判断する場合には(S2002:Y)、仮想マシンをクライアント装置200に割り当てる(S2004)。そして、管理装置100は、上記割り当てた仮想マシンにおけるデータの格納先を示す格納先情報を生成し(S2005)、クライアント装置200に処理データの転送及びサービスの指定を要求する(S2006)。
クライアント装置200は、管理装置100に処理データと、処理データを処理するサービス(データ処理)を識別するサービス識別情報を送信する(S2007)。管理装置100は、上記生成した格納先情報にクライアント装置200から受信した処理データを仮想マシンに転送する(S2008)。そして、管理装置100は、クライアント装置200から受信したサービス識別情報に基づいて、サービスを構成するプログラムを特定すると共に、当該特定した各プログラム、各プログラムの実行順序及び実行対象に基づくデプロイ情報を生成し(S2009)、当該生成したデプロイ情報を仮想マシンに転送する(S2010)。
仮想マシンでは、管理装置100から受信したデプロイ情報に基づいて処理データに対するデータ処理を実行する(S2011)。仮想マシンは、上記データ処理の処理結果をクライアント装置200に送信する(S2012)と共に、管理装置100にサービスの完了通知を送信し(S2013)、その後、配置されたサービス及び処理データを削除する(S2014)。また、管理装置100は、仮想マシンからの完了通知を受けると、処理データを削除する(S2015)と共に、仮想マシン状態管理テーブルにおける仮想マシンに関するレコードを特定し、当該特定したレコードにおけるクライアント名及びサービス名の欄を削除し更新する(S2016)。以上によりクライアント装置200から要求されるデータ処理に関する一連の処理を終了する。
なお、第4の実施形態において、仮想マシン割当要求時に処理データを管理装置100に送信することとしてもよいし、仮想マシンの割当を、第2又は第3の実施形態に示した態様で行うこととしてもよいのはもちろんである。
また、本発明は以上説明した実施形態に限定されるものではなく、例えば管理装置100がコンピュータ群30に含まれるコンピュータ300の1つとして構成されていてもよい。