(57)【要約】【課題】リカバリすべきポイントが不明な場合でも、適切なリカバリポイントを選択できるように支援する。【解決手段】ユーザは、リカバリ対象のファイル名（パス名）や検索条件（キーワード）を指定して、ホスト１から検索要求Ｄ１を発行させる。部分リストア処理部２Ｃは、ユーザデータボリュームＶ１のうち、指定されたファイルのみをリストアし、一時リストア領域Ｖ３に記憶させる。検索処理部２Ｄは、リストアされたファイルが検索条件に一致する期間を検出し、リカバリポイント候補リストＤ２をホスト１に通知する。ユーザは、リカバリポイント候補の中からいずれか１つのリカバリポイントを指定して、ユーザデータボリュームＶ１のリストアを要求する。これにより、ユーザは、僅かな手がかりに基づいてリカバリポイント候補を入手でき、適切なリカバリポイントを選択できる。【選択図】図１
2007199889.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータと、このホストコンピュータにデータボリュームを提供する記憶制御装置とを備えたストレージシステムであって、
前記ホストコンピュータは、
少なくとも復元対象範囲及び検索条件を指定する検索要求を発行する検索要求発行部を備えており、
前記記憶制御装置は、
前記データボリュームの更新履歴を管理するための更新履歴管理部と、
前記検索要求を受領した場合には、前記データボリュームに記憶されているデータのうち前記復元対象範囲内のデータを、前記更新履歴毎に復元して、一時的復元領域に記憶させる第１復元部と、
前記一時的復元領域内に復元された前記データが前記検索条件に合致するか否かを判定し、復元された前記データが前記検索条件に連続して合致する期間を検出して前記ホストコンピュータに通知する検索部と、
を備えたストレージシステム。
【請求項２】
前記ホストコンピュータは、前記検索部から通知された前記期間に含まれる所定時点を指定して、前記データボリュームの記憶内容を前記所定時点の状態に復元させるための復元要求を発行する復元要求発行部をさらに備え、
前記記憶制御装置は、前記復元要求を受領した場合に、前記更新履歴を使用することにより、前記データボリュームの記憶内容を前記所定時点の状態に復元させる第２復元部をさらに備えている、請求項１に記載のストレージシステム。
【請求項３】
前記更新履歴管理部は、前記データボリュームの記憶内容を、指定された複数の世代毎にそれぞれ管理しており、
前記第１復元部は、前記検索要求に復元対象期間が含まれている場合には、前記データボリュームのうち前記復元対象期間内における前記復元対象範囲内のデータを、前記更新履歴毎に復元して、前記一時的復元領域に記憶させる、請求項１に記載のストレージシステム。
【請求項４】
前記ホストコンピュータは、前記一時的復元領域内に復元された前記データにアクセス可能である請求項１に記載のストレージシステム。
【請求項５】
前記記憶制御装置は、前記一時的復元領域内に復元された前記データを前記ホストコンピュータに送信可能である請求項１に記載のストレージシステム。
【請求項６】
前記検索部は、前記一時的復元領域内に復元された前記データが前記検索条件に初めて合致する始期及び前記検索条件に最後に合致する終期を、前記期間として前記ホストコンピュータに通知する請求項１に記載のストレージシステム。
【請求項７】
前記検索部は、前記一時的復元領域内に復元された前記データが前記検索条件に連続して合致する期間を複数検出した場合、これら複数の期間を全て前記ホストコンピュータに通知する請求項１に記載のストレージシステム。
【請求項８】
前記第１復元部は、前記検索要求内に前記復元対象範囲が複数指定されている場合には、これら複数の復元対象範囲毎にそれぞれ前記一時的復元領域を用意し、前記複数の復元対象範囲内のデータをそれぞれ復元させる請求項１に記載のストレージシステム。
【請求項９】
前記更新履歴管理部は、前記ホストコンピュータが前記データボリュームに更新を行うたびに、更新前のデータを更新時刻に対応付けて管理するものである請求項１に記載のストレージシステム。
【請求項１０】
前記更新履歴管理部は、定期的に又は不定期に指定される少なくとも一つ以上のチェックポイントにおいて、前記データボリュームの記憶内容のイメージを記憶すると共に、前記チェックポイントから次のチェックポイントまでの間に行われた更新履歴を管理するものである請求項１に記載のストレージシステム。
【請求項１１】
前記更新履歴管理部は、ファイル単位で前記更新履歴を管理しており、
前記復元対象範囲は、ファイル単位で指定可能である請求項１に記載のストレージシステム。
【請求項１２】
前記更新履歴管理部は、ファイル単位で前記更新履歴を管理しており、
前記復元対象範囲は、ファイルのパス情報によってファイル単位で指定可能である請求項１に記載のストレージシステム。
【請求項１３】
前記更新履歴管理部は、ファイル単位で前記更新履歴を管理しており、
前記復元対象範囲は、ファイルのパス情報に基づくハッシュ値によってファイル単位で指定可能である請求項１に記載のストレージシステム。
【請求項１４】
前記復元対象範囲は、論理ユニット番号とオフセット論理ブロックアドレス及びデータサイズによって指定可能である請求項１に記載のストレージシステム。
【請求項１５】
前記記憶制御装置は、
前記ホストコンピュータからファイル単位でのアクセス要求を受け付けて、このファイル単位のアクセス要求をブロック単位の入出力要求に変換する第１コントローラと、
この第１コントローラから入力されたブロック単位の入出力要求に基づいて、複数の記憶ドライブとの間でデータを送受信する第２コントローラとを備えており、
前記第１コントローラには、前記第１復元部と、前記検索部と、前記第１復元部が前記更新履歴管理部により管理されている前記更新履歴を取得するための更新履歴取得部と、前記一時的復元領域とが設けられており、
前記第２コントローラには、前記更新履歴管理部が設けられている、請求項１に記載のストレージシステム。
【請求項１６】
ホストコンピュータにデータボリュームを提供する記憶制御装置であって、
前記データボリュームの更新履歴を管理するための更新履歴管理部と、
前記ホストコンピュータから少なくとも復元対象範囲及び検索条件を含む検索要求を受領した場合には、前記データボリュームのうち前記復元対象範囲内のデータを、前記更新履歴毎に復元して、一時的復元領域に記憶させる第１復元部と、
前記一時的復元領域内に復元された前記データが前記検索条件に合致するか否かを判定し、復元された前記データが前記検索条件に連続して合致する期間を検出して前記ホストコンピュータに通知する検索部と、
を備えた記憶制御装置。
【請求項１７】
ホストコンピュータにデータボリュームを提供する記憶制御装置であって、
コントローラと、このコントローラによって制御され、前記データボリュームを設けるための記憶領域を提供する記憶ドライブとを備え、
前記コントローラは、
前記ホストコンピュータからのファイルアクセス要求に従って、前記データボリュームへのファイルアクセスを行うアクセス要求処理部と、
前記ホストコンピュータが前記データボリュームに記憶されたファイルの更新を要求した場合には、更新前のデータをジャーナルボリュームに記憶させ、さらに、その更新時刻及び前記更新前のデータが前記ジャーナルボリュームに記憶されている位置をジャーナル管理情報として記憶することにより、更新履歴を管理するジャーナル作成処理部と、
前記ホストコンピュータから少なくとも復元対象のファイルを特定する情報及び該復元対象のファイルが満たすべき検索条件を含む検索要求が発行された場合には、前記データボリュームに記憶されているファイル群のうち前記復元対象のファイルを、前記ジャーナル管理情報及び前記ジャーナルボリュームに基づいて、前記更新履歴毎に復元し、この復元されたデータを一時的復元領域に記憶させる第１復元部と、
前記一時的復元領域に復元された前記ファイルが前記検索条件に合致するか否かを判定し、復元された前記ファイルが前記検索条件に連続して合致する期間を検出して前記ホストコンピュータに通知する検索部と、
前記ホストコンピュータが、前記検索条件に連続して合致する期間に含まれる所定時点を指定して前記データボリュームの記憶内容の復元を要求した場合には、前記ジャーナル管理情報及びジャーナルボリュームに基づいて、前記データボリュームの記憶内容を前記所定時点の状態に復元させる第２復元部と、を備えた記憶制御装置。
【請求項１８】
前記ホストコンピュータは、所定の場合に、前記検索要求を発行するものであり、
前記所定の場合には、前記復元対象のファイルがコンピュータウイルスに感染した場合、前記復元対象のファイルが消失した場合、前記復元対象のファイルが更新された場合の、少なくともいずれか一つが含まれている、請求項１７に記載の記憶制御装置。
【請求項１９】
ホストコンピュータにデータボリュームを提供する記憶制御装置を用いてリカバリポイントを検出する方法であって、
ホストコンピュータから少なくとも復元対象範囲及び検索条件を含む検索要求が発行されたか否かを判定する第１ステップと、
前記第１ステップにより前記検索要求が発行されたと判定された場合には、記憶領域内に一時的復元領域を確保する第２ステップと、
前記ホストコンピュータによる前記データボリュームへの更新の履歴を管理する更新履歴情報を古い履歴から順番に取得し、この取得された更新履歴情報に関するデータが、前記復元対象範囲に含まれるか否かを判定する第３ステップと、
前記取得された更新履歴情報に関するデータが前記復元対象範囲に含まれる場合には、前記更新履歴情報に関するデータを更新データ管理用ボリュームから読み出して前記一時的復元領域に記憶させる第４ステップと、
前記一時的復元領域に記憶されたデータが前記検索条件に合致するか否かを判定する第５ステップと、
前記一時的復元領域に記憶されたデータが前記検索条件に合致する場合には、当該データが更新された更新時刻を更新時刻記憶領域に記憶させる第６ステップと、
前記更新時刻記憶領域に記憶された更新時刻を読み出し、この更新時刻をリカバリポイントとして前記ホストコンピュータに送信する第７ステップと、
を含む記憶制御装置のリカバリポイント検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、記憶制御装置及び記憶制御装置のリカバリポイント検出方法に関する。
【背景技術】
【０００２】
日々増大する多量のデータを効率的に管理するために、複数のコンピュータによって分散管理されている多数のデータを一カ所にまとめて管理するストレージシステムが利用されている。ここで、ユーザが誤ってデータを消去した場合等に備えて、ジャーナルデータを管理しておき、ジャーナルデータによって任意の時点までユーザデータを回復させる技術が知られている（特許文献１）。
【特許文献１】特開２００５−１８７３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前記文献記載の従来技術では、データの回復を希望する時点をユーザが明確に把握している場合に有効であるが、回復を希望する時点をユーザが把握していない場合には、使い勝手が低い。ユーザが、回復を希望する時点を明確に認識している場合、その明示された回復希望時点までユーザデータを回復させることは容易である。
【０００４】
しかし、いったい何時の時点にデータを回復させれば良いのか、ユーザに見当のつかない場合も多い。今まで作業していたファイルを誤って消去してしまったような場合を除き、普段あまり使用しないファイルをユーザの希望する時点まで回復させるのは、手間がかかる。ボリュームを指定された時点に回復させるためには、基準となるデータ群に多数のジャーナルデータを順番に適用しなければならない。
【０００５】
ユーザは、希望する結果が得られるまで、回復時点を適当に繰り返し指定しながら、ボリューム全体の回復作業を何度も実行させる必要がある。このように、ユーザが、回復させたい内容について見当がつく場合でも、それが具体的に何時なのかまでを把握していることは少ない。従って、ユーザは、希望する結果が得られるまで、複数回の回復作業を実行させて、その結果を確認する必要があり、使い勝手が低い。
【０００６】
本発明は、上記の問題点に鑑みてなされたもので、その目的は、ユーザの希望条件を満たす時点を比較的容易に検出することができるようにしたストレージシステム、記憶制御装置及び記憶制御装置のリカバリポイント検出方法を提供することにある。本発明の他の目的は、ユーザの希望条件を満たす時点をユーザに提示し、ユーザに指定された時点までデータボリュームの記憶内容を回復させることができるようにしたストレージシステム、記憶制御装置及び記憶制御装置のリカバリポイント検出方法を提供することにある。本発明の別の目的は、後述の実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００７】
上記課題を解決すべく、本発明の一つに観点に従うストレージシステムは、ホストコンピュータと、このホストコンピュータにデータボリュームを提供する記憶制御装置とを備えたストレージシステムであって、ホストコンピュータは、少なくとも復元対象範囲及び検索条件を指定する検索要求を発行する検索要求発行部を備えており、記憶制御装置は、データボリュームの更新履歴を管理するための更新履歴管理部と、検索要求を受領した場合には、データボリュームに記憶されているデータのうち復元対象範囲内のデータを、更新履歴毎に復元して、一時的復元領域に記憶させる第１復元部と、一時的復元領域内に復元されたデータが検索条件に合致するか否かを判定し、復元されたデータが検索条件に連続して合致する期間を検出してホストコンピュータに通知する検索部と、を備える。
【０００８】
本発明の実施形態では、ホストコンピュータは、検索部から通知された期間に含まれる所定時点を指定して、データボリュームの記憶内容を所定時点の状態に復元させるための復元要求を発行する復元要求発行部をさらに備え、記憶制御装置は、復元要求を受領した場合に、更新履歴を使用することにより、データボリュームの記憶内容を所定時点の状態に復元させる第２復元部をさらに備えている。
【０００９】
本発明の実施形態では、更新履歴管理部は、データボリュームの記憶内容を、指定された複数の世代毎にそれぞれ管理しており、第１復元部は、検索要求に復元対象期間が含まれている場合には、データボリュームのうち復元対象期間内における復元対象範囲内のデータを、更新履歴毎に復元して、一時的復元領域に記憶させる。
【００１０】
本発明の実施形態では、ホストコンピュータは、一時的復元領域内に復元されたデータにアクセス可能である。
【００１１】
本発明の実施形態では、記憶制御装置は、一時的復元領域内に復元されたデータをホストコンピュータに送信可能である。
【００１２】
本発明の実施形態では、検索部は、一時的復元領域内に復元されたデータが検索条件に初めて合致する始期及び検索条件に最後に合致する終期を、前記期間としてホストコンピュータに通知する。
【００１３】
本発明の実施形態では、検索部は、一時的復元領域内に復元されたデータが検索条件に連続して合致する期間を複数検出した場合、これら複数の期間を全てホストコンピュータに通知する。
【００１４】
本発明の実施形態では、第１復元部は、検索要求内に復元対象範囲が複数指定されている場合には、これら複数の復元対象範囲毎にそれぞれ一時的復元領域を用意し、複数の復元対象範囲内のデータをそれぞれ復元させる。
【００１５】
本発明の実施形態では、更新履歴管理部は、ホストコンピュータがデータボリュームに更新を行うたびに、更新前のデータを更新時刻に対応付けて管理する。
【００１６】
本発明の実施形態では、更新履歴管理部は、定期的に又は不定期に指定される少なくとも一つ以上のチェックポイントにおいて、データボリュームの記憶内容のイメージを記憶すると共に、チェックポイントから次のチェックポイントまでの間に行われた更新履歴を管理する。
【００１７】
本発明の実施形態では、更新履歴管理部は、ファイル単位で更新履歴を管理しており、復元対象範囲は、ファイル単位で指定可能である。
【００１８】
本発明の実施形態では、更新履歴管理部は、ファイル単位で更新履歴を管理しており、復元対象範囲は、ファイルのパス情報によってファイル単位で指定可能である。
【００１９】
本発明の実施形態では、更新履歴管理部は、ファイル単位で更新履歴を管理しており、復元対象範囲は、ファイルのパス情報に基づくハッシュ値によってファイル単位で指定可能である。
【００２０】
本発明の実施形態では、復元対象範囲は、論理ユニット番号とオフセット論理ブロックアドレス及びデータサイズによって指定可能である。
【００２１】
本発明の実施形態では、記憶制御装置は、ホストコンピュータからファイル単位でのアクセス要求を受け付けて、このファイル単位のアクセス要求をブロック単位の入出力要求に変換する第１コントローラと、この第１コントローラから入力されたブロック単位の入出力要求に基づいて、複数の記憶ドライブとの間でデータを送受信する第２コントローラとを備えており、第１コントローラには、第１復元部と、検索部と、第１復元部が更新履歴管理部により管理されている更新履歴を取得するための更新履歴取得部と、一時的復元領域とが設けられており、第２コントローラには、更新履歴管理部が設けられている。
【００２２】
本発明の他の観点に従う記憶制御装置は、ホストコンピュータにデータボリュームを提供する記憶制御装置であって、データボリュームの更新履歴を管理するための更新履歴管理部と、ホストコンピュータから少なくとも復元対象範囲及び検索条件を含む検索要求を受領した場合には、データボリュームのうち復元対象範囲内のデータを、更新履歴毎に復元して、一時的復元領域に記憶させる第１復元部と、一時的復元領域内に復元されたデータが検索条件に合致するか否かを判定し、復元されたデータが検索条件に連続して合致する期間を検出してホストコンピュータに通知する検索部と、を備える。
【００２３】
本発明のさらに別の観点に従う記憶制御装置は、ホストコンピュータにデータボリュームを提供する記憶制御装置であって、コントローラと、このコントローラによって制御され、データボリュームを設けるための記憶領域を提供する記憶ドライブとを備え、コントローラは、ホストコンピュータからのファイルアクセス要求に従って、データボリュームへのファイルアクセスを行うアクセス要求処理部と、ホストコンピュータがデータボリュームに記憶されたファイルの更新を要求した場合には、更新前のデータをジャーナルボリュームに記憶させ、さらに、その更新時刻及び更新前のデータがジャーナルボリュームに記憶されている位置をジャーナル管理情報として記憶することにより、更新履歴を管理するジャーナル作成処理部と、ホストコンピュータから少なくとも復元対象のファイルを特定する情報及び該復元対象のファイルが満たすべき検索条件を含む検索要求が発行された場合には、データボリュームに記憶されているファイル群のうち復元対象のファイルを、ジャーナル管理情報及びジャーナルボリュームに基づいて、更新履歴毎に復元し、この復元されたデータを一時的復元領域に記憶させる第１復元部と、一時的復元領域に復元されたファイルが検索条件に合致するか否かを判定し、復元されたファイルが検索条件に連続して合致する期間を検出してホストコンピュータに通知する検索部と、ホストコンピュータが、検索条件に連続して合致する期間に含まれる所定時点を指定してデータボリュームの記憶内容の復元を要求した場合には、ジャーナル管理情報及びジャーナルボリュームに基づいて、データボリュームの記憶内容を所定時点の状態に復元させる第２復元部と、を備える。
【００２４】
本発明の他の実施形態では、ホストコンピュータは、所定の場合に、検索要求を発行するものであり、所定の場合には、復元対象のファイルがコンピュータウイルスに感染した場合、復元対象のファイルが消失した場合、復元対象のファイルが更新された場合の、少なくともいずれか一つが含まれている。
【００２５】
本発明のさらに他の観点に従う記憶制御装置のリカバリポイント検出方法は、ホストコンピュータにデータボリュームを提供する記憶制御装置を用いてリカバリポイントを検出する方法であって、ホストコンピュータから少なくとも復元対象範囲及び検索条件を含む検索要求が発行されたか否かを判定する第１ステップと、第１ステップにより検索要求が発行されたと判定された場合には、記憶領域内に一時的復元領域を確保する第２ステップと、ホストコンピュータによるデータボリュームへの更新の履歴を管理する更新履歴情報を古い履歴から順番に取得し、この取得された更新履歴情報に関するデータが、復元対象範囲に含まれるか否かを判定する第３ステップと、取得された更新履歴情報に関するデータが復元対象範囲に含まれる場合には、更新履歴情報に関するデータを更新データ管理用ボリュームから読み出して一時的復元領域に記憶させる第４ステップと、一時的復元領域に記憶されたデータが検索条件に合致するか否かを判定する第５ステップと、一時的復元領域に記憶されたデータが検索条件に合致する場合には、当該データが更新された更新時刻を更新時刻記憶領域に記憶させる第６ステップと、更新時刻記憶領域に記憶された更新時刻を読み出し、この更新時刻をリカバリポイントとしてホストコンピュータに送信する第７ステップと、を含む。
【００２６】
本発明の手段、機能、ステップの全部または一部は、コンピュータシステムにより実行されるコンピュータプログラムとして構成可能な場合がある。本発明の構成の全部または一部がコンピュータプログラムから構成された場合、このコンピュータプログラムは、例えば、各種記憶媒体に固定して配布等することができ、あるいは、通信ネットワークを介して送信することもできる。
【発明を実施するための最良の形態】
【００２７】
図１は、本発明の実施形態の全体概要を示す構成説明図である。本実施形態のストレージシステムは、それぞれ後述するように、ホストコンピュータ（以下「ホスト」）１と、記憶制御装置２とを備えている。
【００２８】
ホスト１は、例えば、サーバコンピュータやパーソナルコンピュータ等のように構成されるもので、通信ネットワークＣＮを介して、記憶制御装置２に双方向通信可能に接続されている。また、ホスト１は、例えば、アプリケーションプログラム１Ａと、リカバリポイント検索要求発行部１Ｂと、リカバリ指示部１Ｃとを備えて構成可能である。
【００２９】
アプリケーションプログラム１Ａは、例えば、データベース、電子メール管理プログラム、顧客管理プログラム、売上管理プログラム等のように、ユーザの各種業務に使用されるプログラムである。
【００３０】
リカバリポイント検索要求発行部（以下「検索要求発行部」と略す場合がある）１Ｂは、「検索要求発行部」に該当する。検索要求発行部１Ｂは、ユーザの希望するリカバリポイントを検索させるための検索要求Ｄ１を発行するものである。この検索要求Ｄ１には、例えば、リカバリ対象の範囲、リカバリ対象の期間、検索条件が含まれている。検索要求発行部１Ｂは、ユーザの希望するリカバリポイントを調査させるための要求を発行するものである。従って、検索要求発行部１Ｂは、例えば、「リカバリポイント調査要求部」と呼ぶこともできる。
【００３１】
リカバリ対象範囲としては、例えば、ファイル単位（ファイルにはディレクトリも含まれる）、ブロックデータ単位を挙げることができる。ユーザは、所望のファイル名をリストア対象として指定することにより、そのファイルについてのみ一時的にリストアさせて、リカバリポイントを調査させることができる。
【００３２】
リカバリ対象期間としては、更新履歴の管理単位を指定することができる。例えば、一日単位、一週間単位、一ヶ月単位等のような管理単位で、ユーザデータボリュームＶ１の更新履歴が管理されている場合、ユーザは、所望の期間または所望の日時を指定して、リカバリポイントの調査を要求することができる。
【００３３】
検索条件としては、例えば、キーワードやタイムスタンプ、ファイルの内容全体等の条件を挙げることができる。例えば、ユーザは、所定のキーワードを有する事を検索条件として指定することにより、リストア対象のファイルが所定のキーワードを含んでいる期間（リカバリポイント候補）を確認することができる。
【００３４】
リカバリ指示部１Ｃは、「復元要求発行部」に該当する。リカバリ指示部１Ｃは、リカバリポイントの検索結果（リカバリポイント候補）Ｄ２からいずれかのリカバリポイントを指定し、ユーザデータボリュームＶ１の記憶内容を復元させるものである。
【００３５】
記憶制御装置２は、例えば、ディスクアレイ装置のように構成される。記憶制御装置２は、例えば、Ｒ／Ｗ処理部２Ａと、ジャーナル作成処理部２Ｂと、部分リストア処理部２Ｃと、検索処理部２Ｄと、リストア処理部２Ｅと、ユーザデータボリュームＶ１と、ジャーナルボリュームＶ２と、一時リストア領域Ｖ３と、リストア用ボリュームＶ４とを備えて構成することができる。
【００３６】
Ｒ／Ｗ処理部２Ａは、ホスト１からのアクセス要求（リード要求及びライト要求）を処理するものである。ホスト１からリード要求が発行されると、Ｒ／Ｗ処理部２Ａは、要求されたデータをユーザデータボリュームＶ１から読み出して、ホスト１に送信する。ホスト１からライト要求が発行されると、Ｒ／Ｗ処理部２Ａは、ライトデータをユーザデータボリュームＶ１に書き込ませる。
【００３７】
ジャーナル作成処理部２Ｂは、「更新履歴管理部」に該当する。ジャーナル作成処理部２Ｂは、ユーザデータボリュームＶ１への更新履歴を管理するためのものである。ジャーナル作成処理部２Ｂは、ホスト１からライト要求が発行されたびに、ジャーナルデータをそれぞれ生成し、このジャーナルデータをジャーナルボリュームＶ２に記憶させる。例えば、ジャーナル作成処理部２Ｂは、更新前のデータをジャーナルボリュームＶ２に退避させると共に、このデータの退避時刻（即ち、更新時刻）と退避場所（ジャーナルボリュームＶ２における格納先アドレス）とを対応付けて管理する。
【００３８】
部分リストア処理部２Ｃは、「第１復元部」に該当する。部分リストア処理部２Ｃは、検索要求発行部１Ｂから発行された検索要求Ｄ１に基づいて、ユーザデータボリュームＶ１の記憶内容を部分的に復元させるものである。即ち、部分リストア処理部２Ｃは、検索要求Ｄ１中のリストア対象範囲に属するデータについてのみ、更新履歴毎に復元させ、その復元結果を一時リストア領域Ｖ３に記憶させる。例えば、リストア対象範囲として特定のファイルが指定されている場合、部分リストア処理部２Ｃは、履歴管理上の最古の状態、次の更新時の状態、さらに次の更新時の状態、履歴管理上の最新状態のように、その特定のファイルに関する各更新履歴毎に復元させる。
【００３９】
検索処理部２Ｄは、「検索部」に該当する。検索処理部２Ｄは、一時リストア領域Ｖ３に記憶された復元データについて、検索要求Ｄ１中の検索条件に合致するデータの更新時刻を検出する。検索処理部２Ｄは、検索条件に合致するデータの更新時刻に基づいて、リカバリポイント候補リストＤ２を作成し、ホスト１に送信する。検索処理部２Ｄは、リカバリ対象のファイルが検索要求Ｄ１中の検索条件に合致し続ける期間を特定し、この特定された期間をリカバリポイント候補リストＤ２として、ホスト１に通知する。
【００４０】
リストア処理部２Ｅは、「第２復元部」に該当する。リストア処理部２Ｅは、リカバリ指示部１Ｃによって指定されたリカバリポイントまで、ユーザデータボリュームＶ１の記憶内容を復元させる。リストア処理部２Ｅは、ユーザデータボリュームＶ１の記憶内容に、ジャーナルボリュームＶ２で管理されているジャーナルデータを順番に適用し、この適用結果をリストア用ボリュームＶ４に記憶させる。これにより、リストア用ボリュームＶ４には、指定されたリカバリポイントの記憶内容が復元される。そして、ホスト１のアクセス先をユーザデータボリュームＶ１からリストア用ボリュームＶ４に切り替えさせることにより、ホスト１のアプリケーションプログラム１Ａは、ユーザの希望する時点に回復されたデータを利用することができる。
【００４１】
記憶制御装置２は、その筐体の内外いずれか又は両方に、複数の記憶ドライブを備えている（図２参照）。各記憶ドライブは、例えば、ハードディスクドライブや半導体メモリドライブ等のように構成される。各記憶ドライブの有する記憶領域を所定数集めることにより、仮想化された物理的な記憶デバイスを得ることができる。そして、この物理的な記憶デバイスに、論理的な記憶デバイスである各ボリュームＶ１，Ｖ２，Ｖ３，Ｖ４をそれぞれ設けることができる。
【００４２】
ユーザデータボリュームＶ１は、アプリケーションプログラム１Ａによって利用されるユーザデータを記憶するものである。ジャーナルボリュームＶ２は、ユーザデータボリュームＶ１に対する更新履歴をジャーナルデータとして保存するものである。
【００４３】
一時リストア領域Ｖ３は、部分リストア処理部２Ｃによる部分的なリストア処理に使用されるものである。なお、一時リストア領域Ｖ３は、記憶ドライブの記憶領域を利用して生成することもできるし、記憶制御装置２が有するメモリの記憶領域を利用して生成することもできる。リストア用ボリュームＶ４は、リストア処理部２Ｅによって利用されるものである。リストア用ボリュームＶ４には、ユーザにより指定されたリカバリポイントにおけるユーザデータボリュームＶ１の記憶内容が再現される。
【００４４】
次に、本実施形態の作用を説明する。アプリケーションプログラム１ＡがユーザデータボリュームＶ１のデータを更新させると、ジャーナル作成処理部２Ｂは、この更新履歴を保管するためのジャーナルデータを生成する。生成されたジャーナルデータは、ジャーナルボリュームＶ２に記憶される。
【００４５】
ここで、ユーザが、過去の所定時点における記憶内容を希望する場合がある。例えば、ユーザが誤って必要なファイルを消去してしまうことがある。もしも、ユーザが、回復させるべきタイミング（ポイント）を明確に認識しているのであれば、そのタイミングをリカバリポイントとして指定し、リストア処理部２Ｅによってリストアさせればよい。
【００４６】
これに対し、ユーザが回復させるべきタイミングを明確に把握していない場合、ユーザは、別の情報を手がかりとして、回復させるべきタイミングを記憶制御装置２に調査させることができる。
【００４７】
即ち、ユーザは、リカバリ対象範囲（回復を希望するファイルの名称等）、リカバリ対象期間（リカバリポイントの調査期間）、検索条件を指定することにより、リカバリポイントの調査を要求することができる。このリカバリポイントの調査要求は、検索要求Ｄ１として記憶制御装置２に与えられる。
【００４８】
部分リストア処理部２Ｃは、ユーザデータボリュームＶ１の全体をリストアするのではなく、ユーザから指定されたファイルについてのみ、そのファイルの更新履歴毎にそれぞれリストアする。
【００４９】
リストアされた各ファイルは、一時リストア領域Ｖ３に記憶される。検索処理部２Ｄは、リストアされた各ファイルについて検索条件を満たすか否か判定し、検索条件に合致する期間を特定する。そして、検索処理部２Ｄは、検索条件に合致する期間をリカバリポイント候補リストＤ２として、ホスト１に報告する。ユーザは、報告されたリカバリポイント候補リストＤ２の中から、所望の時点をリカバリポイントとして選択し、リストア処理部２Ｅにリストアを要求することができる。リストア処理部２Ｅは、ユーザから指示されたリカバリポイントまで、ユーザデータボリュームＶ１の記憶内容を回復させる。
【００５０】
一例を挙げて説明する。例えば、ユーザが、「2005年下期報告書」という名称の文書ファイルを誤って削除してしまったとする。ユーザは、その文書ファイルの所属先ディレクトリ名が「ビジネス関係」であることは見当がついているが、その文書ファイルをいつ削除したのかまでは覚えていないとする。
【００５１】
この場合、ユーザは、「ビジネス関係」というディレクトリ名をリストア対象範囲に、「2005年上期報告書」というファイル名を含む事を検索条件に、それぞれ指定する。これにより、検索要求発行部１Ｂは、検索要求Ｄ１を発行させる。
【００５２】
部分リストア処理部２Ｃは、ユーザデータボリュームＶ１に記憶されている多数のファイルのうち、リストア対象範囲として指定された「ビジネス関係」というディレクトリに含まれるファイル群のみを、その更新履歴毎にそれぞれリストアさせる。リストアされたファイル群は、一時リストア領域Ｖ３に記憶される。
【００５３】
検索処理部２Ｄは、一時リストア領域Ｖ３に記憶されたファイル群のうち、「2005年上期報告書」というキーワードを含むファイルのみを検出する。そして、検索処理部２Ｄは、「2005年上期報告書」というキーワードを含むファイルが2005年10月1日に初出現し、2005年11月30日が最終出現であったことを検出することができる。検索処理部２Ｄは、この初出現の時点から最終出現の時点までをリカバリポイント候補リストＤ２として、ホスト１に報告する。
【００５４】
ユーザは、リカバリポイント候補リストＤ２を参照することにより、初出現時点から最終出現時点までの間のいずれかの時点をリカバリポイントとして指定し、ユーザデータボリュームＶ１のリストアを命じることができる。これにより、リストア処理部２Ｅは、ユーザの希望する時点の記憶内容をリストア用ボリュームＶ４に再現させる。
【００５５】
なお、後述の実施例に示すように、例えば、ユーザデータボリュームＶ１の全体をリストアさせる必要が無い場合、記憶制御装置２は、一時リストア領域Ｖ３に記憶されたファイルをホスト１に提供することもできる。
【００５６】
本実施形態では、このように構成されるため、リカバリさせるべきポイントをユーザが認識していない場合でも、ユーザが覚えている僅かな情報を手かがりとして、適切なリカバリポイントの候補を提示することができる。従って、ユーザは、試行錯誤しながらユーザデータボリュームＶ１の全体をリストアさせる必要がなく、比較的簡単かつ速やかに、所望のファイルを入手することができ、使い勝手が向上する。以下、本実施形態を詳細に説明する。
【実施例１】
【００５７】
本発明の実施形態を詳細に説明する。図２は、ストレージシステムのハードウェア構成を簡略化して示す構成説明図である。このストレージシステムは、ホスト１０と記憶制御装置２０とを備えている。ホスト１０と記憶制御装置２０とは、例えば、スイッチ３０を有する通信ネットワークＣＮ１を介して、双方向通信可能に接続されている。
【００５８】
通信ネットワークＣＮ１としては、例えば、TCP/IP（Transmission Control Protocol/Internet Protocol）を用いるLAN（Local Area Network）、FCP（Fibre Channel Protocol）を用いるSAN（Storage Area Network）等を挙げることができる。また、中継装置としてのスイッチ３０を省略して、ホスト１０と記憶制御装置２０とを直接的に接続することもできる。
【００５９】
ホスト１０は、例えば、CPU（Central Processing Unit）１１，メモリ１２，通信インターフェース（図中「I/F」）１３，ユーザインターフェース（図中「UI」）１４を備えたコンピュータ装置として構成される。
【００６０】
メモリ１２は、例えば、ROM（Read Only Memory），RAM（Random Access Memory）、ローカルディスク等を含んで構成可能である。メモリ１２には、例えば、OS（Operating System）やアプリケーションプログラム等のような各種プログラムが記憶される。CPU１１は、メモリ１２に記憶されたプログラムを読み出して実行することにより、各プログラムの機能を実現させる。ユーザインターフェース１４は、例えば、ディスプレイ装置やスピーカー等の情報出力装置と、キーボードスイッチやポインティングデバイス、マイクロフォン等の情報入力装置とを備えることができる。
【００６１】
記憶制御装置２０は、ファイルコントローラ１００，ブロックコントローラ２００，ディスクエンクロージャ３００を備えて構成することができる。なお、後述の実施例に示すように、ファイルコントローラ１００とブロックコントローラ２００とを一つのコントローラに統合させることもできる。
【００６２】
ファイルコントローラ１００は、「コントローラ」または「第１コントローラ」に対応する。ファイルコントローラ１００は、ファイル単位でのデータ入出力を管理するコンピュータ装置として構成される。ファイルコントローラ１００は、通信経路ＣＮ２を介して、ブロックコントローラ２００と双方向通信可能に接続されている。この通信経路ＣＮ２は、例えば、FCPを用いるファイバケーブル（SAN）のように構成される。
【００６３】
ファイルコントローラ１００は、例えば、MPU（Micro Processing Unit）１１０，メモリ１２０，フロントエンドインターフェース（以下、インターフェースを「I/F」と略記する場合がある）１３０，バックエンドI/F１４０及びメモリコントローラ１５０を備えて構成される。
【００６４】
メモリ１２０は、例えば、ROMやRAM等の半導体メモリから構成することができ、MPU１１０によって実行される各種プログラムを記憶している。また、メモリ１２０には、キャッシュ領域も備えており、このキャッシュ領域は、ホスト１０やブロックコントローラ２００との間のデータ通信等に使用される。
【００６５】
フロントエンドI/F１３０は、ホスト１０との間で、ファイルレベルのデータ通信（ファイル単位のデータ通信）を行うものである。バックエンドI/F１４０は、ブロックコントローラ２００との間で、ブロックレベルのデータ通信（ブロック単位のデータ通信）を行うものである。メモリコントローラ１５０は、MPU１１０，各フロントエンドI/F１３０，各バックエンドI/F１４０，メモリ１２０を互いに接続させるように、内部の通信経路を制御する。
【００６６】
ホスト１０からフロントエンドI/F１３０を介して受信したライトデータは、メモリ１２０にいったん記憶される。そして、バックエンドI/F１４０は、ライトデータの書込み先アドレスを論理ブロックアドレス（LBA）に変換した後、ライトデータをブロックコントローラ２００に送信する。なお、アドレス変換をフロントエンドI/F１３０で行った後で、メモリ１２０に記憶させてもよい。また、アドレス変換をMPU１１０が行う構成でもよい。
【００６７】
ブロックコントローラ２００からバックエンドI/F１４０を介して受信されたブロックデータは、メモリ１２０にいったん記憶される。そして、フロントエンドI/F１３０は、論理ブロックアドレスをファイルレベルのアドレスに変換してファイルデータとしてまとめ、このデータをホスト１０に送信する。なお、ブロックデータからファイルデータへの変換をバックエンドI/F１４０で行ってから、メモリ１２０に記憶させてもよい。また、ファイルデータへの変換処理をMPU２１０で行ってもよい。
【００６８】
ブロックコントローラ２００は、「コントローラ」または「第２コントローラ」に対応する。ブロックコントローラ２００は、通信経路ＣＮ３を介して、ディスクエンクロージャ３００と双方向通信可能に接続される。この通信経路ＣＮ３は、ＣＮ２と同様に、FCPを用いたファイバケーブル（SAN）のように構成される。
【００６９】
ブロックコントローラ２００は、ブロック単位でのデータ入出力を管理するコンピュータ装置である。ブロックコントローラ２００は、ファイルコントローラ１００と同様に、例えば、MPU２１０，メモリ２２０，フロントエンドI/F２３０，バックエンドI/F２４０及びメモリコントローラ２５０を備えて構成することができる。
【００７０】
メモリ２２０には、MPU２１０によって実行される各種プログラムが記憶されている。また、前記メモリ１２０と同様に、メモリ２２０は、キャッシュ領域も備えている。このキャッシュ領域は、ファイルコントローラ１００やディスクエンクロージャ３００との間のデータ授受に使用される。
【００７１】
フロントエンドI/F２３０は、ファイルコントローラ１００との間でブロックレベルのデータ通信を行うものである。バックエンドI/F２４０は、ディスクドライブ３１０との間でブロックレベルのデータ通信を行うものである。メモリコントローラ２５０は、MPU２１０，各フロントエンドI/F２３０，各バックエンドI/F２４０，メモリ２２０を互いに接続させるように、内部の通信経路を制御する。
【００７２】
ファイルコントローラ１００からフロントエンドI/F２３０を介して受信されたライトデータは、メモリ２２０にいったん記憶される。そして、バックエンドI/F２４０は、ライトデータの論理ブロックアドレスを各ディスクドライブ３１０の物理アドレスに変換し、所定のディスクドライブ３１０に書き込ませる。ディスクドライブ３１０から読み出されたデータは、バックエンドI/F２４０によって論理ブロックアドレスに変換され、メモリ２２０に記憶される。フロントエンドI/F２３０は、そのデータをメモリ２２０から読み出し、ファイルコントローラ１００に転送する。
【００７３】
ディスクエンクロージャ３００は、例えば、「記憶装置」または「ディスクアレイ記憶装置」等のように表現可能である。ディスクエンクロージャ３００は、アレイ状に配設された複数のディスクドライブ３１０を備えている。これらディスクドライブ３１０は、「記憶デバイス」に該当する。
【００７４】
ディスクドライブ３１０は、例えば、ハードディスクドライブ、半導体メモリドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープドライブ等のような種々の記憶デバイスとして構成可能である。また、ハードディスクドライブの場合、例えば、FC（Fibre Channel）ディスク、SATA（Serial AT Attachment）ディスク、SCSI（Small Computer System Interface）ディスクのように、種々の種類のハードディスクドライブを利用することができる。さらに、ディスクエンクロージャ３００内に、異なる種類の記憶デバイスを混在させることもできる。
【００７５】
例えば、４台や８台等のような所定数のディスクドライブ３１０によって、一つのグループが構成される。このグループをRAIDグループまたはパリティグループと呼ぶ。RAIDグループに参加する各ディスクドライブ３１０は、それぞれ物理的な記憶領域を提供し、これら物理的な記憶領域の集合体が形成される。従って、RAIDグループは、物理的記憶デバイスと呼ぶこともできる。RAIDレベルによっても相違するが、グループに参加する各ディスクドライブ３１０のうち、一つまたは複数のディスクドライブ３１０は、パリティデータの格納に使用される。
【００７６】
RAIDグループの物理的記憶領域には、一つまたは複数の論理ボリュームを設定することができる。論理ボリュームは、ファイルコントローラ１００のフロントエンドI/F１３０が有するポートに割り当てられ、ホスト１０によってアクセスされる対象となる。論理ボリュームは、論理的記憶デバイスと呼ぶことができる。
【００７７】
ストレージシステムの機能構成を説明する前に、図３，図４を参照して、ファイルコントローラ１００とブロックコントローラ２００等との配置関係を説明する。図３（ａ）に示すように、一つの制御用筐体内にファイルコントローラ１００及びブロックコントローラ２００を設け、ディスクエンクロージャ３００は別筐体として構成し、これら各筐体間をファイバケーブル等で接続することができる。
【００７８】
図３（ｂ）に示すように、同一筐体内に、ファイルコントローラ１００，ブロックコントローラ２００及びディスクエンクロージャ３００をそれぞれ設けてもよい。図３（ｃ）に示すように、ファイルコントローラ１００を記憶制御装置２０の筐体から分離させ、ファイルコントローラ１００とブロックコントローラ２００及びディスクエンクロージャ３００をネットワークを介して接続してもよい。
【００７９】
図４（ｄ）に示すように、ファイルコントローラ１００を記憶制御装置２０の筐体から分離し、スイッチ３０内にファイルコントローラ１００を設けてもよい。また、図４（ｅ）に示すように、ファイルコントローラ１００をホスト１０内に設けてもよい。
【００８０】
図５を参照して、ストレージシステムの機能構成を説明する。ホスト１０は、例えば、アプリケーションプログラム４１０と、リカバリポイント検索用インターフェース（以下、検索用インターフェースと略記する場合がある）４２０とを備えている。アプリケーションプログラム４１０は、図１中のアプリケーションプログラム１Ａに対応する。アプリケーションプログラム４１０としては、例えば、データベースや顧客管理プログラム、文書作成プログラム等を挙げることができる。
【００８１】
検索用インターフェース４２０は、図１中のリカバリポイント検索要求発行部１Ｂ及びリカバリ指示部１Ｃに対応する。検索用インターフェース４２０は、リカバリポイントの調査を記憶制御装置２０に指示すると共に、選択したリカバリポイントを指定してリカバリを命じることができる。リカバリポイントの調査は、検索要求６００として、記憶制御装置２０に与えられる。この検索要求６００は、図１中の検索要求Ｄ１に対応する。また、リカバリポイントの調査結果は、リカバリポイントの候補リスト７００として、ホスト１０に送信される。この候補リスト７００は、図１中の候補リストＤ２に対応する。
【００８２】
ファイルコントローラ１００は、例えば、ファイルＲ／Ｗ処理部４３０，部分リストア処理部４４０，データ検索処理部４５０，ジャーナルリード機能４６０及び一時リストア領域５４０を、備えている。
【００８３】
ファイルＲ／Ｗ処理部４３０は、ホスト１０からのアクセス要求に応じて、ファイルレベルのデータ読み書きを行うためのものである。部分リストア処理部４４０は、検索要求６００で示されたリカバリ対象のファイルについてのみ更新履歴毎にそれぞれリストアし、リストアしたファイルを一時リストア領域５４０に記憶させる。データ検索処理部４５０は、一時的にリストアされた特定のファイル群について、検索要求６００中の検索条件に合致するか否かを検査する。データ検索処理部４５０は、検索条件に合致する期間を特定し、この特定された期間をリカバリポイント候補リスト７００として、ホスト１０に送信する。ジャーナルリード機能４６０については、後述する。
【００８４】
一時リストア領域５４０は、「一時的復元領域」に該当し、図１中の一時リストア領域Ｖ３に対応する。この一時リストア領域５４０は、ユーザデータボリューム５１０の全範囲のうち、リカバリ対象として指定された範囲についての一時的なリストアを行うために使用される。一時リストア領域５４０は、上述の論理ボリュームとして構成することもできるし、ファイルコントローラ１００のメモリ１２０内に仮想的なボリュームとして設けることもできる。
【００８５】
ブロックコントローラ２００は、例えば、ブロックＲ／Ｗ処理部４７０，ジャーナル作成処理部４８０，リストア処理部４９０及びジャーナルアクセス機能４６１を備えることができる。ブロックＲ／Ｗ処理部４７０は、ブロックレベルのデータ読み書きを行うものである。ジャーナル作成処理部４８０は、ユーザデータボリューム５１０に記憶されているデータが更新された場合に、ジャーナルデータを作成して管理するものである。ジャーナルデータは、ジャーナルボリューム５２０に記憶される。リストア処理部４９０は、検索用インターフェース４２０から指示されたリカバリポイントまで、ユーザデータボリューム５１０の記憶内容を復元させるものである。復元された記憶内容は、リストア用ボリューム５３０に記憶される。
【００８６】
ジャーナルリード機能４６０及びジャーナルアクセス機能４６１は、ファイルコントローラ１００がジャーナルボリューム５２０からジャーナルデータを取得するために設けられた機能である。ファイルコントローラ１００内のジャーナルリード機能４６０は、ブロックコントローラ２００内のジャーナルアクセス機能４６１を介して、ジャーナルボリューム５２０にアクセスすることができる。部分リストア処理部４４０は、ジャーナルリード機能４６０及びジャーナルアクセス機能４６１を介して、ジャーナルボリューム５２０から所定のジャーナルデータを取得し、部分的なリストアを行う。ジャーナルリード機能４６０及びジャーナルアクセス機能４６１は、例えば、「ファイルコントローラがジャーナルデータをブロックコントローラを介して取得するためのジャーナルデータ取得機能（取得部）」と呼ぶことができる。
【００８７】
ディスクエンクロージャ３００は、例えば、ユーザデータボリューム５１０と、ジャーナルボリューム５２０及びリストア用ボリューム５３０を備えている。ユーザデータボリューム５１０は、「データボリューム」に該当し、図１中のユーザデータボリュームＶ１に対応する。ジャーナルボリューム５２０は、「ジャーナルボリューム」または「更新データ管理用ボリューム」に対応し、図１中のジャーナルボリュームＶ２に対応する。リストア用ボリューム５３０は、ユーザデータボリューム５１０の全体を、ユーザから指定されたリカバリポイントの状態に回復させるために使用される。
【００８８】
図６を参照して、ジャーナルボリューム５２０の構成を説明する。ジャーナルボリューム５２０は、ジャーナルレコード領域５２１と、データ領域５２２とに大別される。ジャーナルレコード領域５２１は、ジャーナルデータを管理するための管理領域である。データ領域５２２は、ジャーナルデータを記憶するための領域である。
【００８９】
ジャーナルレコード領域５２１の構成例を、図６中に表形式で示す。ジャーナルレコード領域５２１は、ユーザデータボリューム５１０の一回のデータ更新毎に、例えば、ジャーナル識別子と、記録日時と、パス名と、オフセットと、サイズと、データ記憶位置とを対応付けることにより、構成される。
【００９０】
ジャーナル識別子とは、記憶制御装置２０内でデータ更新を一意に特定するための識別情報である。ジャーナル識別子は、例えば、連続番号あり、ユーザデータボリューム５１０が更新されるたびに、その番号が１つずつ増加する。記録日時とは、ジャーナルデータがジャーナルボリューム５２０に記憶された日時、即ち、ユーザデータボリューム５１０へのデータ更新が行われた日時を示す情報である。
【００９１】
パス名とは、更新されたファイルを特定するためのファイル識別情報である。パス名は、ルートディレクトリ（トップディレクトリ）から、更新されたファイルに辿り着くためのファイルシステム上の経路を示す。オフセットとは、そのファイルにおいて、更新されたデータの位置を示すアドレス情報である。サイズとは、更新されたデータのサイズを示す更新量情報である。データ記憶位置とは、更新されたデータ（更新される直前のデータ）がデータ領域５２２に記憶されている位置を示す格納先アドレス情報である。
【００９２】
図７は、ジャーナルデータを用いて、部分的なリストアを行う様子を模式的に示す説明図である。説明の便宜上、ここでは、リカバリ対象範囲として「FILE_D」が指定されているものとする。
【００９３】
部分リストア処理部４４０は、ジャーナルレコード領域５２１の先頭から終端に向けて、ジャーナルレコードの「パス名」を順番に検査していく。そして、ファイル名「FILE_D」に関するジャーナルレコードを発見した場合、そのデータ記憶位置を参照し、データ領域５２２からデータを読み出して一時リストア領域５４０に記憶させる。部分リストア処理部４４０は、読み出したデータを「オフセット」アドレスの位置に配置する。
【００９４】
図７に示す例では、ジャーナル識別子「0011」からデータ「B」が、ジャーナル識別子「0013」及び「0015」からそれぞれデータ「O」が、ジャーナル識別子「0016」からデータ「K」が、それぞれ読み出されて、一時リストア領域５４０にファイルのオフセットアドレスに従って配置される。これにより、一時リストア領域５４０には、「BOOK」という単語を有するファイル「FILE_D」が再現される。
【００９５】
一つ一つのジャーナルデータは、そのファイルについて更新されたデータのみを有するため、各ジャーナルデータそれ自体では、意味のあるキーワード等を発見することはできない。しかし、部分リストア処理部４４０によって、リカバリ対象として指定された目的のファイル単位で復元するため、後述のキーワード検索を行うことができる。
【００９６】
また、上述のように、部分リストア処理部４４０は、リカバリ対象として指定されたファイルについてのみ、ユーザデータボリューム５１０の内容を部分的にリストアする。この指定されたファイルが、ユーザデータボリューム５１０内の他のファイルと関連している場合でも、部分リストア処理部４４０は、ファイル間の関連性や依存関係を考慮することなく、リカバリ対象として指定された目的のファイルだけをリストアする。
【００９７】
なお、後述のように、検索要求６００には、複数のリカバリ対象範囲を指定することができる。従って、特定のファイル間に関連性等がある場合、ユーザは、関連するファイルをそれぞれ指定して、それぞれリストアさせることもできる。
【００９８】
図８は、検索要求６００の構成例を模式的に示す説明図である。図８（ａ）に示すように、検索要求６００は、例えば、リカバリ対象範囲６１０と、リカバリ対象期間６２０と、検索条件６３０と、論理演算条件６４０とを備えることができる。なお、これ以外に、各検索要求６００を識別するための検索要求識別情報や送信先アドレス等が設けられて、ホスト１０から記憶制御装置２０に送信される。
【００９９】
これら各情報６１０〜６４０の全てについて有意の値（有効な値、文字列）が設定されている必要はない。少なくともリカバリ対象範囲６１０及び検索条件６３０に意味のある値が設定されていればよい。その他の情報６２０，６４０は、それらを使用する場合に、有効な値が設定されていればよい。
【０１００】
リカバリ対象範囲６１０には、目的のファイル（ディレクトリを含む）を特定するためのパス名が設定される。リカバリ対象期間６２０は、後述の実施例で好適に用いられるもので、リカバリ対象のファイルの時期的条件を特定可能な場合に、その時期を示す値が設定される。検索条件６３０には、ユーザが選択または入力する任意の文字列やデータ、ファイルのタイムスタンプが設定される。論理演算条件６４０には、例えば、「ＡＮＤ」条件や「ＯＲ」条件等のような論理演算式が設定される。
【０１０１】
図８（ｂ）に示すように、リカバリ対象範囲６１０にファイルのパス名を設定し、検索条件６３０に任意のキーワードを設定することにより、検索要求６００を生成することができる。このような検索要求６００を発行することにより、目的のファイルが所定のキーワードを含んでいる時期を検出することができる。
【０１０２】
図８（ｃ）に示すように、リカバリ対象範囲６１０にディレクトリのパス名を設定し、検索条件６３０にファイル名を設定することもできる。このような検索要求６００を発行することにより、所定のディレクトリ内に存在したはずの消失ファイルを検出することができる。
【０１０３】
図８（ｄ）に示すように、複数のリカバリ対象範囲６１０及び検索条件６３０のペアと、これらペア間の論理演算条件６４０とを設定することもできる。このような検索要求６００を発行することにより、それぞれ異なるキーワードを含むファイル同士が所定の論理演算条件を満たしている期間を検出することができる。
【０１０４】
図８（ｅ）に示すように、複数のリカバリ対象範囲６１０とリカバリ対象期間６２０及び検索条件６３０のペアと、これらペア間の論理演算条件６４０とを設定してもよい。このような検索要求６００を発行することにより、図８（ｄ）で述べたと同様に、それぞれ異なるキーワードを含むファイル同士が所定の論理条件を満たしている期間を検出することができる。図８（ｅ）に示す例では、リカバリ対象期間６２０を設定しているため、部分リストア処理部４４０による部分リストア処理の範囲を時期的に絞り込むことができ、より高速に部分リストア処理を行うことができる。
【０１０５】
図９は、リカバリポイントの候補リスト７００の構成例を示す説明図である。図９（ａ）に示すように、リカバリポイント候補リスト（以下、「候補リスト」と略す場合がある）７００は、例えば、初出現時刻７１０と、最終出現時刻７２０とを含んで構成することができる。
【０１０６】
初出現時刻７１０とは、リカバリ対象のファイルが検索条件を満たす最初のポイント（時点）を示す。最終出現時刻７２０とは、リカバリ対象のファイルが検索条件を最後に満たすポイントを示す。例えば、ある時刻Ｔｆに作成されたファイルが時刻Ｔｌに削除された場合、初出現時刻７１０はＴｆとなり、最終出現時刻７２０はＴｌとなる。一つの初出現時刻７１０と一つの最終出現時刻７２０とで、一つのペアを構成する。このペア７１０，７２０によって、リカバリ対象のファイルが検索条件を満たす期間が示される。
【０１０７】
図９（ｂ）に示すように、初出現時刻７１０及び最終出現時刻７２０は、西暦年月日及び時分秒の形式で表現することができる。この年月日時分秒の形式で表現することにより、ユーザは、直感的に理解することができる。
【０１０８】
これに代えて、例えば、毎日所定量ずつカウントアップするカウンタタイマの値を用いてもよい。即ち、記憶制御装置２０内のカウンタタイマの値を候補リスト７００に設定することもできる。カウンタタイマの値を用いる場合でも、検索用インターフェース４２０に表示させる場合は、西暦年月日等の形式に変換することができる。
【０１０９】
図９（ｃ）に示すように、候補リスト７００に、初出現時刻７１０及び最終出現時刻７２０のペアが複数含まれる場合もある。例えば、リカバリ対象のファイルが、ある時期に検索条件を満たした後、データ更新されて検索条件に合致しなくなり、さらに、その後のデータ更新によって再び検索条件を満たすような場合である。この場合、候補リスト７００には、リカバリ対象のファイルが検索条件に合致する全ての期間が含まれる。
【０１１０】
このように、候補リスト７００は、初出現時刻７１０と最終出現時刻７２０とにより、リカバリ対象のファイルが検索条件を満たす始期（初出現時刻７１０）と終期（最終出現時刻７２０）とを特定し、検索条件に合致する期間を表現している。これにより、検索条件に合致する期間を比較的少ないデータ量で特定することができる。しかし、本発明はこれに限らず、リカバリ対象のファイルが検索条件に合致する全てのポイントを候補リスト７００に含める構成でもよい。例えば、あるファイルが、時刻Ｔ１，Ｔ２，Ｔ３，Ｔ４，Ｔ５，．．．にそれぞれ更新され、このうち、時刻Ｔ１，Ｔ２，Ｔ３において、検索条件を満たしている場合、これらの時刻Ｔ１，Ｔ２，Ｔ３を全て候補リスト７００に含むことができる。図９に示す例では、Ｔ１，Ｔ３のみが候補リスト７００に含まれる。
【０１１１】
図１０は、リカバリポイント検索用インターフェース４２０がユーザに提供するユーザインターフェースの一例を示す説明図である。図１０（ａ）は、リカバリポイント検索要求６００を発行させるための画面Ｇ１０である。この画面Ｇ１０は、例えば、「リカバリポイント検索条件指定画面」または「リカバリポイント検索要求発行画面」等と呼ぶことができる。
【０１１２】
検索条件指定画面Ｇ１０には、例えば、リカバリ対象範囲指定部Ｇ１１と、リカバリ対象期間指定部Ｇ１２と、検索条件指定部Ｇ１３と、論理演算条件指定部Ｇ１４と、検索実行ボタンＢ１１及びキャンセルボタンＢ１２を含めることができる。
【０１１３】
リカバリ対象範囲指定部Ｇ１１は、ユーザがリカバリを希望するファイルを指定するためのものである。この指定部Ｇ１１では、例えば、いわゆるプルダウンメニュー形式で、トップディレクトリ配下の各ディレクトリを表示させ、所望のファイルを選択できるようになっている。
【０１１４】
リカバリ対象期間指定部Ｇ１２は、リカバリ対象のファイルをリストアさせる時期を指定するものである。この指定部Ｇ１１では、プルダウンメニュー形式で、調査対象の時期的範囲を選択することができる。
【０１１５】
検索条件指定部Ｇ１３は、リカバリ対象のファイルが有するべきキーワードやファイル名を指定するものである。ユーザは、任意の文字列（英数字や記号等）を入力することができる。ユーザは、プルダウンメニュー形式でファイル名を選択することにより、選択されたファイルのデータの全部または一部を、検索条件として指定することもできる。ファイルのデータそのものを検索条件として指定することにより、後述の実施例のように、コンピュータウイルスに感染したファイルについて、感染前のリカバリポイントを検索することもできる。
【０１１６】
論理演算条件指定部Ｇ１４は、ＡＮＤやＯＲ等の論理演算条件を指定するためのものである。検索実行ボタンＢ１１は、Ｇ１１〜Ｇ１４で指定された値を設定した検索要求６００を発行させるためのものである。キャンセルボタンＢ１２は、検索要求６００の発行を取り消すためのものである。
【０１１７】
図１０（ｂ）は、リカバリポイントの検索結果（調査結果）を表示するための画面Ｇ２０を示す。この検索結果画面Ｇ２０は、記憶制御装置２０からホスト１０に送信されたリカバリポイント候補リスト７００に基づいて生成される。
【０１１８】
検索結果画面Ｇ２０は、例えば、リカバリ対象範囲表示部Ｇ２１と、検索条件表示部Ｇ２２と、初出現時刻表示部Ｇ２３と、最終出現時刻Ｇ２４と、リカバリポイント指定部Ｇ２５と、リカバリ実行ボタンＢ２１及びキャンセルボタンＢ２２を備えて構成することができる。
【０１１９】
リカバリ対象範囲表示部Ｇ２１は、上述のリカバリ対象範囲指定部Ｇ１１で指定されたファイル名を表示させるものである。検索条件表示部Ｇ２２は、上述の検索条件指定部Ｇ１３で指定された検索条件を表示させるものである。なお、リカバリ対象期間や論理演算条件も画面Ｇ１０で指定されている場合、これらリカバリ対象期間及び論理演算条件がどのように指定されたかを、画面Ｇ２０に表示させることができる。
【０１２０】
初出現時刻表示部Ｇ２３は、候補リスト７００内の初出現時刻７１０に設定された値を表示させるものである。同様に、最終出現時刻表示部Ｇ２４は、候補リスト７００内の最終出現時刻７２０に設定された値を表示させるものである。
【０１２１】
リカバリポイント指定部Ｇ２５は、ユーザの希望するリカバリポイントを指定するためのものである。例えば、プルダウンメニュー形式で表示される複数のリカバリポイント候補の中から、ユーザは、所望のリカバリポイントをいずれか一つ選択できる。
【０１２２】
リカバリ実行ボタンＢ２１は、ユーザの指定したリカバリポイントまでユーザデータボリューム５１０の記憶内容をリストアさせるためのボタンである。キャンセルボタンＢ２２は、リストアの実行を取り消すためのボタンである。なお、図１０に示す画面及びその説明は一例であって、本発明は、上記の構成に限定されない。
【０１２３】
次に、図１１〜図１３に基づいて、ストレージシステムの動作を説明する。以下に述べる各フローチャートは、処理の概要を示すもので、実際のコンピュータプログラムとは相違する。また、フローチャートの説明では、ステップを「Ｓ」と略記する。
【０１２４】
図１１は、ホスト１０からのアクセス要求を記憶制御装置２０が処理するためのコマンド処理を示すフローチャートである。ホスト１０は、例えば、ライトコマンドを用いてデータの更新を要求したり（ライト要求）、リードコマンドを用いてデータの読み出しを要求することができる（リード要求）。上述のように、ファイルコントローラ１００とブロックコントローラ２００との協働作業によって、コマンド処理が行われるが、ここでは、説明の便宜上、記憶制御装置２０を処理の主体として説明する。
【０１２５】
記憶制御装置２０は、ホスト１０からのコマンドを受信すると、そのコマンドのタイプを判別する（Ｓ１１）。受信したコマンドがリードコマンドの場合は、メモリのキャッシュ領域（以下、キャッシュメモリとも呼ぶ）に、ホスト１０から要求されたデータが記憶されているか否かを判定する（Ｓ１２）。
【０１２６】
ホスト１０から要求されたデータがキャッシュメモリに記憶されている場合（S12:YES）、記憶制御装置２０は、キャッシュメモリからそのデータを読み出して、ホスト１０に送信する（Ｓ１５）。ホスト１０から要求されたデータがキャッシュメモリに記憶されていない場合（S12:NO）、記憶制御装置２０は、ホスト１０から要求されたデータをディスクドライブ３１０から読み出す（Ｓ１３）。記憶制御装置２０は、この読み出されたデータをキャッシュメモリに記憶させた後（Ｓ１４）、ホスト１０に送信する（Ｓ１５）。
【０１２７】
ホスト１０からライトコマンドを受信した場合、記憶制御装置２０は、キャッシュメモリにライトデータを記憶させるための領域を確保し、この確保された領域にライトデータを記憶させる（Ｓ１６）。記憶制御装置２０は、ライトデータをキャッシュメモリに記憶させた後、ホスト１０にライトコマンドの処理が完了した旨を通知する（Ｓ１７）。
【０１２８】
記憶制御装置２０は、ライトコマンドによるデータ更新に基づいて、ジャーナルデータを生成し（Ｓ１８）、生成したジャーナルデータをジャーナルボリューム５２０に記憶させる（Ｓ１９）。即ち、ホスト１０がユーザデータボリューム５１０の記憶内容を更新するたびに、ジャーナルデータが生成されて保存される。
【０１２９】
記憶制御装置２０は、適当なタイミングを見計らって、キャッシュメモリに記憶されたライトデータを、所定のディスクドライブ３１０に記憶させる（Ｓ２０）。所定のディスクドライブ３１０とは、ライトコマンドで明示されたアドレスに対応する記憶領域を備えたディスクドライブである。
【０１３０】
ライトデータをキャッシュメモリに記憶させた後、そのライトデータをディスクドライブ３１０に書き込むよりも前に、ホスト１０にライトコマンドの処理完了を通知することにより、記憶制御装置２０の応答性能を高めることができる。但し、これに限らず、ライトデータをディスクドライブ３１０に記憶させた後で、ホスト１０にライトコマンドの処理が完了した旨を通知する構成でもよい。
【０１３１】
ホスト１０から受信したコマンドがライトコマンドまたはリードコマンドのいずれでも無い場合、記憶制御装置２０は、そのコマンドに応じた処理を行う（Ｓ２１）。その他のコマンドとしては、例えば、記憶制御装置２０の状態を問い合わせるための照会コマンド等を挙げることができる。
【０１３２】
図１２は、リカバリポイントを検索する処理を示すフローチャートである。記憶制御装置２０は、ホスト１０からリカバリポイント検索要求６００が発行されたか否かを判定している（Ｓ３１）。検索要求６００が発行された場合（S31:YES）、記憶制御装置２０は、検索要求６００で明示されたリカバリ対象のファイル毎に一時リストア領域５４０を確保し、各ファイルに１つずつ一時リストア領域５４０を割り当てる（Ｓ３２）。
【０１３３】
次に、記憶制御装置２０は、リカバリポイントリストを初期化する（Ｓ３３）。リカバリポイントリストは、初出現時刻及び最終出現時刻を検出するための一時的な作業用ファイルである。リカバリポイントリストは、一時リストア領域５４０毎に、それぞれ１つずつ用意される。
【０１３４】
記憶制御装置２０は、図６で述べたジャーナルレコード領域５２１の各ジャーナルレコードを先頭から終端に向けて、順番に以下の処理を繰り返す（Ｓ３４，Ｓ３９）。記憶制御装置２０は、ジャーナルレコード領域５２１から読出した一つのジャーナルレコードについて、このジャーナルレコードに記録されているファイル名（パス名）と検索要求６００で明示されたファイル名（パス名）とを比較する（Ｓ３５）。
【０１３５】
両方のファイル名が一致する場合（S35:YES）、そのジャーナルレコードによって管理されているジャーナルデータをデータ領域５２２から読み出して、一時リストア領域５４０に記憶させる（Ｓ３６）。
【０１３６】
記憶制御装置２０は、一時リストア領域５４０にリストアされたファイルについて、検索要求６００で明示された検索条件に合致するか否かを判定する（Ｓ３７）。検索条件に合致する場合（S37:YES）、記憶制御装置２０は、その一時的にリストアされたファイルの更新時刻（ジャーナルレコード中の記録日時）を、リカバリポイントリストに記憶させる（Ｓ３８）。このリカバリポイントリストを更新させる処理については、図を改めて後述する。
【０１３７】
このように、記憶制御装置２０は、リカバリ対象のファイルだけをリストアさせながら、検索条件に合致するか否かを検査していく。なお、リカバリ対象のファイルを全てリストアさせた後で、検索条件に一致するか否かを検査する構成としてもよい。
【０１３８】
記憶制御装置２０は、リカバリ対象のファイルに関する全てのジャーナルレコードについて、リストア処理及び検索処理を終えた後、リカバリポイントリストの記録内容を候補リスト７００として、ホスト１０に送信する（Ｓ４０）。
【０１３９】
図１３は、図１２中にＳ３８で示されたリカバリポイントリスト更新処理を示すフローチャートである。記憶制御装置２０は、検索条件に合致するファイルを発見した場合、このファイルの更新時刻（即ち、リカバリポイント）が、初めて出現したか否かを判定する（Ｓ３８１）。その更新時刻が初めて出現した更新時刻である場合（S381:YES）、記憶制御装置２０は、その更新時刻を初出現時刻としてリカバリポイントリストに記録する（Ｓ３８２）。これに対し、その更新時刻が初めて出現した時刻ではない場合（S381:NO）、記憶制御装置２０は、その更新時刻を最終出現時刻としてリカバリポイントリストに記録する（Ｓ３８３）。リカバリポイントリストの最終出現時刻は、新たな更新時刻が発見されるたびに更新されていく。
【０１４０】
本実施例は上述のように構成されるので、以下の効果を奏する。本実施例では、ホスト１０に、検索要求６００を発行するためのリカバリポイント検索用インターフェース４２０を設ける。そして、記憶制御装置２０には、ユーザデータボリューム５１０の更新履歴を管理するためのジャーナル作成処理部４８０と、検索要求６００に基づいてユーザデータボリューム５１０に記憶されている全ファイルのうちリカバリ対象のファイルのみを、更新履歴毎に復元して、一時リストア領域５４０に記憶させる部分リストア処理部４４０と、一時リストア領域５４０にリストアされたファイルが検索条件に合致するか否かを判定し、検索条件に合致する期間をリカバリポイント候補リスト７００としてホスト１０に通知するデータ検索処理部４５０を、設ける。従って、本実施例では、リカバリさせるべきポイントが不明なユーザに対して、リカバリポイントの候補を提示することができ、適切なリカバリポイントの選択を支援して使い勝手を向上させることができる。
【０１４１】
本実施例では、リカバリポイント候補リスト７００に基づいて、ユーザデータボリューム５１０のリカバリを要求できる構成とした。従って、ユーザは、比較的簡単な操作で、ユーザデータボリューム５１０の記憶内容を所望の時点に回復させることができ、使い勝手が向上する。
【０１４２】
本実施例では、初出現時刻７１０と最終出現時刻７２０とによって、リカバリ対象のファイルが検索条件に合致する期間を特定する構成とした。従って、リカバリ対象のファイルに対するデータ更新の頻度が多い場合でも、リカバリポイント候補リスト７００のデータ量を少なくすることができる。
【実施例２】
【０１４３】
図１４，図１５に基づいて、第２実施例を説明する。なお、以下に述べる各実施例は、第１実施例の変形例に該当する。本実施例では、ファイルを特定するための情報として、パス名に代えて、ファイルのハッシュ値を採用する。
【０１４４】
図１４は、ジャーナルレコードの構成を示す説明図である。本実施例では、ファイルのパス名に代えて、ファイル名（パスの最後に出現するファイルの名称そのもの）とハッシュ値の組合せを使用する。ファイルハッシュ値は、例えば、ファイルのパス名をハッシュ関数５２３に入力することにより得られる。異なるファイル同士が偶然同一のファイルハッシュ値を有する場合に備えて、単純なファイル名も参照できるようにしている。
【０１４５】
図１５は、本実施例によるリカバリポイント検索処理を示すフローチャートである。このフローチャートは、図１２で述べたフローチャートと共通のステップを備える。そこで、共通するステップの説明を省略し、本実施例に特徴的なステップを中心に説明すると、本実施例では、ジャーナルレコードに記録されたファイルハッシュ値と、リカバリ対象として指定されたファイルから得られるハッシュ値とを比較し、両者が一致するか否かを判定する（Ｓ３５Ａ）。
【０１４６】
このように構成される本実施例は、上述した第１実施例と同様の作用効果を得ることができる。これに加えて、本実施例では、ファイルを特定するための情報として、ファイルハッシュ値を使用するため、トップディレクトリから目的のファイルまでのパス名（いわゆるフルパス）を使用する場合に比べると、データ量を低減することができる。これにより、ジャーナルレコードのデータサイズを小さくすることができ、より効率的にジャーナルデータを管理することができる。
【実施例３】
【０１４７】
図１６，図１７に基づいて、第３実施例を説明する。本実施例では、ファイルコントローラ１００とブロックコントローラ２００とを、単一のコントローラ１０１に統合させている。
【０１４８】
図１６は、本実施例によるストレージシステムのハードウェア構成を示す構成説明図である。本実施例の記憶制御装置２０Ａは、単一のコントローラ１０１を備える。このコントローラ１０１は、上述したファイルコントローラ１００及びブロックコントローラ２００の機能を実現するもので、例えば、「統合コントローラ」と呼ぶことができる。
【０１４９】
コントローラ１０１は、ファイルコントローラ１００と同様に、MPU１１１と、メモリ１２１と、フロントエンドI/F１３１と、バックエンドI/F１４１と、メモリコントローラ１５１を備える。これら各部は、ファイルコントローラ１００で述べた各部１１０〜１５０と略同様である。
【０１５０】
しかし、このコントローラ１０１は、ホスト１０との間ではファイルレベルのデータ通信を行い、ディスクエンクロージャ３００との間では、ブロックレベルのデータ通信を行うようになっている。このため、バックエンドI/F１４１は、論理ブロックアドレスと物理アドレスとの相互変換を行う機能を備えている。
【０１５１】
図１７は、本実施例によるストレージシステムの機能構成を示す説明図である。本実施例の記憶制御装置２０Ａは、単一のコントローラ１０１を備えるため、第１実施例で述べた各処理部４３０，４４０，４５０，４７０，４８０，４９０は、コントローラ１０１内に設けられている。
【０１５２】
また、本実施例では、単一のコントローラ１０１を用いるため、第１実施例のように、ファイルコントローラ１００がブロックコントローラ２００を介してジャーナルデータを取得するための機能４６０，４６１は、必要ない。
【０１５３】
このように構成される本実施例でも、前記第１実施例と同様の作用効果を得る。これに加えて、本実施例では、単一のコントローラ１０１を用いるため、部品点数を少なくすることができ、また、記憶制御装置２０Ａを小型化することができる。
【実施例４】
【０１５４】
図１８，図１９に基づいて、第４実施例を説明する。本実施例では、リカバリ対象のデータをブロックレベルで指定できるようにしている。
【０１５５】
図１８は、ジャーナルレコードの構成を示す説明図である。本実施例では、ジャーナルデータをブロック単位で管理すべく、LUN（Logical Unit Number）と、オフセットを示す論理ブロックアドレス（LBA）と、サイズとで、ジャーナルデータを特定する。即ち、LUNは、ユーザデータボリューム５１０を特定するための情報であり、LBAは、そのボリュームの先頭アドレスからのオフセット値を示す。
【０１５６】
図１９は、検索要求６００の構成例を示す説明図である。本実施例では、リカバリ対象範囲６１０を、LUN６１１と、オフセットを示すLBA６１２と、データサイズ６１３とによって構成する。これにより、ユーザデータボリューム５１０のうち、特定のブロックだけをリストアして、検索条件に合致するか否かを検査することができる。
【０１５７】
このように構成される本実施例でも、前記第１実施例と同様の作用効果を奏する。これに加えて、本実施例では、ブロックレベルでリカバリ対象の範囲を指定できる。なお、本実施例と第１実施例とを結合させることにより、ファイルレベルまたはブロックレベルのいずれかで、リカバリ対象範囲を指定できる構成が得られる。
【実施例５】
【０１５８】
図２０，図２１に基づいて、第５実施例を説明する。本実施例では、所定周期毎に、ユーザデータボリューム５１０のスナップショット５５０を作成し、このスナップショット５５０とジャーナルボリューム５２０とを利用して、ユーザがリカバリ対象期間を指定できるようにしている。
【０１５９】
ブロックコントローラ２００は、スナップショット作成処理部４８１を備えている。このスナップショット作成処理部４８１は、スナップショットの作成を指示された時点におけるユーザデータボリューム５１０の記憶イメージを作成するものである。この記憶イメージは、スナップショット５５０として保管される。スナップショット５５０は、例えば、毎日、毎週のように予め設定された所定周期毎に作成できる。ユーザの指定した任意の時刻に、スナップショット５５０を作成することもできる。
【０１６０】
図２１は、本実施例によるリカバリポイント検索処理を示すフローチャートである。前記実施例と同様に、本実施例に特徴的な部分を中心に説明する。検索要求６００には、リカバリ対象期間６２０に有効な値が設定されているものとする。
【０１６１】
記憶制御装置は、リカバリポイントリストを初期化した後（Ｓ３３）、ユーザから指定されたリカバリ対象期間に対応するスナップショット５５０を特定し、リカバリ対象期間内のジャーナルレコード群を検出する（Ｓ５０）。以下は、第１実施例と同様に処理を進める。
【０１６２】
このように構成される本実施例も前記第１実施例と同様の作用効果を得る。これに加えて、本実施例では、定期的または不定期に作成されるスナップショット５５０とジャーナルボリューム５２０とを結合させて、リカバリ対象のファイルをリストアさせる期間を特定することができる。これにより、部分リストア処理部４４０やデータ検索処理部４５０は、より少ないジャーナルレコードのみを対象とすればよく、リカバリポイント候補をより早く検出することができる。
【実施例６】
【０１６３】
図２２に基づいて、第６実施例を説明する。本実施例では、一時リストア領域５４０に記憶されたリカバリ対象のファイルを、ホスト１０が利用できるようにしている。図２２は、リカバリポイント検索処理を示すフローチャートである。
【０１６４】
記憶制御装置２０は、リカバリポイントリストをホスト１０に送信した後（Ｓ４０）、一時リストア領域５４０内のデータ（ファイルデータまたはブロックデータ）を、ホスト１０に送信する（Ｓ６０）。従って、ユーザは、ユーザデータボリューム５１０の全体を希望のリカバリポイントまで回復させるよりも前に、リカバリ対象のデータを参照することができる。
【０１６５】
このように構成される本実施例も前記第１実施例と同様の作用効果を奏する。これに加えて、本実施例では、ユーザデータボリューム５１０の全体をリストアさせることなく、一時リストア領域５４０内のデータを確認することができる。従って、例えば、ユーザが、リカバリ対象のデータの単なる参照だけを希望しているような場合、ユーザは、ユーザデータボリューム５１０の全体のリストアが完了するのを待つことなく、目的のデータを利用することができ、使い勝手が向上する。なお、記憶制御装置２０からホスト１０に一時リストア領域５４０内のデータを送信する構成に代えて、ホスト１０から一時リストア領域５４０内のデータへアクセスできるようにした構成でもよい。例えば、メモリ上に仮想ボリュームとして構成された一時リストア領域５４０を、ホスト１０に一時的にマウントし、参照専用で利用させる構成でもよい。
【実施例７】
【０１６６】
図２３に基づいて、第７実施例を説明する。本実施例を含む以下の実施例では、第１実施例の具体的な応用例を示している。本実施例では、ユーザのファイルがコンピュータウイルス（以下「ウイルス」）に感染した場合に、そのファイルを感染前の状態に回復させる場合を示す。
【０１６７】
図２３は、ストレージシステムの全体動作の要部を示すフローチャートである。ホスト１０に実装されたセキュリティ管理プログラムは、ホスト１０が使用するファイル群について、ウイルスに感染しているか否かを検査する（Ｓ１００）。この検査手法は公知であり、かつ、本発明の主題ではないため、その詳細な説明を省略する。
【０１６８】
ファイルがウイルスに感染している場合、セキュリティ管理プログラムは、ホスト１０に、ウイルスに感染しているファイル名を特定して警告を発する（Ｓ１０１）。ホスト１０は、この警告を受領すると、ウイルスに感染しているファイルの存在を認識する（Ｓ１０２）。
【０１６９】
ホスト１０に設けられた検索用インターフェース４２０では、リカバリ対象範囲に、感染したファイルのパス名がユーザによって指定され（Ｓ１０３）、また、検索条件に、ウイルスに感染したファイルのデータが指定される（Ｓ１０４）。
【０１７０】
ホスト１０は、感染したファイルのパス名と感染したデータとを明示する検索要求６００を発行する（Ｓ１０５）。記憶制御装置２０は、第１実施例で述べたように、リカバリ対象として指定された範囲についてのみリストアを行い（Ｓ１０６）、リストアされたファイルに対して、検索条件に一致するか否かを判定する（Ｓ１０７）。ここでは、検索条件としてウイルスに感染したファイルデータそのものが設定されているため、検索条件に一致するファイルとは、ウイルスに感染しているファイルであることを意味する。
【０１７１】
記憶制御装置２０は、リカバリポイントリストを作成し（Ｓ１０８）、リカバリポイント候補リスト７００をホスト１０に送信する（Ｓ１０９）。ホスト１０は、この候補リスト７００に基づいて、リカバリポイント候補を表示させる（Ｓ１１０）。なお、リカバリポイント候補リスト７００とリカバリポイントリストとを区別せずに、両方ともリカバリポイントリストを呼ぶこともできる。
【０１７２】
ホスト１０では、ユーザによって、初出現時刻よりも前の時刻がリカバリポイントとして選択される（Ｓ１１１）。初出現時刻よりも前の時刻であれば、目的のファイルはウイルスに感染していないためである。そこで、ホスト１０は、初出現時刻よりも前のリカバリポイントを指定して、ユーザデータボリューム５１０のリストア（リカバリ）を要求する（Ｓ１１２）。
【０１７３】
記憶制御装置２０は、指定されたリカバリポイントまでユーザデータボリューム５１０の記憶内容を復元し（Ｓ１１３）、リストア用ボリューム５３０とホスト１０との間にパスを設定する（Ｓ１１４）。そして、記憶制御装置２０は、リカバリが完了した旨をユーザに通知する（Ｓ１１５）。これにより、ユーザは、ウイルス感染前の状態のファイルを利用することができる（Ｓ１１６）。
【実施例８】
【０１７４】
図２４に基づいて、第８実施例を説明する。図２４は、ユーザの誤操作等によって消失したファイルを復元させる場合の全体動作を示すフローチャートである。ユーザは、ファイルツリーから目的のファイルが消失していることに気づく。ユーザは、目的のファイルが存在したはずのディレクトリ名だけは、見当がついているものとする。
【０１７５】
ユーザは、目的のファイルを利用するために、ファイル管理プログラムに対して、その目的のファイルが存在するはずの所定のディレクトリについてリスティングを要求する（Ｓ１２０）。ファイル管理プログラムは、指定された所定のディレクトリ内のエントリを、ホスト１０のユーザインターフェース１４に表示させる（Ｓ１２１）。
【０１７６】
ホスト（ユーザ）１０は、所定のディレクトリ内に目的とするファイルが見あたらないことを認識する（Ｓ１２２）。そこで、ホスト１０は、リカバリ対象範囲に所定のディレクトリのパス名を、検索条件に消失したファイルのファイル名をそれぞれ設定して（Ｓ１２３，Ｓ１２４）、検索要求６００を発行する（Ｓ１２５）。
【０１７７】
ここで、検索条件に設定されるファイル名は、消失したファイルのパス名ではなく、単純なファイル名である。また、単純なファイル名の全体を完全に指定できるのが好ましいが、単純なファイル名の一部だけを指定してもよい。
【０１７８】
記憶制御装置２０は、指定された所定のディレクトリ内に含まれるファイル群だけをリストアし（Ｓ１２６）、検索条件に一致するか否かを検査する（Ｓ１２７）。そして、記憶制御装置２０は、リカバリポイントリストを作成し（Ｓ１２８）、リカバリポイント候補リスト７００をホスト１０に送信する（Ｓ１２９）。
【０１７９】
ホスト１０は、リカバリポイント候補（リカバリポイントリスト）をユーザインターフェース１４に表示させる（Ｓ１３０）。ユーザは、表示されたリカバリポイントのうち、最終出現時刻を選択して（Ｓ１３１）、ユーザデータボリューム５１０のリストアを要求する（Ｓ１３２）。ユーザの所望するファイルが最後に存在したのは、最終出現時刻であり、その直後にそのファイルが失われているためである。
【０１８０】
記憶制御装置２０は、ユーザデータボリューム５１０の記憶内容を、指定されたリカバリポイントまで復元し（Ｓ１３３）、リストア用ボリューム５３０とホスト１０との間のパスを設定する（Ｓ１３４）。記憶制御装置２０は、ホスト１０に、リストアが完了した旨を通知する（Ｓ１３５）。これにより、ユーザは、消失前のファイルを利用することができる（Ｓ１３６）。
【実施例９】
【０１８１】
図２５に基づいて、第９実施例を説明する。図２５は、ホスト１０への不正なアクセスを検出する場合の全体動作を示すフローチャートである。ホスト１０は、一つまたは複数のセキュリティ関連ファイルを利用している。セキュリティ関連ファイルとしては、例えば、ユーザ認証情報（ユーザＩＤやパスワード）を記録した認証情報ファイル、ファイルへのアクセス権限を管理するためのアクセス制御リスト等を挙げることができる。これらのセキュリティ関連ファイルは、通常の場合、更新されることはなく、管理者権限を有するユーザが、必要に応じて時々参照等するだけである。
【０１８２】
ホスト１０に対する不正アクセスを監査する場合、ユーザは、リカバリ対象範囲にセキュリティ関連ファイルのファイル名（パス名）を設定し（Ｓ１４０）、検索条件にファイル更新時刻を設定する（Ｓ１４１）。ファイル更新時刻を指定するのは、セキュリティ関連ファイルが更新されたか否かを発見するためである。もしも、ホスト１０に不正にアクセスした者がいた場合、その者は、不正アクセスの痕跡を隠すために、セキュリティ関連ファイルの一部を書き換えるためである。
【０１８３】
ホスト１０が検索要求６００を発行すると、記憶制御装置２０は、指定されたセキュリティ関連ファイルのみをリストアし（Ｓ１４３）、セキュリティ関連ファイルが更新されたか否かを検査する（Ｓ１４４）。そして、記憶制御装置２０は、リカバリポイントリストを作成し（Ｓ１４５）、リカバリポイント候補リスト７００をホスト１０に送信する（Ｓ１４６）。
【０１８４】
ホスト１０は、検出されたリカバリポイントをユーザインターフェース１４に表示させる（Ｓ１４７）。ホスト（ユーザ）１０は、セキュリティ関連ファイルの更新時刻が不自然な時間帯に更新されているか否かを判断する（Ｓ１４８）。例えば、システム管理者が不在の時間帯にセキュリティ関連ファイルが更新されているような場合（S148:YES）、ホスト１０が不正にアクセスされた可能性がある。そこで、ホスト１０は、別のプログラムを用いて、より詳細なセキュリティ監査を行う（Ｓ１４９）。
【０１８５】
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【図面の簡単な説明】
【０１８６】
【図１】本発明の実施形態の概要を示す説明図である。
【図２】ストレージシステムのハードウェア構成を示す説明図である。
【図３】ファイルコントローラの配置方法の変形例を示す説明図である。
【図４】ファイルコントローラの別の配置方法の変形例を示す説明図である。
【図５】ストレージシステムの機能構成を示す説明図である。
【図６】ジャーナルボリューム及びジャーナルレコードの構成を示す説明図である。
【図７】指定されたファイルのみをリストアする様子を模式的に示す説明図である。
【図８】リカバリポイント検索要求の構成を示す説明図である。
【図９】リカバリポイント候補リストの構成を示す説明図である。
【図１０】リカバリポイント検索要求の発行画面（ａ）及びリカバリポイント候補リストの表示画面（ｂ）を示す説明図である。
【図１１】コマンド処理を示すフローチャートである。
【図１２】リカバリポイント検索処理を示すフローチャートである。
【図１３】図１２中のリカバリポイントリスト更新処理を示すフローチャートである。
【図１４】第２実施例に係る記憶制御装置により使用されるジャーナルレコードの構成を示す説明図である。
【図１５】リカバリポイント検索処理を示すフローチャートである。
【図１６】第３実施例に係るストレージシステムのハードウェア構成を示す説明図である。
【図１７】ストレージシステムの機能構成を示す説明図である。
【図１８】第４実施例に係る記憶制御装置により使用されるジャーナルレコードの構成を示す説明図である。
【図１９】リカバリポイント検索要求の構成を示す説明図である。
【図２０】第５実施例に係るストレージシステムの機能構成を示す説明図である。
【図２１】リカバリポイント検索処理を示すフローチャートである。
【図２２】第６実施例に係る記憶制御装置により実行されるリカバリポイント検索処理を示すフローチャートである。
【図２３】本実施形態の応用例を示すフローチャートである。
【図２４】本実施形態の別の応用例を示すフローチャートである。
【図２５】本実施形態のさらに別の応用例を示すフローチャートである。
【符号の説明】
【０１８７】
１…ホスト、１Ａ…アプリケーションプログラム、１Ｂ…リカバリポイント検索要求発行部、１Ｃ…リカバリ指示部、２…記憶制御装置、２Ａ…リード／ライト処理部、２Ｂ…ジャーナル作成処理部、２Ｃ…部分リストア処理部、２Ｄ…検索処理部、２Ｅ…リストア処理部、Ｖ１…ユーザデータボリューム、Ｖ２…ジャーナルボリューム、Ｖ３…一時リストア領域、Ｖ４…リストア用ボリューム、１０…ホスト、１１…CPU、１２…メモリ、１３…通信インターフェース、１４…ユーザインターフェース、２０，２０Ａ…記憶制御装置、３０…スイッチ、１００…ファイルコントローラ、１０１…コントローラ、１１０，１１１，２１０…MPU、１２０，１２１，２２０…メモリ、１３０，１３１，２３０…フロントエンドインターフェース、１４０，１４１，２４０…バックエンドインターフェース、１５０，１５１，２５０…メモリコントローラ、２００…ブロックコントローラ、３００…ディスクエンクロージャ、３１０…ディスクドライブ、４１０…アプリケーションプログラム、４２０…リカバリポイント検索用インターフェース、４３０…ファイルリード／ライト処理部、４４０…部分リストア処理部、４５０…データ検索処理部、４６０…ジャーナルリード機能、４６１…ジャーナルアクセス機能、４７０…ブロックリード／ライト処理部、４８０…ジャーナル作成処理部、４８１…スナップショット作成処理部、４９０…リストア処理部、５１０…ユーザデータボリューム、５２０…ジャーナルボリューム、５２１…ジャーナルレコード領域、５２２…データ領域、５２３…ハッシュ関数、５３０…リストア用ボリューム、５４０…一時リストア領域、５５０…スナップショット、６００…リカバリポイント検索要求、７００…リカバリポイント候補リスト
【図１】
2007199889.tif 000003
【図２】
2007199889.tif 000004
【図３】
2007199889.tif 000005
【図４】
2007199889.tif 000006
【図５】
2007199889.tif 000007
【図６】
2007199889.tif 000008
【図７】
2007199889.tif 000009
【図８】
2007199889.tif 000010
【図９】
2007199889.tif 000011
【図１０】
2007199889.tif 000012
【図１１】
2007199889.tif 000013
【図１２】
2007199889.tif 000014
【図１３】
2007199889.tif 000015
【図１４】
2007199889.tif 000016
【図１５】
2007199889.tif 000017
【図１６】
2007199889.tif 000018
【図１７】
2007199889.tif 000019
【図１８】
2007199889.tif 000020
【図１９】
2007199889.tif 000021
【図２０】
2007199889.tif 000022
【図２１】
2007199889.tif 000023
【図２２】
2007199889.tif 000024
【図２３】
2007199889.tif 000025
【図２４】
2007199889.tif 000026
【図２５】
2007199889.tif 000027