[パッチ適用装置の概要]
まず最初に、図1を用いて、実施例1に係るパッチ適用装置の概要を説明する。図1は、実施例1に係るパッチ適用装置の概要を説明するための図である。
図1に示すように、実施例1に係るパッチ適用装置は、システムに適用する複数のパッチ各々について、依存関係がある他のパッチを識別する。例えば、図1に示すように、「パッチA」〜「パッチE」各々をシステムに適用する場合には、パッチ適用装置は、「パッチA」〜「パッチE」各々について依存関係を識別する。そして、図1の(1)に示す例では、パッチ適用装置は、「パッチA」と「パッチE」とに依存関係があり、「パッチE」を適用した後に「パッチA」を適用するという依存関係を識別する。また、パッチ適用装置は、他のパッチ間では、依存関係がないと識別する。
そして、図1の(2)に示すように、実施例1に係るパッチ適用装置は、識別の結果依存関係があると識別されたパッチ間では、依存関係に基づいた順番にてパッチ各々を適用する。図1の(2−1)に示す例では、パッチ適用装置は、「パッチE」「パッチA」の順番にて、一つずつ適用する。
また、図1の(2)に示すように、実施例1に係るパッチ適用装置は、識別の結果依存関係がないと識別されたパッチ間では、パッチ各々を並行して適用する。図1の(2−2)に示す例では、パッチ適用装置は、「パッチA」「パッチB」「パッチC」「パッチD」の内一部または全てのパッチを並行して適用し、「パッチB」「パッチC」「パッチD」「パッチE」の内一部または全てのパッチを並行して適用する。
すなわち、実施例1に係るパッチ適用装置は、複数のパッチを並行して適用し、その際、相互に依存関係がある「パッチA」と「パッチE」とが並行して適用されないように制御する。
このようなことから、実施例1に係るパッチ適用装置は、パッチを効率的に適用することが可能である。具体的には、パッチ適用装置は、依存関係にないパッチ各々を並行して適用することができ、パッチ適用に要する所要時間を短縮可能である。また、パッチ適用装置は、依存関係を識別することで、システムが停止中となる時間を短縮することが可能である。
[パッチの構造の一例]
次に、図2と図3とを用いて、パッチの構造の一例について説明する。図2と図3とは、実施例1におけるパッチの構造の一例を説明するための図である。図2に示すように、パッチ各々には、「パッチ情報ファイル」と、「前処理スクリプト」と、「置き換えファイル」と、「後処理スクリプト」とが含まれる。
「パッチ情報ファイル」とは、自パッチに関する情報である。図3に示す例では、「パッチ情報ファイル」は、「パッチ情報(パッチIDとも称する)」と「ファイルリスト」と「アーキテクチャリスト」と「プログラムリスト」とを含む。また、「パッチ情報ファイル」は、「依存パッチ情報リスト」と「吸収パッチ情報リスト」と「排他パッチ情報リスト」とを含む。
「パッチ情報」とは、自パッチを他のパッチから識別する識別情報であり、図3に示す例では、「XX」が該当する。なお、パッチ情報「XX」は、パッチ「XX」を識別する情報である。
また、「ファイルリスト」とは、パッチ適用により置き換えられるファイルを識別する識別情報各々のリストであり、図3に示す例では、「/xxxxdir/xxxxxxxx1」〜「/xxxxdir/xxxxxxxxN」が該当する。すなわち、パッチ「XX」が適用されると、ファイル「/xxxxdir/xxxxxxxx1」〜「/xxxxdir/xxxxxxxxN」が置き換えられることを示す。
「アーキテクチャリスト」とは、システムのハードウェアアーキテクチャを識別するアーキテクチャ情報のリストであり、図3に示す例では、アーキテクチャ情報「arch1」や「arch2」を含む。すなわち、図3に示す例では、パッチ「XX」は、アーキテクチャ情報「arch1」や「arch2」によって識別されるハードウェアのアーキテクチャを備えるシステムが適用対象となることを示す。なお、ハードウェアアーキテクチャとは、例えば、演算処理装置としてのCPU(Central Processing Unit)や情報処理装置としてのサーバの種類などが該当する。
「プログラムリスト」とは、パッチが適用されるプログラムを識別するプログラム情報のリストであり、図3に示す例では、プログラム情報「app1」や「app2」や「app3」を含む。すなわち、図3に示す例では、パッチ「XX」は、プログラム情報「app1」や「app2」や「app3」によって識別されるプログラムが適用対象となることを示す。
「依存パッチ情報リスト」とは、他のパッチとの関係を示す関係情報の一つであり、具体的には、自パッチが依存する他のパッチについてのパッチ情報のリストである。「依存する他のパッチ」とは、自パッチを適用する際に前提とするパッチであり、言い換えると、自パッチを適用する際には、適用済みであることを要するパッチである。図3に示す例では、パッチ情報「YY」や「ZZ」が該当し、パッチ「XX」を適用する場合には、パッチ「YY」と「ZZ」とが適用済みであることを要することを示す。
「吸収パッチ情報リスト」とは、他のパッチとの関係を示す関係情報の一つであり、具体的には、自パッチが吸収している他のパッチについてのパッチ情報のリストである。「自パッチが吸収している他のパッチ」とは、自パッチの内容に含まれる他のパッチであり、自パッチを適用することで適用されたことになる他のパッチを示す。図3に示す例では、パッチ情報「AA」や「BB」が該当し、すなわち、パッチ「XX」を適用することによって、パッチ「AA」や「BB」も適用したことになることを示す。
「排他パッチ情報リスト」とは、他のパッチとの関係を示す関係情報の一つであり、具体的には、排他関係にある他のパッチについてのパッチ情報のリストである。「排他関係にある他のパッチ」とは、自パッチを適用する際に、適用されていてはならない他のパッチを示し、言い換えると、排他関係にある他のパッチが適用済みである場合には、自パッチは適用されないことを示す。図3に示す例では、何のデータも含まれておらず(null)、排他関係にある他のパッチがないことを示す。
ここで、図2に戻ると、「置き換えファイル」とは、パッチを適用することで置き換えるファイルを示し、図3に示す例では、「xxxxxxxx1」〜「xxxxxxxxN」が該当する。すなわち、「ファイルリスト」にて示されたファイル各々が、「置き換えファイル」にて示されるファイル各々に置き換えられる事を示す。
「前処理スクリプト」と「後処理スクリプト」とは、パッチを適用する際に実行される処理内容を示すスクリプトであり、「ファイルリスト」にて示されたファイル各々を「置き換えファイル」にて示されるファイル各々に置き換える前後に実行される。例えば、「前処理スクリプト」は、ファイル各々を置き換える前に実行され、「後処理スクリプト」は、ファイル各々を置き換えた後に実行される。
例えば、「前処理スクリプト」と「後処理スクリプト」とでは、環境変数を追加したり変更する処理を実行する。また、例えば、「前処理スクリプト」は、置き換え対象ファイルを保持する処理を実行し、「後処理スクリプト」が、置き換え対象ファイルのユーザ定義にパッチ適用内容を反映する処理を実行する。
このように、パッチに含まれる「置き換えファイル」と「前処理スクリプト」と「後処理スクリプト」とが実行されることで、パッチが適用されることになる。
なお、パッチは、「置き換えファイル」と「前処理スクリプト」と「後処理スクリプト」とのすべてを備えるパッチに限定されるものではない。具体的には、「置き換えファイル」と「前処理スクリプト」と「後処理スクリプト」との内一部のみを備えるパッチであっても良い。例えば、パッチを適用する際に、ファイルの置き換えを実行せず、後処理スクリプトや前処理スクリプトが、ユーザ定義が存在する定義ファイルに新規の環境変数を追加する処理のみを実行しても良い。
[パッチ適用装置の構成]
次に、図4を用いて、パッチ適用装置100の構成を説明する。図4は、実施例1に係るパッチ適用装置の構成の一例を説明するためのブロック図である。図4に示すように、パッチ適用装置100は、記憶部200と、制御部300とを備える。なお、以下では、特に言及しない限り、パッチ適用装置100が、自パッチ適用装置100のシステムにパッチを適用するものとして説明する。
記憶部200は、制御部300と接続され、制御部300による各種パッチ適用処理に用いるデータを記憶する。図4に示すように、記憶部200は、システム情報記憶部201と、適用済みパッチ情報記憶部202と、パッチ記憶部203と、統合パッチ記憶部204と、プログラム記憶部205と、バックアップデータ記憶部206とを備える。
システム情報記憶部201は、後述する情報取得部321と接続され、パッチが適用されるシステムについての情報(システム情報とも称する)を記憶する。具体的には、システム情報記憶部201は、図5に示すように、パッチ適用装置100が備えるプログラムについてのプログラム情報を記憶し、また、パッチ適用装置100が備えるハードウェアのアーキテクチャについてのアーキテクチャ情報を記憶する。図5は、実施例1におけるシステム情報記憶部を説明するための図である。
図5に示す例では、システム情報記憶部201は、プログラム情報「app1」や「app2」や「app3」などを記憶する。すなわち、パッチ適用装置100は、プログラム情報「app1」や「app2」や「app3」によって識別されるプログラムを備えることを示す。また、システム情報記憶部201は、アーキテクチャ情報「arch1」を記憶する。すなわち、パッチ適用装置100は、アーキテクチャ情報「arch1」によって示されるハードウェアのアーキテクチャを備えることを示す。
なお、パッチ適用装置100が備えるプログラムとは、パッチ適用装置100にインストールされたプログラムが該当し、例えば、OS(Operating System)や各種のアプリケーションプログラムなどが該当する。
また、パッチ適用装置100が備えるプログラムは、パッチが適用される対象となり、パッチ適用装置100が、パッチ適用装置100が備えるプログラムに対してパッチを適用する。また、システム情報記憶部201が記憶するプログラム情報やアーキテクチャ情報は、情報取得部321によって用いられる。
適用済みパッチ情報記憶部202は、情報取得部321と後述する統合パッチ適用部313と接続され、パッチ適用装置100が備えるプログラムに適用済みであるパッチについてのパッチ情報を記憶する。
図6に示す例では、適用済みパッチ情報記憶部202は、パッチ情報「AA」や「bb」や「cc」を記憶する。なお、図6は、実施例1における適用済みパッチ情報記憶部を説明するための図である。すなわち、パッチ適用装置100では、パッチ「AA」や「bb」や「cc」が適用済みであることを示す。
また、適用済みパッチ情報記憶部202が記憶する適用済みであるパッチについてのパッチ情報は、統合パッチ適用部313によって格納され、情報取得部321によって用いられる。
パッチ記憶部203は、後述するパッチ関係チェック部322と接続され、図7に示すように、パッチを記憶し、例えば、パッチ情報「AA」や「BB」や「CC」によって識別されるパッチ各々を記憶する。なお、図7は、実施例1におけるパッチ記憶部を説明するための図である。
例えば、図7に示すように、パッチ記憶部203は、「パッチ情報」に対応づけて、「ファイルリスト」と「アーキテクチャリスト」と「プログラムリスト」と「依存パッチ情報リスト」と「吸収パッチ情報リスト」と「排他パッチ情報リスト」とを記憶する。また、パッチ記憶部203は、「パッチ情報」に対応づけて、「前処理スクリプト」と「置き換えファイル」と「後処理スクリプト」とを記憶する。
図7に示す例では、パッチ記憶部203は、パッチ情報「AA」に対応づけて、ファイルリスト「/aaaadir/aaaaaaaa1〜/aaaadir/aaaaaaaaN」を記憶し、アーキテクチャリストにアーキテクチャ情報「arch1」と「arch2」とを記憶する。また、パッチ情報記憶部203は、パッチ情報「AA」に対応づけて、プログラムリストに、プログラム情報「app1」や「app2」「app3」を記憶する。また、パッチ記憶部203は、パッチ情報「AA」に対応づけて、依存パッチ情報リストと吸収パッチ情報リストと排他パッチ情報リストとにパッチ情報を記憶しない。また、パッチ記憶部203は、パッチ情報「AA」に対応づけて、前処理スクリプト「scriptBaaaaaaaa」と置き換えファイル「aaaaaaaa1〜aaaaaaaaN」と後処理スクリプト「scriptAaaaaaaaa」とを記憶する。
また、例えば、パッチ記憶部203は、パッチ適用装置100を管理する管理者によってパッチが格納され、または、パッチ適用装置100が備えるプログラムの配布元から新たなパッチが送信されると、パッチ適用装置100が新たなパッチを受信してパッチ記憶部203に格納する。
また、パッチ記憶部203が記憶するパッチ各々は、パッチ関係チェック部322によって用いられる。
統合パッチ記憶部204は、後述する業務停止再開処理部312と統合パッチ適用部313と統合パッチ作成部323と接続され、複数のパッチを一つに統合したパッチである統合パッチを記憶する。統合パッチ記憶部204が記憶する統合パッチは、統合パッチ作成部323によって格納され、業務停止再開処理部312や統合パッチ適用部313によって用いられ、例えば、統合パッチ適用部313によって削除される。
ここで、図8と図9とを用いて、統合パッチ記憶部204が記憶する統合パッチの構造の一例について説明する。なお、図8と図9とは、実施例1における統合パッチの構造の一例を説明するための図である。図8に示すように、統合パッチは、「統合パッチ情報ファイル」と複数のパッチとを含み、図8に示す例では、N個のパッチを含む。
「統合パッチ情報ファイル」とは、統合パッチに関する情報であり、図9に示す例では、「統合パッチ情報」と、「パッチ情報」と「依存パッチ情報リスト」との対応付けとを含む。「統合パッチ情報」とは、統合パッチを識別する識別情報であり、図9に示す例では、統合パッチ情報「NN」が該当する。
「パッチ情報」と「依存パッチ情報リスト」との対応付けについて説明する。「統合パッチ情報ファイル」に含まれる「パッチ情報」とは、統合パッチに含まれるパッチ各々についてのパッチ情報である。また、パッチ情報に対応づけられた「依存パッチ情報リスト」とは、対応するパッチ情報によって識別されるパッチについての「依存パッチ情報リスト」である。
プログラム記憶部205は、業務停止再開処理部312と統合パッチ適用部313と接続され、パッチ適用装置100が備えるプログラムを記憶する。具体的には、プログラム記憶部205は、システム情報記憶部201によって記憶されているプログラム情報によって識別されるプログラム各々を記憶する。すなわち、プログラム記憶部205は、パッチが適用される対象となるプログラム各々を記憶する。
また、プログラム記憶部205が記憶するプログラムは、業務停止再開処理部312によってバックアップデータが作成され、また、統合パッチ適用部313によって統合パッチが適用される。
バックアップデータ記憶部206は、業務停止再開処理部312と接続され、プログラム記憶部205が記憶するプログラムに関するバックアップデータを記憶する。バックアップデータ記憶部206が記憶するバックアップデータは、パッチが適用されるプログラムについてのバックアップデータであり、例えば、パッチを適用すると置き換えられるファイル各々が該当する。また、バックアップデータ記憶部206が記憶するバックアップデータは、業務停止再開処理部312によって格納される。
また、バックアップデータ記憶部206は、適用済みのパッチを削除する際に用いられるパッチ削除用データを記憶する。なお、パッチ削除用データとは、適用処理が完了したパッチについてのバックアップデータが該当し、業務停止再開処理部312によって格納される。
制御部300は、記憶部200と接続され、各種のパッチ適用処理手順などを規定したプログラムを格納するための内部メモリを有し、種々のパッチ適用処理を実行する。図4に示すように、制御部300は、パッチ適用制御部310と、パッチ変換制御部320とを備える。
パッチ適用制御部310は、記憶部200とパッチ変換制御部320と接続され、要求受付処理部311と、業務停止再開処理部312と、統合パッチ適用部313とを備える。パッチ適用制御部310は、パッチ変換制御部320と協働することで統合パッチを適用する処理を制御し、具体的には、パッチ変換制御部320によって作成された統合パッチを適用する。
パッチ変換制御部320は、記憶部200とパッチ適用制御部310と接続され、情報取得部321と、パッチ関係チェック部322と、統合パッチ作成部323とを備える。パッチ変換制御部320は、パッチ適用制御部310と協働することで統合パッチを適用する処理を制御し、具体的には、パッチ適用制御部310によって適用される統合パッチを作成する。
以下では、まず、図10を用いて、実施例1に係るパッチ適用装置100による全体処理の流れの一例を簡単に説明する。図10を用いての説明では、他の部との接続関係や詳細な説明については省略する。なお、図10は、実施例1に係るパッチ適用装置による全体処理の流れの一例を簡単に説明するためのシーケンス図である。
図10に示すように、パッチ適用装置100では、例えば、管理者によってパッチを適用する指示である適用指示が送られると(ステップS101)、要求受付処理部311が、情報取得部321に統合パッチ作成指示を送る(ステップS102)。なお、統合パッチ作成指示とは、統合パッチを作成する旨の指示である。
そして、情報取得部321は、システム情報等を取得する(ステップS103)。具体的には、情報取得部321は、パッチ適用装置100に関するシステム情報をシステム情報記憶部201から読み出し、また、適用済みパッチ情報記憶部202から、適用済みであるパッチについてのパッチ情報を読み出す。そして、情報取得部321は、取得したシステム情報とパッチ情報とをパッチ関係チェック部322に送る(ステップS104)。
そして、パッチ適用装置100では、パッチ関係チェック部322が、システム運用中にパッチのチェックを行う(ステップS105)。つまり、パッチ関係チェック部322は、パッチ記憶部203に記憶されたパッチ各々について、パッチ適用装置100への適用の要否をシステム運用中にチェックする。また、パッチ関係チェック部322は、システムに適用する複数のパッチ各々について、依存関係がある他のパッチをシステム運用中に識別する。そして、パッチ関係チェック部322は、チェック結果を統合パッチ作成部323に送る(ステップS106)。
そして、パッチ適用装置100では、統合パッチ作成部323が、統合パッチを作成し(ステップS107)、統合パッチの作成が完了した旨の情報である作成完了通知を業務停止再会処理部312に送る(ステップS108)。
そして、パッチ適用装置100では、業務停止再開処理部312が、後述する業務停止処理を行い(ステップS109)、業務停止処理が完了した旨の情報である業務停止処理完了通知を統合パッチ適用部313に送る(ステップS110)。
そして、パッチ適用装置100では、統合パッチ適用部313が、統合パッチ作成部323によって作成された統合パッチを適用する(ステップS111)。つまり、統合パッチ適用部313は、識別の結果依存関係があると識別されたパッチ間では、依存関係に基づいた順番にてパッチ各々をシステム停止中に適用する。また、統合パッチ適用部313は、識別の結果依存関係がないと識別されたパッチ間では、パッチ各々を並行してシステム停止中に適用する。
そして、統合パッチ適用部313は、統合パッチの適用が完了した旨の情報である統合パッチ適用完了通知を業務停止再開処理部312に送る(ステップS112)。その後、業務停止再開処理部312は、業務再開処理を行う(ステップS113)。
図4の説明に戻ると、要求受付処理部311は、情報取得部321と接続され、図11の(1)に示すように、統合パッチを作成する作成指示を情報取得部321に送る。なお、図11は、実施例1に係るパッチ適用装置100の各部を説明するための図である。
ここで、図11は、パッチ適用装置100の各部の処理の関係を概念的に説明するための図であり、図11に示すターゲットシステムとは、パッチを適用する対象となるシステムを示す。また、図11に示すバックアップシステムとは、ターゲットシステムのバックアップを行うシステムであり、バックアップデータを保持するシステムである。
例えば、要求受付処理部311は、管理者からパッチを適用する指示である適用指示を受け付けると、通常のパッチ適用処理が開始されないように制御した上で、情報取得部321に統合パッチ作成指示を送る。なお、要求受付処理部311は、管理者によって設定された所定のタイミングとなると、通常のパッチ適用処理が開始されないように制御した上で、統合パッチ作成指示を送ってもよい。
なお、通常のパッチ適用処理が開始されないように制御するのは、統合パッチを作成して統合パッチを適用する一連の処理と並行して、個々のパッチを適用する処理が行われないようにするためである。
情報取得部321は、システム情報記憶部201と適用済みパッチ情報記憶部202と要求受付処理部311とパッチ関係チェック部322と接続される。情報取得部321は、要求受付処理部311から統合パッチ作成指示を受け付けると、図11の(2)に示すように、システム情報記憶部201からシステム情報を読み出し、適用済みパッチ情報記憶部202からパッチ情報各々を読み出す。
例えば、情報取得部321は、システム情報記憶部201から、プログラム情報「app1」や「app2」や「app3」を読み出し、アーキテクチャ情報「arch1」を読み出す。
また、情報取得部321は、適用済みパッチ情報記憶部202から、適用済みであるパッチについてのパッチ情報を読み出し、例えば、パッチ情報「AA」や「bb」や「cc」を読み出す。
また、情報取得部321は、読み出したシステム情報やパッチ情報をパッチ関係チェック部322に送る。具体的には、情報取得部321は、プログラム情報と、アーキテクチャ情報と、適用済みであるパッチについてのパッチ情報とを送る。
パッチ関係チェック部322は、パッチ記憶部203と情報取得部321と統合パッチ作成部323と接続される。また、パッチ関係チェック部322は、情報取得部321から、プログラム情報と、アーキテクチャ情報と、適用済みであるパッチについてのパッチ情報とを受け付ける。例えば、パッチ関係チェック部322は、プログラム情報「app1」や「app2」や「app3」や、アーキテクチャ情報「arch1」、適用済みであるパッチについてのパッチ情報「AA」や「bb」や「cc」を受け付ける。
また、パッチ関係チェック部322は、パッチ記憶部203に記憶されたパッチすべてを読み出す。例えば、パッチ関係チェック部322は、パッチ記憶部203から、パッチ「AA」や「BB」などを読み出す。
また、図11の(3)に示すように、パッチ関係チェック部322は、パッチ記憶部203に記憶されたパッチ各々について、パッチのチェックを行う。具体的には、パッチ関係チェック部322は、パッチ記憶部203に記憶されたパッチ各々について、適用の要否をチェックし、また、他のパッチとの関係をチェックする。
パッチ記憶部203に記憶されたパッチについて適用の要否をチェックする処理について説明する。パッチ関係チェック部322は、プログラム情報と、アーキテクチャ情報と、適用済みであるパッチについてのパッチ情報と、パッチ記憶部203に記憶されたパッチについての「パッチ情報ファイル」とを用いて、適用の要否をチェックする。
以下では、適用の要否をチェックする手法の一例として、種々の判定処理を行い、判定結果を用いて適用の要否をチェックする手法について説明する。以下では、ハードウェアのアーキテクチャが適用対象となるかの判定と、パッチ適用装置100のプログラムが適用対象となるかの判定と、適用済みではないかの判定と、排他関係にある他のパッチが適用済みではないかの判定とを行う場合について説明する。また、以下では、種々の判定処理について説明し、その後、判定結果を用いて適用の要否をチェックする手法について説明する。
ハードウェアのアーキテクチャが適用対象となるかを判定する点について説明する。パッチ関係チェック部322は、読み出したパッチについての「アーキテクチャリスト」各々について、パッチ適用装置100についてのアーキテクチャ情報が含まれているかを判定する。
パッチ適用装置100についてのアーキテクチャ情報が「arch1」である場合を例に、具体的に説明する。パッチ関係チェック部322は、パッチ記憶部203に記憶されたパッチ各々についてのアーキテクチャリストに、「arch1」が含まれるかを判定する。
例えば、パッチ関係チェック部322は、パッチ「DD」以外のパッチ(例えば、パッチ「XX」や「YY」など)についての「アーキテクチャリスト」に、アーキテクチャ情報「arch1」が含まれると判定する。また、パッチ関係チェック部322は、パッチ「DD」についてのアーキテクチャリストに、アーキテクチャ情報「arch1」が含まれていないと判定する。すなわち、パッチ関係チェック部322は、パッチ「DD」以外のパッチ(例えば、パッチ「XX」や「YY」など)について、パッチ適用装置100のハードウェアのアーキテクチャが適用対象であり、パッチ「DD」について適用対象でないと判定する。
パッチ適用装置100のプログラムが適用対象となるかを判定する点について説明する。パッチ関係チェック部322は、読み出したパッチについての「プログラムリスト」各々について、パッチ適用装置100についてのプログラム情報のいずれかが含まれるかを判定する。
パッチ適用装置100についてのプログラム情報が「app1」や「app2」や「app3」である場合を例に、具体的に説明する。パッチ関係チェック部322は、パッチ記憶部203に記憶されたパッチ各々についてのプログラムリストに、「app1」や「app2」や「app3」が含まれるかを判定する。
例えば、パッチ関係チェック部322は、パッチ「EE」以外のパッチ(例えば、パッチ「XX」や「YY」など)についての「プログラムリスト」に、プログラム情報「app1」や「app2」や「app3」のいずれかが含まれると判定し、「EE」についての「プログラムリスト」に、いずれも含まれていないと判定する。すなわち、パッチ関係チェック部322は、パッチ「EE」以外のパッチ(例えば、パッチ「XX」や「YY」など)について、パッチ適用装置100のプログラムが適用対象であり、パッチ「EE」について適用対象でないと判定する。
適用済みではないかを判定する点について説明する。パッチ関係チェック部322は、適用対象となるパッチについての「パッチ情報」各々について、読み出したパッチについての「パッチ情報」と一致するかを判定する。すなわち、パッチ関係チェック部322は、適用済みであるパッチについてのパッチ情報と一致するかを判定する。
適用済みであるパッチについてのパッチ情報がパッチ情報「AA」である場合を例に、具体的に説明する。パッチ関係チェック部322は、パッチ記憶部203に記憶されたパッチ各々について、パッチ情報「AA」と一致するかを判定する。
例えば、パッチ関係チェック部322は、パッチ「AA」以外のパッチ(例えば、パッチ「XX」や「YY」など)について一致しないと判定し、また、パッチ情報「AA」について一致すると判定する。すなわち、パッチ関係チェック部322は、パッチ「AA」以外のパッチ(例えば、パッチ「XX」や「YY」など)について、適用済みではなく適用対象であり、パッチ「AA」について、適用済みであり適用対象でないと判定する。
排他関係にある他のパッチが適用済みではないかを判定する点について説明する。パッチ関係チェック部322は、パッチ記憶部203に記憶されたパッチ各々についての「排他パッチ情報リスト」に、適用済みであるパッチについてのパッチ情報が含まれているかを判定する。
適用済みであるパッチについてのパッチ情報がパッチ情報「AA」であり、パッチ「CC」についての「排他パッチ情報リスト」に「AA」が含まれる場合を例に、具体的に説明する。また、パッチ「XX」や「YY」についての「排他パッチ情報リスト」にはパッチ情報が含まれないものとして説明する。
パッチ関係チェック部322は、パッチ「CC」以外のパッチ(例えば、パッチ「XX」や「YY」など)についての「排他パッチ情報リスト」に、パッチ情報「AA」が含まれないと判定し、また、パッチ情報「CC」についての「排他パッチ情報リスト」に、適用済みであるパッチについてのパッチ情報「AA」が含まれると判定する。すなわち、パッチ関係チェック部322は、パッチ「CC」以外のパッチ(例えば、パッチ「XX」や「YY」など)について、排他関係にある他のパッチが適用済みではなく、適用対象であると判定する。また、パッチ関係チェック部322は、パッチ「CC」について、排他関係にある他のパッチが適用済みであり、新たな適用対象ではないと判定する。
判定結果を用いて適用の要否をチェックする点について説明する。パッチ関係チェック部322は、ハードウェアのアーキテクチャが適用対象であり、プログラムが適用対象であり、自パッチが適用済みではなく適用対象であり、排他関係にある他のパッチが適用済みではなく適用対象であると判定したパッチすべてを選別する。例えば、パッチ関係チェック部322は、パッチ記憶部203に記憶されたパッチの内、パッチ「BB」「WW」「XX」「YY」「ZZ」を選別する。
なお、ここで、パッチ関係チェック部322は、選別したパッチの内、相互に排他関係のあるパッチがある場合には、いずれか一方のパッチを除外する。
次に、他のパッチとの関係をチェックする処理について説明する。つまり、システムに適用する複数のパッチ各々について、依存関係がある他のパッチをシステム運用中に識別する点について説明する。
パッチ関係チェック部322は、適用するパッチがあるかを判定し、つまり、選別したパッチの有無を判定する。そして、パッチ関係チェック部322は、あると判定すると、選別したパッチ各々について、他の選別したパッチ各々との関係を識別し、具体的には、依存関係と吸収関係とを識別する。
なお、パッチ関係チェック部322は、適用するパッチがあるかを判定し、無いと判定した場合には、統合パッチを作成する処理を終了し、例えば、要求受付処理部311による制御を解除する。つまり、要求受付処理部311は、通常のパッチ適用処理が開始されないよう制御しているため、パッチ関係チェック部322が、当該制御を解除する。
例えば、パッチ関係チェック部322は、パッチ「XX」について、パッチ「YY」と「ZZ」とに依存関係があると識別し、パッチ「XX」よりも前にパッチ「YY」と「ZZ」が実行される適用順番であると判定する。また、例えば、パッチ関係チェック部322は、他のパッチに依存されているパッチの適用順番が早くなるように、適用順番を判定する。例えば、パッチ「YY」と「ZZ」について、パッチ「XX」よりも早い適用順番であると判定する。
また、例えば、パッチ関係チェック部322は、パッチ「XX」について、パッチ「AA」や「BB」を吸収しているパッチであると識別する。そして、パッチ関係チェック部322は、選別したパッチ各々の内、他のパッチに吸収されるパッチを除外し、例えば、パッチ「BB」を選別したパッチから除外する。
また、パッチ関係チェック部322は、チェック結果を統合パッチ作成部323に送り、具体的には、選別したパッチ各々と、選別したパッチ各々について判定した適用順番とを送る。
統合パッチ作成部323は、統合パッチ記憶部204とパッチ関係チェック部322と業務停止再開処理部312と接続される。統合パッチ作成部323は、パッチ関係チェック部322から、選別したパッチ各々と、選別したパッチ各々について判定した適用順番とを受け付ける。そして、統合パッチ作成部323は、図11の(4)に示すように、統合パッチをシステム運用中に作成する。なお、統合パッチは、パッチ関係チェック部322によって依存関係が識別されたパッチ各々が統合されたパッチとなる。そして、統合パッチ作成部323は、統合パッチ記憶部204に統合パッチを格納する。
適用するパッチ各々をまとめた統合パッチを作成する処理について説明する。統合パッチ作成部323は、「統合パッチ情報ファイル」を作成する。具体的には、統合パッチ作成部323は、任意の「統合パッチ情報」を作成し、例えば、統合パッチ情報「NN」を作成する。また、統合パッチ作成部323は、「統合パッチ情報ファイル」に含まれるパッチ情報として、決定した適用順番にて選別したパッチ各々についてのパッチ情報を並べる。また、統合パッチ作成部323は、並べたパッチ各々の内依存関係があるパッチについて、依存関係にあるパッチ各々についてのパッチ情報を「依存パッチ情報リスト」として対応づける。
また、統合パッチ作成部323は、「統合パッチ情報ファイル」と、パッチ関係チェック部322によって選別された複数のパッチとをまとめて統合パッチとし、統合パッチ記憶部204に格納する。すなわち、統合パッチ作成部323は、統合パッチを統合パッチ記憶部204に格納する。
また、統合パッチ作成部323は、作成完了通知を業務停止再会処理部312に送り、例えば、統合パッチ記憶部204に格納した統合パッチについての統合パッチ情報を送る。
業務停止再開処理部312は、統合パッチ記憶部204とプログラム記憶部205とバックアップデータ記憶部206と統合パッチ適用部313と統合パッチ作成部323と接続される。
業務停止再開処理部312は、統合パッチ作成部323から統合パッチ情報を受け付けると、図11の(5)に示すように、パッチを適用することで置き換えられるファイルのバックアップ処理を行う。つまり、業務停止再開処理部312は、パッチを適用することで置き換えられるファイルについてバックアップを行う。
また、業務停止再開処理部312は、バックアップ処理を実行した後に、業務停止処理を行う。また、業務停止再開処理部312は、業務停止処理を行うと、業務停止処理完了通知を統合パッチ適用部313に送る。以下では、まず、バックアップ処理について説明し、その後、業務停止処理について説明する。
業務停止再開処理部312によるバックアップ処理について説明する。業務停止再開処理部312は、統合パッチ記憶部204から、統合パッチに含まれるパッチ各々についての「ファイルリスト」を読み出す。そして、業務停止再開処理部312は、ファイルリストによって識別されるファイル各々についてのバックアップデータを作成し、バックアップデータ記憶部206に格納する。すなわち、業務停止再開処理部312は、統合パッチを適用することによって置き換えられるファイル各々について、バックアップデータを作成する。
図9に示す例では、業務停止再開処理部312は、統合パッチ「NN」に含まれるパッチ「XX」について、ファイルリスト「/xxxxdir/xxxxxxxx1」〜「/xxxxdir/xxxxxxxxN」を読み出す。そして、業務停止再開処理部312は、ファイルリスト「/xxxxdir/xxxxxxxx1」〜「/xxxxdir/xxxxxxxxN」によって識別されるファイル各々についてのバックアップデータを作成し、バックアップデータ記憶部206に格納する。また、業務停止再開処理部312は、統合パッチ「NN」に含まれるパッチ「XX」以外のパッチについて、同様にバックアップデータを作成してバックアップデータ記憶部206に格納する。
なお、業務停止再開処理部312は、適用処理が完了したパッチについてのバックアップデータについて、適用済みのパッチを削除する際に用いられるデータであるパッチ削除用データとしてバックアップデータ記憶部206に格納する。
業務停止再開処理部312による業務停止処理について説明する。業務停止再開処理部312は、統合パッチについてのバックアップデータすべてをバックアップデータ記憶部206に格納すると、プログラム記憶部205によって記憶されたプログラム各々を用いた処理が行われないように制御する。例えば、業務停止再開処理部312は、利用者からの指示を受け付けないように制御する。
また、業務停止再開処理部312は、統合パッチ適用部313から統合パッチが適用された旨を受け付けると、業務再開処理を行い、パッチ適用後に行う処理を実行する。
業務停止再開処理部312による業務再開処理について説明する。業務停止再開処理部312は、プログラム記憶部205によって記憶されたプログラム各々を用いた処理が行われないように制御していた処理を停止し、例えば、利用者からの指示を再び受け付けるように制御する。
業務停止再開処理部312によるパッチ適用後に行う処理について説明する。図11の(7)に示すように、業務停止再開処理部312(「格納部」とも称する)は、システムに適用されたパッチに関する情報を記憶する記憶部に、統合パッチ適用部313によって適用されたパッチ各々に関する情報各々をシステム運用中に格納する。言い換えると、業務停止再開処理部312は、適用処理が完了したパッチ各々についてのパッチ情報を適用済みパッチ情報記憶部202に格納する。すなわち、パッチが適用されたことを示す情報をシステムに反映する。
例えば、統合パッチ「NN」を適用する適用処理が完了した場合には、統合パッチ「NN」に含まれるパッチについてのパッチ情報「XX」や「YY」などを格納する。また、業務停止再開処理部312は、要求受付処理部311による制御を解除する。つまり、要求受付処理部311によって、通常のパッチ適用処理が開始されないような制御が行われているため、業務停止再開処理部312が解除する。
統合パッチ適用部313は、適用済みパッチ情報記憶部202と統合パッチ記憶部204とプログラム記憶部205と業務停止再開処理部312と接続される。統合パッチ適用部313は、業務停止再開処理部312から業務停止処理を行った旨を受け付けると、統合パッチ記憶部204から統合パッチを読み出す。そして、図11の(6)に示すように、統合パッチ適用部313は、プログラム記憶部205に記憶されたプログラム各々に統合パッチを適用する。すなわち、例えば、統合パッチ適用部313は、統合パッチに含まれるパッチ各々について、前処理スクリプトを実行し、ファイルを置き換え、後処理スクリプトを実行する。
統合パッチ適用部313は、パッチ関係チェック部322による識別の結果依存関係があると識別されたパッチ間では、依存関係に基づいた順番にてパッチ各々をシステム停止中に適用する。また、統合パッチ適用部313は、パッチ関係チェック部322による識別の結果依存関係がないと識別されたパッチ間では、パッチ各々を並行してシステム停止中に適用する。
ここで、統合パッチ適用部313による統合パッチ適用処理について説明する。統合パッチ適用部313は、相互に依存関係がないと識別されたパッチ各々を並行して適用する。例えば、統合パッチ適用部313は、統合パッチの「統合パッチ情報ファイル」から、「パッチ情報」と「依存パッチ情報リスト」との対応付け各々を読み出す。そして、統合パッチ適用部313は、依存パッチ情報リストにパッチ情報が含まれないパッチ情報や、依存パッチ情報リストに含まれるパッチすべてが適用されたパッチ情報について、パッチを読み出して適用する。また、パッチを読み出して適用する際には、一つのパッチの適用が終了した後に、次のパッチの適用を開始するのではなく、並行して複数のパッチを適用する。
例えば、統合パッチ適用部313は、統合パッチ情報リストを参照し、依存パッチ情報リストにパッチ情報が含まれていないパッチ「YY」と「ZZ」とを特定し、特定したパッチ「YY」と「ZZ」とを並行して適用する。また、統合パッチ適用部313は、パッチ「YY」の適用処理が終了すると、パッチ「YY」に依存するパッチであるパッチ「WW」の適用処理を開始し、また、パッチ「YY」と「ZZ」との適用処理が終了すると、パッチ「XX」の適用処理を開始する。ここで、パッチ「YY」の適用処理のみが終了し、パッチ「ZZ」の処理が終了していない場合には、パッチ「WW」と「ZZ」とが並行して適用されることになるが、パッチ「WW」と「ZZ」とには依存関係がなく、並行して適用する。同様に、統合パッチ適用部313は、パッチ「WW」と「XX」とを並行して適用してもよい。なお、個々のパッチを適用する適用処理については、図14を用いて説明するため、説明を省略する。
また、統合パッチ適用部313は、統合パッチを適用すると、統合パッチ適用完了通知業務停止再開処理部312に送る。
また、パッチを適用する際にシステムが停止されるのは、図11の(6)に示す処理のみとなり、具体的には、前処理スクリプトの実行中や、ファイルの置き換え処理、後処理スクリプトの実行中のみとなる。すなわち、他の処理を実行している間には業務がシステム運用中となる。
また、パッチ適用装置100は、既知のサーバ、パーソナルコンピュータ、ワークステーション、携帯電話、PHS端末、移動体通信端末またはPDAなどの情報処理装置に、パッチ適用制御部310とパッチ変換制御部320と記憶部200との各機能を搭載することによって実現することもできる。
[パッチ適用装置による処理]
次に、図12〜14を用いて、パッチ適用装置100による処理を説明する。以下では、実施例1に係るパッチ適用装置100による全体処理の流れの一例について説明し、実施例1におけるパッチ変換制御部320による処理の流れの一例について説明する。そして、実施例1に係るパッチ適用装置100による統合パッチに含まれる個々のパッチ適用処理の流れの一例について説明する。
[パッチ適用装置による全体処理]
図12を用いて、実施例1に係るパッチ適用装置100による全体処理の流れの一例について説明する。図12は、実施例1に係るパッチ適用装置による全体処理の流れの一例を説明するためのフローチャートである。なお、図12を用いて、実施例1に係るパッチ適用装置100による全体処理の流れの一例について説明する際には、統合パッチを作成する処理については簡単に説明する。
図12に示すように、パッチ適用装置100では、要求受付処理部311は、適用指示を受け付けると(ステップS201肯定)、通常のパッチ適用コマンドが起動されないようにパッチ適用装置100をロックする(ステップS202)。つまり、要求受付処理部311は、通常のパッチ適用処理が開始されないように制御する。
その後、パッチ適用装置100では、パッチ変換制御部320が、統合パッチを作成し(ステップS203)、例えば、統合パッチ「NN」を作成して統合パッチ記憶部204に格納する。そして、業務停止再開処理部312は、統合パッチが作成された後に、バックアップ処理を行い(ステップS204)、つまり、業務停止再開処理部312は、置き換え対象となるファイルについてのバックアップデータを作成してバックアップデータ記憶部206に格納する。続いて、業務停止再開処理部312は、業務停止処理を行い(ステップS205)、例えば、プログラム記憶部205によって記憶されたプログラム各々を用いた処理が行われないように制御する。
そして、パッチ適用装置100では、統合パッチ適用部313が、統合パッチを適用する(ステップS206)。つまり、統合パッチ適用部313は、依存関係があると識別されたパッチ間では、依存関係に基づいた順番にてパッチ各々をシステム停止中に適用し、依存関係がないと識別されたパッチ間では、パッチ各々を並行してシステム停止中に適用する。
その後、統合パッチの適用が完了すると、業務停止再開処理部312は、業務再開処理を行い(ステップS207)、つまり、プログラム記憶部205によって記憶されたプログラム各々を用いた処理が行われないように制御していた処理を停止する。
そして、パッチ適用装置100では、業務停止再開処理部312が、適用済みパッチ情報記憶部202にパッチ情報を格納する(ステップS208)。例えば、業務停止再開処理部312は、統合パッチ「NN」を適用する適用処理が完了した場合には、統合パッチ「NN」に含まれるパッチについてのパッチ情報「XX」や「YY」などを格納する。そして、業務停止再開処理部312は、要求受付処理部311によるロックを解除し(ステップS209)、つまり、要求受付処理部311によって、通常のパッチ適用処理が開始されないような制御が行われているため、業務停止再開処理部312が解除する。
なお、図12に示した各処理の内、ステップS205にて行われた業務停止処理からステップS207にて行われた業務再開処理との間の処理が行われる際にのみ、パッチ適用装置100の状態が、プログラム記憶部205によって記憶されたプログラム各々を用いた処理が行われない状態となる。また、図12に示した各処理の内、ステップS201〜ステップS204、ステップS208〜ステップS209の各処理が行われる際には、パッチ適用装置100の状態が、プログラム記憶部205によって記憶されたプログラム各々を用いた処理が行うことが可能な状態となる。
[パッチ変換制御部による処理]
図13を用いて、実施例1におけるパッチ変換制御部320による処理の流れの一例について説明する。図13は、実施例1におけるパッチ変換制御部による処理の流れの一例を説明するためのフローチャートである。図12に示すステップS203に対応する。
図13に示すように、パッチ変換制御部320では、システム情報取得部321は、統合パッチ作成指示を受け付けると(ステップS301肯定)、システム情報を取得し(ステップS302)、適用済みであるパッチについてのパッチ情報を取得する(ステップS303)。つまり、例えば、情報取得部321は、システム情報記憶部201から、プログラム情報「app1」や「app2」や「app3」を読み出し、アーキテクチャ情報「arch1」を読み出す。また、例えば、情報取得部321は、適用済みパッチ情報記憶部202から、適用済みであるパッチについてのパッチ情報を読み出し、例えば、パッチ情報「AA」や「bb」や「cc」を読み出す。
そして、パッチ変換制御部320では、パッチ関係チェック部322が、パッチ記憶部203に記憶されたパッチすべてを取得し(ステップS304)、例えば、パッチ記憶部203から、パッチ「AA」や「BB」などを取得する。
そして、パッチ変換制御部320では、パッチ関係チェック部322が、適用の要否をチェックする(ステップS305)。具体的には、パッチ関係チェック部322は、プログラム情報と、アーキテクチャ情報と、適用済みであるパッチについてのパッチ情報と、パッチ記憶部203に記憶されたパッチについての「パッチ情報ファイル」とを用いて、適用の要否をチェックする。そして、パッチを選別し、例えば、パッチ「BB」や「XX」や「YY」などを選別する。
そして、パッチ変換制御部320では、パッチ関係チェック部322は、適用するパッチがあるかを判定し(ステップS306)、つまり、選別したパッチの有無を判定する。ここで、パッチ関係チェック部322は、適用するパッチがないと判定すると(ステップS306否定)、処理を終了する。一方、パッチ関係チェック部322は、適用するパッチがあると判定すると(ステップS306肯定)、他のパッチとの関係をチェックする(ステップS307)。例えば、パッチ関係チェック部322は、パッチ「XX」について、パッチ「YY」や「ZZ」と依存関係があると識別し、また、パッチ「XX」について、パッチ「AA」や「BB」を吸収しているパッチであると識別する。
そして、統合パッチ作成部323は、適用順番を決定する(ステップS308)。例えば、統合パッチ作成部323は、他のパッチと依存関係があると識別されたパッチ各々について、適用順番を決定し、また、他のパッチに依存されているパッチの適用順番が早くなるように、適用順番を決定する。そして、統合パッチ作成部323は、適用するパッチ各々をまとめて統合パッチを作成する(ステップS309)。具体的には、統合パッチ作成部323は、「統合パッチ情報ファイル」を作成し、パッチ関係チェック部322によって選別された複数のパッチと「統合パッチ情報ファイル」とをまとめて統合パッチとして、統合パッチ記憶部204に格納する。
[個々のパッチ適用処理]
図14を用いて、実施例1に係るパッチ適用装置100による統合パッチに含まれる個々のパッチ適用処理の流れの一例について説明する。図14は、実施例1に係るパッチ適用装置による統合パッチに含まれる個々のパッチ適用処理の流れの一例を説明するためのフローチャートである。なお、具体例を用いて説明する場合には、パッチ「XX」を適用する場合を例に用いて説明する。
図14に示すように、統合パッチ適用部313は、前処理スクリプトを実行し(ステップS401)、例えば、「scriptBxxxxxxxx」を実行する。なお、パッチに前処理スクリプトが含まれていない場合には、統合パッチ適用部313は、前処理スクリプトを実行する処理を行わない。
そして、統合パッチ適用部313は、ファイルを置き換え(ステップS402)、例えば、「/xxxxdir/xxxxxxxx1」〜「/xxxxdir/xxxxxxxxN」によって識別されるファイル各々について、「xxxxxxxx1」〜「xxxxxxxxN」へと置き換える。なお、パッチに置き換えファイルが含まれていない場合には、統合パッチ適用部313は、ファイルの置き換えを実行する処理を行わない。
そして、統合パッチ適用部313は、後処理スクリプトを実行し(ステップS403)、例えば、「scriptAxxxxxxxx」を実行する。なお、パッチに後処理スクリプトが含まれていない場合には、統合パッチ適用部313は、後処理スクリプトを実行する処理を行わない。
[実施例1の効果]
上記したように、実施例1によれば、パッチ適用装置100は、システムに適用する複数のパッチ各々について、依存関係がある他のパッチを識別する。そして、パッチ適用装置100は、識別の結果依存関係があると識別されたパッチ間では、依存関係に基づいた順番にてパッチ各々を適用し、識別の結果依存関係がないと識別されたパッチ間では、パッチ各々を並行して適用する。この結果、パッチを効率的に適用することが可能である。
具体的には、パッチ適用装置100によれば、依存関係にないパッチ各々を並行して適用することができ、パッチ適用に要する所要時間を短縮可能である。また、依存関係を識別する処理を行うことで、行われる処理内容を減らすことができ、システムが停止する時間を短縮可能である。
また、実施例1によれば、パッチ適用装置100は、システムに適用されたパッチに関する情報を記憶する適用済みパッチ情報記憶部202に、適用されたパッチ各々に関する情報各々を格納するので、システムが停止する時間を短縮可能である。
すなわち、図15の(1)に示すように、パッチ各々を個々に適用した際に要する場合には、各パッチを適用する適用時間各々を合計した時間を要するのに対して、図15の(2)に示す用に、パッチ各々を並行して適用することで、パッチ各々を適用するのに要する時間を短縮することが可能である。なお、図15は、実施例1に係るパッチ適用装置による効果を説明するための図である。
また、従来の手法では、個々のパッチ各々について、図16に示す処理各々を別個に行っていた。すなわち、図16に示すように、従来の手法では、他のパッチを適用する処理が開始されないようにロックした後に、他のパッチとの関係をチェックし、パッチ適用の要否をチェックする。そして、従来の手法では、パッチが適用対象である場合には、バックアップ処理を行い、パッチを適用する処理を実行し、その後、適用したパッチについての情報をシステムに反映し、他のパッチを適用する処理が開始されないためのロックを解除していた。ここで、図17に示すように、従来の手法では、図16に示す処理各々を実行する間、システムを停止していた。なお、図16は、従来のパッチ適用処理を説明するためのフローチャートである。図17は、従来のパッチ適用処理を説明するための図である。
これに対して、実施例1によれば、パッチ適用装置100は、他のパッチとの関係をチェックし、パッチ適用の要否をチェックする処理について、システム運用中に実行する。また、パッチ適用装置100は、適用したパッチについての情報を適用済みパッチ情報記憶部202に格納する処理について、システム運用中に実行する。この結果、パッチ適用装置100では、システム停止中に行われるのは、前処理スクリプトや後処理スクリプトの実行や、ファイルの置き換えのみとなり、システムが停止する時間を短縮することが可能である。