図1に、本実施の形態における情報処理装置1の構成図を示す。情報処理装置1は、CPU(Central Processing Unit)、メモリ、HDD(Hard Disk Drive)、及びバス等を含むハードウエアリソース10を有する。ハードウエアリソース10上では、例えばハイパバイザである仮想化ソフトウエア11が、例えばファームウエア層において実行される。仮想化ソフトウエア11は、論理的に分離されたグローバル仮想環境121及びグローバル仮想環境122を生成する。
グローバル仮想環境121は、例えばOS層において実現され、仮想環境を生成するためのソフトウエアである仮想化機構によって仮想環境1210を生成する。仮想環境1210は、仮想化機構によって仮想環境1211及び1212を生成する。グローバル仮想環境122は、仮想化機構によって仮想環境1220を生成する。仮想環境1220は、仮想化機構によって仮想環境1221及び1222を生成する。仮想環境1220乃至1222は、例えばアプリケーション層において実現される。仮想化機構は、ファームウエア層、OS層、及びアプリケーション層のいずれに含まれてもよい。また、図1においては仮想環境の数が6であるが、数に限定は無い。
上で述べたように、「仮想環境」とは、物理マシン上に仮想的に構築された仮想マシンが備える機能等の総体のことである。グローバル仮想環境121は、通常のOSの機能と同等の機能(例えばカーネルの機能等)を有しており、その機能を仮想環境1210乃至1212に提供する。仮想環境1210乃至1212は、グローバル仮想環境121の機能を利用することで、アプリケーション等の機能を提供する。なお、仮想環境1210乃至1212がOSの機能の少なくとも一部を有する場合もある。グローバル仮想環境122及び仮想環境1220乃至1222も同様である。
図2に、仮想環境1210乃至1212及び仮想環境1220乃至1222の機能ブロック図を示す。仮想環境1210は、収集処理部12101と、準備処理部12102と、適用処理部12103と、第1コマンド格納部12111と、第2コマンド格納部12112と、収集データ格納部12113と、修正データ格納部12114と、機構データ格納部12115と、第3コマンド格納部12116と、バージョンデータ格納部12117と、適用データ格納部12118と、適用結果格納部12119とを有する。
収集処理部12101は、第1コマンド格納部12111に格納されたデータ及び第2コマンド格納部12112に格納されたデータに基づき処理を実行し、処理結果を収集データ格納部12113に格納する。準備処理部12102は、収集データ格納部12113に格納されたデータ、修正データ格納部12114に格納されたデータ、機構データ格納部12115に格納されたデータ、第3コマンド格納部12116に格納されたデータ、及びバージョンデータ格納部12117に格納されたデータに基づき処理を実行し、処理結果を適用データ格納部12118に格納する。適用処理部12103は、適用データ格納部12118に格納されたデータに基づき処理を実行し、処理結果を適用結果格納部12119に格納する。
説明をわかりやすくするため、以下では図3に示すような階層構造を想定して説明を行う。図3においては、丸の図形が仮想環境を表す。第1階層には仮想環境I-a(例えば、仮想環境1210)と、仮想環境II-a(例えば、仮想環境1211)と、仮想環境II-b(例えば、仮想環境1212)とが属する。仮想環境II-a及びII-bは仮想環境I-a上で生成された仮想環境である。このような場合、仮想環境I-aを親又は親仮想環境と呼び、仮想環境II-a及びII-bを子又は子仮想環境と呼ぶ。仮想環境I-aは、仮想化機構Xによって仮想環境II-a及びII-bを生成する。
第2階層には仮想環境II-aと、仮想環境II-bと、仮想環境III-aと、仮想環境III-bと、仮想環境III-cと、仮想環境III-dとが属する。仮想環境III-a及びIII-bは仮想環境II-a上で生成された仮想環境である。仮想環境III-c及びIII-dは仮想環境II-b上で生成された仮想環境である。従って、仮想環境II-aは仮想環境III-a及びIII-bの親であり、仮想環境II-bは仮想環境III-c及びIII-dの親である。仮想環境II-aは、仮想化機構Yによって仮想環境III-aを生成し、仮想化機構Zによって仮想環境III-bを生成する。仮想環境II-bは、仮想化機構Zによって仮想環境III-c及びIII-dを生成する。α及びβは仮想環境の役割を表す。α及びβについては後述する。
このように、本実施の形態においては、親子によるグループの単位で階層を定義する。そのため、第1階層の子は第2階層の親になり、第2階層の子は第3階層の親になり・・・というように、親であり且つ子でもある仮想環境によって階層が連結される。
本実施の形態においては、第1階層の親仮想環境が、各仮想環境から情報を収集する処理(以下では、収集処理と呼ぶ)と、収集した情報に基づきソフトウエアの修正を適用するためのプログラム等を各仮想環境について生成する処理(以下では、準備処理と呼ぶ)と、生成したプログラム等に基づき各仮想環境に修正を適用する処理(以下では、適用処理と呼ぶ)とを実行する。ソフトウエアの修正とは、例えば、既に仮想環境に導入されているソフトウエア(OS、アプリケーションプログラムなど)のバージョン変更である。
はじめに、図4乃至図10を用いて、収集処理部12101が実行する収集処理について説明する。まず、収集処理部12101が起動される。第1階層の親(図3の例では、仮想環境I-a)における収集処理部12101については、情報処理装置1の管理者による起動指示によって、適用すべき修正がある場合に起動される。その他の収集処理部12101については、後述するステップS9の処理によって起動される。
そして、収集処理部12101は、第1コマンド格納部12111に格納された第1コマンドデータに含まれる取得用コマンドを実行し、自仮想環境の親子情報を生成し(図4:ステップS1)、収集データ格納部12113に格納する。
図5に、第1コマンド格納部12111に格納される第1コマンドデータの一例を示す。図5の例では、仮想化機構の識別子と、親子情報を取得するための取得用コマンド、親子の判定基準を示すデータと、移動用コマンドとが格納される。例えば、仮想化機構Xを使用する仮想環境について親子情報を取得する場合には「command_X」が実行される。そして、取得用コマンドの実行によって取得した値と親子の判定基準を示すデータとに基づき、親子情報が生成される。
図6に、親子情報の一例を示す。図6の例は、仮想環境II-aについて生成された親子情報の一例であり、親子情報は、仮想環境の識別子と、その仮想環境が使用する仮想化機構の識別子と、子仮想環境の識別子とを含む。
図4の説明に戻り、収集処理部12101は、生成された親子情報に基づき、自仮想環境が親であるか判断する(ステップS3)。例えば、親子情報に子仮想環境の識別子が含まれる場合、自仮想環境は親である。
自仮想環境は親ではない場合(ステップS5:Noルート)、処理は端子Aを介して図8のステップS13に移行する。一方、自仮想環境は親である場合(ステップS5:Yesルート)、収集処理部12101は、親子情報に基づき未処理の子を1つ特定する(ステップS6)。そして、収集処理部12101は、第1コマンドデータ、第2コマンドデータ、及び収集処理プログラムを子仮想環境に送信する(ステップS7)。なお、実際には、子仮想環境にデータを送信する場合、子仮想環境と親仮想環境とが共用する記憶領域にデータが格納される。また、収集処理プログラムが予め各仮想環境に配置されている場合には、ステップS7において収集処理プログラムを送信しなくてもよい。
図7に、第2コマンド格納部12112に格納される第2コマンドデータの一例を示す。図7の例では、ソフトウエア(すなわちアプリケーション)の識別子と、項目と、取得用コマンドとが格納される。
図4の説明に戻り、収集処理部12101は、子仮想環境上で収集プログラムを実行させることにより、子仮想環境上で収集処理部12101を起動させる(ステップS9)。なお、ステップS9においては、第1コマンド格納部12111に格納された移動用コマンドを実行することによって、制御の移動が行われる。但し、本実施の形態における主要部分とは関係が無いので、詳細な説明を省略する。
収集処理部12101は、親子情報に基づき未処理の子仮想環境が有るか判断する(ステップS11)。未処理の子仮想環境が有る場合(ステップS11:Yesルート)、ステップS6の処理に戻る。一方、未処理の子仮想環境が無い場合(ステップS11:Noルート)、処理は端子Aを介して図8のステップS13の処理に移行する。
図8の説明に移行し、収集処理部12101は、親子情報に基づき子仮想環境が有るか判断する(ステップS13)。子仮想環境が無い場合(ステップS13:Noルート)、ステップS19の処理に移行する。子仮想環境が有る場合(ステップS13:Yesルート)、収集処理部12101は、一定時間待機する(ステップS15)。
収集処理部12101は、各子仮想環境から親子情報及びソフトウエア情報を取得したか判断する(ステップS17)。後述のステップS25において説明するように、親子情報及びソフトウエア情報を取得した仮想環境は、その仮想環境の親に親子情報及びソフトウエア情報を送信するようになっている。子仮想環境が複数存在する場合には、複数の子仮想環境の各々から親子情報及びソフトウエア情報を取得するまではステップS19以降の処理は実行されない。
各子仮想環境から親子情報及びソフトウエア情報を取得していない場合(ステップS17:Noルート)、ステップS15の処理に戻る。一方、各子仮想環境から親子情報及びソフトウエア情報を取得した場合(ステップS17:Yesルート)、収集処理部12101は、各子仮想環境から取得した親子情報及びソフトウエア情報を、収集データ格納部12113に格納する(ステップS19)。
収集処理部12101は、第2コマンドデータに含まれる取得用コマンドを実行することで、自仮想環境のソフトウエア情報を取得し、収集データ格納部12113に格納する(ステップS21)。ステップS21においては、自仮想環境におけるソフトウエアの各項目について、取得用コマンドが実行される。
図9に、ソフトウエア情報の一例を示す。図9の例では、ソフトウエア情報は、ソフトウエアの識別子と、ソフトウエアの現在のバージョンを示す情報と、そのソフトウエアに対して現在適用されている修正のレベル(以下、修正レベルと呼ぶ)を示す情報とを含む。
図8の説明に戻り、収集処理部12101は、自仮想環境が子仮想環境であるか判断する(ステップS23)。自仮想環境が子仮想環境であるか否かは、ステップS7の処理によって親仮想環境からデータを受信したか否かによって判断することができる。
自仮想環境が子仮想環境ではない場合(ステップS23:Noルート)、処理を終了する。自仮想環境が子仮想環境である場合(ステップS23:Yesルート)、収集処理部12101は、収集データ格納部12113に格納された親子情報及びソフトウエア情報(すなわち、自仮想環境の親子情報及びソフトウエア情報と、取得した親子情報及びソフトウエア情報)を、親仮想環境に送信する(ステップS25)。なお、実際には、親仮想環境にデータを送信する場合、子仮想環境と親仮想環境とが共用する記憶領域にデータが格納される。そして処理を終了する。
以上のような処理を実行すれば、図10に示すような順序で各仮想環境の情報が取得されるようになる。図10に示すように、収集処理は第1階層の親仮想環境である仮想環境I-aから開始する。仮想環境I-aにおける収集処理部12101は、仮想環境II-a及びII-bにおける収集処理部12101を起動する(すなわち、収集指示を送る)。仮想環境II-bにおける収集処理部12101は、仮想環境III-c及びIII-dにおける収集処理部12101に収集指示を送る。仮想環境III-c及びIII-dにおける収集処理部12101は、情報の収集を行い、収集の結果を仮想環境II-bにおける収集処理部12101に送る。仮想環境II-bにおける収集処理部12101は情報の収集を行い、自仮想環境における収集の結果と仮想環境III-c及びIII-dから受け取った収集の結果とを仮想環境I-aにおける収集処理部12101に送る。同様に、仮想環境II-aにおける収集処理部12101は、仮想環境III-a及びIII-bにおける収集処理部12101に収集指示を送る。仮想環境III-a及びIII-bにおける収集処理部12101は、情報の収集を行い、収集の結果を仮想環境II-aにおける収集処理部12101に送る。仮想環境II-aにおける収集処理部12101は情報の収集を行い、自仮想環境における収集の結果と仮想環境III-a及びIII-bから受け取った収集の結果とを仮想環境I-aにおける収集処理部12101に送る。
次に、図11乃至図25を用いて、準備処理部12102が実行する準備処理について説明する。第1階層の親仮想環境における収集処理部12101は、収集処理が完了した場合、収集処理が完了したことを準備処理部12102に通知する
そして、準備処理部12102は、収集データ格納部12113に格納された、各仮想環境についての親子情報に基づき、階層情報を生成する(図11:ステップS31)。
図12に、階層情報の一例を示す。図12の例では、階層情報は、階層の識別子と、その階層における親仮想環境の識別子と、その階層における子仮想環境の識別子とを含む。なお、図12に示されているように、仮想環境III-a乃至III-dには子仮想環境が無いため実際には仮想環境III-a乃至III-dは親仮想環境ではないが、説明の都合上、親仮想環境の識別子のカラムに仮想環境III-a乃至III-dの識別子が格納されている。
図11の説明に戻り、準備処理部12102は、処理対象を第1階層の親(例えば、図3における仮想環境I-a)に設定する(ステップS33)。
準備処理部12102は、処理対象の仮想環境について、収集データ格納部12113に格納されているソフトウエア情報及びバージョンデータ格納部12117に格納されているバージョンデータに基づき、修正を適用すべきソフトウエア及びその修正レベルを特定する(ステップS35)。
図13に、バージョンデータ格納部12117に格納されるバージョンデータの一例を示す。図13の例では、ソフトウエアの識別子と、バージョンを示す情報と、最新の修正レベルを示す情報とが格納される。上で述べたように、ソフトウエア情報には現在のバージョンを示す情報と現在の修正レベルを示す情報とが含まれているので、バージョンデータを利用すれば、修正を適用すべきソフトウエア及びその修正レベルを特定できる。なお、バージョンデータは、管理者等によって最新の状態に維持される。
図11の説明に戻り、準備処理部12102は、処理対象の仮想環境について、ソフトウエア情報、機構データ、及び第3コマンド格納部12116に格納された第3コマンドデータに基づき、再起動の回数を算出する(ステップS37)。
再起動回数は、機構データ格納部12115に格納されている、後処理の内容を示す情報、及び、第3コマンド格納部12116に格納されている、各ソフトウエアの後処理の内容を示す情報に基づき決定される。例えば、或る仮想環境が使用する仮想化機構についての後処理に再起動が含まれており、且つ、その仮想環境に適用される修正のうち2つの修正について後処理を実行する場合、再起動回数は3である。
図14に、機構データ格納部12115に格納される機構データの一例を示す。図14の例では、仮想化機構の識別子と、同じ階層内での優先順位を示す情報と、親子間の優先順位を示す情報と、前処理の内容を示す情報と、後処理の内容を示す情報とが格納される。ここでの前処理とは、或る仮想環境について修正を適用すべき場合に事前に行うべき処理であり、ここでの後処理とは、或る仮想環境について修正を適用し終えた場合に行うべき処理である。その他の項目については後述する。
図15に、第3コマンド格納部12116に格納される第3コマンドデータの一例を示す。図15の例では、ソフトウエアの識別子と、適用順序と、前処理の内容を示す情報と、後処理の内容を示す情報と、適用コマンドとが格納される。ここでの前処理とは、或るソフトウエアについて修正を適用すべき場合に事前に行うべき処理であり、ここでの後処理とは、或るソフトウエアについて修正を適用し終えた場合に行うべき処理である。適用コマンドは、適用についてのコード、前処理についてのコード、及び後処理についてのコードを含む。
図11の説明に戻り、準備処理部12102は、第3コマンドデータにおける適用コマンド基づき、ステップS35において特定されたソフトウエア毎に適用プログラムを生成する(ステップS39)。
図16に、ステップS39において生成される適用プログラムの一例を示す。図16には、適用プログラムの一例として、「II-a-01.sh」という名前の適用プログラム1601と、「II-a-02.sh」という名前の適用プログラム1602とが示されている。適用プログラムは、第3コマンドデータにおける適用コマンドと、ステップS39の処理によって追加されたコードとを含む。例えば適用プログラム1601には、ステップS39の処理によって、再起動を通知するためのコマンドである「INFORM reboot」が追加される。また、適用プログラム1602には、ステップS39の処理によって、終了を通知するためのコマンドである「INFORM end」が追加される。なお、ステップS39においては実際に適用プログラムを実行できるようにするために形式を整える処理等も行われるが、本実施の形態における主要なとは直接関係しないので、説明を省略する。
図11の説明に戻り、準備処理部12102は、親子情報及び機構データに基づき、処理対象の仮想環境が使用する仮想化機構についての前処理プログラム及び後処理プログラムを生成する(ステップS41)。例えば図14における仮想化機構Xであれば、子仮想環境の停止及びIO(Input Output)を停止するための前処理プログラムと、再起動するための後処理プログラムとが生成される。なお、仮想化機構毎に、図16における適用コマンドのような雛型プログラムを予め生成しておいてもよい。また、使用する仮想化機構が無い場合には、デフォルトの前処理及び後処理について前処理プログラム及び後処理プログラムを生成してもよい。
準備処理部12102は、収集データ格納部12113に格納された親子情報及びステップS35乃至S41の処理結果に基づき、管理データにおける、処理対象の仮想環境についてのエントリを生成する(ステップS43)。処理は端子Bを介して図18のステップS45に移行する。
図17に、準備処理によって最終的に生成される管理データの一例を示す。図17の例では、仮想環境の識別子と、その仮想環境の親仮想環境の識別子と、適用順序と、再起動回数と、ソフトウエアの識別子と、バージョンを示す情報と、現在の修正レベルを示す情報と、適用する修正レベルを示す情報と、適用プログラムの識別子とが含まれる。なお、ステップS43において生成されたエントリには、適用順序の情報が含まれず、後述のステップS53の処理によって生成される。また、ステップS43の処理によって1つの仮想環境についてエントリが生成されるので、必ずしもステップS43の時点で図17に示すような管理データが生成されるわけではない。
図18の説明に移行し、準備処理部12102は、処理対象の仮想環境と同じ階層に未処理の仮想環境が有るか判断する(ステップS45)。同じ階層に未処理の仮想環境が有る場合(ステップS45:Yesルート)、準備処理部12102は、同じ階層において未処理の仮想環境を処理対象に設定する(ステップS47)。処理は端子Cを介して図11のステップS35に戻る。
一方、同じ階層において未処理の仮想環境が無い場合(ステップS45:Noルート)、準備処理部12102は、処理対象の仮想環境より1つ下の階層の仮想環境が有るか判断する(ステップS49)。
処理対象の仮想環境より1つ下の階層の仮想環境が有る場合(ステップS49:Yesルート)、準備処理部12102は、処理対象の仮想環境より1つ下の階層において未処理の仮想環境を処理対象に設定する(ステップS51)。処理は端子Cを介して図11のステップS35に戻る。
一方、処理対象の仮想環境より1つ下の階層の仮想環境が無い場合(ステップS49:Noルート)、準備処理部12102は適用順序の情報を生成し、管理データに付加する(ステップS53)。
図19乃至図25を用いて、適用順序の情報を生成する方法について説明する。まず、準備処理部12102は、収集データ格納部12113に格納された親子情報を、図19に示すように整理する。図19に示したデータは、各仮想環境から取得した親子情報を連結したデータである。
そして、図19に示したデータと機構データとに基づき、親子モデル内の適用順序を図20に示すように決定する。例えば仮想化機構I-aは仮想化機構Xを使用しており、機構データにおける仮想化機構Xについてのエントリによれば、親の優先順位は2であり、2つの子の優先順位はいずれも1である。従って、図20の2001に示すように適用順序が決定される。また、仮想化機構II-bは仮想化機構Zを使用しており、機構データにおける仮想化機構Zについてのエントリによれば、親の優先順位は3であり、役割が「α」である子の優先順位は2であり、役割が「β」である子の優先順位は1である。従って、図20の2002に示すように適用順序が決定される。
次に、図20に示したデータに基づき、図21に示す、親子モデル間の関係を表すデータを生成する。例えば仮想環境II-aは、図20において、仮想化機構Xについてのデータと、仮想化機構Yについてのデータと、仮想化機構Zについてのデータとに出現する。そして、仮想化機構Xについては順位が1であり、仮想化機構Yについては順位が2であり、仮想化機構Zについては順位が3である。従って、図21におけるエントリ2101が生成される。また、例えば仮想環境II-bは、図20において仮想化機構Xについてのデータと、仮想化機構Yについてのデータとに出現する。そして、仮想化機構Xについては順位が1であり、仮想化機構Zについては順位が3であるので、図21におけるエントリ2102が生成される。
次に、図21に示したデータに対し、第2階層での順位を示す情報を付加する。機構データにおける「同じ階層内での優先順位を示す情報」によれば、同じ階層内においては仮想化機構Yは仮想化機構Zより順位が高いので、第2階層内での順位を示す情報が、図22に示すように付加される。
次に、図22に示したデータに基づき、図23に示すデータを生成する。具体的には、図22において階層が1であり且つ仮想化機構がXであるカラムについては、図23におけるエントリ2301を生成し、図22において階層が2であり且つ仮想化機構がYであるカラムについては、図23におけるエントリ2302を生成し、図22において階層が2であり且つ仮想化機構がZであるカラムの1つめについては、図23におけるエントリ2303を生成し、階層が2であり且つ仮想化機構がZであるカラムの2つめについては、図23におけるエントリ2304を生成する。さらに、図22における「第2階層での順位」に基づき、仮想化機構Yに対応付けられている仮想環境III-aの方が仮想化機構Zに対応付けられている仮想環境III-bより優先順位が高いと判断できるので、図23におけるエントリ2305を生成する。
次に、図23に示したデータに基づき、図24に示すデータを生成する。ここでは、エントリ間で同じ仮想環境がある場合にはそれらの位置を合わせる処理が行われる。例えば図23においてエントリ2303におけるIII-bとエントリ2305におけるIII-bとが同じであるので、位置が合わせられる。ここで、仮想環境III-a及びIII-dには順位「1」が付与され、仮想環境III-b及びIII-cには順位「2」が付与され、仮想環境II-a及びII-bには順位「3」が付与され、仮想環境I-aには順位「4」が付与される。
最後に、図24に示したデータに基づき、図25に示すデータを生成する。図25に示すデータは、図22に示したデータに、図24で決定された順序の情報が付加されたデータである。図25に示した順序の情報に含まれる数字と、第3コマンド格納部12116に格納された適用順序の情報に含まれる数字とをハイフンでつないだ形式で最終的な適用順序が生成される。そして、最終的な適用順序を管理データに付加すると、図17に示した管理データが完成する。本実施の形態においては、ハイフンの前にある数字が小さいほど順番が先であり、ハイフンの前の数字が同じである場合、ハイフンの後にある数字が小さいほど順番が先である。
図18の説明に戻り、準備処理部12102は、ステップS53の処理により適用順序の情報が付加された管理データ、ステップS41の処理により生成された前処理プログラム及び後処理プログラム、ステップS39において生成された適用プログラム、並びにソフトウエアの修正に使用する修正データを含む適用データを生成し(ステップS55)、適用データ格納部12118に格納する。
以上のような処理を実行すれば、仮想環境上で動作するソフトウエア、仮想化機構、及び仮想環境の親子関係、及び仮想環境の役割についての制約に基づいて適切な適用順序を生成できるようになる。これにより、誤った順序で修正を適用することによって問題が生じることを防止できるようになる。また、たとえ仮想化機構の種類が増えたり、階層の構造が変更されたとしても、関係するデータを書き換え、収集処理及び準備処理をやり直すだけでよい。
次に、図26乃至図29Bを用いて、適用処理部12103が実行する適用処理について説明する。
まず、適用処理部12103が起動される。第1階層の親(図3の例では、仮想環境I-a)における適用処理部12103については、情報処理装置1の管理者による起動指示によって起動される。その他の適用処理部12103については、後述するステップS71の処理によって起動される。なお、後述するステップS89の処理によって、適用プログラムの一部が起動時の処理プログラムに追加された場合には、起動時に適用プログラムの一部が実行される。
そして、適用処理部12103は、今回の起動が初回の起動であるか判断する(図26:ステップS61)。初回の起動ではない場合(ステップS61:Noルート)、適用処理部12103は、起動時に親仮想環境から受信した「実行済みの再起動の回数」に基づき再開ポイントを特定する(ステップS63)。処理は端子Dを介して図27のステップS81に移行する。再開ポイントとは、適用処理の再開位置である。
本実施の形態においては、親仮想環境の適用処理部12103が、子仮想環境において実行した再起動の回数を管理することで、どの段階まで適用処理が進んだか把握されるようになっている。具体的には、親仮想環境の適用処理部12103は、子仮想環境から受信する後述の再起動通知の数を計数する。親仮想環境の適用処理部12103は、子仮想環境から再起動通知を受信すると、子仮想環境に対してポーリングを行い、子仮想環境が再起動されるまで待つ。再起動が完了すると、子仮想環境に対して、計数された再起動通知の数(すなわち、再起動が行われた数)を通知する。子仮想環境の適用処理部12103は、計数された再起動通知の数と、管理データに含まれる再起動回数及び適用順序等とに基づき、再開ポイントを特定することができる。
一方、初回起動である場合(ステップS61:Yesルート)、適用処理部12103は、適用データ格納部12118に格納された適用データに含まれる管理データに基づき、自仮想環境が親仮想環境であるか判断する(ステップS65)。
自仮想環境は親仮想環境ではない場合(ステップS67:Noルート)、処理は端子Dを介して図27のステップS81に移行する。自仮想環境は親仮想環境である場合(ステップS67:Yesルート)、適用処理部12103は、未処理の子仮想環境が有るか判断する(ステップS69)。
未処理の子仮想環境が有る場合(ステップS69:Yesルート)、未処理の子仮想環境を1つ特定する。そして、適用処理部12103は、適用データ格納部12118に格納された適用データを、特定された子仮想環境に送信する(ステップS71)。なお、実際には、子仮想環境にデータを送信する場合、子仮想環境と親仮想環境とが共用する記憶領域にデータが格納される。そして、子仮想環境の適用処理部12103は、適用データを受信すると、適用データ格納部12118に格納する。
適用処理部12103は、管理データに含まれる適用順序の情報に基づき、複数の子仮想環境に修正を並列適用可能であるか判断する(ステップS73)。例えば図17の例であれば、仮想環境II-aの順番は仮想環境II-bの順番と同じである(両者とも「3」である)ので、並列適用可能である。これに対し、仮想環境III-aの順番は仮想環境III-bの順番と同じではない(前者は「1」であり後者は「2」である)ので、並列適用可能ではない。
並列適用可能である場合(ステップS73:Yesルート)、ステップS69の処理に戻る。一方、並列適用可能ではない場合(ステップS73:Noルート)、適用処理部12103は、適用結果の送信先の子仮想環境から適用結果を受信するまで待機する(ステップS75)。適用結果を受信した場合、適用処理部12103は、適用結果を適用結果格納部12119に格納し、ステップS69の処理に戻る。
一方、未処理の子仮想環境が無い場合(ステップS69:Noルート)、適用処理部12103は、並列適用可能な複数の子仮想環境が有るか判断する(ステップS77)。並列適用可能な複数の子仮想環境が無い場合(ステップS77:Noルート)、処理は端子Dを介して図27のステップS81の処理に移行する。
並列適用可能な複数の子仮想環境が有る場合(ステップS77:Yesルート)、適用処理部12103は、適用結果を各子仮想環境から受信するまで待機する(ステップS79)。適用結果を各子仮想環境から受信した場合、処理は端子Dを介して図27のステップS81の処理に移行する。
図27の説明に移行し、適用処理部12103は、未適用の修正が有るか判断する(ステップS81)。未適用の修正が有るか否かは、再開ポイントに基づき判断される。なお、初回の適用の場合には、管理データを参照することによって未適用の修正が有るか判断される。
未適用の修正が有る場合(ステップS81:Yesルート)、適用処理部12103は、初回の適用である場合には適用データに含まれる前処理プログラムを実行する(ステップS83)。初回の適用ではない場合、前処理プログラムは実行されない。
適用処理部12103は、管理データから未適用の修正を1つ特定する(ステップS85)。そして、適用処理部12103は、特定された修正の適用中に再起動が有るか判断する(ステップS87)。適用中に再起動が有るか否かは、適用プログラムの中に再起動することを示すコードが含まれているか否かによって判断される。
適用中に再起動が無い場合(ステップS87:Noルート)、ステップS91の処理に移行する。適用中に再起動が有る場合(ステップS87:Yesルート)、適用処理部12103は、特定された修正用の適用プログラムのうち再起動後の部分を、起動時の処理プログラム(具体的には、起動時にOSが実行する処理のプログラム)に追加する(ステップS89)。
適用処理部12103は、特定された修正用の適用プログラムを実行し(ステップS91)、適用結果を適用結果格納部12119に格納する。ステップS89の処理を実行した場合には、特定された修正用の適用プログラムのうち再起動の前の部分が実行される。また、適用データに含まれる修正データは、本処理において利用される。
適用処理部12103は、再起動を要するか判断する(ステップS93)。再起動を要しない場合(ステップS93:Noルート)、ステップS81の処理に戻る。
再起動を要する場合(ステップS93:Yesルート)、適用処理部12103は、親仮想環境に再起動通知を送信する(ステップS95)。なお、実際には、親仮想環境にデータを送信する場合、子仮想環境と親仮想環境とが共用する記憶領域にデータが格納される。また、上で述べたように、再起動通知を受信した親仮想環境は、再起動通知の数を1インクリメントし、子仮想環境が起動した後、再起動の実行回数を子仮想環境に通知する。
適用処理部12103は、再起動を実行する(ステップS97)。これにより仮想環境は停止し、再びステップS61から処理を開始する。
一方、ステップS81において未適用の修正が無いと判断された場合(ステップS81:Noルート)、処理は端子Eを介して図28のステップS99に移行する。
図28の説明に移行し、適用処理部12103は、後処理プログラムの中に再起動することを示すコードが含まれているか否かに基づき、後処理に再起動が含まれるか判断する(ステップS99)。後処理に再起動が含まれない場合(ステップS99:Noルート)、適用処理部12103は、後処理プログラムを実行する(ステップS101)。
適用処理部12103は、子仮想環境から取得した適用結果と、自仮想環境の適用結果とを適用結果格納部12119から読み出し、親仮想環境に送信する(ステップS103)。そして処理を終了する。なお、実際には、親仮想環境にデータを送信する場合、子仮想環境と親仮想環境とが共用する記憶領域にデータが格納される。
一方、後処理に再起動が含まれると判断された場合(ステップS99:Yesルート)、適用処理部12103は、後処理を実行済みであるか判断する(ステップS105)。後処理を実行済みであるか否かは、例えば、再開ポイントに基づき判断される。
後処理を実行済みである場合(ステップS105:Yesルート)、ステップS103の処理に移行する。一方、後処理を実行済みではない場合(ステップS105:Noルート)、適用処理部12103は、親仮想環境に再起動通知を送信する(ステップS107)。なお、実際には、親仮想環境にデータを送信する場合、子仮想環境と親仮想環境とが共用する記憶領域にデータが格納される。
そして、適用処理部12103は、後処理プログラムを実行する(ステップS109)。そして処理を終了する。
以上のような処理を実行すれば、複数の仮想環境に対する修正の適用を自動的に行えるようになる。これにより、管理者の手間を削減するとともに、管理者の高度な知識及びスキルが不要になる。また、誤って修正を適用してしまうことを防止できるようになる。さらに、修正を適用した際に再起動を行うべきである場合にも対処できるようになる。
本実施の形態によれば、図29Aに示すような順序で各仮想環境に修正が適用されるようになる。図29Aに示すように、適用処理は第1階層の親仮想環境である仮想環境I-aから開始する。仮想環境I-aにおける適用処理部12103は、並列適用が可能である場合は仮想環境II-a及びII-bにおける適用処理部12103を並列で起動する(すなわち、適用指示を送る)。仮想環境II-bにおける適用処理部12103は、並列適用が可能である場合は仮想環境III-c及びIII-dにおける適用処理部12103に並列に適用指示を送る。仮想環境III-c及びIII-dにおける適用処理部12103は、修正の適用を行い、適用結果を仮想環境II-bにおける適用処理部12103に送る。仮想環境II-bにおける適用処理部12103は自仮想環境に対して修正の適用を行い、自仮想環境における適用結果と仮想環境III-c及びIII-dから受け取った適用結果とを仮想環境I-aにおける適用処理部12103に送る。
同様に、仮想環境II-aにおける適用処理部12103は、並列適用が可能である場合は仮想環境III-a及びIII-bにおける適用処理部12103に並列に適用指示を送る。仮想環境III-a及びIII-bにおける適用処理部12103は、修正の適用を行い、適用結果を仮想環境II-aにおける適用処理部12103に送る。仮想環境II-aにおける適用処理部12103は修正の適用を行い、自仮想環境における適用結果と仮想環境III-a及びIII-bから受け取った適用結果とを仮想環境I-aにおける適用処理部12103に送る。
但し、同じ階層に属する複数の仮想環境に対して修正を並列に適用できない場合もある。図29Bに、同じ階層に属する複数の仮想環境に対して修正を並列に適用できない場合における修正適用の順序の一例を示す。図29Bに示すように、適用処理は第1階層の親仮想環境である仮想環境I-aから開始する。仮想環境I-aにおける適用処理部12103は、適用の順番が仮想環境II-aより前である仮想環境II-bにおける適用処理部12103に適用指示を送る。仮想環境II-bにおける適用処理部12103は、適用の順番が仮想環境III-dより前である仮想環境III-cにおける適用処理部12103に適用指示を送る。仮想環境III-cにおける適用処理部12103は、修正の適用を行い、適用結果を仮想環境II-bにおける適用処理部12103に送る。仮想環境II-bにおける適用処理部12103は、仮想環境III-cから適用結果を受け取ると、仮想環境III-dにおける適用処理部12103に適用指示を送る。仮想環境III-dにおける適用処理部12103は、修正の適用を行い、適用結果を仮想環境II-bにおける適用処理部12103に送る。仮想環境II-bにおける適用処理部12103は、仮想環境III-dから適用結果を受け取ると、修正の適用を行い、自仮想環境における適用結果と仮想環境III-c及びIII-dから受け取った適用結果とを仮想環境I-aにおける適用処理部12103に送る。
仮想環境I-aにおける適用処理部12103は、適用結果を仮想環境II-bから受け取ると、適用の順番が仮想環境II-bより後である仮想環境II-aにおける適用処理部12103に適用指示を送る。仮想環境II-aにおける適用処理部12103は、適用の順番が同じである仮想環境III-a及びIII-bに適用指示を送る。仮想環境III-a及びIII-bにおける適用処理部12103は、修正の適用を行い、適用結果を仮想環境II-aにおける適用処理部12103に送る。仮想環境II-aにおける適用処理部12103は修正の適用を行い、自仮想環境における適用結果と仮想環境III-a及びIII-bから受け取った適用結果とを仮想環境I-aにおける適用処理部12103に送る。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置1の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、収集処理においては下層から順に情報を収集するが、収集処理については順序の制約が無いので、他の順序で情報を収集してもよい。
なお、上で述べた情報処理装置1は、コンピュータ装置であって、図30に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係る修正適用方法は、複数の仮想環境を階層的に生成するコンピュータにおいて実行される。そして、本仮想環境設定方法は、複数の仮想環境のうち第1の仮想環境で動作する第1処理部が、(A)複数の仮想環境のうち第2の仮想環境から、適用すべき設定の情報を含む設定情報及び仮想環境の設定順序を示す順序情報を受信し、(B)第1の仮想環境より先に設定が適用されるべき仮想環境である第3の仮想環境を順序情報に基づき特定し、設定情報及び順序情報を第3の仮想環境に送信し、(C)適用が完了したことを第3の仮想環境から通知された場合、設定情報に基づき、第1の仮想環境に設定を適用し、(D)第1の仮想環境への設定の適用が完了した場合、第1の仮想環境への設定の適用が完了したことを第2の仮想環境に通知する処理を含む。
このようにすれば、順序情報に従った適用を行えるので、1台の物理サーバ上で階層的に生成された複数の仮想環境に対して適切な順序で設定を適用できるようになる。
また、本仮想環境設定方法は、上で述べた第2の仮想環境で動作する第2処理部が、(E)複数の仮想環境の各々から、適用順序の制約に関する制約情報を取得し、(F)記複数の仮想環境の各々から取得した制約情報に基づき、順序情報を生成し、(G)複数の仮想環境のうち第2の仮想環境以外の仮想環境に対して、生成された順序情報を送信する処理をさらに含んでもよい。このようにすれば、各仮想環境において順序情報を利用できるようになる。
また、上で述べた制約情報は、仮想環境上で動作するアプリケーションについての情報、仮想環境を生成するためのソフトウエアについての情報、仮想環境の役割についての情報、及び仮想環境の親子関係についての情報の少なくともいずれかを含んでもよい。このようにすれば、適切な順序情報を生成できるようになる。
また、本仮想環境設定方法は、上で述べた第2の仮想環境で動作する第2処理部が、(H)複数の仮想環境の各々から、当該仮想環境の現在の設定についての情報を取得し、(I)複数の仮想環境の各々について、当該仮想環境の現在の設定についての情報に基づき、当該仮想環境に適用すべき設定の情報である第2の設定情報を生成し、(J)複数の仮想環境の各々について生成された第2の設定情報を含む設定情報を、複数の仮想環境のうち第2の仮想環境以外の仮想環境に対して送信する処理をさらに含んでもよい。このようにすれば、各仮想環境において設定情報を利用できるようになる。
また、上で述べた第2の設定情報は、設定を適用するためのプログラムをさらに含んでもよい。このようにすれば、各仮想環境において自動的に設定を適用できるようになる。
また、上で述べた第2の設定情報は、ソフトウエア毎に、当該ソフトウエアについての設定の適用が完了した後に仮想環境の再起動を実行するか否かを表す情報をさらに含んでもよい。このようにすれば、設定の適用後における再起動を要する場合にも対処できるようになる。
また、本仮想環境設定方法は、上で述べた第1処理部が、(K)特定のソフトウエアについての設定が完了した後に第1の仮想環境を再起動する場合、第1の仮想環境を再起動することを第2の仮想環境に通知する処理をさらに実行してもよい。このようにすれば、第2の仮想環境の第2処理部は適用の進捗を確認できるようになる。
また、上で述べた第1の仮想環境は、第2の仮想環境上で生成された仮想環境であり、上で述べた第3の仮想環境は、第1の仮想環境上で生成された仮想環境であってもよい。
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の仮想環境を階層的に生成するコンピュータにおいて、
前記複数の仮想環境のうち第1の仮想環境で動作する第1処理部が、
前記複数の仮想環境のうち第2の仮想環境から、適用すべき修正の情報を含む修正情報及び仮想環境の修正順序を示す順序情報を受信し、
前記第1の仮想環境より先に修正が適用されるべき仮想環境である第3の仮想環境を前記順序情報に基づき特定し、前記修正情報及び前記順序情報を前記第3の仮想環境に送信し、
適用が完了したことを前記第3の仮想環境から通知された場合、前記修正情報に基づき、前記第1の仮想環境に修正を適用し、
前記第1の仮想環境への修正の適用が完了した場合、前記第1の仮想環境への修正の適用が完了したことを前記第2の仮想環境に通知する、
処理を実行する修正適用方法。
(付記2)
前記第2の仮想環境で動作する第2処理部が、
前記複数の仮想環境の各々から、適用順序の制約に関する制約情報を取得し、
前記複数の仮想環境の各々から取得した前記制約情報に基づき、前記順序情報を生成し、
前記複数の仮想環境のうち前記第2の仮想環境以外の仮想環境に対して、生成された前記順序情報を送信する、
付記1記載の修正適用方法。
(付記3)
前記制約情報は、
仮想環境上で動作するアプリケーションについての情報、仮想環境を生成するためのソフトウエアについての情報、仮想環境の役割についての情報、及び仮想環境の親子関係についての情報の少なくともいずれかを含む
付記2記載の修正適用方法。
(付記4)
前記第2の仮想環境で動作する第2処理部が、
前記複数の仮想環境の各々から、当該仮想環境上で実行されるソフトウエアについての情報を取得し、
前記複数の仮想環境の各々について、当該仮想環境上で実行されるソフトウエアについての情報に基づき、当該仮想環境に適用すべき修正の情報である第2の修正情報を生成し、
前記複数の仮想環境の各々について生成された前記第2の修正情報を含む前記修正情報を、前記複数の仮想環境のうち前記第2の仮想環境以外の仮想環境に対して送信する、
付記1記載の修正適用方法。
(付記5)
前記第2の修正情報は、修正を適用するためのプログラムをさらに含む
付記4記載の修正適用方法。
(付記6)
前記第2の修正情報は、ソフトウエア毎に、当該ソフトウエアについての修正の適用が完了した後に仮想環境の再起動を実行するか否かを表す情報をさらに含む
付記4記載の修正適用方法。
(付記7)
前記第1処理部は、
特定のソフトウエアについての修正が完了した後に前記第1の仮想環境を再起動する場合、前記第1の仮想環境を再起動することを前記第2の仮想環境に通知する、
処理をさらに実行する付記6記載の修正適用方法。
(付記8)
前記第1の仮想環境は、前記第2の仮想環境上で生成された仮想環境であり、
前記第3の仮想環境は、前記第1の仮想環境上で生成された仮想環境である、
付記1乃至7のいずれか1つ記載の修正適用方法。
(付記9)
複数の仮想環境を階層的に生成する情報処理装置であって、
前記複数の仮想環境のうち第1の仮想環境で動作する第1処理部
を有し、
前記第1処理部が、
第2の仮想環境から、適用すべき修正の情報を含む修正情報及び仮想環境の修正順序を示す順序情報を受信し、
前記第1の仮想環境より先に修正が適用されるべき仮想環境である第3の仮想環境を前記順序情報に基づき特定し、前記修正情報及び前記順序情報を前記第3の仮想環境に送信し、
適用が完了したことを前記第3の仮想環境から通知された場合、前記修正情報に基づき、前記第1の仮想環境に修正を適用し、
前記第1の仮想環境への修正の適用が完了した場合、前記第1の仮想環境への修正の適用が完了したことを前記第2の仮想環境に通知する、
処理を実行することを特徴とする情報処理装置。
(付記10)
複数の仮想環境を階層的に生成する情報処理装置におけるプロセッサに、
前記複数の仮想環境のうち第1の仮想環境から、適用すべき修正の情報を含む修正情報及び仮想環境の修正順序を示す順序情報を受信し、
前記複数の仮想環境のうち先に修正が適用されるべき仮想環境である第2の仮想環境を前記順序情報に基づき特定し、前記修正情報及び前記順序情報を前記第2の仮想環境に送信し、
適用が完了したことを前記第2の仮想環境から通知された場合、前記修正情報に基づき、自仮想環境に修正を適用し、
前記自仮想環境への修正の適用が完了した場合、前記自仮想環境への修正の適用が完了したことを前記1の仮想環境に通知する、
処理を実行させるための修正適用プログラム。