JP6213053B2 - プログラム、情報処理装置およびスケジュール決定方法 - Google Patents

プログラム、情報処理装置およびスケジュール決定方法 Download PDF

Info

Publication number
JP6213053B2
JP6213053B2 JP2013173526A JP2013173526A JP6213053B2 JP 6213053 B2 JP6213053 B2 JP 6213053B2 JP 2013173526 A JP2013173526 A JP 2013173526A JP 2013173526 A JP2013173526 A JP 2013173526A JP 6213053 B2 JP6213053 B2 JP 6213053B2
Authority
JP
Japan
Prior art keywords
virtual machine
patch
application
load
information processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013173526A
Other languages
English (en)
Other versions
JP2014067402A (ja
Inventor
功大 入口
功大 入口
英雄 清水
英雄 清水
憲彦 坂本
憲彦 坂本
▲尚▼樹 秋山
▲尚▼樹 秋山
祐輔 次田
祐輔 次田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013173526A priority Critical patent/JP6213053B2/ja
Priority to US14/016,676 priority patent/US9477460B2/en
Publication of JP2014067402A publication Critical patent/JP2014067402A/ja
Application granted granted Critical
Publication of JP6213053B2 publication Critical patent/JP6213053B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Description

本発明はプログラム、情報処理装置およびスケジュール決定方法に関する。
情報処理の分野では、物理的なコンピュータ(物理マシンや物理ホストと呼ぶことがある)上で、複数の仮想的なコンピュータ(仮想マシンや論理ホストと呼ぶことがある)を動作させる仮想化技術が利用されている。各仮想マシン上では、OS(Operating System)などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。例えば、ハイパーバイザと呼ばれるソフトウェアが、CPU(Central Processing Unit)の処理能力やRAM(Random Access Memory)の記憶領域を、演算のリソースとして複数の仮想マシンに割り振ることがある。
ソフトウェアに対して更新プログラム(パッチと呼ばれることもある)が提供されることがある。例えば、更新プログラムは、セキュリティの問題を解消するためのプログラムや機能を追加するためのプログラムなどを含む。
例えば、パッチの適用対象マシンに対するパッチ適用を管理するシステムの提案がある。この提案では、適用パッチが緊急に適用すべきものであった場合には、すぐに当該パッチを適用するように適用時期を決定する。パッチが緊急に適用しなくてよく、かつ、適用対象マシンの負荷状況が高い場合は、所定時間後に当該パッチを適用するように適用時期を決定する。
特表2009−538469号公報 特開2010−250749号公報
物理マシン上の複数の仮想マシンに対して複数の更新プログラムを適用することがある。その場合、複数の仮想マシンに対する更新プログラムの適用を並列に行うことで、適用を迅速に完了させることが考えられる。例えば、通常業務などへの影響の小さい所定の時間帯の中で更新プログラムの適用を完了させたいということがあるからである。
一方、更新プログラムを適用するために物理マシンのリソースを利用することになる。更新プログラムを複数の仮想マシンに並列に適用すると物理マシンの負荷が増大し得る。すると、更新プログラムの適用以外の他の処理(例えば、更新プログラムの適用対象でない仮想マシン上の処理)に利用可能なリソースが低減する。このため、他の処理に遅延などの悪影響を及ぼすおそれがある。そこで、他の処理への影響を考慮して、複数の更新プログラムを適用するためのスケジュールをどのように効率的に決定するかが問題となる。
一側面によれば、本発明は、更新プログラムの適用順序を効率的に決定できるプログラム、情報処理装置およびスケジュール決定方法を提供することを目的とする。
一実施態様によれば、第1の仮想マシンおよび第2の仮想マシンが動作可能な情報処理装置と通信するコンピュータによって実行されるプログラムが提供される。このプログラムは、コンピュータに、更新プログラムを第1の仮想マシンに適用するときの情報処理装置の負荷を示す第1の情報と更新プログラムを第2の仮想マシンに適用するときの情報処理装置の負荷を示す第2の情報とを、複数の更新プログラムそれぞれに対して取得し、第1の情報と第2の情報と情報処理装置で許容される負荷の上限とに基づいて、所定期間内に複数の更新プログラムを第1の仮想マシンに適用するときの第1の適用順序と、所定期間内に複数の更新プログラムを第2の仮想マシンに適用するときの第2の適用順序であって、第1の適用順序とは異なる第2の適用順序とを決定する、処理を実行させる。
また、一実施態様によれば、第1の仮想マシンおよび第2の仮想マシンが動作可能な他の情報処理装置と通信する情報処理装置が提供される。この情報処理装置は、記憶部と演算部とを有する。記憶部は、更新プログラムを第1の仮想マシンに適用するときの他の情報処理装置の負荷を示す第1の情報と更新プログラムを第2の仮想マシンに適用するときの他の情報処理装置の負荷を示す第2の情報とを、複数の更新プログラムそれぞれに対して記憶する。演算部は、記憶部から第1の情報と第2の情報とを取得し、第1の情報と第2の情報と他の情報処理装置で許容される負荷の上限とに基づいて、所定期間内に複数の更新プログラムを第1の仮想マシンに適用するときの第1の適用順序と、所定期間内に複数の更新プログラムを第2の仮想マシンに適用するときの第2の適用順序であって、第1の適用順序とは異なる第2の適用順序とを決定する。
また、一実施態様によれば、第1の仮想マシンおよび第2の仮想マシンが動作可能な情報処理装置と通信するコンピュータで実行されるスケジュール決定方法が提供される。このスケジュール決定方法では、コンピュータが、更新プログラムを第1の仮想マシンに適用するときの情報処理装置の負荷を示す第1の情報と更新プログラムを第2の仮想マシンに適用するときの情報処理装置の負荷を示す第2の情報とを、複数の更新プログラムそれぞれに対して取得し、第1の情報と第2の情報と情報処理装置で許容される負荷の上限とに基づいて、所定期間内に複数の更新プログラムを第1の仮想マシンに適用するときの第1の適用順序と、所定期間内に複数の更新プログラムを第2の仮想マシンに適用するときの第2の適用順序であって、第1の適用順序とは異なる第2の適用順序とを決定する。
一実施態様によれば、更新プログラムの適用順序を効率的に決定できる。
第1の実施の形態の情報処理システムを示す図である。 第2の実施の形態の情報処理システムを示す図である。 第2の実施の形態の管理サーバのハードウェア例を示す図である。 第2の実施の形態のソフトウェア例を示す図である。 第2の実施の形態の仮想マシン管理テーブルの例を示す図である。 第2の実施の形態のパッチ管理テーブルの例を示す図である。 第2の実施の形態のスケジュールテーブルの例(その1)を示す図である。 第2の実施の形態のスケジュールテーブルの例(その2)を示す図である。 第2の実施の形態の処理を示すフローチャートである。 第2の実施の形態の検証処理を示すフローチャートである。 第2の実施の形態のスケジューリングを示すフローチャートである。 第2の実施の形態のパッチ適用順序の設定を示すフローチャートである。 第2の実施の形態のパッチ適用順序の設定例を示す図である。 第2の実施の形態のパッチ適用順序の調整を示すフローチャートである。 第2の実施の形態のスケジュールの組み替え例を示す図である。 第2の実施の形態のスケジュールの組み替え例(続き)を示す図である。 第2の実施の形態のパッチグループの調整を示すフローチャートである。 第2の実施の形態のパッチグループの調整例を示す図である。 第2の実施の形態のパッチグループの調整例(続き)を示す図である。 第2の実施の形態の確定されたスケジュールの例を示す図である。 第2の実施の形態のスケジュールの補正例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、情報処理装置1,2を含む。情報処理装置1は、情報処理装置2で動作する複数の仮想マシンに対する更新プログラムの適用状況を管理する。情報処理装置2は、複数の仮想マシンが動作可能である。当該複数の仮想マシンは仮想マシン2a,2bを含む。例えば、情報処理装置2で実行されるハイパーバイザが、情報処理装置2が有するCPUやメモリなどのリソースを仮想マシン2a,2bに割当てる。仮想マシン2a,2bは、割当てられたリソースを演算のリソースとして利用可能である。
情報処理装置1は、記憶部1aおよび演算部1bを有する。記憶部1aは、例えばRAMなどのメモリである。演算部1bは、例えばCPUなどのプロセッサである。例えば、第1の実施の形態の情報処理は、演算部1bが記憶部1aに記憶されたプログラムを実行することで実現できる。
記憶部1aは、複数の更新プログラムそれぞれを仮想マシン2a,2bそれぞれに適用するときの情報処理装置2の負荷を示す負荷情報を記憶する。記憶部1aは、複数の更新プログラムそれぞれを仮想マシン2a,2bに適用するための所要時間を示す情報を記憶してもよい。
例えば、情報処理装置1と通信可能な検証用の情報処理装置を設ける。そして、検証用の情報処理装置上で検証用の仮想マシンを動作させる。例えば、情報処理装置1は、検証用の仮想マシンに対して各更新プログラムを個別に適用させることで、各更新プログラムを適用するときの検証用の情報処理装置の負荷を示す情報や各更新プログラムの適用のための所要時間を事前に取得しておくことができる。例えば、検証用の情報処理装置に情報処理装置2と同等のリソースを設けておき、検証用の仮想マシンに仮想マシン2a,2bと同等のリソースを割当可能としておく。そうすれば、検証用の情報処理装置を用いて取得した負荷や所要時間の情報を、情報処理装置2で仮想マシン2a,2bそれぞれに同じパッチを適用したときの情報として扱える。
演算部1bは、複数の更新プログラムそれぞれを適用するときの情報処理装置2の負荷を示す負荷情報を記憶部1aから取得し、複数の更新プログラムそれぞれについて、仮想マシン2aあるいは仮想マシン2bに適用するときの情報処理装置2の負荷を算定する。例えば、演算部1bは、記憶部1aに記憶された情報を参照して、複数の更新プログラムの少なくとも何れかを仮想マシン2a,2bに同じタイミングで並列に適用するときの情報処理装置2の負荷を評価する。演算部1bは、評価された負荷と情報処理装置2で許容される負荷の上限との比較結果に基づいて、複数の更新プログラムを複数の仮想マシンに適用するためのスケジュール(適用順序)を決定する。ここで、仮想マシン2a,2bに対して更新プログラムの適用を開始できる時間は、予め定められている。例えば、仮想マシン2a,2bの負荷が比較的低い時間帯を、更新プログラムを適用するための時間帯として利用することが考えられる。また、情報処理装置2で許容される負荷の上限とは、情報処理装置2において更新プログラムの適用のために許容される負荷の上限を意味する。
例えば、複数の更新プログラムは更新プログラムa,b,c,d,e,fを含む。更新プログラムa,b,c,d,e,fの適用順序は、デフォルトではこの順番である。更新プログラムのデフォルトの適用順序は、提供された日時や更新プログラムごとの所定の優先度などに応じて決めることができる。例えば、提供された日時が早いものから先に適用するような順序でもよい。また、例えば、重要度の高いものほど優先度を高く設定し、優先度の高いものから先に適用するような順序でもよい。また、例えば、適用するときの負荷が大きくなるものほど優先度を高く設定し、優先度の高いものから先に適用するような順序でもよい。
例えば、更新プログラムa,b,c,d,e,fの適用順序を決定するとき、演算部1bは次のような手順を実行する。演算部1bは、記憶部1aに記憶された情報に基づいて、時間に応じた仮想マシン2a,2bの負荷の遷移を得る(ステップS1)。
棒グラフ3は、更新プログラムa,b,c,d,e,fをこの順序で仮想マシン2aに適用する場合の情報処理装置2の負荷の遷移を示す。棒グラフ4は、同じ順序で仮想マシン2bに適用する場合の情報処理装置2の負荷の遷移を示す。棒グラフ3,4の横軸は時間、縦軸は負荷である。バー(Bar)3a,4aは更新プログラムaを適用するときの情報処理装置2の負荷を示す。負荷は、適用開始から完了までの所要時間で平均化されたものである(以下、同様)。あるいは、適用中に検出された負荷のうちで最高のものを当該パッチ適用時の負荷として採用してもよい。バー3b,4bは更新プログラムbを適用するときの負荷を示す。バー3c,4cは更新プログラムcを適用するときの負荷を示す。バー3d,4dは更新プログラムdを適用するときの負荷を示す。バー3e,4eは更新プログラムeを適用するときの負荷を示す。バー3f,4fは更新プログラムfを適用するときの負荷を示す。
演算部1bは、棒グラフ3で示される負荷と棒グラフ4で示される負荷とを積算する(ステップS2)。これは、仮想マシン2a,2bに対して同じタイミングで並列に何れかの更新プログラムを適用したときの情報処理装置2の負荷を評価することに相当する。
演算部1bは、情報処理装置2で許容される負荷の上限L0と、評価された負荷との比較結果に基づいて、仮想マシン2a,2bに対する更新プログラムa,b,c,d,e,fの適用順序を変更する(ステップS3)。例えば、負荷の上限L0は、情報処理装置2において業務処理などを実行するためのリソースが確保されるように決定することが考えられる。例えば、演算部1bは仮想マシン2aに対する更新プログラムの適用順序を基準にして、仮想マシン2bに対する更新プログラムの適用順序を変更する。より具体的には、更新プログラムの適用に伴う仮想マシン2a,2bの各タイミングの負荷が、負荷の上限L0よりも大きくならないように、更新プログラムa,b,c,d,e,fの適用順序を組み替える。
その結果、演算部1bは仮想マシン2aに対する適用順序として更新プログラムa,b,c,d,e,fを得る。演算部1bは仮想マシン2bに対する適用順序として更新プログラムe,f,c,a,d,bを得る(ステップS4)。棒グラフ5は、仮想マシン2bに対して更新プログラムe,f,c,a,d,bの順序で適用したときの情報処理装置2の負荷の遷移を示す。
情報処理装置1によれば、演算部1bにより、更新プログラムa,b,c,d,e,fそれぞれを仮想マシン2a,2bそれぞれに適用するときの情報処理装置2の負荷を示す負荷情報が取得される。演算部1bにより、負荷情報と情報処理装置2で許容される負荷の上限L0とに基づいて、所定期間内に更新プログラムa,b,c,d,e,fを仮想マシンに適用するときの適用順序が、仮想マシン2a,2bそれぞれについて決定される。
これにより、更新プログラムの適用順序を効率的に決定できる。具体的には次の通りである。例えば、更新プログラムa,b,c,d,e,fの中には、適用時の情報処理装置2の負荷が比較的高くなるもの(例えば、棒グラフ3,4によれば更新プログラムbの適用処理は負荷が最大である)もある。適用時の負荷が高くなる更新プログラム同士を同じタイミングで並列に仮想マシン2a,2bに適用すると、情報処理装置2の負荷が増大し得る。すると、情報処理装置2で実行される他の処理(例えば、仮想マシン2a,2bや仮想マシン2a,2b以外の他の仮想マシンの業務処理)で利用できるリソースが低減し、当該他の処理に遅延などの悪影響を及ぼすおそれがある。
そこで、各更新プログラム適用時の情報処理装置2の負荷を示す情報に基づいて、更新プログラムの組を仮想マシン2a,2bに並列に適用する時の情報処理装置2の負荷を事前に評価する。評価された負荷と情報処理装置2で更新プログラムの適用のために許容される負荷の上限との比較結果に基づいて適用順序を決定する。
例えば、評価された負荷が上限以下である場合は、対応する更新プログラムの組の並列適用を許容する。より具体的には、仮想マシン2a,2bに対して更新プログラムa,eの組を並列に適用しても、情報処理装置2の負荷は上限L0以下である(バー3a,4eを積み上げても負荷は上限L0以下である)。よって、仮想マシン2a,2bに対して更新プログラムa,eの組を並列に適用することは許容される。また、評価された負荷が上限を超える場合は、対応する更新プログラムの組の並列適用を許容しない。より具体的には、仮想マシン2a,2bに対して更新プログラムa,aの組を並列に適用すると、情報処理装置2の負荷は上限L0より大きくなる(バー3a,4aを積み上げると負荷は上限L0を超える)。よって、仮想マシン2a,2bに対して更新プログラムa,aの組を並列に適用することは許容されない。このようにして、情報処理装置2で所定のリソースを確保するように、更新プログラムの適用順序を効率的に決定することができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、管理サーバ100、実行サーバ200、検証サーバ300および配信サーバ400を有する。第2の実施の形態の情報処理システムは、例えば、実行サーバ200で実行される仮想マシンを、ユーザにより利用可能とするシステムである。
管理サーバ100、実行サーバ200および検証サーバ300は、ネットワーク10を介して接続されている。配信サーバ400は、ネットワーク20に接続されている。ネットワーク10,20はネットワーク間の通信を中継する中継装置(図示を省略)を介して接続されている。例えば、ネットワーク10はLAN(Local Area Network)である。例えば、ネットワーク20はインターネットやWAN(Wide Area Network)などの広域ネットワークである。
管理サーバ100は、実行サーバ200で実行される仮想マシン上のOSやアプリケーションのソフトウェアに対して提供される更新プログラム(以下、パッチと称することがある)の適用を管理するサーバコンピュータである。
実行サーバ200は、複数の仮想マシンが動作可能なサーバコンピュータである。ネットワーク10(または、ネットワーク20)に接続されたクライアントコンピュータ(図示を省略)から仮想マシンにアクセス可能である。仮想マシンは、クライアントコンピュータからのリクエストに応じて、ユーザの業務に応じた処理を実行する。
検証サーバ300は、実行サーバ200上の各仮想マシンにパッチを適用する前に、当該パッチに関する情報を取得するためのサーバコンピュータである。検証サーバ300でも、仮想マシンを動作させる。検証サーバ300は、管理サーバ100の指示に基づいて、当該仮想マシンにパッチを適用する。検証サーバ300は、パッチ適用時の負荷やパッチ適用の所要時間などの情報を取得する。
図3は、第2の実施の形態の管理サーバのハードウェア例を示す図である。管理サーバ100は、プロセッサ101、RAM102、HDD(Hard Disk Drive)103、通信部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および機器接続部108を有する。各ユニットが管理サーバ100のバスに接続されている。実行サーバ200、検証サーバ300および配信サーバ400も管理サーバ100と同様のユニットを用いて実現できる。
プロセッサ101は、管理サーバ100の情報処理を制御する。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)またはPLD(Programmable Logic Device)などである。プロセッサ101は、CPU、MPU、DSP、ASIC、FPGA、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM102は、管理サーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101の処理に用いられる各種データを記憶する。
HDD103は、管理サーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。管理サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
通信部104は、ネットワーク10を介して他のコンピュータと通信を行えるインタフェースである。通信部104は、有線インタフェースでもよいし、無線インタフェースでもよい。
画像信号処理部105は、プロセッサ101からの命令に従って、管理サーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部106は、管理サーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ107は、レーザ光などを利用して、光ディスク13に記録されたプログラムやデータを読み取る駆動装置である。光ディスク13として、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などを使用できる。ディスクドライブ107は、例えば、プロセッサ101からの命令に従って、光ディスク13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
機器接続部108は、管理サーバ100に周辺機器を接続するための通信インタフェースである。例えば、機器接続部108にはメモリ装置14やリーダライタ装置15を接続できる。メモリ装置14は、機器接続部108との通信機能を搭載した記録媒体である。リーダライタ装置15は、メモリカード16へのデータの書き込み、またはメモリカード16からのデータの読み出しを行う装置である。メモリカード16は、カード型の記録媒体である。機器接続部108は、例えば、プロセッサ101からの命令に従って、メモリ装置14またはメモリカード16から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
図4は、第2の実施の形態のソフトウェア例を示す図である。図4に示す各ユニットの一部または全部は、管理サーバ100、実行サーバ200および検証サーバ300が備えるプロセッサが実行するプログラムのモジュールであってもよい。また、図4に示す各ユニットの一部または全部は、管理サーバ100、実行サーバ200および検証サーバ300が備えるFPGAやASICなどの電子回路であってもよい。
管理サーバ100は記憶部110、パッチ収集部120および制御部130を有する。
記憶部110は、パッチ収集部120により収集されたパッチを記憶する。記憶部110は、パッチに関する情報(パッチ適用時における実行サーバ200の負荷やパッチ適用の所要時間など)を記憶する。記憶部110は、仮想マシンに対するパッチ適用のスケジュールを示す情報を記憶する。記憶部110は、パッチ適用対象の仮想マシンごとにスケジュールを示す情報を記憶する。記憶部110は、RAM102やHDD103の記憶領域を用いて実装できる。記憶部110は、第1の実施の形態の記憶部1aの一例である。
パッチ収集部120は、配信サーバ400により配信されるパッチを収集する。例えば、パッチ収集部120は、配信サーバ400が新たなパッチの配信を開始すると、当該新たなパッチを収集して記憶部110に格納する。パッチ収集部120は、配信サーバ400を含む複数の配信サーバからパッチを収集してもよい。
制御部130は、記憶部110に記憶された各パッチの仮想マシンへの適用を検証サーバ300に事前に実行させ、パッチに関する情報を取得させる。制御部130は検証サーバ300からパッチに関する情報を取得し、記憶部110に格納する。制御部130は、記憶部110に記憶されたパッチに関する情報に基づいて、実行サーバ200上の仮想マシンに対するパッチ適用のスケジュールを示す情報を生成する。制御部130は、当該スケジュールに基づいて、記憶部110に記憶された各パッチを、各仮想マシンに適用するように実行サーバ200に指示する。制御部130は、実行サーバ200に対するパッチの適用状況を示す情報を取得し、記憶部110に格納する。
なお、各仮想マシンに対するパッチの適用は、例えば所定の周期(例えば、1日、1週間、1ヶ月など)で行われる。制御部130は、パッチ適用の開始時点よりも前に検証サーバ300を用いてパッチに関する情報を取得し、パッチ適用のスケジュールを作成しておくことになる。
実行サーバ200は実行部210および仮想マシン220,230,240,250を有する。
実行部210は、制御部130の指示に基づいて、仮想マシン220,230,240,250に対するパッチの適用を実行する。実行部210は、パッチの適用状況(パッチごとの適用の完了など)を制御部130に通知する。
ここで、以下の説明においては、あるタイミングにおいて個々の仮想マシンに適用されるパッチの数は1つであるものとする。例えば、仮想マシン220に第1のパッチが適用されているとき、当該仮想マシン220に対して第2のパッチが同時に適用されることはないものとする(他の仮想マシンでも同様)。複数のパッチによって仮想マシン220のOSなどに関わる同一の情報を更新することも考えられ、そのような場合に適用処理で競合が発生してしまうのを避けるためである。
一方、仮想マシン220に第1のパッチを適用しているときに、仮想マシン230に第2のパッチを並列に適用するというように、別個の仮想マシンに対してはパッチを並列に適用できる。上述のような競合が生ずるおそれがないからである。
仮想マシン220,230,240,250は、実行サーバ200上で動作する仮想的なコンピュータである。例えば、実行サーバ200はハイパーバイザ(図示を省略)を実行する。ハイパーバイザは、仮想マシン220,230,240,250に対して、実行サーバ200が備えるCPUやRAMのリソースを仮想マシン220,230,240,250に割り振る。仮想マシン220,230,240,250には次のようにID(IDentifier)が設定されているものとする。仮想マシン220のIDは“VM(Virtual Machine)1”である。仮想マシン230のIDは“VM2”である。仮想マシン240のIDは“VM3”である。仮想マシン250のIDは“VM4”である。
ここで、仮想マシン250には、仮想マシン220,230,240と同じ時間帯にはパッチ適用を行わないものとする。当該時間帯において、仮想マシン250の負荷が他の業務処理によって増大する可能性が高いからである。以下の説明では、専ら仮想マシン220,230,240にパッチ適用を行う場合を例示する。このため、仮想マシン250をパッチの適用対象外の仮想マシンとして扱う。なお、仮想マシン250のようなパッチの適用対象外の仮想マシンは複数存在していてもよい。
検証サーバ300は検証部310および仮想マシン320を有する。
検証部310は、制御部130の指示に基づいて、仮想マシン320に対するパッチの適用を実行する。検証部310は、パッチの適用に伴う仮想マシン320の負荷や適用の所要時間をパッチごとに取得する(この処理をパッチの検証ということがある)。検証部310は、取得したパッチに関する情報を制御部130に提供する。
ここで、検証部310は仮想マシン320の負荷を検証サーバ300の負荷に換算して、制御部130に提供する。例えば、仮想マシン320に検証サーバ300のCPU全体のX%のリソースが割かれており、仮想マシン320にあるパッチを適用したときの負荷が仮想マシン320に割かれたリソースのY%であったとする。この場合、検証サーバ300のCPU全体に対する負荷は、(X×Y×0.01)%である。これは、パッチ適用の処理による、実行サーバ200のリソースの利用率ということができる。RAMの負荷についても同様に換算できる。
また、検証部310が取得する負荷は、例えば、対象のパッチの適用開始から完了までの所要時間で平均化されたものである。あるいは、検証部310は、適用中に検出された負荷のうちで最高のものを当該パッチ適用時の負荷として採用してもよい。
仮想マシン320は、検証サーバ300上で動作する仮想的なコンピュータである。例えば、検証サーバ300が実行するハイパーバイザ(図示を省略)が、検証サーバ300が備えるCPUやRAMのリソースを仮想マシン320に割り振る。
ここで、検証サーバ300は、実行サーバ200と同等の性能のプロセッサやRAMを備えている。そして、仮想マシン320に割当可能なリソースは、仮想マシン220,230,240と同等であるものとする。よって、仮想マシン320を用いて取得されたパッチに関する情報は、仮想マシン220,230,240に当該パッチを適用したときの実行サーバ200の負荷や適用のための所要時間の情報と考えることができる。例えば、上記のように、あるパッチを仮想マシン320に適用するときの負荷は、検証サーバ300の負荷に換算して取得される。このため、当該パッチについて取得された当該負荷の情報は、仮想マシン220に当該パッチを適用するときの実行サーバ200の負荷と考えることができるし、仮想マシン230に当該パッチを適用するときの実行サーバ200の負荷と考えることもできる。仮想マシン240についても同様である。あるパッチのある仮想マシンへの適用に伴う実行サーバ200の物理的なCPUなどの負荷は、仮想マシンに割当てられたリソース量に関わらず同程度と考えられるからである。
図5は、第2の実施の形態の仮想マシン管理テーブルの例を示す図である。仮想マシン管理テーブル111は、記憶部110に格納される。仮想マシン管理テーブル111は、仮想マシン、割当可能最大リソース、現割当リソースおよび優先度の項目を含む。
仮想マシンの項目には、仮想マシンのIDが登録される。割当可能最大リソースの項目には、当該仮想マシンに対して割当可能な最大リソースを示す情報が登録される。ここで、割当可能な最大リソースは、実行サーバ200が割当可能なリソースを100%としたときの割合で表される。なお、リソースという場合、CPUやメモリなど複数の種類が考え得る。仮想マシン管理テーブル111では、何れか1つの種類のリソースに関する情報を用いる。例えば、CPUである。現割当リソースの項目には、当該仮想マシンに対して現在割当てられているリソースを示す情報が登録される。
優先度の項目には、仮想マシンごとの優先度が登録される。例えば、優先度は数値で表される。数値が小さいほど、優先度が高い。例えば、優先度は仮想マシンごとに実行される業務処理の重要度などに応じて予め定められる。例えば、重要度の高い仮想マシンほど優先度も高くする。
例えば、仮想マシン管理テーブル111には、仮想マシンが“VM1”、割当可能最大リソースが“50%”、現割当リソースが“20%”、優先度が“1”という情報が登録されている。優先度“1”は最高の優先度であり、仮想マシン220に対するパッチ適用の優先度が、仮想マシン230,240,250よりも高いことを示す。また、仮想マシン220に対して割当可能な最大リソース(例えば、CPU)の割合が50%であり、現在の割当リソースが20%であることを示している。
図6は、第2の実施の形態のパッチ管理テーブルの例を示す図である。パッチ管理テーブル112は、制御部130により生成され、記憶部110に格納される。パッチ管理テーブル112は、第1の実施の形態の負荷情報の一例である。パッチ管理テーブル112は、パッチ名、CPU使用率、メモリ使用率、所要時間、再起動フラグ、再起動時CPU使用率、再起動時メモリ使用率、再起動所要時間および前提パッチの項目を含む。
パッチ名の項目には、パッチの名称を示す情報が登録される。CPU使用率の項目には、当該パッチ適用時のCPUの負荷を示す情報が登録される。当該CPUの負荷は、検証サーバ300が備えるCPUの全リソースに対して、パッチ適用処理に用いられるリソース分の割合である。メモリ使用率の項目には、当該パッチ適用時のメモリの負荷を示す情報が登録される。当該メモリの負荷は、検証サーバ300が備えるRAMの全リソースに対して、パッチ適用処理に用いられるリソース分の割合である。所要時間の項目には、パッチ適用の所要時間を示す情報が登録される。なお、前述のように、検証サーバ300と実行サーバ200とは同等のハードウェア性能を有するため、検証サーバ300に対して取得された負荷の情報は、実行サーバ200の負荷の情報として扱える。
再起動フラグの項目には、パッチ適用後の再起動の有無を示すフラグが登録される。再起動有りの場合は“true”である。再起動無しの場合は“false”である。再起動時CPU使用率の項目には、再起動時のCPUの負荷を示す情報が登録される。再起動時メモリ使用率の項目には、再起動時のメモリの負荷を示す情報が登録される。再起動所要時間の項目には、再起動の所要時間を示す情報が登録される。前提パッチの項目には、当該パッチが適用される前に、適用されているべき他のパッチ(前提パッチと称することがある)が存在する場合、当該他のパッチの名称が登録される。
ここで、再起動時CPU使用率、再起動時メモリ使用率および再起動所要時間の項目には、パッチ適用後の再起動が有りの場合にのみ情報が登録される。パッチ適用後の再起動が無しの場合は設定無し“−”(ハイフン)となる。
例えば、パッチ管理テーブル112には、パッチ名が“P−001”、CPU使用率が“30%”、メモリ使用率が“20%”、所要時間が“3分”、再起動が“false”、再起動時CPU使用率が“−”、再起動時メモリ使用率が“−”、再起動所要時間が“−”、前提パッチが“−”(設定無し)という情報が登録されている。
これは、P−001の名称で識別されるパッチを適用している時の検証サーバ300のCPU使用率が30%、メモリ使用率が20%であり、パッチ適用の所要時間が3分、パッチ適用後の再起動がなく、前提パッチが存在しないことを示している。
また、例えばパッチ管理テーブル112には、パッチ名が“P−003”、CPU使用率が“10%”、メモリ使用率が“10%”、所要時間が“7分”、再起動が“true”、再起動時CPU使用率が“40%”、再起動時メモリ使用率が“30%”、再起動所要時間が“3分”、前提パッチが“P−001,P−002”という情報が登録されている。
これは、P−003の名称で識別されるパッチを適用しているときの検証サーバ300のCPU使用率が10%、メモリ使用率が10%であり、パッチ適用の所要時間が7分、パッチ適用後の再起動が有りであることを示す。また、再起動時のCPU使用率が40%、再起動時のメモリ使用率が30%、再起動の所要時間が3分であり、前提パッチとして、P−001およびP−002のパッチが存在することを示す。なお、パッチ適用の所要時間の7分の内訳には、再起動の所要時間3分を含む。
図7は、第2の実施の形態のスケジュールテーブルの例(その1)を示す図である。スケジュールテーブル113は、仮想マシン220に対するパッチ適用のスケジュールを示す情報である。スケジュールテーブル113は、制御部130により生成され、記憶部110に格納される。スケジュールテーブル113は、パッチ名、適用順番、所要時間、実所要時間、完了フラグ、遅延時間、開始予定時刻、実開始時刻および実終了時刻の項目を含む。
パッチ名の項目には、パッチの名称を示す情報が登録される。適用順番の項目には、パッチ適用の順番を示す情報が登録される。例えば、順番は番号の昇順で表される。所要時間の項目には、パッチ適用の所要時間が登録される。実所要時間の項目には、パッチ適用の実際の所要時間が登録される。完了フラグの項目には、当該パッチの適用が完了したか否かを示すフラグが登録される。完了している場合は“true”である。完了していない場合は“false”である。
遅延時間の項目には、遅延時間の累積が登録される。適用順番が最初であるパッチからの現パッチまでの遅延時間の累積である。1つのパッチにおける遅延時間は実所要時間と所要時間との差である。開始予定時刻の項目には、対応するパッチの適用を開始する予定時刻が登録される。実開始時刻の項目には、実際の開始時刻が登録される。実終了時刻の項目には、パッチ適用を完了した実際の時刻が登録される。
ここで、実開始時刻の項目はパッチ適用が開始されたパッチについてのみ情報が登録される。また、実所要時間および実終了時刻の項目はパッチ適用が完了したパッチについてのみ情報が登録される。更に、遅延時間のデフォルトの設定は“0分”である。1つのパッチの適用が完了すると、当該パッチにおける遅延時間が当該パッチおよびそれ以降のパッチの遅延時間に累積されていく。
例えば、スケジュールテーブル113には、パッチ名が“P−001”、適用順番が“1”、所要時間が“3分”、実所要時間が“3分”、完了フラグが“true”、遅延時間が“0分”、開始予定時刻が“00:00:00”、実開始時刻が“00:00:00”、実終了時刻が“00:03:00”という情報が登録されている。
これは、P−001の名称で識別されるパッチの適用を最初に行うこと、パッチ適用の所要時間が3分であること、パッチ適用が完了しており、実際の所要時間が3分であったこと、遅延時間が0分であることを示す。また、パッチ適用の開始予定時刻が0時0分0秒であり、実際の開始時刻が0時0分0秒であったこと、実際の終了時刻が0時3分0秒であったことを示す。
また、例えば、スケジュールテーブル113には、パッチ名が“P−003”、適用順番が“3”、所要時間が“7分”、実所要時間が“8分”、完了フラグが“true”、遅延時間が“2分”、開始予定時刻が“00:05:00”、実開始時刻が“00:06:00”、実終了時刻が“00:14:00”という情報が登録されている。
これは、P−003の名称で識別されるパッチの適用を3番目に行うこと、パッチ適用の所要時間(再起動の時間も含めて)が7分であること、パッチ適用が完了しており、実際の所要時間が8分であったこと、遅延時間が2分であることを示す。また、パッチ適用の開始予定時刻が0時5分0秒であり、実際の開始時刻が0時6分0秒であったこと、実際の終了時刻が0時14分0秒であったことを示す。
更に、例えば、スケジュールテーブル113では、パッチ名が“P−005”のレコードについて、実開始時刻の項目への登録はあるが、実所要時間および実終了時刻の項目への登録がない。当該P−005の名称で識別されるパッチは、現在適用されている最中だからである。
なお、パッチ適用を週次や月次などで行う場合には、開始予定時刻、実開始時刻および実終了時刻に、年月日などの情報を含めてもよい。
図8は、第2の実施の形態のスケジュールテーブルの例(その2)を示す図である。スケジュールテーブル113aは、仮想マシン230に対するパッチ適用のスケジュールを示す情報である。スケジュールテーブル113aは、制御部130により生成され、記憶部110に格納される。スケジュールテーブル113aは、パッチ名、適用順番、所要時間、実所要時間、完了フラグ、遅延時間、開始予定時刻、実開始時刻および実終了時刻の項目を含む。各項目に登録される情報は、図7で説明した内容と同様である。記憶部110は、仮想マシン240に対しても、スケジュールテーブル113,113aと同様のデータ構造のスケジュールテーブルを記憶する。なお、仮想マシン250については、パッチの適用対象外であるためにスケジュールテーブルは作成されない。
このように制御部130は、仮想マシン220,230,240それぞれについて、パッチ適用のスケジュールを生成し、記憶部110に格納する。また、制御部130は、仮想マシンごとのスケジュールテーブルを用いて、仮想マシンごとのパッチの適用状況を管理する。次に、管理サーバ100による処理の手順を説明する。
図9は、第2の実施の形態の処理を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
(ステップS11)パッチ収集部120は、配信サーバ400によって新たに配信されたパッチを収集し、記憶部110に格納する。
(ステップS12)制御部130は、記憶部110に記憶されたパッチを検証サーバ300に順次送信して、各パッチの検証を検証サーバ300に依頼する。制御部130は、新たなパッチが収集されたタイミングで検証の依頼を行ってもよいし、日次や週次などでのパッチ適用の開始前(例えば、1日前や12時間前など)に、新たに収集された複数のパッチについて検証の依頼を行ってもよい。検証部310は、制御部130から受けた依頼に応じて、1つずつ順番に仮想マシン320に適用し、パッチの検証を行う。検証部310は、検証により取得したパッチに関する情報を管理サーバ100に送信する。制御部130は、当該パッチに関する情報を受信し、記憶部110に記憶されたパッチ管理テーブル112に登録する。
(ステップS13)制御部130は、パッチ管理テーブル112に基づいて、仮想マシンごとにスケジュールテーブルを生成し、記憶部110に格納する。ここで、前述のように、パッチ管理テーブル112は、複数のパッチそれぞれを仮想マシン220,230,240それぞれに適用するときの実行サーバ200の負荷を示す負荷情報である。制御部130は、パッチ管理テーブル112と実行サーバ200で許容される負荷の上限とに基づいて、所定期間内に複数のパッチを仮想マシンに適用するときの適用順序を、仮想マシン220,230,240それぞれについて決定する。決定手順の詳細は後述する。
(ステップS14)制御部130は、仮想マシンごとのスケジュールテーブルに基づいて、記憶部110に記憶されたパッチを実行サーバ200に順次送信し、各仮想マシンに適用するように実行サーバ200に指示する。実行部210は、管理サーバ100の指示に応じて、各仮想マシンにパッチを適用する。実行部210は、パッチの適用状況を管理サーバ100に提供する。制御部130は、パッチの適用状況に基づいて、それ以降に実行されるパッチ適用のスケジュールの変更を行うこともある。
このようにして、管理サーバ100は、各仮想マシンに対するパッチ適用を制御する。以下では、上記の各手順を詳細に説明する。まず、ステップS12の検証処理の手順を説明する。
図10は、第2の実施の形態の検証処理を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(ステップS21)制御部130は、記憶部110に記憶されており新たに収集された各パッチを検証サーバ300に順次(例えば、収集された順番などで)送信する。検証部310は、仮想マシン320を用いて、受信したパッチの検証を行う。具体的には、パッチごとにステップS22,S23を繰り返す。
(ステップS22)検証部310は、パッチ適用時の仮想マシン320の負荷を取得する。仮想マシン320の負荷とは、例えば、仮想マシン320に割り振られたリソースを100%としたときに、パッチ適用のために利用されるリソースの割合である。検証部310は、CPUおよびメモリについて、仮想マシン320の負荷を取得する。また、検証部310は、パッチ適用の所要時間を取得する。また、検証部310は、再起動の有無や前提パッチの存在の有無なども取得する。例えば、再起動の有無は、パッチ適用の試行後に当該パッチが仮想マシンの再起動を行うかにより判断できる。例えば、提供されたパッチに前提パッチを示す情報が登録されていることがあるため、その情報を読み取ることで前提パッチの有無や前提パッチを示す情報を把握できる。
(ステップS23)検証部310は、パッチ適用時の仮想マシン320の負荷を検証サーバ300当たりの負荷に換算する。前述したように、検証サーバ300のCPUまたはメモリのリソースうちのX%が仮想マシン320に割り振られており、ステップS22で取得された仮想マシン320のCPUまたはメモリについての負荷がY%であったとする。この場合、(X×Y×0.01)%が検証サーバ300の負荷である。検証部310は、パッチごとに取得した情報を管理サーバ100に提供する。制御部130は、記憶部110に記憶されたパッチ管理テーブル112に提供された情報を登録する。
(ステップS24)制御部130は、新たに収集された全てのパッチについての情報を検証サーバ300から取得すると、繰り返しを完了する。
このようにして、制御部130は、検証サーバ300にパッチを送信し、当該パッチの検証結果を検証サーバ300から取得する。
なお、制御部130が、ステップS23で説明した換算を行ってもよい。その場合、検証サーバ300が備えるリソースの情報や仮想マシン320に割当てられるリソースの情報を制御部130に予め与えておく。そして、検証部310は、パッチごとの仮想マシン320の負荷の情報を制御部130に提供する。制御部130は、これらの情報に基づいて、ステップS23の換算を行える。
次に、図9のステップS13のスケジューリングの手順を説明する。
図11は、第2の実施の形態のスケジューリングを示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
(ステップS31)制御部130は、仮想マシンごとに適用するパッチを判別する。具体的には、仮想マシン220,230,240それぞれで実行されるOSまたはアプリケーションと、新たに提供されたパッチに対応するOSまたはアプリケーションとを対比して、仮想マシンごとに適用すべきものを判断する。制御部130は、仮想マシンごとの適用対象パッチを示す情報を記憶部110に格納する。
(ステップS32)制御部130は、記憶部110に記憶された仮想マシンごとのスケジュールテーブルにパッチ適用順序を設定する。詳細は後述する。
(ステップS33)制御部130は、ステップS32で決定したパッチ適用順序を、実行サーバ200単位の負荷を考慮して調整する。詳細は後述する。
このように、制御部130は仮想マシンごとにスケジューリングを行い、スケジュールテーブルに登録する。以下では、ステップS32,S33の手順を更に詳細に説明する。まず、ステップS32のパッチ適用順序の設定の手順を説明する。
図12は、第2の実施の形態のパッチ適用順序の設定を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
(ステップS41)制御部130は、記憶部110に記憶された仮想マシン管理テーブル111を参照して、以降に示すステップS42〜S45の処理を行っていない仮想マシン(未処理の仮想マシン)のうち、最高の優先度の仮想マシンを選択する。ここで、仮想マシン250はパッチの適用対象外であるため、ステップS41の選択の対象にならない。
(ステップS42)制御部130は、記憶部110に記憶されたパッチ管理テーブル112を参照して、ステップS41で選択された仮想マシンに対する適用対象パッチで順序未決定のもののうち、最高の負荷となるパッチを選択する。ここで、当該仮想マシンに対する適用対象パッチは、ステップS31で判別済である。また、あるパッチの適用が仮想マシンに与える負荷としては、パッチ管理テーブル112に登録された当該パッチのCPU使用率、メモリ使用率、再起動時CPU使用率および再起動時メモリ使用率のうち、最も高いものを採用する。パッチ管理テーブル112の例でいえば、パッチ“P−001”は、上記4項目のうちCPU使用率“30%”が最高である。よって、制御部130は、パッチ“P−001”の適用が仮想マシンに与える負荷を30%と見積もる。また、パッチ“P−003”は、上記4項目のうち再起動時CPU使用率“40%”が最高である。よって、制御部130は、パッチ“P−003”の適用が仮想マシンに与える負荷を40%と見積もる。
(ステップS43)制御部130は、ステップS42で選択したパッチに依存関係のある順序設定済のパッチがあるか否かを判定する。依存関係のある順序設定済のパッチがある場合、処理をステップS44に進める。依存関係のある順序設定済のパッチがない場合、処理をステップS45に進める。ここで、依存関係のある順序設定済のパッチとは、次のものを指す。(1)現在選択中のパッチについて、パッチ管理テーブル112の前提パッチの項目に前提パッチ名の登録があり、かつ、その前提パッチが現在選択中の仮想マシンのスケジュールテーブルに登録済の場合、当該前提パッチ。(2)現在選択中の仮想マシンに対応するスケジュールテーブルに登録済であり、かつ、現在選択中のパッチを前提パッチとしてもつパッチが存在する場合、現在選択中のパッチを前提パッチとしてもつ当該パッチ。
(ステップS44)制御部130は、パッチ同士の依存関係に基づいてスケジュールテーブルに、現在選択中のパッチの情報を登録する。例えば、ステップS43で、(1)で示した前提パッチが存在することで、依存関係のある順序設定済のパッチがあると判定された場合、その前提パッチの直後に現在選択中のパッチを適用するようにスケジュールテーブルへの登録を行う。また、例えば、ステップS43で、(2)で示したパッチが存在することで、依存関係のある順序設定済のパッチがあると判定された場合、当該(2)で示したパッチの直前に現在選択中のパッチを適用するようにスケジュールテーブルへの登録を行う。なお、現在選択中のパッチが挿入されることで、他のパッチのスケジュールが後ろにずれることもある。また、最初に適用するパッチの適用開始時刻は固定されているものとする(例えば、0時0分0秒に固定)。制御部130は、パッチ管理テーブル112に登録された所要時間の情報に基づいて、適用開始予定時刻などもスケジュールテーブルに設定する。そして、処理をステップS46に進める。
(ステップS45)制御部130は、順序決定済のパッチのうち、最後のパッチの次の順番を、現在選択中のパッチの順番としてスケジュールテーブルに設定する。例えば、スケジュールテーブルにおいて、適用順番“3”までが登録済であれば、現在選択中のパッチの適用順番は“4”として登録されることになる。制御部130は、パッチ管理テーブル112に登録された所要時間の情報に基づいて、適用開始予定時刻などもスケジュールテーブルに設定する。
(ステップS46)制御部130は、ステップS41で選択した仮想マシンについて、適用対象である全てのパッチの順序を決定済であるか否かを判定する。全てのパッチの順序を決定済である場合、処理をステップS47に進める。全てのパッチの順序を決定済でない場合、処理をステップS42に進める。例えば、ステップS41で選択した仮想マシンについて、適用対象である全てのパッチが、当該仮想マシンのスケジュールテーブルに登録済であれば、全てのパッチの順序を決定済である。一方、ステップS41で選択した仮想マシンについて、適用対象である全てのパッチが、当該仮想マシンのスケジュールテーブルに登録済でなければ、全てのパッチの順序を決定済ではない。
(ステップS47)制御部130は、適用すべきパッチが存在する全ての仮想マシンについて、ステップS41〜S46の手順を処理済であるか否かを判定する。処理済である場合、処理を終了する。処理済でない場合、処理をステップS41に進める。例えば、適用すべきパッチが存在する全ての仮想マシンについて、ステップS41〜S46の手順によりスケジュールテーブルが作成されていれば、処理済と判定する。一方、スケジュールテーブルが作成されていない仮想マシンがあれば、処理済でないと判定する。
このようにして、制御部130は仮想マシンごとのスケジュールテーブルを作成する。次に、パッチ適用順序の設定例を具体的に説明する。
図13は、第2の実施の形態のパッチ適用順序の設定例を示す図である。図13では、図12の手順によって実行サーバ200の仮想マシン220,230,240のパッチ適用順序が設定された結果を例示している。ここで、仮想マシン220,230,240に適用されるパッチは同一であるものとする。
図13(A)は仮想マシン220のパッチ適用順序を示す棒グラフG10を例示している。図13(B)は仮想マシン230のパッチ適用順序を示す棒グラフG20を例示している。図13(C)は仮想マシン240のパッチ適用順序を示す棒グラフG30を例示している。棒グラフG10,G20,G30の横軸は時間であり、縦軸は実行サーバ200の負荷である。また、横軸に記入された時刻T0はパッチの適用開始予定時刻であり、時刻Tは適用終了予定時刻である。
仮想マシン220,230,240に適用されるパッチは同一であるため、ここでは棒グラフG10,G20,G30も同一となる。
棒グラフG10は、バーの集合G11,G14,G15,G16およびバーG12,G13を含む。バーの集合とは、依存関係のあるパッチの集合(以下、パッチグループと称することがある)に含まれる個々のパッチに対応するバーの一群である。
例えば、バーの集合G11は、パッチ名“P−001”、“P−002”、“P−003”の3つのパッチを含むパッチグループに対応するものであり、3つのバーを含む。パッチ管理テーブル112によれば、これらの3つのパッチは依存関係をもち、“P−001”、“P−002”、“P−003”の順番での適用が推奨されている。よって、バーの集合G11に含まれる3つのバーは時刻T0に近い方から、“P−001”、“P−002”、“P−003”の順に並んでいる。
一方、バーG12,G13は、他のパッチとの依存関係をもたないパッチに対応するものである。ただし、以降の説明では、バーG12,G13に対応する各パッチをも含めてパッチグループと称することがある。例えば、他のパッチとの依存関係をもたないパッチは、要素が1つであるパッチの集合と考えることができる。
棒グラフG20は、バーの集合G21,G24,G25,G26およびバーG22,G23を含む。また、棒グラフG30は、バーの集合G31,G34,G35,G36およびバーG32,G33を含む。バーの集合G21,G31は、バーの集合G11と同一のパッチグループに対応するものである。バーG22,G32は、バーG12と同一のパッチに対応するものである。バーG23,G33は、バーG13と同一のパッチに対応するものである。バーの集合G24,G34は、バーG14と同一のパッチグループに対応するものである。バーの集合G25,G35は、バーG15と同一のパッチグループに対応するものである。バーの集合G26,G36は、バーG16と同一のパッチグループに対応するものである。
ただし、ここで作成されたスケジュールテーブルに従って、各パッチを適用しようとすると、実行サーバ200の負荷が過大となるおそれがある。そこで、制御部130は、スケジュールテーブルに調整を加える。次に、図11のステップS33のパッチ適用順序の調整の手順を説明する。
図14は、第2の実施の形態のパッチ適用順序の調整を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
(ステップS51)制御部130は、仮想マシン管理テーブル111を参照して、最高の優先度の仮想マシン220を特定する。制御部130は、仮想マシン220に対応するスケジュールテーブル113に設定されたスケジュールを確定する。すなわち、スケジュールテーブル113の設定内容は以降の手順で変更されないことになる。
(ステップS52)制御部130は、最高の優先度である仮想マシン220に対して、スケジュールテーブル113内の全パッチを適用するための所要時間を取得する。当該所要時間は、時刻T0から時刻Tまでの時間である。
(ステップS53)制御部130は、ステップS52で求めた所要時間に基づいて、各仮想マシン(最高の優先度である仮想マシン220を除く)のスケジュール分割点を決定する。ここで、スケジュール分割点とは、スケジュール内のある時点を示し、その時点以降のパッチ適用のスケジュール部分(複数のパッチグループの適用スケジュールを含み得る)を、その時点よりも前のパッチ適用のスケジュール部分と組み替えるための時点を示す。
(ステップS54)制御部130は、各仮想マシンのスケジュール分割点以降の第1のスケジュール部分を適用開始時点に移行する。その結果、スケジュール分割点よりも前の第2のスケジュール部分が当該第1のスケジュール部分の直後に移行することになる。制御部130は、パッチグループ単位に移行する。パッチグループを分割して移行すると、依存関係に基づく適用順序が崩れるおそれがあるからである。なお、制御部130は最高の優先度である仮想マシン220以外について当該処理を行う。
(ステップS55)制御部130は、スケジュールを未調整である仮想マシンのうち、最高の優先度の仮想マシンを選択する。スケジュールを未調整である仮想マシンとは、ステップS56の処理を行っていない仮想マシンを意味する。
(ステップS56)制御部130は、ステップS55で選択された仮想マシンに対するパッチ適用時の実行サーバ200の負荷を評価し、当該評価結果に基づいて、パッチグループ単位に開始予定時刻を調整する。詳細は後述する。
(ステップS57)制御部130は、全ての仮想マシンについてスケジュールを調整済であるか否かを判定する。全ての仮想マシンを調整済である場合、処理を終了する。全ての仮想マシンを調整済でない場合、処理をステップS55に進める。
ここで、ステップS53,S54で示した、スケジュール分割点によるスケジュールの組み替えの具体例を説明する。
図15は、第2の実施の形態のスケジュールの組み替え例を示す図である。図15では、図13で例示した仮想マシン220,230,240のスケジュールに対して、スケジュール分割点を決定するための方法を例示している。
図15(A)は仮想マシン220のパッチ適用順序を示す棒グラフG10を例示している。図15(B)は仮想マシン230のパッチ適用順序を示す棒グラフG20を例示している。図15(C)は仮想マシン240のパッチ適用順序を示す棒グラフG30を例示している。棒グラフG10,G20,G30については、図13で説明した通りである。
ここで、棒グラフG10,G20,G30では、スケジュール分割点である時刻T1,T2が示されている。時刻T1は時刻T0,Tの中間の時刻である。すなわち、時刻T0〜T1の時間間隔と時刻T1〜Tの時間間隔は等しい。時刻T2は時刻T1,Tの中間の時刻である。すなわち、時刻T1〜T2の時間間隔と時刻T2〜Tの時間間隔は等しい。
このように、例えば、最高の優先度の仮想マシン以外にも、パッチ適用対象の仮想マシンが2つ存在する場合、スケジュール分割点も2つ(時刻T1,T2)決定する。時刻Tに近いスケジュール分割点ほど、高い優先度の仮想マシンに対して適用する。本例では、仮想マシン230のスケジュール分割点を時刻T2とする。仮想マシン240のスケジュール分割点を時刻T1とする。仮想マシン230は仮想マシン240よりも優先度が高いからである。
なお、最高の優先度の仮想マシン以外に、パッチ適用対象の仮想マシンが3以上存在する場合も考えられる。例えば、3つ存在するなら、時刻T2,Tの中間の時刻をスケジュール分割点(3つ目のスケジュール分割点)として更に取得する。同様に、4つ目のスケジュール分割点も、3つ目のスケジュール分割点の時刻と時刻Tの中間の時刻として求められる。それ以降のスケジュール分割点も同様にして求められる。
図16は、第2の実施の形態のスケジュールの組み替え例(続き)を示す図である。図16では、図15で示したスケジュール分割点による仮想マシン230,240のスケジュール組み替え後の例を示している。図16(A)は棒グラフG10を例示している。棒グラフG10は、最高の優先度である仮想マシン220のスケジュールを示すものである。当該仮想マシン220のスケジュールは固定である。図16(B)はスケジュール組み替え後の棒グラフG20を例示している。図16(C)はスケジュール組み替え後の棒グラフG30を例示している。
例えば、棒グラフG20では、バーの集合G26に対応するパッチグループの適用開始予定時刻を時刻T0に移行している。当該パッチグループの適用予定時間はスケジュール分割点である時刻T2を含むからである。その他のパッチグループは、当該バーの集合G26に対応するパッチグループの適用が完了した直後から順次適用されるように、開始予定時刻が後ろの時間にずらされる。このように、スケジュール分割点である時刻を適用予定時間の範囲に含むパッチグループ以降のパッチグループを開始予定時刻の前方に移行する。
また、例えば、棒グラフG30では、バーの集合G35に対応するパッチグループの適用開始予定時刻を時刻T0に移行している。また、バーの集合G36に対応するパッチグループの適用開始予定時刻を、バーの集合G35に対応するパッチグループの適用が完了した直後に移行している。その他のパッチグループは、当該バーの集合G36に対応するパッチグループの適用が完了した直後から順次適用されるように、開始予定時刻が後の時間にずらされる。
このように、依存関係にあるパッチを順番に、かつ、連続した状態を保って(パッチグループ単位で)スケジュール調整する理由は次の通りである。すなわち、図14で説明したように、全体スケジュールを所定の分割点で区切って、パッチの適用順序を組み替える際に、依存関係にあるパッチの適用順序を維持する(逆の順番にならないようにする)ためである。
また、全体スケジュールの終盤側に分割点を設けてスケジュール調整する理由は次の通りである。すなわち、図13では、相対的に負荷の高いパッチから先に適用するように適用順序を決定しているため、スケジュール全体の傾向として、スケジュールの終盤程、相対的に負荷の低いパッチがスケジューリングされている可能性が高い。よって、パッチグループを組み替える場合、スケジュールのより終盤のパッチグループをスケジュールの前半へと移行させる方が、実行サーバ200の負荷が閾値を超過する可能性は低い。これにより、負荷が閾値を超えないようにスケジューリングするための組み替えの試行回数を軽減できる。例えば、ランダムにパッチグループの組み替えを試行するよりも、適用順序の決定に伴う演算コストを軽減できる。
次に、図14のステップS56におけるパッチグループ単位の開始予定時刻の調整の手順を説明する。
図17は、第2の実施の形態のパッチグループの調整を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
(ステップS61)制御部130は、現在選択中の仮想マシンに対するスケジュールテーブルを参照して、スケジュール未確定のパッチグループのうちで開始予定時刻の最も早いものを選択する。
(ステップS62)制御部130は、各仮想マシンについて確定済のスケジュールを考慮して、選択したパッチグループに含まれる各パッチの適用時点の実行サーバ200の負荷を算出する(個々のパッチ適用に伴う負荷を各時点において合計する)。制御部130は、記憶部110に記憶された各仮想マシンのスケジュールテーブルを参照して、ステップS61で選択したパッチグループの適用予定時間と同じ時間帯に他の仮想マシンで適用されるパッチを特定できる。各パッチの適用に伴う負荷は、図12のステップS42で説明したように、パッチ管理テーブル112に登録されたCPU使用率、メモリ使用率、再起動時CPU使用率および再起動時メモリ使用率のうち、最大の値とする。
(ステップS63)制御部130は、実行サーバ200の負荷が予め定められた閾値Lを超える時点(閾値Lよりも大きくなる時点)があるか否かを判定する。閾値Lを超える時点がある場合、処理をステップS64に進める。閾値Lを超える時点がない場合、処理をステップS65に進める。
(ステップS64)制御部130は、現在選択中のパッチグループの開始予定時刻を後ろにずらす。例えば、現在選択中のパッチグループ内で最初に適用されるパッチ適用の所要時間がtであれば、当該パッチグループの開始予定時刻をtだけ後ろにずらすことが考えられる。ただし、制御部130は、ずらす時間tの任意の決定を許容してもよい(例えば、t=1分またはt=3分など)。そして、処理をステップS62に進める。
(ステップS65)制御部130は、現在選択中のパッチグループに関するスケジュールを確定する。これによって、当該パッチグループに含まれる各パッチの適用開始予定時刻が確定される。
(ステップS66)制御部130は、全てのパッチグループについてスケジュールを確定済であるか否かを判定する。全てのパッチグループについてスケジュールを確定済の場合、処理を終了する。全てのパッチグループについてスケジュールを確定済でない場合、処理をステップS61に進める。
このようにして、実行サーバ200の負荷が閾値Lを超えないように、各パッチグループのスケジュールを決定する。ここで、制御部130は、種々の基準に基づいて閾値Lを決定することができる。具体的には、次の第1,第2の方法が考えられる。
第1の方法は、各仮想マシンに割当可能な最大のリソースに応じて決める方法である。例えば、仮想マシン管理テーブル111で示したように各仮想マシンには、割当可能最大リソースが予め定められている。この場合、閾値L=“実行サーバ200で割当可能なリソース”−“パッチの適用対象外の仮想マシンに対する割当可能最大リソースの合計”とする。例えば、“実行サーバ200で割当可能なリソース”を100%と表す。これに対し、“パッチの適用対象外の仮想マシン”は、本例では仮想マシン250である。したがって、“パッチの適用対象外の仮想マシンに対する割当可能最大リソースの合計”は50%となる。よって、閾値L=100%−50%=50%である。
第2の方法は、各仮想マシンに現在割当てられているリソースに応じて決める方法である。この場合、閾値L=“実行サーバ200で割当可能なリソース”−“パッチの適用対象外の仮想マシンに現在割当てられているリソースの合計”とする。例えば、“実行サーバ200で割当可能なリソース”を100%と表す。これに対し、“パッチの適用対象外の仮想マシン”は、本例では仮想マシン250である。したがって、“パッチの適用対象外の仮想マシンに現在割当てられているリソースの合計”は、例えば、30%である。よって、閾値L=100%−30%=70%である。
次に、パッチグループ単位の開始予定時刻の調整の具体例を説明する。
図18は、第2の実施の形態のパッチグループの調整例を示す図である。図18では、仮想マシン230に適用するパッチについて、パッチグループ単位のスケジュール調整を行う場合を例示している。ここで、仮想マシン230よりも優先度の高い仮想マシン220のスケジュールは確定されている。仮想マシン220のスケジュールは棒グラフG10で表されている。また、図18では実行サーバ200で許容される負荷の閾値Lも例示されている。
まず、制御部130は、棒グラフG10にバーの集合G26を積み上げる(各時間帯の合計の負荷を算出する)。バーの集合G26に対応する第1のパッチグループの適用開始予定時刻は、図16で例示した処理により時刻T0となっている。バーの集合G26aは、バーの集合G26を棒グラフG10に積み上げたものを示している。積み上げを行っても、第1のパッチグループの適用時間中に実行サーバ200の負荷が閾値Lを超過する時点はないことが分かる。したがって、制御部130は第1のパッチグループの適用スケジュールを、この時間帯に確定する。
次に、制御部130は、棒グラフG10にバーの集合G21を積み上げる。バーの集合G21に対応する第2のパッチグループの適用開始予定時刻は、図16で例示した処理により、第1のパッチグループの適用が完了した直後の時刻となっている。バーの集合G21aは、バーの集合G21を棒グラフG10に積み上げたものを示している。この場合、当該積み上げを行うと、第2のパッチグループの適用時間中に実行サーバ200の負荷が閾値Lを超過する時点があることが分かる。したがって、制御部130は、第2のパッチグループの適用スケジュールを後ろにずらして、同じ判定を繰り返す。このようにして、実行サーバ200の負荷が閾値Lを超過しないようにスケジュール調整する。例えば、第2のパッチグループの適用開始予定時刻を時刻T11までずらすと、実行サーバ200の負荷が閾値Lを超過しないように各パッチの適用が可能であるとする。バーの集合G21bは、適用開始予定時刻を時刻T11までずらして、バーの集合G21を棒グラフG10に積み上げたものを示している。
ここで、時刻T11が、仮想マシン220に対する何れかのパッチ(パッチPとする)の適用開始予定時刻よりも後で、当該パッチPの適用終了予定時刻よりも前の時刻である場合がある。その場合、バーの集合G21bに対応するパッチグループの適用開始予定時刻T11を、パッチPの適用開始予定時刻に前倒しして、実行サーバ200の負荷が閾値Lを超過するか否かを確認してもよい。そして、時刻T11をパッチPの適用開始予定時刻に前倒ししても、負荷が閾値Lを超過しないようであれば、当該パッチPの適用開始予定時刻に一致するように時刻T11を決定してもよい。仮想マシン220において、バーの集合G21bに対応するパッチグループの適用開始予定時刻T11を早めることで、スケジュールの短縮化を図れる。
制御部130は、それ以降の他のパッチグループの適用開始予定時刻も同様にして決定する。ここで、バーG22aは、バーG22を棒グラフG10に積み上げたものである。バーG23aは、バーG23を棒グラフG10に積み上げたものである。バーの集合G24aは、バーの集合G24を棒グラフG10に積み上げたものである。バーの集合G25aは、バーの集合G25を棒グラフG10に積み上げたものである。
図19は、第2の実施の形態のパッチグループの調整例(続き)を示す図である。図19では、仮想マシン240に適用するパッチについて、パッチグループ単位のスケジュール調整を行う場合を例示している。ここで、仮想マシン240よりも優先度の高い仮想マシン220,230のスケジュールは確定されている。これらの確定されたスケジュールは、棒グラフG10aで表されている。また、図19では実行サーバ200で許容される負荷の閾値Lも例示されている。
まず、制御部130は、棒グラフG10aにバーの集合G35を積み上げる。バーの集合G35に対応する第3のパッチグループの適用開始予定時刻は、図16で例示した処理により時刻T0となっている。バーの集合G35aは、バーの集合G35を棒グラフG10aに積み上げたものを示している。この場合、当該積み上げを行うと、第3のパッチグループの適用時間中に実行サーバ200の負荷が閾値Lを超過する時点があることが分かる。したがって、制御部130は、第3のパッチグループの適用スケジュールを後ろにずらして、同じ判定を繰り返す。このようにして、実行サーバ200の負荷が閾値Lを超過しないようにスケジュール調整する。例えば、第3のパッチグループの適用開始予定時刻を時刻T12までずらすと、実行サーバ200の負荷が閾値Lを超過しないように各パッチの適用が可能であるとする。バーの集合G35bは、適用開始予定時刻を時刻T12までずらして、バーの集合G35を棒グラフG10aに積み上げたものを示している。
制御部130は、それ以降の他のパッチグループの適用開始予定時刻も同様にして決定する。ここで、バーの集合G36aは、対応するパッチグループの適用開始予定時刻を時刻T13にずらして、バーの集合G36を棒グラフG10aに積み上げたものである。バーの集合G31aは、バーの集合G31を棒グラフG10aに積み上げたもの(ただし、一部のみ)である。バーG32,G33およびバーの集合G34を棒グラフG10aに積み上げたものに関しては、図示を省略している。
図20は、第2の実施の形態の確定されたスケジュールの例を示す図である。図20(A)は仮想マシン220の確定されたスケジュールを示す棒グラフG10を例示している。図20(B)は仮想マシン230の確定されたスケジュールを示す棒グラフG20aを例示している。図20(C)は仮想マシン240の確定されたスケジュールを示す棒グラフG30aを例示している。棒グラフG10,G20a,G30aの横軸は時間であり、縦軸は実行サーバ200の負荷である。棒グラフG10は、図13で説明したものと同一である。
棒グラフG20aは、図18で説明した処理の結果、仮想マシン230の確定されたスケジュールを例示している。バーの集合G26に対応するパッチグループは時刻T0から適用されることになる。バーの集合G21に対応するパッチグループは時刻T11から適用されることになる。それ以降、他のパッチグループが順次適用される。
棒グラフG30aは、図19で説明した処理の結果、仮想マシン240の確定されたスケジュールを例示している。バーの集合G35に対応するパッチグループは時刻T12から適用されることになる。バーの集合G36に対応するパッチグループは時刻T13から適用されることになる。それ以降、他のパッチグループが順次適用される。
このようにして、実行サーバ200の負荷が閾値Lを超過しないようにパッチ適用のスケジュールが調整される。このため、実行サーバ200に対するパッチ適用の負荷の影響を軽減することができる。例えば、閾値Lが50%であれば、パッチ適用中でも残り50%のリソースを利用可能である。当該残りのリソースを用いて、仮想マシン220,230,240(あるいは、これらの仮想マシン以外の仮想マシン)で実行される他の業務処理を行える。上述したように、閾値Lは他の業務処理のために確保しておきたいリソースに応じた値が決定される。これによって、所定のリソースを確保しながら、仮想マシン220,230,240に対するパッチ適用を迅速に行えるように支援することができる。
ここで、パッチを実際に適用すると、スケジュール通りに進まないこともある。そこで、制御部130はパッチ適用の実際の進捗に応じて、スケジュールを補正する。次に、図9のステップS14において実行されるスケジュールの補正の手順を説明する。
図21は、第2の実施の形態のスケジュールの補正例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
(ステップS71)実行部210は、何れかの仮想マシンについて、何れかのパッチの適用が完了すると、該当の仮想マシン、パッチを示す情報や適用完了時刻を示す情報を制御部130に通知する。制御部130は、該当の仮想マシンに対応するスケジュールテーブルの該当のパッチに対して、適用完了時刻を登録する。
(ステップS72)制御部130は、スケジュールテーブルに基づいて、ステップS71で通知された適用完了時刻に遅延があるか否かを判定する。遅延がある場合、処理をステップS73に進める。遅延がない場合、処理を終了する。
(ステップS73)制御部130は、仮想マシン220,230,240に対して適用予定の全てのパッチについて、開始予定時刻を現在の開始予定時刻よりも後ろにずらす。例えば、遅延した時間分だけ後ろにずらすことが考えられる。
このようにして、制御部130は、実際にパッチを適用しながら、その実績に基づいて更にスケジュールの調整を行う。個々のパッチの適用所要時間は、検証サーバ300で検証した時間と必ずしも一致するとは限らないからである。制御部130は、実際のパッチの適用で遅延があれば、例えば遅延分の時間だけ、他のパッチの適用開始予定時刻を遅らせる。さもなければ、負荷の閾値Lを超過する組み合わせで各仮想マシンに対するパッチ適用が行われる可能性があるからである。
また、第2の実施の形態では、ある時点において、1つの仮想マシンに対し1つのパッチを適用するようにスケジューリングする場合を例示した。一方、パッチの適用処理の競合が問題とならないことが明らかであれば、ある時点において1つの仮想マシンに対し2以上のパッチを適用するようにスケジューリングしてもよい。例えば、仮想マシン220に対し、ある時点において、パッチ“P−001”、“P−004”を並列に適用するようにスケジューリングすることも考えられる。その場合も、各パッチを適用するための負荷を合計することで、仮想マシン220の負荷を見積もれる。例えば、同一の仮想マシンで並列に適用可能なパッチ数の上限を2つ、3つ、などと予め定めておく。そして、優先度の高い仮想マシンほど優先的に、より多くのパッチを並列適用するようにし、かつ、実行サーバ200の負荷が閾値Lを超過しないように、第2の実施の形態と同様の方法でスケジューリングを行うことが考えられる。
なお、前述のように、第1の実施の形態の情報処理は、演算部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、光ディスク13、メモリ装置14およびメモリカード16など)に記録できる。
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワークを介して受信したプログラムを直接実行してもよい。
また、上記の情報処理の少なくとも一部を、DSP、ASIC、PLDなどの電子回路で実現することもできる。
1,2 情報処理装置
1a 記憶部
1b 演算部
2a,2b 仮想マシン
3,4,5 棒グラフ
3a,3b,3c,3d,3e,3f,4a,4b,4c,4d,4e,4f バー

Claims (7)

  1. 第1の仮想マシンおよび第2の仮想マシンが動作可能な情報処理装置と通信するコンピュータに、
    新プログラムを前記第1の仮想マシンに適用するときの前記情報処理装置の負荷を示す第1の情報と前記更新プログラムを前記第2の仮想マシンに適用するときの前記情報処理装置の負荷を示す第2の情報とを、複数の更新プログラムそれぞれに対して取得し、
    第1の情報と前記第2の情報と前記情報処理装置で許容される負荷の上限とに基づいて、所定期間内に前記複数の更新プログラムを前記第1の仮想マシンに適用するときの第1の適用順序と、前記所定期間内に前記複数の更新プログラムを前記第2の仮想マシンに適用するときの第2の適用順序であって、前記第1の適用順序とは異なる前記第2の適用順序とを決定する、
    処理を実行させるプログラム。
  2. 前記第1の仮想マシンおよび前記第2の仮想マシンに並列に適用する前記更新プログラムの組に対して評価された前記情報処理装置の負荷が前記上限以下である場合に前記更新プログラムの組を並列に適用することを許容し、前記更新プログラムの組に対して評価された前記情報処理装置の負荷が前記上限よりも大きい場合に前記更新プログラムの組を並列に適用することを許容しない、請求項1記載のプログラム。
  3. 前記情報処理装置では、前記第1の仮想マシンと前記第2の仮想マシンと前記更新プログラムの適用対象でない1以上の仮想マシンとが動作しており、また、前記情報処理装置の負荷は前記更新プログラムを適用する際の前記情報処理装置のリソースの利用率であり、
    前記1以上の仮想マシンに対するリソースの割当に関する情報に基づいて前記上限を決定する、請求項1または2記載のプログラム。
  4. 前記1以上の仮想マシンに対して割当可能な最大のリソースの合計に基づいて前記上限を決定する、請求項3記載のプログラム。
  5. 前記1以上の仮想マシンに対して現在割当てられているリソースの合計に基づいて前記上限を決定する、請求項3記載のプログラム。
  6. 第1の仮想マシンおよび第2の仮想マシンが動作可能な他の情報処理装置と通信する情報処理装置であって、
    新プログラムを前記第1の仮想マシンに適用するときの前記他の情報処理装置の負荷を示す第1の情報と前記更新プログラムを前記第2の仮想マシンに適用するときの前記他の情報処理装置の負荷を示す第2の情報とを、複数の更新プログラムそれぞれに対して記憶する記憶部と、
    前記記憶部から前記第1の情報と前記第2の情報とを取得し、前記第1の情報と前記第2の情報と前記他の情報処理装置で許容される負荷の上限とに基づいて、所定期間内に前記複数の更新プログラムを前記第1の仮想マシンに適用するときの第1の適用順序と、前記所定期間内に前記複数の更新プログラムを前記第2の仮想マシンに適用するときの第2の適用順序であって、前記第1の適用順序とは異なる前記第2の適用順序とを決定する演算部と、
    を有する情報処理装置。
  7. 第1の仮想マシンおよび第2の仮想マシンが動作可能な情報処理装置と通信するコンピュータで実行されるスケジュール決定方法であって、
    新プログラムを前記第1の仮想マシンに適用するときの前記情報処理装置の負荷を示す第1の情報と前記更新プログラムを前記第2の仮想マシンに適用するときの前記情報処理装置の負荷を示す第2の情報とを、複数の更新プログラムそれぞれに対して取得し、
    第1の情報と前記第2の情報と前記情報処理装置で許容される負荷の上限とに基づいて、所定期間内に前記複数の更新プログラムを前記第1の仮想マシンに適用するときの第1の適用順序と、前記所定期間内に前記複数の更新プログラムを前記第2の仮想マシンに適用するときの第2の適用順序であって、前記第1の適用順序とは異なる前記第2の適用順序とを決定する、
    スケジュール決定方法。
JP2013173526A 2012-09-04 2013-08-23 プログラム、情報処理装置およびスケジュール決定方法 Expired - Fee Related JP6213053B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013173526A JP6213053B2 (ja) 2012-09-04 2013-08-23 プログラム、情報処理装置およびスケジュール決定方法
US14/016,676 US9477460B2 (en) 2012-09-04 2013-09-03 Non-transitory computer-readable storage medium for selective application of update programs dependent upon a load of a virtual machine and related apparatus and method

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012193871 2012-09-04
JP2012193871 2012-09-04
JP2013173526A JP6213053B2 (ja) 2012-09-04 2013-08-23 プログラム、情報処理装置およびスケジュール決定方法

Publications (2)

Publication Number Publication Date
JP2014067402A JP2014067402A (ja) 2014-04-17
JP6213053B2 true JP6213053B2 (ja) 2017-10-18

Family

ID=50189360

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013173526A Expired - Fee Related JP6213053B2 (ja) 2012-09-04 2013-08-23 プログラム、情報処理装置およびスケジュール決定方法

Country Status (2)

Country Link
US (1) US9477460B2 (ja)
JP (1) JP6213053B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6263981B2 (ja) * 2013-11-20 2018-01-24 株式会社リコー 情報処理装置、情報処理装置の起動方法、及び、プログラム
KR101649909B1 (ko) * 2014-09-25 2016-08-22 한국전자통신연구원 가상 머신 취약점 점검과 복구 방법 및 장치
US20160103671A1 (en) * 2014-10-08 2016-04-14 International Business Machines Corporation Analytical Software Patch Management
JP6503783B2 (ja) * 2015-02-25 2019-04-24 富士通株式会社 修正適用方法及びプログラム、並びに情報処理装置
JP2017004201A (ja) * 2015-06-09 2017-01-05 富士通株式会社 パッチプログラム抽出装置、パッチプログラム抽出プログラム及びパッチプログラム抽出方法
WO2016199265A1 (ja) * 2015-06-11 2016-12-15 株式会社日立製作所 ストレージシステム、及び、記憶制御方法
US20170060564A1 (en) * 2015-08-27 2017-03-02 Kabushiki Kaisha Toshiba Electronic device and method
US9696985B1 (en) * 2016-01-06 2017-07-04 International Business Machines Corporation Patching of virtual machines within sequential time windows
JP6597452B2 (ja) * 2016-03-30 2019-10-30 日本電気株式会社 情報処理装置、情報処理方法、プログラム
US10768920B2 (en) * 2016-06-15 2020-09-08 Microsoft Technology Licensing, Llc Update coordination in a multi-tenant cloud computing environment
KR101848616B1 (ko) 2016-06-22 2018-05-28 현대자동차주식회사 차량용 전자장치를 제어하는 방법 및 장치
JP6879625B2 (ja) * 2016-12-27 2021-06-02 東芝インフラシステムズ株式会社 プログラマブルコントローラ、管理装置および制御システム
US10831466B2 (en) * 2017-03-29 2020-11-10 International Business Machines Corporation Automatic patch management
JP6885264B2 (ja) 2017-08-25 2021-06-09 富士通株式会社 情報処理装置、情報処理システム、及びプログラム
CN109582433B (zh) * 2017-09-29 2022-02-01 腾讯科技(深圳)有限公司 一种资源调度方法、装置、云计算系统及存储介质
US11829792B1 (en) * 2020-09-21 2023-11-28 Amazon Technologies, Inc. In-place live migration of compute instances for efficient host domain patching

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200279A (ja) * 1993-12-28 1995-08-04 Toshiba Corp オブジェクト管理システム及びネットワーク管理システム
US8412822B1 (en) * 2004-01-27 2013-04-02 At&T Intellectual Property Ii, L.P. Optimized job scheduling and execution in a distributed computing grid
US8291409B2 (en) 2006-05-22 2012-10-16 Microsoft Corporation Updating virtual machine with patch on host that does not have network access
US7657401B2 (en) * 2006-05-31 2010-02-02 International Business Machines Corporation Systems and methods for predicting load test resource requirements
JP2009258982A (ja) * 2008-04-16 2009-11-05 Ntt Docomo Inc ノード装置及びプログラム並び資源割当方法
JP5371095B2 (ja) 2009-04-20 2013-12-18 株式会社日立ソリューションズ パッチ適用システム
EP2674861A4 (en) * 2011-02-08 2016-04-27 Fujitsu Ltd EMBODIMENT PROGRAM, EMISSION CONTROL DEVICE AND EMISSION CONTROL METHOD
US8869135B1 (en) * 2011-05-20 2014-10-21 Amazon Technologies, Inc. Deploying updates to an application during periods of off-peak demand
US9317341B2 (en) * 2011-05-24 2016-04-19 Microsoft Technology Licensing, Llc. Dynamic attribute resolution for orchestrated management
WO2013140460A1 (en) * 2012-03-23 2013-09-26 Hitachi, Ltd. Patch applying method for virtual machine by cloning an operating system image on shared storage and applying a patch to this cloned image

Also Published As

Publication number Publication date
US9477460B2 (en) 2016-10-25
US20140068613A1 (en) 2014-03-06
JP2014067402A (ja) 2014-04-17

Similar Documents

Publication Publication Date Title
JP6213053B2 (ja) プログラム、情報処理装置およびスケジュール決定方法
US9378056B2 (en) Management server, and virtual machine move control method
JP6455035B2 (ja) 負荷分散管理装置、制御方法およびプログラム
US20130339956A1 (en) Computer system and optimal arrangement method of virtual machine in computer system
JP5831324B2 (ja) 制御装置,制御方法,プログラム及び分散処理システム
JP5815512B2 (ja) リソース管理方法、計算機システムおよびプログラム
JP6075226B2 (ja) プログラム、仮想マシン管理方法および情報処理装置
RU2697700C2 (ru) Равноправное разделение системных ресурсов в исполнении рабочего процесса
JP6248763B2 (ja) キャプチャポイント決定方法、キャプチャポイント決定システムおよびキャプチャポイント決定プログラム
US9218210B2 (en) Distributed processing system
JP6446125B2 (ja) リソースリーク検出の方法、装置及びシステム
JP6969282B2 (ja) 情報処理装置、情報処理システムおよび情報処理方法
US10067793B2 (en) Data processing method and apparatus for executing task code using reservation instruction and release instruction
Zhang et al. Scheduling bag-of-tasks applications on hybrid clouds under due date constraints
US20190179671A1 (en) Information processing apparatus and information processing system
US10013288B2 (en) Data staging management system
CN111124644B (zh) 任务调度资源的确定方法、装置及系统
JP5445739B2 (ja) リソース割当装置、リソース割当方法、及びプログラム
US20180157541A1 (en) Information processing apparatus, method for controlling same, and storage medium
JP2011192049A (ja) 仮想マシンシステム、自動マイグレーション方法および自動マイグレーションプログラム
JP2012181578A (ja) 更新制御装置及びプログラム
JP6239400B2 (ja) 制御装置
JP5613578B2 (ja) 仮想化環境リソース管理構成変更システム、及びプログラム
JP5056346B2 (ja) 情報処理装置、情報処理システム、仮想サーバの移動処理の制御方法、及び、プログラム
JP2017107486A (ja) 処理リソース制御プログラム、処理リソース制御装置、および処理リソース制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170519

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170904

R150 Certificate of patent or registration of utility model

Ref document number: 6213053

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees