(57)【要約】【課題】ハッシュ値の管理及びイメージファイルの再構築を必要としないサーバ装置。【解決手段】情報処理システムは、 構築指示設定ファイルの記述に基づいてベースイメージファイルから仮想化イメージファイルを構築する、仮想化イメージ構築手段と、前記仮想化イメージファイルを、前記ベースイメージファイル及び前記構築指示設定ファイルと紐付けて格納する、仮想化イメージ格納手段と、入力された前記ベースイメージファイル及び前記構築指示ファイルの組み合わせが、前記仮想化イメージ格納手段に格納されている前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせと一致するか否かを照合する、照合手段と、前記照合手段により一致すると照合された場合に、当該ベースイメージファイル及び当該構築指示設定ファイルの組み合わせと紐付けられている前記仮想化イメージファイルを再利用する、仮想化イメージ再利用手段と、を備える。【選択図】図１
2019101553.tif 000002
【特許請求の範囲】
【請求項１】
構築指示設定ファイルの記述に基づいて、仮想化するイメージファイルのベースとなるベースイメージファイルから仮想化イメージファイルを構築する、仮想化イメージ構築手段と、
構築された前記仮想化イメージファイルを、前記ベースイメージファイル及び前記構築指示設定ファイルと紐付けて格納する、仮想化イメージ格納手段と、
入力された、前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせが、前記仮想化イメージ格納手段に格納されている、前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせと一致するか否かを照合する、照合手段と、
前記照合手段により一致すると照合された場合に、当該ベースイメージファイル及び当該構築指示設定ファイルの組み合わせと紐付けられている前記仮想化イメージファイルに関する情報に基づいて、前記仮想化イメージファイルを再利用する、仮想化イメージ再利用手段と、
を備え、前記イメージファイルに基づいて仮想化した環境において情報処理を行う、情報処理システム。
【請求項２】
構築された前記仮想化イメージファイルに関する情報を取得する、仮想化イメージ情報取得手段、をさらに備え、
前記仮想化イメージ格納手段に格納されている、取得された前記仮想化イメージファイルと、前記ベースイメージファイル及び前記構築指示設定ファイルは、それぞれのファイルに関する情報に基づいて紐付けられている、請求項１に記載の情報処理システム。
【請求項３】
前記仮想化イメージファイルに関する情報と、前記ベースイメージファイルに関する情報及び前記構築指示設定ファイルに関する情報は、それぞれのファイルのハッシュ値、タイムスタンプ及びファイルサイズに関する情報のうち少なくとも１つである、請求項２に記載の情報処理システム。
【請求項４】
前記構築指示設定ファイルに関する情報を取得する、構築指示設定情報取得手段をさらに備える、請求項２に記載の情報処理システム。
【請求項５】
前記構築指示設定ファイル内に記述されているジョブにおけるサブタスクについて、あるサブタスクまでの処理後に処理を中断し、当該サブタスクの次のサブタスクから処理を再生することが可能である場合、当該処理後の位置までに構築された前記仮想化イメージファイル及びを、前記ベースイメージファイル及び当該サブタスクまでを記述した構築指示設定ファイルと紐付けて前記仮想化イメージ格納手段に格納する、
請求項２乃至請求項４のいずれかに記載の情報処理システム。
【請求項６】
複数のジョブを処理する順番を管理するジョブキューであって、前記構築指示設定ファイル内に記述されているジョブが、当該構築指示設定ファイル内に記述されている前記サブタスクの順番でエンキューされる、ジョブキューと、
前記構築指示設定ファイル内に記述されている前記サブタスクにおいて、当該構築指示設定ファイルで仮想化する前記ベースイメージファイル及び前記サブタスクのうち１のサブタスクまでを記述した構築指示設定ファイルの組み合わせが、前記仮想化イメージ格納手段に格納されている場合に、当該サブタスクまでのタスクをジョブキューから削除する、サブタスク削除手段と、
を備え、
前記仮想化イメージ再利用手段は、当該ベースイメージファイル及び当該サブタスクまでを記述した構築指示設定ファイルの組み合わせに基づいて、再利用する前記仮想化イメージファイルの再利用を行う、
請求項５に記載の情報処理システム。
【請求項７】
前記構築指示設定ファイルの記述を正規化する、構築指示正規化手段をさらに備える、請求項２乃至請求項６のいずれかに記載の情報処理システム。
【請求項８】
前記ベースイメージファイルと、当該ベースイメージファイルに関する情報とを紐付けて格納する、ベースイメージ格納手段をさらに備える、請求項２乃至請求項７のいずれかに記載の情報処理システム。
【請求項９】
前記ベースイメージファイルと、当該ベースイメージファイルに関する情報とを紐付けて格納されたリポジトリから、前記ベースイメージファイルに関する情報に基づいて適切な前記ベースイメージファイルを取得する、ベースイメージ取得手段をさらに備える、請求項２乃至請求項８のいずれかに記載の情報処理システム。
【請求項１０】
構築指示設定ファイルの記述に基づいて、仮想化するイメージファイルのベースとなるベースイメージファイルから仮想化イメージファイルを構築する、仮想化イメージ構築部と、
構築された前記仮想化イメージファイルを、前記ベースイメージファイル及び前記構築指示設定ファイルと紐付けて格納する、仮想化イメージ格納部と、
入力された、前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせが、前記仮想化イメージ格納部に格納されている、前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせと一致するか否かを照合する、照合部と、
前記照合部により一致すると照合された場合に、当該ベースイメージファイル及び当該構築指示設定ファイルの組み合わせと紐付けられている前記仮想化イメージファイルに関する情報に基づいて、前記仮想化イメージファイルを再利用する、仮想化イメージ再利用部と、
を備える、サーバ装置 。
【請求項１１】
構築指示設定ファイルの記述に基づいて、仮想化するイメージファイルのベースとなるベースイメージファイルから仮想化イメージファイルを構築するステップと、
構築された前記仮想化イメージファイルを、前記ベースイメージファイル及び前記構築指示設定ファイルと紐付けて格納するステップと、
入力された、前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせが、格納されている、前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせと一致するか否かを照合するステップと、
一致すると照合された場合に、当該ベースイメージファイル及び当該構築指示設定ファイルの組み合わせと紐付けられている前記仮想化イメージファイルに関する情報に基づいて、前記仮想化イメージファイルを再利用するステップと
を備える、情報処理方法。
【請求項１２】
コンピュータに、
仮想化イメージ構築手段が、構築指示設定ファイルの記述に基づいて、仮想化するイメージファイルのベースとなるベースイメージファイルから仮想化イメージファイルを構築するステップ、
仮想化イメージ格納手段が、構築された前記仮想化イメージファイルを、前記ベースイメージファイル及び前記構築指示設定ファイルと紐付けて格納するステップ、
照合手段が、入力された、前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせが、前記仮想化イメージ格納手段に格納されている、前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせと一致するか否かを照合するステップ、
仮想化イメージ再利用手段が、前記照合手段により一致すると照合された場合に、当該ベースイメージファイル及び当該構築指示設定ファイルの組み合わせと紐付けられている前記仮想化イメージファイルに関する情報に基づいて、前記仮想化イメージファイルを再利用するステップ、
を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、サーバ装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
スーパーコンピュータ等をサーバとして利用する際に、実行バイナリ、または実行手順を記述したスクリプトファイル等を１つにまとめたファイルを実際に実行するサーバに送信し、当該ファイルを展開してイメージファイルを構築することによりサーバにおいて望んでいる処理を実行させることが広く行われている。サーバに送信するのみならず、所謂コンテナの技術において演算等を実行させる際にも実行バイナリ、または実行手順を記述したスクリプトファイル等をイメージファイルとして構築する必要がある。イメージファイルは、ベースとなるベースイメージファイルを用いたうえで、当該ベースイメージファイルを構築する手段を記述した構築指示設定ファイルに記述された手順にしたがい構築することにより構築される。
【０００３】
しかしながら、構築されたイメージファイルを再利用する場合、構築時と全く同じイメージファイルが必要となるか、又は、構築時に取得したハッシュ値が必要となる。従来では、例えば、ベースイメージファイルが同一であったとしても、構築指示設定ファイルに記述されている内容に相違があれば、同じイメージファイルが構築されないためイメージファイルを最初から構築し直す必要があった。その計算方法から分かるように、構築指示設定ファイルに記述されている内容が相違すれば、ハッシュ値もまた異なるものとなる。
【０００４】
このイメージファイルの構築には、計算負荷及びストレージ容量の消費が発生する。一方、ＨＰＣ（High Performance Computing）等として多人数で同じ計算機の環境において資源を共有したい場合などには、上記のようなイメージファイル構築の手順に起因して、構築済のイメージファイル又はハッシュ値を利用者間で共有する必要があるが、このような管理することは、煩雑であり、困難であった。具体的には、同じ環境で動作させたい異なる２つのバイナリが存在するような場合、構築指示設定ファイルには当該異なる２つのバイナリの実行についても記述もするため、同じ環境で演算させるためにもイメージファイルを構築し直す必要があり、同じ環境の共有等には、演算器のコストが掛かるか、又は、煩雑な管理を行う必要がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−２７４９６号公報
【特許文献２】特開２０１６−１８１１８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の実施形態は、イメージファイルの再利用時に、ハッシュ値の煩雑な管理及びイメージファイルの再構築を必要としないサーバ装置を実現する。
【課題を解決するための手段】
【０００７】
一実施形態に係る情報処理システムは、 構築指示設定ファイルの記述に基づいて、仮想化するイメージファイルのベースとなるベースイメージファイルから仮想化イメージファイルを構築する、仮想化イメージ構築手段と、構築された前記仮想化イメージファイルを、前記ベースイメージファイル及び前記構築指示設定ファイルと紐付けて格納する、仮想化イメージ格納手段と、入力された、前記ベースイメージファイル及び前記構築指示ファイルの組み合わせが、前記仮想化イメージ格納手段に格納されている、前記ベースイメージファイル及び前記構築指示設定ファイルの組み合わせと一致するか否かを照合する、照合手段と、前記照合手段により一致すると照合された場合に、当該ベースイメージファイル及び当該構築指示設定ファイルの組み合わせと紐付けられている前記仮想化イメージファイルに関する情報に基づいて、前記仮想化イメージファイルを再利用する、仮想化イメージ再利用手段と、を備える。
【発明の効果】
【０００８】
一実施形態によれば、イメージファイルの再利用時に、ハッシュ値の煩雑な管理及びイメージファイルの再構築が不要となる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係る情報処理システムの機能を示すブロック図。
【図２】一実施形態に係る情報処理システムの仮想化イメージ構築処理を示すフローチャート。
【図３】一実施形態に係る情報処理システムの仮想化イメージ再利用処理を示すフローチャート。
【図４】一実施形態に係る構築指示設定ファイルの例を示す図。
【図５】一実施形態に係る情報処理システムの機能の別の例を示すブロック図。
【発明を実施するための形態】
【００１０】
（構成）
図１は、一実施形態に係る情報処理システム１の機能を示すブロック図である。情報処理システム１は、入力受付部１００と、ジョブキュー１０２と、ベースイメージ格納部１０４と、仮想化イメージ構築部１０６と、仮想化イメージハッシュ値取得部１０８と、仮想化イメージ格納部１１０と、演算処理実行部１１２と、構築指示正規化部１１４と、構築指示設定ハッシュ値取得部１１６と、照合部１１８と、サブタスク削除部１２０と、仮想化イメージ再利用部１２２と、を備える。
【００１１】
情報処理システム１は、入力されたベースイメージファイルの情報及び構築指示設定ファイルの情報から、仮想化された環境（仮想化イメージ）を構築し、当該仮想化イメージ内において指定された演算処理を行い、演算処理結果を出力するシステムである。
【００１２】
本実施形態においては、構築指示設定ファイルに記述されている手順に従い、ベースイメージファイルから仮想化イメージファイルを構築することにより、仮想化された環境（以下、仮想環境と記載する）を構築する。さらに、構築指示設定ファイルには、仮想化イメージを構築した後に、当該仮想化イメージおいて実行させる演算処理についても記述しおいてもよい。
【００１３】
構築指示設定ファイルには、一例として、ＯＳ（Operating System）の設定ファイルを含んだ構築指示と、ＯＳが構築された後の当該ＯＳにおける環境設定指示と、環境が設定されたＯＳにおいて必要なファイルを取得する指示と、当該ＯＳにおいて当該ファイルを用いて行う演算処理と、が記載されている。
【００１４】
ＯＳの設定ファイルとは、ファイルフォーマットの設定、物理メモリ量、スワップ領域を含むパーティション設定等のＯＳのインストール時に必要な設定を記述したファイルである。ＯＳの環境設定指示とは、ネットワーク設定、演算処理に使用するライブラリの設定、演算処理を行う上でのパスの設定等、演算処理を行う上で必要となる設定に関する指示である。
【００１５】
必要なファイルを取得する指示とは、演算処理に用いるデータ等を取得する指示である。例えば、仮想環境内で機械学習をさせる場合には、当該学習になる教師データ又は入力データ等のデータである。このデータは実際にダウンロードされる必要はなく、機械学習の実行時にダウンロードされるようにしてもよい。
【００１６】
演算処理とは、上記の例で言う、機械学習をさせるためのプログラムである。このプログラムは、あらかじめコンパイルしたバイナリを構築指示設定ファイルに基づいて仮想環境にコピーするものであってもよいし、ソースファイルをコピーして仮想環境内でコンパイルから行うようにしてもよい。
【００１７】
なお、ベースイメージファイルの情報は、構築指示設定ファイルとは別に入力されるものであってもよいし、構築指示設定ファイル内に記述されているものであってもよい。構築指示設定ファイル内に記述されている場合、例えば、ハッシュ値等によりベースイメージファイルとして使用するファイルをほぼ一意的に決定できるものであってもよい。
【００１８】
情報処理システム１の構成について説明する。
【００１９】
入力受付部１００は、外部との接続を兼ねるインターフェースであり、外部から入力されたデータを受け付ける。例えば、ベースイメージファイルの指定及び構築指示設定ファイル、その他の必要なファイル等を受け付ける。
【００２０】
ジョブキュー１０２は、所謂ジョブキューであり、構築指示設定ファイルに記述されたジョブをキュー形式で格納し、ＦＩＦＯ（First In First Out）形式に基づいて処理を実行する。構築指示設定ファイルに記述されたジョブは、複数のサブタスクに分割することも可能であり、このサブタスクごとにジョブキュー１０２に格納され、実行されるものであってもよい。ＦＩＦＯ以外にも、ＦＩＬＯ（First In Last Out）形式に基づいて処理をするものでもよい。
【００２１】
ベースイメージ格納部１０４は、種々のベースイメージを格納するデータベースである。ベースイメージは、それぞれのベースイメージのハッシュ値と紐付けられて格納されていてもよい。このベースイメージは、例えば、ＯＳのイメージファイルであり、ＯＳの種類ごと、当該ＯＳのリビジョン（バージョン番号）ごとに格納され、これらのイメージファイルごとにハッシュ値が紐付けられて格納されている。情報処理システム１が３２ビット、６４ビットの双方のＣＰＵ（Central Processing Unit）に対応可能である場合（エミュレート可能である場合を含む）には、このビット数の違うＯＳがそれぞれ格納されていてもよい。
【００２２】
仮想化イメージ構築部１０６は、入力受付部１００が受け付けた入力された構築指示背低ファイルに基づいて、ベースイメージ格納部１０４に格納されているベースイメージファイルから仮想化イメージを構築する。
【００２３】
仮想化イメージハッシュ値取得部１０８は、仮想化イメージ構築部１０６により構築された仮想化イメージのハッシュ値を取得する。なお、後述するように、仮想化イメージ格納部１１０においてファイル同士を紐付ける情報がハッシュ値以外の情報、例えば、ファイル名、ファイルサイズ、タイムスタンプ（更新日時、作成日時）等である場合には、この仮想化イメージハッシュ値取得部１０８は、ハッシュ値には限られず、それぞれの上記の情報を取得する、仮想化イメージ情報取得部として動作する。
【００２４】
仮想化イメージ格納部１１０は、仮想化イメージ構築部１０６が構築した仮想化イメージファイル及び仮想化イメージハッシュ値取得部１０８が取得した当該仮想化イメージファイルのハッシュ値を、入力受付部１００が受け付けたベースイメージファイルのハッシュ値及び構築指示設定ファイルのハッシュ値と紐付けて格納する。なお、ハッシュ値には限られず、適切にほぼ一意的にファイルが確定できる情報であれば、他の情報であっても構わない。例えば、ファイル名がファイルの内容から一意的に定まるように、ファイルのネーミングルールが厳格に定められている場合等には、当該ファイル名をハッシュ値に代わる情報としてもよい。この他にも、ファイルサイズ、更新日時、作成日時等を、ハッシュ値に代わる情報として用いることができる。
【００２５】
演算処理実行部１１２は、構築された仮想環境における演算処理等を実行する。この演算処理実行部は、例えば、構築された仮想環境内において、構築指示設定ファイルに記述されたバイナリファイル等を取得又は生成し、構築指示設定ファイルに記述された処理を実行する。
【００２６】
構築指示正規化部１１４は、構築指示設定ファイルの記述を所定のルールに基づいて正規化し、構築指示設定ファイルに記述されている内容の表記揺れがないように修正する。構築指示正規化部１１４は、所謂プリプロセッサであってもよい。例えば、ブール変数として、１とＴＲＵＥとが同じ状態を表す場合、構築指示設定ファイル内に記述されているＴＲＵＥの表記を全て１へと修正することにより、１とＴＲＵＥとが混在している構築指示設定ファイルの内容を同じ表記へと修正する。
【００２７】
また、別の例としては、コメント、余分な改行又はスペースの削除、変数の定義の順番の入れ替え等をしてもよい。後述する照合部１１８においては、構築指示設定ファイルのハッシュ値を比較して一致しているか否かを判断するため、構築指示正規化部１１４は、同じ処理を行う場合の構築指示設定ファイルの内容を同一の記載にする。
【００２８】
構築指示設定ハッシュ値取得部１１６は、正規化された構築指示設定ファイルのハッシュ値を取得する。構築指示設定ハッシュ値取得部１１６は、構築指示設定ファイルに複数のサブタスクが記述されている場合には、ファイルの最初から、サブタスクそれぞれの記述までを記述した構築指示設定ファイルの一部のハッシュ値を取得するようにしてもよい。すなわち、例えば、構築指示設定ファイルに記述されているジョブが、サブタスク１、サブタスク２、サブタスク３の順番で構成されるジョブである場合、構築指示設定ハッシュ値取得部１１６は、サブタスク１までの記述に対するハッシュ値、サブタスク１＋サブタスク２までの記述に対するハッシュ値、及び、サブタスク１＋サブタスク２＋サブタスク３までの記述に対するハッシュ値をそれぞれ取得する。
【００２９】
なお、仮想化イメージ格納部１１０に格納されている仮想化イメージファイルに関する情報と同様に、構築指示設定ファイルに関する情報として、ハッシュ値の代わりにファイル名、ファイルサイズ、更新日時、作成日時等を用いてもよい。さらには、これらの情報を組み合わせて紐付けを行ってもよい。この場合、仮想化イメージファイルに関する情報と、構築指示設定ファイルに関する情報とが異なる種類の情報であってもよい。例えば、仮想化イメージファイルに関する情報がハッシュ値であり、構築指示設定ファイルに関する情報が作成日時であってもよい。以下、ハッシュ値と記載されている箇所は、このように、ファイル名、ファイルサイズ等の他の情報で読み替えてもよいものとする。仮想化イメージハッシュ値取得部１０８と同様に、これら他の情報を取得する場合には、構築指示設定ハッシュ値取得部１１６は、当該他の情報を取得する、構築指示設定情報取得部として動作する。
【００３０】
照合部１１８は、ベースイメージファイルのハッシュ値及び構築指示設定ファイルのハッシュ値の組み合わせが、仮想化イメージ格納部１１０に格納されているか否かを照合する。構築指示設定ファイルのハッシュ値は、上記の構築指示設定ハッシュ値取得部１１６が取得した、サブタスクまでのハッシュ値であってもよい。この場合、当該サブタスクまでの構築を行った仮想化イメージが、仮想化イメージ格納部１１０に格納されていることとなる。
【００３１】
サブタスク削除部１２０は、照合部１１８が、ベースイメージファイルのハッシュ値及びあるサブタスクまでの構築指示設定ファイルのハッシュ値の組み合わせと一致する組み合わせが仮想化イメージ格納部１１０に格納されている場合に、ジョブキュー１０２にエンキューされている当該サブタスクまでのタスクを削除する。削除は、ジョブキュー１０２内の情報を削除するようにしてもよいし、ジョブキュー１０２からデキューした後に当該サブタスクまでの処理を行わないようにしてもよい。
【００３２】
仮想化イメージ再利用部１２２は、照合部１１８により一致する組み合わせがあった場合に、当該組み合わせに紐付けられている仮想化イメージを仮想化イメージ格納部１１０から取得し、当該仮想化イメージを構築することなく再利用する。
【００３３】
上述した構成において、ベースイメージファイルに関する情報が構築指示設定ファイルに記述されている場合には、ベースイメージファイルのハッシュ値及び構築指示設定ファイルのハッシュ値、と記載されている箇所は、構築指示設定ファイルのハッシュ値、と読み替えてもよい。すなわち、構築指示設定ファイルのハッシュ値を比較することにより、ベースイメージファイルが一致しているか否かを判断するようにしてもよい。
【００３４】
（動作）
次に、情報処理システム１の処理について説明する。図２は、ベースイメージファイル及び構築指示設定ファイルから仮想化イメージを構築し、演算処理の実行及び仮想化イメージの格納を行う処理の流れを示すフローチャートである。
【００３５】
まず、情報処理システム１は、入力受付部１００を介して使用するベースイメージファイルに関する情報及び構築指示設定ファイルの入力を受け付ける（ステップＳ１００）。上述したように、ベースイメージファイルの情報は、ベースイメージファイルのファイルそのもの、ベースイメージファイルのハッシュ値又はベースイメージファイルのＯＳ、リビジョン番号等を示す名称等である。構築指示設定ファイルにベースイメージファイルの情報を記述するようにしてもよい。
【００３６】
次に、受け付けた構築指示設定ファイルに記述されているジョブをジョブキュー１０２にエンキューする（ステップＳ１０２）。この際、構築指示設定ファイルに記述されているものを１つのジョブとしてエンキューしてもよいし、構築指示設定ファイルに記述されているものが複数のサブタスクを備えて構成されている場合には、それぞれのサブタスクごとにジョブとしてエンキューしてもよい。
【００３７】
次に、ジョブキュー１０２にキューイングされているジョブをＦＩＦＯにしたがいデキューし、ジョブを実行する（ステップＳ１０４）。上記のように、構築指示設定ファイルの記述をジョブとしてデキューしてもよいし、サブタスクごとにデキューしてもよい。デキューされた構築指示設定ファイルは、正規化され、そのハッシュ値が取得される（ステップＳ１０６）。サブタスクごとにデキューされる場合には、構築指示の開始位置からデキューされたサブタスクまでのハッシュ値が取得される。
【００３８】
なお、このステップＳ１０４とステップＳ１０６の順番は入れ替えてもよい。すなわち、構築指示設定ファイルの内容を正規化した後、サブタスクの位置までのハッシュ値を取得し、その後、ジョブのデキューをしてもよい。さらに、構築指示設定ファイルの正規化は、ジョブキュー１０２へのエンキュー前に行ってもよい。構築指示設定ファイルの正規化をジョブキュー１０２へのエンキュー前に行う場合、データの流れは、図１の破線のような状態となる。すなわち、入力受付部１００に受け付けられた構築指示設定ファイルは、構築指示正規化部１１４により正規化されジョブキュー１０２へとエンキューされる。
【００３９】
次に、ベースイメージ格納部１０４から、ベースイメージファイルの情報に基づいてベースイメージファイルを取得する（ステップＳ１０８）。入力受付部１００がベースイメージファイルそのものを受け付けた場合には、当該ベースイメージファイルを使用してもよい。この際、受け付けたベースイメージファイルについて、そのハッシュ値を取得し、当該ハッシュ値に対応するベースイメージファイルがベースイメージ格納部１０４に格納されていない場合には、当該ベースイメージファイルと当該ハッシュ値とを紐付けてベースイメージ格納部１０４に格納してもよい。
【００４０】
次に、仮想化イメージ構築部１０６は、ジョブキュー１０２からデキューしたジョブに基づいてベースイメージファイルから仮想化イメージを構築する（ステップＳ１１０）。ジョブキュー１０２にサブタスクごとにジョブがエンキューされている場合には、デキューしたサブタスクごとのジョブに基づいてシーケンシャルにジョブを実行する。
【００４１】
続いて、演算処理と、イメージファイルの格納処理とを並列して処理する。なお、これらの処理は実際に並行して処理される必要は無く、片方の処理が終了した後に、他方の処理を行うようにしてもよい。また、図２における左の分岐から右の分岐へと遷移する箇所があるが、これは必ずしもフォークしている複数のプロセス間で処理を移行させることには限られず、単に同じ処理を行うということを示す。もっとも、演算処理をしているプロセスを終了させて、格納処理を行うプロセスへメッセージ通信等を行うことにより処理を実行することも可能である。
【００４２】
演算処理として、デキューされたジョブに基づいて、演算処理実行部１１２は、仮想化イメージ内で演算処理等を実行する（ステップＳ１１２）。この一連の処理により、ベースイメージファイルから仮想化イメージの構築及び仮想化イメージ内における演算処理の実行までの処理が行われる。
【００４３】
続いて、演算処理が終了した結果ごと仮想化イメージとして仮想化イメージ格納部１１０に格納するか否かを判断する（ステップＳ１１４）。この判断は、例えば、ユーザがあらかじめイメージファイルとして格納するか否かを設定しておいてもよいし、演算処理中に格納するか否かを設定し、サーバ側に送信するものであってもよい。また、演算中に何らかのフラグを立て、当該フラグにしたがい仮想化イメージを格納するか否かを判断するものであってもよい。また、別の例としては、演算したものは全て仮想化イメージとして格納するようにしてもよい。
【００４４】
仮想化イメージとして格納しない場合（ステップＳ１１４：Ｎｏ）、演算処理実行部１１２は、指定された演算処理に基づいて、演算結果をデータベース、又は、仮想化イメージの外部にあるクライアント機等に出力するようにしてもよい。仮想化イメージとして格納する場合（ステップＳ１１４：Ｙｅｓ）、演算処理が終了した結果ごと仮想化イメージとして仮想化イメージ格納部１１０に格納するステップへと遷移する。
【００４５】
演算処理の実行と並行し、又は、演算処理の実行の前後のタイミングにおいて、仮想化イメージハッシュ値取得部１０８は、構築された仮想化イメージのハッシュ値を取得する（ステップＳ１１６）。
【００４６】
次に、取得したハッシュ値及び仮想化イメージを、ベースイメージファイルのハッシュ値及び構築指示設定ファイルのハッシュ値と紐付けて仮想化イメージ格納部１１０に格納する（ステップＳ１１８）。使用したベースイメージファイルのハッシュ値が取得されていない場合には、この仮想化イメージを格納するタイミングで取得するようにしてもよい。このような一連の処理により、仮想化イメージの構築、演算処理の実行及び仮想化イメージの格納の処理が実行される。
【００４７】
なお、当該処理には、種々の変形例がある。例えば、仮想環境が構築されたタイミングで、演算処理を行う前にステップＳ１１６からステップＳ１１８の処理を必ずするようにしてもよい。別の例としては、演算処理を行う前には、ステップＳ１１６からステップＳ１１８の処理を行わず、演算処理の実行後（ステップＳ１１２）、ステップＳ１１６とステップＳ１１８とを実行するようにしてもよい。このように、並列に行うに限られず、ステップＳ１１２と、ステップＳ１１６からステップＳ１１８との処理は、適宜ユーザが指定して行えるようにしてもよい。この仮想化イメージの格納のタイミングは、構築指示設定ファイルに記載できるようにしておいてもよいし、ユーザが別途設定できるようにしておいてもよい。
【００４８】
構築指示設定ファイルに記述されているジョブが複数のサブタスクから構成されており、あるサブタスクまでの処理行い、そこで処理を中断し、中断後に当該サブタスクの次のサブタスクからの処理の再生（所謂レジューム処理）が可能である場合、当該サブタスクまでの処理が終了した位置における仮想化イメージと、ハッシュ値を仮想化イメージ格納部１１０に格納するようにしてもよい。この場合、紐付ける情報は、例えば、ベースイメージファイルのハッシュ値及び処理の開始から当該サブタスクの終了位置までを記述した構築指示設定ファイルのハッシュ値の組み合わせである。
【００４９】
サブタスク終了時における仮想化イメージファイルの格納は、それぞれのサブタスクごとに行ってもよい。この際に用いる構築指示設定ファイルの例は、上述した構築指示設定ハッシュ値取得部１１６の構成についての説明において記載したものと同等のものである。対応する仮想化イメージファイルとしては、上記の説明における構築指示によりベースイメージファイルから構築されたものを格納する。
【００５０】
図３は、仮想化イメージを再利用する場合の処理を含むフローチャートである。処理の開始から、入力を受付（ステップＳ１００）、ジョブキューにエンキューし（ステップＳ１０２）、構築指示の正規化及びハッシュ値の取得を実行する（ステップＳ１０６）。上述したように、ステップＳ１０６は、ステップＳ１０２の前に実行されてもよい。
【００５１】
ステップＳ１０６に続いて、照合部１１８は、使用するベースイメージファイルのハッシュ値及び構築指示設定ファイルのハッシュ値の組み合わせと、仮想化イメージ格納部１１０に格納されているハッシュ値の組み合わせとを、同じハッシュ値の組み合わせが存在するか否かを照合する（ステップＳ１２０）。使用するベースイメージファイルのハッシュ値が取得されていない場合には、このタイミングで取得するようにしてもよい。
【００５２】
次に、照合部１１８の照合結果に基づき、仮想化イメージが再利用可能であるか否かを判定する（ステップＳ１２２）。すなわち、同じハッシュ値の組み合わせが仮想化イメージ格納部１１０に格納されている場合（ステップＳ１２２：Ｙｅｓ）には、同じベースイメージファイルに対して同じ構築指示により構築を行うことにより、結果として同じ仮想化イメージが構築されるので、再利用が可能であると判定する。
【００５３】
構築指示設定ファイルに記述されているジョブが複数のサブタスクから構成されている場合、
【００５４】
仮想化イメージの再利用が可能である場合、サブタスク削除部１２０は、ジョブキュー１０２にエンキューされているジョブについて、再利用する仮想化イメージの構築までのタスクを削除する（ステップＳ１３０）。
【００５５】
次に、仮想化イメージ格納部１１０に格納されている仮想化イメージを再利用する（ステップＳ１３２）。再利用は、仮想化イメージ格納部１１０に格納されている上記のベースイメージファイル及び構築指示設定ファイルのハッシュ値の組み合わせに紐付けられている仮想化イメージファイルを利用することにより実行される。
【００５６】
次に、演算処理実行部１１２が、演算処理の実行を行う（ステップＳ１３４）。この演算処理は、例えば、構築指示設定ファイル全体を再利用する場合には、再利用した仮想化イメージに基づいて、演算処理等を実行する。
【００５７】
次に、演算処理を行った後の仮想化イメージを格納するか否かを判断する（ステップＳ１３６）。この処理は、図２におけるステップＳ１１４の処理と同様である。
【００５８】
構築指示設定ファイルの途中のサブタスクまでを再利用する場合には、再利用する仮想化イメージを仮想化イメージ格納部１１０から取得した後、ジョブキュー１０２にエンキューされている削除されたサブタスクに続くサブタスクからデキューすることにより、演算処理実行部１１２が仮想化イメージ内で演算処理等を実行する。
【００５９】
このように、構築指示設定ファイルにおけるサブタスクごとに当該サブタスクまでの仮想化イメージを再利用可能とすることにより、処理全体として仮想化イメージを再利用するものには限られず、途中まで共通した指示を有する構築指示、又は、既に処理が終了し、その結果を用いてさらに続きの構築指示がある場合等にも有効に仮想化イメージの再利用を行うことが可能となる。
【００６０】
なお、再利用した場合にも、ステップＳ１３６：Ｙｅｓの分岐を通り、処理の終了時にさらに新しい仮想化イメージを仮想化イメージ格納部１１０に格納するようにしてもよい。この場合、構築指示のハッシュ値としては、構築指示設定ファイルに記述されている、処理の開始から処理が終了したサブタスクの終了位置までのハッシュ値が紐付けられて格納される。このようにすることにより、さらに続きの処理を行う場合や、当該構築指示による結果を用いたい場合等に、演算処理が終了した仮想化イメージの再利用を行うことが可能となる。
【００６１】
一方、仮想化イメージの再利用が不可能である場合（ステップＳ１２２：Ｎｏ）、構築指示設定ファイルに記述されているジョブをデキューすることにより、仮想化イメージの構築（ステップＳ１４２）及び仮想化イメージの格納（ステップＳ１４４）の処理を行う。これらの処理は、上述したステップＳ１１０及びステップＳ１１６、ステップＳ１１８の処理と同等である。
【００６２】
このように、ベースイメージファイル及び構築指示設定ファイルのハッシュ値の組み合わせにより、再利用する仮想化イメージファイルを特定するようにしてもよい。
【００６３】
（構成指示設定ファイル）
図４は、構築指示設定ファイルの一例を示す図である。なお、内容については、疑似的に示したものであり、実際に使用している形式であるとは限らない。図中の左の数字は、行数を示す数字である。１行目から構成指示設定ファイルの終了までが、一連の処理を示すジョブであり、このジョブがジョブキュー１０２へとエンキューされる。
【００６４】
１行目の記載は、例えば、次の行に記載されているものがベースイメージファイルの指定であることを示す。２行目に記載されているように、例えば、ベースイメージファイル名を記載する。この記載は、２行目の括弧内にあるように、ハッシュ値を併記してもよいし、あるいは、ハッシュ値だけを記載できるようにしてもよい。
【００６５】
４行目の記載は、例えば、次の行からの記載が、ベースイメージファイルからＯＳを構築する際の構成を指定するものであることを示す。この構成は、例えば、ネットワークの接続設定等、ベースイメージファイルからＯＳを構築する際に指定することが可能である構成を示すものである。
【００６６】
７行目の記載は、例えば、この行より上に書かれているベースイメージファイル及び構成の指示に従い、ＯＳをビルドする命令を示すものである。この行の記載があると、ＯＳが構築される。
【００６７】
９行目の記載は、例えば、次の行からの記載が、構築されたＯＳにおける環境設定であることを示す。例えば、１０行目においては、必要なパッケージ又はアプリケーションをインストールし、１１行目では、インストールした実行ファイルに対して静的リンクを張っている。１２行目の記載では、環境変数の設定をしている。他の例としては、例えば、ライブラリをインストールし、ライブラリへのパスを通す処理等を実行させてもよい。
【００６８】
１４行目の記載は、例えば、次の行からの記載が、仮想環境において実行させたいコマンドであることを示す。この場合、１５行目以降に記載されている処理が、仮想環境の中で行われる。なお、１６行目にあるように、ネットワークを介して処理を行いたいバイナリをダウンロードしてくる形式でもよいし、構築指示設定ファイルと並行して、演算処理を行うためのファイルが演算処理実行部１１２へと送信されるようにしてもよい。
【００６９】
このように、構築指示設定ファイルは記載される。
【００７０】
上述したサブタスクは、例えば、１行目から２行目、４行目から５行目、７行目、９行目から１２行目、１４行目以降、と言ったようにジョブを分割するものである。なお、１４行目以降に改めて空白行を入れ、もういちどｒｕｎの指定をすることにより、演算処理をさらに細かいサブタスクへと分割してもよい。
【００７１】
このようにサブタスクを分割した場合、仮想化イメージ構築部１０６は、このサブタスクごとに処理が中断可能であれば、サブタスクごとに処理を中断し、中断された仮想化イメージのハッシュ値を仮想化イメージハッシュ値取得部１０８が取得し、当該仮想化イメージ及び当該ハッシュ値を、ベースイメージファイル及び中断した位置までの構築指示設定ファイルの組み合わせと紐付けて仮想化イメージ格納部１１０へと格納してもよい。
【００７２】
例えば、７行目のＯＳのビルドまでの処理において、仮想化イメージの構築及びハッシュ値の取得を行い、ベースイメージファイルのハッシュ値及び図４の１行目から７行目の記載までを構築指示設定ファイルとしたハッシュ値を取得し、仮想化イメージ格納部１１０に格納する。このようにすることにより、ベースイメージファイルの指定及び構築の構成の設定が同一である場合に、仮想化イメージを再利用することが可能となる。
【００７３】
別の例としては、１２行目の環境の構築までを行った後の仮想化イメージを取得するようにしてもよいし、１９行目の処理が実行した位置までで仮想化イメージを取得するようにしてもよい。
【００７４】
構築指示設定ファイルのハッシュ値を取得する際に、構築指示設定ハッシュ値取得部１１６は、構築指示設定ファイルに記載されている命令の順を入れ替えても処理が変わらない場合に、命令の順を入れ替えてもよい。例えば、１２行目の記載は、１０行目又は１１行目よりも前にあっても構わない。このような場合に、予め決められた規則に従って、同一の内容を実行する命令のセットである場合には、順番を入れ替えるようにしてもよい。順番を入れ替えるのみならず、省略できる命令は、省略してもよいし、逆に、本来は、記載されるべきであるが、省略されていることが明らかであるような命令を補完した後にハッシュ値の取得を行ってもよい。このように同一の内容の処理の場合のハッシュ値が同一になるように、正規化を行う。
【００７５】
サブタスクの分割は、上記のようなものには限られず、さらに粒度を細かく、又は、荒くしても構わない。例えば、図４の１行ごとの命令をサブタスクとしてジョブキュー１０２にエンキューし、ハッシュ値等の取得及び仮想化イメージの格納等を行ってもよい。
【００７６】
例えば、１７行目のプログラムの解凍までを実行した後に、仮想化イメージのハッシュ値を取得し、仮想化イメージを格納するようにしてもよい。このようにすることにより、例えば、１８行目から、別の構築指示ファイルでは、パッチをダウンロードして適用した後に処理を実行したい場合等に、１７行目までの処理が終了している仮想化イメージを再利用することが可能となる。
【００７７】
このように、サブタスクごとに、その位置までの構築指示設定ファイルのハッシュ値を取得し、適切に仮想化イメージと紐付けて格納することにより、再利用する粒度を細かくすることが可能となる。
【００７８】
なお、構築指示設定ファイルには、１２行目までの記述をしておき、１４行目以降の岸を別途演算処理ファイルとしてまとめてもよい。この場合も、ジョブキュー１０２にエンキューすることにより、同様の動作を行うことが可能である。
【００７９】
応用例として、ディープラーニングを行える環境を構築しておき、ジョブキュー１０２には、仮想環境の構築に関するジョブではなく、ディープラーニングの実行に関するジョブを記述するようにしてもよい。このように学習に関するジョブをジョブキュー１０２にエンキューすることにより、同じ環境を再利用して素早く機械学習を開始することが可能となる。
【００８０】
これは、例えば、途中から機械学習に与えるデータを分岐させたい場合等に有効である。逆に、同じ環境内に必要なビッグデータを取得しておいたイメージを格納しておくことにより、同じビッグデータを用いて別々の学習をさせる場合に、再利用することも可能となる。
【００８１】
以上のように、本実施形態によれば、仮想環境を構築して演算処理を行う場合において、例えば、ユーザ同士でイメージファイルを共有すると言った、ユーザ又はコンピュータによる複雑なイメージファイルやハッシュ値等の管理を行うことなく、同じ仮想環境についての再利用性を向上することにより、仮想環境の再構築を省略した低遅延及び低負荷な状態において仮想環境の再利用を行うことが可能となる。
【００８２】
例えば、機械学習等の大量計算を伴い大規模なクラスタを運用する場合に、利用する環境ごとに仮想化イメージを格納しておくことが可能となり、クラスタの構築に掛かる莫大な時間を短縮することもできる。また、サブタスクごとに仮想化イメージを生成しておくことにより、似たような環境についても、どのサブタスクから分岐させていることをユーザが把握することなく、かつ、コンピュータが複雑なハッシュ値等の管理をすることなく構築することが可能となり、時間的及び計算機的なコストを削減することができる。
【００８３】
サブタスクごとに処理を中断し、再開可能な箇所で仮想化イメージを生成し、再利用することが可能であるので、例えば、あるライブラリだけを新しいバージョンにしたり、使用するＣＰＵ、ＧＰＵ（Graphical Processing Unit）の数、メモリ使用量を同じ環境において自由に設定したりすることできる。また、Ｇｉｔ等のファイル管理システムと、各ファイルの管理を連動させることも可能である。さらに他の例で言えば、このように再利用可能とすることにより、他のユーザの構築した機械学習モデルを低コストで利用することも可能となる。
【００８４】
また、必ずしも全ての仮想化イメージを格納しておく必要はなく、構築に時間の掛かる環境について仮想化イメージを格納するようにしてもよい。
【００８５】
（変形例）
上述した例においては、ベースイメージ格納部１０４は、情報処理システム１内に備えられているものであったが、これには限られない。すなわち、ベースイメージ格納部１０４は、情報処理システム１の外部にあり、ベースイメージ取得部１２４がネットワーク等を介して、指定されたベースイメージファイルをベースイメージ格納部１０４から取得するようにしてもよい。
【００８６】
この変形例によれば、情報処理システム１の外部の情報を取得することが可能となる。例えば、ＯＳごとに定められたリポジトリの情報等を参照し、ダウンロードさせることが可能となり、より適切なベースイメージファイルの取得をすることが可能となる。また、この変形例においては、例えば、最新の安定版のイメージ等、利用される頻度の高いＯＳのベースイメージファイルを情報処理システム１内にキャッシュするようにしてもよい。
【００８７】
なお、上述した実施形態に係る情報処理システム１は、１台のサーバにより構築されているものであってもよいし、複数台の計算機によるクラスタとして構築されていてもよい。また、クライアント機からインターネット等の回線を介したクラウド上に構築されていてもよい。
【００８８】
また、上述した全ての機能をサーバで行う必要はない。例えば、構築指示正規化部１１４や、構築指示設定ハッシュ値取得部１１６等は、必ずしもサーバで実行される必要はない。例えば、ユーザ間において厳密にコーディングルールにより同じ形のファイルを生成可能であるような場合、構築指示の正規化を行う必要は必ずしもない。さらに、構築指示設定ファイルのハッシュ値の取得も、情報処理システム１のサーバ及びクライアントではなく、情報処理システム１外のクライアント機で実行されてもよい。
【００８９】
上述した実施形態において、ベースイメージファイル、構築指示設定ファイル及び仮想化イメージファイルのハッシュ値が取得されているが、これらのハッシュ値は、必ずしも同じ形式のハッシュである必要はない。各ファイルにおいて同じ形式によりハッシュ値が取得されるものであればよい。また、ハッシュの競合が起こっている場合には、例えば、新しいデータで上書きするようにしてもよいし、ハッシュ値の取得方法を変更するようにしてもよい。
【００９０】
上記の全ての記載において、情報処理システム１の少なくとも一部はハードウェアで構成されていてもよいし、ソフトウェアで構成され、ソフトウェアの情報処理によりＣＰＵ等が実施をしてもよい。ソフトウェアで構成される場合には、情報処理システム１及びその少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記憶媒体に収納し、コンピュータに読み込ませて実行させるものであってもよい。記憶媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記憶媒体であってもよい。すなわち、ソフトウェアによる情報処理がハードウェア資源を用いて具体的に実装されるものであってもよい。さらに、ソフトウェアによる処理は、ＦＰＧＡ（Field-Programmable Gate Array）等の回路に実装され、ハードウェアが実行するものであってもよい。仮想環境の構築等の処理は、例えば、ＧＰＵ（Graphical Processing Unit）等のアクセラレータを使用して行ってもよい。
【００９１】
上記の全ての記載に基づいて、本発明の追加、効果又は種々の変形を当業者であれば想到できるかもしれないが、本発明の態様は、上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更及び部分的削除が可能である。
【符号の説明】
【００９２】
１：情報処理システム、１００：入力受付部、１０２：ジョブキュー、１０６：仮想化イメージ構築部、１０８：仮想化イメージハッシュ値取得部、１１０：仮想化イメージ格納部、１１８：照合部、１２０：サブタスク削除部、１２２：仮想化イメージ再利用部
【図１】
2019101553.tif 000003
【図２】
2019101553.tif 000004
【図３】
2019101553.tif 000005
【図４】
2019101553.tif 000006
【図５】
2019101553.tif 000007