JP4943278B2 - ウィルススキャン方法及びその方法を用いた計算機システム - Google Patents

ウィルススキャン方法及びその方法を用いた計算機システム Download PDF

Info

Publication number
JP4943278B2
JP4943278B2 JP2007231295A JP2007231295A JP4943278B2 JP 4943278 B2 JP4943278 B2 JP 4943278B2 JP 2007231295 A JP2007231295 A JP 2007231295A JP 2007231295 A JP2007231295 A JP 2007231295A JP 4943278 B2 JP4943278 B2 JP 4943278B2
Authority
JP
Japan
Prior art keywords
computer
scan
virus
pattern
read data
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
JP2007231295A
Other languages
English (en)
Other versions
JP2009064224A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007231295A priority Critical patent/JP4943278B2/ja
Priority to US11/970,783 priority patent/US8166548B2/en
Publication of JP2009064224A publication Critical patent/JP2009064224A/ja
Priority to US13/430,849 priority patent/US8584244B2/en
Application granted granted Critical
Publication of JP4943278B2 publication Critical patent/JP4943278B2/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本願明細書で開示される技術は、ストレージシステムの管理方法に関し、特に、いわゆるNASにおけるウィルススキャン方法に関する。
ネットワークに接続されたストレージシステムを、そのネットワークに接続された複数のクライアント計算機の共有ディスクとして使用する、ネットワーク接続ストレージ(Network Attached Storage、NAS)が知られている。NASは、ネットワークインターフェース等を含むNASサーバと、データを格納するディスク装置とによって構成される。
NASにおいてコンピュータウィルス感染による被害を回避するために、スキャンサーバを用いたウィルススキャンの技術が開示されている(特許文献1参照)。スキャンサーバとは、ネットワークに接続された、ウィルススキャンを実行する計算機である。具体的には、NASサーバがクライアント計算機からファイル操作を受け付けると、NASサーバはスキャンサーバに操作対象のファイルを転送する。ファイル操作とは、ファイルの書き込み又はファイルの読み出しである。操作対象のファイルとは、これからディスク装置に書き込まれるファイル又はディスク装置から読み出されたファイルである。
スキャンサーバは、転送されたファイルのウィルススキャンを実行し、その結果をNASサーバに応答する。さらに、スキャンサーバは、転送されたファイルがウィルスに感染していた場合、そのファイルを修復して、修復されたファイル(すなわち、ウィルスを取り除かれたファイル)をNASサーバに転送する。NASサーバは、スキャンサーバからの応答に従って、ファイル操作を実行する。このように、NASサーバが取り扱うファイルのウィルスチェック及び修復が実行されるため、ウィルス感染による被害が防止される。
特開2004−199213号公報
上記のように、NASサーバがファイル操作を受け付けた後、そのファイル操作が実行され、その結果がクライアント計算機に応答されるまでの間に、ファイルの転送及びウィルススキャンが実行される。ファイルサイズが大きい場合、これらの転送及びウィルススキャンに要する時間が長くなるため、クライアント計算機とNASサーバとの間のセッションがタイムアウトする場合がある。サイズが大きいファイルのウィルススキャンの少なくとも一部を実行しなければ、このようなタイムアウトを防ぐことができるが、その場合、スキャン漏れによってウィルス感染が拡大するおそれがある。
本願で開示する代表的な発明は、第1計算機と、ネットワークを介して前記第1計算機に接続される第2計算機と、前記第1計算機及び前記第2計算機に接続される記憶装置と、を備える計算機システムであって、前記第1計算機は、前記ネットワークに接続される第1インターフェースと、前記第1インターフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、前記第2計算機は、前記ネットワークに接続される第2インターフェースと、前記第2インターフェースに接続される第2プロセッサと、前記第2プロセッサに接続される第2メモリと、を備え、前記記憶装置は、データの記憶領域を提供する記憶媒体と、前記第1計算機及び前記第2計算機に接続され、前記記憶領域へのデータの書き込み及び読み出しを制御するコントローラと、を備え、前記第1計算機は、前記ネットワークを介してデータの書き込み要求を受信すると、前記書き込まれるべきデータを前記記憶装置に書き込み、前記書き込まれたデータのウィルススキャン要求を前記第2計算機に送信し、前記第2計算機は、前記第1計算機から前記ウィルススキャン要求を受信すると、前記書き込まれたデータを前記記憶装置から読み出し、前記読み出されたデータのウィルススキャンの一部を実行し、前記第1計算機は、前記読み出されたデータのウィルススキャンの一部が終了した後、前記受信した書き込み要求に対する応答を送信し、前記第2計算機は、前記第1計算機が前記応答を送信した後、前記読み出されたデータのウィルススキャンの残りを実行することを特徴とする。
本発明の一実施形態によれば、ウィルス感染による被害を防止しながら、応答レスポンスを向上させ、タイムアウトの発生を防ぐことができる。
以下、本発明の実施形態を、図面を参照して説明する。
図1は、本発明の実施形態の計算機システムの構成を示すブロック図である。
本実施形態の計算機システムは、複数のクライアント170、スキャンサーバ100、NAS(Network Attached Storage)サーバ120及びディスクサブシステム140を備える。複数のクライアント170、スキャンサーバ100及びNASサーバ120は、LAN(Local Area Network)180を介して相互に接続される。スキャンサーバ100、NASサーバ120及びディスクサブシステム140は、FC(Fibre Channel)スイッチ160を介して相互に接続される。
スキャンサーバ100は、ファイルのウィルススキャンを実行する計算機である。以下の説明において、ウィルススキャンを単にスキャンとも記載する。
スキャンサーバ100は、相互に接続されたI/F101、CPU103、I/F104及びメモリ102を備える。
I/F101は、スキャンサーバ100をLAN180に接続するインターフェースである。スキャンサーバ100は、LAN180に接続された装置(例えばクライアント170又はNASサーバ120)と、I/F101を介して通信する。I/F101は、例えば、いわゆるネットワークインターフェースカード(NIC)である。
CPU103は、メモリ102に格納されたプログラムを実行するプロセッサである。したがって、以下の説明においてメモリ102に格納されたプログラム(例えば、後述するウィルススキャンエンジン105)が実行する処理は、実際には、CPU103によって実行される。
I/F104は、スキャンサーバ100をFCスイッチ160に接続するインターフェースである。スキャンサーバ100は、I/F104を介してディスクサブシステム140と通信する。I/F104は、例えば、いわゆるホストバスアダプタ(HBA)である。
メモリ102は、例えば半導体メモリであり、CPU103によって実行されるプログラム及びCPU103によって参照されるデータ等を格納する。本実施形態のメモリ102は、CPU103によって実行されるプログラムとして、少なくとも、ウィルススキャンエンジン105、カーネル/ファイルシステム106及びデバイスドライバ107を格納する。カーネル/ファイルシステム106及びデバイスドライバ107は、スキャンサーバ100において稼動するOS(オペレーティングシステム)(図示省略)の一部として提供される。
ウィルススキャンエンジン105は、ウィルスのパターンが定義されたパターン定義ファイル(後述)と、スキャン対象のファイルとを照合することによって、ファイルがウィルスに感染しているか否かを判定するプログラムである。
本実施形態のウィルススキャンエンジン105は、スキャン要求受付処理部108、通知情報受付処理部109及びパターン定義監視処理部110を含む。これらの各処理部は、ウィルススキャンエンジン105に含まれるプログラムモジュールである。
カーネル/ファイルシステム106は、OSの基本機能を実装するソフトウェア(すなわち、いわゆるカーネル)、及び、ディスクサブシステム140に格納されているデータを管理するソフトウェア(すなわち、いわゆるファイルシステム)を含む。ファイルシステムは、上位層に対して階層構造化された論理ビュー(ディレクトリ、ファイル等)を提供するとともに、これらのビューを物理的なデータ構造(ブロックデータ、ブロックアドレス)に変換して下位層に対するI/O処理を実行する。
デバイスドライバ107は、カーネル/ファイルシステム106から要求されたブロックI/Oを実行する。
NASサーバ120は、ディスクサブシステム140をLAN180に接続するための計算機である。図1においてNASサーバ120は、単に「NAS 120」と記載される。
NASサーバ120は、相互に接続されたI/F121、CPU123、I/F124及びメモリ122を備える。
I/F121は、NASサーバ120をLAN180に接続するインターフェースである。NASサーバ120は、LAN180に接続された装置(例えばクライアント170又はスキャンサーバ100)と、I/F121を介して通信する。I/F121は、例えばNICである。
CPU123は、メモリ122に格納されたプログラムを実行するプロセッサである。したがって、以下の説明においてメモリ122に格納されたプログラム(例えば、後述するファイル共有プログラム125)が実行する処理は、実際には、CPU123によって実行される。
I/F124は、NASサーバ120をFCスイッチ160に接続するインターフェースである。NASサーバ120は、I/F124を介してディスクサブシステム140と通信する。I/F124は、例えばHBAである。
メモリ122は、例えば半導体メモリであり、CPU123によって実行されるプログラム及びCPU123によって参照されるデータ等を格納する。本実施形態のメモリ122は、CPU123によって実行されるプログラムとして、少なくとも、ファイル共有プログラム125、カーネル/ファイルシステム126及びデバイスドライバ127を格納する。カーネル/ファイルシステム126及びデバイスドライバ127は、NASサーバ120において稼動するOS(図示省略)の一部として提供される。カーネル/ファイルシステム126及びデバイスドライバ127は、それぞれ、カーネル/ファイルシステム106及びデバイスドライバ107と同様であるため、これらの説明を省略する。
ファイル共有プログラム125は、LAN180に接続されるクライアント170にファイル共有プロトコルを提供することによって、複数のクライアント170によるファイル共有機能を提供する。提供されるファイル共有プロトコルは、例えば、NFS(Network File System)又はCIFS(Common Internet File System)であってもよい。ファイル共有プログラム125は、クライアント170からファイル単位のI/O(すなわち読み出し又は書き込み)要求を受けると、その要求に対応したファイル単位のI/Oをファイルシステム(後述)に対して実行する。
本実施形態のファイル共有プログラム125は、書き込み(write)要求受付処理部128、読み出し(read)要求受付処理部129及びNASアクセス情報取得処理部130を含む。これらの各処理部は、ファイル共有プログラム125に含まれるプログラムモジュールである。
ディスクサブシステム140は、クライアント170からの書き込み要求を受信したNASサーバ120によって書き込まれたデータを格納する記憶装置である。本実施形態のディスクサブシステム140は、コントローラ141及び一つ以上のディスクドライブ147を備える。
ディスクドライブ147は、データの記憶領域を提供する記憶媒体を備える装置である。ディスクドライブ147は、例えば、磁気ディスクを記憶媒体として備えるハードディスクドライブ(HDD)であってもよいが、他の種類の装置(例えば、半導体メモリを記憶媒体として備える、フラッシュメモリ等の半導体記憶装置)であってもよい。ディスクサブシステム140は、複数のディスクドライブ147を備えてもよい。図1に示すディスクドライブ147A〜147Dの各々は、複数のディスクドライブ147の一つである。
複数のディスクドライブ147は、RAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。クライアント170によって書き込まれたデータは、最終的に、ディスクドライブ147が提供する物理的な記憶領域に格納される。
論理ボリューム(LU)148は、NASサーバ120によって論理的なディスクドライブとして扱われる領域である。LU148の論理的な記憶領域は、ディスクドライブ147の物理的な記憶領域と対応付けられる。一つのLU148の論理的な記憶領域は、一つのディスクドライブ147の物理的な記憶領域と対応付けられてもよいし、複数のディスクドライブ147の物理的な記憶領域と対応付けられてもよい。
本実施形態のディスクサブシステム140は、複数のLU148を含む。図1に示すLU148A〜148Cの各々は、複数のLU148の一つである。
図1の例において、LU148Aは、ユーザファイル149を格納するユーザLUである。ユーザファイル149は、クライアント170のアプリケーション(図示省略)によって作成されたファイルである。実際には、ユーザファイル149を構成するデータが、LU148Aに含まれる複数のブロックに格納される。ブロックとは、固定長の記憶領域である。
ユーザファイル149の識別子(すなわちファイル名)と、そのユーザファイル149を構成するデータが格納されるブロックのアドレスとの対応関係は、カーネル/ファイルシステム126によって管理される。スキャンサーバ100も、カーネル/ファイルシステム126と同様のカーネル/ファイルシステム106を備える。このため、スキャンサーバ100も、ファイル名に基づいてユーザファイル149にアクセスすることができる。
なお、図1には一つのユーザファイル149のみを示すが、実際のLU148Aは、任意の数のユーザファイルを格納する。
LU148B及びLU148Cは、OSを格納するOS−LUである。LU148Bは、スキャンサーバ100で稼動するOSを格納し、LU148Cは、NASサーバ120で稼動するOSを格納する。
具体的には、LU148Bは、図1では省略されているが、ウィルススキャンエンジン105、カーネル/ファイルシステム106及びデバイスドライバ107を格納する。スキャンサーバ100は、LU148Bを使用して起動(ブート)する。スキャンサーバ100が起動した後、必要に応じて、ウィルススキャンエンジン105等がメモリ102にコピーされてもよい。さらに、LU148Bは、パターン定義ファイル150を格納する。パターン定義ファイル150については後述する(図2参照)。パターン定義ファイル150がメモリ102にコピーされてもよい。
LU148Cは、図1では省略されているが、ファイル共有プログラム125、カーネル/ファイルシステム126及びデバイスドライバ127を格納する。NASサーバ120は、LU148Cを使用して起動する。NASサーバ120が起動した後、必要に応じて、ファイル共有プログラム125等がメモリ122にコピーされてもよい。
コントローラ141は、ディスクサブシステム140を制御する制御装置である。本実施形態のコントローラ141は、相互に接続されたI/F142、CPU144、I/F146及びキャッシュメモリ145を備える。
I/F142は、コントローラ141をFCスイッチ160に接続するインターフェースである。コントローラ141は、I/F142を介して、FCスイッチ160に接続されたNASサーバ120等と通信する。
CPU144は、ディスクサブシステム140を制御するためのプログラムを実行するプロセッサである。
I/F146は、コントローラ141をディスクドライブ147に接続するインターフェースである。コントローラ141は、I/F146を介して、ディスクドライブ147へのデータの書き込み及び読み出しを実行する。
キャッシュメモリ145は、ディスクドライブ147に書き込まれるデータ及びディスクドライブ147から読み出されるデータを一時的に格納する半導体メモリである。
FCスイッチ160は、NASサーバ120、スキャンサーバ100及びディスクサブシステム140の間のFCプロトコルによる通信を媒介する。具体的には、FCスイッチ160は、I/F104、I/F124及びI/F142に接続され、これらの任意のI/F間に通信経路を設定することができる。
なお、FCスイッチ160は、他の種類のネットワークによって置き換えられてもよい。例えば、FCスイッチ160は、LAN180によって置き換えられてもよい。
クライアント170は、各種アプリケーションを実行する計算機である。本実施形態の計算機システムは、任意の数のクライアント170を備えてもよい。図1に示すクライアント170A及びクライアント170Bの各々は、複数のクライアント170の一つである。
各クライアント170は、アプリケーションプログラムを実行するCPU(図示省略)、LAN180に接続されるI/F(図示省略)、及び、少なくともアプリケーションプログラムを格納するメモリ(図示省略)を備える。
LAN180は、任意の種類のネットワークによって置き換えられてもよい。例えば、LAN180は、Wide Area Network(WAN)によって置き換えられてもよいし、LANとWANが混在するネットワークによって置き換えられてもよい。
図2は、本発明の実施形態のパターン定義ファイル150の説明図である。
パターン定義ファイル150は、ウィルスの特徴を示すデータパターン、及び、そのパターンを管理するための情報を含むファイルである。本実施形態のパターン定義ファイル150は、共通部200及びパターン定義部210を含む。
共通部200は、パターン定義ファイルバージョン201、前パターン定義ファイルバージョン202、パターン数203及び追加パターン数204を含む。
パターン定義ファイルバージョン201は、現在のパターン定義ファイル150のバージョン、すなわち、現在パターン定義部210に格納されているパターン定義のバージョンを示す。パターン定義ファイルバージョン201として格納されている値が大きいほど、バージョンが新しいことを示す。
前パターン定義ファイルバージョン202は、現在のパターン定義ファイル150のバージョンの一つ前のバージョンを示す。具体的には、パターン定義ファイル150が更新されるとき、更新前のバージョン(図2の例では「1.5」)が前パターン定義ファイルバージョン202に格納され、更新後のバージョン(図2の例では「2」)がパターン定義ファイルバージョン201に格納される。
パターン数203は、パターン定義ファイルにおいて定義されているパターンの数を示す。
追加パターン数204は、パターン定義ファイル150が現在のバージョンに更新されたときに新たに追加されたパターンの数を示す。
図2の例では、パターン数203及び追加パターン数204としてそれぞれ「150」及び「2」が格納されている。これらは、現在のバージョン「2」において定義されているパターンの数が150であること、及び、バージョン「1.5」から「2」に更新されるときに新たに2パターンが追加されたことを示す。
パターン定義部210は、パターン番号211、パターン名称212、パターン213及び追加フラグ214を含む。
パターン番号211は、パターン定義ファイル150において定義されているパターンに付与された番号である。
パターン名称212は、ウィルスの名称、すなわち、そのウィルスの特徴を示すデータパターンの名称である。
パターン213は、そのウィルスの特徴を示すデータパターンである。ファイルのスキャンは、そのファイルのデータと、パターン213として格納されているデータパターンとを照合することによって実行される。
追加フラグ214は、パターン定義ファイル150が一つ前のバージョンから現在のバージョンに更新されたときに新たに追加されたパターンを示す。追加フラグ214の値「ON」に対応するパターン213は、新たに追加されたパターンである。
図2の例では、パターン番号211の値「149」に対応するパターン名称212、パターン213及び追加フラグ214として、それぞれ、「Virus−Y」、「0012458FEA459569・・・」及び「OFF」が格納されている。これらは、ウィルス「Virus−Y」の特徴を示すデータパターンが「0012458FEA459569・・・」であること、及び、そのパターンが、現在のバージョン「2」において新たに追加されたことを示す。
パターン定義ファイル150は、例えば、ウィルス対策ソフトウェアのベンダー等によって提供されてもよい。例えば、随時、新しいバージョンのパターン定義ファイル150がベンダー等によって提供される。その場合、新しいバージョンが提供される度に、パターン定義ファイル150がその新しいバージョンに更新される。
図3は、本発明の実施形態のスキャン進捗管理テーブル300の説明図である。
スキャン進捗管理テーブル300は、ウィルススキャンエンジン105による各ファイルのスキャンの進捗を管理するために使用される。スキャン進捗管理テーブル300は、例えばウィルススキャンエンジン105の一部としてスキャンサーバ100のメモリ102に格納されてもよい。
スキャン進捗管理テーブル300は、項番301、ファイル名302、完了/未完識別303、write時スキャン情報304、read時スキャン情報308及び再開ポイント312を含む。
スキャン進捗管理テーブル300の各エントリ(すなわち各行)は、ウィルススキャンエンジン105によってスキャンされる各ファイルに対応する。
項番301は、各エントリに付与された番号である。
ファイル名302は、スキャンされるファイルを識別する名称である。ファイル名302は、例えば「/dir−a/aaa.txt」のようなパスであってもよい。
完了/未完識別303は、各ファイルのスキャンが完了したか否かを示す。「未完」はスキャンが完了していないことを、「完了」はスキャンが完了したことを示す。
本実施形態において、各ファイルのスキャンは、分割して実行される場合がある。例えば、図2に示すようにパターン定義ファイル150において150個のパターンが定義されている場合、ファイルを書き込むときに75個のパターンを用いたスキャンが実行され、そのファイルを読み出すときに残りの75個のパターンを用いたスキャンが実行されてもよい。一つのファイルのスキャンが「完了した」ことは、そのファイルについて、定義されている全てのパターンを用いたスキャンが終了したことを意味する。この場合、そのファイルに対応する完了/未完識別303に「完了」が格納される。一方、例えば、ファイルを書き込むときの75個のパターンを用いたスキャンのみが終了し、残りの75個のパターンを用いたスキャンが終了していない場合、そのファイルに対応する完了/未完識別303に「未完」が格納される。
write時スキャン情報304は、ファイルが書き込まれたときにそのファイルを対象として実行されたスキャンの進捗を管理する情報である。具体的には、write時スキャン情報304は、さらに終了日時305、進捗度306及び適用バージョン307を含む。なお、ファイルが書き込まれたときにそのファイルを対象として実行されたスキャンとは、後述する図6のステップ603において実行されたスキャンを意味する。
終了日時305は、ファイルが書き込まれたときに実行されたスキャンが終了した日時を示す。
進捗度306は、ファイルが書き込まれたときに実行されたスキャンに使用された最後のパターンの番号を示す。言い換えると、進捗度306は、そのファイルをスキャンするために既に使用されたパターンを識別する情報を示す。この番号は、図2のパターン番号211に対応する。例えば、ファイルが書き込まれたときに75個のパターンを用いたスキャンが終了した場合、進捗度306に「#75」が格納される。これは、ファイルが書き込まれたときに、図2のパターン番号211の値「1」から「75」までのパターンを用いたスキャンが終了したことを意味する。
適用バージョン307は、ファイルが書き込まれたときに実行されたスキャンに使用されたパターン定義ファイル150のバージョン(すなわち、パターン定義ファイルバージョン201の値)を示す。
read時スキャン情報308は、ファイルが読み出されたときにそのファイルを対象として実行されたスキャンの進捗を管理する情報である。具体的には、read時スキャン情報308は、さらに終了日時309、進捗度310及び適用バージョン311を含む。なお、ファイルが読み出されたときにそのファイルを対象として実行されたスキャンとは、後述する図7のステップ702において実行されたスキャンを意味する。
ただし、あるエントリに対応するファイルがまだ一度も読み出されていない場合、ファイルが読み出されるときのスキャンがまだ実行されていない。したがってこの場合、そのエントリのread時スキャン情報308として有効な値が登録されなくてもよい。
終了日時309は、ファイルが読み出されたときに実行されたスキャンが終了した日時を示す。
進捗度310は、ファイルが読み出されたときに実行されたスキャンに使用された最後のパターンの番号を示す。この番号は、図2のパターン番号211に対応する。例えば、ファイルが書き込まれたときに75個のパターンを用いたスキャンが終了し、その後、ファイルが読み出されたときに残り75個のパターンを用いたスキャンが終了した場合、進捗度306に「#150」が格納される。これは、ファイルが読み出されたときに、図2のパターン番号211の値「76」から「150」までのパターンを用いたスキャンが終了したことを意味する。
適用バージョン311は、ファイルが読み出されたときに実行されたスキャンに使用されたパターン定義ファイル150のバージョン(すなわち、パターン定義ファイルバージョン201の値)を示す。
再開ポイント312には、まだ全てのパターンを用いたスキャンが終了していない場合、残りのパターンのうち先頭のパターンの番号が格納される。例えば、ファイルが書き込まれたときに75個のパターンを用いたスキャンが終了し、その後、そのファイルがまだ読み出されていない場合、パターン番号211の値「76」から「150」までのパターンを用いたスキャンがまだ終了していない。この場合、残りのパターンのうち先頭のパターンの番号「76」が再開ポイント312に格納される。
図4は、本発明の実施形態のアクセスログ400の説明図である。
アクセスログ400は、NASサーバ120がクライアント170からアクセス要求(すなわち書き込み要求又は読み出し要求)を受信する度に、ファイル共有プログラム125によって取得される。アクセスログ400は、例えば、NASアクセス情報取得処理部130の一部としてメモリ122に格納されてもよい。
アクセスログ400は、日時401、アクセス先402、アクセスファイル403及びアクセス種別404を含む。
日時401は、NASサーバ120がアクセス要求を受信した日時を示す。
アクセス先402は、受信したアクセス要求を送信したクライアント170の識別子を示す。
アクセスファイル403は、受信したアクセス要求によって指定されたファイル、すなわち、アクセス対象であるファイルの識別子を示す。
アクセス種別404は、要求されたアクセスの種類を示す。具体的には、アクセス種別404は、要求されたアクセスがファイルの読み出し(read)又は書き込み(write)のいずれであるかを示す。要求されたアクセスが書き込みである場合、アクセス種別404はさらに、要求された書き込みが新規書き込みであるか、既存のファイルの更新書き込みであるかを示す情報を含んでもよい。
図5は、本発明の実施形態の通知済み情報500の説明図である。
NASサーバ120は、取得したアクセスログ400に基づいて、アクセスの統計情報を作成する。そして、NASサーバ120は、作成した統計情報をスキャンサーバ100に送信する。通知済み情報500は、このようにして送信されたアクセスの統計情報を含む。
例えば、通知済み情報500は、NASアクセス情報取得処理部130の一部としてNASサーバ120のメモリ122に格納されてもよい。さらに、通知済み情報500は、通知情報受付処理部109の一部としてスキャンサーバ100のメモリ102に格納されてもよい。
通知済み情報500は、日時501、read比率502、write比率503及び送信日時504を含む。
日時501は、read比率502及びwrite比率503に格納された統計情報の基礎となったアクセス要求を受信した時間帯を示す。
read比率502及びwrite比率503は、アクセスログ400に基づいて作成された統計情報である。具体的には、read比率502は、日時501が示す時間帯にNASサーバ120が受信したアクセス要求の数のうち、読み出し要求の数が占める割合を示す。write比率503は、日時501が示す時間帯にNASサーバ120が受信したアクセス要求の数のうち、書き込み要求の数が占める割合を示す。
送信日時504は、read比率502及びwrite比率503として格納された統計情報がNASサーバ120からスキャンサーバ100に送信された日時を示す。
図5の例では、日時501の値「2007/7/7 10:00〜11:00」に対応するread比率502、write比率503及び送信日時504として、それぞれ、「30%」、「70%」及び「2007/7/7 11:30:00」が格納されている。これは、2007年7月7日10:00から11:00までの1時間の間にNASサーバ120が受信したアクセス要求のうち30%が読み出し要求、70%が書き込み要求であったこと、及び、この統計情報が2007年7月7日11:30:00にNASサーバ120からスキャンサーバ100に送信されたことを示す。
次に、本実施形態の計算機システムの各部が実行する処理について、フローチャートを参照して説明する。
図6は、本発明の実施形態のNASサーバ120のwrite要求受付処理部128の処理を示すフローチャートである。
図6に示す処理は、NASサーバ120がクライアント170から書き込み(write)要求を受信したときに開始される。この処理は、CPU123がwrite要求受付処理部128を実行することによって実現される。
NASサーバ120がクライアント170から書き込み要求を受信すると、write要求受付処理部128を実行するCPU123は、受信した書き込み要求によって指定されたファイル(すなわち、その書き込み要求によって書き込まれるべきファイル)をファイルシステムに書き込む(ステップ601)。このとき、カーネル/ファイルシステム126が、指定されたファイルに対応するLU148の一つ以上のブロックに、指定されたファイルに含まれるデータを書き込む。
次に、CPU123は、スキャンサーバ100にファイルのスキャン要求を送信する(ステップ602)。このスキャン要求には、ステップ601で書き込まれたファイルを識別するファイル名が含まれる。
スキャン要求を受信したスキャンサーバ100は、スキャン要求受付処理部108を呼び出し、スキャンを実行する(ステップ603)。このとき実行されるスキャンについては、後で詳細に説明する(図9参照)。
スキャンサーバ100によるスキャンが終了すると(具体的には、NASサーバ120が後述する図9のステップ910に示す通知を受信すると)、CPU123は、書き込み要求の送信元であるクライアント170に、書き込み処理が終了したことを示す応答を送信する(ステップ604)。
以上で、図6に示す処理が終了する。
図7は、本発明の実施形態のNASサーバ120のread要求受付処理部129の処理を示すフローチャートである。
図7に示す処理は、NASサーバ120がクライアント170から読み出し(read)要求を受信したときに開始される。この処理は、CPU123がread要求受付処理部129を実行することによって実現される。
NASサーバ120がクライアント170から読み出し要求を受信すると、read要求受付処理部129を実行するCPU123は、スキャンサーバ100にファイルのスキャン要求を送信する(ステップ701)。このスキャン要求には、受信した読み出し要求によって指定されたファイル名が含まれる。
スキャン要求を受信したスキャンサーバ100は、スキャン要求受付処理部108を呼び出し、スキャンを実行する(ステップ702)。このとき実行されるスキャンについては、後で詳細に説明する(図9参照)。
スキャンサーバ100によるスキャンが終了すると(具体的には、NASサーバ120が後述する図9のステップ910に示す通知を受信すると)、CPU123は、受信した読み出し要求によって指定されたファイルをLU148から読み出して、読み出したファイルをクライアント170に返す(ステップ703)。このとき、カーネル/ファイルシステム126が、指定されたファイルに対応するLU148の一つ以上のブロックから、指定されたファイルに含まれるデータを読み出す。
以上で、図7に示す処理が終了する。
ここで、既にLU148に格納されているファイルを更新する処理について説明する。
格納されているファイルを更新するためには、格納されているファイルを一旦読み出す必要がある。このため、クライアント170は、これから更新しようとするファイルを指定した読み出し要求をNASサーバ120に送信する。NASサーバ120は、図7に示す処理を実行することによって、指定されたファイルを読み出して、クライアント170に応答する。クライアント170は、読み出されたファイルを更新し、その更新されたファイルを書き込むための書き込み要求をNASサーバ120に送信する。NASサーバ120は、図6に示す処理を実行することによって、指定されたファイルをLU148に書き込む。
このように、LU148に格納されているファイルが更新される場合、更新書き込みの前に必ずそのファイルが読み出される。言い換えると、NASサーバ120は、あるファイルを対象とする書き込み要求を受信した後、そのファイルを対象とする次回の書き込み要求を受信する前に、そのファイルを対象とする読み出し要求を必ず受信する。
図8は、本発明の実施形態のNASサーバ120のNASアクセス情報取得処理部130の処理を示すフローチャートである。
図8に示す処理は、所定のタイミングでCPU123がNASアクセス情報取得処理部130を実行することによって実現される。
処理が開始されると、CPU123は、通知済み情報500を読み出す(ステップ801)。
次に、CPU123は、通知済み情報500があるか否かを判定する(ステップ802)。
通知済み情報500がない場合、まだ通知済み情報500が作成されていない。この場合、ステップ801における読み出しに失敗している。この場合、CPU123は、任意の時間帯を設定する(ステップ803)。ここで設定される時間帯は、アクセスの統計情報の基礎となるアクセスログ400が取得される時間帯である。具体的には、例えば、現在時刻の1時間前から現在時刻までの1時間がステップ803において設定されてもよい。
一方、通知済み情報500がある場合、CPU123は、読み出された通知済み情報を参照して、前回送信された通知済み情報の日時501が示す時間帯を取得する(ステップ804)。例えば、図5に示す通知済み情報500が取得され、前回送信された通知済み情報が2007年7月7日13:30:00に送信されたものである場合、CPU123は、その情報に対応する日時501が示す時間帯である2007年7月7日12:00〜13:00を取得する。
次に、CPU123は、アクセスログ400から、ステップ804において取得した時間帯より後のアクセスログ情報、又は、ステップ803において設定した時間帯より後のアクセスログ情報を取得する(ステップ805)。例えば、ステップ804において2007年7月7日12:00〜13:00が取得された場合、2007年7月7日13:00以降の日時401に対応するエントリが、アクセスログ400から取得される。
次に、CPU123は、ステップ805において取得した情報から、read/writeの比率を計算する(ステップ806)。具体的には、CPU123は、ステップ805において取得された全エントリのうち、アクセス種別404が「read」であるエントリの割合、及び、アクセス種別404が「write」であるエントリの割合を計算する。ここで計算された比率がアクセスの統計情報である。
次に、CPU123は、ステップ806において計算された比率をスキャンサーバ100に送信し、その比率によって通知済み情報500を更新する(ステップ807)。具体的には、CPU123は、通知済み情報500に新たなエントリを追加し、そのエントリの日時501に、ステップ804において取得した時間帯、又は、ステップ803において設定した時間帯を格納し、read比率502及びwrite比率503に、ステップ806において計算した比率を格納し、送信日時504に、ステップ807における送信が実行された時刻を格納する。
以上で図8の処理が終了する。
図9は、本発明の実施形態のスキャンサーバ100のスキャン要求受付処理部108の処理を示すフローチャートである。
図9に示す処理は、図6のステップ603、又は、図7のステップ702において、スキャンサーバ100のCPU103がスキャン要求受付処理部108を実行することによって実現される。
スキャン要求を受信したCPU103は、スキャン要求によって指定されたファイル名をキーとしてスキャン進捗管理テーブル300を検索する(ステップ901)。
次に、CPU103は、ステップ901の検索キーを含むスキャン進捗管理テーブル300のエントリが存在するか否かを判定する(ステップ902)。具体的には、スキャン要求によって指定されたファイル名をファイル名302として含むエントリがあるか否かが判定される。
検索キーを含むエントリがないと判定された場合、スキャン要求によって指定されたファイルは、まだスキャンされたことがない。この場合、処理はステップ906に進む。
一方、検索キーを含むエントリがあると判定された場合、指定されたファイルは、過去にスキャンされたことがある。この場合、CPU103は、次に、指定されたファイルのスキャンが完了したか否かを判定する(ステップ903)。具体的には、CPU103は、ステップ901の検索の結果取得されたエントリの完了/未完識別303の値が「完了」又は「未完」のいずれであるかを判定する。
ステップ903において、指定されたファイルのスキャンが完了したと判定された場合、処理はステップ906に進む。
ステップ906において、CPU103は、受信したアクセス要求が読み出し要求であるか否かを判定する。具体的には、図9の処理が図6のステップ603において呼び出された場合、CPU103は、受信したアクセス要求が読み出し要求でないと判定する。図9の処理が図7のステップ702において呼び出された場合、CPU103は、受信したアクセス要求が読み出し要求であると判定する。
ステップ902において検索キーを含むエントリがないと判定された後、ステップ906において読み出し要求であると判定された場合、存在しないファイルを指定した読み出し要求が送信されている。この場合、スキャンを実行することができないため、CPU103は図9の処理を終了する。一方、ステップ903においてスキャンが完了したと判定された後、ステップ906において読み出し要求であると判定された場合、指定されたファイルのスキャンが既に完了しているため、そのファイルをさらにスキャンする必要がない。このため、CPU103は図9の処理を終了する。
ステップ906において、受信したアクセス要求が読み出し要求でない(すなわち書き込み要求である)と判定された場合、CPU103は、ステップ907を実行する。具体的には、CPU103はステップ907において、通知済み情報500に基づいて按分比を計算し(ステップ907A)、さらに、計算された按分比に基づいてスキャンを実行する(ステップ907B)。ステップ907において実行される処理については、図10及び図11を参照して詳細に説明する。ステップ907の実行が終了すると、処理はステップ905に進む。
ステップ903において、指定されたファイルのスキャンが完了していないと判定された場合、CPU103は、残っているスキャンを実行する(ステップ904)。具体的には、CPU103は、指定されたファイルをディスクサブシステム140から読み出す。そして、CPU103は、スキャン進捗管理テーブル300の、指定されたファイルに対応する再開ポイント312の値を参照する。そして、CPU103は、その再開ポイント312の値が示すパターン以降のパターンを用いて、指定されたファイルのスキャンを実行する。残っているスキャンの実行が終了すると(言い換えると、定義されている全てのパターンを用いて、指定されたファイルのスキャンが完了すると)、処理はステップ905に進む。
なお、後述する非同期のスキャンが実行されている場合、ステップ903で指定されたファイルのスキャンが完了していないと判定された時点で、残っているスキャンの実行が既に開始されている可能性がある。この場合、CPU103は、その非同期のスキャンが終了するのを待つ。そして、非同期のスキャンが終了すると(言い換えると、定義されている全てのパターンを用いて、指定されたファイルのスキャンが完了すると)、処理はステップ905に進む。
ステップ905において、CPU103は、スキャン進捗管理テーブル300を更新する。
具体的には、ステップ904において指定されたファイルのスキャンが完了した場合、CPU103はステップ905において、指定されたファイルに対応するスキャン進捗管理テーブル300のエントリの完了/未完識別303の値を「完了」に更新する。さらに、CPU103は、そのエントリのread時スキャン情報308に、ステップ904が終了した日時等を格納する。さらに、そのエントリの再開ポイント312に値が格納されている場合、CPU103はその値を削除する。
ステップ907において按分比に基づくスキャンが実行された後にステップ905が実行される場合、CPU103は、ステップ907のスキャンが終了した日時を終了日時305に、ステップ907において最後に実行されたスキャンに使用されたパターンの番号を進捗度306に、使用されたパターン定義ファイルのバージョンを適用バージョン307にそれぞれ格納する。さらに、CPU103は、進捗度306に格納した値の次の値を再開ポイント312に格納する。
次に、CPU103は、ステップ904又はステップ907において実行されたスキャンの結果、ウィルスの感染が検出されたか否かを判定する(ステップ908)。ウィルスの感染が検出された場合、CPU103は、指定されたファイルを修復し、指定されたファイルをその修復されたファイルによって更新する(ステップ909)。
ステップ909が終了した場合、又は、ステップ908においてウィルスの感染が検出されなかった場合、CPU103は図9の処理を終了する(ステップ910)。このとき、CPU103は、按分比に基づくスキャン(ステップ907)又は全てのパターンを用いたスキャン(ステップ904)が終了したことを示す通知をNASサーバ120に送信する。
図10は、本発明の実施形態において実行される按分比の計算及び按分比に基づくスキャンを示すフローチャートである。
具体的には、図10は、図9のステップ907においてCPU103によって実行される処理を詳細に示すものである。
図9のステップ906において、受信したアクセス要求が読み出し要求でないと判定された場合、CPU103は、通知済み情報500から、指定されたファイルのread比率502及びwrite比率503を取得する(ステップ1001)。
次に、CPU103は、ステップ1001において取得した比率に基づいて、按分比を算出する(ステップ1002)。按分比とは、書き込み要求受信時に実行されるスキャンと、読み出し要求受信時に実行されるスキャンとの比率である。
書き込み要求受信時に実行されるスキャンとは、NASサーバ120が書き込み要求を受信した後、その書き込み要求に対する応答を返す前に実行されるスキャン、すなわち、図6のステップ603において実行されるスキャンである。読み出し要求受信時に実行されるスキャンとは、NASサーバ120が読み出し要求を受信した後、その読み出し要求に対する応答を返す前に実行されるスキャン、すなわち、図7のステップ702において実行されるスキャンである。
スキャンの比率とは、例えば、書き込み要求受信時に実行されるスキャンに使用されるパターン数と、読み出し要求受信時に実行されるスキャンに使用されるパターン数との比率を意味する。
ここで、按分比の計算方法の例を説明する。
スキャンサーバ100のCPU103が高負荷であると、ファイルのスキャンに要する時間が増大する。例えば図6に示すように、ステップ603におけるスキャンが終了した後でアクセス要求に対する応答が返される。このため、スキャンに要する時間が増大すれば、タイムアウトの可能性が高まる。したがって、タイムアウトの発生を防止するためには、按分比は、CPU103の負荷が所定の上限を超えないように計算されることが望ましい。そのため、本実施形態においては、ステップ1001において取得された比率(%)を100(%)から減算することによって按分比が計算される。
具体的には、ステップ1001において取得されたread比率502及びwrite比率503がそれぞれX%及び(100−X)%である場合、読み出し要求受信時に実行されるスキャンの比率が(100−X)%、書き込み要求受信時に実行されるスキャンの比率がX%となる。
例えば、図5に示す通知済み情報500の最初のエントリが示すように、read比率502及びwrite比率503がそれぞれ30%及び70%である場合、読み出し要求受信時に実行されるスキャンの比率が70%、書き込み要求受信時に実行されるスキャンの比率が30%となる。スキャンの比率が、スキャンに使用されるパターン数の比率である場合、定義されているパターンのうち30%のパターンを用いたスキャンが書き込み要求受信時に実行され、残りの70%のパターンを用いたスキャンが読み出し要求受信時に実行される。例えば、図2に示すように定義されているパターン数が150である場合、45個のパターンを使用したスキャンが書き込み要求受信時に実行され、残りの105個のパターンを使用したスキャンが読み出し要求受信時に実行される。
その結果、例えば読み出しより書き込みが多く実行される場合には、書き込み要求受信時に実行されるスキャンの比率が、読み出し要求受信時に実行されるスキャンの比率より低くなる。スキャンの比率がスキャンに用いられるパターン数の比率である場合、書き込み要求受信時のスキャンに使用されるパターンの数が、読み出し要求受信時のスキャンに使用されるパターンの数より小さくなる。言い換えると、書き込み要求受信時のスキャンに使用されるパターンの数が、定義されているパターンの総数の半数より小さくなる。
逆に、書き込みより読み出しが多く実行される場合には、書き込み要求受信時に実行されるスキャンの比率が、読み出し要求受信時に実行されるスキャンの比率より高くなる。
これによって、書き込み要求受信時及び読み出し要求受信時のスキャンの実行によるCPU103の負荷が抑えられるため、CPU103の過負荷によるスキャン実行の遅延が防止される。
書き込み要求受信時に実行されなかった残りのスキャン(すなわち、書き込み要求受信時のスキャンにおいて使用されなかったパターンを用いたスキャン)は、読み出し要求受信時に実行される。しかし、後述するように、実際のCPU103の負荷(例えばCPU利用率)が所定の上限より低い場合には、読み出し要求の受信を待たずに残りのスキャンが実行されてもよい。
次に、CPU103は、指定されたファイルを対象として、ステップ1002において算出された按分比に基づいて、書き込み要求受信時のスキャンを実行する(ステップ1003)。具体的には、CPU103は、指定されたファイルをディスクサブシステム140から読み出す。そして、CPU103は、パターン定義ファイル150によって定義されているパターンのうち、ステップ1002において算出された、書き込み要求受信時に実行されるスキャンの比率に相当する数のパターンを使用して、指定されたファイルのスキャンを実行する。
次に、CPU103は、スキャンサーバ100のCPU103の利用率を取得する(ステップ1004)。
次に、CPU103は、ステップ1004において取得したCPU利用率が所定の上限値(閾値)未満であるか否かを判定する(ステップ1005)。
CPU利用率が所定の上限値未満である場合、CPU103は、指定されたファイルを対象として、残りのスキャンを非同期で実行する(ステップ1006)。具体的には、CPU103は、パターン定義ファイル150によって定義されているパターンのうち、ステップ1003において使用されなかったパターンを使用して、指定されたファイルのスキャンを実行する。
ステップ1006におけるスキャンは、ステップ1005の判定が終了した後、指定されたファイルに対する読み出し要求を受信したか否かにかかわらず実行される。このように、アクセス要求の受信を契機とせずに実行されるスキャンを、非同期のスキャンと記載する。
ステップ1006が終了すると、CPU103は、図10の処理を終了する。
ステップ1005において、CPU利用率が所定の上限値未満でないと判定された場合、CPU103は、ステップ1006を実行せずに図10の処理を終了する。
図10の処理が終了すると、処理は図9のステップ905に進む。
なお、図9のステップ904及び図10のステップ1003に示すように、本実施形態のスキャンサーバ100は、NASサーバ120からスキャン要求を受信すると、そのスキャン要求によって指定されたファイルをディスクサブシステム140から読み出す。しかし、スキャン要求に、スキャンされるべきファイル自体が含まれていてもよい。この場合、スキャンサーバ100は、ファイルをディスクサブシステム140から読み出す必要がない。
しかし、本実施形態では、図1に示すように、スキャンサーバ100とNASサーバ120との間の通信がLAN180のようなIPネットワークを介して実行され、一方、スキャンサーバ100とディスクサブシステム140との間の通信が、FCプロトコル等に基づくブロックアクセスによって実行される。このような場合、NASサーバ120がファイルをスキャンサーバ100に送信するよりも、スキャンサーバがファイルをディスクサブシステム140から読み出す方が高速である。このため、本実施形態においては、タイムアウトを防止するために、スキャンサーバ100がディスクサブシステム140からファイルを読み出すことが望ましい。
次に、計算された按分比に基づくスキャンの例について説明する。
図11は、本発明の実施形態において実行される按分比に基づくスキャンの例の説明図である。
図11は、あるファイルがNASサーバ120に書き込まれ、その後そのファイルが読み出される場合に、それぞれのタイミングで実行されるスキャンの例を示す。具体的には、図11は、パターン1からパターン3までの三つの例を示す。パターン1は、書き込み要求受信時:読み出し要求受信時の按分比が50%:50%である場合に実行されるスキャンの例を示す。同様に、パターン2は、按分比が80%:20%である場合に実行されるスキャンの例を示す。パターン3は、按分比が20%:80%である場合に実行される非同期のスキャンの例を示す。
パターン1の例では、NASサーバ120がファイルの書き込み要求(1101)を受信した後、スキャンサーバ100がそのファイルのスキャンを開始する。そして、スキャンの50%が終了すると、NASサーバ120が書き込み要求に対する応答(1102)を返す。その後、NASサーバ120がそのファイルの読み出し要求(1103)を受信した後、スキャンサーバ100がそのファイルの残りのスキャンを開始する。そして、残りの50%のスキャンが終了すると、NASサーバ120が読み出し要求に対する応答(1104)を返す。
パターン2の例でも、パターン1と同様にスキャンが実行される。ただし、パターン2の例では、書き込み要求(1101)の受信から応答(1102)の送信までの間に80%のスキャンが、読み出し要求(1103)の受信から応答(1104)の送信までの間に残りの20%のスキャンが実行される。
パターン3の例では、書き込み要求(1101)の受信から応答(1102)の送信までの間に20%のスキャンが実行される。その後、読み出し要求(1103)の受信を待たずに、残りの80%のスキャンが開始される。これは、図10のステップ1005においてCPU利用率が所定の上限値未満であると判定された場合に相当する。その後、読み出し要求(1103)を受信した時点でまだ残りの80%のスキャンが終了していない場合、図9のステップ904に示すように、スキャンの終了を待ってから応答(1104)が送信される。
上記のように、図11には、NASサーバ120がファイルの書き込み要求を受信してからその要求に対する応答を送信するまでの間に、ファイルのスキャンの一部が実行される例を示した。しかし、本実施形態では、ファイルの書き込み要求を受信してからその要求に対する応答を送信するまでの間に、ファイルのスキャンが全く実行されなくてもよい。
例えば、ある時間帯に書き込み要求のみが発行され、読み出し要求が全く発行されなかった場合、その時間帯の通知済み情報500のread比率502及びwrite比率503はそれぞれ0%及び100%となる。この場合、図10に示す手順で按分比を計算すると、書き込み要求受信時に実行されるスキャンの按分比は0%となる。
この場合、NASサーバ120が書き込み要求に対する応答を送信した後で、そのファイルのスキャンの全部が実行される。このスキャンは、図10及び図11に示したように、非同期で実行されてもよいし、NASサーバ120がファイルの読み出し要求を受信したときに実行されてもよい。
上記の図6から図11によれば、NASサーバ120は、ファイルの書き込み要求を受信すると、そのファイルのスキャンの一部(例えば50%)が終了した時点で、書き込み要求に対する応答を返す。残りのスキャンは、例えば、NASサーバ120がそのファイルの読み出し要求を受信したときに実行される。書き込み要求を送信したクライアント170(例えばクライアント170A)と読み出し要求を送信したクライアント170(例えばクライアント170B)が異なる場合、一つのファイルのスキャンのための処理時間が、複数のクライアント170のアクセスへの応答時間に分散される。さらに、CPU103の負荷の増大を抑えるように適切な比率でスキャンの実行が分散される。これらの結果、アクセス要求に対するタイムアウトの発生が防止される。遅くともファイルが読み出された時点ではそのファイルの全てのスキャンが完了しているため、ウィルスによる被害の発生も防止される。
図12は、本発明の実施形態のスキャンサーバ100の通知情報受付処理部109の処理を示すフローチャートである。
図12に示す処理は、スキャンサーバ100がNASサーバ120から通知情報を受信したときに、CPU103が通知情報受付処理部109を実行することによって実現される。
最初に、CPU103は、最新の通知情報を受信する(ステップ1201)。ここで受信する通知情報は、図8のステップ807においてNASサーバ120から送信された通知情報である。
次に、CPU103は、受信した通知情報を通知済み情報500に格納する(ステップ1202)。
以上で図12に示す処理が終了する。
図13は、本発明の実施形態のスキャンサーバ100のパターン定義監視処理部110の処理を示すフローチャートである。
図6から図11を参照して説明したように、本実施形態によれば、CPU103の負荷を抑えるように適切な按分比が計算される。しかし、按分比が計算された後でパターン定義ファイル150が更新される場合がある。更新によって新たなパターンが追加された場合、読み出し要求受信時に実行されるスキャンにおいて使用されるパターン数は、按分比が計算された時点で見込まれたパターン数より多くなる。その結果、読み出し要求受信時のCPU103の負荷が増大し、タイムアウトが発生するおそれがある。
図13は、このようにパターンが追加された場合に、読み出し要求受信時のCPU103の負荷の増大を抑えるために、追加されたパターンと同数のパターンを用いたスキャンを非同期に実行する処理を示す。
図13に示す処理は、CPU103がパターン定義監視処理部110を実行することによって実現される。
最初に、CPU103は、パターン定義ファイル150のバージョンをチェックする(ステップ1301)。具体的には、CPU103は、現在のパターン定義ファイルバージョン201の値を取得する。
次に、CPU103は、パターン定義ファイル150のバージョンが更新されているか否かを判定する(ステップ1302)。具体的には、CPU103は、ステップ1301で取得した(すなわち現在の)パターン定義ファイルバージョン201の値が、前回ステップ1301を実行したときに取得されたパターン定義ファイルバージョン201の値と異なっている場合、バージョンが更新されていると判定する。
バージョンが更新されていないと判定された場合、CPUはステップ1301に戻る。
バージョンが更新されていると判定された場合、パターン定義ファイル150に新たなパターンが追加されている。この場合、CPU103は、スキャン進捗管理テーブル300を検索し、スキャンが完了していないファイルを抽出する(ステップ1303)。具体的には、CPU103は、完了/未完識別303に「未完」が格納されているエントリを抽出する。
次に、CPU103は、ステップ1303において抽出されたファイルの一つを選択する(ステップ1304)。
次に、CPU103は、ステップ1304において選択されたファイルを対象として、今回の更新によって追加されたパターン数と同数のパターンを用いたスキャンを実行する(ステップ1305)。具体的には、CPU103は、選択されたファイルに対応するスキャン進捗管理テーブル300の再開ポイント312が示すパターン以降の、今回の更新によって追加されたパターン数と同数のパターンを使用して、選択されたファイルをスキャンする。今回の更新によって追加されたパターン数は、パターン定義ファイル150に追加パターン数204として格納されている。
さらに、ステップ1305においてCPU103は、スキャンの実行結果に整合するように再開ポイント312を更新する。
例えば、パターン定義ファイル150の追加パターン数204として「2」が格納され、再開ポイント312に「#76」が格納されている場合、ステップ1305においてCPU103は、パターン番号211が「76」及び「77」の二つのパターンを用いたスキャンを実行する。そして、CPU103は、再開ポイント312の値を「#78」に更新する。
次に、CPU103は、ステップ1305の結果、ステップ1304において選択されたファイルがウィルスに感染しているか否かを判定する(ステップ1306)。
選択されたファイルがウィルスに感染していると判定された場合、CPU103は、選択されたファイルを修復し、選択されたファイルをその修復されたファイルによって更新する(ステップ1308)。
選択されたファイルがウィルスに感染していないと判定されたか、又は、ステップ1308が終了した場合、CPU103は、ステップ1303において抽出された全てのファイルについて上記のステップ1305のスキャンが終了したか否かを判定する(ステップ1307)。
全てのファイルについてステップ1305のスキャンが終了したと判定された場合、次回のパターン定義ファイルの更新を検出するために、処理はステップ1301に戻る。
少なくとも一つのファイルについてステップ1305のスキャンが終了していないと判定された場合、残りのファイルをスキャンするために、処理はステップ1304に戻る。この場合、ステップ1304において、まだステップ1305のスキャンが終了していないファイルのうち一つが選択される。
このように、パターン定義ファイル150の更新の結果、新たなパターンが追加された場合、その追加されたパターンと同数のパターンを用いたスキャンが非同期に実行される。このため、読み出し要求受信時のCPU103の負荷の増大によるタイムアウトの発生が防止される。
次に、本実施形態の変形例を説明する。
ベンダー等によって提供されるパターンに、ウィルスの危険度を示す情報が付与されている場合がある。この場合、スキャンサーバ100は、危険度が高いウィルスのパターンを用いたスキャンを優先的に実行してもよい。このようなウィルスの危険度に基づく処理について、図14及び図15を参照して説明する。
図14は、本発明の実施形態の変形例のパターン定義ファイル150の説明図である。
図14に示すパターン定義ファイル150は、図2に示すものと同様、共通部200とパターン定義部210とを含む。図14に示す共通部200は、図2に示すものと同様であるため、説明を省略する。
図14に示すパターン定義部210は、パターン番号211、パターン名称212、優先度1401、パターン213及び追加フラグ214を含む。パターン番号211、パターン名称212、パターン213及び追加フラグ214は、図2に示すものと同様であるため、説明を省略する。
優先度1401は、そのパターンを用いたスキャンの優先度(すなわち重要度)を示す値である。例えばウィルスの活動による被害の大きさ等に基づいて、ウィルスの危険度がベンダー等によって設定されている場合がある。危険度が高いウィルス程、優先してスキャンされることが望ましい。このため、優先度1401として、ウィルスの危険度を示す値が格納されることが望ましい。
図14の例では、パターン「Virus−A」、「Virus−B」及び「Virus−Y」の優先度1401として「A」、パターン「Virus−C」及び「Virus−Z」の優先度1401として「B」が格納されている。ここで、「A」は「B」より高い優先度を示す。この例は、パターン「Virus−A」、「Virus−B」及び「Virus−Y」に対応するウィルスが、その他のパターンに対応するウィルスより危険であること、すなわち、「Virus−A」、「Virus−B」及び「Virus−Y」を用いたスキャンが、その他のパターンを用いたスキャンより先に実行されることが望ましいことを示す。
なお、パターン定義部210において、パターンは、優先度が高いものから順に格納されていることが望ましい。図14の例では、優先度「A」が設定されたパターン「Virus−A」及び「Virus−B」に、それぞれ、パターン番号「1」及び「2」が付与されている。一方、優先度「B」が設定されたパターン「Virus−C」には、パターン番号「3」が付与されている。このように、優先度1401がより高いパターンに、より小さいパターン番号211が付与されている場合、パターン番号211の順にスキャンが実行されれば、優先度1401が高いパターンを用いたスキャンが優先的に実行されることになる。
図14の例では、新たに追加されたパターン「Virus−Y」及び「Virus−Z」がパターン定義部210の末尾に追加され、これらの二つのパターンのうち優先度の高いパターン「Virus−Y」の後にパターン「Virus−Z」が追加されている。しかし、新たなパターンが追加されたときに、パターン定義部210に含まれる全パターンが優先度の順に並べ替えられてもよい。
図15は、本発明の実施形態の変形例において実行される按分比の計算及び按分比に基づくスキャンを示すフローチャートである。
図15に示す手順のうち、ステップ1001からステップ1003、及び、ステップ1004からステップ1006は、図10に示したものと同様であるため、説明を省略する。
ただし、ステップ1003において、CPU103は、優先度が高いパターンを用いたスキャンを優先的に実行することが望ましい。例えば、パターン定義ファイル150のパターン定義部において、優先度1401がより高いパターンに、より小さいパターン番号211が付与されている場合、CPU103は、パターン番号211の順にスキャンを実行することが望ましい。あるいは、CPU103は、優先度1401を参照して、優先度の順にスキャンを実行してもよい。
図15において、ステップ1003の次に、CPU103は、優先度「A」が設定されたパターンを用いたスキャンが終了したか否かを判定する(ステップ1501)。
優先度「A」が設定されたパターンを用いたスキャンが終了したと判定された場合、処理はステップ1004に進む。
一方、優先度「A」が設定されたパターンを用いたスキャンが終了していないと判定された場合、CPU103は、優先度「A」が設定された残りのパターンを用いたスキャンを非同期で実行する(ステップ1502)。この場合、ステップ1502の後、ステップ1004からステップ1006は実行されずに、処理は図9のステップ905に進む。その結果、ディスクサブシステム140から書き込み要求に対する応答が送信された後で、優先度「A」が設定された残りのパターンを用いたスキャンが非同期に実行される。
このように、図14及び図15によれば、高い優先度(すなわち危険度)が設定されたパターンを用いたスキャンが、それより低い優先度が設定されたパターンを用いたスキャンより優先して処理される。その結果、ウィルスによる深刻な被害の発生を、より確実に防止することができる。
次に、アクセスの比率の変動に対応するために実行される処理について、図16を参照して説明する。
図16は、本発明の実施形態の変形例のスキャンサーバ100の通知情報受付処理部109の処理を示すフローチャートである。
図6から図11を参照して説明したように、本実施形態によれば、CPU103の負荷を抑えるように適切な按分比が計算される。しかし、按分比が計算された後で、按分比の計算の基礎となるアクセス比率(すなわちread比率502及びwrite比率503)が変動する場合がある。
例えば、図5の第1エントリに示すように、read比率502:write比率503が30%:70%である場合、書き込み要求受信時に30%のスキャンが実行され、読み出し要求受信時に70%のスキャンが実行されるように按分比が計算される。しかし、その後、第2エントリに示すように、read比率502:write比率503が70%:30%に変化する場合がある。この場合、読み出し要求が多く(すなわち総アクセス数の70%)発生している状況において、読み出し要求受信時に70%のスキャンを実行する必要があるため、CPU103の負荷が増大し、タイムアウトが発生するおそれがある。
図16は、このようにアクセス比率が変動した場合に、読み出し要求受信時のCPU103の負荷の増大を抑えるために、アクセス比率の変動を吸収するためのスキャンを非同期に実行する処理を示す。
図16に示す処理は、CPU103が通知情報受付処理部109を実行することによって実現される。
図16に示す手順のうち、ステップ1201及びステップ1202は図12に示したものと同様であるため、説明を省略する。
ステップ1202の次に、CPU103は、スキャン進捗管理テーブル300を参照して、完了/未完識別303が「未完」であり、かつ、終了日時305に格納された日時から現在日時までの時間が所定の時間を超えているエントリ(すなわち、現在日時から終了日時305の値を減算した値が所定の時間を超えているエントリ)を検索する(ステップ1601)。時間が経過するほど、アクセス比率が変動する可能性が高いためである。
次に、CPU103は、ステップ1601において取得されたエントリにおける残りのパターン数と、現在の按分比に基づいて算出された残りのパターン数とを比較し、前者のパターン数が後者のパターン数より多いか否かを判定する(ステップ1602)。現在の按分比とは、最新の通知済み情報500に基づいて計算された按分比である。なお、図16のステップ1602において「余剰がある」とは、前者のパターン数が後者のパターン数より多いことを意味する。
なお、最新のread比率502の値が、ステップ1601において取得されたエントリの終了日時305が示す時点におけるread比率502の値(すなわち、最新でないread比率502の値)より高い場合、ステップ1602において、前者のパターン数が後者のパターン数より多いと判定される。
前者のパターン数が後者のパターン数より多い場合、実際に読み出し要求を受信した時点のCPU103の負荷が当初の見込みより増大し、タイムアウトが発生する恐れがある。この場合、CPU103は、後者のパターン数と前者のパターン数との差に相当する数のパターンを用いたスキャンを実行する(ステップ1603)。
次に、CPU103は、ステップ1603におけるスキャンの実行を反映するようにスキャン進捗管理テーブル300を更新する(ステップ1604)。
ステップ1604が実行されると、図16に示す処理が終了する。
ステップ1602において前者のパターン数が後者のパターン数より多くないと判定された場合、読み出し要求受信時のCPUの負荷は当初の見込みより増大しない。したがって、この場合、ステップ1603及びステップ1604は実行されず、図16に示す処理が終了する。
次に、按分比の精度向上について、図17を参照して説明する。
図10において説明したように、按分比は、アクセス比率に基づいて算出される。そして、按分比に相当する数のパターンを用いたスキャンが実行される。しかし、アクセス比率と総パターン数との関係によっては、按分比に相当するパターンの数が整数にならない場合がある。
例えば、パターン定義ファイル150において定義されているパターンの総数が100であり、アクセス比率に基づいて算出された按分比が74.8%:25.2%(書き込み要求受信時のスキャン:読み出し要求受信時のスキャン)である場合、書き込み要求受信時に、74.8個のパターンを使用してスキャンを実行する必要がある。この場合、端数を切り上げて、75個のパターンを使用したスキャンが実行されてもよい。しかし、以下に説明する変形例では、上記のような端数に相当するスキャンが、ファイルの途中までスキャンを実行することによって実現される。
例えば、上記のように、パターンの総数が100、按分比が74.8%:25.2%である場合、CPU103は、書き込み要求を受信したときに、まず1番目のパターンから74番目のパターンまでを使用したスキャンを実行する。次に、CPU103は、75番目のパターンと、スキャンされるファイルのデータとの照合を、そのファイルの先頭から開始し、ファイルの全長の80%の位置まで照合が終了した時点で、その照合を停止する。
その後読み出し要求を受信したとき、CPU103は、75番目のパターンを使用したスキャンを、ファイルの全長の80%の位置から開始する。75番目のパターンを使用したスキャンが終了すると、続いてCPU103は、76番目から100番目までのパターンを使用したスキャンを実行する。
上記の具体例を一般化すると、定義されているパターンの総数がN、アクセス比率に基づいて算出された按分比(書き込み要求受信時のスキャン:読み出し要求受信時のスキャン)がX%:(100−X)%、スキャンされるファイルのデータの全長がS(バイト)である場合、
Nwrite=INT(X%*N) ・・・(1)
Rwrite=S*(X%*N−Nwrite) ・・・(2)
となる。ここで、Nwriteは、書き込み要求受信時のファイルの全長にわたるスキャンに使用されるパターン数、Rwriteは、書き込み要求受信時の最後のパターンを用いてスキャンされるファイルの範囲、記号「*」は乗算、関数「INT()」は小数部分の切り捨てを意味する。
例えば、N=100、X=74.8(%)、及び、S=512(バイト)を式(1)及び(2)に代入すると、
Nwrite=INT(0.748*100)=74
Rwrite=512*(0.748*100−74)=409
が得られる。これは、上記のように、1番目のパターンから74番目のパターンまでを使用したスキャンが実行され、さらに、75番目のパターンを使用したスキャンがファイルの全長の80%(すなわち512バイト中の409バイト)まで実行されることを示す。
上記のNwrite及びRwriteの算出は、図10のステップ1002において実行される。Nwrite及びRwriteに基づくスキャンは、図10のステップ1003において実行される。上記のように実行されたスキャンの進捗は、図17に示すテーブルによって管理される。
図17は、本発明の実施形態の変形例のスキャン進捗管理テーブル300の説明図である。
図17において、図3と共通する部分については、説明を省略する。
なお、説明を簡単にするため、図17は、パターン定義ファイル150において定義されているパターンの総数が100である場合のスキャン進捗管理テーブル300を示す。
図17の進捗度306、進捗度310及び再開ポイント312には、パターンの番号に加えて、ファイルデータにおける位置を示す情報が格納される。例えば、図17の第1エントリの進捗度306には、「#75」及び「409/512」が格納されている。これらの値は、このエントリに対応するファイル「/dir−a/aaa.txt」の全長が512バイトであること、及び、75番目のパターンを使用したこのファイルのスキャンが、このファイルの先頭から409バイトの位置まで終了したことを示す。
以上、本発明の実施形態によれば、NASサーバ120は、ファイルの書き込み要求を受信すると、そのファイルのスキャンの一部(例えば50%)が終了した時点で、書き込み要求に対する応答を返す。スキャンの一部とは、定義されているパターンの一部を用いたスキャンであってもよいし、スキャンされるファイルの一部を対象とするスキャンであってもよい。
NASサーバ120は、ある時間帯に受信したアクセス要求の比率(すなわち、書き込み要求の数と読み出し要求の数との比率)を、スキャンサーバ100に送信する。スキャンサーバ100は、送信された比率に基づいて、スキャンの実行の比率を計算する。この比率に基づいてスキャンを実行することによって、CPU103の負荷が適切に分散される。
これらによってCPU103のレスポンスが改善される結果、アクセス要求に対するタイムアウトの発生が防止される。
パターンが新たに追加された場合、及び、アクセス要求の比率が変動した場合にも、CPU103の負荷の増大を防ぐことによって、タイムアウトの発生が防止される。
遅くともファイルが読み出された時点ではそのファイルの全てのスキャンが完了しているため、ウィルスによる被害の発生も防止される。
危険度が高いウィルスのパターンを用いたスキャンを優先的に実行することによって、ウィルスによる被害の発生を確実に防止することができる。
本発明の実施形態の計算機システムの構成を示すブロック図である。 本発明の実施形態のパターン定義ファイルの説明図である。 本発明の実施形態のスキャン進捗管理テーブルの説明図である。 本発明の実施形態のアクセスログの説明図である。 本発明の実施形態の通知済み情報の説明図である。 本発明の実施形態のNASサーバのwrite要求受付処理部の処理を示すフローチャートである。 本発明の実施形態のNASサーバのread要求受付処理部の処理を示すフローチャートである。 本発明の実施形態のNASサーバのNASアクセス情報取得処理部の処理を示すフローチャートである。 本発明の実施形態のスキャンサーバのスキャン要求受付処理部の処理を示すフローチャートである。 本発明の実施形態において実行される按分比の計算及び按分比に基づくスキャンを示すフローチャートである。 本発明の実施形態において実行される按分比に基づくスキャンの例の説明図である。 本発明の実施形態のスキャンサーバの通知情報受付処理部の処理を示すフローチャートである。 本発明の実施形態のスキャンサーバのパターン定義監視処理部の処理を示すフローチャートである。 本発明の実施形態の変形例のパターン定義ファイルの説明図である。 本発明の実施形態の変形例において実行される按分比の計算及び按分比に基づくスキャンを示すフローチャートである。 本発明の実施形態の変形例のスキャンサーバの通知情報受付処理部の処理を示すフローチャートである。 本発明の実施形態の変形例のスキャン進捗管理テーブルの説明図である。
符号の説明
100 スキャンサーバ
101、104、121、124、142、146 インターフェース(I/F)
102、122 メモリ
103、123、144 CPU
105 ウィルススキャンエンジン
108 スキャン要求受付処理部
109 通知情報受付処理部
110 パターン定義監視処理部
120 NASサーバ
125 ファイル共有プログラム
128 write要求受付処理部
129 read要求受付処理部
130 NASアクセス情報取得処理部
140 ディスクサブシステム
147A〜147D ディスクドライブ
148A〜148C 論理ボリューム(LU)
149 ユーザファイル
150 パターン定義ファイル
160 ファイバーチャネル(FC)スイッチ
180 ローカルエリアネットワーク(LAN)
170A、170B クライアント

Claims (18)

  1. 第1計算機と、ネットワークを介して前記第1計算機に接続される第2計算機と、前記第1計算機及び前記第2計算機に接続される記憶装置と、を備える計算機システムであって、
    前記第1計算機は、前記ネットワークに接続される第1インターフェースと、前記第1インターフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、
    前記第2計算機は、前記ネットワークに接続される第2インターフェースと、前記第2インターフェースに接続される第2プロセッサと、前記第2プロセッサに接続される第2メモリと、を備え、
    前記記憶装置は、データの記憶領域を提供する記憶媒体と、前記第1計算機及び前記第2計算機に接続され、前記記憶領域へのデータの書き込み及び読み出しを制御するコントローラと、を備え、
    前記第1計算機は、
    前記ネットワークを介してデータの書き込み要求を受信すると、前記書き込まれるべきデータを前記記憶装置に書き込み、
    前記書き込まれたデータのウィルススキャン要求を前記第2計算機に送信し、
    前記第2計算機は、
    前記第1計算機から前記ウィルススキャン要求を受信すると、前記書き込まれたデータを前記記憶装置から読み出し、
    前記読み出されたデータのウィルススキャンの一部を実行し、
    前記第1計算機は、前記読み出されたデータのウィルススキャンの一部が終了した後、前記受信した書き込み要求に対する応答を送信し、
    前記第2計算機は、前記第1計算機が前記応答を送信した後、前記読み出されたデータのウィルススキャンの残りを実行することを特徴とする計算機システム。
  2. 前記第1計算機は、前記記憶装置に書き込まれた前記データの読み出し要求を、前記ネットワークを介して受信すると、前記書き込まれたデータのウィルススキャン要求を前記第2計算機に送信し、
    前記第2計算機は、前記第1計算機からウィルススキャン要求を受信すると、前記書き込まれたデータを前記記憶装置から読み出し、
    前記読み出されたデータのウィルススキャンの残りを実行し、
    前記第1計算機は、前記ウィルススキャンの残りが終了した後、前記書き込まれたデータを前記記憶装置から読み出して、前記読み出されたデータを、前記ネットワークを介して送信することを特徴とする請求項1に記載の計算機システム。
  3. 前記第2計算機又は前記記憶装置は、複数のウィルスのパターンを保持し、
    前記第2計算機は、
    前記複数のパターンの一部と、前記読み出されたデータとを照合することによって、前記読み出されたデータのウィルススキャンの一部を実行し、
    前記ウィルススキャンの進捗を示す情報を含む管理情報を保持し、
    前記管理情報に基づいて、前記複数のパターンのうち照合が終了した前記一部を除く残りの部分と、前記読み出されたデータとを照合することによって、前記読み出されたデータのウィルススキャンの残りを実行することを特徴とする請求項1に記載の計算機システム。
  4. 前記第1計算機は、
    所定の時間内に前記ネットワークを介して受信した全アクセス要求の数に対する書き込み要求の数及び読み出し要求の数の比率を算出し、
    前記算出された比率を前記第2計算機に送信し、
    前記第2計算機は、
    前記書き込み要求の数の比率が前記読み出し要求の数の比率より高い場合、前記複数のパターンの総数の半分より少ない数の前記パターンと、前記読み出されたデータとを照合することによって、前記読み出されたデータのウィルススキャンの一部を実行し、
    前記書き込み要求の数の比率が前記読み出し要求の数の比率より低い場合、前記複数のパターンの総数の半分より多い数の前記パターンと、前記読み出されたデータとを照合することによって、前記読み出されたデータのウィルススキャンの一部を実行することを特徴とする請求項3に記載の計算機システム。
  5. 前記第2計算機は、
    前記算出された比率を受信すると、前記受信した最新の比率と、前回以前に受信した前記比率とを比較し、
    前記受信した最新の比率が示す前記読み出し要求の数の比率が、前回以前に受信した前記比率が示す前記読み出し要求の数の比率より高い場合、照合が終了した前記一部を除く残りの前記パターンのうち少なくとも一つの前記パターンと、前記読み出されたデータとを照合することを特徴とする請求項4に記載の計算機システム。
  6. 前記第2計算機又は前記記憶装置は、さらに、前記各ウィルスの危険度を示す情報を保持し、
    前記複数のパターンは、第1のウィルスのパターンである第1パターン、及び、第2のウィルスのパターンである第2パターンを含み、
    前記第2計算機は、前記各ウィルスの危険度を示す情報に基づいて前記第1のウィルス及び前記第2のウィルスの危険度を判定し、
    前記第1のウィルスの危険度が前記第2のウィルスの危険度より高い場合、前記第2パターンと前記読み出されたデータとを照合する前に、前記第1パターンと前記読み出されたデータとを照合することを特徴とする請求項3に記載の計算機システム。
  7. 前記第2計算機は、前記パターンが新たに追加されたか否かを判定し、
    前記パターンが新たに追加された場合、照合が終了した前記一部を除く残りの前記パターンのうち前記追加されたパターンの数と同数の前記パターンと、前記読み出されたデータとを照合することを特徴とする請求項3に記載の計算機システム。
  8. 前記第2計算機又は前記記憶装置は、少なくとも一つのウィルスのパターンを保持し、
    前記第2計算機は、
    前記パターンと、前記読み出されたデータの一部とを照合することによって、前記読み出されたデータのウィルススキャンの一部を実行し、
    前記ウィルススキャンの進捗を示す情報を含む管理情報を保持し、
    前記管理情報に基づいて、前記パターンと、前記読み出されたデータのうち照合が終了した前記一部を除く残りの部分とを照合することによって、前記読み出されたデータのウィルススキャンの残りを実行することを特徴とする請求項1に記載の計算機システム。
  9. 前記第2計算機は、
    前記読み出されたデータのウィルススキャンの一部が終了すると、前記第2プロセッサの使用率を所定の閾値と比較し、
    前記第2プロセッサの使用率が前記所定の閾値より低い場合、前記読み出されたデータのウィルススキャンの残りを実行することを特徴とする請求項1に記載の計算機システム。
  10. 第1計算機と、ネットワークを介して前記第1計算機に接続される第2計算機と、前記第1計算機及び前記第2計算機に接続される記憶装置と、を備える計算機システムの制御方法であって、
    前記第1計算機は、前記ネットワークに接続される第1インターフェースと、前記第1インターフェースに接続される第1プロセッサと、前記第1プロセッサに接続される第1メモリと、を備え、
    前記第2計算機は、前記ネットワークに接続される第2インターフェースと、前記第2インターフェースに接続される第2プロセッサと、前記第2プロセッサに接続される第2メモリと、を備え、
    前記記憶装置は、データの記憶領域を提供する記憶媒体と、前記第1計算機及び前記第2計算機に接続され、前記記憶領域へのデータの書き込み及び読み出しを制御するコントローラと、を備え、
    前記方法は、
    前記第1計算機が、前記ネットワークを介してデータの書き込み要求を受信すると、前記書き込まれるべきデータを前記記憶装置に書き込む手順と、
    前記第1計算機が、前記書き込まれたデータのウィルススキャン要求を前記第2計算機に送信する手順と、
    前記第2計算機が、前記第1計算機から前記ウィルススキャン要求を受信すると、前記書き込まれたデータを前記記憶装置から読み出す手順と、
    前記読み出されたデータのウィルススキャンの一部を実行する手順と、
    前記読み出されたデータのウィルススキャンの一部が終了した後、前記第1計算機が、前記受信した書き込み要求に対する応答を送信する手順と、
    前記第1計算機が前記応答を送信した後、前記第2計算機が、前記読み出されたデータのウィルススキャンの残りを実行する手順と、を含むことを特徴とする方法。
  11. 前記方法は、さらに、
    前記第1計算機が、前記記憶装置に書き込まれた前記データの読み出し要求を、前記ネットワークを介して受信すると、前記書き込まれたデータのウィルススキャン要求を前記第2計算機に送信する手順を含み、
    前記第2計算機が、前記読み出されたデータのウィルススキャンの残りを実行する手順は、
    前記第2計算機が、前記第1計算機からウィルススキャン要求を受信すると、前記書き込まれたデータを前記記憶装置から読み出し、
    前記第2計算機が、前記読み出されたデータのウィルススキャンの残りを実行することによって実行され、
    前記方法は、さらに、
    前記ウィルススキャンの残りが終了した後、前記第1計算機が、前記書き込まれたデータを前記記憶装置から読み出して、前記読み出されたデータを、前記ネットワークを介して送信する手順を含むことを特徴とする請求項10に記載の方法。
  12. 前記第2計算機又は前記記憶装置は、複数のウィルスのパターンを保持し、
    前記読み出されたデータのウィルススキャンの一部を実行する手順は、
    前記第2計算機が、前記複数のパターンの一部と、前記読み出されたデータとを照合することによって実行され、
    前記第2計算機は、前記ウィルススキャンの進捗を示す情報を含む管理情報を保持し、
    前記読み出されたデータのウィルススキャンの残りを実行する手順は、前記第2計算機が、前記管理情報に基づいて、前記複数のパターンのうち照合が終了した前記一部を除く残りの部分と、前記読み出されたデータとを照合することによって実行されることを特徴とする請求項10に記載の方法。
  13. 前記方法は、さらに、
    前記第1計算機が、所定の時間内に前記ネットワークを介して受信した全アクセス要求の数に対する書き込み要求の数及び読み出し要求の数の比率を算出する手順と、
    前記第1計算機が、前記算出された比率を前記第2計算機に送信する手順と、を含み、
    記読み出されたデータのウィルススキャンの一部を実行する手順は、
    前記書き込み要求の数の比率が前記読み出し要求の数の比率より高い場合、前記第2計算機が、前記複数のパターンの総数の半分より少ない数の前記パターンと、前記読み出されたデータとを照合することによって実行され、
    前記書き込み要求の数の比率が前記読み出し要求の数の比率より低い場合、前記第2計算機が、前記複数のパターンの総数の半分より多い数の前記パターンと、前記読み出されたデータとを照合することによって実行されることを特徴とする請求項12に記載の方法。
  14. 前記方法は、さらに、
    前記第2計算機が、前記算出された比率を受信すると、前記受信した最新の比率と、前回以前に受信した前記比率とを比較する手順と、
    前記受信した最新の比率が示す前記読み出し要求の数の比率が、前回以前に受信した前記比率が示す前記読み出し要求の数の比率より高い場合、前記第2計算機が、照合が終了した前記一部を除く残りの前記パターンのうち少なくとも一つの前記パターンと、前記読み出されたデータとを照合する手順と、を含むことを特徴とする請求項13に記載の方法。
  15. 前記第2計算機又は前記記憶装置は、さらに、前記各ウィルスの危険度を示す情報を保持し、
    前記複数のパターンは、第1のウィルスのパターンである第1パターン、及び、第2のウィルスのパターンである第2パターンを含み、
    前記方法は、さらに、
    前記第2計算機が、前記各ウィルスの危険度を示す情報に基づいて前記第1のウィルス及び前記第2のウィルスの危険度を判定する手順と、
    前記第1のウィルスの危険度が前記第2のウィルスの危険度より高い場合、前記第2計算機が、前記第2パターンと前記読み出されたデータとを照合する前に、前記第1パターンと前記読み出されたデータとを照合する手順と、を含むことを特徴とする請求項12に記載の方法。
  16. 前記方法は、さらに、
    前記第2計算機が、前記パターンが新たに追加されたか否かを判定し、
    前記パターンが新たに追加された場合、前記第2計算機が、照合が終了した前記一部を除く残りの前記パターンのうち前記追加されたパターンの数と同数の前記パターンと、前記読み出されたデータとを照合する手順と、を含むことを特徴とする請求項12に記載の方法。
  17. 前記第2計算機又は前記記憶装置は、少なくとも一つのウィルスのパターンを保持し、
    前記読み出されたデータのウィルススキャンの一部を実行する手順は、前記第2計算機が、前記パターンと、前記読み出されたデータの一部とを照合することによって実行され、
    前記第2計算機は、前記ウィルススキャンの進捗を示す情報を含む管理情報を保持し、
    前記読み出されたデータのウィルススキャンの残りを実行する手順は、前記第2計算機が、前記管理情報に基づいて、前記パターンと、前記データのうち照合が終了した前記一部を除く残りの部分とを照合することによって実行されることを特徴とする請求項10に記載の方法。
  18. 前記方法は、さらに、
    前記第2計算機が、前記読み出されたデータのウィルススキャンの一部が終了すると、前記第2プロセッサの使用率を所定の閾値と比較する手順と、
    前記第2プロセッサの使用率が前記所定の閾値より低い場合、前記第2計算機が、前記読み出されたデータのウィルススキャンの残りを実行する手順と、を含むことを特徴とする請求項10に記載の方法。
JP2007231295A 2007-09-06 2007-09-06 ウィルススキャン方法及びその方法を用いた計算機システム Expired - Fee Related JP4943278B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007231295A JP4943278B2 (ja) 2007-09-06 2007-09-06 ウィルススキャン方法及びその方法を用いた計算機システム
US11/970,783 US8166548B2 (en) 2007-09-06 2008-01-08 Computer system and method for scanning computer virus
US13/430,849 US8584244B2 (en) 2007-09-06 2012-03-27 Computer system and method for scanning computer virus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007231295A JP4943278B2 (ja) 2007-09-06 2007-09-06 ウィルススキャン方法及びその方法を用いた計算機システム

Publications (2)

Publication Number Publication Date
JP2009064224A JP2009064224A (ja) 2009-03-26
JP4943278B2 true JP4943278B2 (ja) 2012-05-30

Family

ID=40433304

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007231295A Expired - Fee Related JP4943278B2 (ja) 2007-09-06 2007-09-06 ウィルススキャン方法及びその方法を用いた計算機システム

Country Status (2)

Country Link
US (2) US8166548B2 (ja)
JP (1) JP4943278B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4943278B2 (ja) 2007-09-06 2012-05-30 株式会社日立製作所 ウィルススキャン方法及びその方法を用いた計算機システム
US8392379B2 (en) * 2009-03-17 2013-03-05 Sophos Plc Method and system for preemptive scanning of computer files
US8898774B2 (en) * 2009-06-25 2014-11-25 Accenture Global Services Limited Method and system for scanning a computer system for sensitive content
GB2471716A (en) 2009-07-10 2011-01-12 F Secure Oyj Anti-virus scan management using intermediate results
US8918874B2 (en) * 2010-05-25 2014-12-23 F-Secure Corporation Malware scanning
US8572728B2 (en) * 2010-06-08 2013-10-29 Hewlett-Packard Development Company, L.P. Initiation of storage device scans
US9569449B2 (en) * 2010-11-18 2017-02-14 International Business Machines Corporation Method and apparatus for autonomic discovery of sensitive content
CN102088487B (zh) * 2010-12-31 2013-04-24 姚学民 高密度磁盘的云计算存储服务器
US9652168B2 (en) * 2015-04-10 2017-05-16 International Business Machines Corporation Adaptive concurrency control using hardware transactional memory and locking mechanism
US10009370B1 (en) * 2016-03-01 2018-06-26 EMC IP Holding Company LLC Detection and remediation of potentially malicious files
US10705829B2 (en) * 2016-03-30 2020-07-07 International Business Machines Corporation Software discovery using exclusion
JP6908874B2 (ja) * 2016-10-27 2021-07-28 コニカミノルタ株式会社 情報処理システム、情報処理装置およびプログラム
CN108133154B (zh) * 2017-12-25 2020-03-24 奇安信科技集团股份有限公司 一种对文件进行存储的方法及装置
US20200242265A1 (en) * 2019-01-30 2020-07-30 EMC IP Holding Company LLC Detecting abnormal data access patterns
US10701238B1 (en) 2019-05-09 2020-06-30 Google Llc Context-adaptive scanning
US11960763B2 (en) * 2021-04-23 2024-04-16 EMC IP Holding Company LLC Load balancing combining block and file storage
US11782851B2 (en) * 2021-09-01 2023-10-10 Micron Technology, Inc. Dynamic queue depth adjustment

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10307776A (ja) * 1997-05-06 1998-11-17 Nec Niigata Ltd コンピュータウイルス受信監視装置及びそのシステム
US6023720A (en) * 1998-02-09 2000-02-08 Matsushita Electric Industrial Co., Ltd. Simultaneous processing of read and write requests using optimized storage partitions for read and write request deadlines
US6748534B1 (en) * 2000-03-31 2004-06-08 Networks Associates, Inc. System and method for partitioned distributed scanning of a large dataset for viruses and other malware
JP2002259150A (ja) * 2001-03-05 2002-09-13 Fujitsu Prime Software Technologies Ltd ワクチンソフト提供方法及びプログラム
US6981280B2 (en) * 2001-06-29 2005-12-27 Mcafee, Inc. Intelligent network scanning system and method
JP2003114848A (ja) * 2001-10-09 2003-04-18 Victor Co Of Japan Ltd ファイルエントリ用サーバ及びファイルエントリ用端末
JP3979285B2 (ja) * 2002-12-17 2007-09-19 株式会社日立製作所 情報処理システム
US7854007B2 (en) * 2005-05-05 2010-12-14 Ironport Systems, Inc. Identifying threats in electronic messages
US20070038681A1 (en) * 2005-08-10 2007-02-15 Spare Backup, Inc. System and method of remote storage of data through connection from a server to a client
US7730238B1 (en) * 2005-10-07 2010-06-01 Agere System Inc. Buffer management method and system with two thresholds
JP4687382B2 (ja) * 2005-10-25 2011-05-25 株式会社日立製作所 ストレージシステムにおけるウイルスチェック方法
JP4943278B2 (ja) 2007-09-06 2012-05-30 株式会社日立製作所 ウィルススキャン方法及びその方法を用いた計算機システム

Also Published As

Publication number Publication date
US8166548B2 (en) 2012-04-24
US20120185940A1 (en) 2012-07-19
US8584244B2 (en) 2013-11-12
US20090070879A1 (en) 2009-03-12
JP2009064224A (ja) 2009-03-26

Similar Documents

Publication Publication Date Title
JP4943278B2 (ja) ウィルススキャン方法及びその方法を用いた計算機システム
US8364645B2 (en) Data management system and data management method
US8239354B2 (en) System and method for managing small-size files in an aggregated file system
US20200019516A1 (en) Primary Data Storage System with Staged Deduplication
US7734597B2 (en) System and method performing an on-line check of a file system
JP4116413B2 (ja) プリフェッチアプライアンスサーバ
JP4809040B2 (ja) ストレージ装置及びスナップショットのリストア方法
JP4852298B2 (ja) 仮想ボリュームを識別する情報を引き継ぐ方法及びその方法を用いたストレージシステム
WO2013074106A1 (en) Method, apparatus and system for data deduplication
JP4400653B2 (ja) 情報システム、および、情報システムの情報保存方法
US7640588B2 (en) Data processing system and method
JP6445049B2 (ja) ログの管理方法及び計算機システム
JP2007323507A (ja) 記憶システム並びにこれを用いたデータの処理方法
US20110246732A1 (en) Computer system for controlling backups using wide area network
US20090006735A1 (en) Storage unit and disk control method
US12056056B2 (en) Methods and systems for managing race conditions during usage of a remote storage location cache in a networked storage system
US10664193B2 (en) Storage system for improved efficiency of parity generation and minimized processor load
US9336157B1 (en) System and method for improving cache performance
JP4625675B2 (ja) ストレージ装置のリソース割り当て方法及びストレージ装置
US11500591B1 (en) Methods and systems for enabling and disabling remote storage location cache usage in a networked storage system
US11481326B1 (en) Networked storage system with a remote storage location cache and associated methods thereof
US8554954B1 (en) System and method for improving cache performance
US11544011B1 (en) Write invalidation of a remote location cache entry in a networked storage system
US8914585B1 (en) System and method for obtaining control of a logical unit number
US8914584B1 (en) System and method for improving cache performance upon detection of a LUN control event

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120111

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: 20120131

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120229

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees