(57)【特許請求の範囲】
【請求項１】
第１ファイル管理装置と第２ファイル管理装置とでファイルを階層化して管理する階層化ストレージシステムを管理するための管理装置であって、
前記第１ファイル管理装置内の所定ファイルの複製を前記第２ファイル管理装置に作成するレプリケーション処理部と、
予め設定される第１所定条件に従って、前記第１ファイル管理装置内の他の所定ファイルを重複データの排除対象として選択し、選択された前記他の所定ファイルを所定の基準ファイルのデータを参照する参照元ファイルに変換することで、重複データを排除する重複排除処理部と、
前記第１ファイル管理装置内の前記所定ファイルのデータを削除し、かつ、前記第２ファイル管理装置に作成された前記所定ファイルの複製にのみデータを残すというスタブ化処理の対象となるスタブ化候補ファイルを、予め設定される第２所定条件に従って抽出し、さらに、予め設定される第３所定条件に従って、前記スタブ化候補ファイルを前記スタブ化処理するスタブ化処理部と、を備え、
前記所定の基準ファイルは前記所定ファイルとして選択されず、前記所定の基準ファイルを参照する前記参照元ファイルが前記所定ファイルとして選択されて、前記レプリケーション処理部及び前記スタブ化処理部の処理対象となる、
階層化ストレージシステムの管理装置。
【請求項２】
前記第１ファイル管理装置内においてコピー元ファイルの複製作成が要求された場合、前記コピー元ファイルの複製を前記参照元ファイルとして作成するファイルアクセス受付部をさらに備える、
請求項１に記載の階層化ストレージシステムの管理装置。
【請求項３】
前記第１ファイル管理装置は、ユーザ端末が直接的にアクセスできるファイル管理装置として構成されており、
前記第２ファイル管理装置は、前記ユーザ端末が直接的にはアクセスできないファイル管理装置として構成されている、
請求項１に記載の階層化ストレージシステムの管理装置。
【請求項４】
前記第１所定条件は、前記第１ファイル管理装置内のファイルのうち最終アクセス日時が予め設定される所定の時間閾値よりも古いファイルを前記他の所定ファイルとして選択すること、であり、
前記第２所定条件は、前記第１ファイル管理装置内の空き容量が所定の空き容量閾値を下回った場合に、前記スタブ化候補ファイルを抽出することであり、
前記第３所定条件は、前記空き容量が前記所定の空き容量閾値以上となるまで、前記スタブ化候補ファイルのうち最終アクセス日時が古い順に選択すること、である、
請求項１に記載の階層化ストレージシステムの管理装置。
【請求項５】
前記参照元ファイルが前記所定の基準ファイルのｉノード番号を保持することで、前記参照元ファイルの参照先として前記所定の基準ファイルが対応付けられる、
請求項１に記載の階層化ストレージシステムの管理装置。
【請求項６】
前記所定の基準ファイルを参照先とする前記参照元ファイルの数を示す参照数を前記所定の基準ファイルは保持しており、
前記参照元ファイルが削除される度に、または、前記参照元ファイルについて前記スタブ化処理が実施される度に、前記参照数が減少するようになっており、
前記ファイルアクセス受付部は、前記参照数が０になった場合に、前記所定の基準ファイルを削除可能である、
請求項２に記載の階層化ストレージシステムの管理装置。
【請求項７】
前記所定ファイルとして選択される前記参照元ファイルは、前記所定の基準ファイルの有するデータのうち参照する必要のあった全てのデータを保持した状態で、前記第２ファイル管理装置に送信される、
請求項６に記載の階層化ストレージシステムの管理装置。
【請求項８】
前記所定の基準ファイルは、前記第１ファイル管理装置に設けられる所定ディレクトリ下に存在する、ファイルサイズのランク毎に予め用意された複数のサブディレクトリのうち、前記所定の基準ファイルのサイズに対応するサブディレクトリで管理される、
請求項１に記載の階層化ストレージシステムの管理装置。
【請求項９】
前記ファイルアクセス受付部は、前記コピー元ファイルが前記参照元ファイルではない場合、
前記コピー元ファイルの参照先となる所定の基準ファイルを新たに作成し、
前記コピー元ファイルと新たに作成された前記所定の基準ファイルとを対応付けて、前記コピー元ファイルを新たに作成された前記所定の基準ファイルを参照する参照元ファイルに変換し、
前記参照元ファイルに変換された前記コピー元ファイルの有するｉノード情報をコピーして、複製ファイルに対応付けることにより、前記コピー元ファイルの複製ファイルを、新たな前記所定の基準ファイルを参照する参照元ファイルとして作成する、
請求項２に記載の階層化ストレージシステムの管理装置。
【請求項１０】
前記スタブ化処理部は、
前記第１ファイル管理装置内の空き容量が前記所定の空き容量閾値を下回った場合には、予め設定される他の所定の時間閾値よりも古く、かつ、前記重複排除処理部による処理が実施されていない未処理ファイルを、第１スタブ化候補ファイルとして抽出し、
抽出された前記第１スタブ化候補ファイルについて前記スタブ化処理を実行し、
前記空き容量が前記所定の空き容量閾値以上となったかを判定し、
前記空き容量が前記所定の空き容量閾値以上になった場合は、前記スタブ化処理を終了し、
前記空き容量が前記所定の空き容量閾値以上ではない場合は、前記空き容量が前記所定の空き容量閾値以上となるまで、前記重複排除処理部により前記参照元ファイルに変換された期間の短い参照元ファイルを、第２スタブ化候補ファイルとして抽出して前記スタブ化処理を実行する、
請求項１に記載の階層化ストレージシステムの管理装置。
【請求項１１】
前記所定の基準ファイルと前記参照元ファイルの両方が前記所定ファイルとして選択されて、前記レプリケーション処理部及び前記スタブ化処理部の処理対象となる、
請求項１に記載の階層化ストレージシステムの管理装置。
【請求項１２】
前記所定の基準ファイルの最終アクセス日時は、前記所定の基準ファイルを参照先とする前記参照元ファイルの有する最終アクセス日時に基づいて推定される、
請求項１１に記載の階層化ストレージシステムの管理装置。
【請求項１３】
前記所定の基準ファイルの最終アクセス日時は、前記所定の基準ファイルを参照先とする複数の参照元ファイルの有する最終アクセス日時の平均値として算出される、
請求項１２に記載の階層化ストレージシステムの管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層化ストレージシステムの管理装置及び管理方法に関する。
【背景技術】
【０００２】
ユーザ側に設けるファイルサーバとデータセンタ側に設けるファイルサーバとの間で、ファイルを移動させる階層化ストレージシステムが提案されている（特許文献１）。このような階層化ストレージシステムでは、ユーザの使用頻度の高いファイルをユーザ側のファイルサーバに格納し、使用頻度の低いファイルをデータセンタ側に格納する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−７６２９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術の場合、ユーザの使用頻度の低いファイルはデータセンタ側のファイルサーバに移動されるため、ユーザがそのファイルにアクセスしようとする場合に、アクセス時間が長くなる。ユーザ側のファイルサーバは、ＷＡＮ（Wide Area Network）などの通信ネットワークを介してデータセンタ側のファイルサーバから、アクセス対象のファイルを取得する必要があるためである。従って、ユーザ側のファイルサーバにファイルが格納されている場合に比べて、データセンタ側のファイルサーバにファイルが格納されている場合は、大幅に応答性能が低下し、ユーザの使い勝手も低下する。
【０００５】
本発明は、上記の問題に鑑みてなされたもので、ユーザ端末のアクセス可能な第１ファイル管理装置の記憶領域を有効に使用して、できるだけ多くのファイルを格納できるようにした、階層化ストレージシステムの管理装置及び管理方法を提供することにある。本発明の他の目的は、第１ファイル管理装置の記憶領域及び第２ファイル管理装置の記憶領域を有効に使用することのできるようにした階層化ストレージシステムの管理装置及び管理方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一つの観点に係る階層化ストレージシステムの管理装置は、第１ファイル管理装置と第２ファイル管理装置とでファイルを階層化して管理する階層化ストレージシステムを管理するための管理装置であって、第１ファイル管理装置内の所定ファイルの複製を第２ファイル管理装置に作成するレプリケーション処理部と、予め設定される第１所定条件に従って、第１ファイル管理装置内の他の所定ファイルを重複データの排除対象として選択し、選択された他の所定ファイルを所定の基準ファイルのデータを参照する参照元ファイルに変換することで、重複データを排除する重複排除処理部と、第１ファイル管理装置内の所定ファイルのデータを削除し、かつ、第２ファイル管理装置に作成された所定ファイルの複製にのみデータを残すというスタブ化処理の対象となるスタブ化候補ファイルを、予め設定される第２所定条件に従って抽出し、さらに、予め設定される第３所定条件に従って、スタブ化候補ファイルをスタブ化処理するスタブ化処理部と、を備える。
【０００７】
第１ファイル管理装置内においてコピー元ファイルの複製作成が要求された場合、コピー元ファイルの複製を参照元ファイルとして作成するファイルアクセス受付部をさらに備えることもできる。
【０００８】
第１ファイル管理装置は、ユーザ端末が直接的にアクセスできるファイル管理装置として構成されてもよく、第２ファイル管理装置は、ユーザ端末が直接的にはアクセスできないファイル管理装置として構成されてもよい。
【０００９】
所定の基準ファイルを参照先とする参照元ファイルの数を示す参照数を所定の基準ファイルは保持しており、参照元ファイルが削除される度に、または、参照元ファイルについてスタブ化処理が実施される度に、参照数が減少するようになっており、ファイルアクセス受付部は、参照数が０になった場合に、所定の基準ファイルを削除可能であるように、構成してもよい。
【００１０】
本発明は、階層化ストレージシステムの管理装置を制御するためのコンピュータプログラムとして捉えることもできる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態の全体概要を示す説明図。
【図２】階層化ストレージシステムのハードウェア構成図。
【図３】階層化ストレージシステムのソフトウェア構成図。
【図４】ファイルシステムとｉノード管理テーブルの関係を示す説明図。
【図５】ｉノード管理テーブルの詳細を示す説明図。
【図６】ｉノード管理テーブルの拡張部分を示す説明図。
【図７】レプリケーション処理の概要を示す説明図。
【図８】シングルインスタンス処理の概要を示す説明図。
【図９】クローン元ファイルの格納場所を示す説明図。
【図１０】通常ファイルをクローンファイルに変換する様子を示す説明図。
【図１１】クローンファイルは、クローン元ファイルとの差分データのみを保持する様子を示す説明図。
【図１２】いわゆる仮想デスクトップ環境にシングルインスタンスを適用した場合の一例を示す説明図。
【図１３】シングルインスタンスをドキュメント作成に適用した場合の一例を示す説明図。
【図１４】シングルインスタンスをデータベースの複製に適用した場合の一例を示す説明図。
【図１５】スタブ化処理の概要を示す説明図。
【図１６】クローン元ファイルは、クローンファイルから参照される数を管理していることを示す説明図。
【図１７】リード処理の概要を示す説明図。
【図１８】ライト処理の概要を示す説明図。
【図１９】コピー処理の概要を示す説明図。
【図２０】受付プログラムにより実施される、リード処理及びライト処理をそれぞれ示すフローチャート。
【図２１】図２０に続くフローチャート。
【図２２】受付プログラムにより実施されるコピー処理のフローチャート。
【図２３】受付プログラムにより実施される削除処理のフローチャート。
【図２４】データムーバープログラムの動作の全体を示すフローチャート。
【図２５】データムーバープログラムにより実施されるスタブ化処理を示すフローチャート。
【図２６】データムーバープログラムにより実施されるレプリケーション処理を示すフローチャート。
【図２７】データムーバープログラムより実施されるファイル同期処理を示すフローチャート。
【図２８】重複ファイルの候補を抽出する処理を示すフローチャート。
【図２９】重複を検知するための処理を示すフローチャート。
【図３０】重複ファイルを排除する処理を示すフローチャート。
【図３１】第２実施例に係り、クローン元ファイル及びクローンファイルがレプリケーション処理（及びスタブ化処理）の対象となることを示す説明図。
【図３２】クローン元ファイルの最終アクセス日時をクローンファイルの最終アクセス日時に基づいて推定できることを示す説明図。
【図３３】クローン元ファイルの最終アクセス日時をクローンファイルの最終アクセス日時に基づいて推定する処理を示すフローチャート。
【図３４】受付プログラムにより実施される、リード処理及びライト処理を示すためのフローチャート。
【図３５】図３４に続くフローチャート。
【図３６】図３４に続く他のフローチャート。
【図３７】受付プログラムにより実施される、転送データを読み出す処理を示すフローチャート。
【図３８】受付プログラムにより実施されるコピー処理のフローチャート。
【図３９】第３実施例に係り、データムーバープログラムにより実施されるスタブ化処理を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。本実施形態で開示される複数の特徴は、様々に組み合わせることができる。
【００１３】
なお、本明細書では、実施形態において使用される情報を、「ａａａ表」という表現で説明しているが、これに限らず、例えば、「ａａａリスト」、「ａａａデータベース」、「ａａａキュー」等の他の表現を用いてもよい。本実施形態で用いられる情報が、データ構造に依存しないことを示すために、「ａａａ情報」と呼ぶこともある。
【００１４】
本実施形態で使用される情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることがあるが、これらは互いに置換が可能である。
【００１５】
さらに、本実施形態の処理動作の説明では、「コンピュータプログラム」を動作主体（主語）として説明することがある。コンピュータプログラムは、マイクロプロセッサによって実行される。従って、プロセッサを動作主体として読み替えても良い。
【００１６】
図１は、本実施形態の全体概要を示す説明図である。図１には、左側上部に示す１つの実施形態（１）と、左側の下部に示す他の一つの実施形態（２）との２つの形態が示されている。
【００１７】
本実施形態の階層化ストレージシステムは、エッジ側に配置される第１ファイル管理装置１と、コア側に配置される第２ファイル管理装置２とで、ファイルを階層化して管理している。エッジ側とは、ユーザサイト側の意味である。コア側とは、ユーザサイトから離れた側であり、例えば、データセンタ等が該当する。
【００１８】
ユーザは、「ユーザ端末」としてのホストコンピュータ（ホストと略記）を介して、エッジ側のファイル管理装置１にアクセスし、所望のファイルに読み書きしたり、新たなファイルを作成したりすることができる。ホストは、コア側のファイル管理装置２内のファイルに直接アクセスすることはできない。
【００１９】
ユーザの使用頻度の少ないファイルは、後述するように、シングルインスタンス処理の対象となる。さらに、最終アクセス日時から所定時間の経過したファイルは、後述するスタブ化処理の対象となる。スタブ化処理を行う前の前提として、後述するレプリケーション処理が実行される。
【００２０】
管理装置３は、階層化ストレージシステムを管理するためのコンピュータであり、例えば、各ファイル共有装置１、２とは別の独立したコンピュータとして設けてもよいし、エッジ側のファイル管理装置１内に設けてもよい。
【００２１】
管理装置３は、例えば、レプリケーション処理部３Ａと、「重複排除処理部」としてのシングルインスタンス処理部３Ｂと、スタブ化処理部３Ｃと、ファイルアクセス受付部３Ｄとを備える。なお、図中では、「処理部」を「部」と略記する。
【００２２】
レプリケーション処理部３Ａは、第１ファイル管理装置１内の所定ファイルの複製を、第２ファイル管理装置２内に生成するための機能である。
【００２３】
シングルインスタンス処理部３Ｂは、重複したファイルを検出して、１つにまとめて管理する。シングルインスタンス処理の詳細は後述するが、先に簡単に説明する。シングルインスタンス処理部３Ｂは、使用頻度の低下したファイルを候補ファイルとして抽出し、候補ファイルと既存のクローン元ファイルとを比較する。
【００２４】
クローン元ファイルとは、「基準ファイル」に該当し、データの参照先となるファイルである。候補ファイルとクローン元ファイルとが一致する場合、シングルインスタンス処理部３Ｂは、候補ファイルのデータを削除し、候補ファイルの参照先としてクローン元ファイルを設定する。これにより、候補ファイルは、クローンファイルに変換される。クローンファイルとは、必要に応じてクローン元ファイルのデータを参照するファイルであり、「参照元ファイル」に該当する。これにより、同一のデータが複数のファイルにそれぞれ記憶されるのを防止し、記憶領域を効率的に使用することができる。なお、本実施形態では、ブロックデータ単位で重複を排除できるようになっている。
【００２５】
スタブ化処理部３Ｃは、スタブ化処理を実行するための機能である。スタブ化処理の詳細は後述するが、先に簡単に説明する。まず前提として、レプリケーション処理部３Ａの働きにより、エッジ側のファイル管理装置１とコア側のファイル管理装置２とに同一のファイルがそれぞれ格納されている。
【００２６】
エッジ側のファイル管理装置１の空き容量が少なくなると、スタブ化処理部３Ｃは、エッジ側のファイル管理装置１に記憶されているファイル群のうち、使用頻度の低いファイルから順番にスタブ化対象として選択する。スタブ化対象として選択されたファイルは、そのデータが削除される。スタブ化されたファイルと同一のデータを有するファイルは、コア側のファイル管理装置２に存在する。従って、ホストがスタブ化ファイルにアクセスする場合、コア側のファイル管理装置２に記憶されているレプリケーションファイルからデータが読み出されて、エッジ側のファイル管理装置１に転送される。スタブ化ファイルのデータを取り戻す処理を、本実施形態ではリコール処理と呼ぶ。
【００２７】
ファイルアクセス受付部３Ｄは、ホストからのファイルアクセス要求を受け付けて、要求内容に応じた所定の処理を実行する。ファイルアクセス要求としては、例えば、リード要求、ライト要求、コピー要求、削除要求などがある。
【００２８】
ホストからファイルコピーが要求されると、ファイルアクセス受付部３Ｄは、要求されたファイル（コピー元ファイルをコピーしたファイル）を、クローンファイルとして作成する。或るファイルをコピーするということは、コピー元ファイルとコピーファイルとの間でデータが重複することを意味する。そこで、本実施形態では、後述のように、シングルインスタンス処理部３Ｂを用いて、コピー元ファイルをクローンファイルに変換し、そのクローンファイルをコピーする。
【００２９】
図１の上側に示す実施形態（１）では、エッジ側のファイル管理装置１内で、シングルインスタンス処理が実行されており、一つのクローン元ファイルと、そのクローン元ファイルを参照する複数のクローンファイルとが格納されている。エッジ側のファイル管理装置１内のクローンファイルは、基準となるクローン元ファイルと重複するデータについてはクローン元ファイルのデータを使用し、クローン元ファイルと異なるデータ（差分データ）については保持する。つまり、クローンファイルは、クローン元ファイルと異なる差分データのみを保持する。
【００３０】
コア側のファイル管理装置２に着目する。コア側のファイル管理装置２には、エッジ側のファイル管理装置１に格納された複数のファイルの複製（レプリケーションファイル）が格納されている。但し、エッジ側のファイル管理装置１に格納されたファイルがクローンファイルであったとしても、コア側のファイル管理装置２には、通常のファイルと同様に完全なデータを有するファイル（具体的には、差分データのみならずクローン元ファイルと重複するデータについても有するファイル）が作成され、当該クローンファイルの複製として格納されている。
【００３１】
実施形態（１）によれば、エッジ側のファイル管理装置１の記憶領域を有効に利用できるため、エッジ側のファイル管理装置１により多くのファイルを格納できる。従って、ホストからのアクセス要求に対して速やかに応答でき、ユーザの使い勝手が向上する。
【００３２】
しかし、クローンファイルの複製を作成するために、エッジ側のファイル管理装置１からコア側のファイル管理装置２にクローンファイルのデータを転送する場合、クローンファイルの差分データとクローン元ファイルの基準データの両方を、コア側のファイル管理装置２に転送する必要がある。
【００３３】
図１には、クローンファイルＦａ、Ｆｂの２つが示されている。一方のクローンファイルＦａについては、データ「５」、「２」、「３」、「４」の４個のブロックデータが、エッジ側のファイル管理装置１からコア側のファイル管理装置２に転送される。同様に、他方のクローンファイルＦｂについては、データ「１」、「２」、「６」、「４」の４個のブロックデータが、エッジ側のファイル管理装置１からコア側のファイル管理装置２に転送される。
【００３４】
従って、エッジ側のファイル管理装置１からコア側のファイル管理装置２に、重複したデータ転送（上記の例では、データ「２」、「４」の転送）が行われることになる。このため、レプリケーション処理のための転送サイズが大きくなり、転送時間も長くなり、通信経路も混雑する。さらには、コア側のファイル管理装置２で重複排除処理（シングルインスタンス処理）が適用されていない場合には、コア側のファイル管理装置２の記憶領域を、効率的に使用することができない。クローンファイルの複製もは通常のファイルと同様に全てのデータを有するファイルとしてコア側のファイル管理装置２に保持されるためである。
【００３５】
そこで、クローン元ファイルの複製もコア側のファイル管理装置２に作成し、クローン元ファイルとクローンファイルとの重複データを排除することが考えられる。つまり、エッジ側のファイル管理装置１からコア側のファイル管理装置２に、クローン元ファイルのデータとクローンファイルの差分データのみを転送する構成とすれば重複したデータ転送を無くすことができるので、コア側のファイル管理装置２に複排除処理（シングルインスタンス処理）が適用されていない場合でも、コア側のファイル管理装置２の記憶領域を、効率的に使用することができる。
【００３６】
しかし、クローン元ファイルの複製をコア側のファイル管理装置２に作成すると、クローン元ファイルもスタブ化処理の対象となる。クローン元ファイルは、一つまたは複数のクローンファイルから参照される、基準となるファイルであるため、ユーザが直接アクセスできないように管理される。
【００３７】
一般的に古いファイルから順番にスタブ化処理の対象となるため、ユーザからアクセスされないクローン元ファイルは、ユーザからアクセス可能なクローンファイルよりも先に、スタブ化処理の対象となり易い。
【００３８】
クローン元ファイルがスタブ化されてしまい、エッジ側のファイル管理装置１にデータが残らなくなると、そのクローン元ファイルを参照する全てのクローンファイルの応答性が悪化する。参照すべきデータを、コア側のファイル管理装置２からエッジ側のファイル管理装置１にＷＡＮ等を介して取得する必要があるためである。リコール処理の完了後、しばらくの間は、クローンファイルの応答性は改善される。しかし、やがてクローン元ファイルがスタブ化されると、クローンファイルの応答性が再び低下する。
【００３９】
このように、クローン元ファイルを参照するクローンファイルが頻繁に使用されたとしても、そのクローンファイルにデータを提供するクローン元ファイルは使用頻度が少ないと判断されて、スタブ化対象となる。
【００４０】
そこで、図１の左側下部に示す実施形態（２）では、クローン元ファイルの使用頻度を適切に評価して、クローン元ファイルのスタブ化処理を実行する。実施形態（２）では、クローン元ファイルのスタブ化の可否を判定するための指標値を、そのクローン元ファイルを参照する各クローンファイルの指標値に基づいて推定する。例えば、実施形態（２）では、クローン元ファイルの最終アクセス日時を、そのクローン元ファイルを参照する各クローンファイルの最終アクセス日時の平均値として算出する。
【００４１】
実施形態（２）によればｍコア側のファイル管理装置２内にも、シングルインスタンス化されたファイルを格納できるため、コア側のファイル管理装置２の記憶領域を有効に使用できる。さらに、エッジ側のファイル管理装置１からコア側のファイル管理装置２には、クローン元ファイルのデータと各クローンファイルの保持する差分データとを送信するだけでよいため、転送データのサイズを小さくでき、通信混雑を招かない。
【００４２】
さらに、クローン元ファイルの使用頻度を適切に評価するため、クローン元ファイルがクローンファイルよりもいち早くスタブ化されるのを抑制できる。この結果、クローンファイルの応答性を維持して、ユーザの使い勝手が低下するのを防止できる。
【実施例１】
【００４３】
図２は、階層化ストレージシステムの全体構成を示すハードウェア構成図である。図３は、階層化ストレージシステムのソフトウェア構成図である。先に図１との対応関係を述べると、「第１ファイル管理装置」としてのファイルストレージ装置１０は図１のエッジ側ファイル管理装置１に、「第２ファイル管理装置」としてのアーカイブ装置２０は図１のコア側のファイル管理装置２に、「ユーザ端末」としてのホスト１２は図１のホストに、それぞれ対応する。
【００４４】
図１の管理装置３は、主に、ファイルストレージ装置１０の機能として設けられる。より詳しくは、管理装置３の果たす機能は、ファイルストレージ装置１０内のソフトウェア群とアーカイブ装置２０内のソフトウェア群との協働により実現される。
【００４５】
エッジ側のサイトＳＴ１の構成を説明する。エッジ側サイトＳＴ１は、ユーザ側に設けられるもので、例えば、事業所または支店ごとに設けられる。エッジ側サイトＳＴ１には、例えば、少なくとも一つのファイルストレージ装置１０と、少なくとも一つのＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システム  １１と、少なくとも一つのホストコンピュータ（またはクライアント端末）１２とが設けられている。
【００４６】
エッジ側サイトＳＴ１とコア側サイトＳＴ２とは、例えば、ＷＡＮ等のサイト間通信ネットワークＣＮ１を介して接続される。ファイルストレージ装置１０とホストコンピュータ（以下ホスト）１２とは、例えば、ＬＡＮ（Local Area Network）のようなサイト内通信ネットワークＣＮ２を介して接続される。ファイルストレージ装置１０とＲＡＩＤシステム１１とは、例えば、ＦＣ−ＳＡＮ（Fibre Channel-Storage Area Network）、または、ＩＰ−ＳＡＮ（Internet Protocol_SAN）のような通信ネットワークＣＮ３を介して接続される。なお、これら通信ネットワークＣＮ１、ＣＮ２、ＣＮ３のうちの複数または全てを共通の通信ネットワークとして構成してもよい。
【００４７】
ファイルストレージ装置１０は、例えば、メモリ１００と、マイクロプロセッサ（図中ＣＰＵ：Central Processing Unit）１０１と、ＮＩＣ（Network Interface Card）１０２と、ＨＢＡ（Host Bus Adapter）１０３とを備える。
【００４８】
ＣＰＵ１０１は、メモリ１００に格納された所定のコンピュータプログラムＰ１００〜Ｐ１０６を実行することで、後述する所定の機能を実現する。メモリ１００は、主記憶メモリ、フラッシュメモリ装置、ハードディスク装置などを含むことができる。メモリ１００の記憶内容は後述する。
【００４９】
ＮＩＣ１０２は、ファイルストレージ装置１０が通信ネットワークＣＮ２を介してホスト１２と通信したり、ファイルストレージ装置１０が通信ネットワークＣＮ１を介してアーカイブ装置２０と通信したりするための通信インターフェース回路である。ＨＢＡ１０３は、ファイルストレージ装置１０がＲＡＩＤシステム１１と通信するための通信インターフェース回路である。
【００５０】
ＲＡＩＤシステム１１は、ファイルストレージ装置１０により管理されるファイル群のデータをブロックデータとして管理する。ＲＡＩＤシステム１１は、例えば、チャネルアダプタ（ＣＨＡ）１１０と、ディスクアダプタ（ＤＫＡ）１１１と、記憶装置１１２とを備える。ＣＨＡ１１０は、ファイルストレージ装置１０との間の通信を制御するための通信制御回路である。ＤＫＡ１１１は、記憶装置１１２との間の通信を制御するための通信制御回路である。ＣＨＡ１１０とＤＫＡ１１１とが協働することで、ファイルストレージ装置１０から入力されたデータが記憶装置１１２に書き込まれたり、記憶装置１１２から読み出されたデータがファイルストレージ装置１０に転送されたりする。
【００５１】
記憶装置１１２は、例えば、ハードディスク装置、フラッシュメモリ装置、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（MagnetoresistiveRandom Access Memory）、相変化メモリ（Ovonic Unified Memory）、ＲＲＡＭ（Resistance RAM：登録商標）等のように構成される。
【００５２】
ホスト１２の構成を説明する。ホスト１２は、例えば、メモリ１２０と、マイクロプロセッサ１２１と、ＮＩＣ１２２及び記憶装置１２３を備える。ホスト１２は、サーバコンピュータのように構成することもできるし、パーソナルコンピュータまたは携帯情報端末（携帯電話を含む）のように構成することもできる。
【００５３】
メモリ１２０及び／または記憶装置１２３には、後述するアプリケーションプログラムＰ１２０等が格納される。ＣＰＵ１２１は、アプリケーションプログラムを実行し、ファイルストレージ装置１０で管理されているファイルを使用する。ホスト１２は、ＮＩＣ１２２を介して、ファイルストレージ装置１０と通信する。
【００５４】
コア側サイトＳＴ２を説明する。コア側サイトＳＴ２は、例えば、データセンタ等に設けられる。コア側サイトＳＴ２は、アーカイブ装置２０と、ＲＡＩＤシステム２１とを備えている。アーカイブ装置２０とＲＡＩＤシステム２１とは、サイト内通信ネットワークＣＮ４を介して接続されている。
【００５５】
ＲＡＩＤシステム２１は、エッジ側のＲＡＩＤシステム１１と同様の構成である。コア側のＣＨＡ２１０、ＤＫＡ２１１、記憶装置２１２は、エッジ側のＣＨＡ１１０、ＤＫＡ１１１、記憶装置１１２にそれぞれ対応するため、説明を省略する。
【００５６】
アーカイブ装置２０は、ファイルストレージ装置１０で管理されているファイル群をバックアップするためのファイルストレージ装置である。アーカイブ装置２０は、例えば、メモリ２００と、マイクロプロセッサ２０１と、ＮＩＣ２０２と、ＨＢＡ２０３とを備えている。それらメモリ２００、マイクロプロセッサ２０１、ＮＩＣ２０２、ＨＢＡ２０３は、ファイルストレージ装置１０のメモリ１００、マイクロプロセッサ１０１、ＮＩＣ１０２、ＨＢＡ１０３と同様のため、説明を省略する。ファイルストレージ装置１０とアーカイブ装置２０とは、ハードウェア構成は似ているが、ソフトウェア構成は異なる。
【００５７】
図３を参照する。先にエッジ側サイトＳＴ１のソフトウェア構成を説明する。ファイルストレージ装置１０は、例えば、ファイル共有プログラムＰ１００と、データムーバープログラムＰ１０１と、ファイルシステムプログラム（図中、ＦＳと略記）Ｐ１０２と、カーネル及びドライバ（図中、ＯＳと略記）Ｐ１０３を備える。さらに、ファイルストレージ装置１０は、例えば、受付プログラムＰ１０４（図７参照）と、抽出プログラムＰ１０５（図８参照）と、重複検出プログラムＰ１０６（図８参照）とを備える。
【００５８】
各プログラムの動作は、後述するが、簡単に説明すると、ファイル共有プログラムＰ１００は、例えば、ＣＩＦＳ（Common Internet File System）またはＮＦＳ（Network File System）のような通信プロトコルを使用して、ホスト１２にファイル共有サービスを提供するためのソフトウェアである。データムーバープログラムＰ１０１は、後述するレプリケーション処理、ファイル同期処理、スタブ化処理、リコール処理を実行するためのソフトウェアである。ファイルシステムとは、ボリューム１１４上に、ファイルという管理単位を実現するために構築された論理構造である。ファイルシステムプログラムＰ１０２とは、ファイルシステムを管理するソフトウェアである。
【００５９】
カーネル及びドライバＰ１０３は、ファイルストレージ装置１０の全体を制御するソフトウェアである。カーネル及びドライバＰ１０３は、例えば、ファイルストレージ装置１０上で動作する複数プログラム（プロセス）のスケジュールを制御したり、ハードウェアからの割り込みを制御したりする。
【００６０】
受付プログラムＰ１０４は、ホスト１２からのファイルアクセス要求を受け付けて所定の処理を行い、その結果を返すソフトウェアである。抽出プログラムＰ１０５は、シングルインスタンス処理を適用するシングルインスタンス候補を抽出するためのソフトウェアである。重複検出プログラムＰ１０６は、抽出されたシングルインスタンス候補について、シングルインスタンス処理を行うためのソフトウェアである。
【００６１】
ＲＡＩＤシステム１１は、ＯＳ等を格納した論理ボリューム１１３と、ファイルのデータを格納するための論理ボリューム１１４とを備えている。複数の記憶装置１１２の物理的記憶領域を一つにまとめ、その物理的記憶領域から所定サイズの記憶領域を切り出すことで、論理的記憶装置である論理ボリューム１１３、１１４を作成できる。
【００６２】
ホスト１２は、例えば、アプリケーションプログラム（以下、アプリケーションと略記）Ｐ１２０と、ファイルシステムプログラムＰ１２１と、カーネル及びドライバＰ１２２とを備えている。アプリケーションＰ１２０は、例えば、文書作成プログラム、顧客管理プログラム、データベース管理プログラム等のように構成される。
【００６３】
コア側サイトＳＴ２のソフトウェア構成を説明する。アーカイブ装置２０は、例えば、データムーバープログラムＰ２０１と、ファイルシステムＰ２０２と、カーネル及びドライバＰ２０３とを備える。これらソフトウェアの役割は必要に応じて後述する。
【００６４】
ＲＡＩＤシステム２１は、ＲＡＩＤシステム１１と同様に、例えば、ＯＳ等を格納した論理ボリューム２１３と、ファイルのデータを記憶するための論理ボリューム２１４とを備える。それらの説明は省略する。
【００６５】
図４は、ファイルシステムとｉノード管理テーブルＴ１０との関係を簡略化して示す説明図である。図４の上側に示すように、ファイルシステムは、例えば、スーパーブロックと、ｉノード管理テーブルＴ１０と、データブロックなどから構成される。
【００６６】
スーパーブロックとは、例えば、ファイルシステムのサイズ及びファイルシステムの空き容量のような、ファイルシステムの管理情報を一括して保持するための領域である。ｉノード管理テーブルＴ１０は、各ファイルに設定されたｉノードを管理するための管理情報である。
【００６７】
ファイルシステムでは、各ディレクトリまたはファイルのそれぞれについて、１つずつのｉノードを対応させて管理する。ｉノード管理テーブルＴ１０の各エントリのうち、ディレクトリ情報のみ含むエントリを、ディレクトリエントリと呼ぶ。ディレクトリエントリを用いてファイルパスを辿ることで、目的のファイルが格納されているｉノードにアクセスすることができる。例えば、図４に示すように、「/home/user-01/a.txt」を辿る場合、ｉノード＃２→ｉノード＃１０→ｉノード＃１５→ｉノード＃１００の順に辿っていくことで、目的のファイルのデータブロックにアクセスすることができる。
【００６８】
ファイルの実体が格納されているｉノード（図４の例では「a.txt」）は、例えば、ファイルの所有権、アクセス権、ファイルサイズ、データ格納位置などの情報を有する。図４の下側には、ｉノードとデータブロックの参照関係が示されている。図４中のデータブロックに添えられた数字１００、２００、２５０は、ブロックアドレスを示す。アクセス権の項目に表示されている「ｕ」はユーザ、「ｇ」はグループ、「ｏ」はユーザ以外の者、のそれぞれの略である。また、アクセス権の項目に示されている「ｒ」はｒｅａｄ、「ｘ」はｅｘｅｃｕｔｅ、「ｗ」はｗｒｉｔｅ、のそれぞれの略である。最終アクセス日時は、西暦（４桁）と月日と時分秒の組合せとして記録される。
【００６９】
図５は、ｉノードがｉノード管理テーブルに格納された状態を示す。図５では、ｉノード番号「２」と「１００」を例に挙げて示している。
【００７０】
図６は、本実施例においてｉノード管理テーブルＴ１０に追加された部分の構成を示す説明図である。ｉノード管理テーブルＴ１０は、例えば、ｉノード番号Ｃ１００と、所有者Ｃ１０１と、アクセス権Ｃ１０２と、サイズＣ１０３と、最終アクセス日時Ｃ１０４と、ファイル名Ｃ１０５と、拡張部分Ｃ１０６と、データブロックアドレスＣ１０７とを備えている。
【００７１】
拡張部分Ｃ１０６は、本実施例のために追加された特徴的部分であり、例えば、参照先ｉノード番号Ｃ１０６Ａと、レプリケーション済フラグＣ１０６Ｂと、スタブ化フラグＣ１０６Ｃと、リンク先Ｃ１０６Ｄと、参照カウントＣ１０６Ｅとを含む。
【００７２】
参照先ｉノード番号Ｃ１０６Ａは、データの参照先のｉノードを特定するための情報である。クローンファイルの場合は、参照先ｉノード番号Ｃ１０６Ａに、クローン元ファイルのｉノード番号が設定される。クローン元ファイルの場合は、参照先ｉノード番号Ｃ１０６Ａに値は設定されない。参照先が存在しないためである。
【００７３】
レプリケーション済フラグＣ１０６Ｂは、レプリケーション処理が終了したか否かを示す情報である。レプリケーション処理が終了して、アーカイブ装置２０に複製が作成された場合は、レプリケーション済フラグにＯＮが設定される。レプリケーション処理がされていない場合、即ち、アーカイブ装置２０に複製が生成されていない場合は、レプリケーション済フラグはＯＦＦに設定されている。
【００７４】
スタブ化フラグＣ１０６Ｃは、スタブ化処理が行われたか否かを示す情報である。スタブ化処理が実施されて、スタブ化ファイルに変換された場合、スタブ化フラグにはＯＮが設定される。スタブ化ファイルに変換されていない場合、スタブ化フラグにはＯＦＦが設定される。
【００７５】
リンク先Ｃ１０６Ｄは、アーカイブ装置２０内の複製ファイルを参照するためのリンク情報である。レプリケーション処理が完了している場合に、リンク先Ｃ１０６Ｄに値が設定される。ファイルストレージ装置１０は、リコール処理等を行う場合、リンク先Ｃ１０６Ｄを参照することで、アーカイブ装置２０から複製ファイルのデータを取得することができる。
【００７６】
参照カウントＣ１０６Ｅは、クローン元ファイルの寿命を管理する情報である。参照カウントＣ１０６Ｅの値は、クローン元ファイルを参照するクローンファイルが作成されるたびに１つ増加する。従って、例えば、５個のクローンファイルから参照されているクローン元ファイルの参照カウントＣ１０６Ｅには、「５」が設定される。
【００７７】
参照カウントＣ１０６Ｅの値は、クローン元ファイルを参照するクローンファイルが削除またはスタブ化されると、１つ減少する。従って、前記の例で言えば、１つのクローンファイルが削除され、かつ、他の１つのクローンファイルがスタブ化された場合、参照カウントＣ１０６Ｅの値は「３」となる。そして、参照カウントＣ１０６Ｅの値が０になった場合、クローン元ファイルは削除される。本実施例では、クローン元ファイルを参照するクローンファイルが無くなった場合に、そのクローン元ファイルを削除して、空き領域を増やす。
【００７８】
図７は、レプリケーション処理の概要を示す。レプリケーション処理の詳細は、図２６で後述する。
【００７９】
ファイルストレージ装置１０のデータムーバープログラムＰ１０１は、定期的に、レプリケーション要求を受領する（Ｓ１０）。レプリケーション要求は、例えば、ホスト１２から発行される。レプリケーション要求には、例えば、レプリケーション対象のファイル名などが含まれている。
【００８０】
データムーバープログラムＰ１０１は、レプリケーション対象のファイルデータを取得すべく、受付プログラムＰ１０４にリード要求を発行する（Ｓ１１）。受付プログラムＰ１０４は、ＲＡＩＤシステム１１内の正ボリューム（コピー元である論理ボリューム）１１４から、レプリケーション対象ファイルのデータを読出して、データムーバープログラムＰ１０１に渡す（Ｓ１２）。
【００８１】
データムーバープログラムＰ１０１は、取得したファイルのデータ及びメタデータを、アーカイブ装置２０のデータムーバープログラムＰ２０１に送信する（Ｓ１３）。アーカイブ装置２０のデータムーバープログラムＰ２０１は、アーカイブ装置２０の受付プログラムＰ２０４にライト要求を発行する（Ｓ１４）。受付プログラムＰ２０４は、ＲＡＩＤシステム副ボリューム（コピー先の論理ボリューム）２１４に、ファイルストレージ装置１０から取得したファイルを書き込む（Ｓ１５）。なお、ファイルのデータブロックと共に送信されるメタデータとは、例えば、ｉノード管理テーブルＴ１０である。
【００８２】
アーカイブ装置２０に複製が作成されると、複製元のファイルのレプリケーション済フラグＣ１０６ＢはＯＮに設定される。レプリケーション済フラグに代えて、レプリケーション済のファイル名などを記載したレプリケーション済ファイルのリストを用いて、レプリケーション済のファイルを管理する構成でもよい。
【００８３】
正ボリューム１１４内のレプリケーション元のファイルと副ボリューム２１４内の複製ファイルとは、ペアとして関連付けられる。レプリケーション元ファイルが更新された場合、ファイルがアーカイブ装置２０に再転送される。これにより、ファイルストレージ装置１０内のレプリケーション元ファイルとアーカイブ装置２０内の複製ファイルとは、同期する。
【００８４】
本実施例では、ファイル同期処理の対象となるファイルを、リストで管理する。つまり、レプリケーション処理の済んでいるファイルが更新された場合、そのファイルはリストに記載される。ファイルストレージ装置１０は、リストに記載されたファイルを、適当な時期を見計らって、アーカイブ装置２０に転送する。リストに代えて、ｉノード管理テーブルＴ１０に、同期の要否を示すフラグを追加してもよい。ファイルが更新された場合は、そのファイルの同期の要否フラグにＯＮを設定し、ファイル同期処理が終了した場合は要否フラグをＯＦＦに設定する。
【００８５】
図８は、シングルインスタンス処理の概要を示す。シングルインスタンス処理の詳細は、図２８、図２９、図３０で後述する。
【００８６】
抽出プログラムＰ１０５は、一定期間アクセスされなかったファイル（例えば、一定期間更新されなかったファイル）を定期的に検索し、該当ファイルの名称を記載したリストＴ１１を作成する（Ｓ２０）。リストＴ１１は、シングルインスタンス処理の適用候補となるファイルを管理するための情報である。
【００８７】
定期的に実行される重複検出プログラムＰ１０６は、リストＴ１１に記載されたシングルインスタンス処理の候補ファイルと、既存のクローン元ファイルとを比較する。
候補ファイルと既存のクローン元ファイルとが一致する場合、重複検出プログラムＰ１０６は、候補ファイルのデータを削除する（Ｓ２１）。重複検出プログラムＰ１０６は、候補ファイルのｉノード管理テーブルＴ１０の参照先ｉノード番号Ｃ１０６Ａに、クローン元ファイルのｉノード番号を設定する（Ｓ２１）。これにより、その候補ファイルは、クローン元ファイルを参照するクローンファイルに変換される。
【００８８】
候補ファイルと既存のクローン元ファイルとが一致しない場合は、その候補ファイルに対応するクローン元ファイルを新たに作成する。重複検出プログラムＰ１０６は、候補ファイルのデータを削除し、かつ、新たに作成されたクローン元ファイルのｉノード番号を、候補ファイルの参照先ｉノード番号Ｃ１０６Ａに設定する。
【００８９】
図９は、クローン元ファイルの管理方法を示す説明図である。クローン元ファイルは、上述の通り、一つまたは複数のクローンファイルから参照されるデータを保持する重要なファイルである。従って、本実施例では、クローン元ファイルをユーザの誤操作等から保護するために、ユーザからアクセスできない特定のディレクトリ下で管理する。その特定のディレクトリを、本実施例ではインデックスディレクトリと呼ぶ。
【００９０】
インデックスディレクトリには、例えば、「１Ｋ」、「１０Ｋ」、「１００Ｋ」、「１Ｍ」のように、ファイルサイズのランク毎にサブディレクトリが設けられている。クローン元ファイルは、自身のファイルサイズに応じたサブディレクトリで管理される。クローン元ファイルのファイル名は、例えば、ファイルサイズとｉノード番号の組合せとして生成される。
【００９１】
ファイルサイズ７８０バイト、ｉノード番号１０のクローン元ファイルのファイル名は、「７８０．１０」となる。同様に、ファイルサイズ９００バイト、ｉノード番号５０のクローン元ファイルのファイル名は「９００．５０」となる。それら２つのクローン元ファイル「７８０．１０」、「９００．５０」は、１ＫＢ未満のクローン元ファイルを管理するためのサブディレクトリ「１ＫＢ」で管理される。
【００９２】
ファイルサイズ７０００バイト、ｉノード番号３のクローン元ファイルは、ファイルサイズ１ＫＢ以上、かつ１０ＫＢ未満のクローン元ファイルを管理するためのサブディレクトリ「１０ＫＢ」で管理される。
【００９３】
このように、本実施例では、クローン元ファイルをファイルサイズ毎に分類してサブディレクトリに保管し、かつ、ファイルサイズとｉノード番号の組合せをファイル名としている。従って、クローン候補のファイル（シングルインスタンス処理候補のファイル）と比較すべきクローン元ファイルを速やかに抽出することができ、照合処理を比較的短時間で完了することができる。
【００９４】
なお、ファイルサイズとｉノード番号の組合せに代えて、例えば、ファイルサイズとハッシュ値の組合せ、または、ファイルサイズとｉノード番号及びハッシュ値の組合せから、クローン元ファイルのファイル名を生成してもよい。ハッシュ値は、クローン元ファイルのデータをハッシュ関数に入力することで得られる値である。
【００９５】
図１０は、シングルインスタンス処理の候補としてリストＴ１１に記載されたファイルが、クローンファイルに変換される様子を示す。図１０（ａ）の左側には、クローン候補のファイルＮＦが示されている。図１０（ａ）の右側には、既存のクローン元ファイルＯＦが示されている。なお、図１０では、便宜上、メタデータの一部を示す。
【００９６】
クローン候補ファイルＮＦとクローン元ファイルＯＦのデータとは、ともに「１２３４」であり、両方のデータは一致する。そこで、図１０（ｂ）に示すように、ファイルストレージ装置１０は、クローン候補ファイルのデータを削除し、さらに、クローン候補ファイルの参照先ｉノード番号Ｃ１０６Ａに、クローン元ファイルのｉノード番号である「１０」を設定する。これにより、クローン候補のファイルＮＦは、クローン元ファイルＯＦを参照するクローンファイルＣＦに変換される。クローンファイルのデータのうちクローン元ファイルと一致しているデータは、全てクローン元ファイルのデータが参照されるため、データブロック単位で重複データを排除できる。
【００９７】
図１１は、クローンファイルが更新された場合を示す。ホスト１２によりクローンファイルが更新され、クローン元ファイルのデータと部分的に一致しなくなった場合、クローンファイルは、クローン元ファイルとの差分データのみを保持する。図１１の例では、クローンファイルの先頭の２つのデータブロックが「１」、「２」から「５」、「６」に更新されている。そこで、クローンファイルは、差分データである「５」、「６」のみを保持し、他のデータ「３」、「４」は引き続きクローン元ファイルを参照する。
【００９８】
なお、特に図示はしないが、クローン元ファイル及びクローンファイルのいずれか一方または両方を、ランレングス等のデータ圧縮方法を用いて圧縮してもよい。データ圧縮を行うことで、より一層、ファイルストレージ装置１０の記憶領域を効率的に使用することができる。
【００９９】
図１２〜図１４を参照して、シングルインスタンス処理の応用例を幾つか説明する。図１２〜図１４では、エッジ側サイトの構成のみ示す。図１２は、仮想デスクトップ環境に適用した場合である。
【０１００】
図１２の例では、ホスト１２は仮想化サーバとして構成されており、複数の仮想マシン１２００を起動させている。クライアント端末１３は、それぞれの仮想マシン１２００を介して、ファイルを操作する。クライアント端末１３は、例えば、補助記憶装置を備えないシンクライアント端末のように構成することができる。
【０１０１】
ファイルストレージ装置１０内のファイルシステムは、仮想マシン１２００の起動ディスクイメージ（VM-image）をクローンファイルとして管理している。クローンファイル化された各起動ディスクイメージは、ゴールデンイメージ（GI）を参照する。各起動ディスクイメージとゴールデンイメージとの差分は、差分データ（DEF）としてそれぞれ管理される。
【０１０２】
このように、シングルインスタンス処理を仮想デスクトップ環境に適用した場合、仮想マシンの起動デスクイメージのサイズを小さくできる。従って、多数の仮想マシン１２００を生成した場合でも、全体としてのデータ格納領域を小さくことができる。
【０１０３】
図１３は、ドキュメント管理システムにシングルインスタンス処理を適用した場合の例を示す。ファイルストレージ装置１０のファイルシステムは、複数のクライアント端末１２により共有されている共有ドキュメントと、共有ドキュメントから派生した複数の関連ドキュメントとを管理する。
【０１０４】
共有ドキュメントから派生した関連ドキュメントは、共有ドキュメントをクローン元ファイルとして参照するクローンファイルとなっている。このように、複数ユーザが、共有ドキュメントに基づいて関連ドキュメントを作成する場合に、関連ドキュメントをクローンファイルとして作成すれば、記憶領域を効率的に使用できる。
【０１０５】
図１４は、データベースシステムにシングルインスタンス処理を適用する場合を示す一例である。テスト用データベースサーバ１２Ａと、開発用データベースサーバ１２Ｂと、本番用データベースサーバ１２Ｃとが、それぞれデータベースプログラム１２０１を備えている。ユーザは、クライアント端末１３を介して、各サーバ１２Ａ〜１２Ｃのうち使用権限のあるサーバにアクセスし、データベースを使用する。
【０１０６】
ファイルストレージ装置１０のファイルシステムは、マスターテーブルと、マスターテーブルをコピーしたゴールデンイメージと、ゴールデンイメージを参照するクローンファイルとして作成されたクローンデータベースとを管理している。
【０１０７】
テスト用データベースサーバ１２Ａ及び開発用データベースサーバ１２Ｂの、データベース開発プログラム１２０１は、それぞれクローンファイルとして作成されたデータベースを使用する。クローンファイルとして作成されたデータベースとゴールデンイメージとの差分データは、クローンファイルとして作成されたデータベースに対応付けられて管理される。
【０１０８】
このように、複数のクライアント端末１３にデータベースアクセスを提供する場合に、クローンファイルとして作成されるデータベースをデータベースの用途毎に用意すれば、記憶領域を効率的に使用できる。
【０１０９】
以上、シングルインスタンス処理の適用例を幾つか示したが、上記は一例に過ぎず、他の構成にも適用することができる。
【０１１０】
図１５は、スタブ化処理の概要を示す。データムーバープログラムＰ１０１は、一定時間毎に起動して正ボリューム１１４の空き容量を確認し、空き容量が閾値よりも少なくなった場合に、最終アクセス日時の古いファイルから順番にスタブ化する（Ｓ３０）。
【０１１１】
スタブ化するとは、対象ファイルをスタブ化ファイルにする処理を言う。スタブ化処理とは、ファイルストレージ装置１０側のデータを消去し、アーカイブ装置２０に有る複製ファイルのデータのみを残す処理である。ホスト１２がスタブ化ファイルにアクセスすると、スタブ化ファイルのデータがアーカイブ装置２０から読み出されて、ファイルストレージ装置１０に保存される（リコール処理）。
【０１１２】
図１６は、クローン元ファイルの削除条件を示す。図６の参照カウントＣ１０６Ｅで説明したように、クローン元ファイルを参照先とするクローンファイルが作成されるたびに、クローン元ファイルの参照カウントＣ１０６Ｅの値は１つずつ増加する。これに対し、クローンファイルがスタブ化ファイルに変換されたり、クローンファイルが削除されたりすると、そのたびに参照カウントＣ１０６Ｅの値は１つずつ減少する。そして、参照カウントＣ１０６Ｅの値が０になった時点で、そのクローン元ファイルを直接参照するクローンファイルは１つも存在しないため、クローン元ファイルは削除対象となる。
【０１１３】
図１７は、受付プログラムＰ１０４によるリード要求処理の概要を示す。受付プログラムＰ１０４は、ホスト１２からのリード要求を受け付けると（Ｓ４０）、リード対象のファイルを正ボリューム１１４から取得する（Ｓ４１）。
【０１１４】
リード対象ファイルがスタブ化されており、正ボリューム１１４内にデータが存在しない場合、受付プログラムＰ１０４は、リコール処理を実施して、副ボリューム２１４からリード対象ファイルのデータを読み出す（Ｓ４２）。受付プログラムＰ１０４は、アーカイブ装置２０の副ボリューム２１４から読み出したデータを、正ボリューム１１４に格納した後で、ホスト１２に転送する（Ｓ４３）。
【０１１５】
リード対象ファイルがリコール済みの場合、受付プログラムＰ１０４は、そのファイルデータを正ボリューム１１４から読み出して、ホスト１２に転送する。複数のホスト１２によってファイルストレージ装置１０は共有されているため、先に受け付けられた他のアクセス要求によって、リード対象のスタブ化されたファイルがリコールされている場合がある。なお、リコール済であるか否かは、例えば、ｉノード管理テーブルＴ１０のブロックアドレスＣ１０７の値が０であるか否かを確認すればわかる。リコール済の場合は、ブロックアドレスに０以外の値が設定されている。
【０１１６】
図１８は、受付プログラムＰ１０４によるライト要求処理の概要を示す。受付プログラムＰ１０４は、ホスト１２からのライト要求を受け付けると（Ｓ４４）、ライト対象ファイルがスタブ化ファイルに変換されているか否かを確認する（Ｓ４５）。
【０１１７】
ライト対象ファイルがスタブ化ファイルに変換されている場合、つまり、ライト対象ファイルがスタブ化されている場合、受付プログラムＰ１０４は、アーカイブ装置２０からライト対象ファイルのデータを全て取得する。受付プログラムＰ１０４は、取得したデータをファイルストレージ装置１０のファイルシステムに書き込み、ライト対象ファイルのスタブ化フラグＣ１０６ＣをＯＦＦに設定する（Ｓ４６）。
【０１１８】
そして、受付プログラムＰ１０４は、ライト対象ファイルにライトデータを書き込み、さらに、ライト対象ファイルの名称を更新リストに記載する（Ｓ４７）。ライト対象ファイルは、ライトデータが書き込まれて内容が変わってしまうため、ファイル同期の対象とする。なお、ライト対象ファイルがスタブ化されていない場合、上記のステップＳ４６は省略されてステップＳ４７が実行される。
【０１１９】
図１９は、ファイルのコピー処理の概要を示す。ファイルストレージ装置１０を共同で使用するユーザは、ファイルストレージ装置１０内のファイルを適宜再利用して、新たなファイルを作成することができる。
【０１２０】
ファイルの再利用に際して、ファイルのコピーが行われる。通常のファイルのように全データをそのままそっくりコピーしてもよいが、その場合は、重複したデータがファイルストレージ装置１０に格納されることになる。そこで、本実施例では、シングルインスタンス処理を用いて、ファイルコピー作成時の記憶容量を削減する。
【０１２１】
受付プログラムＰ１０４は、ホスト１２からのコピー要求を受け付けると（Ｓ４８）、コピー元として選択されたファイル（図１９のクローンファイル１）のコピー（クローンファイル２）を作成する（Ｓ４９）。即ち、受付プログラムＰ１０４は、データをコピーすることなく、メタデータのみをコピーすることで、指定されたファイルのコピーを作成する。
【０１２２】
コピー元ファイルとして指定されたファイルがクローンファイルではない場合（通常ファイルのような非クローンファイルの場合）、受付プログラムＰ１０４は、最初に、コピー元ファイルをクローンファイルに変換する。
【０１２３】
次に、受付プログラムＰ１０４は、クローンファイルに変換されたコピー元ファイルのメタデータ（ｉノード管理テーブルＴ１０）をコピーして一部を再利用することで、コピーファイル（クローンファイルである）を作成する。クローンファイルの数が増加するため、そのクローンファイルの参照先であるクローン元ファイルの参照カウントＣ１０６Ｅの値は１つ増加する。
【０１２４】
図２０は、受付プログラムＰ１０４により実行される、リード要求処理及びライト要求処理を示すフローチャートである。受付プログラムＰ１０４は、ホスト１２からリード要求またはライト要求を受領すると、起動して以下の処理を実行する。
【０１２５】
受付プログラムＰ１０４は、ホスト１２が要求する対象ファイルのスタブ化フラグＣ１０６ＣがＯＮに設定されているか否か判定する（Ｓ１００）。スタブ化フラグがＯＮに設定されていない場合（Ｓ１００：ＮＯ）、対象ファイルはスタブ化ファイルに変換されていないため、後述する図２１の処理に移行する。
【０１２６】
対象ファイルのスタブ化フラグがＯＮに設定されている場合（Ｓ１００：ＹＥＳ）、受付プログラムＰ１０４は、ホスト１２からの処理要求の種別がリード要求であるかライト要求であるかを判別する（Ｓ１０１）。
【０１２７】
リード要求の場合（Ｓ１０１：ｒｅａｄ）、受付プログラムＰ１０４は、対象ファイルのｉノード管理テーブルＴ１０を参照し、ブロックアドレスが有効であるか判定する（Ｓ１０２）。
【０１２８】
ブロックアドレスが有効な場合（Ｓ１０２：ＹＥＳ）、受付プログラムＰ１０４は、対象ファイルのデータを読み出して、要求元であるホスト１２に送信する（Ｓ１０３）。ブロックアドレスが有効な場合、つまりブロックアドレスが０以外の値に設定されている場合は、対象ファイルがスタブ化ファイルに変換されていない。従って、リコール処理が不要である。
【０１２９】
受付プログラムＰ１０４は、対象ファイルのｉノード管理テーブルＴ１０の最終アクセス日時Ｃ１０４の値を更新して、本処理を終了する（Ｓ１０５）。
【０１３０】
対象ファイルのブロックアドレスが有効ではない場合（Ｓ１０２：ＮＯ）、受付プログラムＰ１０４は、データムーバープログラムＰ１０１に、リコール処理の実行を要求する（Ｓ１０４）。データムーバープログラムＰ１０１は、リコール処理を実行する。
【０１３１】
受付プログラムＰ１０４は、アーカイブ装置２０から取得された対象ファイルを、ホスト１２に送信し（Ｓ１０４）、対象ファイルのｉノード管理テーブルＴ１０の最終アクセス日時Ｃ１０４の値を更新して、本処理を終了する（Ｓ１０５）。
【０１３２】
ホスト１２からの処理要求がライト要求の場合（Ｓ１０１：ｗｒｉｔｅ）、受付プログラムＰ１０４は、データムーバープログラムＰ１０１に対して、リコール処理の実行を要求する（Ｓ１０６）。データムーバープログラムＰ１０１は、その要求に応えてリコール処理を実行する。
【０１３３】
受付プログラムＰ１０４は、アーカイブ装置２０から取得された対象ファイルにライトデータを書き込んで、ファイルのデータを更新する（Ｓ１０７）。さらに、受付プログラムＰ１０４は、対象ファイルのｉノード管理テーブルＴ１０の最終アクセス日時Ｃ１０４を更新する（Ｓ１０７）。
【０１３４】
受付プログラムＰ１０４は、ライトデータで更新されたファイルのスタブ化フラグＣ１０６ＣにＯＦＦを設定し、さらに、そのファイルのレプリケーション済フラグをＯＮに設定する（Ｓ１０８）。受付プログラムＰ１０４は、ライトデータで更新されたファイルの名称を更新リストに記載して、本処理を終了する（Ｓ１０９）。
【０１３５】
図２１を参照する。ホスト１２の処理対象ファイルのスタブ化フラグＣ１０６ＣにＯＦＦが設定されている場合（Ｓ１００：ＮＯ）、図２３のステップＳ１１０に移る。受付プログラムＰ１０４は、ホスト１２からの処理要求がリード要求であるかライト要求であるかを判別する（Ｓ１１０）。
【０１３６】
リード要求の場合（Ｓ１１０：ｒｅａｄ）、受付プログラムＰ１０４は、リード対象ファイルがクローンファイルであるか判定する（Ｓ１１１）。リード対象ファイルがクローンファイルではない場合（Ｓ１１１：ＮＯ）、受付プログラムＰ１０４は、リード対象ファイルのｉノード管理テーブルＴ１０のブロックアドレスに従ってデータを読出し、そのデータをホスト１２に送信する（Ｓ１１２）。受付プログラムＰ１０４は、リード対象ファイルの最終アクセス日時Ｃ１０４を更新する（Ｓ１１９）。
【０１３７】
リード対象ファイルがクローンファイルの場合（Ｓ１１１：ＹＥＳ）、受付プログラムＰ１０４は、クローン元ファイルから取得したデータとリード対象のクローンファイルが保持している差分データとをマージして、ホスト１２に送信する（Ｓ１１３）。受付プログラムＰ１０４は、リード対象ファイルであるクローンファイルの最終アクセス日時Ｃ１０４を更新する（Ｓ１１９）。
【０１３８】
ホスト１２からの処理要求がライト要求である場合（Ｓ１１０：ｗｒｉｔｅ）、受付プログラムＰ１０４は、ライト対象ファイルがレプリケーション済であるかを判定する（Ｓ１１４）。
【０１３９】
ライト対象ファイルがレプリケーション済の場合（Ｓ１１４：ＹＥＳ）、受付プログラムＰ１０４は、ライト対象ファイルの名称を更新リストに記載する（Ｓ１１５）。ライト対象ファイルはライトデータによって更新されるため、アーカイブ装置２０内の複製と一致しなくなるためである。ライト対象ファイルがレプリケーション済ではない場合（Ｓ１１４：ＮＯ）、ステップＳ１１５はスキップされてステップＳ１１６に移る。
【０１４０】
受付プログラムＰ１０４は、ライト対象ファイルがクローンファイルであるか判定する（Ｓ１１６）。ライト対象ファイルがクローンファイルではない場合（Ｓ１１６：ＮＯ）、受付プログラムＰ１０４は、ライト対象ファイルのブロックアドレスＣ１０７に基づいて、ライトデータをライト対象ファイルに書き込む（Ｓ１１７）。受付プログラムＰ１０４は、ライトデータを書き込んだライト対象ファイルの最終アクセス日時Ｃ１０４を更新する（Ｓ１１９）。
【０１４１】
ライト対象ファイルがクローンファイルの場合（Ｓ１１６：ＹＥＳ）、受付プログラムＰ１０４は、ライトデータをクローンファイルのブロックアドレスに従って書き込む（Ｓ１１８）。受付プログラムＰ１０４は、クローン元ファイルのデータは更新せずに、クローンファイルについてのみデータを書き込む。これにより、ライト対象のクローンファイルは、クローン元ファイルのデータと異なる差分データを保持する（Ｓ１１８）。
【０１４２】
図２３は、受付プログラムＰ１０４により実行されるコピー処理を示すフローチャートである。受付プログラムＰ１０４は、ホスト１２からコピー要求を受領すると、本処理を実行する。
【０１４３】
受付プログラムＰ１０４は、コピー元として指定されたファイルのスタブ化フラグＣ１０６ＣがＯＮに設定されているか判定する（Ｓ１３０）。コピー元ファイルのスタブ化フラグがＯＮに設定されている場合（Ｓ１３０：ＹＥＳ）、受付プログラムＰ１０４は、コピー元ファイルのブロックアドレスが有効であるか判定する（Ｓ１３１）。コピー元ファイルがスタブ化ファイルに変換されている場合でも、他のアクセス要求によって、リコール処理が完了している場合がある。
【０１４４】
コピー元ファイルのブロックアドレスが有効である場合（Ｓ１３１：ＹＥＳ）、受付プログラムＰ１０４は、そのブロックアドレスに従ってファイルデータ及びメタデータ（ｉノード管理テーブルＴ１０）を取得する（Ｓ１３２）。
【０１４５】
コピー元ファイルのブロックアドレスが有効ではない場合（Ｓ１３１：ＮＯ）、受付プログラムＰ１０４は、データムーバープログラムＰ１０１に対して、コピー元ファイルのデータに関するリコール処理の実行を要求する（Ｓ１３３）。
【０１４６】
受付プログラムＰ１０４は、コピー元ファイルのファイルデータ及びメタデータを取得すると、コピー元ファイルのコピーを正ボリューム１１４内に作成する（Ｓ１３４）。このコピーファイルは、通常ファイル（非クローンファイル）である。
【０１４７】
受付プログラムＰ１０４は、コピー元ファイルの最終アクセス日時Ｃ１０４を更新する（Ｓ１３５）。受付プログラムＰ１０４は、ステップＳ１３４で作成したコピーファイルについてレプリケーション処理が終了しているか判定する（Ｓ１３６）。レプリケーション処理が終了している場合（Ｓ１３６：ＹＥＳ）、本処理を終了する。
【０１４８】
レプリケーション処理が終了していない場合（Ｓ１３６：ＮＯ）、受付プログラムＰ１０４は、データムーバープログラムＰ１０１に対して、レプリケーション処理の実行を要求する（Ｓ１３７）。
【０１４９】
コピー元ファイルのスタブ化フラグＣ１０６ＣがＯＦＦに設定されている場合（Ｓ１３０：ＮＯ）、受付プログラムＰ１０４は、コピー元ファイルがクローンファイルであるか否かを判定する（Ｓ１３８）。
【０１５０】
コピー元ファイルがクローンファイルではない場合（Ｓ１３８：ＮＯ）、受付プログラムＰ１０４は、重複排除プログラム（図３０）を呼び出し、コピー元ファイルをクローンファイルに変換する（Ｓ１３９）。クローンファイルではないファイルとしては、クローン元ファイルと通常ファイルとがあるが、ホスト１２はクローン元ファイルを認識できず、直接アクセスすることはできない。
【０１５１】
受付プログラムＰ１０４は、クローンファイルに変換されたコピー元ファイルのｉノード管理テーブルＴ１０の情報をコピーして、コピー元ファイルのコピーファイルを作成する（Ｓ１４０）。つまり、コピーファイルも、クローンファイルとして作成される。
【０１５２】
受付プログラムＰ１０４は、コピー元ファイルの参照するクローン元ファイルの参照カウントＣ１０６Ｅの値を１つ増加する（Ｓ１４１）。ステップＳ１３９またはステップＳ１４０のいずれかで、クローンファイルが新たに作成されたためである。
【０１５３】
受付プログラムＰ１０４は、コピー元ファイルの最終アクセス日時Ｃ１０４を更新し（Ｓ１３５）、ステップＳ１３６に移る。これより先のステップＳ１３６、Ｓ１３７は説明を省略する。
【０１５４】
図２３は、受付プログラムＰ１０４により実行される削除処理を示すフローチャートである。受付プログラムＰ１０４は、ホスト１２からの削除要求を受領すると、本処理を実行する。
【０１５５】
受付プログラムＰ１０４は、削除対象ファイルのスタブ化フラグＣ１０６ＣがＯＮに設定されているか判定する（Ｓ１５０）。受付プログラムＰ１０４は、削除対象ファイルのスタブ化フラグがＯＮに設定されている場合（Ｓ１５０：ＹＥＳ）、削除対象ファイルのｉノード管理テーブルＴ１０を削除する（Ｓ１５１）。さらに、受付プログラムＰ１０４は、アーカイブ装置２０に対して、削除対象ファイルの複製であるファイルを削除するよう指示して（Ｓ１５２）、本処理を終了する。
【０１５６】
削除対象ファイルのスタブ化フラグがＯＦＦに設定されている場合（Ｓ１５０：ＮＯ）、受付プログラムＰ１０４は、削除対象ファイルが非クローンファイルであるか判定する（Ｓ１５３）。非クローンファイルとは、クローンファイル以外のファイル、即ち、通常ファイルである。削除対象ファイルが通常ファイルの場合（Ｓ１５３：ＹＥＳ）、受付プログラムＰ１０４は、削除対象ファイルのｉノード管理テーブルＴ１０を削除し（Ｓ１５４）、本処理を終了する。
【０１５７】
削除対象ファイルが通常ファイルではない場合（Ｓ１５３：ＮＯ）、受付プログラムＰ１０４は、削除対象ファイルがクローンファイルであるか判定する（Ｓ１５５）。削除対象ファイルがクローンファイルではない場合（Ｓ１５５：ＮＯ）、受付プログラムＰ１０４は、本処理を終了する。
【０１５８】
削除対象ファイルがクローンファイルの場合（Ｓ１５５：ＹＥＳ）、削除対象のクローンファイルの有するデータ（差分データ）を削除し、さらに、参照先であるクローン元ファイルの参照カウントＣ１０６Ｅを１つ減少させる（Ｓ１５６）。
【０１５９】
受付プログラムＰ１０４は、クローン元ファイルの参照カウントＣ１０６Ｅの値が０になったか判定する（Ｓ１５７）。参照カウントＣ１０６Ｅの値が０ではない場合（Ｓ１５７：ＮＯ）、受付プログラムＰ１０４は、本処理を終了する。
【０１６０】
クローン元ファイルの参照カウントＣ１０６Ｅの値が０になった場合（Ｓ１５７：ＹＥＳ）、受付プログラムＰ１０４は、クローン元ファイルのファイルデータ及びメタデータを削除する（Ｓ１５８）。
【０１６１】
図２４は、データムーバープログラムＰ１０１の処理を示すフローチャートである。本処理は、イベントが発生することにより起動される、イベント駆動型の処理である。
【０１６２】
データムーバープログラムＰ１０１は、予め設定された所定イベントのうちいずれかのイベントが発生したかを判定する（Ｓ１６０）。データムーバープログラムＰ１０１は、イベントが発生すると（Ｓ１６０：ＹＥＳ）、一定時間が経過したというイベントが発生したのか判定する（Ｓ１６１）。
【０１６３】
一定時間の経過を知らせるイベントが発生した場合（Ｓ１６１：ＹＥＳ）、データムーバープログラムＰ１０１は、スタブ化処理を実行する（Ｓ１６２）。スタブ化処理の詳細は、図２５で後述する。
【０１６４】
一定時間の経過を知らせるイベントではない場合（Ｓ１６０：ＮＯ）、データムーバープログラムＰ１０１は、レプリケーション処理の実行を要求するイベントであるか判定する（Ｓ１６３）。レプリケーション処理の実行を要求するイベントの場合（Ｓ１６３：ＹＥＳ）、データムーバープログラムＰ１０１は、レプリケーション処理を実行する（Ｓ１６４）。レプリケーション処理の詳細は、図２６で後述する。
【０１６５】
レプリケーション処理の実行を要求するイベントではない場合（Ｓ１６３：ＮＯ）、データムーバープログラムＰ１０１は、ファイルの同期を要求するイベントであるか判定する（Ｓ１６５）。ファイルの同期を要求するイベントの場合（Ｓ１６５：ＹＥＳ）、データムーバープログラムＰ１０１は、ファイル同期処理を実行する（Ｓ１６６）。ファイル同期処理の詳細は、図２７で後述する。
【０１６６】
ファイルの同期を要求するイベントではない場合（Ｓ１６５：ＮＯ）、データムーバープログラムＰ１０１は、リコール処理の実行を要求するイベントであるか判定する（Ｓ１６７）。リコール処理の実行を要求するイベントである場合（Ｓ１６７：ＹＥＳ）、データムーバープログラムＰ１０１は、アーカイブ装置２０からファイルデータを取得して、ファイルストレージ装置１０に送信する（Ｓ１６８）。ファイルストレージ装置１０には、メタデータは残されているので、アーカイブ装置２０からファイルデータのみ取得すればよい。
【０１６７】
図２５は、データムーバープログラムＰ１０１により実行されるスタブ化処理の詳細を示すフローチャートである。
【０１６８】
データムーバープログラムＰ１０１は、ファイルストレージ装置１０のファイルシステムの空き容量ＲＳをチェックする（Ｓ１７０）。データムーバープログラムＰ１０１は、空き容量ＲＳが所定の空き容量閾値ＴｈＲＳよりも小さいか判定する（Ｓ１７１）。空き容量ＲＳが閾値ＴｈＲＳ以上の場合（Ｓ１７１：ＮＯ）、本処理は終了して、図２４の処理に戻る。
【０１６９】
空き容量ＲＳが閾値ＴｈＲＳよりも小さい場合（Ｓ１７１：ＹＥＳ）、データムーバープログラムＰ１０１は、空き容量ＲＳが閾値ＴｈＲＳ以上になるまで、最終アクセス日時の古い順に、レプリケーション済ファイルを選択する（Ｓ１７２）。
【０１７０】
データムーバープログラムＰ１０１は、選択されたファイルのデータを削除し、そのファイルのスタブ化フラグをＯＮに設定し、そのファイルのレプリケーション済フラグをＯＦＦに設定する（Ｓ１７３）。これにより、ステップＳ１７２で選択されたファイルは、スタブ化ファイルに変換される。さらに、クローンファイルがスタブ化ファイルに変換された場合、データムーバープログラムＰ１０１は、そのクローンファイルが参照するクローン元ファイルの参照カウントＣ１０６Ｅの値を１つ減少させる（Ｓ１７３）。
【０１７１】
図２６は、データムーバープログラムＰ１０１により実行されるレプリケーション処理の詳細を示すフローチャートである。
【０１７２】
データムーバープログラムＰ１０１は、アーカイブ装置２０から、複製ファイルの格納先を取得する（Ｓ１８０）。データムーバープログラムＰ１０１は、取得した格納先を、レプリケーション対象のｉノード管理テーブルＴ１０のリンク先Ｃ１０６Ｄに設定する（Ｓ１８１）。
【０１７３】
データムーバープログラムＰ１０１は、受付プログラムＰ１０４に対してリード要求を発行し、レプリケーション処理の対象であるファイルを取得する（Ｓ１８２）。データムーバープログラムＰ１０１は、レプリケーション対象のファイルをアーカイブ装置２０に転送する（Ｓ１８３）。データムーバープログラムＰ１０１は、レプリケーション対象ファイルのレプリケーション済フラグＣ１０６ＢにＯＮを設定する（Ｓ１８４）。
【０１７４】
図２７は、データムーバープログラムＰ１０１により実行されるファイル同期処理を示すフローチャートである。
【０１７５】
データムーバープログラムＰ１０１は、受付プログラムＰ１０４に対してリード要求を発行し、更新リストに記載されているファイルのデータ及びメタデータを取得する（Ｓ１９０）。更新リストとは、レプリケーション処理済のファイルのうち、レプリケーション処理後に更新されて差分データが発生したファイルを特定するための情報である。更新リストは、ファイル同期処理を行うファイルを管理するための情報である。
【０１７６】
データムーバープログラムＰ１０１は、取得したデータをアーカイブ装置２０に転送し（Ｓ１９１）、更新リストの内容を削除する（Ｓ１９２）。
【０１７７】
図２８は、シングルインスタンス処理を行うためのコンピュータプログラムの一部である、抽出プログラムＰ１０５の動作を示すフローチャートである。
【０１７８】
抽出プログラムＰ１０５は、ファイルシステムで管理されている各ファイルについて、受付プログラムＰ１０４にリード要求を発行する（Ｓ２００）。抽出プログラムＰ１０５は、最終アクセス日時ＬＴ（ｉノード管理テーブルＴ１０の欄Ｃ１０４に記載の値）が所定のアクセス日時閾値ＴｈＬＴよりも古いファイルを全て選択する（Ｓ２００）。抽出プログラムＰ１０５は、選択したファイルの名称をシングルインスタンス対象リストＴ１１に追加する（Ｓ２００）。
【０１７９】
図２９は、抽出プログラムＰ１０５と共にシングルインスタンス処理を実行するコンピュータプログラムの一部である、重複検出プログラムＰ１０６の動作を示すフローチャートである。
【０１８０】
重複検出プログラムＰ１０６は、シングルインスタンス対象リストＴ１１から、対象ファイル名を取得する（Ｓ２１０）。重複検出プログラムＰ１０６は、重複排除プログラム（図３０）を呼び出して、対象ファイルのシングルインスタンス化（クローンファイル化）を実行させる（Ｓ２１１）。重複検出プログラムＰ１０６は、リストＴ１１に記載の全てのファイルについてシングルインスタンス処理を適用するまで（Ｓ２１２）、ステップＳ２１０、Ｓ２１１を実行する。
【０１８１】
図３０は、重複排除プログラムの動作を示すフローチャートである。重複検出プログラムは、インデックスディレクトリ下にあるサブディレクトリ（図９）のうち、対象ファイルのサイズに対応するサブディレクトリを検索する（Ｓ２２０）。
【０１８２】
重複排除プログラムは、対象ファイルとサブディレクトリ内のクローン元ファイルとを比較し（Ｓ２２１）、対象ファイルに一致するクローン元ファイルが有るか判定する（Ｓ２２２）。
【０１８３】
検索対象のサブディレクトリ内に、対象ファイルに一致する既存のクローン元ファイルが無い場合（Ｓ２２２：ＮＯ）、重複排除プログラムは、新たなクローン元ファイルを追加する（Ｓ２２３）。
【０１８４】
つまり、重複排除プログラムは、対象ファイルを新たなクローン元ファイルとして、検索対象サブディレクトリに追加する。重複排除プログラムは、新たに作成したクローン元ファイルの参照カウントＣ１０６Ｅに「０」を設定する（Ｓ２２４）。
【０１８５】
重複排除プログラムは、クローン元ファイルのｉノード番号を、対象ファイルの参照先ｉノード番号Ｃ１０６Ａに設定する（Ｓ２２５）。重複排除プログラムは、対象ファイルのデータを削除し（Ｓ２２６）、クローン元ファイルの参照カウントＣ１０６Ｅの値を１つ増加させる（Ｓ２２７）。
【０１８６】
このように構成される本実施例によれば、ファイルストレージ装置１０の記憶領域（ファイルシステムの領域）を効率的に使用することができる。このため、より多くのファイルをファイルストレージ装置１０に格納することができ、アクセス時の応答性が高まり、さらに、ユーザの使い勝手が向上する。
【０１８７】
本実施例では、クローン元ファイルはレプリケーション処理の対象外となっているため、レプリケーション処理の実行を前提とするスタブ化処理もクローン元ファイルには適用されない。従って、ユーザから直接アクセスされないクローン元ファイルが、見かけ上の使用頻度が少ないことを理由にスタブ化ファイルに変換されてしまうのを未然に防止することができる。この結果、クローン元ファイルを参照するクローンファイルの応答性能を維持することができる。
【０１８８】
本実施例では、ファイルのコピー要求を受けた場合に、コピーファイルをクローンファイルとして作成する。このため、ファイルデータをコピーする必要がなく、ファイルストレージ装置１０の記憶領域を有効に使用できる。
【０１８９】
本実施例では、ファイルのコピー要求を受けた場合に、コピー対象のファイルに一致するクローン元ファイルが存在しない場合は、コピー対象ファイルに一致するクローン元ファイルを新たに作成し、コピー対象ファイルをクローンファイルに変換する。従って、速やかにシングルインスタンス処理を適用することができ、重複データの存在時間を短くして、ファイルストレージ装置１０の記憶領域を有効に利用できる。即ち、通常の周期でシングルインスタンス処理が実行されるよりも前に、ファイルコピーの時点で、重複データを直ちに排除することができる。
【０１９０】
本実施例では、クローン元ファイルを参照するクローンファイルが作成されるたびに、クローン元ファイルの参照カウントＣ１０６Ｅの値を１つずつ増加させる。そして、本実施例では、クローンファイルが削除されたり、スタブ化ファイルに変換されたりするたびに、参照カウントＣ１０６Ｅの値を１つずつ減少させ、参照カウントＣ１０６Ｅの値が０になったら、クローン元ファイルを削除する。従って、クローン元ファイルを参照しているクローンファイルが存在する限りは、クローン元ファイルを存続させることができ、クローンファイルの応答性能を維持できる。さらに、クローン元ファイルを参照するクローンファイルが一つも存在しなくなった場合は、クローン元ファイルを削除するため、ファイルストレージ装置１０の記憶領域を有効に使用することができる。
【０１９１】
本実施例では、クローンファイルは、クローンファイルの固有のデータ（差分データ）とクローン元ファイルのデータのうち参照していたデータとの両方を保持した状態で、アーカイブ装置２０に記憶される。つまり、アーカイブ装置２０に格納されるクローンファイルは、全てのデータを保持している。従って、万が一、ファイルストレージ装置１０に記憶されているクローンファイルまたはクローン元ファイルのいずれかが損傷した場合でも、アーカイブ装置２０から完全なクローンファイルをファイルストレージ装置１０に書き戻すことができる。
【０１９２】
本実施例では、ユーザから見えない特別なディレクトリ（インデックスディレクトリ）内にクローン元ファイルを格納する。このため、ユーザの誤操作からクローン元ファイルを保護して、階層化ストレージシステムの信頼性を高めることができる。
【０１９３】
本実施例では、インデックスディレクトリ内に、ファイルサイズのランク毎にサブディレクトリを設け、対応するファイルサイズのサブディレクトリ内で、クローン元ファイルを管理する。従って、対象ファイルのサイズを基に、クローン元ファイルの検索範囲を絞り込むことができ、対象ファイルに一致するクローン元ファイルを高速に検索することができる。
【実施例２】
【０１９４】
図３１〜図３８を参照して第２実施例を説明する。本実施例は、第１実施例の変形例に該当する。従って、第１実施例との相違を中心に説明する。本実施例では、アーカイブ装置２０側でも、クローン元ファイルをレプリケーション処理及びスタブ化処理の対象とする。本実施例では、クローン元ファイルの最終アクセス日時を適切に評価して、参照されているクローン元ファイルがスタブ化ファイルに変換されるのを防止する。
【０１９５】
図３１は、本実施例のレプリケーション処理で転送されるデータを示す。図３１（ａ）は、クローン元ファイル及び通常ファイルの場合を示す。クローン元ファイル及び通常ファイル（非クローンファイル）の複製をアーカイブ装置２０に作成する場合、ファイルストレージ装置１０からアーカイブ装置２０にファイルデータの全てを転送する。
【０１９６】
これに対し、クローンファイルの場合は、図３１（ｂ）に示すように、クローンファイルに固有のデータ（クローン元ファイルとの差分データ）のみを、ファイルストレージ装置１０からアーカイブ装置２０に転送する。
【０１９７】
アーカイブ装置２０では、ファイルストレージ装置１０と同様に、複製されたクローンファイルは、複製されたクローン元ファイルが有するデータの一部または全部を参照している。
【０１９８】
第１実施例では、クローンファイルは、全てのデータを保持した状態でアーカイブ装置２０に転送される。従って、重複したデータ転送が行われることになり、通信ネットワークが混在するばかりか、アーカイブ装置２０の記憶領域も無駄に使用される。
【０１９９】
これに対し、本実施例では、図３１に示すように、クローンファイルは、差分データのみがファイルストレージ装置１０からアーカイブ装置２０に転送される。このため、本実施例では、重複したデータ転送が行われるのを抑制することができ、アーカイブ装置２０の記憶領域を効率的に使用することができる。
【０２００】
しかし、本実施例では、クローン元ファイルもレプリケーション処理の対象とするため、クローンファイルよりも先にクローン元ファイルがスタブ化ファイルに変換されてしまう可能性がある。上述の通り、クローン元ファイルは基準となるファイルであり、誤操作による破壊または消去から保護すべく、特別なディレクトリで管理されている。
【０２０１】
従って、クローン元ファイルを参照するクローンファイルが頻繁に使用されても、参照されているデータを保持するクローン元ファイルの使用頻度に影響を与えない。その結果、参照されているクローン元ファイルが参照しているクローンファイルよりも先にスタブ化ファイルに変換されてしまう。スタブ化されたクローン元ファイルを参照する場合は、リコール処理を行う必要があるため、クローンファイルの応答性能は低下し、ユーザの使い勝手が悪化する。
【０２０２】
そこで、本実施例では、クローンファイルの最終アクセス日時に基づいて、クローン元ファイルの最終アクセス日時を算出する。クローンファイルの最終アクセス日時に基づいて、クローン元ファイルの最終アクセス日時を算出する方法としては、例えば、以下の方法が考えられる。
【０２０３】
第１の方法は、同一のクローン元ファイルを参照する複数のクローンファイルがそれぞれ有する最終アクセス日時のうち、最も新しい最終アクセス日時を、クローン元ファイルの最終アクセス日時として使用する方法である。
【０２０４】
第２の方法は、同一のクローン元ファイルを参照する複数のクローンファイルがそれぞれ有する最終アクセス日時の平均値を、重み付けして、または、重み付けすることなく、算出する方法である。
【０２０５】
上記２つの方法の優劣を検討する。第１の方法の場合、複数のクローンファイルの中で最も新しい最終アクセス日時を有するクローンファイルが、形式的にクローン元ファイルを参照しているに過ぎず、実際にはクローン元ファイルとの間に共通するデータを持たない場合があり得る。クローン元ファイルと実質的に無関係なクローンファイルの最終アクセス日時によって、クローン元ファイルの最終アクセス日時を決定するのは、適切ではなく、好ましくないと考えられる。
【０２０６】
さらに、第１の方法の場合、例えば、複数のクローンファイルのうち大多数のクローンファイルの最終アクセス日時が古いのにもかかわらず、一つのクローンファイルの最終アクセス日時だけが新しい場合に、その一つだけ新しい最終アクセス日時を採用するのは、実態とかけ離れている可能性がある。多くのクローンファイルは殆ど使用されていないのに、ただ一つのクローンファイルだけが使用されているということは、多数決的な観点では、クローン元ファイルの役割は終わったと見るべきである。
【０２０７】
従って、本実施例では、第２の方法を採用し、複数のクローンファイルのそれぞれ有する最終アクセス日時の平均値を算出して、その平均値をクローン元ファイルの最終アクセス日時として設定する。但し、特許請求の範囲から除かれない限り、第１の方法も本発明の範囲に含まれる。
【０２０８】
図３２は、クローン元ファイルの最終アクセス日時を算出する方法（第２の方法）を示す説明図である。
【０２０９】
図３２には、クローン元ファイルを参照する３つのクローンファイルＣＦ１、ＣＦ２、ＣＦ３が示されている。クローンファイルＣＦ１のデータは、クローン元ファイルのデータと完全に一致する。クローンファイルＣＦ２のデータは、クローン元ファイルのデータと多くが一致し、一部が異なる。クローンファイルＣＦ３のデータは、クローン元ファイルのデータと全く一致しない。
【０２１０】
この場合、クローンファイルの最終アクセス日時の平均値ＡＬＴは、クローンファイルＣＦ１の最終アクセス日時ＬＴ１と、クローンファイルＣＦ２の最終アクセス日時ＬＴ２とから算出する（ＡＬＴ＝（ＬＴ１＋Ｌｔ２）。その平均値ＡＬＴがクローン元ファイルの最終アクセス日時Ｃ１０４に設定される。
【０２１１】
ここで、平均値ＡＬＴの算出に際して、クローン元ファイルとデータが全く共通しないクローンファイルＣＦ３の最終アクセス日時ＬＴ３を除外するのは、クローン元ファイルと無関係のクローンファイルを排除して、より実態に近い最終アクセス日時を算出するためである。
【０２１２】
データの全く共通しないクローンファイルを除外するということは、換言すれば、データの共通する程度に応じてクローンファイルに重み付けし、最終アクセス日時の平均値を算出するということである。
【０２１３】
即ち、データの共通するクローンファイルＣＦ１、ＣＦ２の最終アクセス日時ＬＴ１、ＬＴ２には係数Ｗ１（例えば１）をかけて使用し、データが共通しないクローンファイルＣＦ３の最終アクセス日時ＬＴ３には係数Ｗ２（例えば０）をかけて使用する。これにより、最終アクセス日時の平均値ＡＬＴを、ＡＬＴ＝（ＬＴ１×Ｗ１＋ＬＴ２×Ｗ１＋ＬＴ３×Ｗ２）／３）として求めることができる。重み係数Ｗ１は０以上の値であれば、１以外の値に設定してもよい。重み係数Ｗ２は、Ｗ１より小さい値であれば、０以上の値に設定してもよい。クローン元ファイルのデータを参照する割合に応じて、重み係数Ｗの値を設定してもよい。但し、平均値ＡＬＴが、各クローンファイルの最終アクセス日時ＬＴとかけ離れないように、最終的に調整する必要がある。
【０２１４】
図３３は、最終アクセス日時を取得するためのプログラムの動作を示すフローチャートである。最終アクセス日時取得プログラム（以下、ＬＴ取得プログラム）は、受付プログラムＰ１０４により呼び出される。最終アクセス日時を必要とする処理を実行する場合に、ＬＴ取得プログラムが起動される。
【０２１５】
まず最初に、ＬＴ取得プログラムは、対象ファイルがクローン元ファイルであるか判定する（Ｓ３００）。クローン元ファイルの場合（Ｓ３００：ＹＥＳ）、ＬＴ取得プログラムは、図３２で述べたように、クローン元ファイルを参照するクローンファイルから最終アクセス日時を取得して、それらの平均値を算出する（Ｓ３０１）。ＬＴ取得プログラムは、算出した平均値をクローン元ファイルの最終アクセス日時として、要求元である受付プログラムＰ１０４に返して（Ｓ３０２）、本処理を終了する。
【０２１６】
対象ファイルがクローン元ファイルではない場合（Ｓ３００：ＮＯ）、ＬＴ取得プログラムは、ｉノード管理テーブルＴ１０の最終アクセス日時Ｃ１０４から値を取得する（Ｓ３０３）。ＬＴ取得プログラムは、取得した最終アクセス日時を受付プログラムＰ１０４に返して（Ｓ３０２）、本処理を終了する。
【０２１７】
図３４は、受付プログラムＰ１０４により実行される、リード要求処理及びライト要求処理を示すフローチャートである。
【０２１８】
受付プログラムＰ１０４は、ホスト１２からの処理要求を受領すると、対象ファイルのスタブ化フラグにＯＮが設定されているか判定する（Ｓ３１０）。スタブ化フラグがＯＦＦに設定されている場合（Ｓ３１０：ＮＯ）、図２１で述べた処理に移る。
【０２１９】
スタブ化フラグがＯＮに設定されている場合（Ｓ３１０：ＹＥＳ）、受付プログラムＰ１０４は、対象ファイルがクローンファイルであるか判定する（Ｓ３１１）。対象ファイルがクローンファイルの場合（Ｓ３１１：ＹＥＳ）、図３５の処理に移る。対象ファイルがクローンファイルではない場合（Ｓ３１１：ＮＯ）、図３６の処理に移る。
【０２２０】
図３５は、対象ファイルがクローンファイルの場合の処理である。図３５に示す処理は、図２０に示す処理のうちステップＳ１０１、Ｓ１０２、Ｓ１０３、Ｓ１０５、Ｓ１０７、Ｓ１０８及びＳ１０９を備えており、ステップＳ１０４及びＳ１０６を備えていない。
【０２２１】
本実施例では、クローン元ファイルもスタブ化ファイルに変換される可能性があるため、図３５に示す処理では、ステップＳ１０４に代えて新ステップＳ３１２及びＳ３１３を実行し、ステップＳ１０６に代えて新ステップＳ３１４及びＳ３１５を実行する。
【０２２２】
リード要求の場合（Ｓ１０１：ｒｅａｄ）、受付プログラムＰ１０４は、対象ファイルのブロックアドレスが有効であるか判定する（Ｓ１０２）。
ブロックアドレスが有効ではない場合（Ｓ１０２：ＮＯ）、受付プログラムＰ１０４は、対象ファイルであるクローンファイルの参照しているクローン元ファイルのデータについてリコールを要求する（Ｓ３１２）。さらに、受付プログラムＰ１０４は、対象ファイルであるクローンファイルのデータについてリコールを要求し、クローン元ファイルのデータとクローンファイルのデータをマージした結果を、要求元に返す（Ｓ３１３）。
【０２２３】
一方、ライト要求の場合（Ｓ１０１：ｗｒｉｔｅ）、受付プログラムＰ１０４は、対象ファイルであるクローンファイルが参照しているクローン元ファイルのデータについてリコールを要求する（Ｓ３１４）。さらに、受付プログラムＰ１０４は、対象ファイルであるクローンファイルのデータについてリコールを要求する（Ｓ３１５）。その後、受付プログラムＰ１０４は、対象ファイルであるクローンファイルのデータにライトデータを上書きする（Ｓ１０７）。
【０２２４】
図３６は、図３４の処理において対象ファイルがクローンファイルではない場合の処理を示すフローチャートである。本処理は、図２０で述べたステップＳ１０１〜Ｓ１０９のみを含むため、説明を省略する。
【０２２５】
図３７は、レプリケーション処理またはファイル同期処理のために、ファイルストレージ装置１０からアーカイブ装置２０に転送するためのデータを読み出す処理を示すフローチャートである。
【０２２６】
最初に、受付プログラムＰ１０４は、対象ファイルがクローンファイルであるか判定する（Ｓ３２０）。対象ファイルがクローンファイルではない場合（Ｓ３２０：ＮＯ）、受付プログラムＰ１０４は、ｉノード管理テーブルＴ１０のブロックアドレスに従ってデータを取得し、要求元に返す（Ｓ３２１）。受付プログラムＰ１０４は、対象ファイルの最終アクセス日時Ｃ１０４を更新し（Ｓ３２２）、本処理を終了する。
【０２２７】
対象ファイルがクローンファイルの場合（Ｓ３２０：ＹＥＳ）、受付プログラムＰ１０４は、ｉノード管理テーブルＴ１０のブロックアドレスに従って、クローンファイルに固有のデータ（差分データ）を取得し、そのデータを要求元に返す（Ｓ３２３）。
【０２２８】
図３８は、受付プログラムＰ１０４により実行されるファイルコピー処理を示すフローチャートである。本処理は、図２２で述べた処理と比較して、ステップＳ１３３に代えて新ステップＳ３３０を備えている。
【０２２９】
コピー対象ファイルのブロックアドレスが有効ではない場合（Ｓ１３１：ＮＯ）、受付プログラムＰ１０４は、クローン元ファイル及びクローンファイルについてリコールを要求し、ファイルデータ及びメタデータを取得する（Ｓ３３０）。
【０２３０】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例では、クローン元ファイルもレプリケーション処理の対象とし、アーカイブ装置２０側でもシングルインスタンスの関係を維持する。従って、本実施例では、クローンファイルに固有のデータのみをアーカイブ装置２０に転送すればよく、ファイルストレージ装置１０からアーカイブ装置２０へのデータ転送サイズを小さくできる。また、アーカイブ装置２０の記憶領域も効率的に使用できる。
【０２３１】
本実施例では、クローン元ファイルの最終アクセス日時を、クローンファイルの最終アクセス日時に基づいて算出する（例えば、平均値を求める）。従って、クローンファイルに参照されているクローン元ファイルがクローンファイルよりも先にスタブ化ファイルに変換されるのを抑制することができる。このため、クローンファイルの応答性能の低下を防止できる。
【実施例３】
【０２３２】
図３９は、第３実施例のデータムーバープログラムＰ１０１の動作のうち、スタブ化処理の動作を示すフローチャートである。
【０２３３】
データムーバープログラムＰ１０１は、ファイルシステムの空き容量ＲＳをチェックし（Ｓ３４０）、所定の閾値ＴｈＲＳよりも小さいか判定する（Ｓ３４１）。空き容量ＲＳが閾値ＴｈＲＳ以上の場合（Ｓ３４１：ＮＯ）、本処理を終了する。
【０２３４】
空き容量ＲＳが閾値ＴｈＲＳよりも小さい場合（Ｓ３４１：ＹＥＳ）、データムーバープログラムＰ１０１は、受付プログラムＰ１０４に対してリード要求を発行し、各ファイルの最終アクセス日時等を取得する（Ｓ３４２）。データムーバープログラムＰ１０１は、シングルインスタンス化されていないファイル（非クローンファイル）のうち、最終アクセス日時が所定の閾値よりも古いファイルを選択する（Ｓ３４２）。
【０２３５】
データムーバープログラムＰ１０１は、ステップＳ３４２で選択したファイルのデータを削除し、そのファイルのスタブ化フラグＣ１０６ＣをＯＮに設定し、さらに、そのファイルのレプリケーション済フラグＣ１０６ＢをＯＦＦに設定する（Ｓ３４３）。
【０２３６】
データムーバープログラムＰ１０１は、ファイルシステムの空き容量ＲＳを再び確認し、空き容量ＲＳが閾値ＴｈＲＳ以上になったか判定する（Ｓ３４４）。空き容量ＲＳが閾値ＴｈＲＳ以上になった場合（Ｓ３４４：ＹＥＳ）、本処理を終了する。
【０２３７】
非クローンファイルをスタブ化ファイルに変換しても空き容量ＲＳが閾値ＴｈＲＳ以上にならない場合（Ｓ３４４：ＮＯ）、データムーバープログラムＰ１０１は、シングルインスタンス化されたファイル（クローンファイル）を選択して、スタブ化ファイルに変換する（Ｓ３４５）。
【０２３８】
データムーバープログラムＰ１０１は、空き容量ＲＳが閾値ＴｈＲＳ以上になるまで、クローンファイルの中から、シングルインスタンス化された期間ＳＩＴが所定の閾値ＴｈＳＩＴよりも短いクローンファイルを選択する（Ｓ３４５）。データムーバープログラムＰ１０１は、選択したファイルのデータを削除し、そのファイルのスタブ化フラグをＯＮに設定する（Ｓ３４５）。さらに、データムーバープログラムＰ１０１は、クローン元ファイルの参照カウントＣ１０６Ｅの値を１つ減少させる（Ｓ３４５）。
【０２３９】
このように構成される本実施例は、第１実施例または第２実施例のいずれとも結合させることができ、第１実施例または第２実施例と同様の効果を奏する。
【０２４０】
本実施例では、スタブ化処理を実行するに際して、まず最初に、非クローンファイルをスタブ化ファイルに変換し（Ｓ３４２、Ｓ３４３）、それでも足りない場合に、クローンファイルをスタブ化ファイルに変換する（Ｓ３４５）。さらに、本実施例では、クローンファイルのうち、クローンファイルでいる期間（シングルインスタンス化された期間）の短いクローンファイルから、スタブ化処理を実施する。
【０２４１】
スタブ化ファイルの候補には、以下の２つの種類が含まれている。第１の種類は、ファイル作成の時点からシングルインスタンス化されたものである。つまり、ファイル作成時に、ユーザの明示の指示で、クローンファイルに変換されたファイルである。第２の種類は、シングルインスタンス処理の周期的な実施によって、最近クローンファイルに変換されたばかりのものである。
【０２４２】
第１の種類のクローンファイルは、ファイル作成時からクローンファイルであるため、比較的長期間にわたって記憶容量の削減に貢献している。これに対し、第２の種類のクローンファイルは、最近クローンファイルに変換されたものでり、記憶容量の削減に対する貢献は少ない。
【０２４３】
そこで、本実施例では、第１の種類のクローンファイルをできるだけファイルストレージ装置１０に残して、ユーザの使い勝手を向上する。そのために、非クローンファイルから先にスタブ化ファイルに変換した後で、第２の種類のクローンファイルをスタブ化ファイルに変換する。
【０２４４】
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、上述された本発明の技術的特徴は、適宜結合させて実施することができる。
【０２４５】
本発明は、例えば、以下のように、管理装置を制御するコンピュータプログラムの発明として表現することもできる。
【０２４６】
表現１．
第１ファイル管理装置と第２ファイル管理装置とでファイルを階層化して管理する階層化ストレージシステムを管理するコンピュータを管理装置として機能させるためのコンピュータプログラムであって、
前記第１ファイル管理装置内の所定ファイルの複製を前記第２ファイル管理装置に作成するレプリケーション処理部と、
予め設定される第１所定条件に従って、前記第１ファイル管理装置内の他の所定ファイルを重複データの排除対象として選択し、選択された前記他の所定ファイルを所定の基準ファイルのデータを参照する参照元ファイルに変換することで、重複データを排除する重複排除処理部と、
前記第１ファイル管理装置内の前記所定ファイルのデータを削除し、かつ、前記第２ファイル管理装置に作成された前記所定ファイルの複製にのみデータを残すというスタブ化処理の対象となるスタブ化候補ファイルを、予め設定される第２所定条件に従って抽出し、さらに、予め設定される第３所定条件に従って、前記スタブ化候補ファイルを前記スタブ化処理するスタブ化処理部と、
を前記コンピュータ上にそれぞれ実現させる、コンピュータプログラム。
【０２４７】
表現２．
前記第１ファイル管理装置内においてコピー元ファイルの複製作成が要求された場合、前記コピー元ファイルの複製を前記参照元ファイルとして作成するファイルアクセス受付部をさらに備える、表現１に記載のコンピュータプログラム。
【０２４８】
表現３．
前記第１ファイル管理装置は、ユーザ端末が直接的にアクセスできるファイル管理装置として構成されており、
前記第２ファイル管理装置は、前記ユーザ端末が直接的にはアクセスできないファイル管理装置として構成されている、
表現１または２のいずれかに記載のコンピュータプログラム。
【０２４９】
表現４．
前記第１所定条件は、前記第１ファイル管理装置内のファイルのうち最終アクセス日時が予め設定される所定の時間閾値よりも古いファイルを前記他の所定ファイルとして選択すること、である、
表現１〜３のいずれかに記載のコンピュータプログラム。
【０２５０】
表現５．
前記第２所定条件は、前記第１ファイル管理装置内の空き容量が所定の空き容量閾値を下回った場合に、前記スタブ化候補を抽出することである、
表現１〜４のいずれかに記載のコンピュータプログラム。
【０２５１】
表現６．
前記第３所定条件は、前記空き容量が前記所定の空き容量閾値以上となるまで、前記スタブ化候補ファイルのうち最終アクセス日時が古い順に選択すること、である、
表現１〜５のいずれかに記載のコンピュータプログラム。
【０２５２】
表現７．
前記参照元ファイルが前記所定の基準ファイルのｉノード番号を保持することで、前記参照元ファイルの参照先として前記所定の基準ファイルが対応付けられる、
表現１〜６のいずれかに記載のコンピュータプログラム。
【０２５３】
表現８．
前記所定の基準ファイルを参照先とする前記参照元ファイルの数を示す参照数を前記所定の基準ファイルは保持しており、
前記参照元ファイルが削除される度に、または、前記参照元ファイルについて前記スタブ化処理が実施される度に、前記参照数が減少するようになっており、
前記ファイルアクセス受付部は、前記参照数が０になった場合に、前記所定の基準ファイルを削除可能である、
表現１〜７のいずれかに記載のコンピュータプログラム。
【０２５４】
表現９．
前記所定の基準ファイルは前記所定ファイルとして選択されず、前記所定の基準ファイルを参照する前記参照元ファイルが前記所定ファイルとして選択されて、前記レプリケーション処理部及び前記スタブ化処理部の処理対象となる、
表現１〜８のいずれかに記載のコンピュータプログラム。
【０２５５】
表現１０．
前記所定ファイルとして選択される前記参照元ファイルは、前記所定の基準ファイルの有するデータのうち参照する必要のあった全てのデータを保持した状態で、前記第２ファイル管理装置に送信される、
表現９に記載のコンピュータプログラム。
【０２５６】
表現１１．
前記所定の基準ファイルは、前記第１ファイル管理装置に設けられる所定ディレクトリ下に存在する、ファイルサイズのランク毎に予め用意された複数のサブディレクトリのうち、前記所定の基準ファイルのサイズに対応するサブディレクトリで管理される、
表現１〜１０のいずれかに記載のコンピュータプログラム。
【符号の説明】
【０２５７】
１：エッジ側ファイル管理装置、２：コア側ファイル管理装置、３：管理装置、１０：ファイルストレージ装置、１２：ホストコンピュータ、１３：ＲＡＩＤシステム、２０：アーカイブ装置、２１：ＲＡＩＤシステム
【図１】
0005873187.tif 000002
【図２】
0005873187.tif 000003
【図３】
0005873187.tif 000004
【図４】
0005873187.tif 000005
【図５】
0005873187.tif 000006
【図６】
0005873187.tif 000007
【図７】
0005873187.tif 000008
【図８】
0005873187.tif 000009
【図９】
0005873187.tif 000010
【図１０】
0005873187.tif 000011
【図１１】
0005873187.tif 000012
【図１２】
0005873187.tif 000013
【図１３】
0005873187.tif 000014
【図１４】
0005873187.tif 000015
【図１５】
0005873187.tif 000016
【図１６】
0005873187.tif 000017
【図１７】
0005873187.tif 000018
【図１８】
0005873187.tif 000019
【図１９】
0005873187.tif 000020
【図２０】
0005873187.tif 000021
【図２１】
0005873187.tif 000022
【図２２】
0005873187.tif 000023
【図２３】
0005873187.tif 000024
【図２４】
0005873187.tif 000025
【図２５】
0005873187.tif 000026
【図２６】
0005873187.tif 000027
【図２７】
0005873187.tif 000028
【図２８】
0005873187.tif 000029
【図２９】
0005873187.tif 000030
【図３０】
0005873187.tif 000031
【図３１】
0005873187.tif 000032
【図３２】
0005873187.tif 000033
【図３３】
0005873187.tif 000034
【図３４】
0005873187.tif 000035
【図３５】
0005873187.tif 000036
【図３６】
0005873187.tif 000037
【図３７】
0005873187.tif 000038
【図３８】
0005873187.tif 000039
【図３９】
0005873187.tif 000040