(57)【特許請求の範囲】
【請求項１】
外部装置からのデータをコンテンツ単位で格納するストレージシステムであって、
前記外部装置からのデータについて、前記コンテンツ単位でバックアップデータを作成するバックアップ処理を実行するバックアップ装置と、前記バックアップ装置と通信可能に接続されており、前記バックアップ装置から受信する前記バックアップデータを格納するストレージ装置とを備え、
前記バックアップ装置は、
前記バックアップデータである前記コンテンツが前記ストレージ装置に格納済みであるか否かを判定するための情報である第１の重複判定情報と、
前記第１の重複判定情報を用いて、前記コンテンツが前記ストレージ装置に格納済みであるか判定する第１のバックアップ処理部とを備え、
前記ストレージ装置は、
前記バックアップデータである前記コンテンツが前記ストレージ装置に格納済みであるか否かを判定するための情報である第２の重複判定情報と、
前記第２の重複判定情報を用いて、前記コンテンツが前記ストレージ装置に格納済みであるか判定する第２のバックアップ処理部とを備え、
前記バックアップデータとしての前記コンテンツについて、前記第１のバックアップ処理部が前記コンテンツが前記ストレージ装置に格納されていないと判定し、前記第２のバックアップ処理部が前記コンテンツが前記ストレージ装置に格納されていると判定した場合、前記第２のバックアップ処理部は前記第２の重複判定情報を前記バックアップ装置に送信し、前記バックアップ装置の前記第１のバックアップ処理部は、受信した前記第２の重複判定情報を前記第１の重複判定情報に組み入れる処理を実行する、
ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記第１の重複判定情報及び前記第２の重複判定情報は、前記バックアップ対象である前記コンテンツを所定のサイズで複数に分割して得られる単位データと、各前記単位データについて求めた固有の情報である単位データ固有情報とを関連付けて格納している、ストレージシステム。
【請求項３】
請求項２に記載のストレージシステムであって、
前記バックアップ装置は、
前記ストレージ装置に格納されている前記コンテンツを特定するための情報であるリストア情報と、
リストアする際に、リストア対象となる前記コンテンツを特定する前記リストア情報を前記ストレージ装置に送信する第１のリストア処理部と、を備え、
前記ストレージ装置は、
前記バックアップ装置から受信した前記リストア情報によってリストア対象である前記コンテンツを特定し、特定された前記コンテンツを構成する前記単位データを前記第２の重複判定情報を用いて特定し、特定した前記単位データによって前記コンテンツをリストアして前記バックアップ装置に送信する第２のリストア処理部とを備えている、ストレージシステム。
【請求項４】
請求項１に記載のストレージシステムであって、
前記バックアップ装置に複数の前記ストレージ装置が通信可能に接続されており、各前記ストレージ装置の前記第２のバックアップ処理部は、前記バックアップ装置の前記第１のバックアップ処理部から前記第１の重複判定情報による判定結果を受信して、前記判定結果が前記ストレージ装置にバックアップ対象の前記コンテンツが格納されていないことを示していた場合、前記第２の重複判定情報を用いてさらに前記ストレージ装置に前記コンテンツが格納されているか判定し、格納されていると判定した場合、前記第２の重複判定情報を前記バックアップ装置に送信する、ストレージ装置。
【請求項５】
請求項１に記載のストレージシステムであって、
前記バックアップ装置に、前記第２の重複判定情報及び前記第２のバックアップ処理部を有しない複数の前記ストレージ装置と、少なくとも一の管理装置とが通信可能に接続されており、
前記管理装置は、
各前記ストレージ装置に関する前記第２の重複判定情報と、
前記第２のバックアップ処理部とを備え、
前記管理装置の前記第２のバックアップ処理部は、前記バックアップ装置の前記第１のバックアップ処理部から前記第１の重複判定情報による判定結果を受信して、前記判定結果が各前記ストレージ装置にバックアップ対象の前記コンテンツが格納されていないことを示していた場合、前記第２の重複判定情報を用いてさらに各前記ストレージ装置に前記コンテンツが格納されているか判定し、いずれかの前記ストレージ装置に格納されていると判定した場合、前記第２の重複判定情報を前記バックアップ装置に送信する、ストレージ装置。
【請求項６】
請求項１に記載のストレージシステムであって、
少なくとも前記バックアップ装置が前記バックアップ装置と前記ストレージ装置とを通信可能に接続している通信ネットワークのトラフィックを監視するネットワーク監視部を備え、前記第１のバックアップ処理部がバックアップ対象である前記コンテンツを前記ストレージ装置へ送信しようとする際に、前記ネットワーク監視部が、前記通信ネットワークのネットワーク負荷が所定のしきい値以上であると判定した場合、前記コンテンツを特定するための固有の情報のみを前記ストレージ装置に送信し、前記コンテンツのデータは送信しない、ストレージシステム。
【請求項７】
請求項２に記載のストレージシステムであって、
前記バックアップ装置は、所定数の前記単位データ及び前記単位データ固有情報の組を格納することができる記憶領域である単位データ記憶領域を備え、
前記バックアップ装置の前記第１のバックアップ処理部は、前記単位データ及び前記単位データ固有情報の組の数が前記所定数に達したと判定した場合に、前記単位データ及び前記単位データ固有情報の組を前記ストレージ装置に送信する、
ストレージシステム。
【請求項８】
請求項２に記載のストレージシステムであって、
前記バックアップ装置の前記第１のバックアップ処理部は、前記第１の重複判定情報を用いて前記単位データが前記ストレージ装置に格納されているか判定し、格納されていないと判定した場合、あらかじめ設定しておいた上限データサイズに従ってバックアップ対象の前記コンテンツを構成する前記単位データのうち、前記ストレージ装置へ送信する前記単位データの数を算出して、前記ストレージ装置に格納されていないと判定された前記単位データを含めて引き続く前記単位データの前記算出された個数を前記ストレージ装置に送信する、
ストレージシステム。
【請求項９】
請求項２に記載のストレージシステムであって、前記バックアップ装置の前記第１のバックアップ処理部は、バックアップ対象である前記コンテンツが、前記第１のバックアップ処理部が識別可能である分割情報によって互いに区分された複数のファイルの集合であるアーカイブデータであると判定した場合、まず、前記コンテンツの各前記ファイルの先頭にある前記単位データについて、前記第１のバックアップ処理部が前記単位データが前記ストレージ装置に格納されていないと判定し、前記第２のバックアップ処理部が前記単位データが前記ストレージ装置に格納されていると判定した場合、前記第２のバックアップ処理部は前記第２の重複判定情報を前記バックアップ装置に送信し、前記バックアップ装置の前記第１のバックアップ処理部は、受信した前記第２の重複判定情報を前記第１の重複判定情報に組み入れる処理を実行し、次いで、各前記ファイル内の後続の前記単位データについて、順次同様の処理を実行する、ストレージシステム。
【請求項１０】
外部装置からのデータをコンテンツ単位で格納するストレージシステムの制御方法であって、
前記ストレージシステムは、前記外部装置からのデータについて、前記コンテンツ単位でバックアップデータを作成するバックアップ処理を実行するバックアップ装置と、前記バックアップ装置と通信可能に接続されており、前記バックアップ装置から受信する前記バックアップデータを格納するストレージ装置とを備え、
前記バックアップ装置は、
前記バックアップデータである前記コンテンツが前記ストレージ装置に格納済みであるか否かを判定するための情報である第１の重複判定情報と、
前記第１の重複判定情報を用いて、前記コンテンツが前記ストレージ装置に格納済みであるか判定する第１のバックアップ処理部とを備え、
前記ストレージ装置は、
前記バックアップデータである前記コンテンツが前記ストレージ装置に格納済みであるか否かを判定するための情報である第２の重複判定情報と、
前記第２の重複判定情報を用いて、前記コンテンツが前記ストレージ装置に格納済みであるか判定する第２のバックアップ処理部とを備え、
前記バックアップデータとしての前記コンテンツについて、前記第１のバックアップ処理部が前記コンテンツが前記ストレージ装置に格納されていないと判定し、前記第２のバックアップ処理部が前記コンテンツが前記ストレージ装置に格納されていると判定した場合、前記第２のバックアップ処理部は前記第２の重複判定情報を前記バックアップ装置に送信し、前記バックアップ装置の前記第１のバックアップ処理部は、受信した前記第２の重複判定情報を前記第１の重複判定情報に組み入れる、
ストレージシステムの制御方法。
【請求項１１】
請求項１０に記載のストレージシステムであって、
前記第１の重複判定情報及び前記第２の重複判定情報は、前記バックアップ対象である前記コンテンツを所定のサイズで複数に分割して得られる単位データと、各前記単位データについて求めた固有の情報である単位データ固有情報とを関連付けて格納している、ストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部装置からのデータを格納するためのストレージシステム及びストレージシステムの制御方法に関する。
【背景技術】
【０００２】
ホスト計算機等の外部装置には、通信ネットワーク経由でストレージ装置が接続される。この種のストレージ装置は、データを記憶する記憶デバイスとして、例えば複数のハードディスク装置（ＨＤＤ：Hard Disk Drive）を備える。保存媒体に要するコスト低減のため、記憶デバイスにデータを格納する際には、データ量の削減処理が実行される。データ量の削減には、ファイル圧縮処理（Compression）や重複排除処理（De-duplication）が用いられる。ファイル圧縮処理は、１ファイル内で同一内容のデータセグメントを縮約することにより、データ容量を削減する。一方、重複排除処理は、１ファイル内だけでなく、ファイル間で検出される同一内容のデータセグメントを縮約することにより、ファイルシステムやストレージシステムの総データ容量を削減する。【０００３】
以下では、重複排除処理の単位となる単位データを「チャンク（Chunk）」という。また、複数のチャンクをまとめたデータを「コンテナ（Container）」という。通常、重複排除処理を効率的に行うため、コンテナには関連性の高いチャンクが集約されている。また、コンテナごとに、格納されている各チャンクについて計算したハッシュ値を記録しているテーブルを「コンテナ索引表（Container Index）」という。また、記憶デバイスに格納する単位である論理的にまとまったデータを「コンテンツ（Content）」という。コンテンツには、通常ファイルの他、例えばアーカイブファイル、バックアップファイル、仮想ボリュームファイルなどの通常のファイルを集約したファイルも含まれる。【０００４】
ホスト計算機から通信ネットワーク経由でストレージ装置にコンテンツを格納する場合、事前に各チャンクがストレージ装置に格納されているかどうかの重複判定をし、格納されていないチャンクのみを送信することで、データの転送量を削減し、効率的なデータ格納処理を行うことが提案されている。例えば、特許文献１、特許文献２を参照されたい。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第５９９０８１０号明細書
【特許文献２】国際公開第ＷＯ２０１２／１０１６７４号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
チャンクの重複判定を行う場合、ホスト計算機で判定する方法とストレージ装置で判定する方法がある。【０００７】
例えば、前記特許文献１には、ストレージ装置で重複判定を行い、ホスト計算機はストレージ装置から重複判定の結果を取得し、新規チャンクのみをストレージ装置に格納する方法が記載されている。【０００８】
しかし、特許文献１の重複排除処理方法では、全てのチャンクについて、ホスト計算機がストレージ装置に重複判定の問い合わせを行う。そのため、ホスト計算機は、ストレージ装置に重複判定に必要な情報を送信し、ストレージ装置から重複判定の結果を受信することが必要となる。これは、ホスト計算機のみで重複判定を行う方式と比較して、ストレージ装置との間でのデータのラウンドトリップ（Roundtrip）分だけ性能が低下する。【０００９】
また、特許文献２には、ホスト計算機で重複判定を行い、その結果に従って新規チャンクのみをストレージ装置に格納する方法が記載されている。【００１０】
しかし、特許文献２の重複排除処理方法では、ホスト計算機からストレージ装置に格納された全データについて、重複判定に用いる情報を保存する必要がある。このような重複排除方法では、例えば格納するデータが大きくなるにつれて、重複判定に用いる情報のサイズも大きくなるため、ホスト計算機のディスク容量を圧迫し、重複排除処理が非効率になる場合がある。【００１１】
そこで、本発明の一つの目的は、外部装置とストレージ装置とで協調して、効率的な重複排除処理を行うことができるストレージシステム及びストレージシステムの制御方法を提供することである。
【課題を解決するための手段】
【００１２】
上記課題及び他の課題を解決するために、本発明の一実施態様は、外部装置からのデータをコンテンツ単位で格納するストレージシステムであって、前記外部装置からのデータについて、前記コンテンツ単位でバックアップデータを作成するバックアップ処理を実行するバックアップ装置と、前記バックアップ装置と通信可能に接続されており、前記バックアップ装置から受信する前記バックアップデータを格納するストレージ装置とを備える。前記バックアップ装置は、前記バックアップデータである前記コンテンツが前記ストレージ装置に格納済みであるか否かを判定するための情報である第１の重複判定情報と、前記第１の重複判定情報を用いて、前記コンテンツが前記ストレージ装置に格納済みであるか判定する第１のバックアップ処理部とを備え、前記ストレージ装置は、前記バックアップデータである前記コンテンツが前記ストレージ装置に格納済みであるか否かを判定するための情報である第２の重複判定情報と、前記第２の重複判定情報を用いて、前記コンテンツが前記ストレージ装置に格納済みであるか判定する第２のバックアップ処理部とを備える。前記バックアップデータとしての前記コンテンツについて、前記第１のバックアップ処理部が前記コンテンツが前記ストレージ装置に格納されていないと判定し、前記第２のバックアップ処理部が前記コンテンツが前記ストレージ装置に格納されていると判定した場合、前記第２のバックアップ処理部は前記第２の重複判定情報を前記バックアップ装置に送信し、前記バックアップ装置の前記第１のバックアップ処理部は、受信した前記第２の重複判定情報を前記第１の重複判定情報に組み入れる処理を実行する。
【発明の効果】
【００１３】
本発明によれば、外部装置とストレージ装置とで協調して、効率的な重複排除処理を行うことができるストレージシステム及びストレージシステムの制御方法を提供することができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】本願発明の第１の実施形態に係るストレージシステム１の全体構成を示す図である。
【図２】第１の実施形態に係るバックアップサーバ及びストレージ装置の構成を示すブロック図である。
【図３】ストレージシステム１におけるバックアップ処理で利用するコンテナ索引表およびチャンク索引表の構成例を示す図である。
【図４】ストレージシステム１におけるリストア処理で利用するコンテナ索引表およびチャンク索引表の構成例を示す図である。
【図５】ストレージシステム１におけるリストア処理で使用するコンテンツ索引表の構成例を示す図である。
【図６】第１の実施形態に係るバックアップ処理を概念的に説明する図である。
【図７】第１の実施形態に係るバックアップ処理の処理手順の一例を示すフローチャートである。
【図８】第１の実施形態に係るリストア処理の処理手順の一例を示すフローチャートである。
【図９】本願発明の第２の実施形態に係るストレージシステム１の全体構成を示す図である。
【図１０】第２の実施形態に係るバックアップ処理の処理手順の一例を示すフローチャートである。
【図１１】本願発明の第３の実施形態に係るストレージシステム１の全体構成を示す図である。
【図１２】第３の実施形態に係るバックアップサーバ、ストレージ装置、及びチャンク管理サーバの構成を示すブロック図である。
【図１３】第３の実施形態に係るバックアップ処理の処理手順の一例を示すフローチャートである。
【図１４】本願発明の第４の実施形態に係るストレージシステム１の全体構成を示す図である。
【図１５】第４の実施形態に係るバックアップ処理の処理手順の一例を示すフローチャートである。
【図１６】第５の実施形態に係るバックアップ処理の処理手順の一例を示すフローチャートである。
【図１７】第６の実施形態に係るバックアップ処理の処理手順の一例を示すフローチャートである。
【図１８】第７の実施形態に係るバックアップ処理の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面に基づいて、本発明の実施の形態を説明する。なお、本発明は、これらの実施形態に限定されるものではなく、その技術思想の範囲において、種々の変形が可能である。
【００１６】
第１の実施形態
第１の実施形態によるストレージシステムの構成
図１に、本願発明の第１の実施形態によるストレージシステム１の全体構成を示す。このストレージシステム１は、複数の拠点２（２ａ，２ｂ，…，２ｎ）にそれぞれ設置されたバックアップサーバ１４（１４ａ，１４ｂ，…，１４ｎ）と、データセンタ３に設置されたストレージ装置１０とを備えて構成される。なお、各拠点を互いに区別することなく、個々の拠点について総括して説明する場合、ａ，ｂ，…，ｎの符号は省略して記す場合がある。
【００１７】
複数の拠点２、及びデータセンタ３は、通信ネットワーク４を介して接続されている。通信ネットワーク４は、例えばＷＡＮ（Wide Area Network）、ＬＡＮ（Local Area Network）、インターネット、公衆回線または専用回線を含む適宜の通信回線として構成することができる。拠点２は、それぞれ業務サーバ５（５ａ，５ｂ，…，５ｎ）、クライアント６（６ａ，６ｂ，…，６ｎ）、及びバックアップサーバ１４（１４ａ，１４ｂ，…，１４ｎ）を備えている。業務サーバ５、クライアント６、及びバックアップサーバ１４は、例えばＬＡＮ等の通信ネットワーク１３（１３ａ，１３ｂ，…，１３ｎ）を介して互いに通信可能に接続されている。
【００１８】
業務サーバ５は、クライアント６からの要求を受け付けて、当該要求に対応するサービスを提供するコンピュータであり、ＣＰＵ（Central Processing Unit）等のプロセッサ、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等のメモリ、及びＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）等の補助記憶装置（図示せず）等を備えて構成される。クライアント６もまた、業務サーバ５と実質的に同様の構成を有するコンピュータであり、業務サーバ５が提供するサービスを利用するユーザのための端末として機能する。
【００１９】
バックアップサーバ１４は、それぞれの拠点２内で接続されている業務サーバ５及びクライアント６のデータを定期的にバックアップし、バックアップデータをデータセンタ３に送信する。また、バックアップサーバ１４は、業務サーバ５及びクライアント６の要求に応じて、データセンタ３から業務サーバ５又はクライアント６に対してデータのリストアを行う。
【００２０】
データセンタ３では、ストレージ装置１０が複数のバックアップサーバ１４から受信したデータをストレージ装置１０の記憶媒体に格納する。また、ストレージ装置１０は、バックアップサーバ１４の要求に応じて、記憶媒体に格納しているデータを読み出し、バックアップサーバ１４へ送信する。
【００２１】
本実施形態によるストレージシステム１では、各拠点２に設置されたバックアップサーバ１４と、データセンタ３に設置されたストレージ装置１０とが連携して、効率的にデータの重複排除を行うものである。
【００２２】
図２は、図１に示したストレージシステム１の拠点２ａに設置されているバックアップサーバ１４ａと、データセンタ３に設置されているストレージ装置１０との構成例を示すブロック図である。ここでは、バックアップサーバ１４ａのみを図示しているが、他の拠点２ｂ〜２ｎに設置されているバックアップサーバ１４ｂ，…，１４ｎも実質的に同様の構成を有する。
【００２３】
まず、バックアップサーバ１４ａの構成例について説明する。図２に示すように、バックアップサーバ１４ａは、主に、ＣＰＵ（Central Processing Unit）等のプロセッサ１０２、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等のメモリ１０３、及びＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）等の補助記憶装置１０４（以下「ＨＤＤ」で示す）、及びＮＩＣ（Network Interface Card）等の通信ネットワーク４との通信インタフェースであるネットワークインタフェース１０５で構成される。プロセッサ１０２、メモリ１０３、ＨＤＤ１０４、及びネットワークインタフェース１０５は、システムバス１０８を介して互いに通信可能に接続される。
【００２４】
プロセッサ１０２は、ＣＰＵ等を含む演算処理装置として機能し、メモリ１０３に記憶されているプログラム、演算パラメータ等に従って、バックアップサーバ１４ａの動作を制御する。
【００２５】
メモリ１０３には、バックアップサーバ１４側のバックアッププログラム１０６、及びリストアプログラム１０７が格納されている。また、メモリ１０３は、ＨＤＤ１０４から読みだされた各種情報を記憶するために用いられるほか、プロセッサ１０２のワークメモリとして用いられる。ＨＤＤ１０４には、各種ソフトウェアや管理情報、バックアップデータなどが格納されている。なお、バックアッププログラム１０６、及びリストアプログラム１０７をＨＤＤ１０４に格納しておき、これらのプログラムをプロセッサによって実行する際にＨＤＤ１０４からメモリ１０３に読み出すようにしてもよい。
【００２６】
メモリ１０３にはまた、バックアッププログラム１０６、及びリストアプログラム１０７が実行される際に参照されるテーブルである、コンテナ索引表３２０（第１の重複判定情報）が格納されている。及びコンテナ索引表３２０は、ＨＤＤ１０４に格納しておき、バックアッププログラム１０６、及びリストアプログラム１０７が参照する際に必要に応じてメモリ１０３にロールインされるようにすることができる。
【００２７】
次に、バックアップサーバ１４ａで実行されるプログラムについて説明する。バックアッププログラム１０６は、バックアップデータの決定、重複判定処理等のデータ処理を行う機能を提供し、ネットワークインタフェース１０５を介してストレージ装置１０へバックアップデータを送信する。また、バックアッププログラム１０６は、ネットワークインタフェース１０５を介してストレージ装置１０から重複判定処理に必要な情報を受信する。
【００２８】
リストアプログラム１０７は、ネットワークインタフェース１０５を介してストレージ装置１０からリストア処理に必要なバックアップデータを受信し、元データの復元を行う。
【００２９】
次に、ストレージ装置１０の構成例について説明する。ストレージ装置１０は、バックアップサーバ１４ａと同様に、主に、プロセッサ１１２、メモリ１１３、ＨＤＤ１１４、及びネットワークインタフェース１１５で構成される。プロセッサ１１２、メモリ１１３、ＨＤＤ１１４、及びネットワークインタフェース１１５は、システムバス１１８を介して相互に通信可能に接続される。
【００３０】
プロセッサ１１２は、ＣＰＵ等を含む演算処理装置として機能し、メモリ１１３に記憶されているプログラム、演算パラメータ等に従って、ストレージ装置１０の動作を制御する。
【００３１】
メモリ１１３には、ストレージ装置１０側のバックアッププログラム１１６、及びリストアプログラム１１７が格納されている。メモリ１１３は、ＨＤＤ１１４から読みだされた各種情報を記憶するために用いられるほか、プロセッサ１１２のワークメモリとして用いられる。ＨＤＤ１１４には、各種ソフトウェア、管理情報、及び重複排除処理後のデータなどが記憶されている。
【００３２】
メモリ１１３にはまた、バックアッププログラム１１６、及びリストアプログラム１１７が実行される際に参照されるテーブルである、チャンク索引表３１０、コンテナ索引表３２０、及びコンテンツ索引表３７０が格納されている。チャンク索引表３１０、コンテナ索引表３２０、及びコンテンツ索引表３７０は、ＨＤＤ１１４に格納しておき、バックアッププログラム１１６、及びリストアプログラム１１７が参照する際に必要に応じてメモリ１１３にロールインされるようにすることができる。チャンク索引表３１０、コンテナ索引表３２０、及びコンテンツ索引表３７０は、第２の重複判定情報を構成する。
【００３３】
次に、ストレージ装置１０で実行されるプログラムについて説明する。バックアッププログラム１１６は、バックアップサーバ１４ａから受信したデータに対する重複排除処理を行い、重複排除処理後のデータをＨＤＤ１１４に格納する。バックアッププログラム１１６はまた、ネットワークインタフェース１１５を介して、バックアップサーバ１４ａで重複判定処理を行う際に必要となる情報をバックアップサーバ１４ａへ送信する。
【００３４】
リストアプログラム１１７は、バックアップサーバ１４ａから受信するリストア要求に対応するデータをＨＤＤ１１４から読み出し、ネットワークインタフェース１１５を介して、バックアップサーバ１４ａに送信する。
【００３５】
バックアップ処理及びリストア処理の概要
次に、本実施形態に係るバックアップ処理及びリストア処理の概要について説明する。
【００３６】
ストレージ装置１０に搭載する重複排除機能の概要
まず、本実施形態に係る重複排除機能の概要を説明する。本実施形態に係るバックアップサーバ１４のバックアッププログラム１０６及びストレージ装置１０のバックアッププログラム１１６には、バックアップ対象データのデータ量を削減する処理機能が搭載されている。データ量の削減には、例えばファイル圧縮処理、重複排除処理等のデータ処理が用いられる。ファイル圧縮処理は、１ファイル内に含まれる同一内容のデータセグメント（単位データ）を縮約することにより、データ容量を削減する処理である。一方、重複排除処理は、１ファイル内だけでなく、複数のファイル間で検出される同一内容のデータセグメントを縮約することにより、ファイルシステム、ストレージシステム等に格納されるデータの総データ容量を削減するための処理である。
【００３７】
本実施形態の説明では、バックアップデータについての重複排除処理の単位となるデータセグメントを「チャンク」といい、複数のチャンクをまとめたデータを「コンテナ」という。また、記憶デバイスに格納する単位である論理的にまとまったデータを「コンテンツ」という。コンテンツには、通常のファイルの他、例えばアーカイブファイル、バックアップファイル、仮想ボリュームファイルなどの通常のファイルを集約したファイルが含まれる。
【００３８】
一つのコンテナは、互いに関連性の高いチャンクが集約されるように作成される。例えば、各コンテナに対して、予め所定のチャンク数またはデータ容量を設定し、１または２以上のコンテンツから生成されたチャンクをコンテナが一杯になるまでまとめることで、データのローカリティを考慮したコンテナの生成が可能である。言い換えれば、あるコンテンツのバックアップデータから元データをリストアする場合、そのコンテンツの最初のチャンクが格納されているコンテナが特定されれば、後続のチャンクについても同じコンテナから取得可能である可能性が高い。したがって、特定のコンテンツをリストアするために、異なるコンテナをＨＤＤ１１４からメモリ１１３に呼び出す処理が削減できることが期待される。
【００３９】
一般に、一つのチャンクのサイズは数キロバイト以上である。このため、重複判定処理の実行時に、チャンクの先頭から順番にチャンク同士を比較すると、多くの処理時間とコストを必要とする。そこで、本実施形態に係るストレージ装置１０では、チャンクのメッセージダイジェストを利用し、短時間かつ低コストで重複判定処理の実行を可能としている。メッセージダイジェストとは、任意の長さのデータ入力に対し、固定長のダイジェストを出力する技術である。本明細書では、メッセージダイジェストの出力結果を、「フィンガプリント（FP：Finger Print）」という。フィンガプリントは、任意のハッシュ関数を用いて取得することができる。このハッシュ関数としては、例えばＳＨＡ２５６などの、乱数性が極めて高く、各チャンクに対してハッシュ値が一意に定まる可能性の高いハッシュ関数を利用することが好ましい。
【００４０】
まず、バックアップサーバ１４のバックアッププログラム１０６におけるチャンク単位の重複排除方法を説明する。
【００４１】
バックアップサーバ１４のバックアッププログラム１０６では、任意のチャンクをストレージ装置１０に送信する前に、当該送信しようとするチャンクが、ストレージ装置１０に既に同じ内容が格納されているチャンク（以下「重複チャンク」という）か、まだ格納されていないチャンク（以下「新規チャンク」という）かを判定する。なお、バックアップサーバ１４は、ストレージ装置１０に格納されている全チャンクの情報を保有しているわけではないため、重複チャンクを新規チャンクと判定してしまう場合もある。
【００４２】
そこで、送信しようとする前記チャンクが新規チャンクと判定した場合、バックアッププログラム１０６は、当該チャンクと当該チャンクのフィンガプリント（ハッシュ値）とをストレージ装置１０に送信する。後述するように、新規チャンクと判定した場合は、ストレージ装置１０でも重複排除処理が行われるため、重複チャンクが多重登録されることはない。一方、重複チャンクと判定された場合、バックアッププログラム１０６は、当該チャンクをストレージ装置１０へ送信せずに、その格納場所を示すリンク情報をストレージ装置１０に送信する。
【００４３】
次に、ストレージ装置１０のバックアッププログラム１１６におけるチャンク単位の重複排除方法を説明する。
【００４４】
ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４から受信した任意のチャンクをＨＤＤ１１４に格納する前に、受信した当該チャンクが、既にＨＤＤ１１４に格納されているチャンクと同じ内容のチャンクである重複チャンクか、まだＨＤＤ１１４には格納されていない新規チャンクかを判定する。
【００４５】
受信した当該チャンクが新規チャンクと判定された場合、バックアッププログラム１１６は、当該チャンクをそのままＨＤＤ１１４に格納する。一方、受信した当該チャンクが重複チャンクと判定された場合、バックアッププログラム１１６は、当該チャンクをＨＤＤ１１４に格納せずに、その格納場所を示すリンク情報をＨＤＤ１１４に格納する。また、バックアップサーバ１４から重複チャンクのリンク情報を受信した場合は、そのままＨＤＤ１１４へ格納する。
【００４６】
このように、本実施形態に係るバックアップサーバ１４のバックアッププログラム１０６及びストレージ装置１０のバックアッププログラム１１６は、互いに連携してチャンクの重複排除処理を繰り返し実行し、重複チャンクの多重登録を防止する。この重複チャンクの排除処理によりＨＤＤ１１４の使用容量を抑制することができるとともに、バックアップ処理を高速化することができる。
【００４７】
前述したように、「コンテナ」は、１または２以上のコンテンツを分割して得られる複数のチャンクで構成される、ＨＤＤ１１４にデータを格納する際の処理単位である。また、各「コンテナ」に対し、ストレージ装置１０のバックアッププログラム１１６は、各コンテナを構成する各チャンクの配置を管理するコンテナ索引表を作成する。コンテナ索引表には、チャンクのオフセット（コンテナ内におけるチャンクの位置）及びチャンクのサイズが格納される。コンテナ索引表は、チャンクの重複判定に利用される。
【００４８】
また、ストレージ装置１０のバックアッププログラム１１６は、チャンク索引表も作成する。チャンク索引表は、バックアップデータの分割により生成されたチャンクがどのコンテナ索引表に格納されているかを示すテーブルである。チャンク索引表は、チャンクを格納するコンテナが決定された時に、ストレージ装置１０により作成される。チャンク索引表は、バックアップ処理の実行時に、チャンクの重複排除判定に使用するコンテナ索引表を決定するために利用される。コンテナ索引表及びチャンク索引表の詳細は後述する。
【００４９】
本実施形態では、前述したコンテナ索引表に各チャンクのフィンガプリントを格納し、重複判定処理時には、チャンクのフィンガプリント同士を比較する。これにより、チャンク同士をビット単位で比較する場合に比べて、重複判定処理の高速化及び低コスト化を実現することができる。
【００５０】
なお、データの完全性を保証し、信頼性の高いバックアップ処理を実現するために、本実施形態では、ライトワンス型の記憶装置を使用してもよい。ライトワンス型の記憶装置では、データの書き込みは１回に限り可能であるが、書き込まれたデータの読み取りは何度でも可能である。ライトワンス型の記憶装置に書き込まれたデータは、消去も改変もできないため、証拠保全のためのデータのアーカイブなどに適している。このようなライトワンス型記憶装置には、例えばＲＯＭ光ディスクを使用する光ディスク装置がある。一般的に、磁気ディスク装置は書き込まれたデータを更新できるため、ライトワンス型の記憶装置ではない。しかし、ファイルシステム、ドライバ装置等の構成を工夫して追記のみを許可することにより（すなわちデータの上書きを禁止することにより）、磁気ディスク装置をライトワンス型の記憶装置として利用することができる。本実施形態では、主に、データのバックアップに適した追記型のハードディスク装置をバックアップ用の記憶デバイスに適用することが好ましい。
【００５１】
前述したコンテナには、予め所定のチャンク数またはデータ容量が設定されている。このため、チャンクは、コンテナが一杯になるまでメモリ１１３側で集約され、コンテナが一杯になると、コンテナ単位でバックアップ用の記憶デバイス（ＨＤＤ１１４）に書き込まれる。例えば記憶デバイスに追記型のハードディスク装置を使用する場合、ストレージ装置１０は、コンテナが一杯になるまでメモリ１１３上のコンテナにチャンクを追記する。同時に、ストレージ装置１０は、コンテナ内のチャンクの配置を管理するコンテナ索引表と、チャンクとコンテナ索引表との対応関係を管理するチャンク索引表とを作成する。なお、バックアップデータには、バックアップ世代毎に必ず出現する普遍チャンクが存在し、その普遍チャンクは初期バックアップ時に用意されたコンテナに格納される。
【００５２】
本実施形態で使用する各種索引表の構成
次に、本実施形態におけるチャンク索引表３１０及びコンテナ索引表３２０の構成例について説明する。図３、図４に、本実施形態のバックアップ処理及びリストア処理において使用されるコンテナ索引表３２０の構成例とチャンク索引表３１０の構成例を示している。コンテナ索引表３２０は、コンテナ単位で作成されるテーブルである。また、チャンク索引表３１０は、コンテナに格納されるチャンクを管理するためのテーブルである。
【００５３】
図３には、コンテナ索引表３２０のうち、特定のコンテナについて作成されたコンテナ索引表Ｔｇ（３２０）を例示している。コンテナ索引表Ｔｇ（３２０）は、フィンガプリント３２１、コンテナオフセット３２２、及びチャンク長３２３の各項目を有している。
【００５４】
フィンガプリント３２１には、各チャンクのフィンガプリント（本実施形態では適宜のハッシュ関数により算出されるハッシュ値）が格納される。コンテナオフセット３２２には、コンテナ内におけるチャンクの先頭位置を与えるオフセット値が格納される。チャンク長３２３には、チャンクの長さを示す情報が格納される。すなわち、コンテナ索引表Ｔｇ（３２０）の各行には、チャンク毎の管理情報が格納される。図３に例示するコンテナ索引表Ｔｇ（３２０）には、チャンクｂの管理情報３２０ｂ、チャンクｃの管理情報３２０ｃ、及びチャンクｆの管理情報３２０ｆが格納されている。各チャンクに関する管理情報には、各チャンクを表す符号を添え字として付している。例えば、チャンクｂについて算出されたフィンガプリント３２１は、ＦＰｂと表している。
【００５５】
複数のコンテナ索引表３２０は、チャンク索引表３１０により管理される。チャンク索引表３１０には、各コンテナを互いに識別するための符号であるコンテナＩＤ３１２と、各チャンクのフィンガプリント３１１とが対応づけられて記録されている。ここでのコンテナＩＤ３１２は、コンテナ索引表３２０を参照可能とするポインタ情報としても利用される。本実施形態では、コンテナＩＤ３１２と対応するコンテナ索引表３２０は、ＵＵＩＤ（Universally Unique Identifier）と呼ばれる識別子で共通化されている。
【００５６】
なお、チャンク索引表３１０を参照するか否かは、新規チャンクか否かを識別するフィルタ処理の処理結果に応じて判断してもよい。すなわち、チャンク索引表３１０に記録されていないことが確実なチャンクについては、チャンク索引表３１０の参照処理自体をスキップし、当該チャンクを新規コンテナに直接格納してもよい。この処理手法を採用すれば、ストレージ装置１０のバックアッププログラム１１６がチャンク索引表３１０を参照する回数を低減することができ、バックアップ処理をより高速化することができる。
【００５７】
いま、例えば、ストレージ装置１０のＨＤＤ１１４に、コンテナ３８０、コンテナ索引表３２０、チャンク索引表３１０、及びコンテンツ索引表３７０の４つのファイルが格納され、それぞれ４つのディレクトリの下に配置されているものとする。
Container/uuid-Cf           …コンテナ本体
ContainerIndex/uuid-Cf      …コンテナ索引表データベース
ChunkIndex/fpの上位Nbit    …チャンク索引表データベース
Contents/uuid-Cf            …コンテンツ索引表データベース
【００５８】
図３の例では、全チャンクのフィンガプリント３１１とコンテナＩＤ３１２とをチャンク索引表３１０に登録しているが、登録するチャンク数を削減することもできる。前記のように、各コンテナ３８０はデータのローカリティを考慮して作成される。また、バックアップデータには、バックアップ世代間で同一、または一部のみ修正されたデータが多く含まれるため、あるコンテナ３８０に格納されているチャンクが、任意のコンテンツに含まれていた場合、同一のコンテナに格納されている他のチャンクも、該コンテンツに含まれている可能性は非常に高い。そのため、チャンク索引表３１０から、コンテナ索引表３２０を検索した後は、該コンテナ索引表３２０を用いることで、コンテンツの重複判定が可能となる。図４に、チャンク索引表３１０に登録するチャンクを削減した場合のコンテナ索引表３２０とチャンク索引表３１０との一例を示している。
【００５９】
ここで、例えばコンテナ索引表Ｔｇ（３２０）が、ストレージ装置１０のメモリ１１３上に展開されていない場合において、チャンクｂ、チャンクｃ、及びチャンクｆを含むコンテンツについて実行されるバックアップ処理について考える。まず、ストレージ装置１０のバックアッププログラム１１６は、チャンクｂのフィンガプリントFPbを使用してチャンク索引表３１０を検索する。図３の場合、フィンガプリントFPbには、コンテナＩＤのＴｇ（３２０）が対応付けられている。そこで、バックアッププログラム１１６は、コンテナ索引表Ｔｇ（３２０）をＨＤＤ１１４から読みだして、メモリ１１３上に展開する。チャンクｃとチャンクｆの重複判定は、展開されたコンテナ索引表Ｔｇ（３２０）を用いて行うことができる。
【００６０】
このように、チャンク索引表３１０に登録するチャンク数を削減することで、重複排除処理に必要なストレージ容量及びメモリ使用量を削減することができる。また、チャンク索引表３１０のチャンク登録数が減るため、任意のチャンクに対応するフィンガプリント３１１の検索を高速化することができる。
【００６１】
次に、図５を参照して、リストア処理実行時に使用するコンテンツ索引表３７０の構成例を説明する。コンテンツ索引表３７０は、コンテンツ単位で作成されるテーブルであって、コンテンツに含まれるチャンクを管理するテーブルである。コンテンツ索引表３７０は、コンテンツＩＤ３７１、フィンガプリント３７２、コンテナＩＤ３７３、コンテンツオフセット３７４、及びチャンク長３７５から構成される。
【００６２】
コンテンツＩＤ３７１には、各コンテンツを互いに識別するための情報が格納される。フィンガプリント３７２には、各チャンクのフィンガプリント（各チャンクについて適宜のハッシュ関数を用いて算出されたハッシュ値）が格納される。コンテナＩＤ３７３には、チャンクが格納されている各コンテナを互いに識別するための識別情報が格納される。コンテンツオフセット３７４には、各コンテンツ内のチャンクの位置を示す情報が格納される。チャンク長３７５には、各チャンクの長さを示す情報が格納される。
【００６３】
例えば図５では、コンテンツ索引表の例として、Sf1（３７０）、Sf2（３７０）、Sf3（３７０）、及びSfn（３７０）を示している。例えば、コンテンツf3に対応するSf3（３７０）の情報により、コンテンツf3は、チャンクｂ、チャンクｃ、チャンクｄ、チャンクｅ、及びチャンクｆにより再構成できること、コンテンツオフセット３７４とチャンク長３７５に基づいて、各チャンクｂ〜ｆがどのコンテナのどの領域に格納されているかを知ることができる。
【００６４】
コンテンツ索引表３７０を構成するコンテンツのコンテンツオフセット３７４とチャンク長３７５とは、コンテンツ内のチャンクの論理的な配置を示している。なお、前述したコンテナ索引表３２０（図３）におけるオフセット３２２とチャンク長３２３とは、各コンテナ内のチャンクの論理的な配置を示している。
【００６５】
リストア処理実行時、ストレージ装置１０のリストアプログラム１１７は、コンテンツ索引表３７０を参照し、各チャンクのコンテナＩＤ３７３を取得して、当該コンテナＩＤ３７３を用いてコンテナ索引表３２０を検索する。次に、リストアプログラム１１７は、コンテナ索引表３２０に格納されている各チャンクの格納位置情報に基づいて、ＨＤＤ１１４から読みだしたコンテナ３８０から、該当するチャンクを取得する。この後、リストアプログラム１１７は、コンテンツ索引表３７０の論理的な配置に従ってリストア対象であるコンテンツを再構成する。
【００６６】
ストレージシステム１に搭載する重複排除機能の概要
次に、本実施形態のストレージシステム１において実現される重複排除処理の概要について説明する。図６に、本実施形態のストレージシステム１において実現される重複排除処理の概要を模式的に示している。なお、図６では、ストレージシステム１に設けられるバックアップサーバ１４としてバックアップサーバ１４ａのみを図示しているが、図１と同様に複数のバックアップサーバ１４（１４ａ，１４ｂ，…，１４ｎ）が、通信ネットワーク４を介してストレージ装置１０と接続されているものとする。
【００６７】
図６に示すように、バックアップ対象のコンテンツは、チャンクａ、チャンクｂ、チャンクｃ、チャンクｄ、チャンクｅ、及びチャンクｆで構成されている。また、ストレージ装置１０には、チャンク索引表Ｕ（３１０）、及びコンテナ索引表Ｔｇ（３２０）、Ｔｃ（３２０）が格納されている。
【００６８】
ここで、バックアップサーバ１４ａが最初のバックアップ処理を実行する場合であって、バックアップサーバ１４ａのメモリ１０３及びＨＤＤ１０４には、まだコンテナ索引表３２０が格納されていない場合を考える。
【００６９】
まず、バックアップサーバ１４ａのバックアッププログラム１０６は、先頭チャンクａの重複判定を行う。しかし、メモリ１０３及びＨＤＤ１０４にはコンテナ索引表３２０が格納されていないため、バックアッププログラム１０６は、チャンクａを新規チャンクと判定し、チャンクａ及びチャンクａのフィンガプリントＦＰａをストレージ装置１０に送信する。
【００７０】
ストレージ装置１０のバックアッププログラム１１６は、受信したチャンクａについて、チャンク索引表Ｕ（３１０）を用いて重複判定を行う。このとき、ストレージ装置１０のメモリ１１３に展開されているコンテナ索引表３２０がある場合には、該コンテナ索引表３２０を参照してチャンクａが重複して格納されているかを先に検索してもよい。チャンク索引表Ｕ（３１０）を参照することにより、チャンクａはコンテナＴｇ（３８０）に格納済みであると判定されるため、バックアッププログラム１１６は、チャンクａを重複チャンクとして処理し、コンテナ索引表Ｔｇ（３２０）をバックアップサーバ１４ａに送信する。
【００７１】
バックアップサーバ１４aのバックアッププログラム１０６は、受信したコンテナ索引表Ｔｇ（３２０）をメモリ１０３に展開し、その後にバックアップ処理されるチャンクに対する重複判定処理に用いる。コンテナ索引表Ｔｇ（３２０）には、チャンクｂ、チャンクｃ、チャンクｄのフィンガプリントＦＰｂ、ＦＰｃ、及びＦＰｄがそれぞれ登録されているため、バックアッププログラム１０６は、チャンクｂ、チャンクｃ、及びチャンクｄを重複チャンクと判定する。
【００７２】
しかし、チャンクｅのフィンガプリントＦＰｅはコンテナ索引表Ｔｇ（３２０）に登録されていないため、バックアッププログラム１０６は、チャンクｅを新規チャンクと判定し、チャンクｅとそのフィンガプリントＦＰｅをストレージ装置１０へ送信する。
【００７３】
ストレージ装置１０のバックアッププログラム１１６は、チャンクａの場合と同様に、チャンクｅについて重複判定を行い、該当するコンテナ索引表Ｔｃ（３２０）をバックアップサーバ１４ａに送信する。
【００７４】
バックアップサーバ１４ａのバックアッププログラム１０６は、受信したコンテナ索引表Ｔｃ（３２０）と、既にメモリ１０３に展開しているコンテナ索引表Ｔｇ（３２０）を用いてその後のチャンクｆに対して、重複判定処理を行う。
【００７５】
前述したように、データのローカリティを考慮して、各コンテナにはチャンクが集約されているため、チャンクａを格納していたコンテナＴｇ（３８０）に、続くチャンクｂ、チャンクｃ、及びチャンクｄが格納されている可能性は高く、効率的な重複排除処理を行うことができる。
【００７６】
なお、バックアップサーバ１４のバックアッププログラム１０６が重複判定処理を行う際には、メモリ１０３及びＨＤＤ１０４にコンテナ索引表３２０が格納されていない場合を除き、少なくとも１つ以上のコンテナ索引表３２０のフィンガプリント３２１を参照する。このため、バックアッププログラム１０６は、コンテナ索引表３２０をメモリ１０３上に展開させる必要がある。しかし、メモリ１０３の容量は有限であって、バックアッププログラム１０６が使用する全てのコンテナ索引表３２０を常時メモリ１０３上に展開させておくことは困難である。そこで、バックアップサーバ１４においては、ＨＤＤ１０４からメモリ１０３にコンテナ索引表３２０をロールインしたり、メモリ１０３からＨＤＤ１０４にコンテナ索引表３２０をロールアウトしたりして、メモリ１０３の記憶資源を有効活用するようにしている。なお、ロールアウトしたコンテナ索引表３２０は、ＨＤＤ１０４から削除しても良い。また、ストレージ装置１０におけるバックアッププログラム１１６の重複判定の際も、ストレージ装置１０のメモリ１１３、ＨＤＤ１１４に対して同様の処理を行う。
【００７７】
なお、本実施形態では、バックアップサーバ１４のバックアッププログラム１０６及びストレージ装置１０のバックアッププログラム１１６は、各チャンクのフィンガプリント３２１を比較することで重複判定を行っているが、重複判定の信頼性を向上させるために、チャンク自体をビット単位で比較し、重複判定を行っても良い。その場合、ストレージ装置１０のバックアッププログラム１１６は、該当するチャンクを含むコンテナ３８０本体をバックアップサーバ１４に送信する。
【００７８】
本実施形態によるバックアップ処理動作の詳細
次に、本実施形態のストレージシステム１において実行されるバックアップ処理について説明する。図７に、ストレージシステム１に設けられているバックアップサーバ１４のバックアッププログラム１０６、及びストレージ装置１０のバックアッププログラム１１６により実行されるバックアップ処理動作の処理フロー例を示している。なお、図７の処理フロー例において、各処理ステップに付した符号Ｓは、ステップの略号である。
【００７９】
まず、バックアップサーバ１４のバックアッププログラム１０６は、クライアント６からの指示等に基づいてバックアップ処理を開始し（Ｓ１００）、バックアップ対象であるコンテンツを特定するためのコンテンツＩＤ３７１を、ストレージ装置１０から取得する（Ｓ１０１）。コンテンツＩＤ３７１はストレージ装置１０のバックアッププログラム１１６が、コンテンツ索引表３７０において管理しているため、このステップが設けられる。次いで、バックアップサーバ１４のバックアッププログラム１０６は、バックアップ対象のコンテンツをチャンクsi（ｉ＝１、２、…、ｎ）に分解する（Ｓ１０２）。
【００８０】
次に、バックアッププログラム１５０は、チャンクsiの管理情報msi（ｉ＝１、２、…、ｎ）を作成する（Ｓ１０３）。チャンクの管理情報msiには、チャンクのフィンガプリント３２１、コンテンツ内でのチャンクの位置（オフセット）３２２、及びチャンクの長さ３２３が含まれる。
【００８１】
続いて、バックアッププログラム１０６は、ループ処理に用いられるカウンタｉを初期化（ｉ＝０）し、以下で説明するチャンクsiの重複判定を開始する（Ｓ１０４）。
【００８２】
バックアッププログラム１０６は、メモリ１０３上に展開されたコンテナ索引表３２０を検索し、各チャンクについて重複判定を行う（Ｓ１０５）。具体的には、バックアッププログラム１０６は、Ｓ１０２において分解したチャンクのフィンガプリントと一致するフィンガプリント３２１がコンテナ索引表３２０に含まれるか否かを判定する。バックアッププログラム１０６は、判定対象であるチャンクのフィンガプリントがコンテナ索引表３２０のフィンガプリント３２１と一致する場合に「重複あり」と判定し、一致しない場合に「重複なし」と判定する。
【００８３】
Ｓ１０５において、コンテナ索引表３２０にフィンガプリントが一致するチャンクsiがあると判定した場合（すなわち、「重複あり」と判定された場合）、バックアッププログラム１０６は、Ｓ１１１の処理を実行する。一方、Ｓ１０５において、コンテナ索引表３２０にフィンガプリント３２１が一致するチャンクsiがないと判定した場合（「重複なし」と判定された場合）、バックアッププログラム１０６は、Ｓ１０６の処理を実行する。
【００８４】
Ｓ１０６において、バックアッププログラム１０６は、チャンクsiとチャンクsiの管理情報msiをストレージ装置１０に送信する。
【００８５】
次いで、Ｓ１０７において、ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４から受信したチャンクsiの重複判定を行う。Ｓ１０７においてチャンクsiが新規チャンクであると判定された場合、バックアッププログラム１１６は、Ｓ１０８の処理を実行する。
【００８６】
Ｓ１０８では、ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４に対して、Ｓ１０７における重複判定の結果を送信する。
【００８７】
続いて、ストレージ装置１０のバックアッププログラム１１６は、コンテナ３８０にチャンクsiを書き出し、コンテナ索引表３２０にチャンクsiの管理情報msiを書き出し、チャンク索引表３１０にチャンクsiのメッセージダイジェスト（ハッシュ値）を書き出し（Ｓ１０９）、Ｓ１１１の処理を実行する。
【００８８】
一方、Ｓ１０７においてチャンクsiにつき「重複あり」と判定された場合、ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４から受信したチャンクsiのフィンガプリントと一致するフィンガプリント３２１を含んだコンテナ索引表３２０をバックアップサーバ１４に送信し（Ｓ１１０）、Ｓ１１１を実行する。なお、バックアップサーバ１４のバックアッププログラム１０６は、ストレージ装置１０からコンテナ索引表３２０を受信した場合は、「重複あり」の判定結果を受信したこととする。
【００８９】
Ｓ１１１では、ストレージ装置１０のバックアッププログラム１１６は、リストア処理の際に使用するために、図５に例示した、バックアップ対象であるコンテンツについてのコンテンツ索引表３７０を作成してチャンクに関する管理情報msiを登録する。
【００９０】
この後、バックアップサーバ１４のバックアッププログラム１０６は、全てのチャンクについて、重複判定処理及びコンテンツ索引表３７０への登録処理が終わったか否かを判定する（Ｓ１１２）。具体的には、バックアップサーバ１４のバックアッププログラム１０６は、バックアップ対象であるコンテンツに含まれるチャンク数ｎと、カウンタｉのカウンタ数とを比較する。
【００９１】
Ｓ１１２において、バックアップ対象のコンテンツに含まれる全てのチャンクに対して重複判定処理及びコンテンツ索引表登録処理が終わったと判定された場合（Ｓ１１２、Ｎｏ）、バックアップサーバ１４のバックアッププログラム１０６は、リストア用のスタブファイルを作成して（Ｓ１１４）、当該コンテンツのバックアップ処理を終了する（Ｓ１１５）。スタブファイルには、リストア処理実行時に該当するコンテンツ索引表３７０を検索するためのコンテンツＩＤ３７１が格納される。
【００９２】
一方、Ｓ１１２において、バックアップ対象のコンテンツに含まれる全てのチャンクに対して重複判定処理及びコンテンツ索引表登録処理が終わっていないと判定された場合（Ｓ１１２、Ｙｅｓ）、バックアップサーバ１４のバックアッププログラム１０６は、カウンタｉに１を加算し、Ｓ１０５に処理を戻す（Ｓ１１３）。
【００９３】
なお、図７の処理フロー例では、Ｓ１０２及びＳ１０３において、コンテンツの全チャンクを分割し、全チャンクの管理情報を作成した後に、Ｓ１０４以降で各チャンクの重複排除処理を行っているが、チャンクが分割されるごとに、順次分割されたチャンクの管理情報を作成し、重複排除処理を行っても良い。これにより、チャンク分割後の処理（管理情報の作成、重複排除処理）に必要な情報が常にメモリ１０３に展開されている状態になるため、メモリ１０３を効率的に使用し、重複排除処理の処理性能を向上させることができる。
【００９４】
また、図７の処理フロー例では、Ｓ１０５でチャンクsiについて「重複なし」と判定された場合、バックアップサーバ１４のバックアッププログラム１０６は、ストレージ装置１０での重複排除処理が終わり、その結果を取得した後に、次のチャンクsi+1の処理を開始しているが、Ｓ１０６で、チャンクsiとチャンクsiの管理情報msiをストレージ装置１０に送信した後に、次のチャンクsi+1の処理を実行しても良い。この場合、ストレージ装置１０に対して、同じコンテナ索引表３２０に登録されているチャンクが複数個送信される可能性があるため、ストレージ装置１０は、メモリ１１３に展開されているコンテナ索引表３２０がどのバックアップサーバ１４（１４ａ，１４ｂ，…，１４ｎ）に対して送信済みかを記憶しておき、各バックアップサーバ１４に対してすでに送信済みのコンテナ索引表３２０と同じコンテナ索引表３２０を送信しないようにする。
【００９５】
例えば、チャンクsiとチャンクsi+1が同一のコンテナ索引表３２０に登録されており、バックアップサーバ１４ａが、該コンテナ索引表３２０を取得していない場合を想定する。この場合、バックアップサーバ１４ａのバックアッププログラム１０６は、チャンクsiについて「重複なし」と判定し、チャンクsiとその管理情報msiをストレージ装置１０に送信する。そして、ストレージ装置１０からチャンクsiについての重複判定結果を受信する前にチャンクsi+1について重複判定するため、チャンクsi+1は「重複なし」と判定され、ストレージ装置１０へ送信される。一方、ストレージ装置１０のバックアッププログラム１１６は、チャンクsiについて重複判定し、該当するコンテナ索引表３２０をバックアップサーバ１４ａへ送信する。その際、該当するコンテナ索引表３２０は、バックアップサーバ１４ａに送信済みであることをメモリ１１３に記憶しておく。このように構成すれば、バックアッププログラム１１６は、チャンクsi+1の重複判定において、該当するコンテナ索引表３２０をバックアップサーバ１４ａに送信しようとする際、該当するコンテナ索引表３２０は既に送信済みであると判定して送信は行わない。
【００９６】
以上のように、バックアップサーバ１４のバックアッププログラム１０６とストレージ装置１０のバックアッププログラム１１６を連携させて動作させることにより、ストレージシステム１における重複排除処理の処理性能を向上させることできる。
【００９７】
本実施形態によるリストア処理動作の詳細
次に、本実施形態のストレージシステム１において実行されるリストア処理について説明する。図８に、バックアップサーバ１４のリストアプログラム１０７、及びストレージ装置１０のリストアプログラム１１７により実行されるリストア処理の処理フロー例を示している。
【００９８】
クライアント６からのコンテンツリストア指示等に基づいてリストア処理が開始されると（Ｓ２００）、まず、バックアップサーバ１４のリストアプログラム１０７は、ＨＤＤ１０４に記憶しているスタブファイルから該当するリストア対象のコンテンツのコンテンツＩＤを取得し、ストレージ装置１０へ送信する（Ｓ２０１）。
【００９９】
ストレージ装置１０のリストアプログラム１１７は、コンテンツ索引表３７０を参照し、読み込み対象であるコンテンツに含まれるチャンクsi（si＝１、２、…、ｎ）の情報を取得する（Ｓ２０２）。具体的には、リストアプログラム１１７は、コンテンツ索引表３７０から、読み込む必要のあるチャンクsiのリストを作成する。
【０１００】
次に、ストレージ装置１０のリストアプログラム１１７は、リストア処理に必要なチャンクをカウントするためのカウンタｉに０を設定する（Ｓ２０３）。その後、リストアプログラム１１７は、コンテナ索引表３２０の管理情報msiを読み込む（Ｓ２０４）。具体的には、リストアプログラム１１７は、Ｓ２０２において取得したコンテンツ索引表３７０のチャンクsiの情報から、当該チャンクsiが属するコンテナ索引表３７０をＨＤＤ１１４から読み込み、該当チャンクsiの管理情報msiを読み込む。チャンクsiの管理情報msiとは、前述したように、チャンクのフィンガプリント３２１、コンテナ内における位置（オフセット）３２２、及びチャンクの長さ３２３の情報を含む。
【０１０１】
次に、ストレージ装置１０のリストアプログラム１１７は、Ｓ２０４で読み込んだチャンクsiの管理情報msiに基づいて、コンテナ索引表３７０に対応するコンテナ３８０等に格納されているチャンクsiを読み込む（Ｓ２０５）。
【０１０２】
続いて、ストレージ装置１０のリストアプログラム１１７は、リストア対象のコンテンツに含まれる全てのチャンクについて読み込みが終了したか否かを判定する（Ｓ２０６）。具体的には、リストアプログラム１１７は、リストア対象のコンテンツに含まれるチャンク数ｎと、カウンタｉのカウント数とを比較する。
【０１０３】
Ｓ２０６において、全てのチャンクについて読み込みが終了したと判定された場合（Ｓ２０６、Ｎｏ）、ストレージ装置１０のリストアプログラム１１７は、読み込んだチャンクsi（ｉ＝１、２、…、ｎ）に基づいてコンテンツを再生し（Ｓ２０８）、バックアップサーバ１４に送信してリストア処理を終了する（Ｓ２０９、Ｓ２１０）。具体的には、リストアプログラム１１７は、コンテンツ索引表３７０に既述されたコンテンツ内のオフセット３７４、チャンク長３７５に基づいて、読み込んだチャンクsiをコンテンツとして再合成する。一方、Ｓ２０６において、全てのチャンクについて読み込みが終了していないと判定された場合（Ｓ２０６、Ｙｅｓ）、ストレージ装置１０のリストアプログラム１１７は、カウンタｉに１を加算し、Ｓ２０４に処理を戻す（Ｓ２０７）。
【０１０４】
以上説明したように、本実施形態に係るストレージシステム１は、バックアップサーバ１４の重複排除処理に使用するコンテナ索引表３２０を適宜ストレージ装置１０から取得することにより、効率的な重複排除処理を実現する。
【０１０５】
バックアップサーバ１４で重複排除を行い、新規チャンクのみをストレージ装置１０に送信することで、ストレージ装置１０に送信するデータ量を削減することができる。ストレージ装置１０に送信するデータ量が削減されるため、通信ネットワーク４の負荷を削減することができる。
【０１０６】
また、バックアップサーバ１４で行う重複排除処理に必要なコンテナ索引表３２０を適宜ストレージ装置１０から取得するため、バックアップサーバ１４が重複排除処理に用いる記憶容量を削減することができる。
【０１０７】
また、ストレージ装置１０から取得したコンテナ索引表３２０はデータのローカリティが考慮されており、その後に重複排除処理が行われるチャンクの情報を含んでいる可能性が高いため、バックアップサーバ１４のメモリ１０４を効率的に利用することができる。
【０１０８】
また、コンテナ索引表３２０のサイズは、ストレージ装置１０に格納されている全チャンクのサイズよりも小さいため、重複判定を高速に行うことができる。
【０１０９】
第２の実施形態
次に、本発明の第２の実施形態に係るストレージシステム１について説明する。
【０１１０】
第２の実施形態によるストレージシステム１の構成
図９に、本実施形態によるストレージシステム１の全体構成例を示す。図９に例示する第２実施形態の構成は、ストレージ装置１０（１０ａ，１０ｂ，…，１０ｍ）をそれぞれ備えるデータセンタ３（３ａ，３ｂ，…，３ｍ）を複数備えていることを除き、図１に例示した第１の実施形態と同様である。従って、ストレージシステム１の構成に関する詳細な説明は省略する。
【０１１１】
バックアップ処理及びリストア処理
次に、第２の実施形態によるストレージシステム１において実行されるバックアップ処理及びリストア処理について説明する。
【０１１２】
バックアップ処理動作の詳細
まず、本実施形態のストレージシステム１において実行されるバックアップ処理について説明する。図１０に、本実施形態に係るバックアップ処理の処理フロー例を示している。
【０１１３】
Ｓ３００〜Ｓ３０４は、図７に例示した第１の実施形態での処理フロー例におけるＳ１００〜Ｓ１０４と同様であるから詳細な説明は省略する。
【０１１４】
Ｓ３０５において、コンテナ索引表３２０に処理対象のチャンクとフィンガプリント３２１が一致するチャンクsiがあると判定した場合（すなわち、「重複あり」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ３１３の処理を実行する。一方、Ｓ３０５においてフィンガプリント３２１が一致するチャンクsiがないと判定した場合（「重複なし」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ３０６の処理を実行する。
【０１１５】
Ｓ３０６において、バックアップサーバ１４のバックアッププログラム１０６は、チャンクsiとチャンクsiの管理情報msiを、ストレージシステム１に接続されている全ストレージ装置１０（１０ａ，１０ｂ，…，１０ｍ）に送信する。
【０１１６】
Ｓ３０７において、ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４から受信したチャンクsiの重複判定を行う。Ｓ３０７においてチャンクsiが新規チャンクであると判定された場合、ストレージ装置１０のバックアッププログラム１１６は、Ｓ３０８の処理を実行する。
【０１１７】
Ｓ３０８では、ストレージ装置１０のバックアッププログラム１１６は、「重複なし」という重複判定の結果をバックアップサーバ１４へ送信する。
【０１１８】
一方、Ｓ３０７においてチャンクsiが「重複あり」と判定された場合、ストレージ装置１０のバックアッププログラム１１６は、Ｓ３０９の処理を実行する。
【０１１９】
Ｓ３０９において、ストレージ装置１０のバックアッププログラム１１６は、受信したチャンクsiのフィンガプリントと一致するフィンガプリント３２１を含んだコンテナ索引表３２０をバックアップサーバ１４に送信し、Ｓ３１３を実行する。
【０１２０】
Ｓ３１０において、バックアップサーバ１４のバックアッププログラム１０６は、全ストレージ装置１０からの判定結果が「重複なし」であった場合（Ｓ３１０、Ｙｅｓ）、Ｓ３１１の処理を実行する。なお、バックアップサーバ１４のバックアッププログラム１０６は、いずれかのストレージ装置１０からコンテナ索引表３２０を受信した場合は、「重複あり」の判定結果を受信したこととする。
【０１２１】
Ｓ３１１において、バックアップサーバ１４のバックアッププログラム１０６は、チャンクsiを格納するストレージ装置１０を選定し、チャンクsiの格納要求を送信する。この時、既にチャンクsiはＳ３０５で送信済みであるため、チャンクsiは送信しない。チャンクsiを格納するストレージ装置１０は、任意の方法で選定することができる。
【０１２２】
Ｓ３１１において選定されたストレージ装置１０は、コンテナ３８０にチャンクsiを書き出し、コンテナ索引表３２０にチャンクsiの管理情報msiを登録するとともに、チャンク索引表３１０にチャンクsiのメッセージダイジェストを登録し（Ｓ３１２）、Ｓ３１３の処理を実行する。
【０１２３】
Ｓ３１２では、ストレージ装置１０のバックアッププログラム１１６は、リストア処理の際に使用するために、図５に例示した、バックアップ対象であるコンテンツについてのコンテンツ索引表３７０を作成してチャンクに関する管理情報msiを登録する。
【０１２４】
この後、バックアップサーバ１４のバックアッププログラム１０６は、全てのチャンクについて、重複判定処理及び登録処理が終わったか否かを判定する（Ｓ３１４）。具体的には、バックアップサーバ１４のバックアッププログラム１０６は、処理対象のコンテンツに含まれるチャンク数ｎと、カウンタｉのカウンタ数とを比較する。
【０１２５】
Ｓ３１４において、全てのチャンクに対して重複判定処理及び書き出し処理が終わったと判定された場合（Ｓ３１４、Ｎｏ）、バックアップサーバ１４のバックアッププログラム１０６は、リストア処理用のスタブファイルを作成して（Ｓ３１６）、当該コンテンツのバックアップ処理を終了する（Ｓ３１７）。スタブファイルには、リストア処理時に該当するコンテンツ索引表３７０を検索するためのコンテンツＩＤ３７１が格納される。
【０１２６】
一方、Ｓ３１３において、全てのチャンクに対して重複判定処理及び登録処理が終わっていないと判定された場合（Ｓ３１３、Ｙｅｓ）、バックアップサーバ１４のバックアッププログラム１０６は、カウンタｉに１を加算し、Ｓ３０４に処理を戻す（Ｓ３１４）。
【０１２７】
なお、本実施形態に係るリストア処理は、リストア処理実行指示を受けたバックアップサーバ１４から、複数のストレージ装置１０にリストア対象のコンテンツに関するコンテンツＩＤ３７１を送信することを除き、第１の実施形態と実質的に同様であるから、詳細な説明は省略する。
【０１２８】
以上のように、本実施形態では、複数のストレージ装置１０に対しても、第１実施形態の場合と同様に、効率的な重複排除処理が適用可能である。
【０１２９】
また、図１０の処理フロー例では、Ｓ３０６で１チャンクずつストレージ装置１０へ送信しているが、複数チャンクをまとめて、送信しても良い。例えば、新規チャンクと判定されたチャンクから１０チャンク分をまとめて、ストレージ装置１０へ送信しても良い。これらの処理は、重複排除処理の速度を向上させる場合がある。
【０１３０】
第３の実施形態
次に、本発明の第３の実施形態に係るストレージシステム１について説明する。
【０１３１】
第３の実施形態によるストレージシステム１の構成
図１１に、本実施形態によるストレージシステム１の全体構成例を示している。本実施形態によるストレージシステム１の全体構成は、データセンタ１１及びデータセンタ１１に設けられたチャンク管理サーバ１２を備えていることを除き、第２の実施形態と同様である。従って、第２の実施形態と同様の構成については詳細な説明を省略する。
【０１３２】
チャンク管理サーバ１２は、ストレージシステム１に設けられている全データセンタ３（３ａ，３ｂ，…，３ｍ）に格納されているチャンク索引表３１０、コンテナ索引表３２０、及びコンテンツ索引表３７０を管理している。
【０１３３】
図１２に、図１１に例示したストレージシステム１の拠点２に設けられているバックアップサーバ１４と、データセンタ３に設けられているストレージ装置１０、及びデータセンタ１１に設けられているチャンク管理サーバ１２の構成例を示すブロック図を示している。
【０１３４】
本実施形態のバックアップサーバ１４の構成は、第１実施形態のバックアップサーバ１４の構成と同様なので、詳細な説明を省略する。また、本実施形態のストレージ装置１０の構成は、バックアッププログラム１１６及びリストアプログラム１１７が削除されていることを除き、第１の実施形態のストレージ装置１０の構成と同様なので、同じく詳細な説明を省略する。第１実施形態におけるバックアッププログラム１１６及びリストアプログラム１１７の機能は、チャンク管理サーバ１２に設けられているバックアッププログラム１２６及びリストアプログラム１２７が行う。
【０１３５】
本実施形態のチャンク管理サーバ１２の構成は、第１の実施形態におけるストレージ装置１０の構成と実質的に同様のため、詳細な説明を省略する。
【０１３６】
第３実施形態のストレージシステム１におけるバックアップ処理及びリストア処理
次に、本実施形態のストレージシステム１において実行されるバックアップ処理及びリストア処理について説明する。
【０１３７】
バックアップ処理動作の詳細
まず、本実施形態のストレージシステム１において実行されるバックアップ処理について説明する。図１３に、本実施形態に係るバックアップ処理動作の処理フロー例を示している。図１３に例示するバックアップ処理は、バックアップサーバ１４のバックアッププログラム１０６、及びチャンク管理サーバ１２のバックアッププログラム１２６によって実行される。
【０１３８】
バックアップサーバ１４のバックアッププログラム１０６は、クライアント６等からのバックアップ処理実行指示を受信して、本実施形態のバックアップ処理を開始する（Ｓ４００）。引き続き実行されるＳ４０１〜Ｓ４０４での処理は、第１の実施形態におけるＳ１０１〜Ｓ１０４での処理と同様であるから、詳細な説明を省略する。
【０１３９】
Ｓ４０５において、バックアップサーバ１４のコンテナ索引表３２０に処理対象のチャンクとフィンガプリント３２１が一致するチャンクsiがあると判定された場合（すなわち、「重複あり」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ４１２の処理を実行する。一方、Ｓ４０５においてフィンガプリント３２１が一致するチャンクsiがないと判定された場合（「重複なし」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ４０６の処理を実行する。Ｓ４０６において、バックアップサーバ１４のバックアッププログラム１０６は、チャンクsi及びチャンクsiの管理情報msiをチャンク管理サーバ１２に送信する。
【０１４０】
Ｓ４０７において、チャンク管理サーバ１２のバックアッププログラム１２６は、バックアップサーバ１４から受信したチャンクsiの重複判定を行う。Ｓ４０７においてチャンクsiが新規チャンクであると判定された場合、チャンク管理サーバ１２のバックアッププログラム１２６は、Ｓ４０８の処理を実行する。
【０１４１】
Ｓ４０８において、チャンク管理サーバ１２のバックアッププログラム１２６は、重複判定の結果をバックアップサーバ１４に送信し、Ｓ４０９を実行する。
【０１４２】
Ｓ４０９において、チャンク管理サーバ１２のバックアッププログラム１２６は、バックアップサーバ１４から受信した新規チャンクを格納するストレージ装置１０（１０ａ，１０ｂ，…，１０ｍ）を選定し、選定したストレージ装置１０のコンテナにチャンクsiを登録する。新規チャンクを格納するストレージ装置１０は、任意の方法で選定することができる。
【０１４３】
Ｓ４１１において、チャンク管理サーバ１２のバックアッププログラム１２６は、コンテナ索引表３２０にチャンクsiの管理情報msiを登録するとともに、チャンク索引表３１０にチャンクsiのメッセージダイジェストを記録し、Ｓ４１２を実行する。
【０１４４】
一方、Ｓ４０７においてチャンクsiが「重複あり」と判定された場合、チャンク管理サーバ１２のバックアッププログラム１２６は、受信したチャンクsiのフィンガプリントと一致するフィンガプリント３２１を含んだコンテナ索引表３２０をバックアップサーバ１４に送信し（Ｓ４１１）、Ｓ４１２を実行する。
【０１４５】
Ｓ４１２において、チャンク管理サーバ１２のバックアッププログラム１２６は、リストア処理の際に使用するために、図５に例示した、バックアップ対象であるコンテンツについてのコンテンツ索引表３７０を作成してチャンクに関する管理情報msiを登録する。
【０１４６】
この後、バックアップサーバ１４のバックアッププログラム１０６は、全てのチャンクについて、重複判定処理及び書き出し処理が終わったか否かを判定する（Ｓ４１３）。具体的には、バックアップサーバ１４のバックアッププログラム１０６は、バックアップ対象のコンテンツに含まれるチャンク数ｎと、カウンタｉのカウンタ数とを比較する。
【０１４７】
全てのチャンクに対して重複判定処理、及びチャンク索引表、コンテンツ索引表への登録処理が終わったと判定された場合（Ｓ４１３、Ｎｏ）、バックアップサーバ１４のバックアッププログラム１０６は、リストア処理用のスタブファイルを作成して（Ｓ４１５）、当該コンテンツのバックアップ処理を終了する（Ｓ４１６）。前記スタブファイルには、バックアップデータをリストア処理する際に該当するコンテンツ索引表３７０を検索するためのコンテンツＩＤ３７１が格納される。
【０１４８】
一方、Ｓ４１３において、全てのチャンクに対して重複判定処理、及びチャンク索引表、コンテンツ索引表への登録処理が終わっていないと判定された場合（Ｓ４１３、Ｙｅｓ）、バックアップサーバ１４のバックアッププログラム１０６は、カウンタｉに１を加算し、Ｓ４０４に処理を戻す（Ｓ４１４）。
【０１４９】
また、図１１のチャンク管理サーバ１２は１台であるが、複数台あってもよい。これにより、１台のチャンク管理サーバ１２への問い合わせを分散させ、重複排除処理の速度を向上させることができる場合がある。例えば、チャンク管理サーバ１２で管理されるチャンク索引表のフィンガプリントの一部の情報を使って各チャンク管理サーバ１２が管理するチャンク索引表を振り分ける。Ｘを任意の自然数とした場合に、フィンガプリントの上位Ｘビットまたは下位Ｘビット、あるいは既定のパターンなどで抽出したビットパターンで振り分けることが可能である。
【０１５０】
チャンク索引表のフィンガプリントから、ストレージ装置識別情報とコンテナＩＤとを取得できるようにチャンク索引表を構成することにより，複数台のチャンク管理サーバ１２による分散処理を実現することができる。
【０１５１】
リストア処理動作の詳細
本実施形態に係るリストア処理は、クライアント６等からチャンク管理サーバ１２にコンテンツＩＤを指定したリストア処理実行指示を送信し、第１の実施形態におけるストレージ装置１０のリストアプログラム１１７の機能をチャンク管理サーバ１２のリストアプログラム１２７が実現することを除き、第１の実施形態と実質的に同様であるから、詳細な説明を省略する。
【０１５２】
以上のように、第３の実施形態では、複数のストレージ装置１０に対するより効率的な重複排除処理が可能となる。本実施形態では、重複排除処理に必要な情報をチャンク管理サーバ１２に集約しているため、チャンク及びチャンクの管理情報はバックアップサーバ１４とチャンク管理サーバ１２との間だけで授受すればよく、ネットワーク負荷を削減することができる。
【０１５３】
第４の実施形態
次に、本発明の第４の実施形態に係るストレージシステム１について説明する。
【０１５４】
第４の実施形態によるストレージシステム１の構成
本実施形態によるストレージシステム１の全体構成は、図２に例示した第１の実施形態のストレージシステム１と同様である。従って、詳細な説明を省略する。
【０１５５】
図１４に、本実施形態に係るストレージシステム１の拠点２に設けられているバックアップサーバ１４と、ストレージ装置１０を備えるデータセンタ３との構成例を示すブロック図を示している。
【０１５６】
バックアップサーバ１４の構成は、ネットワーク監視部１０９を除き、図２に例示した第１の実施形態のバックアップサーバ１４と同様なので、詳細な説明を省略する。ネットワーク監視部１０９は、バックアップサーバ１４が、ネットワークインタフェース１０５を介して通信ネットワーク４との間で送受信しているデータ量を監視する機能ブロックであり、当該機能を実現しうる適宜のハードウェア及びソフトウェアを用いて構成することができる。
【０１５７】
ストレージ装置１０の構成も、ネットワーク監視部１１９を除き、図２に例示した第１の実施形態のストレージ装置１０と同様なので、詳細な説明を省略する。ストレージ装置１０のネットワーク監視部１１９は、バックアップサーバ１４のネットワーク監視部１０９と同様の機能を有し、ネットワークインタフェース１１５を介して通信ネットワーク４との間で送受信されるデータ量を監視する。
【０１５８】
バックアップサーバ１４のネットワーク監視部１０９、及びストレージ装置１０のネットワーク監視部１１９を用いることで、バックアップサーバ１４とストレージ装置１０を接続している通信ネットワーク４の負荷を測定することができる。
【０１５９】
第４実施形態のストレージシステム１におけるバックアップ処理及びリストア処理
次に、本実施形態のストレージシステム１において実行されるバックアップ処理及びリストア処理について説明する。
【０１６０】
バックアップ処理動作の詳細
まず、本実施形態のストレージシステム１において実行されるバックアップ処理について説明する。図１５に、本実施形態に係るバックアップ処理動作の処理フロー例を示している。図１５に例示するバックアップ処理は、バックアップサーバ１４のバックアッププログラム１０６、及びストレージ装置１０のバックアッププログラム１１６によって実行される。
【０１６１】
バックアップサーバ１４のバックアッププログラム１０６は、クライアント６等からのバックアップ処理実行指示を受信して、本実施形態のバックアップ処理を開始する（Ｓ５００）。引き続き実行されるＳ５０１〜Ｓ５０４での処理は、第１の実施形態におけるＳ１０１〜Ｓ１０４での処理と同様であるから、詳細な説明を省略する。
【０１６２】
Ｓ５０５において、バックアップサーバ１４のコンテナ索引表３２０に処理対象のチャンクとフィンガプリント３２１が一致するチャンクsiがあると判定した場合（すなわち、「重複あり」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ５１４の処理を実行する。一方、Ｓ５０５において処理対象のチャンクとフィンガプリント３２１が一致するチャンクsiがないと判定した場合（「重複なし」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ５０６の処理を実行する。
【０１６３】
Ｓ５０６において、バックアップサーバ１４のバックアッププログラム１０６は、ネットワーク監視部１０９を介して通信ネットワーク４の負荷を測定し、通信ネットワーク４の負荷測定値があらかじめ設定しておいた閾値以上であれば（Ｓ５０６、Ｙｅｓ）、Ｓ５０７の処理を実行する。なお、通信ネットワーク４の負荷測定値の閾値は、通信ネットワーク４の性能等の条件を考慮して定めることができる。
【０１６４】
Ｓ５０６において、通信ネットワーク４の負荷が閾値に満たないと判定した場合（Ｓ５０６、Ｎｏ）、バックアップサーバ１４のバックアッププログラム１０６及びストレージ装置１０のバックアッププログラム１１６は、第１の実施形態の図５におけるＳ１０５〜Ｓ１０９での処理と同様の処理を行う。Ｓ１０５〜Ｓ１０９の処理を行った後は、ストレージ装置１０のバックアッププログラム１１６が、Ｓ５１４の処理を実行する。
【０１６５】
Ｓ５０７において、バックアップサーバ１４のバックアッププログラム１０６は、チャンクsiの管理情報msiをストレージ装置１０に送信する。
【０１６６】
Ｓ５０８において、ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４から受信したチャンクsiの管理情報msiを用いて、チャンクsiの重複判定を行う。
【０１６７】
Ｓ５０８において、チャンクsiが新規チャンクと判定された場合、ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４に対して、重複判定の結果を送信する（Ｓ５０９）。
【０１６８】
一方、Ｓ５０８において、チャンクsiが「重複あり」と判定された場合、ストレージ装置１０のバックアッププログラム１１６は、該当するコンテナ索引表３２０をバックアップサーバ１４へ送信する（Ｓ５１０）。なお、バックアップサーバ１４のバックアッププログラム１０６は、ストレージ装置１０からコンテナ索引表３２０を受信した場合は、「重複あり」の判定結果を受信したこととする。
【０１６９】
Ｓ５１１において、バックアップサーバ１４のバックアッププログラム１０６は、ストレージ装置１０からの重複判定結果を取得し、重複判定処理を行う。なお、ストレージ装置１０から受信した重複判定の結果が「重複あり」の場合、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ５１０で取得したコンテナ索引表３２０を考慮して、重複判定を行う。
【０１７０】
Ｓ５１１において、「重複なし」と判定された場合、バックアップサーバ１４のバックアッププログラム１０６は、処理対象のチャンクsiをストレージ装置１０に送信する（Ｓ５１２）。なお、チャンクsiの管理情報msiは、既にストレージ装置１０へ送信済みであるため、Ｓ５１２では送信されない。
【０１７１】
次いで、Ｓ５１３において、ストレージ装置１０のバックアッププログラム１１６は、コンテナ３８０にバックアップサーバ１４から取得したチャンクsiを登録するとともに、コンテナ索引表３２０にチャンクsiの管理情報msiを登録し、チャンク索引表３１０にチャンクsiのメッセージダイジェストを記録して、Ｓ５１４を実行する。
【０１７２】
一方、Ｓ５１１において、「重複あり」と判定された場合、ストレージ装置１０のバックアッププログラム１１６は、Ｓ５１４の処理を実行する。
【０１７３】
Ｓ５１４において、ストレージ装置１０のバックアッププログラム１１６は、リストア処理の際に使用するために、図５に例示した、バックアップ対象であるコンテンツについてのコンテンツ索引表３７０を作成してチャンクsiに関する管理情報msiを登録する。
【０１７４】
この後、バックアップサーバ１４のバックアッププログラム１０６は、バックアップ処理の対象であるコンテンツを構成する全てのチャンクについて、重複判定処理及びチャンク索引表、コンテンツ索引表への登録処理が終わったか否かを判定する（Ｓ５１５）。具体的には、バックアップサーバ１４のバックアッププログラム１０６は、コンテンツに含まれるチャンク数ｎと、カウンタｉのカウンタ数とを比較する。
【０１７５】
Ｓ５１５において、全てのチャンクに対して重複判定処理及びチャンク索引表、コンテンツ索引表への登録処理が終わったと判定された場合（Ｓ５１５、Ｎｏ）、バックアップサーバ１４のバックアッププログラム１０６は、リストア処理用のスタブファイルを作成して（Ｓ５１７）、当該コンテンツのバックアップ処理を終了する（Ｓ５１８）。前記スタブファイルには、バックアップデータをリストア処理する際に該当するコンテンツ索引表３７０を検索するためのコンテンツＩＤ３７１が格納される。
【０１７６】
一方、Ｓ５１５において、バックアップ処理の対象であるコンテンツを構成する全てのチャンクに対して重複判定処理及びチャンク索引表、コンテンツ索引表への登録処理が終わっていないと判定された場合（Ｓ５１５、Ｙｅｓ）、バックアップサーバ１４のバックアッププログラム１０６は、カウンタｉに１を加算し、Ｓ５０５に処理を戻す（Ｓ５１６）。
【０１７７】
リストア処理動作の詳細
本実施形態に係るリストア処理は、図８に例示した第１の実施形態におけるリストア処理と実質的に同様であるから、詳細な説明を省略する。
【０１７８】
以上のように、本実施形態では、ネットワーク負荷を考慮した重複排除処理が可能である。特に、ストレージシステム１の通信ネットワーク４に関するネットワーク負荷が大きい場合における重複排除処理において、重複排除処理に用いる通信ネットワーク４の通信量を削減し、より効率的な重複排除処理を行うことができる。
【０１７９】
第５の実施形態
次に、本発明の第５の実施形態に係るストレージシステム１について説明する。
【０１８０】
第５の実施形態によるストレージシステム１の構成
本実施の形態に係るストレージシステム１の全体構成は、図１に例示した第１の実施形態と同様であるから、詳細な説明を省略する。また、バックアップサーバ１４及びストレージ装置１０のブロック構成も、図３に例示した第１の実施形態と同様であるため、詳細な説明を省略する。
【０１８１】
第５実施形態のストレージシステム１におけるバックアップ処理及びリストア処理
次に、本実施形態のストレージシステム１において実行されるバックアップ処理及びリストア処理について説明する。
【０１８２】
バックアップ処理動作の詳細
まず、本実施形態のストレージシステム１において実行されるバックアップ処理について説明する。図１６に、本実施形態に係るバックアップ処理動作の処理フロー例を示している。図１６に例示するバックアップ処理は、バックアップサーバ１４のバックアッププログラム１０６、及びストレージ装置１０のバックアッププログラム１１６によって実行される。
【０１８３】
バックアップサーバ１４のバックアッププログラム１０６は、クライアント６等からのバックアップ処理実行指示を受信して、本実施形態のバックアップ処理を開始する（Ｓ６００）。引き続き実行されるＳ６０１〜Ｓ６０４での処理は、第１の実施形態におけるＳ１０１〜Ｓ１０４での処理と同様であるから、詳細な説明を省略する。
【０１８４】
Ｓ６０５において、バックアップサーバ１４のコンテナ索引表３２０に処理対象のチャンクとフィンガプリント３２１が一致するチャンクsiがあると判定した場合（「重複あり」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、リストア処理用にチャンクsiの管理情報msiをコンテンツ索引表３７０に記録する（Ｓ６１１）。一方、Ｓ６０５において処理対象のチャンクとフィンガプリント３２１が一致するチャンクsiがないと判定した場合（「重複なし」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ６０６の処理を実行する。
【０１８５】
Ｓ６０６において、バックアップサーバ１４のバックアッププログラム１０６は、例えばバックアップサーバ１４のメモリ１０３に設定されているキューにチャンクsiとその管理情報msiを追加し、Ｓ６０６を実行する。キューは、Ｓ６０４での重複判定処理の結果、重複なしと判定されたチャンクsiとその管理情報msiをあらかじめ定めた閾値まで格納しておくために設けられる。この構成により、Ｓ６０４で重複なしと判定されたチャンクsiについての情報が、判定の都度ストレージ装置１０に送信されることがなくなる。
【０１８６】
Ｓ６０７において、キューに格納されているチャンクsiの数が閾値以上であると判定した場合（Ｓ６０７、Ｙｅｓ）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ６０８を実行する。
【０１８７】
一方、Ｓ６０７において、キューに格納されているチャンクsiの数が閾値未満であると判定した場合（Ｓ６０７、Ｎｏ）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ６１３を実行する。
【０１８８】
Ｓ６０８では、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ６０５で「重複なし」と判定されたチャンクsi及び該チャンクsiの管理情報msiが格納されたキューをストレージ装置１０に送信する。
【０１８９】
Ｓ６０９において、ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４から取得したキューの先頭から、チャンクsiと該チャンクsiの管理情報msiを１つ取り出す。
【０１９０】
取り出したチャンクsi及び該チャンクsiの管理情報msiに対して、ストレージ装置１０のバックアッププログラム１１６は、第１の実施形態における図５のＳ１０６〜Ｓ１１０と同様の重複判定処理、及びコンテナ、コンテナ索引表、チャンク索引表への登録処理を実行する（Ｓ６１０）。Ｓ１１０に相当する処理を行った後は、ストレージ装置１０のバックアッププログラム１１６は、Ｓ６１２の処理を実行する。
【０１９１】
Ｓ６１２において、ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４から取得したキューが空になっていると判定した場合（Ｓ６１２、Ｙｅｓ）、Ｓ６１３を実行し、キューにチャンクが残っていると判定した場合（Ｓ６１２、Ｎｏ）、Ｓ６０９に処理を戻す。
【０１９２】
この後、バックアップサーバ１４のバックアッププログラム１０６は、全てのチャンクについて、重複判定処理、及びコンテナ、コンテナ索引表、チャンク索引表への登録処理が終わったか否かを判定する（Ｓ６１３）。具体的には、バックアップサーバ１４のバックアッププログラム１０６は、バックアップ処理対象のコンテンツに含まれるチャンク数ｎと、カウンタｉのカウンタ数とを比較する。
【０１９３】
Ｓ６１３において、全てのチャンクに対して重複判定処理及びコンテナ、コンテナ索引表、チャンク索引表への登録処理が終わったと判定された場合（Ｓ６１３、Ｎｏ）、バックアップサーバ１４のバックアッププログラム１０６は、リストア処理用のスタブファイルを作成して（Ｓ６１４）、当該コンテンツのバックアップ処理を終了する（Ｓ６１５）。前記スタブファイルには、バックアップデータをリストア処理する際に該当するコンテンツ索引表３７０を検索するためのコンテンツＩＤ３７１が格納される。
【０１９４】
一方、Ｓ６１３において、全てのチャンクに対して重複判定処理及びコンテナ、コンテナ索引表、チャンク索引表への登録処理が終わっていないと判定された場合（Ｓ６１３、Ｙｅｓ）、バックアップサーバ１４のバックアッププログラム１０６は、カウンタｉに１を加算し、Ｓ６０５に処理を戻す（Ｓ６１６）。
【０１９５】
リストア処理動作の詳細
本実施形態に係るリストア処理は、図６に例示した第１の実施形態におけるリストア処理と実質的に同様であるから、詳細な説明を省略する。
【０１９６】
以上のように、本実施形態では、バックアップサーバ１４で「重複なし」と判定されたチャンクを複数個まとめてストレージ装置１０へ送信するので、通信ネットワーク４におけるコマンド解析等のオーバヘッドを削減し、ストレージシステム１における重複排除処理の処理性能をより向上させることができる。
【０１９７】
第６の実施形態
次に、本発明の第６の実施形態に係るストレージシステム１について説明する。
【０１９８】
第６の実施形態によるストレージシステム１の構成
本実施の形態に係るストレージシステム１の全体構成は、図１に例示した第１の実施形態と同様であるから、詳細な説明を省略する。また、バックアップサーバ１４及びストレージ装置１０のブロック構成も、図３に例示した第１の実施形態と同様であるため、詳細な説明を省略する。
【０１９９】
第６実施形態のストレージシステム１におけるバックアップ処理及びリストア処理
次に、本実施形態のストレージシステム１において実行されるバックアップ処理及びリストア処理について説明する。
【０２００】
バックアップ処理動作の詳細
まず、本実施形態のストレージシステム１において実行されるバックアップ処理について説明する。図１７に、本実施形態に係るバックアップ処理動作の処理フロー例を示している。
【０２０１】
バックアップサーバ１４のバックアッププログラム１０６は、クライアント６等からのバックアップ処理実行指示を受信して、本実施形態のバックアップ処理を開始する（Ｓ７００）。引き続き実行されるＳ７０１〜Ｓ７０４での処理は、第１の実施形態におけるＳ１０１〜Ｓ１０４での処理と同様であるから、詳細な説明を省略する。
【０２０２】
Ｓ７０５において、バックアップサーバ１４のコンテナ索引表３２０に処理対象のチャンクとフィンガプリント３２１が一致するチャンクsiがあると判定した場合（「重複あり」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、リストア処理用に当該チャンクをコンテンツ索引表３７０に登録する（Ｓ７１７）。一方、Ｓ７０５において処理対象のチャンクとフィンガプリント３２１が一致するチャンクsiがないと判定した場合（「重複なし」と判定された場合）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ７０６の処理を実行する。
【０２０３】
Ｓ７０６において、バックアップサーバ１４のバックアッププログラム１０６は、ストレージ装置１０へ送信するチャンクsiの数であるチャンク数ｍ（ｉ＋ｍ ≦ ｎ）を決定する。
【０２０４】
Ｓ７０７において、バックアップサーバ１４のバックアッププログラム１０６は、チャンクsi,si+1,…，si+m及び管理情報msi,msi+1,…,si+mをストレージ装置１０へ送信する。
【０２０５】
Ｓ７０８において、ストレージ装置１０のバックアッププログラム１１６は、変数ｊを初期化（ｊ＝０）し、Ｓ７０９を実行する。変数ｊは、ストレージ装置１０のバックアッププログラム１１６が、ｍ個のチャンクの処理を完了したか判定するために使用される。
【０２０６】
Ｓ７０９において、ストレージ装置１０のバックアッププログラム１１６は、チャンクsi+jの重複判定処理を行う。チャンクsi+jが新規チャンクと判定された場合、ストレージ装置１０のバックアッププログラム１１６は、コンテナ３８０にチャンクsi+jを記録し、コンテナ索引表３２０にチャンクsi+jの管理情報msi+jを記録し、チャンク索引表３１０にチャンクsi+jのメッセージダイジェストを記録し（Ｓ７１０）、Ｓ７１３に処理を移行させる。
【０２０７】
Ｓ７０９において、重複チャンクと判定された場合、ストレージ装置１０のバックアッププログラム１１６は、該当するコンテナ索引表３２０がバックアップサーバ１４へ送信済みかどうか判定する（Ｓ７１１）。
【０２０８】
Ｓ７１１において、該当するコンテナ索引表がバックアップサーバ１４へ送信済みであると判定した場合（Ｓ７１１、Ｙｅｓ）、ストレージ装置１０のバックアッププログラム１１６は、Ｓ７１３を実行する。一方、該当するコンテナ索引表３２０がバックアップサーバ１４へまだ送信されていないと判定した場合（Ｓ７１１、Ｎｏ）、ストレージ装置１０のバックアッププログラム１１６は、該当コンテナ索引表３２０をバックアップサーバ１４へ送信し（Ｓ７１２）、Ｓ７１３を実行する。
【０２０９】
Ｓ７１３において、ストレージ装置１０のバックアッププログラム１１６は、リストア処理用のコンテンツ索引表３７０にチャンクの管理情報を記録する。
【０２１０】
この後、ストレージ装置１０のバックアッププログラム１１６は、バックアップサーバ１４から受信した全てのチャンクについて、重複判定処理及びコンテナ、コンテナ索引表、チャンク索引表への登録処理が終わったか否かを判定する（Ｓ７１４）。具体的には、ストレージ装置１０のバックアッププログラム１１６は、受信したチャンク数ｍと、カウンタｊのカウント数とを比較する。
【０２１１】
Ｓ７１４において、全てのチャンクに対して重複判定処理及びコンテナ、コンテナ索引表、チャンク索引表への登録処理が終わったと判定された場合（Ｓ７１４、Ｎｏ）、ストレージ装置１０のバックアッププログラム１１６は、Ｓ７１６の処理を実行する。全てのチャンクに対して重複判定処理及びコンテナ、コンテナ索引表、チャンク索引表への登録処理が終わっていないと判定された場合（Ｓ７１４、Ｙｅｓ）、ストレージ装置１０のバックアッププログラム１１６は、カウンタｊに１を加算し、Ｓ７０９へ処理を戻す（Ｓ７１５）。
【０２１２】
Ｓ７１６において、バックアップサーバ１４のバックアッププログラム１０６は、カウンタｉにストレージ装置１０へ送信したチャンク数ｍを加算する。
【０２１３】
この後、バックアップサーバ１４のバックアッププログラム１０６は、全てのチャンクについて、重複判定処理及びコンテナ、コンテナ索引表、チャンク索引表への登録処理が終わったか否かを判定する（Ｓ７１８）。
【０２１４】
全てのチャンクに対して重複判定処理及びコンテナ、コンテナ索引表、チャンク索引表への登録処理が終わったと判定された場合（Ｓ７１８、Ｎｏ）、バックアップサーバ１４のバックアッププログラム１０６は、リストア処理用のスタブファイルを作成して（Ｓ７２０）、当該コンテンツのバックアップ処理を終了する（Ｓ７２１）。
【０２１５】
一方、Ｓ７１８において、全てのチャンクに対して重複判定処理及びコンテナ、コンテナ索引表、チャンク索引表への登録処理が終わっていないと判定された場合（Ｓ７１８、Ｙｅｓ）、バックアップサーバ１４のバックアッププログラム１０６は、カウンタｉに１を加算し、Ｓ７０５に処理を戻す（Ｓ７１９）。
【０２１６】
なお、Ｓ７０６における、チャンク数ｍの決め方の一例としては、チャンクsi,si+1,・・・，si+m及び管理情報msi,msi+1,・・・,si+mの総サイズに応じて閾値を設ける方法がある。例えば、バックアップサーバ１４のバックアッププログラム１０６は、バックアップ対象のコンテンツのサイズが閾値よりも小さいと判定した場合、全チャンクをストレージ装置１０へ送信することができる。同様に、バックアップサーバ１４のバックアッププログラム１０６は、重複処理をしていないチャンクの総サイズが閾値よりも小さいと判定した場合、処理をしていない全チャンクをストレージ装置１０へ送信するようにしてもよい。
【０２１７】
以上の構成により、本実施形態において、重複排除処理の処理性能をより向上させることができる。例えば、送信するチャンク及び管理情報の総サイズが、コンテナ索引表３２０のサイズよりも小さい場合、ネットワーク通信量を減らすことができるため、ストレージシステム１の処理性能をより向上させることができる。
【０２１８】
リストア処理動作の詳細
本実施形態に係るリストア処理は、図６に例示した第１の実施形態におけるリストア処理と実質的に同様であるから、詳細な説明を省略する。
【０２１９】
以上のように、本実施形態では、バックアップサーバ１４で「重複なし」と判定されたチャンクとその後の複数チャンクをまとめてストレージ装置１０へ送信するようにしたので、通信ネットワーク４におけるコマンド解析等のオーバヘッドを削減し、重複排除処理の処理性能をより向上させることができる。また、本実施形態では、まとめて送信するチャンク数を送信するデータ量に応じて設定することにより、重複排除処理の処理性能をより向上させることができる。
【０２２０】
第７の実施形態
次に、本発明の第７の実施形態に係るストレージシステム１について説明する。
【０２２１】
第７の実施形態によるストレージシステム１の構成
本実施の形態に係るストレージシステム１の全体構成は、図１に例示した第１の実施形態と同様であるから、詳細な説明を省略する。また、バックアップサーバ１４及びストレージ装置１０のブロック構成も、図３に例示した第１の実施形態と同様であるため、詳細な説明を省略する。
【０２２２】
第７実施形態のストレージシステム１におけるバックアップ処理及びリストア処理
次に、本実施形態のストレージシステム１において実行されるバックアップ処理及びリストア処理について説明する。
【０２２３】
バックアップ処理動作の詳細
まず、本実施形態のストレージシステム１において実行されるバックアップ処理について説明する。図１６に、本実施形態に係るバックアップ処理動作の処理フロー例を示している。
【０２２４】
バックアップサーバ１４のバックアッププログラム１０６は、クライアント６等からのバックアップ処理実行指示を受信して、本実施形態のバックアップ処理を開始する（Ｓ８００）。引き続き実行されるＳ８０１において、バックアップサーバ１４のバックアッププログラム１０６は、バックアップ処理対象であるコンテンツのタイプを識別する。
【０２２５】
Ｓ８０１において、コンテンツのタイプがアーカイブファイル、バックアップファイル、仮想ボリュームファイルなどの通常のファイルを集約した形態を有するコンテンツであり、且つ集約しているファイルを識別可能なコンテンツであると判定した場合（Ｓ８０１、アーカイブタイプ）、バックアップサーバ１４のバックアッププログラム１０６は、Ｓ８０３の処理を実行する。例えば、アーカイブファイルには、集約している各ファイルに関するファイル情報をヘッダとして格納しているものがある。このようなアーカイブファイルについては、コンテンツ内に集約されているファイルの格納位置を前記ヘッダの位置として識別することができる。アーカイブファイル以外の形式のファイルであっても、集約されているファイルの格納位置を識別する情報が含まれているコンテンツであれば、本実施形態を適用することができる。
【０２２６】
一方、バックアップ対象のコンテンツが、上記以外のファイル（集約されているファイルの格納位置を識別する情報が含まれていないファイル）であると判定された場合（Ｓ８０１、他形式）、バックアップサーバ１４のバックアッププログラム１０６は、図５に例示した第１の実施形態でのバックアップ処理と同様の処理を行う。
【０２２７】
Ｓ８０１でバックアップ対象コンテンツがアーカイブタイプであると判定した場合、バックアップサーバ１４のバックアッププログラム１０６は、バックアップ対象であるコンテンツを特定するためのコンテンツＩＤ３７１を、ストレージ装置１０から取得する（Ｓ８０２）。次いで、バックアップサーバ１４のバックアッププログラム１０６は、コンテンツを複数のチャンクに分割し、各チャンクの管理情報を作成する（Ｓ８０３、Ｓ８０４）。
【０２２８】
次いで、Ｓ８０５において、バックアップサーバ１４のバックアッププログラム１０６は、コンテンツに集約されている各ファイルの先頭チャンクを検索し、各先頭チャンクに対して重複排除処理を行う。Ｓ８０５における重複排除処理は、第１実施形態のバックアップ処理におけるＳ１０４〜Ｓ１１０と同様の処理である。
【０２２９】
次いで、Ｓ８０６において、バックアップサーバ１４のバックアッププログラム１０６は、残っているチャンクに対して、重複排除処理を行う。Ｓ８０６における重複排除処理も、第１実施形態のバックアップ処理におけるＳ１０４〜Ｓ１１０と同様の処理である。
【０２３０】
Ｓ８０７において、バックアップサーバ１４のバックアッププログラム１０６は、リストア処理用のスタブファイルを作成して、当該コンテンツのバックアップ処理を終了する（Ｓ８０８）。
【０２３１】
前述の通り、コンテナ３８０はローカリティを考慮して作成されているため、コンテンツに集約されているファイル毎に必要なコンテナ索引表３２０が分かれている可能性が高い。そのため、コンテンツ全体で必要となるコンテナ索引表３２０を予め取得することで、重複排除処理をより効率的に行うことができる。
【０２３２】
また、図１８の処理フロー例では、コンテンツに集約されている各ファイルの先頭チャンクのみを先に重複排除処理したが、先頭チャンク以外をサンプリングして先に重複排除処理しても良い。例えば、コンテンツに含まれているファイルのサイズが大きい場合は、２つ以上のコンテナ索引表３２０に分割されている場合もあるため、１つのファイルから複数のチャンクを選定し、先に重複排除処理を行ってもよい。
【０２３３】
また、図１８の処理フロー例では、コンテンツに集約されている全ファイルの先頭チャンクのみを先に重複排除処理したが、数ファイルずつ重複排除処理を行ってもよい。コンテンツのサイズが大きい場合は、全コンテナ索引表がバックアップサーバ１４のメモリ１０３に格納できず、バックアッププログラム１０６における重複判定の処理性能が低下する可能性がある。そのため、例えば、集約されているファイルに対して、順番に重複排除処理を実行し、次に処理する予定のファイルの先頭チャンクのみを先に重複排除処理するようにしてもよい。
【０２３４】
リストア処理動作の詳細
本実施形態に係るリストア処理は、図６に例示した第１の実施形態におけるリストア処理と実質的に同様であるから、詳細な説明を省略する。
【０２３５】
以上のように、本実施形態では、アーカイブファイルなど、通常のファイルが集約された形態を有するコンテンツにおいて、集約された各ファイルを識別し、各ファイルの重複判定に用いるコンテナ索引表を予めストレージ装置１０から取得することで、より効率的な重複排除処理を行うことができる。
【０２３６】
以上、本発明について種々の実施形態に即して説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図１】
0005774794.tif 000002
【図２】
0005774794.tif 000003
【図３】
0005774794.tif 000004
【図４】
0005774794.tif 000005
【図５】
0005774794.tif 000006
【図６】
0005774794.tif 000007
【図７】
0005774794.tif 000008
【図８】
0005774794.tif 000009
【図９】
0005774794.tif 000010
【図１０】
0005774794.tif 000011
【図１１】
0005774794.tif 000012
【図１２】
0005774794.tif 000013
【図１３】
0005774794.tif 000014
【図１４】
0005774794.tif 000015
【図１５】
0005774794.tif 000016
【図１６】
0005774794.tif 000017
【図１７】
0005774794.tif 000018
【図１８】
0005774794.tif 000019