(57)【特許請求の範囲】
【請求項１】
第１の論理計算機と第２の論理計算機とを有する計算機システムに於けるプログラム修正方法であって、
稼動中の前記第１の論理計算機は、オペレーティングシステム、アプリケーションプログラム、パッチ実行スクリプトとパッチファイルとを含むパッチマネージャからなるプログラムとデータとを前記第１の論理計算機の第１の記憶手段から前記第２の論理計算機の第２の記憶手段へコピーし、待機中の前記第２の論理計算機を起動し、
前記第２の論理計算機は、コピーされたパッチ実行スクリプトを用いてコピーされたプログラムを修正し、
前記第１の論理計算機は、ネットワークとのハードウェア経路を前記第１の論理計算機に接続された第１の経路から前記第２の論理計算機に接続された第２の経路に切り替え、前記第１の論理計算機の稼動から修正されたプログラムを用いる前記第２の論理計算機の稼動に切り替えることを特徴とするプログラム修正方法。
【請求項２】
前記コピーを実行時に、前記第１の論理計算機は、コピー元の前記第１の記憶手段に施される更新の履歴を採取し、コピー終了後に前記履歴を用いてコピー先の前記第２の記憶手段を更新することを特徴とする請求項１記載のプログラム修正方法。
【請求項３】
前記コピーされたプログラムの修正の結果を前記第２の論理計算機は、前記第１の論理計算機に通知し、
前記修正の結果が正常と判定される場合、前記第１の論理計算機は、前記第１の論理計算機の稼動から前記修正されたプログラムを用いる前記第２の論理計算機の稼動に切り替えることを特徴とする請求項１記載のプログラム修正方法。
【請求項４】
前記ネットワークの切り替えの際に、前記第１の論理計算機は、前記ネットワークを介する外部要求の受付禁止とし、すでに受け付けられた外部要求の処理を完了し、前記第１の論理計算機の制御下の第１のネットワーク装置の第１のネットワークアドレスを第２のネットワークアドレスに変更し、前記第２の論理計算機の制御下の第２のネットワーク装置のネットワークアドレスとして前記第１のネットワークアドレスを設定することを特徴とする請求項１記載のプログラム修正方法。
【請求項５】
稼動中の前記第１の論理計算機の制御下の第１のネットワーク装置のネットワークアドレスが第１のネットワークアドレスである場合に、前記ネットワークの切り替えに際して、前記第１の論理計算機は、前記第２の論理計算機の制御下の第２のネットワーク装置のネットワークアドレスとして前記第１のネットワークアドレスを設定し、前記第１のネットワーク装置のネットワークアドレスを第２のネットワークアドレスに変更し、前記ネットワークを介して外部に送信するパケットの送信元アドレスが前記第２のネットワークアドレスであるパケットについて前記送信元アドレスを前記第１のネットワークアドレスに変更することを特徴とする請求項１記載のプログラム修正方法。
【請求項６】
コンピュータに、稼動中の第１の論理計算機のオペレーティングシステム、アプリケーションプログラム、パッチ実行スクリプトとパッチファイルとを含むパッチマネージャからなるプログラムとデータとを前記第１の論理計算機の第１の記憶手段から第２の論理計算機の第２の記憶手段へコピーする機能、コピーされたプログラムを用いて待機中の前記第２の論理計算機を起動する機能、コピーされたパッチ実行スクリプトを用いて前記コピーされたプログラムを修正する機能、ネットワークとのハードウェア経路を前記第１の論理計算機に接続された第１の経路から前記第２の論理計算機に接続された第２の経路に切り替える機能、および前記第１の論理計算機の稼動から修正されたプログラムを用いる前記第２の論理計算機の稼動に切り替える機能を実現させるためのプログラム。
【請求項７】
前記コンピュータに、さらに前記コピーを実行時に、コピー元の前記第１の記憶手段に施される更新の履歴を採取する機能、およびコピー終了後に前記履歴を用いてコピー先の前記第２の記憶手段を更新する機能を実現させることを特徴とする請求項６記載のプログラム。
【請求項８】
前記コンピュータに、さらにコピーされた前記プログラムの修正の結果を前記第２の論理計算機から前記第１の論理計算機に通知する機能、および正常と判定される場合に前記第１の論理計算機の稼動から前記修正されたプログラムを用いる前記第２の論理計算機の稼動に切り替える機能を実現させることを特徴とする請求項６記載のプログラム。
【請求項９】
前記コンピュータに、さらに前記ネットワークの切り替えの際に、前記ネットワークを介する外部要求の受付禁止とする機能、すでに受け付けられた外部要求の処理を完了する機能、前記第１の論理計算機の制御下の第１のネットワーク装置の第１のネットワークアドレスを第２のネットワークアドレスに変更する機能、および前記第２の論理計算機の制御下の第２のネットワーク装置のネットワークアドレスとして前記第１のネットワークアドレスを設定する機能を実現させることを特徴とする請求項６記載のプログラム。
【請求項１０】
前記コンピュータに、さらに稼動中の前記第１の論理計算機の制御下の第１のネットワーク装置のネットワークアドレスが第１のネットワークアドレスである場合に、前記ネットワークの切り替えに際して、前記第２の論理計算機の制御下の第２のネットワーク装置のネットワークアドレスとして前記第１のネットワークアドレスを設定する機能、前記第１のネットワーク装置のネットワークアドレスを第２のネットワークアドレスに変更する機能、および前記ネットワークを介して外部に送信するパケットの送信元アドレスが前記第２のネットワークアドレスであるパケットについて前記送信元アドレスを前記第１のネットワークアドレスに変更する機能を実現させることを特徴とする請求項６記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機上で稼動しているプログラムの修正方法に係わり、特にサービスを停止させることなくプログラムの修正を行う方法に関する。
【０００２】
【従来の技術】
インターネットの普及により、あらゆる計算機が実質的に世界中のどこからでもアクセスできるようになった。しかし同時に計算機が不正にアクセスされるケースも増大することが予想される。こういった事態に対し、計算機が不正にアクセスされないようにするパッチファイルが公開されている。パッチファイルとはプログラムを修正するためのプログラム変更情報が記録されたファイルであり、このパッチファイルを使用しプログラムの修正を行うことによって不正アクセスを防止することができる。パッチファイルの適用は、計算機上で稼動している全てのプログラムが対象となる。例えば、オペレーティングシステムやアプリケーションなどである。パッチファイルを用いたプログラム修正手順は次の通りである。（１）サービスの停止、（２）パッチファイルを適用しプログラムを修正し、（３）システムを再起動し、（４）サービスを再開始する。このようにプログラムを修正するためには、一旦サービスを停止する必要がある。これは、通常オペレーティングシステムやアプリケーションを稼動したままプログラムの修正が行えないためである。そのため、プログラムの修正は一時的に使用中のプログラムとは別のプログラムに対して適用し、次回起動時には修正されたプログラムを使って起動する手段を用いている。
【０００３】
【発明が解決しようとする課題】
従来のプログラム修正方法では、サービスを一旦停止し、プログラム修正を行う必要がある。プログラム修正のための新規のパッチファイルは頻繁に発生しており、そのたびにサービスを停止していてはサービスの質を低下させることになる。一方、パッチファイルをある程度まとめてプログラム修正を行うことでサービスの停止を抑える運用方法もある。しかしいつ誰から計算機に対して不正アクセスをされるかわからないので、セキュリティに関するプログラム修正を引き伸ばすのは好ましくない。プログラムの修正に関する技術として、特開平８−２６３２７９号公報に記載された技術がある。これは計算機を仮想化し、１台の物理計算機から複数の論理的な計算機を構築する機構を持った計算機システムにおいて、論理計算機上で稼動しているプログラムを終了することなくプログラム修正を行う方法が述べられている。しかしそのプログラム修正は、論理計算機上で稼動しているプログラムに対してではなく、複数の論理的な計算機を集中的に制御する制御プログラムに対するプログラム修正である。またこの制御プログラムを修正している間は、ほとんどの論理計算機上のプログラムは停止している。つまり論理計算機上のプログラムは機能を停止させられているためサービスを継続することはできない。またサービスを処理している論理計算機上のオペレーティングシステムやアプリケーションに対するプログラム修正ではない。
【０００４】
本発明の目的は、論理計算機上で稼動しているサービスを停止させることなくプログラム修正を行う方法を提供することにある。
【０００５】
本発明の他の目的は、外部で修正プログラムの新規登録が発生したことを迅速に検知し、その修正プログラムを用いて早急にプログラム修正を行う方法を提供することにある。
【０００６】
【課題を解決するための手段】
本発明は、複数の論理計算機を有する計算機システムについて、稼動中の第１の論理計算機の制御下のプログラムとデータを記憶手段から記憶手段へコピーし、コピーされたそのプログラムを用いて待機中の第２の論理計算機を起動し、コピーされたプログラム中の修正プログラムを用いてコピーされたそのプログラムを修正し、第１の論理計算機の制御下のネットワークが第２の論理計算機の制御下になるように切り替えを行い、第１の論理計算機の稼動から修正されたプログラムを用いる第２の論理計算機の稼動に切り替えるプログラム修正方法を特徴とする。
【０００７】
また本発明は、外部に修正プログラムの新規登録があるか否かを監視し、修正プログラムが新規登録された場合に登録された修正プログラムをダウンロードして記憶手段に登録し、その修正プログラムの登録を外部の管理者端末に通知し、管理者端末からの指示に従って修正プログラムを実行して修正対象のプログラムを修正するプログラム修正方法を特徴とする。
【０００８】
【発明の実施の形態】
［実施例１］
以下、本発明に係る論理計算機環境におけるプログラム修正方法の実施例１について図面を用いて詳細に説明する。
【０００９】
図１は、実施例１の論理計算機環境におけるプログラム修正方法の概略構成図を示している。１０１は物理計算機であり、１０２，１０３，１０４はそれぞれ物理計算機１０１内のプロセッサ，ディスク装置，ネットワーク装置である。１１０は計算機資源分割機構であり、物理計算機１０１から論理的な複数の計算機を構成するための機構である。１０５，１０６は計算機資源分割機構によって生成された論理計算機である。１０７，１０８，１０９は論理計算機１０５内で動作するプログラムであり、それぞれアプリケーションプログラム、オペレーティングシステム、パッチマネージャである。オペレーティングシステム１０８は、論理計算機１０５で稼動するゲストＯＳと呼ばれるオペレーティングシステムであり、論理計算機１０５のハードウェア制御やアプリケーション１０７の動作を支援する。パッチマネージャ１０９は、本実施例の特徴となるプログラムであり、論理計算機１０５上で稼動しているアプリケーションが提供するサービスを停止させることなくプログラム修正を行うプログラムである。論理計算機１０６は、パッチ用の予備論理計算機（待機中の論理計算機）であり、待機中のためプログラムが動作していない状態を示している。論理計算機１０５は、複数存在可能である。
【００１０】
図２は、パッチマネージャ１０９によるプログラム修正の流れを示している。１０５，１０６はそれぞれ論理計算機である。論理計算機１（１０５）上で既にサービスが稼動しており（ステップ２０３）、論理計算機２（１０６）を使用し、サービスを停止させることなくプログラム修正を行う処理の流れを示している。ステップ２０４ではパッチマネージャ１０９がパッチ処理の起動をする。この起動処理中に論理計算機１（１０５）内のプログラム及びデータが論理計算機２（１０６）内にコピーされる。次に論理計算機２（１０６）上でパッチ処理が実行され、論理計算機２（１０６）上のソフトウェアのプログラム修正が行われる（ステップ２０５）。論理計算機２（１０６）上のソフトウェアのプログラム修正が行われた後、論理計算機１（１０５）に制御が移行し、論理計算機１（１０５）はシステム切り替え処理（ステップ２０６）を実行する。システム切り替え処理（ステップ２０６）により、サービスは論理計算機１（１０５）の制御を離れ、論理計算機２（１０６）で稼動することになる（ステップ２０７）。これらの処理により、サービスはプログラムが修正された論理計算機上で稼動できるため、高信頼なサービスを提供できるようになるとともに、一時的に論理計算機を２つ使用することによってサービスを停止する必要がなくなる。
【００１１】
図３は、パッチマネージャ１０９の構成を示している。パッチマネージャ１０９は、パッチ実行プログラム３０２、パッチ監視プログラム３０３、論理計算機資源管理テーブル３０６、パッチテーブル３０７、論理計算機制御プログラム３０５から構成される。パッチ実行プログラム３０２は、予備論理計算機上でパッチ処理を起動するプログラムである。パッチ監視プログラム３０３は、インターネット上等のパッチファイルが格納されたサーバ（図示せず）を定期的に監視し、新しいパッチファイルが登録されたかどうかを監視し、パッチ処理を管理者に促すプログラムである。論理計算機資源管理テーブル３０６は、各論理計算機が持つプロセッサ，ディスク装置，ネットワーク装置等の資源が登録されている。パッチテーブル３０７はパッチファイルを管理するテーブルで、既に処理したパッチファイルと未だ処理していないパッチファイルの区分等の情報が登録されている。論理計算機資源管理テーブル３０６とパッチテーブル３０７は、パッチ実行プログラム３０２やパッチ監視プログラム３０３の実行時に参照／更新される。論理計算機制御プログラム３０５は、パッチ実行プログラム３０２やパッチ監視プログラム３０３が他の論理計算機を制御する場合に使用される。論理計算機制御プログラム３０５は、論理計算機間の通信や論理計算機の起動などのインターフェースを提供する。
【００１２】
図４は、稼動中の論理計算機の一般的な構成を示している。論理計算機１０５内には、サービスを提供するアプリケーションプログラム１０７、オペレーティングシステム１０８、パッチマネージャ１０９がある。またアプリケーションプログラム１０７が使用するデータを格納するアプリケーションディスク４０５やオペレーティングシステム１０８が使用するシステムディスク４０６、外部とネットワーク通信するためのネットワーク装置１０４が接続されている。本実施例では、図４に示された論理計算機の構成を例にサービスを停止させないプログラム修正方法について述べる。
【００１３】
図５は、論理計算機資源管理テーブル３０６の構造を示している。論理計算機資源管理テーブル３０６は、各論理計算機が所有するプロセッサ，ディスク装置，ネットワーク装置，メモリ容量等の資源割当情報を格納する。カラム５０１は論理計算機の識別子，カラム５０２はプロセッサ割当率、カラム５０３は割り当てられたメモリ容量、カラム５０４は割り当てられたディスク装置、カラム５０５は割り当てられたネットワーク装置を示している。例えば、論理計算機１は、物理プロセッサ１を１００％割り当てられており、周辺装置としてＤＩＳＫ１およびＤＩＳＫ２、またネットワーク装置ＮＥＴ１が割り当てられていることを示している。この例では、論理計算機１又は論理計算機２が他の論理計算機に割り当てられた資源をカバーする資源を割り当てられており、他の論理計算機について予備論理計算機となり得る。
【００１４】
図６は、パッチテーブル３０７の構造を示している。パッチテーブル３０７には、これまでに処理したパッチファイル情報や未だ処理していないパッチファイルの情報などが格納されている。カラム６０１はパッチファイル名、カラム６０２からカラム６０４はパッチファイルの種類を示している。カラム６０２はセキュリティ関連、カラム６０３は機能向上関連、カラム６０４は機能修正関連などである。カラム６０５は修正された日時を示している。カラム６０６は、次回のパッチ処理時にパッチを適用するかどうかが記述されている。カラム６０７は、最後に処理されたパッチ処理実行結果が格納されている。
【００１５】
図７は、パッチ実行プログラム３０２のフローチャートを示している。ステップ７０１は、予備論理計算機のサーチを行う。このステップは、パッチ処理をしたい論理計算機と同等な資源を持つ未使用論理計算機をサーチする。このために、図５に示す論理計算機資源管理テーブル３０６を参照し、例えば論理計算機１のプログラムにパッチ処理を行う場合、割り当てられた資源をカバーする論理計算機２を割り当てる。ステップ７０２はシステムディスクをチェックする。ここでシステムディスクとは現在サービスを実行中の論理計算機が使用しているオペレーティングシステムを格納する記憶装置である。主なチェック項目は、システムがウイルス等の不正なプログラムを所有していないかどうかのチェックである。これは、ステップ７０３でシステムディスクのコピーを行うに当たっての前処理であり、不正なプログラムが格納された状態のまま、新しいシステムに移行するのを防止するのが目的である。ステップ７０３ではシステムディスクのコピーを行う。例えば論理計算機資源管理テーブル３０６の論理計算機１のＤＩＳＫ１がシステムディスクの場合、論理計算機２のＤＩＳＫ３へディスクの内容をコピーする。ステップ７０４ではアプリケーションディスクのコピーを行う。アプリケーションディスクとは、アプリケーションプログラムやアプリケーションデータを格納する記憶装置である。このディスクには、現在サービスを行っている論理計算機上で稼動しているアプリケーションが使用するデータが格納されている。例えば論理計算機資源管理テーブル３０６の論理計算機１のＤＩＳＫ２を論理計算機２のＤＩＳＫ４へコピーする。ステップ７０５ではパッチファイルのコピーを予備論理計算機のシステムディスクに対して行う。この時、パッチテーブル３０７も同じようにコピーする。図６のパッチテーブル３０７に記載されているパッチファイル６０１がコピーの対象となる。このパッチファイルを利用して、予備論理計算機が起動された時にパッチ処理が行われる。ステップ７０６ではパッチ実行スクリプトのコピーを予備論理計算機のシステムディスクに対して行う。パッチ実行スクリプトは、後で詳細に説明するが予備論理計算機が起動された時に自動的にパッチ処理が行われるようにするための自動化スクリプトである。
【００１６】
ステップ７０７は、予備論理計算機の起動を要求する。要求は、論理計算機制御プログラム３０５に対して発行され、論理計算機制御プログラム３０５は、計算機資源分割機構１１０に対して指定された論理計算機の起動要求を行う。これにより、予備論理計算機はステップ７０２でコピーされたシステムディスクを用いてオペレーティングシステム１０８が起動する。予備論理計算機が起動されると、ステップ７０６でコピーされたパッチ実行スクリプトが自動的に起動され所定のパッチ処理を実行する。ステップ７０８では、予備論理計算機の再起動要求を発行する。要求は、論理計算機制御プログラム３０５に対して発行され、論理計算機制御プログラム３０５は、計算機資源分割機構１１０に対して指定された論理計算機の再起動を行う。これは、パッチ処理を有効にするためである。パッチ処理を終了した時点では、またパッチ処理の内容は有効になっておらず、システム再起動すると有効になる。そのため、ステップ７０８で再起動要求を発行し予備論理計算機のシステムを再起動する。ステップ７０９では、予備論理計算機上でのパッチ処理が正常に終了したかどうかをチェックする。その結果、予備論理計算機上でのパッチ処理が正常に終了していれば、ステップ７１０でネットワーク切り替え処理を行い、サービスを処理する論理計算機を交替する。予備論理計算機上でのパッチ処理が正常に終了していなければ、現状の論理計算機上でサービスを継続して実行する。パッチ処理が正常に終了したかどうか、すぐには判断できないケースもある。例えば、パッチ処理後に数時間稼動した後、不具合が発生する場合である。この場合、元の論理計算機にサービスを再交代させることでサービスを継続させつつ、その間にパッチ処理による不具合の修正等が可能である。
【００１７】
図８は、図７のステップ７０３におけるシステムディスクのコピーの詳細フローを示している。ステップ８０１では書き込み履歴の採取開始を行う。これはコピー中に更新された情報を記録する目的である。ステップ８０２では、システムディスクのコピーを実施する。ステップ８０３ではコピーが終了したかどうかをチェックする。ステップ８０４では、書き込み履歴の採取を終了する。ステップ８０５では、コピー中に更新された情報を、コピー先のシステムディスクに反映する。こうすることで、コピーされたシステムディスクを最新の状態に保つことができる。
【００１８】
図９は、図７のステップ７０４におけるアプリケーションディスクのコピーの詳細フローを示している。ステップ９０１では書き込み履歴の採取開始を行う。これは、コピー中に更新された情報を記録する目的である。ステップ９０２では、アプリケーションディスクのコピーを実施する。ステップ９０３ではコピーが終了したかどうかをチェックする。ステップ９０４では、書き込み履歴の採取を終了する。ステップ９０５では、コピー中に更新された情報を、コピー先のアプリケーションディスクに反映する。こうすることで、コピーされたアプリケーションディスクを最新の状態に保つことができる。
【００１９】
図１０は、図８および図９における書き込み履歴の採取を説明する図である。書き込み操作が行われる場合（１００１）、書き込み操作を履歴取得プログラム１００２がトラップし、書き込みデータは例えばシステムディスクの場合はシステムディスク１００３へ書き込まれると共に、書き込み履歴ディスク１００８に、書き込み時間１００４、書き込み位置１００５、データ長１００６、データ１００７を追記書きする。このデータをもとに、システムディスクあるいはアプリケーションディスクのコピー後に最新の情報に更新することができる。これにより、ディスク容量が大きくコピーに時間がかかる場合にも、コピー中およびコピー後に発生した変更をコピー先のディスクに反映することができるようになる。従って予備論理計算機が本番稼動前にステップ８０５及びステップ９０５を実行し、未更新データをディスクに反映することができる。また他の方法として、ディスク装置が持つ機能を利用することもできる。ディスク装置がディスクのミラーリングを有し、一時的にミラーリングを解除し２つのディスクに分割する機能を持っている場合、この機能を使用することができる。ステップ７０３およびステップ７０４の要求でミラーリングを解除し、一つのディスクを現状のサービスを提供している論理計算機に割当て、もう一つを予備論理計算機に割り当てることによって、コピーと同等の機能を提供することができる。この機能は、一方のディスクに更新が発生した場合、再度ミラーリングの形態に戻す時に分割された両方のディスクのデータを一致させる機能があり、これにより最新の情報を確保したままコピーが完了したのと同じ動作をさせることができる。
【００２０】
図１１は、図７のステップ７０６でコピーされるパッチ実行スクリプト１１０７と関連するプログラムを示している。オペレーティングシステムは、通常起動時に自動的に実行される起動スクリプト１１０２〜１１０６を格納しておくことができる。この機能を使用し、オペレーティングシステムが起動したときにパッチ処理を行うように設定することが、パッチ実行スクリプト１１０７の目的である。オペレーティングシステムが起動した時に自動的にスクリプトを実行するスクリプト実行プログラム１１０１は、所定の場所に格納された各起動スクリプト１１０２〜１１０６を順番に実行する。このような起動スクリプトの１つとして、パッチ実行スクリプト１１０７を格納しておく。このパッチ実行スクリプト１１０７は、パッチファイル１１０９とパッチテーブル３０７を参照しながらパッチ処理を実行する。このような起動スクリプトの代わりにマシン語で表現された起動プログラムでもよいが、スクリプト言語で記載されたスクリプトであればシステム管理者による変更が容易となる。スクリプトの例としてシステムコマンド列から成るスクリプトなどがある。
【００２１】
図１２は、パッチ実行スクリプト１１０７の詳細フローを示している。ステップ１２０１では、パッチテーブル３０７を読み込む。ステップ１２０２では、パッチテーブル３０７をサーチし、パッチ処理を行うパッチファイル６０１を決定する。これは、図６のカラム６０６の次回実行カラムを参照することで実現できる。ステップ１２０３では、所定のパッチファイル１１０９を読み込み、ステップ１２０４でパッチプログラムを実行する。パッチプログラムは、通常オペレーティングシステムが標準で有しており、このプログラムと指定されたパッチファイル１１０９とで、オペレーティングシステム、アプリケーションなどのプログラムの修正を行うことができる。ステップ１２０５では、パッチプログラムの実行結果をパッチテーブル３０７のカラム６０７に格納する。ステップ１２０６では、指定された全てのパッチファイルが実行されたかどうかをチェックし、全て処理されていなければ、ステップ１２０３を実行し、全て実行されていればステップ１２０７へ移行する。ステップ１２０７では、論理計算機制御プログラム３０５を介して論理計算機１のパッチマネージャ１０９へパッチ処理が終了したことを通知する。この通知では、予備論理計算機のパッチテーブル３０７と共に、パッチ処理が終了したことを論理計算機１のパッチマネージャ１０９に伝える。これにより、パッチマネージャ１０９は、パッチ処理の終了と、パッチ処理が正常に行われたかどうかの情報を有するパッチテーブル３０７からパッチ処理の結果を知ることができる。
【００２２】
図１３は、ネットワークの切り替えフローを示している。ステップ１３０１では、ネットワークの切り替えが完了するまでネットワークの外部要求の受付を禁止する。既に受け付けた要求は処理するが、新たな要求は一時的に受け付けなくする。ステップ１３０２では、既に受け付けた要求を全て処理し終えるまで待機する。ステップ１３０３では、ネットワークの切り替え要求を発行する。このネットワーク切り替え要求は、論理計算機制御プログラム３０５を介して計算機資源分割機構１１０に対して発行され、これを受けた計算機資源分割機構１１０は、ネットワークのハードウエア経路を現論理計算機から予備論理計算機に変更する。ステップ１３０４では、ネットワークの切り替えが正常に行われ、論理計算機制御プログラム３０５を介して予備論理計算機のアプリケーションプログラム１０７を起動した後、サービスが正常に開始されたかどうかをチェックする。もしネットワークやサービスの切り替えが正常に行われていない場合は、逆の手順によって元の論理計算機でサービスを再切替することで、サービスの停止を無くすことができる。ステップ１３０１からしばらくの間、ネットワークの受付が一時的にできなくなる期間ができるが、ネットワークは再要求を自動的に発行するため、使用者にはこの影響はない。このネットワークの切り替えを図示したのが、図１４である。
【００２３】
図１４は、ネットワークの切り替えを説明する図である。この例では、論理計算機１（１０５）から論理計算機２（１０６）へネットワーク装置１０４を切り替える様子を示している。この機能は計算機資源分割機構１１０が有しており、ネットワーク切り替え要求１４０２によってネットワーク装置１０４の通信経路が元の論理計算機の経路１４０３から新しい論理計算機の経路１４０４に切り替えられ、これによって、ネットワーク装置１０４のデータは論理計算機２（１０６）で受け付けることができるようになる。これにより、物理計算機１０１内の一つのネットワーク装置１０４の割当を変更することができるようになる。
【００２４】
図１５は、物理計算機が２つ以上のネットワーク装置１０４を有していた場合の、ネットワーク切り替えフローを示している。図１３で示したネットワーク切り替えは、一つのネットワーク装置１０４を切り替えるフローであるが、図１５では、２つ以上のネットワーク装置１０４を使用したネットワーク切り替えフローを示している。ステップ１５０１では、ネットワークの切り替えが完了するまでネットワークの外部要求の受付を禁止する。既に受け付けた要求は処理するが、新たな要求は一時的に受け付けなくする。ステップ１５０２では、既に受け付けた要求を全て処理し終えるまで待機する。ステップ１５０３では、自ネットワークアドレスを変更する。この変更はオペレーティングシステム１０８が標準で有しているネットワーク情報変更プログラムによって行う。ステップ１５０４では論理計算機制御プログラム３０５を介して予備論理計算機にアドレスの変更要求を発行する。ここでは、これまでサービスを処理していた論理計算機が使用していたネットワークアドレスを予備論理計算機に割り当てる。図１６にこの処理を示している。
【００２５】
図１６では、ステップ１６０１で予備論理計算機がネットワークアドレス変更要求を受け付ける。ステップ１６０２ではネットワークアドレスを変更する。この変更はオペレーティングシステムが標準で有しているネットワーク情報変更プログラムによって行う。ステップ１６０３では、ネットワークアドレスが変更されたことを、ネットワーク上の装置に通知する。ステップ１６０４では、論理計算機制御プログラム３０５を介して切り替えが正常に行われたかどうかを要求元に通知する。これにより、予備論理計算機のネットワークアドレスの変更を行う。一方、図１５のステップ１５０５では、ネットワークアドレスが変更されたことをネットワーク上の装置に通知する。ステップ１５０６では、ネットワークの切り替えが正常に行われ、サービスが正常に開始されたかどうかをチェックする。もしネットワークやサービスの切り替えが正常に行われていない場合は、逆の手順によって元の論理計算機でサービスを再切替することで、サービスの停止を無くすことができる。これらの処理により、これまでサービスを処理していた論理計算機は新しいネットワークアドレスを有し、予備論理計算機はこれまでサービスを提供していた論理計算機のネットワークアドレスを引き継ぐことができる。
【００２６】
図１７は、物理計算機１０１が２つのネットワーク装置（１０４−１，１０４−２）を有している場合のネットワークの切り替えを示している。この例では、論理計算機１（１０５）から論理計算機２（１０６）のネットワークアドレスの切り替えを示している。論理計算機１（１０５）にはネットワーク装置１０４−１が割り当てられており、論理計算機２にはネットワーク装置１０４−２が割り当てられている。図１５の処理により、例えば論理計算機１の旧ネットワークアドレス１１１１１１１１を新しいネットワークアドレス（２２２２２２２２）に変更し、論理計算機２のネットワークアドレスを１１１１１１１１に変更する。論理計算機１（１０５）が計算機資源分割機構１１０を介して論理計算機２（１０６）へネットワークアドレス変更要求を発行することによって（１７０３）、ネットワーク装置が無くても論理計算機間で通信することができる。これらの処理により、２つの論理計算機のネットワーク接続を維持したまま、新しい論理計算機上にサービスを移行することができる。
【００２７】
図１８は、物理計算機１０１上の論理計算機１０５で稼動しているパッチマネージャ１０９内のパッチ監視プログラム３０３の概要を示している。パッチ監視プログラム３０３の機能は、インターネット１９０５上のパッチファイルが格納されたパッチサーバ１９０７の更新状況をチェックし、パッチファイルの更新が行われるとメールサーバ１９１１を介して管理者端末１９０６に通知する機能と、管理者端末１９０６が通知されたパッチの処理を行うかどうかをパッチ監視プログラム３０３に指示する機能を有する。パッチサーバ１９０７は、通常ＷＷＷサーバ１９０８またはファイル転送サーバで構成され、ディスク内にはパッチファイルや更新日付およびパッチの内容が記述されたファイル１９１０が格納されている。以下、パッチ監視プログラム３０３の詳細説明を行う。
【００２８】
図１９は、パッチ監視プログラム３０３のフローを示している。ステップ１８０１では、パッチ監視プログラム３０３がインターネット１９０５上等のパッチサーバ１９０７に接続する。ステップ１８０２ではそのパッチサーバを検索し、以前に監視した時間より後に更新されたパッチファイルがあればそれをダウンロードしてパッチテーブル３０７に登録する（ステップ１８０３）。ステップ１８０４では、新しく登録されたパッチファイルのリストを作成し、それをステップ１８０５で管理者端末１９０６に電子メールにて通知する。この時、パッチファイルの種別（図６のセキュリティ６０２から機能修正６０４）を参照し、特に重要なセキュリティに関する項目だけ管理者端末に送信するといったことも可能である。ステップ１８０６では、管理者端末１９０６からの電子メールによる指示を待つ。ステップ１８０７では、管理者端末１９０６からのメールの認証を行い、認証が正しければステップ１８０８に移行し、指示の内容に従いパッチテーブル３０７の次回実行６０６のカラムを更新する。その後、ステップ１８０９で、パッチ実行プログラム３０２を起動し、パッチ処理を行う。パッチ監視プログラム３０３は定期的に起動し、新しくパッチファイルが登録されたかどうかを監視する。図２０に管理者端末１９０６とパッチ監視プログラム３０３の通信の概略を示す。
【００２９】
図２０は、パッチ監視プログラム３０３と管理者端末１９０６の電子メールの通信内容例を示している。新しくパッチファイルが登録されると、パッチ監視プログラム３０３は管理者端末１９０６へ電子メールを送信する（ステップ２００３）。この時、認証用のコードを送信する。管理者端末１９０６は、電子メールを受けるとこれに対し、パッチ処理を行うかどうかが記述された電子メールを、認証用コードから生成したコードと共にパッチ監視プログラム３０３に通知する（ステップ２００４）。管理者かどうかの認証は、管理者端末１９０６が生成したコードと同じ方法でパッチ監視プログラム３０３がコード生成し、管理者端末１９０６が送信したコードと一致すれば管理者からの正しいメールと判断する。これらの電子メールは、それぞれメールサーバ１９１１を介して行われる。上記により、頻繁に更新されるパッチ情報でも管理者は的確に判断でき、また電子メールで指示を出すことができるようになるため、遠隔地からでも即パッチを行うことができるようになる。
【００３０】
本実施例の効果として、物理的に一つのプロセッサしか持たない物理計算機１０１でも、計算機資源分割機構１１０を使用し、サービスを停止させないでパッチ処理を行うことができる。
【００３１】
また本実施例１ではハードウェアが有する計算機資源分割機構１１０を使用したが、ソフトウェアで計算機資源を分割し複数の仮想計算機を構築する場合でも適用可能である。しかし計算機資源の使用効率は実施例１で示したハードウェアによる計算機資源分割機構１１０の方が優れている。
［実施例２］
本実施例２では、サービスの一時的な停止を無くするネットワーク切り替え方法を示している。実施例１では、図１３のステップ１３０１〜１３０４及び図１５のステップ１５０１〜１５０６にて一時的にサービスを受け付けられない期間が存在した。これに対し、本実施例２では、全ての要求を受け付けられるようにすることが目的である。図２１は、パッチマネージャ１０９’の構成を示している。パッチマネージャ１０９’は、パッチ実行プログラム３０２’、パッチ監視プログラム３０３、論理計算機資源管理テーブル３０６、パッチテーブル３０７、論理計算機制御プログラム３０５及びパケット変更プログラム２１０４から構成される。パッチ実行プログラム３０２’は、予備論理計算機を使用してプログラム修正処理を制御するプログラムである。パッチ監視プログラム３０３は、インターネット１９０５上等のパッチファイルが格納されたパッチサーバ１９０７を定期的に監視し、新しいパッチファイルが登録されたかどうかを監視し、パッチ処理を管理者に促すプログラムである。論理計算機資源管理テーブル３０６は、各論理計算機が持つプロセッサ，ディスク装置，ネットワーク装置等の資源が登録されている。パッチテーブル３０７はパッチファイルを管理するテーブルで、既に処理したパッチファイルと未だ処理していないパッチファイルの区分等が登録されている。論理計算機資源管理テーブル３０６とパッチテーブル３０７は、パッチ実行プログラム３０２’やパッチ監視プログラム３０３の実行時に参照／更新される。論理計算機制御プログラム３０５は、パッチ実行プログラム３０２’やパッチ監視プログラム３０３が論理計算機を制御する場合に使用される。論理計算機制御プログラム３０５は、論理計算機間の通信や論理計算機の起動などのインターフェースを提供する。パケット変更プログラム２１０４は、ネットワークに送信する情報を更新する機能を有し、これについては後で詳細に説明する。以下で説明する以外の各構成については、実施例１と同じである。
【００３２】
図２２は、パッチ実行プログラム３０２’内のネットワーク切り替えフローを示している。ステップ２２０１では、予備論理計算機にアドレスの変更要求を発行する。ステップ２２０２では、自ネットワークアドレスの変更を行う。ステップ２２０３では、ネットワークアドレスが変更されたことをネットワーク上の装置に通知する。この時点でこれまでサービスを処理していた論理計算機は新しいネットワークアドレスを有し、予備論理計算機はこれまでサービスを提供していた論理計算機のネットワークアドレスを引き継ぐことになる。新規に発行されたネットワークからの要求は、新しい予備論理計算機上で処理される。しかしこれまでサービスを処理していた論理計算機内には未処理の要求が残っており、これらを正常に処理する必要がある。そのためにステップ２２０４でパッチ実行プログラム３０２’は、パケット変更通知を発行する。これについては後で詳細に説明する。ステップ２２０５では、ネットワークの切り替えが正常に行われ、サービスが正常に開始されたかどうかをチェックする。もしネットワークやサービスの切り替えが正常に行われていない場合は、逆の手順によって元の論理計算機でサービスを再切替することで、サービスの停止を無くすことができる。これらの処理により、これまでサービスを処理していた論理計算機は新しいネットワークアドレスを有し、予備論理計算機はこれまでサービスを提供していた論理計算機のネットワークアドレスを引き継ぐことができる。
【００３３】
図２３は、パケット変更プログラム２１０４の位置付けを示している。オペレーティングシステム１０８内のネットワーク制御プログラム２３０４に、パケットを送信する処理を行うパケット送信プログラム２３０５がある。パケット変更プログラム２１０４は、このパケット送信プログラム２３０５から呼び出されるプログラムである。
【００３４】
図２４は、パケット送信プログラム２３０５のフローを示している。ステップ２４０１では、パケット送信プログラム２３０５は、要求されたデータからパケットを生成する。ステップ２４０２では、パケット変更通知が発行されたかどうかをチェックする。パケット変更通知は、図２２のステップ２２０４で発行される。もしパケット変更通知が発行されていれば、ステップ２４０３に移行しパケット変更プログラム２１０４を呼び出す。パケット変更プログラム２１０４は、図２５に示すように、パケット内の送信元アドレスをサービスを処理していた時に使用していた元のネットワークアドレスに変更する（ステップ２５０１）。ステップ２４０４では、生成されたパケットを送信する。
【００３５】
図２６は、パケットの構造を示している。パケットはネットワークを介して転送されるデータであり、送信元ネットワークアドレス２６０２と送信先ネットワークアドレス２６０３が格納されている。パケット変更プログラム２１０４を実行する前のパケット構造は２６０４で示されており、送信元ネットワークアドレス２６０２には、図２２のステップ２２０２により新たに更新された新しいネットワークアドレスが格納される。しかしこのパケットを生成することになったネットワーク上の装置からの要求は、サービスを行っていたときに受け付けられており、このままその装置に返送すると、要求した装置はこのパケットを受け付けることができない。そのためパケット変更プログラム２１０４は、パケット変更通知が発行されている間だけ、パケット２６０７内の送信元アドレス２６０２を、サービスを処理していた時に使用していた元のネットワークアドレスに変更する。こうすることで、要求の発行者は論理計算機が途中で変更されても問題が起こらないようにすることができる。なお全ての要求が処理された時点でパケット変更通知は解除されることが望ましい。
【００３６】
実施例２の効果は、サービスをまったく停止させることなくパッチ処理を行うことができるようになることである。
【００３７】
また実施例２ではハードウェアが有する計算機資源分割機構１１０を使用したが、ソフトウェアで計算機資源を分割し複数の仮想計算機を構築する場合でも適用可能である。しかし計算機資源の使用効率は実施例２で示したハードウェアによる計算機資源分割機構１１０の方が優れている。
【００３８】
【発明の効果】
本発明により、サービスを停止させることなくパッチ処理を行えるとともに、パッチファイルが頻繁に更新される場合でも管理者は容易にパッチファイルの更新を知ることができ、また遠隔地からでもパッチ更新の指示を出すことができる。
【図面の簡単な説明】
【図１】本発明の実施例１における全体構成図である。
【図２】実施形態のパッチ処理の流れを示す図である。
【図３】実施形態のパッチマネージャの構成を示す図である。
【図４】論理計算機の構成例を示す図である。
【図５】実施形態の論理計算機資源管理テーブルの構成を示す図である。
【図６】実施形態のパッチテーブルの構成を示す図である。
【図７】実施形態のパッチ実行プログラムのフロー図である。
【図８】実施形態のシステムディスクのコピーフロー図である。
【図９】実施形態のアプリケーションディスクのコピーフロー図である。
【図１０】実施形態の書き込み履歴の構成を示す図である。
【図１１】実施形態のスクリプトの構造を示す図である。
【図１２】実施形態のパッチ実行スクリプトのフロー図である。
【図１３】実施形態のネットワーク切り替えフロー図である。
【図１４】実施形態のネットワーク切り替え処理を説明する図である。
【図１５】実施形態のネットワーク切り替えフロー図である。
【図１６】実施形態の予備論理計算機内のネットワーク切り替えフロー図である。
【図１７】実施形態のネットワーク切り替え処理を説明する図である。
【図１８】実施形態のパッチ監視プログラムの動作環境を示す図である。
【図１９】実施形態のパッチ監視プログラムの処理フロー図である。
【図２０】実施形態のパッチ監視プログラムの動作概要を示す図である。
【図２１】実施例２におけるパッチマネージャの構成を示す図である。
【図２２】実施例２におけるネットワーク切り替えフローを示す図である。
【図２３】実施例２におけるパケット変更プログラムの位置付けを示す図である。
【図２４】実施例２におけるパケット送信プログラムのフローを示す図である。
【図２５】実施例２におけるパケット変更プログラムのフローを示す図である。
【図２６】実施例２におけるパケットの構成を示す図である。
【符号の説明】
１０１：物理計算機、１０５，１０６：論理計算機、１０７：アプリケーションプログラム、１０８：オペレーティングシステム、１０９：パッチマネージャ、１１０：計算機資源分割機構、３０２：パッチ実行プログラム、３０３：パッチ監視プログラム、３０７：パッチテーブル、１１０７：パッチ実行スクリプト、１１０９：パッチファイル、１９０６：管理者端末、１９０７：パッチサーバ、１９１１：メールサーバ
【図１】
0004426736.tif 000002
【図２】
0004426736.tif 000003
【図３】
0004426736.tif 000004
【図４】
0004426736.tif 000005
【図５】
0004426736.tif 000006
【図６】
0004426736.tif 000007
【図７】
0004426736.tif 000008
【図８】
0004426736.tif 000009
【図９】
0004426736.tif 000010
【図１０】
0004426736.tif 000011
【図１１】
0004426736.tif 000012
【図１２】
0004426736.tif 000013
【図１３】
0004426736.tif 000014
【図１４】
0004426736.tif 000015
【図１５】
0004426736.tif 000016
【図１６】
0004426736.tif 000017
【図１７】
0004426736.tif 000018
【図１８】
0004426736.tif 000019
【図１９】
0004426736.tif 000020
【図２０】
0004426736.tif 000021
【図２１】
0004426736.tif 000022
【図２２】
0004426736.tif 000023
【図２３】
0004426736.tif 000024
【図２４】
0004426736.tif 000025
【図２５】
0004426736.tif 000026
【図２６】
0004426736.tif 000027