(57)【特許請求の範囲】
【請求項１】
第1の計算機と第２の計算機を有する計算機システムであって、
前記第１の計算機は、上位装置から送受信されるファイルを格納する第１の記憶領域を有し、
前記第２の計算機は、前記第１の計算機から移行されるファイルを格納する第２の記憶領域を有し、
前記第１の計算機は、前記上位装置からのアクセス状況に応じて、前記第１の記憶領域に格納された第１のファイルを前記第２の計算機に移行し、
前記第２の計算機は、移行された前記第１のファイルと他のファイルとが重複するか否かを判定して重複ファイル情報を作成し、
前記第２の計算機は、前記重複ファイル情報を前記第１の計算機に送信し、
前記第１の計算機は、前記上位装置から前記第１のファイルに対するリード要求を受信した場合、受信した前記重複ファイル情報に基づいて、前記第１のファイルと重複する第２のファイルが前記第１の記憶領域に格納されている否かを判定し、格納されていると判定した場合、当該第２のファイルを用いて前記上位装置に応答することを特徴とする、計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記第１の計算機は、前記上位装置からのアクセス状況に応じて、前記第１の記憶領域に格納された前記第１のファイル及び前記第２のファイルを前記第２の計算機に移行する際、前記第１及び前記第２のファイルにそれぞれ対応する第１及び第２のファイル識別子を付与し、
前記第２の計算機は、移行された前記第１及び第２のファイルを受信し、前記第１及び第２のファイルが重複することを示す前記重複ファイル情報を作成し、
前記第１の計算機は、前記上位装置から前記第２のファイルに対するリード要求を受信した場合、前記第２の計算機に対して、前記第２の計算機から前記第２のファイルを転送するよう要求する指示を送信し、
前記第２の計算機は、前記第２のファイル及び前記重複ファイル情報を前記第１の計算機に送信し、
前記第１の計算機は、受信した前記第２のファイルを前記第２のファイル識別子に対応するファイルとして前記第１の記憶領域に格納し、前記上位装置に送信し、
前記第１の計算機は、前記重複ファイル情報に基づいて、前記第１のファイル識別子を第２のファイル識別子と対応付けて管理し、
前記第１の計算機は、前記上位装置から前記第１のファイルに対するリード要求を受信した場合、前記重複ファイル情報及び前記第１及び第２のファイル識別子に基づいて、前記第１のファイルと重複する第２のファイルが前記第１の記憶領域に格納されていることを判定することを特徴とする、計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記重複ファイル情報は、前記第１及び第２のファイル識別子と、前記第１及び第２のファイルを含むグループに対応する識別子とを含むことを特徴とする、計算機システム。
【請求項４】
請求項２に記載の計算機システムであって、
前記重複ファイル情報は、前記第１及び第２のファイル識別子と、前記第１及び第２のファイルのデータに対応する識別子とを含むことを特徴とする、計算機システム。
【請求項５】
請求項１に記載の計算機システムであって、
前記第１の計算機は、前記重複ファイル情報に基づいて、前記第１のファイルと重複する前記第２のファイルが前記第１の記憶領域に格納されていることを判定した場合、前記第２の計算機に対して、前記第２の計算機から前記第１のファイルを転送するよう要求する指示を抑止することを特徴とする、計算機システム。
【請求項６】
請求項１に記載の計算機システムであって、
前記第１の計算機は、前記重複ファイル情報に基づいて、前記第１のファイルと重複する前記第２のファイルが前記第１の記憶領域に格納されていないことを判定した場合、前記第２の計算機に対して、前記第２の計算機から前記第１のファイルを転送するよう要求する指示を送信し、前記第２の計算機から受信した前記第１のファイルを前記上位装置に送信することを特徴とする、計算機システム。
【請求項７】
請求項１に記載の計算機システムであって、
前記第１の計算機は、前記重複ファイル情報に基づいて、前記第１のファイルと重複する前記第２のファイルが前記第１の記憶領域に格納されていることを判定した場合、前記第２のファイルのデータを複製して前記第１のファイルを復元し、復元した前記第１のファイルを前記上位装置に送信することを特徴とする、計算機システム。
【請求項８】
請求項１に記載の計算機システムであって、
前記第２の計算機は、所定の契機で前記重複ファイル情報を前記第１の計算機に送信することを特徴とする、計算機システム。
【請求項９】
請求項１に記載の計算機システムであって、
前記第２の計算機は、前記第１の計算機から要求される場合、前記重複ファイル情報を前記第１の計算機に送信することを特徴とする、計算機システム。
【請求項１０】
請求項１に記載の計算機システムであって、
前記第１の記憶領域を構成する第１の物理記憶媒体は、前記第２の記憶領域を構成する第２の物理記憶媒体よりアクセス性能が高いことを特徴とする、計算機システム。  
【請求項１１】
請求項２に記載の計算機システムであって、
前記第１及び第２の計算機に接続される管理計算機を有し、
前記第１の計算機は、前記上位装置からアクセス要求を受けたファイルのうち、前記第２の計算機から受信して応答したファイルの容量情報として前記第２のファイルの容量を管理し、前記第２の計算機から受信することなく前記第１の記憶領域に格納されたファイルを用いて応答したファイルの容量情報として前記第１のファイルの容量を管理し、
前記第１の計算機は、前記管理計算機に対して、前記第２の計算機から転送されたファイルの容量情報及び前記第２の計算機から受信することなく前記第１の記憶領域に格納されたファイルを用いて応答したファイルの容量情報を前記管理計算機に送信することを特徴とする、計算機システム。  
【請求項１２】
上位装置及び他のファイル制御装置と接続されるファイル制御装置であって、
前記上位装置から送受信されるファイルを格納する記憶領域を構成する記憶装置と接続され、
前記上位装置から前記記憶領域に対するアクセス要求を制御するプロセッサと、
前記プロセッサにより実行されるプログラムを格納するメモリとを有し、
前記プロセッサは、前記上位装置からのアクセス状況に応じて、前記記憶領域に格納された第１のファイルを前記他のファイル制御装置に移行し、
前記プロセッサは、前記他のファイルサーバによって作成された、移行された前記第１のファイルと他のファイルとが重複するか否かを判定する重複ファイル情報を受信し、    前記プロセッサは、前記上位装置から前記第１のファイルに対するリード要求を受信した場合、受信した前記重複ファイル情報に基づいて、前記第１のファイルと重複する第２のファイルが前記記憶領域に格納されている否かを判定し、格納されていると判定した場合、当該第２のファイルを用いて前記上位装置に応答することを特徴とする、ファイル制御装置。
【請求項１３】
請求項１２に記載のファイル制御装置であって、
前記プロセッサは、前記上位装置からのアクセス状況に応じて、前記記憶領域に格納された前記第１のファイル及び前記第２のファイルを前記第２の計算機に移行する際、前記第１及び前記第２のファイルにそれぞれ対応する第１及び第２のファイル識別子を付与し、前記メモリに管理情報を記憶し、
他のファイル制御装置において、移行された前記第１及び第２のファイルに対して、前記第１及び第２のファイルが重複することを示す前記重複ファイル情報が作成された場合、
前記プロセッサは、前記上位装置から前記第２のファイルに対するリード要求を受信した場合、前記他のファイル制御装置に対して、前記他のファイル制御装置から前記第２のファイルを転送するよう要求する指示を送信し、
前記プロセッサは、前記他のファイル制御装置から、前記第２のファイル及び前記重複ファイル情報を受信し、
前記プロセッサは、受信した前記第２のファイルを前記第２のファイル識別子に対応するファイルとして前記記憶領域に格納し、前記上位装置に送信し、
前記プロセッサは、前記重複ファイル情報に基づいて、前記メモリに格納された前記第１のファイル識別子を第２のファイル識別子とを対応付けて前記管理情報を更新し、
前記プロセッサは、前記上位装置から前記第１のファイルに対するリード要求を受信した場合、前記重複ファイル情報及び前記第１及び第２のファイル識別子に基づいて、前記第１のファイルと重複する第２のファイルが前記記憶領域に格納されていることを判定することを特徴とする、ファイル制御装置。
【請求項１４】
請求項１３に記載のファイル制御装置であって、
前記重複ファイル情報は、前記第１及び第２のファイル識別子と、前記第１及び第２のファイルのデータに対応する識別子とを含むことを特徴とする、ファイル制御装置。
【請求項１５】
請求項１２に記載のファイル制御装置であって、
前記プロセッサは、前記重複ファイル情報に基づいて、前記第１のファイルと重複する前記第２のファイルが前記記憶領域に格納されていることを判定した場合、前記他のファイル制御装置に対して、前記他のファイル制御装置から前記第１のファイルを転送するよう要求する指示を抑止することを特徴とする、ファイル制御装置。
【請求項１６】
請求項１２に記載のファイル制御装置であって、
前記プロセッサは、前記重複ファイル情報に基づいて、前記第１のファイルと重複する前記第２のファイルが前記記憶領域に格納されていないことを判定した場合、前記他のファイル制御装置に対して、前記他のファイル制御装置から前記第１のファイルを転送するよう要求する指示を送信し、前記他のファイル制御装置から受信した前記第１のファイルを前記上位装置に送信することを特徴とする、ファイル制御装置。
【請求項１７】
請求項１２に記載のファイル制御装置であって、
前記プロセッサは、前記重複ファイル情報に基づいて、前記第１のファイルと重複する前記第２のファイルが前記記憶領域に格納されていることを判定した場合、前記第２のファイルのデータを複製して前記第１のファイルを復元し、復元した前記第１のファイルを前記上位装置に送信することを特徴とする、ファイル制御装置。
【請求項１８】
請求項１２に記載のファイル制御装置であって、
前記記憶領域を構成する第１の物理記憶媒体は、前記他のファイル制御装置に接続される記憶領域を構成する第２の物理記憶媒体よりアクセス性能が高いことを特徴とする、ファイル制御装置。
【請求項１９】
請求項１３に記載のファイル制御装置であって、
当該ファイルサーバは管理計算機に接続され、
前記プロセッサは、前記上位装置からアクセス要求を受けたファイルのうち、前記他のファイル制御装置から受信して応答したファイルの容量情報として前記第２のファイルの容量を管理し、前記他のファイル制御装置から受信することなく前記記憶領域に格納されたファイルを用いて応答したファイルの容量情報として前記第１のファイルの容量を管理し、
前記プロセッサは、前記管理計算機に対して、前記他のファイル制御装置から転送されたファイルの容量情報及び前記他のファイル制御装置から受信することなく前記第１の記憶領域に格納されたファイルを用いて応答したファイルの容量情報を前記管理計算機に送信することを特徴とする、ファイル制御装置。  
【請求項２０】
上位装置及び他のファイルサーバと接続されるファイルサーバに実行させるためのプログラムを記録した読み取り可能な記録媒体であって、
前記上位装置からのアクセス要求を制御し、前記上位装置から送受信されるファイルを、当該ファイルサーバに接続される記憶装置に格納する手順と、
前記上位装置からのアクセス状況に応じて、前記記憶領域に格納された第１のファイルを前記他のファイルサーバに移行する手順と、
前記他のファイルサーバにより、移行された前記第１のファイルと他のファイルとが重複するか否かが判定され、作成された重複ファイル情報を受信する手順と、
前記上位装置から前記第１のファイルに対するリード要求を受信した場合、受信した前記重複ファイル情報に基づいて、前記第１のファイルと重複する第２のファイルが前記記憶領域に格納されている否かを判定し、格納されていると判定した場合、当該第２のファイルを用いて前記上位装置に応答する手順とを実行させることを特徴とする、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層ストレージ管理システムにおいて重複ファイルを転送する方法、システム、装置及びプログラムに関する。
【背景技術】
【０００２】
性能や機能が異なる複数のファイル格納装置（ストレージ、サーバ等）において、ファイルの利用状況に合わせて、ファイルをファイル格納装置間で移動させる「階層ストレージ管理（HSM：Hierarchical Storage Management）」技術がある。特許文献1に示すように、HSMを実現した計算機システム（以下、HSMシステムと呼ぶ）では、アクセス頻度に応じて、アクセス頻度の高いファイルを上位の階層に属する性能／ビットコストの高いファイル格納装置（以下、上位Tierと呼ぶ）に配置し、アクセス頻度の低いファイルを下位の階層に属する性能／ビットコストの低いファイル格納装置（以下、下位Tierと呼ぶ）に配置することで、クライアント計算機には、あたかも大容量かつ高速なストレージ装置があるかのような計算機システムを低コストで提供できる。なお、下位Tierに格納されるデータは典型的には更新頻度が低いファイルであり、ファイル使用者が万一のためにバックアップとして削除せずに保持しつづけているバックアップファイル、ファイル使用者による頻繁な参照が終わったものの、法律に定められた期間だけ削除せずに保持しつづけなければならないファイルがその一例である。
【０００３】
一方、重複しているデータを排除することで容量を削減する重複排除技術がある。なお、NFS(Network File System)等のパス名及びファイル名で対象ファイルを指定するファイル格納装置での重複排除技術は、以下の３つから構成される：
（Ａ）ファイル格納装置に格納される複数のファイルからデータ内容が一致するファイル群を発見する。
（Ｂ）前述のデータ内容が一致するファイル群の実データを、少なくとも一つを残して残りは削除する。
（Ｃ）前述のファイル群に含まれるファイルを指定したリード要求に応じて、指定されたファイルに対応した前述の少なくとも一つは残したデータを特定し、送信する。
【０００４】
特許文献2では、バックアップ用のデータに対する重複排除機能を備えたストレージから重複排除機能を備えていないバックアップ用ストレージへのデータ転送方法として、重複排除されたデータを重複排除されていないデータに戻して転送する方法を開示している。
【０００５】
特許文献3では、それぞれ重複排除機能を備えた複数のバックアップサーバを有するネットワークにおいて、バックアップサーバ間で記憶領域を複製する方法を開示している。一方のバックアップサーバが、複製しようとする記憶領域のデータの重複識別情報を他方のバックアップサーバに転送し、他方のバックアップサーバは当該重複識別情報を用いて重複検出を行い、重複していないデータのみを転送することでバックアップサーバ間の転送量を削減する技術である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許公開第2004/0193760号明細書
【特許文献２】米国特許公開第2008/0243769A1号明細書
【特許文献３】米国特許公開第2008/0244204A1号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献２及び特許文献３は、HSMにおける下位Tierに相当するバックアップ装置が複数存在する場合に関する技術を開示しているものの、上位Tierについて考慮されていないため、ビットコストの高い上位Tierの記憶容量を有効に活用することができない。本発明の目的は上位Tierの記憶容量を有効に活用可能なHSMを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、HSMシステムの上位Tierにて重複排除技術、少なくとも上述の（Ｃ）の処理を行う。なお、上述の（Ａ）及び（Ｂ）の処理については上位Tierにて行っても良いが下位Tierにて行ってもよい。なお、下位Tierにて（Ａ）及び（Ｂ）の処理を行う場合は、下位Tierに格納されたファイルを対象とし、（Ａ）及び（Ｂ）の処理結果を上位Tierに送信することで、（Ｃ）の処理を下位Tierから上位Tierに転送されたファイルに対して行う。
【発明の効果】
【０００９】
本発明によると、上位Tierの記憶容量を有効に活用可能なHSMを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】階層ストレージ管理システムの構成例を示す図である。
【図２】階層ストレージ管理システムの概要図である。
【図３】Tier1ファイルサーバのハードウェアおよびソフトウェア構成を示す図 である。
【図４】Tier2ファイルサーバのハードウェアおよびソフトウェア構成を示す図である。
【図５】コンテンツ管理テーブルの構造を示す図である。
【図６】重複ファイルテーブルの構造を示す図である。
【図７】ファイル管理構造体の構造を示す図 である。
【図８】Tier1ファイルサーバのデータ容量の推移を管理者に提示するGUI画面 である。
【図９】Tier1ファイルサーバの日ごとの統計情報を管理者に提示するGUI画面である。
【図１０】Tier1ファイルサーバのマイグレーション処理部およびTier2ファイルサーバのコンテンツ管理処理部による、マイグレーション処理を示すフローチャートである。
【図１１】Tier1ファイルサーバのファイルオペレーション処理部による、ファイルリード処理を示すフローチャートである。
【図１２】Tier1ファイルサーバのリコール処理部およびTier2ファイルサーバのコンテンツ管理処理部・重複ファイル情報転送処理部による、リコール処理を示すフローチャートである。
【図１３】Tier1ファイルサーバのファイルオペレーション処理部による、ファイルライト処理を示すフローチャート である。
【図１４】Tier1ファイルサーバのファイルオペレーション処理部による、ファイル削除処理を示すフローチャートである。
【図１５】Tier2ファイルサーバの重複排除処理部による、重複排除処理を示すフローチャートである。
【図１６】ファイル名とファイル管理構造体の対応表を示す一例の図である。
【図１７】ファイルライト処理、ファイルリード処理、重複排除処理、マイグレーション処理、リコール処理のタイムチャートを示す模式図の一例である。
【発明を実施するための形態】
【実施例１】
【００１１】
以下、本発明の第一の実施形態を、図面に基づいて説明する。なお、本実施形態は本発明を限定するものではない。なお、以後の説明では、「××テーブル」、「××リスト」、「××ＤＢ」、「××キュー」等の表現にて本発明の情報を説明するが、これら情報は必ずしもテーブル、リスト、DB、キュー等のデータ構造に限定されるものでなく、別のデータ構造で表現されてもよい。データ構造に依存しないことを示すため、「××テーブル」、「××リスト」、「××ＤＢ」、「××キュー」等について、「××」情報と呼ぶことがある。さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いるが、これらについてはお互いに置換が可能である。
【００１２】
以後の説明では、「プログラム」を主語として説明を行う場合があるが、実際には、プロセッサが、メモリに格納されたプログラムを読み出して、通信ポート（通信制御装置）を用いながら定められた処理を実行するため、プロセッサを主語とした説明であってもよい。また、プログラムを主語として開示された処理は、管理サーバ等の計算機、情報処理装置が行う処理としてもよい。また、プログラムの一部または全ては、専用ハードウェアによって実現されてもよい。また、各種プログラムは、プログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【００１３】
図1は、本発明の第一の実施形態になるHSMシステムの構成の一例を示すブロック図である。以下、xは任意の正の整数を表す。
【００１４】
HSMシステムは、一又は複数のクライアント100（クライアントコンピュータ）、管理端末101、Tier1ファイルサーバ102、およびTier2ファイルサーバ103を有する。クライアント100、管理端末101、およびTier1ファイルサーバ102はLAN（Local Area Network）104で接続されている。Tier1ファイルサーバ102とTier2ファイルサーバ103はLAN105で接続されている。管理端末101とTier2ファイルサーバ103はLAN106で接続されている。
【００１５】
クライアント100は、Tier1ファイルサーバ102が提供するファイル共有サービスを利用する一又は複数の計算機である。クライアント100を利用するユーザは、NFS（Network File System）やCIFS（Common Internet File System）などのファイル共有プロトコルを利用して、Tier1ファイルサーバ102が提供するファイル共有サービスを利用する。本実施例では、Tier1ファイルサーバ102が上位Tierに相当し、Tier2ファイルサーバ103が下位Tierに相当する。
【００１６】
Tier1ファイルサーバ102は、クライアント100に対してファイル共有サービスを提供するファイル格納装置である。本実施例では、Tier1ファイルサーバ102は、コントローラ107Aと記憶装置108Aを有する構成としているが、Tier1ファイルサーバ102の内部に記憶装置108Aを有さず、ファイルサーバに対する外部装置として、例えばミッドレンジの記憶装置108Aを接続する構成であってもよい。なお、Tier2ファイルサーバ103も、同様に、コントローラ107Bと記憶装置108Bとを有する。
【００１７】
管理端末101は、Tier1ファイルサーバ102およびTier2ファイルサーバ103を管理する管理者が使用する計算機である。管理者は、管理端末101からLAN104 あるいはLAN106を通してTier1ファイルサーバ102およびTier2ファイルサーバ103の管理を行う。ファイルサーバの管理として、例えば、ファイルサーバの運用開始、ファイルサーバの停止、クライアント100アカウントの管理などがある。なお、管理端末101は入出力装置を有する。入出力装置の例としては、ディスプレイ、キーボード、ポインタデバイスが考えられるが、これ以外の装置であってもよい。また、入出力装置の代替として、シリアルインタフェースを入出力装置とし、当該インタフェースにディスプレイ又はキーボード又はポインタデバイスを有する表示用計算機を接続する形態であってもよい。この場合、表示用情報を表示用計算機に送信したり、入力用情報を表示計算機から受信することで、表示用計算機で表示を行ったり、入力を受け付けることで入出力装置での入力及び表示を代替してもよい。
【００１８】
以後、情報処理システムを管理し、本発明の表示用情報を表示する一つ以上の計算機の集合を管理システムと呼ぶことがある。管理端末101が表示用情報を表示する場合は、管理端末101が管理システムである。また、管理端末101と表示用計算機の組み合わせも管理システムである。また、管理処理の高速化や高信頼化のために複数の計算機で管理端末101と同等の処理を実現してもよく、この場合は当該複数の計算機を管理システムと呼ぶ。
【００１９】
図2は、本発明の第一の実施形態になるHSMシステムの概念図である。ここで、HSMシステムでは、Tier1ファイルサーバ102は、上位装置から所定のアクセスがあるファイルを通常のファイル（以下、データファイルと呼ぶ）として格納し、長期間アクセスのないファイルについては、Tier2ファイルサーバ103にデータファイルを移行する処理（以下、マイグレーション処理と呼ぶ）を行い、Tier2ファイルサーバ103に格納したファイルデータを参照するための識別情報（以下、スタブと呼ぶ）を保持する。なお、Tier2ファイルサーバ103に格納した、ファイルの実データ（以下、ファイルデータと呼ぶ）を参照するためのスタブを作成して上位Tierに格納する処理を、スタブ化処理という。そして、下位Tierへ移行（マイグレーション）されたファイルにアクセスがあった場合、上位Tierは、下位Tierからファイルデータを転送する処理（以下、リコール処理と呼ぶ）を行う。その後、上位Tierは、スタブ化されたファイルをデータファイルに戻す。
【００２０】
なお、本実施形態では、Tier1ファイルサーバ102は重複排除処理の内、上述の（Ａ）及び（Ｂ）の処理を行わないことによりクライアント100から高速アクセス可能な上位Tierのファイルサーバであり、Tier2ファイルサーバ103は重複排除機能を持つ下位Tierのファイルサーバである。なお、ファイルサーバにおける重複排除技術は、ファイル単位で重複排除を行うファイルレベル重複排除技術と、ブロック単位で重複排除を行うブロックレベル重複排除技術の大きく2つに分類できる。ファイルレベル重複排除は、ファイルデータ全体が同じファイルが2つ以上ある場合に、１つのファイルデータだけを格納して他のファイルのファイルデータを削除する技術である。ファイルデータ全体が同じファイルを以降、重複ファイルと呼ぶ。ブロックレベル重複排除は、ファイルシステム中のデータブロックの内容が同じものをブロック単位で排除する技術である。本実施例では、Tier2ファイルサーバ103は、ファイルレベル重複排除機能を有するものとして説明する。
【００２１】
Tier1ファイルサーバ102はTier1ファイルシステム200を有し、クライアント100が作成したデータをファイル形式で格納する。Tier2ファイルサーバ103はTier2ファイルシステム201を有し、Tier1ファイルサーバ102からマイグレーションされたファイルを格納する。Tier2ファイルサーバ103は、ファイルをコンテンツ管理テーブル500によって管理する。コンテンツは、ファイルデータを示す。Tier2ファイルサーバ103は、重複ファイルのファイルデータを同一コンテンツとみなす。Tier1ファイルサーバ102は重複ファイルテーブル600を有する。Tier1ファイルサーバ102は、Tier2ファイルサーバ103から取得した重複ファイル情報を重複ファイルテーブル600に格納する。
図2では、ファイルA、ファイルB、ファイルCおよびファイルDが、後述する、管理者が設定したマイグレーション条件を満たし、Tier1ファイルサーバ102は、これらのファイルをTier1ファイルサーバ102からTier2ファイルサーバ103へマイグレーションし、Tier2ファイルサーバ103は、これらのファイルをTier2ファイルシステム201に格納している。Tier1ファイルシステム200は、マイグレーションしたファイルをスタブとして格納する。Tier2ファイルサーバ103にマイグレーションされたファイルは、Tier2ファイルシステム201の重複排除処理によって重複排除される。重複排除処理の結果、ファイルAとファイルCが重複ファイルであり、データブロックを共有している。同じくファイルBとファイルDが重複ファイルであり、データブロックを共有している。コンテンツ管理テーブル500は、重複ファイル情報を格納する。
【００２２】
マイグレーションされた後、クライアント100からスタブのファイルにアクセスがある場合、Tier1ファイルサーバ102は、Tier1ファイルサーバ102に重複ファイルがあるか否か重複ファイルテーブル600を用いて判定する。Tier1ファイルサーバ102に重複ファイルがない場合、Tier1ファイルサーバ102はリコール処理を行う。例えば、ファイルBにアクセスがあるとき、Tier1ファイルサーバ102の重複ファイルテーブル600にファイルBのエントリがないため、Tier1ファイルサーバ102はファイルBのリコール処理を行う。ここで、本実施形態では、Tier2ファイルサーバ103は、リコールの際にリコール対象のファイルの重複ファイル情報を付加する。例えば、クライアント100からファイルAにアクセスがあった場合、Tier2ファイルサーバ103は、ファイルAのファイルデータをTier1ファイルサーバ102に転送するとともに、ファイルAとファイルCが同一ファイルであるという情報をTier1ファイルサーバ102に転送し、Tier1ファイルサーバ102は受信した重複ファイル情報を重複ファイルテーブル600に格納する。その結果、Tier1ファイルサーバ102に重複ファイルがある場合、そのファイルにアクセスがあった際、Tier1ファイルサーバ102は、重複ファイルのデータブロックを共有することで、リコール処理を省略することができる。図2では、その後、ファイルCにアクセスがあった際、Tier1ファイルサーバ102は、重複ファイルテーブル600によってファイルAがファイルCと同一ファイルであることを検出し、ファイルAのデータブロックを共有する例を示している。これによってTier1ファイルサーバ102は、クライアント100から、マイグレーションされたファイルCへのアクセスに対してリコール処理を必要とせず、高速なファイルアクセスを達成できる。また、Tier1ファイルサーバ102は、重複ファイルのデータブロックを共有することでTier1ファイルサーバ102の容量を削減できる。
【００２３】
図17は、本実施例におけるファイルライト処理、ファイルリード処理、マイグレーション処理、重複排除処理、リコール処理のタイムチャートを模式的に示す図である。なお、図17に示すファイル名は図２に示すファイル名と対応している。図１７に示すように、本実施例では、ファイルA、ファイルCのマイグレーション処理の後に、重複排除処理によって、ファイルAとファイルCとが重複することが判定され、重複排除される。その後、ファイルAのリコール処理の際に、Tier2ファイルサーバ103が保有する、ファイルAとファイルCとが重複するという重複ファイル情報をTier1ファイルサーバ102に転送し、Tier1ファイルサーバ102は、重複ファイル情報を保持する。そして、ファイルCに対するリード要求がある場合、Tier1ファイルサーバ102は、保持する重複ファイル情報に基づいて、重複ファイルであるファイルAがTier1ファイルシステム200に格納されていることを判定し、Tier２ファイルシステム201からのリコール処理を行わず、リード要求に対してファイルAの実データを用いて送信する。これにより、HSMシステムにおけるリコール回数を削減することができる。
【００２４】
図3は、Tier1ファイルサーバ102の構成例を示している。Tier1ファイルサーバ102は、メモリ300に格納されたプログラムを実行するCPU312、LAN104を通してクライアント100や管理端末101との通信に使用するネットワークインタフェース311、LAN105を通してTier2ファイルサーバ103との通信に使用するネットワークインタフェース313、FC（Fibre Channel）ディスクドライブ314、プログラムやデータを格納するメモリ300を搭載し、それらは内部的な通信路（例えば、バス）によって接続されている計算機である。なお、Tier1ファイルサーバ102の構成のうち、FCディスクドライブ314が図１に示す記憶装置108Aに対応し、FCディスクドライブ314を除いた他の構成が、図１に示すコントローラ107Aに対応する。
【００２５】
FCディスクドライブ314は、FC型のインタフェースを備える一以上のディスクドライブであり、Tier1ファイルサーバ102が使用するプログラムやファイルを格納するための二次記憶装置である。本実施形態では、Tier1ファイルサーバ102の二次記憶装置をFCディスクドライブ314としているが、SSD（Solid State Drive）、SAS（Serial Attached SCSI）ディスクドライブ、SATA(Serial Advanced Technology Attachment)ディスクドライブ、フラッシュメモリ等の不揮発メモリ、テープ装置等を二次記憶装置として使用できる。 本実施例において、Tier1ファイルサーバ102は上位Tierに相当する為、FCディスクドライブ314に相当する記憶媒体として、Tier2ファイルサーバ103の有する記憶媒体と比較して高性能でビットコストの高いものが好ましい。
【００２６】
メモリ300にはファイル共有サーバプログラム301と、ファイル共有クライアントプログラム302と、HSMプログラム303と、ファイルシステムプログラム310と、図示していないオペレーティングシステム（OS）が格納される。なお、これらのプログラムは、FCディスクドライブ314に格納され、CPU312によってメモリ300に読み出されて実行される態様でもよい。ファイル共有サーバプログラム301は、クライアント100がTier1ファイルサーバ102上のファイルにファイル操作を行う手段を提供するプログラムである。ファイル共有クライアントプログラム302は、Tier1ファイルサーバ102がTier2ファイルサーバ103上のファイルにファイル操作を行う手段を提供するプログラムである。
【００２７】
HSMプログラム303は、ファイルオペレーション処理部304と、マイグレーション処理部305と、リコール処理部306と、重複ファイルテーブル600と、レポーティング処理部308と、レポーティングログ309から構成される。ファイルオペレーション処理部304は、ファイル共有サーバプログラム301を介してクライアント100から要求されるファイル操作を、Tier1ファイルシステム200に対して実行する。マイグレーション処理部305は、Tier1ファイルサーバ102からTier2ファイルサーバ103へのファイルのマイグレーションを実行する。リコール処理部306は、クライアント100からアクセス要求のあったファイルがスタブの場合にリコール処理を実行する。重複ファイルテーブル600は、Tier2ファイルサーバ103から取得した重複ファイル情報を格納する。レポーティング処理部308は、HSMシステムに対して実行された処理結果を統計情報等に変換して管理端末101に表示する。レポーティングログ309はHSMシステムに対して実行された処理結果をログとして保存する領域である。ファイルシステムプログラム310は、Tier1ファイルシステム200を制御する。
【００２８】
図4は、Tier2ファイルサーバ103の構成例を示している。Tier2ファイルサーバ103は、メモリ400に格納されたプログラムを実行するCPU410、LAN106を通して管理端末101との通信に使用するネットワークインタフェース409、LAN105を通してTier1ファイルサーバ102との通信に使用するネットワークインタフェース411、SATAディスクドライブ412、メモリ400を搭載し、それらは内部的な通信路によって接続されている計算機である。なお、Tier2ファイルサーバ103の構成のうち、SATAディスクドライブ412が図１に示す記憶装置108Bに対応し、SATAディスクドライブ412を除いた他の構成が、図１に示すコントローラ107Bに対応する。
【００２９】
SATAディスクドライブ412は、SATA型のインタフェースを備える一以上のディスクドライブであり、Tier2ファイルサーバ103が使用するプログラムやファイルを格納するための二次記憶装置である。本実施形態では、Tier2ファイルサーバ103の二次記憶装置をSATAディスクドライブとしているが、SSD、FCディスクドライブ、SCSIディスクドライブ、フラッシュメモリ等の不揮発メモリ、テープ装置等を二次記憶装置として使用できる。本発明において、Tier2ファイルサーバ103は下位Tierに相当する為、SATAディスクドライブ412に相当する記憶媒体として、Tier1ファイルサーバ102の有する記憶媒体と比較して低性能でビットコストの低いものが好ましい。
【００３０】
メモリ400にはファイル共有サーバプログラム401と、コンテンツ管理プログラム402と、ファイルシステムプログラム408と、図示していないOSが格納される。なお、これらのプログラムは、SATAディスクドライブ412に格納され、CPU410によってメモ400に読み出されて実行される態様でもよい。ファイル共有サーバプログラム401は、ファイル共有クライアントプログラム302を実行しているTier1ファイルサーバ102に対して、Tier2ファイルサーバ103上のファイルにファイル操作を行う手段を提供するプログラムである。
【００３１】
コンテンツ管理プログラム402はコンテンツ管理処理部403と、コンテンツ管理テーブル500と、重複排除処理405と、重複ファイル情報転送処理部406から構成される。コンテンツ管理処理部403は、ファイル共有サーバプログラム401を介してTier1ファイルサーバ102から要求されるファイル操作を、Tier2ファイルシステム201に対して実行する。コンテンツ管理テーブル500は、Tier2ファイルシステム201に格納されたファイルを管理するテーブルである。重複排除処理部405は、Tier2ファイルシステム201に格納されたファイルに対して重複排除処理を行う。重複ファイル情報転送処理部406は、コンテンツ管理テーブル500に格納されている重複ファイル情報をTier1ファイルサーバ102へ転送する。ファイルシステムプログラムは、Tier2ファイルシステム201を制御する。
【００３２】
図5は、Tier2ファイルサーバ103のメモリ400に格納されているコンテンツ管理テーブル500の一例を示している。コンテンツ管理テーブル500は、コンテンツID501、フィンガープリント502、ファイル群503の3つのフィールドからなるレコードを格納する。各レコードは、Tier2ファイルサーバ103に格納されたコンテンツに対応しており、対応するコンテンツの情報を格納する。
【００３３】
各レコードのコンテンツIDフィールド501は、重複したファイル群のグループを識別する識別子として割り当てられるユニークなIDを格納するフィールドである。コンテンツIDは、Tier2ファイルサーバ103がマイグレーション処理を実行した際、新たに格納されたファイルに対して付与される。また、所定時間経過後に重複排除処理を実行した際、既にコンテンツ管理テーブル500に登録されたファイル群と重複する新たなファイルが抽出された場合、Tier2ファイルサーバ103は、登録済みのコンテンツIDに対して新たな重複ファイルを対応付けて管理する。フィンガープリントフィールド502は、当該コンテンツID501を持つファイルデータにハッシュ関数を適用することで作成した値を格納する。ハッシュ関数としてSHA1（Secure Hash Algorithm 1）、MD5（Message Digest Algorithm 5）等が使用できる。なお、本実施例では、重複識別情報としてフィンガープリントを用いてファイルが重複するか否かを比較しているが、フィンガープリントを用いずにファイルデータ同士を比較してもよい。ファイル群フィールド503は、当該コンテンツID501を持つファイル群のファイル名（パス等、ファイルを識別する識別情報）を格納する。
【００３４】
図6は、Tier1ファイルサーバ102のメモリ300に格納されている重複ファイルテーブル600の一例を示している。重複ファイルテーブル600は、コンテンツID601、ファイル名602、スタブフラグ603の3つのフィールドからなるレコードを格納する。各レコードは、Tier1ファイルサーバ102に格納されたファイルに対応しており、対応するファイルの情報を格納する。
【００３５】
コンテンツIDフィールド601は、Tier2ファイルサーバ103から任意の契機で受信した重複ファイル情報から取得した、重複ファイル群に対応付けられたコンテンツID501を格納する。Tier1ファイルサーバ102がTier2ファイルサーバ103から重複ファイル情報を受信する契機は、図11において後述するTier2ファイルサーバ103に格納されたファイルに対してリード要求が発行されリコール処理を行うタイミング、図13において後述するTier2ファイルサーバ103に格納されたファイルに対してライト要求が発行されリコール処理を行うタイミングがある。その他、例えば、図15において後述する重複排除処理がTier2ファイルサーバ103において終了したタイミング、管理者が設定した定期的なタイミング、マイグレーション処理に連動して重複排除処理が行われる場合、Tier2ファイルサーバ103にファイルがマイグレーションされて格納されたタイミング等であってもよい。ファイル名フィールド602は、Tier1ファイルサーバ102でのファイル名（パス等、ファイルを識別する識別情報）を格納する。スタブフラグフィールド603は、対応するファイルがスタブかデータファイルかを示すフラグを格納する。スタブフラグ603は、値が「1」の場合はそのファイルがスタブであることを、値が「0」の場合はそのファイルがデータファイルであることを示す。
【００３６】
図7は、Tier1ファイルサーバ102のTier1ファイルシステム200のファイル管理構造体700を示している。Tier1ファイルシステム200では、ファイルはファイルデータとともにそのファイルに関するメタデータを持つ。メタデータは、サイズや最終アクセス日時等（図7中、702x-705x）を含む。Tier1ファイルシステム200は、これらメタデータをファイル管理構造体700としてファイルシステム内に格納する。また、Tier1ファイルシステム200は、ファイル管理構造体700に、ファイルデータの格納場所を示すブロック番号（図7中、706x）を格納する。ファイル管理構造体700は、EXT3（third extended file system）などのUNIX系ファイルシステムのinodeに対応する。クライアント100は、Tier1ファイルシステム200に対して、ファイル名（パス等、ファイルを識別する識別情報）を用いてファイルを指定し、ファイルアクセス要求を行う。Tier1ファイルシステム200では、アクセス要求のあったファイルに対して、対応するファイル管理構造体700を介してファイル要求に応答する。なお、Tier1ファイルシステム200は、クライアント100からファイル名によって指定されたファイルのファイル管理構造体700を特定するための、図16に示すようなファイル名とファイル管理構造体700の対応表1600を持つ。
【００３７】
sizeフィールド702xは、ファイルサイズをバイトで表した値を格納する。atimeフィールド703xは、ファイルの最終アクセス日時を格納する。is_stubフィールド704xは、ファイルがスタブかデータファイルかを格納する。1はスタブを、0はデータファイルを示す。content_IDフィールド705xは、Tier2ファイルサーバ103から取得したコンテンツID501を格納する。content_IDフィールド705xの初期値はNULL（content_IDとして使用されない値）である。block_numberフィールド706xは、ファイルデータの格納場所を格納する。Tier1ファイルシステム200のブロックサイズは固定長でありblock_numberフィールド706xの数は、ファイルサイズによって変化する。
【００３８】
ファイル管理構造体A7011は、データファイルのファイル管理構造体700を示している。データファイルの場合、is_stubフィールド704xは「0」であり、block_numberフィールド706xは、Tier1ファイルシステム200内に格納しているファイルデータ（図7中、708、709）の格納場所を示す。ファイル管理構造体C7012は、スタブのファイル管理構造体700を示している。スタブの場合、is_stubフィールド704xは「1」であり、block_numberフィールド706xは、Tier2ファイルシステム201上でのパス等、下位Tierに格納したファイルデータを参照するための識別情報を示す。一例として、パス716を示す。ファイル管理構造体番号フィールド707xは、図16に示す対応1600におけるファイル管理構造体番号と対応する値を格納する。ファイル管理構造体700には、これらの他、ファイルの所有者やモード等の属性を含んでもよい。
図16は、Tier1ファイルシステム200が有する、ファイル名とファイル管理構造体700の対応表1600である。ファイル名フィールド1611は、クライアント100から指定されるファイル名を格納する。ファイル管理構造体番号フィールド1612は、対応するファイルのファイル管理構造体番号を格納する。
【００３９】
図8は、Tier1ファイルサーバ102のデータ容量の推移を管理者に提示するGUI画面800の例を示している。Tier1ファイルサーバ102のレポーティング処理部308は、LANを通して管理端末101に画面800を表示する。なお、GUI画面800は、Tier1ファイルサーバ102のユーザ毎に表示される態様としてもよい。なお、Tierファイルサーバ102以外の装置においても画面800を作成できるように構成してもよいが、上位Tierに相当するTier1ファイルサーバ102が作成するのが望ましい。
【００４０】
画面中のグラフの横軸801は日付を示し、縦軸802は容量を示している。棒グラフのNon-migrated files807xは、Tier1ファイルサーバ102に格納されているデータの内、まだTier2ファイルサーバ103にマイグレーションされていないファイルの総容量を示す。Stub806xは、Tier1ファイルサーバ102からTier2ファイルサーバ103にマイグレーションされた、スタブの総容量を示す。Recalled files805xは、Tier1ファイルサーバ102からTier2ファイルサーバ103にマイグレーションされたデータの内、Tier1ファイルサーバ102がリコールしたファイルの総容量を示す。この他、ファイル管理構造体や空きブロック管理のためのファイルシステム管理情報（図示しない）が存在する。
破線で示した、De-duplicated files804xは、マイグレーションされたファイルの内、クライアント100からアクセス要求があったが、Tier1ファイルシステム200に重複ファイルがあることを検知していることによってリコール処理が不要となったファイルの総容量を示す。つまり、De-duplicated files804xの容量は、本実施例を適用していないシステムと比較して、リコール処理が不要となったことにより、Tier1ファイルサーバ102の容量消費が削減された量を示す。また、線グラフ808はTier1ファイルシステム200の利用容量の推移を示す。
日付ボタン803xはそれぞれデータの日付を示し、管理者は日付ボタン800xを押すことでそれぞれの日付の統計情報を表示する画面900に遷移できる。なお、横軸801の指標として、日付の他に、Tierファイルサーバ102が検知したマイグレーション処理、重複排除処理、障害等の各種イベントの前後で統計情報を表示する態様としてもよい。なお、ボタン808およびボタン809は画面800を閉じるためのボタンである。
【００４１】
画面800によって管理者は、Tier1ファイルシステム200の容量の推移を把握できる。これによって例えば、マイグレーションされたファイルに多くのアクセス要求があることが分かり、マイグレーション条件の再設定に使用できる。また、例えば、Tier1ファイルシステム200に重複ファイル情報及び重複ファイルがあることによってTier1ファイルシステム200の容量が削減されていることを確認できる。
【００４２】
図9は、Tier1ファイルサーバ102の日ごとの統計情報を管理者に提示するGUI画面900の例を示している。Tier1ファイルサーバ102のレポーティング処理部308は、LANを通して管理端末101に画面900を表示する。Tier1ファイルサーバ102のデータ容量901は、管理者によって指定された日付時点でのTier1ファイルシステム200の全容量902、未マイグレーションファイル量903、リコールされたファイル量904、重複排除されたファイル量905をそれぞれ示す。図9は、2009年7月12日のTier1ファイルサーバ102のデータ容量を示しており、未マイグレーションファイル量903は、図8のnon-migrated files8072の値をバイト表記で表している。リコールされたファイル量904は、図8のRecalled files8052の値をバイト表記で表している。重複排除されたファイル量905は、図8のDe-duplicated files8042の値をバイト表記で表している。全容量902は、図8の線グラフ808の2009年7月12日の値をバイト表記で表している。
【００４３】
統計情報906は、管理者によって指定された日付の1日当りでのTier1ファイルサーバ102の統計情報を示す。ファイルライト量907は、ファイルライトされたデータサイズの1日の総量をバイト表記で示す。リコールされたファイル量908は、リコールされたデータサイズの1日の総量をバイト表記で示す。重複排除されたファイル量909は、Tier1ファイルシステム200に重複ファイルがあることによってリコールが不要となり、本発明を適用していないシステムと比較して削減されたデータサイズの1日の総量をバイト表記で示す。マイグレーション量910は、Tier1ファイルサーバ102からTier2ファイルサーバ103へマイグレーションされたファイルのデータサイズの1日の総量をバイト表記で示す。ファイル削除量911は、ファイル削除されたデータサイズの1日の総量をバイト表記で示す。Tier間転送量912は、マイグレーションおよびリコール処理によってLAN105を通してTier1ファイルサーバ102とTier2ファイルサーバ103との間で転送されたデータサイズの1日の総量をバイト表記で示す。ボタン913およびボタン914は画面900を閉じるためのボタンである。
【００４４】
図8および図9では、Tier1ファイルサーバ102のGUI画面を示したが、Tier2ファイルサーバ103は、Tier2ファイルサーバ103に関して図8および図9と同様の画面を管理者に提供することができる。具体的には、Tier2ファイルサーバ103のファイル総容量は、(a)重複排除されて実データとしては一つのファイルのみ格納されているファイルの容量と、(b)重複排除されていないファイルの容量とに大別することができる。さらに、(a)について、(a-1) 重複排除されたファイルの内、リコールされたファイル容量と、(a-2) 重複排除されたファイルの内、リコールされていないファイル容量が含まれ、(b)について、(b-1)重複排除されていないファイルの内、リコールされたファイル容量と、(b-2) 重複排除されていないファイルの内、リコールされていないデータ量が含まれる。ここで、Tier2ファイルサーバの総容量は、(a-1)、(a-2)、(b-1)、(b-2)、及びファイル管理構造体や空きブロック管理のためのファイルシステム管理情報で表すことができるが、このうち、(a-2)の容量を管理者に示すことによって、リコール不要となる可能性のあるファイル容量を示すことができる。
【００４５】
図10は、Tier1ファイルサーバ102のマイグレーション処理部305およびTier2ファイルサーバ103のコンテンツ管理処理部403による、マイグレーション処理を示すフローチャートである。マイグレーション処理は、管理者によって設定されたマイグレーションの周期・タイミングでOSから呼び出され、Tier1ファイルサーバ102に格納されているファイルの内、後述する、管理者が設定したマイグレーション条件を満たすファイルをTier2ファイルサーバ103に移動する処理である。
【００４６】
以下、図10に示す処理をステップ番号に沿って説明する。
（ステップS1001）Tier1ファイルサーバ102のマイグレーション処理部305は、Tier1ファイルシステム200に格納されているファイルを検索し、マイグレーションリストを作成する。マイグレーションリストは、管理者が設定したマイグレーション条件を満たすファイルのエントリを含む。
（ステップS1002）マイグレーション処理部305は、マイグレーションリストが空（NULL）か否かを判定する。マイグレーションリストが空の場合（ステップS1002：YES）、ステップS1009に移る。
（ステップS1003）一方、マイグレーションリストが空ではない場合（ステップS1002：NO）、マイグレーション処理部305は、マイグレーションリストの先頭エントリのファイルをTier2ファイルサーバ103にコピーする。
（ステップS1004）Tier2ファイルサーバ103のコンテンツ管理処理部403は、Tier1ファイルサーバ102から受理したファイルを格納する。
（ステップS1005）コンテンツ管理処理部403は、ステップS1004で格納したファイルのエントリをコンテンツ管理テーブル500に追加する。このときコンテンツ管理処理部403は、当該ファイルにコンテンツID501を割り当てる。
（ステップS1006）コンテンツ管理処理部403は、格納したファイルのパスをTier1ファイルサーバ102に返却する。
（ステップS1007）Tier1ファイルサーバ102のマイグレーション処理部305は、当該ファイルをスタブに変更する。このとき、ステップS1006でTier2ファイルサーバ103から返却されたファイルパスを当該ファイルのファイル管理構造体700のblock_numberフィールド706xに格納し、is_stubフィールド704xを「1」に設定する。
（ステップS1008）マイグレーション処理部305は、マイグレーションリストの先頭エントリを削除する。ステップS1002に移る。
（ステップS1009）Tier1ファイルサーバ102のレポーティング処理部308は、レポーティングログ309を更新し、一連のマイグレーション処理を終了する。レポーティングログ309には、マイグレーションしたファイルの一覧、ファイル数、ファイルサイズ、マイグレーションした日時等が格納される。
【００４７】
本実施形態では、マイグレーション処理部305によるマイグレーション処理は、管理者が設定したマイグレーションの周期・タイミングでOSから呼び出されるが、マイグレーション条件を満たすファイルを発見したタイミングでそのファイルのマイグレーション処理を行っても良い。
【００４８】
図10では、ステップS1001でTier1ファイルサーバ102のマイグレーション処理部305がマイグレーションリストを作成するが、マイグレーションリスト作成のタイミングはこれに限定されない。
【００４９】
管理者が設定するマイグレーション条件として、例えば、ファイルの所有者、ファイルの作成日時、ファイルの最終更新日時、ファイルの最終アクセス日時、ファイルサイズ、ファイルタイプ、WORM（Write Once Read Many）設定の有無、リテンション設定の有無とその期間などのANDやOR条件が設定される。マイグレーション条件は、Tier1ファイルシステム200全体、もしくは特定のディレクトリやファイルに個別に設定しても良い。なお、Tier2ファイルサーバ103からリコール処理によってTier1ファイルサーバ102に格納されたファイルは、当該データファイルに更新が発生した場合、再度マイグレーション処理の対象となる。この場合、マイグレーション処理部305がリコールされたファイルに対する更新の有無を判定する方法として、以下のような方法が挙げられる。例えば、ファイル管理構造体700において「リコール後のライト有無」を格納するフィールドを用いて管理する方法としてもよい。また、ファイル管理構造体700において「リコール日時」を格納するフィールドを設け、ファイルの最終アクセス日時であるatimeフィールド703xに格納された、ファイルの最終アクセス日時と比較することによって判定する方法としてもよい。また、リコールされたファイルに対してライト要求があった場合、ライト要求に対する応答の終了したタイミングでマイグレーション処理を行う方法としてもよい。
【００５０】
なお、図10ではマイグレーション処理においてマイグレーションリストの先頭エントリのファイルからマイグレーションを実行する例を示しているが、マイグレーションリストの末端エントリのファイルからマイグレーションを実行する場合でも同様のことが実現可能である。
【００５１】
なお、フィンガープリント502の作成と、フィンガープリント502のコンテンツ管理テーブル500への格納のタイミングは、図10のステップS1005でもよいし，後述する図15のステップS1503でもよい。
【００５２】
マイグレーション処理部305によるマイグレーション処理を実行中に、後述する、リコール処理部306によるリコール処理が、ファイルオペレーション処理部304によって呼び出される場合がある。このとき、OSは、実行中のマイグレーション処理を停止し、リコール処理に処理を移す。リコール処理部306によるリコール処理が終了後、OSは、マイグレーション処理部305によるマイグレーション処理を再開する。後述するファイルリード処理、ファイルライト処理、ファイル削除処理に関しても同様に、マイグレーション処理部305によるマイグレーション処理を実行中にこれらの処理がファイルオペレーション処理部304によって呼び出された場合、OSは、実行中のマイグレーション処理を停止し、これらの処理に処理を移す。これらの処理が終了後、OSは、マイグレーション処理部305によるマイグレーション処理を再開する。
【００５３】
図11は、Tier1ファイルサーバ102のファイルオペレーション処理部304による、ファイルリード処理を示すフローチャートである。クライアント100からのファイルリード要求は、ファイル名、パス等の識別情報を指定して、Tier1ファイルサーバ102のファイル共有サーバプログラムを通してファイルオペレーション処理部304に渡される。なお、ファイルリード要求は一つのコマンド要求でもよく、複数回の分割された通信による要求であってもよい。ファイルリード処理は、ファイルオペレーション処理部304が、リード要求のあったファイルを特定してファイルシステムから読み込み、クライアント100へ応答する処理である。リード要求のあったファイルがデータファイルであればTier1ファイルシステム200からの読み込みとなり、スタブであれば後述するリコール処理を行う。
【００５４】
以下、図11に示す処理をステップ番号に沿って説明する。
（ステップS1101）Tier1ファイルサーバ102のファイルオペレーション処理部304は、クライアント100からのファイルリード要求を受理する。
（ステップS1102）ファイルオペレーション処理部304は、リード要求のあったファイルがスタブか否かを判定する。リード要求のあったファイルがスタブではない場合（ステップS1102：NO）ステップS1109に移る。
（ステップS1103）一方、リード要求のあったファイルがスタブの場合（ステップS1102：YES）、ファイルオペレーション処理部304は、リード要求のあったファイルのファイル管理構造体700のcontent_IDフィールド705xがNULLか否かを判定する。リード要求のあったファイルのファイル管理構造体700のcontent_IDフィールド705xがNULLの場合（ステップS1103：YES）、ステップS1106に移る。content_IDフィールド705xがNULLの場合（ステップS1103：YES）とは、Tier1ファイルサーバ102において、重複ファイルテーブル600に当該ファイルの重複ファイル情報が登録されていない状態を示す。
（ステップS1104）一方、リード要求のあったファイルのファイル管理構造体700のcontent_IDフィールド705xがNULLでない場合（ステップS1103：NO）、ファイルオペレーション処理部304は、重複ファイルテーブル600に当該ファイルと同一のデータファイルのエントリ（同一コンテンツID601かつスタブフラグ603が0のエントリ）があるか否か判定する。
（ステップS1105）ステップS1104の結果、重複ファイルテーブル600に当該ファイルと同一のデータファイルのエントリがない場合（ステップS1105：NO）、ステップS1106に移る。一方、重複ファイルテーブル600に当該ファイルと同一のデータファイルのエントリがある場合（ステップS1105：YES）、ステップS1107に移る。
（ステップS1106）ファイルオペレーション処理部304は、当該ファイルのリコール処理をリコール処理部306に依頼する。ステップS1109に移る。
（ステップS1107）ファイルオペレーション処理部304は、当該スタブをデータファイルに変更する。このとき、当該ファイルと同一のデータファイルのファイル管理構造体700のblock_numberフィールド706xの値を取得し、当該ファイルのファイル管理構造体700のblock_numberフィールド706xに格納する。これによって、ファイルデータを格納するデータブロックをコピーすることなく、複数のファイルが同じデータブロックを共有する。また、当該ファイルのファイル管理構造体700のis_stubフィールド704xを「0」に設定する。
（ステップS1108）ファイルオペレーション処理部304は、重複ファイルテーブル600の当該ファイルエントリのis_stubフィールド704xを「0」に変更する。
（ステップS1109）ファイルオペレーション処理部304は、ファイルリードの応答をクライアント100に返す。
（ステップS1110）Tier1ファイルサーバ102のレポーティング処理部308は、レポーティングログ309を更新し、一連のファイルリード処理を終了する。レポーティングログ309には、ファイルリードしたファイルの一覧、ファイル数、ファイルサイズ、ファイルリードした日時等が格納される。
【００５５】
図11ではステップS1107において、ファイルオペレーション処理部304は、当該ファイルと同一のデータファイルのファイル管理構造体700のblock_numberフィールド706xの値を取得し，当該ファイルのファイル管理構造体700のblock_numberフィールド706xに格納することでデータブロックを参照するが、同一のデータファイルのデータブロックをコピーして当該スタブをデータファイルに変更しても良い。
【００５６】
図12は、リコール処理を示すフローチャートである。リコール処理は、図11のステップS1106および図13のステップS1306の処理であり、Tier1ファイルサーバ102のファイルオペレーション処理部304から呼び出され、リコール要求のあったファイルに対して、Tier2ファイルサーバ103から当該ファイルのファイルデータを受信して、スタブをデータファイルに戻す処理である。なお、リコール処理において、Tier2ファイルサーバ103にもデータファイルを残す方法と、Tier2ファイルサーバ103からデータファイルを削除する方法が考えられるが、本実施例では、Tier2ファイルサーバ103にもデータファイルを残す方法を採用する。Tier2ファイルサーバ103にもデータファイルを残した場合、Tier2ファイルサーバ103内でファイルが重複する可能性が高まり、リコール処理後にデータファイルの更新が無い場合、再度マイグレーション処理が発生するのを防止して、階層間の転送量を削減できるからである。
【００５７】
以下、図12に示す処理をステップ番号に沿って説明する。
（ステップS1201）Tier1ファイルサーバ102のリコール処理部306は、ファイルリードもしくはファイルライト要求のあったファイルに対して、Tier2ファイルサーバ103にリコール要求を発行する。リコール要求のパケットには、送信元であるTier1ファイルサーバ102のIPアドレス、宛先であるTier2ファイルサーバのIPアドレス、リコール要求を行うファイルを識別する情報を含む。リコール要求を行うファイルを識別する情報は、図10のステップS1007でファイル管理構造体700のblock_numberフィールド706xに格納したファイルパスであってもよいし、図12のステップS1205でファイル管理構造体700のcontent_IDフィールド705xに格納したコンテンツID501であってもよい。
（ステップS1202）Tier2ファイルサーバ103は、Tier1ファイルサーバ102からのリコール要求を受理する。
（ステップS1203）Tier2ファイルサーバ103のコンテンツ管理処理部403は、リコール要求のあったファイルデータをTier1ファイルサーバ102に送信する。同時に、コンテンツ管理処理部403は、当該ファイルの重複ファイル情報をコンテンツ管理テーブル500から取得し、重複ファイル転送処理部がTier1ファイルサーバ102に送信する。重複ファイル情報には、当該ファイルのコンテンツID501とそのコンテンツ ID501を持つファイル群のファイル名（パス等）が含まれる。この他に、重複ファイル情報には、重複ファイル数やフィンガープリント502を含めても良い。
（ステップS1204）Tier1ファイルサーバ102のリコール処理部306は、Tier2ファイルサーバ103からの当該ファイルデータと重複ファイル情報を受理する。
（ステップS1205）リコール処理部306は、ステップS1204で受理した当該ファイルデータをTier1ファイルシステム200に格納し、当該スタブをデータファイルに変更する。このとき、当該ファイルのファイル管理構造体700のis_stubフィールド704xを「0」に変更する。ステップS1204で受理した当該ファイルのコンテンツID501を、当該ファイルのファイル管理構造体700のcontent_IDフィールド705xに格納する。
（ステップS1206）リコール処理部306は、ステップS1204で受理したデータに重複ファイル情報が含まれているか否かを判定する。重複ファイル情報が含まれていなければ（ステップS1206：NO）、ステップS1209に移る。
（ステップS1207）一方、重複ファイル情報が含まれていれば（ステップS1206：YES）、リコール処理部306は、ステップS1204で受理した重複ファイル情報から、受信したコンテンツID501のエントリを作成し重複ファイルテーブル600を更新する。このとき、当該ファイルのエントリのスタブフラグフィールド603を「0」に、その他の重複ファイルのエントリのスタブフラグフィールド603を「1」に設定する。
（ステップS1208）リコール処理部306は、ステップS1204で受理した重複ファイル情報を基に、各重複ファイルのファイル管理構造体700のcontent_IDフィールド705xを更新する。
（ステップS1209）Tier1ファイルサーバ102のレポーティング処理部308は、レポーティングログ309を更新し、一連のリコール処理を終了する。レポーティングログ309には、リコールしたファイルの一覧、ファイル数、ファイルサイズ、リコールした日時等が格納される。
なお、本実施例では、リコール処理は、図11のステップS1106および図13のステップS1306の処理として行われると説明したが、ファイルリード処理やファイルライト処理と連動せずにリコール処理を行ってもよい。例えば、Tier2ファイルサーバ103において、あるファイルに対する重複ファイル数が所定値以上の場合、当該ファイルはTier1ファイルサーバ102においてアクセスされる可能性が高いと判断して、当該ファイルに対して重複ファイル情報とともにリコール処理を行ってもよい。
【００５８】
図13は、Tier1ファイルサーバ102のファイルオペレーション処理部304による、ファイルライト処理を示すフローチャートである。クライアント100からのファイルライト要求は、ファイル名、パス等の識別情報を指定して、Tier1ファイルサーバ102のファイル共有サーバプログラムを通してファイルオペレーション処理に渡される。ファイルライト処理は、ファイルオペレーション処理部304が、ライト要求のあったファイルに対して書き込み処理を行い、クライアント100へ応答する処理である。 なお、ファイルライト要求は一つのコマンド要求でもよく、複数回の分割された通信による要求であってもよい。
【００５９】
以下、図13に示す処理をステップ番号に沿って説明する。
（ステップS1301）Tier1ファイルサーバ102のファイルオペレーション処理部304は、クライアント100からのファイルライト要求を受理する。
（ステップS1302）ファイルオペレーション処理部304は、ライト要求のあったファイルのファイル管理構造体700のcontent_IDフィールド705xがNULLか否か判定する。ライト要求のあったファイルのファイル管理構造体700のcontent_IDフィールド705xがNULLであれば（ステップS1302：YES）、ステップS1305に移る。ここで、content_IDフィールド705xがNULLの場合（ステップS1302：YES）とは、Tier1ファイルサーバ102において、重複ファイルテーブル600に当該ファイルの重複ファイル情報が登録されていない状態を示す。
（ステップS1303）一方、ライト要求のあったファイルのファイル管理構造体700のcontent_IDフィールド705xがNULLではない場合（ステップS1302：NO）、ファイルオペレーション処理部304は、重複ファイルテーブル600に当該ファイルと同一のデータファイルのエントリ（同一コンテンツID601かつスタブフラグ603が「0」のエントリ）があるか否か判定する。
（ステップS1304）ステップS1303の結果、重複ファイルテーブル600に当該ファイルと同一のデータファイルのエントリがない場合（ステップS1304：NO）、ステップS1305に移る。一方、重複ファイルテーブル600に当該ファイルと同一のデータファイルのエントリがある場合（ステップS1304：YES）、ステップS1307に移る。
（ステップS1305）ファイルオペレーション処理部304は、当該ファイルがスタブか否か判定する。当該ファイルがスタブではない場合（ステップS1305：NO）、ステップS1308に移る。
（ステップS1306）一方、当該ファイルがスタブの場合（ステップS1305：YES）、ファイルオペレーション処理部304は、当該ファイルのリコール処理をリコール処理部306に依頼する。ステップS1308に移る。
（ステップS1307）ファイルオペレーション処理部304は、当該ファイルの重複ファイルのデータブロックをコピーした後、ライトデータの書き込みを行う。ステップS1309に移る。
（ステップS1308）ファイルオペレーション処理部304は、当該ファイルを上書きして、ライトデータの書き込みを行う。ステップS1309に移る。
（ステップS1309）ファイルオペレーション処理部304は、当該ファイルのエントリを重複ファイルテーブル600から削除する。
（ステップS1310）ファイルオペレーション処理部304は、当該ファイルのファイル管理構造体700のcontent_IDフィールド705xをNULLに設定する。
（ステップS1311）ファイルオペレーション処理部304は、ファイルライトの応答をクライアント100に返す。
（ステップS1312）Tier1ファイルサーバ102のレポーティング処理部308は、レポーティングログ309を更新し、一連のファイルライト処理を終了する。レポーティングログ309には、ファイルライトしたファイルの一覧、ファイル数、ファイルサイズ、ファイルライトした日時等が格納される。
【００６０】
図14は、Tier1ファイルサーバ102のファイルオペレーション処理部304による、ファイル削除処理を示すフローチャートである。クライアント100からのファイル削除要求は、ファイル名、パス等の識別情報を指定して、Tier1ファイルサーバ102のファイル共有サーバプログラムを通してファイルオペレーション処理部304に渡される。ファイル削除処理は、ファイルオペレーション処理部304が、削除要求のあったファイルの削除処理を行い、クライアント100へ応答する処理である。 
以下、図14に示す処理をステップ番号に沿って説明する。
（ステップS1401）Tier1ファイルサーバ102のファイルオペレーション処理部304は、クライアント100からのファイル削除要求を受理する。
（ステップS1402）ファイルオペレーション処理部304は、削除要求のあったファイルのファイル管理構造体700のcontent_IDフィールド705xがNULLか否か判定する。削除要求のあったファイルのファイル管理構造体700のcontent_IDフィールド705xがNULLであれば（ステップS1402：YES）、ステップS1406に移る。
（ステップS1403）一方、削除要求のあったファイルのファイル管理構造体700のcontent_IDフィールド705xがNULLではない場合（ステップS1402：NO）、ファイルオペレーション処理部304は、当該ファイルのエントリを重複ファイルテーブル600から削除する。
（ステップS1404）ファイルオペレーション処理部304は、重複ファイルテーブル600の当該コンテンツのエントリが全てスタブ（スタブフラグフィールド603が「1」）か否かを判定する。
（ステップS1405）ステップS1404の結果、重複ファイルテーブル600の当該コンテンツのエントリが全てスタブの場合（ステップS1405：YES）、ステップS1406に移る。一方、重複ファイルテーブル600の当該コンテンツのエントリ全てがスタブではない場合（ステップS1405：NO）、ステップS1408に移る。
（ステップS1406）ファイルオペレーション処理部304は、当該ファイルがスタブか否かを判定する。当該ファイルがスタブの場合（ステップS1406：YES）、ステップS1408に移る。
（ステップS1407）一方、当該ファイルがスタブではない場合（ステップS1406：NO）、ファイルオペレーション処理部304は、当該ファイルのデータブロックを解放する。
（ステップS1408）ファイルオペレーション処理部304は、当該ファイルのファイル管理構造体700を削除する。
（ステップS1409）ファイルオペレーション処理部304は、Tier2ファイルサーバ103に当該ファイルの削除要求を発行する。
（ステップS1410）ファイルオペレーション処理部304は、ファイル削除の応答をクライアント100に返す。
（ステップS1411）Tier1ファイルサーバ102のレポーティング処理部308は、レポーティングログ309を更新し、一連のファイル削除処理を終了する。レポーティングログ309には、ファイル削除したファイルの一覧、ファイル数、ファイルサイズ、ファイル削除した日時等が格納される。
図14には示していないが、ステップS1409で発行されたファイルの削除要求をTier2ファイルサーバ103が受理すると、コンテンツ管理処理部403は、当該ファイルのエントリをコンテンツ管理テーブル500から削除する。また、当該ファイルの重複ファイルがなければデータブロックを解放する。
【００６１】
ここで、以下に示す（Ａ）から（Ｆ）のファイルの具体例を用いて図14を説明する。（Ａ）削除要求の対象ファイルがスタブであり、重複ファイル情報を有しない場合、S1402及びS1406で肯定的な結果となり、S1408-S1411の処理が行われる。また、（Ｂ）削除要求の対象ファイルがスタブであり、重複ファイル情報を有し、当該対象ファイル以外の重複ファイル群も全てスタブの場合、S1402で否定的な結果となり、S1405及びS1406で肯定的な結果となり、S1408-S1411の処理が行われる。また、（Ｃ）削除要求の対象ファイルがスタブであり、重複ファイル情報を有し、当該対象ファイル以外の重複ファイル群の中でTier1ファイルサーバ102にデータファイルが存在する場合、S1402及びS1405で否定的な結果となり、S1408-S1411の処理が行われる。
一方、（Ｄ）削除要求の対象ファイルがデータファイルであり、重複ファイル情報を有しない場合（例えば、マイグレーションされていないファイル、またはマイグレーション後リコールされたが重複ファイルを有しないファイルの場合）、S1402で肯定的な結果となり、及びS1406で否定的な結果となり、S1407-S1411の処理が行われる。ここで、削除要求の対象ファイルがマイグレーションされていないファイルの場合、S1409の処理はスキップされる。また、（Ｅ）削除要求の対象ファイルがデータファイルであり、重複ファイル情報を有し、当該対象ファイル以外の重複ファイル群が全てスタブの場合（例えば、リコールされたファイルで、ほかの重複ファイルとデータブロックを共有していない場合）、S1402で否定的な結果となり、S1405で肯定的な結果となり、S1406で否定的な結果となり、S1408 -S1411の処理が行われる。また、（Ｆ）削除要求の対象ファイルがデータファイルであり、重複ファイル情報を有し、当該対象ファイル以外の重複ファイル群の中でTier1ファイルサーバ102にデータファイルが存在する場合（例えば、リコールされたファイルで、ほかの重複ファイルとデータブロックを共有している場合）、S1402及びS1405で否定的な結果となり、S1408 -S1411の処理が行われる。
【００６２】
図15は、Tier2ファイルサーバ103の重複排除処理部405による、重複排除処理を示すフローチャートである。重複排除処理は、OSのタイマによって定期的に呼び出され、Tier2ファイルシステム201に格納されているファイルに対してファイルレベルで重複排除を行う処理である。 
以下、図15に示す処理をステップ番号に沿って説明する。
（ステップS1501）Tier2ファイルサーバ103の重複排除処理部405は、重複排除対象ファイルリストを作成する。重複排除対象ファイルリストには、重複排除処理が実行されていないファイルのエントリが格納される。
（ステップS1502）重複排除処理部405は、重複排除対象ファイルリストが空か否かを判定する。重複排除対象ファイルリストが空の場合（ステップS1502：YES）、重複排除処理を終了する。
（ステップS1503）一方、重複排除対象ファイルリストが空ではない場合（ステップS1502：NO）、重複排除処理部405は、重複排除対象ファイルリストの先頭エントリのファイルのフィンガープリントを作成する。
（ステップS1504）重複排除処理部405は、ステップS1503で作成したフィンガープリントとコンテンツ管理テーブル500に格納済みのフィンガープリント502とを比較して一致するフィンガープリント502を探索する。
（ステップS1504）ステップS1504の結果、一致するフィンガープリント502が発見されなかった場合（ステップS1504：NO）、ステップS1509に移る。
（ステップS1506）一方、一致するフィンガープリント502が発見された場合（ステップS1504：YES）、当該ファイルとフィンガープリント502が一致したファイルとのデータのビット比較を行う。
（ステップS1507）ステップS1506の結果、データが一致しない場合（ステップS1507：NO）、ステップS1509に移る。
（ステップS1508）一方、ステップS1506の結果、データが一致した場合（ステップS1507：YES）、当該ファイルのデータブロックを解放し、一致したファイルのデータブロックにリンクする。
（ステップS1509）重複排除処理部405は、重複排除結果をコンテンツ管理テーブル500に反映する。具体的には、ステップS1505、ステップS1507の結果が否定的な場合、重複排除処理部405は、当該ファイルに対して新たなコンテンツID501を付与し、フィンガープリント502、ファイル群503に値を格納してコンテンツ管理テーブル500に登録する。一方、ステップS1507の結果が肯定的な場合、重複排除処理部405は、当該ファイルと重複するコンテンツID501に対応するファイル群503に当該ファイルのファイル名を追加し、コンテンツ管理テーブル500から、当該ファイルのみに対応していたコンテンツID501のエントリを削除する。
【００６３】
本実施形態では、Tier2ファイルサーバ103の重複排除処理はバックグラウンドで定期的に行うが、Tier2ファイルシステム201にファイルが格納されたタイミングで重複排除処理を行う場合でも本発明が適用できる。また、Tier2ファイルサーバ103の記憶容量の残容量が所定値以下になった場合に重複排除処理を実行してもよい。
【００６４】
図15では、ステップS1503でファイルのフィンガープリントを作成しているが、フィンガープリントの作成のタイミングはこれに限定しない。例えば、マイグレーション処理でTier2ファイルシステム201にファイルが格納されたタイミング（図10のステップS1005）でそのファイルのフィンガープリントを作成してもよい。
【００６５】
なお、図15では重複排除処理において重複排除対象ファイルリストの先頭エントリのファイルから重複排除を実行する例を示しているが、重複排除対象リストの末端エントリのファイルから重複排除を実行する場合でも同様のことが実現可能である。
【００６６】
以上に説明したように実施例1では、リコール処理の際、Tier2ファイルサーバ103は、Tier2ファイルサーバ103のコンテンツ管理テーブル500が保有する重複ファイル情報をTier1ファイルサーバ102に転送し、Tier1ファイルサーバは、受信した重複ファイル情報をTier1ファイルサーバの重複ファイルテーブル600に格納する。
【００６７】
マイグレーションされているファイルにアクセスがある際、Tier1ファイルサーバ102は、重複ファイル情報を基に、重複ファイルがTier1ファイルシステム200に格納されているか否かを判定し、重複ファイルがTier1ファイルシステム200に格納されていればリコール処理を行わない。この結果、本発明のHSMシステムは、リコール回数を削減し、アクセス時間の向上、Tier1ファイルシステム200の容量削減、Tier間の帯域消費の削減ができる。
【実施例２】
【００６８】
次に、本発明の第二の実施形態を説明する。なお、本実施形態は本発明を限定するものではない。
【００６９】
実施例2は、Tier2ファイルサーバ103がコンテンツ管理テーブル500に保有する重複ファイル情報をTier1ファイルサーバ102に転送するタイミングが実施例1とは異なる。実施例2では、Tier2ファイルサーバ103の重複排除処理部405がステップS1509の処理においてコンテンツ管理テーブル500を更新したタイミングで、重複ファイル情報転送処理部406が、重複ファイル情報をTier1ファイルサーバ102に転送する。Tier2ファイルサーバ103から重複ファイル情報を受信したTier1ファイルサーバ102は、受信した重複ファイル情報を重複ファイルテーブル600に格納する。
【００７０】
重複ファイル情報転送処理部406がTier1ファイルサーバ102に転送する重複ファイル情報は、Tier2ファイルサーバ103のコンテンツ管理テーブル500が持つ重複ファイル情報全体でもよいし、前回転送した情報から変更のあった差分情報でもよい。
【００７１】
Tier2ファイルサーバ103の重複ファイル転送処理部406による、上記の重複ファイル情報の転送処理方法以外は実施例1と同じであり、実施例1と同様の効果が得られる。      
その上、実施例2では、実施例1と異なり、ある重複ファイル群のマイグレーション処理後、一のファイルのリコール処理が行われる前の段階で、Tier1ファイルサーバ102において重複ファイルテーブル600を更新することができる。よって、リコール処理の削減効果が大きい。
【００７２】
以上のように実施例2では、Tier2ファイルサーバ103は、重複排除処理完了時に重複ファイル情報をTier1ファイルサーバ102に転送し、重複ファイル情報を受信したTier1ファイルサーバ102は、受信した重複ファイル情報を重複ファイルテーブル600に格納する。これによって、Tier1ファイルサーバは、スタブのファイルにアクセスがある場合、Tier1ファイルサーバ102に重複ファイルがあるか否か重複ファイルテーブル600を用いて判定し、重複ファイルがある場合にはリコール処理を削減できる。
【実施例３】
【００７３】
次に、本発明の第三の実施形態を説明する。なお、本実施形態は本発明を限定するものではない。実施例3は、Tier2ファイルサーバ103がコンテンツ管理テーブル500に保有する重複ファイル情報をTier1ファイルサーバ102に転送するタイミングが実施例1および実施例2とは異なる。
【００７４】
実施例3では、管理者が設定した周期・タイミングで、重複ファイル情報転送処理部406による重複ファイル情報転送処理がOSによって呼び出され、重複排除転送処理部は、Tier2ファイルサーバ103がコンテンツ管理テーブル500に保有する重複ファイル情報をTier1ファイルサーバ102に転送する。Tier2ファイルサーバ103から重複ファイル情報を受信したTier1ファイルサーバ102は、受信した重複ファイル情報を重複ファイルテーブル600に格納する。
【００７５】
重複ファイル情報転送処理部406がTier1ファイルサーバ102に転送する重複ファイル情報は、Tier2ファイルサーバ103のコンテンツ管理テーブル500が持つ重複ファイル情報全体でもよいし、前回転送した情報から変更のあった差分情報でもよい。
【００７６】
Tier2ファイルサーバ103の重複ファイル転送処理部406による、上記の重複ファイル情報の転送処理方法以外は実施例1および実施例2と同じであり、実施例1および実施例2と同様の効果が得られる。
【００７７】
以上に説明したように実施例3では、Tier2ファイルサーバ103の重複ファイル転送処理が定期的にOSによって呼び出され、重複ファイル情報転送処理部406がTier1ファイルサーバ102に重複ファイル情報を転送する。実施例3により、例えば、管理者が重複ファイル情報を転送するタイミングとして、Tier1ファイルサーバ102及びTier2ファイルサーバ103の処理負荷や、階層間の転送負荷が少ない時間帯に設定することにより、よりTier間の帯域消費の削減を図ることができる。また、Tier1ファイルサーバ102における、クライアントからのファイルアクセス処理やリコール処理への影響を低減することができる。
【実施例４】
【００７８】
次に、本発明の第四の実施形態を説明する。なお、本実施形態は本発明を限定するものではない。実施例4は、Tier1ファイルサーバ102が重複ファイルテーブル600を持たない点が実施例1、2および3と異なる。
【００７９】
実施例4では、Tier1ファイルサーバ102のファイルオペレーション処理部304は、スタブのファイルにアクセスがある場合、当該ファイルの重複ファイルの有無をTier2ファイルサーバ103に問い合わせる。Tier1ファイルサーバ102からの問い合わせを受けたTier2ファイルサーバ103は、当該ファイルの重複ファイルの有無を、コンテンツ管理テーブル500を参照して判定する。Tier2ファイルサーバ103は、当該ファイルの重複ファイルがある場合、そのファイル名（パス）を応答としてTier1ファイルサーバ102に返す。このとき、Tier2ファイルサーバは、当該ファイルの重複ファイルが複数ある場合、複数のファイル名（パス）を応答としてTier1ファイルサーバ102に返す。一方、当該ファイルの重複ファイルがない場合、Tier2ファイルサーバ103は、当該ファイルのファイルデータを応答としてTier1ファイルサーバ102に返す。
【００８０】
該当ファイルの重複ファイルのファイル名（パス）を受信したTier1ファイルサーバは、受信した重複ファイルのファイル名（パス）から対応するファイル管理構造体700を特定し、Tier1ファイルシステム200において重複ファイルがスタブかデータファイルかを判定する。全てのファイルがスタブの場合、リコール処理部306は、図12に示したリコール処理を行い、Tier2ファイルサーバ103に対してファイルデータを要求する。一方、重複ファイルがデータファイルの場合、ファイルオペレーション処理部304は、重複ファイルのファイル管理構造体700のblock_numberフィールド706xを当該ファイルのファイル管理構造体700のblock_numberフィールド706xにコピーすることでデータブロックを参照し、当該ファイルをスタブからデータファイルに変更する。
【００８１】
以上のように実施例4では、Tier1ファイルサーバ102は、スタブのファイルにアクセスがある場合、当該ファイルの重複ファイルの有無をTier2ファイルサーバ103に問い合わせることで、Tier1ファイルサーバ102において重複ファイルテーブル600を必要とせず、実施例1、2および3と同様の効果を得る。さらに、本実施例によると、Tier1ファイルサーバ102に重複ファイルテーブルを保持しないことにより、Tier1ファイルサーバ102の記憶容量を消費しない。また、最新の重複ファイル情報を使用することができるため、リコール回数を削減する効果が大きい。
【実施例５】
【００８２】
次に、本発明の第五の実施形態を説明する。なお、本実施形態は本発明を限定するものではない。実施例5では、Tier1ファイルサーバ102が2つ以上あるとし、それらはLANを通して通信可能とする。
【００８３】
実施例5では、Tier2ファイルサーバ103は、複数のTier1ファイルサーバ102に対してそれぞれ名前空間を用意するが、マイグレーションされた全てのファイルを1つのコンテンツ管理テーブルで管理し、Tier2ファイルサーバ103の重複排除処理部405は、全てのファイルに対して重複排除処理を行う。したがって、別々のTier1ファイルサーバ102からマイグレーションされたファイルのファイルデータが重複している場合、Tier2ファイルサーバ103は、これらを同一のコンテンツとみなす。
【００８４】
Tier2ファイルサーバ103の重複ファイル情報転送処理部406が、重複ファイル情報をあるTier1ファイルサーバ102（ファイルサーバAとする）に転送する際、別のTier1ファイルサーバ（ファイルサーバBとする）の重複ファイル情報を含めて転送できる。ファイルサーバBの重複ファイル情報を受信したファイルサーバAは、ファイルサーバAとファイルサーバBを接続するLANを通してファイルサーバBの重複ファイル情報をファイルサーバBに転送できる。例えば、Tier2ファイルサーバ103は、ファイルサーバAのファイルA-aの重複ファイル情報をファイルサーバAに転送する際、ファイルサーバAのファイルA-aとファイルA-bと、ファイルサーバBのファイルB-aとファイルB-bが同一ファイルデータを持つファイル群として転送する。これを受信したファイルサーバAは、ファイルA-aとファイルA-bが重複ファイルであることをファイルサーバAの重複ファイルテーブル600に格納するとともに、ファイルサーバBにファイルB-aとファイルB-bが重複ファイルであることを転送する。これを受信したファイルサーバBは、ファイルB-aとファイルB-bが重複ファイルであることをファイルサーバBの重複ファイルテーブル600に格納する。これによって、Tier1ファイルサーバ102は、重複ファイル情報をTier2ファイルサーバ103からのみならず、他のTier1ファイルサーバ102から取得できる。本実施例によると、複数のTier1ファイルサーバ102を有する場合、あるTier1ファイルサーバ102とTier2ファイルサーバ103との間の転送負荷が高い状態であってTier2ファイルサーバ103から重複ファイル情報を受信できない場合であっても、他のTier1ファイルサーバ102を経由して重複ファイル情報を受信することができるという効果を有する。
【実施例６】
【００８５】
次に、本発明の第六の実施形態を説明する。なお、本実施形態は本発明を限定するものではない。実施例6では、Tier2ファイルサーバ103は、ブロックレベル重複排除機能を持つ点が上記実施例と異なる。
【００８６】
実施例6では、Tier2ファイルサーバ103は、データブロックごとにユニークなデータブロックIDを割り当て、データブロックを参照するファイルをデータブロックごとに管理する。Tier2ファイルサーバ103は、データブロックIDとそれを参照するファイルの情報をTier1ファイルサーバ102に転送する。これを受信したTier1ファイルサーバ102は、データブロックIDとそれを参照するファイルの情報をテーブルに格納する。
【００８７】
マイグレーションされているファイルにアクセスがある際、Tier1ファイルサーバ102は、データブロックIDとそれを参照するファイルの情報を格納したテーブルを参照し、同じデータブロックを参照するファイルがあるか否かを判定し、同じデータブロックを参照するファイルがデータファイルであれば、そのデータブロックを共有できる。本実施例によると、Tier1ファイルサーバ102に格納されたファイルの一部分に重複したデータブロックがある場合、残りのデータブロックのみリコール処理を行えばよいので、ファイルレベル重複排除と比較して、リコール処理に伴うTier1ファイルサーバ102の容量消費を低減することができる。また、高いリコール回数削減効果を得ることができる。
なお、上述した実施例１から実施例６は、位装置からのアクセス要求を制御し、上位装置から送受信されるファイルを、当該ファイルサーバに接続される記憶装置に格納する手順と、上位装置からのアクセス状況に応じて、記憶領域に格納された第１のファイルを他のファイルサーバに移行する手順と、他のファイルサーバにより、移行された前記第１のファイルと他のファイルとが重複するか否かが判定され、作成された重複ファイル情報を受信する手順と、上位装置から前記第１のファイルに対するリード要求を受信した場合、受信した重複ファイル情報に基づいて、第１のファイルと重複する第２のファイルが前記記憶領域に格納されている否かを判定し、格納されていると判定した場合、当該第２のファイルを用いて上位装置に応答する手順とを実行させるためのプログラムを、Tier1ファイルサーバが読み込むことによって実現されていてもよい。
【００８８】
なお、以上の実施例では、Tier2ファイルサーバ103に格納されたファイルのスタブとして、Tier2ファイルサーバ103内のファイルデータの格納場所を指し示す識別情報を用いるが、データ内容に対応する識別子を用いるものとしてもよい。この場合、Tier1ファイルサーバ102が、スタブとしてファイル管理構造体700に保持する情報は、パス名等のファイルの識別情報ではなく、データ内容に対応する識別子となる。そして、あるファイルに対するアクセス要求に応じて、当該ファイルがTier2ファイルサーバ103からTier1ファイルサーバ102にリコールされる場合、Tier1ファイルサーバ102は、当該ファイルに対応するデータ内容をスタブとして指し示している他のファイルを検索する。検索の結果、抽出された他のファイルが存在する場合、当該ファイルのスタブが指し示す先を、Tier2ファイルサーバ103内のデータ内容に対応する識別子から、リコールしたTier1ファイルサーバ102内のファイルデータの識別子に変更する実施態様としてもよい。
【００８９】
以上により、本発明では、Tier2ファイルサーバ103が保有する重複ファイル情報をTier1ファイルサーバ102に転送し、Tier1ファイルサーバ102は、重複ファイル情報を保持する機能を提供する。マイグレーションされているファイルにアクセスがある際、Tier1ファイルサーバ102は、重複ファイル情報を基に、重複ファイルがTier1ファイルシステム200に格納されているか否かを判定し、重複ファイルがTier1ファイルシステム200に格納されていればリコール処理を行わずに上位装置に応答する。これにより、本発明によると、HSMシステムにおいて、リコール処理の転送量を削減しつつ、多数のファイルを上位装置に提供することができる。また、重複ファイルに対してリコール処理を行わないように上位Tierで情報を管理することにより、上位Tierの記憶容量の消費を削減することができる。また、また、重複ファイルに対してリコール処理を行わないように上位Tierで情報を管理することにより、Tier間の帯域の消費を削減することができる。
【産業上の利用可能性】
【００９０】
本発明は、階層ストレージ管理システムにおいて重複排除機能を適用したファイルサーバに広く適用できる。
【符号の説明】
【００９１】
１００  クライアント
１０１  管理端末
１０２  Tier1ファイルサーバ
１０３  Tier2ファイルサーバ
２００  Tier1ファイルシステム
２０１  Tier2ファイルシステム
３０３  HSMプログラム
３０４  ファイルオペレーション処理部
３０５  マイグレーション処理部
３０６  リコール処理部
４０２  コンテンツ管理プログラム
４０３  コンテンツ管理処理部
４０５  重複排除処理部
４０６  重複ファイル情報転送処理部
５００  コンテンツ管理テーブル
６００  重複ファイルテーブル
７００  ファイル管理構造体
【図１】
0005427533.tif 000002
【図２】
0005427533.tif 000003
【図３】
0005427533.tif 000004
【図４】
0005427533.tif 000005
【図５】
0005427533.tif 000006
【図６】
0005427533.tif 000007
【図７】
0005427533.tif 000008
【図８】
0005427533.tif 000009
【図９】
0005427533.tif 000010
【図１０】
0005427533.tif 000011
【図１１】
0005427533.tif 000012
【図１２】
0005427533.tif 000013
【図１３】
0005427533.tif 000014
【図１４】
0005427533.tif 000015
【図１５】
0005427533.tif 000016
【図１６】
0005427533.tif 000017
【図１７】
0005427533.tif 000018