(57)【要約】【課題】クラウドにおいて連続した空きリソースが確保できない場合においても、空きリソースを有効利用する。【解決手段】リソース予約管理装置１０は、コンピュートマシンのリソース容量およびリソース予約情報を記憶する記憶部と、ユーザ端末から、稼働要求時間帯、稼働時間および要求スペックを含む予約要求情報を親リースの予約として受け付ける予約通知部１１と、リソース予約情報で示される空きリソースとなる時間にあわせて、親リースの稼働時間を分割した子リースを生成し、リソース予約情報に設定するスケジューリング部１２と、リソース予約情報を参照することにより、作成されたインスタンスの停止、移行、再開、削除を含む所定のイベントの発生を検知する予約管理部と、インスタンス作成指示および検知された所定のイベントに応じた指示情報をコンピュートマシンに送信するインスタンス管理部１５と、を備える。【選択図】図２
2020024646.tif 000002
【特許請求の範囲】
【請求項１】
クラウド上の複数のコンピュートマシンで構成されるリソースを、ユーザ端末に提供する管理を行うリソース予約管理装置であって、
前記コンピュートマシンそれぞれのリソース容量、および、前記コンピュートマシン毎の時系列でのインスタンスの予約設定の有無を示すリソース予約情報を記憶する記憶部と、
前記ユーザ端末から、前記リソースの稼働を要求する時間帯を示す稼働要求時間帯、前記インスタンスが稼働すべき時間を示す稼働時間、および、要求するリソースのリソース容量を示す要求スペックを含む予約要求情報を親リースの予約として受け付けるとともに、前記親リース毎の予約に付された予約ＩＤと前記リソースの予約結果とを予約情報として前記予約要求情報を送信してきた前記ユーザ端末に送信する予約通知部と、
前記コンピュートマシンそれぞれのリソース容量、および、前記リソース予約情報を参照し、前記予約要求情報で示される前記親リースの稼働要求時間帯に、前記要求スペックを満たし、かつ、前記稼働時間以上の前記コンピュートマシンの空きリソースがあるか否かを判定して無かった場合に、前記親リースの稼働要求時間帯内において、前記リソース予約情報で示される空きリソースとなる時間にあわせて、前記親リースの前記稼働時間を分割した子リースを生成し、生成した前記子リースの予約を前記予約ＩＤとともに前記リソース予約情報に設定するスケジューリング部と、
前記リソース予約情報を所定の時間間隔で参照することにより、作成されたインスタンスの停止、移行、再開、削除を含む所定のイベントの発生を検知する予約管理部と、
前記ユーザ端末から、前記予約ＩＤを含むインスタンス作成要求を受け取り、当該予約ＩＤを用いて、前記リソース予約情報に設定された前記子リースのインスタンスを実行するコンピュートマシンを特定してインスタンス作成指示を送信し、当該コンピュートマシンにインスタンスを作成させるとともに、検知された前記所定のイベントに応じた指示情報を当該コンピュートマシンに送信するインスタンス管理部と、
を備えることを特徴とするリソース予約管理装置。
【請求項２】
クラウド上の複数のコンピュートマシンで構成されるリソースを、ユーザ端末に提供する管理を行うリソース予約管理装置のリソース予約管理方法であって、
前記リソース予約管理装置は、
前記コンピュートマシンそれぞれのリソース容量、および、前記コンピュートマシン毎の時系列でのインスタンスの予約設定の有無を示すリソース予約情報を記憶する記憶部を備えており、
前記ユーザ端末から、前記リソースの稼働を要求する時間帯を示す稼働要求時間帯、前記インスタンスが稼働すべき時間を示す稼働時間、および、要求するリソースのリソース容量を示す要求スペックを含む予約要求情報を親リースの予約として受け付けるステップと、
前記コンピュートマシンそれぞれのリソース容量、および、前記リソース予約情報を参照し、前記予約要求情報で示される前記親リースの稼働要求時間帯に、前記要求スペックを満たし、かつ、前記稼働時間以上の前記コンピュートマシンの空きリソースがあるか否かを判定して無かった場合に、前記親リースの稼働要求時間帯内において、前記リソース予約情報で示される空きリソースとなる時間にあわせて、前記親リースの前記稼働時間を分割した子リースを生成し、前記親リース毎に付した予約ＩＤとともに、生成した前記子リースの予約を前記リソース予約情報に設定するステップと、
前記予約ＩＤと前記リソースの予約結果とを予約情報として前記予約要求情報を送信してきた前記ユーザ端末に送信するステップと、
前記ユーザ端末から、前記予約ＩＤを含むインスタンス作成要求を受け取り、当該予約ＩＤを用いて、前記リソース予約情報に設定された前記子リースのインスタンスを実行するコンピュートマシンを特定してインスタンス作成指示を送信し、当該コンピュートマシンにインスタンスを作成させるステップと、
前記リソース予約情報を所定の時間間隔で参照することにより、作成されたインスタンスの停止、移行、再開、削除を含む所定のイベントの発生を検知するステップと、
検知された前記所定のイベントに応じた指示情報を前記コンピュートマシンに送信するステップと、
を実行することを特徴とするリソース予約管理方法。
【請求項３】
請求項２に記載のリソース予約管理方法を、コンピュータに実行させるためのリソース予約管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のユーザでリソースを共有するリソース共有システムにおけるリソース予約管理装置、リソース予約管理方法およびリソース予約管理プログラムに関する。
【背景技術】
【０００２】
従来、ＩａａＳ（Infrastructure as a Service）のようなクラウドサービスにおいて、複数のユーザ（サービスやアプリケーション等）でリソース（コンピュートマシン等）を共有し、各ユーザが必要なときに必要な分だけリソースを利用するモデルが普及している。
例えばＯｐｅｎＳｔａｃｋを用いたクラウドオペレーティングシステムでは、Ｂｌａｚａｒと呼ばれるサービスを用いてユーザによるリソースの予約を可能とする（非特許文献１参照）。このＢｌａｚａｒでは、将来実行することが必要となるワークロードのためのインスタンスを、一定の連続稼働時間ごとに提供リソースに割り当てて予約することができる。
【０００３】
図５は、Ｂｌａｚａｒで管理されるリソース予約テーブル（タイムテーブル）を模式的に示した図である。
図５では、リソースが４台のホストマシン（以下、「ホスト」と称する。）（ホスト１〜４）で構成される例を示している。なお、ホストは、仮想マシン（インスタンス）を作成するコンピュートマシン（仮想的なＣＰＵ，メモリ，ディスク等によるリソース）により構成される。
Ｂｌａｚａｒでは、図５に示すように、リソース（ホスト）毎に予約を管理することにより、ユーザ（ユーザ端末）にリソースの利用権を与える。
例えばホスト２は、４月１日の０時００分から４月２日の０時００分がフリー（空き状態）であり、４月２日０時００分から４月４日０時００分までがプロジェクトＡ、４月５日０時００分から４月７日０時００分までがプロジェクトＤにより予約されている。
また、１台のホストマシンを複数のユーザが部分的に予約することも可能である。例えば、ホスト１は、４月１日０時００分から４月４日０時００分にかけて、プロジェクトＡおよびプロジェクトＢにより予約されている（図５の符号ａ）。
【０００４】
このＢｌａｚａｒでは、リソースを予約する際に、時間（開始時刻・終了時刻）および利用するリソースの容量（リソース容量）（要求スペック）を指定することにより予約を行う。例えば、予約（リース）は、「2018/4/1 0:00 〜 2018/4/5 0:00，4コア，16GB  RAMを搭載したインスタンスを１台予約」としてユーザ（ユーザ端末）により要求される。これにより、図５の符号ｂに示すように、ホスト４にプロジェクトＣのインスタンスを予約することができる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】“Blazar, the OpenStack Reservation Service”［online］、［平成３０年７月３０日検索］、インターネット<ＵＲＬ：https://docs.openstack.org/blazar/latest/>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記した非特許文献１に記載のＯｐｅｎＳｔａｃｋのＢｌａｚａｒのように、時間（開始時刻・終了時刻）とリソース容量とを指定して予約する手法では、空きリソースが単数または複数のホストにわたって時間的に非連続で存在する場合、ユーザが所望する時間のリソースがトータルで存在していても、ユーザは、そのリソースを予約することはできない。
例えば、図６に示すように、４月１日０時００分から４月７日０時００分の間に、合計３日間以上の空きリソースがある場合でも、それが非連続な上、別ホストであるため、ユーザが同じインスタンスで３日間の空きリソースを確保することはできない（図６の符号ｃ）。
【０００７】
即ち、以下の課題が存在する。
（課題１）時間的に非連続な空きリソースを一つのインスタンスに予約することができない。
（課題２）ホストが異なるリソースを、一つのインスタンスに予約することができない。
【０００８】
図６に示すリソース予約テーブルにおけるリソースの空き状況は、クラウド内部の情報であるため、サービス提供者（サービス提供者端末）にしか情報提供されず、ユーザからはどの時刻にどれだけの時間帯ならリソースが利用可能であるかはわからない。また、仮にリソースの空き状況がユーザ側でわかったとしても、その空き状況に合わせて分割して予約するのは、手間のかかる作業となる。
【０００９】
本発明は、このような事情に鑑みなされたものであり、クラウドにおいて連続した空きリソースが確保できない場合においても、空きリソースを有効利用できる、リソース予約管理装置、リソース予約管理方法およびリソース予約管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述の目的を達成するため、請求項１に記載の発明は、クラウド上の複数のコンピュートマシンで構成されるリソースを、ユーザ端末に提供する管理を行うリソース予約管理装置であって、前記コンピュートマシンそれぞれのリソース容量、および、前記コンピュートマシン毎の時系列でのインスタンスの予約設定の有無を示すリソース予約情報を記憶する記憶部と、前記ユーザ端末から、前記リソースの稼働を要求する時間帯を示す稼働要求時間帯、前記インスタンスが稼働すべき時間を示す稼働時間、および、要求するリソースのリソース容量を示す要求スペックを含む予約要求情報を親リースの予約として受け付けるとともに、前記親リース毎の予約に付された予約ＩＤと前記リソースの予約結果とを予約情報として前記予約要求情報を送信してきた前記ユーザ端末に送信する予約通知部と、前記コンピュートマシンそれぞれのリソース容量、および、前記リソース予約情報を参照し、前記予約要求情報で示される前記親リースの稼働要求時間帯に、前記要求スペックを満たし、かつ、前記稼働時間以上の前記コンピュートマシンの空きリソースがあるか否かを判定して無かった場合に、前記親リースの稼働要求時間帯内において、前記リソース予約情報で示される空きリソースとなる時間にあわせて、前記親リースの前記稼働時間を分割した子リースを生成し、生成した前記子リースの予約を前記予約ＩＤとともに前記リソース予約情報に設定するスケジューリング部と、前記リソース予約情報を所定の時間間隔で参照することにより、作成されたインスタンスの停止、移行、再開、削除を含む所定のイベントの発生を検知する予約管理部と、前記ユーザ端末から、前記予約ＩＤを含むインスタンス作成要求を受け取り、当該予約ＩＤを用いて、前記リソース予約情報に設定された前記子リースのインスタンスを実行するコンピュートマシンを特定してインスタンス作成指示を送信し、当該コンピュートマシンにインスタンスを作成させるとともに、検知された前記所定のイベントに応じた指示情報を当該コンピュートマシンに送信するインスタンス管理部と、を備えることを特徴とするリソース予約管理装置とした。
【００１１】
また、請求項２に記載の発明は、クラウド上の複数のコンピュートマシンで構成されるリソースを、ユーザ端末に提供する管理を行うリソース予約管理装置のリソース予約管理方法であって、前記リソース予約管理装置が、前記コンピュートマシンそれぞれのリソース容量、および、前記コンピュートマシン毎の時系列でのインスタンスの予約設定の有無を示すリソース予約情報を記憶する記憶部を備えており、前記ユーザ端末から、前記リソースの稼働を要求する時間帯を示す稼働要求時間帯、前記インスタンスが稼働すべき時間を示す稼働時間、および、要求するリソースのリソース容量を示す要求スペックを含む予約要求情報を親リースの予約として受け付けるステップと、前記コンピュートマシンそれぞれのリソース容量、および、前記リソース予約情報を参照し、前記予約要求情報で示される前記親リースの稼働要求時間帯に、前記要求スペックを満たし、かつ、前記稼働時間以上の前記コンピュートマシンの空きリソースがあるか否かを判定して無かった場合に、前記親リースの稼働要求時間帯内において、前記リソース予約情報で示される空きリソースとなる時間にあわせて、前記親リースの前記稼働時間を分割した子リースを生成し、前記親リース毎に付した予約ＩＤとともに、生成した前記子リースの予約を前記リソース予約情報に設定するステップと、前記予約ＩＤと前記リソースの予約結果とを予約情報として前記予約要求情報を送信してきた前記ユーザ端末に送信するステップと、前記ユーザ端末から、前記予約ＩＤを含むインスタンス作成要求を受け取り、当該予約ＩＤを用いて、前記リソース予約情報に設定された前記子リースのインスタンスを実行するコンピュートマシンを特定してインスタンス作成指示を送信し、当該コンピュートマシンにインスタンスを作成させるステップと、前記リソース予約情報を所定の時間間隔で参照することにより、作成されたインスタンスの停止、移行、再開、削除を含む所定のイベントの発生を検知するステップと、検知された前記所定のイベントに応じた指示情報を前記コンピュートマシンに送信するステップと、を実行することを特徴とするリソース予約管理方法とした。
【００１２】
また、請求項３に記載の発明は、請求項２に記載のリソース予約管理方法を、コンピュータに実行させるためのリソース予約管理プログラムとした。
【００１３】
このようにすることにより、クラウド側の空きリソースが、単数または複数のコンピュートマシンにわたって時間的に非連続で存在し、親リースを予約できない場合であっても、ユーザが要求する稼働時間を分割した子リースを生成して予約を設定することができる。よって、空きリソースを有効活用することができる。
【発明の効果】
【００１４】
本発明によれば、クラウドにおいて連続した空きリソースが確保できない場合においても、空きリソースを有効利用する、リソース予約管理装置、リソース予約管理方法およびリソース予約管理プログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態に係るリソース予約管理装置が管理するリソース予約テーブルの一例を示す図である。
【図２】本実施形態に係るリソース予約管理装置を含むリソース予約管理システムの構成を示す図である。
【図３】本実施形態に係るリソース予約管理装置が実行する予約設定処理の流れを示すフローチャートである。
【図４】本実施形態に係るリソース予約管理装置が実行するインスタンスの状態制御処理の流れを示すフローチャートである。
【図５】従来技術である、Ｂｌａｚａｒで管理されるタイムテーブルを模式的に示した図である。
【図６】従来技術である、Ｂｌａｚａｒでのリソース予約の課題を説明するための図である。
【発明を実施するための形態】
【００１６】
次に、本発明を実施するための形態（以下、「本実施形態」という。）について説明する。まず、本実施形態に係るリソース予約管理装置１０が実行する処理の概要を説明する。
【００１７】
＜概要＞
本実施形態に係るリソース予約管理装置１０では、従来技術で示した図５および図６の予約（リース）の手法と同様に、ユーザ（ユーザ端末）が予約を時間指定すること、および、予約をリソース（各ホスト）に紐付けて予約を管理することを前提とする。
そして、リソース予約管理装置１０における予約では、稼働時間および子リースという概念を導入する。従来技術では、予約の際には、「時間（開始時刻・終了時刻）」をユーザが指定していたが、リソース予約管理装置１０では、ユーザ（ユーザ端末）は、稼働を要求する時間帯（以下、「稼働要求時間帯」と称する。）の開始時刻と終了時刻、および、インスタンスが稼働すべき時間（以下、「稼働時間」と称する。）を受け付ける。この稼働時間は、稼働を要求する時間帯のうち、実際にリソースの稼働させたい時間を意味する。なお、この稼働時間は、稼働を要求する時間帯のうちの時間（例えば、１２時間、１日（２４時間））で指定されても、稼働率で指定されてもよい。稼働率では、例えば、稼働を要求する時間帯が２日間であり、稼働率が２５％であれば、１２時間を「稼働時間」とする。
【００１８】
本実施形態に係るリソース予約管理装置１０は、ユーザ端末から次に例示する予約要求情報を受信する。
「2018/4/1 0:00 〜 2018/4/7 0:00，３日間，4コア，16GB  RAMを搭載したインスタンスを１台予約」
ここで、「2018/4/1 0:00 〜 2018/4/7 0:00」は、稼働要求時間帯の開始時刻と終了時刻である。
「３日間」は、インスタンスが稼働すべき時間（稼働時間）である。
「4コア，16GB  RAM」は、リソース容量（要求スペック）である。
なお、この予約要求情報で示される予約（リース）の情報を「親リース」と称する。
【００１９】
本実施形態に係るリソース予約管理装置１０では、ユーザ端末から受信した予約要求情報で示されるインスタンスが稼働すべき時間（稼働時間）をトータルで満たすように、その一つのインスタンスの親リースに対して、稼働時間を分散させた（分割した）リソース予約を行う。この分散させた各リースを「子リース」と称する。
【００２０】
図１は、本実施形態に係るリソース予約管理装置１０が管理するリソース予約テーブル１１０（リソース予約情報）の一例を示す図である。
空きリソースの状況が図５に示す状態と同じであったとすると、上記の予約要求情報で示される「2018/4/1 0:00 〜2018/4/7 0:00」の稼働要求時間帯のうち稼働時間で示される「３日間」を連続して予約できる「フリー」のリソースは存在しない。この場合、リソース予約管理装置１０は、リソース予約テーブル１１０を参照し、親リースを子リースに分割した予約を行う。
具体的には、リソース予約管理装置１０は、以下のように、その時点での空きリソースに基づき、親リースを３つの子リースに分割して予約情報を生成する。
「ホスト２：2018/4/1 0:00 〜 2018/4/2 0:00」＋「ホスト２：2018/4/4 0：00 〜2018/4/5 0：00」＋「ホスト１：2018/4/6 0：00 〜 2018/4/7 0:00」
図１では、図５において空きリソース（フリー）だった箇所に、プロジェクトＸの親リースのインスタンスが３つに分割されて子リースが予約されたことを示している。なお、図中の「Ｉ−００１」は、後記する予約ＩＤであり、一つの親リースから分割された各子リースには、同じ予約ＩＤが付される。
【００２１】
リソース予約管理装置１０は、子リースの終了時刻にそのインスタンスの停止を行い、必要な場合にはインスタンスのマイグレーションを行う。また、リソース予約管理装置１０は、子リースの開始時刻になるとインスタンスを再開させる等の処理を実行する。
【００２２】
このようにすることにより、本実施形態に係るリソース予約管理装置１０は、連続した空きリソースが確保できない場合においても、インスタンスが稼働すべき時間を分割した子リースを生成して、リソースの予約を行うことができる。よって、空きリソースを有効活用することができる。
本実施形態に係るリソース予約管理装置１０による分割した予約によるリソースの提供は、リアルタイムでのリソース提供が必要でない処理、例えば、科学計算など、同じホストで一定の連続稼働時間が必要ではないフォールトトレラントなワークロードを実行する仮想マシンをサービス提供者がユーザに提供する際に、特に有効である。
【００２３】
＜本実施形態＞
次に、リソース予約管理装置１０を含むリソース予約管理システム１０００について説明する。
図２は、本実施形態に係るリソース予約管理装置１０を含むリソース予約管理システム１０００の構成を示す図である。
リソース予約管理システム１０００は、ユーザ端末５に対して、リソースを提供する複数のコンピュートマシン２０と、ユーザ端末５に対するコンピュートマシン２０のリソース提供を管理するリソース予約管理装置１０と、を備える。リソース予約管理装置１０は、複数のコンピュートマシン２０と通信接続されるとともに、リソースを要求するユーザの端末であるユーザ端末５と、リソースの提供サービスを行うサービス提供者の管理端末（サービス提供者端末６）と接続される。
【００２４】
ここで、コンピュートマシン２０（ホスト）は、仮想的なＣＰＵ，メモリ，ディスク等により構成され、ユーザ端末５からのインスタンス作成要求を契機として仮想マシン（仮想インスタンス）を作成し、ユーザ端末５にリソースを提供する。
ユーザ端末５は、コンピュートマシン２０によるリソースの提供を受ける装置であり、リソース予約管理装置１０に対して、予約要求情報を送信することにより、リソースを予約する。このユーザ端末５は、リソース予約管理装置１０に予約要求情報を送信することにより予約が成立すると、リソース予約管理装置１０から成立した予約の内容を示す予約情報を受信する。そして、ユーザ端末５は、当該予約の開始時刻になると、リソース予約管理装置１０に対してインスタンス作成要求を送信することにより、コンピュートマシン２０によるリソースの提供を受ける。
サービス提供者端末６は、リソース予約管理システム１０００が行うリソース予約サービス全体を管理する装置である。
【００２５】
≪リソース予約管理装置≫
リソース予約管理装置１０は、制御手段、記憶手段および入出力手段（いずれも図示省略）を備えるコンピュータ等により実現される。
入出力手段は、情報の送受信を行うための通信インタフェース、および、タッチパネルやキーボード等の入力装置や、モニタ等の出力装置との間で情報の送受信を行うための入出力インタフェースからなる。
記憶手段（記憶部）は、フラッシュメモリやハードディスク、ＲＡＭ（Random Access Memory）等により構成される。このリソース予約管理装置１０の記憶手段には、図２に示すように、予約データベース１００が記憶される。そして、この予約データベース１００には、クラウド上の各コンピュートマシン２０が備えるリソースの情報（リソース情報）と、各コンピュートマシン２０（ホスト）毎に予約が確定したインスタンスの情報を示すリソース予約テーブル１１０（リソース予約情報）（図１）とが格納される。また、この記憶手段には、制御手段の各機能を実行させるためのプログラム（リソース予約管理プログラム）や、制御手段の処理に必要な情報が一時的に記憶される。
【００２６】
また、制御手段は、図２に示すように、予約通知部１１、スケジューリング部１２、予約イベント管理部１３、予約インスタンス管理部１４、インスタンス管理部１５を含んで構成される。なお、予約イベント管理部１３および予約インスタンス管理部１４が、請求項に記載の予約管理部を構成する。
この制御手段は、例えば、記憶手段に記憶されたプログラム（リソース予約管理プログラム）を不図示のＣＰＵ（Central Processing Unit）が、ＲＡＭに展開し実行することにより実現される。
【００２７】
予約通知部１１は、ユーザ端末５から予約要求情報を受け付け、スケジューリング部１２に予約の可否を問い合わせる。
ここで、ユーザ端末５から受け付ける予約要求情報は、稼働要求時間帯（稼働を要求する時間帯の開始時刻と終了時刻）、インスタンスが稼働すべき時間（稼働時間）、および、リソース容量（要求スペック）の情報が含まれる。
上記したように、予約要求情報は、例えば、「2018/4/1 0:00 〜 2018/4/7 0:00，３日間，4コア，16GB  RAMを搭載したインスタンスを１台予約」で示される情報である。
【００２８】
予約通知部１１は、スケジューリング部１２から予約可能であるとの情報を受け取った場合、当該予約の識別情報である予約ＩＤと、リソース利用可能な時間帯と、予約されたインスタンスのホストの情報とを含む予約情報を、予約要求情報を送信してきたユーザ端末５に送信する。
なお、予約通知部１１は、スケジューリング部１２から予約不可であるとの情報を受け取った場合、予約不可通知をユーザ端末５に送信するとともに、サービス提供者端末６に対してリソース不足通知を送信する。
【００２９】
スケジューリング部１２は、予約通知部１１から予約要求情報を受け取り、予約データベース１００内の各コンピュートマシン２０のリソース情報およびリソース予約テーブル１１０（図１）を参照して、予約設定処理を実行する。
具体的には、スケジューリング部１２は、予約要求情報で示される稼働要求時間帯においてリソース容量（要求スペック）を満たすホストの空きリソースがあるかを、各コンピュートマシン２０のリソース情報およびリソース予約テーブル１１０を参照して確認する。そして、スケジューリング部１２は、親リースを時間的に分割せずに設定できる空きリソースがある場合には、その空きリソースに予約（親リース）を設定する。また、スケジューリング部１２は、親リースを時間的に分割せずに設定できる空きリソースがない場合には、現状のリソース予約テーブル１１０で示される空きリソース（フリー）にあわせて、親リースを時間的に分割した子リースを生成し、複数の空きリソースに予約（子リース）を設定する。
例えば、スケジューリング部１２は、上記の予約要求情報を予約通知部１１が受け付けた場合、図１に示すように、図５で示される空きリソース（フリー）に対し分割した子リースを次のように設定する。
「ホスト２：2018/4/1 0:00 〜 2018/4/2 0:00」＋「ホスト２：2018/4/4 0：00 〜2018/4/5 0：00」＋「ホスト１：2018/4/6 0：00 〜 2018/4/7 0:00」
【００３０】
スケジューリング部１２は、予約を設定すると、その予約要求情報（親リース）毎に、当該予約に固有の識別情報である予約ＩＤ（例えば、図１に示す「Ｉ−００１」）を付し、予約情報として予約通知部１１に出力する。
なお、スケジューリング部１２は、リソース予約テーブル１１０（図１）において予約を設定する際、インスタンスの停止や、異なるホストへのインスタンスの移行にかかる時間マージンも考慮して予約の設定を行う。
【００３１】
予約イベント管理部１３は、所定の時間間隔で予約データベース１００内のリソース予約テーブル１１０（図１）を参照し、子リースの開始時刻にインスタンスの再開を行うように予約インスタンス管理部１４に通知する。
また、予約イベント管理部１３は、子リースの終了時刻に、インスタンスの停止を行うように予約インスタンス管理部１４に通知する。
さらに、予約イベント管理部１３は、子リースのインスタンスの停止後、次の子リースで予約しているコンピュートマシン２０が、当該インスタンスとは別のコンピュートマシン２０であれば、その別のコンピュートマシン２０にインスタンスを移行（マイグレーション）するように、予約インスタンス管理部１４に通知する。
また、予約イベント管理部１３は、親リースの終了時には、インスタンスを削除するように、予約インスタンス管理部１４に通知する。
【００３２】
予約インスタンス管理部１４は、予約イベント管理部１３の通知に従い、インスタンスの再開、停止、移行、削除の指示を、インスタンス管理部１５に指示する。
【００３３】
インスタンス管理部１５は、ユーザ端末５からのインスタンス作成要求を契機に、予約インスタンス管理部１４を介して、予約の設定の有無（予約の正当性）を予約イベント管理部１３に確認し、予約の設定が確認された場合に、予約されているコンピュートマシン２０にインスタンス作成指示を送信することにより、インスタンス（仮想インスタンス）を作成させる。
また、インスタンス管理部１５は、予約インスタンス管理部１４からの、インスタンスの再開、停止、移行、削除の指示を契機に、対象となるコンピュートマシン２０に指示情報を送信することにより、指定された処理（インスタンスの再開、停止、移行、削除）を実行させる。
【００３４】
＜処理の流れ＞
次に、リソース予約管理装置１０が実行する処理の流れについて、図３および図４を参照して説明する。図３では、ユーザ端末５から予約要求情報を受け付け、リソースの予約を行う予約設定処理について説明する。また、図４では、リソース予約テーブル１１０（図１）に設定された子リースに基づく、インスタンスの状態制御について説明する。
【００３５】
図３は、本実施形態に係るリソース予約管理装置１０が実行する予約設定処理の流れを示すフローチャートである。
【００３６】
まず、リソース予約管理装置１０の予約通知部１１は、ユーザ端末５から予約要求情報を受け付ける（ステップＳ１０）。そして、予約通知部１１は、当該予約要求情報について、スケジューリング部１２に予約の可否を問い合わせる。
なお、この予約要求情報には、稼働要求時間帯、インスタンスが稼働すべき時間（稼働時間）、および、リソース容量（要求スペック）の情報が含まれる。
【００３７】
次に、スケジューリング部１２は、予約データベース１００内の各コンピュートマシン２０のリソース情報およびリソース予約テーブル１１０（図１）を参照して、予約要求情報で示される稼働要求時間帯、つまり親リース期間内に、リソース容量（要求スペック）を満たすリソース（ホスト）において、稼働時間以上の空きリソースがあるか否かを判定する（ステップＳ１１）。
ここで、スケジューリング部１２は、稼働時間以上の空きリソースがあると判定した場合には（ステップＳ１１→Ｙｅｓ）、ステップＳ１２に進む。
【００３８】
ステップＳ１２において、スケジューリング部１２は、リソース予約テーブル１１０における稼働時間以上の空きリソースに、予約要求情報に基づく予約（親リース）を登録する。なお、スケジューリング部１２は、この予約されたリソース利用可能な時間帯と、インスタンスのホストの情報とに、当該予約の識別情報である予約ＩＤを対応付けて登録する。そして、ステップＳ１７に進む。
【００３９】
一方、スケジューリング部１２は、ステップＳ１１において、稼働時間以上の空きリソースがないと判定した場合（ステップＳ１１→Ｎｏ）、ステップＳ１３に進む。
ステップＳ１３において、スケジューリング部１２は、リソース予約テーブル１１０を参照し、稼働要求時間帯（親リース期間内）に２つ以上の空きリソースがあるか否かを判定する。
ここで、スケジューリング部１２は、２つ以上の空きリソースがない場合には（ステップＳ１３→Ｎｏ）、ステップＳ１５へ進む。
【００４０】
一方、２つ以上の空きリソースがある場合（ステップＳ１３→Ｙｅｓ）、スケジューリング部１２は、リソース予約テーブル１１０を参照し、２つ以上の空きリソースを組み合わせることで、要求された稼働時間以上の空きリソースを確保できるか否かを判定する（ステップＳ１４）。
ここで、スケジューリング部１２は、稼働時間以上の空きリソースを確保できない場合（ステップＳ１４→Ｎｏ）、ステップＳ１５へ進む。
【００４１】
ステップＳ１５において、スケジューリング部１２は、予約不可である旨の情報を予約通知部１１に出力し、予約通知部１１が、予約不可通知を、予約要求情報を送信してきたユーザ端末５に送信する。また、予約通知部１１は、サービス提供者端末６に対して、リソース不足通知を送信してもよい。
【００４２】
一方、ステップＳ１４において、稼働時間以上の空きリソースを確保できると判定した場合には（ステップＳ１４→Ｙｅｓ）、スケジューリング部１２は、親リースを空きリソースに対応した子リースに分割し、リソース予約テーブル１１０にその予約（子リース）を登録する（ステップＳ１６）。そして、ステップＳ１７に進む。
なお、スケジューリング部１２は、この分割して予約されたリソース利用可能な時間帯と、インスタンスのホストの情報に、当該予約の識別情報である予約ＩＤを対応付けて登録する。なお、この予約ＩＤは、親リースに対応して生成された１つのＩＤ（同一のＩＤ）が各子リースに付される。
【００４３】
ステップＳ１７において、予約通知部１１は、スケジューリング部１２から、当該予約の識別情報である予約ＩＤと、リソース利用可能な時間帯と、予約されたインスタンスのホストの情報とを含む予約情報を受け取り、予約要求情報を送信してきたユーザ端末５に対して送信する。
【００４４】
このようにすることにより、本実施形態に係るリソース予約管理装置１０は、連続した空きリソースが確保できない場合においても、インスタンスが稼働すべき時間を分割した子リースを生成して、リソースの予約を行うことができる。よって、空きリソースを有効活用することができる。
【００４５】
図４は、本実施形態に係るリソース予約管理装置１０が実行するインスタンスの状態制御処理の流れを示すフローチャートである。
なお、リソース予約管理装置１０は、予約イベント管理部１３が予約データベース１００内に記憶したリソース予約テーブル１１０（図１）を参照することにより、イベント（インスタンスの再開、停止、移行、削除）の発生を監視する。
【００４６】
まず、リソース予約管理装置１０の予約イベント管理部１３は、所定の時間が経過したか否かを判定する（ステップＳ２０）。ここで、所定の時間が経過していない場合には（ステップＳ２０→Ｎｏ）、所定の時間が経過するまで待つ。一方、所定の時間が経過した場合には（ステップＳ２０→Ｙｅｓ）、次のステップＳ２１へ進む。
【００４７】
ステップＳ２１において、予約イベント管理部１３は、予約データベース１００内のリソース予約テーブル１１０を参照し、所定のイベントが発生したか否かを判定する。
ここで、所定のイベントとは、インスタンスの再開、停止、移行、削除である。
予約イベント管理部１３は、イベントが発生したと判定すると（ステップＳ２１→Ｙｅｓ）、そのイベントの内容を、予約インスタンス管理部１４を介して、インスタンス管理部１５に通知する。これにより、インスタンス管理部１５は、各コンピュートマシン２０におけるインスタンスの状態を制御する（ステップＳ２２）。なお、予約イベント管理部１３は、所定のイベントの発生していないと判定した場合には（ステップＳ２１→Ｎｏ）、処理を終える。
【００４８】
ステップＳ２２において、予約イベント管理部１３は、具体的には次に示す各処理を実行する。
予約イベント管理部１３は、リソース予約テーブル１１０（図１）を参照し、インスタンスが作成済みであり停止している場合において、そのインスタンスの子リースの開始時刻になったときに、イベント（インスタンスの再開）の発生を検知する。そして、予約イベント管理部１３は、インスタンスの再開を行うように予約インスタンス管理部１４を介して、インスタンス管理部１５に通知する。
【００４９】
また、予約イベント管理部１３は、リソース予約テーブル１１０（図１）を参照し、子リースの終了時刻になると、イベント（インスタンスの停止）の発生を検知する。そして、予約イベント管理部１３は、インスタンスの停止を行うように予約インスタンス管理部１４を介して、インスタンス管理部１５に通知する。
【００５０】
また、予約イベント管理部１３は、リソース予約テーブル１１０（図１）を参照し、インスタンスの停止後、当該インスタンスの次の子リースで予約しているホスト（コンピュートマシン２０）が、停止したインスタンスのホストとは別のホストであるか否かを確認する。そして、予約イベント管理部１３は、別のホストにおいて子リースが予約されていると確認したとき、その別のホスト（コンピュートマシン２０）にインスタンスを移行（マイグレーション）するイベントが発生したことを検知する。そして、予約イベント管理部１３は、インスタンスの移行（マイグレーション）を行うよう、予約インスタンス管理部１４を介して、インスタンス管理部１５に通知する。
【００５１】
また、予約イベント管理部１３は、リソース予約テーブル１１０（図１）を参照し、親リース（子リースを生成した場合には、分割した子リースのうちの最後の子リース）の終了時刻になると、イベント（インスタンスの終了）の発生を検知する。そして、予約イベント管理部１３は、インスタンスを終了するように予約インスタンス管理部１４を介して、インスタンス管理部１５に通知する。
これらの通知を受け、インスタンス管理部１５は、各コンピュートマシン２０におけるインスタンスの状態（再開、停止、移行、削除）を制御する。
【００５２】
本実施形態に係るリソース予約管理装置１０は、このように、リソース予約テーブル１１０（図１）を所定の時間間隔で参照することにより、イベントの発生を検知し、各コンピュートマシン２０のインスタンスの状態を制御（インスタンスの再開、停止、移行、削除）して、ユーザ端末５にリソースを提供することができる。
【００５３】
以上説明したように、本実施形態に係るリソース予約管理装置１０、リソース予約管理方法およびリソース予約管理プログラムによれば、連続した空きリソースが確保できない場合においても、インスタンスが稼働すべき時間を分割した子リースを生成して、リソースの予約を行うことができる。よって、空きリソースを有効活用することができる。
【符号の説明】
【００５４】
５      ユーザ端末
６      サービス提供者端末
１０    リソース予約管理装置
１１    予約通知部
１２    スケジューリング部
１３    予約イベント管理部（予約管理部）
１４    予約インスタンス管理部（予約管理部）
１５    インスタンス管理部
２０    コンピュートマシン
１００  予約データベース
１１０  リソース予約テーブル（リソース予約情報）
１０００  リソース予約管理システム
【図１】
2020024646.tif 000003
【図２】
2020024646.tif 000004
【図３】
2020024646.tif 000005
【図４】
2020024646.tif 000006
【図５】
2020024646.tif 000007
【図６】
2020024646.tif 000008