(57)【要約】  短期間の遊休状態となっている計算機リソースを考慮した、計算機リソースの予約方法を提供する。  端末と、業務を実行する計算機と、業務を実行させる計算機の割当てを管理するスケジュール管理サーバと、を備える計算機システムにおけるスケジュール管理方法であって、計算機は仮想計算機を管理する仮想マシンモニタを備え、スケジュール管理サーバは仮想計算機の予約状況を含む予約情報を管理し、業務に割り当てる仮想計算機の予約スケジュールを生成するスケジュール管理部を備え、スケジュール生成方法は、予約情報を参照して、仮想計算機毎に空き期間を抽出するステップと、一つの仮想計算機の空き期間に設定される予約期間の終点と、他の仮想計算機の空き期間に設定される予約期間の開始点とが一致又は重なるように各仮想計算機を予約することによって、予約要求期間と一致する期間の予約スケジュールを生成するステップとを含む。
2012025977.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが操作する端末と、前記ユーザの業務を実行する複数の計算機と、前記ユーザの業務を実行させる前記計算機の割当てを管理するスケジュール管理サーバと、を備える計算機システムにおけるスケジュール管理方法であって、
前記端末は、第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリと、前記第１のプロセッサに接続される第１のネットワークインタフェースと、前記第１のプロセッサに接続される入出力部とを備え、
前記計算機は、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリと、前記第２のプロセッサに接続される第２のネットワークインタフェースとを備え、
前記スケジュール管理サーバは、第３のプロセッサと、前記第３のプロセッサに接続される第３のメモリと、前記第３のプロセッサに接続される第３のネットワークインタフェースとを備え、
前記第２のメモリは、
前記計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する仮想マシンモニタと、
前記各仮想計算機上で実行され、前記ユーザの業務を実行するオペレーティングシステムと、を格納し、
前記第３のメモリは、
前記ユーザの業務に割り当てる前記仮想計算機を予約するための予約要求を受信する要求受信部と、
前記各仮想計算機の予約状況を含む予約情報を管理し、前記ユーザの業務に割り当てる前記仮想計算機の予約スケジュールを生成するスケジュール管理部と、を格納し、
前記スケジュール生成方法は、
前記要求受信部が、前記端末から送信される、ユーザが希望する予約要求期間を含む前記予約要求を受信する第１のステップと、
前記スケジュール管理部が、前記予約情報を参照して、前記仮想計算機毎に、新たな予約が可能な期間である空き期間を抽出する第２のステップと、
前記スケジュール管理部が、前記受信した予約要求と、前記抽出された各仮想計算機の空き期間とに基づいて、予約可能な前記仮想計算機が実行される前記計算機を選択する第３のステップと、
前記選択された計算機上で実行される一つの前記仮想計算機の空き期間に設定される予約期間の終点と、前記決定された計算機上で実行される他の前記仮想計算機の空き期間に設定される予約期間の開始点とが一致又は重なるように前記各仮想計算機を予約することによって、前記予約要求期間と一致する期間の予約スケジュールを生成する第４のステップと、
前記スケジュール管理部が、前記生成された予約スケジュールに基づいて、前記予約情報を更新する第５のステップと、
前記スケジュール管理部が、前記更新された予約情報に基づいて、前記ユーザの業務を実行する前記仮想計算機から、予約された他の前記仮想計算機に前記ユーザの業務をマイグレーションする第６のステップと、
を含むことを特徴とするスケジュール管理方法。
【請求項２】
前記第４のステップでは、前記スケジュール管理部が、前記設定される予約期間と、前記設定される予約期間以前の空き時間に設定され、マイグレーション実行期間を示す仮予約期間とを含む前記予約スケジュールを生成することを特徴とする請求項１に記載のスケジュール管理方法。
【請求項３】
前記第４のステップは、
前記スケジュール管理部が、前記設定される予約期間に関する第１の割当スケジュールを生成する第７のステップと、
前記スケジュール管理部が、前記設定される仮予約期間に関する第２の割当スケジュールを生成する第８のステップと、
前記スケジュール管理部が、前記生成された第１の割当スケジュール及び第２の割当スケジュールに基づいて、前記予約スケジュールを生成する第９のステップと、
を含むことを特徴とする請求項２に記載のスケジュール管理方法。
【請求項４】
前記スケジュール管理部は、前記第１の割当スケジュールを生成するための生成条件を複数保持し、
前記予約要求は、前記予約スケジュールを選択するための選択基準情報を含み、
前記７のステップでは、前記スケジュール管理部が、前記生成条件毎に、一つの前記第１の割当スケジュールを生成し、
前記第８のステップでは、前記スケジュール管理部が、前記生成された第１の割当スケジュール毎に、対応する前記第２の割当スケジュールを一つ生成し、
前記第９のステップでは、前記スケジュール管理部が、前記複数の第１の割当スケジュールと、対応する前記複数の第２の割当スケジュールとに基づいて、複数の前記予約スケジュールを生成し、
前記スケジュール管理方法は、前記第４のステップが実行された後に、さらに、前記スケジュール管理部が、前記受信した予約要求に基づいて、前記生成された複数の予約スケジュールのなかから、一つの前記予約スケジュールを選択する第１０のステップを含むことを特徴とする請求項３に記載のスケジュール管理方法。
【請求項５】
前記第６のステップでは、
前記スケジュール管理部が、周期的に時刻を取得し、
前記スケジュール管理部が、前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、前記スケジュール管理部が、前記マイグレーション先の仮想計算機の負荷を取得し、
前記取得されたマイグレーション先の仮想計算機の負荷が所定の閾値以下である場合に、前記スケジュール管理部が、前記マイグレーション元の仮想計算機上で実行される前記ユーザの業務を、前記マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項２に記載のスケジュール管理方法。
【請求項６】
前記第６のステップでは、
前記スケジュール管理部が、周期的に時刻を取得し、
前記スケジュール管理部が、前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合には、前記スケジュール管理部が、前記ユーザの業務が実行されるマイグレーション元の仮想計算機のジョブの実行状況を監視し、
前記ジョブの実行完了が検知された場合に、前記スケジュール管理部が、前記マイグレーション元の仮想計算機上で実行されるユーザの業務を、前記マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項２に記載のスケジュール管理方法。
【請求項７】
前記第６のステップでは、
前記スケジュール管理部が、周期的に時刻を取得し、
前記スケジュール管理部が、前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、前記スケジュール管理部が、前記ユーザの業務が実行されるマイグレーション元の仮想計算機の障害を監視し、
前記マイグレーション元の仮想計算機に障害が発生したことが検知された場合に、前記スケジュール管理部が、前記マイグレーション元の仮想計算機上で実行される前記ユーザの業務を、前記マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項２に記載のスケジュール管理方法。
【請求項８】
前記予約期間内では、当該予約期間が設定された前記仮想計算機は、新たな予約ができない状態であり、
前記仮予約期間内では、当該仮予約期間が設定された前記仮想計算機は、新たな予約が可能な状態であり、
前記スケジュール管理部は、新たな前記予約要求を受信した場合に、前記仮予約期間を、前記空き時間として抽出することを特徴とする請求項２に記載のスケジュール生成方法。
【請求項９】
計算機が備える物理資源を論理的に分割することによって生成された仮想計算機に対するユーザの業務の割当てを管理するスケジュール管理サーバであって、
前記スケジュール管理サーバは、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続されるネットワークインタフェースとを備え、
前記メモリは、
前記ユーザの業務に割り当てる前記仮想計算機を予約するための予約要求を受信する要求受信部と、
前記各仮想計算機の予約状況を含む予約情報を管理し、前記ユーザの業務に割り当てる前記仮想計算機の予約スケジュールを生成するスケジュール管理部と、を備え、
前記要求受信部は、ユーザが希望する予約要求期間を含む前記予約要求を受信し、
前記スケジュール管理部は、
前記予約情報を参照して、前記仮想計算機毎に、新たな予約が可能な期間である空き期間を抽出し、
前記受信した予約要求と、前記抽出された各仮想計算機の空き期間とに基づいて、予約可能な前記仮想計算機が実行される前記計算機を選択し、
前記選択された計算機上で実行される一つの前記仮想計算機の空き期間に設定される予約期間の終点と、前記決定された計算機上で実行される他の前記仮想計算機の空き期間に設定される予約期間の開始点とが一致又は重なるように前記各仮想計算機を予約することによって、前記予約要求期間と一致する期間の予約スケジュールを生成し、
前記生成された予約スケジュールに基づいて、前記予約情報を更新し、
前記更新された予約情報に基づいて、前記ユーザの業務を実行する前記仮想計算機から、予約された他の前記仮想計算機に前記ユーザの業務をマイグレーションすることを特徴とするスケジュール管理サーバ。
【請求項１０】
前記スケジュール管理部は、前記予約スケジュールを生成する場合に、前記各仮想計算機に設定される予約期間と、前記各仮想計算機に設定される予約期間以前の空き時間に設定され、マイグレーション実行期間を示す仮予約期間とを含む前記予約スケジュールを生成することを特徴とする請求項９に記載のスケジュール管理サーバ。
【請求項１１】
前記スケジュール管理部は、前記予約スケジュールを生成する場合に、
前記設定される予約期間に関する第１の割当スケジュールを生成し、
前記設定される仮予約期間に関する第２の割当スケジュールを生成し、
前記生成された第１の割当スケジュール及び第２の割当スケジュールに基づいて、前記予約スケジュールを生成することを特徴とする請求項１０に記載のスケジュール管理サーバ。
【請求項１２】
前記スケジュール管理部は、前記第１の割当スケジュールを生成するための生成条件を複数保持し、
前記予約要求は、前記予約スケジュールを選択するための選択基準情報を含み、
前記スケジュール管理部は、
前記生成条件毎に、一つの前記第１の割当スケジュールを生成し、
前記生成された第１の割当スケジュール毎に、対応する前記第２の割当スケジュールを一つ生成し、
前記複数の第１の割当スケジュールと、対応する前記複数の第２の割当スケジュールとに基づいて、複数の前記予約スケジュールを生成し、
前記受信した予約要求に基づいて、前記生成された複数の予約スケジュールのなかから、一つの前記予約スケジュールを選択することを特徴とする請求項１１に記載のスケジュール管理サーバ。
【請求項１３】
前記スケジュール管理部は、
周期的に時刻を取得し、
前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、前記マイグレーション先の仮想計算機の負荷を取得し、
前記取得されたマイグレーション先の仮想計算機の負荷が所定の閾値以下である場合に、前記マイグレーション元の仮想計算機上で実行される前記ユーザの業務を、前記マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項１０に記載のスケジュール管理サーバ。
【請求項１４】
前記スケジュール管理部は、
周期的に時刻を取得し、
前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、前記ユーザの業務が実行されるマイグレーション元の仮想計算機のジョブの実行状況を監視し、
前記ジョブの実行完了が検知された場合に、前記マイグレーション元の仮想計算機上で実行されるユーザの業務を、前記マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項１０に記載のスケジュール管理サーバ。
【請求項１５】
前記スケジュール管理部は、
周期的に時刻を取得し、
前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、前記ユーザの業務が実行されるマイグレーション元の仮想計算機の障害を監視し、
前記マイグレーション元の仮想計算機に障害が発生したことが検知された場合に、前記マイグレーション元の仮想計算機上で実行される前記ユーザの業務を、前記マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項１０に記載のスケジュール管理サーバ。
【請求項１６】
前記予約期間内では、当該予約期間が設定された前記仮想計算機は、新たな予約ができない状態であり、
前記仮予約期間内では、当該仮予約期間が設定された前記仮想計算機は、新たな予約が可能な状態であり、
前記スケジュール管理部は、新たな前記予約要求を受信した場合に、前記仮予約期間を、前記空き時間として抽出することを特徴とする請求項１０に記載のスケジュール管理サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザの業務を実行する仮想計算機の割当てスケジューリングに関する。特に、ホットマイグレーションを用いた、仮想計算機の割当てスケジューリングに関する。
【背景技術】
【０００２】
複数の物理計算機上に複数の仮想計算機を構築し、仮想計算機上でミッションクリティカルな業務を実行するシステムが近年増大してきている。ミッションクリティカルな業務を実行する場合、他の業務も並列して稼働させなければならない。したがって、ミッションクリティカルな業務を実行するために必要な計算機リソースを予め確保する必要がある。すなわち、予め、計算機リソースの割当てを決定する必要がある。【０００３】
以下、業務を実行に必要な計算機リソースを予め確保することを、「予約する」と記載する。【０００４】
予約された計算機リソースは、他の業務が当該計算機リソースを予約ができない占有状態となる。【０００５】
計算機リソースを予約する場合において、ミッションクリティカルな業務は連続稼働させなければならないため、業務に応じたリソース量を数時間、数日、又は数ヶ月単位で予約する必要がある。前述したような状況の下、計算機リソースを効率よく確保する予約方法が重要視されている。【０００６】
例えば、特許文献１には、ユーザの希望予約期間に合致する計算機リソースを検索し、当該希望予約期間を包含する最大空き期間を有する計算機リソースを予約する技術が開示されている。特許文献１に開示された発明では、複数の計算機リソースが予約されている場合に、希望予約期間を最も長く確保できる計算機リソースが検索され、検索結果に基づいて計算機リソースが予約される。これによって、計算機リソースの遊休期間を減らし、多くの予約を受付ることが可能となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−１９３４７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述した特許文献１に開示された発明では、希望予約期間を包含する空き時間を有する計算機リソースがない場合には、計算機リソースを予約することができない。特許文献１に記載の発明では、希望予約期間以上の空き時間を有する計算機リソースのみが処理対象とするため、希望予約期間より小さい空き時間を有する計算機リソースは予約の対象とならない。【０００９】
したがって、特許文献１に開示された発明では、計算機リソースの遊休期間を減らすことは可能であるが、短期間に遊休状態となっている計算機リソースを最大限に有効活用することができない。【００１０】
本発明は、短期間の遊休状態となっている計算機リソースを考慮した、計算機リソースの予約方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の代表的な一例を示せば以下の通りである。すなわち、ユーザが操作する管理計算機と、前記ユーザの業務を実行する複数の計算機と、前記ユーザの業務を実行させる前記計算機の割当てを管理するスケジュール管理サーバと、を備える計算機システムにおけるスケジュール管理方法であって、前記管理計算機は、第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリと、前記第１のプロセッサに接続される第１のネットワークインタフェースと、前記第１のプロセッサに接続される入出力部とを備え、前記計算機は、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリと、前記第２のプロセッサに接続される第２のネットワークインタフェースとを備え、前記スケジュール管理サーバは、第３のプロセッサと、前記第３のプロセッサに接続される第３のメモリと、前記第３のプロセッサに接続される第３のネットワークインタフェースとを備え、前記第２のメモリは、前記計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する仮想マシンモニタと、前記各仮想計算機上で実行され、前記ユーザの業務を実行するオペレーティングシステムと、を備え、前記第３のメモリは、前記ユーザの業務に割り当てる前記仮想計算機を予約するための予約要求を受信する要求受信部と、前記各仮想計算機の予約状況を含む予約情報を管理し、前記ユーザの業務に割り当てる前記仮想計算機の予約スケジュールを生成するスケジュール管理部と、を備え、前記スケジュール生成方法は、前記要求受信部が、前記管理計算機から送信される、前記ユーザが希望する予約要求期間を含む前記予約要求を受信する第１のステップと、前記スケジュール管理部が、前記予約情報を参照して、前記仮想計算機毎に、新たな予約が可能な期間である空き期間を抽出する第２のステップと、前記スケジュール管理部が、前記受信した予約要求と、前記抽出された各仮想計算機の空き期間とに基づいて、予約可能な前記仮想計算機が実行される前記計算機を選択する第３のステップと、前記選択された計算機上で実行される一つの前記仮想計算機の空き期間に設定される予約期間の終点と、前記決定された計算機上で実行される他の前記仮想計算機の空き期間に設定される予約期間の開始点とが一致又は重なるように前記各仮想計算機を予約することによって、前記予約要求期間と一致する期間の予約スケジュールを生成する第４のステップと、前記スケジュール管理部が、前記生成された予約スケジュールに基づいて、前記予約情報を更新する第５のステップと、前記スケジュール管理部が、前記更新された予約情報に基づいて、前記ユーザの業務を実行する前記仮想計算機から、予約された他の前記仮想計算機に前記ユーザの業務をマイグレーションする第６のステップと、を含むことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、一つの仮想計算機に予約要求期間以上の空き期間がない場合であっても、複数の仮想計算機の空き時間に設定される予約期間が連続的になるようなスケジュールを生成することができる。これによって、短い空き時間を有効利用すると共に、一つの仮想計算機を予約した場合と同様の占有状態を実現できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態の計算機システムの構成例を示すブロック図である。
【図２】本発明の第１の実施形態の計算機の装置構成を説明するブロック図である。
【図３】本発明の第１の実施形態の管理クライアントの装置構成を説明するブロック図である。
【図４】本発明の第１の実施形態のスケジュール管理サーバの装置構成を説明するブロック図である。
【図５】本発明の第１の実施形態の候補リストの一例を示す説明図である。
【図６】本発明の第１の実施形態の仮予約期間リストの一例を示す説明図である。
【図７】本発明の第１の実施形態の予約モデルの一例を示す説明図である。
【図８】本発明の第１の実施形態の構成情報の一例を示す説明図である。
【図９】本発明の第１の実施形態のマイグレーション情報の一例を示す説明図である。
【図１０】本発明の第１の実施形態の評価定義情報の一例を示す説明図である。
【図１１】本発明の第１の実施形態のスケジュール情報の一例を示す説明図である。
【図１２】本発明の第１の実施形態のスケジュール情報の一例を示す説明図である。
【図１３】本発明の第１の実施形態の予約状態情報の一例を示す説明図である。
【図１４Ａ】本発明の第１の実施形態の空きリソース情報の一例を示す説明図である。
【図１４Ｂ】本発明の第１の実施形態の空きリソース情報の一例を示す説明図である。
【図１５】本発明の第１の実施形態における入出力装置に出力される操作画面の一例を示す説明図である。
【図１６】本発明の第１の実施形態のスケジュール管理サーバが実行する予約処理の概要を説明するフローチャートである。
【図１７】本発明の第１の実施形態のメモリ上に格納される予約要求の一例を示す説明図である。
【図１８】本発明の第１の実施形態における検索処理を説明するフローチャートである。
【図１９】本発明の第１の実施形態における候補リスト生成処理を説明するフローチャートである。
【図２０】本発明の第１の実施形態における仮予約期間リスト生成処理を説明するフローチャートである。
【図２１Ａ】本発明の第１の実施形態における候補リスト生成処理の具体例を示す説明図である。
【図２１Ｂ】本発明の第１の実施形態における候補リスト生成処理の具体例を示す説明図である。
【図２１Ｃ】本発明の第１の実施形態における候補リスト生成処理の具体例を示す説明図である。
【図２１Ｄ】本発明の第１の実施形態における候補リスト生成処理の具体例を示す説明図である。
【図２２Ａ】本発明の第１の実施形態における仮予約期間リスト生成処理の具体例を示す説明図である。
【図２２Ｂ】本発明の第１の実施形態における仮予約期間リスト生成処理の具体例を示す説明図である。
【図２３】本発明の第１の実施形態における予約モデル生成処理を説明するフローチャートである。
【図２４】本発明の第１の実施形態における予約設定処理を説明するフローチャートである。
【図２５】本発明の第１の実施形態におけるマイグレーション処理を説明するフローチャートである。
【図２６Ａ】本発明の第２の実施形態における候補リスト生成処理を説明するフローチャートである。
【図２６Ｂ】本発明の第２の実施形態における候補リスト生成処理を説明するフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を用いて本発明の実施形態について説明する。
【００１５】
［第１の実施形態］
【００１６】
図１は、本発明の第１の実施形態の計算機システムの構成例を示すブロック図である。
【００１７】
第１の実施形態の計算機システムは、管理クライアント１００、スケジュール管理サーバ１１０、及び計算機１２０−１、１２０−２から構成される。
【００１８】
管理クライアント１００、スケジュール管理サーバ１１０、及び計算機１２０−１、１２０−２は、互いにネットワーク１６０を介して接続される。ネットワーク１６０は、例えば、ＬＡＮ等が考えられる。なお、本発明は、ネットワーク１６０の接続方法に限定されるものではない。
【００１９】
管理クライアント１００は、ユーザが操作する計算機である。スケジュール管理サーバ１１０は、業務を実行する仮想計算機（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：以下ＶＭと記載する）の割当てを管理する。計算機１２０−１、１２０−２は、ユーザの業務を実行する。なお、計算機１２０−１、１２０−２は、スケジュール管理サーバ１１０の管理対象となる計算機である。
【００２０】
図１に示すように、計算機１２０−１は、ハイパバイザ１３０を備える。ハイパバイザ１３０は、ＶＭ１（１４０−１）及びＶＭ２（１４０−２）を管理する。なお、計算機１２０−２も同様の構成であるため説明を省略する。
【００２１】
以下、計算機１２０−１、１２０−２を区別しない場合、計算機１２０と記載する。また、ＶＭ（１４０−１）及びＶＭ２（１４０−２）を区別しない場合、単にＶＭ１４０と記載する。
【００２２】
第１の実施形態では、計算機リソースとして計算機１２０上に生成されたＶＭ１４０が各業務に割り当てられる。
【００２３】
ハイパバイザ１３０は、計算機１２０が備える計算機リソースを論理的に分割することによってＶＭ１４０を生成し、また、生成されたＶＭ１４０を管理する。また、ハイパバイザ１３０は、ＶＭ１４０を削除することによって、計算機リソースを解放することができる。
【００２４】
図１に示す例では、ハイパバイザ１３０は、計算機１２０−１上に生成されたＶＭ１（１４０−１）及びＶＭ２（１４０−２）を管理する。
【００２５】
ＶＭ１４０は、ユーザの業務に対応するゲストＯＳを実行する。図１に示す例では、ＶＭ１４０−１はゲストＯＳ１５０−１を実行し、ＶＭ１４０−２はゲストＯＳ１５０−２を実行する。
【００２６】
なお、ＶＭ１４０上では、ゲストＯＳ１５０−１、１５０−２以外のアプリケーションが実行されてもよい。
【００２７】
ユーザは、当該ユーザが希望する使用期間を指定して、業務を実行するＶＭ１４０を予約する。以下、ユーザが希望する使用期間をユーザ要求期間と記載する。予約されたＶＭ１４０は、他の業務が当該ＶＭ１４０を予約できない占有状態となる。
【００２８】
本発明では、新たなＶＭ１４０の予約要求を受信したスケジュール管理サーバ１１０が、一つのＶＭ１４０にユーザ要求期間分の予約ができない場合に、ユーザ要求期間を満たすＶＭ１４０の割当てスケジュールを生成する。
【００２９】
具体的には、スケジュール管理サーバ１１０は、各ＶＭ１４０の予約状態を確認し、ＶＭ１４０の空き時間を抽出する。ここで、ＶＭ１４０の空き時間は、ＶＭ１４０が予約されていない時間を表す。
【００３０】
スケジュール管理サーバ１１０は、各ＶＭ１４０の空き時間に設定する予約期間が連続的になるように、ＶＭ１４０を予約する。すなわち、スケジュール管理サーバ１１０は、各ＶＭ１４０の空き時間をつなぎ合わせて、ユーザ要求期間を満たすＶＭ１４０の割当てスケジュールを生成する。
【００３１】
これによって、ユーザ要求期間分の占有状態を作り出せることができる。すなわち、一つのＶＭ１４０に対してユーザ要求期間分の予約した場合と同様の状態を作り出せる。したがって、ユーザ要求期間では、業務が途切れることなく実行可能となる。
【００３２】
第１の実施形態では、業務を実行するＶＭ１４０から他のＶＭ１４０に業務を移動させる場合に、マイグレーションが実行される。第１の実施形態では、スケジュール管理サーバ１１０は、ＶＭ１４０の割当てスケジュールを生成する場合に、さらに、ＶＭ１４０の空き時間に、マイグレーションの実行期間である仮予約期間を設定する。これによって、マイグレーションを安全かつ確実に実行することが可能となる。
【００３３】
次に、管理クライアント１００、スケジュール管理サーバ１１０、及び計算機１２０のそれぞれの装置構成について説明する。
【００３４】
図２は、本発明の第１の実施形態の計算機１２０の装置構成を説明するブロック図である。
【００３５】
計算機１２０は、ＣＰＵ２００、メモリ２１０、不揮発性記憶媒体２２０及びネットワークインタフェース２３０を備える。ＣＰＵ２００、メモリ２１０、不揮発性記憶媒体２２０及びネットワークインタフェース２３０は、互いに、内部バス等を介して接続される。
【００３６】
ＣＰＵ２００は、メモリ２１０上に格納されるプログラムを実行する。これによって、計算機１２０が備える機能が実現される。
【００３７】
メモリ２１０は、ＣＰＵ２００が実行するプログラム及び当該プログラムを実行するために必要な情報を格納する。具体的には、メモリ２１０は、構成情報送信部２４０、負荷情報送信部２５０及び切替実行部２６０を格納する。なお、メモリ２１０は、他の情報を格納してもよい。
【００３８】
構成情報送信部２４０は、スケジュール管理サーバ１１０に、計算機１２０上に生成されたＶＭ１４０の構成情報を送信する。
【００３９】
なお、構成情報送信部２４０は、周期的、又は、計算機１２０上のＶＭ１４０の構成情報が変更された場合に、ＶＭ１４０の構成情報を送信する方法が考えられる。また、構成情報送信部２４０は、スケジュール管理サーバ１１０から取得要求を受信した場合に、ＶＭ１４０の構成情報を送信してもよい。
【００４０】
負荷情報送信部２５０は、計算機１２０上に生成されたＶＭ１４０の負荷情報を取得し、取得された負荷情報をスケジュール管理サーバ１１０に送信する。
【００４１】
なお、負荷情報送信部２５０は、周期的、又は、スケジュール管理サーバ１１０から負荷情報の取得要求を受信した場合に、取得された負荷情報を送信する。
【００４２】
切替実行部２６０は、スケジュール管理サーバ１１０からマイグレーション実行命令を受信した場合に、マイグレーションを実行する。第１の実施形態では、切替実行部２６０は、同一の計算機１２０上のＶＭ１４０間を移動するホットマイグレーションを実行する。
【００４３】
なお、構成情報送信部２４０、負荷情報送信部２５０及び切替実行部２６０は、ハイパバイザ１３０によって管理される。
【００４４】
不揮発性記憶媒体２２０は、計算機１２０が必要とする各種情報を格納する。不揮発性記憶媒体２２０は、例えば、ＨＤＤ又はＳＳＤ等が考えられる。
【００４５】
不揮発性記憶媒体２２０には、例えば、メモリ２１０上に格納されるプログラムが格納される。ＣＰＵ２００は、プログラム実行時に、不揮発性記憶媒体２２０から所定のプログラムをメモリ２１０上に読み出し、読み出されたプログラムを実行する。
【００４６】
ネットワークインタフェース２３０は、外部の装置とネットワークを介して接続するためのインタフェースである。
【００４７】
図３は、本発明の第１の実施形態の管理クライアント１００の装置構成を説明するブロック図である。
【００４８】
管理クライアント１００は、ＣＰＵ３００、メモリ３１０、不揮発性記憶媒体３２０、ネットワークインタフェース３３０及び入出力装置３４０を備える。ＣＰＵ３００、メモリ３１０、不揮発性記憶媒体３２０、ネットワークインタフェース３３０及び入出力装置３４０は、互いに、内部バス等を介して接続される。
【００４９】
ＣＰＵ３００は、メモリ３１０上に格納されるプログラムを実行する。これによって、管理クライアント１００が備える機能が実現される。
【００５０】
メモリ３１０は、ＣＰＵ３００が実行するプログラム及び当該プログラムを実行するために必要な情報を格納する。具体的には、メモリ３１０は、条件入力部３５０及び結果出力部３６０を備える。なお、メモリ３１０は、他の情報を格納してもよい。
【００５１】
条件入力部３５０は、後述する予約モデルを生成するための条件を入力する。また、条件入力部３５０は、入力された条件をスケジュール管理サーバ１１０に送信する。
【００５２】
結果出力部３６０は、各種処理の結果を出力する。
【００５３】
なお、条件入力部３５０及び結果出力部３６０によって実現される操作画面の一例を、図１５を用いて後述する。
【００５４】
不揮発性記憶媒体３２０は、管理クライアント１００が必要とする各種情報を格納する。不揮発性記憶媒体３２０は、例えば、ＨＤＤ又はＳＳＤ等が考えられる。
【００５５】
不揮発性記憶媒体３２０には、例えば、メモリ３１０上に格納されるプログラムが格納される。ＣＰＵ３００は、プログラム実行時に、不揮発性記憶媒体３２０から所定のプログラムをメモリ３１０上に読み出し、読み出されたプログラムを実行する。
【００５６】
ネットワークインタフェース３３０は、外部の装置とネットワークを介して接続するためのインタフェースである。
【００５７】
入出力装置３４０は、各種情報を入力し、又は、各種処理結果を表示するための装置である。入出力装置３４０は、例えば、キーボード、マウス及びディスプレイ等を含む。
【００５８】
条件入力部３５０は、入出力装置３４０を用いて入力された情報を取得し、取得された情報をスケジュール管理サーバ１１０等に送信する。また、結果出力部３６０は、スケジュール管理サーバ１１０等から受信した情報を入出力装置３４０に出力する。
【００５９】
図４は、本発明の第１の実施形態のスケジュール管理サーバ１１０の装置構成を説明するブロック図である。
【００６０】
スケジュール管理サーバ１１０は、ＣＰＵ４００、メモリ４１０、不揮発性記憶媒体４２０及びネットワークインタフェース４３０を備える。ＣＰＵ４００、メモリ４１０、不揮発性記憶媒体４２０及びネットワークインタフェース４３０は、互いに、内部バス等を介して接続される。
【００６１】
ＣＰＵ４００は、メモリ４１０上に格納されるプログラムを実行する。これによって、スケジュール管理サーバ１１０が備える機能が実現される。
【００６２】
メモリ４１０は、ＣＰＵ４００が実行するプログラム及び当該プログラムを実行するために必要な情報を格納する。具体的には、メモリ４１０は、構成情報取得部４４１、スケジュール管理部４４２、構成情報管理部４４３、空き時間検出部４４４、予約モデル生成部４４５、負荷測定部４４６、マイグレーション命令部４４７、結果出力部４４８、及び要求取得部４４９を備える。なお、メモリ４１０は、他の情報を格納してもよい。
【００６３】
構成情報取得部４４１は、各計算機１２０の構成情報送信部２４０から送信されるＶＭ１４０の構成情報を取得する。
【００６４】
構成情報取得部４４１は、ＶＭ１４０の構成情報を取得するための取得要求を各計算機１２０に送信することによって、ＶＭ１４０の構成情報を取得する。構成情報取得部４４１は、周期的、又は、スケジュール管理部４４２が実行する予約処理の開始時に取得要求を送信してもよい。
【００６５】
スケジュール管理部４４２は、ＶＭ１４０の予約状況を管理すると共に、ＶＭ１４０を予約するための予約処理を実行する。
【００６６】
構成情報管理部４４３は、各計算機１２０の構成情報送信部２４０から送信される構成情報を管理する。また、構成情報管理部４４３は、取得されたＶＭ１４０の構成情報を構成情報４５１に格納する。
【００６７】
空き時間検出部４４４は、ＶＭ１４０の空き時間を検出する。なお、第１の実施形態では、ＶＭ１４０の空き時間を空きリソースとも記載する。
【００６８】
予約モデル生成部４４５は、空き時間検出部４４４によって検出されたＶＭ１４０の空き時間に基づいて、予約モデルを生成する。ここで、予約モデルとは、ユーザ要求期間を満たすＶＭ１４０の割当てスケジュールを表す。
【００６９】
負荷測定部４４６は、仮予約期間中における、移動先のＶＭ１４０の負荷情報を取得する。具体的には、負荷測定部４４６は、移動先のＶＭ１４０の負荷情報を取得するための負荷情報の取得要求を送信する。負荷情報の取得要求を受信した計算機１２０は、当該計算機１２０上に生成されるＶＭ１４０の負荷情報を取得する。さらに、計算機１２０の負荷情報送信部２５０は、取得された負荷情報を負荷測定部４４６に送信する。
【００７０】
マイグレーション命令部４４７は、計算機１２０にマイグレーションの実行を命令する。具体的には、マイグレーション命令部４４７は、計算機１２０にマイグレーション実行命令を送信する。マイグレーション実行命令を受信した計算機１２０は、切替実行部２６０によってマイグレーションが実行される。
【００７１】
結果出力部４４８は、予約モデル生成部４４５によって生成された予約モデル等の処理結果を管理クライアント１００に送信する。
【００７２】
要求取得部４４９は、管理クライアント１００から送信される予約要求を取得し、取得された予約要求を管理する。ここで、予約要求とは、新たなＶＭ１４０を予約するための要求である。
【００７３】
また、メモリ４１０は、候補リスト４６１、仮予約期間リスト４６２及び予約モデル４６３を格納する。
【００７４】
候補リスト４６１は、予約可能なＶＭ１４０、すなわち、予約期間が設定可能なＶＭ１４０の情報を格納する。候補リスト４６１の詳細については、図５を用いて後述する。
【００７５】
仮予約期間リスト４６２は、仮予約期間を設定可能なＶＭ１４０の情報を格納する。仮予約期間リスト４６２の詳細については、図６を用いて後述する。
【００７６】
予約モデル４６３は、予約モデルの情報を格納する。予約モデル４６３の詳細については、図７を用いて後述する。
【００７７】
不揮発性記憶媒体４２０は、管理クライアント１００が必要とする各種情報を格納する。不揮発性記憶媒体３２０は、例えば、ＨＤＤ又はＳＳＤ等が考えられる。
【００７８】
不揮発性記憶媒体４２０は、構成情報４５１、マイグレーション情報４５２、評価定義情報４５３、スケジュール情報４５４、予約状態情報４５５、及び空きリソース情報４５６を格納する。
【００７９】
構成情報４５１は、各計算機１２０から取得されたＶＭ１４０の構成情報を格納する。構成情報４５１の詳細については、図８を用いて後述する。
【００８０】
マイグレーション情報４５２は、マイグレーションのスケジュールに関する情報を格納する。マイグレーション情報４５２の詳細については、図９を用いて後述する。
【００８１】
評価定義情報４５３は、生成される予約モデルの有効性を表す評価値を算出するための定義情報を格納する。評価定義情報４５３の詳細については、図１０を用いて後述する。
【００８２】
スケジュール情報４５４は、各ＶＭ１４０の割当てスケジュールを格納する。具体的には、各ＶＭ１４０に設定された予約期間及び仮予約期間の情報が格納される。スケジュール情報４５４の詳細については、図１１及び図１２を用いて後述する。
【００８３】
予約状態情報４５５は、各業務におけるＶＭ１４０の予約状態に関する情報を格納する。予約状態情報４５５の詳細については、図１３を用いて後述する。
【００８４】
空きリソース情報４５６は、ＶＭ１４０の空き時間に関する情報を格納する。空きリソース情報４５６の詳細については、図１４を用いて後述する。
【００８５】
第１の実施形態では、ＶＭ１４０の空き時間を空きリソースとして利用する。
【００８６】
図５は、本発明の第１の実施形態の候補リスト４６１の一例を示す説明図である。
【００８７】
図５に示すように、一つの候補リスト生成条件に対して、一つの候補リスト４６１が存在する。ここで、候補リスト生成条件とは、候補リスト４６１を生成するための条件である。
【００８８】
候補リスト４６１は、ＩＤ５０１、マシン名５０２、Ｓｔａｒｔ  Ｔｉｍｅ５０３、Ｅｎｄ  Ｔｉｍｅ５０４、及び種別５０５を含む。
【００８９】
ＩＤ５０１は、候補リスト４６１に格納される各レコードを識別するための識別子である。
【００９０】
マシン名５０２は、予約可能なＶＭ１４０を識別するための識別子である。
【００９１】
Ｓｔａｒｔ  Ｔｉｍｅ５０３及びＥｎｄ  Ｔｉｍｅ５０４は、マシン名５０２に対応するＶＭ１４０に設定可能な予約期間を表す。具体的には、Ｓｔａｒｔ  Ｔｉｍｅ５０３は、設定可能な予約期間の開始時間である。Ｅｎｄ  Ｔｉｍｅ５０４は、設定可能な予約期間の終了時間である。
【００９２】
種別５０５は、予約種別を表す情報である。候補リスト４６１は予約可能なＶＭ１４０の情報を格納するため、種別５０５には「占有」が格納される。
【００９３】
図６は、本発明の第１の実施形態の仮予約期間リスト４６２の一例を示す説明図である。
【００９４】
図６に示すように、一つの候補リスト４６１に対して一つの仮予約期間リスト４６２が存在する。
【００９５】
仮予約期間リスト４６２は、ＩＤ６０１、マシン名６０２、Ｓｔａｒｔ  Ｔｉｍｅ６０３、Ｅｎｄ  Ｔｉｍｅ６０４、及び種別６０５を含む。
【００９６】
ＩＤ６０１は、仮予約期間リスト４６２に格納される各レコードを識別するための識別子である。
【００９７】
マシン名６０２は、仮予約期間が設定できるＶＭ１４０を識別するための識別子である。
【００９８】
Ｓｔａｒｔ  Ｔｉｍｅ６０３及びＥｎｄ  Ｔｉｍｅ６０４は、マシン名６０２に対応するＶＭ１４０に設定可能な仮予約期間を表す。具体的には、Ｓｔａｒｔ  Ｔｉｍｅ６０３は、設定可能な仮予約期間の開始時間である。Ｅｎｄ  Ｔｉｍｅ６０４は、設定可能な仮予約期間の終了時間である。
【００９９】
種別６０５は、予約種別を表す情報である。仮予約期間リスト４６２は仮予約期間が設定されるＶＭ１４０の情報を格納するため、種別６０５には「仮予約」が格納される。
【０１００】
図７は、本発明の第１の実施形態の予約モデル４６３の一例を示す説明図である。
【０１０１】
図７に示すように、一つの候補リスト４６１に対して一つの予約モデル４６３が生成される。
【０１０２】
予約モデル４６３は、ＩＤ７０１、マシン名７０２、Ｓｔａｒｔ  Ｔｉｍｅ７０３、Ｅｎｄ  Ｔｉｍｅ７０４、及び種別７０５を含む。
【０１０３】
ＩＤ７０１はＩＤ５０１及びＩＤ６０１に対応し、マシン名７０２はマシン名５０２及びマシン名６０２に対応し、Ｓｔａｒｔ  Ｔｉｍｅ７０３はＳｔａｒｔ  Ｔｉｍｅ５０３及びＳｔａｒｔ  Ｔｉｍｅ６０３に対応し、Ｅｎｄ  Ｔｉｍｅ７０４はＥｎｄ  Ｔｉｍｅ５０４及びＥｎｄ  Ｔｉｍｅ６０４に対応し、また、種別７０５は種別５０５及び種別６０５に対応するため説明を省略する。
【０１０４】
図８は、本発明の第１の実施形態の構成情報４５１の一例を示す説明図である。
【０１０５】
図８に示すように、一つの計算機１２０に対して一つ構成情報４５１が存在する。
【０１０６】
構成情報４５１は、マシン名８０１、ＯＳ８０２、ＣＰＵ８０３、メモリ８０４、コア数８０５、及びサーバ名８０６を含む。
【０１０７】
マシン名８０１は、計算機１２０上のＶＭ１４０を一意に識別するための識別子である。
【０１０８】
ＯＳ８０２は、マシン名８０１に対応するＶＭ１４０上で実行されるゲストＯＳ１５０を識別するための識別子である。
【０１０９】
ＣＰＵ８０３は、マシン名８０１に対応するＶＭ１４０に割り当てられる計算機１２０のＣＰＵ２００の周波数である。
【０１１０】
メモリ８０４は、マシン名８０１に対応するＶＭ１４０に割り当てられる計算機１２０のメモリ２１０のメモリ容量を格納する。
【０１１１】
コア数８０５は、マシン名８０１に対応するＶＭ１４０に割り当てられる計算機１２０のＣＰＵ２００が備えるコア数である。
【０１１２】
サーバ名８０６は、ＶＭ１４０上で稼動するアプリケーションを一意に識別するための名称である。
【０１１３】
図９は、本発明の第１の実施形態のマイグレーション情報４５２の一例を示す説明図である。
【０１１４】
マイグレーション情報４５２は、業務ＩＤ９０１、マイグレーションＩＤ９０２、マイグレーション開始時間９０３、マイグレーション終了時間９０４、種別９０５、移動元マシン名９０６、移動先マシン名９０７、及び基準負荷９０８を含む。
【０１１５】
業務ＩＤ９０１は、マイグレーションが実行されるＶＭ１４０が実行する業務を識別するための識別子である。
【０１１６】
マイグレーションＩＤ９０２は、マイグレーション処理を識別するための識別子である。ここで、マイグレーション処理は、移動元と、移動先との対応関係によって識別される。そのため、同一の移動元で、かつ、同一の移動先であるマイグレーションについては、同一のマイグレーションＩＤ９０２が割当てられる。
【０１１７】
種別９０５は、予約種別を表す情報である。具体的には、「占有」又は「仮予約」が格納される。
【０１１８】
マイグレーション開始時間９０３及びマイグレーション終了時間９０４は、マイグレーション処理の実行時間である。
【０１１９】
種別９０５が「占有」の場合には、マイグレーション開始時間９０３のみが格納される。種別９０５が「仮予約」の場合には、マイグレーション開始時間９０３及びマイグレーション終了時間９０４に仮予約期間が格納される。具体的には、マイグレーション開始時間９０３には仮予約期間の開始時間が格納され、マイグレーション終了時間９０４には仮予約期間の終了時間が格納される。
【０１２０】
種別９０５が「仮予約」の場合には、マイグレーション開始時間９０３及びマイグレーション終了時間９０４に示される仮予約期間内にマイグレーション処理が実行される。
【０１２１】
移動元マシン名９０６は、移動元のＶＭ１４０を識別するための識別子である。
【０１２２】
移動先マシン名９０７は、移動先のＶＭ１４０を識別するための識別子である。
【０１２３】
基準負荷９０８は、移動先のＶＭ１４０の負荷の基準値である。なお、種別９０５が「仮予約」であるレコードについてのみ、基準負荷９０８に値が格納される。
【０１２４】
後述するように、仮予約期間内では、移動先のＶＭ１４０の負荷が基準負荷９０８に示された数値以下の場合にマイグレーション処理が実行される。
【０１２５】
図１０は、本発明の第１の実施形態の評価定義情報４５３の一例を示す説明図である。
【０１２６】
評価定義情報４５３は、評価値１００１、評価項目１００２、評価基準１００３及び重付け１００４を含む。
【０１２７】
評価値１００１は、評価値を表す変数である。評価項目１００２は、評価値を算出する評価対象の説明である。評価基準１００３は、評価値の算出基準である。重付け１００４は、各評価値１００１の重要度を表す重み係数である。
【０１２８】
なお、重付け１００４は、ユーザが変更することができる。例えば、ユーザがＶＭ１４０に割り当てられたＣＰＵの周波数を重要視する場合には、評価値１００１が「ｂ」の重付け１００４が最大になるように値が設定される。
【０１２９】
評価定義情報４５３を用いた評価値の算出方法については、後述する。
【０１３０】
図１１及び図１２は、本発明の第１の実施形態のスケジュール情報４５４の一例を示す説明図である。
【０１３１】
一つの計算機１２０に対して一つのスケジュール情報４５４が存在する。
【０１３２】
図１１は、新たにＶＭ１４０が予約される前のスケジュール情報４５４を表す。図１２は、新たにＶＭ１４０が予約された後のスケジュール情報４５４を表す。
【０１３３】
スケジュール情報４５４は、ＶＭ１４０の予約状況、具体的には、ＶＭ１４０に設定された予約期間及び仮予約期間に関する情報を格納する。スケジュール情報４５４は、マシン名１１０１、Ｓｔａｒｔ  Ｔｉｍｅ１１０２、Ｅｎｄ  Ｔｉｍｅ１１０３、種別１１０４、業務ＩＤ１１０５、及びサーバ名１１０６を含む。
【０１３４】
マシン名１１０１は、計算機１２０上においてＶＭ１４０を一意に識別するための識別子である。
【０１３５】
Ｓｔａｒｔ  Ｔｉｍｅ１１０２及びＥｎｄ  Ｔｉｍｅ１１０３は、マシン名１１０１に対応するＶＭ１４０に設定された予約期間、又は、仮予約期間を表す。
【０１３６】
具体的には、ＶＭ１４０に予約期間が設定された場合には、Ｓｔａｒｔ  Ｔｉｍｅ１１０２には予約期間の開始時間が格納され、Ｅｎｄ  Ｔｉｍｅ１１０３には予約期間の終了時間が格納される。また、ＶＭ１４０に仮予約期間が設定された場合には、Ｓｔａｒｔ  Ｔｉｍｅ１１０２には仮予約期間の開始時間が格納され、Ｅｎｄ  Ｔｉｍｅ１１０３には仮予約期間の終了時間が格納される。
【０１３７】
種別１１０４は、予約種別を表す情報である。具体的には、予約期間が設定された場合には「占有」が格納され、また、仮予約期間が設定された場合には「仮予約」が格納される。
【０１３８】
業務ＩＤ１１０５は、マシン名１１０１に対応するＶＭ１４０が実行する業務を識別するための識別子である。
【０１３９】
サーバ名１１０６は、ＶＭ１４０上で稼動するアプリケーションを一意に識別するための名称である。
【０１４０】
図１３は、本発明の第１の実施形態の予約状態情報４５５の一例を示す説明図である。
【０１４１】
予約状態情報４５５は、業務ＩＤ１３０１、ユーザＩＤ１３０２、Ｓｔａｒｔ  Ｔｉｍｅ１３０３、Ｅｎｄ  Ｔｉｍｅ１３０４、仮予約期間１３０５、マイグレーション１３０６、ＣＰＵ１３０７、及びメモリ１３０８を含む。
【０１４２】
業務ＩＤ１３０１は、ＶＭ１４０上で実行される業務を識別するための識別子である。
【０１４３】
ユーザＩＤ１３０２は、業務ＩＤ１２０１に対応する業務を実行するためのＶＭ１４０の予約を要求したユーザを識別するための識別子である。
【０１４４】
Ｓｔａｒｔ  Ｔｉｍｅ１３０３及びＥｎｄ  Ｔｉｍｅ１３０４は、ユーザ要求期間を表す。
【０１４５】
具体的には、Ｓｔａｒｔ  Ｔｉｍｅ１３０３にはユーザ要求期間の開始時間が格納される。Ｅｎｄ  Ｔｉｍｅ１３０４には、ユーザ要求期間の終了時間が格納される。
【０１４６】
仮予約期間１３０５は、業務ＩＤ１３０１に対応する業務を実行するために割り当てられたＶＭ１４０に仮予約期間が設定されているか否かを示す情報である。具体的には、仮予約期間が設定されている場合には「有」が格納され、仮予約期間が設定されていない場合には「無」が格納される。
【０１４７】
マイグレーション１３０６は、業務ＩＤ１３０１に対応する業務を実行するために割り当てられたＶＭ１４０が、マイグレーションによって変更されるか否か表す情報である。すなわち、複数のＶＭ１４０を用いた割当スケジュールであるか否かを示す情報である。
【０１４８】
具体的には、マイグレーションが実行される場合には「有」が格納され、マイグレーションが実行されない場合には「無」が格納される。
【０１４９】
一つのＶＭ１４０がユーザ要求期間を満たす空き時間を有する場合には、マイグレーションは実行されない。すなわち、一つのＶＭ１４０に十分な空き時間がある場合には、一つのＶＭ１４０が予約される。一方、マイグレーションが実行される場合には、各ＶＭ１４０が有する空き時間を連続的につなぎ合わせることによって、ユーザ要求期間を満たすスケジュールが生成される。
【０１５０】
ＣＰＵ１３０７は、予約されたＶＭ１４０に割り当てられるＣＰＵの周波数である。
【０１５１】
メモリ１３０８は、予約されたＶＭ１４０に割り当てられるメモリの容量である。
【０１５２】
図１４Ａ及び図１４Ｂは、本発明の第１の実施形態の空きリソース情報４５６の一例を示す説明図である。
【０１５３】
一つの計算機１２０に対して一つの空きリソース情報４５６が存在する。
【０１５４】
図１４Ａは、候補リスト生成処理（図１９参照）において、レコードがソートされる前の空きリソース情報４５６を表す。図１４Ｂは、候補リスト生成処理（図１９参照）において、レコードがソートされた後の空きリソース情報４５６を表す。
【０１５５】
空きリソース情報４５６は、ＩＤ１４０１、マシン名１４０２、Ｓｔａｒｔ  Ｔｉｍｅ１４０３、Ｅｎｄ  Ｔｉｍｅ１４０４、及び種別１４０５を含む。
【０１５６】
ＩＤ１４０１は、空きリソース情報４５６の各レコードを識別するための識別子である。
【０１５７】
マシン名１４０２は、空きリソース、すなわち、空き時間を有するＶＭ１４０を識別するための識別子である。
【０１５８】
Ｓｔａｒｔ  Ｔｉｍｅ１４０３及びＥｎｄ  Ｔｉｍｅ１４０４は、ＶＭ１４０が有する空き時間を表す。具体的には、Ｓｔａｒｔ  Ｔｉｍｅ１４０３には空き時間の開始時間が格納され、Ｅｎｄ  Ｔｉｍｅ１４０４には空き時間の終了時間が格納される。
【０１５９】
なお、Ｓｔａｒｔ  Ｔｉｍｅ１４０３の「現時点」は、候補リスト生成処理の実行時の時間を表す。また、Ｅｎｄ  Ｔｉｍｅ１４０４の「未定」は、空き時間の終了時間が特定できないことを表す。つまり、Ｅｎｄ  Ｔｉｍｅ１４０４の「未定」の場合には、Ｓｔａｒｔ  Ｔｉｍｅ１４０３以降の時間が全て空き時間であることを表す。
【０１６０】
種別１４０５は、予約種別を表す情報である。空きリソース情報４５６は空き時間を有するＶＭ１４０のレコードのみを格納するため、種別１４０５には空きリソースを示す「空」が格納される。
【０１６１】
図１５は、本発明の第１の実施形態における入出力装置３４０に出力される操作画面の一例を示す説明図である。
【０１６２】
入出力装置３４０には、図１５に示すような操作画面１５００が表示される。
【０１６３】
操作画面１５００は、予約モデルを生成するための情報を入力する入力部、及び生成された予約モデルを表示する表示部が含まれる。操作画面１５００は、条件入力部３５０及び結果出力部３６０によって実現される。
【０１６４】
操作画面１５００は、スペック設定ボタン１５１０、生成ボタン１５２０、生成条入力部１５３０、予約モデル表示部１５４０、予約ボタン１５５０を含む。
【０１６５】
スペック設定ボタン１５１０は、予約するＶＭ１４０の構成条件を設定するための操作部である。ユーザが当該スペック設定ボタン１５１０を操作すると、ＶＭ１４０の構成条件を設定する入力部（図示省略）が表示される。例えば、ＶＭ１４０に割り当てられるＣＰＵ、メモリ容量等を入力するための入力部が表示される。
【０１６６】
生成ボタン１５２０は、予約処理を実行させるための操作部である。ユーザが生成ボタン１５２０を操作すると、各入力部に入力された情報を含む予約要求が、スケジュール管理サーバ１１０に送信される。このとき、当該予約要求を送信するユーザを識別するためのユーザＩＤもスケジュール管理サーバ１１０に送信される。
【０１６７】
なお、ユーザＩＤの取得方法としては、ユーザが管理クライアント１００を操作する時に入力したログオン情報等から取得する方法が考えられる。
【０１６８】
予約要求を受信したスケジュール管理サーバ１１０は、当該予約要求に基づいて予約処理を実行する。
【０１６９】
生成条入力部１５３０は、予約モデルを生成するための条件を入力するための入力部である。生成条入力部１５３０は、マイグレーション回数１５３１、負荷基準１５３２、仮予約期間１５３３、開始時間１５３４、及び終了時間１５３５を含む。
【０１７０】
マイグレーション回数１５３１は、マイグレーションの実行回数を表す。
【０１７１】
負荷基準１５３２は、移動先のＶＭ１４０の負荷に関する情報である。負荷基準１５３２は、例えば、移動先のＶＭ１４０に割り当てられたＣＰＵの使用率が格納される。第１の実施形態では、仮予約期間の間、移動先のＶＭ１４０の負荷が測定される。このとき、測定された負荷が負荷基準１５３２に示された値以下のときにマイグレーションが実行される。
【０１７２】
仮予約期間１５３３は、ユーザが希望する仮予約期間の長さを表す。
【０１７３】
開始時間１５３４及び終了時間１５３５は、ユーザ要求期間を表す。具体的には、開始時間１５３４にはユーザ要求期間の開始時間が格納され、また、終了時間１５３５にはユーザ要求期間の終了時間が格納される。
【０１７４】
予約モデル表示部１５４０は、生成された予約モデルの情報を表示する。予約モデル表示部１５４０は、チェック１５４１、業務ＩＤ１５４２、使用計算機１５４３、マイグレーション回数１５４４、評価１５４５、最小周波数１５４６、使用期間１５４７、及び仮予約期間１５４８を含む。
【０１７５】
チェック１５４１は、後述する予約設定処理において用いられる予約モデルを選択するための操作部である。ユーザは、チェック１５４１を操作することによって、複数の予約モデルの中から適切な予約モデルを選択できる。なお、自動的に予約設定処理が実行される場合には、チェック１５４１は操作できないように設定される。
【０１７６】
業務ＩＤ１５４２は、ＶＭ１４０が実行する業務を識別するための識別子である。
【０１７７】
使用計算機１５４３は、予約モデルにおいて使用されるＶＭ１４０を識別するための識別子である。使用計算機１５４３に対応するＶＭ１４０に対して、予約期間及び仮予約期間が設定される。
【０１７８】
マイグレーション回数１５４４は、生成された予約モデルにおけるマイグレーションの実行回数を表す。
【０１７９】
評価１５４５は、生成された予約モデルの評価値である。
【０１８０】
最小周波数１５４６は、生成された予約モデルにおいて使用されるＶＭ１４０に割当てられたＣＰＵの周波数を表す。
【０１８１】
複数のＶＭ１４０が使用される予約モデルでは、最小周波数１５４６には、各ＶＭ１４０に割り当てられたＣＰＵのうち、最小の周波数が格納される。なお、最小周波数１５４６には、各ＶＭ１４０に割り当てられたＣＰＵの周波数の平均値等が格納されてもよい。
【０１８２】
使用期間１５４７は、生成された予約モデルの予約可能な期間を表す。
【０１８３】
仮予約期間１５４８は、設定された仮予約期間の長さを表す。
【０１８４】
複数のＶＭ１４０が使用される予約モデルでは、仮予約期間１５４８には、各仮予約期間のうち最小の仮予約期間が格納される。なお。仮予約期間１５４８には、各仮予約期間の平均値等が格納されてもよい。
【０１８５】
予約ボタン１５５０は、予約設定処理の実行を指示するための操作部である。ユーザが予約ボタン１５５０を操作すると、チェック１５４１が操作された予約モデルに基づいて、予約設定処理が実行される。
【０１８６】
なお、自動的に予約設定処理が実行される場合には、予約ボタン１５５０は操作されないように設定される。
【０１８７】
次に、第１の実施形態における予約処理について説明する。
【０１８８】
図１６は、本発明の第１の実施形態のスケジュール管理サーバ１１０が実行する予約処理の概要を説明するフローチャートである。
【０１８９】
スケジュール管理サーバ１１０は、管理クライアント１００から予約要求を受け付けると処理を開始する（ステップ１６０１）。具体的には、要求取得部４４９が予約要求を受け付ける。要求取得部４４９は、メモリ４１０上に、受付けた予約要求を一時的に格納する。なお、予約要求には、操作画面１５００を用いて入力された情報、及び当該予約要求を入力したユーザのユーザＩＤが含まれる。
【０１９０】
図１７は、本発明の第１の実施形態のメモリ４１０上に格納される予約要求の一例を示す説明図である。
【０１９１】
図１７に示すように、予約要求１７００はテーブル形式の情報として保持される。
【０１９２】
予約要求１７００は、Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１、Ｕ−Ｅｎｄ  Ｔｉｍｅ１７０２、マイグレーション回数１７０３、負荷基準１７０４、仮予約期間１７０５及びユーザＩＤ１７０６を含む。
【０１９３】
Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１及びＵ−Ｅｎｄ  Ｔｉｍｅ１７０２は、ユーザ要求期間を表す。具体的には、Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１にはユーザ要求期間の開始時間が格納され、Ｕ−Ｅｎｄ  Ｔｉｍｅ１７０２にはユーザ要求期間の終了時間が格納される。
【０１９４】
なお、Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１は、開始時間１５３４と同一のものである。また、Ｕ−Ｅｎｄ  Ｔｉｍｅ１７０２は、終了時間１５３５と同一のものである。
【０１９５】
マイグレーション回数１７０３は、マイグレーションの実行回数である。マイグレーション回数１７０３が「０」の場合は、一つのＶＭ１４０を予約する予約処理が実行される。すなわち、従来の予約処理が実行される。マイグレーション回数１７０３が「１」以上である場合には、複数のＶＭ１４０を用いた予約処理が実行される。
【０１９６】
なお、マイグレーション回数１７０３は、マイグレーション回数１５３１と同一のものである。
【０１９７】
負荷基準１７０４は、移動先のＶＭ１４０の負荷に関する情報である。なお、負荷基準１７０４は、負荷基準１５３２と同一のものである。
【０１９８】
仮予約期間１７０５は、ユーザが希望する仮予約期間の長さを表す。なお、仮予約期間１７０５は、仮予約期間１５３３と同一のものである。
【０１９９】
ユーザＩＤ１７０６は、ＶＭ１４０の予約を希望するユーザを識別するための識別子である。
【０２００】
第１の実施形態の予約要求１７００には、少なくとも、Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１、Ｕ−Ｅｎｄ  Ｔｉｍｅ１７０２及びユーザＩＤ１７０６が格納される。すなわち、操作画面１５００の開始時間１５３４及び終了時間１５３５に値が入力されている必要がある。
【０２０１】
操作画面１５００のその他の情報が入力されていない場合には、予約要求には、マイグレーション回数１７０３、負荷基準１７０４、及び仮予約期間１７０５等の情報が含まれない。
【０２０２】
また、予約要求１７００は、予約するＶＭ１４０の構成情報が含まれてもよい。ＶＭ１４０の構成情報は、例えば、ＶＭ１４０に割り当てられるＣＰＵの周波数、メモリの容量等が考えられる。
【０２０３】
図１６の説明に戻る。
【０２０４】
スケジュール管理サーバ１１０は、受付けた予約要求に基づいて、予約可能なＶＭ１４０を検索するための検索処理を実行する（ステップ１６０２）。具体的には、スケジュール管理サーバ１１０が予約モデル生成部４４５を呼び出し、呼び出された予約モデル生成部４４５が検索処理を実行する。なお、検索処理の詳細については、図１８を用いて後述する。
【０２０５】
スケジュール管理サーバ１１０は、検索結果を出力する（ステップ１６０３）。具体的には、結果出力部４４８が、生成された予約モデルを管理クライアント１００に送信する。管理クライアント１００は、受信した予約モデルに関する情報に基づいて、操作画面１５００の予約モデル表示部１５４０に生成された予約モデルを表示する。
【０２０６】
スケジュール管理サーバ１１０は、検索結果に基づいて、予約設定処理を実行する（ステップ１６０４）。具体的には、スケジュール管理部４４２が予約設定処理を実行する。予約設定処理は、管理クライアント１００を操作するユーザの指示に基づいて実行されてもよいし、自動的に実行されてもよい。
【０２０７】
管理クライアント１００を操作するユーザが予約設定処理の実行を指示する場合には、当該ユーザが予約モデル表示部１５４０に表示された予約モデルのチェック１５４１を操作し、さらに、予約ボタン１５５０を操作することによって、予約設定処理の実行を指示する。
【０２０８】
なお、予約設定処理の詳細については、図２４を用いて後述する。
【０２０９】
スケジュール管理サーバ１１０は、予約処理の結果を出力し（ステップ１６０５）、処理を終了する。具体的には、結果出力部４４８が、予約設定処理の結果を管理クライアント１００に送信する。
【０２１０】
図１８は、本発明の第１の実施形態における検索処理を説明するフローチャートである。
【０２１１】
まず、予約モデル生成部４４５は、メモリ４１０上に格納される予約要求１７００を取得する（ステップ１８０１）。
【０２１２】
次に、予約モデル生成部４４５は、候補リスト生成条件を設定する（ステップ１８０２）。
【０２１３】
なお、予約モデル生成部４４５は、予め一以上の候補リスト生成条件を保持しており、保持される候補リスト生成条件を読み出すことによって、候補リスト生成条件を設定する。
【０２１４】
候補リスト生成条件は、例えば、以下のようなものが考えられる。
（生成条件１）ＶＭ１４０が有する空き時間のうち、最も長い空き時間を有するＶＭ１４０を予約する。
（生成条件２）割当てられているＣＰＵの性能が最も高いＶＭ１４０を予約する。
（生成条件３）仮予約期間が設定されていない空き時間を有するＶＭ１４０を予約する。
【０２１５】
第１の実施形態では、一つの候補リスト生成条件ごとに一つの候補リスト４６１が生成される。
【０２１６】
予約モデル生成部４４５は、取得された予約要求１７００、及び、設定された候補リスト生成条件に基づいて、候補リスト生成処理を実行する（ステップ１８０３）。当該処理によって、図５に示すような候補リスト４６１が生成される。また、生成された候補リスト４６１はメモリ４１０上に保持される。
【０２１７】
なお、候補リスト生成処理の詳細については、図１９を用いて後述する。
【０２１８】
予約モデル生成部４４５は、候補リスト生成処理の結果、候補リスト４６１が生成されたか否かを判定する（ステップ１８０４）。すなわち、予約要求及び候補リスト生成条件を満たすＶＭ１４０が存在するか否かが判定される。
【０２１９】
当該判定では、例えば、図５に示すような候補リスト４６１が出力された場合には、候補リスト４６１が生成されたと判定される。
【０２２０】
候補リスト４６１が生成されていないと判定された場合、予約モデル生成部４４５は、ステップ１８０８に進む。
【０２２１】
候補リスト４６１が生成されたと判定された場合、予約モデル生成部４４５は、生成された候補リスト４６１に基づいて、仮予約期間リスト生成処理を実行する（ステップ１８０５）。当該処理によって、図６に示すような仮予約期間リスト４６２が生成される。また、生成された仮予約期間リスト４６２はメモリ４１０上に保持される。
【０２２２】
なお、仮予約期間リスト生成処理の詳細については、図２０を用いて後述する。
【０２２３】
予約モデル生成部４４５は、生成された候補リスト４６１及び仮予約期間リスト４６２に基づいて、予約モデル生成処理を実行する（ステップ１８０６）。予約モデル生成部４４５は、当該処理によって生成された予約モデル４６３をメモリ４１０に保持する。
【０２２４】
なお、予約モデル生成処理の詳細については、図２３を用いて後述する。
【０２２５】
予約モデル生成部４４５は、候補リスト生成条件が他にあるか否かを判定する（ステップ１８０７）。すなわち、全ての候補リスト生成条件について、予約モデルが生成されたか否かが判定される。
【０２２６】
候補リスト生成条件が他にあると判定された場合、予約モデル生成部４４５は、ステップ１８０２に戻り、他の候補リスト生成条件を設定して同様の処理（ステップ１８０２〜ステップ１８０８）を実行する。
【０２２７】
候補リスト生成条件がないと判定された場合、予約モデル生成部４４５は、生成された予約モデル４６３及び算出された評価値を出力し（ステップ１８０９）、処理を終了する。出力された予約モデル４６３及び算出された評価値は、結果出力部４４８によって管理クライアント１００に送信される。
【０２２８】
図１９は、本発明の第１の実施形態における候補リスト生成処理を説明するフローチャートである。
【０２２９】
まず、予約モデル生成部４４５は、空きリソース情報４５６を取得する（ステップ１９０１）。具体的には、以下のような処理が実行される。
【０２３０】
予約モデル生成部４４５は、まず、空き時間検出部４４４を呼び出す。
【０２３１】
まず、空き時間検出部４４４は、処理開始時刻を取得する。次に、空き時間検出部４４４は、スケジュール情報４５４を参照して、計算機１２０毎に、ＶＭ１４０の空き時間を抽出する。
【０２３２】
第１の実施形態では、空き時間検出部４４４は、計算機１２０毎に、予約期間又は仮予約期間が設定されていない期間を空き時間として抽出する。すなわち、予約期間又は仮予約期間が設定された期間は、空き時間として扱われない。
【０２３３】
空き時間検出部４４４は、抽出されたＶＭ１４０の空き時間に基づいて、図１４Ａに示すような空きリソース情報４５６を生成する。このとき、各計算機１２０の空きリソース情報４５６が生成される。
【０２３４】
生成された空きリソース情報４５６は、メモリ４１０上に格納される。なお、生成された空きリソース情報４５６は、不揮発性記憶媒体４２０上に格納されてもよい。
【０２３５】
空き時間検出部４４４は、空きリソース情報４５６の生成が完了した旨を予約モデル生成部４４５に通知する。
【０２３６】
予約モデル生成部４４５は、生成された全ての空きリソース情報４５６をメモリ４１０から読み出す。
【０２３７】
次に、予約モデル生成部４４５は、読み出された空きリソース情報４５６に基づいて、ＶＭ１４０を予約する計算機１２０を決定する。
【０２３８】
計算機の選択方法は、例えば、以下のような方法が考えられる。
【０２３９】
予約モデル生成部４４５は、各計算機の空きリソース情報４５６を参照して、各計算機の空き時間の合計値を算出する。予約モデル生成部４４５は、算出された空き時間の合計値が最も大きい計算機を選択する。すなわち、空きリソースが最も多く存在する計算機１２０が選択される。
【０２４０】
予約モデル生成部４４５は、選択された計算機に対応する空きリソース情報４５６に基づいて、以下の処理を実行する。
【０２４１】
次に、予約モデル生成部４４５は、取得された空きリソース情報４５６のＳｔａｒｔ  Ｔｉｍｅ１３０３及びＥｎｄ  Ｔｉｍｅ１３０４を参照して、当該空きリソース情報４５６に格納される各レコードをソートする（ステップ１９０２）。
【０２４２】
具体的には、予約モデル生成部４４５は、まず、Ｓｔａｒｔ  Ｔｉｍｅ１４０３が昇順になるように各レコードをソートする。Ｓｔａｒｔ  Ｔｉｍｅ１４０３が同一であるレコードが複数ある場合には、さらに、予約モデル生成部４４５は、Ｅｎｄ  Ｔｉｍｅ１３０４が降順になるようにレコードをソートする。
【０２４３】
例えば、図１４Ａに示す空きリソース情報４５６は、図１４Ｂにしめすように各レコードがソートされる。
【０２４４】
空きリソース情報４５６に格納される各レコードを前述したようにソートすることによって、処理時間を短縮できる。
【０２４５】
予約モデル生成部４４５は、取得された予約要求１７００、及び、空きリソース情報４５６に基づいて、予約要求１７００を満たす空き時間を有するＶＭ１４０があるか否かを判定する（ステップ１９０３）。具体的には、以下の条件式（１）、かつ、条件式（２）を満たすＶＭ１４０があるか否かが判定される。
（１）Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ ≧ Ｓｔａｒｔ  Ｔｉｍｅ
（２）Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ ＜ Ｅｎｄ  Ｔｉｍｅ
【０２４６】
以下、条件式（１）、かつ、条件式（２）を満たすＶＭ１４０を処理対象ＶＭ１４０と記載する。
【０２４７】
なお、予約要求にＶＭ１４０の構成情報が含まれる場合には、予約モデル生成部４４５は、当該ＶＭ１４０の構成情報を満たすＶＭ１４０を抽出する。さらに、予約モデル生成部４４５は、抽出されたＶＭ１４０に対して、条件式（１）かつ条件式（２）を満たすＶＭ１４０があるか否か判定する。
【０２４８】
ここで、予約要求に含まれるＶＭ１４０の構成情報は、スペック設定ボタン１５１０を操作することによって入力された情報である。
【０２４９】
処理対象ＶＭ１４０がないと判定された場合、予約モデル生成部４４５は、候補リスト４６１を破棄し（ステップ１９０４）、処理を終了する。
【０２５０】
処理対象ＶＭ１４０があると判定された場合、予約モデル生成部４４５は、処理対象ＶＭ１４０の中に、設定された候補リスト生成条件を満たすＶＭ１４０があるか否かを判定する（ステップ１９０５）。
【０２５１】
例えば、設定される候補リスト生成条件が（生成条件１）である場合、最も長い空き時間を有する処理対象ＶＭ１４０があるか否かが判定される。また、設定される候補リスト生成条件が（生成条件３）である場合、処理対象ＶＭ１４０が有する空き時間に仮予約期間が設定されている否かが判定される。具体的には、種別１４０５が「仮予約」であるか否かが判定される。
【０２５２】
処理対象ＶＭ１４０の中に、設定された候補リスト生成条件を満たす処理対象ＶＭ１４０がないと判定された場合、予約モデル生成部４４５は、処理対象ＶＭ１４０を一つ選択する（ステップ１９０７）。
【０２５３】
例えば、ソート順が上位のレコードに対応する処理対象ＶＭ１４０を選択する方法が考えられる。
【０２５４】
処理対象ＶＭ１４０の中に、設定された候補リスト生成条件を満たす処理対象ＶＭ１４０があると判定された場合、予約モデル生成部４４５は、候補リスト生成条件を満たす処理対象ＶＭ１４０の中から一つのＶＭ１４０を選択する（ステップ１９０６）。
【０２５５】
なお、候補リスト生成条件を満たすＶＭ１４０が複数ある場合には、ソート順が上位のレコードに対応する処理対象ＶＭ１４０を選択する方法が考えられる。
【０２５６】
予約モデル生成部４４５は、選択されたＶＭ１４０に対応するレコードを候補リスト４６１に追加する（ステップ１９０８）。
【０２５７】
次に、予約モデル生成部４４５は、候補リスト４６１に追加されたレコードのＥｎｄ  Ｔｉｍｅ５０４を参照して、Ｅｎｄ  Ｔｉｍｅ５０４がＵ−Ｅｎｄ  Ｔｉｍｅ１７０２以上であるか否を判定する（ステップ１９０９）。すなわち、ユーザ要求期間を満たすスケジュールの設定が完了したか否かが判定される。
【０２５８】
例えば、追加されたレコードのＥｎｄ  Ｔｉｍｅ５０４が「２０１０／０４／２５  ２３：５９」で、Ｕ−Ｅｎｄ  Ｔｉｍｅ１７０２は「２０１０／０４／３０  ２３：５９」である場合、ユーザ要求期間を満たすスケジュールの設定が完了していないと判定される。
【０２５９】
Ｅｎｄ  Ｔｉｍｅ５０４がＵ−Ｅｎｄ  Ｔｉｍｅ１７０２より小さいと判定された場合、すなわち、ユーザ要求期間を満たすスケジュールの設定が完了していないと判定された場合、予約モデル生成部４４５は、空きリソース情報４５６を更新する（ステップ１９１０）。すなわち、追加されたレコードに対応するＶＭ１４０の空き時間から、追加されたＶＭ１４０の予約期間に対応する時間が削除される。
【０２６０】
更新方法としては、例えば、Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１から１分減算した時間を、追加されたＶＭ１４０に対応するレコードのＥｎｄ  Ｔｉｍｅ１４０４とする方法が考えられる。
【０２６１】
例えば、追加されたレコードに対応するＶＭ１４０の更新前のＥｎｄ  Ｔｉｍｅ１４０４が「２０１０／０４／１４  ２３：５９」、更新前のＵ−Ｓｔａｒｔ  Ｔｉｍｅ１５０１が「２０１０／０４／０１  ００：００」である場合に、当該Ｅｎｄ  Ｔｉｍｅ１４０４は「２０１０／０３／２１  ２３：５９」に更新される。
【０２６２】
次に、予約モデル生成部４４５は、予約要求１７００を更新し（ステップ１９１１）、ステップ１９０３に戻り同様の処理（ステップ１９０３〜ステップ１９１２）を実行する。
【０２６３】
具体的には、追加されたレコードのＥｎｄ  Ｔｉｍｅ５０４に１分加算した時間をＵ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１に格納する。例えば、Ｅｎｄ  Ｔｉｍｅ５０４が「２０１０／０４／１０  ２２：５９」である場合、Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１は「２０１０／０４／１０  ２３：００」に更新される。
【０２６４】
これは、候補リスト４６１に追加されたレコードのＥｎｄ  Ｔｉｍｅ５０４までの期間は、ＶＭ１４０が予約されたため予約期間に相当する空き時間が削除される。
【０２６５】
ステップ１９０９において、Ｅｎｄ  Ｔｉｍｅ５０４がＵ−Ｅｎｄ  Ｔｉｍｅ１７０２以上であると判定された場合、予約モデル生成部４４５は、空きリソース情報４５６を更新する（ステップ１９１２）。空きリソース情報４５６の更新方法は、ステップ１９１０と同一の方法が用いられる。
【０２６６】
予約モデル生成部４４５は、生成された候補リスト４６１を出力し（ステップ１９１３）、処理を終了する。
【０２６７】
なお、第１の実施形態では、空きリソース情報４５６を用いて予約可能なＶＭ１４０を検索したが、これに限定されない。例えば、スケジュール情報４５４を参照して、各ＶＭ１４０に空き時間があるか否かを判定する方法であってもよい。この場合、スケジュール管理サーバ１１０は、空きリソース情報４５６を格納しなくてもよい。
【０２６８】
なお、ステップ１９０４において、予約モデル生成部４４５は、候補リスト４６１を破棄した後に、ステップ１９０１に戻り、他の計算機１２０の空きリソース情報４５６を取得して同様の処理（ステップ１９０１〜ステップ１９１３）を実行してもよい。
【０２６９】
図２０は、本発明の第１の実施形態における仮予約期間リスト生成処理を説明するフローチャートである。
【０２７０】
予約モデル生成部４４５は、生成された候補リスト４６１を参照し、ＩＤ５０１が「２」であるレコードを選択する（ステップ２００１）。
【０２７１】
次に、予約モデル生成部４４５は、候補リスト４６１の全レコードが選択されたか否かを判定する（ステップ２００２）。すなわち、候補リスト４６１の全てのレコードに対して処理が実行されたか否かが判定される。
【０２７２】
候補リスト４６１の全レコードが選択されていないと判定された場合、予約モデル生成部４４５は、空きリソース情報４５６を参照し、マシン名５０２に対応するＶＭ１４０が仮予約期間を設定するため空き時間を有するか否かを判定する（ステップ２００３）。
【０２７３】
具体的には、予約モデル生成部４４５は、選択されたレコードに対応するＶＭ１４０に設定された予約期間の開始時間（Ｓｔａｒｔ  Ｔｉｍｅ５０３）以前に、ユーザが要求する仮予約期間を設定するための空き時間があるか否かが判定される。
【０２７４】
例えば、マシン名５０２が「ＶＭ２」、Ｓｔａｒｔ  Ｔｉｍｅ５０３が「２０１０／０４／１５  １０：００」である場合、ＶＭ２に「２０１０／０４／１５  ０９：５９」以前に仮予約期間（例えば、１時間）を設定するための空き時間があるか否かが判定される。
【０２７５】
なお、仮予約期間の長さは、ユーザが指定してもよいし、予め設定してもよい。第１の実施形態では、ホットマイグレーションが用いられる。ホットマイグレーションは、瞬時に移行元のＶＭ１４０から移行先のＶＭ１４０に情報を移動できる。そのため、仮予約期間は、通常のマイグレーション処理に必要とする時間より短いものでよい。ただし、移行先のＶＭ１４０の負荷を計測するために必要となる時間は確保する必要がある。
【０２７６】
マシン名５０２に対応するＶＭ１４０に仮予約期間を設定するための空き時間がないと判定された場合、予約モデル生成部４４５は、ステップ２００５に進む。
【０２７７】
マシン名５０２に対応するＶＭ１４０に仮予約期間を設定するための空き時間があると判定された場合、予約モデル生成部４４５は、仮予約期間リスト４６２に、マシン名５０２に対応するＶＭ１４０のレコードを追加する（ステップ２００４）。
【０２７８】
例えば、選択されたレコードのＳｔａｒｔ  Ｔｉｍｅ５０３から最長１時間分の空き時間を仮予約期間として仮予約期間リスト４６２のレコードに追加する。
【０２７９】
予約モデル生成部４４５は、候補リスト４６１を参照し、次のレコードを選択して（ステップ２００５）、ステップ２００１に戻り同様の処理（ステップ２００１〜ステップ２００６）を実行する。
【０２８０】
ステップ２００２において、候補リスト４６１の全レコードが選択されたと判定された場合、予約モデル生成部４４５は、生成された仮予約期間リスト４６２を出力し（ステップ２００６）、処理を終了する。
【０２８１】
なお、ステップ２００４において、仮予約期間の長さが特に設定されていない場合、予約モデル生成部４４５は、空き時間全てを仮予約期間とするレコードを仮予約期間リスト４６２に追加してもよい。
【０２８２】
以下、候補リスト生成処理及び仮予約期間リスト生成処理の具体例について説明する。
【０２８３】
説明の簡単のため以下のような条件を設定する。時間は、時、分、秒は考慮しないものとする。また、候補リスト生成条件は（生成条件１）が選択されたものとする。また、予約期間と仮予約期間とが設定されているものとする。また、設定される仮予約期間の長さは１時間とする。
【０２８４】
まず、候補リスト生成処理の具体例について説明する。
【０２８５】
図２１Ａ、図２１Ｂ、図２１Ｃ及び図２１Ｄは、本発明の第１の実施形態における候補リスト生成処理の具体例を示す説明図である。
【０２８６】
図２１Ａに示すように、ユーザ要求期間２１０１のＵ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１が「２０１０／０４／０１」であり、Ｕ−Ｅｎｄ  Ｔｉｍｅ１７０２が「２０１０／０４３０」である。
【０２８７】
また、ＶＭ１４０の予約する計算機１２０は、図２１Ａに示すような予約状況となっている。すなわち、予約期間２１０４が設定される。予約期間２１０４が設定される期間には、新たに予約期間２１０４を設定することができない。
【０２８８】
具体的には、ＶＭ１では、「２０１０／０４／０１」〜「２０１０／０４／１０」、及び、「２０１０／０４／１５」〜「２０１０／０４／２０」の期間が予約される。ＶＭ２では、「２０１０／０４／１５」〜「２０１０／０４／２５」の期間が予約される。ＶＭ３では、「２０１０／０４／０５」〜「２０１０／０４／１０」、及び、「２０１０／０４／２５」〜「２０１０／０４／２０」の期間が予約される。
【０２８９】
前述した状態において、以下のようの処理が実行される。
【０２９０】
ステップ１９０１では、予約モデル生成部４４５は、ＶＭ１の「２０１０／０４／１０」〜「２０１０／０４／１５」、ＶＭ１の「２０１０／０４／２０」〜「２０１０／０４／３０」、ＶＭ２の「２０１０／０４／０１」〜「２０１０／０４／１５」、ＶＭ２の「２０１０／０４／２５」〜「２０１０／０４／３０」、ＶＭ３の「２０１０／０４／０１」〜「２０１０／０４／０５」、及びＶＭ３の「２０１０／０４／１０」〜「２０１０／０４／２５」をレコードとする空きリソース情報４５６を取得する。
【０２９１】
ステップ１９０３では、予約モデル生成部４４５は、ＶＭ２の「２０１０／０４／０１」〜「２０１０／０４／１５」、及びＶＭ３の「２０１０／０４／０１」〜「２０１０／０４／０５」の期間を、予約要求を満たす空き時間として抽出する。
【０２９２】
次に、ステップ１９０５では、予約モデル生成部４４５は、空き時間が長いレコード、すなわち、ＶＭ２の「２０１０／０４／０１」〜「２０１０／０４／１５」を選択する。これによって、候補リスト４６１に、予約期間２１０５−１を有するレコードが追加される。
【０２９３】
ステップ１９０９では、追加されたレコードのＥｎｄ  Ｔｉｍｅ５０４は「２０１０／０４／１５」であるため、ステップ１９１０に進む。
【０２９４】
ステップ１９１０では、空きリソース情報４５６からＶＭ２の「２０１０／０４／０１」〜「２０１０／０４／１５」の空き時間を削除する処理が実行される。
【０２９５】
ステップ１９１１では、Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１が「２０１０／０４／１５」に更新される。
【０２９６】
以上の処理が終了すると、図２１Ｂに示すような状態となる。図２１Ｂに示す状態において以下のような処理が実行される。
【０２９７】
ステップ１９０３では、予約モデル生成部４４５は、ＶＭ３の「２０１０／０４／１５」〜「２０１０／０４／２５」の期間を、予約要求を満たす空き時間として抽出する。
【０２９８】
次に、ステップ１９０５では、予約モデル生成部４４５は、ＶＭ３の「２０１０／０４／１５」〜「２０１０／０４／２５」を選択する。これによって、候補リスト４６１に、予約期間２１０５−２を有するレコードが追加される。
【０２９９】
ステップ１９０９では、追加されたレコードのＥｎｄ  Ｔｉｍｅ５０４は「２０１０／０４／２５」であるため、ステップ１９１０に進む。
【０３００】
ステップ１９１０では、空きリソース情報４５６からＶＭ３の「２０１０／０４／１５」〜「２０１０／０４／２５」の空き時間を削除する処理が実行される。
【０３０１】
ステップ１９１１では、Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１７０１が「２０１０／０４／２５」に更新される。
【０３０２】
以上の処理が終了すると、図２１Ｃに示すような状態となる。図２１Ｃに示す状態において以下のような処理が実行される。
【０３０３】
ステップ１９０３では、予約モデル生成部４４５は、ＶＭ１の「２０１０／０４／２０」〜「２０１０／０４／３０」、及びＶＭ３の「２０１０／０４／２０」〜「２０１０／０４／３０」の期間を、予約要求を満たす空きリソースとして抽出する。
【０３０４】
次に、ステップ１９０５では、予約モデル生成部４４５は、空き時間が長いレコード、すなわち、ＶＭ１の「２０１０／０４／２０」〜「２０１０／０４／３０」を選択する。これによって、候補リスト４６１に、予約期間２１０５−３を有するレコードが追加される。
【０３０５】
ステップ１９０９では、追加されたレコードのＥｎｄ  Ｔｉｍｅ５０４は「２０１０／０４／３０」であるため、ステップ１９１２に進む。
【０３０６】
ステップ１９１２では、空きリソース情報４５６からＶＭ１の「２０１０／０４／２０」〜「２０１０／０４／３０」の空き時間を削除する処理が実行される。
【０３０７】
ステップ１９１３では、予約モデル生成部４４５は、生成された候補リスト４６１を出力し、処理を終了する。
【０３０８】
以上の処理が終了すると、図２１Ｄに示すような状態となる。図２１Ｄに示すように、各予約期間２１０５−１、２１０５−２、２１０５−３が連続的になるようにつなぎ合わせることによって、ユーザ要求期間２１０１分のＶＭ１４０の予約が可能となる。
【０３０９】
これによって、各ＶＭ１４０の空き時間を有効に利用可能なＶＭ１４０の割当てスケジュールが生成される。
【０３１０】
本実施形態では、さらに、図２１Ｄに示す状態において、仮予約期間リスト生成処理が実行される。
【０３１１】
図２２Ａ、図２２Ｂは、本発明の第１の実施形態における仮予約期間リスト生成処理の具体例を示す説明図である。
【０３１２】
まず、ステップ２００１において、予約モデル生成部４４５は、予約期間２１０５−２を有するレコードが選択する。
【０３１３】
ステップ２００２では、候補リスト４６１の全てのレコードについて処理が実行されていないため、予約モデル生成部４４５は、ステップ２００３に進む。
【０３１４】
ステップ２００３では、予約期間２１０５−２を有するレコードに対応するＶＭ３が、予約期間２１０５−２以前、すなわち、「２０１０／０４／１５」以前に、１時間以上の空き時間があるため、「２０１０／０４／１５」から１時間遡った時点までの期間を仮予約期間２２００−１とするレコードを仮予約期間リスト４６２に追加する。
【０３１５】
以上の処理が終了すると、図２２Ａに示すような状態となる。図２２Ａに示す状態において以下のような処理が実行される。
【０３１６】
ステップ２００５において、予約モデル生成部４４５は、予約期間２１０５−３を有するレコードを選択する。
【０３１７】
ステップ２００２では、候補リスト４６１の全てのレコードについて処理が実行されていないため、予約モデル生成部４４５は、ステップ２００３に進む。
【０３１８】
ステップ２００３では、予約期間２１０５−３を有するレコードに対応するＶＭ１が、予約期間２１０５−３以前、すなわち、「２０１０／０４／２５」以前に、１時間以上の空き時間があるため、仮予約期間リスト４６２に、「２０１０／０４／２５」から１時間遡った時点までの期間を仮予約期間２２００−２とするレコードを追加する。
【０３１９】
ステップ２００５では、予約モデル生成部４４５は、他のレコードがないため、レコードを選択することなくステップ２００２に戻る。
【０３２０】
ステップ２００２では、候補リスト４６１の全てのレコードについて処理が実行されたと判定され、予約モデル生成部４４５は、仮予約リストを出力し、処理を終了する。
【０３２１】
以上の処理が終了すると、図２２Ｂに示すような状態となる。
【０３２２】
図２３は、本発明の第１の実施形態における予約モデル生成処理を説明するフローチャートである。
【０３２３】
予約モデル生成部４４５は、候補リスト４６１及び仮予約期間リスト４６２を取得する（ステップ２３０１）。なお、一つの候補リスト４６１に一つの仮予約期間リスト４６２が存在する。
【０３２４】
次に、予約モデル生成部４４５は、候補リスト４６１と、仮予約期間リスト４６２とをマージすることによって、図７に示すような予約モデル４６３を生成する（ステップ２３０２）。なお、この時点では、ユーザ要求期間を満たす全ての予約モデルが生成される。
【０３２５】
予約モデル生成部４４５は、生成された予約モデル４６３の評価値を算出する（ステップ２３０３）。具体的には、以下のような処理が実行される。
【０３２６】
予約モデル生成部４４５は、生成された予約モデルに含まれるＶＭ１４０間の変更回数をカウントすることによって、マイグレーション回数を取得する。また、予約モデル生成部４４５は、予約モデル４６３のマシン名７０２に基づいて構成情報４５１を参照することによって、ＣＰＵの周波数を取得する。また、予約モデル生成部４４５は、生成された予約モデルの種別７０５が「仮予約」であるレコードのＳｔａｒｔ  Ｔｉｍｅ７０３及びＥｎｄ  Ｔｉｍｅ７０４から仮予約期間を取得する。
【０３２７】
予約モデル生成部４４５は、取得されたマイグレーション回数、ＣＰＵの周波数、及び仮予約期間に基づいて評価定義情報４５３を参照して評価値を算出する。評価値は、例えば、以下のように算出される。
評価値Ｙ＝３×ａ＋２×ｂ＋１×ｃ
ここで、ａ、ｂ及びｃは、評価値１００１に対応する値である。また、各評価値１００１の係数は、重付け１００４の値である。
【０３２８】
次に、予約モデル生成部４４５は、生成された予約モデルを一つ選択し、ステップ２３０４〜２３０６の処理を繰り返し実行する。
【０３２９】
まず、予約モデル生成部４４５は、選択された予約モデルにおけるマイグレーション回数が、設定されたマイグレーション回数に以下であるか否かを判定する（ステップ２３０４）。すなわち、選択された予約モデルにおけるマイグレーション回数が、マイグレーション回数１７０３以下であるか否かが判定される。
【０３３０】
なお、マイグレーション回数１５３１に値が設定されていない場合には、選択された予約モデルにおけるマイグレーション回数は、マイグレーション回数１７０３以下であると判定される。
【０３３１】
選択された予約モデルにおけるマイグレーション回数が、マイグレーション回数１７０３より大きいと判定された場合、予約モデル生成部４４５は、選択された予約モデルを破棄し、ステップ２３０６に進む。
【０３３２】
選択された予約モデルにおけるマイグレーション回数が、マイグレーション回数１７０３以下であると判定された場合、予約モデル生成部４４５は、選択された予約モデルの評価値が、所定の閾値以上であるか否かを判定する（ステップ２３０５）。なお、閾値は予め設定された値である。
【０３３３】
選択された予約モデルの評価値が、所定の閾値より小さいと判定された場合、予約モデル生成部４４５は、選択された予約モデルを破棄し、ステップ２３０６に進む。
【０３３４】
選択された予約モデルの評価値が、所定の閾値以上であると判定された場合、予約モデル生成部４４５は、他の予約モデルがあるか否かを判定する（ステップ２３０６）。すなわち、生成された全ての予約モデルについて処理が終了したか否かが判定される。
【０３３５】
他の予約モデルがあると判定された場合、予約モデル生成部４４５は、予約モデルを一つ選択し、ステップ２３０４に戻り同様の処理（ステップ２３０４〜ステップ２３０７）を実行する。
【０３３６】
他の予約モデルがないと判定された場合、予約モデル生成部４４５は、ステップ２３０４〜２３０６の処理において破棄されなかった予約モデルに業務ＩＤを付与し、業務ＩＤが付与された予約モデルを出力し（ステップ２３０７）、処理を終了する。
【０３３７】
なお、予約要求にユーザ要求期間のみが含まれる場合には、可能な全ての予約モデルが出力される。
【０３３８】
なお、ステップ２３０４及びステップ２３０５の判定において、条件が満たされない場合、条件に一致しない旨のフラグを予約モデルに付加し、当該予約モデルを出力する方法であってよい。
【０３３９】
この場合、操作画面１５００の予約モデル表示部１５４０には、前述したフラグが付与された予約モデルが強調して表示される。これによって、ユーザは、選択可能な予約モデルを全て把握できる。また、ユーザは、条件を満たさない予約モデルを確認しながら、予約モデルを選択することができる。
【０３４０】
図２４は、本発明の第１の実施形態における予約設定処理を説明するフローチャートである。
【０３４１】
スケジュール管理部４４２は、予約モデルを選択する（ステップ２４０１）。ここで、予約モデルの選択方法として、ユーザが選択する方法と、スケジュール管理部４４２が選択する方法とが考えられる。
【０３４２】
ユーザが選択する場合には、チェック１５４１を操作することによって、予約モデルを選択する方法が考えられる。
【０３４３】
スケジュール管理部４４２が選択する場合には、例えば、算出された評価値が最も大きい予約モデルを選択する方法が考えられる。なお、スケジュール管理部４４２は、その他の基準に基づいて予約モデルを選択してもよい。
【０３４４】
スケジュール管理部４４２は、選択された予約モデルに基づいて、スケジュール情報４５４を更新する（ステップ２４０２）。
【０３４５】
具体的には、スケジュール管理部４４２は、選択された予約モデルのうち種別７０５が「占有」であるレコードを、スケジュール情報４５４に追加する。このとき、業務ＩＤ１１０５には、ステップ２３０７において付与された業務ＩＤと同一の識別子が格納される。
【０３４６】
スケジュール管理部４４２は、選択された予約モデルに仮予約期間に関するレコードが含まれるか否かを判定する（ステップ２４０３）。すなわち、選択された予約モデルに種別７０５が「仮予約」であるレコードが含まれるか否かが判定される。
【０３４７】
選択された予約モデルに仮予約期間に関するレコードが含まれないと判定された場合、スケジュール管理部４４２は、ステップ２４０５に進む。
【０３４８】
選択された予約モデルに仮予約期間に関するレコードが含まれると判定された場合、スケジュール管理部４４２は、仮予約期間に関するレコードをスケジュール情報４５４に追加する（ステップ２４０４）。このとき、業務ＩＤ４０５には、ステップ２４０２と同一の識別子が格納される。また、基準負荷９０８にも値が設定される。
【０３４９】
なお、予約要求に負荷基準の値が含まれる場合、当該値が基準負荷９０８に格納される。一方、予約要求に負荷基準の値が含まれない場合、予め設定された値が格納される。
【０３５０】
スケジュール管理部４４２は、選択された予約モデルに基づいて、予約状態情報４５５を更新する（ステップ２４０５）。
【０３５１】
具体的には、以下のような処理が実行される。
【０３５２】
スケジュール管理部４４２は、業務ＩＤ１３０１に業務ＩＤ１１０５と同一の業務ＩＤを設定する。
【０３５３】
スケジュール管理部４４２は、予約状態情報４５５のＳｔａｒｔ  Ｔｉｍｅ１３０３にユーザ要求期間の開始時刻を格納し、Ｅｎｄ  Ｔｉｍｅ１３０４にユーザ要求期間の終了時刻を格納する。
【０３５４】
スケジュール管理部４４２は、選択された予約モデルに種別７０５が「仮予約」であるレコードが含まれる場合、仮予約期間１３０５を「有」に設定する。
【０３５５】
また、スケジュール管理部４４２は、選択された予約モデルにマシン名７０２が異なるＶＭ１４０のレコードが含まれる場合、マイグレーション１３０６を「有」に設定する。
【０３５６】
また、スケジュール管理部４４２は、選択された予約モデルのマシン名７０２から、構成情報４５１を参照して、対応するＶＭ１４０の構成情報を、それぞれＣＰＵ１３０７及びメモリ１３０８に格納する。
【０３５７】
次に、スケジュール管理部４４２は、選択された予約モデルに基づいて、マイグレーション情報４５２を更新する（ステップ２４０６）。
【０３５８】
具体的には、以下のような処理が実行される。
【０３５９】
まず、スケジュール管理部４４２は、選択された予約モデルの種別７０５を参照して、仮予約期間が設定されている否かを判定する。
【０３６０】
仮予約期間が設定されていると判定された場合、スケジュール管理部４４２は、種別７０５が「仮予約」であるレコードのＳｔａｒｔ  Ｔｉｍｅ７０３の値をマイグレーション開始時間９０３に格納し、Ｅｎｄ  Ｔｉｍｅ７０４の値をマイグレーション終了時間９０４に格納する。また、スケジュール管理部４４２は、当該レコードに対応するマシン名、業務ＩＤ及びサーバ名を設定する。
【０３６１】
選択された予約モデルの種別７０５が「占有」であるレコードについては、以下のようにして更新される。
【０３６２】
まず、スケジュール管理部４４２は、種別７０５が「占有」である二つのレコードを読み出し、当該二つのレコードのマシン名７０２が異なる場合には、マイグレーションが実行されると判定し、移行先のレコードのＳｔａｒｔ  Ｔｉｍｅ７０３をマイグレーション開始時間９０３に格納する。
【０３６３】
スケジュール管理部４４２は、各情報を更新した後、処理を終了する。
【０３６４】
次に、ＶＭ１４０の割当てスケジュールが作成された後に実行されるマイグレーション処理について説明する。
【０３６５】
図２５は、本発明の第１の実施形態におけるマイグレーション処理を説明するフローチャートである。
【０３６６】
スケジュール管理部４４２は、周期的にマイグレーション処理を実行する。
【０３６７】
まず、スケジュール管理部４４２は、マイグレーション情報４５２から、一つのレコードを選択する（ステップ２５０１）。レコードの選択方法としては、例えば、マイグレーション情報４５２に格納されるレコードを順に選択する方法が考えられる。
【０３６８】
スケジュール管理部４４２は、処理開始時点の時刻を取得する（ステップ２５０２）。
【０３６９】
スケジュール管理部４４２は、取得された時刻が予約期間又は仮予約期間のいずれかに該当するか否かを判定する（ステップ２５０３）。
【０３７０】
具体的には、以下のような処理が実行される。
【０３７１】
まず、スケジュール管理部４４２は、選択されたレコードのマイグレーション開始時間９０３と、取得された時刻とが一致するか否かを判定する。
【０３７２】
取得されたレコードのマイグレーション開始時間９０３と、取得された時刻とが一致しないと判定された場合、スケジュール管理部４４２は、ステップ２５１２に進む。
【０３７３】
取得されたレコードのマイグレーション開始時間９０３と、取得された時刻とが一致すると判定された場合、スケジュール管理部４４２は、取得されたレコードの種別９０５を確認する。
【０３７４】
取得されたレコードの種別９０５が「仮予約」である場合には、仮予約期間であると判定される。したがって、スケジュール管理部４４２は、ステップ２５０４に進む。
【０３７５】
取得されたレコードの種別９０５が「予約」である場合には、予約期間であると判定される。したがって、スケジュール管理部４４２は、ステップ２５０９に進む。
【０３７６】
取得された時刻が予約期間であると判定された場合、スケジュール管理部４４２は、ハイパバイザ１３０にマイグレーションの実行を命令する（ステップ２５０９）。
【０３７７】
具体的には、スケジュール管理部４４２は、マイグレーション命令部４４７を呼び出し、当該マイグレーション命令部４４７が移動元のＶＭ１４０を管理するハイパバイザ１３０にマイグレーション実行命令を送信する。
【０３７８】
当該マイグレーション実行命令には、少なくとも、業務ＩＤ、移行元のＶＭ１４０の識別子及び移行先のＶＭ１４０の識別子が含まれる。
【０３７９】
マイグレーション実行命令を受信したハイパバイザ１３０は、切替実行部２６０を呼び出す。呼び出された切替実行部２６０は、マイグレーション実行命令に基づいて、移行元のＶＭ１４０から移行先のＶＭ１４０に、業務ＩＤに対応する業務を実行するゲストＯＳ１５０を移動させる。切替実行部２６０は、マイグレーション処理の完了通知をスケジュール管理サーバ１１０に送信する。
【０３８０】
スケジュール管理部４４２は、マイグレーションが成功したか否かを判定する（ステップ２５１０）。
【０３８１】
具体的には、スケジュール管理部４４２は、切替実行部２６０から完了通知を受信したか否かを判定する。切替実行部２６０から完了通知を受信した場合には、マイグレーションが成功したと判定される。なお、その他の判定方法を用いてもよい。
【０３８２】
マイグレーションが成功したと判定された場合、スケジュール管理部４４２は、ステップ２５１２に進む。
【０３８３】
マイグレーションが失敗したと判定された場合、スケジュール管理部４４２は、ユーザにマイグレーションが失敗した旨を通知する（ステップ２５１１）。
【０３８４】
スケジュール管理部４４２は、選択されていないレコードがあるか否かを判定する（ステップ２５１２）。
【０３８５】
選択されていないレコードがあると判定された場合、スケジュール管理部４４２は、ステップ２５０１に戻り同様の処理（ステップ２５０１〜２５１２）を実行する。
【０３８６】
ステップ２５０３において、取得された時刻が仮予約期間であると判定された場合、スケジュール管理部４４２は、負荷測定処理を実行する（ステップ２５０４）。
【０３８７】
具体的には、スケジュール管理部４４２が負荷測定部４４６を呼び出し、当該負荷測定部４４６が、移行先のＶＭ１４０の負荷情報送信部２５０に負荷情報の送信命令を送信する。
【０３８８】
スケジュール管理部４４２は、取得された負荷情報に基づいて、負荷情報に含まれる値が基準負荷９０８以下であるか否かを判定する（ステップ２５０５）。
【０３８９】
取得された負荷情報に含まれる値が、基準負荷９０８より大きいと判定された場合、スケジュール管理部４４２は、ステップ２５０２に戻る。
【０３９０】
取得された負荷情報に含まれる値が、基準負荷９０８所定以下であると判定された場合、スケジュール管理部４４２は、ハイパバイザ１３０にマイグレーションの実行を命令する（ステップ２５０６）。当該処理は、ステップ２５０９と同一の処理である。
【０３９１】
スケジュール管理部４４２は、マイグレーションが成功したか否かを判定する（ステップ２５０７）。当該処理は、ステップ２５１０と同一の処理である。
【０３９２】
マイグレーションが失敗したと判定された場合、スケジュール管理部４４２は、ステップ２５０２に戻る。
【０３９３】
マイグレーションが成功したと判定された場合、スケジュール管理部４４２は、スケジュール情報４５４を更新する（ステップ２５０８）。
【０３９４】
具体的には、スケジュール管理部４４２は、移動先のＶＭ１４０のＳｔａｒｔ  Ｔｉｍｅ１１０２に、マイグレーション完了時間を格納する。さらに、スケジュール管理部４４２は、スケジュール情報４５４から移動元のＶＭ１４０のレコードを削除する。これによって、移動元のＶＭ１４０のリソースが解放される。
【０３９５】
スケジュール管理部４４２は、選択されていないレコードがあるか否かを判定する（ステップ２５１２）。
【０３９６】
選択されていないレコードがあると判定された場合、スケジュール管理部４４２は、ステップ２５０１に戻り同様の処理（ステップ２５０１〜２５１２）を実行する。
【０３９７】
前述のように、仮予約期間中は、負荷が所定値以下の時にマイグレーションが実行される。また、マイグレーションが成功しなかった場合には、仮予約期間中に再度マイグレーションが実行される。これによって、確実にマイグレーションが実行されるため、業務を実行するＶＭ１４０の安全性及び信頼性が高くなる。
【０３９８】
第１の実施形態によれば、ユーザ要求期間以上の空き時間を有するＶＭ１４０がない場合であっても、各ＶＭ１４０が有する空き時間からユーザ要求期間を満たすＶＭ１４０の予約が可能となる。これによって、各ＶＭ１４０が有する短い空き時間を有効に利用することができる。
【０３９９】
また、第１の実施形態では、仮予約期間によってマイグレーションの実行タイミングが管理される。仮予約期間中では、移動先のＶＭ１４０の負荷に応じて、マイグレーションが実行される。また、マイグレーション処理が失敗して場合であっても、仮予約期間中に再度マイグレーション処理が実行される。これによって、業務を実行するＶＭ１４０の安全性及び信頼性が高くなる。
【０４００】
［第２の実施形態］
【０４０１】
以下、第２の実施形態について説明する。第２の実施形態では、スケジュール情報４５４に仮予約期間に関するレコードが含まれる場合の候補リスト生成処理が異なる。その他の装置構成及び処理方法は、第１の実施形態と同一であるため説明を省略する。
【０４０２】
図２６Ａ及び図２６Ｂは、本発明の第２の実施形態における候補リスト生成処理を説明するフローチャートである。
【０４０３】
図１９と同一の処理については同一の符号を付す。以下、図１９との差異を中心に説明する。
【０４０４】
はじめに、予約モデル生成部４４５は、予約期間又は仮予約期間が設定されていない空き時間に基づいて生成された空きリソース情報４５６を取得する（ステップ２６０１）。ここで、空きリソース情報４５６は、以下のような処理によって生成される。
【０４０５】
空き時間検出部４４４は、スケジュール情報４５４を参照して、計算機１２０毎に、種別１１０４が「占有」及び「仮予約」であるレコードを除く空き時間を抽出する。すなわち、予約期間又は仮予約期間が設定されていない空き時間が抽出される。
【０４０６】
次に、空き時間検出部４４４は、抽出された空き時間に基づいて、空きリソース情報４５６を生成する。このとき、生成される空きリソース情報４５６には、種別１４０５が「空」であるレコードのみが格納される。
【０４０７】
ステップ１７０３において、予約要求を満たす空きリソースがないと判定された場合、予約モデル生成部４４５は、判定処理が１回目であるか否かを判定する（ステップ２６０２）。当該判定は、例えば、予約モデル生成部４４５が、処理回数をカウントすることによって判定できる。
【０４０８】
判定処理が１回目であると判定された場合、予約モデル生成部４４５は、候補リスト４６１をクリアする。具体的には、Ｕ−Ｓｔａｒｔ  Ｔｉｍｅ１５０１が元の値にリセットし、候補リスト４６１に格納されるレコードが全て削除される。
【０４０９】
候補リスト４６１がクリアされた後、予約モデル生成部４４５は、予約期間が設定されていない空き時間に基づいて生成された空きリソース情報４５６を取得する（ステップ２６０３）。ここで、空きリソース情報４５６は、以下のような処理によって生成される。
【０４１０】
空き時間検出部４４４は、スケジュール情報４５４を参照して、計算機１２０毎に、種別１１０４が「占有」であるレコードを除く空き時間を抽出する。すなわち、予約期間が設定されていない空き時間が抽出される。これによって、仮予約期間が空き時間として扱われた空きリソース情報４５６が生成される。
【０４１１】
空き時間検出部４４４は、抽出された空き時間に基づいて、空きリソース情報４５６を生成する。このとき、生成される空きリソース情報４５６には、種別１４０５が「空」及び「仮予約」であるレコードが格納される。
【０４１２】
なお、空き時間検出部４４４は、仮予約期間全てを空き時間として抽出しなくともよい。本実施形態では、仮予約期間の終了時間（Ｅｎｄ  Ｔｉｍｅ１１０３）から１時間前までの期間が空き時間として抽出されないように設定されているものとする。この場合、仮予約期間が４時間である場合には、仮予約期間の開始時間（Ｓｔａｒｔ  Ｔｉｍｅ１１０２）から３時間分の期間が空き時間として抽出される。
【０４１３】
予約モデル生成部４４５は、生成された空きリソース情報４５６に基づいて、予約要求を満たす空きリソースがあるか否かを判定する（ステップ１９０２）。
【０４１４】
ステップ１９０９において、Ｅｎｄ  Ｔｉｍｅ５０４がＵ−Ｅｎｄ  Ｔｉｍｅ１７０２以上であると判定された場合、予約モデル生成部４４５は、空きリソース情報４５６を更新する（ステップ１９１２）。
【０４１５】
さらに、予約モデル生成部４４５は、スケジュール情報４５４を更新し（ステップ１９１３）、処理を終了する。具体的には、種別１１０４が「仮予約」であるレコードのＳｔａｒｔ  Ｔｉｍｅ１１０２及びＥｎｄ  Ｔｉｍｅ１１０３を更新する。
【０４１６】
仮予約期間のうち、候補リストのＳｔａｒｔ  Ｔｉｍｅ５０３及びＥｎｄ  Ｔｉｍｅ５０４と重複する時間が削除される。なお、仮予約期間の全期間が候補リストのＳｔａｒｔ  Ｔｉｍｅ５０３及びＥｎｄ  Ｔｉｍｅ５０４と重複する場合には、仮予約期間が設定されたレコードが、スケジュール情報４５４から削除される。
【０４１７】
更新方法としては、ステップ１９１０と同一の方法が用いられる。ただし、ステップ２６０４において生成された空きリソース情報４５６を更新方法が一部異なる。具体的には、仮予約期間に新たな予約期間が設定される場合に、当該予約期間分の期間を仮予約期間から削除される。すなわち、仮予約期間を空き時間として、新たな予約期間が設定されることとなる。
【０４１８】
なお、予約期間が予約期間に包含される場合には、空きリソース情報４５６から、仮予約期間のレコーダが削除される。
【０４１９】
第２の実施形態では、仮予約期間は、他のユーザが予約期間を設定可能な期間である。すなわち、仮予約期間中は、ＶＭ１４０は占有状態として扱われず、一種の空き時間として扱われる。これによって、柔軟なリソースの割当て及び解放を実現できる。
【０４２０】
［変形例］
【０４２１】
第１の実施形態のマイグレーション処理では、仮予約期間の移行先のＶＭ１４０の負荷が基準負荷９０８以下である場合にマイグレーションを実行した。本発明は、これに限定されず、以下のような方法を用いてもよい。
【０４２２】
（第１の変形例）
【０４２３】
ステップ２５０３において、取得された時刻が仮予約期間であると判定された場合、スケジュール管理部４４２は、ハイパバイザ１３０に各ＶＭ１４０上で実行される業務のジョブの監視を命令する。
【０４２４】
ジョブの監視命令を受信したハイパバイザ１３０は、移行元のＶＭ１４０のジョブが完了したことを検出した場合に、ジョブ完了通知をスケジュール管理部４４２に送信する。
【０４２５】
ジョブ完了通知を受信したスケジュール管理部４４２は、ハイパバイザ１３０にマイグレーションの実行を命令する。
【０４２６】
第１の変形例では、仮予約期間中にジョブが完了したことを契機にマイグレーションが実行される。
【０４２７】
（第２の変形例）
【０４２８】
第２の変形例では、ハイパバイザ１３０が、ＶＭ１４０の障害を検出する障害検出部（図示省略）を備える。
【０４２９】
このときステップ２５０３において、取得された時刻が仮予約期間であると判定された場合、スケジュール管理部４４２は、ハイパバイザ１３０にＶＭ１４０の障害監視を命令する。
【０４３０】
ＶＭ１４０の障害監視命令を受信したハイパバイザ１３０は、障害検出部（図示省略）を呼び出し、ＶＭ１４０の障害を監視する。
【０４３１】
移動元のＶＭ１４０の障害が検出された場合、ハイパバイザ１３０は、移動元のＶＭ１４０の識別子を含む、障害通知をスケジュール管理部４４２に送信する。
【０４３２】
当該障害通知を受信したスケジュール管理部４４２は、ハイパバイザ１３０にマイグレーションの実行を命令する。
【０４３３】
一方、移動先のＶＭ１４０の障害が検出された場合、ハイパバイザ１３０は、移動先のＶＭ１４０の識別子を含む、障害通知をスケジュール管理部４４２に送信する。
【０４３４】
当該障害通知を受信したスケジュール管理部４４２は、ユーザに予約したＶＭ１４０に障害が発生した旨を通知する。
【０４３５】
なお、移動先のＶＭ１４０の障害が検出された時に、仮予約期間の終了時間まで十分な間隔がある場合、スケジュール管理部４４２は、再度、予約処理を実行してもよい。
【０４３６】
第２の変形例では、仮予約期間中の障害発生を契機にマイグレーションが実行される。
【０４３７】
なお、第１の実施形態に、第１の変形例及び第２の変形例を組み合わせてもよい。
【０４３８】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【図１】
2012025977.tif 000003
【図２】
2012025977.tif 000004
【図３】
2012025977.tif 000005
【図４】
2012025977.tif 000006
【図５】
2012025977.tif 000007
【図６】
2012025977.tif 000008
【図７】
2012025977.tif 000009
【図８】
2012025977.tif 000010
【図９】
2012025977.tif 000011
【図１０】
2012025977.tif 000012
【図１１】
2012025977.tif 000013
【図１２】
2012025977.tif 000014
【図１３】
2012025977.tif 000015
【図１４Ａ】
2012025977.tif 000016
【図１４Ｂ】
2012025977.tif 000017
【図１５】
2012025977.tif 000018
【図１６】
2012025977.tif 000019
【図１７】
2012025977.tif 000020
【図１８】
2012025977.tif 000021
【図１９】
2012025977.tif 000022
【図２０】
2012025977.tif 000023
【図２１Ａ】
2012025977.tif 000024
【図２１Ｂ】
2012025977.tif 000025
【図２１Ｃ】
2012025977.tif 000026
【図２１Ｄ】
2012025977.tif 000027
【図２２Ａ】
2012025977.tif 000028
【図２２Ｂ】
2012025977.tif 000029
【図２３】
2012025977.tif 000030
【図２４】
2012025977.tif 000031
【図２５】
2012025977.tif 000032
【図２６Ａ】
2012025977.tif 000033
【図２６Ｂ】
2012025977.tif 000034
【手続補正書】
【提出日】平成25年6月12日(2013.6.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザが操作する端末と、前記ユーザの一つ以上の業務を実行する複数の計算機と、前記業務を実行させる前記計算機の割当てを管理するスケジュール管理サーバと、を備える計算機システムにおけるスケジュール管理方法であって、
前記端末は、第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリと、前記第１のプロセッサに接続される第１のネットワークインタフェースと、前記第１のプロセッサに接続される入出力部とを備え、
前記計算機は、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリと、前記第２のプロセッサに接続される第２のネットワークインタフェースとを備え、
前記スケジュール管理サーバは、第３のプロセッサと、前記第３のプロセッサに接続される第３のメモリと、前記第３のプロセッサに接続される第３のネットワークインタフェースとを備え、
前記第２のメモリは、
前記計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する仮想マシンモニタと、
前記各仮想計算機上で実行され、前記業務を実行するオペレーティングシステムと、を格納し、
前記第３のメモリは、
新規業務に割り当てる前記仮想計算機を予約するための予約要求を受信する要求受信部と、
前記各仮想計算機の前記業務への割当ての予約状況を含む予約情報を管理し、前記新規業務に割り当てる前記仮想計算機の予約スケジュールを生成するスケジュール管理部と、を格納し、
前記スケジュール管理方法は、
前記要求受信部が、前記ユーザが希望する予約要求期間を含む前記予約要求を前記端末から受信する第１のステップと、
前記スケジュール管理部が、前記予約情報を参照して、前記仮想計算機毎に、前記新規業務以外の業務への割当てが予約されていない期間である空き期間を抽出する第２のステップと、
前記スケジュール管理部が、前記受信した予約要求と、前記抽出された各仮想計算機の空き期間とに基づいて、前記新規業務への割当てが可能な前記複数の仮想計算機が実行される前記計算機を選択する第３のステップと、
前記スケジュール管理部が、前記選択された計算機上で実行される前記複数の仮想計算機の各々の前記空き期間のうち、二以上の前記仮想計算機の空き期間に、前記新規業務への割当てを予約する予約期間を設定し、前記設定された予約期間以前の空き期間に、マイグレーション実行期間を示す仮予約期間を設定することによって、前記予約要求期間において前記新規業務を継続して実行可能な予約スケジュールを生成する第４のステップと、
前記スケジュール管理部が、前記生成された予約スケジュールに基づいて、前記予約情報を更新する第５のステップと、
前記スケジュール管理部が、前記更新された予約情報に基づいて、前記新規業務の実行中に、前記新規業務に対応する予約期間が設定され、現在、前記新規業務を実行する仮想計算機から、前記新規業務に対応する予約期間が設定され、当該仮想計算機の次に前記新規業務を実行する他の仮想計算機に前記新規業務をマイグレーションする第６のステップと、
を含み、
前記第４のステップでは、前記スケジュール管理部が、任意の仮想計算機に設定された前記予約期間の終点と、前記任意の仮想計算機の次に、前記新規業務を実行する他の前記仮想計算機に設定される前記予約期間の開始点とが一致又は重なるように、前記他の仮想計算機の空き期間に前記予約期間が設定されることを特徴とするスケジュール管理方法。
【請求項２】
前記第４のステップは、
前記スケジュール管理部が、前記設定される予約期間に関する第１の割当スケジュールを生成する第７のステップと、
前記スケジュール管理部が、前記設定される仮予約期間に関する第２の割当スケジュールを生成する第８のステップと、
前記スケジュール管理部が、前記生成された第１の割当スケジュール及び第２の割当スケジュールに基づいて、前記予約スケジュールを生成する第９のステップと、
を含むことを特徴とする請求項１に記載のスケジュール管理方法。
【請求項３】
前記スケジュール管理部は、前記第１の割当スケジュールを生成するための生成条件を複数保持し、
前記予約要求は、前記予約スケジュールを選択するための選択基準情報を含み、
前記７のステップでは、前記スケジュール管理部が、前記生成条件毎に、一つの前記第１の割当スケジュールを生成し、
前記第８のステップでは、前記スケジュール管理部が、前記生成された第１の割当スケジュール毎に、対応する前記第２の割当スケジュールを一つ生成し、
前記第９のステップでは、前記スケジュール管理部が、前記複数の第１の割当スケジュールと、対応する前記複数の第２の割当スケジュールとに基づいて、複数の前記予約スケジュールを生成し、
前記スケジュール管理方法は、前記第４のステップが実行された後に、さらに、前記スケジュール管理部が、前記受信した予約要求に基づいて、前記生成された複数の予約スケジュールのなかから、一つの前記予約スケジュールを選択する第１０のステップを含むことを特徴とする請求項２に記載のスケジュール管理方法。
【請求項４】
前記第６のステップでは、
前記スケジュール管理部が、周期的に時刻を取得し、
前記スケジュール管理部が、前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、前記スケジュール管理部が、マイグレーション先の仮想計算機の負荷を取得し、
前記取得されたマイグレーション先の仮想計算機の負荷が所定の閾値以下である場合に、前記スケジュール管理部が、マイグレーション元の仮想計算機上で実行される前記新規業務を、前記マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項１に記載のスケジュール管理方法。
【請求項５】
前記第６のステップでは、
前記スケジュール管理部が、周期的に時刻を取得し、
前記スケジュール管理部が、前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合には、前記スケジュール管理部が、前記新規業務を実行するマイグレーション元の仮想計算機のジョブの実行状況を監視し、
前記ジョブの実行完了が検知された場合に、前記スケジュール管理部が、前記マイグレーション元の仮想計算機上で実行される新規業務を、マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項１に記載のスケジュール管理方法。
【請求項６】
前記第６のステップでは、
前記スケジュール管理部が、周期的に時刻を取得し、
前記スケジュール管理部が、前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、前記スケジュール管理部が、前記新規業務を実行するマイグレーション元の仮想計算機の障害を監視し、
前記マイグレーション元の仮想計算機に障害が発生したことが検知された場合に、前記スケジュール管理部が、前記マイグレーション元の仮想計算機上で実行される前記新規業務を、マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項１に記載のスケジュール管理方法。
【請求項７】
前記予約期間内では、当該予約期間が設定された前記仮想計算機は、新たな予約ができない状態であり、
前記仮予約期間内では、当該仮予約期間が設定された前記仮想計算機は、新たな予約が可能な状態であり、
前記スケジュール管理部は、新たな前記予約要求を受信した場合に、前記仮予約期間を、前記空き期間として抽出することを特徴とする請求項１に記載のスケジュール管理方法。
【請求項８】
計算機が備える物理資源を論理的に分割することによって生成された仮想計算機に対する業務の割当てを管理するスケジュール管理サーバであって、
前記スケジュール管理サーバは、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続されるネットワークインタフェースとを備え、
前記メモリは、
新規業務に割り当てる前記仮想計算機を予約するための予約要求を受信する要求受信部と、
前記各仮想計算機の前記業務への割当ての予約状況を含む予約情報を管理し、前記新規業務に割り当てる前記仮想計算機の予約スケジュールを生成するスケジュール管理部と、を備え、
前記要求受信部は、ユーザが希望する予約要求期間を含む前記予約要求を受信し、
前記スケジュール管理部は、
前記予約情報を参照して、前記仮想計算機毎に、前記新規業務以外の業務への割当てが予約されていない期間である空き期間を抽出し、
前記受信した予約要求と、前記抽出された各仮想計算機の空き期間とに基づいて、前記新規業務への割当てが可能な前記複数の仮想計算機が実行される前記計算機を選択し、
前記選択された計算機上で実行される前記複数の前記仮想計算機の各々の前記空き期間のうち、二以上の前記仮想計算機の空き期間に、前記新規業務への割当てを予約する予約期間を設定し、前記設定された予約期間以前の空き期間に、マイグレーション実行期間を示す仮予約期間を設定することによって、前記予約要求期間において前記新規業務を継続して実行可能な予約スケジュールを生成し、
前記生成された予約スケジュールに基づいて、前記予約情報を更新し、
前記更新された予約情報に基づいて、前記新規業務の実行中に、前記新規業務に対応する予約期間が設定され、現在、前記新規業務を実行する仮想計算機から、前記新規業務に対応する予約期間が設定され、当該仮想計算機の次に前記新規業務を実行する他の仮想計算機に前記新規業務をマイグレーションし、
前記予約期間は、任意の仮想計算機に設定された前記予約期間の終点と、前記任意の仮想計算機の次に、前記新規業務を実行する他の前記仮想計算機に設定される前記予約期間の開始点とが一致又は重なるように設定されることを特徴とするスケジュール管理サーバ。
【請求項９】
前記スケジュール管理部は、前記予約スケジュールを生成する場合に、
前記設定される予約期間に関する第１の割当スケジュールを生成し、
前記設定される仮予約期間に関する第２の割当スケジュールを生成し、
前記生成された第１の割当スケジュール及び第２の割当スケジュールに基づいて、前記予約スケジュールを生成することを特徴とする請求項８に記載のスケジュール管理サーバ。
【請求項１０】
前記スケジュール管理部は、前記第１の割当スケジュールを生成するための生成条件を複数保持し、
前記予約要求は、前記予約スケジュールを選択するための選択基準情報を含み、
前記スケジュール管理部は、
前記生成条件毎に、一つの前記第１の割当スケジュールを生成し、
前記生成された第１の割当スケジュール毎に、対応する前記第２の割当スケジュールを一つ生成し、
前記複数の第１の割当スケジュールと、対応する前記複数の第２の割当スケジュールとに基づいて、複数の前記予約スケジュールを生成し、
前記受信した予約要求に基づいて、前記生成された複数の予約スケジュールのなかから、一つの前記予約スケジュールを選択することを特徴とする請求項９に記載のスケジュール管理サーバ。
【請求項１１】
前記スケジュール管理部は、
周期的に時刻を取得し、
前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、マイグレーション先の仮想計算機の負荷を取得し、
前記取得されたマイグレーション先の仮想計算機の負荷が所定の閾値以下である場合に、マイグレーション元の仮想計算機上で実行される前記新規業務を、前記マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項８に記載のスケジュール管理サーバ。
【請求項１２】
前記スケジュール管理部は、
周期的に時刻を取得し、
前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、前記新規業務を実行するマイグレーション元の仮想計算機のジョブの実行状況を監視し、
前記ジョブの実行完了が検知された場合に、前記マイグレーション元の仮想計算機上で実行される新規業務を、マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項８に記載のスケジュール管理サーバ。
【請求項１３】
前記スケジュール管理部は、
周期的に時刻を取得し、
前記取得された時刻に基づいて前記予約スケジュールを参照して、前記取得された時刻が前記設定された仮予約期間に含まれるか否かを判定し、
前記取得された時刻が前記設定された仮予約期間に含まれると判定された場合に、前記新規業務を実行するマイグレーション元の仮想計算機の障害を監視し、
前記マイグレーション元の仮想計算機に障害が発生したことが検知された場合に、前記マイグレーション元の仮想計算機上で実行される前記新規業務を、マイグレーション先の仮想計算機にマイグレーションすることを特徴とする請求項８に記載のスケジュール管理サーバ。
【請求項１４】
前記予約期間内では、当該予約期間が設定された前記仮想計算機は、新たな予約ができない状態であり、
前記仮予約期間内では、当該仮予約期間が設定された前記仮想計算機は、新たな予約が可能な状態であり、
前記スケジュール管理部は、新たな前記予約要求を受信した場合に、前記仮予約期間を、前記空き期間として抽出することを特徴とする請求項８に記載のスケジュール管理サーバ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
本発明の代表的な一例を示せば以下の通りである。すなわち、ユーザが操作する端末と、前記ユーザの一つ以上の業務を実行する複数の計算機と、前記業務を実行させる前記計算機の割当てを管理するスケジュール管理サーバと、を備える計算機システムにおけるスケジュール管理方法であって、前記端末は、第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリと、前記第１のプロセッサに接続される第１のネットワークインタフェースと、前記第１のプロセッサに接続される入出力部とを備え、前記計算機は、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリと、前記第２のプロセッサに接続される第２のネットワークインタフェースとを備え、前記スケジュール管理サーバは、第３のプロセッサと、前記第３のプロセッサに接続される第３のメモリと、前記第３のプロセッサに接続される第３のネットワークインタフェースとを備え、前記第２のメモリは、前記計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する仮想マシンモニタと、前記各仮想計算機上で実行され、前記業務を実行するオペレーティングシステムと、を格納し、前記第３のメモリは、新規業務に割り当てる前記仮想計算機を予約するための予約要求を受信する要求受信部と、前記各仮想計算機の前記業務への割当ての予約状況を含む予約情報を管理し、前記新規業務に割り当てる前記仮想計算機の予約スケジュールを生成するスケジュール管理部と、を格納し、前記スケジュール管理方法は、前記要求受信部が、前記ユーザが希望する予約要求期間を含む前記予約要求を前記端末から受信する第１のステップと、前記スケジュール管理部が、前記予約情報を参照して、前記仮想計算機毎に、前記新規業務以外の業務への割当てが予約されていない期間である空き期間を抽出する第２のステップと、前記スケジュール管理部が、前記受信した予約要求と、前記抽出された各仮想計算機の空き期間とに基づいて、前記新規業務への割当てが可能な前記複数の仮想計算機が実行される前記計算機を選択する第３のステップと、前記スケジュール管理部が、前記選択された計算機上で実行される前記複数の仮想計算機の各々の前記空き期間のうち、二以上の前記仮想計算機の空き期間に、前記新規業務への割当てを予約する予約期間を設定し、前記設定された予約期間以前の空き期間に、マイグレーション実行期間を示す仮予約期間を設定することによって、前記予約要求期間において前記新規業務を継続して実行可能な予約スケジュールを生成する第４のステップと、前記スケジュール管理部が、前記生成された予約スケジュールに基づいて、前記予約情報を更新する第５のステップと、前記スケジュール管理部が、前記更新された予約情報に基づいて、前記新規業務の実行中に、前記新規業務に対応する予約期間が設定され、現在、前記新規業務を実行する仮想計算機から、前記新規業務に対応する予約期間が設定され、当該仮想計算機の次に前記新規業務を実行する他の仮想計算機に前記新規業務をマイグレーションする第６のステップと、を含み、前記第４のステップでは、前記スケジュール管理部が、任意の仮想計算機に設定された前記予約期間の終点と、前記任意の仮想計算機の次に、前記新規業務を実行する他の前記仮想計算機に設定される前記予約期間の開始点とが一致又は重なるように、前記他の仮想計算機の空き期間に前記予約期間が設定されることを特徴とする。
【国際調査報告】
2012025977.tif 000035
2012025977.tif 000036
2012025977.tif 000037