(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続された上位装置からのコンテンツの格納要求に応じて、当該コンテンツをバックアップボリュームに格納するストレージ装置であって、
前記コンテンツを１または２以上のチャンクに切り出すチャンク切り出し部と、
前記チャンク切り出し部により切り出された前記チャンクの重複状態を管理する重複判定部と、
を備え、
前記チャンク切り出し部は、
前記コンテンツの種別を示すコンテンツ種別識別情報により前記コンテンツがサブコンテンツを含むコンテンツであると判断した場合、前記コンテンツから前記サブコンテンツを切り出し、前記サブコンテンツに含まれる前記コンテンツ種別識別情報に基づいて前記サブコンテンツの前記チャンクの切り出し方式を選択する
ことを特徴とする、ストレージ装置。
【請求項２】
前記チャンク切り出し部は、
前記コンテンツのコンテンツ長が所定の長さ以下の場合に、前記コンテンツを単一のチャンクとして切り出す単体チャンク方式を選択する
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項３】
前記チャンク切り出し部は、
前記コンテンツ種別識別情報により前記コンテンツがデータ追記型のコンテンツであると判断した場合、前記コンテンツを所定の長さのチャンクに切り出す固定長チャンク方式を選択する
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項４】
前記チャンク切り出し部は、
前記コンテンツ種別識別情報により前記コンテンツがデータ挿入型のコンテンツであると判断した場合、前記コンテンツに含まれる可変長のデータセグメントの境界位置ごとに前記チャンクを切り出す可変長チャンク方式を選択する
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項５】
前記コンテンツ種別識別情報により識別されるコンテンツの種別と、前記チャンクの切り出し方式とを対応付けて管理するチャンク切り出し方式管理テーブルを備え、
前記チャンク切り出し部は、
前記コンテンツに含まれる前記コンテンツ種別識別情報を取得して、前記チャンク切り出し方式管理テーブルを参照して、前記コンテンツ種別識別情報に対応する前記チャンク切り出し方式を特定する
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項６】
前記コンテンツ種別識別情報に対応する前記チャンク切り出し方式は、前記コンテンツを単一のチャンクとして切り出す単体チャンク方式、前記コンテンツを所定の長さのチャンクに切り出す固定長チャンク方式及び前記コンテンツに含まれる可変長のデータセグメントの境界位置ごとに前記チャンクを切り出す可変長チャンク方式である
ことを特徴とする、請求項５に記載のストレージ装置。
【請求項７】
前記チャンク切り出し部は、
前記コンテンツを切り出す前記チャンクの最小の長さを選択し、
前記チャンクが前記選択された最小の長さ以上となるように、前記コンテンツから前記チャンクを切り出す
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項８】
前記チャンク切り出し部は、
前記コンテンツを切り出す前記チャンクの最大の長さを選択し、
前記チャンクが前記選択された最大の長さ以下となるように、前記コンテンツから前記チャンクを切り出す
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項９】
ネットワークを介して接続された上位装置からのコンテンツの格納要求に応じて、当該コンテンツをバックアップボリュームに格納するストレージ装置を用いた重複データ検出方法であって、
チャンク切り出し部が、前記コンテンツを１または２以上のチャンクに切り出す第１のステップと、
重複判定部が、前記第１のステップにより切り出された前記チャンクの重複状態を管理する第２のステップと、
を備え、
前記第１のステップにおいて、前記チャンク切り出し部が前記コンテンツの種別を示すコンテンツ種別識別情報により前記コンテンツがサブコンテンツを含むコンテンツであると判断した場合、前記コンテンツから前記サブコンテンツを切り出し、前記サブコンテンツに含まれる前記コンテンツ種別識別情報に基づいて前記サブコンテンツの前記チャンクの切り出し方式を選択する
ことを特徴とする、重複データ検出方法。
【請求項１０】
前記チャンク切り出し部が、
前記コンテンツのコンテンツ長が所定の長さ以下の場合に、前記コンテンツを単一のチャンクとして切り出す単体チャンク方式を選択する第３のステップ
を含むことを特徴とする、請求項９に記載の重複データ検出方法。
【請求項１１】
前記チャンク切り出し部が、
前記コンテンツ種別識別情報により前記コンテンツがデータ追記型のコンテンツであると判断した場合、前記コンテンツを所定の長さのチャンクに切り出す固定長チャンク方式を選択する第４のステップ
を含むことを特徴とする、請求項９に記載の重複データ検出方法。
【請求項１２】
前記チャンク切り出し部が、
前記コンテンツ種別識別情報により前記コンテンツがデータ挿入型のコンテンツであると判断した場合、前記コンテンツに含まれる可変長のデータセグメントの境界位置ごとに前記チャンクを切り出す可変長チャンク方式を選択する第５のステップ
を含むことを特徴とする、請求項９に記載の重複データ検出方法。
【請求項１３】
チャンク切り出し部が、
前記コンテンツ種別識別情報により識別されるコンテンツの種別と、前記チャンクの切り出し方式とを対応付けて管理するチャンク切り出し方式管理テーブルを備え、
前記チャンク切り出し部は、
前記コンテンツに含まれる前記コンテンツ種別識別情報を取得して、前記チャンク切り出し方式管理テーブルを参照して、前記コンテンツ種別識別情報に対応する前記チャンク切り出し方式を特定する第６のステップ
を含むことを特徴とする、請求項９に記載の重複データ検出方法。
【請求項１４】
前記コンテンツ種別識別情報に対応する前記チャンク切り出し方式は、前記コンテンツを単一のチャンクとして切り出す単体チャンク方式、前記コンテンツを所定の長さのチャンクに切り出す固定長チャンク方式及び前記コンテンツに含まれる可変長のデータセグメントの境界位置ごとに前記チャンクを切り出す可変長チャンク方式である
ことを特徴とする、請求項１３に記載の重複データ検出方法。
【請求項１５】
前記チャンク切り出し部が、
前記コンテンツを切り出す前記チャンクの最小の長さを選択し、
前記チャンクが前記選択された最小の長さ以上となるように、前記コンテンツから前記チャンクを切り出す第７のステップ
を含むことを特徴とする、請求項９に記載の重複データ検出方法。
【請求項１６】
前記チャンク切り出し部が、
前記コンテンツを切り出す前記チャンクの最大の長さを選択し、
前記チャンクが前記選択された最大の長さ以下となるように、前記コンテンツから前記チャンクを切り出す第８のステップ
を含むことを特徴とする、請求項９に記載の重複データ検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及び重複データ検出方法に関し、データの種別に応じた重複排除処理を実行するストレージ装置及び重複データ検出方法に適用して好適なるものである。
【背景技術】
【０００２】
ホスト計算機とネットワークを介して接続されたストレージ装置は、データを記憶する記憶デバイスとして、例えば、複数の磁気ディスクを備える。該記憶デバイスにデータを格納する際に、保存媒体にかかるコストを低減するため、データ量を削減して格納することが行われている。データ量を削減する方法としては、ファイル圧縮処理（Compression）や重複排除処理（Deduplication）などが挙げられる。ファイル圧縮処理では、１ファイル内の同内容のデータセグメントを縮約してデータ容量を削減している。一方、重複排除処理では、１ファイル内だけでなく、ファイル間で検出される同内容のデータセグメントを縮約してファイルシステムやストレージシステムにおけるデータの総容量を削減している。重複排除処理では、重複排除効率を向上させてストレージ容量をより多く削減することや、重複排除処理の処理性能を向上させて重複排除にかかる処理時間を短縮することや、重複排除したデータの管理オーバーヘッドを小さくすることなどが一般的な課題となっている。
【０００３】
以下では、重複排除処理の単位となるデータセグメントをチャンク（Chunk）と称する。また、記憶デバイスに格納する単位である論理的にまとまったデータをコンテンツ（Content）と称する。コンテンツとしては、通常のファイルの他、例えば、アーカイブファイル、バックアップファイルまたは仮想ボリュームファイルなどの通常のファイルを集約したファイルを例示することができる。
【０００４】
重複排除処理は、コンテンツからチャンクを順次切り出す処理と、切り出したチャンクの重複の有無を判定する処理と、チャンクの格納保存処理とからなる。重複排除処理を効率よく実行するためには、チャンクの切り出し処理において、内容が同一のデータセグメントをより多く切り出すことが重要となる。
【０００５】
チャンクの切り出し方法としては、固定長チャンク切り出し方式、可変長チャンク切り出し方式などがある。固定長チャンク切り出し方式は、例えば、４キロバイト（ＫＢ）や１メガバイト（ＭＢ）といった一定の長さのチャンクを順次切り出す方法である。また、可変長チャンク方式は、コンテンツデータの局所的な条件をもとにチャンクの切り出しの境界を決定してコンテンツを切り出す方法である。
【０００６】
また、特許文献１では、コンテンツの分割方法として、基本オブジェクト（primitive object）切り出し方式が開示されている。基本オブジェクトとは、画像やテキスト、図面といった様々なデータであり、この基本オブジェクトはリッチメディアファイルと呼ばれるデータオブジェクトに埋め込まれている。１つのリッチメディアファイルには、複数の基本オブジェクトが含まれており、通常、それらの基本オブジェクトは圧縮されてリッチメディアファイルに埋め込まれている。特許文献１では、リッチメディアファイルの構造を検知して、論理的に意味のあるデータセグメントを取り出し、必要に応じて圧縮データを伸長して基本オブジェクトを切り出している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願公開第２０１０／００８８２７７号明細書
【非特許文献】
【０００８】
【非特許文献１】A.Muthitacharoen, et al. "A Low-bandwidth NetworkFile System", Proceedings of the eighteenth ACM Symposium on OperatingSystems Principles, 2001, pp.175-187
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、固定長チャンク切り出し方式は、チャンクを切り出すためのオーバーヘッドが小さいが、コンテンツデータの変更がデータの挿入などの変更の場合、データが挿入された後のチャンクがずれて切り出されるため、重複排除効率が低下してしまう。一方、可変長チャンク切り出し方式は、データが挿入されてチャンクがずれてもチャンクを切り出すための境界の位置は変わらないため重複排除効率を上げることができるが、チャンクの境界を探索するための処理のオーバーヘッドが大きくなってしまう。また、基本データ切り出し方式では、基本データを切り出すために伸長処理を繰り返す必要があり、重複排除処理のオーバーヘッドが大きくなるという問題があった。
【００１０】
したがって、重複排除効率と重複排除処理のオーバーヘッドのトレードオフを考慮すると、上記したチャンク切り出し方式のうち、いずれか一つのチャンク切り出し方式を用いて重複排除処理を行っても、重複排除処理全体の最適化を図ることができないという問題があった。
【００１１】
本発明は以上の点を考慮してなされたもので、コンテンツの種別に応じた最適なチャンク切り出し方式を選択することが可能なストレージ装置及び重複データ検出方法を提案しようとするものである。
【課題を解決するための手段】
【００１２】
かかる課題を解決するために本発明においては、ネットワークを介して接続された上位装置からのコンテンツの格納要求に応じて、当該コンテンツをバックアップボリュームに格納するストレージ装置であって、前記コンテンツを１または２以上のチャンクに切り出すチャンク切り出し部と、前記チャンク切り出し部により切り出された前記チャンクの重複状態を管理する重複判定部と、を備え、前記チャンク切り出し部は、前記コンテンツの種別を示すコンテンツ種別識別情報に基づいて前記チャンクの切り出し方式を選択することを特徴とする、ストレージ装置が提供される。
【００１３】
かかる構成によれば、バックアップ装置は、上位装置から提供されたコンテンツを、１または２以上のチャンクに切り出して、切り出したチャンクの重複状態を管理する。バックアップ装置は、チャンクを切り出す際にコンテンツの種別を示すコンテンツ種別識別情報に基づいて、当該コンテンツの切り出し方式を選択する。このように、コンテンツ種別に応じてチャンク切り出し方式を選択して選択した方式によりチャンクを切り出すことにより、重複排除効率及び重複排除処理の処理効率を向上させることが可能となる。
【発明の効果】
【００１４】
本発明によれば、コンテンツの種別に応じた最適なチャンク切り出し方式を選択して、重複排除効率及び重複排除処理の処理効率を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施の形態にかかる計算機システムのハードウェア構成を示すブロック図である。
【図２】同実施形態にかかるチャンクの切り出し方式を説明する概念図である。
【図３】同実施形態にかかるチャンクの切り出し方式を説明する概念図である。
【図４】同実施形態にかかるコンテンツの構造を説明する概念図である。
【図５】同実施形態にかかるチャンクの切り出し処理の処理手順を示すフローチャートである。
【図６】同実施形態にかかるチャンク切り出し方式制御テーブルを示す図表である。
【図７】同実施形態にかかるチャンクの切り出し処理の処理手順を示すフローチャートである。
【図８】同実施形態にかかるチャンクの切り出し処理の処理手順を示すフローチャートである。
【図９】同実施形態にかかる重複排除処理の処理手順を示すフローチャートである。
【図１０】同実施形態にかかる重複排除処理の概要を説明する概念図である。
【図１１】同実施形態にかかる重複排除最適化画面を示す図表である。
【図１２】同実施形態にかかる重複排除試行画面を示す図表である。
【図１３】本発明の第２の実施の形態にかかる計算機システムのハードウェア構成を示すブロック図である。
【図１４】本発明の第３の実施の形態にかかる計算機システムのハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下図面について、本発明の一実施の形態を詳述する。
【００１７】
（１）第１の実施の形態
（１−１）本実施の形態の概要
まず、本実施の形態の概要について説明する。データ量を削減する方法として、ファイル圧縮処理（Compression）や重複排除処理（Deduplication）などが挙げられる。ファイル圧縮処理では、１ファイル内の同内容のデータセグメントを縮約してデータ容量を削減している。一方、重複排除処理では、１ファイル内だけでなく、ファイル間で検出される同内容のデータセグメントを縮約してファイルシステムやストレージシステムにおけるデータの総容量を削減している。重複排除処理では、重複排除効率を向上させてストレージ容量をより多く削減することや、重複排除処理の処理性能を向上させて重複排除にかかる処理時間を短縮することや、重複排除したデータの管理オーバーヘッドを小さくすることなどが一般的な課題となっている。
【００１８】
以下では、重複排除処理の単位となるデータセグメントをチャンク（Chunk）と称する。また、記憶デバイスに格納する単位である論理的にまとまったデータをコンテンツ（Content）と称する。コンテンツとしては、通常のファイルの他、例えば、アーカイブファイル、バックアップファイル、仮想ボリュームファイルなどの通常のファイルを集約したファイルを例示することができる。
【００１９】
重複排除処理は、コンテンツからチャンクを順次切り出す処理と、切り出したチャンクの重複の有無を判定する処理と、チャンクの格納保存処理とからなる。重複排除処理を効率よく実行するためには、チャンクの切り出し処理において、内容が同一のデータセグメントをより多く切り出すことが重要となる。
【００２０】
チャンクの切り出し方法としては、固定長チャンク切り出し方式、可変長チャンク切り出し方式などがある。固定長チャンク切り出し方式は、例えば、４キロバイト（ＫＢ）や１メガバイト（ＭＢ）といった一定の長さのチャンクを順次切り出す方法である。また、可変長チャンク方式は、コンテンツデータの局所的な条件をもとにチャンクの切り出しの境界を決定してコンテンツを切り出す方法である。
【００２１】
また、コンテンツの分割方法として、基本オブジェクト（primitive object）切り出し方式がある。基本オブジェクトとは、画像やテキスト、図面といった様々なデータであり、この基本オブジェクトはリッチメディアファイルと呼ばれるデータオブジェクトに埋め込まれている。１つのリッチメディアファイルには、複数の基本オブジェクトが含まれており、通常、それらの基本オブジェクトは圧縮されてリッチメディアファイルに埋め込まれている。基本オブジェクト切り出し方式では、リッチメディアファイルの構造を検知して、論理的に意味のあるデータセグメントを取り出し、必要に応じて圧縮データを伸長して基本オブジェクトを切り出している。
【００２２】
しかし、上記した固定長チャンク切り出し方式は、チャンクを切り出すためのオーバーヘッドが小さいが、コンテンツデータの変更がデータの挿入などの変更の場合、データが挿入された後のチャンクがずれて切り出されるため、重複排除効率が低下してしまう。一方、可変長チャンク切り出し方式は、データが挿入されてチャンクがずれてもチャンクを切り出すための境界の位置は変わらないため重複排除効率を上げることができるが、チャンクの境界を探索するための処理のオーバーヘッドが大きくなってしまう。
【００２３】
また、基本データ切り出し方式では、データを伸長することにより圧縮によって隠されていたデータの重複を検出することができるものの、基本データを切り出すためにデータの伸長処理を繰り返す必要があり、重複排除処理のオーバーヘッドが大きくなる。一方、リッチメディアファイルが単純にコピーされて圧縮されていない場合には、基本データまで分解せずに、複数の基本データが埋め込まれた状態からチャンクの切り出し処理を行っても、重複排除効率に大きな影響は与えず、基本データを取り出すためのオーバーヘッドを節約することができないという問題があった。
【００２４】
すなわち、重複排除効率と重複排除処理のオーバーヘッドのトレードオフを考慮すると、上記したチャンク切り出し方式のうち、いずれか一つのチャンク切り出し方式を用いて重複排除処理を行っても、重複排除処理全体の最適化を図ることができないという問題があった。
【００２５】
そこで、本実施の形態では、各コンテンツ、あるいはコンテンツの各部分の特性に基づいて、チャンクの切り出し処理において適用するチャンク切り出し方式を切り替えることにより、各コンテンツの種別に応じて最適なチャンク切り出し方式を選択する。コンテンツの種別は、各コンテンツに付加されている種別を識別する情報を検出することにより判定することが可能となる。コンテンツの種別に対応するコンテンツの特性や構造を予め知っておくことにより、コンテンツの種別に応じて最適なチャンク切り出し方式を選択することが可能となる。
【００２６】
例えば、あるコンテンツについて、変更があまりない種別であれば、当該コンテンツについては固定長チャンク方式を適用してチャンクを切り出すことが好適である。また、サイズの大きいコンテンツの場合には、チャンクサイズを大きく取ったほうが、処理オーバーヘッドが小さくなり、サイズの小さいコンテンツの場合には、チャンクサイズを小さく取ることが好ましい。また、コンテンツへの挿入がある場合には、可変長チャンク方式を適用してチャンクを切り出すことが好適である。コンテンツへの挿入があるが、変更が少ない場合には、チャンクのサイズを大きめに取ることにより、重複排除効率を低下させずに、処理効率を向上させて管理オーバーヘッドを低減させることが可能となる。
【００２７】
また、所定の構造を有するコンテンツは、ヘッダ部、ボディ部、トレイラ部などの各部に分けることができ、部分毎に適用すべきチャンク切り出し方式が異なる。各部分に好適なチャンク切り出し方式を適用することにより、重複排除効率と処理効率とを最適化することが可能となる。
【００２８】
また、バックアップファイルやアーカイブファイル、仮想ボリュームファイルなどのコンテンツは、ファイルの内部（ボディ部）にさらに複数のファイルを含んで構成されている。これらのファイルをサブコンテンツと呼ぶ。コンテンツにサブコンテンツが含まれている場合、サブコンテンツを対象に重複排除処理を行うことにより重複排除の効率を向上させることが期待できる。そこで、サブコンテンツについても、サブコンテンツの種別に好適なチャンク切り出し方式を採用する。さらに、サブコンテンツが所定の構造を有する場合には、サブコンテンツのヘッダ部、ボディ部及びトレイラ部の各特性に応じたチャンク切り出し方式を選択して、重複排除処理の最適化を図る。
【００２９】
このように、本実施の形態によれば、コンテンツの種別に応じた最適なチャンク切り出し方式を選択して、重複排除効率及び重複排除処理の処理効率を向上させることができる。
【００３０】
（１−２）計算機システムのハードウェア構成
次に、計算機システム１のハードウェア構成について説明する。図１に示すように、計算機システム１は、バックアップ装置１００と、クライアント１６４と、ストレージ装置１７０と、第１のバックアップサーバ１５０と、第２のバックアップサーバ１５２などから構成されている。本実施の形態にかかるバックアップ装置１００は、ポストプロセス型の重複排除システムを利用している。ポストプロセス型の重複排除システムとは、バックアップ装置１００内の記憶媒体に一旦格納されたデータを後から取り出して重複排除して、バックアップ装置１００内のデータ容量の削減を図るシステムである。
【００３１】
バックアップ装置１００は、ＣＰＵおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、ＬＡＮ（Local Area Network）インタフェース１４５を介してＬＡＮ１４０に接続され、第１のバックアップサーバ１５０及び第２のバックアップサーバ１５２と接続されている。
【００３２】
第１のバックアップサーバ１５０は、ＣＰＵおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、ＬＡＮ１４０に接続されるとともに、ＬＡＮ１６８を介して複数のクライアント１６４と接続されている。クライアント１６４は、データを格納するローカルボリューム１６０を備えている。バックアップサーバ１５０は、ローカルボリューム１６０に格納されたデータをまとめてバックアップファイルとして、バックアップ装置１００のバックアップボリューム１１２に格納させる。バックアップボリューム１１２に格納されるバックアップファイルは、ファイルサーバ１５４が、ＯＳ（Operating System）１２０のローカルファイルシステム１２２を利用して、アクセスパス１３２を介してバックアップボリューム１１２に格納する。
【００３３】
また、第２のバックアップサーバ１５２は、ＣＰＵおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、ＬＡＮ１４０に接続されるとともに、ＳＡＮ１７８を介してストレージ装置１７０に接続される。そして、第２のバックアップサーバ１５２は、ストレージ装置１７０にアクセスして、ストレージ装置１７０内の記憶領域内に記憶されているデータをまとめてバックアップファイルとして、バックアップ装置１００のバックアップボリューム１１２に格納させる。当該バックアップファイルも、ファイルサーバ１５４が、ＯＳ１２０のローカルファイルシステム１２２を利用して、アクセスパスを介してバックアップボリューム１１２に格納する。
【００３４】
管理サーバ１０８は、バックアップ装置１００と管理用通信路１３９を介して接続されている。管理サーバ１０８は、ＣＰＵおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、オペレータ等の入力に応じてバックアップ装置１００の重複排除処理等を管理する装置である。管理用通信路１３９は、ＬＡＮ１４０を利用してもよいし、専用に設けられたシリアルインタフェースであってもよい。
【００３５】
（１−３）バックアップ装置の機能構成
バックアップ装置１００は、図１に示すように、重複排除ボリューム１１０、バックアップボリューム１１２、プロセッサ１１４及びメモリ１１６などを備える。メモリ１１６には、プロセッサ１１４、ＯＳ１２０、ファイルサーバ１５４及び各種プログラムが格納されている。メモリ１１６に格納されているＯＳ１２０の制御のもと、各種ソフトウェアが稼働している。メモリ１１６に格納されているソフトウェアは、例えば、コンテンツ移動プログラム１０２、チャンク切り出しプログラム１０４及び重複判定プログラム１０６などである。
【００３６】
コンテンツ移動プログラム１０２は、バックアップボリューム１１２に格納されたバックアップファイルを読み出し、コンテンツとしてチャンク切り出しプログラム１０４に提供する。また、チャンク切り出しプログラム１０４は、コンテンツ移動プログラム１０２から提供されたコンテンツから重複排除処理の単位となるチャンクを切り出す。チャンク切り出しプログラム１０４は、コンテンツの種別に応じた最適なチャンク切り出し方式を利用してコンテンツからチャンクを切り出す。チャンク切り出しプログラム１０４によるチャンク切り出し処理については後で詳細に説明する。
【００３７】
そして、重複判定プログラム１０６は、チャンク切り出しプログラム１０４により切り出されたチャンクの重複状態を判定し、必要に応じて、アクセスパス１３７を介して重複排除ボリューム１１０にチャンクを書き込む。また、重複判定プログラム１０６は、管理サーバ１０８を介して入力されたオペレータ等の指示に応じて、重複排除処理を実行したり、重複排除の状態を監視したりする。
【００３８】
重複排除ボリューム１１０及びバックアップボリューム１１２は、例えば、ハードディスク装置（ＨＤＤ：Hard Disk Drive）から構成される。
【００３９】
（１−４）チャンク切り出し処理
次に、本実施の形態にかかるチャンク切り出し処理について説明する。上記したように、チャンク切り出しプログラム１０４は、コンテンツ移動プログラム１０２から提供されたコンテンツについて、当該コンテンツの種別に応じた最適なチャンク切り出し方式を選択する。そして、選択したチャンク切り出し方式を用いて、コンテンツの切り出し処理を実行する。
【００４０】
図２を参照して、チャンクの切り出し方式について説明する。まず、固定長チャンク方式について説明する。図２に示すように、コンテンツ５００は、固定長のチャンクＡ（５０１）〜チャンクＤ（５０４）が切り出されてバックアップボリューム１１２に格納保存されているものとする。また、コンテンツ５１０は、コンテンツ５００のチャンクＢ（５０２）が上書きされ、新たなデータが追記された後にバックアップボリューム１１２に格納保存されたものである。
【００４１】
コンテンツ５００の書き換えにより、書き換え後のコンテンツ５１０の２番目のチャンクは変更されてチャンクＢ'（５１２）となり、追記されたデータはチャンクＥ（５１５）として切り出される。また、コンテンツ５００のチャンクＤ（５０４）については、チャンクＤ（５０４）の長さが所定の固定長より短い場合には、チャンクＤ（５０４）の後に追記されたデータが加えられて所定の固定長に切り出される。このため、コンテンツ５１０のチャンクＤ’（５１４）は、チャンクＤ（５０４）に追記したデータが加えられ、チャンクＤ（５０４）とは異なる新たなチャンクＤ’（５１４）として格納される。
【００４２】
一方、チャンクＡ及びチャンクＣには変更はなく、さらに、コンテンツ内での位置も変わらないため、固定長チャンク方式によりコンテンツ５１０からチャンクＡ（５１１）及びチャンクＣ（５１３）が切り出される。したがって、コンテンツ５１０のチャンクＡ（５１１）及びチャンクＣ（５１３）は、コンテンツ５００のチャンクＡ（５０１）及びチャンクＣ（５０３）と重複するため、重複判定プログラム１０６によりチャンクＡ（５１１）及びチャンクＣ（５１３）は重複排除される。すなわち、チャンクＡ（５１１）及びチャンクＣ（５１３）は重複排除ボリューム１１０には格納されずに、チャンクＡ（５１１）及びチャンクＣ（５１３）の参照情報のみが記録される。
【００４３】
また、コンテンツ５２０は、コンテンツ５００にデータＸ（５２９）が挿入されたものである。データＸ（５２９）の挿入に伴って、チャンクＣ（５２３）及びチャンクＤ（５２４）のコンテンツ内の位置（オフセット）が変化する。固定長チャンク方式の場合、コンテンツ５２０は、チャンクＡ（５３１）、チャンクＦ（５３５）、チャンクＧ（５３６）、チャンクＨ（５３７）及びチャンクＩ（５３８）のように切り出される。すなわち、既に保存されているチャンクＣ（５２３）やチャンクＤ（５２４）の内容を含むにもかかわらず、チャンクＦ（５３５）〜チャンクＩ（５３８）を新たなチャンクとして重複排除ボリューム１１０に格納しなければならないこととなる。
【００４４】
次に、可変長チャンク方式について説明する。可変長チャンク方式では、コンテンツ５２０のチャンクＣ（５２３）のように、チャンクの位置（オフセット）がずれた場合でもチャンクを切り出すことができる。具体的には、可変長チャンク方式では、チャンクの局所的なデータがある条件を満たした場合に、条件を満たした箇所をチャンクの境界として認識する。例えば、コンテンツ内の連続４８バイトのデータに対するハッシュ値を１バイトずつずらしながら順次計算する。そして、計算した結果が一定の条件を満たした場合に、条件を満たした箇所を境界とする。また、データが挿入された後であっても、境界となる４８バイトや４８バイト付近に変化がなければ、その部分のハッシュ値は変化せず、その箇所をチャンクの境界とすることができる。
【００４５】
例えば、図５において、可変長チャンク方式によって、コンテンツ５００がチャンクＡ（５０１）〜チャンクＤ（５０４）に分割されているとする。すなわち、チャンクＡ（５０１）とチャンクＢ（５０２）との境界は、この境界の周辺の４８バイトのデータのハッシュ値によって決定されており、チャンクＢ（５０２）とチャンクＣ（５０３）との境界、チャンクＣ（５０３）とチャンクＤ（５０４）との境界も同様に境界周辺のデータのハッシュ値によって決定されている。
【００４６】
コンテンツ５１０は、チャンクＢ（５０２）が書き換えられてチャンクＢ’（５１２）に変更されているが、各チャンク間の境界周辺のデータは変化していないことが高い確率で期待できる。したがって、コンテンツ５１０については、チャンクＣ及びチャンクＤを切り出すことができるため、チャンクＣ及びチャンクＤを重複排除することができる。コンテンツ５２０も同様に、データＸ（５２９）が挿入されたとしても、各チャンク間の境界周辺のデータは変化していないと考えられる。このため、チャンクＣ（５２３）及びチャンクＤ（５２４）を切り出すことができ、コンテンツ５１０のチャンクＣ及びチャンクＤを重複排除することができる。
【００４７】
このように、可変長チャンク方式では、データが挿入される可能性のあるコンテンツの重複排除効率を高めることができる半面、チャンクの境界を決定するためのハッシュ値の計算処理のためのオーバーヘッドが大きくなってしまう。
【００４８】
また、上記した固定長チャンク方式や可変長チャンク方式によるチャンクの切り出しを行わず、１つのコンテンツ全体を１つのチャンクとして重複排除処理を行う単一チャンク（Single instance）方式も考えられる。
【００４９】
図３は、上記したチャンク切り出し方式をコンテンツに適用してチャンクを切り出した結果を示す。例えば、コンテンツ６００は、８キロバイトの固定長でチャンクを切り出した結果を示す。チャンクＡ（６０１）〜チャンクＤ（６０４）は、いずれも先頭から順に８キロバイトになるように切り出されている。したがって、チャンクＡ（６０１）のオフセットは０、チャンクＢ（６０２）のオフセットは８キロバイト、チャンクＣ（６０３）のオフセットは１６キロバイトとオフセットが８キロバイトずつ加算されていくこととなる。
【００５０】
一方、コンテンツ６１０は、Ａ’（６１１）〜チャンクＤ’（６１４）が切り出されているが、それぞれチャンクの長さが異なっている。その結果、各チャンクのコンテンツ内のオフセットも８キロバイトの倍数とは限らない。可変長チャンクの長さは、チャンクの境界をコンテンツのデータの局所的な性質、例えば、局所４８バイトのハッシュ値を元にして決定されるため、長さそのものには意味がない。ただし、チャンクを切り出す際に、チャンク長の最小値、及び最大値を与えて、極端に短かったり長かったりするチャンクが切り出されないようにしてもよい。
【００５１】
また、コンテンツ６２０は、コンテンツを複数のチャンクに切り出さずに、コンテンツ全体を１つのチャンク６２１として扱う単一チャンク方式により切り出された結果を示す。
【００５２】
次に、図４を参照して、コンテンツの典型的な構造の例について説明する。コンテンツ７００は、特に構造を有さないコンテンツである。ここで、構造とは、コンテンツの特定の位置に特定のデータが存在するような、データ配置に関する規則をいう。また、コンテンツに構造が含まれていることをチャンク切り出しプログラム１０４などの各プログラムが認識している。すなわち、コンテンツが何らかの構造を有して構成されていても、その構造をプログラムが認識していない場合には、実質的にコンテンツの構造は存在しないこととなる。
【００５３】
コンテンツ７００には、コンテンツ種別識別情報７０２が含まれ、その他の部分は実質的に構造のないボディ部７０６となっている。また、コンテンツ種別識別情報すら有さず、コンテンツ全体が構造を有さないデータである場合もある。このようなコンテンツは、コンテンツ種別識別情報７０２とボディ部７０６とを一括して取り扱う。
【００５４】
コンテンツ７５０は、コンテンツ種別識別情報７５２、ヘッダ部７５４、ボディ部７５６及びトレイラ部７５８からなる。コンテンツ種別識別情報は、コンテンツ全体のデータ種別とこのコンテンツを作成したアプリケーションの情報が含まれる。コンテンツ種別識別情報は、通常、コンテンツの先頭部に配置される。データ種別によって、そのコンテンツ上でのデータの位置や長さ、データの読み出し方を認識することができる。したがって、データ種別によって、ヘッダ部やボディ部の解析方法を変更することができる。なお、本実施の形態では、コンテンツ種別識別情報７５２は、コンテンツの先頭部に配置されるものとしているが、かかる例に限定されず、コンテンツの先頭部以外の位置に配置されていてもよい。
【００５５】
ヘッダ部７５４は、コンテンツの構造を記述し、通常、コンテンツの先頭付近に配置される。ヘッダ部７５４を解析することにより、ボディ部７５６、トレイラ部７５８のコンテンツ上での位置を認識する。また、ボディ部７５６の詳細な構成要素やそれらの位置に関する情報を得ることができる。なお、コンテンツ種別識別情報７５２とヘッダ部７５４とを一括して取り扱ってもよい。
【００５６】
トレイラ部７５８は、通常、コンテンツの最後尾に配置される。トレイラ部７５８に格納される情報は、例えば、コンテンツの長さ情報などのように、コンテンツ７５０全体に関する情報が格納される。また、トレイラ部７５８の情報をコンテンツ処理の正当性チェックに利用することもできる。また、論理的な意味のないパディングデータが格納されることもある。
【００５７】
コンテンツ７９０も同様に、コンテンツ種別識別情報Ｍ（７９２）、ヘッダ部Ｈ（７９４）、ボディ部Ｄ（７９６）、トレイラ部Ｔ（７９８）からなる。ボディ部Ｄ（７９６）は、１つまたは複数のサブコンテンツを含み、コンテンツ７９０には、例えば、２つのサブコンテンツ、サブコンテンツ１（７１０）とサブコンテンツ２（７２０）が含まれている。
【００５８】
サブコンテンツは、それ自身がまた、コンテンツ７００やコンテンツ７５０のような構造を有することがある。例えば、サブコンテンツ１（７１０）は、コンテンツ７００と同様のコンテンツ種別識別情報Ｍ１（７１２）とボディ部Ｄ１（７１６）のみからなる。また、サブコンテンツ２（７２０）は、コンテンツ７５０と同様の構造を有し、サブコンテンツ２のコンテンツ種別識別情報Ｍ２（７２２）、ヘッダ部Ｈ２（７２４）、ボディ部Ｄ２（７２６）、トレイラ部Ｔ２（７２８）からなる。このような構造は、コンテンツ７９０がサブコンテンツ１（７１０）及びサブコンテンツ２（７２０）を一まとめにしたアーカイブファイルなどである場合に存在し得る。その他、このような構造を持つコンテンツとしては、バックアップファイル、仮想ディスクボリューム、リッチメディアファイルなどが挙げられる。
【００５９】
次に、バックアップ装置１００のチャンク切り出しプログラム１０４により実行されるチャンク切り出し処理の概要について説明する。図５に示すように、チャンク切り出しプログラム１０４は、図４に示すコンテンツ７００、コンテンツ７５０またはコンテンツ７９０などをコンテンツ移動プログラム１０２から提供されると、当該コンテンツの長さを評価する（Ｓ１０１）。コンテンツの長さは、コンテンツがバックアップボリューム１１２に格納される際のメタデータやなどに含まれており、コンテンツ移動プログラム１０２がチャンク切り出しプログラム１０４にコンテンツを渡す際にコンテンツとともに渡される情報に含まれている。具体的に、チャンク切り出しプログラム１０４は、コンテンツの長さが予め設定された所定の最小値以下か否かを判定する。
【００６０】
ステップＳ１０１において、コンテンツの長さが所定の最小値以下であると判定された場合には、チャンク切り出しプログラム１０４は、当該コンテンツを単体チャンクとしてチャンク切り出し処理を実行する（Ｓ１０２）。所定の最小値以下のコンテンツについては、重複排除の対象としても重複排除効率やデータ格納効率を大きく向上させることができないため、コンテンツに複数のチャンクが含まれているとしても、全体で一つのチャンクとして扱う。
【００６１】
ステップＳ１０１において、コンテンツの長さが所定の最小値より大きいと判定された場合には、チャンク切り出しプログラム１０４は、コンテンツ種別識別情報を取得する（Ｓ１０３）。コンテンツ種別識別情報は、図４に示すように、コンテンツがコンテンツ７００、７５０及び７９２のようないずれの構造を有している場合でも、コンテンツの先頭など同様の場所に位置していると想定できる。したがって、コンテンツがいずれの構造を有しているかを区別せずとも、コンテンツ種別識別情報を取得することができる。なお、コンテンツ種別識別情報のデータをそのまま利用しても、コンテンツ種別識別情報の一部のデータを利用したり、コンテンツ種別識別情報を扱いやすいデータに加工したりして利用してもよい。以下では、コンテンツ種別識別情報として取り出したデータを、それぞれコンテンツ種別と対応させて、コンテンツ種別毎に適切なチャンク切り出し処理を用意している。
【００６２】
そして、ステップＳ１０３において取得したコンテンツ種別識別情報をもとに、各コンテンツ特有のチャンク切り出し処理を選択する。具体的に、まず、チャンク切り出しプログラム１０４は、コンテンツ種別識別情報がＡであるかを判定する（Ｓ１０４）。ステップＳ１０４において、コンテンツ種別識別情報がＡであると判定された場合には、チャンク切り出しプログラム１０４は、コンテンツ種別がＡのコンテンツ用に用意されたチャンク切り出し処理を実行する（Ｓ１０８）。
【００６３】
ステップＳ１０４において、コンテンツ種別識別情報がＡではないと判定された場合には、チャンク切り出しプログラム１０４は、コンテンツ種別識別情報がＢであるかを判定する（Ｓ１０５）。ステップＳ１０５において、コンテンツ種別識別情報がＢであると判定された場合には、チャンク切り出しプログラム１０４は、コンテンツ種別がＢのコンテンツ用に用意されたチャンク切り出し処理を実行する（Ｓ１０９）。
【００６４】
ステップＳ１０５において、コンテンツ種別識別情報がＢではないと判定された場合には、チャンク切り出しプログラム１０４は、コンテンツ種別識別情報がＣであるかを判定する（Ｓ１０６）。ステップＳ１０６において、コンテンツ種別識別情報がＣであると判定された場合には、チャンク切り出しプログラム１０４は、コンテンツ種別がＣのコンテンツ用に用意されたチャンク切り出し処理を実行する（Ｓ１１０）。
【００６５】
ステップＳ１０６において、コンテンツ種別識別情報がＣではないと判定された場合には、チャンク切り出しプログラム１０４は、その他のコンテンツのチャンク切り出し処理を実行して（Ｓ１０７）、チャンク切り出し処理は終了する。上記ではコンテンツ種別がＡ〜Ｃの場合について各コンテンツ種別に対応するチャンク切り出し処理を用意しているとしたが、かかる例に限定されず、複数個のコンテンツ種別に対応するチャンク切り出し処理を用意してもよい。この場合、ステップＳ１０３〜１０５と同様に、コンテンツ種別識別情報を順次判定して、各コンテンツ種別に対応するチャンク切り出し処理を実行する。
【００６６】
チャンク切り出しプログラム１０４は、上記処理により切り出したチャンクを、１つずつ、または複数個まとめて重複判定プログラム１０６に提供する。そして、重複判定プログラム１０６は、各チャンクの重複状況を調べて、重複するチャンクの排除処理や、新規チャンクの格納処理を実行する。
【００６７】
チャンク切り出しプログラム１０４は、図６のチャンク切り出し方式制御テーブル９００を用いて切り出し処理を実行する。図６のチャンク切り出し方式制御テーブルを参照して、切り出し処理の詳細について説明する。チャンク切り出し方式制御テーブル９００は、コンテンツ種別に対応するチャンク切り出し方法を管理するテーブルであって、種別情報欄９０１、種別欄９０２、チャンク切り出し方法欄９０３及び処理関数欄９０４から構成される。種別情報欄９０１には、コンテンツに含まれるコンテンツ種別識別情報が格納される。種別欄９０２には、コンテンツ種別識別情報に対応するコンテンツ種別が格納される。チャンク切り出し方法欄９０３には、コンテンツ種別に対応するチャンク切り出し方法が格納される。また、コンテンツが、ヘッダ部やボディ部やトレイラ部から構成されている場合には、チャンク切り出し方法欄９０３には、ヘッダ部チャンク長欄９０７、ボディ部チャンク長欄９０８及びトレイラ部チャンク長欄９０９が含まれる。処理関数欄９０４には、切り出し処理の処理関数の情報が格納される。
【００６８】
図５に示すステップＳ１０４、Ｓ１０５、Ｓ１０６では、ステップＳ１０３において取得したコンテンツのコンテンツ種別識別情報と、チャンク切り出し方式制御テーブル９００の各エントリの種別情報欄９０１に格納されているコンテンツ種別識別情報とを比較して、一致するものがある場合には、当該コンテンツは、対応する種別欄９０２に格納されているコンテンツ種別であると判定する。そして、当該コンテンツ種別のエントリに対応する処理関数欄９０４に格納されている処理関数を呼び出して、当該処理関数にしたがった処理を実行する。
【００６９】
例えば、コンテンツに含まれるコンテンツ種別識別情報がＡの場合、対応するコンテンツ種別は「Ａ」、処理関数は「Func_A」である。したがって、図５のステップＳ１０８において処理関数「Func_A」が呼び出されて、チャンク切り出し処理が実行される。
【００７０】
また、コンテンツに含まれるコンテンツ種別識別情報がＢの場合、対応するコンテンツ種別は「Ｂ」、処理関数は「Func_B」である。したがって、図５のステップＳ１０９において処理関数「Func_B」が呼び出されて、チャンク切り出し処理が実行される。
【００７１】
また、コンテンツに含まれるコンテンツ種別識別情報がＣの場合、対応するコンテンツ種別は「Ｃ」、処理関数は「Func_C」である。したがって、図５のステップＳ１１０において処理関数「Func_C」が呼び出されて、チャンク切り出し処理が実行される。
【００７２】
また、コンテンツに含まれるコンテンツ種別識別情報がＡ〜Ｃ以外の場合、対応するコンテンツ種別は「Ｏ」、処理関数は「Func_O」である。したがって、図５のステップＳ１０７において処理関数「Func_O」が呼び出されて、チャンク切り出し処理が実行される。
【００７３】
ステップＳ１０７では、図４に示すコンテンツ７００のように、構造を有さないコンテンツに対するチャンク切り出し処理を実行する。すなわち、構造を有さないコンテンツは、コンテンツ種別「Ｏ」であり、対応するチャンク切り出し方法は、「可変長チャンク切り出し方式」であり、切り出すチャンクの最小チャンク長と最大チャンク長とが予め設定されている。コンテンツ種別「Ｏ」に対応する処理関数Func_Oは、チャンク切り出し方法欄９０３に格納されたパラメータを反映させた処理を実行する。例えば、最小チャンク長が４ＫＢ、最大チャンク長が１２ＫＢに設定されていた場合、最後にチャンクを切り出したオフセットの位置から４ＫＢ加算した位置と１２ＫＢ加算した位置の間に新たなチャンクの切れ目が定められる。
【００７４】
また、ステップＳ１１０では、コンテンツ種別が「Ｃ」であるコンテンツのチャンク切り出し処理が実行されるが、コンテンツ種別Ｃに対応するチャンク切り出し方法欄９０３には、チャンク切り出し方法が「固定長チャンク切り出し方式」であり、ヘッダ部を固定長Ｌｂバイト、ヘッダ部以外のデータをＬｃバイトで切り出すことが設定されている。このようなコンテンツとしては、例えば、ｚｉｐファイルを例示できる。コンテンツ種別Ｃに対応する処理関数「Func_C」は、指定された固定長が３２ＫＢの場合、コンテンツから３２ＫＢずつデータを順次切り出し、切り出したデータを１つのチャンクとする。
【００７５】
また、ステップＳ１０８では、コンテンツ種別が「Ａ」であるコンテンツのチャンク切り出し処理が実行されるが、コンテンツ種別Ａに対応する切り出し方法欄９０３には、コンテンツが図４に示すコンテンツ７５０のような構造を有しており、コンテンツがヘッダ部、ボディ部、トレイラ部に分けて処理すべきことが示されている。このようなコンテンツは、例えば、ＰＤＦ（Portable Document Format）ファイルや仮想ディスクファイルなどを例示できる。また、切り出し方法欄９０３には、ヘッダ部は単一のチャンクとして切り出すこと、ボディ部は指定する最大長と最小長との間の長さの可変長チャンクを切り出すこと、トレイラ部は単一のチャンクとして切り出すことが示されている。コンテンツ種別Ａに対応する処理関数「Func_A」は、切り出し方法欄９０３に格納された指定に従ってチャンク切り出し処理を実行する。
【００７６】
ここで、図７を参照して、図５のステップＳ１０８におけるコンテンツ種別Ａのチャンク切り出し処理の詳細について説明する。以下では、コンテンツ種別Ａのコンテンツとして、図４に示すコンテンツ７５０を例示して説明する。
【００７７】
図５のステップＳ１０８では、チャンク切り出しプログラム１０４が、処理関数Func_Aを呼び出すことによりチャンク切り出し処理が実行される。上記したように、ステップＳ１０３においてコンテンツ種別識別情報が取得されており、チャンク切り出しプログラム１０４は、当該情報によりコンテンツのヘッダ部の構造を知ることができる。コンテンツのヘッダ部には、ヘッダ部の長さ、ボディ部のコンテンツ内での位置（オフセット）と長さ、及びトレイラ部の位置と長さに関する情報が含まれる。これらの情報をもとに、チャンク切り出しプログラム１０４は、ヘッダ部、ボディ部及びトレイラ部をそれぞれ取り出す。
【００７８】
具体的に、まず、チャンク切り出しプログラム１０４は、コンテンツ７５０のヘッダ部（７５２及び７５４）を取り出す（Ｓ２０１）。チャンク切り出しプログラム１０４は、チャンク切り出し方式制御テーブル９００の切り出し方法欄９０３の指定に従い、ヘッダ部を一つのチャンクとして切り出す（Ｓ２０２）。チャンク切り出しプログラム１０４は、ステップＳ２０２において切り出したチャンクの重複排除処理を重複判定プログラム１０６に実行させる（Ｓ２０３）。
【００７９】
続いて、チャンク切り出しプログラム１０４は、コンテンツ７５０のボディ部７５６を取り出す（Ｓ２０４）。実際には、メモリ上においたコンテンツデータの中のボディ部の先頭と末尾のアドレスを確定させる。これは、ボディ部の先頭と末尾のアドレスは予めヘッダ部の内容を参照して取得することができる。そして、チャンク切り出しプログラム１０４は、チャンク切り出し方式制御テーブル９００の切り出し方法欄９０３の指定に従い、可変長チャンク切り出し方式によりボディ部７５６からチャンクを切り出す（Ｓ２０５）。ステップＳ２０５においてチャンクを切り出した後、当該チャンクの重複排除処理を重複判定プログラム１０６に実行させる（Ｓ２０６）。重複判定プログラム１０６による重複排除処理については後で詳細に説明する。
【００８０】
そして、チャンク切り出しプログラム１０４は、ボディ部７５６のデータのうち、チャンクとして切り出していないデータが残っているかを判定する（Ｓ２０７）。ステップＳ２０７において、ボディ部７５６のデータが残っている場合には、チャンク切り出しプログラム１０４は、ステップＳ２０５以降の処理を繰り返す。ステップＳ２０７において、ボディ部７５６のデータが残っていない（残りバイト＝０）場合には、チャンク切り出しプログラム１０４は、ステップＳ２０８以降の処理を実行する。
【００８１】
続いて、チャンク切り出しプログラム１０４は、コンテンツ７５０のトレイラ部７５８を取り出す（Ｓ２０８）。実際には、ヘッダ部及びボディ部として取り出したデータ以外の残りのデータの全てをトレイラ部として取り出す。そして、チャンク切り出しプログラム１０４は、チャンク切り出し方式制御テーブル９００の切り出し方法欄９０３の指定に従い、トレイラ部全体を単一チャンクとして切り出す（Ｓ２０９）。ステップＳ２０９においてチャンクを切り出した後、当該チャンクの重複排除処理を重複判定プログラム１０６に実行させて（Ｓ２１０）、コンテンツ種別Ａのチャンク切り出し処理を終了する。
【００８２】
図５のステップＳ１０９では、コンテンツ種別が「Ｂ」であるコンテンツのチャンク切り出し処理が実行されるが、コンテンツ種別Ｂに対応する切り出し方法欄９０３には、コンテンツが図４に示すコンテンツ７９０のような構造を有しており、コンテンツがヘッダ部、ボディ部、トレイラ部に分かれているだけでなく、ボディ部にさらにサブコンテンツが分かれていることが示されている。このようなコンテンツは、例えば、tar（tape archives）ファイルや、バックアップソフトウェアによって作成されるアーカイブファイルなどを例示できる。バックアップソフトウェアによって、ボディ部やトレイラ部のコンテンツ内のオフセットや、サブコンテンツの格納方法など、アーカイブファイルのファイル形式が異なってくる。コンテンツ種別Ｂに対応する処理関数「Func_B」は、ファイル形式の違いなどを区別して、各部やサブコンテンツを取り出す。そして、切り出し方法欄９０３に格納された指定に従って、チャンク切り出し処理を実行する。
【００８３】
図６に示すチャンク切り出し方式制御テーブル９００のコンテンツ種別Ｂに対応するチャンク切り出し方法欄９０３には、コンテンツをヘッダ部、ボディ部、トレイラ部に分けて処理すべきこと、ヘッダ部は指定長の固定長方式で切り出すこと、ボディ部はサブコンテンツに分割し、各サブコンテンツについてチャンク切り出し方式を選択すること、さらに、トレイラ部は単一チャンクとして切り出すことが示されている。コンテンツ種別Ｂに対応する処理関数Func_Bは、上記の指定に従って切り出し処理を実行する。
【００８４】
サブコンテンツに対するチャンク切り出し方法は、コンテンツに対する切り出し方法と同様である。サブコンテンツ１（７１０）のように、特別な構造を有していない場合には、例えば、サブコンテンツ全体から順次可変長チャンクを切り出してもよい。また、サブコンテンツ７２０のような構造を有している場合には、コンテンツ種別Ａに対応する切り出し方式でヘッダ部、ボディ部、トレイラ部のデータからチャンクを切り出してもよい。ただし、サブコンテンツ７２０のボディ部７２６がさらに下位のサブコンテンツに分けられている場合でも、サブコンテンツに分けたうえでのチャンク切り出し処理は必ずしも行う必要はない。これは、サブコンテンツに含まれるサブコンテンツをさらに分解すると、サブコンテンツへの分解処理のオーバーヘッドが大きくなるためである。
【００８５】
ここで、図８を参照して、図５のステップＳ１０９におけるコンテンツ種別Ｂのチャンク切り出し処理の詳細について説明する。以下では、コンテンツ種別Ｂのコンテンツとして、図４に示すコンテンツ７９０を例示して説明する。
【００８６】
図５のステップＳ１０９では、チャンク切り出しプログラム１０４が、処理関数Func_Bを呼び出すことによりチャンク切り出し処理が実行される。上記したように、ステップS１０３においてコンテンツ種別識別情報が取得されており、チャンク切り出しプログラム１０４は、当該情報によりコンテンツのヘッダ部の構造を知ることができる。チャンク切り出しプログラム１０４は、コンテンツ７９０からヘッダ部（７９２及び７９４）を取り出し、ヘッダ部７９４の位置情報、ボディ部７９６の位置情報及びトレイラ部７９８の位置情報を取得する（Ｓ３０１）。さらに、ステップＳ１１１において、ヘッダ部７９６から、ボディ部のサブコンテンツ７１０及び７２０の位置情報を取得する。これらの情報は、以降のボディ部の切り出し処理において、サブコンテンツの取り出しに利用される。
【００８７】
チャンク切り出しプログラム１０４は、チャンク切り出し方式制御テーブル９００の切り出し方法欄９０３の指定に従い、ヘッダ部を一つのチャンクとして切り出す（Ｓ３０２）。チャンク切り出しプログラム１０４は、ステップＳ２０２において切り出したチャンクの重複排除処理を重複判定プログラム１０６に実行させる（Ｓ３０３）。そして、チャンク切り出しプログラム１０４は、ヘッダ部７９４のデータのうち、チャンクとして切り出していないデータが残っているかを判定する（Ｓ３０４）。ステップＳ３０４において、ヘッダ部７９４のデータが残っている場合には、チャンク切り出しプログラム１０４は、ステップＳ３０２以降の処理を繰り返す。ステップＳ３０４において、ヘッダ部７９４のデータが残っていない（残りバイト＝０）場合には、チャンク切り出しプログラム１０４は、ステップＳ３０５以降の処理を実行する。
【００８８】
続いて、チャンク切り出しプログラム１０４は、ボディ部７９６からサブコンテンツを取り出す（Ｓ３０５）。コンテンツ７９０内におけるサブコンテンツの位置は、上記したように、ヘッダ部７９４から取得した情報をもとに知ることができる。
【００８９】
そして、チャンク切り出しプログラム１０４は、ステップＳ３０５において取得したサブコンテンツの種別を判定する（Ｓ３０６）。ここでは、サブコンテンツとして、コンテンツ種別ＡとＯの２通りの種別のサブコンテンツが含まれている場合について説明する。
【００９０】
サブコンテンツ７１０のコンテンツ種別はＯとする。この場合、コンテンツ種別Ｏに対応する切り出し方式によりコンテンツが切り出される。すなわち、チャンク切り出しプログラム１０４は、サブコンテンツ７１０全体を可変長チャンク方式で切り出した後、重複判定プログラム１０６に重複排除処理を実行させる（Ｓ３０７）。
【００９１】
一方、サブコンテンツ７２０のコンテンツ種別はＡとする。この場合、コンテンツ種別Ａに対応する切り出し方式によりコンテンツが切り出される。すなわち、チャンク切り出しプログラム１０４は、サブコンテンツ７２０からヘッダ部７２２、７２４を取り出して単一チャンクとして切り出して、重複判定プログラム１０６に重複排除処理を実行させる（Ｓ３０８）。そして、チャンク切り出しプログラム１０４は、サブコンテンツ７２０からボディ部７２６を取り出して、可変長チャンク切り出し方式で切り出した後、重複判定プログラム１０６に重複排除処理を実行させる（Ｓ３０９）。そして、チャンク切り出しプログラム１０４は、サブコンテンツ７２０からトレイラ部７２８を取り出し、単一チャンクとして切り出して、重複判定プログラム１０６に重複排除処理を実行させる（Ｓ３１０）。
【００９２】
チャンク切り出しプログラム１０４は、１つのサブコンテンツの切り出し処理が終わった後に、切り出し処理を行っていないサブコンテンツが残っていないかを確認して（Ｓ３１１）、残っている場合には、ステップＳ３０５以降の処理を繰り返す。一方、ステップＳ３１１において、すべてのサブコンテンツの処理が終わっていると判定された場合にはチャンク切り出しプログラム１０４は、コンテンツ７９０のチャンク切り出し処理を実行し、重複判定プログラム１０６に重複排除処理を実行させて（Ｓ３１２）、コンテンツ種別Ｂのチャンク切り出し処理を終了する。
【００９３】
（１−５）重複排除処理
次に、ステップＳ２０６、Ｓ２１０、Ｓ３０３、Ｓ３０７、Ｓ３０８、Ｓ３０９などにおいて実行される重複判定プログラム１０６による重複排除処理について説明する。以下では、適宜、図１０の重複排除処理の概要を参照して、図９に示す重複排除処理について説明する。図９に示すように、重複判定プログラム１０６は、チャンク切り出しプログラム１０４から提供されたチャンク及びチャンクの情報を取得する（Ｓ４０１）。チャンクの情報とは、例えば、チャンクの属するコンテンツのコンテンツＩＤや、チャンクの位置（オフセット）、チャンクの長さなどの情報である。
【００９４】
続いて、重複判定プログラム１０６は、ステップＳ４０１において取得したチャンクのフィンガプリント（ＦＰ）を計算する（Ｓ４０２）。フィンガプリントは、ハッシュ関数を用いて取得することができる。ここで、ハッシュ関数は、ＳＨＡ２５６など、乱数性が極めて高く、チャンク４００のデータに対するハッシュ値によって、当該データが一意に定まる可能性の高いハッシュ関数が利用される。
【００９５】
そして、重複判定プログラム１０６は、チャンク-コンテナテーブル４２０を検索して、チャンクコンテナテーブル４２０にステップＳ４０２において算出したフィンガプリントが登録済みかを判定する（Ｓ４０３）。図１０に示すように、チャンク-コンテナテーブル４２０には、フィンガプリント（ＦＰ）４２３とコンテナＩＤ４２５が関連付けて管理されている。重複判定プログラム１０６は、チャンク４００から算出したフィンガプリント４１３が、チャンク-コンテナテーブル４２０のＦＰ欄４２３に登録されているかを判定する。
【００９６】
図９に戻り、ステップＳ４０３において、算出したフィンガプリントがチャンク-コンテナテーブル４２０に登録されていると判定された場合には、重複判定プログラム１０６は、算出したフィンガプリントに対応するコンテナＩＤをチャンク-コンテナテーブル４２０から取得して、ステップＳ４０６以降の処理を実行する。一方、ステップＳ４０３において、算出したフィンガプリントがチャンク-コンテナテーブル４２０に登録されていないと判定された場合には、重複判定プログラム１０６は、ステップＳ４０４以降の処理を実行する。
【００９７】
図１０に示すように、チャンク-コンテナテーブル４２０には、すでに登録済みのチャンクが列挙されている。すなわち、ステップＳ４０３において、算出したフィンガプリントがチャンク-コンテナテーブル４２０に登録されている場合には、ステップＳ４０１において取得したチャンクを新たに重複排除ボリューム１１０に格納する必要はなく、重複排除に成功したこととなる。一方、ステップＳ４０３において、算出したフィンガプリントがチャンク-コンテナテーブル４２０に登録されていない場合には、ステップＳ４０１において取得したチャンクを新たに重複排除ボリューム１１０に格納する必要がある。
【００９８】
図９に戻り、重複排除プログラム１０６は、チャンク-コンテナテーブル４２０にチャンク４００を格納するためのコンテナを用意する（Ｓ４０４）。コンテナとは、いくつかのチャンクをまとめたデータブロックである。チャンクは、コンテナの一部として重複排除ボリューム１１０に格納される。各コンテナは、コンテナ管理テーブル４３０により管理される。
【００９９】
図１０に示すようにコンテナ管理テーブル４３０は、コンテナを構成するチャンクを管理するテーブルであって、フィンガプリント（ＦＰ）欄４３３、コンテナオフセット欄４３７及びチャンク長欄４３９から構成されている。フィンガプリント欄３２２には、チャンクのフィンガプリントが格納される。コンテナオフセット欄４３７には、コンテナ内のチャンクの格納場所の情報が格納される。チャンク長欄４３９には、チャンクの長さの情報が格納される。また、コンテナ管理テーブル４３０には、チャンクに関するその他の情報が格納されてもよい。
【０１００】
図９に戻り、重複排除プログラム１０６は、ステップＳ４０４において用意したコンテナ４４０にチャンクデータを書き込むとともに、コンテナ管理テーブル４３０にチャンクに関する管理情報を格納する（Ｓ４０５）。具体的に、重複排除プログラム１０６は、コンテナ４４０のいずれの場所にチャンクを格納するかを決定し、その場所のアドレスとチャンク長とをコンテナ管理テーブル４３０に格納する。これにより、チャンクを読み出す場合には、チャンクのフィンガプリントの値から、当該フィンガプリントに対応するコンテナ管理テーブル４３０のエントリを検索し、フィンガプリントに対応するコンテナオフセットとチャンク長を読み出す。さらに、チャンク-コンテナテーブル４２０のＦＰ欄３２４にフィンガプリントを格納し、コンテナＩＤ欄４２５にチャンクを格納するコンテナのコンテナＩＤを格納する。これにより、チャンク４００と同内容のチャンクについて、以降の重複排除処理における重複排除が可能となる。
【０１０１】
続いて、重複排除プログラム１０６は、コンテンツ管理テーブル４５０にコンテンツ管理情報を登録して（Ｓ４０６）、重複排除処理を終了する。図１０に示すように、コンテンツ管理テーブル４５０は、ＦＰ欄４５３、コンテンツ内オフセット欄４５６、長さ欄４５９及びコンテナＩＤ欄４５５から構成されている。ＦＰ欄４５３には、チャンクのフィンガプリントが格納される。コンテンツ内オフセット欄４５６には、コンテンツ内のチャンク位置として、コンテンツ内の先頭からのバイト数が格納される。長さ欄４５９には、チャンクの長さが格納される。コンテナＩＤ欄４５５には、チャンクが属するコンテナのコンテナＩＤが格納される。コンテンツ管理テーブル４５０により、コンテンツのデータを読み出す際に、コンテンツを構成している各チャンクを格納するコンテナをコンテナＩＤにより特定し、コンテンツ内オフセット及びチャンク長さから、コンテンツ内から読み出し対象のチャンクを読み出すことができる。
【０１０２】
次に、図１１を参照して、コンテンツ種別の設定及び変更、コンテンツやサブコンテンツのチャンク切り出し方式を設定及び変更するための重複排除最適化画面１２００について説明する。重複排除最適化画面１２００は、管理サーバ１０８の表示画面に表示され、オペレータの入力に応じてパラメータの設定等がなされる。オペレータは、各コンテンツ種別１２１０に対して、適応方式１２２０フィールドやチャンク長フィールド１２３０の各フィールドに値を入力する。各フィールドの値は予め設定されている値からオペレータが選択するようにしてもよい。重複排除最適化画面１２００を介して設定されたチャンク切り出し方式等の設定値は、図６のチャンク切り出し方式制御テーブル９００の各欄に格納される。
【０１０３】
例えば、コンテンツ種別１２１０がＡの場合、オペレータは、適用方式１２２０として、内部構造を解析することを示す「構造別」を選択する。また、ヘッダ部は１つのチャンクとして切り出すことを示す「単一」、ボディ部は可変長切り出し方式でチャンクを切り出すことを示す「可変長」、トレイラ部は１つのチャンクとして切り出すことを示す「単一」を選択する。また、コンテンツ種別１２１０がＣの場合、オペレータは、固定長切り出し方式でチャンクを切り出すことを示す「固定長」を選択する。また、固定長を選択した場合には、固定値を入力し、可変長を選択した場合には、最大値と最小値の中間値を入力する。可変長が選択された場合、入力された中間値の半分が最小値、中間値の２倍が最大値とされる。また、可変長の場合に、重複排除最適化画面１２００において、最小値と最大値が指定されるインタフェースとしてもよい。
【０１０４】
次に、図１２を参照して、コンテンツを指定して重複排除処理を実行し、重複排除の結果を監視するための重複排除試行画面１４００について説明する。重複排除試行画面１４００は、管理サーバ１０８の表示画面に表示され、オペレータの入力に応じてコンテンツ等が指定される。具体的に、オペレータは、コンテンツ指定ウインドウ１４４０に対象となるファイルボリューム１１２上のファイルを指定する。コンテンツ種別フィールド１４１０には、コンテンツに適用するチャンク切り出し方式が表示される。
【０１０５】
重複排除指令ボタン１４５０が押下されると、指定されたファイルに対して重複排除処理が実行され、実行結果が重複排除率表示ウインドウ１４８０及び重複排除時間表示ウインドウ１４９０に表示される。その他、重複排除率や重複排除時間以外の重複排除に関する情報が表示されてもよい。また、コンテンツ指定ウインドウ１４４０にコンテンツを指定して、適用方式指定１４２０やチャンク長指定１４３０の値を変更して、重複排除指令ボタン１４５０を押下することにより、重複排除率や重複排除時間が再計算される。重複排除率や重複排除時間の算出は、重複判定プログラム１１６が呼び出されることにより実現される。
【０１０６】
リストア指令ボタン１４６０が押下されると、指定されたコンテンツが重複排除ボリューム１１０から取り出されて、ファイルボリューム１１２に再度格納される。
【０１０７】
もっとも、バックアップ世代間のチャンク切り出し方式や、チャンク長の指定が異なれば、重複排除率は低下してしまう。重複排除試行画面１４００におけるチャンク切り出し方式や、チャンク長の変更は、チャンク切り出し方式の適用方式をチューニングする際に利用される。重複排除試行画面１４００を介して設定されたチャンク切り出し方式やチャンク長などの設定値は、チャンク切り出し方式制御テーブル９００の各欄に格納される。
【０１０８】
（１−６）本実施の形態の効果
以上のように、本実施の形態では、バックアップ装置１００は、第１のバックアップサーバ１５０または第２のバックアップサーバ１５２から提供されたバックアップファイルをコンテンツとして、当該コンテンツを１または２以上のチャンクに切り出して、切り出したチャンクの重複状態を管理する。バックアップ装置１００は、チャンクを切り出す際にコンテンツの種別を示すコンテンツ種別識別情報に基づいて、当該コンテンツを固定長チャンク切り出し方式か、可変長チャンク切り出し方式か、または単一チャンク切り出し方式かを選択する。このように、コンテンツ種別に応じてチャンク切り出し方式を選択して選択した方式によりチャンクを切り出すことにより、重複排除効率及び重複排除処理の処理効率を向上させることが可能となる。
【０１０９】
（２）第２の実施の形態
（２−１）計算機システムのハードウェア構成
次に、図１３を参照して、本実施の形態にかかる計算機システム２の構成について説明する。計算機システム２は、インライン（Inline）型の重複排除システムを構成している。インライン型の重複排除システムとは、上位装置から提供されたデータについて、直ちに重複排除処理を行うことを意味する。具体的に、図１３に示すように、計算機システム２のバックアップ装置２００は、バックアップ装置２００内にバックアップボリュームが不要な点で第１の実施の形態と異なっている。バックアップ装置２００は、バックアップ装置１００のファイルサーバ１５４に代えてインラインファイルサーバ２５４を備え、コンテンツ移動プログラム１０２に代えてインラインコンテンツ移動プログラム２０２を備えている。
【０１１０】
インラインファイルサーバ２５４は、第１のバックアップサーバ１５０または第２のバックアップサーバ１５２からのバックアップファイルの格納要求に応じて、当該バックアップファイルをインラインコンテンツ移動プログラム２０２に提供する。そして、インラインコンテンツ移動プログラム２０２は、インラインファイルサーバ２５４から提供されたバックアップファイルをコンテンツとしてチャンク切り出しプログラム１０４に提供する。
【０１１１】
チャンク切り出しプログラム１０４及び重複判定プログラム１０６の機能及び処理については第１の実施の形態と同様のため、詳細な説明は省略する。
【０１１２】
（２−２）本実施の形態の効果
以上のように、本実施の形態では、バックアップ装置２００内にバックアップボリュームを不要とするため、ストレージシステムの資源を削減することができる。また、バックアップボリュームにバックアップファイル等のデータを格納せずに、直ちに重複排除処理を実行することができるため、バックアップ処理の処理時間を短縮することが可能となる。
【０１１３】
（３）第３の実施の形態
（３−１）計算機システムのハードウェア構成
次に、図１４を参照して、本実施の形態にかかる計算機システム３の構成について説明する。計算機システム３は、データをバックアップするバックアップ装置３００とは別に、重複排除処理を実行する重複排除装置３０１を備えている点で第１の実施の形態と異なっている。
【０１１４】
バックアップ装置３００は、バックアップボリューム１１２、プロセッサ１１４、メモリ１１６、ＯＳ１２０及びローカルファイルシステム１２２を備えている。また、メモリ１１６に格納されているソフトウェアは、コンテンツ移動プログラム３０２及びチャンク切り出しプログラム３０４などである。
【０１１５】
コンテンツ移動プログラム３０２は、バックアップボリューム１１２に格納されたバックアップファイルを読み出し、コンテンツとしてチャンク切り出しプログラム３０４に提供する。また、チャンク切り出しプログラム３０４は、コンテンツ移動プログラム３０２から提供されたコンテンツから重複排除処理の単位となるチャンクを切り出す。チャンク切り出しプログラム３０４は、コンテンツの種別に応じた最適なチャンク切り出し方式を利用してコンテンツからチャンクを切り出す。チャンク切り出しプログラム１０３によるチャンク切り出し処理は、第１の実施の形態と同様の処理であるため詳細な説明は省略する。チャンク切り出しプログラム３０４により切り出されたチャンクは、ＬＡＮ１４０を介して重複排除装置３０１の重複判定プログラム３０６に提供される。
【０１１６】
重複排除装置３０１は、重複排除ボリューム１１０、プロセッサ１１４、メモリ１１６、ＯＳ１２０及びローカルファイルシステム１２２を備えている。また、メモリ１１６に格納されているソフトウェアは、重複判定プログラム３０６などである。
【０１１７】
重複判定プログラム３０６は、バックアップ装置３００のチャンク切り出しプログラム３０４から提供されたチャンクの重複状況を調べて、重複するチャンクの排除処理を行って、新規チャンクを重複排除ボリューム１１０に格納する。
【０１１８】
管理サーバ３０８は、バックアップ装置３００と重複排除装置３０１とに接続されている。管理サーバ３０８は、管理用ネットワーク３３４を介して、チャンク切り出しプログラム３０４の稼働パラメータの設定や稼働状態を監視する。また、管理サーバ３０８は、管理用ネットワーク３３６を介して、重複判定プログラム３０６の稼働パラメータの設定や稼働状態を監視する。
【０１１９】
（３−２）本実施の形態の効果
以上のように、本実施の形態では、バックアップ装置３００にチャンク切り出しプログラム３０４を搭載し、重複排除装置３０１に重複判定プログラム３０６を搭載して、チャンク切り出し処理と重複判定処理とを別々の装置で実行させている。これにより、異なる装置のプロセッサによりチャンク切り出し処理と重複判定処理とが実行されるため、全体として、より効率のよい重複排除処理を実行することが可能となる。
【０１２０】
（４）他の実施の形態
上述の実施の形態においては、本実施の形態による各種機能に関する処理の全体を制御する制御部としてプロセッサ１１４を適用するようにした場合について述べたが、本発明はこれに限らず、かかる制御部としての処理を実行するハードウェアやソフトウェアをプロセッサ１１４とは別個に設けるようにしても良い。このようにしても上述の実施の形態と同様の効果を得ることができる。
【０１２１】
また、例えば、本明細書のバックアップ装置１００等の処理における各ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はない。すなわち、バックアップ装置１００等の処理における各ステップは、異なる処理であっても並列的に実行されてもよい。
【０１２２】
また、バックアップ装置１００等に内蔵されるＣＰＵ、ＲＯＭおよびＲＡＭなどのハードウェアを、上述したバックアップ装置１００等の各構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、該コンピュータプログラムを記憶させた記憶媒体も提供される。
【産業上の利用可能性】
【０１２３】
本発明は、データの種別に応じた重複排除処理を実行するストレージ装置に広く適用することができる。
【符号の説明】
【０１２４】
１００    バックアップ装置
１０２    コンテンツ移動プログラム
１０４    チャンク切り出しプログラム
１０６    重複判定プログラム
１０８    管理サーバ
１１０    重複排除ボリューム
１１２    バックアップボリューム
１１４    プロセッサ
１１６    メモリ
１２２    ローカルファイルシステム
１５０    第１のバックアップサーバ
１５２    第２のバックアップサーバ
１６０    ローカルボリューム
１６４    クライアント
１７０    ストレージ装置
【図１】
0005719037.tif 000002
【図２】
0005719037.tif 000003
【図３】
0005719037.tif 000004
【図４】
0005719037.tif 000005
【図５】
0005719037.tif 000006
【図６】
0005719037.tif 000007
【図７】
0005719037.tif 000008
【図８】
0005719037.tif 000009
【図９】
0005719037.tif 000010
【図１０】
0005719037.tif 000011
【図１１】
0005719037.tif 000012
【図１２】
0005719037.tif 000013
【図１３】
0005719037.tif 000014
【図１４】
0005719037.tif 000015