(57)【特許請求の範囲】
【請求項１】
ファイルの内容や属性、ディレクトリツリーの構成などの状態の変更を検知し、記憶手段の同一ボリューム内にスナップショットを自動的かつ追加的に作成するファイルシステムに対するスナップショットの管理を行うファイルサーバであって、
前記ファイルシステムからスナップショットを取得し、該スナップショットの生成時刻の情報に基づきスナップショットをグループ分けし、現在時刻より定められた時間遡った過去の時点より後に生成されたスナップショットは全て該ファイルシステムに保存するスナップショット取得手段と、
前記過去の時点より以前のスナップショットについては、スナップショットの生成時刻の間隔が、グループごとに定められた時間以上となるよう、前記ファイルシステムのテーブルから段階的にスナップショットを削除するスナップショット削除手段と、
前記ファイルサーバが、スナップショットを、NFS(Network  File  System)、CIFS  (Common  Internet  File  System)といったリモートファイル管理プロトコルを通じ、クライアント端末からネットワーク経由で公開する連続スナップショットを共有するサーバであるときに、
スナップショットを生成時刻から現在時刻までの存続期間に応じて複数のグループに分け、前記ファイルシステムに格納するグループ化手段と、
前記ファイルシステムの各グループから一定個数のスナップショットを選んで公開することで、前記クライアント端末にアクセスさせるスナップショットの数を一定個数以内に抑える公開手段と、
を有することを特徴とするファイルサーバ。
【請求項２】
前記ファイルシステムのテーブル上でスナップショットを削除した場合でも、スナップショットが使用するディスク上のデータ及びメタデータ領域を直ちには解放せず、予め定められたスケジュールに従って動作するか、もしくはＣＰＵの使用率やディスク入出力量などのシステム負荷が一定水準より低い期間に動作するバックグラウンドプログラムによって、前記領域をスナップショット削除時より遅らせて解放する解放手段を更に有する
請求項１記載のファイルサーバ。
【請求項３】
ファイルの内容や属性、ディレクトリツリーの構成などの状態の変更を検知し、記憶手段の同一ボリューム内にスナップショットを自動的かつ追加的に作成するファイルシステムに対するスナップショットの管理を行うファイルサーバにおける連続スナップショット管理方法であって、
前記ファイルサーバのスナップショット取得手段が、
前記ファイルシステムからスナップショットを取得し、該スナップショットの生成時刻の情報に基づきスナップショットをグループ分けし、現在時刻より定められた時間遡った過去の時点より後に生成されたスナップショットは全て該ファイルシステムに保存し、
前記ファイルサーバのスナップショット削除手段が、
前記過去の時点より以前のスナップショットについては、スナップショットの生成時刻の間隔が、グループごとに定められた時間以上となるよう、前記ファイルシステムのテーブルから段階的にスナップショットを削除し、
前記ファイルサーバが、スナップショットを、NFS(Network  File  System)、CIFS  (Common  Internet  File  System)といったリモートファイル管理プロトコルを通じ、クライアント端末からネットワーク経由で公開する連続スナップショットを共有するサーバであるときは、
前記ファイルサーバのグループ化手段が、
スナップショットを生成時刻から現在時刻までの存続期間に応じて複数のグループに分け、前記ファイルシステムに格納し、
前記ファイルサーバの公開手段が、
前記ファイルシステムの各グループから一定個数のスナップショットを選んで公開することで、前記クライアント端末にアクセスさせるスナップショットの数を一定個数以内に抑える
ことを特徴とする連続スナップショット管理方法。
【請求項４】
前記ファイルサーバの解放手段が、
前記ファイルシステムのテーブル上でスナップショットを削除した場合でも、スナップショットが使用するディスク上のデータ及びメタデータ領域を直ちには解放せず、予め定められたスケジュールに従って動作するか、もしくはＣＰＵの使用率やディスク入出力量などのシステム負荷が一定水準より低い期間に動作するバックグラウンドプログラムによって、前記領域をスナップショット削除時より遅らせて解放する
請求項３記載の連続スナップショット管理方法。
【請求項５】
請求項１または２に記載のファイルサーバを構成する各手段としてコンピュータを機能させるための連続スナップショット管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイルサーバ及び連続スナップショット管理方法及び連続スナップショット管理プログラムに係り、特に、連続的なスナップショットを作成するためのファイルサーバ及び連続スナップショット管理方法及び連続スナップショット管理プログラムに関する。
【背景技術】
【０００２】
ファイルサーバは、自身が有する記憶装置を、ネットワーク上の他のコンピュータと共有して、他のコンピュータから利用できるようにする機能をもったコンピュータまたは装置である。記憶装置としてはハードディスクやフラッシュメモリなどの不揮発でランダムアクセスが可能なデバイスが用いられる。ファイルサーバは、ファイルシステムという基本ソフト（ＯＳ）の機能を通じて、データをファイルという資源として抽象化して扱い、その生成・削除やデータの読み書きといったアクセス手段を提供する。
【０００３】
通常ファイルシステムは、データの管理を容易かつ効率的にするために、フォルダもしくはディレクトリと呼ばれるファイルもしくはディレクトリ自身の入れ物の抽象化である永続的な資源により、ファイルを階層的に管理し、パス名という名前によってそれらの所在を指定することが可能であるが、ファイルサーバはこういった名前空間を他のコンピュータから透過的にアクセスできるような機能も備える。これらのファイルや名前空間に対するアクセスや操作の機能は、所定のネットワークプロトコル（リモートファイル管理プロトコル）を通じて、クライアントとサーバ間で伝達される。代表的なリモートファイル管理プロトコルとしては、ＮＦＳ(Network File System)やCIFS(Common Internet File system)、あるいはHTTPを拡張したWebDAV(Web-based Distributed Authoring and Versioning)が知られている。
【０００４】
ファイルサーバは、ユーザのデータを保管する役割を担うため、高い信頼性やデータ保護機能が求められる。ハードウェア障害からデータを保護するため、ファイルサーバは複数の記憶装置を組み合わせ、ミラーリング、あるいはRAID(Redundant Arrays of Inexpensive Disks)などの技法を適用して冗長化する場合が多い。
【０００５】
こういった冗長化手法は、記憶装置の故障からデータを保護するのに有効であるが、ユーザが誤って行った操作や、ソフトウェアのバグによるデータ破壊、あるいはウィルスによるデータ改ざんなどに対しては、冗長化されたデータが全て同時に影響を受けてしまうため有効でない。
【０００６】
これらのハードウェア障害に起因しない問題によるデータ喪失を避ける一つ方法は、記憶装置のデータをテープや他の記憶装置に対し定期的にバックアップを行うことである。あるいはファイルサーバの中には、記憶装置（ブロックデバイス）もしくはファイルシステムのある時点の状態を凍結して残し、その凍結した状態（スナップショット）を後から参照できるようにすることで、前記の障害によるデータ喪失を防ぐために提供するものがある。ファイルシステムのスナップショットは、ファイルのデータと、ファイルを管理するために同一記憶装置上に保存されるメタデータと呼ばれるファイルシステムの内部データを、コピーして複製を作ったり、データやメタデータを上書きせずに、新たな場所に書き込むことで効率的に過去の状態を残す"Copy-on-Write"と呼ばれる書き込み手法を採ることにより実現される。
【０００７】
しかし通常バックアップやスナップショットは、運用システムに対する負荷や、バックアップ、スナップショットの取得作成にかかる時間そのものの制約により、あまり頻度を高めることができず、結果として最後の取得時刻以降の誤操作、バグによるデータ破壊、改ざん、などよるデータ喪失を避けることは難しい。
【０００８】
これを克服する技術として、連続的に他のマシンにバックアップを転送するCDP(Continuous Data Protection)やログ構造化ファイルシステム方式に基づき連続的にスナップショットが取得可能なファイルシステムNILFS(New Implementation of the Log-Structured Filesystem)がある（例えば、非特許文献１参照）。NILFSは、変更のあったデータとそれを管理するメタデータブロックをディスク上に追記するログ構造化ファイルシステムを応用し、ログ構造化ファイルシステムが定期的に生成するチェックポイント（ファイルシステムのある首尾一貫した状態を保つ点）をスナップショットとしてアクセス可能にする技術である。NILFSはローカルファイルシステム内に多数のスナップショット（もしくはチェックポイント）を自動的かつ暗黙的に生成し、変更データをディスクに書き戻す際や、同期保証つきの書き込みを実行する粒度で、細かくスナップショットを生成することができる。
【０００９】
図１８に、連続スナップショットファイルシステムの概念を示す。
【００１０】
通常のファイルシステムではアプリケーションが編集して保存したファイルはディスク上でも上書き保存され、過去のバージョンのデータは残らない。バックアップを定期的に実施している場合は、バックアップを実施した時点の状態は復元可能であるが、バックアップ間の変更、特に、最後にバックアップを取得した以降に変更したデータは保護されない。これに対しNILFSでは、以前のデータも上書きされずにスナップショットとして記憶装置上に残っており、前述の人為的あるいはソフトウェア的な障害により失われたデータやディレクトリを復元することができる。
【００１１】
NILFSの連続スナップショット手法は、こういったデータ保護のソリューションとしては、専用のハードを必要としない、運用システムに対するオーバヘッドがほぼ無視できる、ファイル単位ではなく、ファイルシステム全体の整合性を保証するようなリカバリが可能である、などの利点を有している。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】佐藤孝治、小西隆介、木原誠司、天海良治、盛合敏「ログ構造化ファイルシステムＮＩＬＦＳの設計と実装」, 情報処理学会 論文誌コンピューティングシステム(ACS), Vol.2, No.1, pp.110-122, 2009.
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、NILFSのような連続的なスナップショット作成技術により、多数のスナップショットを追記的に生成すると、スナップショットが保持する過去のデータを維持するため、記憶装置の容量が逼迫することになる。このためスナップショットを必要に応じ削除してディスク領域を解放するなどの操作が必要になるが、前述のファイルサーバではこういった操作は自律的に行えないと、ユーザの利便性・保守性を著しく損なうことになる。
【００１４】
ここで多数生成されるスナップショットの削除は、ファイルサーバにI／O負荷をかけるので、ユーザからのアクセスの応答性が低下しないよう調整することが望ましい。一つの方法は、夜間などの業務時間外にスナップショットの削除処理をずらすことであるが、NILFSのようにスナップショットが高い頻度で生成されるシステムにおいては、スケジュールされた削除処理を実施する間に多数のスナップショットが蓄積され、記憶装置の使用量の変動が大きくなる。過渡的に必要以上の容量を消費するため、容量不足が生じやすくなる。
【００１５】
一方、ファイルサーバのクライアント側に視点を移すと、多数のスナップショットが提供されることにより、それを閲覧するユーザが混乱したり、クライアントシステムのスナップショット処理が多数のスナップショットを扱いきれなくなるなどの弊害が生じる。今日のコモディティＰＣ向けのＯＳの中には、ファイルサーバのスナップショット機能を用いてファイルの変更履歴を抽出し、ユーザにファイル単位の履歴参照を可能にするものがあるが、こういった機能はバックグラウンド処理としてスナップショットを横断的に参照するため、スナップショット数に応じて処理時間とメモリ消費量が増え、クライアントＰＣ（パーソナルコンピュータ）の応答性や安定性を低下させる。
【００１６】
さらに、共有ファイルサーバの一つの利用法として、ユーザのＰＣ上のデータのバックアップに使う場合があるが、こういった用途ではファイルサーバ上のユーザのデータは、バックアップの頻度でしか更新されないので、バックアップ間の更新データは保護されず、連続スナップショットのきめ細やかなスナップショット作成機能を活かすことができない。
【００１７】
また、連続スナップショットによって多数のスナップショットをファイルサーバ上で提供することの他の問題として、所望のファイルを探し出すことが難しくなることが挙げられる。このため補助的な手段としてファイル検索が重要となる。 
とりわけ、多数のスナップショットから効率的にファイルを探し出す手段としてインデックス検索方式に基づくファイル検索機能が有効である。NILFSの連続スナップショットは、ファイルシステムの名前空間の広がりに加えて、時間的な広がりも与えるが、過去のスナップショットのそれぞれをサブディレクトリとして割り付けることで、スナップショット上のファイルも検索対象に加えることができる。
【００１８】
しかしながら、このように各スナップショットを単純に名前空間に割り付けて検索を行う場合には、ファイルがスナップショット単位で履歴が分かれ、ユーザの利便性の面でも、検索インデックスの効率の面でも無駄がある。特に、スナップショットが連続的に生成され、削除される状況に対して、検索インデックスを自動かつ効率的に保守することが求められる。
【００１９】
本発明は、上記の点に鑑みなされたもので、スナップショットが連続的に生成され、削除される状況において、直近の誤操作によって喪失したデータは保全し、一定時間経った過去のスナップショットについては時間経過に応じて残すようなスナップショットを自動かつ効率的に保守することが可能なファイルサーバ及び連続スナップショット管理方法及び連続スナップショット管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２２】
図１は、本発明の原理構成図である。
【００２３】
本発明（請求項１）は、ファイルの内容や属性、ディレクトリツリーの構成などの状態の変更を検知し、記憶手段１１０の同一ボリューム内にスナップショットを自動的かつ追加的に作成するファイルシステム１５１に対するスナップショットの管理を行うファイルサーバであって、
ファイルシステム１５１からスナップショットを取得し、該スナップショットの生成時刻の情報に基づきスナップショットをグループ分けし、現在時刻より定められた時間遡った過去の時点より後に生成されたスナップショットは全て該ファイルシステムに保存するスナップショット取得手段１６１１と、
過去の時点より以前のスナップショットについては、スナップショットの生成時刻の間隔が、グループ毎に定められた時間以上となるよう、ファイルシステム１５１のテーブルから段階的にスナップショットを削除するスナップショット削除手段１６１２と、
ファイルサーバが、スナップショットを、NFS(Network  File  System)、CIFS  (Common  Internet  File  System)といったリモートファイル管理プロトコルを通じ、クライアント端末からネットワーク経由で公開する連続スナップショットを共有するサーバであるときに、
スナップショットを生成時刻から現在時刻までの存続期間に応じて複数のグループに分け、ファイルシステムに格納するグループ化手段と、
ファイルシステムの各グループから一定個数のスナップショットを選んで公開することで、クライアント端末にアクセスさせるスナップショットの数を一定個数以内に抑える公開手段と、を有する。
【００２４】
また、本発明（請求項２）は、請求項１のファイルサーバにおいて、
ファイルシステム１５１のテーブル上でスナップショットを削除した場合でも、スナップショットが使用するディスク上のデータ及びメタデータ領域を直ちには解放せず、予め定められたスケジュールに従って動作するか、もしくはＣＰＵの使用率やディスク入出力量などのシステム負荷が一定水準より低い期間に動作するバックグラウンドプログラムによって、領域をスナップショット削除時より遅らせて解放する解放手段を更に有する。
【００３１】
図２は、本発明の原理を説明するための図である。
【００３２】
本発明（請求項３）は、ファイルの内容や属性、ディレクトリツリーの構成などの状態の変更を検知し、記憶手段の同一ボリューム内にスナップショットを自動的かつ追加的に作成するファイルシステムに対するスナップショットの管理を行うファイルサーバにおける連続スナップショット管理方法であって、
ファイルサーバのスナップショット取得手段が、
ファイルシステムからスナップショットを取得し（ステップ１）、該スナップショットの生成時刻の情報に基づきスナップショットをグループ分けし（ステップ２）、現在時刻より定められた時間遡った過去の時点より後に生成されたスナップショットは全て該ファイルシステムに保存し（ステップ３）、
ファイルサーバのスナップショット削除手段が、
過去の時点より以前のスナップショットについては、スナップショットの生成時刻の間隔が、グループごとに定められた時間以上となるよう、ファイルシステムのテーブルから段階的にスナップショットを削除し（ステップ４）、
ファイルサーバが、スナップショットを、NFS(Network  File  System)、CIFS  (Common  Internet  File  System)といったリモートファイル管理プロトコルを通じ、クライアント端末からネットワーク経由で公開する連続スナップショットを共有するサーバであるときは、
ファイルサーバのグループ化手段が、
スナップショットを生成時刻から現在時刻までの存続期間に応じて複数のグループに分け、ファイルシステムに格納し、
ファイルサーバの公開手段が、
ファイルシステムの各グループから一定個数のスナップショットを選んで公開することで、クライアント端末にアクセスさせるスナップショットの数を一定個数以内に抑える。
【００３３】
また、本発明（請求項４）は、請求項３の連続スナップショット管理方法において、
ファイルサーバの解放手段が、
ファイルシステムのテーブル上でスナップショットを削除した場合でも、スナップショットが使用するディスク上のデータ及びメタデータ領域を直ちには解放せず、予め定められたスケジュールに従って動作するか、もしくはＣＰＵの使用率やディスク入出力量などのシステム負荷が一定水準より低い期間に動作するバックグラウンドプログラムによって、領域をスナップショット削除時より遅らせて解放する。
【００４０】
本発明（請求項５）は、請求項１または２に記載のファイルサーバを構成する各手段としてコンピュータを機能させるための連続スナップショット管理プログラムである。
【発明の効果】
【００４３】
上記のように本発明によれば、以下のような効果を奏する。
【００４４】
請求項１，３，５の発明（第１の発明）によれば，連続的に多数のスナップショットを自動作成するファイルサーバにおいて、直近の誤操作によって喪失したデータは保全し、また一定時間経った過去のスナップショットについては時間経過に応じてユーザが必要なスナップショットを代表として残すような、データ保護と履歴管理を両立する連続スナップショットの管理を機械的に行えるようになる。そして、連続スナップショットを蓄積しているボリュームが履歴(スナップショット)の増加によってディスクフルにならないよう長期間運用するファイルサーバが実現できる。また、連続スナップショットをリモートファイル管理プロトコルを通じ、クライアントマシンからネットワーク経由で公開する場合で、スナップショットからファイル履歴を抽出するようなスナップショットを横断的にアクセスする処理をクライアントマシンが行う場合に、参照スナップショットの数が一定個数に抑えられることで、クライアントマシンとファイルサーバ双方の負荷を抑え、応答性と安定性を改善できる。また、ユーザがクライアントＰＣ上のGUIを通じてスナップショットを閲覧する際に、所望の時刻・バージョンのスナップショットを探して選択する際の使い勝手が改善される。
【００４５】
請求項２，４，５の発明（第２の発明）によれば、第１の発明によるファイルサーバにおいてユーザからのファイルアクセスのない業務時間帯外や、業務時間帯内であってもユーザのアクセスが少ない空白時間にスナップショット削除が実施されるようになり、ユーザがファイルサーバ上のファイルにアクセスする際の応答性をなるべく低下させずに連続的に多数生成されるスナップショットを削除できるようになる。
【図面の簡単な説明】
【００５３】
【図１】本発明の原理構成図である。
【図２】本発明の原理を説明するための図である。
【図３】本発明の第１の実施の形態における連続スナップショットファイルサーバの構成図である。
【図４】本発明の第１の実施の形態におけるスナップショット管理デーモンの動作のフローチャートである。
【図５】本発明の第１の実施の形態におけるスナップショットの段階的な削除を説明するための図である。
【図６】本発明の第２の実施の形態における連続スナップショットファイルサーバの構成図である。
【図７】本発明の第２の実施の形態における解放デーモンの動作のフローチャートである。
【図８】スナップショットの共有方法を示す図である。
【図９】本発明の第３の実施の形態におけるスナップショットの選別処理のフローチャートである。
【図１０】本発明の第４の実施の形態におけるバックアップシステムの構成図である。
【図１１】本発明の第４の実施の形態における同期デーモンの動作のフローチャートである。
【図１２】第１・第２の実施の形態による連続スナップショットファイルサーバにおけるファイルの存続期間とスナップショット番号の関係を示す図である。
【図１３】本発明の第５の実施の形態における検索インデックスの構成例である。
【図１４】本発明の第６〜第８の実施の形態における検索インデックス生成装置の構成図である。
【図１５】本発明の第６の実施の形態における検索インデックス生成処理のフローチャートである。
【図１６】本発明の第７の実施の形態における検索インデックスの更新処理のフローチャートである。
【図１７】本発明の第８の実施の形態における検索インデックスの最適化処理のフローチャートである。
【図１８】連続スナップショットファイルシステムの概念を示す図である。
【発明を実施するための形態】
【００５４】
以下、図面と共に本発明の実施の形態を説明する。
【００５５】
［第１の実施の形態］
図３は、本発明の第１の実施の形態における連続スナップショットファイルサーバの構成例を示す。
【００５６】
同図に示す連続スナップショットファイルサーバ１００は、記憶装置（ディスク）１１０とネットワークインタフェース１２０を搭載し、その基本ソフトOS(Operating System)１５０は、連続スナップショットファイルシステム１５１と、ネットワークインタフェース１２０のデバイスドライバやネットワークプロトコルスタックなどからなるネットワーク通信部１５２を有するものとする。また、クライアントＰＣに対するプログラムとしてファイル共有サービス１６５とスナップショット管理デーモン１６１を有する。ここで記憶装置１１０は、ハードウェア故障に対するデータ喪失を避けるよう一般性を失うことなくミラーリングやRAIDなどの冗長化技術を適用して可用性・信頼性を高めることができる。
【００５７】
連続スナップショットファイルシステム１５１は、記憶装置１１０上のボリュームにブロックI／O（a１）を行い、通常のファイルシステムと同様ユーザ空間のアプリケーションにファイルやディレクトリなどシステム資源を提供し、それらを通じ記憶装置１１０へのデータの保存、及び、記憶装置１１０のデータの参照もしくは管理機能を提供する。なお、ここで「ブロックＩ／Ｏ」とは、本発明のファイルシステムはブロックデバイスを対象としているため、ブロック単位で入出力することを意味する。
【００５８】
ファイル共有サービス１６５は、連続スナップショットファイルシステム１５１のこれら資源をネットワーク通信部１５２とネットワークインタフェース１２０を通じ、クライアントＰＣからアクセス可能とする（a２〜a５）。
【００５９】
スナップショット管理デーモン１６１は、定期的に連続スナップショットファイルシステム１５１の状態を調べ（a６）、時間経過に応じてスナップショットを削除する（ａ７）。
【００６０】
図４は、本発明の第１の実施の形態におけるスナップショット管理デーモンの動作のフローチャートを示す。
【００６１】
ステップ１０１）  スナップショット管理デーモン１６１はまず、設定ファイル（外部からアクセスできないようなシステムの記憶域を指す）などから、「最近」のスナップショットの保持期間Trecent、「時間毎」のスナップショットの保持期間Thourly、「日ごと」のスナップショットの保持期間Tdaily、「週毎」のスナップショットの保持期間Tweeklyを読み込み、メモリ（図示せず）上に設定する。
【００６２】
ステップ１０２）  連続スナップショットファイルシステム１５１から存在するスナップショットのスナップショット番号とタイムスタンプを取得する。
【００６３】
ステップ１０３）  また、基本ソフト１５０から現在時刻を取得し基準時刻Tに設定する。
【００６４】
ステップ１０４）  そして、取得したスナップショットから、当該スナップショットの生成時刻tがt≧T - Trecentであるスナップショットを除外する。
【００６５】
ステップ１０５）  そして次に、生成時刻tがt≧T − Thourlyであるスナップショットを選択し、古いものもしくは新しいものから順にスナップショットの生成時刻の間隔を調べ、間隔が１時間に満たない中間スナップショットを削除し、選択された期間内の残りのスナップショットを処理対象から除外する。
【００６６】
ステップ１０６）  以降同様に、生成時刻tがt≧T - Tdailyであるスナップショットを選択して間隔が一日以上になるよう中間スナップショットを削除して残りのスナップショットを処理対象から除外する。
【００６７】
ステップ１０７）  生成時刻tがt≧T - Tweeklyであるスナップショットを選択して間隔が一週間以上になるよう中間スナップショットを削除して残りのスナップショットを処理対象から除外する。
【００６８】
ステップ１０８）  残ったスナップショットの間隔が一ヶ月以上となるよう中間スナップショットを削除する。
【００６９】
ステップ１０９）  そして停止要求の有無を調べ、あれば終了し、なければステップ１１０に移行する。
【００７０】
ステップ１１０）  一定時間スリープした後、ステップ１０２に移行し、スナップショット一覧の取得以降の処理を繰り返す。
【００７１】
このようにして間引かれたスナップショットは、図５のように時間経過に応じてスナップショット数を抑えたものとなる。
【００７２】
なお、本実施の形態では、スナップショット作成は連続スナップショットファイルシステム１５１が自動的に作成することを前提に、スナップショット管理デーモン１６１はスナップショット削除のみを行うこととしたが、スナップショット作成の指示をスナップショット管理デーモン１６１に行わせるようにすることで、スナップショット作成をサポートしているが、自動的には作成しないファイルシステムを対象として、連続スナップショットファイルサーバを構成することもできる。
【００７３】
また、連続スナップショットファイルシステム１５１がスナップショット情報を一元的に管理する機能を有さない場合には、多数のスナップショットの横断的なアクセスによりファイルサーバの性能が低下する。その場合、スナップショットのタイムスタンプ情報を含む一覧の情報を、スナップショット管理デーモン１６１内の記憶手段に保持させ、新たに作成されたスナップショットの情報のみを連続スナップショットファイルシステム１５１から取得させることで、性能低下を抑えるように実施することができる。
【００７４】
［第２の実施の形態］
本実施の形態では、ユーザからアクセスのない業務時間帯外や、ユーザからのアクセスが少ない時間にスナップショットを削除し、記憶装置１１０を解放する処理について説明する。
【００７５】
図６は、本発明の第２の実施の形態における連続スナップショットファイルサーバの構成を示す。
【００７６】
同図において、図３と同一構成部分には同一符号を付し、その説明を省略する。図６の構成は、図３の構成に解放デーモン１６２を付加した構成である。
【００７７】
本実施の形態の連続スナップショットファイルサーバ１００は、第1の実施の形態における連続スナップショットファイルサーバに基づいて構成されるが、スナップショット管理デーモン１６１は、スナップショットを削除する際、実際にスナップショットが利用している記憶装置１１０上のデータ領域は解放せず、指定されたスナップショットに削除要求のマークを付けるだけである（ａ６´）。
【００７８】
本実施の形態において、スナップショットが利用している記憶装置１１０のデータ領域を解放するのは、解放デーモン１６２であり、これはユーザ空間のバックグラウンドプログラムとして実装されるか、あるいは基本ソフト１５０のプログラムとしてファイルシステムの一部に含めるかもしくは含めない形で実現することができる。
【００７９】
図７は、本発明の第２の実施の形態における解放デーモンの処理のフローチャートである。
【００８０】
ステップ２０１）  解放デーモン１６２は、まず、サーバ１００内の設定ファイル（図示せず）などから、ＣＰＵ使用率の閾値Rcpu、I/O負荷の閾値RI/O、一回の解放処理の割当時間Tsliceを読み込み、メモリ（図示せず）に設定する。
【００８１】
ステップ２０２）  次に、CPU使用率Lcpuをシステムから取得する。
【００８２】
ステップ２０３）  CPU使用率LcpuとCPU使用率の閾値Rcpuを比較し、Lcpu＜Rcpuでなければステップ２１１に移行し、Lcpu＜Rcpuであればステップ２０４に移行する。
【００８３】
ステップ２０４）  Lcpu ＜Rcpuなら、I/O負荷LI/Oを計測するか、または、システムから取得する。
【００８４】
ステップ２０５）  LI/O ＜ RI/Oであればステップ２０６に移行し、LI/O ＜ RI/Oでなければステップ２１１に移行する。
【００８５】
ステップ２０６）  LI/O ＜ RI/Oなら、連続スナップショットファイルシステム１５１から削除要求がマークされたスナップショットの一覧を取得する。
【００８６】
ステップ２０７）  次に、基本ソフト１５０から解放処理の開始時刻を取得する。
【００８７】
ステップ２０８）  そして、取得されたスナップショットの中から、スナップショット管理デーモン１６１によって削除要求がマークされたスナップショットを一つ解放する。
【００８８】
ステップ２０９）  開始時刻からの経過時刻tがt≦ Tsliceか確認し、経過時刻がまだ過ぎていなければステップ２０７に移行して、ステップ２０７，２０８の処理を繰り返す。経過時間が過ぎている場合はステップ２１０に移行する。
【００８９】
ステップ２１０）  経過時間が過ぎた場合には停止要求の有無を調べ、あれば終了し、なければステップ２１１に移行する。
【００９０】
ステップ２１１）  一定時間スリープした後、ステップ２０２以降の処理を繰り返す。
【００９１】
上記の説明では、スナップショットの使用するディスク領域の解放をスナップショット単位としているが、一般性を失うことなくステップ２０８で削除されるスナップショットは複数個としたり、あるいはスナップショットを構成するデータの所定のサイズ単位とすることができる。
【００９２】
また、ディスク領域の解放方法として、ディスク領域を複数の区間(セグメント)に分割し、セグメント毎にそこに含まれるディスクブロックが、削除要求対象でないスナップショットもしくはファイルシステムの現在の状態により使用されているかどうかを判定し、使用中の全てのブロックを空き領域にコピーし、セグメントを解放する方法がある。このような解放方法をとる場合でも、ステップ２０８の処理単位をディスク領域の単一もしくは複数のセグメント単位とすることで、一般性を損なうことなく、ディスク領域の解放の遅延処理が実現できる。
【００９３】
［第３の実施の形態］
本実施の形態では、説明のために、図８に第１もしくは第２の実施の形態による連続スナップショットファイルサーバ１００が、ネットワークで接続されたクライアントＰＣからスナップショットを閲覧、参照可能となるように、それらを共有フォルダとして公開する方法の例を示す。
【００９４】
図８は、本発明の第３の実施の形態におけるスナップショットの共有方法の例を説明するための図である。同図の例では、ファイルシステムの現在のファイルとその名前空間を共有フォルダ「share」１０に割り当てて公開する一方、一連のスナップショットにスナップショットの生成時刻に基づく名前を与え、共有フォルダ「share」１０ に対応するスナップショットフォルダ「snapshots」２０の中に公開している。スナップショットフォルダ２０は、通常の共有フォルダと同様にユーザから直接アクセスできるように公開する場合もあれば、現在のファイルシステム上の特定のサブディレクトリ(例えば"．snapshots")に割り当てて公開する場合もある。もしくは、専らクライアントＰＣのスナップショット機能が参照するためのユーザからは直接見えないディレクトリとしてクライアントＰＣに公開する場合もある。また、スナップショットを割り当てるサブディレクトリ名は、生成時刻ではなくスナップショットの識別番号に基づく名前を与える場合もある。
【００９５】
こういったスナップショットフォルダ２０の名前空間の生成と個々のスナップショットへの割り当ては、連続スナップショットファイルサーバ１００のファイル共有サービス部１６５を通じて行われる。
【００９６】
図９は、本発明の第３の実施の形態におけるスナップショットの選別処理のフローチャートであり、スナップショットフォルダをクライアントＰＣに公開するスナップショットの選別処理の例を示す。
【００９７】
同図の例では、スナップショットを３つのグループ（新しいものから順に「ホット」グループ、「コールド」グループ、「残り」グループ）に分け選別している。
【００９８】
ステップ３０１）  まず、ファイル共有サービス部１６５は、スナップショットフォルダ２０内のサブディレクトリ名の取得要求をクライアントＰＣから受けると、前記グループ毎のスナップショットの表示個数Nhot, Ncold, Nrestを取得する。
【００９９】
ステップ３０２）  現在を基準としてスナップショットをグループ分けするための遡及時間Thot, Tcoldを取得する。
【０１００】
ステップ３０３）  選別したスナップショット格納用のメモリ（図示せず）テーブルHを初期化する。
【０１０１】
ステップ３０４）  連続スナップショットファイルシステム１５１からスナップショットの一覧を取得する。
【０１０２】
ステップ３０５）  現在時刻を取得して基準時刻Tとして設定する。
【０１０３】
ステップ３０６）  しかる後に、取得したスナップショットの中から、生成時刻tがt ≧ T−Thotとなるものを「ホット」グループに属するものとして選び、その内、新しいものから順に最大でNhot個を選択してテーブルHに登録する。
【０１０４】
ステップ３０７）  同様に、生成時刻tがT−Thot ＞ t ≧ T−Tcoldとなるスナップショットを「コールド」グループに属するものとして選び、その内、新しいものから順に最大でNcold個を選択してテーブルHに追加する。
【０１０５】
ステップ３０８）  また、生成時刻tがt ＜ T−Tcoldとなるスナップショットを「残り」グループに属するものとして選び、新しいものから順に最大でNrest個を選択してテーブルHに追加する。
【０１０６】
ステップ３０９）  最後に、テーブルHに登録されたスナップショットを出力する。
【０１０７】
例えば、テーブルＨから図８に示すスナップショット毎のサブディレクトリに対応させて出力することにより、クライアントＰＣに公開する。
【０１０８】
上記のスナップショット選別処理は、クライアントＰＣからスナップショットフォルダの閲覧要求があるたびに実施するのでなく、応答速度を改善するため短期間ファイル共有サービス１６５内にキャッシュして用いることもできる。またスナップショットグループ分け方(期間)は、第１の実施の形態による分け方(期間)と同一にする必要はない。第１の実施の形態はスナップショットを削除するので、ステップ３０４で取得するスナップショットは、その結果が反映されたものとなる。また、第２の実施の形態を適用する場合には、削除中のスナップショットはステップ３０４で取得するスナップショットからは除外する。
【０１０９】
［第４の実施の形態］
図１０は、本発明の第４の実施の形態におけるバックアップシステムの構成を示す。
【０１１０】
同図に示すバックアップシステムは、第１もしくは第２の実施の形態による連続スナップショットファイルサーバ１００とクライアントＰＣ２００を、ネットワークを介し接続して構成する。
【０１１１】
クライアントＰＣ（ＰＣ）２００は、記憶装置２１０とネットワークインタフェース２２０を搭載し、その基本ソフト(Operating System)２５０は、ローカルファイルシステム２５１、ネットワークインタフェース２２０のデバイスドライバやネットワークプロトコルスタックなどからなるネットワーク通信部２５２、ファイル共有クライアント部２５５、それにローカルファイルシステム上の変更操作をユーザランドのアプリケーションに通知する通知機能部２５４を有する。そしてユーザランドのプログラムとして同期デーモン２６１を有する。
【０１１２】
ファイルシステム２５１は通常のファイルシステムであり、記憶装置２１０上のボリュームにブロックI/O(ｂ１)を行い、ファイルやディレクトリなどシステム資源を提供し、データの保存・参照もしくは管理機能を提供する。一方、ファイル共有クライアント部２５５は、ネットワーク通信部２５２とネットワークインタフェース２２０を通じ、連続スナップショットファイルサーバ１００に接続し、当該サーバ１００の共有フォルダの閲覧、参照、変更をアクセス権に応じてアクセスする機能を提供する(ｂ２〜ｂ４)。
【０１１３】
同期デーモン２６１は、通知機能部２５４を通じてローカルファイルシステム２５１の予め登録されたディレクトリの変更を調べ(ｂ５，ｂ６)、ファイル共有クライアント部２５０を通じて、変更内容を連続スナップショットファイルサーバ１００の共有フォルダ内の予め登録されたディレクトリに反映させる。
【０１１４】
図１１は、本発明の第４の実施の形態における同期デーモンの動作のフローチャートである。
【０１１５】
ステップ４０１）  同期デーモン２６１は、まず、設定ファイルなどから、ローカルファイルシステム２５１上の同期元ディレクトリDsrcと連続スナップショットファイルサーバ１００の共有フォルダ上の同期先ディレクトリDdestの対を読み込み設定する。
【０１１６】
ステップ４０２）  また、連続スナップショットファイルシステム１５１から存在するスナップショットのスナップショットDsrc内のファイル操作及びディレクトリ操作を監視するよう通知機能部２５４に設定する。
【０１１７】
ステップ４０３）  次に、同期先ディレクトリDdest で指定された共有フォルダを有する連続スナップショットファイルサーバ１００との通信が可能かどうか確認し、そうでなければ通信可能になるまで一定時間待つ。
【０１１８】
ステップ４０４）  確認処理がタイムアウトした場合には、ステップ４０５に移行し、タイムアウトしていない場合は、ステップ４１０に移行する。
【０１１９】
ステップ４０５）  次に、停止要求の有無を調べ、停止要求がある場合は、ステップ４０６に移行し、ない場合はステップステップ４０３に移行する。
【０１２０】
ステップ４０６）  停止要求がある場合は、同期元ディレクトリDsrc監視を解除するよう通知機能部２５４に設定して終了する。
【０１２１】
ステップ４１０）  ファイルサーバ１００との通信可能な場合には、まず同期元ディレクトリDsrcと同期先ディレクトリDdestの状態を一致させるため、DsrcとDdestのトップから再帰的に同期処理を行う。ディレクトリの場合には、ディレクトリの構成を調べ、構成が一致するようDdestに対してディレクトリの作成または削除を行い、ファイルの場合には内容が一致しているか調べ、一致していなければ、Ddest上の対象ディレクトリにファイルをコピーする。
【０１２２】
ステップ４１１）  同期化処理が完了した後、同期デーモン２６１は、通知機能部２５４からファイル操作・ディレクトリ操作のイベントe=<d,f,o>を受理し、なければイベント到着まで一定時間待つ。ここでd、f、oはそれぞれ、Dsrcのトップディレクトリからの対象ファイル、ディレクトリの相対パス、操作の種別、操作のオプションパラメータである。操作の種別とは、ファイルやディレクトリの作成・削除や移動・リネーム、ファイルの内容の変更、ファイル・ディレクトリのアクセス権、タイムスタンプ、所有者情報、グループ情報などの各種属性の変更などである。またオプションパラメータは、各操作を実施するのに必要な付帯的な情報である。
【０１２３】
ステップ４１２）  タイムアウトした場合はステップ４１５に移行し、タイムアウト以前であればステップ４１３に移行する。
【０１２４】
ステップ４１３）  ステップ４１１でイベントを受理した場合には、共有フォルダ内のディレクトリDdest /d（dはDsrc内の対象ファイル・ディレクトリの相対パス）で変更操作f(o)を実行する。
【０１２５】
ステップ４１４）  ステップ４１３の変更操作が失敗した場合には、ステップ４０５に移行し、成功した場合はステップ４１５に移行する。
【０１２６】
ステップ４１５）  変更操作が成功した場合、もしくは前述のイベント受理がタイムアウトした場合には、停止要求の有無を確かめ、あればステップ４０６に移行し、それ以降の処理を実施し、なければステップ４１１に移行する。
【０１２７】
以上の説明では、変更を監視して再現する操作はファイルとディレクトリのみに限定しているが、シンボリックリンクその他の特殊ファイルに対しても一般性を損なうことなく拡張できる。また、ステップ４１０〜４１５の処理を、ワーカスレッドを生成して実行させることで、プログラムが長時間無応答にならないように手順化することも可能である。また、本実施の形態の説明では、同期元と同期先のディレクトリが一対の場合を説明しているが、結び付けられたディレクトリの対が複数の場合についても一般性を損なうことなく拡張できる。
【０１２８】
［第５の実施の形態］
図１２は、第１もしくは第２の実施の形態による連続スナップショットファイルサーバにおける、ファイルの存続期間とスナップショット番号の関係の一例を示す。また、図１３は、本発明の第５の実施の形態における検索インデックスの例を示す。図１３の検索インデックスの例は、図１２の状態に対応する本実施の形態による検索インデックスの構成例である。
【０１２９】
図１２の例では、「ファイルＡ」がスナップショット番号2500の時点で作成され、スナップショット番号2520の時点でその内容が変更され、スナップショット番号2540で削除されたものとしている。
【０１３０】
また「ファイルＢ」がスナップショット番号2510の時点で作成され、現在まで存続しているものとしている。スナップショット番号2500からスナップショット番号2520の直前まで「ファイルＡ」の内容は変わらないため、その検索キーワードも同一である。開始時点を基準にこれをKA,2500と表す。同様に、スナップショット番号［2520,2540］の「ファイルＡ」の検索キーワード集合をKA,2520、「ファイルＢ」のキーワード集合はKB,2510と表す。
【０１３１】
この例に対応する第５の実施の形態による検索インデックスの形式は、図１３の例に示すように、各キーワード集合に対応するエントリを、"FilePath", "StartNum", "EndNum"で始まる３つのフィールドによって識別する。 
"FilePath"のフィールドにはファイルのパス名を格納し、 "StartNum"フィールドにはファイルがある状態にあるスナップショットの最初の番号を、"EndNum"フィールドにはファイルの削除や変更により、その状態が解消されたスナップショットの番号をそれぞれ格納する。「ファイルB」は現在まで継続しているので、"EndNum"フィールドにはその状態を表現するためにnull値を格納している。現在まで継続していることを示す値は、勿論、有効なスナップショット番号から識別される値であれば何でも良い。また"EndNum"フィールドには、ある状態が解消されたスナップショット番号を使用しているが、一般性を損なうことなく、ある状態が継続する最後のスナップショット番号、すなわち、ここで使用している値から１を引いた番号を使用することもできる。また、ここでは、ファイルの同一状態が継続する期間をスナップショット番号により与えているが、スナップショット番号とスナップショットのタイムスタンプ（作成時刻）の値を使用することも可能である。また本実施の形態の表現は、検索インデックスの意味的な構成を示しており、実際のインデックスファイルのデータ構造やフィールドの識別名には、勿論様々な構造、名前を使用することができる。 
［第６の実施の形態］
以下の第６〜第８の実施の形態では、NAS(Network Attached Storage)上のＷｅｂサーバに対し、Google(登録商標)検索のようなＷｅｂインタフェースを通じて、ユーザが入力したキーワードに対応するスナップショット上のファイルを過去のファイルも含め探し出せるようにする。
【０１３２】
以下の実施の形態では、連続スナップショットファイルサーバ１００の多数のスナップショットから効率的にファイルを検索するために用いられる検索インデックを生成するための検索インデックス生成装置について説明する。
【０１３３】
図１４は、本発明の第６〜第８の実施の形態におけるインデックス生成装置の構成を示す。当該インデックス生成装置３００は、検索インデックス作成部３１０、検索インデックス更新部３３０、検索インデックス最適化部３４０、検索インデックス参照部３５０、から構成される。
【０１３４】
検索対象ファイル１１００は、連続スナップショットファイルサーバ１００の記憶装置１１０内に存在し、連続スナップショットファイルシステム１５１により管理されるファイルである。
【０１３５】
検索インデックス生成装置３００の検索インデックス参照部３５０は、Ｗｅｂサーバ６００にアクセスする。
【０１３６】
本実施の形態では、検索インデックス作成部３１０について説明するが、検索インデックス更新部３３０については第７の実施の形態で、検索インデックス最適化部３４０については第８の実施の形態でそれぞれ後述する。
【０１３７】
図１５は、本発明の第６の実施の形態における検索インデックスの作成処理のフローチャートである。
【０１３８】
ステップ６０１）  検索インデックスの作成部３１０は、まず、既存の検索インデックスを初期化ないしは新規に空の検索インデックスを作成する。
【０１３９】
ステップ６０２）  そして、連続スナップショットファイルサーバ１００からスナップショットの一覧S={s1,s2,…,sN}を取得する。但し、ここでNはスナップショットの個数であり、s1<s2<…<sNの順序関係があるものとする。
【０１４０】
ステップ６０３）  次に、スナップショットs1 を対象として、連続スナップショットファイルシステム１５１の記憶装置１１０上のディレクトリツリーを探索し、検索対象ファイル１１００の F1={f1,f2,…,fm1}を処理対象として抽出する。
【０１４１】
ステップ６０４）  検索対象ファイル１１００のF1から未処理のファイルｆを選択する。
【０１４２】
ステップ６０５）  そして、検索対象の全てのファイルに対して、検索キーワードを抽出する。
【０１４３】
ステップ６０６）  各ファイルに対し、抽出した検索キーワードとそのエントリをFilePathフィールドが検索ファイルのパス名に、StartNumフィールドがスナップショット番号s1に、EndNumフィールドがnull値となる新規エントリを検索インデックス記憶装置５００の検索インデックスに追加する。
【０１４４】
ステップ６０７）  検索対象のF1の全てのファイルを処理した場合は、ステップ６０８に移行し、全てのファイルを処理していない場合はステップ６０４に移行する。
【０１４５】
ステップ６０８）  続いて、一連のスナップショットに対して連続的に変更を追跡するために、インデックスiを1 に初期化する。
【０１４６】
ステップ６０９）  i=Nであった場合には直ちに処理を終了する。そうでない場合には、ステップ６１０に移行する。
【０１４７】
ステップ６１０）  スナップショットｓi+1上の検索対象ファイルF i+1を抽出する。
【０１４８】
ステップ６１１）  Fiに含まれるファイルｆを選択する。
【０１４９】
ステップ６１２）  ファイルｆがスナップショットsi+1上に存在するかを判定し、存在する場合はステップ６１３に移行し、存在しない場合はステップ６１６に移行する。
【０１５０】
ステップ６１３）  スナップショットsi上のファイルｆとスナップショットsi+1上のｆのデータは同一であるかを判定し、同一である場合はステップ６１７に移行し、同一でない場合はステップ６１４に移行する。
【０１５１】
ステップ６１４）  ｆの検索キーワード（Ki+1,f）を抽出する。
【０１５２】
ステップ６１５）  検索インデックス記憶装置５００の検索インデックスにキーワード集合k1+1,fを格納し、そのエントリを以下のフィールドで登録する。
【０１５３】
・File Path: f
・StartNum:ｓi+1
・EndNum:null
ステップ６１６）  検索インデックス記憶装置５００の検索インデックスから
・FilePath=f，
・StartNum< si+1，
・EndNum=null
のエントリを探索し、EndNumをsi+1に変更する。
【０１５４】
ステップ６１７）  Ｆiの全てのファイルを処理したかを判定し、処理した場合はステップ６１８に移行し、処理していない場合はステップ６１１に移行する。
【０１５５】
ステップ６１８）  Fi+1に含まれ、Fiに含まれないファイルｆ´を選択する。
【０１５６】
ステップ６１９）  ファイルｆ´の検索キーワード（Ki+1,f'）を抽出する。
【０１５７】
ステップ６２０）  検索インデックス記憶装置５００にキーワード集合（K1+1,f'）を格納する。そのエントリを以下のフィールドで登録する。
【０１５８】
・File Path: f´
・StartNum: ｓi+1
・EndNum:null
ステップ６２１）  Fi+1の全てのファイルを処理したかを判定し、処理した場合はステップ６２２に移行し、処理していない場合はステップ６１８に移行する。
【０１５９】
上記のステップ６１０〜６２１では、先に処理したスナップショットsiとその次のスナップショットsi+1に対して、検索対象ファイル１１００を調べ、内容を比較する。そしてsi+1で変更もしくは削除されたファイルに対しては、検索インデックス記憶装置５００のファイルをFilePathに持つエントリで、StartNumフィールドが si+1 より小さく、EndNumフィールドが null 値であるエントリを見つけ、そのEndNumフィールドにsi+1を設定する。また、si+1で変更もしくは新規作成されたファイルに対して、検索キーワードを抽出し、各ファイルに対し、抽出した検索キーワードとそのエントリをFilePathフィールドが検索ファイルのパス名に、StartNumフィールドがスナップショット番号si+1に、EndNumフィールドがnull値となる新規エントリを検索インデックスに追加する。そして、インデックスiをインクリメントし、ステップ６０９からi=Nになるまで処理を繰り返す。
【０１６０】
［第７の実施の形態］
本実施の形態では検索インデックス更新部３３０による検索インデックス更新処理について説明する。
【０１６１】
図１６は、本発明の第７の実施の形態における検索インデックスの更新処理のフローチャートである。
【０１６２】
本実施の形態の検索インデックスの更新処理は、検索インデックス更新部３３０の常駐プログラムにより実施される。
【０１６３】
ステップ７０１）  まず、検索インデックス記憶装置５００の検索インデックスに対し、用いた最終スナップショット番号を取得しSprevとして設定する。Sprev は、検索インデックス記憶装置５００上のエントリを網羅的に調べて決定するか、もしくは前述の検索インデックス生成処理でSNを保存するようにしてその値を使う。
【０１６４】
ステップ７０２）  そして、番号がs > sprevなるスナップショットs が存在するか確認する。存在しない場合には、ステップ７０３に移行し、存在する場合はステップ７０５に移行する。
【０１６５】
ステップ７０３）  存在しない場合は、終了要求の有無を確認し、あれば直ちに終了し、なければステップ７０４に移行する。
【０１６６】
ステップ７０４）  一定時間スリープした後、ステップ７０２に移行する。
【０１６７】
ステップ７０５）  ステップ７０２において、番号がｓ＞ｓprevなるスナップショットｓが存在する場合は、ｓ＞ｓprevなるスナップショットを選び、snextとして設定する。
【０１６８】
ステップ７０６）  そして、スナップショットｓprevとスナップショットｓnextに対して、検索対象ファイル１１００を調べ、内容を比較し、変更または削除されたファイルを抽出する。
【０１６９】
ステップ７０７）  更新されたファイルFcmから未処理のファイルｆを選択する。
【０１７０】
ステップ７０８）  ｆの検索キーワード（Ｋnext,f）を抽出する。
【０１７１】
ステップ７０９）  検索インデックス記憶装置５００にキーワード集合（Ｋnext,f）を格納する。そのエントリを以下のフィールドで登録する。
【０１７２】
・File Path: f
・StartNum: ｓnext
・EndNum:null
ステップ７１０）  Fcmの全てのファイルを処理した場合には、ステップ７１１に移行し、処理していない場合はステップ７０７に移行する。
【０１７３】
ステップ７１１）  スナップショットｓprev、snextの間で変更または削除されたファイルFmdを抽出する。
【０１７４】
ステップ７１２）  ファイルFmdから未処理のファイルf´を選択する。
【０１７５】
ステップ７１３）  検索インデックス記憶装置５００の検索インデックスから、
・File Path: f´
・StartNum<ｓi+1
・EndNum:null
を探索し、EndNumをsnextに変更する。
【０１７６】
ステップ７１４）  ファイルFmdの全てのファイルを処理したかを判定し、処理した場合はステップ７１５に移行し、処理していない場合はステップ７１２に移行する。
【０１７７】
上記のステップ７０５〜７１５では、新スナップショットsが存在する場合には、s>ｓprevなるスナップショットを選び、snextとして設定する。そして、スナップショットｓprevとスナップショットsnextに対して、検索対象ファイル１１００を調べ、内容を比較する（ステップ７０５）。その結果、snextで変更もしくは削除されたファイルに対しては、検索インデックスの当該ファイルを FilePath に持つエントリで、StartNumフィールドが snext より小さく、EndNumフィールドがnull値であるエントリを見つけ、そのEndNumフィールドにsnextを設定する。また、snextで変更もしくは新規作成されたファイルに対して、検索キーワードを抽出し、各ファイルに対し、抽出した検索キーワードとそのエントリをFilePathフィールドが検索ファイルのパス名に、StartNumフィールドがスナップショット番号snextに、EndNumフィールドが null 値となる新規エントリを検索インデックスに追加する(ステップ７０６〜ステップ７１５)。そして、最終スナップショット番号にsnextを設定し、ステップ７０１から処理を繰り返す。
【０１７８】
[第８の実施の形態]
本実施の形態では、検索インデックス最適化部３４０による検索インデックスの最適化処理について説明する。
【０１７９】
図１７は、本発明の第８の実施の形態における検索インデックスの最適化処理のフローチャートである。
【０１８０】
ステップ８０１）  検索インデックス最適化部３４０では、まず、連続スナップショットファイルサーバ１００より、スナップショット(番号)の一覧（S={s1,s2,…,sn}）を取得する。
【０１８１】
ステップ８０２）  次に、検索インデックス記憶装置５００の検索インデックスの各エントリを調べて、未処理のエントリeを１個抽出する。
【０１８２】
ステップ８０３）  EndNum=nullであるかを調べ、nullである場合はステップ８０６に移行し、nullでない場合はステップ８０４に移行する。
【０１８３】
ステップ８０４）  StartNumフィールド≦s＜EndNumフィールドなるスナップショット番号sがSに存在するかを判定し、存在する場合はステップ８０６に移行し、存在しない場合はステップ８０５に移行する。
【０１８４】
ステップ８０５）  エントリeを検索インデックスから削除する。
【０１８５】
ステップ８０６）  検索インデックスの全てのエントリを処理した場合は、処理を終了し、処理していないエントリがある場合はステップ８０２に移行する。
【０１８６】
上記のステップ８０２〜ステップ８０６では、EndNumフィールドにnull値以外が設定され、かつ StartNumフィールド≦s＜EndNumフィールなるスナップショット番号s が取得スナップショット一覧に含まれないエントリを削除する。検索インデックスの全てのエントリに対しこの処理を適用することで、不要エントリを削除し、検索インデックスを削減する。この検索インデックスの最適化処理は、常駐プログラムで実施してもよいし、定められたスケジュールで実行しても良い。
【０１８７】
なお、上記の第１〜第３の実施の形態における連続スナップショットファイルサーバの構成要素の動作をプログラムとして構築し、連続スナップショットファイルサーバとして利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【０１８８】
また、第４の実施の形態におけるクライアント端末の構成要素の動作をプログラムとして構築し、クライアント端末として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【０１８９】
また、第５〜第８の実施の形態におけるインデックス生成装置の動作をプログラムとして構築し、インデックス生成装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【０１９０】
また、上記の構築されたプログラムをハードディスクや、フレキシブルディスク・ＣＤ−ＲＯＭ等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【０１９１】
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【０１９２】
１００  連続スナップショットファイルサーバ
１１０  記憶手段、記憶装置
１２０  ネットワークインタフェース
１５０  基本ソフト（ＯＳ）
１５１  ファイルシステム、連続スナップショットファイルシステム
１５２  ネットワーク通信部
１６１  スナップショット管理デーモン
１６２  解放デーモン
１６５  ファイル共有サービス部
２００  クライアントＰＣ
２１０  記憶装置
２２０  ネットワークインタフェース
２５０  基本ソフト（ＯＳ）
２５１  ローカルファイルシステム
２５２  ネットワーク通信部
２５４  通知機能部
２５５  ファイル共有クライアント部
２６１  同期デーモン
３００  検索インデックス生成装置
３１０  検索インデックス作成部
３３０  検索インデックス更新部
３４０  検索インデックス最適化部
３５０  検索インデックス参照部
５００  検索インデックス記憶装置
６００  Ｗｅｂサーバ
１１００  検索対象ファイル
１６１１  スナップショット取得手段
１６１２  スナップショット削除手段
【図１】
0005574774.tif 000002
【図２】
0005574774.tif 000003
【図３】
0005574774.tif 000004
【図４】
0005574774.tif 000005
【図５】
0005574774.tif 000006
【図６】
0005574774.tif 000007
【図７】
0005574774.tif 000008
【図８】
0005574774.tif 000009
【図９】
0005574774.tif 000010
【図１０】
0005574774.tif 000011
【図１１】
0005574774.tif 000012
【図１２】
0005574774.tif 000013
【図１３】
0005574774.tif 000014
【図１４】
0005574774.tif 000015
【図１５】
0005574774.tif 000016
【図１６】
0005574774.tif 000017
【図１７】
0005574774.tif 000018
【図１８】
0005574774.tif 000019