(57)【特許請求の範囲】
【請求項１】
所定のタスクを実行するタスク実行サーバと、該タスク実行サーバの実行するタスクを管理するタスク管理サーバとを有するタスク管理システムであって、
前記タスク実行サーバは、
当該タスク実行サーバに収容された複数の仮想マシンが実行を予定するタスクの識別情報及び実行の開始予定時刻を、前記タスク管理サーバに送信する送信部と、
前記タスク管理サーバから通知された時刻を、前記タスクの開始予定時刻として、前記複数の仮想マシンに設定する設定部とを有し、
前記タスク管理サーバは、
前記タスク実行サーバから送信された前記識別情報を有するタスクの開始予定時刻が前記複数の仮想マシン間で重複する場合、前記タスクの実行を予定する仮想マシンの数を用いて、前記開始予定時刻が前記複数の仮想マシン間で重複しないように、各仮想マシンが前記タスクを実行する時刻を決定する決定部と、
前記決定部により決定された、前記仮想マシン毎の時刻を前記タスク実行サーバに通知する通知部とを有することを特徴とするタスク管理システム。
【請求項２】
前記タスクの実行を予定する仮想マシンの数は、前記タスク実行サーバに収容されている仮想マシンの数であることを特徴とする請求項１に記載のタスク管理システム。
【請求項３】
前記タスクの実行を予定する仮想マシンの数は、前記タスク実行サーバにおいて起動している仮想マシンの数であることを特徴とする請求項１に記載のタスク管理システム。
【請求項４】
所定のタスクを実行するタスク実行サーバに接続されたタスク管理サーバであって、
前記タスク実行サーバに収容された複数の仮想マシンが実行を予定するタスクの識別情報及び実行の開始予定時刻を、前記タスク実行サーバから受信する受信部と、
前記受信部により受信された前記識別情報を有するタスクの開始予定時刻が前記複数の仮想マシン間で重複する場合、前記タスクの実行を予定する仮想マシンの数を用いて、前記開始予定時刻が前記複数の仮想マシン間で重複しないように、各仮想マシンが前記タスクを実行する時刻を決定する決定部と、
前記決定部により決定された、前記仮想マシン毎の時刻を前記タスク実行サーバに通知する通知部と
を有することを特徴とするタスク管理サーバ。
【請求項５】
所定のタスクを実行するタスク実行サーバと、該タスク実行サーバに接続されたタスク管理サーバとを有するタスク管理システムで実行されるタスク管理方法であって、
前記タスク実行サーバが、当該タスク実行サーバに収容された複数の仮想マシンが実行を予定するタスクの識別情報及び実行の開始予定時刻を、前記タスク管理サーバに送信する送信工程と、
前記タスク管理サーバが、前記タスク実行サーバから送信された前記識別情報を有するタスクの開始予定時刻が前記複数の仮想マシン間で重複する場合、前記タスクの実行を予定する仮想マシンの数を用いて、前記開始予定時刻が前記複数の仮想マシン間で重複しないように、各仮想マシンが前記タスクを実行する時刻を決定する決定工程と、
前記タスク管理サーバが、前記決定工程にて決定された、前記仮想マシン毎の時刻を前記タスク実行サーバに通知する通知工程と、
前記タスク実行サーバが、前記タスク管理サーバから通知された前記時刻を、前記タスクの開始予定時刻として、前記各仮想マシンに設定する設定工程と
を含むことを特徴とするタスク管理方法。
【請求項６】
所定のタスクを実行するタスク実行サーバに接続されたコンピュータに実行させるためのタスク管理プログラムであって、
前記タスク実行サーバに収容された複数の仮想マシンが実行を予定するタスクの識別情報及び実行の開始予定時刻を、前記タスク実行サーバから受信する受信ステップと、
前記受信ステップにて受信された前記識別情報を有するタスクの開始予定時刻が前記複数の仮想マシン間で重複する場合、前記タスクの実行を予定する仮想マシンの数を用いて、前記開始予定時刻が前記複数の仮想マシン間で重複しないように、各仮想マシンが前記タスクを実行する時刻を決定する決定ステップと、
前記決定ステップにて決定された、前記仮想マシン毎の時刻を前記タスク実行サーバに通知する通知ステップと
を前記コンピュータに実行させるためのタスク管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスク管理システム、タスク管理サーバ、タスク管理方法、及びタスク管理プログラムに関する。
【背景技術】
【０００２】
近年、インターネットを始めとするネットワーク上のリソースを用いて、各種サービスをユーザに提供するコンピュータ利用形態として、クラウドコンピューティングが普及しつつある。クラウドコンピューティングでは、データセンタ内の物理サーバに複数の仮想マシン（ＶＭ：Virtual  Machine）を作成及び収容しておき、サーバが、クライアントからの要求に応じて、仮想マシンを提供する。これにより、ユーザは、遠隔地においても、データセンタ内の仮想マシンを利用することができる。この様なサービスは、ＤａａＳ（Desktop−as−a−Service：仮想デスクトップサービス）と呼ばれ、Ｗｉｎｄｏｗｓ（登録商標）やｌｉｎｕｘ（登録商標）等のＯＳ（Operating  System）を仮想マシンにインストールすることで、デスクトップ環境のユーザへの貸出しを実現している。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Symantec社“Altiris  Client  Management  Suite”、［online］、［平成２４年１月１２日検索］、インターネット＜URL：http://www.symantec.com/ja/jp/client-management-suite＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、サーバ内の仮想マシンは、通常、仮想マシンの雛型をコピーして作成される。このため、定期的に実行されるべきタスクのスケジュールが仮想マシン間で重複し、複数のタスクが同時に実行されることとなる。仮想マシンの実行するタスクとしては、例えば、ＯＳのアップデート、ウィルス定義ファイルのダウンロード、ウィルススキャン、バックアップ処理等があるが、これらのタスクの開始時刻が同時刻に集中すると、サーバのＣＰＵ（Central  Processing  Unit）使用率が上昇する。その結果、サーバの負荷が増大する。また、ネットワークの輻輳により、通信帯域が圧迫され、ネットワークも高負荷状態に陥る。これらのことが、快適なデスクトップ環境をユーザに提供する際の阻害要因となっていた。特に、データセンタ内に収容される仮想マシンの数が増大（例えば、数百台規模）した場合、人間が手動で個別のスケジュール設定を行うことは困難となることから、上述した問題点は顕著となる。
【０００５】
開示の実施例は、上記に鑑みてなされたものであって、仮想マシンの実行するタスクの集中に伴う負荷を低減することができるタスク管理システム、タスク管理サーバ、タスク管理方法、及びタスク管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本願の開示するタスク管理システムは、一つの態様において、所定のタスクを実行するタスク実行サーバと、該タスク実行サーバの実行するタスクを管理するタスク管理サーバとを有する。前記タスク実行サーバは、自サーバに収容された複数の仮想マシンが実行を予定するタスクの識別情報及び実行の開始予定時刻を、前記タスク管理サーバに送信する送信部を有する。前記タスク管理サーバは、決定部と通知部とを有する。前記決定部は、前記タスク実行サーバから送信された前記識別情報を有するタスクの開始予定時刻が前記複数の仮想マシン間で重複する場合、前記タスクの実行を予定する仮想マシンの数を用いて、前記開始予定時刻が前記複数の仮想マシン間で重複しないように、各仮想マシンが前記タスクを実行する時刻を決定する。前記通知部は、前記決定部により決定された、前記仮想マシン毎の時刻を前記タスク実行サーバに通知する。前記タスク実行サーバは、前記タスク管理サーバから通知された前記時刻を、前記タスクの開始予定時刻として、前記各仮想マシンに設定する設定部を更に有する。
【０００７】
また、本願の開示するタスク管理サーバは、一つの態様において、所定のタスクを実行するタスク実行サーバに接続される。前記タスク管理サーバは、受信部と決定部と通知部とを有する。前記受信部は、前記タスク実行サーバに収容された複数の仮想マシンが実行を予定するタスクの識別情報及び実行の開始予定時刻を、前記タスク実行サーバから受信する。前記決定部は、前記受信部により受信された前記識別情報を有するタスクの開始予定時刻が前記複数の仮想マシン間で重複する場合、前記タスクの実行を予定する仮想マシンの数を用いて、前記開始予定時刻が前記複数の仮想マシン間で重複しないように、各仮想マシンが前記タスクを実行する時刻を決定する。前記通知部は、前記決定部により決定された、前記仮想マシン毎の時刻を前記タスク実行サーバに通知する。
【０００８】
更に、本願の開示するタスク管理方法は、一つの態様において、所定のタスクを実行するタスク実行サーバと、該タスク実行サーバの実行するタスクを管理するタスク管理サーバとを有するタスク管理システムで実行されるタスク管理方法である。前記タスク管理方法は、送信工程と決定工程と通知工程と設定工程とを含む。前記送信工程では、前記タスク実行サーバが、自サーバに収容された複数の仮想マシンが実行を予定するタスクの識別情報及び実行の開始予定時刻を、前記タスク管理サーバに送信する。前記決定工程では、前記タスク管理サーバが、前記タスク実行サーバから送信された前記識別情報を有するタスクの開始予定時刻が前記複数の仮想マシン間で重複する場合、前記タスクの実行を予定する仮想マシンの数を用いて、前記開始予定時刻が前記複数の仮想マシン間で重複しないように、各仮想マシンが前記タスクを実行する時刻を決定する。前記通知工程では、前記タスク管理サーバが、前記決定工程にて決定された、前記仮想マシン毎の時刻を前記タスク実行サーバに通知する。前記設定工程では、前記タスク実行サーバが、前記タスク管理サーバから通知された前記時刻を、前記タスクの開始予定時刻として、前記各仮想マシンに設定する。
【０００９】
また、本願の開示するタスク管理プログラムは、一つの態様において、コンピュータを上記タスク管理サーバとして機能させる。すなわち、前記タスク管理プログラムは、所定のタスクを実行するタスク実行サーバに接続されたコンピュータにより実行される。前記タスク管理プログラムは、受信ステップと決定ステップと通知ステップとをコンピュータに実行させる。前記受信ステップでは、前記コンピュータは、前記タスク実行サーバに収容された複数の仮想マシンが実行を予定するタスクの識別情報及び実行の開始予定時刻を、前記タスク実行サーバから受信する。前記決定ステップでは、前記コンピュータは、前記受信ステップにて受信された前記識別情報を有するタスクの開始予定時刻が前記複数の仮想マシン間で重複する場合、前記タスクの実行を予定する仮想マシンの数を用いて、前記開始予定時刻が前記複数の仮想マシン間で重複しないように、各仮想マシンが前記タスクを実行する時刻を決定する。前記通知ステップでは、前記コンピュータは、前記決定ステップにて決定された、前記仮想マシン毎の時刻を前記タスク実行サーバに通知する。
【発明の効果】
【００１０】
本願の開示するタスク管理システム、タスク管理サーバ、タスク管理方法、及びタスク管理プログラムは、仮想マシンの実行するタスクの集中に伴うサーバ負荷を低減することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、タスク管理システムの概略構成を示す図である。
【図２】図２は、サーバの機能構成を示すブロック図である。
【図３】図３は、スケジューリングサーバの機能構成を示すブロック図である。
【図４】図４は、スケジューリングサーバのスケジューリングＤＢにおけるデータ格納例を示す図である。
【図５】図５は、タスク管理システムの実行するスケジューリング処理を説明するためのフローチャートである。
【図６】図６は、タスク管理プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するタスク管理システム、タスク管理サーバ、タスク管理方法、及びタスク管理プログラムの実施例を、図面を参照しながら詳細に説明する。なお、以下の実施例により本願の開示するタスク管理システム、タスク管理サーバ、タスク管理方法、及びタスク管理プログラムが限定されるものではない。
【００１３】
まず、本願の開示する一実施例に係るタスク管理システム１の構成を説明する。図１は、タスク管理システム１の概略構成を示す図である。図１に示す様に、タスク管理システム１は、サーバ１０、２０、３０、４０、５０と、レイヤ２スイッチ６０と、後述するスケジューリングサーバ７０と、ウィルス定義ファイル提供サーバ８０とを有する。サーバ１０、２０、３０、４０、５０とスケジューリングサーバ７０とは、レイヤ２スイッチ６０を介して、各種信号やデータの送受信が可能である。これにより、クラウドネットワークＣが形成されている。
【００１４】
サーバ１０、２０、３０、４０、５０は、レイヤ２スイッチ６０を介して、相互に各種信号やデータの送受信が可能である。サーバ１０は、一つまたは複数の仮想マシン１０ａ−１、２、・・・、ｎ（ｎは自然数）を内部に作成し、仮想スイッチ１０ｂにより、各仮想マシンの起動、停止等の切替え制御を行う。各仮想マシン１０ａ−１、２、・・・、ｎには、スケジュール管理用のソフトウェア（以下、「スケジューリングソフト」と記す。）がインストールされている。スケジューリングソフト１１ａ−１、２、・・・、ｎ（ｎは自然数）は、ＶＭ識別子、タスク名、開始予定時刻、収容サーバＩＤ、及び収容仮想スイッチＩＤのスケジューリングサーバ７０への通知を行う。また、スケジューリングソフト１１ａ−１、２、・・・、ｎは、スケジューリングサーバ７０のＩＰ（Internet  Protocol）アドレスの指定やスケジューリング結果の仮想マシン１０ａ−１、２、・・・、ｎへの設定を行う。
【００１５】
なお、他のサーバ２０、３０、４０、５０の概略構成は、上述したサーバ１０の構成と同様である。したがって、共通する構成要素には、末尾が同一の参照符号を用いると共に、その詳細な説明は省略する。
【００１６】
レイヤ２スイッチ６０は、クラウドネットワークＣの中継機器であり、データリンク層において、各種信号やデータの宛先を検出し、当該宛先への転送を行う。スケジューリングサーバ７０は、タスクの開始時刻が仮想マシン毎に格納されたスケジューリングＤＢ（Data  Base）を内蔵する。ウィルス定義ファイル提供サーバ８０は、各サーバ１０、２０、３０、４０、５０に収容された仮想マシンから、ウィルス定義ファイルの配信要求を受けると、レイヤ２スイッチ６０を介し、要求元に対して当該ファイルを送信する。送信されたウィルス定義ファイルは、各仮想マシンにおいて、既存のウィルスパターンの更新に使用される。
【００１７】
図２は、サーバ１０の機能構成を示すブロック図である。図２に示す様に、サーバ１０は、タスク名送信部１１とタスク開始時刻受信部１２とタスク開始時刻設定部１３とを有する。これら各構成部分は、一方向又は双方向に、信号やデータの入出力が可能なように接続されている。タスク名送信部１１は、自サーバ１０に収容された複数の仮想マシン１０ａ−１、２、・・・、ｎが実行を予定するタスクの名称及び実行の開始予定時刻を、スケジューリングサーバ７０に送信する。タスク開始時刻受信部１２は、スケジューリングサーバ７０から通知された、各仮想マシン１０ａ−１、２、・・・、ｎのタスク開始時刻を受信する。タスク開始時刻設定部１３は、受信されたタスク開始時刻を新たな開始予定時刻として、各仮想マシン１０ａ−１、２、・・・、ｎに設定する。
【００１８】
図３は、スケジューリングサーバ７０の機能構成を示すブロック図である。図３に示す様に、スケジューリングサーバ７０は、スケジューリングＤＢ７０ａとタスク名受信部７１とスケジューリング部７２とスケジューリング結果通知部７３とを有する。これら各構成部分は、一方向又は双方向に、信号やデータの入出力が可能なように接続されている。タスク名受信部７１は、各サーバ１０、２０、３０、４０、５０の各仮想マシンにおいて実行の予定されているタスクの名称及び実行の開始予定時刻を受信する。スケジューリング部７２は、タスクの実行を予定する仮想マシンの数を用いて、上記開始予定時刻が複数の仮想マシン間で重複しないように、各仮想マシンが上記タスクを実行する時刻を決定する。スケジューリング結果通知部７３は、各仮想マシン毎に決定された上記時刻を、新たな開始予定時刻として各サーバ１０、２０、３０、４０、５０に通知する。
【００１９】
図４は、スケジューリングサーバ７０のスケジューリングＤＢ７０ａにおけるデータ格納例を示す図である。図４に示す様に、スケジューリングＤＢ７０ａには、スケジューリング部７２によるスケジューリング後のタスク開始時刻が、実行対象となるタスクの名称（タスク名）と対応付けられて、仮想マシン毎に格納される。更に、スケジューリングＤＢ７０ａには、対応する仮想マシンの収容されているサーバを識別可能な情報が収容サーバとして格納され、当該サーバの有する仮想スイッチを識別可能な情報が収容仮想スイッチとして格納される。例えば、図４は、仮想スイッチ１０ｂを有するサーバ１０に収容された仮想マシンＶＭ１０ａ−１がウィルス定義ファイルをダウンロードするタスクの開始時刻が“０：００”にスケジューリングされていることを示す。同様に、図４は、サーバ２０に作成された仮想マシンＶＭ２０ａ−２によるダウンロード処理が“１６：００”に開始されることを示す。
【００２０】
なお、図４では、スケジューリングＤＢ７０ａ内のデータ（レコード）は、タスク開始時刻の昇順に格納されているが、データの格納される順序はこれに限らない。例えば、スケジューリングサーバ７０が開始予定時刻を受信した仮想マシンの順に、データが格納されるものとしてもよい。あるいは、スケジューリングサーバ７０は、ＶＭ識別子、収容サーバの識別子、収容仮想スイッチの識別子をパラメータとして、これらの昇順または降順に、データを格納するものとしてもよい。また、スケジューリングサーバ７０は、タスクの名称や種別毎に各データをソートするものとしてもよい。
【００２１】
また、上記開始時刻または開始予定時刻は、絶対的な時刻である必要は無く、ある時点（基準時）からの経過時間等、相対的な値であってもよい。換言すれば、上記開始時刻または開始予定時刻は、開始時間または開始予定時間であってもよい。
【００２２】
以上、サーバ１０の機能構成を説明したが、他のサーバ２０、３０、４０、５０の機能構成は、上述したサーバ１０の構成と同様である。したがって、共通する構成要素には、末尾が同一の参照符号を用いると共に、その詳細な説明は省略する。
【００２３】
次に、タスク管理システム１の動作を説明する。
【００２４】
図５は、タスク管理システム１の実行するスケジューリング処理を説明するためのフローチャートである。Ｓ１では、各サーバ１０、２０、３０、４０、５０は、自装置の収容する仮想マシンに、スケジューリングソフトをインストールする。このとき、各サーバ１０、２０、３０、４０、５０の管理者は、スケジューリングサーバ７０のＩＰアドレスを併せて指定する。これにより、各サーバ１０、２０、３０、４０、５０からスケジューリングサーバ７０へのアクセスが可能となる。なお、スケジューリングソフトは、各サーバに作成された各々の仮想マシンに個別にインストールされるものとしてもよいし、インストール済みの仮想マシンを雛型として、その他の仮想マシンにコピーされるものとしてもよい。
【００２５】
Ｓ２では、各サーバ１０、２０、３０、４０、５０の仮想マシンは、Ｓ１でインストールされたスケジューリングソフトにより、仮想マシンの起動時にまたは定期的に、スケジューリングサーバ７０にアクセスする。仮想マシン１０ａ−１〜ｎ、２０ａ−１〜ｎ、・・・、５０ａ−１〜ｎは、それぞれ現在自装置にスケジューリングされているタスクの名称とその開始予定時刻とを、各マシンのＩＤ（ＶＭ識別子）と共にスケジューリングサーバ７０に通知する。併せて、仮想マシン１０ａ−１〜ｎ、２０ａ−１〜ｎ、・・・、５０ａ−１〜ｎは、自装置を収容するサーバ及び仮想スイッチの識別子を通知するものとしてもよい。例えば、サーバ１０の仮想マシン１０ａ−１に、“０：００”に開始の予定されているタスクとして「ウィルス定義ファイルのダウンロード」が設定されている場合には、仮想マシン１０ａ−１は、スケジューリングサーバ７０に対して、タスク名とその開始予定時刻の各情報の他に、サーバ１０、仮想スイッチ１０ｂの識別子である“１０”、“１０ｂ”を通知する。
【００２６】
Ｓ２で送信されたタスク名及び開始予定時刻の各情報は、レイヤ２スイッチ６０を介して、スケジューリングサーバ７０に到達する。スケジューリングサーバ７０は、タスク名受信部７１により、これらの情報を受信すると、送信元の仮想マシンのＶＭ識別子と対応付けて、スケジューリングＤＢ７０ａに一旦格納する（Ｓ３）。その後、スケジューリングサーバ７０のスケジューリング部７２は、スケジューリングＤＢ７０ａに格納されている各ＶＭ識別子の仮想マシンにつき、タスクの開始時刻が相互に重複しないように、再スケジューリングを行う（Ｓ４）。当該スケジューリング処理は、スケジューリングサーバ７０が、各仮想マシンに設定されていた各開始予定時刻を参照して、自動的に実行するものとしてもよいし、サーバの管理者が手動でスケジューリングを行うものとしてもよい。また、スケジューリングサーバ７０は、これら双方の機能を併せ持つものとしてもよい。
【００２７】
スケジューリングサーバ７０におけるスケジューリング方式としては、種々の方式があるが、例えば、スケジューリングサーバ７０は、同一の名称のタスクが同時刻に開始されないようなスケジューリングを行う。具体的には、スケジューリング部７２は、下記算定式（１）を用いて、タスクの間隔を決定する。
【００２８】
タスクの間隔＝８６，４００秒（＝２４時間）÷タスク総数・・・（１）
【００２９】
再び図４を参照すると、スケジューリングＤＢ７０ａには、タスク名が「ウィルス定義ファイルのダウンロード」のタスクが６つ設定されている。したがって、上記タスク総数は“６”であり、その結果、タスクの間隔は４時間に設定される。すなわち、仮想マシン１０ａ−１がウィルス定義ファイルのダウンロードの実行を開始する時刻は０：００にスケジューリングされる。また、他の仮想マシン１０ａ−２、３、２０ａ−１、２、３がウィルス定義ファイルのダウンロードの実行を開始する時刻は、それぞれ４：００、８：００、１２：００、１６：００、２０：００にスケジューリングされる。これにより、ウィルス定義ファイルは、クラウドネットワークＣ内に存在する複数の仮想マシン間で、各々異なる時刻にダウンロードされることとなる。したがって、ファイルのダウンロードに伴うサーバやネットワークの処理の集中は回避され、トラフィック負荷が低減される。
【００３０】
また、スケジューリングサーバ７０は、別の態様として、負荷の掛かるハードウェアリソース（ＣＰＵ、メモリ、ＨＤＤ、ネットワーク等）に応じて、各タスクをタスク種別に分類することもできる。上述したように、仮想マシンの実行するタスクとしては、例えば、ＯＳのアップデート、ウィルス定義ファイルのダウンロード、ウィルススキャン、定期バックアップ処理等があるが、各々のタスクは、使用する（負荷を与える）ハードウェアリソースが異なる。すなわち、ＯＳのアップデート及びウィルス定義ファイルのダウンロードの実行では、主にネットワークに負荷が掛かり、ウィルススキャンでは、ＣＰＵ負荷の高騰やＨＤＤの読込み遅延が発生する。また、定期バックアップの実行では、ネットワークやＨＤＤに負荷が掛かる。このように、スケジューリングサーバ７０は、タスクの実行により負荷の掛かるハードウェアリソースに応じて、各タスクをタスク種別に分類することもできる。例えば、ＯＳのアップデートとウィルス定義ファイルとは、タスク名称は異なるが、実行に際して使用されるハードウェアリソースが同一であることから、タスク種別としては同一の種別に分類される。
【００３１】
したがって、かかる変形態様では、スケジューリングサーバ７０は、同一の種別のタスクが同時刻に開始されないようなスケジューリングを行う。これにより、使用するハードウェアリソースが異なる場合には、仮想マシン間におけるタスク開始時間の重複が許容される。具体的には、スケジューリング部７２は、下記算定式（２）を用いて、タスクの間隔を決定する。
【００３２】
タスクの間隔＝８６，４００秒（＝２４時間）÷種別毎のタスク総数・・・（２）
【００３３】
図４を参照すると、スケジューリングＤＢ７０ａには、タスク名が「ウィルス定義ファイルのダウンロード」のタスクが６つ設定されているが、その他のタスクとして更に「ＯＳのアップデート」が４つ設定されている場合を想定する。この場合、同一の種別に属するタスクの総数は“１０”  ＝（６＋４）であるので、スケジューリング部７２は、上記算定式（２）により、タスクの間隔を８，６４０秒と算出する。
【００３４】
かかる変形態様においても、スケジューリング部７２は、タスク管理システム１を構成する複数のハードウェアリソースの内、各タスクが、何れのハードウェアリソースに影響を与えるかをタスク毎に判別する。そして、スケジューリング部７２は、当該判別の結果をタスク開始時刻の決定に反映させる。換言すれば、スケジューリング部７２は、異なるタスクでも、同じハードウェアに負荷の掛かるタスクが同時に実行されることのないようなタスクスケジューリングを行う。これにより、特定のハードウェアリソースに同時刻に負荷が集中することが回避される。したがって、ハードウェアリソースにおける負荷は分散され、サーバやネットワークの負荷が低減される。
【００３５】
図５のＳ５では、スケジューリングサーバ７０のスケジューリング結果通知部７３は、Ｓ４におけるスケジューリングの結果として、タスクの名称とその開始時刻とを、仮想マシン毎に各サーバ１０、２０、３０、４０、５０に通知する。各サーバ１０、２０、３０、４０、５０は、Ｓ１でインストールされたスケジューリングソフトにより、各仮想マシン毎の上記スケジューリング結果を受信すると、当該情報（タスク名、開始時刻）を、自装置の収容する仮想マシン１０ａ−１〜ｎ、２０ａ−１〜ｎ、・・・、５０ａ−１〜ｎに定時タスクとして設定する（Ｓ６）。
【００３６】
以上説明したように、タスク管理システム１は、所定のタスクを実行するサーバ１０、２０、３０、４０、５０と、サーバ１０、２０、３０、４０、５０に接続されたスケジューリングサーバ７０とを有する。サーバ１０、２０、３０、４０、５０は、自サーバに収容された複数の仮想マシンが実行を予定するタスクの識別情報（例えば、タスクの名称）及び実行の開始予定時刻を、スケジューリングサーバ７０に送信するタスク名送信部１１、２１、３１、４１、５１をそれぞれ有する。スケジューリングサーバ７０は、スケジューリング部７２とスケジューリング結果通知部７３とをそれぞれ有する。スケジューリング部７２は、サーバ１０、２０、３０、４０、５０から送信された上記識別情報を有するタスクの開始予定時刻が上記複数の仮想マシン間で重複する場合、上記タスクの実行を予定する仮想マシンの数を用いて、上記開始予定時刻が上記複数の仮想マシン間で重複しないように、各仮想マシンが上記タスクを実行する時刻を決定する。スケジューリング結果通知部７３は、スケジューリング部７２により決定された、上記仮想マシン毎の時刻を各サーバ１０、２０、３０、４０、５０に通知する。サーバ１０、２０、３０、４０、５０は、スケジューリングサーバ７０から通知された上記時刻を、上記タスクの開始予定時刻として、上記各仮想マシンに設定するタスク開始時刻設定部１３、２３、３３、４３、５３をそれぞれ有する。
【００３７】
タスク管理システム１において、上記タスクの実行を予定する仮想マシンの数は、例えば、サーバ１０、２０、３０、４０、５０に収容されている仮想マシンの数である。あるいは、上記タスクの実行を予定する仮想マシンの数は、サーバ１０、２０、３０、４０、５０において起動している仮想マシンの数である。
【００３８】
すなわち、タスク管理システム１は、スケジューリング用のソフトウェアと、スケジューリングサーバ７０のＩＰを設定した仮想マシンを雛型とする、仮想マシンのコピーとをユーザに提供する。これにより、各仮想マシンの定期的なタスクが、データセンタ内で分散されるように自動的にスケジューリングされるため、管理が容易になる。また、各サーバ１０、２０、３０、４０、５０に収容されている仮想マシンは、サーバに収容されているだけで起動していないことがあり、サービス提供事業者は、起動していない仮想マシンを見越して、多めに仮想マシンを収容する。このため、起動している仮想マシンの数は、常に変動する。本実施例に係るタスク管理システム１では、スケジューリングサーバ７０は、収容されている仮想マシンの数のみならず、起動している仮想マシンの数に基づいて、タスク利用のスケジュールを再構成することもできる。したがって、タスク管理システム１は、使用可能時間（例えば、２４時間）を、現在起動中の仮想マシン間で公平に割り振った負荷の分散が可能となる。  
【００３９】
換言すれば、タスク管理システム１は、ＤａａＳにおいて、複数の仮想マシンの定時タスクの起動が重ならないようにスケジューリングをすることで、クラウドネットワークＣのユーザに対して、快適な環境を提供する方式が実現される。したがって、複数の仮想マシンが、定期的なタスクを分散して実行することで、サーバやネットワークの負荷を低減することができる。その結果、上述した定時タスク管理により、ＤａａＳにおける高負荷状態は回避される。また、タスク管理システム１は、同一の仮想スイッチに収容されている仮想マシンのタスクが重ならないようにすることで、仮想スイッチへの負荷を低減させることができる。更に、システムの管理者は、スケジューリングサーバ７０を確認することで、同一のデータセンタ内に存在する複数のサーバ上の複数の仮想マシンにスケジューリングされたタスクを、簡易迅速に確認することも可能となる。
【００４０】
タスク管理システム１の適用例として、例えば、サービス提供事業者が、データセンタ内にあるサーバ上に仮想マシンを作成する際、タスク開始時刻が重ならないように個別に設定変更を行うことで対処する手法もある。しかしながら、かかる手法では、仮想マシンが、ライフマイグレーションにより、他のサーバから移動してくるケースへの対応が困難である。すなわち、移動後の仮想マシンの設定が、移動先のサーバの環境において適切であるとは限らないことから、何らかの手法により、仮想マシンに事前にスケジューリングされているタスクの負荷が分散されるようにスケジューリングし直す必要がある。本実施例に係るタスク管理システム１によれば、上述のケースにも、柔軟かつ適応的に対応することができる。特に、国を跨ったマイグレーションでは、時差が発生する。このため、本来は、サーバやネットワークの利用者の少ない夜間にスケジューリングされていたタスクが、昼間に実行されてしまうという懸念がある。この場合には、仮想マシンにつき、マイグレーション後の移動先の環境に適したタスクスケジュールの再設定が必要となるが、本実施例に係るタスク管理システム１の適用により、上記懸念も容易かつ迅速に解消される。
【００４１】
［タスク管理プログラム］
図６は、タスク管理プログラムによる情報処理がコンピュータ１００を用いて具体的に実現されることを示す図である。図６に例示するように、コンピュータ１００は、例えば、メモリ１０１と、ＣＰＵ１０２と、ハードディスクドライブインタフェース１０３と、ディスクドライブインタフェース１０４と、シリアルポートインタフェース１０５と、ビデオアダプタ１０６と、ネットワークインタフェース１０７とを有し、これらの各部はバスＢによって接続される。
【００４２】
メモリ１０１は、図６に例示するように、ＲＯＭ（Read  Only  Memory）１０１ａ及びＲＡＭ（Random  Access  Memory）１０１ｂを含む。ＲＯＭ１０１ａは、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３は、図６に例示するように、ハードディスクドライブ１０８に接続される。ディスクドライブインタフェース１０４は、図６に例示するように、ディスクドライブ１０９に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０９に挿入される。シリアルポートインタフェース１０５は、図６に例示するように、例えばマウス１１０、キーボード１１１に接続される。ビデオアダプタ１０６は、図６に例示するように、例えばディスプレイ１１２に接続される。
【００４３】
ここで、図６に例示するように、ハードディスクドライブ１０８は、例えば、ＯＳ（Operating  System）１０８ａ、アプリケーションプログラム１０８ｂ、プログラムモジュール１０８ｃ、プログラムデータ１０８ｄを記憶する。すなわち、開示の実施例に係るタスク管理プログラムは、コンピュータ１００によって実行される指令が記述されたプログラムモジュール１０８ｃとして、例えばハードディスクドライブ１０８に記憶される。具体的には、上記実施例で説明したタスク名送信部１１、タスク開始時刻受信部１２、タスク開始時刻設定部１３、タスク名受信部７１、スケジューリング部７２、及びスケジューリング結果通知部７３と同様の情報処理を実行する各種手順が記述されたプログラムモジュール１０８ｃが、ハードディスクドライブ１０８に記憶される。また、タスク管理プログラムによる情報処理に用いられるデータは、プログラムデータ１０８ｄとして、例えばハードディスクドライブ１０８に記憶される。そして、ＣＰＵ１０２が、ハードディスクドライブ１０８に記憶されたプログラムモジュール１０８ｃやプログラムデータ１０８ｄを必要に応じてＲＡＭ１０１ｂに読み出し、上記各種手順を実行する。
【００４４】
なお、タスク管理プログラムに係るプログラムモジュール１０８ｃやプログラムデータ１０８ｄは、ハードディスクドライブ１０８に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１０９等を介してＣＰＵ１０２によって読み出されてもよい。あるいは、タスク管理プログラムに係るプログラムモジュール１０８ｃやプログラムデータ１０８ｄは、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７を介してＣＰＵ１０２によって読み出されてもよい。
【００４５】
なお、上記実施例では、スケジューリングサーバ７０は、タスク管理システム１内において、同一の名称あるいは種別のタスクが同時刻に実行されないようにスケジューリングを行うものとした。しかしながら、これに限らず、スケジューリングサーバ７０が、同一のサーバ（または仮想スイッチ）内において、同一の名称あるいは種別のタスクが同時刻に実行されないようにスケジューリングを行うものとしてもよい。かかる態様では、各サーバ１０、２０、３０、４０、５０における同一または同種タスクの同時実行は回避されるが、特定のタスクが、異なるサーバ同士で同時に実行される可能性が依然としてある。しかしながら、かかる態様でも、サーバ内のリソースであるＣＰＵ、メモリ、ＨＤＤの負荷は分散されることとなり、サーバ負荷は低減される。したがって、本実施例の目的は達成される。また、タスク管理システム１内に作成された仮想マシンの数が増加し、システム全体でタスクの開始時刻が重ならないようなスケジューリングが困難な場合にも対応が可能となる。
【００４６】
また、上記実施例では、スケジューリングサーバ７０は、仮想マシンが起動中であるか停止中であるかを問わず、タスクの実行を予定している全ての仮想マシンの数を用いて、各仮想マシン毎のタスクの開始時刻の決定（スケジューリング）を行うものとした。しかしながら、停止中の仮想マシンは定時タスクを実行しない。したがって、スケジューリングサーバ７０は、各サーバによる上記通知（図５のＳ２）の時点で起動している仮想マシンに関してのみタスクの開始時刻を決定し、停止中の仮想マシンについては、スケジューリングの対象から除外するものとしてもよい。これにより、各サーバに収容されている全ての仮想マシンをスケジューリングの対象とする場合と比較して、スケジューリング対象の仮想マシンが減少する。したがって、スケジューリングサーバ７０は、タスク開始時刻の決定に際して、時間（例えば、２４時間）を有効活用することができる。その結果、より効率的なスケジューリングが可能となる。
【００４７】
更に、上述したサーバ内での重複実行の回避と停止中の仮想マシンの除外とは、上記実施例に択一的に適用されるものではなく、タスク管理システム１は、これらの態様を組み合わせて適用するものとしてもよい。
【００４８】
また、スケジューリングサーバ７０において決定されるタスク間隔は、必ずしもタスク毎に不変である必要は無く、タスクの名称や種別に応じて、可変的に設定されるものとしてもよい。例えば、スケジューリング部７２は、完了する迄に時間の掛かるタスク（例えば、ＯＳのアップデート、ウィルススキャン）の間隔を、他のタスク（例えば、ウィルス定義ファイルのダウンロード、定期バックアップ処理）の間隔よりも長く設定するものとしてもよい。この場合、好適には、スケジューリング部７２は、タスクの間隔がタスクの所要時間以上となるように、タスクの間隔を設定する。これにより、他の仮想マシンによりタスクの実行が開始された時には、当該タスクがそれまで実行されていた仮想マシンによるタスクの実行は終了していることとなり、同一タスクの時間的な重なりは確実に回避される。但し、この場合でも、同一または同種のタスクが異なる仮想マシン間で重複しなければよい。すなわち、一方の仮想マシンでのタスク実行中に、他方の仮想マシンにおいて、別のタスクの実行が開始されるものとしてもよい。
【００４９】
更に、各サーバ１０、２０、３０、４０、５０が、スケジューリングサーバ７０に対して、タスク名称と開始予定時刻とを通知するタイミングに関し、各サーバの収容する各仮想マシン毎に個別のタイミングで通知してもよいし、全ての仮想マシンにつき一括で通知するものとしてもよい。通知の契機についても、各サーバ１０、２０、３０、４０、５０が、自装置独自のタイミングで自発的に通知するものとしてもよいし、スケジューリングサーバ７０からの通知要求を待機し、該要求の受信を契機として一斉に通知するものとしてもよい。タスク名称と開始予定時刻との通知は、スケジューリングサーバ７０からの要求を契機として実行されることで、スケジューリングサーバ７０は、スケジューリング処理の準備が整った状態で、各サーバ１０、２０、３０、４０、５０の各仮想マシンのタスクに関する情報を収集することができる。これにより、スケジューリングサーバ７０は、タスクの名称や開始予定時刻の情報を収集後、直ちにスケジューリングを行い、その結果であるタスクの新たな開始時刻を各サーバに通知することができる。したがって、サーバ１０、２０、３０、４０、５０側とスケジューリングサーバ７０側との間のタイムラグの少ない迅速なスケジューリング更新が可能となる。その結果、仮想マシンのマイグレーションや現在の仮想マシンの起動状況が適確に反映された、リアルタイムでの再スケジューリングが実現される。
【００５０】
また、サーバ１０、２０、３０、４０、５０及びスケジューリングサーバ７０の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は、図示のものに限らず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することもできる。例えば、タスク名送信部１１とタスク開始時刻受信部１２、あるいは、タスク名受信部７１とスケジューリング結果通知部７３をそれぞれ１つの構成要素として統合してもよい。反対に、スケジューリング部７２に関し、更に２つの構成部分に分散してもよい。この場合、第一の構成部分は、各サーバ１０、２０、３０、４０、５０から収集されたタスク名のタスクの開始予定時刻が複数の仮想マシン間で重複するか否かの判定を行う部分である。第二の構成部分は、収集された上記タスク名の数で判別される、タスクの実行を予定する仮想マシンの数を用いて、各仮想マシンがタスクを実行する時刻を決定する部分である。更に、ハードディスクドライブ１０８を、スケジューリングサーバ７０の外部装置としてネットワークやケーブル経由で接続するようにしてもよい。
【符号の説明】
【００５１】
１  タスク管理システム
１０、２０、３０、４０、５０  サーバ
１０ａ−１、１０ａ−２、１０ａ−３、・・・、１０ａ−ｎ  仮想マシン（ＶＭ）
２０ａ−１、２０ａ−２、２０ａ−３、・・・、２０ａ−ｎ  仮想マシン（ＶＭ）
３０ａ−１、３０ａ−２、３０ａ−３、・・・、３０ａ−ｎ  仮想マシン（ＶＭ）
４０ａ−１、４０ａ−２、４０ａ−３、・・・、４０ａ−ｎ  仮想マシン（ＶＭ）
５０ａ−１、５０ａ−２、５０ａ−３、・・・、５０ａ−ｎ  仮想マシン（ＶＭ）
１０ｂ、２０ｂ、３０ｂ、４０ｂ、５０ｂ  仮想スイッチ
１１  タスク名送信部
１２  タスク開始時刻受信部
１３  タスク開始時刻設定部
１１ａ−１、１１ａ−２、１１ａ−３、・・・、１１ａ−ｎ  スケジューリングソフト
２１ａ−１、２１ａ−２、２１ａ−３、・・・、２１ａ−ｎ  スケジューリングソフト
３１ａ−１、３１ａ−２、３１ａ−３、・・・、３１ａ−ｎ  スケジューリングソフト
４１ａ−１、４１ａ−２、４１ａ−３、・・・、４１ａ−ｎ  スケジューリングソフト
５１ａ−１、５１ａ−２、５１ａ−３、・・・、５１ａ−ｎ  スケジューリングソフト
６０  レイヤ２スイッチ
７０  スケジューリングサーバ
７０ａ  スケジューリングＤＢ
７１  タスク名受信部
７２  スケジューリング部
７３  スケジューリング結果通知部
８０  ウィルス定義ファイル提供サーバ
１００  コンピュータ
１０１  メモリ
１０１ａ  ＲＯＭ
１０１ｂ  ＲＡＭ
１０２  ＣＰＵ
１０３  ハードディスクドライブインタフェース
１０４  ディスクドライブインタフェース
１０５  シリアルポートインタフェース
１０６  ビデオアダプタ
１０７  ネットワークインタフェース
１０８  ハードディスクドライブ
１０８ａ  ＯＳ
１０８ｂ  アプリケーションプログラム
１０８ｃ  プログラムモジュール
１０８ｄ  プログラムデータ
１０９  ディスクドライブ
１１０  マウス
１１１  キーボード
１１２  ディスプレイ
Ｂ  バス
Ｃ  クラウドネットワーク
【図１】
0005632403.tif 000002
【図２】
0005632403.tif 000003
【図３】
0005632403.tif 000004
【図４】
0005632403.tif 000005
【図５】
0005632403.tif 000006
【図６】
0005632403.tif 000007