(57)【特許請求の範囲】
【請求項１】
外部装置から送られてくるＩ／Ｏ要求に応じて前記外部装置に記憶デバイスの記憶領域を提供するストレージ装置であって、
前記外部装置から前記Ｉ／Ｏ要求とともに受信したデータが前記記憶デバイスに重複して格納されるのを排除する重複排除処理を行う機能、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際に前記データについて前記重複排除処理を直ちに行う第１方式の重複排除処理を行う機能、及び、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際に前記データを一時的に所定の記憶領域に記憶しておき、事後的に前記記憶領域から前記データを読み出して前記データについての前記重複排除処理を行う第２方式の重複排除処理を行う機能、を備え、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際、前記Ｉ／Ｏ要求の対象となる前記データについて前記第１方式の重複排除処理を行った場合の当該ストレージ装置の処理性能への影響、前記データについて前記第２方式の重複排除処理を行った場合の当該ストレージ装置の処理性能への影響、及び前記データについて前記第２方式の重複排除処理を行った場合に必要となる前記所定の記憶領域のサイズ、のうちの少なくともいずれかに基づき、前記データに適用する前記重複排除処理の前記方式を選択し、
前記外部装置から受信した複数の前記データの夫々についての複数の前記第１方式の重複排除処理が同時に行われることにより生じる当該ストレージ装置の処理性能への影響、前記外部装置から受信した複数の前記データの夫々についての複数の前記第２方式の重複排除処理が同時に行われることにより生じる当該ストレージ装置の処理性能への影響、及び当該ストレージ装置の利用効率、のうちの少なくともいずれかに基づき、前記第１方式の重複排除処理の同時処理数、及び前記第２方式の重複排除処理の同時処理数のうちの少なくともいずれかを増減させる
ストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
ファイルシステムを備え、
前記記憶デバイスへのファイルの格納を指示する前記Ｉ／Ｏ要求を受信した場合に、前記Ｉ／Ｏ要求の対象となるファイルについて前記方式の選択に用いる指標を管理し、
前記記憶デバイスへのファイルの格納を指示する前記Ｉ／Ｏ要求を受信した際、前記ファイルのファイル名が既に前記記憶デバイスに格納されているファイルのファイル名の全部又は一部と一致するか否かを判定し、一致する場合は前記ファイルに適用する前記重複排除処理の前記方式として前記第１方式の重複排除処理が選択されやすくなるように前記指標を設定する
ストレージ装置。
【請求項３】
請求項１に記載のストレージ装置であって、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した場合に、前記Ｉ／Ｏ要求の対象となるデータについて前記方式の選択に用いる指標を管理し、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際、前記データの一部を前記記憶デバイスに既に格納されているデータと比較することにより当該データについて前記重複排除処理を行った場合の重複排除率を求め、求めた前記重複排除率が高いほど前記データに適用する前記重複排除処理の前記方式として前記第１方式の重複排除処理が選択されやすくなるように前記指標を設定する
ストレージ装置。
【請求項４】
請求項１に記載のストレージ装置であって、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した場合に、前記Ｉ／Ｏ要求の対象となるデータについて前記方式の選択に用いる指標を管理し、
受信した前記データが第２世代以降のバックアップを目的とするデータである場合、前記データに適用する前記重複排除処理の前記方式として前記第１方式の重複排除処理が選択されやすくなるように前記指標を設定する
ストレージ装置。
【請求項５】
請求項１に記載のストレージ装置であって、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した場合に、前記Ｉ／Ｏ要求の対象となるデータについて前記方式の選択に用いる指標を管理し、
前記データのデータサイズが大きいほど、前記データに適用する前記重複排除処理の前記方式として前記第１方式の重複排除処理が選択されやすくなるように前記指標を設定する
ストレージ装置。
【請求項６】
請求項１に記載のストレージ装置であって、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際、前記Ｉ／Ｏ要求の対象となるデータを前記所定の記憶領域に格納することにより前記所定の記憶領域の使用量が予め設定された制限値を超えるか否かを判定し、
前記所定の記憶領域の使用量が前記制限値を超える場合は、前記データに適用する前記重複排除処理の前記方式として前記第１方式の重複排除処理を選択し、
前記所定の記憶領域の使用量が前記制限値を超えない場合は、前記第１方式の重複排除処理の対象になっているデータの合計サイズと前記第２方式の重複排除処理の対象になっているデータの合計サイズとが均衡するように、前記データに適用する前記重複排除処理の前記方式を選択する
ストレージ装置。
【請求項７】
請求項１に記載のストレージ装置であって、
前記外部装置から受信した前記データと既に前記記憶デバイスに格納されているデータとを、所定サイズのデータであるチャンクを単位として比較することにより、前記重複排除処理を行い、
複数の前記チャンクからなるデータであるコンテナを単位として前記記憶デバイスへのデータの書き込み又は読み出しを行い、
前記コンテナに格納されている前記チャンクのメッセージダイジェストと前記チャンクの前記コンテナにおける位置情報とを含むコンテナ索引表を管理し、
前記外部装置から複数回に亘って受信するデータ間で普遍性の高い前記チャンクを専用の前記コンテナである普遍コンテナに格納し、
前記重複排除処理に際し、
前記普遍コンテナの前記コンテナ索引表に基づき、前記外部装置から受信した前記データの前記チャンクが既に前記記憶デバイスに存在するか否かを判定し、
続いて、前記普遍コンテナ以外の前記コンテナ索引表に基づき、前記判定にて重複しないと判定された前記チャンクについて、そのチャンクが既に前記記憶デバイスに存在するか否かを判定し、
続いて、前記判定にて重複しないと判定された前記チャンクについて、そのチャンクが既に前記記憶デバイスに存在するか否かをフィルタアルゴリズムにより判定する
ストレージ装置。
【請求項８】
請求項７に記載のストレージ装置であって、
前記記憶デバイスよりも高速にアクセスすることが可能なメモリ素子を備え、
前記チャンクのメッセージダイジェストに基づき、そのチャンクが管理されている前記コンテナを特定する情報を含むチャンク索引表を管理し、
前記重複排除処理に際して前記コンテナ索引表の一部を前記メモリ素子に格納し、
新たに前記コンテナ索引表を前記メモリ素子に格納すると前記メモリ素子に格納されている前記コンテナ索引表の数が所定の閾値を超えてしまう場合、前記メモリ素子に現在格納されている前記コンテナ索引表の一部をロールアウトし、前記チャンク索引表に基づき、現在、前記重複判定処理の対象になっている前記チャンクの情報が管理されている前記コンテナ索引表を特定し、特定した前記コンテナ索引表を前記メモリ素子にロールインする
ストレージ装置。
【請求項９】
請求項１乃至８のいずれか一項に記載のストレージ装置であって、
前記外部装置から受信した前記データと既に前記記憶デバイスに格納されているデータとを、所定サイズのデータであるチャンクを単位として比較することにより、前記重複排除処理を行い、
前記外部装置から受信したデータについて前記第２方式の重複排除処理を適用して前記重複排除処理を行う場合、前記データを受信した際に前記データを前記チャンクに分割して前記所定の記憶領域に格納しておき、事後的に前記第２方式の重複排除処理を行う際に前記記憶領域から前記チャンクを読み出して前記重複排除処理を行う
ストレージ装置。
【請求項１０】
請求項１乃至８のいずれか一項に記載のストレージ装置であって、
前記外部装置から受信したデータについて前記第２方式の重複排除処理を適用して前記重複排除処理を行う場合、前記データを受信した際に前記データを圧縮して前記所定の記憶領域に格納しておき、事後的に前記第２方式の重複排除処理を行う際に前記所定の記憶領域に格納されている前記データを伸張しつつ前記重複排除処理を行う
ストレージ装置。
【請求項１１】
請求項１乃至８のいずれか一項に記載のストレージ装置であって、
前記外部装置から受信した前記データと既に前記記憶デバイスに格納されているデータとを、所定サイズのデータであるチャンクを単位として比較することにより、前記重複排除処理を行い、
前記外部装置から受信したデータについて前記第２方式の重複排除処理を適用して前記重複排除処理を行う場合、前記データを受信した際に前記データを前記チャンクに分割し、
複数の前記チャンクからなるデータであるコンテナを単位として前記記憶デバイスへのデータの書き込み又は読み出しを行い、
前記コンテナに格納されている前記チャンクのメッセージダイジェストと前記チャンクの前記コンテナにおける位置情報とを含むコンテナ索引表を管理し、
前記外部装置から複数回に亘って受信するデータ間で普遍性の高い前記チャンクを専用の前記コンテナである普遍コンテナに格納し、
前記外部装置から受信したデータについて前記第２方式の重複排除処理を適用して前記重複排除処理を行う場合、前記データを受信した際に前記普遍コンテナの前記コンテナ索引表に基づき、前記外部装置から受信した前記データの前記チャンクが既に前記記憶デバイスに存在するか否かを判定し、存在する場合は前記チャンクを前記所定の記憶領域に格納しない
ストレージ装置。
【請求項１２】
外部装置から送られてくるＩ／Ｏ要求に応じて前記外部装置に記憶デバイスの記憶領域を提供し、
前記外部装置から前記Ｉ／Ｏ要求とともに受信したデータが前記記憶デバイスに重複して格納されるのを排除する重複排除処理を行う機能、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際に前記データについて前記重複排除処理を直ちに行う第１方式の重複排除処理を行う機能、及び、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際に前記データを一時的に所定の記憶領域に記憶しておき、事後的に前記記憶領域から前記データを読み出して前記データについての前記重複排除処理を行う第２方式の重複排除処理を行う機能、
を備えるストレージ装置が、
前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際、前記Ｉ／Ｏ要求の対象となる前記データについて前記第１方式の重複排除処理を行った場合の当該ストレージ装置の処理性能への影響、前記データについて前記第２方式の重複排除処理を行った場合の当該ストレージ装置の処理性能への影響、及び前記データについて前記第２方式の重複排除処理を行った場合に必要となる前記所定の記憶領域のサイズ、のうちの少なくともいずれかに基づき、前記データに適用する前記重複排除処理の前記方式を選択するようにし、
前記外部装置から受信した複数の前記データの夫々についての複数の前記第１方式の重複排除処理が同時に行われることにより生じる当該ストレージ装置の処理性能への影響、前記外部装置から受信した複数の前記データの夫々についての複数の前記第２方式の重複排除処理が同時に行われることにより生じる当該ストレージ装置の処理性能への影響、及び当該ストレージ装置の利用効率、のうちの少なくともいずれかに基づき、前記第１方式の重複排除処理の同時処理数、及び前記第２方式の重複排除処理の同時処理数のうちの少なくともいずれかを増減するようにする
ストレージ装置の制御方法。
【請求項１３】
請求項１２に記載のストレージ装置の制御方法であって、
前記ストレージ装置が、
前記外部装置から受信した前記データと既に前記記憶デバイスに格納されているデータとを、所定サイズのデータであるチャンクを単位として比較することにより、前記重複排除処理を行い、
複数の前記チャンクからなるデータであるコンテナを単位として前記記憶デバイスへのデータの書き込み又は読み出しを行い、
前記コンテナに格納されている前記チャンクのメッセージダイジェストと前記チャンクの前記コンテナにおける位置情報とを含むコンテナ索引表を管理し、
前記外部装置から複数回に亘って受信するデータ間で普遍性の高い前記チャンクを専用の前記コンテナである普遍コンテナに格納し、
前記重複排除処理に際し、
前記普遍コンテナの前記コンテナ索引表に基づき、前記外部装置から受信した前記データの前記チャンクが既に前記記憶デバイスに存在するか否かを判定し、
続いて、前記普遍コンテナ以外の前記コンテナ索引表に基づき、前記判定にて重複しないと判定された前記チャンクについて、そのチャンクが既に前記記憶デバイスに存在するか否かを判定し、
続いて、前記判定にて重複しないと判定された前記チャンクについて、そのチャンクが既に前記記憶デバイスに存在するか否かをフィルタアルゴリズムにより判定するようにする
ストレージ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ装置及びストレージ装置の制御方法に関する。
【背景技術】
【０００２】
特許文献１には、ストレージシステムにおいて実行される重複排除処理の性能改善に関する技術が開示されている。ストレージシステムは、クライアントから書き込み要求を受信した際、第１の重複排除処理を実行し、その後の適宜なタイミングで第２の重複排除処理を実行する。第１の重複排除処理において、ストレージシステムは、書き込み対象データが記憶デバイスに既に書き込まれているデータの一部のデータ（他のデータと重複する可能性が高いと見込まれる順にランク付けされたデータのうちランクの高いデータ）と重複しているか否かを判定し、重複していると判定した場合はその書き込みデータの記憶デバイスへの書き込みを抑制する。また第２の重複排除処理において、ストレージシステムは、記憶デバイスに書き込んだ書き込みデータのうち、第１の重複排除処理にて記憶デバイスに既に書き込まれているデータと重複しているか否かの評価が完了していないものについて、記憶デバイスに既に書き込まれている他のデータと重複しているか否かを判定し、重複していると判定した場合は、記憶デバイスに書き込んだ書き込みデータもしくは当該書き込みデータと同じ内容のデータを記憶デバイスから削除する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１１／０３３５８２号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されているストレージシステムの場合、重複排除の評価が完了していない全てのデータ（重複排除の対象となるデータ、対象とならないデータの双方を含む）が記憶デバイスに格納されるため、その分、記憶デバイスの必要容量が増えることになる。また新規データ（重複排除が適用されないデータ）の記憶デバイスへの書き込みと第２の重複排除処理による記憶デバイスからのデータの読み出しとが同時に行われてしまうと、記憶デバイスへのアクセス性能が低下し、ストレージシステム全体の処理性能の低下を招くことになるが、特許文献１では、このような複数の処理が並列して行われる場合についてとくに考慮されていない。
【０００５】
本発明は以上の背景に鑑みてなされたものであり、記憶資源を有効に利用しつつ重複排除を効率よく行ことが可能なストレージ装置、及びストレージ装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するための、本発明のうちの一つは、外部装置から送られてくるＩ／Ｏ要求に応じて前記外部装置に記憶デバイスの記憶領域を提供するストレージ装置であって、前記外部装置から前記Ｉ／Ｏ要求とともに受信したデータが前記記憶デバイスに重複して格納されるのを排除する重複排除処理を行う機能、前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際に前記データについて前記重複排除処理を直ちに行う第１方式の重複排除処理を行う機能、及び、前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際に前記データを一時的に所定の記憶領域に記憶しておき、事後的に前記記憶領域から前記データを読み出して前記データについての前記重複排除処理を行う第２方式の重複排除処理を行う機能、を備え、前記記憶デバイスへのデータの格納を指示する前記Ｉ／Ｏ要求を受信した際、前記Ｉ／Ｏ要求の対象となる前記データについて前記第１方式の重複排除処理を行った場合の当該ストレージ装置の処理性能への影響、前記データについて前記第２方式の重複排除処理を行った場合の当該ストレージ装置の処理性能への影響、及び前記データについて前記第２方式の重複排除処理を行った場合に必要となる前記所定の記憶領域のサイズ、のうちの少なくともいずれかに基づき、前記データに適用する前記重複排除処理の前記方式を選択し、
前記外部装置から受信した複数の前記データの夫々についての複数の前記第１方式の重複排除処理が同時に行われることにより生じる当該ストレージ装置の処理性能への影響、前記外部装置から受信した複数の前記データの夫々についての複数の前記第２方式の重複排除処理が同時に行われることにより生じる当該ストレージ装置の処理性能への影響、及び当該ストレージ装置の利用効率、のうちの少なくともいずれかに基づき、前記第１方式の重複排除処理の同時処理数、及び前記第２方式の重複排除処理の同時処理数のうちの少なくともいずれかを増減させる。
【０００７】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄の記載、及び図面の記載等により明らかにされる。
【発明の効果】
【０００８】
本発明によれば、記憶資源を有効に利用しつつ重複排除を効率よく行うことができる。
【図面の簡単な説明】
【０００９】
【図１】ストレージシステムの構成を示す図である。
【図２】重複排除処理方式選択処理（その１）Ｓ２００を説明するフローチャートである。
【図３】重複排除処理方式選択処理（その２）Ｓ２５０を説明するフローチャートである。
【図４】バックアップ処理を概念的に説明する図である。
【図５】チャンク索引表１６２及びコンテナ索引表の構成を説明する図である。
【図６】コンテンツ索引表Ｓ１６４の一例である。
【図７】第１実施形態におけるバックアップ処理の全体的な流れを説明するフローチャートである。
【図８】インライン方式の場合の重複排除処理Ｓ３０３を説明するフローチャートである。
【図９】チャンクの重複排除処理Ｓ４０３を説明するフローチャートである。
【図１０】ポストプロセス方式の場合の重複排除処理Ｓ３０５を説明するフローチャートである。
【図１１】リストア処理Ｓ７００を説明するフローチャートである。
【図１２】重複排除処理の同時処理数制御処理Ｓ８００を説明するフローチャートである。
【図１３】第２実施形態におけるバックアップ処理Ｓ９００の全体的な流れを説明するフローチャートである。
【図１４】ポストプロセス方式の重複排除処理Ｓ９０７を説明するフローチャートである。
【図１５】第２実施形態におけるリストア処理Ｓ１１００を説明するフローチャートである。
【図１６】第３実施形態におけるバックアップ処理Ｓ１２００の全体的な流れを説明するフローチャートである。
【図１７】ポストプロセス方式の重複排除処理Ｓ１２０６の詳細を説明するフローチャートである。
【図１８】第３実施形態におけるリストア処理Ｓ１４００を説明するフローチャートである。
【図１９】第４実施形態におけるバックアップ処理Ｓ１５００の全体的な流れを説明するフローチャートである。
【図２０】ポストプロセス方式の重複排除処理Ｓ１５１２の詳細を説明するフローチャートである。
【図２１】第４実施形態におけるリストア処理Ｓ１７００を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
以下、実施形態について図面とともに説明する。
［第１実施形態］
第１実施形態で説明するストレージシステムは、ホスト装置（外部装置）と、ホスト装置にデータの格納領域を提供するストレージ装置とを含む。ストレージ装置は、ホスト装置から送られてくるＩ／Ｏ要求に応じて、当該ストレージ装置が備える（もしくは当該ストレージ装置に接続している）記憶デバイスにアクセスし、記憶デバイスに対してＩ／Ｏ処理（記憶デバイスへのデータの書き込み（以下、格納ともいう。）に関する処理、及び記憶デバイスからのデータの読み出しに関する処理）を行う。
【００１１】
記憶デバイスは、例えば、複数のハードディスクドライブ（Hard Disk Drive）を用いて構成されている。尚、以下の説明において、記憶デバイスへの書き込みの対象となるデータのことを書き込みデータと称し、記憶デバイスからの読み出しの対象となるデータのことを読み出しデータと称する。
【００１２】
ストレージ装置は、記憶デバイスの記憶資源を有効利用するための機能（記憶デバイスに格納されるデータのデータ量（以下、データサイズとも称する。）を削減する機能）として、ファイル圧縮（Compression）並びに重複排除（De-duplication）の機能を備える。このうちファイル圧縮機能は、１ファイル内で内容が共通するデータを縮約（符号化）することによりデータ量の削減を図る機能である。一方、重複排除機能は、同じデータ（実体データが共通するデータ）が記憶デバイスに重複して格納されるのを排除する機能であり、複数のファイル間で内容が共通するデータを縮約（符号化）して記憶デバイスに格納することによりデータ量の削減を図る機能である。
【００１３】
上記の重複排除機能の実現方式には、インライン方式（第１方式の重複排除処理）とポストプロセス方式（第２方式の重複排除処理）とがある。ストレージ装置は、いずれかの方式を適切に選択して重複排除を行う。ポストプロセス方式で重複排除の処理を行う場合、ストレージ装置は、ホスト装置からＩ／Ｏ要求とともに受信したデータを、一旦、専用の記憶デバイス（以下、一時格納デバイスと称する。）に格納しておき、ホスト装置にＩ／Ｏ要求に対する応答を返した後、事後的に（非同期的に）重複排除処理を行う。一方、後者のインライン方式で重複排除処理を行う場合、ストレージ装置は、ホスト装置からＩ／Ｏ要求を受信すると、これとともに受信したデータについて直ちに（同期的に）重複排除を行う。
【００１４】
ポストプロセス方式の場合、ストレージ装置のホスト装置に対する応答性能（レスポンス性能）に与える影響は少ないが、一時格納デバイスの記憶領域を確保する必要がある。またポストプロセス方式の場合、事後的に行われる重複排除処理において一時格納デバイスへのアクセスが頻発するため、重複排除処理の実行時にストレージ装置の処理性能（パフォーマンス）に影響を与える。このため、例えば、ホスト装置からバックアップに関する書き込みデータを受信した場合、ホスト装置から要求されたバックアップ処理を完結させるのに要する時間が長くなる。
【００１５】
一方、インライン方式の場合、一時格納デバイスは不要であり、また事後的にストレージ装置の処理性能を低下させるようなこともない。しかしインライン方式では、ホスト装置から書き込みデータを受信した際に直ちに重複排除処理が行われるため、ホスト装置に対する応答性能に影響が生じる。尚、インライン方式では、重複排除処理にて記憶デバイスに存在するデータと重複する旨の判定がされたデータについてはその実体データについての記憶デバイスへの書き込みは行われない。このため、例えば、重複排除処理の判定に要する時間が十分に短い場合には、ポストプロセス方式に比べてストレージ装置の処理性能の向上を期待できる。
【００１６】
このように、インライン方式で重複排除処理を行った場合とポストプロセス方式で重複排除処理を行った場合の夫々におけるストレージ装置の処理性能は、ホスト装置から受信したデータの種類やストレージ装置の動作状態などによって多様に変化する。そこで本実施形態では、ストレージ装置が、ホスト装置から受信した書き込みデータについて、インライン方式又はポストプロセス方式のいずれかの方式をデータの特性やストレージ装置の動作状態などに応じて適切に選択して重複排除処理を行うようにし、ストレージ装置の処理性能の向上を図る。
【００１７】
尚、以下の説明において、記憶デバイスに格納する単位である論理的にまとまったデータのことをコンテンツ（Content）と称する。コンテンツには、ファイルシステムが取り扱う通常のファイルのほか、例えば、アーカイブファイル、バックアップファイル、仮想ボリュームのデータが格納されるファイル等、通常のファイルを集約したファイルも含まれる。尚、アーカイブファイルについてはこれに集約されているファイルの夫々を個別にコンテンツとして捉えてもよい。
【００１８】
また重複排除の単位となる所定サイズのデータのことをチャンク（Chunk）と称し、複数のチャンクをまとめたデータのことをコンテナ（Container）と称する。後述するように、各チャンクはコンテナ単位で記憶デバイスに格納される。
【００１９】
ストレージ装置は、ホスト装置から受信したデータ（以下、対象データとも称する。）についてチャンクを単位として重複排除処理を行うにあたり、対象データのチャンク（以下、対象チャンクとも称する。）と同じ内容の（実体データが共通する）チャンク（以下、重複するチャンクとも称する。）が記憶デバイスに存在するか否かを判定する。以下においてこの判定のことをチャンクの重複判定とも称する。
【００２０】
チャンクの重複判定において、対象チャンクと重複するチャンクが記憶デバイスに存在しない場合、ストレージ装置は対象チャンクの内容（実体データ）を記憶デバイスに書き込む。一方、対象チャンクと同じ内容のチャンクが記憶デバイスに存在する場合、ストレージ装置は、対象チャンクを記憶デバイスに格納せずに、記憶デバイスに格納されている対象チャンクと同じ内容のチャンクの記憶デバイスにおける所在を示す情報（以下、リンク情報と称する。）を記憶デバイスに格納する（同じ実体データに対して複数のリンクを張る。）。
【００２１】
ストレージ装置は、コンテナに格納されているチャンクを管理するための情報として、コンテナごとの索引表（以下、コンテナ索引表と称する。）を管理する。コンテナ索引表には、そのコンテナに格納されている各チャンクのそのコンテナにおける所在を示す情報（オフセット値、データサイズ等）が格納される。
【００２２】
ストレージ装置は、対象チャンクに対応するコンテナ索引表を特定するための情報（以下、チャンク索引表と称する。）を管理する。ストレージ装置は、例えば、チャンクを格納するコンテナを決定したタイミングでチャンク索引表を生成する。
【００２３】
チャンクの重複判定を行う方法としては、例えば、チャンクの先頭から順番にチャンク同士を比較していく方法（バイナリ比較）、メッセージダイジェストを比較する方法などがある。本実施形態では、重複判定処理の高速化並びに低コスト化の観点から、ストレージ装置はメッセージダイジェストを利用してチャンクの重複判定を行うものとする。
【００２４】
上記メッセージダイジェスト（フィンガプリント（FP：finger print）とも称する。）は、任意の長さのデータについて生成される固定長のダイジェストである。ストレージ装置は、例えば、ハッシュ関数を用いてメッセージダイジェストを生成する。ハッシュ関数としては、例えば、乱数性が極めて高く、各チャンクについて一意に定まる可能性の高い（衝突する可能性の少ない）もの（例えばＳＨＡ２５６）を用いる。本実施形態では、ストレージ装置は、コンテナ索引表に各チャンクのフィンガプリントを管理し、対象チャンクのフィンガプリントをコンテナ索引表の各チャンクと比較することによりチャンクの重複判定を行う。
【００２５】
各コンテナには、予めそのコンテナに格納可能なチャンクの数の上限値（又はそのコンテナに格納されるチャンクのデータサイズの合計値の上限容量）が設定される。本実施形態では、チャンクはコンテナが一杯になるまで（そのコンテナに新たなチャンクを格納するための空き容量が無くなるまで）、高速アクセスが可能なメモリ素子（後述するメモリ１０４）に保持される。コンテナが一杯になると、チャンクはメモリ素子からコンテナ単位で記憶デバイスに書き出される。
【００２６】
ストレージ装置は、ホスト装置から受信するデータ間で普遍性の高いチャンク（以下、普遍チャンクと称する。）を、これを格納するための専用のコンテナ（以下、普遍コンテナと称する。）に格納してメモリ素子に保持する。例えばストレージ装置がホスト装置からデータのバックアップに関する書き込み要求を複数世代に亘って受信するような場合、ストレージ装置は、各バックアップ世代に普遍的に出現する同じ内容のチャンク（普遍チャンク）を普遍コンテナに格納する。普遍コンテナをメモリ素子に常駐させるようにすれば記憶デバイスへのアクセス回数が減少し、ストレージ装置の処理性能を高めることができる。また通常、普遍チャンクはコンテンツの種類（通常ファイル、仮想ディスクボリューム、アーカイブファイル等のファイルフォーマット）ごとに類似している。このため、チャンクの重複判定をコンテンツの種類毎に行うことにより、普遍チャンクであるか否かの判定を効率よく行うことができる。
【００２７】
図１に実施形態として説明するストレージシステムの構成を示している。同図に示すように、ストレージ装置１００は、通信ネットワーク１７４に接続している。ストレージ装置１００は、この通信ネットワーク１７４を介してホスト装置（不図示）と通信する。ホスト装置は、例えば、バックアップサーバなどの情報処理装置（コンピュータ）である。
【００２８】
ホスト装置とストレージ装置１００とを結ぶ通信ネットワーク１７４は、例えば、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、ＳＡＮ（Storage Area Network）、インターネット、公衆通信網、専用線等である。通信ネットワーク１７４を介して行われる通信は、例えば、ＴＣＰ／ＩＰ、ｉＳＣＳＩ（internet Small Computer System Interface）、ファイバーチャネルプロトコル（Fibre Channel Protocol）等に従って行われる。
【００２９】
同図に示すように、ストレージ装置１００には、適宜な通信手段（ＬＡＮ、ＵＳＢ（Universal Serial Bus）等）を介して管理装置１７２が接続している。管理装置１７２は、例えば、ＣＰＵやメモリ、ディスプレイ等の出力装置、キーボード等の入力装置を備える情報処理装置（コンピュータ）である。管理装置１７２は、ストレージ装置１００の各種設定（構成情報の設定、動作に関する設定（バックアップ処理やリストア処理等の設定））、ストレージ装置１００に対する各種制御指示（起動／終了の制御指示等）、ストレージ装置１００からの各種情報の収集（稼働状況のモニタ、稼働ログ／障害ログの収集等）等を行う。管理装置１７２は、これらの設定や制御指示を行うためのユーザインタフェース（ＣＬＩ（Command Line Interface）、ＧＵＩ（Graphical User Interface）等）を管理者やオペレータに提供する。
【００３０】
同図に示すように、ストレージ装置１００は、プロセッサ１０２、メモリ１０４、記憶デバイス１０６（記憶デバイス１０６ａ、一時格納デバイス１０６ｂ）、及び通信インタフェース１０８を備える。尚、ストレージ装置１００の典型例としてディスクアレイ装置がある。
【００３１】
プロセッサ１０２は、演算処理装置として機能し、メモリ１０４に格納されているプログラムやパラメータに従ってストレージ装置１００の様々な機能の実現に寄与する。メモリ１０４は、例えば、半導体記憶装置（ＳＲＡＭ (Static Random Access Memory)、ＤＲＡＭ (Dynamic Random Access Memory)、ＰＲＯＭ（Programmable ROM）、ＮＶＲＡＭ（Non Volatile RAM）等）である。
【００３２】
同図に示すように、メモリ１０４には、ストレージ装置１００が備える様々な機能を実現するためのプログラム（オペレーティングシステム１５４、バックアッププログラム１５０、及びリストアプログラム１５２等）が格納されている。尚、同図に示すもののほか、メモリ１０４には、ストレージ装置１００に、後述する新規のチャンク（そのチャンクと実体データが共通するチャンクが記憶デバイス１０６ａに存在しないチャンク）であるか否かの判定機能（以下、新規チャンク判定機能とも称する。）を、フィルタアルゴリズム（例えばブルームフィルタ（Bloom Filter）のアルゴリズム）によって実現するプログラムも格納されている。尚、これらのプログラムは、例えば、ストレージ装置１００がアクセスすることが可能な所定の記録媒体に格納されてストレージ装置１００に提供（インストール）される。またこれらのプログラムは、例えば、他の装置から通信ネットワーク１７４等を介してダウンロードされることによりストレージ装置１００にインストールされる。
【００３３】
メモリ１０４には、記憶デバイス１０６との間のデータの授受に際して用いられる、ライトバッファ１４２並びにリードキャッシュ１４４の領域が確保されている。またメモリ１０４には、重複排除処理などで利用される各種のテーブルが格納されている。上記テーブルには、コンテナ索引表Ｔ１１０（コンテナ索引表Ｔｆ１１２、普遍コンテナ索引表Ｔｃ１２８、及びコンテナ索引表ＴＦ１１４）、計測表Ｒ１６０、チャンク索引表Ｕ１６２、コンテンツ索引表Ｓ１６４、及びコンテナ索引表ＴＦ１１４などがある。
【００３４】
オペレーティングシステム１５４は、アプリケーションソフトウエアに対してハードウエアを抽象化する機能、マルチタスク方式（プロセス管理方式）によるソフトウエアの実行環境を提供する機能、ハードウエア資源の管理機能などをストレージ装置１００に実現する。またオペレーティングシステム１５４は、ホスト装置からファイルを単位としたＩ／Ｏ要求を受け付ける機能、階層構造（ディレクトリ構造）によるファイルの管理環境を提供する機能などのファイルシステムとしての機能をストレージ装置１００に実現する。
【００３５】
バックアッププログラム１５０は、ホスト装置から受信した書き込みデータについて、前述した重複排除機能の方式を選択する機能、バックアップ対象データについて実際に重複排除処理を行う機能をストレージ装置１００に実現させる。またバックアッププログラム１５０は、ライトバッファ１４２を介してバックアップ対象のデータやリンク情報を記憶デバイス１０６に格納する機能をストレージ装置１００に実現させる。
【００３６】
リストアプログラム１５２は、コンテンツ索引表Ｓ１６４、コンテナ索引表ＴＦ１１４及びリードキャッシュ１４４を利用して、記憶デバイス１０６ａに格納されているバックアップデータを読み出す機能をストレージ装置１００に実現させる。またリストアプログラム１５２は、リードキャッシュ１４４を利用して記憶デバイス１０６ａに格納されているバックアップデータを読み出す機能をストレージ装置１００に実現させる。
【００３７】
ストレージ装置１００は、バックアッププログラム１５０の実行時にコンテナ索引表Ｔｆ１１２を利用する。またストレージ装置１００は、リストアプログラム１５２の実行時に適宜コンテナ索引表ＴＦ１１４を利用する。
【００３８】
普遍コンテナ索引表Ｔｃ１２８には普遍チャンクに関する情報が管理される。普遍コンテナ索引表Ｔｃ１２８は、例えば、バックアッププログラム１５０と共に記憶デバイス１０６ａから読み出されてメモリ１０４に展開されてメモリ１０４上に保持される。ストレージ装置１００は、メモリ１０４の有効利用を図るべく、普遍コンテナ索引表Ｔｃ１２８以外のコンテナ索引表Ｔ１１０については、随時、メモリ１０４にロールイン（記憶デバイス１０６ａからメモリ１０４へのステージング）もしくはロールアウト（メモリ１０４から記憶デバイス１０６ａへのデステージング）する。
【００３９】
計測表Ｒ１６０には、コンテナ索引表１１０のロールインもしくはロールアウトに関する管理情報、コンテナ単位での重複チャンクの有無や重複チャンクの数、プロセッサ１０２の負荷、通信インタフェース１０８の負荷、メモリ１０４の使用容量、一時格納デバイス１０６ｂの使用容量、記憶デバイス１０６（記憶デバイス１０６ａ、一時格納デバイス１０６ｂ）へのアクセス頻度などの各種の計数情報が管理される。コンテンツ索引表Ｓ１６４は、チャンクの格納先に関する情報がコンテンツ毎に管理される。
【００４０】
記憶デバイス１０６（記憶デバイス１０６ａ及び一時格納デバイス１０６ｂを含む。）は、例えば、物理的な記憶媒体である複数の記憶ドライブを用いて構成される。尚、記憶デバイス１０６ａ及び一時格納デバイス１０６ｂは、必ずしも同一のハードウエアでなくてもよい。上記記憶ドライブは、例えば、ＳＡＳ（Serial Attached SCSI）、ＳＡＴＡ（Serial ATA）、ＦＣ（Fibre Channel）、ＰＡＴＡ（Parallel ATA）、ＳＣＳＩなどの形式のハードディスクドライブや、半導体記憶装置（ＳＳＤ）である。ストレージ装置１００は、記憶デバイス１０６の記憶領域を、例えば、複数の記憶ドライブをＲＡＩＤ（Redundant Arrays of Inexpensive （or Independent) Disks）方式（ＲＡＩＤ０〜６の少なくともいずれか）で制御することによって構成されるＲＡＩＤグループの記憶領域として構成する。
【００４１】
記憶デバイス１０６ａには、コンテナ索引表Ｔ１１０が管理されるデータベース（以下、Ｔ表用ＤＢ１２０とも称する。）、チャンク索引表Ｕ１６２が管理されるデータベース（以下、Ｕ表用ＤＢ１８２とも称する。）、コンテンツ索引表Ｓ１６４が管理されるデータベース（以下、Ｓ表用ＤＢ１８４とも称する。）、及びコンテナＣ（コンテナＣｆ１３２、コンテナＣｇ１３４、コンテナ１３６Ｃｈ、コンテナＣｃ１３８等）などが格納される。尚、コンテナＣｆ１３２、コンテナＣｇ１３４、コンテナ１３６Ｃｈ、及びコンテナＣｃ１３８には、重複排除処理が適用されたデータがライトバッファ１４２を介して格納される。
【００４２】
一時格納デバイス１０６ｂには、ポストプロセス方式による重複排除処理の対象となるデータ（事後的に重複排除処理が適用されるデータ）が格納される。
【００４３】
続いてストレージ装置１００にて行われる重複排除処理について具体的に説明する。尚、以下においては、ストレージ装置１００が、ホスト装置から受信したＩ／Ｏ要求に応じて、データのバックアップに関する処理（以下、バックアップ処理と称する。）、並びにデータのリストアに関する処理（以下、リストア処理と称する。）を行う場合を例として説明する。始めにストレージ装置１００が重複排除処理の方式を選択する仕組みについて説明する。
【００４４】
図２は、ストレージ装置１００が、バックアップ処理に際してホスト装置から書き込みデータとしてコンテンツ（以下、対象コンテンツと称する。）を受信した場合に、これをインライン方式又はポストプロセス方式のいずれの方式で処理するかを選択する処理（以下、重複排除処理方式選択処理（その１）Ｓ２００と称する。）を説明するフローチャートである。尚、以下の説明において、符号の前に付した「Ｓ」の文字はステップを意味する。
【００４５】
同図に示すように、ストレージ装置１００は、まず対象コンテンツについて、対象コンテンツの特性に基づき、重複排除処理の方式の選択の指標となる重複排除処理の優先度Ｐｃを求める（Ｓ２０１）。尚、ストレージ装置１００は、インライン方式を選択した場合にバックアップ処理の処理性能の向上が多く期待できるコンテンツほど、高い優先度Ｐｃを設定する。
【００４６】
例えば、ストレージ装置１００は、対象コンテンツのファイル名が、既に記憶デバイス１０６ａに格納されているコンテンツ（以下、既存コンテンツと称する。）のファイル名の全部又はファイル名の一部と一致する場合にその対象コンテンツに高い優先度Ｐｃを設定する。これはそのような場合は対象コンテンツのファイルが既存コンテンツのファイルと同じファイルである場合であり、この場合は重複するチャンクが多く存在する可能性が高く、記憶デバイス１０６に対するアクセス負荷が少なくインライン方式によって効率よく処理することが可能であり、インライン方式を選択することでバックアップ処理の処理性能の向上を図ることができるからである。
【００４７】
また例えば、ストレージ装置１００は、対象コンテンツの先頭から数チャンク（必ずしも先頭から数チャンクに限定されず、対象コンテンツの一部であればよい。）について重複判定を行い（例えば、対象コンテンツの一部のデータを既に記憶デバイス１０６ａに格納されているデータと比較する。）、その結果求まる重複排除率（例えば、重複排除処理の前後におけるデータサイズの比で表される。）が高いコンテンツほど、優先度Ｐｃを高く設定する。これはこのように重複排除率が高いものについてインライン方式を選択するようにすることで、記憶デバイス１０６へのアクセス回数が低減され、バックアップ処理の処理性能の向上を図ることができるからである。
【００４８】
また例えば、ストレージ装置１００は、対象コンテンツが第２世代以降のバックアップデータである場合に優先度Ｐｃを高く設定する。これは第２世代以降のバックアップデータは第１世代のバックアップデータに比べて既存コンテンツと重複する可能性が高いので、インライン方式を選択することでバックアップ処理の処理性能の向上を図ることができるからである。
【００４９】
また例えば、ストレージ装置１００は、対象コンテンツのファイルのデータサイズが大きいほど優先度Ｐｃを高く設定する。これはそのファイルのデータサイズが大きなコンテンツを積極的にインライン方式の対象とすることにより、一時格納デバイス１０６ｂの必要容量の低減を図ることができるからである。
【００５０】
尚、以上に示した優先度Ｐｃの設定方法はあくまで一例に過ぎず、さらに別の方法で優先度Ｐｃ求めてもよい。また優先度Ｐｃは以上に示した設定方法の複数を組み合わせて設定するようにしてもよいし、以上に示した設定方法とさらに別の方法とを組み合わせて設定するようにしてもよい。
【００５１】
図２に戻り、続いてストレージ装置１００は、優先度Ｐｃと予め設定されている閾値ＴＨ＿Ｐｃとを比較する（Ｓ２０２）。尚、閾値ＴＨ＿Ｐｃは、例えば、管理装置１７２から設定する。また閾値ＴＨ＿Ｐｃは、例えば、初期化ファイル等に格納しておき、ストレージ装置１０がバックアッププログラム１５０の起動時等に自動的に読み込むようにしてもよい。またストレージ装置１００が動的に閾値ＴＨ＿Ｐｃを更新するようにしてもよい。
【００５２】
優先度Ｐｃが閾値ＴＨ＿Ｐｃよりも大きい場合（Ｓ２０２：Ｙ）、ストレージ装置１００は、対象コンテンツの重複排除処理の方式としてインライン方式を選択する（Ｓ２０３）。一方、優先度Ｐｃが閾値ＴＨ＿Ｐｃ以下である場合（Ｓ２０２：Ｎ）、ストレージ装置１００は、対象コンテンツの重複排除処理の方式としてポストプロセス方式を選択する（Ｓ２０４）。
【００５３】
ところで、以上に説明した重複排除処理方式選択処理Ｓ２００では、対象コンテンツの優先度Ｐｃを求め、これに基づき重複排除処理の方式を選択するようにしているが、一時格納デバイス１０６ｂの上限容量（制限値）を考慮しつつ重複排除処理の方式を選択するようにすることもできる。
【００５４】
図３はそのようにした場合の処理例（以下、重複排除処理方式選択処理（その２）Ｓ２５０と称する。）である。
【００５５】
同図に示すように、まずストレージ装置１００は、対象コンテンツを一時格納デバイス１０６ｂに格納することができるか否かを判定する（Ｓ２５１）。具体的には、ストレージ装置１００は、一時格納デバイス１０６ｂに現在格納されているコンテンツの合計サイズＶｔ（以下、ポストプロセス合計サイズＶｔとも称する。）と対象コンテンツのコンテンツサイズＶｃとの合計Ｖｔ＋Ｖｃを求め、求めた値Ｖｔ＋Ｖｃを予め設定されている閾値ＴＨ＿Ｖｔ（制限値）と比較する。尚、この閾値ＴＨ＿Ｖｔは、例えば、所定の余裕量を考慮した値とする。
【００５６】
合計値Ｖｔ＋Ｖｃが閾値ＴＨ＿Ｖｔ未満である場合（Ｓ２５１：Ｙ）、つまり一時格納デバイス１０６ｂに対象コンテンツを格納することができる場合、ストレージ装置１００はＳ２５４からの処理を行う。一方、合計値Ｖｔ＋Ｖｃが閾値ＴＨ＿Ｖｔ以上である場合（Ｓ２５１：Ｎ）、つまり一時格納デバイス１０６ｂに対象コンテンツを格納することができない場合、ストレージ装置１００はＳ２５２からの処理を行う。
【００５７】
Ｓ２５２では、ストレージ装置１００は、対象コンテンツの重複排除処理の方式としてインライン方式を選択する。またストレージ装置１００は、現在、インライン方式が選択されているコンテンツの合計サイズを管理するための変数であるインライン合計サイズＶｄに対象コンテンツのデータサイズＶｃを加算する（Ｓ２５３）。
【００５８】
一方、Ｓ２５４では、ストレージ装置１００は、一時格納デバイス１０６ｂに現在格納されているコンテンツの合計サイズを管理するための変数であるポストプロセス合計サイズＶｔとインライン合計サイズＶｄとを比較する。そして比較の結果、ポストプロセス合計サイズＶｔがインライン合計サイズＶｄを超えている場合（Ｓ２５４：Ｙ）、ストレージ装置１００は、対象コンテンツの重複排除処理方式としてインライン方式を選択する（Ｓ２５２）。
【００５９】
一方、Ｓ２５４でポストプロセス合計サイズＶｔがインライン合計サイズＶｄ以下である場合（Ｓ２５４：Ｎ）、ストレージ装置１００は、対象コンテンツの重複排除処理方式としてポストプロセス方式を選択し（Ｓ２５５）、ポストプロセス合計サイズＶｔに対象コンテンツのデータサイズＶｃを加算する（Ｓ２５６）。
【００６０】
尚、このようにポストプロセス合計サイズＶｔとインライン合計サイズＶｄとを比較した結果に応じて対象コンテンツの重複排除処理方式を選択するようにしているのは、インライン方式の対象となるコンテンツの合計サイズとポストプロセス方式の対象とするコンテンツの合計サイズとをなるべく均衡させるためである。このように双方の合計サイズを均衡させるようにすることで、一時格納デバイス１０６ｂの必要容量を最大でバックアップ処理の対象となるコンテンツの総データサイズの半分以下に抑えることができる。
【００６１】
以上に説明した重複排除処理方式選択処理（その２）Ｓ２５０によれば、閾値ＴＨ＿Ｖｔを設定することで一時格納デバイス１０６ｂの容量を柔軟に設定することが可能となり、ストレージ装置１００の運用の柔軟性を向上することができる。
【００６２】
続いてストレージ装置１００が、ホスト装置からコンテンツについてバックアップ及びリストアを目的としたＩ／Ｏ要求を受信した際に行う処理について説明する。以下では、ストレージ装置１００が、ホスト装置から３つのコンテンツ（以下、夫々、コンテンツf1（２６０）、コンテンツf2（２７０）、及びコンテンツf3（２８０）と称する。）についてのバックアップ及びリストアを目的としたＩ／Ｏ要求を受信した際に行う処理を例として説明する。
【００６３】
尚、上記３つのコンテンツのうちコンテンツf1（２６０）は第１世代のバックアップデータであり、コンテンツf2（２７０）は第２世代のバックアップデータであり、コンテンツf3（２８０）は第３世代のバックアップデータであるものとする。またストレージ装置１００は、これらのコンテンツの夫々についてのＩ／Ｏ要求を、コンテンツf1（２６０）、コンテンツf2（２７０）、コンテンツf3（２８０）の順に受信するものとする。
【００６４】
図４に示すように、ストレージ装置１００は、ホスト装置からバックアップを目的とするＩ／Ｏ要求とともに受信したコンテンツf1（２６０）を、チャンクａ（２６２）及び普遍チャンクｆ（２６４）に分割する。またストレージ装置１００は、ホスト装置から受信したコンテンツf2（２７０）を、チャンクｂ（２７２）、チャンクｃ（２７４）、及び普遍チャンクｆ（２７６）に分割する。またストレージ装置１００は、ホスト装置から受信したコンテンツf3（２８０）を、チャンクｂ（２８２）、チャンクｃ（２８４）、チャンクｄ（２８６）、チャンクｅ（２８８）、及び普遍チャンクｆ（２８９）に分割する。
【００６５】
ストレージ装置１００は、ホスト装置から受信したコンテンツの重複排除に際し、普遍コンテナＣｃ（１３８）、及び普遍コンテナ索引表Ｔｃ１２８を用いる。普遍コンテナＣｃ（１３８）には普遍チャンクの内容（実体データ）が、普遍コンテナ索引表Ｔｃ１２８には普遍チャンクの管理情報が、夫々格納されている。
【００６６】
尚、ストレージ装置１００は、例えば、バックアッププログラム１５０を起動した際に普遍コンテナ索引表Ｔｃ１２８及び普遍コンテナＣｃ（１３８）をメモリ１０４にロールインする。またストレージ装置１００は、同プログラムの終了時に、これらを記憶デバイス１０６ａにロールアウトする。ロールインもしくはロールアウトの指示は、例えば、ストレージ装置１００の管理者やオペレータ等が管理装置１７２を操作して行う。また例えば、上記指示は、ストレージ装置１００がバックアッププログラム１５０の起動時もしくは終了時に初期設定情報等に従って自動的に行う。普遍コンテナＣｃ（１３８）及び普遍コンテナ索引表Ｔｃ１２８はメモリ１０４に常駐している。
【００６７】
ストレージ装置１００は、ホスト装置からコンテンツf1（２６０）を受信するとコンテナＣｆ（１３２）を生成し、これにチャンクａ（２６２）を格納する。またストレージ装置１００は、コンテナＣｆ１３２についてコンテナ索引表Ｔｃ１２８を生成し、生成したコンテナ索引表Ｔｃ１２８にチャンクａ（２６２）の管理情報ＦＰａ（２２０）を格納する。尚、本例では、チャンクｆ（２６４）は普遍コンテナ索引表Ｔｃ１２８の内容から重複排除の対象となり、その実体データはコンテナＣｆ（１３２）には格納されない。但し普遍コンテナ索引表Ｔｃ１２８には普遍チャンクｆの管理情報ＦＰｆ（２２２）が格納される。
【００６８】
ストレージ装置１００は、続いてホスト装置からコンテンツf2（２７０）を受信すると、コンテナＣｇ（１３４）を生成し、コンテンツf1（２６０）のチャンクと重複していないチャンクｂ（２７２）及びチャンクｃ（２７４）を、上記コンテナＣｇ（１３４）に格納する。
【００６９】
尚、コンテンツf2（２７０）を受信した時点でコンテナＣｆ（１３２）に空き領域があればコンテナＣｆ（１３２）にチャンクｂ（２７２）やチャンクｃ（２７４）が格納される可能性もあるが、本例ではコンテナＣｆ（１３２）に空き領域が存在しない場合を示している。
【００７０】
またストレージ装置１００は、コンテナＣｇ（１３４）についてコンテナ索引表Ｔｇ（１２４）を生成し、生成したコンテナ索引表Ｔｇ（１２４）にチャンクｂ（２７２）の管理情報ＦＰｂ（２２４）及びチャンクｃ（２７４）の管理情報ＦＰｃ（２２６）を格納する。
【００７１】
ストレージ装置１００は、続いてホスト装置からコンテンツf3（２８０）を受信すると、コンテナＣｈ（１３６）を生成し、コンテンツf1（２６０）又はコンテンツf2（２７０）と重複していないチャンクｄ（２８６）及びチャンクｅ（２８８）を、上記コンテナＣｈ（１３６）に格納する。
【００７２】
尚、コンテンツf3（２８０）を受信した時点においてコンテナＣｇ（１３４）に空き領域がある場合はコンテナＣｇ（１３４）にチャンクｄ（２８６）及びチャンクｅ（２８８）が格納される可能性もあるが、本例ではコンテナＣｇ（１３４）に空き領域が存在しない場合を示している。
【００７３】
ストレージ装置１００は、コンテナＣｈ（１３６）のコンテナ索引表Ｔｈ（１２６）を生成し、生成したコンテナ索引表Ｔｈ（１２６）にチャンクｄ（２８６）の管理情報ＦＰｄ（２２８）及びチャンクｅ（２８８）の管理情報ＦＰｅ（２２９）を格納する。
【００７４】
ストレージ装置１００は、ホスト装置からコンテンツf3（２８０）のリストアを目的とするＩ／Ｏ要求を受信した場合、コンテナＣｇ（１３４）、コンテナＣｈ（１３６）、及び普遍コンテナＣｃ（１３８）をメモリ１０４にロールインする。そしてコンテンツ索引表Ｓ１６４の内容に基づきンテンツf3（２８０）を合成し、合成したコンテンツf3（２８０）をホスト装置に送信する。
【００７５】
図５とともにチャンク索引表１６２及びコンテナ索引表Ｔ１１０（コンテナ索引表Ｔｆ（１２２）、コンテナ索引表Ｔｇ（１２４）、コンテナ索引表Ｔｇ（１２６）、及び普遍コンテナ索引表Ｔｃ１２８）について説明する。尚、同図はストレージ装置１００が図４に示したコンテンツf2（２７０）のＩ／Ｏ要求を受信した直後の状態に対応している。
【００７６】
コンテナ索引表Ｔｆ（１２２）、コンテナ索引表Ｔｇ（１２４）、コンテナ索引表Ｔｇ（１２６）、及び普遍コンテナ索引表Ｔｃ１２８の構成は共通しており、いずれもチャンク毎の管理情報が格納される一つ以上のレコードを含む。
【００７７】
上記レコードは、フィンガプリント３２２、コンテナオフセット３２４、及びチャンク長３２６の各項目を含む。このうちフィンガプリント３２２には、そのチャンクのフィンガプリントが格納される。またコンテナオフセット３２４には、記憶デバイス１０６ａにおけるチャンクの物理的な格納位置（先頭位置）を示す情報（オフセット値）が格納される。チャンク長３２６には、そのチャンクの長さ（データサイズ）を示す情報が格納される。
【００７８】
チャンク索引表１６２には、コンテナに格納されるチャンクのフィンガプリントとそのチャンクが格納されるコンテナの識別子（以下、コンテナＩＤ３１４と称する。）との対応が管理される。コンテナＩＤ３１４は、コンテナ索引表１１０を参照する際のポインタ情報としても用いられる。コンテナＩＤ３１４としては、例えば、バックアッププログラム１５０及びリストアプログラム１５２のいずれもが参照可能な識別子（例えば、uuid(Universally Unique Identifier)が用いられる。
【００７９】
チャンク索引表１６２は、例えば、メモリ１０４にロールインされていないコンテナ索引表Ｔｇ（１２４）を特定する際に利用される。例えば、図４におけるコンテンツf3（２８０）のチャンクｂ（２７２）について重複排除処理を行う際、これに必要となるコンテナ索引表Ｔｇ（１２４）がメモリ１０４にロールインされていなかったとする。この場合、ストレージ装置１００は、図５のチャンク索引表１６２からチャンクｂ（２７２）のフィンガプリント３１２対応づけられている、コンテナＩＤ３１４がＴｇ（２３０）のコンテナ索引表（図５のコンテナ索引表Ｔｇ（１２４））を記憶デバイス１０６ａから読み出してメモリ１０４にロールインする。
【００８０】
図６とともにコンテンツ索引表Ｓ１６４について説明する。コンテンツ索引表Ｓ１６４はコンテンツ毎に生成される。コンテンツ索引表Ｓ１６４には各コンテンツのチャンクの情報が管理される。同図に示すように、コンテンツ索引表Ｓ１６４は、コンテンツＩＤ３６１、フィンガプリント３６２、コンテナＩＤ３６４、コンテンツオフセット３６６、及びチャンク長３６８の各項目を含むレコードで構成されている。
【００８１】
上記項目のうち、コンテンツＩＤ３６１には、そのコンテンツの識別子（以下、コンテンツＩＤと称する。）が格納される。フィンガプリント３６２には、そのコンテンツを構成しているチャンクのフィンガプリントが格納される。コンテナＩＤ３６４には、チャンクが格納されているコンテナＣの識別情報が格納される。コンテンツオフセット３６６には、コンテナＣにおけるチャンクの位置を示す情報が格納される。チャンク長３６８には、チャンクのデータサイズ（データ長）を示す情報が格納される。
【００８２】
同図に示すレコードのうちSf3（２００）には、図４におけるコンテンツf3（２８０）の情報が格納されている。このレコードの内容から、コンテンツf3（２８０）は、チャンクｂ、チャンクｃ、チャンクｄ、チャンクｅ、及びチャンクｆによって再現できること、これらのチャンクがどのコンテナのどの位置（コンテンツオフセット３６６及びチャンク長３６８で特定される位置）に格納されているかがわかる。
【００８３】
図７はストレージ装置１００が行うバックアップ処理の全体的な流れを説明するフローチャートである。
【００８４】
バックアップ処理Ｓ３００に際し、まずストレージ装置１００は、対象コンテンツに適用する重複排除処理の方式を選択する（Ｓ３０１）。尚、この選択は、例えば、前述した重複排除処理方式選択処理（その１）Ｓ２００や重複排除処理方式選択処理（その２））Ｓ３００を実行することにより行われる。ストレージ装置１００は、インライン方式を選択した場合は（Ｓ３０２：Inline）Ｓ３０３からの処理を行い、ポストプロセス方式を選択した場合は（Ｓ３０２：Post-Process）Ｓ３０４からの処理を行う。
【００８５】
Ｓ３０３では、ストレージ装置１００は、対象コンテンツについて直ちに重複排除処理を実行し、その後、バックアップ処理Ｓ３００は終了する。
【００８６】
Ｓ３０４では、ストレージ装置１００は、対象コンテンツを一時格納デバイス１０６ｂに格納する。
【００８７】
ストレージ装置１００は、一時格納デバイス１０６ｂした対象コンテンツについて事後的にポストプロセス方式による重複排除処理を実行し（Ｓ３０５）、その後、バックアップ処理Ｓ３００は終了する。尚、ストレージ装置１００は、例えば、計測表Ｒ１６０の内容等に基づきストレージ装置１００のハードウエア資源（プロセッサ１０２、メモリ１０４、記憶デバイス１０６等）の負荷状況をリアルタイムに監視し、ストレージ装置１００の処理性能や利用効率の向上が見込めるような適切なタイミングを見計らってポストプロセス方式による重複排除処理（Ｓ３０５）を開始する。
【００８８】
図８は、図７のＳ３０３の処理（以下、インライン方式の場合の重複排除処理Ｓ３０３と称する。）の詳細を説明するフローチャートである。以下、同図とともに当該処理Ｓ３０３について説明する。
【００８９】
同図に示すように、まずストレージ装置１００は、対象コンテンツを複数のチャンクに分割する（Ｓ４０１）。
【００９０】
続いてストレージ装置１００は、チャンクの管理情報を生成する（Ｓ４０２）。チャンクの管理情報には、チャンクのフィンガプリント、チャンクのコンテンツ内における位置を示す情報（オフセット）、チャンクの長さを示す情報などが含まれている。
【００９１】
続いてストレージ装置１００は、チャンクを単位とする重複排除処理を行い（Ｓ４０３）、その後、重複排除処理Ｓ３０３は終了する。
【００９２】
図９はＳ４０３の処理（以下、チャンクの重複排除処理Ｓ４０３とも称する。）を説明するフローチャートである。
【００９３】
まずストレージ装置１００は、まずＳ５０２からＳ５１３のループ処理で用いるカウンタｉを初期化（ｉ＝０）する（Ｓ５０１）。
【００９４】
次いでストレージ装置１００は、メモリ１０４に格納されている普遍コンテナ索引表Ｔｃ１２８を検索し、図８のＳ４０１にて生成した各チャンク（以下、現在処理対象になっているチャンク（カウンタｉの値で特定されるチャンク）のことを対象チャンクと称する。）について重複判定を行う（Ｓ５０２）。
【００９５】
まずストレージ装置１００は、対象チャンクのフィンガプリントに一致するフィンガプリントが、普遍コンテナ索引表Ｔｃ１２８に存在するか否かを判定する。対象チャンクのフィンガプリントに一致するフィンガプリントが普遍コンテナ索引表Ｔｃ１２８に存在する場合、ストレージ装置１００は「重複あり」と判定し（Ｓ５０２：Found）、続いてＳ５０９からの処理を行う。一方、対象チャンクのフィンガプリントに一致するフィンガプリントが普遍コンテナ索引表Ｔｃ１２８に存在しない場合、ストレージ装置１００は「重複なし」と判定し（Ｓ５０２：Not found）、続いてＳ５０３からの処理を行う。
【００９６】
Ｓ５０３では、ストレージ装置１００は、対象チャンクのフィンガプリントに一致するフィンガプリントが、メモリ１０４に格納されているコンテナ索引表Ｔ１１０（普遍コンテナ索引表Ｔｃ１２８を除く）に存在するか否かを判定する。対象チャンクのフィンガプリントに一致するフィンガプリントがコンテナ索引表Ｔ１１０に存在する場合、ストレージ装置１００は「重複有り」と判定し（Ｓ５０３：Found）、続いてＳ５０９からの処理を行う。一方、対象チャンクのフィンガプリントに一致するフィンガプリントがコンテナ索引表Ｔ１１０に存在しない場合、ストレージ装置１００は「重複なし」と判定し（Ｓ５０３：Not found）、続いてＳ５０４からの処理を行う。
【００９７】
Ｓ５０４では、ストレージ装置１００は、新規チャンク判定機能によって対象チャンクと同じ内容のチャンク（実体データが同じチャンク）が記憶デバイス１０６ａに存在しないかもしくは存在する可能性があるかを判定する。対象チャンクと同じ内容のチャンクが記憶デバイス１０６に存在しないと判定した場合（Ｓ５０４：New Chunk）、ストレージ装置１００は続いてＳ５０６からの処理を行う。
【００９８】
一方、対象チャンクと同じ内容のチャンクが記憶デバイス１０６に存在する可能性があると判定した場合（Ｓ５０４：Maybe Registerd Chunk）、ストレージ装置１００は続いてＳ５０５からの処理を行う。尚、例えば、新規チャンク判定機能がブルームフィルタのアルゴリズムを用いるものである場合、ストレージ装置１００は、ハッシュ値の衝突がなければ対象チャンクと同じ内容のチャンクが記憶デバイス１０６に存在しないと判定し、一方、ハッシュ値の衝突があれば対象チャンクと同じ内容のチャンクが記憶デバイス１０６に存在する可能性があると判定する。
【００９９】
Ｓ５０５では、ストレージ装置１００は、対象チャンクのフィンガプリントに一致するフィンガプリントがチャンク索引表Ｕ１６２に存在するか否かを判定する。対象チャンクのフィンガプリントに一致するフィンガプリントがチャンク索引表Ｕ１６２に存在しない場合（Ｓ５０５：Not found）、ストレージ装置１００は、続いてＳ５０６からの処理を行う。
【０１００】
一方、対象チャンクのフィンガプリントに一致するフィンガプリントがチャンク索引表Ｕ１６２に存在する場合（Ｓ５０５：Found）、ストレージ装置１００は、対象チャンクが格納されているコンテナＩＤをチャンク索引表Ｕ１６２から取得し、続いてＳ５１０からの処理を行う。
【０１０１】
Ｓ５１０では、ストレージ装置１００は、メモリ１０４に現在格納されているコンテナ索引表Ｔ１１０の数が、予め設定されている上限数（所定の閾値）に達しているか否かを判定する。メモリ１０４に格納されているコンテナ索引表Ｔ１１０の数が上限数に達していた場合（Ｓ５１０：Ｙ）、ストレージ装置１００は、メモリ１０４に現在格納されているコンテナ索引表Ｔ１１０（普遍コンテナ索引表Ｔｃ１２８は除く。）のうち、例えば、ＬＲＵ（Least Recently Used）によって選択されるコンテナ索引表Ｔ１１０をロールアウトし（Ｓ５１１)、その後はＳ５１２からの処理を行う。
【０１０２】
一方、メモリ１０４に格納されているコンテナ索引表Ｔ１１０（普遍コンテナ索引表Ｔｃ１２８を除く）の数が上限数に達していない場合（Ｓ５１０：Ｎ）、ストレージ装置１００は、Ｓ５１２からの処理を行う。
【０１０３】
尚、上記の上限数は、例えば、管理装置１７２から管理者やオペレータ等が設定する。また上記上限数を初期化ファイル等に予め設定しておき、バックアッププログラム１５０の起動時等にストレージ装置１００が自動的に読み込むようにしてもよい。
【０１０４】
Ｓ５１２では、ストレージ装置１００は、対象チャンクが格納されているコンテナ索引表Ｔ１１０をメモリ１０４にロールインし、その後はＳ５０３からの処理を行う。
【０１０５】
このように、ストレージ装置１００は、コンテナ索引表Ｔ１１０及びチャンク索引表Ｕ１６２を併用した二段階方式で対象チャンクと関連性の高いコンテナ索引表Ｔ１１０をロールインして重複判定を行うので、コンテナ索引表Ｔ１１０のメモリ１０４へのエントリ数を抑えることができる。またこれによりメモリ１０４の有効利用を図るとともに、メモリ１０４の記憶容量の逼迫を防ぐことができる。また記憶デバイス１０６へのアクセスの発生を低減することができる。またチャンク索引表Ｕ１６２を用いることで、効率よくメモリ１０４にロールインすべきコンテナ索引表Ｔ１１０を特定することができる。
【０１０６】
Ｓ５０６では、ストレージ装置１００は、既存のコンテナＣに対象チャンクを格納することができるか否か（既存のコンテナＣに対象チャンクを格納するのに必要な空き容量があるか否か）を判定する。既存のコンテナＣに対象チャンクを格納することができる場合（Ｓ５０６：Ｎ）、ストレージ装置１００は、Ｓ５０８からの処理を行う。
【０１０７】
一方、既存のコンテナＣに対象チャンクを格納することができない場合（Ｓ５０６：Ｙ）、ストレージ装置１００は、対象コンテナ並びにコンテナ索引表を生成し（Ｓ５０７）、続いてＳ５０８からの処理を行う。
【０１０８】
Ｓ５０８では、ストレージ装置１００は、対象チャンクを、既存のコンテナＣもしくは新規に生成したコンテナＣに格納する。またストレージ装置１００は、対象チャンクの管理情報を、既存のコンテナＣもしくは新規のコンテナＣに格納する。またストレージ装置１００は、チャンク索引表Ｕ１６２に対象チャンクのメッセージダイジェストを格納する。その後、ストレージ装置１００はＳ５０９からの処理を行う。尚、記憶デバイス１０６へのアクセスの発生を低減するため、コンテナＣやコンテナ索引表Ｓ１６４、及びチャンク索引表Ｕ１６２へのデータの格納をライトバッファ１４２を介して行うようにしてもよい。
【０１０９】
Ｓ５０９では、ストレージ装置１００は、リストア処理にて利用するコンテンツ索引表Ｓ１６４を記憶デバイス１０６ａに書き出す。
【０１１０】
Ｓ５１３では、ストレージ装置１００は、図８のＳ４０１にて対象コンテンツを分割することにより生成したチャンクの数ｎとカウンタｉの値とを比較し、Ｓ４０１にて対象コンテンツを分割することにより生成した全てのチャンクについて処理済みか否かを判定する。全てのチャンクについて処理済である場合（Ｓ５１３：Ｎ）、チャンクの重複排除処理Ｓ４０３は終了する。一方、未処理のチャンクが残存する場合（Ｓ５１３：Ｙ）、ストレージ装置１００は、カウンタｉに１を加算し（Ｓ５１４）、Ｓ５０２からの処理を行う。
【０１１１】
図１０は、図７におけるＳ３０５の処理（以下、ポストプロセス方式の場合の重複排除処理Ｓ３０５と称する。）の詳細を説明するフローチャートである。同図に示すように、当該処理Ｓ３０５では、ストレージ装置１００は、まず一時格納デバイス１０６ｂから重複排除処理対象のコンテンツを読み出す（Ｓ６０１）。以降の処理（Ｓ６０２〜Ｓ６０４）は、図８に示したインライン方式による重複排除処理Ｓ３０３（Ｓ４０１〜Ｓ４０３）と同じであるので説明を省略する。
【０１１２】
図１１は、ストレージ装置１００が行うリストア処理（以下、リストア処理Ｓ７００と称する。）を説明するフローチャートである。以下、同図とともに説明する。
【０１１３】
まずストレージ装置１００は、ホスト装置からＩ／Ｏ要求として受信したリストアの要求について、その対象になっているコンテンツ（以下、対象コンテンツと称する）が、重複排除処理が完了したコンテンツであるか、もしくは、未だ重複排除処理が完了しておらず、一時格納デバイス１０６ｂに格納されているコンテンツであるかを判定する（Ｓ７０１）。尚、ストレージ装置１００は、この判定を、例えばコンテンツ索引表Ｓ１６４を参照することにより行う。
【０１１４】
対象コンテンツが、未だ重複排除処理が完了していないコンテンツであった場合（Ｓ７０１：Ｎ）、ストレージ装置１００は、一時格納デバイス１０６ｂから対象コンテンツを読み出してホスト装置に送信する（Ｓ７０９）。その後、リストア処理Ｓ７００は終了する。
【０１１５】
一方、対象コンテンツが、重複排除処理が適用されて既に記憶デバイス１０６ａに格納されているコンテンツであった場合（Ｓ７０１：Ｙ）、ストレージ装置１００は、コンテンツ索引表Ｓ１６４に基づき、ホスト装置に応答するために読み込む必要のあるチャンク（以下、対象チャンクと称する。）のリストを生成する（Ｓ７０２）。
【０１１６】
Ｓ７０３では、ストレージ装置１００は、Ｓ７０４〜Ｓ７０６のループ処理で用いるカウンタｉに０を設定する。
【０１１７】
続いてストレージ装置１００は、コンテナ索引表Ｔ１１０から対象チャンクの情報（対象チャンクのフィンガプリント、対象チャンクのコンテナＣ内における位置、対象チャンクのデータサイズ）を取得する（Ｓ７０４）。具体的には、ストレージ装置１００は、コンテンツ索引表Ｓ１６４から特定される、対象チャンクが属するコンテナ索引表１１０を記憶デバイス１０６ａからメモリ１０４に読み込み、読み込んだコンテナ索引表１１０から対象チャンクの情報を取得する。
【０１１８】
次にストレージ装置１００は、Ｓ７０４で取得した対象チャンクの情報に基づき、コンテナ索引表Ｔ１１０に対応するコンテナＣに格納されている対象チャンクを読み込む（Ｓ７０５）。
【０１１９】
続くＳ７０６では、ストレージ装置１００は、対象コンテンツに含まれているチャンク数ｎと、カウンタｉのカウンタ数とを比較し、Ｓ７０２で生成したリストの全ての対象チャンクについて読み込みが終了したか否かを判定する（Ｓ７０６）。全ての対象チャンクについて読み込みが終了している場合（Ｓ７０６：Ｎ）、ストレージ装置１００は、読み込んだ対象チャンクを合成することによりコンテンツを生成し、生成したコンテンツをホスト装置に送信し、リストア処理を終了する（Ｓ７０８）。具体的には、ストレージ装置１００は、コンテンツ索引表１６４に既述されているコンテンツ内のオフセット情報やチャンク長情報に基づき読み込んだ対象チャンクを合成することにより、元のコンテンツを復元する。
【０１２０】
一方、全ての対象チャンクについて読み込みが終了していない場合（Ｓ７０６：Ｙ）、ストレージ装置１００は、カウンタｉに１を加算し（Ｓ７０７）、その後はＳ７０４からの処理を行う。
【０１２１】
＜重複排除処理の同時処理数制御＞
ストレージ装置１００は、インライン方式による重複排除処理の同時処理数（並列処理数）とポストプロセス方式による重複排除処理の同時処理数（並列処理数）を制御（調節）する機能を備えている。
【０１２２】
例えばポストプロセス方式による重複排除処理では、一時格納デバイス１０６ｂからデータを読み出す必要があるが、一時格納デバイス１０６ｂへのデータの書き込みと重複排除処理によるデータの読み出しとが同時に行われた場合、記憶デバイス１０６へのアクセスが頻発し、バックアップ処理（重複排除処理）の処理性能（処理効率）が低下する。そこでストレージ装置１００は、一時格納デバイス１０６ｂへのデータの書き込みが頻繁に行われるような場合、ポストプロセス方式による重複排除処理の同時処理数を減らし、逆にインライン方式による重複排除処理の同時処理数を増やしてバックアップ処理の処理性能の向上を図る。
【０１２３】
また例えば、ホスト装置側や通信ネットワーク１７４の負荷が高く、ホスト装置からのコンテンツの転送性能がストレージ装置１００の処理性能に比べて劣る場合、インライン方式の重複排除処理でコンテンツの受信待ちの状態が発生し、ストレージ装置１００の利用効率が低下する。そこでそのような場合には、ストレージ装置１００はポストプロセス方式による重複排除処理の同時処理数を増やしてストレージ装置１００の利用効率の向上を図る。
【０１２４】
図１２は、ストレージ装置１００によって行われる、インライン方式による重複排除処理の同時処理数とポストプロセス方式による重複排除処理の同時処理数の制御に関する処理（以下、重複排除処理の同時処理数制御処理Ｓ８００と称する。）を説明するフローチャートである。
【０１２５】
尚、当該処理Ｓ８００は、例えば、図７のＳ３０１の処理において重複排除処理方式が決定されたコンテンツについて、ポストプロセス方式による重複排除処理もしくはインライン方式による重複排除処理を開始するタイミングで実行される。また当該処理Ｓ８００は、例えば、ストレージ装置１００が、ホスト装置からコンテンツを受信した際に実行される。また当該処理Ｓ８００は、例えば、インライン方式の重複排除処理が終了した際、もしくは、ポストプロセス方式の重複排除処理が終了した際に実行される。また当該処理Ｓ８００は、例えば、一時格納デバイス１０６ｂに重複排除処理が開始されていないコンテンツが残存することが検知された場合に実行される。
【０１２６】
同図に示すように、まずストレージ装置１００は、ポストプロセス方式による重複排除処理の開始待ち状態及びインライン方式による重複排除処理の開始待ち状態にある全てのコンテンツ（ポストプロセス方式による重複排除処理の処理待ちキューに登録されているコンテンツ、及びインライン方式による重複排除処理の処理待ちキューに登録されているコンテンツ）の夫々の優先度を求める（Ｓ８０１）。尚、ストレージ装置１００は、重複排除処理を行うことによりバックアップ処理の処理性能の向上がより多く期待できるコンテンツに対して高い優先度を設定する。
【０１２７】
例えば、ストレージ装置１００は、コンテンツのファイル名が、既に記憶デバイス１０６ａに格納されているコンテンツ（以下、既存コンテンツと称する。）のファイル名の全部又はファイル名の一部と一致する場合に高い優先度を設定する。これは対象コンテンツのファイル名が既存コンテンツのファイル名と一致する場合というのは対象コンテンツのファイルが既存コンテンツのファイルと同じファイルである場合であり、この場合は重複するチャンクが多く存在する可能性が高いので、重複排除処理を行った際の記憶デバイス１０６ａに対するアクセス回数が少なく、バックアップ処理の処理性能の向上を期待することができるからである。
【０１２８】
また例えば、ストレージ装置１００は、コンテンツの先頭から数チャンクについて重複判定を行い、それにより求まる重複排除率（重複排除処理の前後におけるデータ量の比）が高いコンテンツほど優先度を高く設定する。これは重複排除率が高いコンテンツほど重複排除処理を行った際の記憶デバイス１０６ａに対するアクセス回数が少ないので、バックアップ処理の処理性能の向上を期待することができるからである。
【０１２９】
また例えば、ストレージ装置１００は、ストレージ装置１００は、コンテンツが第２世代以降のバックアップデータである場合に優先度を高く設定する。これは第２世代以降のバックアップデータは第１世代のバックアップデータに比べて重複している可能性が高く、重複排除処理を行った際の記憶デバイス１０６ａに対するアクセス回数が減り、バックアップ処理の処理性能の向上を期待することができるからである。
【０１３０】
また例えばストレージ装置１００は、一時格納デバイス１０６ｂに格納されているコンテンツ（ファイル）について、そのデータサイズが小さいほど優先度を高く設定する。これはポストプロセス方式の場合、重複排除処理が終了すると一時格納デバイス１０６ｂから該当のデータを削除して一時格納デバイス１０６ｂの記憶領域を解放するので、データサイズが小さいコンテンツの重複排除処理を行うことで一時格納デバイス１０６ｂの格納領域が短い時間間隔で解放され、それにより一時格納デバイス１０６ｂの利用効率が向上し、その結果バックアップ処理の処理性能の向上を期待することができるからである。
【０１３１】
尚、以上に示した優先度の設定方法はあくまで一例を示したに過ぎず、以上とは異なる方法で優先度を求めるようにしてもよい。また優先度は、以上に示した設定方法の複数を組み合わせて設定してもよいし、以上に示した設定方法と上記別の方法とを組み合わせて設定するようにしてもよい。
【０１３２】
図１２に戻り、続いてストレージ装置１００は、インライン方式による重複排除処理の現在の同時処理数Ninlineとポストプロセス方式による重複排除処理の現在の同時処理数Npostとの和を、予め設定された上限値TH#Ntotalと比較する（Ｓ８０２）。上記和Ninlin＋Npostが上限値TH#Ntotal以下である場合（Ｓ８０２：Ｙ）、ストレージ装置１００はＳ８０３からの処理を行う。一方、上記和Ninlin＋Npostが上限値TH#Ntotalを超えている場合、即ち処理待ち状態にあるコンテンツの重複排除処理を新たに開始できない状況である場合、ストレージ装置１００は、現在処理中の重複排除処理のいずれかが終了するまで待機する（Ｓ８０２：Ｎ）。
【０１３３】
Ｓ８０３では、ストレージ装置１００は、ポストプロセス方式による重複排除処理もしくはインライン方式による重複排除処理の開始待ち状態にある全てのコンテンツのうち、優先度の最も高いコンテンツ（以下、対象コンテンツと称する。）を特定し、対象コンテンツの重複排除処理の方式を判定する。対象コンテンツの重複排除処理の方式がインライン方式であった場合（Ｓ８０３：Inline）、ストレージ装置１００はＳ８０４からの処理を行う。一方、対象コンテンツの重複排除処理の方式がポストプロセス方式であった場合（Ｓ８０３：Post-process）、ストレージ装置１００はＳ８０７からの処理を行う。
【０１３４】
Ｓ８０４では、ストレージ装置１００は、対象コンテンツについて、インライン方式による重複排除処理を開始することができるか否かを判定する。具体的には、ストレージ装置１００は、インライン方式による重複排除処理の現在の同時処理数Ninlineを予め設定された上限値TH#Ninlineと比較し、同時処理数Ninlineが上記上限値TH#Ninline以下である場合には（Ｓ８０４：Ｙ）、Ｓ８０５からの処理を行う。一方、同時処理数Ninlineが上記上限値TH#Ninlineを超えている場合には（Ｓ８０４：Ｎ）、Ｓ８０８からの処理を行う。
【０１３５】
Ｓ８０７では、ストレージ装置１００は、対象コンテンツについて、ポストプロセス方式による重複排除処理を開始することができるか否かを調べる。具体的には、ストレージ装置１００は、ポストプロセス方式による重複排除処理の現在の同時処理数Npostを予め設定された上限値TH# Npostと比較し、同時処理数Npostが上記上限値TH# Npost以下であれば（Ｓ８０７：Ｙ）、Ｓ８０８からの処理を行う。一方、同時処理数Npost が上記上限値TH# Npostを超えていれば（Ｓ８０７：Ｎ）、Ｓ８０５からの処理を行う。
【０１３６】
Ｓ８０５では、ストレージ装置１００は、インライン方式による重複排除処理の開始待ち状態にある全てのコンテンツのうち、最も優先度の高いコンテンツを、重複排除処理を開始するコンテンツとして選択し、当該コンテンツの重複排除処理を開始する。またストレージ装置１００はインライン方式による重複排除処理の現在の同時処理数Ninlineに１を加算する（Ｓ８０６）。
【０１３７】
一方、Ｓ８０８では、ストレージ装置１００は、ポストプロセス方式による重複排除処理の開始待ち状態にある全てのコンテンツのうち、最も優先度の高いコンテンツを、重複排除処理を開始するコンテンツとして選択し、当該コンテンツの重複排除処理を開始する。そしてこの場合、ストレージ装置１００は、ポストプロセス方式による重複排除処理の現在の同時処理数Npostに１を加算する（Ｓ８０９）。
【０１３８】
尚、図示していないが、ストレージ装置１００は、インライン方式の重複排除処理が終了した際にNinlineから1を減算する。またストレージ装置１００は、ポストプロセス方式の重複排除処理が終了するとNpostから１を減算する。
【０１３９】
以上の処理では、ポストプロセス方式による重複排除処理が行われるコンテンツが一時格納デバイス１０６ｂに格納された後に優先度を求めているが、優先度はポストプロセス方式による重複排除処理が行われるコンテンツが一時格納デバイス１０６ｂに格納されるよりも前に求めるようにしてもよい。
【０１４０】
また上記優先度として、図２に示した重複排除処理方式選択処理（その１）Ｓ２００にて算出した優先度Ｐｃを併用するようにしてもよい。また一時格納デバイス１０６ｂに格納されているコンテンツについてストレージ装置１００が随時優先度を求めて更新するようにしてもよい。またストレージ装置１００が、例えば、一時格納デバイス１０６ｂのアクセス頻度やプロセッサ１０２の使用率などに応じて優先度を変更するようにしても良い。
【０１４１】
また例えば、ストレージ装置１００が、インライン方式の重複排除処理の進捗状況（処理速度）やポストプロセス方式の重複排除処理の進捗状況（処理速度）を随時（定期的もしくは不定期に）監視し、進捗の早い（処理速度が速い）コンテンツの優先度をより高く設定するようにしてもよい。
【０１４２】
また例えば、インライン方式やポストプロセス方式のコンテンツの優先度にプロセッサ１０２の使用率などを反映させることに代えて、ストレージ装置１００がインライン方式のコンテンツの優先度やポストプロセス方式のコンテンツの優先度に閾値を設定するようにしてもよい。そのようにすれば、優先度の算出に際して生じる負荷を低減することができる。
【０１４３】
尚、前述した閾値（TH#Nall、TH#Ninline、TH#Npost）は、例えば、管理者やオペレータ等が管理装置１７２から設定する。また例えば、これらの閾値を予め初期化ファイル等に格納しておき、ストレージ装置１００がバックアッププログラム１５０の起動時等に自動的に読み込むようにしてもよい。
【０１４４】
また上記閾値はストレージ装置１００が動的に更新するようにしてもよい。その場合、例えば、ストレージ装置１００は、ホスト装置から受信するデータの重複排除率が高い場合に閾値TH#Ninlineを大きな値に設定し、閾値TH#Npostを小さな値に設定する。そのようにすれば、ホスト装置から受信するデータの重複排除に応じてインライン方式の同時処理数を増やすことができ、ストレージ装置１００におけるバックアップ処理の処理性能を向上させることができる。
【０１４５】
また例えば、ストレージ装置１００が、ホスト装置から受信しているデータが第２世代以降のバックアップデータである場合にインライン方式の同時処理数の閾値TH#Ninlineを大きな値に設定し、一方、ポストプロセス方式の同時処理数の閾値TH#Npostを小さな値に設定するようにしてもよい。第２世代以降のコンテンツはそれ以前の世代のバックアップデータと重複排除処理をしている可能性が高い。従ってより多くのコンテンツがインライン方式で処理されるようにすればストレージ装置１００のバックアップ処理の処理性能を向上させることができる。
【０１４６】
尚、以上は閾値（TH#Nall、TH#Ninline、TH#Npost）の算出方法の一例を示したに過ぎず、閾値の算出方法はこれらに限定されるものではない。上記閾値は他の要素に基づいて求めるようにしてもよいし、複数の要素を組み合わせて求めるようにしてもよい。
【０１４７】
以上に説明したように、本実施形態においては、ストレージ装置１００が、ホスト装置からデータの書き込み要求を受信した際、インライン方式により重複排除処理を行うことにより生じる当該ストレージ装置１００の処理性能への影響、ポストプロセス方式により重複排除処理を行うことにより生じる当該ストレージ装置１００の処理性能への影響、及びポストプロセス方式により重複排除処理を行った場合に必要となる一時格納デバイス１０６ｂの使用量、のうちの少なくともいずれかに基づき、受信したデータについて適用する重複排除処理の方式を選択する。
【０１４８】
このため、ストレージ装置１００の処理性能に与える影響や一時格納デバイス１０６ｂの使用量を考慮して、記憶資源を有効に利用しつつ、インライン方式による重複排除処理とポストプロセス方式による重複排除処理を適切に組み合わせてデータの重複排除処理を効率よく行うことができる。
【０１４９】
またストレージ装置１００は、ホスト装置からＩ／Ｏ要求とともに受信した複数のデータの夫々についての複数のインライン方式による重複排除処理が同時に行われることにより生じるストレージ装置１００の処理性能への影響、ホスト装置からＩ／Ｏ要求とともに受信した複数のデータの夫々についての複数のポストプロセス方式による重複排除処理が同時に行われることにより生じるストレージ装置１００の処理性能への影響、及びストレージ装置１００の利用効率、のうちの少なくともいずれかに基づき、インライン方式による重複排除処理の同時処理数、及びポストプロセス方式による重複排除処理の同時処理数のうちの少なくともいずれかを増減させる。
【０１５０】
このため、例えば、ポストプロセス方式による重複排除処理により一時格納デバイス１０６ｂへのデータの書き込みが頻繁に行われるような場合には、ポストプロセス方式による重複排除処理の同時処理数を減らし、逆にインライン方式による重複排除処理の同時処理数を増やすことで、バックアップ処理（重複排除処理）の処理性能の向上を図ることができる。
【０１５１】
続いて、以上に説明した第１実施形態の構成を基本とする他のいくつかの実施形態について説明する。
【０１５２】
［第２実施形態］
第１実施形態においては、図７に示したバックアップ処理Ｓ３００のポストプロセス方式による重複排除処理Ｓ３０５において、ポストプロセス方式による重複排除処理Ｓ３０５を開始した後にコンテンツをチャンクに分割しているが（図１０）、図７のバックアップ処理Ｓ３００にて重複排除の方式としてポストプロセス方式を選択した場合、事後的に行われるポストプロセス方式による重複排除処理Ｓ３０５の開始に先立ち、予めコンテンツをチャンクに分割するようにしてもよい。そのようにすれば、ポストプロセス方式による重複排除処理Ｓ３０５の開始タイミングが到来した時点において既にコンテンツのチャンクへの分割が済んでいるので、速やかにチャンクの重複排除処理（図１０のＳ６０４に相当）を開始することができ、ポストプロセス方式Ｓ３０５による重複排除処理を効率よく行うことができる。
【０１５３】
図１３は、第２実施形態として説明する、ストレージ装置１００が行うバックアップ処理（以下、バックアップ処理Ｓ９００と称する。）の全体的な流れを説明するフローチャートである。尚、同図におけるＳ９０１〜Ｓ９０３の処理は、第１実施形態における図７のＳ３０１〜Ｓ３０３の処理と同様であるので説明を省略する。またＳ９０４及びＳ９０５は、対象コンテンツをチャンクに分割する処理であるが、これも第１実施形態における図１０のＳ６０２〜Ｓ６０３の処理と同様であるので説明を省略する。
【０１５４】
Ｓ９０６では、ストレージ装置１００は、対象コンテンツを分割することにより生成されたチャンク及び管理情報を一時格納デバイス１０６ｂに格納する。
【０１５５】
Ｓ９０７では、ストレージ装置１００は、一時格納ディスクからチャンク及び管理情報を読み出し、ポストプロセス方式の重複排除処理を行う。
【０１５６】
図１４は図１３における重複排除処理Ｓ９０７（以下、ポストプロセス方式の重複排除処理Ｓ９０７と称する。）の詳細を説明するフローチャートである。
【０１５７】
まずストレージ装置１００は、一時格納デバイス１０６ｂから、チャンク及び管理情報を読み出す（Ｓ１００１）。尚、Ｓ１００２の処理は、第１実施形態における図９のチャンクの重複排除処理Ｓ４０３と同様であるので説明を省略する。
【０１５８】
図１５は、第２実施形態として説明する、コンテンツのリストア処理（以下、リストア処理Ｓ１１００と称する。）を説明するフローチャートである。
【０１５９】
同図におけるＳ１１０１〜Ｓ１１０８の処理は、第１実施形態における図１１のＳ７０１〜Ｓ７０８の処理と同様であるので説明を省略する。
【０１６０】
Ｓ１１０９では、ストレージ装置１００は、一時格納デバイス１０６ｂからチャンク及び管理情報を読み出す。Ｓ１１０８では、ストレージ装置１００は、読み出した管理情報を利用してチャンクからコンテンツを復元する（Ｓ１１０８）。
【０１６１】
以上のように、第２実施形態では、ホスト装置からＩ／Ｏ要求とともにコンテンツを受信したタイミングでコンテンツを分割してチャンクを生成し、生成したチャンクを一時格納デバイス１０６ｂしておくので、事後的に行われるポストプロセス方式の重複排除処理を迅速かつ効率よく行うことができる。またチャンクの生成に係る処理と重複判定処理とを時間的に分散することができる。
【０１６２】
［第３実施形態］
第３実施形態では、一時格納デバイス１０６ｂの使用量を減らすべく、第１実施形態における図７のバックアップ処理Ｓ３００にて重複排除の方式としてポストプロセス方式が選択されたタイミングでコンテンツを圧縮して一時格納デバイス１０６ｂに書き込むようにし、一時格納デバイス１０６ｂの使用量の削減を図る。
【０１６３】
図１６は、第３実施形態として説明する、ストレージ装置１００が行うバックアップ処理（以下、バックアップ処理Ｓ１２００と称する。）の全体的な流れを説明するフローチャートである。尚、同図におけるＳ１２０１〜Ｓ１２０３の処理は、第１実施形態における図７のＳ３０１〜Ｓ３０３の処理と同様であるので説明を省略する。
【０１６４】
Ｓ１２０４では、ストレージ装置１００は、対象コンテンツを適宜な圧縮アルゴリズムにより圧縮する。Ｓ１２０５では、ストレージ装置１００は、圧縮した対象コンテンツを一時格納デバイス１０６ｂに書き込む（Ｓ１２０５）。Ｓ１２０６では、ストレージ装置１００は、事後的にポストプロセス方式の重複排除処理を行う。
【０１６５】
図１７は、事後的に行われるポストプロセス方式の重複排除処理Ｓ１２０６の詳細を説明するフローチャートである。
【０１６６】
まずストレージ装置１００は、圧縮されて格納されているコンテンツを一時格納デバイス１０６ｂから読み出し（Ｓ１３０１）、読み出したコンテンツを伸張する（Ｓ１３０２）。
【０１６７】
尚、Ｓ１３０３〜Ｓ１３０５の処理は第１実施形態における図１０のＳ６０２〜Ｓ６０４と同様であるので説明を省略する。
【０１６８】
図１８は、第３実施形態として説明する、コンテンツのリストア処理（以下、リストア処理Ｓ１４００と称する。）を説明するフローチャートである。尚、同図におけるＳ１４０１〜Ｓ１４０２の処理は、第１実施形態における図１１のＳ７０１〜Ｓ７０８の処理と同様であるので説明を省略する。
【０１６９】
Ｓ１４０９では、ストレージ装置１００は、一時格納デバイス１０６ｂから、圧縮されているコンテンツを読み出す（Ｓ１４０９）。Ｓ１４１０では、ストレージ装置１００は、読み出したコンテンツを元のコンテンツに伸張する（Ｓ１４１０）。
【０１７０】
尚、一時格納デバイス１０６ｂに書き込むコンテンツに対して圧縮処理を行ったが、コンテンツを分割してチャンクを生成した後、生成したチャンクを圧縮するようにしてもよい。
【０１７１】
以上に説明したように、第３実施形態では、ホスト装置からＩ／Ｏ要求とともに受信したコンテンツを圧縮して一時格納デバイス１０６ｂに格納するので、一時格納デバイス１０６ｂの使用量の低減を図ることができる。
【０１７２】
［第４実施形態］
第４実施形態では、ホスト装置から受信したコンテンツについてポストプロセス方式を適用して重複排除処理を行うにあたり、受信したコンテンツを一時格納デバイス１０６ｂに書き込む前に、受信したコンテンツと普遍チャンクとの間での重複排除を行い、一時格納デバイス１０６ｂの使用量の削減を図る。
【０１７３】
図１９は、第４実施形態として説明する、ストレージ装置１００が行うバックアップ処理（以下、バックアップ処理Ｓ１５００と称する。）の全体的な流れを説明するフローチャートである。尚、同図におけるＳ１５０１〜Ｓ１５０３の処理は、第１実施形態における図７のＳ３０１〜Ｓ３０３の処理と同様であるので説明を省略する。
【０１７４】
Ｓ１５０４では、ストレージ装置１００は、コンテンツをチャンクに分割するとともに（Ｓ１５０４）、管理情報を生成する。
【０１７５】
続いてストレージ装置１００は、後のループ処理で用いるカウンタｉを初期化（ｉ＝０）し、各チャンクの重複判定を開始する（Ｓ１５０６）。
【０１７６】
Ｓ１５０７では、ストレージ装置１００は、メモリ１０４の普遍コンテナ索引表Ｔｃ１２８を検索し、現在処理対象になっているチャンク（以下、対象チャンクと称する。）と同じ内容のチャンクが記憶デバイス１０６ａに存在するか否かを判定する（Ｓ１５０７）。対象チャンクと同じ内容のチャンクが記憶デバイス１０６ａに存在する場合（Ｓ１５０７：Found）、ストレージ装置１００は、Ｓ１５０９からの処理を行う。
【０１７７】
一方、対象チャンクと同じ内容のチャンクが記憶デバイス１０６ａに存在しない場合（Ｓ１５０７：Not found）、ストレージ装置１００は、対象チャンクとその管理情報を一時格納デバイス１０６ｂに書き出す（Ｓ１５０８）。その後はＳ１５０９からの処理を行う。
【０１７８】
Ｓ１５０９では、ストレージ装置１００は、チャンクの分割に関する情報及び管理情報を一時格納デバイス１０６ｂに書き出す。尚、ここで書き出す管理情報には、そのチャンクがＳ１５０７にて同じ内容のチャンクが記憶デバイス１０６ａに存在すると判定されたか否かを示す情報も含まれている。
【０１７９】
Ｓ１５１０では、ストレージ装置１００は、全てのチャンクについて処理が終了したか否かを判定する。具体的には、ストレージ装置１００は、コンテンツを分割することにより成されたチャンクの数ｎとカウンタｉの値とを比較することにより、上記判定を行う。全てのチャンクについて処理が終了している場合（Ｓ１５１０：Ｎ）、ストレージ装置１００は、当該バックアップ処理Ｓ１５００を終了する。一方、全てのチャンクについて処理が終了していない場合（Ｓ１５１０：Ｙ）、ストレージ装置１００は、カウンタｉに１を加算し（Ｓ１５１１）、その後はＳ１５０７からの処理を行う。Ｓ１５１２は事後的に行われるポストプロセス方式の重複排除処理Ｓ１５１２である。
【０１８０】
図２０は、ポストプロセス方式の重複排除処理Ｓ１５１２の詳細を説明するフローチャートである。
【０１８１】
まずストレージ装置１００は、一時格納デバイス１０６ｂからチャンクと管理情報を取得する（Ｓ１６０１）。
【０１８２】
次にストレージ装置１００は、後のループ処理で用いるカウンタｉを初期化（ｉ＝０）する（Ｓ１６０２）。
【０１８３】
Ｓ１６０３では、ストレージ装置１００は、管理情報を参照し、Ｓ１６０１で取得したチャンク（以下、対象チャンクと称する。）が、図１９のＳ１５０７にて対象チャンクと同じ内容のチャンクが記憶デバイス１０６ａに存在すると判定されていたか否かを判定する。対象チャンクと同じ内容のチャンクが記憶デバイス１０６ａに存在しないと判定されていた場合（Ｓ１６０３：Ｎ）、ストレージ装置１００は、Ｓ１６０４からの処理を行う。
【０１８４】
一方、対象チャンクと同じ内容のチャンクが記憶デバイス１０６ａに存在すると判定されていた場合（Ｓ１６０３：Ｙ）、ストレージ装置１００は、対象チャンクの情報をコンテンツ索引表Ｓ１６４に書き出す（Ｓ１６１０）。
【０１８５】
尚、Ｓ１６０４〜Ｓ１６１６の処理は、第１実施形態における図１０のＳ５０３〜Ｓ５１２と同様であるため、詳細な説明は省略する。
【０１８６】
図２１は、第４実施形態として説明する、コンテンツのリストア処理（以下、リストア処理Ｓ１７００と称する。）を説明するフローチャートである。尚、同図におけるＳ１７０１〜Ｓ１７０８の処理は、第1実施形態における図１１のＳ７０１〜Ｓ７０８の処理と同様であるので説明を省略する。
【０１８７】
Ｓ１７０９では、ストレージ装置１００は、一時格納デバイス１０６ｂから対象コンテンツの管理情報を読み出す。Ｓ１７１０では、ストレージ装置１００は、後のループ処理で用いるカウンタｉを初期化（ｉ＝０）する。
【０１８８】
Ｓ１７１１では、ストレージ装置１００は、管理情報を参照し、現在処理対象になっているチャンク（以下、対象チャンクと称する。）が、図１９のＳ１５０７にて対象チャンクと同じ内容のチャンクが記憶デバイス１０６ａに存在すると判定されていたか否かを判定する。対象チャンクと同じ内容のチャンクが記憶デバイス１０６ａに存在しないと判定されていた場合（Ｓ１７１１：Ｎ）、ストレージ装置１００は、一時格納デバイス１０６ｂからチャンク（実体データ）を読み込む（Ｓ１７１２）。
【０１８９】
一方、対象チャンクと同じ内容のチャンクが記憶デバイス１０６ａに存在すると判定されていた場合（Ｓ１７１１：Ｙ）、ストレージ装置１００は、メモリ１０４に展開されている普遍コンテナＣｃからチャンク（チャンクの実体データ）を読み込む（Ｓ１７１３）。
【０１９０】
Ｓ１７１４では、ストレージ装置１００は、対象コンテンツに含まれているチャンク数ｎと、カウンタｉのカウンタ数とを比較し、リストア対象のコンテンツに含まれる全てのチャンクについて読み込みが終了したか否かを判定する。リストア対象のコンテンツに含まれる全てのチャンクについて読み込みが終了している場合（Ｓ１７１４：Ｙ）、ストレージ装置１００は、Ｓ１７０８からの処理を行う。一方、リストア対象のコンテンツに含まれる全てのチャンクについて読み込みが終了していない場合（Ｓ１７１４：ｎ）、ストレージ装置１００は、カウンタｉに１を加算し（Ｓ１７１５）、その後はＳ１７１１からの処理を行う。
【０１９１】
尚、以上においては、ポストプロセス方式が適用されるコンテンツに対して、一時格納デバイス１０６ｂに書き込む前に普遍チャンクに関する重複排除処理のみを行っているが、これに加えて他の種類の重複排除処理を行うようにしてもよい。
【０１９２】
以上に説明したように、第４実施形態によれば、ホスト装置から受信したコンテンツを一時格納デバイス１０６ｂに書き込む前に、受信したコンテンツと普遍チャンクとの間で重複排除処理を行い、普遍チャンクと重複するチャンクについては一時格納デバイス１０６への書き込みを行わないので、重複判定処理を効率よく行うことができるとともに、一時格納デバイス１０６ｂの使用量を減らすことができる。尚、普遍コンテナＣｃをメモリ１０４に格納しておくことで重複判定処理を高速に行うことができ、処理性能を高めることができる。
【０１９３】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図１】
0005965541.tif 000002
【図２】
0005965541.tif 000003
【図３】
0005965541.tif 000004
【図４】
0005965541.tif 000005
【図５】
0005965541.tif 000006
【図６】
0005965541.tif 000007
【図７】
0005965541.tif 000008
【図８】
0005965541.tif 000009
【図９】
0005965541.tif 000010
【図１０】
0005965541.tif 000011
【図１１】
0005965541.tif 000012
【図１２】
0005965541.tif 000013
【図１３】
0005965541.tif 000014
【図１４】
0005965541.tif 000015
【図１５】
0005965541.tif 000016
【図１６】
0005965541.tif 000017
【図１７】
0005965541.tif 000018
【図１８】
0005965541.tif 000019
【図１９】
0005965541.tif 000020
【図２０】
0005965541.tif 000021
【図２１】
0005965541.tif 000022