(57)【特許請求の範囲】
【請求項１】
ホストコンピュータにプライマリボリュームを提供する記憶制御装置であって、
前記ホストコンピュータからのファイル更新要求によって生じる、前記プライマリボリュームとバックアップボリュームとの間の差分ブロックを検出し、この検出された差分ブロックのデータを、複数の世代別の差分バックアップデータとして、それぞれ管理するバックアップ制御部と、
ファイルとブロックとの対応関係を管理する管理情報と前記バックアップ制御部によって保存することが確定された差分バックアップデータとに基づいて、前記ホストコンピュータにより更新されたファイルを検出する更新ファイル検出部と、
検出された前記更新ファイルについて、コンピュータウィルスに感染しているか否かを検査するための第１データ処理を行う第１データ処理部と、
前記第１データ処理部によって前記コンピュータウィルスに感染していると判定された感染ファイルを回復させるファイル回復部と、
を備え、
前記ファイル回復部は、予め設定されている第１回復方法と第２回復方法とのいずれか一方を用いて、前記感染ファイルの記憶内容を、前記コンピュータウィルスに感染していない状態に回復させるようになっており、
前記ウィルスパターンファイルには、そのウィルスパターンファイルに含まれる全てのコンピュータウィルスに感染していない時期を保証する保証時期情報が含まれており、
前記第１回復方法は、前記保証時期情報に示される時期に対応する差分バックアップデータに含まれる、前記感染ファイルに対応するブロックのデータを用いて、前記感染ファイルの記憶内容を前記コンピュータウィルスに感染していない状態に回復させるものであり、
前記第２回復方法は、最新世代よりも１つ古い世代の差分バックアップデータから順番に過去の世代の差分バックアップデータに遡っていくことにより、前記感染ファイルに対応するブロックを検出し、この検出されたブロックのデータを用いて、前記感染ファイルの記憶内容を前記コンピュータウィルスに感染していない状態に回復させるものである、
記憶制御装置。
【請求項２】
前記第１データ処理部は、前回の検査後に配信されたウィルスパターンファイルを用いて、前記更新ファイルの検査を行う請求項１に記載の記憶制御装置。
【請求項３】
前記更新ファイル検出部によって検出される前記更新ファイルについて、ファイル検索に用いられる検索用情報を生成する処理である第２データ処理を実行する第２データ処理部を備える請求項１に記載の記憶制御装置。
【請求項４】
ファイル検索に用いられる検索用情報を記憶する検索用ボリュームを備え、
前記第２データ処理は、前記検索用情報を生成して前記検索用ボリュームに記憶させる処理である請求項３に記載の記憶制御装置。
【請求項５】
前記第２データ処理とは、ファイル検索に用いられる検索用情報を生成して、検索用ボリュームに記憶させる処理であり、
前記検索用ボリュームは、別の記憶制御装置内に設けられている請求項３に記載の記憶制御装置。
【請求項６】
前記第２データ処理部は、前記検索用情報を、別の記憶制御装置内のコピー先ボリュームにリモートコピーさせる請求項３に記載の記憶制御装置。
【請求項７】
少なくとも一つ以上の記憶制御装置を備えており、複数のホストコンピュータにプライマリボリューム及びバックアップボリュームをそれぞれ提供するストレージシステムであって、
前記各ホストコンピュータからのファイル更新要求によって生じる、前記プライマリボリュームと前記バックアップボリュームとの間の差分ブロックをそれぞれ検出し、この検出された差分ブロックのデータを、複数の世代別の差分バックアップデータとして、それぞれ管理するバックアップ制御部と、
ファイルとブロックとの対応関係を各ボリューム単位で管理する管理情報と前記バックアップ制御部によって保存することが確定された差分バックアップデータとに基づいて、前記各ホストコンピュータにより更新されたファイルをそれぞれ検出する更新ファイル検出部と、
検出された前記各更新ファイルについて、コンピュータウィルスに感染しているか否かを検査するための第１データ処理を行う第１データ処理部と、
前記第１データ処理部によって前記コンピュータウィルスに感染していると判定された感染ファイルを回復させるファイル回復部と、
前記更新ファイル検出部により検出される前記各更新ファイルについて、ファイル検索に用いる検索用情報を生成するための第２データ処理をそれぞれ実行する第２データ処理部と、
前記検索用情報を記憶する検索用ボリュームと、
前記検索用情報に基づいてファイル検索を行う検索部と、
を備え、
前記ファイル回復部は、予め設定されている第１回復方法と第２回復方法とのいずれか一方を用いて、前記感染ファイルの記憶内容を、前記コンピュータウィルスに感染していない状態に回復させるようになっており、
前記ウィルスパターンファイルには、そのウィルスパターンファイルに含まれる全てのコンピュータウィルスに感染していない時期を保証する保証時期情報が含まれており、
前記第１回復方法は、前記保証時期情報に示される時期に対応する差分バックアップデータに含まれる、前記感染ファイルに対応するブロックのデータを用いて、前記感染ファイルの記憶内容を前記コンピュータウィルスに感染していない状態に回復させるものであり、
前記第２回復方法は、最新世代よりも１つ古い世代の差分バックアップデータから順番に過去の世代の差分バックアップデータに遡っていくことにより、前記感染ファイルに対応するブロックを検出し、この検出されたブロックのデータを用いて、前記感染ファイルの記憶内容を前記コンピュータウィルスに感染していない状態に回復させるものである、
ストレージシステム。
【請求項８】
前記バックアップ制御部と、前記更新ファイル検出部と、前記第１データ処理部と、前記ファイル回復部と、前記第２データ処理部とは第１記憶制御装置にそれぞれ設けられており、
前記検索用ボリュームと検索部とは、第２記憶制御装置にそれぞれ設けられており、
前記第２データ処理部は、前記検索用情報を差分リモートコピーにより前記検索用ボリュームに送信して記憶させる請求項７に記載のストレージシステム。
【請求項９】
ホストコンピュータにプライマリボリュームを提供する記憶制御装置を制御する方法であって、
前記ホストコンピュータからのファイル更新要求を処理するステップと、
前記ファイル更新要求によって生じる、前記プライマリボリュームとバックアップボリュームとの間の差分ブロックを検出するステップと、
検出された前記差分ブロックのデータを、複数の世代別の差分バックアップデータとして、それぞれ管理するステップと、
ファイルとブロックとの対応関係を管理する管理テーブルと前記バックアップ制御部によって保存することが確定された差分バックアップデータとに基づいて、前記ホストコンピュータにより更新されたファイルを検出するステップと、
検出された前記更新ファイルについて、コンピュータウィルスに感染しているか否かを検査するステップと、
前記コンピュータウィルスに感染していると判定された感染ファイルを回復させるステップであって、予め設定されている第１回復方法と第２回復方法とのいずれか一方を用いて、前記感染ファイルの記憶内容を、前記コンピュータウィルスに感染していない状態に回復させるようになっており、前記ウィルスパターンファイルには、そのウィルスパターンファイルに含まれる全てのコンピュータウィルスに感染していない時期を保証する保証時期情報が含まれており、前記第１回復方法は、前記保証時期情報に示される時期に対応する差分バックアップデータに含まれる、前記感染ファイルに対応するブロックのデータを用いて、前記感染ファイルの記憶内容を前記コンピュータウィルスに感染していない状態に回復させるものであり、前記第２回復方法は、最新世代よりも１つ古い世代の差分バックアップデータから順番に過去の世代の差分バックアップデータに遡っていくことにより、前記感染ファイルに対応するブロックを検出し、この検出されたブロックのデータを用いて、前記感染ファイルの記憶内容を前記コンピュータウィルスに感染していない状態に回復させるものである、ステップと、
をそれぞれ実行する記憶制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置、ストレージシステム及び記憶制御装置の制御方法に関するものである。
【背景技術】
【０００２】
例えば、政府機関、企業、教育機関等では、多種多量のデータを取り扱うために、比較的大規模なストレージシステムを用いてデータを管理する。このストレージシステムは、少なくとも一つの記憶制御装置を備える。記憶制御装置は、例えば、多数の記憶デバイスを備えており、ＲＡＩＤ（Redundant Array of Inexpensive Disks）に基づく記憶領域を提供することができる。記憶デバイス群が提供する物理的な記憶領域上には少なくとも１つ以上の論理デバイス（論理ボリュームとも呼ばれる）が形成される。ホストコンピュータ（以下、「ホスト」）は、論理デバイスに対してライトコマンドやリードコマンドを発行することにより、データの書込みやデータの読出しを行う。
【０００３】
記憶制御装置は、多数のホストに接続されており、各ホストにそれぞれボリュームを提供する。各ボリュームには、ホストによって使用される種々のデータが記憶される。そこで、記憶制御装置内において、ボリューム内のデータがコンピュータウィルスに感染しているか否かを検査し、発見されたコンピュータウィルスを駆除する方法が提案されている（特許文献１，特許文献２，特許文献３）。
なお、プライマリサイトの記憶制御装置からセカンダリサイトの記憶制御装置にデータをリモートコピーする技術も知られている（特許文献４）。
【特許文献１】特開２００４−４６４３５号公報
【特許文献２】特開２００７−５８３４６号公報
【特許文献３】特開２００７−９４８０３号公報
【特許文献４】特開２００５−１８５０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来技術では、プライマリボリュームとコピーペアを形成するセカンダリボリュームの全体について、コンピュータウィルスの有無を検査する。従って、コンピュータウィルスの検査に時間を要し、記憶制御装置の負荷も増大する。また、セカンダリボリューム全体のウィルス検査を終えてから、バックアップ処理を行うため、ホストから見た場合、バックアップ完了に要する時間も長くなる。
【０００５】
本発明は、上記の問題点に鑑みてなされたもので、本発明の目的は、コンピュータウィルスの有無を検査する範囲を、更新された範囲に限定することにより、コンピュータウィルスの検査を効率的に比較的短時間で行うことができる記憶制御装置、ストレージシステム及び記憶制御装置の制御方法を提供することにある。本発明の他の目的は、差分バックアップを行うために管理されている差分ブロックを利用して、更新されたファイルについてのみ、それぞれ異なるデータ処理を行うことができるようにした記憶制御装置、ストレージシステム及び記憶制御装置の制御方法を提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００６】
上記課題を解決すべく、本発明の第１観点に従う記憶制御装置は、ホストコンピュータにプライマリボリュームを提供する記憶制御装置であって、ホストコンピュータからのファイル更新要求によって生じる、プライマリボリュームとバックアップボリュームとの間の差分ブロックを検出し、この検出された差分ブロックのデータを、複数の世代別の差分バックアップデータとして、それぞれ管理するバックアップ制御部と、ファイルとブロックとの対応関係を管理する管理情報と検出された差分ブロックとに基づいて、ホストコンピュータにより更新されたファイルを検出する更新ファイル検出部と、検出された更新ファイルについて、コンピュータウィルスに感染しているか否かを検査するための第１データ処理を行う第１データ処理部と、第１データ処理部によってコンピュータウィルスに感染していると判定された感染ファイルを回復させるファイル回復部と、を備える。
【０００７】
更新ファイル検出部は、バックアップ制御部によって保存することが確定された差分バックアップデータについて、更新ファイルを検出することができる。
【０００８】
第１データ処理部は、前回の検査後に配信されたウィルスパターンファイルを用いて、更新ファイルの検査を行うことができる。
【０００９】
ファイル回復部は、予め設定されている第１回復方法と第２回復方法とのいずれか一方を用いて、感染ファイルの記憶内容を、コンピュータウィルスに感染していない状態に回復させることができる。
【００１０】
ウィルスパターンファイルには、そのウィルスパターンファイルに含まれる全てのコンピュータウィルスに感染していない時期を保証する保証時期情報が含まれており、第１回復方法は、保証時期情報に示される時期に対応する差分バックアップデータに含まれる、感染ファイルに対応するブロックのデータを用いて、感染ファイルの記憶内容をコンピュータウィルスに感染していない状態に回復させることができる。
【００１１】
第２回復方法は、最新世代よりも１つ古い世代の差分バックアップデータから順番に過去の世代の差分バックアップデータに遡っていくことにより、感染ファイルに対応するブロックを検出し、この検出されたブロックのデータを用いて、感染ファイルの記憶内容をコンピュータウィルスに感染していない状態に回復させることができる。
【００１２】
更新ファイル検出部によって検出される更新ファイルについて、第１データ処理とは異なる第２データ処理を実行する第２データ処理部を備えてもよい。第２データ処理とは、例えば、ファイル検索に用いられる検索用情報を生成する処理である。
【００１３】
ファイル検索に用いられる検索用情報を記憶する検索用ボリュームを備え、第２データ処理は、検索用情報を生成して検索用ボリュームに記憶させる処理としてもよい。
【００１４】
第２データ処理とは、ファイル検索に用いられる検索用情報を生成して、検索用ボリュームに記憶させる処理であり、検索用ボリュームは、別の記憶制御装置内に設けられてもよい。
【００１５】
第２データ処理部は、第２データ処理の結果を、別の記憶制御装置内のコピー先ボリュームにリモートコピーさせてもよい。
【００１６】
本発明の第２観点に従うストレージシステムは、少なくとも一つ以上の記憶制御装置を備えており、複数のホストコンピュータにプライマリボリューム及びバックアップボリュームをそれぞれ提供するストレージシステムであって、各ホストコンピュータからのファイル更新要求によって生じる、プライマリボリュームとバックアップボリュームとの間の差分ブロックをそれぞれ検出し、この検出された差分ブロックのデータを、複数の世代別の差分バックアップデータとして、それぞれ管理するバックアップ制御部と、ファイルとブロックとの対応関係を各ボリューム単位で管理する管理情報と検出された差分ブロックとに基づいて、各ホストコンピュータにより更新されたファイルをそれぞれ検出する更新ファイル検出部と、検出された各更新ファイルについて、コンピュータウィルスに感染しているか否かを検査するための第１データ処理を行う第１データ処理部と、第１データ処理部によってコンピュータウィルスに感染していると判定された感染ファイルを回復させるファイル回復部と、更新ファイル検出部により検出される各更新ファイルについて、ファイル検索に用いる検索用情報を生成するための第２データ処理をそれぞれ実行する第２データ処理部と、検索用情報を記憶する検索用ボリュームと、検索用情報に基づいてファイル検索を行う検索部と、を備える。
【００１７】
バックアップ制御部と、更新ファイル検出部と、第１データ処理部と、ファイル回復部と、第２データ処理部とは第１記憶制御装置にそれぞれ設けられており、検索用ボリュームと検索部とは、第２記憶制御装置にそれぞれ設けられており、第２データ処理部は、検索用情報を差分リモートコピーにより検索用ボリュームに送信して記憶させる構成としてもよい。
【００１８】
本発明の第３の観点に従う記憶制御装置の制御方法は、ホストコンピュータにプライマリボリュームを提供する記憶制御装置を制御する方法であって、ホストコンピュータからのファイル更新要求を処理するステップと、ファイル更新要求によって生じる、プライマリボリュームとバックアップボリュームとの間の差分ブロックを検出するステップと、検出された差分ブロックのデータを、複数の世代別の差分バックアップデータとして、それぞれ管理するステップと、ファイルとブロックとの対応関係を管理する管理テーブルと検出された差分ブロックとに基づいて、ホストコンピュータにより更新されたファイルを検出するステップと、検出された更新ファイルについて、コンピュータウィルスに感染しているか否かを検査するステップと、コンピュータウィルスに感染していると判定された感染ファイルを回復させるステップと、をそれぞれ実行する。
【００１９】
本発明の手段、機能、ステップの全部または一部は、コンピュータシステムにより実行されるコンピュータプログラムとして構成可能な場合がある。本発明の構成の全部または一部がコンピュータプログラムから構成された場合、このコンピュータプログラムは、例えば、各種記憶媒体に固定して配布等することができ、あるいは、通信ネットワークを介して送信することもできる。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明の実施形態の全体概要を示す構成説明図である。本実施形態に係る記憶制御装置は、コントローラ１と、記憶デバイス部２とを備える。コントローラ１は、ホスト３Ａ及び検索サーバ３Ｂにそれぞれ接続されている。コントローラ１と記憶デバイス部２とは、同一の筐体内に設けることもできるし、それぞれ別々の筐体内に設けることもできる。コントローラ１と記憶デバイス部２ちは、例えば、ＦＣ＿ＳＡＮ（Fibre Channel_Storage Area Network）、ＩＰ＿ＳＡＮ（Internet
Protocol_SAN）等の通信経路を用いて接続される。先に、記憶デバイス部２について説明し、続いてコントローラ１について説明することとする。
【００２１】
記憶デバイス部２は、複数の記憶デバイス２Ａを備えている。各記憶デバイス２Ａの有する物理的記憶領域上には、論理デバイスとしての論理ボリューム２Ｂを一つまたは複数設けることができる。論理ボリューム２Ｂ、例えば、ＲＡＩＤ１、ＲＡＩＤ５、ＲＡＩＤ６のような冗長化された物理的記憶領域上に設けることができる。以下の説明では、「論理ボリューム」を「ボリューム」と略記する場合がある。また、図中では、論理デバイスとしての論理ボリュームを「ＬＤＥＶ」と表示している。論理デバイス（ＬＤＥＶ）は、ＬＵＮ（Logical Unit Number）に対応付けられ、ホスト３Ａ等に認識される。ＬＵＮに対応付けられた論理デバイスが、論理ボリュームであり、図中では「ＬＵ」または「ＶＯＬ」と略記することがある。
【００２２】
記憶デバイス２Ａとしては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等の、データを読み書き可能な種々のデバイスを利用可能である。
【００２３】
記憶デバイスとしてハードディスクデバイスを用いる場合、例えば、ＦＣ（Fibre
Channel）ディスク、ＳＣＳＩ（Small Computer System Interface）ディスク、ＳＡＴＡディスク、ＡＴＡ（AT Attachment）ディスク、ＳＡＳ（Serial Attached SCSI）ディスク等を用いることができる。
記憶デバイスとして半導体メモリデバイスを用いる場合、例えば、フラッシュメモリ、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（MagnetoresistiveRandom
Access Memory）、相変化メモリ（Ovonic Unified Memory）、ＲＲＡＭ（Resistance RAM）」等の種々のメモリデバイスを利用可能である。なお、記憶デバイスの種類は、上記のものに限定されず、将来製品化される他の種類の記憶デバイスを利用できるであろう。
【００２４】
コントローラ１は、記憶デバイス部２に搭載された複数の記憶デバイス２Ａを利用して、複数のプライマリボリューム２Ｃと、複数のバックアップボリューム２Ｄと、複数の差分ボリューム２Ｅとをそれぞれ生成することができる。
【００２５】
プライマリボリューム２Ｃとは、ホスト３Ａによって利用されるボリュームであり、ホスト３Ａによって読み書きされる種々のファイルを記憶する。バックアップボリューム２Ｄとは、所定時点におけるプライマリボリューム２Ｃの記憶内容を記憶するボリュームである。
【００２６】
差分ボリューム２Ｅは、プライマリボリューム２Ｃとバックアップボリューム２Ｄとの間に生じた差分データを記憶するためのボリュームである。差分ボリューム２Ｅは、複数設けることができる。差分ボリューム２Ｅの数だけ、データのバックアップ世代を管理することができる。図１には、３個の差分ボリューム２Ｅが示されているので、第１世代、第２世代、第３世代の３つの世代で、プライマリボリューム２Ｃの記憶内容を保存しておくことができる。
【００２７】
各世代毎の、プライマリボリューム２Ｃとバックアップボリューム２Ｄの差分は、差分の生じているブロックを特定するための差分ビットマップ２Ｆによって管理される。差分ビットマップ２Ｆにおいて、黒く塗りつぶされたブロックが、差分の生じているブロックである。プライマリボリューム２Ｃとバックアップボリューム２Ｄとの記憶内容を同期させた後で、プライマリボリューム２Ｃのブロックのデータがホスト３Ａによって更新されると、その更新されたブロックが差分ブロックとなる。従って、以下の説明では、差分の生じているブロックを「差分ブロック」または「更新ブロック」と呼ぶ。
【００２８】
コントローラ１の構成を説明する。コントローラ１は、後述の実施例から明らかとなるように、マイクロプロセッサやメモリ、通信制御部等を備えるコンピュータシステムとして構成される。
【００２９】
コントローラ１の機能に着目すると、コントローラ１は、例えば、コマンド処理部４Ａと、差分管理部４Ｂと、バックアップ部４Ｄと、ファイル特定部５Ａと、ウィルススキャン部６Ａと、ファイル回復部６Ｂと、検索管理部７Ａと、検索用情報記憶部７Ｂとを備えている。
【００３０】
コマンド処理部４Ａは、ホスト３Ａや検索サーバ３Ｂから発行されるリードコマンドやライトコマンドを受領して処理し、その処理結果を応答するものである。
【００３１】
差分管理部４Ｂとバックアップ部４Ｄとは、「バックアップ制御部」に該当する。差分管理部４Ｂは、プライマリボリューム２Ｃへのファイル更新要求（ライトコマンド）によって更新されたブロック４Ｃを検出する。更新ブロック４Ｃのボリューム内での位置は、差分ビットマップ２Ｆに記録される。検出された更新ブロック４Ｃのデータは、差分ボリューム２Ｅに記憶される。
【００３２】
バックアップ部４Ｄは、例えば、予め設定されたバックアップスケジュールに従って、または、ホスト３Ａから発行されるバックアップ要求に応じて、現在管理している差分データ（差分バックアップデータ）を保存する。これにより、確定した世代の差分データが保存される。最古世代の差分データをバックアップボリューム２Ｄに書き込むことにより、バックアップボリューム２Ｄに記憶されている内容を、最古世代の時点まで進めることができる。そして、最古世代の差分ボリューム２Ｅに記憶されている内容を消去することにより、その差分ボリューム２Ｅを、新たな世代の差分データを管理するために使用することができる。
【００３３】
ファイル特定部５Ａは、「更新ファイル検出部」に該当する。ファイル特定部５Ａは、バックアップ制御部によって検出される更新ブロック４Ｃに基づいて、更新されたファイル５Ｂを検出する。後述の実施例から明らかとなるように、ファイルのデータがどのブロックに書き込まれているかを、テーブルによって管理することができる。ファイル特定部５Ａは、ファイルとブロックとの対応関係を管理するテーブルを用いることにより、更新ブロック４Ｃに対応する更新ファイル５Ｂを特定する。
【００３４】
ウィルススキャン部６Ａは、「第１データ処理部」に該当する。コンピュータウィルスに感染しているか否かを検査するためのウィルススキャンは、「第１データ処理」に該当する。ウィルススキャン部６Ａは、更新ファイル５Ｂについてのみ、ウィルススキャンを実行する。
【００３５】
ファイル回復部６Ｂは、「ファイル回復部」に該当する。ウィルススキャン部６Ａによって、コンピュータウィルスに感染しているファイルが検出された場合、ファイル回復部６Ｂは、この感染ファイルの記憶内容をコンピュータウィルスに感染する前の記憶内容に回復させる。後述の実施例から明らかとなるように、ファイル回復部６Ｂは、少なくとも２通りの方法で、感染ファイルを回復させることができる。
【００３６】
検索管理部７Ａは、「第２データ処理部」に該当する。検索管理部７Ａは、更新ファイル５Ｂについてのみ、ファイル検索に使用するための検索用情報を生成する。検索用情報記憶部７Ｂは、「検索用ボリューム」に該当する。検索用情報記憶部７Ｂには、検索管理部７Ａにより生成された検索用情報が記憶される。
【００３７】
検索用情報には、例えば、ファイル名、そのファイルへアクセスするためのファイルパス、ファイルの作成された日時、ファイルの更新された日時、ファイルサイズ、ファイルの種類、ファイルの所有者名、ファイルのサマリー、ファイルのキーワード、ファイルへのアクセス回数等を含めることができる。また、テキスト全文検索や画像検索に備えて、ファイル内の画像やテキストデータも検索用情報として用いることができる。
【００３８】
検索サーバ３Ｂは、検索用情報記憶部７Ｂに記憶されている検索用情報を検索することにより、記憶制御装置で管理されている多数のファイルの中から、検索条件に一致するファイルを検索することができる。
【００３９】
なお、後述の実施例から明らかになるように、ファイル検索を行うための機能（検索エンジン）は、記憶制御装置内に設けることもできる。また、検索用情報記憶部７Ｂは、差分バックアップを行う記憶制御装置とは別の記憶制御装置に設けることもできる。
【００４０】
このように構成される本実施形態によれば、以下の効果を奏する。本実施形態では、複数世代の差分バックアップを管理するバックアップ制御を利用して、更新されたブロック４Ｃに対応する更新ファイル５Ｂを検出し、検出された更新ファイル５Ｂをウィルススキャンする。従って、バックアップボリューム２Ｄの全体についてウィルススキャンをする場合に比べて、短時間で効率的にウィルススキャンを行うことができる。また、記憶制御装置内でウィルススキャンを行うため、ホスト３Ａの負荷が増大するのを防止でき、かつ、ホスト３Ａとコントローラ１とを接続する通信ネットワークのトラフィック増大を防止することができる。
【００４１】
本実施形態では、後述の実施例から明らかなように、差分バックアップの保存が確定された場合に、その差分バックアップに含まれる更新ブロック４Ｃに基づいて更新ファイル５Ｂを検出し、更新ファイル５Ｂについてウィルススキャンを実行する。従って、最新世代の差分データの管理と、更新ファイル５Ｂについてのウィルススキャンとを切り離すことができる。即ち、バックアップ制御に与える影響を少なくして、ウィルススキャンを行うことができる。
【００４２】
本実施形態では、後述の実施例から明らかなように、ファイル回復部６Ｂは、予め設定された２種類の方法のうちいずれか一つの方法を用いることにより、コンピュータウィルスに感染したファイルの記憶内容を回復させることができる。従って、ホスト３Ａの負荷を増大させずに、感染ファイルを回復させることができ、使い勝手が向上する。
【００４３】
本実施形態では、ウィルススキャン部６Ａ及び検索管理部７Ａは、ファイル特定部５Ａによって特定される更新ファイル５Ｂをそれぞれ利用して、それぞれ異なるデータ処理を実行する。従って、共通の更新ファイル５Ｂを利用して、異なるデータ処理６Ａ，７Ａをそれぞれ実行することができ、記憶制御装置のコンピュータ資源を効率的に使用することができる。
【００４４】
本実施形態では、更新ファイル５Ｂについてのみ検索用情報を生成して保存する。従って、記憶制御装置内の全ボリューム内の全ファイルから検索用情報を収集する場合に比べて、効率的に検索用情報を取得できる。以下、本実施形態を詳細に説明する。
【実施例１】
【００４５】
図２は、本実施例によるストレージシステムの全体概要を示す説明図である。図１との対応関係について説明すると、図２中のコントローラ１００は、図１中のコントローラ１に、図２中の記憶デバイス部２００は、図１中の記憶デバイス部２に、図２中のサーバ２０及びクライアントＰＣ（パーソナルコンピュータ）３０は、図１中のホスト３Ａに、図２中の記憶デバイス２１０は、図１中の記憶デバイス２Ａに、それぞれ対応する。
【００４６】
さらに、図２中のコマンド処理部１０１は、図１中のコマンド処理部４Ａに対応する場合がある。しかし、図１で述べたリードコマンドやライトコマンドは、後述するチャネルアダプタ１１０やディスクアダプタ１２０の協働作業によって処理される。図２に示すコマンド処理部１０１は、バックアップ制御部１０２にバックアップの実行を指示するものである。
【００４７】
さらに、図２中のバックアップ制御部１０２は、図１中の差分管理部４Ｂ及びバックアップ部４Ｄに、図２中のウィルススキャン部１０３は、図１中のウィルススキャン部６Ａに対応する。
【００４８】
図２中のバックアップ制御部１０２は、図１中のファイル回復部６Ｂにも対応する。即ち、本実施例では、バックアップ制御部１０２によって、コンピュータウィルスに感染したファイルを、コンピュータウィルスに感染していない状態に回復させる。さらに、バックアップ制御部１０２は、図１中のファイル特定部５Ａにも対応する。即ち、本実施例では、バックアップ制御部１０２によって、更新ブロックに対応する更新ファイルを特定するようになっている。
【００４９】
記憶制御装置１０は、例えば、多数のサーバ２０及び多数のクライアントＰＣ３０に接続される。サーバ２０としては、例えば、設計データやプログラムソースコード等を利用する設計用サーバや開発用サーバ、あるいは、経理用サーバ、電子メール処理用サーバ等を挙げることができる。各サーバ２０は、例えば、ＦＣ＿ＳＡＮ等の通信ネットワークＣＮ１を介して、記憶制御装置１０に接続される。
【００５０】
クライアントＰＣ３０は、例えば、各社員により使用されるパーソナルコンピュータである。クライアントＰＣ３０は、例えば、ＬＡＮ（Local Area Network）やインターネット等のＩＰ（Internet
Protocol）通信ネットワークＣＮ２を介して、記憶制御装置１０に接続される。
【００５１】
以下の説明では、便宜上、記憶制御装置１０にコマンドを発行して利用するコンピュータ装置を、ホストと総称する場合がある。
【００５２】
クライアントＰＣ３０は、いわゆるディスクレスコンピュータとして構成することができる。ディスクレスコンピュータとは、補助記憶装置を備えておらず、通信ネットワークを用いて、記憶制御装置１０内のボリュームにアクセスするコンピュータである。図２では省略しているが、クライアントＰＣ３０と記憶制御装置１０との間に、いわゆるブレードサーバを介在させる構成でもよい。
【００５３】
ウィルスパターン配信サーバ４０は、コンピュータウィルスを検出するためのウィルスパターンファイルをウィルススキャン部１０３に配信するためのサーバである。
【００５４】
記憶制御装置１０の構成を説明する。記憶制御装置１０は、例えば、コントローラ１００と、チャネルアダプタ１１０と、ディスクアダプタ１２０と、メモリ１３０と、記憶デバイス部２００とを備えて構成することができる。
【００５５】
コントローラ１００は、記憶制御装置１０の動作を制御するためのコンピュータ装置である。コントローラ１００は、各チャネルアダプタ１１０と各ディスクアダプタ１２０と各メモリ１３０とにそれぞれ接続されている。コントローラ１００は、例えば、コマンド処理部１０１と、バックアップ制御部１０２と、ウィルススキャン部１０３とを備えて構成される。
【００５６】
コマンド処理部１０１は、サーバ２０等から発行されたバックアップ要求に基づいて、バックアップ制御部１０２にバックアップ実行を指示する。さらに、コマンド処理部１０１は、記憶制御装置１０内の各種状態を収集して管理することもできる。収集された情報は、外部の管理用サーバに送信できる。なお、コマンド処理部１０１によってリードコマンドやライトコマンド等の一般的な各種コマンドを処理する構成としてもよい。
【００５７】
バックアップ制御部１０２は、差分バックアップのスケジュール及びウィルススキャンのスケジュールを管理したり、ファイルとブロックとの対応関係を管理したり、コンピュータウィルスに感染したファイルを回復させたりする。
【００５８】
ウィルススキャン部１０３は、更新ファイルについてウィルススキャンを実行するものである。ウィルススキャン部１０３は、配信サーバ４０から最新のウィルスパターンファイルを取得し、更新されたファイルのみを最新のウィルスパターンファイルで検査し、その検査結果を保存させる。
【００５９】
チャネルアダプタ（以下、ＣＨＡ）１１０は、サーバ２０、クライアントＰＣ３０及びウィルスパターン配信サーバ４０と通信を行う第１通信制御回路である。ディスクアダプタ（以下、ＤＫＡ）１２０は、記憶デバイス部２００内の各記憶デバイス２１０と通信を行う第２通信制御回路である。
【００６０】
各ＣＨＡ１１０は、通信プロトコルや用途毎に用意することができる。例えば、図２中の左側に示すＣＨＡ１１０（SAN）は、ＦＣプロトコルに基づいてサーバ２０とデータ通信するためのものである。真ん中に示すＣＨＡ１１０（iSCSI）は、ｉＳＣＳＩ（internet Small Computer System
Interface）に基づいて、各クライアントＰＣ３０とデータ通信するものである。右側に示すＣＨＡ１１０（NAS）は、各クライアントＰＣ３０にＮＡＳ（Network Attached Storage）サービスを提供するものである。
【００６１】
なお、図２に示す接続構成は、一つの例であって本発明はこれに限定されない。例えば、サーバ２０がＩＰネットワークＣＮ２を介してＮＡＳサービスを利用する構成でもよいし、クライアントＰＣがＦＣ＿ＳＡＮを介して、記憶制御装置１０にアクセスする構成でもよい。
【００６２】
メモリ１３０は、ホスト（２０，３０，４０）から受信したデータや、記憶デバイス２１０から読み出されたデータを記憶する。図中ではメモリ１３０を１個だけ示すが、実際には複数のメモリ１３０を設けることができる。メモリ１３０は、後述する管理用の情報の少なくとも一部を記憶することもできる。メモリ１３０は、書換可能な不揮発性または揮発性のメモリデバイスから構成される。
【００６３】
ここで、ＣＨＡ１１０とＤＫＡ１２０とメモリ１３０とによるコマンド処理の例を簡単に説明する。例えば、ホストがボリューム番号等を指定してライトコマンドを発行すると、ＣＨＡ１１０は、そのライトコマンドを受信し、ライトデータを受信可能か否かを判定する。
【００６４】
ライトデータをメモリ１３０が受け入れ可能な場合、ＣＨＡ１１０は、ホストからライトデータを受信し、ライトデータ及びライトコマンドをメモリ１３０に記憶させる。ＣＨＡ１１０は、ライトデータをメモリ１３０に記憶させた時点で、ライトコマンドの処理が完了した旨をホストに通知することができる。あるいは、ＣＨＡ１１０は、後述のデステージ処理が完了したことを確認してから、ライトコマンドの処理完了をホストに通知してもよい。
【００６５】
ＤＫＡ１２０は、随時メモリ１３０を参照しており、未処理のライトコマンドを発見すると、メモリ１３０に記憶されたライトデータを読み出して、論理アドレスを物理アドレスに変換し、所定の記憶デバイス２１０に書き込む。所定の記憶デバイス２１０とは、ライトコマンドで指定されたボリュームに対応する記憶デバイスである。ライトデータを記憶デバイス２１０に書き込む処理は、デステージ処理と呼ばれる。ＤＫＡ１２０は、ライトコマンドの処理を完了した旨をメモリ１３０に記憶させる。これにより、ＣＨＡ１１０は、ライトコマンドの処理が完了したことを確認する。
【００６６】
リードコマンドがホストから発行された場合、ＣＨＡ１１０は、そのリードコマンドをメモリ１３０に記憶させる。ＤＫＡ１２０は、メモリ１３０上に未処理のリードコマンドを発見すると、指定されたボリュームに対応する記憶デバイス２１０からデータを読出し、メモリ１３０に記憶させる。ＤＫＡ１２０は、リードコマンドの処理が完了した旨もメモリ１３０に記憶させる。ＣＨＡ１１０は、メモリ１３０からデータを読出し、リードコマンドを発行したホストに送信する。
【００６７】
記憶デバイス部２００の構成を説明する。記憶デバイス部２００は、多数の記憶デバイス２１０を備えている。記憶デバイス２１０は、図１中の記憶デバイス２Ａと同様に、例えば、ハードディスクデバイスやフラッシュメモリデバイス等として構成される。ハードディスクデバイスとフラッシュメモリデバイスのように、記憶原理の異なる複数種類の記憶デバイスが混在する構成でもよい。
【００６８】
記憶デバイス２１０の有する物理的記憶領域を利用して、論理デバイスとしてのボリュームを形成することができる。図２には、ボリュームとして、プライマリボリューム２２０，バックアップボリューム２３０，差分ボリューム２４０，管理情報ボリューム２５０及び中間ボリューム２６０が示されている。
【００６９】
プライマリボリューム２２０は、ホストによって利用されるボリュームであり、種々のデータを記憶する。バックアップボリューム２３０は、所定時点におけるプライマリボリューム２２０の記憶内容を記憶しているボリュームである。差分ボリューム２４０は、各世代毎の差分データを記憶するボリュームである。
【００７０】
バックアップ制御部１０２は、プライマリボリューム２２０の記憶内容とバックアップボリューム２３０の記憶内容との差分データを検出し、この差分データを差分ボリューム２４０に記憶させる。また、差分の発生したブロックの位置は、差分ビットマップに記録される。
【００７１】
ホストからバックアップ実行が要求されると、バックアップ制御部１０２は、最新の差分データを記憶していた差分ボリューム２４０について、その差分管理を停止し、その差分ボリューム２４０に記憶されているバックアップデータの保存を確定させる。そして、バックアップ制御部１０２は、別の新たな差分ボリューム２４０を用いて、次の世代の差分データを管理し始める。１つの差分ボリューム２４０は、１つの世代の差分バックアップデータを記憶する。
【００７２】
バックアップボリューム２３０の記憶内容と各世代の差分バックアップデータと各世代の差分ビットマップとを用いることによって、指定された世代の記憶内容を復元することができる。中間ボリューム２６０内に、指定された世代（つまり、指定された時点）の記憶内容が復元される。ユーザが望むのであれば、中間ボリューム２６０内に復元された、指定世代の記憶内容を、プライマリボリューム２２０にコピーすることもできる。
【００７３】
差分ボリューム２４０の数を増やせば増やすほど、復元可能な時点（世代）の数を増加させることができる。但し、差分ボリューム２４０の数を増やすと、その分だけ記憶デバイス部２００の有する記憶容量を消費する。
【００７４】
管理情報ボリューム２５０は、記憶制御装置１０が使用する各種の管理情報を記憶するためのボリュームである。管理情報としては、それぞれ後述するように、バックアップ設定情報テーブル３００、バックアップ実行履歴管理テーブル３１０、ビットマップ管理テーブル３２０、差分ビットマップ３３０、ファイル管理情報テーブル３４０等を挙げることができる。
【００７５】
管理情報ボリューム２５０に記憶されている一部の管理情報を、メモリ１３０にコピーして使用し、その管理情報をメモリ１３０上で更新し、更新された管理情報を管理情報ボリューム２５０に書き戻す。
【００７６】
管理情報ボリューム２５０に記憶される各種の管理情報について説明する。図３は、バックアップ設定情報テーブル３００及びバックアップ実行履歴管理テーブル３１０をそれぞれ示す。
【００７７】
バックアップ設定情報テーブル３００は、差分バックアップの設定に関する情報を管理する。バックアップ設定情報テーブル３００は、例えば、プライマリボリューム番号３０１と、バックアップボリューム番号３０２と、差分ボリューム番号３０３と、取得世代数３０４と、バックアップスケジュール３０５とを対応付けて管理する。
【００７８】
プライマリボリューム番号３０１は、バックアップ元となるプライマリボリューム２２０を特定するための情報である。バックアップボリューム番号は、番号３０１で特定されるプライマリボリューム２２０の記憶内容がフルバックアップされる、バックアップボリューム２３０を特定するための情報である。差分ボリューム番号３０３は、プライマリボリューム２２０とバックアップボリューム２３０との間に生じる差分データを記憶する差分ボリューム２４０を特定するための情報である。取得世代数３０４は、差分バックアップを取得する世代数を示す。バックアップスケジュール３０５は、差分バックアップを取得する予定日時を示す情報である。
【００７９】
バックアップ実行履歴管理テーブル３１０は、差分バックアップの実行結果の履歴を管理するテーブルである。バックアップ実行履歴管理テーブル３１０は、例えば、プライマリボリューム番号３１１と、バックアップボリューム番号３１２と、差分ボリューム番号３１３と、差分番号３１４と、差分バックアップ完了時刻３１５と、差分ビットマップ管理番号３１６とを対応付けて管理する。
【００８０】
プライマリボリューム番号３１１，バックアップボリューム番号３１２，差分ボリューム番号３１３は、前記同様に、プライマリボリューム２２０の番号，バックアップボリューム２３０の番号，差分ボリューム２４０の番号をそれぞれ特定する情報である。
【００８１】
差分番号３１４とは、バックアップボリューム２３０に対応付けられている複数の差分ボリューム２４０の使用順序を示す。例えば、３個の差分ボリューム２４０がバックアップボリューム２３０に対応付けられている場合、１番目の差分バックアップに使用された差分ボリューム２４０の差分番号には「１」が、２番目の差分バックアップに使用された差分ボリューム２４０の差分番号には「２」が、３番目の差分バックアップに使用される差分ボリューム２４０の差分番号には「３」が、それぞれ設定される。
【００８２】
３番目の差分ボリューム２４０（＃３）は、最新世代の差分データを管理しており、今現在発生している差分データが次々に記憶される。１番目の差分ボリューム２４０（＃１）は、最古世代の差分データを管理している。
【００８３】
後述のフローチャートでも説明するが、バックアップの実行が要求されると、最古世代の差分ボリューム２４０（＃１）の記憶内容（差分バックアップデータ）が、バックアップボリューム２３０に書き込まれる。これにより、バックアップボリューム２３０の記憶内容は、最古世代の差分バックアップが取得された時点まで進む。
【００８４】
なお、以下の説明では、バックアップボリューム２３０に差分バックアップデータを書き込んで、バックアップボリューム２３０の記憶内容を更新させることを、例えば、「差分ボリュームの記憶内容をバックアップボリュームに反映させる。」等のように表現する場合がある。
【００８５】
最古世代の差分ボリューム２４０（＃１）の記憶内容をバックアップボリューム２３０に反映させた後、最新世代の差分データを管理している差分ボリューム２４０（＃３）について、差分データの書込みが中止される。これにより、差分ボリューム２４０（＃３）の記憶内容（差分バックアップデータ）は、バックアップ実行が要求された時刻に固定され、その記憶内容の保存が確定する。
【００８６】
最古世代の差分ボリューム２４０（＃１）の記憶内容は、不要なので消去され、これから始める次世代の差分データの管理に使用される。差分番号「２」が設定されていた差分ボリューム２４０の差分番号は「１」に、差分番号「３」が設定されていた差分ボリューム２４０の差分番号は「２」に、差分番号「１」が設定されていた差分ボリューム２４０の差分番号は「３」に、それぞれ変更される。
【００８７】
差分バックアップ完了時刻３１５は、差分バックアップの完了した日時を示す。差分ビットマップ管理番号３１６は、差分バックアップに使用された差分ビットマップ（図中、ＢＭＰ）３３０を特定するための情報である。そこで、次に、差分ビットマップ（以下、ビットマップと略する場合がある。）について説明する。
【００８８】
図４には、ビットマップ管理テーブル３２０と、差分ビットマップ３３０とが示されている。ビットマップ管理テーブル３２０は、各差分バックアップに使用された差分ビットマップ３３０を管理するテーブルである。ビットマップ管理テーブル３２０は、例えば、プライマリボリューム番号３２１と、バックアップボリューム番号３２２と、差分ボリューム番号３２３と、差分番号３２４と、差分バックアップ完了時刻３２５と、差分ビットマップ管理番号３２６と、を対応付けて管理する。即ち、本実施例では、ビットマップ管理テーブル３２０は、バックアップ実行履歴管理テーブル３１０と同様に構成される。
【００８９】
プライマリボリューム番号３２１，バックアップボリューム番号３２２，差分ボリューム番号３２３，差分番号３２４，差分バックアップ完了時刻３２５，差分ビットマップ管理番号３２６は、それぞれ図３に示す３１１，３１２，３１３，３１４，３１５，３１６に対応するので、説明を省略する。
【００９０】
差分ビットマップ３３０は、プライマリボリューム２２０を構成する各ブロックのうち、いずれのブロックが更新されたかを管理するための情報である。更新されたブロックには「１」が設定され、未更新のブロックには「０」が設定される。説明の便宜上、図４では、ボリュームのサイズが、横に４ブロック、縦に７ブロックであるかのように示しているが、実際にはより多くのブロックをボリュームは備えている。
【００９１】
図５は、ファイル管理情報テーブル３４０を示す説明図である。ファイル管理情報テーブル３４０は、ファイルの管理情報を管理するテーブルである。ファイル管理情報テーブル３４０は、例えば、バックアップボリューム番号３４１と、ファイル名３４２と、ブロック開始位置３４３と、ブロック終了位置３４４と、作成日時３４５と、更新日時３４６と、作成者３４７とを対応付けて管理する。
【００９２】
バックアップボリューム番号３４１は、ファイルの記憶先のバックアップボリューム２３０を特定する情報である。ファイル名３４２は、記憶されているファイルを特定する情報である。便宜上、図５では簡略化して示しているが、ファイル名３４２に、ファイルにアクセスするためのファイルパスを記憶させてもよい。
【００９３】
ブロック開始位置３４３は、ファイルの記憶されている複数のブロックのうち、先頭のブロックを特定するための情報である。ファイル終了位置３４４は、ファイルの記憶されている各ブロックのうち、最後のブロックを特定するための情報である。
【００９４】
作成日時３４５は、ファイルの作成された日時を示す。更新日時３４６は、ファイルが最後に更新された日時を示す。作成者３４７は、ファイルを作成したユーザや部署を特定する情報である。なお、図５に示す属性は一例であって、図５に示す以外の属性を、ファイル管理情報テーブル３４０で管理することもできる。
【００９５】
ファイル管理情報テーブル３４０を用いることにより、ブロックとファイルとの対応関係を把握することができる。即ち、ホストが、プライマリボリューム２２０内の、あるファイルを更新する場合、そのファイルのデータが記憶されている各ブロックのうち少なくとも一部のブロックが更新される。どのブロックが更新されたかは、差分ビットマップ３３０等で管理される。従って、ファイル管理情報テーブル３４０を用いることにより、どのブロックが更新されたのかという情報に基づいて、どのファイルが更新されたのかを特定できる。
【００９６】
図６は、更新ファイルの特定結果を管理するテーブル３５０である。このテーブル３５０は、更新ブロックに基づいて特定された、更新ファイルに関する情報を管理する。上述のように、ビットマップ管理テーブル３２０と差分ビットマップ３３０及びファイル管理情報テーブル３４０とに基づいて、更新ブロックに対応するファイルを特定することができ、その特定結果がテーブル３５０に記憶される。
【００９７】
テーブル３５０は、例えば、バックアップボリューム番号３５１と、差分ボリューム番号３５２と、差分番号３５３と、更新ブロック番号３５４と、更新ファイル名３５５とを対応付けて管理する。
【００９８】
バックアップボリューム番号３５１，差分ボリューム番号３５２，差分番号３５３は、それぞれ上述の通りであるため、説明を省略する。更新ブロック番号３５４は、更新されたブロックを特定するための情報である。更新ファイル名３５５は、更新されたブロックに対応するファイルを特定するための情報である。
【００９９】
図７は、ウィルスパターン管理テーブル３６０を示す。ウィルスパターン管理テーブル３６０は、ウィルスパターンファイルを管理するためのテーブルである。ウィルスパターン管理テーブル３６０は、例えば、ウィルスパターンファイル番号３６１と、配信日時３６２と、保証情報の有無３６３と、保証時刻３６４とを対応付けて管理する。
【０１００】
ウィルスパターンファイル番号３６１は、各ウィルスパターンファイルを識別するための情報である。配信日時３６２は、ウィルスパターンファイルが配信サーバ４０から配信された日時である。保証情報の有無３６３は、ウィルスパターンファイルに保証情報が設定されているか否かを示す。保証時刻３６４は、ウィルスパターンファイルに保証情報が設定されている場合、ウィルスに感染していないことが保証されている期間の基準時刻を示す。
【０１０１】
保証情報とは、そのウィルスパターンファイルを用いてウィルススキャンを行った場合に、いつの時点まで（保証時刻）コンピュータウィルスに感染していないことを、ユーザに保証するための情報である。保証情報は、ウィルスパターンファイルを配信する事業者によって、ウィルスパターンファイルに設定される。
【０１０２】
ウィルスパターンファイルは、それまでに知られている種々のコンピュータウィルスに関するウィルスパターンと、最近発見された新種のコンピュータウィルスに関するウィルスパターンとを含んでいる。例えば、２００７年７月１日に配信されたウィルスパターンファイルが、２００７年７月１日までに全世界で検出された既知の全てのコンピュータウィルスをカバーしているとする。この場合、そのウィルスパターンファイルを用いて既にウィルススキャンが実行されており、かつ、そのウィルススキャン後に、更新されていないファイルは、コンピュータウィルスに感染していないことは明らかである。逆に、あるウィルスパターンファイルによって既にウィルススキャンが行われたファイルであっても、そのウィルスパターンファイルの作成後に更新された場合は、そのウィルスパターンファイルの作成後に発生した新種のコンピュータウィルスに感染する可能性がある。
【０１０３】
このように、保証情報は、どの時点までならコンピュータウィルスに感染していないかを保証するための情報である。
【０１０４】
ウィルススキャン設定管理テーブル３７０は、ウィルススキャンの設定に関する情報を管理する。ウィルススキャン設定管理テーブル３７０は、例えば、検査対象の差分ボリューム番号３７１と、差分番号３７２と、スキャン予定時刻３７３と、ウィルスパターンファイル取得時刻３７４と、処理オプション３７５，３７６とを対応付けて管理する。
【０１０５】
検査対象の差分ボリューム番号３７１は、ウィルススキャンの対象となる差分ボリューム２４０を特定する情報である。差分番号３７２は、上述の通り、その差分ボリューム２４０に設定された差分番号である。スキャン予定時刻３７３は、ウィルススキャンを実施する予定日時を示す。ウィルスパターンファイル取得時刻３７４は、ウィルススキャンに使用されるウィルスパターンファイルを配信サーバ４０から取得した日時を示す。
【０１０６】
第１処理オプション３７５は、コンピュータウィルスに感染したファイルを復元させる方法を選択するための情報である。ファイルの復元方法には、自動復元と、手動復元とがある。第２処理オプション３７６は、コンピュータウィルスに感染したファイル（以下、感染ファイルとも呼ぶ）を削除する方法を選択するための情報である。感染ファイルの駆除方法には、自動駆除（自動でファイル削除）と、手動駆除（手動でファイル削除）とがある。
【０１０７】
図８は、ウィルススキャン実行結果テーブル３８０を示す。ウィルススキャン実行結果テーブル３８０は、ウィルススキャンを実行した結果を管理するテーブルである。ウィルススキャン実行結果テーブル３８０は、例えば、検査対象の差分ボリューム番号３８１と、差分番号３８２と、スキャン時刻３８３と、ウィルスパターンファイル番号３８４と、感染の有無３８５と、感染ファイル名３８６とを対応付けて管理する。
【０１０８】
検査対象の差分ボリューム番号３８１，差分番号３８２は、上述の通りなので、その説明を省略する。スキャン時刻３８３は、ウィルススキャンが実施された日時を示す。ウィルスパターンファイル番号３８４は、ウィルススキャンに使用されたウィルスパターンファイルを特定する情報である。感染の有無３８５は、コンピュータウィルスに感染しているか否かを示す情報である。感染ファイル名３８６は、コンピュータウィルスに感染しているファイルを特定する情報である。
【０１０９】
図９は、感染ファイルに対応するブロックの検出結果を管理するテーブル３９０を示す説明図である。このテーブル３９０は、例えば、バックアップボリューム番号４０１と、差分ボリューム番号４０２と、差分番号４０３と、感染ファイル名４０４と、ブロック位置４０５と、処理オプションの実行結果４０６，４０７とを対応付けて管理する。
【０１１０】
バックアップボリューム番号４０１，差分ボリューム番号４０２，差分番号４０３、感染ファイル名４０４は、上述の通りであるため、説明を省略する。ブロック位置４０６は、コンピュータウィルスに感染したファイルのデータが記憶されているブロックを特定する情報である。
【０１１１】
第１処理オプションの実行結果４０６は、第１処理オプションであるファイルの復元（ファイルの回復）の実行結果を示す。感染ファイルが自動的に復元された場合、例えば、その復元日時と復元されたファイルの状態が記録される。ファイルが手動で復元される場合、手動で復元される旨が記録される。
【０１１２】
第２処理オプションの実行結果４０７は、第２処理オプションであるファイルの駆除（ファイルの削除）の実行結果を示す。感染ファイルが自動的に駆除された場合、例えば、その駆除日時と、駆除の結果とが記録される。感染ファイルが手動で駆除される場合、その旨が記録される。
【０１１３】
図１０〜図１９に基づいて、本実施例による記憶制御装置の動作を説明する。図１０は、処理全体の概要を示すフローチャートである。図１０に示される各ステップの詳細は、別図と共に後述する。以下、主にコントローラ１００を主語として説明する。なお、以下に説明する各フローチャートは、本発明の理解及び実施が可能な程度で、各処理の概要を模式的に示しており、実際のコンピュータプログラムとは異なる場合がある。いわゆる当業者であれば、図示されたステップの順番を入れ替えたり、本質的ではない新たなステップを追加等することができるであろう。
【０１１４】
コントローラ１００は、バックアップ設定情報テーブル３００及びウィルススキャン設定管理テーブル３７０をそれぞれ管理情報ボリューム２５０から読込み（Ｓ１０）、配信サーバ４０から最新のウィルスパターンファイルを取得する（Ｓ１１）。なお、予め最新のウィルスパターンファイルを配信サーバ４０から取得し、取得した最新ウィルスパターンファイルを記憶デバイス部２００に記憶させておく構成でもよい。コントローラ１００は、最新ウィルスパターンファイルを取得すると、管理情報ボリューム２５０内のウィルスパターン管理テーブル３６０を更新する（Ｓ１２）。以上の各ステップの詳細については、図１１で後述する。
【０１１５】
次に、コントローラ１００は、バックアップスケジュールに基づいて、バックアップを実行する（Ｓ１３）。バックアップ処理の詳細は、図１２で後述する。
【０１１６】
バックアップ処理が完了すると、コントローラ１００は、ビットマップ管理テーブル３２０と、バックアップ実行履歴管理テーブル３１０と、ファイル管理情報テーブル３４０とをそれぞれ更新する（Ｓ１４）。管理テーブル３２０，３１０，３４０の更新については、図１３で後述する。
【０１１７】
コントローラ１００は、更新されたブロックに基づいて、更新されたファイルを特定する（Ｓ１５）。特定結果は、テーブル３５０に記録される。更新ファイルを特定する処理については、図１４で後述する。
【０１１８】
コントローラ１００は、更新ファイルについて、最新のウィルスパターンファイルを用いてウィルススキャンを実施する（Ｓ１６）。ウィルススキャンについては、図１５で後述する。
【０１１９】
コンピュータウィルスに感染したファイルが検出された場合、コントローラ１００は、感染ファイルの復旧（感染ファイルの回復）を行う（Ｓ１７）。感染ファイルの復旧については、図１６，図１７，図１８で後述する。
【０１２０】
最後に、コントローラ１００は、ウィルススキャンの実行結果を、予め登録されたユーザに通知する（Ｓ１８）。ユーザとは、例えば、記憶制御装置１０の管理者である。この通報処理については、図１９で後述する。
【０１２１】
図１１は、図１０中のＳ１０〜Ｓ１２の詳細を示すフローチャートである。コントローラ１００は、バックアップ設定情報テーブル３００に設定されているバックアップスケジュールを読み込む（Ｓ２０）。コントローラ１００は、ウィルススキャン設定管理テーブル３７０から処理オプションに設定されている値（自動または手動）を読込み（Ｓ２１）、さらに、ウィルスパターン管理テーブル３６０からウィルススキャンが実行済の最新ウィルスパターンファイルの番号を取得する（Ｓ２２）。
【０１２２】
コントローラ１００は、配信サーバ４０にアクセスし、既に使用された最新ウィルスパターンファイルよりも新しいウィルスパターンファイルを、配信サーバ４０からダウンロードする（Ｓ２３）。コントローラ１００は、配信サーバ４０から取得した最新のウィルスパターンファイルに関する情報を、ウィルスパターン管理テーブル３６０に書き込んで、テーブル３６０を更新する（Ｓ２４）。
【０１２３】
図１２は、図１０中のＳ１３の詳細を示すフローチャートである。コントローラ１００は、バックアップ実行履歴管理テーブル３１０から、現在差分データを管理している差分ボリューム２４０の番号を取得する（Ｓ３０）。コントローラ１００は、バックアップスケジュールに基づいてバックアップ実行を要求し（Ｓ３１）、最古世代の差分バックアップデータとフルバックアップデータとを結合させる（Ｓ３２）。つまり、Ｓ３２では、最古世代の差分ボリューム２４０に記憶されている差分バックアップデータを、バックアップボリューム２３０に書き込むことにより、バックアップボリューム２３０の記憶内容を、最古世代の日時まで進める。例えば、３時間毎に差分バックアップが取得される場合、Ｓ３２によって、バックアップボリューム２３０の記憶内容は３時間だけ進む。
【０１２４】
コントローラ１００は、現在差分データを管理している差分ボリューム２４０について、差分データの同期処理を停止させ、その差分ボリューム２４０に記憶された差分バックアップデータの保存を確定させる（Ｓ３３）。
【０１２５】
コントローラ１００は、Ｓ３２でバックアップボリューム２３０に書き込まれた、最古世代の差分バックアップデータを記憶する差分ボリューム２４０について、その差分ボリューム２４０の記憶内容を全て消去する（Ｓ３４）。コントローラ１００は、記憶内容の消去された差分ボリューム２４０を再利用することにより、新たな世代の差分管理を開始する（Ｓ３５）。
【０１２６】
コントローラ１００は、バックアップを行うべきボリューム（図中、ＬＵ）が未だ存在するか否かを判定する（Ｓ３６）。全てのバックアップ対象についてバックアップ処理を完了するまで、Ｓ３０〜Ｓ３５のステップが繰り返し実行される。
【０１２７】
図１３は、図１０中のＳ１４の詳細を示すフローチャートである。コントローラ１００は、バックアップ実行履歴管理テーブル３１０にアクセスし（Ｓ４０）、本日バックアップされたボリュームに関する情報を取得する（Ｓ４１）。
【０１２８】
コントローラ１００は、バックアップによって更新されたブロックに関するビットマップ３３０を読込み（Ｓ４２）、ビットマップ管理テーブル３２０及びバックアップ実行履歴管理テーブル３１０をそれぞれ更新させる（Ｓ４３）。即ち、コントローラ１００は、本日完了したバックアップに関する情報を、各テーブル３２０，３１０に記録する。
【０１２９】
コントローラ１００は、本日完了したバックアップにおいて使用されたビットマップ３３０を、管理情報ボリューム２５０に保存する（Ｓ４４）。つまり、つい先ほどまでカレントの差分ボリュームであり、バックアップ実行によって保存が確定された差分バックアップデータに関するビットマップを、管理情報ボリューム２５０に記憶させる。即ち、コントローラ１００は、最新世代の差分ボリュームに対応付けられているビットマップをボリューム２５０に保存させる。
【０１３０】
コントローラ１００は、最新世代の差分バックアップデータにアクセスし（Ｓ４５）、さらに、最新世代の差分バックアップデータに関するファイル管理情報を読込み（Ｓ４６）、これにより、管理情報ボリューム２５０内のファイル管理情報テーブル３４０を更新させる（Ｓ４７）。コントローラ１００は、本日バックアップされた全ボリュームについて処理が完了するまで、Ｓ４２〜Ｓ４７を繰り返し実行する（Ｓ４８）。
【０１３１】
つまり、図１３に示す処理によって、コントローラ１００は、最新世代の差分バックアップに関する情報を、更新の必要な各テーブルに記憶させる。
【０１３２】
図１４は、図１０中のＳ１５の詳細を示すフローチャートである。コントローラ１００は、バックアップ実行履歴管理テーブル３１０にアクセスし（Ｓ５０）、本日バックアップされたボリュームに関する情報を抽出する（Ｓ５１）。
【０１３３】
コントローラ１００は、管理情報ボリューム２５０に保存されている最新世代のビットマップ３３０をメモリ１３０に読込み（Ｓ５２）、この最新世代のビットマップ３３０から、更新されたブロックの番号を取得する（Ｓ５３）。
【０１３４】
コントローラ１００は、ファイル管理情報テーブル３４０にアクセスし（Ｓ５４）、更新されたブロックに対応するファイルを特定する（Ｓ５５）。コントローラ１００は、更新ブロックに対応する更新ファイルを特定できたか否かを判定する（Ｓ５６）。更新ファイルを特定できない場合（S56:NO）、そのファイルが破損している可能性がある。そこで、コントローラ１００は、既知の手法によって破損ファイルを修復し（Ｓ５７）、Ｓ５５に戻る。例えば、既知の手法としては、ＲＡＩＤ５等で知られているようなパリティ等を用いた修復方法を挙げることができる。
【０１３５】
更新ファイルを特定できた場合（S56:YES）、コントローラ１００は、特定された更新ファイルに関する情報を、図６に示すテーブル３５０に記憶させる（Ｓ５８）。コントローラ１００は、本日バックアップされた全ボリュームについて処理が完了するまで、Ｓ５２〜Ｓ５８を繰り返し実行する（Ｓ５９）。
【０１３６】
図１５は、図１０中のＳ１６の詳細を示すフローチャートである。コントローラ１００は、バックアップ実行履歴管理テーブル３１０にアクセスし（Ｓ７０）、本日バックアップされたボリュームに関する情報を取得する（Ｓ７１）。
【０１３７】
コントローラ１００は、更新ブロックに対応する更新ファイルの特定結果を示すテーブル３５０を読込み（Ｓ７２）、このテーブル３５０の記憶内容に基づいて、最新世代のバックアップデータから更新ファイルのデータをメモリ１３０に読み込む（Ｓ７３）。
【０１３８】
コントローラ１００は、メモリ１３０に読み込まれた更新ファイルについて、最新のウィルスパターンファイルを用いてウィルススキャンを実行する（Ｓ７４）。コントローラ１００は、更新ファイルがコンピュータウィルスに感染しているか否かを、判定する（Ｓ７５）。
【０１３９】
更新ファイルがコンピュータウィルスに感染している場合（S75:NO）、コントローラ１００は、後述する感染ファイルの復旧処理を行う（Ｓ７６）。Ｓ７６は、図１０中のＳ１７に該当する。
【０１４０】
更新ファイルがコンピュータウィルスに感染していない場合（S75:YES）、コントローラ１００は、本日バックアップされた全ボリュームについて処理が完了したか否かを判定する（Ｓ７７）。未処理のボリュームがある場合（S77:NO）、Ｓ７２に戻る。
【０１４１】
バックアップされた全ボリュームに関して処理を完了した場合（S77:YES）、コントローラ１００は、ウィルススキャン実行結果テーブル３８０を更新させ（Ｓ７８）、さらに、感染ファイルの修復結果テーブル４００を更新させる（Ｓ７９）。
【０１４２】
図１６〜図１８は、図１０中のＳ１７の詳細を示すフローチャートである。コントローラ１００は、以下に述べる複数の方法のいずれかで、コンピュータウィルスに感染したファイルを復元させる。第１の方法では、ウィルスパターンファイルに設定される保証情報を利用して、前回のウィルススキャン完了時点までデータを戻すことにより、感染ファイルを回復させる（Ｓ９２〜Ｓ１００）。第２の方法では、保証情報を利用できない場合に、新しい方の世代から古い方の世代に順番に遡ってウィルス感染前のデータを検出し、ウィルス感染前のデータを用いて感染ファイルを回復させる（Ｓ１１０〜Ｓ１２０）。
【０１４３】
図１６の説明に戻る。コントローラ１００は、ウィルススキャン実行結果テーブル３８０から感染ファイルに関する情報を抽出する（Ｓ９０）。
【０１４４】
コントローラ１００は、ウィルスパターン管理テーブル３６０にアクセスし（Ｓ９１）、ウィルス感染を検出したウィルスパターンファイルに保証情報が設定されているか否かを判定する（Ｓ９２）。保証情報を有さないウィルスパターンファイルの場合（S92:NO）、全世代の差分バックアップデータを用いた復元が行われる。この全世代の差分バックアップデータを利用する復元方法については後述する。
【０１４５】
保証情報が設定されている場合（S92:YES）、コントローラ１００は、ウィルスに感染していないことを保証する基準日時を示す保証時期を読込み（Ｓ９３）、ウィルス非感染が保証されている期間に該当する差分バックアップデータが存在するか否かを判定する（Ｓ９４）。該当する差分バックアップデータが無い場合（S94:NO）、全世代の差分バックアップデータを用いた復元が行われる。
【０１４６】
コントローラ１００は、バックアップ実行履歴管理テーブル３１０にアクセスし、ウィルス非感染が保証されている時期に該当する世代の差分ボリューム２４０が存在するか否かを判定する（Ｓ９５）。
【０１４７】
ウィルス非感染が保証されている時期に該当する世代の差分ボリューム２４０が存在しない場合（S95:NO）、感染ファイルの復元はできないため、コントローラ１００は、感染ファイルを復元せずにＳ１００に移る。
【０１４８】
ウィルス非感染が保証されている時期に該当する世代の差分ボリューム２４０が存在する場合（S95:YES）、コントローラ１００は、その差分ボリューム２４０にアクセスし（Ｓ９７）、感染ファイルに対応するブロックの旧世代のデータを読み込む（Ｓ９８）。つまり、コントローラ１００は、ウィルスに感染していない世代の差分バックアップデータから、感染ファイルのデータを読み出す。当然ながら、ウィルスに感染していない世代は、ウィルス感染が検出された最新世代よりも前の世代である。
【０１４９】
コントローラ１００は、ウィルスに感染していない旧世代の差分バックアップデータを中間ボリューム２６０に書き込んで再現する（Ｓ９９）。中間ボリューム２６０内に復元されたデータは、後述の駆除処理により、感染ファイルに置き換えられる。
【０１５０】
最後に、コントローラ１００は、感染ファイルの修復結果テーブル４００を更新させる（Ｓ１００）。
【０１５１】
図１７は、保証情報を利用できない場合に、全世代の差分バックアップデータを用いて感染ファイルを復元する処理を示すフローチャートである。
【０１５２】
コントローラ１００は、バックアップ設定情報テーブル３００にアクセスし（Ｓ１１０）、バックアップの取得世代数ａから１を減じて（Ｓ１１１，Ｓ１１２）、処理対象の世代を決定する。つまり、最新世代（ａ）のバックアップデータについてウィルス感染が検出されているため、コントローラ１００は、最新世代（ａ）の一つ前の世代（ａ−１）の差分バックアップデータから利用する。
【０１５３】
コントローラ１００は、最新世代よりも一つ前の世代のボリュームにアクセスし（Ｓ１１３）、感染ファイルに対応するブロックを検索する（Ｓ１１４）。感染ファイルに対応するブロックを検出できない場合（S115:NO）、コントローラ１００は、未だ確認していない旧世代の差分ボリュームが有るか否かを判定する（Ｓ１１６）。未確認の差分ボリュームが存在する場合（S116:YES）、本処理の対象世代の番号を１つ減じて（Ｓ１１２）、Ｓ１１３〜Ｓ１１５を繰り返す。
【０１５４】
全ての世代の差分ボリュームを検査してもなお、感染ファイルに対応するブロックを発見できなかった場合（S116:NO）、感染ファイルを復元することができない。そこで、コントローラ１００は、感染ファイルを復元せずにＳ１２０に移る。
【０１５５】
つまり、Ｓ１１２〜Ｓ１１７では、感染ファイルに対応する古いデータを見つけるべく、新しい世代の差分ボリュームから古い世代の差分ボリュームに順番に遡って、各差分ボリュームを一つずつ検査していく。
【０１５６】
感染ファイルに対応する、旧世代のブロックが検出された場合（S115:YES）、コントローラ１００は、その旧世代のブロックのデータを読込み（Ｓ１１８）、読み込んだデータを中間ボリューム２６０に書き込んで（Ｓ１１９）、ファイルを復元する。コントローラ１００は、感染ファイルの修復結果テーブル４００を更新させる（Ｓ１２０）。
【０１５７】
図１８は、感染ファイルの駆除処理を示すフローチャートである。コントローラ１００は、感染ファイルに関する情報とウィルススキャン設定管理テーブル３７０とを読込み（Ｓ１３０）、感染ファイルの駆除方法が自動に設定されているか手動に設定されているかを判定する（Ｓ１３１）。手動に設定されている場合、Ｓ１３２〜Ｓ１３５をスキップしてＳ１３６に移る。
【０１５８】
自動に設定されている場合、コントローラ１００は、ファイル管理情報テーブル３４０にアクセスし（Ｓ１３２）、このテーブル３４０から感染ファイルに関する情報を削除する（Ｓ１３３）。
【０１５９】
続いて、コントローラ１００は、最新世代の差分ボリューム２４０にアクセスし（Ｓ１３４）、この差分ボリューム２４０から感染ファイルに対応するブロックのデータを消去する（Ｓ１３５）。
【０１６０】
つまり、感染ファイルを自動的に駆除する場合、コントローラ１００は、駆除対象の感染ファイルに関するレコードをテーブル３４０から削除し、さらに、感染ファイルの発見された最新世代の差分ボリューム２４０の中から感染ファイルのデータを消去する。
【０１６１】
次に、コントローラ１００は、中間ボリューム２６０内に復元されたファイルが存在するか否かを判定する（Ｓ１３６）。復元されたファイルが存在しない場合（S136:NO）、本処理を終了する。
【０１６２】
復元されたファイルが存在する場合（S136:YES）、コントローラ１００は、復元ファイルで感染ファイルを自動的に置換するか否かを判定する（Ｓ１３７）。手動で行う場合は、本処理を終了する。感染ファイルを復元されたファイルに自動的に置き換える場合、コントローラ１００は、中間ボリューム２６０内に復元されたファイルのデータを、最新世代の差分ボリューム２４０に書き込む（Ｓ１３８）。コントローラ１００は、ファイル管理情報テーブル３４０を更新して本処理を終了する（Ｓ１３９）。
【０１６３】
図１９は、図１０中のＳ１８の詳細を示すフローチャートである。コントローラ１００は、予め登録されているユーザに向けて、ウィルススキャンの結果を示す電子メールＭ１を送信する（Ｓ１５０）。その電子メールＭ１には、例えば、感染ファイルの発見されたボリューム番号、感染ファイルの名称、自動復元や自動駆除の結果、あるいは、手動復元待ち状態や手動駆除待ち状態であることの表示、復元ファイルの保管先アドレス等を含めることができる。
【０１６４】
このように構成される本実施例によれば、以下の効果を奏する。本実施例では、複数世代の差分バックアップを管理するバックアップ制御を利用して、更新ブロックに対応する更新ファイルを検出し、更新ファイルだけを最新のウィルスパターンファイルによって検査する。従って、バックアップボリューム全体についてウィルススキャンをする場合に比べて、短時間で効率的にウィルススキャンを行うことができる。また、記憶制御装置内でウィルススキャンを行うため、ホストの負荷が増大するのを防止でき、かつ、ホストとコントローラ１００とを接続する通信ネットワークのトラフィック増大を防止できる。即ち、本実施例では、差分バックアップ制御に連動させて、効率的にウィルススキャンを行うことができる。
【０１６５】
本実施例では、差分バックアップの保存が確定された場合に、その最新世代の差分ボリュームに含まれる更新ブロックに基づいて更新ファイルを検出し、更新ファイルについてウィルススキャンを実行する。従って、差分バックアップの制御と、更新ファイルについてのウィルススキャン処理とを切り離して、それぞれ実行させることができる。
【０１６６】
本実施例では、予め設定された２種類の方法のうちいずれか一つの方法を用いることにより、コンピュータウィルスに感染したファイルの記憶内容を回復できる。従って、ホストの負荷を増大させずに、感染ファイルを回復させることができ、ユーザの使い勝手が向上する。
【０１６７】
第１の方法は、ウィルスパターンファイルに設定されている保証情報を利用して、前回のウィルススキャン完了時点までデータを戻す。第２の方法は、各世代の差分バックアップデータを過去に向けて遡ることにより、ウィルス感染前の古いデータを検出する。従って、第１の方法を利用できる場合は、ファイル回復に要する時間を短縮でき、第１の方法を利用できない場合でも、ファイルの回復を試みることができる。
【実施例２】
【０１６８】
図２０，図２１を参照して第２実施例を説明する。本実施例を含む以下の各実施例は、第１実施例の変形例に該当する。以下、第１実施例と重複する説明は割愛する。本実施例では、差分バックアップの仕組みを検索処理でも利用する。
【０１６９】
図２０は、本実施例によるシステムのブロック図である。説明の便宜上、サーバ２０やクライアントＰＣ３０は省略する。その代わりに、本実施例では、検索サーバ５０が示されている。
【０１７０】
検索サーバ５０は、例えば、検索用データベース５１と検索エンジン５２とを備えて構成される。検索用データベース５１には、記憶制御装置１０内に記憶されているファイル群を検索するために使用される、検索用情報が記憶される。検索用情報としては、例えば、ファイル名、ファイルパス、ファイルサイズ、作成日時、更新日時、アクセス頻度、作成者名、ファイルタイプ、キーワード、テキストサマリー、画像のインデックス等を挙げることができる。さらに、全文検索に備えて、ファイル中のテキストデータ等も検索用情報として利用してもよい。
【０１７１】
検索エンジン５２は、クライアントから入力された検索条件に基づいて検索用データベース５１内を検索し、検索条件に合致するファイルを検出するものである。
【０１７２】
本実施例の記憶制御装置１０に着目すると、コントローラ１００は、ウィルススキャン部１０３に代えて、検索管理部１０４を備えている。検索管理部１０４は、第１実施例で述べたと同様に、更新ブロックに対応する更新ファイルについてのみ、検索用情報を生成して検索サーバ５０に送信する。
【０１７３】
図２１は、本実施例の動作を示すフローチャートである。バックアップ制御部１０２は、各世代毎に差分バックアップを実行する（Ｓ２０１）。最新世代のバックアップにおいて、更新ブロックに対応する更新ファイルが特定されると（Ｓ２０２）、検索管理部１０４は、更新ファイルに関する検索用情報を生成し（Ｓ２０３）、検索用情報を検索サーバ５０に送信する（Ｓ２０４）。
【０１７４】
検索サーバ５０は、検索用情報を記憶制御装置１０から受信して、検索用データベース５１に保存する（Ｓ２１０）。その後、クライアントから検索を要求されると、検索サーバ５０は、最新の検索用情報が記憶された検索用データベース５１を用いて、検索を行う（Ｓ２１１）。
【０１７５】
このように構成される本実施例では、差分バックアップ制御の仕組みを利用し、更新されたブロックに対応するファイルについてのみ、検索用情報を生成できる。従って、検索サーバ５０に負担をかけずに、効率的に検索用情報を生成できる。
【実施例３】
【０１７６】
図２２，図２３を参照して、第３実施例を説明する。本実施例では、検索用データベース２７０を記憶制御装置１０内に設ける。図２２は、本実施例によるシステムの説明図である。
【０１７７】
図２３は、本実施例による動作を示すフローチャートである。コントローラ１００は、差分バックアップを行った後（Ｓ２０１）、更新ブロックに対応するファイルを特定し（Ｓ２０２）、更新ファイルに関する検索用情報を生成する（Ｓ２０３）。検索用情報は、記憶制御装置１０内の検索用データベース２７０に記憶される（Ｓ２０５）。このように構成される本実施例も前記第２実施例と同様の効果を奏する。
【実施例４】
【０１７８】
図２４，図２５を参照して、第４実施例を説明する。本実施例では、差分バックアップ制御の仕組みを、ウィルススキャン及び検索用情報の生成の両方で利用する。また、本実施例では、検索エンジン１０５をコントローラ１００内に設ける。
【０１７９】
図２４は、本実施例によるシステムのブロック図である。コントローラ１００には、コマンド処理部１０１，バックアップ制御部１０２，ウィルススキャン部１０３に加えて、検索管理部１０４及び検索エンジン１０５が設けられている。記憶デバイス部２００には、検索用データベース２７０が設けられている。
【０１８０】
図２５は、本実施例の動作を示すフローチャートである。コントローラ１００は、差分バックアップを行った後（Ｓ２０１）、更新されたブロックに対応する更新ファイルを特定する（Ｓ２０２）。
【０１８１】
その後、更新ファイルについて、検索用情報を生成して保存する処理（Ｓ２０３，Ｓ２０５，Ｓ２０６）と、ウィルススキャンに関する処理（Ｓ１６，Ｓ１７，Ｓ１８）とが、それぞれ並列に実行される。
【０１８２】
さらに、感染ファイルが復元された場合（Ｓ１７）、その復元結果が検索用情報の生成に反映される（Ｓ２０３）。即ち、感染ファイルが復元された場合、復元された内容に基づいて、検索用情報が新たに生成される（Ｓ２０３）。
【０１８３】
このように構成される本実施例は、前記各実施例で述べたと同様の効果を得る。さらに、本実施例では、更新ファイルを管理するテーブル３５０を、ウィルススキャンに関する処理と検索に関する処理とで共用し、それぞれの処理を並列に実行させる。従って、記憶制御装置１０の有するコンピュータ資源（記憶デバイス部２００、メモリ１３０、コントローラ１００の有するマイクロプロセッサ等）を有効に利用して、複数の処理を同時に実行させることができ、ユーザの使い勝手を向上させることができる。
【実施例５】
【０１８４】
図２６，図２７に基づいて、第５実施例を説明する。本実施例では、検索用情報の生成と、検索用情報の保存及び検索とを、それぞれ別々の記憶制御装置１０Ａ，１０Ｂに分担させる。
【０１８５】
図２６は、本実施例によるシステムのブロック図である。本実施例のシステムは、第１記憶制御装置１０Ａと第２記憶制御装置１０Ｂとを備える。第１記憶制御装置１０Ａの第１コントローラ１００Ａは、コマンド処理部１０１と、バックアップ制御部１０２と、ウィルススキャン部１０３と検索管理部１０４とを備える。つまり、第１記憶制御装置１０Ａは、差分バックアップの制御と、ウィルススキャン及び感染ファイルの復元と、検索用情報の生成（１０４）とを担当する。
【０１８６】
さらに、第１記憶制御装置１０Ａは、リモートコピー用のプライマリボリューム２８０を備える。このリモートコピー元のボリューム２８０には、検索管理部１０４によって生成される検索用情報が記憶される。リモートコピー元ボリューム２８０は、例えば、ＳＡＮのようなリモートコピー用の通信経路ＣＮ３を介して、第２記憶制御装置１０Ｂ内の検索用データベース２７０Ｂに接続されている。この検索用データベース２７０Ｂは、リモートコピー先のボリュームである。
【０１８７】
第２記憶制御装置１０Ｂの第２コントローラ１００Ｂは、検索エンジン１０５を備えている。検索エンジン１０５は、第２記憶制御装置１０Ｂ内の検索用データベース２７０Ｂを検索することにより、検索条件に一致するファイルを検出する。
【０１８８】
図２７は、本実施例による動作を示すフローチャートである。第１コントローラ１００Ａは、差分バックアップを行った後（Ｓ２０１）、更新されたブロックに対応する更新ファイルを検出する（Ｓ２０２）。第１コントローラ１００Ａは、更新ファイルについてのみウィルススキャンを実施し（Ｓ１６）、感染ファイルを復元し（Ｓ１７）、ウィルススキャンの結果をユーザに連絡する（Ｓ１８）。
【０１８９】
また、第１コントローラ１００Ａは、更新されたファイルについての検索用情報を生成する（Ｓ２０３）。更新ファイルに関する検索用情報は、リモートコピー元ボリューム２８０に記憶され、リモートコピー元ボリューム２８０から、リモートコピー先ボリュームである検索用データベース２７０Ｂに送信される（Ｓ２０７）。
【０１９０】
検索用情報の送信には、差分リモートコピーの技術が使用される。即ち、リモートコピー元ボリューム２８０とリモートコピー先ボリューム２７０Ｂとの間に生じた差分データ（最新の検索用情報）のみが、第１記憶制御装置１０Ａから第２記憶制御装置１０Ｂに送信される（Ｓ２０７）。第２コントローラ１００Ｂは、第１記憶制御装置１０Ａから受信した検索用情報を、リモートコピー先ボリュームである検索用データベース２７０Ｂに記憶させる（Ｓ２２０）。第２コントローラ１００Ｂは、クライアントＰＣ３０等からの検索要求に応じて、検索用データベース２７０Ｂを検索する（Ｓ２２１）。
【０１９１】
このように構成される本実施例も前記各実施例と同様の効果を奏する。さらに、本実施例では、ウィルススキャンに関する処理と検索用情報の生成に関する処理とが更新ファイルを共用して、それぞれの処理を実行し、かつ、検索用情報を別の記憶制御装置１０Ｂ内の検索用データベース２７０Ｂに向けてリモートコピーする。
【０１９２】
従って、本実施例では、各記憶制御装置１０Ａ，１０Ｂの間で役割を分担することができ、検索エンジン１０５を第１記憶制御装置１０Ａ内に設ける場合に比べて、第１記憶制御装置１０Ａの負担を軽減できる。
【０１９３】
さらに、本実施例では、新たに生成された検索用情報を、Ｉ／Ｏ（Input/Output）用の通信ネットワークＣＮ１，ＣＮ２と分離したリモートコピー用の通信ネットワークＣＮ３を用いて、リモートコピー先に送信する。従って、ホスト側の負担を増大させずに、検索用情報を、差分バックアップに連動させて最新の状態に保つことができる。
【０１９４】
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【図面の簡単な説明】
【０１９５】
【図１】本発明の実施形態の全体概要を示す説明図である。
【図２】ストレージシステムのブロック図である。
【図３】バックアップ設定情報テーブル及びバックアップ実行履歴管理テーブルを示す説明図である。
【図４】ビットマップ管理テーブル及び差分ビットマップを示す説明図である。
【図５】ファイル管理テーブルを示す説明図である。
【図６】更新ファイルの特定結果を示すテーブルの説明図である。
【図７】ウィルスパターン管理テーブル及びウィルススキャン設定管理テーブルを示す説明図である。
【図８】ウィルススキャンの実行結果を管理するテーブルを示す説明図である。
【図９】感染ファイルに対応するブロックの検出結果を管理するテーブルと、感染ファイルの修復結果を管理するテーブルとをそれぞれ示す説明図である。
【図１０】処理全体の流れを示すフローチャートである。
【図１１】図１０中のＳ１０，Ｓ１１，Ｓ１２の詳細を示すフローチャートである。
【図１２】図１０中のＳ１３の詳細を示すフローチャートである。
【図１３】図１０中のＳ１４の詳細を示すフローチャートである。
【図１４】図１０中のＳ１５の詳細を示すフローチャートである。
【図１５】図１０中のＳ１６の詳細を示すフローチャートである。
【図１６】図１０中のＳ１７の詳細を示すフローチャートである。
【図１７】図１６に続くフローチャートである。
【図１８】図１７に続くフローチャートである。
【図１９】図１０中のＳ１８の詳細を示すフローチャートである。
【図２０】第２実施例に係るストレージシステムのブロック図である。
【図２１】動作の概要を示すフローチャートである。
【図２２】第３実施例に係るストレージシステムのブロック図である。
【図２３】動作の概要を示すフローチャートである。
【図２４】第４実施例に係るストレージシステムのブロック図である。
【図２５】動作の概要を示すフローチャートである。
【図２６】第５実施例に係るストレージシステムのブロック図である。
【図２７】動作の概要を示すフローチャートである。
【符号の説明】
【０１９６】
１：コントローラ、２：記憶デバイス部、２Ａ：記憶デバイス、２Ｂ：論理ボリューム、２Ｃ：プライマリボリューム、２Ｄ：バックアップボリューム、２Ｅ：差分ボリューム、２Ｆ：差分ビットマップ、３Ａ：ホスト、３Ｂ：検索サーバ、４Ａ：コマンド処理部、４Ｂ：差分管理部、４Ｃ：更新ブロック、４Ｄ：バックアップ部、５Ａ：ファイル特定部、５Ｂ：更新ファイル、６Ａ：ウィルススキャン部、６Ｂ：ファイル回復部、７Ａ：検索管理部、７Ｂ：検索用情報記憶部、１０，１０Ａ，１０Ｂ：記憶制御装置、２０：サーバ、３０：クライアントＰＣ、４０：ウィルスパターン配信サーバ、５０：検索サーバ、５１：検索用データベース、５２：検索エンジン、１００，１００Ａ，１００Ｂ：コントローラ、１０１：コマンド処理部、１０２：バックアップ制御部、１０３：ウィルススキャン部、１０４：検索管理部、１０５：検索エンジン、１１０：チャネルアダプタ（ＣＨＡ）、１２０：ディスクアダプタ（ＤＫＡ）、１３０：メモリ、２００：記憶デバイス部、２１０：記憶デバイス、２２０：プライマリボリューム、２３０：バックアップボリューム、２４０：差分ボリューム、２５０：管理情報ボリューム、２６０：中間ボリューム、２７０，２７０Ｂ：検索用データベース、２８０：リモートコピー用のプライマリボリューム、３００：バックアップ設定情報テーブル、３１０：バックアップ実行履歴管理テーブル、３１０
バックアップ設定履歴管理テーブル、３２０：ビットマップ管理テーブル、３３０：差分ビットマップ、３４０：ファイル管理情報テーブル、３５０：更新ファイルの特定結果を示すテーブル、３６０：ウィルスパターン管理テーブル、３７０：ウィルススキャン設定管理テーブル、３８０：ウィルススキャン実行結果テーブル、３９０：感染ファイルに対応するブロックの検出結果を示すテーブル、４００：感染ファイルの修復結果を示すテーブル。
【図１】
0005028218.tif 000002
【図２】
0005028218.tif 000003
【図３】
0005028218.tif 000004
【図４】
0005028218.tif 000005
【図５】
0005028218.tif 000006
【図６】
0005028218.tif 000007
【図７】
0005028218.tif 000008
【図８】
0005028218.tif 000009
【図９】
0005028218.tif 000010
【図１０】
0005028218.tif 000011
【図１１】
0005028218.tif 000012
【図１２】
0005028218.tif 000013
【図１３】
0005028218.tif 000014
【図１４】
0005028218.tif 000015
【図１５】
0005028218.tif 000016
【図１６】
0005028218.tif 000017
【図１７】
0005028218.tif 000018
【図１８】
0005028218.tif 000019
【図１９】
0005028218.tif 000020
【図２０】
0005028218.tif 000021
【図２１】
0005028218.tif 000022
【図２２】
0005028218.tif 000023
【図２３】
0005028218.tif 000024
【図２４】
0005028218.tif 000025
【図２５】
0005028218.tif 000026
【図２６】
0005028218.tif 000027
【図２７】
0005028218.tif 000028