(57)【要約】【課題】ファイルシステムに管理されているファイルの更新に関する情報を容易に把握することができるようにする。【解決手段】ＮＡＳ装置１０では、プロセッサ１２が、データボリューム２０３のスナップショットの基準時点において、データボリューム２０３からファイルシステムに含まれている全てのファイルのメタデータ６０を読み込み、読み込んだ全てのメタデータ６０を差分データ記録ボリューム２０４（差分ボリューム２０５）の領域６６に書き込み、ストレージ装置２００では、差分データ退避処理部２２６が最新の基準時点から次の基準時点までに、ブロックライト要求を受け付けた場合に、ブロックライト要求により指定されたブロックに格納されているデータを、差分データ記録ボリューム２０４の領域６６以降の領域６７に時系列に書き込む。【選択図】図１
2010049488.tif 000002
【特許請求の範囲】
【請求項１】
１以上のファイルについて、前記ファイルの更新時刻情報を含むメタデータ及び実データを含むファイルシステムを記憶するボリュームを格納し、前記ボリュームのブロックを指定したブロックライト要求を受け付けるストレージ装置と、
計算機からファイルを指定したファイルライト要求を受け付け、前記ファイルライト要求が指定するファイルが格納されているボリュームのブロックを特定し、特定した前記ボリュームの前記ブロックを指定したブロックライト要求を前記ストレージ装置に送信するファイルサーバと、を有するストレージシステムであって、
前記ファイルサーバは、
前記ボリュームの復元の基準となる複数の基準時点において、前記ボリュームから前記ファイルシステムに含まれている全てのファイルの前記メタデータを読み込み、読み込んだ全ての前記メタデータを前記ストレージ装置の所定の差分データ記録ボリュームに順次書き込む書込処理部を有し、
前記ストレージ装置は、
最新の基準時点から次の基準時点までに、前記ブロックライト要求を受け付けた場合に、前記ブロックライト要求により指定されたブロックに格納されているデータを、前記差分データ記録ボリュームの前記メタデータを書き込んだ記憶領域以降の記憶領域に時系列に書き込む差分データ退避処理部を有する
ストレージシステム。
【請求項２】
前記ファイルサーバは、
復元対象ファイルの識別データを受け付ける識別データ受付部と、
前記差分データ記憶ボリュームの前記メタデータが格納された記憶領域を読み取ることにより、前記識別データが含まれているメタデータを検索する検索部と、
検索部により前記識別データが含まれているメタデータが検索できた場合に、前記メタデータから前記復元対象ファイルの前記更新時刻情報を取得する取得部と、
前記取得した更新時刻情報を含む前記復元対象ファイルに関するリストを提示する提示部と
を有する請求項１に記載のストレージシステム。
【請求項３】
前記メタデータには、各ファイルに対応する実データが格納されている前記ボリュームのブロック番号を含む複数のｉｎｏｄｅと、前記識別データと前記ｉｎｏｄｅとの対応関係が含まれており、
前記ファイルサーバは、
一の基準時点における前記識別データに対応する第１のｉｎｏｄｅを取得し、次の基準時点における前記識別データに対応する第２のｉｎｏｄｅがなく、前記第１のｉｎｏｄｅが存在する場合には、そのｉｎｏｄｅの識別データが変更されている可能性があると判断する判断部を更に有し、
前記提示部は、前記識別データが変更されている可能性があることを示す情報及び更新時刻情報を提示する
請求項２に記載のストレージシステム。
【請求項４】
前記ファイルサーバは、
前記リストの中からどの更新時刻の前記復元対象ファイルを復元するかの指定を受け付け、前記ストレージ装置に前記指定を通知する復元指定処理部を更に有し、
前記ストレージ装置は、
前記差分データ記憶ボリュームから前記指定に対応する更新時刻の前記復元対象ファイルの復元に必要なデータを読み出して、前記復元対象ファイルを復元する復元処理部
を更に有する
請求項２又は請求項３に記載のストレージシステム。
【請求項５】
前記ストレージ装置は、
データを記憶可能な半導体メモリを更に有し、
前記ファイルサーバは、
前記差分データ記憶ボリュームに格納された複数の前記基準時点における全てのファイルのメタデータを前記半導体メモリに格納させるキャッシュ制御部をさらに備え、
前記検索部は、前記半導体メモリの前記メタデータから前記識別データが含まれているメタデータを検索する
請求項２乃至請求項４のいずれか一項に記載のストレージシステム。
【請求項６】
データを格納可能な外部デバイスを更に有し、
前記ストレージ装置は、
前記差分データ記憶ボリュームのデータを前記外部デバイスに退避する退避部を更に備え、
前記復元処理部は、前記指定に対応する状態の前記復元対象ファイルの復元に必要なデータを、前記外部デバイスから読み出して、前記復元対象ファイルを復元する
請求項４に記載のストレージシステム。
【請求項７】
前記ストレージ装置は、
前記差分データ記憶ボリュームのデータを前記外部デバイスに退避させた後において、前記差分データ記憶ボリュームに前記メタデータを維持しておくメタデータ維持部を更に有し、
前記検索部は、前記差分データ記憶ボリュームの前記メタデータから前記識別データが含まれているメタデータを検索する
請求項６に記載のストレージシステム。
【請求項８】
前記ストレージ装置の前記差分データ退避処理部は、
一の前記基準時点における全てのファイルのメタデータが連続する記憶領域に格納されるとともに、前記一の基準時点から次の基準時点までに、前記差分データ退避処理部により書き込まれるデータが前記メタデータの記憶領域に後続する記憶領域に格納されるような仮想ボリュームを、前記差分データ記憶ボリュームの記憶領域を利用して生成する
請求項１乃至請求項７のいずれか一項に記載のストレージシステム。
【請求項９】
１以上のファイルについて、前記ファイルの更新時刻情報を含むメタデータ及び実データを含むファイルシステムを記憶する論理ボリュームを格納し、前記論理ボリュームのブロックを指定したブロックライト要求を受け付けるストレージ装置と、計算機からファイルを指定したファイルライト要求を受け付け、前記ファイルライト要求が指定するファイルが格納されている前記論理ボリュームのブロックを特定し、特定した前記論理ボリュームの前記ブロックを指定したブロックライト要求を前記ストレージ装置に送信するファイルサーバと、を有するストレージシステムにおけるデータ管理方法であって、
前記論理ボリュームの復元の基準となる複数の基準時点において、前記論理ボリュームから前記ファイルシステムに含まれている全てのファイルの前記メタデータを読み込み、読み込んだ全ての前記メタデータを前記ストレージ装置の所定の差分データ記録ボリュームに順次書き込む書込処理ステップと、
各基準時点から次の基準時点までに、前記ストレージ装置が前記ブロックライト要求を受け付けた場合に、前記ブロックライト要求により指定されたブロックに格納されているデータを、前記差分データ記録ボリュームの前記メタデータを書き込んだ記憶領域以降の記憶領域に時系列に書き込む差分データ退避処理ステップと、
を有するデータ管理方法。
【請求項１０】
前記ファイルサーバは、
復元対象ファイルの識別データを受け付ける識別データ受付ステップと、
前記差分データ記憶ボリュームの前記メタデータが格納された記憶領域を読み取ることにより、前記識別データが含まれているメタデータを検索する検索ステップと、
前記識別データが含まれているメタデータが検索できた場合に、前記メタデータから前記復元対象ファイルの前記更新時刻情報を取得する取得ステップと、
前記取得した更新時刻情報を含む前記復元対象ファイルに関するリストを提示する提示ステップと
を有する請求項９に記載のデータ管理方法。
【請求項１１】
前記メタデータには、各ファイルに対応する実データが格納されている前記ボリュームのブロック番号を含む複数のｉｎｏｄｅと、前記識別データと前記ｉｎｏｄｅとの対応関係が含まれており、
一の基準時点における前記識別データに対応する第１のｉｎｏｄｅを取得し、次の基準時点における前記識別データに対応する第２のｉｎｏｄｅがなく、前記第１のｉｎｏｄｅが存在する場合には、そのｉｎｏｄｅの識別データが変更されている可能性があると判断する判断ステップを更に有し、
前記提示ステップは、前記識別データが変更されている可能性のあることを示す情報及び更新時刻情報を提示する
請求項１０に記載のデータ管理方法。
【請求項１２】
前記リストの中からどの更新時刻の前記復元対象ファイルを復元するかの指定を受け付け、ストレージ装置に前記指定を通知する復元指定処理ステップと、
前記差分データ記憶ボリュームから前記指定に対応する更新時刻の前記復元候補ファイルの復元に必要なデータを読み出して、前記復元対象ファイルを復元する復元処理ステップと
を有する請求項１０又は請求項１１に記載のデータ管理方法。
【請求項１３】
前記ストレージ装置は、データを記憶可能な半導体メモリを有し、
前記差分データ記憶ボリュームに格納された複数の前記基準時点における全てのファイルのメタデータを前記半導体メモリに格納するキャッシュ実行ステップを更に備え、
前記検索ステップは、前記半導体メモリの前記メタデータから前記識別データが含まれているメタデータを検索する
請求項１０乃至請求項１２のいずれか一項に記載のデータ管理方法。
【請求項１４】
前記ストレージシステムは、データを格納可能な外部デバイスを更に有し、
前記差分データ記憶ボリュームのデータを前記外部デバイスに退避する退避ステップを更に備え、
前記復元処理ステップは、前記指定に対応する状態の前記復元対象ファイルの復元に必要なデータを、前記外部デバイスから読み出して、前記復元対象ファイルを復元する
請求項１３に記載のデータ管理方法。
【請求項１５】
差分データ退避処理ステップは、
一の前記基準時点における全てのファイルのメタデータが連続する記憶領域に格納されるとともに、前記一の基準時点から次の基準時点までに、前記ブロックライト要求により指定されたブロックの前記データが前記メタデータの記憶領域に後続する記憶領域に格納されるような仮想ボリュームを、前記差分データ記憶ボリュームの記憶領域を利用して生成する
請求項９乃至請求項１４のいずれか一項に記載のデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルシステムを格納するボリュームを、所定の基準時点のイメージ（スナップショット）に復元するためのデータを管理するストレージシステム及びデータ管理方法に関する。
【背景技術】
【０００２】
従来、ストレージ装置におけるボリュームを所定の時点に復元するためのデータ保護技術として、ＣＯＷ（Copy on Wire）技術が知られている。
【０００３】
ＣＯＷ技術は、ボリュームの或る領域（記憶領域）に書込みが発生した場合に、その領域に既に書き込まれているデータを別のボリューム（差分ボリューム）へ退避する技術である。このＣＯＷ技術によると、現在のボリュームのデータと、差分ボリュームに退避されたデータとから、所定の基準時点におけるボリュームの状態（イメージ：スナップショット）を復元することができる。
【０００４】
この技術を利用して、複数の基準時点におけるスナップショット、すなわち、スナップショットの世代を管理することができる。
【０００５】
一方、ファイルを単位としてアクセスすることのできるサービスを提供するファイルサーバが知られている。ファイルサーバは、ファイルを管理するためのファイルシステムをストレージ装置のボリュームに格納し、ファイルシステムを用いてファイルのアクセスのサービスを提供している。このようなファイルシステムが格納されているボリュームに対してＣＯＷ技術を使用して、ファイルシステムが格納されているボリュームを復元することができるようになっている場合もある。
【０００６】
ファイルシステムの複数の世代のスナップショットを管理する技術としては、例えば、ファイルシステム内にファイルシステムを示すメタデータを含め、スナップショットがそれに関連するメタデータを含むようにする技術が知られている（特許文献１参照）。
【０００７】
特許文献１の技術においては、スナップショットのメタデータにタイムスタンプ等が格納されており、所望のバージョンのファイルシステムを含んでいるか等を判定することができるようになっている。
【０００８】
【特許文献１】特開２００４−３８９２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ファイルサーバを利用しているユーザにおいては、例えば、或るファイルについて、以前の状態のデータが必要となる場合がある。
【００１０】
このような場合、そのファイルがいつ更新されたといったことをユーザは必ずしも把握していない。そこで、ユーザは、ボリュームについて、或る基準時点のスナップショットを作成し、そのスナップショットにより、該当するファイルが必要な状態のデータであるかを判断する必要がある。もし、必要な状態のデータではない場合には、別の基準時点のスナップショットを更に作成し、更に必要なデータであるかを判断しなくてはならない。
【００１１】
例えば、特許文献１の技術によると、スナップショットを取った時点のファイルシステムのバージョン等については把握できるが、ファイルシステム中のファイルの状態については、なんら判断することができず、結果として、各世代のスナップショットを作成して、各ファイルが所望のものかを判断しなくてはならない。
【００１２】
そこで、本発明は、ファイルシステムに管理されているファイルの更新に関する情報を容易に把握することができるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的達成のため、本発明の一観点に係るストレージシステムは、１以上のファイルについて、ファイルの更新時刻情報を含むメタデータ及び実データを含むファイルシステムを記憶するボリュームを格納し、ボリュームのブロックを指定したブロックライト要求を受け付けるストレージ装置と、計算機からファイルを指定したファイルライト要求を受け付け、ファイルライト要求が指定するファイルが格納されているボリュームのブロックを特定し、特定したボリュームのブロックを指定したブロックライト要求をストレージ装置に送信するファイルサーバと、を有するストレージシステムであって、ファイルサーバは、ボリュームの復元の基準となる複数の基準時点において、ボリュームからファイルシステムに含まれている全てのファイルのメタデータを読み込み、読み込んだ全てのメタデータをストレージ装置の所定の差分データ記録ボリュームに順次書き込む書込処理部を有し、ストレージ装置は、最新の基準時点から次の基準時点までに、ブロックライト要求を受け付けた場合に、ブロックライト要求により指定されたブロックに格納されているデータを、差分データ記録ボリュームのメタデータが格納された記憶領域以降の記憶領域に時系列に書き込む差分データ退避処理部を有する。
【発明を実施するための最良の形態】
【００１４】
本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１５】
まず、本発明の一実施形態に係るストレージシステムの概要を説明する。
【００１６】
図１は、本発明の一実施形態に係るストレージシステムの概要を説明する図である。
【００１７】
ストレージシステム１では、ＮＡＳ（Network Attached Storage）装置１０のファイルシステム処理部１５が所定のスナップショットの基準とする時点(基準時点）において、メタデータを優先して順次退避させる処理（世代作成処理：図１（１））の実行を開始する。ストレージ装置２００は、ＮＡＳ装置１０が世代作成処理の実行を開始するとそれに応じて、ストレージ装置２００側の世代作成処理を実行を開始する。すなわち、ストレージ装置２００は、基準時点から次の基準時点までの世代（例えば、今までの世代が第ｍ世代の場合には、第ｍ＋１世代）における差分データを格納するための仮想的な差分ボリューム２０５を新規に作成する。そして、ＮＡＳ装置１０は、データボリューム２０３に格納されているファイルシステムの全てのファイルのメタデータ６０を読み出して、読み出したデータをデータボリューム２０３のメタデータ６０を格納するブロックに書き込む。ストレージ装置２００は、この書き込み処理に呼応して、メタデータ６０を差分ボリューム２０５の先頭の連続する記憶領域（メタデータ記憶領域）６６に退避する。
【００１８】
その後、ＮＡＳ装置１０が外部の計算機からファイルライト要求を受け付けた場合には、ＮＡＳ装置１０は、ファイルライト要求に対応するブロックライト要求を生成してストレージ装置２００に送信する（図１（２））。
【００１９】
ストレージ装置２００では、ブロックライト要求を受け付けると、データボリューム２０３のライト対象のブロックに格納されているデータ等（差分データ）を新たに作成した世代の差分ボリューム２０５のメタデータ記憶領域６６に後続する記憶領域６７に格納するとともに、データボリューム２０３の対応するブロックにライト対象のデータを格納する（コピーオンライト６８）。ストレージ装置２００は、このような処理を、ブロックライト要求を受け取る毎に実行する。
【００２０】
そして、以降において、ＮＡＳ装置１０がユーザから所望するリストア対象のファイル（対象ファイル：復元対象ファイル）の指示７１を受け付けると（図１（３））、ＮＡＳ装置１０では、リストア処理部１８がそれぞれ異なる基準時点に対応する各世代の差分ボリューム２５０の先頭に格納されているメタデータ６２、６４、６６をストレージ装置２００から取得し、当該メタデータに基づいて、リストア対象ファイルについての更新時刻を取得し、各世代における対象ファイルの更新時刻をユーザに対して提示する（図１（５））。
【００２１】
これにより、ユーザは対象ファイルの各世代における更新時刻を把握することができ、所望する状態(所望する時点)のファイルを取得するためにリストア（復元）すべき世代を適切に把握することができる。
【００２２】
次に、本発明の一実施形態に係るストレージシステムを詳細に説明する。
【００２３】
図２は、本発明の一実施形態に係るストレージシステムの論理的な構成図である。
【００２４】
ストレージシステム１は、１以上の計算機３０と、ファイルサーバの一例としてのＮＡＳ装置１０と、外部デバイスの一例としてのバックアップ装置３１と、ストレージ装置２００とを有する。
【００２５】
計算機３０と、ＮＡＳ装置１０と、バックアップ装置３１とは、例えば、ＬＡＮ（Local Area Network）により接続されている。なお、これらを接続するネットワークは、ＬＡＮに限られず、インターネット、専用回線、公衆回線等のいずれのネットワークであってもよい。
【００２６】
また、ＮＡＳ装置１０と、バックアップ装置３１と、ストレージ装置２００とは、例えば、ＳＡＮ（Storage Area Network）により接続されている。これらを接続するネットワークは、ＳＡＮに限られず、所定のデータ通信を行うことのできるネットワークであればよい。
【００２７】
計算機３０は、図示しないプロセッサにより、ＯＳ（Operating System）及びアプリケーションを実行することにより、所定の処理を実行し、処理に応じてＮＡＳ装置１０に対してファイルアクセス要求（ファイルライト要求、ファイルリード要求等）を送信する。計算機３０から送信されるファイルライト要求には、例えば、ライト対象（書込み対象）のファイルを識別するデータ（ファイル識別データ：例えば、ファイル名、ディレクトリパス名等）及びライト対象のデータが含まれる。
【００２８】
ＮＡＳ装置１０は、計算機３０からファイルアクセス要求を受信して、ファイルアクセス要求が指定するファイルが格納されているストレージ装置２００のボリュームのブロックを特定し、特定したボリュームのブロックを指定したブロックアクセス要求（ブロックライト要求、ブロックリード要求）をストレージ装置２００に送信する。ＮＡＳ装置１０が送信するブロックライト要求には、例えば、ライト対象のデータが管理されている論理ユニット（ＬＵ：Logical Unit）の番号（ＬＵＮ：Logical Unit Number）及び論理ユニットにおけるブロックアドレス（ＬＢＡ：Logical Block Address）が含まれる。
【００２９】
バックアップ装置３１は、テープ等の記録媒体３２に対するデータの入出力を行う。例えば、バックアップ装置３１は、ＳＡＮ３４を介してストレージ装置２００の所定のボリュームのデータを受信して記録媒体３２に書き込む。また、バックアップ装置３１は、退避されたボリュームのデータを記録媒体３２から読み出してストレージ装置２００に送信する。
【００３０】
ストレージ装置２００は、複数のディスク装置（ＨＤＤ）２８０を有している。本実施形態では、ストレージ装置２００において、複数（例えば、４つ）のディスク装置２８０によりＲＡＩＤ（Redundant Arrays of independent Disks）グループ２０２が構成されている。本実施形態では、ＲＡＩＤグループのＲＡＩＤレベルは、例えば、ＲＡＩＤ１、５、６等となっている。ストレージ装置２００においては、ＲＡＩＤグループ２０２の少なくとも一部の記憶領域を自身の記憶領域とするボリューム（データボリューム２０３、差分データ記憶ボリューム２０４等）が生成され、また、差分データ記録ボリューム２０４の少なくとも一部の領域をその記憶領域とする仮想ボリュームである差分ボリューム２０５も生成される。ストレージ装置２００は、複数のターゲット（ポート）２０１を有し、各ターゲット２０１には、１以上のボリューム（データボリューム２０３、差分データ記憶ボリューム２０４、差分ボリューム２０５等）が接続されている。なお、各ターゲット２０１に接続された各ボリュームは、ＬＵＮと対応付けられて管理されており、ＮＡＳ装置１０は、ＬＵＮを指定することにより、対象とするボリュームを指定することができ、ストレージ装置２０は、指定されたＬＵＮから対象とするボリュームを特定することができる。
【００３１】
本実施形態では、データボリューム２０３には、ＮＡＳ装置１０がファイルアクセスを管理可能にするためのファイルシステムが形成（格納）される。ファイルシステムは、ファイルシステム情報と、ファイルに関する情報であるメタデータと、ファイルの実データとを有する。ファイルシステム情報には、例えば、ファイルシステムの大きさ、空き容量等が含まれる。また、メタデータには、ファイルの識別データ（ファイル名等）、ファイルの実データが格納されたブロックを特定する情報（例えば、ＬＢＡ）、ファイルの更新時刻（更新日時）に関する情報等が格納される。例えば、ｉノード（ｉｎｏｄｅ）を用いたファイルシステムの場合には、メタデータとしては、ファイルと対応するｉノードの番号（ｉノード番号）との対応関係を管理するディレクトリエントリと、iノードを管理するiノードテーブルとがある。ｉノードには、ｉノード番号、対応するデータが格納されているブロックアドレス(ブロック番号)、ファイルの更新時刻等が格納されている。
【００３２】
データボリューム２０３においては、例えば、図１４に示すように、メタデータを格納するメタデータブロック５０１、５０３と、実データを格納するデータブロック５０２、５０４とが存在する。
【００３３】
図３は、本発明の一実施形態に係るＮＡＳ装置の構成図である。
【００３４】
ＮＡＳ装置１０は、ネットワークインタフェースコントローラ１１と、プロセッサ１２と、ホストバスアダプタ１３と、メモリ１４とを有する。ネットワークインタフェースコントローラ１１は、ＬＡＮ３３を介して計算機３０とのデータのやり取りを仲介する。ホストバスアダプタ１３は、ＳＡＮ３４を介してストレージ装置２００との間のデータのやり取りを仲介する。
【００３５】
プロセッサ１２は、メモリ１４に格納されたプログラムやデータを用いて各種処理を実行する。ここで、プロセッサ１２がメモリ１４の各種プログラムを実行することにより、書込処理部、識別データ受付部、検索部、取得部、提示部、判断部、復元指定処理部、キャッシュ制御部を構成する。
【００３６】
メモリ１４は、プログラムやデータを記憶する。本実施形態では、メモリ１４は、ファイルシステムに関する処理を実行するためのファイルシステムプログラム１５ｐと、入出力処理等を実行するためのオペレーティングシステムプログラム１６ｐと、ネットワーク上におけるファイル共有に関する処理を実行するためのネットワークファイルシステムプログラム１７ｐと、リストアに関する処理を実行するためのリストア処理プログラム１８ｐとを記憶する。
【００３７】
図４は、本発明の一実施形態に係るストレージ装置のハードウェア構成図であり、図５は、本発明の一実施形態に係るストレージ装置の機能構成図である。
【００３８】
ストレージ装置２００は、１以上のホストバスコントローラ２１０と、１以上のフロントエンドコントローラ２２０と、共有メモリ２３０と、キャッシュメモリ２４０と、１以上のバックエンドコントローラ２６０と、複数のディスク装置２８０とを有する。ホストバスコントローラ２１０は、ＳＡＮ３４に接続されるとともに、フロントエンドコントローラ２２０に接続される。フロントエンドコントローラ２２０と、半導体メモリの一例としての共有メモリ２３０と、半導体メモリの一例としてのキャッシュメモリ２４０と、バックエンドコントローラ２６０とは、コントローラ接続ネットワーク２５０を介して接続されている。バックエンドコントローラ２６０と、ディスク装置２８０とは、内部ストレージ接続ネットワーク２７０を介して接続されている。
【００３９】
ホストバスコントローラ２１０は、図５に示すようにホストＩ／Ｏ処理部２１１を有し、ＳＡＮ３４を介してのＮＡＳ装置１０等とのデータのやり取りを仲介する。
【００４０】
フロントエンドコントローラ２２０は、ローカルメモリ２２１と、プロセッサ２２２と、制御チップ２２３とを有する。フロントエンドコントローラ２２０においては、プロセッサ２２２がローカルメモリ２２１に格納されたプログラムを実行することにより、データボリュームＩ／０処理部２２４と、差分ボリュームＩ／Ｏ処理部２２５と、差分データ退避処理部２２６と、ＲＡＩＤ処理部２２７と、復元処理部の一例としてのボリュームリストア処理部２２８とを構成する。
【００４１】
データボリュームＩ／０処理部２２４は、ファイルシステムが格納されているデータボリュームに対するアクセスに関する処理を実行する。差分ボリュームＩ／Ｏ処理部２２５は、差分データを格納する差分データ記録ボリュームに対するアクセスに関する処理を実行する。差分データ退避処理部２２６は、差分データを退避する処理を実行する。ＲＡＩＤ処理部２２７は、データボリュームＩ／Ｏ処理部２２４や差分ボリュームＩ／Ｏ処理部２２５によりボリュームに書き込む対象のデータをＲＡＩＤグループを構成する各ディスク装置２８０に書き込むデータに変換する処理や、ＲＡＩＤグループを構成する各ディスク装置２８０から読み出したデータを、データボリュームＩ／Ｏ処理部２２４や差分ボリュームＩ／Ｏ処理部２２５が必要な読み出し対象のデータに変換する処理を実行する。ボリュームリストア処理部２２８は、ボリュームのリストア処理を実行する。
【００４２】
共有メモリ２３０は、ＲＡＩＤグループ構成テーブル２３１と、ボリューム構成テーブル２３２と、差分管理構成テーブル２３３と、差分ボリュームグループ構成テーブル２３４と、世代管理テーブル２３５と、ＣＯＷマップ２３６とを記憶する。これらテーブル等の詳細な構成は後述する。
【００４３】
キャッシュメモリ２４０は、キャッシュデータ２４１、すなわち、ディスク装置２８０に書込むためデータや、ディスク装置２８０から読み出したデータを一時的に記憶する。
【００４４】
バックエンドコントローラ２６０は、ローカルメモリ２６１と、プロセッサ２６２と、制御チップ２６３とを有する。バックエンドコントローラ２６０においては、プロセッサ２６２がローカルメモリ２６１に格納されたプログラムを実行することにより、ディスク装置Ｉ／Ｏ処理部２６４を構成する。ディスク装置Ｉ／Ｏ処理部２６４は、フロントエンドコントローラ２２０からの指示に従って、ディスク装置２８０へのデータの書込み、ディスク装置２８０からのデータの読み込みを実行する。
【００４５】
図６は、本発明の一実施形態に係るＲＡＩＤグループ構成テーブルの一例を示す図である。
【００４６】
ＲＡＩＤグループ構成テーブル２３１は、ＲＡＩＤグループＩＤフィールド２３１１と、ディスク装置ＩＤフィールド２３１２と、サイズフィールド２３１３と、属性情報フィールド２３１４とを有するレコードを格納する。
【００４７】
ＲＡＩＤグループＩＤフィールド２３１１には、ＲＡＩＤグループ２０２を識別するＩＤ（ＲＡＩＤグループＩＤ）が格納される。ディスク装置ＩＤフィールド２３１２には、対応するＲＡＩＤグループ２０２を構成するディスク装置２８０のＩＤ（ディスク装置ＩＤ）が格納される。サイズフィールド２３１３には、対応するＲＡＩＤグループ２０２の記憶領域のサイズ（記憶容量）が格納される。属性情報フィールド２３１４には、対応するＲＡＩＤグループ２０２のＲＡＩＤレベルが格納される。
【００４８】
例えば、図６に示すＲＡＩＤグループ構成テーブル２３１の一番上のレコードは、ＲＡＩＤグループ２２０のＩＤが”ＲＧ０００１”であり、当該ＲＡＩＤグループ２０２は、ＩＤが”Ｄ１０１”、”Ｄ１０２”、”Ｄ１０３”、及び”Ｄ１０４”の４つのディスク装置２８０により構成され、ＲＡＩＤグループ２０２の記憶領域のサイズが３，０７２ＧＢ（ギガバイト）であり、ＲＡＩＤグループ２０２のＲＡＩＤレベルがレベル５であることを示している。
【００４９】
図７は、本発明の一実施形態に係るボリューム構成テーブルの一例を示す図である。
【００５０】
ボリューム構成テーブル２３２は、ボリュームＩＤフィールド２３２１と、ＲＡＩＤグループＩＤフィールド２３２２と、開始ブロックフィールド２３２３と、サイズフィールド２３２４と、属性情報フィールド２３２５とを有するレコードを格納する。
【００５１】
ボリュームＩＤフィールド２３２１には、ボリューム（２０３、２０４等）のＩＤが格納される。ＲＡＩＤグループＩＤフィールド２３２２には、対応するボリュームを構成する（記憶領域を提供する）ＲＡＩＤグループ２０２のＩＤが格納される。開始ブロックフィールド２３２３には、対応するＲＡＩＤグループにおいて当該ボリュームの記憶領域が開始されるブロック（開始ブロック）の番号（アドレス）が格納される。サイズフィールド２３２４には、対応するボリュームの記憶領域のサイズ(記憶容量)が格納される。属性情報フィールド２３２５には、対応するボリュームの種類、例えば、通常のデータを格納するボリュームであるか、差分データを格納するボリュームであるか等の属性情報が格納される。
【００５２】
例えば、図７に示すボリューム構成テーブル２３２の一番上のレコードは、ＩＤが”Ｖ０００１”のボリュームは、ＩＤが”ＲＧ０００１”のＲＡＩＤグループ２０２のブロック”０”から記憶領域が開始され、記憶領域のサイズが２００ＧＢであり、通常のデータの格納に利用されることを示している。
【００５３】
図８は、本発明の一実施形態に係る差分管理構成テーブルの一例を示す図である。
【００５４】
差分管理構成テーブル２３３は、ボリュームＩＤフィールド２３３１と、差分ボリュームグループＩＤフィールド２３３２とを有するレコードを格納する。
【００５５】
ボリュームＩＤフィールド２３３１には、ファイルシステムのデータを格納するためのボリューム（例えば、２０３）のＩＤが格納される。差分ボリュームグループＩＤフィールド２３３２には、対応するボリュームの差分データを格納するためのボリューム（差分データ記録ボリューム）のグループのＩＤ（差分ボリュームグループＩＤ）が格納される。
【００５６】
例えば、図８に示す差分管理構成テーブル２３３の一番上のレコードは、ＩＤが”Ｖ０００１”のボリュームについての差分データは、”ＤＧ０００１”の差分ボリュームグループに格納されることを示している。
【００５７】
図９は、本発明の一実施形態に係る差分ボリュームグループ構成テーブルの一例を示す図である。
【００５８】
差分ボリュームグループ構成テーブル２３４は、差分ボリュームグループＩＤフィールド２３４１と、ボリュームＩＤフィールド２３４２と、サイズフィールド２３４３と、属性情報フィールド２３４４と、次退避ブロックフィールド２３４５とを有するレコードを格納する。
【００５９】
差分ボリュームグループＩＤフィールド２３４１には、差分ボリュームグループのＩＤが格納される。ボリュームＩＤフィールド２３４２には、対応する差分ボリュームグループに属するボリュームのＩＤが格納される。サイズフィールド２３４３には、差分ボリュームグループの記憶領域のサイズが格納される。属性情報フィールド２３４４には、差分ボリュームグループの動作状態（例えば、動作中（active））が格納される。次退避ブロックフィールド２３４５には、次の差分データを格納する差分ボリュームグループにおけるブロック番号が格納される。
【００６０】
例えば、図９に示す差分ボリュームグループ構成テーブル２３４の一番上のレコードは、ＩＤが”ＤＧ０００１”の差分ボリュームグループは、”Ｖ０００２”のＩＤのボリュームにより構成され、記憶領域のサイズは、１０２４ＧＢであり、差分ボリュームグループは、動作中であり、次の退避先となるブロックは、１０番目のブロックであることを示している。
【００６１】
図１０は、本発明の一実施形態に係る世代管理テーブルの一例と示す図である。
【００６２】
世代管理テーブル２３５は、ボリュームＩＤフィールド２３５１と、世代ＩＤフィールド２３５２と、世代作成時刻フィールド２３５３と、先頭ブロックフィールド２３５４と、仮想ボリュームＩＤフィールド２３５５とを有するレコードを格納する。
【００６３】
ボリュームＩＤフィールド２３５１には、ファイルシステムのデータが格納されるボリュームのＩＤが格納される。世代ＩＤフィールド２３５２には、世代を示すＩＤ(世代番号)が格納される。世代作成時刻フィールド２３５３には、世代を作成した時刻（基準時点）が格納される。先頭ブロックフィールド２３５４には、対応する世代のデータが格納されている差分ボリュームグループにおける先頭のブロックの番号が格納される。仮想ボリュームＩＤフィールド２３５５には、対応する世代の差分データを格納した仮想ボリュームのＩＤが格納される。
【００６４】
例えば、図１０に示す世代管理テーブル２３５の一番上のレコードは、”Ｖ０００１”のＩＤのボリュームについての世代ＩＤが”１”の世代は、”２００８／６／２３  ０４：００”に作成され、差分ボリュームグループでの先頭ブロックは、”０”であり、当該世代の差分データを格納する仮想ボリュームのＩＤが”Ｖ０００１−０１”であることを示している。
【００６５】
図１１は、本発明の一実施形態に係るＣＯＷマップの一例を示す図である。
【００６６】
ＣＯＷマップ２３６は、ファイルシステムのデータが格納されるボリュームに対応して設けられており、対応するボリュームにおける各ブロックに対して所定の基準時点以降にデータの更新が発生したか否かを管理するマップである。具体的には、ＣＯＷマップ２３６は、ボリュームにおける各ブロックに対応するビットを有し、対応するブロックに更新がない場合には、”０”が格納され、対応するブロックに更新が発生した場合には、”１”が格納される。
【００６７】
例えば、図１１に示すＣＯＷマップ２３６は、３番目のブロックは、対応するビット４０９が”０”であるので、更新されたことを示し、２６番目のブロックは、対応するビット４１０が”０”であるので、更新されていないことを示している。
【００６８】
次に、本発明に係るストレージシステム１の動作を説明する。
【００６９】
図１２は、本発明の一実施形態に係るＮＡＳ装置の世代作成処理のフローチャートである。
【００７０】
この世代作成処理は、予め設定されているスナップショットの基準となる時点になった場合や、ＮＡＳ装置１０がユーザから指示を受けた場合に開始される。
【００７１】
世代作成処理が開始されると（ステップ６２００）、ファイルシステムプログラム１５ｐを実行するプロセッサ１２が、ストレージ装置２００に対して世代作成指示を送信する(ステップ６２１０)。
【００７２】
次いで、プロセッサ１２は、処理対象とするファイルシステムを格納するデータボリューム２０３のブロックの範囲（処理対象ブロック範囲）の初期値を決定する（ステップＳ６２２０）。例えば、プロセッサ１２は、ファイルシステムの管理用データからメタデータを記憶しているブロックを示す情報を取得し、最先のブロックの範囲を初期値として決定する。
【００７３】
プロセッサ１２は、データボリューム２０３の処理対象ブロック範囲からメタデータを読み込み（ステップ６２３０）、読み込んだメタデータをデータボリューム２０３の差分データを格納するための差分データ記憶ボリューム２０４に対してストレージ装置２００により書込ませる(ステップ６２４０)。具体的には、ストレージ装置２００の差分ボリュームＩ／Ｏ処理部２２５が対応するメタデータを差分データ記憶ボリューム２０４に対して書き込むこととなる。
【００７４】
次いで、プロセッサ１２は、次のメタデータが格納されている処理対象ブロック範囲を決定し（ステップ６２５０）、ファイルシステムのファイルの全メタデータを処理したか否かを判定し（ステップ６２６０）、処理していない場合には、ステップ６２３０からのステップを実行する一方、全てのメタデータを処理した場合には、世代作成処理を終了する（ステップ６２７０）。
【００７５】
図１３は、本発明の一実施形態に係るストレージ装置の世代作成処理のフローチャートである。
【００７６】
ストレージ装置２００における世代作成処理は、例えば、ストレージ装置２００が立ち上げられた後に、繰り返し実行が開始される。
【００７７】
世代作成処理が開始され（ステップ６１００）、ＮＡＳ装置１０から世代作成指示を受領すると（ステップ６１１０）、差分データ退避処理部２２６が世代管理テーブル２３５に新たな世代に関する新たなレコードを追加し、レコードの各フィールドにデータを書き込む（ステップ６１２０）。例えば、差分データ退避処理部２２６は、ボリュームＩＤフィールド２３５１には、世代作成するファイルシステムが格納されているボリュームＩＤを格納し、世代ＩＤフィールド２３５２には、同一のボリュームについての既に登録されている世代ＩＤの次のＩＤを格納し、世代作成時刻フィールド２３５３には、世代作成指示を受け取った時刻（日時）を格納し、先頭ブロックフィールド２３５４には、前の世代のデータが格納されているブロックの次のブロックの番号を格納し、仮想ボリュームＩＤフィールド２３５５には、作成する新しい世代に関する差分データを格納するための仮想ボリュームのＩＤを格納する。
【００７８】
次いで、差分データ退避処理部２２６は、ＣＯＷマップ２３６の各ビットを”０”に設定する（ステップ６１３０）。次いで、差分データ退避処理部２２６は、作成する新しい世代の差分データを格納する仮想ボリュームを可視化し、すなわち、仮想ボリュームをＮＡＳ装置１０等から参照するために必要な各種情報をターゲット２等に設定し（ステップ６１４０）、処理を終了する(ステップ６１５０)。なお、これ以降において、ＮＡＳ装置１０による処理（ステップ６２４０）が実行されることとなり、差分ボリュームＩ／Ｏ処理部２２５がメタデータを差分データ記憶ボリューム２０４に対して書き込むとともに、書き込んだ差分データ記憶ボリューム２０４のブロックを、対応する世代の仮想ボリューム２０５における空いている最先のブロックと対応付けるマッピング情報を生成して共有メモリ２３０に格納する。これにより、仮想ボリューム２０５においては、メタデータが仮想ボリューム２０５の先頭の固まった領域（メタデータ格納領域）に格納され、それ以降の領域に差分データが格納されることとなる。
【００７９】
図１４は、本発明の一実施形態に係るメタデータの集約を説明する図である。
【００８０】
図１４は、世代１に対応する差分データが作成された後に、新たな次の世代、すなわち世代２の差分データを格納するようにするための世代作成処理（図１２、図１３）が実行された場合の差分データ記録ボリューム２０４の状態を示している。
【００８１】
図１４に示すように、世代２を作成した基準時点におけるデータボリューム２０３の全てのメタデータブロック５０３、５０４の、メタデータが、差分データ記録ボリューム２０４の世代１の差分データの記憶領域５０７の直後の領域（メタデータ差分領域）５０８、５０９に格納されることとなる。なお、世代２を作成した基準時点以降におけるデータボリューム２０３に関する差分データは、領域５０９の直後の領域５１０に時系列に格納されることとなる。
【００８２】
図１５は、本発明の一実施形態に係るファイルライト処理のフローチャートである。
【００８３】
ファイルライト処理は、例えば、ＮＡＳ装置１０が立ち上げられた後に、繰り返し実行が開始される。
【００８４】
ＮＡＳ装置３０において、ファイルライト処理の実行が開始され(ステップ５０００)、ネットワークインタフェースコントローラ１１を介して計算機３０からファイルライト要求を受信すると、ファイルシステムプログラム１５ｐを実行するプロセッサ１２は、ファイルライト要求からファイル名を取得し(ステップ５０１０)、ファイル名からファイル格納先（ＬＵ及びＬＢＡ）を特定する。なお、ファイルシステムが格納されているデータボリューム２０３に対応するＬＵについては、ＮＡＳ装置３０自体が管理しているので把握できる。また、ＬＢＡについては、ファイル名を用いて、ファイルシステムのメタデータから特定することができる。
【００８５】
次いで、プロセッサ１２は、特定したＬＵ及びＬＢＡと、ライト対象のデータを含むブロックライト要求をホストバスアダプタ１３を介してストレージ装置２００の所定のホストバスコントローラ２１０に送信し(ステップ５０３０)、処理を終了する(ステップ５０４０)。
【００８６】
図１６は、本発明の一実施形態に係るホストライト処理のフローチャートである。
【００８７】
ホストライト処理は、ＮＡＳ装置１０等からブロックライト要求を受信した際に開始される。ホストライト処理が開始されると(ステップ６０００)、データボリュームＩ／Ｏ処理部２２４が、ブロックライト要求に含まれているＬＵＮ及びＬＢＡに基づいて、ライト対象のボリュームＩＤと、ＬＢＡとを特定する(ステップ６０１０)。なお、ＬＵＮとボリュームＩＤとの対応関係を管理する図示しないマッピングテーブルをストレージ装置２００において記憶しており、データボリュームＩ／Ｏ処理部２２４は、マッピンテーブルにより、ブロックライト要求に含まれているＬＵＮからライト対象のボリュームのボリュームＩＤを特定することができる。また、ＬＢＡは、ブロックライト要求から取得できる。
【００８８】
次いで、データボリュームＩ／Ｏ処理部２２４は、ライト対象のボリュームのボリュームＩＤが差分管理構成テーブル２３３に登録されているか否かにより、ＣＯＷ対象のボリュームであるかを判定し（ステップ６０２０）、ＣＯＷ対象のボリュームではない場合（ステップ６０２０：ＮＯ）には、ステップ６０７０に進む。
【００８９】
一方、ライト対象のボリュームがＣＯＷ対象のボリュームである場合（ステップ６０２０：ＹＥＳ）には、差分データ退避処理部２２６がＣＯＷマップ２３６を参照して、ライト対象のブロックのデータを含む差分データが既に差分データ記録ボリューム２０４に退避済みか判定し（ステップ６０３０）、退避済みの場合には、退避させた差分データにより基準時点の状態に戻すことができるので、退避させることなく、ステップ６０７０に進む。
【００９０】
一方、退避済みではない場合（ステップ６０３０：ＮＯ）には、差分データ退避処理部２２６が書込み対象のブロックのデータに基づいてキャッシュメモリ２４０に差分データを作成し（ステップ６０４０）、次いで、差分ボリュームグループ構成テーブル２３４の次退避ブロックフィールド２３４５から差分データの退避先となるブロックを取得し、当該次退避フィールド２３４５を次のブロックに更新する（ステップ６０５０）。
【００９１】
次いで、差分ボリュームＩ／Ｏ処理部２２５は、キャッシュメモリ２４０の差分データを差分データ記録ボリューム２０４の特定したブロックに書き込む(ステップ６０６０)。また、本実施形態では、差分ボリュームＩ／Ｏ処理部２２５が、差分データを書き込んだ差分データ記憶ボリューム２０４のブロックを、対応する世代の仮想ボリュームの空いている最先のブロックと対応付けるマッピング情報を生成して共有メモリ２３０に格納する。これにより、仮想ボリュームにおいては、対応する世代の差分データを仮想ボリュームのブロックの順番に従って時系列に並ぶようにすることができる。
【００９２】
その後、データボリュームＩ／Ｏ処理部２２４は、ライトデータをキャッシュメモリ２４０に格納し(ステップ６０７０)、キャッシュメモリ２４０のライトデータをライト対象のデータボリューム２０３のブロックに対応するディスク装置２８０に書き込み(ステップ６０８０)、ホストライト処理を終了する。
【００９３】
図１７は、本発明の一実施形態に係るホストライト処理を説明する図である。
【００９４】
ストレージ装置２００において、ＮＡＳ装置１０からアドレス（ブロック）１０００にデータＹを格納するブロックライト要求を受信すると、ブロックライト要求（書き込み要求）の対象とするデータボリューム２０３（”Ｖ０００１”）のアドレス１０００に現在格納されているデータＸを含む差分データを当該データボリューム２０３に対応する差分ボリュームグループの差分データ記録ボリューム２０４（”Ｖ０００２”）に退避格納させる。ここで、本実施形態では、差分データは、データが格納されていたデータボリュームのＩＤ（”Ｖ０００１”）と、ブロックライト要求を受信した日時（”２００８／６／２３  １２：００”）と、データボリューム２０３での格納ブロックのアドレス（”１０００”）と、格納されていたデータ（”Ｘ”）とが含まれる。この差分データによると、ブロックライト要求後のデータボリューム２０３のデータに対して、差分データ中のデータを書き戻すことによりことにより、ブロックライト要求前のデータボリューム２０３の状態に復元することができる。
【００９５】
図１８は、本発明の一実施形態に係るＮＡＳ装置のリストア処理のフローチャートである。
【００９６】
ＮＡＳ装置１０においてリストア処理が開始されると(ステップ６３００)、リストア処理プログラム１８ｐを実行するプロセッサ１２が、ユーザから図示しない入力装置等によりリストアする対象のファイル（対象ファイル）の識別データ（例えば、ファイル名）を受領する(ステップＳ６３０５)。
【００９７】
プロセッサ１２は、対応するファイルを管理するファイルシステムにおける最初の世代を処理対象の世代として選択する(ステップＳ６３１０)。
【００９８】
プロセッサ１２は、処理対象の世代の差分ボリュームのメタデータ記録領域に対して対象ファイルが存在するか否かを検索する(ステップ６３１５)。本実施形態では、対象ファイルが存在するか否かを差分ボリュームの一部の領域であるメタデータ記録領域のみを読み込むだけで済むので、検索処理を短時間で実行することができる。そして、プロセッサ１２は、検索の結果、対象ファイルが見つかったか否かを判定する(ステップ６３２０)。この結果、対象ファイルが見つかった場合（ステップ６３２０：ＹＥＳ）には、プロセッサ１２は、対象ファイルのメタデータをリストに追加し(ステップ６３２５)、次の世代（の差分ボリューム）を処理対象として選択する（ステップ６３３０）。一方、対象ファイルが見つからなかった場合（ステップ６３２０：ＮＯ）には、次の世代を処理対象として選択する（ステップ６３３０）。
【００９９】
次いで、プロセッサ１２は、ファイルシステムにおける全ての世代を処理したか否かを判定し(ステップ６３３５)、全ての世代を処理していない場合には、ステップ６３１５からのステップを再び実行する。
【０１００】
一方、全ての世代を処理した場合（ステップ６３３５：ＹＥＳ）には、プロセッサ１２は、リストをユーザに提示する（ステップ６３４０）。例えば、プロセッサ１２は、ＮＡＳ装置１０に接続された表示装置等に、世代ＩＤと、その世代に存在する対象ファイルの更新時刻（更新日時）とを対応付けたリストを表示する。この表示されたリストにより、ユーザは、対象ファイルの更新時刻を把握することができる。
【０１０１】
次いで、プロセッサ１２は、リストアする更新時刻のファイルを含む世代のリストからの選択をユーザから受領し(ステップ６３４５)、選択された世代のリストアをストレージ装置２００に開始させる指示を送信し(ステップ６３５０)、ＮＡＳ装置１０側の処理を終了する（ステップ６３５５）。
【０１０２】
図１９は、本発明の一実施形態に係るストレージ装置のリストア処理のフローチャートである。
【０１０３】
ストレージ装置２００では、ボリュームリストア処理を開始すると(ステップ６４００)、ボリュームリストア処理部２２８が、ＮＡＳ装置１０からリストアする世代を含むリストア開始指示を受領し(ステップ６４０５)、対応するファイルシステムにおける現在の世代から開始指示に含まれる世代までの仮想ボリューム（差分ボリューム）２０５についての処理順リストを作成する(ステップ６４１０)。
【０１０４】
次いで、ボリュームリストア処理部２２８が、処理順リストの先頭の仮想ボリューム２０５を処理対象として選択し（ステップ６４１５）、仮想ボリューム毎のリストア処理を実行する（ステップ６４２０）。
【０１０５】
仮想ボリューム毎のリストア処理においては、処理が開始されると（ステップ６４４０）、ボリュームリストア処理部２２８が仮想ボリュームの最初のブロックを選択し(ステップ６４４５)、選択したブロックに記録されている差分データに基づいてデータボリューム２０３にデータを復元する（ステップ６４５０）。ここで、差分データには、データボリュームのＩＤと、データボリュームでの格納ブロックとが、データボリュームに書き込まれていたデータとともに含まれているので、差分データのＩＤが示すボリュームの格納ブロックに、データを格納することにより、データを復元することができる。
【０１０６】
次いで、ボリュームリストア処理部２２８は、仮想ボリュームの次のブロックを選択し(ステップ６４５５)、仮想ボリュームの全てのブロックについて処理したかを判定し(ステップ６４６０)、全てのブロックについて復元していない場合（ステップ６４６０：ＮＯ）には、ステップ６４５０からのステップを再び実行する一方、全てのブロックについて復元した場合（ステップ６３６０：ＹＥＳ）には、仮想ボリューム毎のリストア処理を終了する（ステップ６４６５）。
【０１０７】
仮想ボリューム毎のリストア処理が終了した場合には、ボリュームリストア処理部２２８は、処理順リストの次の仮想ボリュームを選択し（ステップ６４２５）、次の仮想ボリュームがあるか否かを判定し(ステップ６４３０)、次の仮想ボリュームがある場合（ステップ６４３０：ＹＥＳ）には、その仮想ボリュームを処理対象としてステップ６４２０からのステップを実行する一方、次の仮想ボリュームがない場合（ステップ６４３０：ＮＯ）には、リストア処理を終了する（ステップ６４３５）。
【０１０８】
以上の処理により、データボリューム２０３には、ユーザが所望する状態の対象ファイルを含んだファイルシステムが復元されることとなる。従って、ユーザは必要な状態の対象ファイルを読み出して利用することができる。
【０１０９】
次に、本発明の変形例に係るストレージシステムについて説明する。上記実施形態では、対象ファイルと同じファイル名のファイルをユーザに提示するようにしていたが、本変形例に係るストレージシステムでは、対象ファイルの情報として、ファイル名を変更したことや、ファイルの移動等が行われたこと等の情報をも提供するようにしている。
【０１１０】
本変形例に係るストレージシステムは、上記した実施形態に係るストレージシステムとは、ＮＡＳ装置１０のプロセッサ１２によるユーザに提示するリストの作成に関わる処理が異なる以外は、ほぼ同様な構成となっている。なお、本変形例においては、ファイルシステムは、ｉｎｏｄｅを用いたファイルシステムを例に説明する。
【０１１１】
本変形例に係るストレージシステムのＮＡＳ装置１０は、ステップ６３００からステップ６３４０の処理に代えてファイル名追跡処理（図２０乃至図２２）を実行する。
【０１１２】
図２０は、本発明の変形例に係るファイル名追跡処理のフローチャートであり、図２１は、本発明の変形例に係るデータボリュームにおけるファイル名追跡処理のフローチャートであり、図２２は、本発明の変形例に係る仮想ボリュームにおけるファイル名追跡処理のフローチャートである。
【０１１３】
ファイル名追跡処理が開始されると(ステップ６５００)、ＮＡＳ装置１０のプロセッサ１２は、ユーザ表示用のリストＬを空のリストとして初期化し(ステップ６５１０)、図２１に示すデータボリューム２０３のファイル名追跡処理を実行する（ステップ６５２０）。
【０１１４】
データボリュームのファイル名追跡処理において、処理を開始すると（ステップ６６００）、リストア処理プログラム１８ｐを実行するプロセッサ１２がユーザから図示しない入力装置等によりリストアする対象のファイル（対象ファイル）の識別データ（例えば、ファイル名）を受領する(ステップＳ６６１０)。次いで、プロセッサ１２は、ファイルシステムを格納するデータボリューム２０３のメタデータからファイル名のｉｎｏｄｅを特定し(ステップ６６２０)、ｉｎｏｄｅがあるか否かを判定する（ステップ６６３０）。
【０１１５】
この結果、ｉｎｏｄｅがある場合には、リストＬにデータボリューム２０３のボリュームＩＤと、対象ファイルのメタデータ（更新時刻等）とを含むエントリを追加する(ステップ６６５０)一方、ｉｎｏｄｅがない場合には、リストＬにデータボリューム２０３のボリュームＩＤ（識別情報）と対象ファイルが存在しないことを示す情報を含むエントリを追加する（ステップ６６７０）。ステップ６６５０又はステップ６６７０でリストＬにエントリを追加した後に、リストＬをファイル名追跡処理に返却し（ステップ６６６０）、データボリュームのファイル名追跡処理を終了する（ステップ６６８０）。
【０１１６】
データボリューム２０３のファイル名追跡処理が終了すると、プロセッサ１２は、図２２に示す仮想ボリューム２０５のファイル名追跡処理を実施する(ステップ６５３０)。
【０１１７】
仮想ボリュームのファイル名追跡処理が開始されると(ステップ６７００)、プロセッサ１２は、対象ファイルのファイル名を受領して、検索対象ファイル名とする(ステップ６７１０)。次いで、データボリューム２０３のファイル名追跡処理で特定しているｉｎｏｄｅが存在していれば、そのｉｎｏｄｅを前回のｉｎｏｄｅとして把握し(ステップ６７２０)、最新の世代を処理対象の世代と選択する(ステップ６７３０)。
【０１１８】
プロセッサ１２は、処理対象の世代の仮想ボリューム２０５におけるメタデータ格納領域から検索対象ファイル名に対応付けられたｉｎｏｄｅを特定し(ステップ６７４０)、対応付けられたｉｎｏｄｅがあるか否かを判定する（ステップ６７５０）。
【０１１９】
この結果、ｉｎｏｄｅがない場合（ステップ６７５０：ＮＯ）には、同一のファイル名のファイルがその世代（の基準時点）に存在しないことを意味しているので、前回ｉｎｏｄｅを処理対象の世代の仮想ボリューム２０５のメタデータ格納領域から検索し(ステップ６７７０)、ｉｎｏｄｅがあるか否かを判定する（ステップ６７８０）。
【０１２０】
この結果、前回ｉｎｏｄｅと同じｉｎｏｄｅがない場合には、ファイルシステムに対象ファイルが存在しないと考えられるので、リストＬに、対象世代の識別情報（例えば、世代ＩＤ）と、対象ファイルが不在であることを示す情報とを含むエントリを追加し、ステップ６８４０に進む。一方、ステップ６７８０において、前回ｉｎｏｄｅと同じｉｎｏｄｅがある場合には、対象ファイルのファイル名が変更された可能性があるので、検索対象ファイル名を特定したファイル名として選択し(ステップ６７９０)、リストＬに処理対象の世代の識別情報と、特定したファイルのファイル名（この場合は検索対象ファイル名）と、ファイル名が変更された可能性があることを示す情報と、特定したファイルの属性情報（例えば、更新日時等）とを含むエントリを追加し（ステップ６８１０）、ステップ６８４０に進む。
【０１２１】
一方、ステップ６７５０において、ｉｎｏｄｅがあると判定した場合(ステップ６７５０：ＹＥＳ)には、プロセッサ１２は、特定したｉｎｏｄｅと、前回のｉｎｏｄｅとが同一であるか否かを判定する（ステップ６７６０）。
【０１２２】
この結果、特定したｉｎｏｄｅと、前回のｉｎｏｄｅとが同一ではない場合には、ファイルに対して複製や移動等が行われたと考えられるので、プロセッサ１２は、リストＬに、処理対象の世代の識別情報と、特定したファイルのファイル名と、ファイルが複製や移動等が行われた可能性があることを示す情報と、特定したファイルの属性情報（例えば、更新日時等）とを含むエントリを追加し（ステップ６８２０）、ステップ６８４０に進む。一方、特定したｉｎｏｄｅと前回ｉｎｏｄｅとが同一である場合には、対象ファイルであることを意味しているので、プロセッサ１２は、リストＬに、処理対象の世代の識別情報と、ファイル名と、ファイルの属性情報（例えば、更新日時等）とを含むエントリを追加し（ステップ６８３０）、ステップ６８４０に進む。
【０１２３】
ステップ６８４０においては、特定したファイルが存在する場合（ステップ６８１０、６８２０、６８３０を行った場合）には、特定したファイルのファイル名を新たな検索対象ファイル名とし、特定したｉｎｏｄｅがある場合（ステップ６８１０、６８２０、６８３０を行った場合）には、特定したｉｎｏｄｅを前回のｉｎｏｄｅとする（ステップ６８５０）。
【０１２４】
次いで、プロセッサ１２は、処理対象の世代の前の世代を次の処理対象の世代として選択し(ステップ６８６０)、全ての世代を処理対象として処理したか否かを判定し(ステップ６８７０)、全ての世代を処理対象として処理していない場合には、ステップ６７４０からのステップを再び実行させ（ステップ６８７０：ＹＥＳ）、すべての世代を処理対象として処理した場合（ステップ６８７０：ＹＥＳ）には、仮想ボリュームのファイル名追跡処理を終了する（ステップ６８８０）。
【０１２５】
図２０の説明に戻り、仮想ボリュームのファイル名追跡処理（ステップ６５３０）が終了すると、
プロセッサ１２は、リストＬをユーザに提示する（ステップ６５４０）。例えば、プロセッサ１２は、ＮＡＳ装置１０に接続された表示装置等に、リストＬに追加したエントリの情報を表示する。この表示により、ユーザは、例えば、対象ファイルの更新時刻を適切に把握することができるとともに、或る世代において対象ファイルが不在であることや、ファイル名が変更された可能性があることや、ファイルが複製や移動された可能性があること等を把握することができる。このため、ファイル名が移動や、ファイル名が変更された場合においても、必要なデータが含まれているファイルを把握することができる。なお、このリストＬに対してユーザが必要なファイルを含む世代の選択を行うと、上記した実施形態と同様な処理により、選択された世代のデータボリュームを復元するリストアが実行されることとなる。
【０１２６】
以上、本発明を実施形態に基づいて説明したが、本発明は上述した実施の形態に限られず、他の様々な態様に適用可能である。
【０１２７】
例えば、上記実施形態では、データボリューム２０３の或るブロックに対する書込み要求があった場合に、同一の世代において既に、差分データ記録ボリューム２０４に対して対応するブロックのデータ（すなわち、この世代の基準時点におけるデータ）の差分データが格納されている場合には、書込み要求があった時点の対応するブロックのデータの差分データを差分データ記憶ボリューム２０４に記憶しないようにして、差分データ記録ボリューム２０４に必要なデータ量を抑えるようにしていたが、本発明はこれに関わらず、ブロックに対する書込み要求があった場合には、常に、対応するブロックのデータの差分データを差分データ記憶ボリューム２０４に格納するようにしてもよい。
【０１２８】
また、上記実施形態では、各世代の仮想ボリュームの先頭に或るメタデータ領域のすべてのメタデータを読み出して、対象のファイルのメタデータを検索するようにしていたが、本発明はこれに限られず、例えば、ファイルシステムがｉノードを用いたものであれば、検索対象ファイルのｉノード番号から、ｉノードの格納されているアドレスを把握し、当該アドレスに対して読み出しをするようにしてもよく、このようにすれば、検索処理を迅速に行うことができる。
【０１２９】
また、上記実施形態では、リストアする世代を選択し、データボリューム２０３を世代の基準時点における状態に復元するようにしていたが、本発明はこれに限られず、対象とするファイルのみ（ファイルの存在するブロックのみ）を世代の基準時点における状態に復元するようにしてもよい。
【０１３０】
また、上記実施形態では、１つの差分ボリュームグループが１つのデータボリューム２０３の差分データを格納していた例を示していたが、本発明はこれに限られず、複数のデータボリューム２０３の差分データを同一の差分ボリュームグループに格納するようにしてもよい。この場合においては、或るデータボリューム２０３の或る基準時点におけるメタデータ群を差分ボリュームグループに書き込む際に、他のデータボリューム２０３の差分データの書き込みが発生して、メタデータ群が差分ボリュームグループの連続したブロックに書き込まれないこともあるが、この場合であっても、メタデータ群の格納される領域が比較的狭い範囲に集約されており、また、同一の世代における差分データよりは前の記憶領域に格納されるので、その世代の全てのファイルのメタデータの読み込みを迅速に行うことができる。また、この場合においては、差分ボリュームグループでは、異なるデータボリューム２０３のメタデータや差分データが時系列に格納されることとなるが、各データボリューム２０３におけるメタデータ群や差分データを仮想ボリューム２０５として管理する、すなわち、各データボリューム２０３のメタデータや差分データが、仮想ボリュームのブロックに時系列に並ぶように管理するようにしてもよい。このようにすると、所望するデータボリューム２０３の世代の仮想ボリューム２０５を指定することにより、所望する世代におけるメタデータや差分データを容易に時系列に取得することができる。
【０１３１】
また、上記実施形態においては、ストレージ装置２００の差分データ記録ボリューム２０４（の差分ボリューム）から復元対象ファイルのメタデータを検索するようにしていたが、本発明はこれに限られず、少なくともいずれか１つの世代の差分ボリューム２０５をバックアップ装置３１により記録媒体３２に格納させるようにし、ＮＡＳ装置１０がバックアップ装置３１の記録媒体３２の差分ボリュームからメタデータを読み出して検索するようにしてもよい。また、差分ボリュームを記録媒体３２に退避させた場合にあっても、ストレージ装置２００の差分データ記録ボリューム２０４に、各世代の全てのファイルのメタデータが維持されるようにしておき、ＮＡＳ装置１０がストレージ装置２００の差分データ記録ボリュームに維持されているメタデータを読み出して、復元対象のファイルを検索するようにしてもよい。なお、この場合には、復元対象ファイルを復元する場合には、ストレージ装置２００がバックアップ装置３１の記録媒体３２から必要な差分データを取得して復元することとなる。
【０１３２】
また、ＮＡＳ装置１０がストレージ装置２００の半導体メモリ（例えば、共有メモリ、キャッシュメモリ）に各世代の全てのファイルのメタデータが維持されるようにしておき、ＮＡＳ装置１０がストレージ装置２００に維持されているメタデータを読み出して、復元対象のファイルのメタデータを検索するようにしてもよい。
【０１３３】
また、上記実施形態において、データボリューム２０３のある世代を復元する際、データボリューム２０３とは異なる復元用ボリュームを用意し、この復元用ボリュームにデータボリューム２０３の当該世代におけるデータが形成されるにしてもよい。一つの方法として、例えば、図１９に示したボリュームリストア処理のステップ６４５０において、差分データの書き込み先ボリュームをデータボリューム２０３ではなく復元用ボリュームとするとともに、差分データを書き込んだブロックを記録しておく。そして、ステップ６４３０において、全ての仮想ボリュームのリストア処理が終了した後、差分データが書き込まれなかったブロックについて、データボリューム２０３からデータを読み出し復元用ボリュームに書き込む。あるいは別の一つの方法として、例えば、復元用ボリュームにデータボリューム２０３のデータを複製しておき、復元用ボリュームをデータボリューム２０３と見做して図１９に示したボリュームリストア処理を実行する。これらの方法によって、データボリューム２０３の所望の世代を復元用ボリュームに形成することができる。
【図面の簡単な説明】
【０１３４】
【図１】本発明の一実施形態に係るストレージシステムの概要を説明する図である。
【図２】本発明の一実施形態に係るストレージシステムの論理的な構成図である。
【図３】本発明の一実施形態に係るＮＡＳ装置の構成図である。
【図４】本発明の一実施形態に係るストレージ装置のハードウェア構成図である。
【図５】本発明の一実施形態に係るストレージ装置の機能構成図である。
【図６】本発明の一実施形態に係るＲＡＩＤグループ構成テーブルの一例を示す図である。
【図７】本発明の一実施形態に係るボリューム構成テーブルの一例を示す図である。
【図８】本発明の一実施形態に係る差分管理構成テーブルの一例を示す図である。
【図９】本発明の一実施形態に係る差分ボリュームグループ構成テーブルの一例を示す図である。
【図１０】本発明の一実施形態に係る世代管理テーブルの一例と示す図である。
【図１１】本発明の一実施形態に係るＣＯＷマップの一例を示す図である。
【図１２】本発明の一実施形態に係るＮＡＳ装置の世代作成処理のフローチャートである。
【図１３】本発明の一実施形態に係るストレージ装置の世代作成処理のフローチャートである。
【図１４】本発明の一実施形態に係るメタデータの集約を説明する図である。
【図１５】本発明の一実施形態に係るファイルライト処理のフローチャートである。
【図１６】本発明の一実施形態に係るホストライト処理のフローチャートである。
【図１７】本発明の一実施形態に係るホストライト処理を説明する図である。
【図１８】本発明の一実施形態に係るＮＡＳ装置のリストア処理のフローチャートである。
【図１９】本発明の一実施形態に係るストレージ装置のリストア処理のフローチャートである。
【図２０】本発明の変形例に係るファイル名追跡処理のフローチャートである。
【図２１】本発明の変形例に係るデータボリュームにおけるファイル名追跡処理のフローチャートである。
【図２２】本発明の変形例に係る仮想ボリュームにおけるファイル名追跡処理のフローチャートである。
【符号の説明】
【０１３５】
１  ストレージシステム、１０  ＮＡＳ装置、１１  ネットワークインタフェースコントローラ、１２  プロセッサ、１３  ホストバスアダプタ、１４  メモリ、３０  計算機、３１  バックアップ装置、３３  ＬＡＮ、３４  ＳＡＮ、２００  ストレージ装置、１０  ストレージ装置、１００  基本筐体、２００  コントローラ、２０１  ターゲット、２０２  ＲＡＩＤグループ、２０３  データボリューム、２０４  差分データ記録ボリューム、２０５  差分ボリューム、２１０  ホストバスコントローラ、２２０  フロントエンドコントローラ、２３０  共有メモリ、２４０  キャッシュメモリ、２５０  コントローラ接続ネットワーク、２６０  バックエンドコントローラ、２７０  内部ストレージ接続ネットワーク、２８０  ディスク装置。
【図１】
2010049488.tif 000003
【図２】
2010049488.tif 000004
【図３】
2010049488.tif 000005
【図４】
2010049488.tif 000006
【図５】
2010049488.tif 000007
【図６】
2010049488.tif 000008
【図７】
2010049488.tif 000009
【図８】
2010049488.tif 000010
【図９】
2010049488.tif 000011
【図１０】
2010049488.tif 000012
【図１１】
2010049488.tif 000013
【図１２】
2010049488.tif 000014
【図１３】
2010049488.tif 000015
【図１４】
2010049488.tif 000016
【図１５】
2010049488.tif 000017
【図１６】
2010049488.tif 000018
【図１７】
2010049488.tif 000019
【図１８】
2010049488.tif 000020
【図１９】
2010049488.tif 000021
【図２０】
2010049488.tif 000022
【図２１】
2010049488.tif 000023
【図２２】
2010049488.tif 000024