(57)【特許請求の範囲】
【請求項１】
計算機システムであって、
ストレージシステムと、
前記ストレージシステム内の記憶領域に対し、第１の経路を介してデータを入出力する第１の計算機と、
前記ストレージシステムに対して前記記憶領域の複製の作成を指示し、第２の経路を介して、作成された複製記憶領域がコンピュータウイルスに感染しているか否かを判定する第２の計算機とを有し、
前記第１と第２の計算機はネットワークを介して接続され、
前記第２の計算機は、ウイルス定義ファイルを有し、
前記第２の計算機は、前記複製記憶領域に格納されたファイルが有するデータのビット列と前記ウイルス定義ファイルに記載されたビット列とを比較し、前記両ファイルに含まれるビット列の特徴が一致する場合、前記複製記憶領域の有するファイルがコンピュータウイルスに感染していると判定し、
前記ウイルス定義ファイルが更新された場合、
前記第２の計算機は、作成された前記複製記憶領域に対し、前記第２の経路を介してコンピュータウイルスに感染しているか否かを判定し、
前記第２の計算機は、前記第１の計算機に対して、更新された前記ウイルス定義ファイルを送信し、
前記第１の計算機は、受信した前記ウイルス定義ファイルを、前記第１の経路を介して前記ストレージシステム内の前記記憶領域に格納することを特徴とする、計算機システム。
【請求項２】
計算機システムであって、
ストレージシステムと、
前記ストレージシステム内の記憶領域に対し、第１の経路を介してデータを入出力する第１の計算機と、
前記ストレージシステムに対して前記記憶領域の複製の作成を指示し、第２の経路を介して、作成された複製記憶領域がコンピュータウイルスに感染しているか否かを判定する第２の計算機とを有し、
前記第１と第２の計算機はネットワークを介して接続され、
前記第２の計算機は、前記複製記憶領域内のファイルがコンピュータウイルスに感染していると判定した場合、該感染ファイルに対応する前記記憶領域内のファイルを削除する指示を、前記第１の計算機に対して送信し、
前記第１の計算機は、前記第１の経路を介して、前記記憶領域内の前記感染ファイルに対応するファイルを削除することを特徴とする、計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記第２の計算機が、前記複製記憶領域内のファイルがコンピュータウイルスに感染していると判定した場合、該感染ファイルに対応する前記記憶領域内のファイルの識別情報を、前記第１の計算機に対して送信し、
前記第１の計算機は、前記第１の経路を介して、前記識別情報に基づいて、前記感染ファイルに対応する前記記憶領域内のファイルを削除することを特徴とする、計算機システム。
【請求項４】
計算機システムであって、
ストレージシステムと、
前記ストレージシステム内の記憶領域に対し、第１の経路を介してデータを入出力する第１の計算機と、
前記ストレージシステムに対して前記記憶領域の複製の作成を指示し、第２の経路を介して、作成された複製記憶領域がコンピュータウイルスに感染しているか否かを判定する第２の計算機とを有し、
当該計算機システムは、前記第１及び第２の計算機と、前記ストレージシステムとの間に経路変更手段を備え、
前記第２の計算機は、前記記憶領域がコンピュータウイルスに感染していると判定した場合、
前記第２の計算機は、前記経路変更手段に対して、前記第１の計算機と前記第1の計算機が使用する前記ストレージシステム内の前記記憶領域との間のアクセス、および前記第１の計算機と前記第２の計算機との間のアクセスを許可する指示を送信し、
前記経路変更手段は、受信した前記指示に基づいて、前記第１の計算機と前記第1の計算機が使用する前記ストレージシステム内の前記記憶領域との間のアクセス、および前記第１の計算機と前記第２の計算機との間のアクセスを許可し、前記第1の計算機と他の装置とのアクセスを禁止することを特徴とする、計算機システム。
【請求項５】
計算機であって、
第1の経路を介して他の計算機と接続され、第２の経路を介してストレージシステムと接続される通信手段と、
前記他の計算機が前記ストレージシステム内の記憶領域を使用する場合に、前記通信手段を介して、前記ストレージシステムに対して前記記憶領域の複製の作成を指示する指示手段と、
前記通信手段が前記ストレージシステムから受信した、前記複製記憶領域にアクセスするための識別情報を用いて、前記第２の経路を介して前記複製記憶領域にアクセスし、コンピュータウイルスに感染しているか否かを判定するウイルス検査手段とを有し、
前記ウイルス検査手段は、前記複製記憶領域内のファイルがコンピュータウイルスに感染していると判定した場合、該感染ファイルに対応する前記記憶領域内のファイルを削除する指示を、前記第１の経路を介して、前記記憶領域を使用する前記他の計算機に対して送信することを特徴とする、計算機。
【請求項６】
計算機であって、
第1の経路を介して他の計算機と接続され、第２の経路を介してストレージシステムと接続される通信手段と、
前記他の計算機が前記ストレージシステム内の記憶領域を使用する場合に、前記通信手段を介して、前記ストレージシステムに対して前記記憶領域の複製の作成を指示する指示手段と、
前記通信手段が前記ストレージシステムから受信した、前記複製記憶領域にアクセスするための識別情報を用いて、前記第２の経路を介して前記複製記憶領域にアクセスし、コンピュータウイルスに感染しているか否かを判定するウイルス検査手段とを有し、
当該計算機は、ウイルス定義ファイルを有し、
前記ウイルス検査手段は、前記複製記憶領域に格納されたファイルが有するデータのビット列と前記ウイルス定義ファイルに記載されたビット列とを比較し、前記両ファイルに含まれるビット列の特徴が一致する場合、前記複製記憶領域の有するファイルがコンピュータウイルスに感染していると判定し、
前記ウイルス定義ファイルが更新された場合、
前記ウイルス検査手段は、前記第２の経路を介し、前記複製記憶領域に対して、コンピュータウイルスに感染しているか否かを判定し、
前記ウイルス検査手段は、前記第１の経路を介し、前記他の計算機に対して、更新された前記ウイルス定義ファイルを送信し、
前記他の計算機は、受信した前記ウイルス定義ファイルを、前記第２の経路と異なる経路を介して前記ストレージシステム内の前記記憶領域に格納することを特徴とする、計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
ネットワークを介してオペレーティングシステム（以下、「OS」と呼ぶ）などを取得して計算機（以下、コンピュータと呼ぶ）を起動させるストレージシステムにおいて、コンピュータウイルス(以下、「ウイルス」と呼ぶ)への対策を行なう方法に関する。
【背景技術】
【０００２】
近年、インターネット上でウイルス、ワームといったコンピュータ環境を破壊する脅威が増加しているため、コンピュータシステムにおけるセキュリティ対策の重要性はますます高くなっている。コンピュータのユーザは、OSやアプリケーションに対するセキュリティパッチの適用や、ウイルス定義ファイルの更新、及びウイルスチェックの実行によって、ウイルス対策を行っている。特に、新種のウイルスに対する対策として、ユーザは、ウイルス定義ファイルの更新の通知を受けた後、迅速にウイルス定義ファイルの更新、およびウイルスチェックを実行する必要がある。しかし、上記の操作を、すべてのユーザが確実に実行することは困難である。
【０００３】
そこで、上記のようなセキュリティ対策をシステム管理者が一括して実施するために適したシステムとして、ストレージセントリックシステムがある。ストレージセントリックシステムでは、多くのユーザが使用するOSやアプリケーションが、外部のストレージシステム（以下、ストレージを含むシステムをストレージシステムと呼ぶ）に格納される。そのため、システム管理者が、ストレージ内に集約されたOSおよびアプリケーションへパッチを適用するだけで、システム内のすべてのコンピュータへパッチを適用できる。また、システム管理者は、各コンピュータに対するセキュリティ情報の更新や、ウイルスチェックを一元的に実行できる。
【０００４】
特許文献１には、サーバにおいてウイルスパターンファイルなどのセキュリティ情報が更新された場合、ストレージ内の各コンピュータが使用する記憶領域に、サーバが最新のセキュリティ情報を格納する方法が開示されている。この方法によって、コンピュータが動作中か停止中かに係わらず、コンピュータが使用するストレージ内の記憶領域のセキュリティ情報を最新の状態に保持することができる。
【０００５】
【特許文献１】特開2004-152251号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１によると、動作中のコンピュータが使用する記憶領域に対してセキュリティ情報を更新する場合、サーバは、コンピュータとストレージとの接続を遮断した上で、更新処理を実行する。そのため、コンピュータのユーザは、サーバがセキュリティ情報を更新している間、ストレージ内のデータにアクセスすることができない。
【０００７】
また、ストレージセントリックシステムでは、コンピュータからネットワークを介して、ディスクなどの記憶装置に対するI/O処理が実行される。そのため、ウイルス定義ファイルが更新されたタイミングで、多数のコンピュータが一斉にウイルスチェックを行なうと、ウイルスチェックに伴うI/O処理によってネットワークの負荷が高くなり、輻輳が発生する。これにより、コンピュータの通信速度やディスクアクセス速度が大幅に低下する可能性がある。
【０００８】
さらに、ウイルスチェックは、コンピュータの記憶領域内のファイルを次々に読み出し、それをウイルス定義ファイルと比較するという、CPU負荷が高い処理である。そのため、ウイルスチェックの実行中は、コンピュータのCPU資源の大部分がウイルスチェックを実行するために使用されてしまい、その他のプログラムを使用するユーザの作業効率が低下する。
【０００９】
そこで、本発明では、ストレージセントリックシステムにおいて、動作中のコンピュータを停止させずに、ウイルス定義ファイルの更新やウイルスチェックプログラムの実行を実現する。また、ウイルスチェックプログラム実行時におけるコンピュータの通信速度、及びディスクアクセス速度の低下を防止し、コンピュータによる高速なI/O処理を実現する。
【課題を解決するための手段】
【００１０】
ストレージセントリックシステムにおいて、ウイルスチェックを実行するコンピュータ(以下、ウイルスチェックサーバと呼ぶ)が、ユーザのコンピュータとは異なる経路を用いてストレージ内の記憶領域にアクセスし、記憶領域に格納されているファイルに対してウイルスチェックを実行する。ウイルスチェックの対象となる記憶領域がコンピュータによって使用されている場合、ウイルスチェックサーバは、その記憶領域の複製を作成してウイルスチェックを実行する。ウイルスに感染しているファイルを検知した場合、そのファイルを使用するコンピュータから他のコンピュータに対するアクセスを制限した上で、ウイルスを駆除する。
【００１１】
また、大容量の記憶領域に対し、複数のウイルスチェックサーバが分散してウイルスチェックを実行する。以上のシステム及び方法によって、ネットワークの不可を軽減した上で、記憶領域の複製に対してウイルスチェックを行い、コンピュータの処理能力の低下を防止する。
【発明の効果】
【００１２】
ウイルスチェックプログラム実行時におけるコンピュータの通信速度、及びディスクアクセス速度の低下を防止することができる。
【発明を実施するための最良の形態】
【００１３】
実施例として、第1、および第2の実施例を説明する。
【００１４】
第1の実施例は、ストレージセントリックシステムにおいて、ウイルスチェックサーバが、ユーザのコンピュータとは異なる経路を用いてストレージ内の記憶領域にアクセスし、記憶領域に格納されているファイルに対してウイルスチェックを実行するシステムである。具体的には、ウイルス定義ファイルを更新したウイルスチェックサーバが、ネットワークを介してストレージに格納されたコンピュータの記憶領域をマウントし、記憶領域内に格納されているファイルがウイルスに感染しているかどうかを、ユーザのコンピュータに代わってチェックする。マウントとは、記憶装置などをコンピュータに認識させ、使用可能とする操作のことをいう。ウイルスチェックの対象となる記憶領域がコンピュータによって使用されている場合、ウイルスチェックサーバは、その記憶領域の複製を作成してウイルスチェックを実行する。
【００１５】
ウイルスに感染しているファイルを検知した場合、そのファイルを使用するコンピュータから他のコンピュータに対するアクセスを制限した上で、ウイルスを駆除する。具体的には、ウイルスチェックサーバが、論理的に分割した記憶領域である論理ユニット（LU:Logical Unit）内に感染ファイルを発見した際に、その感染ファイルを駆除する前に、その感染ファイルを有するコンピュータが接続されているスイッチのフィルタ設定を変更する。フィルタ設定は、コンピュータがストレージ内で使用している記憶領域とウイルスチェックサーバ以外へアクセスできないように変更する。
【００１６】
第２の実施例は、ストレージ内に複数のLUがある場合、複数のウイルスチェックサーバによって、分散してウイルスチェックを実行するシステムである。具体的には、1台の代表ウイルスチェックサーバと、任意の複数のウイルスチェックサーバを用意し、代表ウイルスチェックサーバが、ストレージ内のLUにおけるウイルスチェックの実行／未実行についての管理情報を保持する。複数のウイルスチェックサーバは、代表ウイルスチェックサーバに対してウイルスチェックが未実行であるLUの識別情報を要求し、受信したLUに対して、分散してウイルスチェックを実行する。
以下、実施の形態を、図面を用いて説明する。
【実施例１】
【００１７】
図1から図11を参照して、第１の実施例を説明する。
【００１８】
図1は、第1の実施例におけるシステム構成例を示す図である。
【００１９】
図1に示すように、本実施形態のシステムは、ハードディスクなどの記憶装置を持たないパーソナルコンピュータ(PC: Personal Computer)であるPC100、複数台のPC101、PC100が起動時に実行する起動プログラムをPCへ送信するブート管理サーバ102、PC100で動作するOSやユーザがPC100において作成したデータなどを格納するストレージ104、ストレージ104内の記憶領域へアクセスしてウイルスが存在するか否かを検査するウイルスチェックサーバ103、IPパケット (Internet Protocolパケット)を転送する機能を持つネットワーク105、および管理用ネットワーク106を備えている。
ここで、図1に示す例では、システム内にストレージ104が一つのみ存在しているが、複数のストレージ104が存在してもよい。
【００２０】
また、ネットワーク105および管理用ネットワーク106は、IPネットワークに限定されず、例えばファイバチャネルなどを用いてもよい。
【００２１】
PC100は、ハードウェア構成として、ソフトウェアの動作を制御するプロセッサ110(以下、「CPU110」と記す)、CPU110が実行するソフトウェアを記憶するメモリ111、および、ネットワーク105とのインタフェース112(以下、「I/F112」と記す)を備える。
PC101のハードウェア構成は、PC100のハードウェア構成と同様であるため、説明を省略する。以下、本実施形態のシステム内のPCのうち、PC100を代表的なPCとして説明する。
【００２２】
ストレージ104は、PC100などの機器が送信したIPパケットを受信するストレージインタフェース140(以下、「ストレージI/F140」と記す)、記憶領域を持つディスク装置144、複数台のディスク装置145、受信したI/O命令に従いLUへの読み書きを実行するディスクアダプタ142、および、システム管理者などがストレージ104を保守する際に使用するストレージ保守端末141を備える。図1に示すように、ストレージ104は、ネットワーク105を介してPC100などの機器からのIPパケットを受信するストレージI/F140とは別に、ネットワーク105を介してウイルスチェックサーバ103からのIPパケットを受信するストレージI/F146を有する。なお、ネットワーク105が例えばFC（Fibre Channel）のループ構造である場合、ストレージI/F146とウイルスチェックサーバのインタフェース（I/F132）とを、接続するように構成してもよい。
【００２３】
ディスク装置144は、内部に論理的な記憶領域である論理ユニット143 (Logical Unit、以下、「LU143」と記す)を有する。ここで、図1の例では、ディスク装置144は一つのLUのみを有しているが、ディスク装置144が複数のLUを有している構成でもよい。また、複数のディスク装置が一つのLUを構成するようにしてもよい。
【００２４】
以下、本実施形態のシステム内のLUのうち、LU143を代表的なLUとして説明する。
【００２５】
ストレージI/F140は、ハードウェア構成として、iSCSIプロトコル処理の実行およびメモリ151に格納されたテーブルを読み書きするプロセッサであるプロセッサ150(以下、「CPU150」と記す)、CPU150のiSCSIプロトコル処理の実行に必要な情報を格納する記憶領域であるメモリ151、および、外部ネットワークとのインタフェースであるインタフェース152(以下、「I/F152」と記す)を備える。ストレージI/F140は、ネットワークを介してストレージ104に接続される機器の数に応じて、複数設けてもよい。
【００２６】
メモリ151は、LUアクセス管理テーブル153を格納する。
【００２７】
LUアクセス管理テーブル153は、システム内のPCが、ストレージ104内のLUをマウントしているか否かの情報を格納するテーブルである。LUアクセス管理テーブル153の詳細については、図4を用いて後述する。
【００２８】
ストレージI/F146の構成は、ストレージI/F140の構成と同様であるため、説明を省略する。なお、ストレージI/F146は、LUアクセス管理テーブル153を有しなくてもよい。
【００２９】
ストレージ保守端末141は、ハードウェア構成として、プロセッサ160(以下、「CPU160」と記す)、CPU160が実行するソフトウェアを記憶するメモリ161、管理用ネットワーク106とのインタフェース163(以下、「I/F163」と記す)、および、ストレージ104とのインタフェース162(以下、「I/F162」と記す)を備える。メモリ161は、アクセス状況管理プログラム164と、複製ボリューム作成プログラム165を格納する。
【００３０】
CPU160は、アクセス状況管理プログラム164を実行することで、アクセス状況問合せを受信した際に、ストレージI/F140と通信し、LUアクセス管理テーブル153に格納されている情報を入手し、問合せの応答としてその情報を送信する。この処理の内容については後述する。
【００３１】
CPU160は、複製ボリューム作成プログラム165を実行することで、LUの複製を作成する。例えば、システム管理者が、管理用ネットワーク106を介して、ストレージ保守端末141に対し、LU143の複製を作成するよう要求したとする。この要求は、複製LUへ割り当てるターゲット情報(ターゲットiSCSI名およびLUN)を含む。CPU160は要求を受信した際、LU143と同じディスク容量を持つLUを作成し、作成したLUへLU143内のデータをコピーするよう、ディスクアダプタ142へI/O要求を発行する。データコピーの完了後、CPU160は、ストレージI/F140に対し、新たに作成した複製LUのターゲット情報をLUアクセス管理テーブルに書き込むよう要求を発行する。このようにして、CPU160は、LUの複製を作成することができる。
【００３２】
LU143は、CPU110が実行するソフトウェアであるOS170、エージェント171、ウイルスチェックプログラム173、およびウイルス定義ファイル172を格納するLUである。この他に、LU143は、PC100のユーザが作成したデータや、PC100のユーザが独自にインストールしたソフトウェアを格納してもよい。
【００３３】
ウイルス定義ファイル172は、ウイルスの特徴を格納するファイルである。CPU110は、ウイルスチェックプログラム173を実行することで、LU143内のファイルとウイルス定義ファイル172に格納されるウイルスの特徴とを比較し、LU143内にあるウイルスに感染したファイルを特定し、そのファイルを駆除する。
【００３４】
CPU110は、エージェント171を実行することで、ウイルスチェックサーバ103が送信したOSやアプリケーションのパッチ（セキュリティ・パッチプログラム）、最新のウイルス定義ファイルおよびウイルスに感染したファイルのファイル名を受信し、それらを基に、パッチの適用、ウイルス定義ファイルの更新およびウイルスに感染したファイルを駆除するためにウイルスチェックプログラム173を起動する。CPU110がエージェント171を実行した際の動作の詳細は後述する。
【００３５】
ブート管理サーバ102は、ハードウェア構成として、プロセッサ120(以下、「CPU120」と記す)、CPU120が実行するソフトウェアを記憶するメモリ121、および、外部ネットワークとのインタフェース122(以下、「I/F122」と記す)を備える。
【００３６】
メモリ121には、DHCPサーバプログラム123、TFTPサーバプログラム124、ネットワークブートプログラム125(以下、「NBP125」と記す)、および構成情報テーブル126が格納される。
【００３７】
構成情報テーブル126は、CPU120が、DHCPサーバプログラム123およびTFTPサーバプログラム124を実行する際に参照する情報を格納するテーブルである。構成情報テーブル126の構成例は、図2を用いて後述する。
【００３８】
CPU120は、DHCPサーバプログラム123およびTFTPサーバプログラム124を実行することで、PC100のネットブート(PC100が、ネットワーク105を介してメモリ111に読み込んだOS170を実行し、起動すること)を実現する。PC100がネットブートする際の実行処理については、図3を用いて後述する。
【００３９】
ウイルスチェックサーバ103は、ハードウェア構成として、プロセッサ130(以下、「CPU130」と記す)、CPU130が実行するソフトウェアを記憶するメモリ131、外部ネットワークとのインタフェース132、およびインタフェース133(以下、それぞれ「I/F132」および「I/F133」と記す)を備える。
【００４０】
メモリ131は、チェック状況管理テーブル134、ウイルス定義ファイル135、ウイルスチェックプログラム136、パッチ137、およびイニシエータ138を格納する。
【００４１】
イニシエータ138は、CPU130によって実行されるOS又はアプリケーションが発行するLU143への読み書き要求(SCSIコマンドなど)を、IPパケットのペイロードに格納し(カプセル化)、I/F132を介してネットワーク105へ送信することで、ウイルスチェックサーバ103とストレージ104との間のI/O処理を実現する機能を持つソフトウェアである。
【００４２】
なお、CPU130が、イニシエータ138を実行して上記の機能を実現するかわりに、イニシエータ138と同等の機能を持つハードウェアをI/F132内に設けることで、ウイルスチェックサーバ103とストレージ104との間のI/O処理を実現する構成にしてもよい。このように、イニシエータ138と同等の機能を持つハードウェアを有するI/Fは、iSCSIホストバスアダプタとして知られている。
【００４３】
ウイルス定義ファイル135は、ウイルス定義ファイル172と同様、ウイルスの特徴を示す情報を格納するファイルである。ここで、コンピュータウイルスとは、データを破壊したり、コンピュータを起動できなくなるようにするなど、意図的に何らかの被害を及ぼすように作成されたプログラムのことである。
【００４４】
ウイルス定義ファイル135は、ウイルスチェックプログラム136のベンダが作成するファイルであり、新種のウイルスが発生するたびに更新される。
【００４５】
CPU130は、ウイルスチェックプログラム136を実行することで、ウイルスチェックプログラム136のベンダが運営するウイルス定義ファイル配布サーバ（図示せず）に対して、インターネットを介してアクセスする。そして、CPU130は、ウイルス定義ファイル配布サーバに格納されたウイルス定義ファイルの作成日時と、ウイルス定義ファイル135の作成日時とを比較する。ウイルス定義ファイル配布サーバに格納されたウイルス定義ファイルよりウイルス定義ファイル135のほうが古かった場合、CPU130はウイルス定義ファイル配布サーバからウイルス定義ファイルをダウンロードし、ウイルス定義ファイル135を更新する。このような、CPU130によるウイルス定義ファイル配布サーバへのアクセスは、CPU130が定期的(例えば1日ごと)に自動実行してもよいし、システム管理者が手動で、CPU130がウイルス定義ファイル配布サーバに対してアクセスするように指示を出してもよい。
【００４６】
ウイルスチェックプログラム136は、ウイルスチェックプログラム173と同様の機能を持つソフトウェアである。つまり、ウイルスチェックプログラム136は、ウイルス定義ファイル135を基にしてウイルスを駆除する機能と、ウイルス定義ファイル配布サーバから最新のウイルス定義ファイルを入手し、ウイルス定義ファイル135を更新する機能とを持つ。さらに、ウイルスチェックプログラム136は、チェック状況管理テーブル134を更新する機能や、複製ボリューム作成プログラム165へ、複製ボリュームを作成するよう要求を発行する機能などを持つ。上記のようなウイルスチェックプログラム136が持つ機能の詳細については、図8を用いて後に説明する。
【００４７】
パッチ137は、PC100、PC101が共通して使用するOSやアプリケーションのセキュリティホール(ソフトウェアの設計ミスなどによって生じたセキュリティ上の弱点)を修正する機能を持ったプログラムである。OSやアプリケーションにセキュリティホールがあることが発覚した際、それらのベンダは、パッチ137を作成し、ユーザに配布する。システム管理者は、インターネットを利用してベンダが運営するパッチ配布サーバからダウンロードしたり、ベンダが配布するパッチ137を格納したCD-ROMなどの記録媒体を入手したりすることでパッチ137を取得し、それを手動でメモリ131へ格納する。また、パッチ配布サーバへ定期的にアクセスし、パッチ配布サーバに新しいパッチ137が格納されていた場合にそのパッチを自動的にダウンロードしてメモリ131に格納する機能を持ったソフトウェアをメモリ131に導入し、それをCPU130が実行するようにしてもよい。
【００４８】
チェック状況管理テーブル134は、ウイルスチェックサーバ103が、ストレージ104内のLUへ格納されたファイルに対し、ウイルスチェックを行なったか否かを管理するテーブルである。チェック状況管理テーブルの詳細については、図6を用いて後述する。
【００４９】
なお、第１の実施例においてウイルスを駆除する際に使用する、ネットワークに接続されるスイッチを含むシステムの詳細については、図5を用いて後述する。
【００５０】
図2に、構成情報テーブル126の構成例を示す。
【００５１】
図2に示すように、構成情報テーブル126は、MACアドレス200、IPアドレス201、イニシエータiSCSI名202、ターゲットIPアドレス203、ターゲットiSCSI名204、およびLUN205を有する。
【００５２】
MACアドレス200には、PC100が有するI/F112の識別子であるMACアドレスが格納される。IPアドレス201には、I/F112へ割り当てるIPアドレスが格納される。イニシエータiSCSI名202には、ストレージ104がPCを識別するために使用するイニシエータiSCSI名が格納される。ターゲットIPアドレス203には、PC100がネットブートする際にアクセスする、ストレージI/FのIPアドレスが格納される。また、ターゲットiSCSI名204およびLUN205には、LUの識別子であるターゲット情報が格納される。LUN(Logical Unit Number)とは、論理ユニット番号のことであり、物理的なデバイスを論理的に分割して使用する際などに用いられる。
【００５３】
図3は、PC100がネットブートする際にCPU120およびCPU110が実行する処理の内容をシーケンス図に示したものである。
【００５４】
図3に示すように、CPU110は、電源を投入されるなどにより起動すると、ブート管理サーバ102へDHCP要求を発行する。DHCP要求を受信したCPU120は、DHCPサーバプログラム123を実行することで、この要求に含まれるPC100のMACアドレスを基に構成情報テーブル126のMACアドレス200を検索し、PC100のMACアドレス200が格納されているエントリを特定する。続けて、CPU120は、このエントリに含まれるIPアドレス201の情報と、NBP125のファイル名とを、DHCP要求の応答としてPC100へ送信する。
【００５５】
DHCP応答を受信したCPU110は、ブート管理サーバ102に対し、この応答に含まれるファイル名のファイルを送信するように(つまり、NBP125を送信するように)、TFTP要求を送信する。TFTP要求を受信したCPU120は、TFTPサーバプログラム124を実行することで、TFTP要求に対する応答としてNBP125をPC100へ送信する。
【００５６】
CPU110は、TFTP応答として送信されたデータをメモリ111へ格納する。送信が終了するとCPU110は、格納したNBP125を実行することで、ブート管理サーバ102に対し、ストレージ104にiSCSIログインするために必要な情報を問合せる。この問合せを受信したCPU120は、再度構成情報テーブル126を検索し、PC100のMACアドレス200が格納されているエントリを特定する。続けて、CPU120は、このエントリに含まれるイニシエータiSCSI名202からLUN205までの情報を、PC100へ送信する。
【００５７】
NBP125を実行するCPU110は、LU143をマウントするため、ブート管理サーバ102から送信された情報を基に、ストレージ104に対してiSCSIログイン要求を発行する。さらに、CPU110は、ストレージ104からのiSCSIログイン応答を受信した後、LU143に格納されたOS170の読み出しを開始する。
【００５８】
最後に、CPU110が、メモリ111に読み出したOS170を実行することで、PC100のネットブートが完了する。
【００５９】
図4に、LUアクセス管理テーブル153の構成例を示す。
【００６０】
図4に示すように、LUアクセス管理テーブル153は、ストレージ104内のLUを一意に特定するための情報であるターゲット情報と、PCがLUをマウントしているか否かを示すアクセス状況402を格納する領域を有する。ここで、ターゲット情報とは、ターゲットiSCSI名400とLUN401との組み合わせである。
【００６１】
ターゲットiSCSI名400およびLUN401は、システム管理者が、ストレージ104内にLUを作成する際に入力する情報である。CPU150は、システム管理者がそれらの情報を入力した際、それらの情報をLUアクセス管理テーブル153に追加する。
【００６２】
また、アクセス状況402には、CPU150が、初期値として「未使用」と書き込む。
【００６３】
PC100は、ストレージ104内のLUをマウントする際、iSCSI規格に定められた方法に従って、ストレージ104へLUのマウント要求(iSCSIログイン要求)を発行する。同様に、PC100は、ストレージ104内のLUをアンマウントする際、ストレージ104へアンマウント要求(iSCSIログアウト要求)を発行する。CPU150は、PC100からのiSCSIログイン要求を受信した場合、この要求に含まれるターゲット情報を基に、LUアクセス管理テーブル153を検索してPC100がマウントするLUに対応するアクセス状況402を特定し、そこへ「使用中」と書き込む。また、同様に、CPU150は、PC100からのiSCSIログアウト要求を受信した場合、この要求に含まれるターゲット情報を基に、LUアクセス管理テーブル153を検索してPC100がアンマウントするLUに対応するアクセス状況402を特定し、そこへ「未使用」と書き込む。
【００６４】
このようにすることで、CPU150は、ストレージ104内のLUが、PC100にマウントされているか否かを、LUアクセス管理テーブル153を参照することで判別できる。
【００６５】
続いて、図5に、図１中のネットワークについて、スイッチを含む詳細なシステム構成を示した図を示す。図5では、PC100と、PC101と、ブート管理サーバ102と、ウイルスチェックサーバ103と、ストレージ104とをそれぞれ接続するネットワークが、スイッチ501、スイッチ502およびスイッチ503によって構成されている。
【００６６】
スイッチ501、スイッチ502およびスイッチ503は、複数のネットワーク接続インタフェースを有し、受信したIPパケットを、他の機器(例えばPC100やストレージ104)へ転送する機能を持つ。このIPパケットの転送は、スイッチ501、スイッチ502およびスイッチ503が、受信したIPパケットに含まれる終点IPアドレス(あて先IPアドレス)を基に、そのIPパケットをあて先へ届けるにはどのポートへ送出すべきかを判断し、受信したIPパケットを適切なポートから送出することで実現される。
【００６７】
図5に示すように、スイッチ501は、ハードウェア構成として、CPU510、メモリ511、複数のポート512、および管理ポート514を有する。CPU510は、IPパケットの内容を読み込み、その内容を基に送出すべきポート512を判断する機能を有するプロセッサである。また、それに加え、CPU510は、メモリ511内に格納されたパケットフィルタテーブル513の内容を基に、受信したIPパケットを転送すべきか破棄すべきかを判断する機能(以下、「フィルタ機能」という)を有する。フィルタ機能の詳細な説明は後述する。
【００６８】
ポート512は、ネットワークケーブルの接続端子である。
【００６９】
パケットフィルタテーブル513は、CPU510がフィルタ機能を実行する上でのルールを格納するテーブルである。パケットフィルタテーブル513の構成例については、図7を用いて後述する。
【００７０】
管理ポート514は、スイッチ501の管理を、ネットワークを介して行なうためのポートである。スイッチ501の管理の例として、パケットフィルタテーブル513の設定がある。システム管理者やフィルタ設定用のプログラムは、管理用ネットワーク106を用い、管理ポート514へコマンドを送信することで、パケットフィルタテーブル513へのフィルタルール追加および削除を行なえる。
【００７１】
スイッチ502およびスイッチ503のハードウェア構成は、スイッチ501と同様であるため、説明は省略する。
【００７２】
ウイルスチェックサーバ103は、フィルタ設定プログラム520を有する。
【００７３】
フィルタ設定プログラム520は、システム内のスイッチへ、フィルタルールを設定する機能を有するソフトウェアである。CPU130は、フィルタ設定プログラム520を実行することで、管理用ネットワーク106を用いてフィルタルールを追加するコマンドを送信し、スイッチ501などが有するパケットフィルタテーブル513の内容を変更する。
【００７４】
図6は、チェック状況管理テ−ブル134の構成例である。
【００７５】
図6に示すように、チェック状況管理テーブル134は、イニシエータiSCSI名600、IPアドレス601、接続スイッチIPアドレス602、ターゲットIPアドレス603、ターゲットiSCSI名604、LUN605、ウイルスチェック状況606を有する。
【００７６】
イニシエータiSCSI名600には、ウイルスチェックサーバ103がストレージ104内のLUをマウントする際に使用する情報が格納される。
【００７７】
IPアドレス601には、ターゲットiSCSI名604およびLUN605により識別されるLUを使用する、PC100のI/F112へ割り当てられるIPアドレスが格納される。
【００７８】
接続スイッチIPアドレス602には、PC100などのPCが接続するスイッチ501の管理ポート514のIPアドレスが格納される。
【００７９】
ターゲットIPアドレス603には、ウイルスチェックサーバ103がアクセスするストレージI/FのIPアドレスが格納される。第1の実施例では、ウイルスチェックサーバ103は、PC100が使用するストレージI/F140とは異なるストレージI/F146に接続されるため、このストレージI/F146のIPアドレスが格納される。
【００８０】
ターゲットiSCSI名604、およびLUN605には、LUの識別子であるターゲット情報が格納される。
【００８１】
ウイルスチェック状況606には、各LUに格納されたファイルのウイルスチェックが完了したか否かを示す情報が格納される。ウイルスチェック状況606には、初期値として、まだLUへのウイルスチェックが完了していないことを示す「未チェック」という情報が格納される。ウイルスチェック状況606に格納される情報は、CPU130がウイルスチェックプログラム136を実行した際に、その処理の進捗に応じて更新される。ウイルスチェックプログラム136が、ウイルスチェック状況606の内容をどのようにして更新するかについては後述する。
【００８２】
図7は、パケットフィルタテーブル513の構成例である。
【００８３】
図7に示すように、パケットフィルタテーブル513は、ルール番号700、始点IPアドレス701、終点IPアドレス702、タイプ703を有する。
【００８４】
ルール番号700には、パケットフィルタテーブル513のエントリの識別子が格納される。始点IPアドレス701、および終点IPアドレス702には、IPアドレスまたは「all」という情報が格納される。
【００８５】
タイプ703には、フィルタルールのタイプ(「許可」または「拒否」)を示す情報が格納される。ここで、フィルタルールとは、パケットフィルタテーブル513の各エントリに格納される情報、つまり、始点IPアドレス、終点IPアドレスおよびタイプの組からなる情報である。例えば、図7では、パケットフィルタテーブル513に3種類のフィルタルールが格納されている。ルール番号700の欄に「1」と書かれているルール(1番のルール)は、スイッチ501が受信したIPパケットのうち、始点アドレスが192.168.1.100かつ終点アドレスが192.168.1.10であるIPパケットの転送を許可することを決めたルールである。
【００８６】
また、3番のルールは、スイッチ501が受信したIPパケットのうち、始点アドレスが192.168.1.100であるパケットを、終点アドレスの内容によらず、すべて破棄する(転送しない)というルールである。
【００８７】
CPU510は、IPパケットを受信するたびに、パケットフィルタテーブル513を参照し、受信したIPパケットの始点アドレスおよび終点アドレスが、パケットフィルタテーブル513に記載されているフィルタルールに当てはまるか否かを判断する。そして、CPU510は、受信したIPパケットが当てはまるフィルタルールに従い、そのIPパケットを転送または破棄する。
【００８８】
パケットフィルタテーブル513にフィルタルールが複数あり、受信したIPパケットが複数のルールに当てはまる場合、CPU510は、ルール番号の若いルールを優先して適用する。例えば、図7では、始点アドレスが192.168.1.100かつ終点アドレスが192.168.1.10であるIPパケットは、1番のルールと3番のルールの両方に当てはまる。この場合、CPU510は、よりルール番号の若い1番のルールを適用し、このIPパケットの転送を行なう。
【００８９】
なお、CPU510は、パケットフィルタテーブル513に記載されたどのルールにも当てはまらないIPパケットを受信した場合、このIPパケットの転送を許可するものとする。
【００９０】
第1の実施例を実現するシステムが実行する処理内容を、図8を用いて説明する。
【００９１】
図8に示す処理は、ウイルスチェックプログラム136を実行するCPU130が、ウイルス定義ファイル135を更新したことを契機として実行される。
【００９２】
ステップ800、ステップ801およびステップ802は、CPU130が、ウイルスチェックプログラム136を実行することで行なう処理である。
【００９３】
まず、CPU130は、ウイルス定義ファイル135を更新した後、チェック状況管理テーブル134のウイルスチェック状況606を走査し、ウイルスチェック状況606に「未チェック」という情報が格納されているエントリの一つを任意に選択する。そして、このエントリのイニシエータiSCSI名600、ターゲットIPアドレス603、ターゲットiSCSI名604およびLUN605に格納された情報を読み出す(ステップ800)。
【００９４】
以下、本ステップ800でCPU130が選択したエントリは、LU143の情報を格納したエントリであったとして説明を続ける。
【００９５】
CPU130は、ステップ800で特定したエントリに含まれるウイルスチェック状況606の内容を、「未チェック」から「チェック中」へ変更する(ステップ801)。
【００９６】
続いて、CPU130は、イニシエータ138を起動して、LU143内のファイルを読み出し、LU143内に感染したファイルがあるか否かを判断する処理(ウイルスチェック)を実行する。しかし、一つのLUに格納されたファイルを、複数のPCが同時に読み書きすると、ファイルシステムの整合性が取れなくなる可能性がある。そのような状況を避けるため、CPU130は、LU143内のファイルに対してウイルスチェックを行なう前に、LU143が他のPCによりマウントされているか否かを判定する処理を行なう。
【００９７】
CPU130は、ステップ800で読み出したLU143のターゲット情報を、管理用ネットワークを用いてストレージ保守端末141へ送信し、LU143が現在マウントされているかどうかをストレージ保守端末141へ問い合わせる。その問合せを受信したストレージ保守端末141のCPU160は、アクセス状況管理プログラム164を実行することで、LU143のターゲット情報をストレージI/F140へ送信し、LU143が現在マウントされているかどうかをストレージI/F140へ問い合わせる。その問合せを受信したストレージI/F140のCPU150は、受け取ったターゲット情報を基にLUアクセス管理テーブル153を検索し、LU143の情報が格納されたエントリを特定する。続けて、CPU150は、特定したエントリのアクセス状況402を読み出し、その内容(「使用中」または「未使用」)をストレージ保守端末141へ送信する。アクセス状況管理プログラム164を実行するCPU160は、ストレージI/F140が送信した情報を、ウイルスチェックサーバ103へ転送する。この情報を受け取ったCPU130は、情報の内容が「使用中」であった場合は、LU143が現在他のPCにマウントされていると判断し、ステップ803を実行する。また、この情報の内容が「未使用」であった場合は、LU143が現在他のPCにマウントされていないと判断し、ステップ806を実行する(ステップ802)。
【００９８】
まず、ステップ802でCPU130が受信した情報の内容が「使用中」であった場合の処理(ステップ803以降の処理)を説明する。
【００９９】
ウイルスチェックプログラム136を実行するCPU130は、ストレージ保守端末141に対し、LU143の複製を作成するよう指示する。その指示を受信したCPU160は、複製ボリューム作成プログラム165を実行することで、LU143に格納されたデータと同じデータを有する新たなLU(以下、「複製LU」という)を作成する。続けて、CPU160は、ウイルスチェックサーバ103が複製LUをマウントできるよう、複製LUの識別子であるターゲット情報と、複製LUをマウントする際に使用するストレージI/F146のI/F152と、複製LUをマウントする際にイニシエータ138が使用するイニシエータiSCSI名を、それぞれ任意に決定し、その内容をウイルスチェックサーバ103へ送信する(ステップ803)。
【０１００】
CPU130は、イニシエータ138を実行し、ストレージ保守端末141から受け取った情報を基に複製LUをマウントする(ステップ804)。
【０１０１】
そして、CPU130は、ウイルスチェックプログラム136を実行することで、ウイルスチェック処理2を実行する(ステップ805)。なお、ウイルスチェック処理2の処理内容は後述する。
【０１０２】
次に、ステップ802でCPU130が受信した情報の内容が「未使用」であった場合の処理( ステップ806以降の処理)を説明する。
【０１０３】
CPU130は、イニシエータ138を実行し、ステップ800でチェック状況管理テーブル134から読み出したLU143の情報を基に、LU143をマウントする( ステップ806)。
【０１０４】
そして、CPU130は、ウイルスチェックプログラム136を実行することで、ウイルスチェック処理1を実行する( ステップ807)。なお、ウイルスチェック処理1の処理内容は後述する。
【０１０５】
ここで、ステップ806または ステップ807を実行している間は、ウイルスチェックサーバ103がLU143をマウントしているため、ネットブート後にLU143をマウントするPC100が起動できなくなる。
【０１０６】
これを防ぐため、ブート管理サーバ102のCPU120は、PC100が起動した際、TFTPサーバプログラムを実行することで、NBP125をPC100へ送信する前に、PC100がマウントするLU143のターゲット情報をウイルスチェックサーバ103へ送信する。その情報を受信したCPU130は、チェック状況管理テーブル134を検索し、LU143が現在チェック中であるか否かを調べる。もしチェック中であった場合、CPU130は、LU143をアンマウントし、アンマウント完了通知をブート管理サーバ102へ送信する。その後、CPU130は、ステップ803以降の処理を実行する。これにより、ウイルスチェックサーバ103がLU143に対してウイルスチェックを行なっている最中でも、LU143を使用するPC100が起動できる。
【０１０７】
以下、ウイルスチェック処理1またはウイルスチェック処理2終了後にCPU130が実行するステップ808およびステップ809の処理内容を説明する。ここで、上記のステップでは、CPU130が、ウイルスチェクプログラム136を実行することで以下の処理を行なう。
【０１０８】
CPU130は、ウイルスチェック処理1またはウイルスチェック処理2終了後、チェック状況管理テーブル134を走査し、LU143の情報を格納するエントリを特定し、そのエントリのウイルスチェック状況606を「チェック中」から「チェック済」に変更する(ステップ808)。
【０１０９】
続けて、CPU130は、チェック状況管理テーブル134を走査し、ウイルスチェック状況606の内容が「未チェック」となっているエントリが存在するか否かを調べる。ウイルスチェック状況606の内容が「未チェック」であるエントリが存在した場合、図8の矢印に示したように、CPU130は、ステップ800からの処理を繰り返し実行する。そうでない場合、CPU130は処理を終了する(ステップ809)。
【０１１０】
なお、図8で示した処理によって、すべてのエントリについてウイルスチェックが終了した場合、CPU130は次の契機におけるウイルスチェックに備えて、チェック状況管理テーブル134のウイルスチェック状況606の内容を、すべて「未チェック」に書き換える。
【０１１１】
図9は、ウイルスチェック処理1の処理内容を示す流れ図である。ここで、ウイルスチェック処理1は、CPU130が、ウイルスチェックプログラム136を実行することによって行なう処理である。
【０１１２】
CPU130は、イニシエータ138の機能を用いて、ステップ806でマウントしたLU143に格納されたファイルを読み込み、LU143にウイルスに感染したファイルがあるか否かを調べる(ステップ900)。
【０１１３】
ステップ900でウイルスに感染したファイルが見つかった場合、CPU130は、続けてステップ902を実行する。そうでない場合、ウイルスチェック処理1は終了する(ステップ901)。
【０１１４】
ステップ902は、ウイルスチェックプログラム136を実行するCPU130が、LU143またはLU143の複製LU内で、ウイルスに感染したファイルを発見した場合に実行されるステップである。このステップでは、CPU130がフィルタ設定プログラム520を実行することで、LU143を識別するターゲット情報を基にチェック状況管理テーブルを検索し、LU143を使用するPC100が接続しているスイッチの管理ポートへ割り当てられたIPアドレスを特定する。続いて、フィルタ設定プログラム520を実行するCPU130は、特定したIPアドレスに対してフィルタ設定コマンドを送信し、PC100がウイルスチェックサーバ103およびストレージ104以外へIPパケットを送信できないようなフィルタ設定を行なう。具体的には、図7に示す例のように、以下の3つのフィルタルールをパケットフィルタテーブル513へ登録する。
【０１１５】
まず一つ目に、CPU130は、始点IPアドレスがPC100のI/F112へ割り当てられたIPアドレス(例えば192.168.1.100)で、終点IPアドレスがストレージ104のI/F152へ割り当てられたIPアドレス(例えば192.168.1.10)であるIPパケットを転送するフィルタルールを登録する(図7の1番のルールを参照)。
【０１１６】
二つ目に、CPU130は、始点IPアドレスがPC100のI/F112へ割り当てられたIPアドレス(例えば192.168.1.100)で、終点IPアドレスがウイルスチェックサーバ103のI/F132へ割り当てられたIPアドレス(例えば192.168.1.200)であるIPパケットを転送するフィルタルールを登録する(図7の2番のルールを参照)。
【０１１７】
三つ目に、CPU130は、始点IPアドレスがPC100のI/F112へ割り当てられたIPアドレス(例えば192.168.1.100)であるIPパケットを、すべて破棄するフィルタルールを登録する(図7の3番のルールを参照)。
【０１１８】
一つ目および二つ目のルールへ、三つ目のルールより若いルール番号を割り当てることで、CPU130は、PC100がウイルスチェックサーバ103およびストレージ104以外へIPパケットを送信できないようなフィルタ設定を実行することができる(ステップ902)。
【０１１９】
ステップ903では、CPU130がパッチ137を実行し、LU143内のOS170やアプリケーションのセキュリティホールを修正する。また、メモリ131内のウイルス定義ファイル135の作成日時とLU143内のウイルス定義ファイル172の作成日時とを比較し、ウイルス定義ファイル172の作成日時が古い場合、ウイルス定義ファイル172を削除した後、ウイルス定義ファイル135をLU143へ格納する。さらに、CPU130は、ステップ900で発見した感染ファイルを駆除する(ステップ903)。
【０１２０】
ステップ904では、CPU130が、フィルタ設定プログラム520を実行し、ステップ902で設定したPC100に対するアクセス制限のフィルタルールを解除するように設定する(ステップ904)。
【０１２１】
図10は、ウイルスチェック処理2の処理内容を示す流れ図である。ここで、ウイルスチェック処理2は、CPU130が、ウイルスチェックプログラム136を実行することによって行なう処理である。
【０１２２】
CPU130は、イニシエータ138の機能を用いて ステップ806でマウントした複製LUに格納されたファイルを読み込み、複製LUにウイルスに感染したファイルがあるか否かを調べる(ステップ1000)。
【０１２３】
ステップ1000でウイルスに感染したファイルが見つかった場合、CPU130は、続けてステップ1002を実行する。そうでない場合、続けてステップ1005を実行する(ステップ1001)。
【０１２４】
ここでは、ステップ1000でウイルスに感染したファイルが見つかったとして、ステップ1002以降の処理を説明する。
【０１２５】
ステップ1002において、ウイルスチェックサーバ103がLU内に感染ファイルを発見した際に、その感染ファイルを駆除する前に、その感染ファイルを有するPC100が接続しているスイッチのフィルタ設定を変更する処理は、ステップ902と同様であるため、省略する。このようなフィルタ設定によって、PC100が、ストレージ104とウイルスチェックサーバ103以外に対してアクセスすることが制限される(ステップ1002)。
【０１２６】
CPU130は、LU143を特定するターゲット情報を基にチェック状況管理テーブル134を検索し、IPアドレス601に記載された情報を読み出すことで、LU143を使用するPC100へ割り当てられたIPアドレスを調べる。次に、CPU130は、パッチ137と、ウイルス定義ファイル135と、ステップ1000で発見したウイルス感染ファイルのファイル名とを、LU143を使用するPC100へ送信する(ステップ1003)。
【０１２７】
PC100は、エージェント171を実行することで、ステップ1003でCPU130が送信したデータを受信する。データ受信後にエージェントが行なう処理は、図11を用いて、後に説明する。
【０１２８】
CPU130は、ステップ1003実行後、エージェント171が発行する駆除通知を待つ(ステップ1004)。
【０１２９】
ステップ1005では、CPU130は、駆除通知を受信した後、イニシエータ138を実行することで複製LUをアンマウントする。さらに、CPU130は、ストレージ保守端末141へ、複製LUを削除するように指示する。この削除指示を受信したCPU160は、複製ボリューム作成プログラム165を実行することで、複製LUを削除する。複製LUの削除が完了した後、CPU160は、ウイルスチェックサーバ103へ、複製LUの削除通知を発行する。ウイルスチェックサーバ103がその削除通知を受信することで、ウイルスチェック処理2は終了する(ステップ1005)。
【０１３０】
図11は、エージェント処理の処理内容を示す流れ図である。エージェント処理は、エージェント171を実行するCPU110が、ウイルスチェック処理2のステップ1003において、ウイルスチェックサーバ103が送信した情報(パッチ137、ウイルス定義ファイル172およびウイルス感染ファイルのファイル名)を受信することを契機に実行される処理である。
【０１３１】
まず、CPU110は、受信したパッチ137を実行し、LU143内のOS170やアプリケーションのセキュリティホールを修正する。また、CPU110は、エージェント171を実行することで、ウイルス定義ファイル172を削除し、ウイルス定義ファイル135をLU143へ格納し、ウイルス定義ファイルを更新する(ステップ1100)。
【０１３２】
次に、CPU110は、ウイルスチェックプログラム173を起動することで、ウイルスチェックサーバ103から受信したウイルス感染ファイルのファイル名を基に感染ファイルを特定し、そのファイルからウイルスを駆除する(ステップ1101)。
【０１３３】
最後に、CPU110は、エージェント171を実行することで、ウイルスチェックサーバ103へ、ウイルスの駆除が完了したことを通知し、エージェント処理は終了する(ステップ1102)。
【０１３４】
以上、図8から図11において説明したように、あるLU143に対して、ウイルスチェックサーバ103がウイルスチェックを実行し、ウイルスに感染している場合、PC100がウイルス駆除を実行する。ここで、第1の実施例において、動作中のPC100がウイルスに感染した後、ウイルスを駆除するまでに、どのようなデータが送受信されるかについて概略を説明する。
【０１３５】
まず、PC100は、例えばUSBメモリや電子メールなど、外部からウイルスに感染したファイルを取得し、実行することでウイルスに感染する。
【０１３６】
続いて、ウイルスチェックサーバ103は、管理用ネットワーク106を介して、LU143の使用状況をストレージ保守端末141に問合せ、LU143の複製を作成するよう指示する。ウイルスチェックサーバ103は、作成された複製LUに対し、ネットワーク105、およびPC100が使用するストレージI/F140とは異なるストレージI/F146を介して、ウイルスチェックのためのデータを転送する。
【０１３７】
ウイルスチェックサーバ103は、複製LU内にウイルス感染ファイルを発見し、PC100に対して、ネットワーク105を介してウイルス駆除の実行要求を発行する。
【０１３８】
ウイルスチェックサーバ103からウイルス駆除の指示と、ウイルス感染ファイル名、パッチ137およびウイルス定義ファイル135を受信したPC100は、ネットワーク105を介して、ストレージI/F140に対してウイルス駆除のためのデータを転送する。
【０１３９】
多くのウイルスは、電子メールやブロードキャストパケットなどを用いて、自身のコピーを作成し、それを他のPCへ送信しようとする。そのため、ユーザは、ウイルスに感染しているPCをネットワーク内に発見した場合、ウイルスの拡散を防ぐために、そのPCからネットワークのケーブルを抜くという対策を行なう。しかし、ストレージセントリックシステムでは、PCが、ネットワークを介してディスクへアクセスするため、ユーザがPCからネットワークケーブルを抜いてしまうと、そのPCが停止してしまう。
【０１４０】
第１の実施例では、上述のようにスイッチのフィルタルールを設定することで、PCを停止させずにウイルスの駆除を実行する。このような手段を用いることで、PCの利便性を保持したまま、ウイルスの拡散を防止することが可能となる。
【実施例２】
【０１４１】
次に、第２の実施例について、図12および図13を参照して説明する。第2の実施例は、1台の代表ウイルスチェックサーバと、任意の台数のウイルスチェックサーバとを有するシステムにおける実施形態である。
【０１４２】
第1の実施例と同様、ウイルス定義ファイルの更新を検知したウイルスチェックサーバは、LUをマウントし、そのLUに格納されたファイルがウイルスに感染しているか否かをチェックする。ただし、LUが既にチェックされているか否かを管理するチェック状況管理テーブルは、代表ウイルスチェックサーバのメモリ内にのみ格納され、代表ウイルスチェックサーバ上で動作するウイルスチェックプログラムが、チェック状況管理テーブルを管理する。
【０１４３】
その他のウイルスチェックサーバは、ウイルスチェックを実行する際、代表ウイルスチェックサーバへ、まだウイルスチェックの処理が実行されていないLUを問い合わせる。このようにすることで、LUのウイルスチェック漏れや、一つのLUを複数のウイルスチェックサーバで繰り返しチェックしてしまうことを防ぐ。
【０１４４】
図12は、第2の実施例におけるシステム構成例を示す図である。以下、図面を用い、第1の実施例と異なる点のみ説明する。
【０１４５】
PC100、PC101、ブート管理サーバ102、ストレージ104、ネットワーク105および管理用ネットワーク106については、第1の実施例で説明したため、説明は省略する。なお、第2の実施例のようにウイルスチェックサーバが複数ある場合、ストレージ104の有するストレージI/F146は、ウイルスチェックサーバごとに複数設けてもよい。
【０１４６】
図12に示した例では、代表ウイルスチェックサーバ103、ウイルスチェックサーバ107およびウイルスチェックサーバ108の、合計3台のウイルスチェックサーバが存在する。
【０１４７】
代表ウイルスチェックサーバ103は、実施例1のウイルスチェックサーバ103と同様、ハードウェア構成として、ソフトウェアの動作を制御するプロセッサ130(以下、「CPU130」と記す)と、CPU130が実行するソフトウェアを記憶するメモリ131と、外部ネットワークとのインタフェース132およびインタフェース133(以下、それぞれ「I/F132」および「I/F133」と記す)とを備える。
【０１４８】
メモリ131は、チェック状況管理テーブル134と、ウイルス定義ファイル135と、ウイルスチェックプログラム136と、パッチ137と、イニシエータ138とを格納する。これらは、第1の実施例と同じものであるため、説明は省略する。
【０１４９】
ウイルスチェックサーバ107は、代表ウイルスチェックサーバ103と同様、ハードウェア構成として、ソフトウェアの動作を制御するプロセッサ130(以下、「CPU130」と記す)と、CPU130が実行するソフトウェアを記憶するメモリ141と、外部ネットワークとのインタフェース132およびインタフェース133(以下、それぞれ「I/F132」および「I/F133」と記す)とを備える。
【０１５０】
メモリ141の内容は、チェック状況管理テーブル134を有しないことを除き、メモリ131の内容と同様である。
【０１５１】
ウイルスチェックサーバ108は、ウイルスチェックサーバ107と同様の構成であるため、説明は省略する。
【０１５２】
続いて、第2の実施例を実現するシステムが実行する処理内容を、図13を用いて説明する。図13に示す処理は、ウイルスチェックプログラム136を実行するCPU130が、ウイルス定義ファイル135を更新したことを契機として実行される。
【０１５３】
ステップ1301、ステップ1302、ステップ1303、およびステップ1304を除き、図13に記載した処理は、図8で説明した第1の実施例における処理と同じである。そのため、以下、第1の実施例との相違点である、ステップ1301、ステップ1302、ステップ1303、およびステップ1304の処理内容のみ説明する。
【０１５４】
なお、これらのステップは、CPU130が、ウイルスチェックプログラム136を実行することで行なわれる処理である。
【０１５５】
ウイルスチェックサーバ107のCPU130は、ウイルス定義ファイル135を更新した後、代表ウイルスチェックサーバ103に対し、まだウイルスチェックが実行されていないLUを通知するよう要求を発行する。その要求を受信した代表ウイルスチェックサーバ103のCPU130は、チェック状況管理テーブル134のウイルスチェック状況606を走査し、ウイルスチェック状況606に「未チェック」という情報が格納されているエントリの一つを任意に選択する。そして、このエントリのイニシエータiSCSI名600、ターゲットIPアドレス603、ターゲットiSCSI名604およびLUN605に格納された情報を読み出す。さらに、代表ウイルスチェックサーバ103のCPU130は、読み出した内容を、要求を発行したウイルスチェックサーバ107へ送信する。
【０１５６】
ここで、代表ウイルスチェックサーバ103のCPU130は、チェック状況管理テーブル134のウイルスチェック状況606を走査し、ウイルスチェック状況606に「チェック中」という情報が格納されているエントリの数を数え、その数がシステム管理者によりあらかじめ設定された数より大きい場合、その数が少なくなるまで、ウイルスチェックサーバ107への応答を行なわないようにしてもよい。上記の処理を加えることにより、代表ウイルスチェックサーバ103は、多数のウイルスチェックサーバ107が同時にウイルスチェックを実行することで発生するネットワークの輻輳を防止できる。さらに、代表ウイルスチェックサーバ103は、ウイルスチェックサーバ107へ応答するか否かを判断する材料として、「チェック中」という情報が格納されているエントリの数の代わりに、SNMPプロトコルなどを用いてネットワーク105を構成するスイッチから収集したネットワークの転送データ量を用いてもよい。
【０１５７】
なお、ウイルス定義ファイル135を更新したウイルスチェックサーバが代表ウイルスチェクサーバ103であった場合、CPU130は、代表ウイルスチェックサーバ103へ要求を発行する代わりに、メモリ131内に格納されたチェック状況管理テーブル134を直接読み出す(ステップ1301)。
【０１５８】
ステップ1301終了後、ウイルスチェックプログラム136を実行する代表ウイルスチェックサーバのCPU130は、ステップ1301で特定したエントリに含まれるウイルスチェック状況606の内容を、「未チェック」から「チェック中」へ変更する(ステップ1302)。
なお、ステップ1302は、代表ウイルスチェックサーバのCPU130のみ実行する処理である。
【０１５９】
CPU130は、ウイルスチェック処理1またはウイルスチェック処理2終了後、ステップ1301で選択したLU143のターゲット情報を代表ウイルスチェックサーバ103へ送信し、チェック状況管理テーブル134の内容を更新するよう要求を発行する。その要求を受信した代表ウイルスチェックサーバ103のCPU130は、チェック状況管理テーブル134を走査し、LU143の情報を格納するエントリを特定し、そのエントリのウイルスチェック状況606を「チェック中」から「チェック済」に変更する。ここで、ウイルスチェック処理1またはウイルスチェック処理2を実行したCPU130が、代表ウイルスチェックサーバ103のCPUであった場合、CPU130は、代表ウイルスチェックサーバ103へ要求を発行する代わりに、メモリ131内に格納されたチェック状況管理テーブル134の内容を直接更新する。(ステップ1303)。
【０１６０】
続いて、代表ウイルスチェックサーバ103のCPU130は、チェック状況管理テーブル134を走査し、ウイルスチェック状況606の内容が「未チェック」となっているエントリが存在するか否かを調べる。ウイルスチェック状況606の内容が「未チェック」であるエントリが存在した場合、ステップ1303においてチェック状況管理テーブル134の更新要求を発行したウイルスチェックサーバ107に対し、ステップ1301からステップ1303までの処理を行なうように指示する。ウイルスチェック状況606の内容が「未チェック」であるエントリが存在しない場合、代表ウイルスチェックサーバのCPU130は、処理を終了する(ステップ1304)。
【０１６１】
なお、図13で示した処理によって、すべてのエントリについてウイルスチェックが終了した場合、代表ウイルスチェックサーバのCPU130は、次の契機におけるウイルスチェックに備えて、チェック状況管理テーブル134のウイルスチェック状況606の内容を、すべて「未チェック」に書き換える。
【０１６２】
第２の実施例では、ウイルスチェックを実行する対象のLUの個数が非常に多い場合、複数のウイルスチェックサーバがそれぞれ異なるLUのウイルスチェックを行なうことで、大容量の記憶領域に対して高速なウイルスチェックを実行することが可能となる。
【０１６３】
以上のように、上述した第１および第２の実施形態によると、ウイルスチェックサーバがウイルスチェックを実行しても、ユーザのコンピュータの通信速度やディスクアクセス速度は低下しない。従って、システム管理者は、ユーザの利便性を損なうことなく、ウイルスチェックを一括実施することが可能となる。
【０１６４】
よって、PC100がオフィス用PCであるシステム以外にも、ATM端末やPOS(Point of Sale)端末など、24時間365日無停止のシステムにおけるウイルスチェックに適用することが可能である。
【０１６５】
（変形例1）  
なお、上述した実施形態では、ウイルスチェックの処理は、CPU130がウイルス定義ファイル135を更新したことを契機として実行されるとしたが、システム管理者が予め実行周期を設定して定期的に実行してもよい。また、システム管理者がウイルスチェックを手動で任意のタイミングに実行してもよい。
【０１６６】
（変形例2）
なお、上述した実施形態では、PC100は、ネットワーク105を介してストレージ104からOS170をメモリ111に読み込んで起動するネットブート型PCとして説明した。ここで、PC100とスイッチ501の間に、CPUとメモリを有するブレードを複数搭載したブレードサーバなどの情報処理装置を設置し、PC100の計算処理をブレードサーバで行なう（つまり、PC100がシンクライアント型PCである）場合のシステムにおいても、適用が可能である。
【０１６７】
ウイルスチェックサーバがウイルス定義ファイルの更新を定期的にチェックし、ウイルス定義ファイルの更新を検知した場合、ウイルスチェックサーバは、ブレードサーバ内のあるブレードで動作するエージェントに対して、このブレードがシンクライアントPCによって使用中であるか(つまり、このブレードに対してPCがアクセス中であるか) を問い合わせる。本システムにおいて、例えばストレージは、ブレードの識別情報と、このブレードを使用するPCの識別情報と、このブレードがアクセスするストレージ内のLUの識別情報とを対応付けるテーブルを有する。
【０１６８】
このブレードに対してPCがアクセスしていない場合、ウイルスチェックサーバは、ブレードに対して最新のウイルス定義ファイルを送信すると共に、このブレードがウイルスチェックを実行するように要求する。
【０１６９】
このブレードに対してPCがアクセスしている（使用中である）場合、ウイルスチェックサーバは、ストレージに対して、このブレードがアクセスしているLUの複製を作るよう要求を発行する。その後、ウイルスチェックサーバは、複製LUに対してウイルスチェックを実行し、ウイルス感染を発見した場合、このブレードサーバに対して最新のウイルス定義ファイルを送信すると共に、ウイルス駆除を実行するように要求する。ウイルス駆除の際、ウイルスチェックサーバは、ウイルス感染ファイルを含むLUにアクセスするPCが使用しているブレードを含むブレードサーバとストレージとのアクセス、このブレードサーバとウイルスチェックサーバとのアクセスを許可し、それ以外のアクセスを許可しないように、スイッチに対してフィルタルールの指示を送信してアクセス制限を設定する。
【０１７０】
本実施形態では、複数のブレードサーバとストレージの間で生じるネットワーク上のトラフィックと、ウイルスチェックサーバとストレージの間で生じるトラフィックを分離できるので、ウイルスチェック中でも、各ブレードサーバのディスクアクセス速度が低下しない。また、ブレードサーバがPCによって使用中である場合、ブレードサーバの代わりにウイルスチェックサーバがウイルスチェックを実行するため、ブレードサーバのCPUによる処理効率を低減することなく、ウイルスチェックを実行することができる。
【０１７１】
（変形例3）
なお、上述した第1および第2の実施形態では、ウイルスチェックサーバ103とストレージ104は別な装置として説明したが、例えばNASヘッドのように、ストレージ104がディスク内のファイルを読み出す機能を有する場合、ストレージ104がウイルスチェックサーバ103の機能を有する装置としてもよい。この場合、ストレージ104がチェック状況管理テーブル134、ウイルス定義ファイル135、ウイルスチェックプログラム136、およびパッチ137を有する。
【０１７２】
（変形例4）
なお、上述した第1および第2の実施形態では、PC100とPC100が使用するLU143は基本的に1対1に対応しているとして説明したが、複数のPC100、101がLU143を共有して使用する場合にも適用できる。
【０１７３】
図3に記載したとおり、PC100は、ブートする際、ブート管理サーバ102と通信し、ブート管理サーバ102からIPアドレスや、アクセスするLU143のアドレス情報などを取得する。その後、ブート管理サーバ102は、ウイルスチェックサーバ103に対して、どのPCがどのLUをマウントしたかについての情報を通知する。この通知を受信したウイルスチェックサーバ103は、その情報をチェック状況管理テーブル134へ書き込む。このようにチェック状況管理テーブル134の内容を動的に生成することで、どのPCがどのLUを使用しているかを管理することができる。
【０１７４】
ウイルスチェックサーバ103は、例えば図8に示す方法によって、複数のPC100によって共有されているLU143のウイルスチェックを実行する。ウイルス感染ファイルが発見された場合、チェック状況管理テーブル134を参照してLU143を使用しているPC100を特定し、ウイルス駆除の実行指示を送信する。
【０１７５】
ウイルス駆除の際、ウイルスチェックサーバ103は、ウイルス感染ファイルを含むLU143にアクセスするPCとして特定されたPC100とストレージ104とのアクセス、このPCとウイルスチェックサーバ103とのアクセスを許可し、それ以外のアクセスを許可しないように、スイッチ501にフィルタルールの指示を送信してアクセス制限を設定する。
【図面の簡単な説明】
【０１７６】
【図１】第1の実施例のシステム構成例を示す図
【図２】構成情報テーブルの構成例図
【図３】ネットブートの動作シーケンスを示す図
【図４】LUアクセス管理テーブルの構成例図
【図５】スイッチを含むシステム構成例を示す図
【図６】チェック状況管理テーブルの構成例図
【図７】パケットフィルタテーブルの構成例図
【図８】第1の実施例におけるシステムが実行する処理の流れ図
【図９】ウイルスチェック処理1の流れ図
【図１０】ウイルスチェック処理2の流れ図
【図１１】エージェントが実行する処理の流れ図
【図１２】第2の実施例のシステム構成例を示す図
【図１３】第2の実施例におけるシステムが実行する処理の流れ図
【符号の説明】
【０１７７】
１００, １０１  PC
１０２  ブート管理サーバ
１０３，１０７，１０８  ウイルスチェックサーバ
１０４  ストレージ
１０５  ネットワーク
１０６  管理用ネットワーク
１１０  CPU
１１１  メモリ
１１２  I/F
１２０  CPU
１２１  メモリ
１２２  I/F
１２３  DHCPサーバプログラム
１２４  TFTPサーバプログラム
１２５  NBP
１２６  構成情報テーブル
１３０  CPU
１３１  メモリ
１３２，１３３  I/F
１３４  チェック状況管理テーブル
１３５  ウイルス定義ファイル
１３６  ウイルスチェックプログラム
１３７  パッチ
１３８  イニシエータ
１４０，１４６  ストレージI/F
１４１  ストレージ保守端末
１４２  ディスクアダプタ
１４３  LU
１４４，１４５  ディスク装置
１５０  CPU
１５１  メモリ
１５２  I/F
１５３  LUアクセス管理テーブル
１６０  CPU
１６１  メモリ
１６２，１６３  I/F
１６４  アクセス状況管理プログラム
１６５  複製ボリューム作成プログラム
１７０  OS
１７１  エージェント
１７２  ウイルス定義ファイル
１７３  ウイルスチェックプログラム
５０１，５０２，５０３  スイッチ
５１０  CPU
５１１  メモリ
５１２  ポート
５１３  パケットフィルタテーブル
５１４  管理ポート
５２０  フィルタ設定プログラム
【図１】
0004687382.tif 000002
【図２】
0004687382.tif 000003
【図３】
0004687382.tif 000004
【図４】
0004687382.tif 000005
【図５】
0004687382.tif 000006
【図６】
0004687382.tif 000007
【図７】
0004687382.tif 000008
【図８】
0004687382.tif 000009
【図９】
0004687382.tif 000010
【図１０】
0004687382.tif 000011
【図１１】
0004687382.tif 000012
【図１２】
0004687382.tif 000013
【図１３】
0004687382.tif 000014