(57)【要約】【課題】複数の計算機に修正ファイルを一括して適用する。【解決手段】物理計算機のリソースを分割して仮想計算機を提供する仮想化部と、物理計算機からアクセス可能なストレージ装置は仮想計算機を起動させるファイルを格納した第１記憶部と、ファイルに適用する修正ファイルを格納した第２記憶部と、を有し、仮想化部は、第１記憶部のファイルと第２記憶部の修正ファイルとの対応関係を設定したファイルリンク情報を有し、仮想計算機からストレージ装置のファイルに対するアクセスを制御するファイル制御部は、仮想計算機から第１記憶部のファイルに対するアクセスを受け付けて、ファイルリンク情報を参照してファイルに適用する修正ファイルが存在しない場合には第１記憶部から要求されたファイルを仮想計算機に提供し、当該ファイルに対応する修正ファイルが存在する場合には、第２記憶部の修正ファイルを仮想計算機に提供する。【選択図】図４
2011186915.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリを備えた物理計算機と、
前記物理計算機のリソースを分割して仮想計算機を提供する仮想化部と、
前記物理計算機からアクセス可能なストレージ装置と、を備えた仮想計算機システムであって、
前記ストレージ装置は、
前記仮想計算機を起動させる複数のファイルを格納した第１の記憶部と、
前記ファイルに適用する修正ファイルを格納した第２の記憶部と、を含み、
前記仮想化部は、
前記第１の記憶部のファイルと、当該ファイルに適用する前記第２の記憶部の修正ファイルとの対応関係を予め設定したファイルリンク情報と、
前記仮想計算機から前記ストレージ装置の前記ファイルに対するアクセスを制御するファイル制御部と、を含み、
前記ファイル制御部は、
前記仮想計算機から前記第１の記憶部のファイルに対するアクセスを受け付けて、
前記ファイルリンク情報を参照して当該ファイルに適用する修正ファイルの有無を判定し、
前記ファイルに対応する修正ファイルが存在しない場合には、前記第１の記憶部から前記要求されたファイルを前記仮想計算機に提供し、
前記ファイルに対応する修正ファイルが存在する場合には、前記第２の記憶部の修正ファイルを前記要求されたファイルとして前記仮想計算機に提供することを特徴とする仮想計算機システム。
【請求項２】
請求項１に記載の仮想計算機システムであって、
前記仮想化部は、
予め設定した条件が成立したときに前記第１の記憶部のファイルを前記第２の記憶部の修正ファイルで更新する配布部をさらに有することを特徴とする仮想計算機システム。
【請求項３】
請求項２に記載の仮想計算機システムであって、
前記配布部は、
前記第１の記憶部のファイルを前記第２の記憶部の修正ファイルで更新した後に、前記ファイルリンク情報のうち、当該ファイルと修正ファイルの対応関係を破棄することを特徴とする仮想計算機システム。
【請求項４】
請求項１に記載の仮想計算機システムであって、
前記ファイル制御部は、
前記ファイルに対応する修正ファイルが存在する場合には、前記第２の記憶部の修正ファイルと前記第１の記憶部のファイルの新旧を比較し、前記第１の記憶部のファイルが前記第２の修正ファイルよりも新しい場合には、前記第１の記憶部のファイルを前記要求されたファイルとして前記仮想計算機に提供することを特徴とする仮想計算機システム。
【請求項５】
請求項１に記載の仮想計算機システムであって、
前記物理計算機は、前記仮想化部をそれぞれ有する複数の物理計算機で構成され、
前記仮想化部と前記ストレージ装置を管理する管理計算機をさらに有し、
前記管理計算機は、
前記第２の記憶部の修正ファイルの格納位置と、当該修正ファイルを適用する前記第１の記憶部のファイルの名称を管理する修正ファイル管理情報と、
前記複数の仮想化部と、前記修正ファイル管理情報を管理する管理部を有し、
前記物理計算機の仮想化部は、
前記管理計算機の管理部から前記第２の記憶部の修正ファイルの格納位置と、当該修正ファイルを適用するファイルの名称を取得し、前記第１の記憶部で前記名称を有するファイルの格納位置を取得して、前記第１の記憶部のファイルの格納位置と、当該ファイルに適用する前記第２の記憶部の修正ファイルの格納位置との対応関係を前記ファイルリンク情報に設定することを特徴とする仮想計算機システム。
【請求項６】
請求項５に記載の仮想計算機システムであって、
前記管理計算機の管理部は、
前記第２の記憶部に新たな修正ファイルが格納されたときには、当該新たな修正ファイルを前記修正ファイル管理情報に追加し、
前記ファイル制御部に対して新たな修正ファイルを通知し、
前記仮想化部は、
前記管理部からの通知を受信して前記ファイルリンク情報を設定することを特徴とする仮想計算機システム。
【請求項７】
請求項５に記載の仮想計算機システムであって、
前記管理計算機の管理部は、
前記仮想計算機がアクセスする前記第１の記憶部を仮想計算機毎に管理する仮想計算機管理情報を管理し、
前記仮想計算機管理情報は、
前記第１の記憶部のファイルと、当該ファイルに対応する前記第２の修正ファイルの適用状態を含み、
前記配布部は、
前記第１の記憶部のファイルを前記第２の記憶部の修正ファイルで更新状況を前記管理計算機の管理部へ通知し、
前記管理部は、
前記配布部からの通知を受信して前記第１の記憶部のファイルと当該ファイルに対応する前記第２の修正ファイルの適用状態を設定することを特徴とする仮想計算機システム。
【請求項８】
プロセッサとメモリを備えた物理計算機と、
前記物理計算機のリソースを分割して仮想計算機を提供する仮想化部と、
前記物理計算機からアクセス可能なストレージ装置と、を備えた仮想計算機の制御方法であって、
前記ストレージ装置は、
前記仮想計算機を起動させる複数のファイルを格納した第１の記憶部と、
前記ファイルに適用する修正ファイルを格納した第２の記憶部と、を含み、
前記仮想化部が、前記第１の記憶部のファイルと、当該ファイルに適用する前記第２の記憶部の修正ファイルとの対応関係をファイルリンク情報に設定するステップと、
前記仮想化部のファイル制御部が、前記仮想計算機から前記第１の記憶部のファイルに対するアクセスを受け付けるステップと、
前記仮想化部が、前記ファイルリンク情報を参照して当該ファイルに適用する修正ファイルの有無を判定するステップと、
前記仮想化部が、前記ファイルに対応する修正ファイルが存在しない場合には、前記第１の記憶部から前記要求されたファイルを前記仮想計算機に提供するステップと、
前記仮想化部が、前記ファイルに対応する修正ファイルが存在する場合には、前記第２の記憶部の修正ファイルを前記要求されたファイルとして前記仮想計算機に提供するステップと、
を含むことを特徴とする仮想計算機の制御方法。
【請求項９】
請求項８に記載の仮想計算機の制御方法であって、
前記仮想化部は、予め設定した条件が成立したときに前記第１の記憶部のファイルを前記第２の記憶部の修正ファイルで更新するステップをさらに含むことを特徴とする仮想計算機の制御方法。
【請求項１０】
請求項９に記載の仮想計算機の制御方法であって、
前記仮想化部は、前記第１の記憶部のファイルを前記第２の記憶部の修正ファイルで更新した後に、前記ファイルリンク情報のうち、当該ファイルと修正ファイルの対応関係を破棄するステップをさらに含むことを特徴とする仮想計算機の制御方法。
【請求項１１】
請求項８に記載の仮想計算機の制御方法であって、
前記仮想化部が、前記ファイルに対応する修正ファイルが存在する場合には、前記第２の記憶部の修正ファイルを前記要求されたファイルとして前記仮想計算機に提供するステップは、
前記仮想化部が、前記第２の記憶部の修正ファイルと前記第１の記憶部のファイルの新旧を比較し、前記第１の記憶部のファイルが前記第２の修正ファイルよりも新しい場合には、前記第１の記憶部のファイルを前記要求されたファイルとして前記仮想計算機に提供することを特徴とする仮想計算機の制御方法。
【請求項１２】
請求項８に記載の仮想計算機の制御方法であって、
前記物理計算機は、前記仮想化部をそれぞれ有する複数の物理計算機で構成され、
前記仮想化部と前記ストレージ装置を管理する管理計算機をさらに有し、
前記管理計算機が、前記第２の記憶部の修正ファイルの格納位置と、当該修正ファイルを適用する前記第１の記憶部のファイルの名称を含む修正ファイル管理情報を設定するステップと、
前記仮想化部が、前記管理計算機の管理部から前記第２の記憶部の修正ファイルの格納位置と、当該修正ファイルを適用するファイルの名称を取得ステップと、
前記仮想化部が、前記第１の記憶部で前記名称を有するファイルの格納位置を取得するステップと、
前記仮想化部が、前記第１の記憶部のファイルの格納位置と、当該ファイルに適用する前記第２の記憶部の修正ファイルの格納位置との対応関係を前記ファイルリンク情報に設定するステップと、
をさらに含むことを特徴とする仮想計算機の制御方法。
【請求項１３】
請求項１２に記載の仮想計算機の制御方法であって、
前記管理部が、前記第２の記憶部に新たな修正ファイルが格納されたときには、当該新たな修正ファイルを前記修正ファイル管理情報に追加するステップと、
前記管理部が、前記仮想化部に対して新たな修正ファイルを通知するステップと、
前記仮想化部が、前記管理部からの通知を受信して前記ファイルリンク情報を設定するするステップと、
をさらに含むことを特徴とする仮想計算機の制御方法。
【請求項１４】
請求項１２に記載の仮想計算機の制御方法であって、
前記管理部が、前記仮想計算機がアクセスする前記第１の記憶部を仮想計算機毎に管理し、前記第１の記憶部のファイルと、当該ファイルに対応する前記第２の修正ファイルの適用状態を含む仮想計算機管理情報を設定するステップと、
前記配布部が、前記第１の記憶部のファイルを前記第２の記憶部の修正ファイルで更新状況を前記管理計算機の管理部へ通知するステップと、
前記管理部が、前記配布部からの通知を受信して前記第１の記憶部のファイルと当該ファイルに対応する前記第２の修正ファイルの適用状態を設定するステップと、
をさらに含むことを特徴とする仮想計算機の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＯＳを稼動させる仮想計算機システムにおいて、各ＯＳ等の保守を行う技術に関する。
【背景技術】
【０００２】
近年、半導体製造技術の向上によりひとつのプロセッサに複数のプロセッサコアを搭載するマルチコア化が浸透し、プロセッサの処理性能が向上している。プロセッサの処理性能向上に伴い、１つの計算機上に複数の仮想的な計算機を稼動させる仮想計算機技術を採用することで、処理能力が向上したプロセッサを効率的に利用することが可能になった。
【０００３】
仮想化技術では、計算機上に仮想化ソフトウェア、いわゆる、仮想マシンモニタ（ＶＭＭ：Virtual Machine Monitor）やハイパーバイザを動作させ、仮想化ソフトウェア上に仮想計算機を生成する。個々の仮想計算機上では、それぞれ独立したＯＳをゲストＯＳとして動作させることができる。
【０００４】
ゲストとなるＯＳでは、セキュリティホールやバグなどを解消するための修正ファイル（または修正プログラムあるいはパッチファイル）が頻繁に配布されている。多数の計算機を運用するデータセンターなどでは、複数種のＯＳに加えて、各種類毎のバージョン（例えば、２０００，２００３，２００８等）を稼動させている場合が多く、また、各バージョン内でも複数のアップデートの種類（例えば、ＳＰ１，ＳＰ２やカーネル２．６．１．４や２．６．１．６等）が複数存在し、管理者はＯＳの種類、バージョン、アップデートの種類毎に各ＯＳの修正ファイルを管理し、各ゲストＯＳに適用することが要求される。上記修正ファイルの管理と適用は、計算機の数が多くなるにつれて、管理者などの労力が過大になる。
【０００５】
このため、上記修正ファイルを各計算機へ自動的に適用する技術として、特許文献１、２の技術が知られている。特許文献１の技術では、クラスタを構成する計算機のうちパッチファイルを適用する計算機をクラスタから切り離し、切り離した後にパッチファイルを適用する。パッチファイルの適用は、各計算機に配備したエージェント等が行う。また、特許文献２の技術は、複数の装置に対して並列してアップデートファイルを配信してアップデートファイルを各装置で適用する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−０１５８９４号公報
【特許文献２】特開２００９−１４６４０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年、セキュリティ対策が重要度を増す中、修正ファイルの配布及び適用は上記従来例のように、管理計算機が修正ファイルを対象の計算機に配布し、各計算機で修正ファイルが適用する手法が一般的である。
【０００８】
修正ファイルを適用する際には、計算機の再起動が必要となる場合があり、多数の計算機を運用するデータセンタなどでは、各計算機が提供するサービスを停止させずに修正ファイルを適用する計画を設定しなければならず、ゼロデイアタックなど緊急度の高いセキュリティパッチなどの修正ファイルを至急適用する必要がある場合でも、一括して修正ファイルを適用することができない、という問題があった。
【０００９】
すなわち、一括して複数の計算機に修正ファイルを適用した場合、各計算機では修正ファイルを適用するプログラムを実行するために処理負荷が高くなり計算機のリソースが不足して修正ファイルの適用完了まで時間がかかる可能性がある。このため、計算機が提供するサービスの処理が遅延する恐れがあった。仮想計算機を利用する場合では、複数の仮想計算機に一括して修正ファイルを適用するプログラムを実行させると、物理計算機の負荷が過大になる可能性が極めて高い、という問題があった。
【００１０】
また、上記従来技術では、修正ファイルを適用する際に計算機を起動させておく必要があり、コールドスタンバイなどで停止している計算機には修正ファイルを適用することができない。このため、計算機を起動したときにゼロデイアタック等の脆弱性を有した状態で稼動せざるを得ない、という問題もあった。
【００１１】
そこで、本発明は上記問題点に鑑みてなされたもので、複数の計算機に修正ファイルを一括して適用することを目的とする。さらに、仮想計算機を用いた環境において、仮想計算機の起動する際に、修正ファイルを利用可能とすることを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、プロセッサとメモリを備えた物理計算機と、前記物理計算機のリソースを分割して仮想計算機を提供する仮想化部と、前記物理計算機からアクセス可能なストレージ装置と、を備えた仮想計算機システムであって、前記ストレージ装置は、前記仮想計算機を起動させる複数のファイルを格納した第１の記憶部と、前記ファイルに適用する修正ファイルを格納した第２の記憶部と、を含み、前記仮想化部は、前記第１の記憶部のファイルと、当該ファイルに適用する前記第２の記憶部の修正ファイルとの対応関係を予め設定したファイルリンク情報と、前記仮想計算機から前記ストレージ装置の前記ファイルに対するアクセスを制御するファイル制御部と、を含み、前記ファイル制御部は、前記仮想計算機から前記第１の記憶部のファイルに対するアクセスを受け付けて、前記ファイルリンク情報を参照して当該ファイルに適用する修正ファイルの有無を判定し、前記ファイルに対応する修正ファイルが存在しない場合には、前記第１の記憶部から前記要求されたファイルを前記仮想計算機に提供し、前記ファイルに対応する修正ファイルが存在する場合には、前記第２の記憶部の修正ファイルを前記要求されたファイルとして前記仮想計算機に提供する。
【発明の効果】
【００１３】
したがって、本発明により、各仮想計算機はファイルリンク情報に従って、共通の修正ファイル（パッチファイル）を第２の記憶部から読み込むことで、修正ファイルを適用した状態となり、仮想計算機がアクセスする第１の記憶部のファイルと第２の記憶部の修正ファイルのリンクを変更するだけで、複数の仮想計算機に対して一括して修正ファイルを適用することが可能となる。また、停止している計算機を起動させる際にも、仮想計算機がアクセスする第１の記憶部のファイルのファイルリンク情報を第２の記憶部の修正ファイルに設定しておくことで、起動する時に仮想計算機に修正ファイルを利用させ、仮想計算機に修正ファイルを適用した状態にすることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態を示し、仮想計算機システムの構成の一例を示すブロック図である。
【図２】本発明の実施形態を示し、管理サーバの構成の一例を示すブロック図である。
【図３】本発明の実施形態を示し、物理サーバの構成の一例を示すブロック図である。
【図４】本発明の実施形態を示し、仮想イメージ制御部が行うパッチファイルの提供理を示す概念図である。
【図５】本発明の実施形態を示し、仮想イメージ制御部が行うパッチファイルの配布処理を示す概念図である。
【図６】本発明の実施形態を示し、パッチ配布処理の開始からの時間経過とパッチディスクの負荷の関係を示すグラフである。
【図７】本発明の実施形態を示し、仮想化機構管理部が管理する物理サーバ管理テーブルである。
【図８】本発明の実施形態を示し、仮想化機構管理部が管理する仮想サーバ管理テーブルである。
【図９】本発明の実施形態を示し、パッチ管理部が管理するパッチ管理テーブルの一例を示す。
【図１０】本発明の実施形態を示し、パッチ管理部が管理する仮想ディスク管理テーブルの一例を示す。
【図１１】本発明の実施形態を示し、仮想化機構の仮想イメージ制御部が管理するファイルリンクテーブルの一例を示す。
【図１２】本発明の実施形態を示し、管理サーバのパッチ管理部で行われるパッチファイルの登録処理の一例を示すフローチャートである。
【図１３】本発明の実施形態を示し、管理サーバの仮想化機構管理部で行われるパッチファイルの登録処理の一例を示すフローチャートである。
【図１４】本発明の実施形態を示し、仮想化機構のファイル情報収集部で行われる処理の一例を示すフローチャートである。
【図１５】本発明の実施形態を示し、仮想イメージ制御部のファイルリマッピング部で行われる処理の一例を示すフローチャートである。
【図１６】本発明の実施形態を示し、仮想イメージ制御部のファイル制御部で行われる処理の一例を示すフローチャートである。
【図１７】本発明の実施形態を示し、仮想イメージ制御部のパッチ配布部で行われるパッチ配布処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１６】
図１は、本発明の実施形態を示し、仮想計算機システムの構成の一例を示すブロック図である。
【００１７】
仮想計算機システムは、仮想化機構（仮想化部）１１０上で複数の仮想サーバ（仮想計算機）１０９を実行する複数の物理サーバ（物理計算機）１１２と、複数の物理サーバ１１２とストレージ装置１１３を管理する管理サーバ１０１と、管理サーバ１０１と複数の物理サーバ１１２を接続するネットワーク１０８と、管理サーバ１０１と物理サーバ１１２に接続されて情報を格納するストレージ装置１１３を主体にして構成される。
【００１８】
物理サーバ１１２で稼動する仮想化機構１１０は、例えば、ハイパーバイザやＶＭＭ（Virtual Machine Monitor）などで構成されて物理サーバ１１２の計算機リソースを分割し、仮想サーバ１０９に割り当てる。複数の物理サーバ１１２は同一の構成であり、各物理サーバ１１２は、符号＃１〜＃３で識別する。また、各仮想サーバ１０９も同様の構成であり符号＃１〜＃６で識別する。図示の例では、物理サーバ＃１で仮想サーバ＃１と仮想サーバ＃２が実行されている状態を示す。
【００１９】
ストレージ装置１１３は、複数のディスク装置（物理ディスク）１１４、１１５を備え、各ディスク装置１１４には仮想ディスク１２０、１２５が設定される。ディスク装置１１４に設定された仮想ディスク１２０には仮想サーバ１０９のブートイメージが格納される。ブートイメージは、仮想サーバ１０９で実行されるＯＳやミドルウェア及びアプリケーション等のシステムファイルを含むことができる。なお、ひとつの仮想サーバ１０９には少なくとも一つの仮想ディスク１２０が割り当てられる。
【００２０】
また、ディスク装置１１５に設定された仮想ディスク１２５には、仮想サーバ１０９で実行されるＯＳ等のパッチファイル（修正ファイル）が格納されて、パッチディスクとして機能する。図示の例では、仮想ディスク＃６、＃７がパッチディスクである。以下の説明では、仮想ディスク１２５をパッチディスク１２５として説明する。パッチディスク１２５には、各仮想サーバ１０９で実行されるＯＳ等の共通のパッチファイルを格納する。後述するように、仮想化機構１１０の仮想イメージ制御部１１１の制御により各仮想サーバ１０９は、必要に応じてブートイメージに代わってパッチディスクからファイルを読み込むことで、パッチファイルを適用した状態で稼動する。このため、パッチディスク１２５に格納されたパッチファイルは、複数の仮想サーバ１０９が読み込むため共通のパッチファイルとして機能する。なお、パッチファイルは、ＯＳの種類やバージョンまたはアップデートのレベルなどに応じた修正ファイルが格納され、後述のパッチ管理部１０３によってパッチファイルの利用が管理される。
【００２１】
管理サーバ１０１は、物理サーバ１１２及び仮想サーバ１０９と仮想ディスク１２０、１２５を管理する。このため、管理サーバ１０１は、各物理サーバ１１２の仮想化機構１１０を管理する仮想化機構管理部１０２と、各物理サーバ１１２のリソースや稼動状態を管理する物理サーバ管理テーブル１０４と、各仮想サーバ１０９に割り当てるリソースと稼動状態を管理する仮想サーバ管理テーブル１５と、仮想サーバ１０９にパッチファイルを適用するパッチ管理部１０３と、パッチディスク１２５に格納したパッチファイルを管理するパッチ管理テーブル１０６と、仮想ディスク１２０毎にパッチファイルの適用状態を管理する仮想ディスク管理テーブル１０７を含んで構成される。
【００２２】
図２は、本発明の実施形態を示し、管理サーバ１０１の構成の一例を示すブロック図である。管理サーバ１０１は、演算処理を行うプロセッサ２０２と、データやプログラムを格納するメモリ２０１と、ネットワーク１０８にアクセスするネットワークインターフェース２０３と、ストレージ装置１１３にアクセスするディスクインターフェース２０４を備える。
【００２３】
メモリ２０１には、仮想化機構管理部１０２とパッチ管理部１０３がプログラムとしてロードされてプロセッサ２０２に実行されており、上述の各テーブル１０４〜１０７が仮想化機構管理部１０２とパッチ管理部１０３によってメモリ２０１に格納される。
【００２４】
図３は、本発明の実施形態を示し、物理サーバ１１２の構成の一例を示すブロック図である。物理サーバ１１２のハードウェア構成は、管理サーバ１０１と同様であり、プロセッサ２０２と、メモリ２０１と、ネットワークインターフェース２０３と、ディスクインターフェース２０４を備え、メモリ２０１に格納するプログラム及びデータが管理サーバ１０１とは異なる。
【００２５】
物理サーバ１１２のメモリ２０１には、物理サーバ１１２の計算機リソースを複数の仮想サーバ１０９に割り当てる仮想化機構１１０がロードされて、プロセッサ２０２により実行される。仮想化機構１１０上では複数の仮想サーバ１０９が実行され、各仮想サーバ１０９では、ＯＳ３０１とアプリケーション（図示省略）が実行される。仮想化機構１１０は、管理サーバ１０１の指令によって、物理サーバ１１２の計算機リソースを分割して複数の仮想サーバ１０９に割り当てる。また、仮想化機構１１０は、管理サーバ１０１からの指令によって仮想サーバ１０９に接続するストレージ装置１１３内の仮想ディスク１２０を割り当て、仮想サーバ１０９は割り当てられた仮想ディスク１２０からＯＳ３０１を含むブートイメージを読み込んで起動する。なお、仮想化機構１１０は、
仮想化機構１１０は、仮想サーバ１０９にパッチディスク１２５のパッチファイルを適用するか否かを判定し、必要に応じて仮想サーバ１０９にパッチファイルを読ませる仮想イメージ制御部１１１を備える。仮想イメージ制御部１１１は、当該物理サーバ１１２上の仮想サーバ１０９毎に適用するパッチファイルの格納位置（所在）と、パッチファイルを適用するブートイメージのファイル（システムファイル）を予め設定したファイルリンクテーブル３０６と、仮想サーバ１０９毎の仮想ディスク１２０へのアクセスがあったときに、ファイルリンクテーブル３０６を参照してパッチファイルの適用の要否を判定し、適用する必要がある場合にはパッチディスク１２５のパッチファイルを仮想サーバ１０９に読ませるファイル制御部３０２と、仮想サーバ１０９毎にパッチファイルを適用する仮想ディスクとファイルの所在を取得するファイル情報収集部３０３と、所定の条件を満足したときにパッチファイルを仮想ディスク１２０に書き込むパッチ配布部３０５と、パッチファイルを適用するファイルとパッチファイルの関係をファイルリンクテーブル３０６に書き込むファイルリマッピング部３０４と、を含む。
【００２６】
＜処理の概要＞
次に、仮想化機構１１０に含まれる仮想イメージ制御部１１１の概要について、図４，図５を参照しながら説明する。図４は、仮想イメージ制御部１１１が行うパッチファイルを仮想サーバに提供する処理を示す概念図である。図５は、仮想イメージ制御部１１１が行うパッチファイルの配布処理を示す概念図である。
【００２７】
図４において、ストレージ装置１１３内の仮想ディスク１２５には、管理サーバ１０１が予め複数の仮想サーバ１０９で共用するパッチファイル２００を格納し、また、各仮想サーバ１０９に割り当てる仮想ディスク１２０に所定のブートイメージを格納しておく。
【００２８】
図４、図５の例では、管理サーバ１０１の仮想化機構管理部１０２からの指令によって図１に示した物理サーバ＃１の仮想化機構１１０が、仮想サーバ＃１、＃２を割り当て、仮想サーバ＃１に仮想ディスク＃１を割り当てた例を示す。なお、仮想化機構１１０が物理サーバ＃１に計算機リソースを割り当てる技術については、公知乃至周知の技術を適用すればよいので、ここでは詳述しない。
【００２９】
また、仮想化機構管理部１０２は、パッチファイル２００を適用すべき仮想ディスク１２０の情報を仮想ディスク管理テーブル１０７に格納し、この仮想ディスク管理テーブル１０７に仮想サーバ＃１に割り当てた仮想ディスク＃１のパッチファイル２００の適用状況を格納しておく。
【００３０】
物理サーバ＃１上の仮想イメージ制御部１１１のファイル情報収集部３０３は、後述するように管理サーバ１０１からパッチファイル２００を適用するパッチ対象ファイル２１０の格納位置（ファイルパス、仮想ディスク識別子）を取得してファイルリンクテーブル３０６にパッチ用i-node情報として格納し、仮想サーバ＃１に割り当てた仮想ディスク＃１でパッチファイル２００を適用するファイルの位置を管理サーバ１０１の仮想ディスク管理テーブル１０７から取得してi-node情報として格納する（Ｓ１）。なお、以下では、仮想ディスク＃１でパッチファイル２００を適用する必要があるファイルをパッチ対象ファイル２１０とする。また、以下の説明では、仮想サーバ＃１のブートイメージ及びパッチ対象ファイル２１０を格納した仮想ディスク１２０をオリジナルディスクとし、パッチファイル２００を格納した仮想ディスク１２５をパッチディスクとする。
【００３１】
管理サーバ１０１が物理サーバ＃１の仮想化機構１１０に仮想サーバ＃１を割り当て、仮想サーバ＃１に仮想ディスク＃１を割り当てると、仮想サーバ＃１が起動する以前に、管理サーバ１０１の仮想ディスク管理テーブル１０７と、物理サーバ＃１の仮想化機構１１０のファイルリンクテーブル３０６が更新される。
【００３２】
仮想サーバ＃１を起動すると、仮想イメージ制御部１１１のファイル制御部３０２が機能する。仮想サーバ＃１がオリジナルディスク（仮想ディスク＃１）にアクセスすると、ファイル制御部３０２はファイルリンクテーブル３０６を参照して、仮想サーバ＃１のアクセス要求がオリジナルディスクのパッチ対象ファイル２１０であるか否かを判定する。
【００３３】
ファイル制御部３０２は、アクセス要求がパッチ対象ファイル２１０でなければ、通常の仮想化機構１１０の処理と同様に、要求された仮想ディスク＃１のファイルへのアクセスを許可する（Ｓ２）。
【００３４】
一方、ファイル制御部３０６は、アクセス要求がパッチ対象ファイル２１０であれば、本発明の仮想化機構１１０の処理として、要求された仮想ディスク＃１へのアクセスに代わって、パッチディスクに格納されたファイルへのアクセスを許可する（Ｓ３）。本実施形態では、ファイル制御部３０６が仮想ディスク＃１へのアクセス要求を実行して仮想サーバ＃１へ応答する例を示す。しかしながら、ファイル制御部３０６が、仮想サーバ＃１がアクセスする仮想ディスクのパスを切り替えるようにしても良い。すなわち、ファイル制御部３０６は、アクセス要求がパッチ対象ファイル２１０でなければ、通常の仮想化機構１１０の処理と同様に、要求された仮想ディスク＃１のファイルへのアクセスを許可して、仮想サーバ＃１に仮想ディスク＃１のファイルをアクセスさせる。一方、ファイル制御部３０６は、アクセス要求がパッチ対象ファイル２１０であれば、要求された仮想ディスク＃１へのアクセスパスをパッチディスクに切り替えて、仮想サーバ＃１にパッチファイル２００をアクセスさせるようにしても良い。
【００３５】
したがって、仮想サーバ＃１は、仮想ディスク＃１にアクセスする際に、パッチ対象ファイル２１０へアクセスした場合、パッチディスクからのパッチファイル２００へアクセスすることになる。このとき、仮想イメージ制御部１１１は、仮想サーバ＃１のパッチ対象ファイル２１０へのアクセスに対して、オリジナルディスクのパッチ対象ファイル２１０を隠蔽して、パッチファイル２００を提供することになる。
【００３６】
仮想イメージ制御部１１１は、上記の処理によって、オリジナルディスクにパッチファイル２００を書き込むことなく、仮想サーバ＃１をパッチファイル２００の適用後と同等の環境で稼動させることができる。
【００３７】
したがって、本発明の仮想イメージ制御部１１１は、セキュリティホールに対する緊急の修正がパッチファイル２００として提供されると、まず、管理者などが管理サーバ１０１からパッチディスクへパッチファイル２００を格納する。次に、仮想化機構管理部１０２は、仮想サーバ管理テーブル１０５のパッチファイルの適用状態からパッチファイル２００を適用する仮想サーバを決定し、パッチファイル２００を適用すべきパッチ対象ファイル２１０を格納したオリジナルディスクを、後述するように仮想イメージ制御部１１１のファイル情報収集部３０３に問い合わせ、パッチディスクのパッチファイル２００の情報と、ファイル情報収集部３０３が取得したオリジナルディスクの情報からパッチファイル２００を適用する仮想ディスク１２０（オリジナルディスク）とパッチ対象ファイル２１０を特定し、仮想イメージ制御部１１１のファイルリマッピング部３０４にファイルリンクテーブル３０６を更新するよう指令しておく。これにより、仮想イメージ制御部１１１のファイルリマッピング部３０４がファイルリンクテーブル３０６を更新し、パッチファイル２００を適用するパッチ対象ファイル２１０の関係が各物理サーバ１１２の仮想化機構１１０に定義される。
【００３８】
次に、仮想ディスク管理テーブル１０７でパッチファイル２００の適用が設定されたオリジナルディスクのパッチ対象ファイル２１０に対して仮想サーバがアクセスすると、仮想イメージ制御部１１１はパッチ対象ファイル２１０に代わって修正されたファイルとしてのパッチファイル２００を提供する。これにより、パッチファイル２００をパッチディスクに格納してから仮想イメージ制御部１１１がファイルリンクテーブル３０６を更新するだけで、仮想サーバは、パッチファイル２００を提供した後の状態で稼動することが可能となる。そして、オリジナルディスクにパッチ対象ファイル２１０をパッチファイル２００に置き換える配布処理を行うことなく、仮想サーバ上のＯＳ３０１やアプリケーションにパッチファイル２００を即座に提供することが可能となる。
【００３９】
上記図４では、ひとつの仮想サーバ＃１に対してパッチファイル２００を提供する例を示したが、ひとつのパッチファイル２００は管理サーバ１０１が管理する複数の仮想化機構１１０上の複数の仮想サーバ１０９で共用することができる。したがって、パッチディスクのパッチファイル２００を仮想サーバ１０９間の共通のパッチファイルとして扱うことができる。例えば、図４の仮想サーバ＃１〜＃３のパッチ対象ファイル２１０としてパッチディスクのパッチファイル２００をファイルリンクテーブル３０６に定義しておくだけで、仮想サーバ＃１〜＃３がオリジナルディスクのパッチ対象ファイル２１０へそれぞれアクセスすると、仮想イメージ制御部１１１は、各オリジナルディスクのパッチ対象ファイル２１０に代わってパッチディスクのパッチファイル２００を応答する。このように、オリジナルディスクのパッチ対象ファイル２１０を更新する以前に、複数の仮想サーバに対して一括してパッチファイル２００を適用することができる。
【００４０】
さらに、本発明では、オリジナルディスクのパッチ対象ファイル２１０をパッチファイル２００で更新する以前に、仮想サーバ１０９にパッチファイル２００を実行させることができるので、停止している仮想サーバにもパッチファイル２００を利用させることができる。つまり、仮想ディスク管理テーブル１０７とファイルリンクテーブル３０６に、パッチ対象ファイル２１０に代わるパッチファイル２００の位置情報（i-node情報）を登録しておけば、仮想イメージ制御部１１１は、仮想サーバの起動時からパッチ対象ファイル２１０を隠蔽してパッチファイル２００を提供することができるので、前記従来例に比して、ＯＳ３０１やアプリケーションのゼロデイアタックなどに対抗してセキュリティを確保することが可能となる。
【００４１】
上述のように、仮想イメージ制御部１１１がオリジナルディスクのパッチ対象ファイル２１０を隠蔽して、パッチファイル２００の提供を代理していると、ひとつのＯＳやアプリケーションに対するパッチファイル２００が蓄積されてファイル制御部３０２の処理が増大する。このため、仮想イメージ制御部１１１は、所定の条件が成立したときに、図５で示すように、オリジナルディスクのパッチ対象ファイル２１０をパッチディスクのパッチファイル２００に置き換えるパッチ配布処理を実行する。
【００４２】
図５は、仮想イメージ制御部１１１のパッチ配布部３０５が行うパッチ配布処理の概要を示す。
【００４３】
パッチ配布部３０５は、パッチファイル２００を適用していないパッチ対象ファイル２１０がオリジナルディスクに存在する場合、物理サーバ＃１のリソースの負荷を監視して、物理サーバ＃１の負荷が閾値未満になると、オリジナルディスクのパッチ対象ファイル２１０をパッチファイル２００で更新し、パッチの適用を実施する。なお、物理サーバ＃１のリソースの負荷としてはプロセッサ２０２（物理プロセッサ）の使用率や、ストレージ装置１１３やネットワーク１２０の使用率を用いることができる。
【００４４】
この処理は、ひとつの物理サーバ＃１で複数の仮想サーバが稼働する場合、物理サーバ＃１の負荷が低いときにパッチ対象ファイル２１０をオリジナルディスクに配布することで、複数の仮想サーバが提供する複数のサービスが遅延するのを防ぐことができる。また、本発明では、パッチ対象ファイル２１０をオリジナルディスクに書き込むことなくパッチファイル２００を仮想サーバ＃１に適用できるので、オリジナルディスクにパッチファイル２００を書き込む処理は、即座に行う必要がない。そこで、パッチ配布部３０５は、複数の仮想サーバ１０９に対してパッチファイル２００を書き込む時期を、物理サーバ＃１のリソースに対する負荷が予め定めた閾値未満のときにパッチファイル２００の配布と適用を開始する。
【００４５】
また、物理サーバ＃１に多数の仮想サーバ１０９が稼動している場合に並列的にパッチ配布を行ったときのパッチディスクの負荷は、図６に示すようになる。
【００４６】
図６は、パッチ配布処理の開始からの時間経過とパッチディスクの負荷の関係を示すグラフである。パッチディスクの負荷は、例えば、単位時間当たりのデータ転送量（ＭＢ／Ｓ）等で表すことができる。複数の仮想ディスク１２０へのパッチファイル２００の配布開始当初は、パッチディスクの負荷が大きくなるが、仮想サーバ１０９（仮想ディスク１２０）へのパッチファイル２００の配布が進行するにつれて、徐々にパッチディスクの負荷は低減していくことになる。
【００４７】
＜処理の詳細＞
次に、本発明の仮想計算機システムで行われる処理の詳細について以下に説明する。
【００４８】
図７は、仮想化機構管理部１０２が管理する物理サーバ管理テーブル１０４である。物理サーバ管理テーブル１０４は、物理サーバ１１２の識別子を格納する物理サーバ識別子７０１と、プロセッサ２０２の性能に関する情報を格納するＣＰＵ７０２と、メモリ２０１の容量を格納するメモリ７０３と、物理サーバ１１２が備えるＩ／Ｏデバイスに付与された識別子を格納するデバイス７０４と、物理サーバ１１２に割り当てられたストレージ装置１１３のディスク装置１１４の識別子及び容量を格納する接続ディスク７０５からひとつのレコードが構成される。
【００４９】
物理サーバ識別子７０１には、仮想化機構管理部１０２が付与した識別子（例えば、＃１〜＃３）が格納される。ＣＰＵ７０２にはプロセッサ２０２の動作周波数とコア数が格納され、メモリ７０３にはメモリ２０１の容量が格納される。デバイス７０４には、物理サーバ１１２が備える（あるいは、接続された）全てのＩ／Ｏデバイスの識別子が格納され、Ｉ／Ｏデバイスの種類がネットワークインターフェイスの場合はＭＡＣアドレスが格納され、ＨＢＡ（Host Bus Adaptor）の場合にはＷＷＮが格納される。接続ディスク７０５には、ストレージ装置１１３のディスク装置１１４のうち、物理サーバ１１２がアクセス可能なディスク装置１１４の識別子と容量が格納される。
【００５０】
図８は、仮想化機構管理部１０２が管理する仮想サーバ管理テーブル１０５である。仮想サーバ管理テーブル１０５は、物理サーバ１１２上で稼動する仮想化機構１１０の識別子を格納する仮想化機構識別子８０１と、仮想化機構１１０が実行される物理サーバ１１２の識別子を格納する物理サーバ識別子８０２と、仮想化機構１１０が提供する仮想サーバ１０９の識別子を格納する仮想サーバ識別子８０３と、仮想サーバ１０９に割り当てた物理サーバ１１２及びストレージ装置１１３のリソースを格納する割り当てリソース８０４と、仮想サーバ１０９が実行するＯＳの種類やバージョンを格納するＯＳ種類８０５と、仮想サーバ１０９が実行するＯＳに適用したパッチの識別子を格納する適用済みパッチ８０６と、仮想サーバ１０９の稼動状態を格納するステータス８０７からひとつのレコードが構成される。
【００５１】
仮想化機構識別子８０１には仮想化機構管理部１０２が付与した仮想化機構１１０の識別子（例えば、＃１〜＃３）が格納される。仮想サーバ識別子８０３には、仮想化機構管理部１０２が付与した仮想サーバ１０９の識別子（例えば、＃１〜＃６）が格納される。図８の例では、図１に示した物理サーバ＃２の仮想サーバ＃４が割り当てられていない状態を示す。
【００５２】
割り当てリソース８０４には、仮想サーバ１０９に割り当てられたプロセッサの性能情報（例えば、動作周波数×コア数）と、メモリ容量と、Ｉ／Ｏデバイスの識別子と、仮想ディスクの識別子が格納される。図８の例では、物理サーバ＃１では、仮想サーバ＃１に仮想ディスク＃１が割り当てられ、仮想サーバ＃２に仮想ディスク＃２が割り当てられた例を示している。
【００５３】
ＯＳ種類８０５について、図８の例では、仮想サーバ＃１、＃２、＃５がＯＳ＿Ａを実行し、仮想サーバ＃３、＃６がＯＳ＿Ｂを実行する例を示す。適用済みパッチ８０６には、仮想サーバ１０９で実行するＯＳ３０１に適用済みのパッチの識別子が格納される。図８の例では、ＯＳ＿Ａには、パッチ１、３が存在し、ＯＳ＿Ｂにはパッチ２が存在し、仮想サーバ＃１のＯＳ＿Ａにはパッチ１のみが適用されてパッチ３が未適用であることを示し、仮想サーバ＃６のＯＳ＿Ｂはパッチが未適用であることを示す。なお、各パッチ１〜３の識別子には、後述するように、少なくとも一つのパッチファイル２００が関連づけられている。
【００５４】
ステータス８０７には、仮想サーバ１０９が稼動中か否かの情報が格納されており、図８の例では仮想サーバ＃１、＃２、＃３、＃６が稼動中であることを示す。
【００５５】
図９は、パッチ管理部１０３が管理するパッチ管理テーブル１０６の一例を示す。パッチ管理テーブル１０６は、図８の仮想サーバ管理テーブル１０５の適用済みパッチ８０６に使用するパッチ識別子９０１と、当該パッチ識別子が対象とするＯＳの種類を格納する対象ＯＳ９０２と、パッチファイル２００を適用するファイル名を格納する対象ファイル名９０３と、パッチファイル２００を格納した仮想ディスクの識別子を格納するディスクボリューム９０４と、パッチファイル２００の所在（ファイルパス、i-node情報など）を格納するパッチファイル情報９０５からひとつのレコードが構成される。
【００５６】
図９の例では、パッチ３がＯＳ＿Ａを対象としたパッチファイル群で、仮想ディスク＃６に格納され、パッチファイル２００を適用するパッチ対象ファイル２１０が「３＿ｆｉｌｅ＿００」〜「３＿ｆｉｌｅ＿０６」であり、これらのパッチファイルの所在が「１３＿ｆｉｌｅｉｎｆｏ＿００」〜「１３＿ｆｉｌｅｉｎｆｏ＿０６」で示されることを示している。パッチ管理テーブル１０６は、管理サーバ１０１の管理者などがパッチ管理部１０３を介して予め作成することができる。
【００５７】
図１０は、パッチ管理部１０３が管理する仮想ディスク管理テーブル１０７の一例を示す。仮想ディスク管理テーブル１０７は、仮想サーバ１０９のブートイメージを格納した仮想ディスク１２０の識別子（例えば、＃１〜＃５）を格納する仮想ディスク識別子１００１と、当該仮想ディスクを格納するディスク装置１１４の識別子を格納するディスクボリューム１００２と、当該仮想ディスクに対して適用するパッチ識別子を格納するリンクパッチ１００３と、当該パッチ識別子に対応するパッチファイルのパッチファイル情報（図９の９０５に対応）を格納するファイル情報１００４と、当該ファイル情報に示されるパッチファイルが仮想ディスクに適用されたか否かを示すステータス１００５からひとつのレコードが構成される。
【００５８】
図１０の例では、仮想ディスク＃２〜＃４には、適用すべきパッチが無いことを示す「ＮＵＬＬ」が格納され、仮想ディスク＃１にはパッチ３を適用することが格納され、仮想ディスク＃５にはパッチ２を適用することが格納される。さらにステータス１００５では、パッチ３の「１３＿ｆｉｌｅｉｎｆｏ＿００」、「１３＿ｆｉｌｅｉｎｆｏ＿０１」が仮想ディスク＃１への適用が完了したことを示し、「１３＿ｆｉｌｅｉｎｆｏ＿０２」が仮想ディスク＃１に適用中であることを示し、「１３＿ｆｉｌｅｉｎｆｏ＿０３」〜「１３＿ｆｉｌｅｉｎｆｏ＿０６」は仮想ディスク＃１への適用が未了であることを示す。
【００５９】
図１１は、各仮想化機構１１０の仮想イメージ制御部１１１が管理するファイルリンクテーブル３０６の一例を示す。ファイルリンクテーブル３０６は、ブートイメージを格納した仮想ディスク１２０を利用する仮想サーバ１０９と、仮想ディスク１２０内でパッチを適用する対象のファイルと、パッチファイルの関係を管理するテーブルである。
【００６０】
ファイルリンクテーブル３０６は、パッチファイルを適用する仮想サーバ１０９の識別子を格納する仮想マシン識別子１１０１と、適用するパッチの識別子を格納するパッチ識別子１１０２と、パッチファイルを適用する仮想ディスク１２０上のファイル名を格納する対象ファイル名１１０３と、パッチファイルを適用する仮想ディスク１２０の識別子を格納するオリジナルディスクボリューム１１０４と、仮想ディスク１２０上のパッチ対象ファイル２１０の所在を格納するオリジナルファイル情報１１０５と、適用するパッチファイルを格納した仮想ディスク１２５の識別子を格納するパッチディスクボリューム１１０６と、パッチファイルの所在を格納するパッチファイル情報１１０７からひとつのレコードが構成される。
【００６１】
図１１の例では、仮想サーバ＃１に割り当てられた仮想ディスク＃１にパッチ３の７つのパッチファイルを適用することを示し、適用するパッチファイルが仮想ディスク＃６に格納されていることを示す。なお、仮想サーバ＃２の各項目には「ＮＵＬＬ」が格納され、適用するパッチファイルが存在しないことを示している。
【００６２】
図１２は、管理サーバ１０１のパッチ管理部１０３で行われるパッチファイルの登録処理の一例を示すフローチャートである。この処理は、管理サーバ１０１の管理者などの指令に応じて実行する処理で、管理者などがパッチファイル２００をパッチディスク（仮想ディスク１２５）へ登録するときに起動される。
【００６３】
ステップ１４０１では、管理サーバ１０１のパッチ管理部１０３が、管理者の指令に含まれるパッチファイル２００の所在と格納先のパッチディスク（仮想ディスク１２５）及び格納位置（パッチファイル情報９０５）を受け付けて、指定されたパッチファイルを指定された仮想ディスク１２５の格納位置へ書き込む。なお、管理者は、パッチファイル２００の対象ＯＳ９０２と、パッチ識別子９０１、パッチの対象ファイル名９０３と、パッチファイルの格納先となる仮想ディスク１２５（ディスクボリューム９０４）及び格納位置を管理サーバ１０１に指令する。
【００６４】
ステップ１４０２では、パッチ管理部１０３が、仮想ディスク１２５の上記格納位置へ書き込んだパッチファイル２００の情報をパッチ管理テーブル１０６に登録する。この処理により、パッチ管理テーブル１０６には新たなレコードが生成され、パッチファイル２００が登録される。
【００６５】
ステップ１４０３では、パッチ管理部１０３は、パッチ管理テーブル１０６に追加した新たなパッチ識別子９０１を仮想化機構管理部１０２に通知する。
【００６６】
以上の処理により、新たなパッチファイル２００が仮想ディスク１２５に格納され、パッチ管理テーブル１０６に新たなレコードが追加される。なお、上記ステップ１４０３の通知処理は、後述する図１３のステップ１３０１で、仮想化機構管理部１０２からの問い合わせがあったときに、新たなパッチ識別子及びパッチファイル２００を通知するようにしても良い。
【００６７】
次に、図１３は、仮想化機構管理部１０２で行われるパッチファイルの登録処理の一例を示すフローチャートである。この処理は、パッチファイルの登録時に管理者などの指令によって起動する。あるいは、上記図１２の処理が終わった後に、図１３の処理を実行するようにしてもよい。
【００６８】
ステップ１３０１では、仮想化機構管理部１０２がパッチ管理部１０３からパッチファイル２００の情報（パッチ識別子９０１、対象ＯＳ９０２、対象ファイル名９０３等）を取得する。パッチ管理部１０３は、仮想化機構管理部１０２からの問い合わせに対して、パッチ管理テーブル１０６に登録されているパッチファイル２００の情報を通知する。パッチ管理部１０３は、パッチ管理テーブル１０６へ新たに加えられたパッチファイル２００のみを通知しても良いし、パッチ管理テーブル１０６の全てのパッチ管理テーブル１０６を通知しても良い。なお、パッチ管理テーブル１０６には、新たに登録したパッチファイル２００を仮想化機構管理部１０２へ通知したか否かを示すフラグ（図示省略）を設けて、通知すべきパッチファイル２００を識別することができる。
【００６９】
ステップ１３０２以降では、上記ステップ１３０１で取得したパッチファイル２００の数と仮想サーバ管理テーブル１０５の仮想サーバの数に応じてステップ１３０２〜１３０９の処理を繰り返す。なお、仮想化機構管理部１０２は、取得したパッチファイル２００が複数ある場合には、ひとつを着目しているパッチファイル２００として選択し、以降の処理を各パッチファイル２００毎に繰り返す。
【００７０】
まず、ステップ１３０２では、仮想化機構管理部１０２が、図８の仮想サーバ管理テーブル１０４を最初のレコードから順次参照し、ステップ１３０３で、仮想サーバで実行するＯＳ種類８０５が、上記ステップ１３０１で取得したパッチファイル２００の対象ＯＳ９０２に一致し、かつ、現在着目しているパッチファイル２００のパッチ識別子９０１が未適用であるか否かを判定する。仮想化機構管理部１０２は、仮想サーバ管理テーブル１０５を参照し、取得したパッチファイル２００のパッチ識別子９０１が適用済みパッチ８０６に含まれていなければ未適用の仮想サーバ１０９であると判定する。
【００７１】
仮想サーバ１０９で実行するＯＳ種類８０５とパッチファイル２００の対象となるＯＳ種類８０５が一致し、パッチファイル２００が未適用の場合には当該仮想サーバ１０９の識別子（仮想サーバ識別子８０３）を対象の仮想サーバ識別子としてステップ１３０４へ進み、一致しない場合または適用済みの場合にはステップ１３０９へ進む。
【００７２】
ステップ１３０４では、仮想化機構管理部１０２が、対象ＯＳ９０２に一致するＯＳ３０１を実行する仮想サーバ１０９を提供する仮想化機構１１０のファイル情報収集部３０３に対して、対象仮想サーバ識別子で、パッチファイル２００を適用するパッチ対象ファイル２１０（対象ファイル名９０３）の所在を取得するよう要求する。ファイル情報収集部３０３は、後述するように、上記仮想サーバ１０９に割り当てられた仮想ディスク１２０に格納されたファイルのうち、対象ファイル名９０３に該当するパッチ対象ファイルの所在と仮想ディスク１２０の識別子を取得する。
【００７３】
ステップ１３０５では、仮想化機構管理部１０２は、上記仮想化機構１１０からファイル情報収集部３０３が収集した仮想ディスク１２０内の対象ファイル名９０３の所在と仮想ディスク１２０の識別子を取得する。
【００７４】
ステップ１３０６では、仮想化機構管理部１０２が、対象仮想サーバ識別子と、現在着目しているパッチファイル２００のパッチ識別子９０１、仮想ディスク１２５の識別子（ディスクボリューム９０４）、パッチファイル２００の所在（パッチファイル情報９０５）と、対象ファイル名９０３と、ステップ１３０５で取得した対象ファイル名９０３の所在と仮想ディスク１２０の識別子を、仮想化機構１１０のファイルリマッピング部３０４に通知し、ファイルリンクテーブル３０６の更新を要求する。
【００７５】
ステップ１３０７では、仮想化機構管理部１０２は、ファイルリマッピング部３０４からファイルリンクテーブル３０６の内容の更新が完了したことを受信する。
【００７６】
ステップ１３０８では、仮想化機構管理部１０２は、現在着目しているパッチファイル２００の情報を仮想ディスク管理テーブル１０７に加える。すなわち、仮想化機構管理部１０２は、現在着目しているパッチファイル２００を適用する仮想ディスク１２０の識別子を仮想ディスク管理テーブル１０７の仮想ディスク識別子１００１に格納し、パッチファイル２００を適用する仮想ディスク１２０の識別子をディスクボリューム１００２に格納し、パッチファイル２００のパッチ識別子をリンクパッチ１００３に格納し、パッチファイル２００の所在（パッチファイル情報９０５）をファイル情報１００４に加え、ステータス１００５に「未適用」をセットする。
【００７７】
ステップ１３０９では、仮想化機構管理部１０２は、全ての仮想サーバ１０９と、ステップ１３０１で取得した全てのパッチファイル２００について上記処理が完了したか否かを判定する。全ての仮想サーバ１０９及び全てのパッチファイル２００について完了していなければ、次のパッチファイル２００または次の仮想サーバ１０９について上記処理を繰り返す。一方、全ての仮想サーバ１０９及び全てのパッチファイル２００について上記処理が完了していればこのフローチャートを終了する。
【００７８】
次に、図１４は、上記ステップ１３０４、１３０５で行われる仮想化機構１１０のファイル情報収集部３０３で行われる処理の一例を示すフローチャートである。
【００７９】
ステップ１５０１では、ファイル情報収集部３０３が仮想化機構管理部１０２からパッチファイル２００を適用するパッチ対象ファイル２１０の名称（対象ファイル名９０３）と、対象となる仮想サーバ識別子を受け付ける。
【００８０】
ステップ１５０２では、ファイル情報収集部３０３は、パッチ適用の対象となる仮想サーバ識別子に割り当てられている仮想ディスク１２０（オリジナルディスク）で、対象ファイル名９０３に一致するファイル名を検索し、一致したファイルの所在をパッチ対象ファイル２１０の所在とし、パッチ対象ファイル２１０を格納する仮想ディスク１２０の識別子を特定する。
【００８１】
ステップ１５０３で、ファイル情報収集部３０３は、上記ステップ１５０２で特定したパッチ対象ファイル２１０の所在と仮想ディスク１２０（オリジナルディスク）の識別子を仮想化機構管理部１０２に通知して処理を終了する。
【００８２】
次に、図１５は、上記ステップ１３０６、１３０７で行われる仮想イメージ制御部１１１のファイルリマッピング部３０４で行われる処理の一例を示すフローチャートである。
【００８３】
ステップ１６０１では、ファイルリマッピング部３０４が仮想化機構管理部１０２から対象の仮想サーバ識別子と、パッチファイル２００のパッチ識別子９０１と、仮想ディスク１２５（パッチディスク）の識別子（ディスクボリューム９０４）と、パッチファイル２００の所在（パッチファイル情報９０５）と、対象ファイル名９０３と、ステップ１３０５で取得したパッチ対象ファイル２１０の所在と仮想ディスク１２０の識別子を受信する。
【００８４】
ステップ１６０２では、ファイルリマッピング部３０４は、対象の仮想サーバ識別子を仮想マシン識別子１１０１に格納し、パッチファイル２００のパッチ識別子９０１をパッチ識別子１１０２に、対象ファイル名９０３を対象ファイル名１１０３に、仮想ディスク１２０の識別子をオリジナルディスクボリューム１１０４に、パッチ対象ファイル２１０の所在をオリジナルファイル情報１１０５に、仮想ディスク１２５（パッチディスク）の識別子（ディスクボリューム９０４）をパッチディスクボリューム１１０６に、パッチファイル２００の所在（パッチファイル情報９０５）をパッチファイル情報１１０７に格納して、ファイルリンクテーブル３０６を更新する。
【００８５】
以上の処理により、パッチ管理テーブル１０６に登録されたパッチファイル２００のうち、仮想サーバ１０９に適用されていないパッチ対象ファイル２１０とパッチファイル２００がファイルリンクテーブル３０６に登録される。
【００８６】
図１６は、上記図４に示した仮想イメージ制御部１１１のファイル制御部３０２で行われる処理の一例を示すフローチャートである。この処理は、仮想サーバ１０９上で稼動するＯＳ３０１やアプリケーションからファイルのアクセスがあったときに実行される。
【００８７】
ステップ１２０１では、ファイル制御部３０２が仮想サーバ１０９のＯＳ３０１またはアプリケーションからファイルのアクセス要求を受け付ける。
【００８８】
ステップ１２０２では、ファイル制御部３０２は上記受け付けたファイルのファイル名を取得してファイルリンクテーブル３０６を参照する。
【００８９】
ステップ１２０３では、ファイル制御部３０２は、上記取得したファイル名がファイルリンクテーブル３０６の対象ファイル名１１０３に存在する場合には、パッチファイルが存在するパッチ対象ファイル２１０へのアクセスと判定してステップ１２０４へ進み、存在しなければステップ１２０６に進む。
【００９０】
パッチファイル２００が存在する場合は、ステップ１２０４で、ファイルリンクテーブル３０６のオリジナルファイル情報１１０５のファイル（パッチ対象ファイル２１０）のタイムスタンプと、パッチファイル情報１１０７のファイル（パッチファイル２００）のタイムスタンプを比較する。
【００９１】
ステップ１２０５では、上記比較の結果、オリジナルファイル情報１１０５のファイルがパッチファイル情報１１０７のファイルよりも新しい場合にはステップ１２０６へ進み、パッチファイル情報１１０７のファイルがオリジナルファイル情報１１０５のファイルよりも新しければステップ１２０７へ進む。
【００９２】
ステップ１２０６は、オリジナルファイル情報１１０５のファイルがパッチファイル情報１１０７のファイルよりも新しい場合、またはパッチファイル２００が存在しない場合で、オリジナルディスクである仮想ディスク１２０から要求されたファイルを読み込んで、仮想サーバ１０９のＯＳ３０１に応答する。
【００９３】
ステップ１２０７は、パッチファイル情報１１０７のパッチファイル２００がオリジナルファイル情報１１０５のパッチ対象ファイル２１０よりも新しい場合で、パッチディスクである仮想ディスク１２５から要求されたパッチファイル２００を読み込んで、仮想サーバ１０９のＯＳ３０１に応答する。
【００９４】
上記処理により、パッチファイル２００がオリジナルディスクのパッチ対象ファイル２１０よりも新しい場合には、オリジナルディスクに代わってパッチディスクからパッチファイル２００を読み込んでＯＳ３０１に応答することで、オリジナルディスクのパッチ対象ファイル２１０にパッチファイル２００を適用することなくＯＳ３０１またはアプリケーションをパッチファイル２００の適用後と同等の状態で稼動させることが可能となり、セキュリティの脆弱性やバグを迅速に抑制できるのである。
【００９５】
なお、上記処理ではステップ１２０４、１２０５で、パッチファイル情報１１０７のファイルとオリジナルファイル情報１１０５のファイルのうち新しいファイルを読み込む例を示したが、上記図４で述べたように、パッチファイル情報１１０７のファイルとオリジナルファイル情報１１０５のファイルの新旧の比較を行わず、パッチファイル２００が存在する場合には、パッチ対象ファイル２１０を隠蔽してパッチディスクからパッチファイル２００を読み込むようにしても良い。
【００９６】
また、上記ステップ１２０１の処理では、ファイルのアクセス要求が書き込みの場合には、要求されたファイルに対して書き込みを行って処理を終了しても良い。
【００９７】
図１７は、仮想イメージ制御部１１１のパッチ配布部３０５で行われるパッチ配布処理の一例を示すフローチャートである。この処理は、仮想化機構１１０がバックグラウンドで実行することができる。
【００９８】
ステップ１７０１では、パッチ配布部３０５が物理サーバ１１２のリソースの負荷を監視する。物理サーバ１１２のリソースの負荷としてはプロセッサ２０２（物理プロセッサ）の使用率や、上述したように、ストレージ装置１１３やネットワーク１０８の使用率を用いることができる。また、プロセッサ２０２の使用率は、仮想化機構１１０が提供する仮想プロセッサの使用率を監視しても良い。
【００９９】
ステップ１７０２では、監視している負荷が予め設定した閾値未満になったときに、パッチファイル２００を適用する仮想サーバ１０９を所定の条件で決定する。この所定の条件は、例えば、予め設定した並列処理数以内で、仮想化機構１１０が提供する複数の仮想サーバ１０９を選択する。例えば、並列処理数が２の場合、仮想サーバ１０９を２つずつ処理する。そして、ファイルリンクテーブル３０６を参照して仮想サーバ１０９毎に、パッチファイル２００と、パッチ対象ファイル２１０を選択する。
【０１００】
ステップ１７０３では、パッチ配布部３０５が、上記ステップ１７０２で決定した仮想サーバ１０９とパッチファイル２００を仮想化機構管理部１０２に通知する。
【０１０１】
仮想化機構管理部１０２では、パッチ配布部３０５から受信したパッチを適用する仮想サーバ１０９とパッチファイル２００について、仮想ディスク管理テーブル１０７のステータス１００５を適用中に更新する（１８０１，１８０２）。
【０１０２】
ステップ１７０４では、パッチ配布部３０５が、パッチファイル２００をパッチディスクから読み込んで、パッチを適用する仮想サーバ１０９に割り当てられた仮想ディスク１２０のパッチ対象ファイル２１０を更新し、パッチの適用を実施する。
【０１０３】
ステップ１７０５では、パッチ配布部３０５が、上記パッチ対象ファイル２１０をパッチファイル２００で更新し、パッチの適用が完了したことを仮想化機構管理部１０２に通知する。
【０１０４】
仮想化機構管理部１０２では、パッチ配布部３０５から受信したパッチの完了通知から、仮想サーバ１０９とパッチファイル２００について仮想ディスク管理テーブル１０７のステータス１００５を適用済みに更新する（１８０４）。また、仮想化機構管理部１０２は、仮想ディスク管理テーブル１０７のリンクパッチ１００３に格納されたパッチ識別子に対応するパッチファイル２００が全て適用済みになった場合は、仮想ディスク識別子１００１を割り当てた仮想サーバ１０９を仮想サーバ管理テーブル１０５の割り当てリソース８０４から検索し、適用済みパッチ８０６にパッチ識別子を追加する。また、仮想化機構管理部１０２は、仮想ディスク管理テーブル１０７のリンクパッチ１００３に対応するパッチファイル２００の全てのステータス１００５適用済みになった場合には、パッチファイル２００を適用した仮想ディスク識別子１００１に対応するリンクパッチ１００３、ファイル情報１００４及びステータス１００５をＮＵＬＬに更新する。あるいは、パッチファイル２００を適用した仮想ディスク識別子１００１に対応するレコードを削除しても意。
【０１０５】
ステップ１７０６では、パッチ配布部３０５は、パッチの適用が完了したファイルリンクテーブル３０６のレコードを削除して更新する。これにより、ファイル制御部３０２は、パッチを適用したファイルに対するアクセスはオリジナルディスクへアクセスすることになり、処理負荷の増大を抑制できる。
【０１０６】
ステップ１７０７では、パッチ配布部３０５が、現在選択している仮想サーバ１０９について対象となる全てのパッチファイル２００の適用が完了したか否かを判定し、完了していれば処理を終了し、完了していなければステップ１７０２へ戻って、次のパッチファイル２００または残りの仮想サーバ１０９について、パッチの適用を実施する。
【０１０７】
以上の処理により、パッチ配布部３０５により、パッチ対象ファイル２１０はパッチファイル２００で更新され、ファイルリンクテーブル３０６のレコードは削除される。また、仮想化機構管理部１０２は、仮想サーバ管理テーブル１０５の適用済みパッチ８０６を更新し、仮想ディスク管理テーブル１０７はパッチファイル２００が適用済みとなったリンクパッチ１００３のレコードはＮＵＬＬに更新（あるいは削除）されて破棄される。
【０１０８】
なお、パッチ管理テーブル１０６については、管理サーバ１０１の管理者などが手動にて管理することができる。
【０１０９】
また、上記図１７の処理では、パッチ配布部３０５が物理サーバ１１２の負荷を検知して自動的にパッチの適用を実施する例を示したが、ステップ１７０１の負荷の監視を省略し、管理サーバ１０１の管理者などの指令によりステップ１７０２以降の処理を実施するようにしても良い。すなわち、パッチ配布部３０５は、物理サーバ１１２の負荷が閾値未満となったときや、管理者などからの指令を受け付けたときを所定の条件の成立として、ステップ１７０２以降の処理を行えば良い。
【０１１０】
また、上記パッチファイル２００を適用する仮想サーバ１０９の決定は、複数の仮想サーバ１０９を一つずつ選択して、それぞれのパッチファイル２００を適用するようにしても良い。
【０１１１】
なお、上記実施形態においては、ファイル制御部３０２がファイルを読み込んで仮想サーバ１０９に応答する例を示したが、ファイル制御部３０２がオリジナルディスクのアクセスパスとパッチディスクのアクセスパスを切り替えて、仮想サーバ１０９に対して何れか一方のアクセスを許可する構成としても良い。
【産業上の利用可能性】
【０１１２】
以上のように、本発明は、特に、複数の物理サーバにそれぞれ仮想化機構を備え、各仮想化機構を管理する管理サーバを備えた仮想計算機システムに適用することができる。
【符号の説明】
【０１１３】
１０１  管理サーバ
１０２  仮想化機構管理部
１０３  パッチ管理部
１０４  物理サーバ管理テーブル
１０５  仮想サーバ管理テーブル
１０６  パッチ管理テーブル
１０７  仮想ディスク管理テーブル
１０９  仮想サーバ
１１０  仮想化機構
１１１  仮想イメージ制御部
１１２  物理サーバ
１１３  ストレージ装置
１１４  ディスク装置
１２０、１２５  仮想ディスク
３０２  ファイル制御部
３０３  ファイル情報収集部
３０４  ファイルリマッピング部
３０５  パッチ配布部
３０６  ファイルリンクテーブル
【図１】
2011186915.tif 000003
【図２】
2011186915.tif 000004
【図３】
2011186915.tif 000005
【図４】
2011186915.tif 000006
【図５】
2011186915.tif 000007
【図６】
2011186915.tif 000008
【図７】
2011186915.tif 000009
【図８】
2011186915.tif 000010
【図９】
2011186915.tif 000011
【図１０】
2011186915.tif 000012
【図１１】
2011186915.tif 000013
【図１２】
2011186915.tif 000014
【図１３】
2011186915.tif 000015
【図１４】
2011186915.tif 000016
【図１５】
2011186915.tif 000017
【図１６】
2011186915.tif 000018
【図１７】
2011186915.tif 000019