(57)【要約】【課題】重複排除においてはバイナリコンペアを行う際に記憶装置に対してランダムアクセスが発生するため，光ディスクライブラリのようなランダムアクセス性能の低い記憶装置を用いて重複排除を行うことは困難であった。【解決手段】バイナリコンペアを行うために光ディスクドライブに未ロードの光ディスクにアクセスする必要がある場合，バイナリコンペア対象のデータを一時記記憶領域に格納してバイナリコンペアを先送りし，光ディスクがロードされたタイミングで先送りされたバイナリコンペアを実行する。また，記憶装置に格納するデータと光ディスクライブラリ内のデータとの重複排除である第二の重複排除を行う前に，記憶装置に格納するデータと一時記憶領域内のデータとの重複排除である第一の重複排除を行う。【選択図】図３１
2013222230.tif 000002
【特許請求の範囲】
【請求項１】
入力データの格納のときに、重複データを排除する重複排除サーバと、複数の可搬性記録媒体を有し前記入力データを該可搬性記録媒体に格納するライブラリ装置とからなるアーカイブシステムであって、
前記重複排除サーバは、
前記入力データを複数のチャンクに分割し、記憶する第一の記憶領域と、
前記分割されたチャンクに固有のデータを発生させる固有データ発生器と、
前記ライブラリ装置内の可搬性記録媒体に記録されているデータに対応する固有データをテーブル管理する第一の管理部と、を有し
前記ライブラリ装置は、
複数の可搬性記録媒体を収納する収納部と、
前記複数の可搬性記録媒体にデータを記録し、および/または、前記複数の可搬性記録媒体からデータを再生するドライブと、
前記収納部から前記可搬性記録媒体を前記ドライブに運搬する運搬部とを有し、
新たに入力データを入力したときは、該入力データを複数のチャンクに分割し、
前記固有データ発生器が該複数に分割されたチャンクごとに固有データを発生し、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致する場合には、該一致したチャンクを第二の記憶領域に記憶しておき、該一致した固有データに対応するデータが格納されている可搬性記録媒体が前記ドライブに挿入されたときに、前記第二の記憶領域に記憶されているチャンクと、前記ドライブに挿入された可搬性記録媒体に格納されているデータとのバイナリコンペアを行う、
アーカイブシステム。
【請求項２】
請求項１記載のアーカイブシステムであって、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致しない場合には、該一致しないチャンクを書き込みバッファ領域に記憶しておき、記録対象の可搬性記録媒体が前記ドライブに挿入されたときに、前記書き込みバッファ領域に記憶されているチャンクを、前記ドライブに挿入された可搬性記録媒体に書き込む、
アーカイブシステム。
【請求項３】
請求項１記載のアーカイブシステムであって、
前記第二の記憶領域に記憶されるチャンクに対応する固有データをテーブル管理する第二の管理部と、を有し
更に新たな入力データを入力したときは、該新たな入力データを複数のチャンクに分割し、
前記固有データ発生器が該複数に分割されたチャンクごとに固有データを発生し、
該分割されたチャンクに対応する固有データと、前記第二の管理部が管理する固有データとの比較を行い、一致する場合には、該一致したチャンクと前記第二の記憶領域に記憶されるチャンクとのバイナリコンペアを行う、
アーカイブシステム。
【請求項４】
請求項３記載のアーカイブシステムであって、
該分割されたチャンクに対応する固有データと、前記第二の管理部が管理する固有データとの比較を行い、一致しない場合には、該一致しないチャンクを書き込みバッファ領域に記憶しておき、記録対象の可搬性記録媒体が前記ドライブに挿入されたときに、前記書き込みバッファ領域に記憶されているチャンクを、前記ドライブに挿入された可搬性記録媒体に書き込む、
アーカイブシステム。
【請求項５】
請求項１記載のアーカイブシステムであって、
前記可搬性記録媒体は光ディスクである、
アーカイブシステム。
【請求項６】
請求項３記載のアーカイブシステムであって、
前記第二の管理部が管理する固有データとのうち、所定期間内で所定回数以上比較に用いられた固有データに対応するチャンクは、前記第二の記憶領域に留める、
アーカイブシステム。
【請求項７】
請求項１記載のアーカイブシステムであって、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致しない場合には、該一致しないチャンクを書き込みバッファ領域に記憶しておき、前記書き込みバッファ領域に記憶されている関連するチャンクを、前記可搬性記録媒体に書き込む、
アーカイブシステム。
【請求項８】
請求項１記載のアーカイブシステムであって、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致しない場合には、該一致しないチャンクを書き込みバッファ領域に記憶しておき、該書き込みバッファ領域の空き容量が所定以下の容量になったときに、前記書き込みバッファ領域に記憶されているチャンクを、前記可搬性記録媒体に書き込む、
アーカイブシステム。
【請求項９】
請求項１記載のアーカイブシステムであって、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致する場合には、該一致したチャンクを第二の記憶領域に記憶しておき、該一致した固有データに対応するデータが格納されている可搬性記録媒体が前記ドライブに挿入されたときに、または、前記第二の記憶領域の空き容量が所定以下の容量となったときに、前記第二の記憶領域に記憶されているチャンクと、前記ドライブに挿入された可搬性記録媒体に格納されているデータとのバイナリコンペアを行う、
アーカイブシステム。
【請求項１０】
入力データの格納のときに、重複データを排除する重複排除サーバであって、複数の可搬性記録媒体を有し前記入力データを該可搬性記録媒体に格納するライブラリ装置と接続可能な重複排除サーバであって、
前記入力データを複数のチャンクに分割し、記憶する第一の記憶領域と、
前記分割されたチャンクに固有のデータを発生させる固有データ発生器と、
前記ライブラリ装置内の可搬性記録媒体に記録されているデータに対応する固有データをテーブル管理する第一の管理部と、を有し
新たに入力データを入力したときは、該入力データを複数のチャンクに分割し、
前記固有データ発生器が該複数に分割されたチャンクごとに固有データを発生し、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致する場合には、該一致したチャンクを第二の記憶領域に記憶しておき、該一致した固有データに対応するデータが格納されている可搬性記録媒体が前記ドライブに挿入されたときに、前記第二の記憶領域に記憶されているチャンクと、前記ドライブに挿入された可搬性記録媒体に格納されているデータとのバイナリコンペアを行うよう指示する、
重複排除サーバ。
【請求項１１】
請求項１０記載の重複排除サーバであって、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致しない場合には、該一致しないチャンクを書き込みバッファ領域に記憶しておき、記録対象の可搬性記録媒体が前記ドライブに挿入されたときに、前記書き込みバッファ領域に記憶されているチャンクを、前記ドライブに挿入された可搬性記録媒体に書き込むよう指示する、
重複排除サーバ。
【請求項１２】
請求項１０記載の重複排除サーバであって、
前記第二の記憶領域に記憶されるチャンクに対応する固有データをテーブル管理する第二の管理部と、を有し
更に新たな入力データを入力したときは、該新たな入力データを複数のチャンクに分割し、
前記固有データ発生器が該複数に分割されたチャンクごとに固有データを発生し、
該分割されたチャンクに対応する固有データと、前記第二の管理部が管理する固有データとの比較を行い、一致する場合には、該一致したチャンクと前記第二の記憶領域に記憶されるチャンクとのバイナリコンペアを行うよう指示する、
重複排除サーバ。
【請求項１３】
請求項１２記載の重複排除サーバであって、
該分割されたチャンクに対応する固有データと、前記第二の管理部が管理する固有データとの比較を行い、一致しない場合には、該一致しないチャンクを書き込みバッファ領域に記憶しておき、記録対象の可搬性記録媒体が前記ドライブに挿入されたときに、前記書き込みバッファ領域に記憶されているチャンクを、前記ドライブに挿入された可搬性記録媒体に書き込むよう指示する、
重複排除サーバ。
【請求項１４】
請求項１０記載の重複排除サーバであって、
前記可搬性記録媒体は光ディスクである、
重複排除サーバ。
【請求項１５】
請求項１２記載の重複排除サーバであって、
前記第二の管理部が管理する固有データとのうち、所定期間内で所定回数以上比較に用いられた固有データに対応するチャンクは、前記第二の記憶領域に留めるよう指示する、
重複排除サーバ。
【請求項１６】
請求項１０記載の重複排除サーバであって、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致しない場合には、該一致しないチャンクを書き込みバッファ領域に記憶しておき、前記書き込みバッファ領域に記憶されている関連するチャンクを、前記可搬性記録媒体に書き込むよう指示する、
重複排除サーバ。
【請求項１７】
請求項１０記載の重複排除サーバであって、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致しない場合には、該一致しないチャンクを書き込みバッファ領域に記憶しておき、該書き込みバッファ領域の空き容量が所定以下の容量になったときに、前記書き込みバッファ領域に記憶されているチャンクを、前記可搬性記録媒体に書き込むよう指示する、、
重複排除サーバ。
【請求項１８】
請求項１０記載の重複排除サーバであって、
該分割されたチャンクに対応する固有データと、前記第一の管理部が管理する可搬性記録媒体に記録されているデータに対応する固有データとの比較を行い、一致する場合には、該一致したチャンクを第二の記憶領域に記憶しておき、該一致した固有データに対応するデータが格納されている可搬性記録媒体が前記ドライブに挿入されたときに、または、前記第二の記憶領域の空き容量が所定以下の容量となったときに、前記第二の記憶領域に記憶されているチャンクと、前記ドライブに挿入された可搬性記録媒体に格納されているデータとのバイナリコンペアを行うよう指示する、、
重複排除サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの保管に必要な容量を低減する重複排除を行う情報処理システムに関する。
【背景技術】
【０００２】
今日，企業や官公庁，学校などの様々な事業体において，電子ドキュメント（電子ファイル）や電子メールなど，様々な形態の電子データを利用して業務が行われている。インターネットの普及や紙文書の電子データへの移行などを背景として，これら電子データのデータ量は急激に増大しつつある。また，電子データの長期保管に関することを義務づける法律の制定や，各種電子データを長期間蓄積しビジネスに利活用しようとする動きなどに伴い，長期間記憶媒体に保管（アーカイブ）すべき電子データの増大しつつある。事業体は限られた予算で，これら急増する電子データを長期間保管（アーカイブ）する必要があるため，より低コストで記憶媒体に電子データを保管することが求められるようになっている。
【０００３】
低コストでの電子データ保管に関して，例えば，特許文献１（米国特許６７０４７３０号）では，重複排除（Ｄｅｄｕｐｌｉｃａｔｉｏｎ）と呼ばれる，コンテンツ（ファイルや電子メールメッセージなど）の保管に必要なＨＤＤ（ハードディスクドライブ）の容量を削減できる技術が開示されている。具体的には，本技術においては，コンテンツを複数のバイト列（各バイト列はチャンクなどと呼ぶ）に分割し，すでに記憶装置に格納されたチャンクと完全に一致するチャンクである重複チャンクを記憶装置に格納せずに破棄し，重複チャンク以外のチャンクのみを記憶装置に格納する。さらに，破棄したチャンクを含め，複数のチャンクから構成されるコンテンツを管理するデータ構造を保持することで，重複チャンクを破棄した後でも，記憶装置に格納された，重複チャンク以外のチャンクからコンテンツを完全に復元することができる。なお，同技術では，チャンクのハッシュ値を装置に保存しておき，比較対象の２つのチャンクのハッシュ値の不一致を判定することにより，２つのチャンクの不一致の判定を高速に行っている。２つのチャンクのハッシュ値が一致した場合であっても，２つのチャンクの内容が完全に一致するとは限らないため，チャンクを構成するバイト列同士の比較（バイナリコンペアとも呼ぶ）を行うことにより，２つのチャンクの内容が完全に一致するかどうかを確認している。
【０００４】
一方，電子データを保管する記憶媒体としては，ＨＤＤ（ハードディスクドライブ。磁気ディスクドライブ），テープ，光ディスクなどが挙げられる。ＨＤＤを記憶媒体として用いる記憶装置としては，アレイ状に構成したＨＤＤを含むディスクアレイ装置がある。テープや光ディスクを記憶媒体として用いる記憶装置として，テープライブラリや光ディスクライブラリがある。テープライブラリや光ディスクライブラリは，ドライブ（テープドライブや光ディスクドライブ）と，記憶媒体を物理的に格納する，ドライブとは物理的に隔離されたスロットと，記憶媒体をスロットとドライブ間で物理的に移動する物理的搬送機構であるロボットと，から構成される。記憶媒体に対する読み書きは記憶媒体をドライブにロードした後に行われる。なお，通常，スロットの数はドライブの数より十分に多い。
【０００５】
電子データを低コストで保管する場合，ビット単価がディスクアレイ装置に比べて低い，テープライブラリや光ディスクライブラリが有効である。しかし，テープライブラリや光ディスクライブラリのランダムアクセス性能（スループット性能，レスポンス性能）は，記憶媒体の物理的な移動を伴う場合があるため，記憶媒体の物理的な移動が一切ないディスクアレイ装置のそれに比べて格段に低い。 
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許６７０４７３０号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１における技術は，ランダムアクセス性能の高いＨＤＤを記憶媒体として用いる記憶装置（ディスクアレイ装置など）を前提としていた。特許文献１における記憶装置に対して重複排除技術を適用する場合，高頻度でバイナリコンペアを行う必要が生じ，記憶装置に対して多数のランダムアクセスが発生するが，記憶装置のランダムアクセス性能が高いために大きな問題とはなっていなかった。しかし，テープライブラリや光ディスクライブラリに対して同様の技術を適用する場合，そのランダムアクセス性能の低さから，重複排除処理に多大な時間を要し，現実的な時間内に重複排除処理が完了しないという問題があった。
【０００８】
また，特許文献１における技術においては，チャンク群のハッシュ値を管理するテーブルをシステム内に保管し，重複排除処理の際に参照する必要があるが，コンテンツの量が多い場合，同テーブルのサイズが大きくなるため，同テーブルを容量の限られた一次記憶（ＤＲＡＭなどのメモリ）内に格納することができなくなる。この場合，同テーブルは一次記憶ではなく，一時記憶より格段に容量の大きい，ＨＤＤなどの二次記憶内に格納することになるが，二次記憶は一次記憶に比べてアクセス性能が低いため，同テーブルに対する参照のオーバーヘッドが大きくなり，重複排除処理の処理時間が長くなるという問題があった。
【０００９】
本発明はこれらの背景を鑑みてなされたもので，テープライブラリや光ディスクライブラリのような，記憶媒体内のデータへのアクセス時に記憶媒体の物理的な移動を伴う場合があるような記憶装置において，コンテンツ群に対して重複排除を適用し，コンテンツのデータを記憶装置に格納する際のオーバーヘッドを低減することを可能とする情報処理システムを提供することを一つの目的とする。
【課題を解決するための手段】
【００１０】
情報処理システムは，上位装置と,重複排除サーバと,光ディスクライブラリと,を備えて構成され，それらは互いに通信可能なように構成されている。重複排除サーバは，第一の記憶領域と書き込みバッファ領域を有する。光ディスクライブラリは，ロボットと，複数の光ディスクドライブと，複数のスロットと，複数の光ディスクと，を有する。書き込みバッファ領域と光ディスクを合わせて，第二の記憶領域と呼ぶ。重複排除サーバは，第一の記憶領域に格納されたチャンクを管理する第一のチャンク管理テーブルと，第二の記憶領域に格納されたチャンクを管理する第二のチャンク管理テーブルを保持する。第一および第二のチャンク管理テーブルにはそれぞれ，第一および第二の記憶領域に格納されたチャンクのハッシュ値と格納位置の対が記録されている。第一および第二のチャンク管理テーブルはそれぞれ後述する第一および第二の重複排除を行う際に参照される。
【００１１】
前述の目的は，重複排除サーバが以下で述べるようなコンテンツ格納処理部とコンテンツ読み出し処理部を有することにより達成される。コンテンツ格納処理部では，重複排除サーバは，上位装置からのコンテンツを受信し，コンテンツをチャンクに分割し，各チャンクを重複排除サーバもしくは光ディスクライブラリに格納する。コンテンツ読み出し処理部では，重複排除サーバは，上位装置からコンテンツの読み出し要求を受信し，必要なチャンクを重複排除サーバもしくは光ディスクライブラリから読み出し，コンテンツを再構築して上位装置に送信する。
【００１２】
コンテンツ格納処理部は以下のステップ（Ｘ１）〜（Ｘ１１）を有することを特徴とする。なお，（Ｘ１）〜（Ｘ６）は第一の重複排除のステップであり，（Ｘ７）〜（Ｘ１１）は第二の重複排除の一部のステップである。
【００１３】
（Ｘ１）：重複排除サーバは，処理対象のチャンクのハッシュ値が第一のチャンク管理テーブルに登録済みかを判定する。
【００１４】
（Ｘ２）：重複排除サーバは，（Ｘ１）での判定の結果，登録済みであれば，（Ｘ４）に進む。
【００１５】
（Ｘ３）：重複排除サーバは，（Ｘ１）での判定の結果，登録済みでなければ，（Ｘ７）に進む。
【００１６】
（Ｘ４）：重複排除サーバは，（Ｘ１）で登録済みであると判定したハッシュ値に対応するチャンクと，処理対象のチャンクとをバイナリコンペアする処理である第一のバイナリコンペアを実行する。
【００１７】
（Ｘ５）：重複排除サーバは，（Ｘ４）で第一のバイナリコンペアの結果が一致であれば，処理対象のチャンクを破棄して，次のチャンクの処理に移る。
【００１８】
（Ｘ６）：（Ｘ４）で第一のバイナリコンペアの結果が不一致であれば，（Ｘ７）に進む。
【００１９】
（Ｘ７）：重複排除サーバは，処理対象のチャンクのハッシュ値が第二のチャンク管理テーブルに登録済みかを判定する。
【００２０】
（Ｘ８）：重複排除サーバは，（Ｘ７）での判定の結果，登録済みであれば，（Ｘ１０）に進む。
【００２１】
（Ｘ９）：重複排除サーバは，（Ｘ７）での判定の結果，登録済みでなければ，（Ｘ１１）に進む。
【００２２】
（Ｘ１０）：重複排除サーバは，処理対象のチャンクを第一の記憶領域に格納し，また，（Ｘ７）で登録済みであると判定したハッシュ値に対応するチャンクと，処理対象のチャンクとをバイナリコンペアする処理である第二のバイナリコンペアを実行する予定である旨をバイナリコンペア予定チャンク管理テーブルに登録する。ここでは，説明を簡単化するため，（Ｘ７）で登録済みであると判定したハッシュ値に対応するチャンクは光ディスクドライブに未ロードの光ディスク内に格納されているものとする。
【００２３】
（Ｘ１１）：重複排除サーバは，処理対象のチャンクを書き込みバッファ領域に格納し，処理対象のチャンクの光ディスクへの書き込みを実行する予定である旨を，書き込み予定チャンク管理テーブルに登録する。ここでは，説明を簡単化するため，処理対象のチャンクの書き込み先の光ディスクは光ディスクドライブに未ロードの光ディスクであるものとする。
【００２４】
コンテンツ格納処理部は，第二のバイナリコンペアと書き込みを先送りすることを特徴とする。
【００２５】
コンテンツ読み出し処理部は，以下のステップ（Ｙ１）〜（Ｙ７）を有することを特徴とする。なお，（Ｙ４）〜（Ｙ７）は第二の重複排除の一部のステップである。
【００２６】
（Ｙ１）：重複排除サーバは，上位装置よりコンテンツ読み出し要求を受信する。
【００２７】
（Ｙ２）：重複排除サーバは，コンテンツをチャンクに分割し，必要なチャンクを特定する。
【００２８】
（Ｙ３）：重複排除サーバは，必要なチャンクの読み出しに必要な光ディスクを光ディスクドライブにロードし，必要なチャンクを第一の記憶領域もしくは第二の記憶領域から読み出して，コンテンツを再構築して，再構築したコンテンツを上位装置に送信する。
【００２９】
（Ｙ４）：重複排除サーバは，（Ｙ３）でロードされた光ディスクに関連する，バイナリコンペア予定チャンク管理テーブルに登録された第二のバイナリコンペアを実行する。
【００３０】
（Ｙ５）：（Ｙ４）の第二のバイナリコンペアの結果が一致であれば，第二のバイナリコンペアの対象の第一の記憶領域内のチャンクを破棄する。
【００３１】
（Ｙ６）：（Ｙ４）の第二のバイナリコンペアの結果が不一致であれば，第二のバイナリコンペアの対象の第一の記憶領域内のチャンクを書き込みバッファ領域に移動し，移動したチャンクの光ディスクへの書き込みを実行する予定である旨を，書き込み予定チャンク管理テーブルに登録する。ここでは，説明を簡単化するため，処理対象のチャンクの書き込み先の光ディスクは光ディスクドライブに未ロードの光ディスクであるものとする。
【００３２】
（Ｙ７）：重複排除サーバは，（Ｙ３）でロードされた光ディスクに関連する，書き込み予定チャンク管理テーブルに登録された書き込みを実行する。
【００３３】
コンテンツ読み出し処理部は，コンテンツ格納処理部にて先送りされた第二のバイナリコンペアおよび書き込みを実行することを特徴とする。
【００３４】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄の記載、及び図面の記載等により明らかにされる。
【発明の効果】
【００３５】
本発明によれば，第二の重複排除に先立って，第一の重複排除を行うことにより，第二の重複排除の対象となるチャンクを削減し，重複排除を効率的に行うことが可能になる。また，第二のバイナリコンペアおよび光ディスクへの書き込みを，コンテンツ読み出し処理部の実行時まで先送りすることにより，光ディスクの光ディスクドライブへのロード回数を削減することが可能になり，ランダムアクセス性能が低い光ディスクライブラリにおいて効率的に第二のバイナリコンペアおよび光ディスクへの書き込みを行うことが可能となる。また，本発明によれば，光ディスクの光ディスクドライブへのロード回数削減により，光ディスクライブラリ内のロボットの動作回数を低減させ，ロボットを長寿命化することが可能になる。
【図面の簡単な説明】
【００３６】
【図１】本発明の第一の実施形態における情報処理システムの全体構成を示す図である。
【図２】本発明におけるコンテンツとチャンクの関係を示す図である。
【図３】本発明の実施形態のアーカイブサーバのメモリの構成例を示す図である。
【図４】本発明の実施形態の重複排除サーバのメモリおよびＨＤＤの構成例を示す図である。
【図５】本発明におけるチャンクファミリーの概念図を示す図である。
【図６】本発明の実施形態におけるファイル管理テーブルの構成例を示す図である。
【図７】本発明の実施形態における光ディスク管理テーブルの構成例を示す図である。
【図８】本発明の実施形態における光ディスクドライブ管理テーブルの構成例を示す図である。
【図９】本発明の実施形態におけるコンテンツ管理テーブルの構成例を示す図である。
【図１０】本発明の実施形態における第一のチャンク管理テーブルの構成例を示す図である。
【図１１】本発明の実施形態における第二のチャンク管理テーブルの構成例を示す図である。
【図１２】本発明の実施形態におけるチャンクファミリー管理テーブルの構成例を示す図である。
【図１３】本発明の実施形態におけるバイナリコンペア予定チャンク管理テーブルの構成例を示す図である。
【図１４】本発明の実施形態における書き込み予定チャンク管理テーブルの構成例を示す図である。
【図１５】本発明の実施形態における統計情報管理テーブルの構成例を示す図である。
【図１６】本発明の実施形態における管理サーバのディスプレイの表示例を示す図である。
【図１７】本発明の実施形態におけるコンテンツ格納処理のフローチャートを示す図である。
【図１８】本発明の実施形態におけるコンテンツ格納処理の部分Ｂのフローチャートを示す図である。
【図１９】本発明の実施形態におけるコンテンツ格納処理の部分Ｃのフローチャートを示す図である。
【図２０】本発明の実施形態におけるコンテンツ読み出し処理のフローチャートを示す図である。
【図２１】本発明の実施形態におけるバイナリコンペア処理のフローチャートを示す図である。
【図２２】本発明の実施形態におけるバイナリコンペア処理の部分Ｄのフローチャートを示す図である。
【図２３】本発明の実施形態における書き込み処理のフローチャートを示す図である。
【図２４】本発明の実施形態における強制バイナリコンペア処理のフローチャートを示す図である。
【図２５】本発明の実施形態における強制書き込み処理のフローチャートを示す図である。
【図２６】本発明の第二の実施形態における情報処理システムの全体構成を示す図である。
【図２７】本発明の第二の実施形態における，ファイルストレージのコントローラのメモリ，および，ファイルストレージのＨＤＤの構成例を示す図である。
【図２８】本発明の第三の実施形態における情報処理システムの全体構成を示す図である。
【図２９】本発明の第三の実施形態におけるアーカイブサーバのメモリの構成例を示す図である。
【図３０】従来の重複排除処理の概念図を示す図である。
【図３１】本発明の実施形態における重複排除処理の概念図を示す図である。
【発明を実施するための形態】
【００３７】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお実施の形態を説明するための図面において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。また説明上プログラムまたは機能が主語となる場合、実際にはプログラムを実行するプロセッサや回路によって処理が実行される。
【００３８】
以下、第一の実施形態を説明する。図１〜図２５を用いて第一の実施形態の情報処理システムについて説明する。また，本実施形態で用いるテーブルやプログラムの処理フローなどの詳細説明の前に，図１を用いて情報処理システム１の全体的な概略動作について説明すると共に，図３０，図３１を用いて従来の重複排除処理と本実施形態における重複排除処理の概念処理について説明する。
【００３９】
図１は、第一の実施形態における情報処理システム１を示している。情報処理システム１は，ファイル（コンテンツとも記す）を管理する機能などを有する。
【００４０】
まず，情報処理システム１の構成要素について述べる。
【００４１】
情報処理システム１は，重複排除サーバ１００，光ディスクライブラリ２００，ファイルストレージ３００，アーカイブサーバ４００，クライアント装置５００，管理サーバ６００が，相互結合網７００ａ，７００ｂを介して通信可能に接続されて構成される。相互結合網７００は，例えば各種のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等により構成される通信網である。例えば，相互結合網７００は，イーサネット（登録商標）を使い，通信プロトコルとしてＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を利用することができる。
【００４２】
次に，情報処理システム１の各構成要素について説明する。
【００４３】
まず，アーカイブサーバ４００について説明する。
【００４４】
アーカイブサーバ４００は，情報処理システム１が管理するコンテンツを統合的に制御するコンピュータである。アーカイブサーバ４００は，相互結合網７００ａを介して，重複排除サーバ１００，光ディスクライブラリ２００，ファイルストレージ３００，クライアント装置５００，管理サーバ６００と通信可能に接続されている。
【００４５】
情報処理システム１が管理するファイル（コンテンツ）の実体は，アーカイブサーバ４００と通信可能に接続されたファイルストレージ３００や光ディスクライブラリ２００に含まれる記憶媒体に格納されているが，アーカイブサーバ４００はそれらファイル（コンテンツ）の読み書きを中継する機能を担っている。また，アーカイブサーバ４００は，コンテンツへのアクセス頻度や無アクセス期間，あるいは，クライアント装置５００からのコンテンツへの読み出し要求などに応じて，ファイルストレージ３００と光ディスクライブラリ２００の間でコンテンツを相互に移動あるいはコピーする機能も担っている。
【００４６】
アーカイブサーバ４００がファイルストレージ３００内のコンテンツを読み書きする際に用いるネットワーク・プロトコルとしては，ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）やＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）を利用することができる。アーカイブサーバ４００が重複排除サーバ１００に対してコンテンツを読み書きする際に用いるネットワーク・プロトコルとしては，ＮＦＳやＣＩＦＳといった一般的なプロトコルの他に独自プロトコルを利用することができる。本実施形態では，アーカイブサーバ４００が重複排除サーバ１００に対してコンテンツを読み書きする際に，独自プロトコルを用いる例（後述）を示すが，これに限られるものではない。
【００４７】
アーカイブサーバ４００は，メモリ４１０の他に，図示しない，ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ），ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ），ネットワーク・インターフェースといった内部構成要素を有し，それら内部構成要素は内部バスを介して相互に接続されている。
【００４８】
図３は，アーカイブサーバ４００のメモリ４１０の内容を示している。メモリ４１０には，後述するファイル管理テーブル１０００といったテーブル，および，マイグレーション処理４１１のプログラム，後述する読み出し要求処理４１２のプログラム，書き込み要求処理４１３のプログラムといった各種プログラムが記憶されている。メモリ４１０に格納された各種プログラムの動作については後述する。メモリ４１０に格納された各種プログラムは，図示しないアーカイブサーバ４００のＣＰＵに読み込まれて実行される。
【００４９】
次に，図１に戻って，クライアント装置５００について説明する。
【００５０】
クライアント装置５００は，アーカイブサーバ４００により提供されるファイル読み書き機能を利用しながら業務を行う従業員等（以下，ユーザとも記す）が使用するコンピュータである。クライアント装置５００はアーカイブサーバ４００と相互結合網７００ｂを介して通信可能に接続されている。
【００５１】
クライアント装置５００は，アーカイブサーバ４００を介して，ファイルストレージ３００が有する記憶媒体に格納されたコンテンツに対して読み書きを行ったり，光ディスクライブラリ２００が有する記憶媒体に格納されたチャンク（後述）に対して読み込みを行ったりする。クライアント装置５００がアーカイブサーバ４００に対してコンテンツを読み書きする際に用いるネットワーク・プロトコルとしては，ＮＦＳやＣＩＦＳを利用することができる。
【００５２】
クライアント装置５００は，図示しない，ＣＰＵ，メモリ，ＨＤＤ，ネットワーク・インターフェースを内部構成要素として有し，それら内部構成要素は内部バスで接続されている。さらに，クライアント装置５００には，ユーザ・インターフェースとして，図示しない，ディスプレイ，キーボード及びマウスが接続されている。クライアント装置５００のメモリには，ネットワーク・プロトコルを介してアーカイブサーバ４００にコンテンツを書き込むためのコンテンツ書き込みプログラム（図示しない），ネットワーク・プロトコルを介してアーカイブサーバ４００からコンテンツを読み出すためのコンテンツ読み出しプログラム（図示しない），コンテンツの移動・複製・削除・ファイル名変更を行うプログラムなどが記憶されている。これら各種プログラムはクライアント装置５００のＣＰＵに読み出されて実行される。ユーザはユーザ・インターフェースを用いてクライアント装置５００を操作し，アーカイブサーバ４００に対してコンテンツの読み書きなどを行うことにより，各種業務を遂行する。
【００５３】
次に，ファイルストレージ３００について説明する。
【００５４】
ファイルストレージ３００は，ユーザが利用するコンテンツを主に格納するためのコンピュータである。なお，ファイルストレージ３００は，重複排除サーバ１００のための一時記憶領域としても用いることができる。重複排除サーバ１００がどのようにファイルストレージ３００を用いるかについては後述する。ファイルストレージ３００は，相互結合網７００ａを介して，重複排除サーバ１００，アーカイブサーバ４００，管理サーバ６００と通信可能に接続されている。重複排除サーバ１００，アーカイブサーバ４００がファイルストレージ３００内のコンテンツを読み書きする際に用いるネットワーク・プロトコルとしては，ＮＦＳやＣＩＦＳを利用することができる。
【００５５】
ファイルストレージ３００は，コントローラ３１０とＨＤＤ３２０を内部構成要素として有し，それら内部構成要素は内部バスで接続されている。コントローラ３１０は，図示しない，ＣＰＵ，メモリ，ＨＤＤ，ネットワーク・インターフェースを内部構成要素として有し，それら内部構成要素は内部バスで接続されている。ファイルストレージ３００はファイルストレージ３００のコントローラ３１０のネットワーク・インターフェースを介して相互結合網７００ａに接続されている。
【００５６】
ファイルストレージ３００のコントローラ３１０のメモリ内には，ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）プログラム，スナップショット・プログラム，ファイルシステム，ネットワーク・プロトコル・プログラムなどといった各種プログラムが記憶されている。ファイルストレージ３００のコントローラ３１０のメモリ内の各種プログラムはコントローラ３１０の図示しないＣＰＵに読み込まれて実行される。
【００５７】
ＲＡＩＤプログラムは，複数のＨＤＤ３２０の記憶領域から構成される論理的な記憶領域であるボリュームを提供し，ボリュームに対する読み書きをできるようにするプログラムである。ＲＡＩＤの技術は公知であるため詳細については説明しないが，本技術を利用することにより，高可用かつ高性能な記憶領域を提供することが可能になる。スナップショット・プログラムはボリュームの物理的あるいは論理的な複製を作成する機能である。スナップショット・プログラムにより，ボリュームが物理的あるいは論理的に破損した場合でも，破損前の状態に復元することが可能になる。ファイルシステムは，オペレーティングシステムが提供する機能であり，ボリューム上に階層構造を持った記憶領域を構築することができる。ファイル（コンテンツ）はファイルシステム内で管理され，ファイルシステムに含まれるファイル（コンテンツ）は，ディレクトリ名とファイル名から構成されるファイルパスによって一意に識別することができる。ネットワーク・プロトコル・プログラムは，ファイル（コンテンツ）に対する相互結合網７００ａを介した読み書き機能を提供するプログラムである。これらファイルストレージ３００内の各種プログラムにより，アーカイブサーバ４００や重複排除サーバ１００はファイルストレージ３００内のファイル（コンテンツ）を，相互結合網７００ａを介して読み書きすることができる。
【００５８】
次に，光ディスクライブラリ２００について説明する。
【００５９】
光ディスクライブラリ２００は，内蔵する光ディスクにデータを保管する装置である。
【００６０】
光ディスクライブラリ２００は，コントローラ２１０，光ディスクドライブ２２０，スロット２３０，光ディスク２４０，ロボット２５０を内部構成要素として有する。コントローラ２１０，光ディスクドライブ２２０，ロボット２５０は内部バスで接続されている。光ディスクドライブ２２０，スロット２３０，光ディスク２４０の数は１または複数である。また，コントローラ２１０は性能向上や可用性向上のため，冗長化されていてもよい。
【００６１】
光ディスクライブラリ２００のコントローラ２１０は，図示しない，メモリ，ＣＰＵおよびＨＤＤを内部構成要素として有し，それら内部構成要素は内部バスで接続されている。コントローラ２１０のメモリには，後述するロードの指示を受け付け，ロードを行うプログラムや，後述するアンロードの指示を受け付け，アンロードを行うプログラムや，データの書き込みや読み出しの要求を受け付け，データの書き込みや読み出しを行うプログラムなどが記憶される。これら各種プログラムはコントローラ２１０のＣＰＵに読み出されて実行される。
【００６２】
光ディスク２４０は記憶媒体の一種であり，可搬媒体（リムーバブル・メディア）であることを特徴とする。スロット２３０は，光ディスク２４０を格納する物理的な棚である。光ディスクドライブ２２０は光ディスク２４０を内部にロードし，ロードした光ディスク２４０に対してデータを読み書きするデバイスである。光ディスクドライブ２２０とスロット２３０は物理的に隔離されている。ロボット２５０は光ディスク２４０をスロット２３０と光ディスクドライブ２２０の間で物理的に移動する搬送機構である。
【００６３】
光ディスクライブラリ２００は，重複排除サーバ１００に対して，光ディスク２４０の光ディスクドライブ２２０へのロード／アンロード機能や，相互結合網７００ａを介した，光ディスク２４０に対するデータの読み書き機能を提供する。
【００６４】
光ディスクライブラリ２００は，重複排除サーバ１００からの光ディスク２４０のロード／アンロード要求に応じて，指定された光ディスク２４０を光ディスクドライブ２２０にロード（Ｉｎｓｅｒｔ）したり，光ディスク２４０を光ディスクドライブ２２０からアンロード（Ｅｊｅｃｔ）したりする。
【００６５】
また，光ディスクライブラリ２００は，重複排除サーバ１００からのデータの書き込み要求に応じて，重複排除サーバ１００から送信されたデータを光ディスクに書き込んだり，重複排除サーバ１００からのデータの読み出し要求に応じて，光ディスクからデータを読み出して重複排除サーバ１００に送信したりする。
【００６６】
重複排除サーバ１００が，相互結合網７００ａを介して光ディスクライブラリ２００に対してデータを読み書きする際，ＮＦＳやＣＩＦＳのような一般的なネットワーク・プロトコルを用いることもできるが，本実施形態では独自のネットワーク・プロトコルを用いる例を示している。本実施形態では，相互結合網７００ａを介して光ディスクライブラリ２００に対してデータを書き込む際，書き込み先の光ディスクドライブ２２０を明示的に指定して，データを書き込む。また，相互結合網７００ａを介して光ディスクライブラリ２００に対してデータを読み込む際，読み込み元の光ディスクドライブ２２０を明示的に指定して，データを読み込む。
【００６７】
重複排除サーバ１００が，光ディスクライブラリ２００に対して光ディスク２４０の光ディスクドライブ２２０へのロードを指示する場合，重複排除サーバ１００は，ロード対象の光ディスク２４０を光ディスクライブラリ２００内で一意に識別する識別子と，ロード先の光ディスクドライブ２２０を光ディスクライブラリ２００内で一意に識別する識別子を指定する。これにより，指定された光ディスク２４０はロボット２５０により指定された光ディスクドライブ２２０に搬送され，その光ディスクドライブ２２０にロードされる。空き状態の光ディスクドライブが存在しない場合，使用中でない（後述する「Ｕｎｌｏｃｋｅｄ」状態の）光ディスクドライブ２４０内の光ディスク２４０をアンロードすることで，光ディスクドライブ２２０を空き状態にした後に，ロードを行う。
【００６８】
重複排除サーバ１００が，光ディスクライブラリ２００に対して光ディスク２４０の光ディスクドライブ２２０からのアンロードを指示する場合，重複排除サーバ１００は，アンロード対象の光ディスク２４０を光ディスクライブラリ２００内で一意に識別する識別子を指定する。指定された光ディスク２４０は光ディスクドライブ２２０から排出され，ロボット２５０により元のスロット２３０に移動される。
【００６９】
ここで，光ディスクおよびそれに格納されるデータについて述べる。
【００７０】
光ディスクの規格としては，ライト・ワンス（書き換え不可）を特徴とするＤＶＤ−Ｒ，ＢＤ−Ｒなどといった規格や，リライタブル（書き換え可能）を特徴とするＤＶＤ−ＲＷ，ＢＤ−ＲＥなどといった規格が知られている。なお，ＤＶＤ，ＢＤはそれぞれＤｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ，Ｂｌｕ−ｒａｙ  Ｄｉｓｋの略である。ライト・ワンスの光ディスクであっても追記書き込み機能をサポートしている。本実施形態においては，いずれの規格を用いるかは規定しない。
【００７１】
ＤＶＤやＢＤといった光ディスクはＵＤＦ（ユニバーサルディスクフォーマット）と呼ばれる光ディスク用のファイルシステムを採用している。リライタブルな光ディスクを用いる場合，光ディスク内のデータをブロック単位で更新し，ファイルシステムを変更することができ，ファイルの追加，更新，削除を行うことが可能である。ライト・ワンスの光ディスクを用いる場合であっても，一旦書き込んだメタデータおよびデータを物理的に消去することはできないものの，追記書き込みを行い，ファイルシステムを論理的に変更することにより，ファイルの追加，論理的な更新，論理的な削除を行うことが可能である。
【００７２】
光ディスク内に含まれるファイルは，ディレクトリ名とファイル名から構成されるファイルパスで一意に指定することができる。光ディスク２４０を複数含む光ディスクライブラリ２００においては，光ディスクライブラリ２００の光ディスク２４０を一意に識別する識別子と，ファイルパスに用いることにより，光ディスクライブラリ２００に含まれるファイルを一意に指定することができる。
【００７３】
次に，重複排除サーバ１００について説明する。
重複排除サーバ１００は，アーカイブサーバ４００に対して相互結合網７００ａを介してのコンテンツの読み書き機能を提供し，アーカイブサーバ４００から書込まれたコンテンツを光ディスクライブラリ２００に書き込んだり，アーカイブサーバ４００から読み込み要求のあったコンテンツを光ディスクライブラリ２００から読み込んだりするコンピュータである。重複排除サーバ１００は，コンテンツを光ディスクライブラリ２００に書き込む際に，前述した重複排除を用いて，コンテンツを複数のバイト列（チャンクと呼ぶ）に分割し，重複チャンク，即ち，すでに光ディスクライブラリ２００に格納されたチャンクと完全に一致するチャンクを光ディスクライブラリ２００に格納せずに破棄し，重複チャンク以外のチャンクのみを光ディスクライブラリ２００に格納する。図２には，コンテンツ２が１または複数のチャンク３に分割される様子を図示している。なお，チャンクのサイズは固定長とすることもできるし，可変長とすることもできる。二つのチャンクが完全に一致する可能性があるか判定するために，チャンクのハッシュ値を用いることができる。例えば，ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）やＳＨＡ−１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  １）といった公知のハッシュ関数を用いて，チャンクのデータからハッシュ値を算出することができる。例えば，ＭＤ５，ＳＨＡ−１であれば，ハッシュ値はそれぞれ１２８ビット，１６０ビットのビット列である。ハッシュ値が一致する二つのチャンクは，そのデータのバイト列が一致する可能性がある。二つのチャンクのハッシュ値が一致する場合であっても，それらのバイト列は一致しない場合もある。算出したチャンクのハッシュ値は，例えば，重複排除サーバ１００のメモリ１１０に記録しておき，後でハッシュ値の比較に用いることができる。
【００７４】
重複排除技術を用いることによりコンテンツの保管に必要な記憶領域の容量を削減することができる。重複排除の概略動作の説明は後述する。
【００７５】
前述したように，本実施形態では，アーカイブサーバ４００が重複排除サーバ１００に対してコンテンツを格納したり，重複排除サーバ１００からコンテンツを読み出したりする際に，独自プロトコルを用いる例を示すが，これに限定されるものではない。アーカイブサーバ４００が重複排除サーバ１００に対してコンテンツを格納する際の処理は，後述するコンテンツ格納処理２０００で詳細に示す。アーカイブサーバ４００が重複排除サーバ１００からコンテンツを読み出す際の処理は，後述するコンテンツ読み出し処理２１００で詳細に示す。
【００７６】
重複排除サーバ１００は，チャンクを光ディスクライブラリ２００に書き込む際，光ディスクライブラリ２００に対して，書き込み先の光ディスク２４０の識別子を指定して光ディスク２４０のロードを指示し，その後，ロードされた光ディスク２４０に対して，当該チャンクを光ディスクライブラリ２００内で一意に識別できる識別子をファイルパスとして指定して当該チャンクを書き込む。
【００７７】
重複排除サーバ１００は，チャンクを光ディスクライブラリ２００から読み出す際，光ディスクライブラリ２００に対して，読み込み元の光ディスク２４０の識別子を指定して光ディスク２４０のロードを指示し，その後，ロードされた光ディスク２４０に対して，当該チャンクを光ディスクライブラリ２００内で一意に識別できる識別子をファイルパスとして指定して当該チャンクを読み出す。
【００７８】
重複排除サーバ１００は，メモリ１１０，ＨＤＤ１２０の他に，図示しない，ＣＰＵ，ネットワーク・インターフェースを内部構成要素として有し，それら内部構成要素は内部バスで接続されている。重複排除サーバ１００は重複排除サーバ１００のネットワーク・インターフェースを介して相互結合網７００ａに接続されている。
【００７９】
図４は，重複排除サーバ１００のメモリ１１０，ＨＤＤ１２０の内容を示している。
メモリ１１０には，後述する，光ディスク管理テーブル１１００，光ディスクドライブ管理テーブル１２００，コンテンツ管理テーブル１３００，第一のチャンク管理テーブル１４００，チャンクファミリー管理テーブル１６００，バイナリコンペア予定チャンク管理テーブル１７００，書き込み予定チャンク管理テーブル１８００，統計情報管理テーブル１９００といったテーブル，および，後述する，コンテンツ格納処理２０００，コンテンツ読み出し処理２１００，バイナリコンペア処理２２００，書き込み処理２３００，強制バイナリコンペア処理２４００，強制書き込み処理２５００といったプログラムが記憶されている。メモリ１１０に格納された各種プログラムは，図示しない重複排除サーバ１００のＣＰＵに読み込まれて実行される。これら各種プログラムの動作については後述する。メモリ１１０に格納された各種テーブルは，各種プログラムの実行時に重複排除サーバ１００のＣＰＵにより参照・更新される。これら各種テーブルの詳細については後述する。なお，本実施形態では，これら各種テーブルをメモリ１１０に記憶する例を示したが，これら各種テーブルは重複排除サーバ１００のＨＤＤ１２０，ファイルストレージ３００のコントローラ３１０のメモリ，ファイルストレージ３００のＨＤＤ３２０，光ディスクライブラリ２００のコントローラ２１０のメモリあるいはＨＤＤ，光ディスクライブラリ２００の光ディスク２４０，のいずれかに記憶するように構成してもよい。
【００８０】
ＨＤＤ１２０には，後述する，第二のチャンク管理テーブル１５００というテーブルが記憶されている。本実施形態では，このテーブルをＨＤＤ１２０に格納する例を示したが，このテーブルは重複排除サーバ１００のメモリ１１０，ファイルストレージ３００のコントローラ３１０のメモリ，ファイルストレージ３００のＨＤＤ３２０，光ディスクライブラリ２００のコントローラ２１０のメモリあるいはＨＤＤ，光ディスクライブラリ２００の光ディスク２４０，のいずれかに記憶するように構成してもよい。
【００８１】
次に，図１に戻って，管理サーバ６００について説明する。
【００８２】
管理サーバ６００は，重複排除サーバ１００，光ディスクライブラリ２００，ファイルストレージ３００，アーカイブサーバ４００を管理するためのコンピュータである。情報処理システム１の管理者は，管理サーバ６００を用いることにより重複排除サーバ１００，光ディスクライブラリ２００，ファイルストレージ３００，アーカイブサーバ４００に関する各種情報を参照したり，設定を変更したりすることができる。
【００８３】
管理サーバ６００は，図示しない，ＣＰＵ，メモリ，ＨＤＤ，ネットワーク・インターフェースを内部構成要素として有し，それら内部構成要素は内部バスで接続されている。さらに，管理サーバ６００には，ユーザ・インターフェースとして，図示しない，ディスプレイ，キーボード及びマウスが接続されている。管理者はそれらを用いて，重複排除サーバ１００，光ディスクライブラリ２００，ファイルストレージ３００，アーカイブサーバ４００の管理を行う。
【００８４】
管理サーバ６００に用いることで，どのような情報を参照できるかの例については後述する。
【００８５】
次に，情報処理システム１内の記憶領域について述べる。
【００８６】
ファイルストレージ３００には，プライマリ記憶領域１０，第一の記憶領域２０，書き込みバッファ領域４０といった，複数のファイルシステム領域が含まれる。プライマリ記憶領域１０はアーカイブサーバ４００が利用するファイルシステム領域である。第一の記憶領域２０および書き込みバッファ領域４０は重複排除サーバ１００が利用するファイルシステム領域である。ファイルストレージ３００の書き込みバッファ領域４０と光ディスク２４０全ての記憶領域を合わせた記憶領域を第二の記憶領域と呼ぶ。書き込みバッファ領域４０は，光ディスク２４０に書き込む前に一時的にデータ（チャンク）を保管するために用いられる。第一の記憶領域２０，書き込みバッファ領域４０はＨＤＤ３２０上に格納される。
【００８７】
なお，本実施形態では，第一の記憶領域２０および書き込みバッファ領域４０をＨＤＤ３２０上に格納する例を示したが，これらの記憶領域は光ディスク２４０上に格納するように構成してもよい。ただし，この場合，ランダムアクセス性能を考慮して，光ディスク２４０を光ディスクドライブ２２０に常駐させる対応が必要となる。
【００８８】
あるいはまた，第一の記憶領域２０および書き込みバッファ領域４０を重複排除サーバ１００のＨＤＤ１２０に格納するように構成してもよい。
【００８９】
以上が第一の実施形態における情報処理システム１の説明である。
【００９０】
次に，再び図１を参照しつつ，本実施形態の情報処理システム１の全体的な概略動作について述べる。なお，ここでは，概略動作の説明を簡単化するため，基本的な動作についてのみ述べる。
【００９１】
まず，クライアント装置５００がコンテンツをアーカイブサーバ４００に書き込んだ後に，そのコンテンツが最終的に第二の記憶領域３０もしくは第一の記憶領域２０に格納されるまでの概略動作について述べる。
【００９２】
クライアント装置５００はまず，ユーザの指示に従い，クライアント装置５００のメモリに記憶されたコンテンツ書き込みプログラムを用いて，コンテンツをアーカイブサーバ４００に書き込む。アーカイブサーバ４００はクライアント装置５００から書き込まれたコンテンツを，書き込み要求処理４１３のプログラムを用いて，ファイルストレージ３００のプライマリ記憶領域１０に書き込む。その後，クライアント装置５００は，ユーザの指示に従い，アーカイブサーバ４００を介して，当該コンテンツに対して読み書きを行う。
【００９３】
次に，当該コンテンツはアーカイブサーバ４００のメモリ４１０に記憶されたマイグレーション処理４１１のプログラムにより，重複排除サーバ１００に書き込まれる。
【００９４】
ここで，マイグレーション，および，マイグレーション処理４１１のプログラムについて簡単に説明する。マイグレーションとは，性質の異なる記憶階層間でコンテンツを移動することである。記憶階層は，例えば，ビット単価が高いが，高性能である記憶媒体（例えば，ファイルストレージ３００のＨＤＤ３２０）から構成される記憶領域である上位階層と，ビット単価の低いが，低性能である記憶媒体（例えば，光ディスクライブラリ２００の光ディスク２４０）から構成される記憶領域である下位階層を含む。一般に，時間経過に伴い書き込まれたコンテンツが古くなっていくと，次第にそのコンテンツに対するアクセス頻度は低下していく。そのようなアクセス頻度の低いコンテンツは上位階層から下位階層に移動（マイグレーション）することにより，コンテンツの保管コストを低減することできる。なお，下位階層に格納されたコンテンツに対するアクセス頻度が高くなった場合，そのコンテンツは下位階層から上位階層に移動されることもある。また，コンテンツへのアクセス性能を向上するために，コンテンツの本体を下位階層に保管し，コンテンツの複製を上位階層に保管することもできる。さらにまた，記憶階層は２つ以上存在する場合もある。
【００９５】
マイグレーション処理４１１のプログラムは，定期的（例えば一日毎など）に起動され，予め管理者により管理サーバ６００を用いて設定されたポリシーに従ってマイグレーション対象のコンテンツを選択し，マイグレーションを行う。ポリシーには，マイグレーション対象とするコンテンツの選択方法が指定され，例えば，アクセス頻度がある設定された閾値以下であるコンテンツや，無アクセス期間がある設定された閾値以上のコンテンツを上位階層から下位階層へのマイグレーション対象として選択したり，逆に，アクセス頻度がある設定された閾値以上であるコンテンツを下位階層から上位階層へのマイグレーション対象として選択したりする，コンテンツの選択方法が指定される。
【００９６】
アーカイブサーバ４００は，マイグレーションされたコンテンツがファイルストレージ３００と重複排除サーバ１００のどちらにアクセスすれば読み出すことができるかを，後述するファイル管理テーブル１０００に記録している。
【００９７】
以上がマイグレーション，および，マイグレーション処理４１１のプログラムについての説明であり，再び概略動作の説明に戻る。
【００９８】
マイグレーション処理４１１のプログラムにより重複排除サーバ１００に書き込まれたコンテンツに含まれるチャンクは，重複排除サーバ１００のメモリ１１０に記憶されたコンテンツ格納処理２０００などにより，重複排除処理が行われ，最終的に第一の記憶領域２０あるいは第二の記憶領域３０に格納される。重複排除処理の概念動作については，後ほど図３１を参照しながら説明する。記憶されたコンテンツ格納処理２０００などの重複排除サーバ１００のメモリ１１０に格納された，コンテンツの格納に関連する各種プログラムの動作に関しては後述する。第一の記憶領域２０に格納されたチャンクは後述する第一のチャンク管理テーブル１４００で管理され，また，第二の記憶領域３０に格納されたチャンクは後述する第二のチャンク管理テーブル１５００で管理される。
【００９９】
以上が，クライアント装置５００がコンテンツをアーカイブサーバ４００に書き込んだ後に，そのコンテンツが最終的に第二の記憶領域３０もしくは第一の記憶領域２０に格納されるまでの概略動作についての説明である。
【０１００】
ところで，第二の記憶領域３０には複数の光ディスク２４０が含まれるが，第二の記憶領域３０の光ディスク２４０にコンテンツを格納する際，コンテンツを構成するチャンクをどの光ディスク２４０に格納するかの選択方法について，図５を参照しながら補足説明する。
【０１０１】
図５はこれから定義するチャンクファミリーの概念図を示している。図２で示したようにコンテンツ２は１または複数のチャンク３から構成される。しかし，チャンク３は重複排除されるため，重複排除後にはコンテンツ２は，チャンク３に重複排除を適用した後のチャンクである重複排除済みチャンク４から構成されることになる。図５の例では，コンテンツ２ａは重複排除済みチャンク４ｐ，４ｑから構成されている。また，コンテンツ２ｂは重複排除済みチャンク４ｑ，４ｒから構成されている。この例では，重複排除済みチャンク４ｑは，コンテンツ２ａ，２ｂに共通して含まれるチャンクである。重複排除済みチャンク４ｑに対応する，コンテンツ２ａのチャンク３とコンテンツ２ｂのチャンク３のうち一方は，データのバイト列が一致するため，重複排除により削除されている。なお，以降の図５以外の説明においては，チャンク３および重複排除済みチャンク４を単にチャンクと呼ぶことがある。
【０１０２】
ここで以下のような定義をする。即ち，（１）コンテンツ２を親とし，そのコンテンツ２に含まれる重複排除済みチャンク４をその親の子とし，（２）共通の親（コンテンツ２）を持つ複数の重複排除済みチャンク４は兄弟であるとし，（３）兄弟の兄弟もまた兄弟であるとし，（４）兄弟関係にある重複排除済みチャンク４群をチャンクファミリー５であるとする。つまり，チャンクファミリー５はコンテンツ２を介して互いに関連する重複排除済みチャンク４の集合体である。
【０１０３】
コンテンツを構成する重複排除済みチャンク４を光ディスク２４０に格納する際には，このチャンクファミリーの考え方を用いる。即ち，チャンクファミリー５に含まれる重複排除済みチャンク４群は１枚の光ディスク２４０に格納する。チャンクファミリー５に含まれる重複排除済みチャンク４群の総容量が大きく，１枚の光ディスク２４０に収まらない場合は，チャンクファミリー５を分割して，複数の光ディスク２４０に格納する。１枚の光ディスク２４０に複数のチャンクファミリー５が含まれていてもよいものとする。
【０１０４】
このようなチャンクファミリーの考え方を用いてチャンクを光ディスク２４０に格納することにより，コンテンツ２にアクセスする際にアクセスする必要のある光ディスク２４０の枚数を低減することができる。例えば，チャンクファミリーがある１枚の光ディスク２４０に格納されていることを想定すると，そのチャンクファミリーに関連するいずれのコンテンツをアクセスする場合であっても，当該の１枚の光ディスク２４０にのみアクセスすればよい。そのため，光ディスク２４０をスロット２３０から光ディスクドライブ２２０に移動してロードする回数を最小限に抑えることができる。
【０１０５】
以上がチャンクをどの光ディスク２４０に格納するかの選択方法についての補足説明である。
【０１０６】
次に，クライアント装置５００が，アーカイブサーバ４００に書き込んだコンテンツを読み出す際の概略動作について説明する。
【０１０７】
クライアント装置５００はまず，ユーザの指示に従い，クライアント装置５００のメモリに記憶されたコンテンツ読み出しプログラムを用いて，コンテンツをアーカイブサーバ４００から読み出すための要求をアーカイブサーバ４００に対して発行する。その要求を受信したアーカイブサーバ４００の読み出し要求処理４１２のプログラムは，ファイル管理テーブル１０００を参照し，読み出し対象のコンテンツがファイルストレージ３００のプライマリ記憶領域１０と重複排除サーバ１００のいずれから読み出すことができるかを特定すると共に，ファイルストレージ３００内あるいは重複排除サーバ１００内における，読み出し対象のコンテンツの識別子を特定する。
【０１０８】
読み出し対象のコンテンツがファイルストレージ３００のプライマリ記憶領域１０から読み出すことができると判定した場合は，アーカイブサーバ４００はファイルストレージ３００から読み出し対象のコンテンツを読み出し，読み出したコンテンツをクライアント装置５００に送信する。
【０１０９】
読み出し対象のコンテンツが重複排除サーバ１００から読み出すことができると判定した場合は，アーカイブサーバ４００は重複排除サーバ１００に対して，読み出し対象のコンテンツを重複排除サーバ１００から読み出すための要求を重複排除サーバ１００に対して発行する。コンテンツ読み出し処理２１００のプログラムにより，コンテンツの読み出しの要求を受信した重複排除サーバ１００は，コンテンツを構成する１または複数のチャンクそれぞれが第一の記憶領域２０と第二の記憶領域３０のどちらに格納されているかを判定し，必要なチャンクのデータを第一の記憶領域２０あるいは第二の記憶領域３０から読み出した後，読み出したチャンクからコンテンツを再構築し，アーカイブサーバ４００に再構築したコンテンツを送信する。重複排除サーバ１００から，読み出し対象のコンテンツを受信したアーカイブサーバ４００は，受信したコンテンツをクライアント装置５００に送信する。
【０１１０】
以上が，クライアント装置５００がアーカイブサーバ４００からコンテンツを読み出す際の概略動作についての説明である。
【０１１１】
次に，図３０，図３１を用いて従来の重複排除処理と本実施形態における重複排除処理の概念処理について説明する。なお，図３０，図３１では詳細な処理の記載は省略してある。また，以下の説明で主体が省略されている場合，当該主体は前述のＣＰＵ，コントローラ等である。
【０１１２】
図３０は，従来の重複排除処理の概念図である。なお，図３０の説明においては，重複排除サーバ１００が管理する，光ディスクライブラリ２００もしくはファイルストレージ３００内の記憶領域を，単に重複排除サーバ１００の記憶領域と呼ぶことがある。
【０１１３】
従来の重複排除処理おいては，コンテンツを管理するためにチャンク管理テーブルとコンテンツ管理テーブルの２つのテーブルを用いる。
【０１１４】
チャンク管理テーブルには，重複排除サーバ１００の記憶領域に格納されたチャンクに関する情報が記録されており，各チャンクにつき，チャンク識別子（チャンクを重複排除サーバ１００内で一意に識別するための識別子），チャンクのハッシュ値，チャンクの格納位置が記録されている。なお，チャンク管理テーブルには同一のハッシュ値が複数登録されている場合がある。これは，複数のチャンクのデータが完全に一致しないにも関わらず，それらチャンクが同一のハッシュ値を持つ場合に起きる。
【０１１５】
コンテンツ管理テーブルには，重複排除サーバ１００で管理されているコンテンツに関する情報が記録されており，各コンテンツにつき，コンテンツ識別子と，コンテンツに含まれるチャンクのチャンク識別子のリストが記録されている。
【０１１６】
図３０の上側のフローチャートは，コンテンツを重複排除サーバ１００の記憶領域に格納する際の処理である，（Ａ）コンテンツ格納処理の概念図を示している。
【０１１７】
（Ａ）においては，まず，格納対象のコンテンツは１または複数のチャンクに分割される。その後，各チャンクに対して，（Ａ１）および（必要であれば）（Ａ２）の処理が適用される。
【０１１８】
（Ａ１），（Ａ２）の処理においては，重複排除サーバ１００の記憶領域内に当該チャンクと完全に一致するチャンクが存在すれば，当該チャンクを破棄し，そうでなければ，当該チャンクを重複排除サーバの記憶領域に格納する。
【０１１９】
具体的には，（Ａ１）では，チャンク管理テーブルを参照し，処理対象のチャンクのハッシュ値と一致するハッシュ値を検索する。
【０１２０】
処理対象のチャンクのハッシュ値と一致するハッシュ値が見つかった場合，処理対象のチャンクと完全に一致するチャンクが重複排除サーバ１００の記憶領域に存在する可能性があるため，（Ａ２）に進む。
【０１２１】
処理対象のチャンクのハッシュ値と一致するハッシュ値が見つからなかった場合，処理対象のチャンクと完全に一致するチャンクは重複排除サーバ１００の記憶領域に存在しないため，処理対象のチャンクを重複排除サーバ１００の記憶領域に格納すると共に，チャンク管理テーブルに，処理対象のチャンクのチャンク識別子，ハッシュ値，格納位置を登録し，次のチャンクの処理に移る。
【０１２２】
また，具体的には，（Ａ２）では，処理対象のチャンクと，処理対象のチャンクと完全に一致する可能性のあるチャンクが完全に一致するかを，それらをバイナリコンペア（２つのチャンクのバイト列が一致するかの比較）することにより確認する。
【０１２３】
バイナリコンペアの結果が一致である場合，処理対象のチャンクは重複排除サーバ１００の記憶領域内のチャンクと重複するため，処理対象のチャンクを破棄し，次のチャンクの処理に移る。
【０１２４】
バイナリコンペアの結果が不一致である場合，処理対象のチャンクと完全に一致するチャンクは重複排除サーバ１００の記憶領域に存在しないため，処理対象のチャンクを重複排除サーバ１００の記憶領域に格納すると共に，チャンク管理テーブルに処理対象のチャンクのチャンク識別子，ハッシュ値，格納位置を登録し，次のチャンクの処理に移る。
【０１２５】
当該コンテンツに含まれるすべてのチャンクの処理が完了した後，コンテンツ管理テーブルにコンテンツ識別子と，当該コンテンツに含まれるチャンクのチャンク識別子のリストを登録し，（Ａ）の処理を終了する。
【０１２６】
図３０の下側のフローチャートは，コンテンツを重複排除サーバ１００の記憶領域から読み出す際の処理である，（Ｂ）コンテンツ読み出し処理の概念図を示している。（Ｂ）は，読み出し対象のコンテンツ識別子を指定して呼び出される。
【０１２７】
（Ｂ）においては，まず，コンテンツ管理テーブルを参照して，指定されたコンテンツ識別子に対するコンテンツに含まれるチャンク識別子のリストを特定する。そして，（Ｂ１）にて，各チャンク識別子の対応するチャンクを重複排除サーバの記憶領域から読み出し，コンテンツを再構築し，（Ｂ）の呼び出し元に再構築したコンテンツを送信する。（Ｂ１）においては，必要チャンクが光ディスク２４０に格納されているのであれば，必要に応じて光ディスク２４０をロードして，必要チャンクを読み出す。
【０１２８】
以上が従来の重複排除処理の概念図の説明である。
【０１２９】
図３１は，本発明の実施形態における重複排除処理の概念図である。
【０１３０】
本実施形態の重複排除処理においては，コンテンツを管理するために，第一のチャンク管理テーブル１４００，第二のチャンク管理テーブル１５００，コンテンツ管理テーブル１３００の３つのテーブルを用いる。各テーブルの詳細な説明は図６以降の説明にて行う。
【０１３１】
重複排除サーバが管理する記憶領域には，第一の記憶領域２０と第二の記憶領域３０の２つが存在する。第一の記憶領域２０には，後述する第一の重複排除と後述する第二の検索処理とが完了したチャンクであって，後述する第二のバイナリコンペアの処理を待つチャンクが一時的に格納される。第一の記憶領域２０に格納されたチャンクは前記第一のチャンク管理テーブル１４００で管理される。第二の記憶領域３０は，第二の重複排除が完了したチャンクが格納される記憶領域であり，書き込みバッファ領域４０と光ディスク２４０から構成される。書き込みバッファ領域４０は，光ディスク２４０に書き込まれるのを待つチャンクが一時的に格納される記憶領域である。光ディスク２４０は第二の重複排除が完了したチャンクが最終的に格納される記憶領域である。第二の記憶領域３０に格納されたチャンクは前記第二のチャンク管理テーブル１５００で管理される。
【０１３２】
第一のチャンク管理テーブル１４００には，第一の記憶領域２０に格納されたチャンクに関する情報が記録されており，各チャンクにつき，チャンクを第一の記憶領域２０内で一意に識別するための識別子であるチャンク識別子，チャンクのハッシュ値，チャンクの格納位置などが記録されている。
【０１３３】
第二のチャンク管理テーブル１５００には，第二の記憶領域３０に格納されたチャンクに関する情報が記録されており，各チャンクにつき，チャンクを第二の記憶領域３０内で一意に識別するための識別子であるチャンク識別子，チャンクのハッシュ値，チャンクの格納位置などが記録されている。
【０１３４】
コンテンツ管理テーブル１３００には，重複排除サーバ１００で管理されているコンテンツに関する情報が記録されており，各コンテンツにつき，コンテンツ識別子と，コンテンツに含まれるチャンクのチャンク識別子（第一のチャンク管理テーブル１４００で管理されるチャンクか第二のチャンク管理テーブル１５００で管理されるチャンクかを識別できる情報も含む）のリスト，などが記録されている。
【０１３５】
図３１の上側のフローチャートは，コンテンツを第一の記憶領域２０もしくは第二の記憶領域３０に格納する際の処理である，（Ｃ）コンテンツ格納処理の概念図を示している。（Ｃ１）および（Ｃ２）は第一の重複排除の処理であり，（Ｃ３）は第二の重複排除の処理の一部である。
【０１３６】
（Ｃ）においては，まず，格納対象のコンテンツは１または複数のチャンクに分割される。その後，各チャンクに対して，（Ｃ１），（必要であれば）（Ｃ２），（必要であれば）（Ｃ３）の処理が適用される。
【０１３７】
（Ｃ１），（Ｃ２）の処理においては，第一の記憶領域２０に処理対象のチャンクと完全に一致するチャンクが存在すれば，処理対象のチャンクを破棄し，そうでなければ，処理対象のチャンクに対して（Ｃ３）の処理を適用する。
【０１３８】
具体的には，（Ｃ１）では，第一のチャンク管理テーブル１４００を参照し，処理対象のチャンクのハッシュ値と一致するハッシュ値を検索する処理である第一の検索処理を行う。
【０１３９】
（Ｃ１）にて，処理対象のチャンクのハッシュ値と一致するハッシュ値が見つかった場合，処理対象のチャンクと完全に一致するチャンクが第一の記憶領域２０に存在する可能性があるため，（Ｃ２）に進む。（Ｃ１）にて，処理対象のチャンクのハッシュ値と一致するハッシュ値が見つからなかった場合，処理対象のチャンクと完全に一致するチャンクは第一の記憶領域２０に存在しないため，（Ｃ３）に進む。
【０１４０】
また，（Ｃ２）では，処理対象のチャンクと，処理対象のチャンクと完全に一致する可能性のあるチャンクが完全に一致するかを，それらのバイト列が一致するか比較する処理である第一のバイナリコンペアを実行することにより確認する。
【０１４１】
第一のバイナリコンペアの比較結果が一致である場合，処理対象のチャンクは，第一の記憶領域２０内のチャンクと重複するため，破棄される。第一のバイナリコンペアの比較結果が不一致である場合，処理対象のチャンクと完全に一致するチャンクは第一の記憶領域２０に存在しないため，（Ｃ３）に進む。
【０１４２】
（Ｃ３）では，第二のチャンク管理テーブル１５００を参照し，処理対象のチャンクのハッシュ値と一致するハッシュ値を検索する処理である第二の検索処理を行う。
【０１４３】
（Ｃ３）にて，処理対象のチャンクのハッシュ値と一致するハッシュ値が見つかった場合，処理対象のチャンクと完全に一致するチャンクが第二の記憶領域３０に存在する可能性があるため，当該チャンクを第一の記憶領域２０に格納し，第一のチャンク管理テーブル１４００に処理対象のチャンクのチャンク識別子，ハッシュ値，格納位置を登録し，（Ｄ２）における第二のバイナリコンペアを（Ｃ）の終了後のある時点で実行する予定である旨の情報（本情報はバイナリコンペア予定チャンク管理テーブル１７００にて管理される）を登録し，コンテンツ管理テーブル１３００にコンテンツ識別子と，コンテンツに含まれるチャンクのチャンク識別子のリストを登録し，次のチャンクの処理に移る。（Ｃ３）では，要するに，第二のバイナリコンペアの実行は先送りされるということである。なお，（Ｄ２）における第二のバイナリコンペアでは，当該チャンクと，当該チャンクと完全に一致する可能性のある，第二の記憶領域３０内のチャンクをバイナリコンペアする。
【０１４４】
（Ｃ３）にて，処理対象のチャンクのハッシュ値と一致するハッシュ値が見つからなかった場合，処理対象のチャンクと完全に一致するチャンクは第二の記憶領域３０に存在しないため，第二の記憶領域３０内の書き込みバッファ領域４０に格納し，第二のチャンク管理テーブル１５００に処理対象のチャンクのチャンク識別子，ハッシュ値，格納位置を登録し，（Ｄ３）における書き込み処理を（Ｃ）の終了後のある時点で実行する予定である旨の情報（本情報は書き込み予定チャンク管理テーブル１８００にて管理される）を登録し，コンテンツ管理テーブル１３００にコンテンツ識別子と，コンテンツに含まれるチャンクのチャンク識別子のリストを登録し，次のチャンクの処理に移る。（Ｃ３）では，要するに，光ディスクへの書き込みの実行は先送りされるということである。
【０１４５】
当該コンテンツに含まれるすべてのチャンクの処理が完了した後，コンテンツ管理テーブル１３００にコンテンツ識別子と，当該コンテンツに含まれるチャンクのチャンク識別子のリストを登録し，（Ｃ）の処理を終了する。
【０１４６】
図３１の下側のフローチャートは，コンテンツを重複排除サーバ１００の記憶領域から読み出す際の処理である，（Ｄ）コンテンツ読み出し処理の概念図を示している。（Ｄ）は，読み出し対象のコンテンツの識別子を指定して呼び出される。（Ｄ）は前述の図３０の（Ｂ）と異なり，指定されたコンテンツの読み出しを行う処理（Ｂ１）と同様の処理（Ｄ１）を実行する他に，（Ｄ２）にて第二の重複排除における第二のバイナリコンペアを実行し，また，（Ｄ３）にて書き込みバッファ領域４０内のチャンクを光ディスクへ書き込む書き込み処理を実行する。
【０１４７】
具体的には，（Ｄ２）では，（Ｃ３）にて実行予定として登録した第二のバイナリコンペアのうち，指定されたコンテンツの読み出し時にロードされた光ディスク２４０に含まれるチャンクに関連する第二のバイナリコンペアを実行する。（Ｄ２）では，要するに，（Ｃ３）にて先送りされた第二のバイナリコンペアを実行するということである。
【０１４８】
第二のバイナリコンペアの結果が一致である場合，処理対象の第一の記憶領域２０内のチャンクは処理対象の光ディスク２４０内のチャンクと重複するため，処理対象の第一の記憶領域２０内のチャンクを破棄する。
【０１４９】
第二のバイナリコンペアの結果が不一致である場合，処理対象の第一の記憶領域２０内のチャンクと完全に一致するチャンクは光ディスク２４０内に存在しないため，処理対象の第一の記憶領域２０内のチャンクを第二の記憶領域３０内の書き込みバッファ領域４０に格納し，第二のチャンク管理テーブル１５００に処理対象のチャンクのチャンク識別子，ハッシュ値，格納位置を登録し，（Ｄ３）における書き込み処理を（Ｄ２）の終了後のある時点で実行する予定である旨の情報（本情報は書き込み予定チャンク管理テーブル１８００にて管理される）を登録し，処理対象の第一の記憶領域２０内のチャンクを破棄する（併せて，対応する第一のチャンク管理テーブル１４００のエントリを削除する）。
【０１５０】
また，（Ｄ３）では，（Ｃ３）あるいは（Ｄ２）にて実行予定として登録された書き込み処理のうち，指定されたコンテンツの読み出し時にロードされた光ディスク２４０を書き込み先とする書き込み処理を実行する。光ディスク２４０への書き込み処理が完了した書き込みバッファ領域４０内のチャンクは破棄し，それに対応して第二のチャンク管理テーブルを更新する。（Ｄ３）では，要するに，（Ｃ３）にて先送りされた光ディスクへの書き込みを実行するということである。
【０１５１】
以下では，本実施形態のメリットについて述べる。
【０１５２】
通常，第二の記憶領域３０には膨大な数のチャンクが格納されるため，それらチャンクを管理するための第二のチャンク管理テーブル１５００のサイズは，重複排除サーバ１００のメモリ１１０のサイズより大きくなる場合が多い。そのため，第二のチャンク管理テーブル１５００は，メモリ１１０ではなくＨＤＤ１２０に記憶するのが適当である。しかし，この場合，ＨＤＤ１２０はメモリ１１０に比べてアクセスコストが大きいため，第二のチャンク管理テーブル１５００へのアクセスのオーバーヘッドが問題となる。本実施形態では，第二のチャンク管理テーブル１５００へのアクセスが発生する第二の重複排除の前に第一の重複排除を行い，第一の重複排除で破棄されなかったチャンクに対してのみ第二の重複排除を適用し，第一の重複排除で破棄されたチャンクに対しては第二の重複排除の適用をスキップできるため，第二のチャンク管理テーブル１５００へのアクセス回数を低減することができ，また，第二の重複排除における第二のバイナリコンペアの回数を低減することができる。第二のチャンク管理テーブル１５００へのアクセス回数を低減することにより，本実施形態の重複排除処理に要する時間を短縮することができる。
【０１５３】
また，本実施形態においては，第二のバイナリコンペアの実行を，コンテンツ読み出し処理にて当該第二のバイナリコンペアに関連する光ディスク２４０がロードされる時まで先送りすることにより，第二のバイナリコンペアの実行のためだけの光ディスク２４０のロードを削減し，全体としての光ディスク２４０のロード回数を低減することができる。
【０１５４】
さらにまた，本実施形態においては，チャンクの光ディスク２４０への書き込み処理の実行を，コンテンツ読み出し処理にて当該書き込み処理に関連する光ディスク２４０がロードされる時まで先送りすることにより，書き込み処理のためだけの光ディスク２４０のロードを削減し，全体としての光ディスク２４０のロード回数を低減することができる。
【０１５５】
光ディスク２４０のロード回数を低減することにより，光ディスクライブラリ２００のロボット２５０の動作回数を低減し，ロボット２５０の寿命を延ばすことができる。
【０１５６】
次に，図６〜図１５を参照しながら，本実施形態における各種テーブルについて説明する。
【０１５７】
図６は，ファイル管理テーブル１０００の構成例を示している。
【０１５８】
ファイル管理テーブル１０００は，アーカイブサーバ４００が管理するコンテンツ（ファイル）に関する情報を管理するためのテーブルである。
【０１５９】
ファイル管理テーブル１０００は，ファイルパス１００１，ファイルストレージ内コンテンツ識別子１００２，重複排除サーバ内コンテンツ識別子１００３，および，図示しないメタデータから構成される。
【０１６０】
ファイルパス１００１は，アーカイブサーバ４００内でコンテンツ（ファイル）を一意に識別するための識別子である。例えば，ディレクトリ名とファイル名を連結した文字列として表現される。ファイルパス１００１で指定されるコンテンツを当該コンテンツと呼ぶ。
【０１６１】
ファイルストレージ内コンテンツ識別子１００２は，当該コンテンツのファイルストレージ３００内での識別子を示す情報である。当該コンテンツがファイルストレージ３００内に格納されている場合は，ファイルストレージ内コンテンツ識別子１００２のエントリには，当該コンテンツのファイルストレージ３００内での識別子が記録される。当該コンテンツがファイルストレージ３００内に格納されていない場合は，ファイルストレージ内コンテンツ識別子１００２のエントリには，無効値の「ＮＵＬＬ」が記録される。
【０１６２】
重複排除サーバ内コンテンツ識別子１００３は，当該コンテンツの重複排除サーバ１００での識別子を示す情報である。当該コンテンツが重複排除サーバ１００により管理されている場合は，重複排除サーバ内コンテンツ識別子１００３のエントリには，当該コンテンツの重複排除サーバ１００内での識別子が記録される。当該コンテンツが重複排除サーバ１００内により管理されていない場合は，重複排除サーバ内コンテンツ識別子１００３のエントリには，無効値の「ＮＵＬＬ」が記録される。
【０１６３】
ファイル管理テーブル１０００のメタデータは，当該コンテンツに関する情報であり，サイズ，作成時刻，最終更新時刻，最終アクセス時刻，所有者，アクセス制御情報などから構成される。
【０１６４】
図６の例では，アーカイブサーバ４００がファイルパス「／ｆｏｏ／ｂａｒ１．ｔｘｔ」，「／ｆｏｏ／ｂａｒ２．ｔｘｔ」，「／ｆｏｏ／ｂａｒ３．ｔｘｔ」を持つコンテンツ（ファイル）を管理していることを示している。ファイルパス「／ｆｏｏ／ｂａｒ１．ｔｘｔ」で指定されるコンテンツは，ファイルストレージ３００内に「／ｆｏｏ／ｂａｒ１．ｔｘｔ」という識別子を持つコンテンツとして保管されていることを示している。ファイルパス「／ｆｏｏ／ｂａｒ２．ｔｘｔ」で指定されるコンテンツは，重複排除サーバ１００内で「１」という識別子を持つコンテンツとして管理されていることを示している。ファイルパス「／ｆｏｏ／ｂａｒ３．ｔｘｔ」で指定されるコンテンツは，ファイルストレージ３００内に「／ｆｏｏ／ｂａｒ３．ｔｘｔ」という識別子を持つコンテンツとして保管さおり，また，重複排除サーバ１００内で「１０」という識別子を持つコンテンツとして管理されていることを示している（この場合，コンテンツは２カ所に存在することを示している）。
【０１６５】
図７は，光ディスク管理テーブル１１００の構成例を示している。
【０１６６】
光ディスク管理テーブル１１００は，光ディスクライブラリ２００に含まれる光ディスク２４０の物理的な格納位置を管理するためのテーブルである。
【０１６７】
光ディスク管理テーブル１１００は，光ディスク＃１１０１，格納位置１１０２，空き領域サイズ１１０３から構成される。
【０１６８】
光ディスク＃１１０１は，光ディスクライブラリ２００内で光ディスク２４０を一意に識別するための識別子である。光ディスク＃１１０１で識別される光ディスク２４０を当該光ディスクと呼ぶ。
【０１６９】
格納位置１１０２は，当該光ディスクの物理的な格納位置を示す情報である。光ディスク＃１１０１には，スロット２３０あるいは光ディスクドライブ２２０のいずれかの識別子が記憶される。
【０１７０】
空き領域サイズ１１０３は，当該光ディスクの空き領域のサイズを示す情報である。
【０１７１】
図７の例では，識別子「１」で識別される光ディスク２４０は「１」で識別されるスロット２３０に格納されている。また，識別子「２」で識別される光ディスク２４０は「１」で識別される光ディスクドライブ２２０に格納されている。
【０１７２】
図８は，光ディスクドライブ管理テーブル１２００の構成例を示している。
【０１７３】
光ディスクドライブ管理テーブル１２００は，光ディスクドライブ２２０の状態を管理するためのテーブルである。
【０１７４】
光ディスクドライブ管理テーブル１２００は，光ディスクドライブ＃１２０１，ロード済み光ディスク＃１２０２，ロック状態１２０３，最終使用時刻１２０４から構成される。
【０１７５】
光ディスクドライブ＃１２０１は，光ディスクライブラリ２００内で光ディスクドライブ２２０を一意に識別するための識別子である。光ディスクドライブ＃１２０１で識別される光ディスクドライブ２２０を当該光ディスクドライブと呼ぶ。
【０１７６】
ロード済み光ディスク＃１２０２は，当該光ディスクドライブがロード済みである光ディスク２４０の識別子を示す情報である。光ディスクドライブ２２０に光ディスク２４０がロードされていない場合，無効値の「ＮＵＬＬ」が記録される。
【０１７７】
ロック状態１２０３は，当該光ディスクドライブが重複排除サーバ１００内のプログラムのスレッドにより占有（ロック）されているかを示す情報である。なお，重複排除サーバ１００内のプログラムはマルチスレッドで動作することができるため，プログラムのスレッドは複数存在しうる。ロック状態１２０３の値「Ｌｏｃｋｅｄ」はロックされていることを示し，また，値「Ｕｎｌｏｃｋｅｄ」はアンロックされている（ロックされていない）ことを示す。当該光ディスクドライブ２２０がロックされている場合，ロックしたプログラムのスレッド以外のスレッドは当該光ディスクドライブ２２０を使用（読み書き，ロード，アンロード）することができない。
【０１７８】
最終使用時刻１２０４は，重複排除サーバ１００内のプログラムが光ディスクドライブ＃１２０１で識別される光ディスクドライブ２２０を最後に使用（読み書き，ロード，アンロード）した時刻を示す情報である。
【０１７９】
図８の例では，「１」で識別される光ディスクドライブ２２０には，「５」で識別される光ディスク２４０がロード済みであり，重複排除サーバ１００内のプログラムのスレッドにより占有（ロック）されていることを示している。また，「２」で識別される光ディスクドライブ２２０には，「１０」で識別される光ディスク２４０がロード済みであり，重複排除サーバ１００内のプログラムのスレッドにより占有（ロック）されていないことを示している。さらにまた，「３」で識別される光ディスクドライブ２２０には光ディスク２４０がロードされておらず，重複排除サーバ１００内のプログラムのスレッドにより占有（ロック）されていないことを示している。
【０１８０】
ここで，重複排除サーバ１００内のプログラムのスレッドによる光ディスクドライブ２２０の使い方のポリシーの例について述べる。
【０１８１】
まず，光ディスクドライブ２２０のロック／アンロックおよびマウント／アンマウントのポリシーについて述べる。重複排除サーバ１００内のプログラムのスレッドが，ある光ディスクドライブ２２０をロックし，光ディスク２４０を当該光ディスクドライブ２２０にロードし，ロードした光ディスク２４０に対して読み書きを行った後，当該光ディスクドライブ２２０をアンロックするが，当該光ディスクドライブ２２０からロード済みの光ディスク２４０をアンロードしないような，光ディスク２４０を積極的にアンロードしないポリシーを採用することができる。このようなポリシーを採用する場合，前記スレッドが前記光ディスク２４０をアンロックした後，短い時間経過後，再び前記光ディスク２４０を使用する場合，すでに前記光ディスクはロード済みであるため，再度前記光ディスクをロードするオーバーヘッドを削減することができる。
【０１８２】
次に，使用する光ディスクドライブ２２０の選択のポリシーについて述べる。使用する光ディスクドライブ２２０の選択のポリシーとしては，例えば，ロック状態１２０３が「Ｕｎｌｏｃｋ」である光ディスクドライブ２２０のうち，最終更新時刻１２０４が最も古い光ディスクドライブ２２０を選択するというポリシーが挙げられる。このようなポリシーを使用することにより，再度利用される可能性の低い光ディスクドライブ２２０を選択することができる。
【０１８３】
図９は，コンテンツ管理テーブル１３００の構成例を示している。
【０１８４】
コンテンツ管理テーブル１３００は，重複排除サーバ１００内でコンテンツ２を管理するための情報である。
【０１８５】
コンテンツ管理テーブル１３００は，コンテンツ＃１３０１，構成チャンクリスト１３０２，アクセス必要光ディスク枚数１３０３の他，図示しないサイズから構成される。
【０１８６】
コンテンツ＃１３０１は，重複排除サーバ１００内でコンテンツを一意に識別するための識別子である。コンテンツ＃１３０１で識別されるコンテンツを当該コンテンツと呼ぶ。
【０１８７】
構成チャンクリスト１３０２は，当該コンテンツを構成するチャンクのリストを示す情報である。図９の例では，例えば，識別子「１」で識別されるコンテンツは，（後述する）第一のチャンク管理テーブル１４００内の識別子「１」および「２」で識別されるチャンクから構成されることを示している。また，識別子「２」で識別されるコンテンツは，（後述する）第一のチャンク管理テーブル１４００内の識別子「１」で識別されるチャンク，および，（後述する）第二のチャンク管理テーブル１５００内の識別子「２」で識別されるチャンクから構成されることを示している。
【０１８８】
アクセス必要光ディスク枚数１３０３は，当該コンテンツを読み出す際に必要となる光ディスクの枚数を示す情報である。例えば，コンテンツを構成するチャンクが全て１枚の光ディスク２４０に格納されている場合，アクセス必要光ディスク枚数１３０３は１枚となる。また，例えば，コンテンツを構成するチャンクが全て，第一の記憶領域２０，もしくは，書き込みバッファ領域４０に格納されていれば，アクセス必要光ディスク枚数１３０３は０枚となる。
【０１８９】
なお，チャンクファミリーを分割し，当該チャンクファミリーに含まれるチャンクを複数の光ディスク２４０に格納する場合，当該チャンクファミリーに含まれるコンテンツ２のアクセス必要光ディスク枚数１３０３の合計がなるべく小さくなるような，チャンクファミリーの分割を行う。
【０１９０】
コンテンツ管理テーブル１３００のサイズは，当該コンテンツのサイズを示す情報である。
【０１９１】
図１０は，第一のチャンク管理テーブル１４００の構成例を示している。
【０１９２】
第一のチャンク管理テーブル１４００は，第一の記憶領域２０に格納されたチャンクを管理するための情報である。第一の記憶領域２０にチャンクが格納された際には，同テーブルに新規エントリが追加され，また，第一の記憶領域２０からチャンクが削除された際には，同テーブルから，削除されたチャンクに対応するエントリが削除される。
【０１９３】
第一のチャンク管理テーブル１４００の各エントリに高速にアクセスするためにインデックスを用いることができる。インデックスのデータ構造としては，例えば，キーと値の組（エントリと呼ぶ）を複数個格納し、キーに対応する値をすばやく参照するための公知のデータ構造であるハッシュテーブルを用いることができる。その場合，ハッシュテーブルのキーは後述するハッシュ値１４０２である。インデックスとしてハッシュテーブルを用いる場合，第一のチャンク管理テーブル１４００には，後述するハッシュ値１４０２を格納しない。
【０１９４】
第一のチャンク管理テーブル１４００は，チャンク＃１４０１，ハッシュ値１４０２，格納位置情報１４０３の他，図示しないサイズから構成される。
【０１９５】
チャンク＃１４０１は，第一の記憶領域２０内でチャンクを一意に識別するための識別子である。チャンク＃１４０１で識別される第一の記憶領域２０内のチャンクを当該チャンクと呼ぶ。
【０１９６】
ハッシュ値１４０２は，当該チャンクのデータに対するハッシュ値である。ハッシュ値の算出には，前述のように，ＭＤ５やＳＨＡ−１などの公知のハッシュ関数を用いることができる。
【０１９７】
格納位置情報１４０３は，当該チャンクの格納位置を示す情報である。
【０１９８】
第一のチャンク管理テーブル１４００のサイズは，当該チャンクのサイズを示す情報である。
【０１９９】
図１０の例では，識別子「１」で指定されるチャンクのハッシュ値は「ハッシュ値１」（例えば，１２８ビットや１６０ビットのビット列）であり，格納位置は第一の記憶領域２０内の，ファイルパス「／ｐｒｉｍａｒｙ／ｃｈｕｎｋ１」で指定される位置である。
【０２００】
図１１は，第二のチャンク管理テーブル１５００の構成例を示している。
【０２０１】
第二のチャンク管理テーブル１５００は，第二の記憶領域３０に格納されたチャンクを管理するための情報である。第二の記憶領域３０にチャンクが格納された際には，同テーブルに新規エントリが追加され，また，第二の記憶領域３０からチャンクが削除された際には，同テーブルから，削除されたチャンクに対応するエントリが削除される。
【０２０２】
第二のチャンク管理テーブル１５００の各エントリに高速にアクセスするためにインデックスを用いることができる。インデックスのデータ構造としては，前述のハッシュテーブルを用いることができる。その場合，ハッシュテーブルのキーは後述するハッシュ値１５０２である。
【０２０３】
第二のチャンク管理テーブル１５００は，チャンク＃１５０１，ハッシュ値１５０２，格納位置情報１５０３，重複頻度情報１５０４の他，図示しないサイズから構成される。
【０２０４】
チャンク＃１５０１は，第二の記憶領域３０内で重複排除済みチャンク４を一意に識別するための識別子である。チャンク＃１５０１で識別される第二の記憶領域３０内のチャンクを当該チャンクと呼ぶ。
【０２０５】
ハッシュ値１５０２は，当該チャンクのデータに対するハッシュ値である。ハッシュ値の算出には，前述のように，ＭＤ５やＳＨＡ−１などの公知のハッシュ関数を用いることができる。
【０２０６】
格納位置情報１５０３は，当該チャンクの格納位置を示す情報である。
【０２０７】
重複頻度情報１５０４は，当該チャンクに関しての，所定期間内に重複が検出された頻度（回数）を示す情報である。
【０２０８】
第二のチャンク管理テーブル１５００のサイズは，当該チャンクのサイズを示す情報である。
【０２０９】
図１１の例では，識別子「１」で指定される重複排除済みチャンク４のハッシュ値は「ハッシュ値３」（例えば，１２８ビットや１６０ビットのビット列）であり，格納位置は書き込みバッファ領域４０内の，ファイルパス「／ｓｅｃｏｎｄａｒｙ／ｃｈｕｎｋ１」で指定される位置である。また，識別子「２」で指定される重複排除済みチャンク４のハッシュ値は「ハッシュ値４」（例えば，１２８ビットや１６０ビットのビット列）であり，格納位置は，識別子「１」で指定される光ディスク２４０内の，ファイルパス「／ｓｅｃｏｎｄａｒｙ／ｃｈｕｎｋ２」で指定される位置である。
【０２１０】
図１２は，チャンクファミリー管理テーブル１６００の構成例を示している。
【０２１１】
チャンクファミリー管理テーブル１６００は，前述したチャンクファミリー５の構成を管理するための情報である。
【０２１２】
チャンクファミリー管理テーブル１６００は，チャンクファミリー＃１６０１，所属チャンクリスト１６０２，格納光ディスクリスト１６０３，合計サイズ１６０４から構成される。
【０２１３】
チャンクファミリー＃１６０１は，重複排除サーバ１００内でチャンクファミリー５を一意に識別するための識別子である。チャンクファミリー＃１６０１で指定されるチャンクファミリー５を当該チャンクファミリーと呼ぶ。
【０２１４】
所属チャンクリスト１６０２は，当該チャンクファミリーに所属する重複排除済みチャンク４のリストである。
【０２１５】
格納光ディスクリスト１６０３は，当該チャンクファミリーに所属する重複排除済みチャンク４を格納している光ディスク２４０のリストである。当該チャンクファミリーに所属する重複排除済みチャンク４群は，１枚の光ディスク２４０に格納される場合もあるし，複数の光ディスク２４０に格納される場合もある（チャンクファミリー５の合計サイズが大きい場合など）。
【０２１６】
合計サイズ１６０４は，当該チャンクファミリーに所属する重複排除済みチャンク４群の合計サイズである。
【０２１７】
図１２の例では，識別子「１」で指定されるチャンクファミリー５は，第二のチャンク管理テーブル１５００内の識別子「１」で指定される重複排除済みチャンク４と第二のチャンク管理テーブル１５００内の識別子「２」で指定される重複排除済みチャンク４を構成要素として含み，それら重複排除済みチャンク４は識別子「１」で指定される光ディスク２４０に格納されていることを示している。
【０２１８】
図１３は，バイナリコンペア予定チャンク管理テーブル１７００の構成例を示している。
【０２１９】
バイナリコンペア予定チャンク管理テーブル１７００は，後述する第二のバイナリコンペアを適用する予定であるが，まだ第二のバイナリコンペアを適用していない，第一の記憶領域２０内のチャンクと第二の記憶領域３０（より正確には光ディスク２４０）内のチャンクの対を管理する情報である。第二のバイナリコンペアとは，あるチャンクと第二の記憶領域３０（より正確には光ディスク２４０）内のチャンクとのバイナリコンペアのことを指す。
【０２２０】
バイナリコンペア予定チャンク管理テーブル１７００は，ＩＤ１７０１，必要光ディスク＃１７０２，コンペア元チャンク１７０３，コンペア先チャンク１７０４から構成される。
【０２２１】
ＩＤ１７０１は，実行予定である第二のバイナリコンペアを一意に識別するための識別子である。ＩＤ１７０１で指定される第二のバイナリコンペアを当該第二のバイナリコンペアと呼ぶ。
【０２２２】
必要光ディスク＃１７０２は，当該第二のバイナリコンペアを行うために必要な光ディスク２４０を指定する識別子である。
【０２２３】
コンペア元チャンク１７０３は，当該第二のバイナリコンペアのコンペア元のチャンクである，第一のチャンク管理テーブル１４００で管理される第一の記憶領域２０内のチャンクを示す情報である。
【０２２４】
コンペア先チャンク１７０４は，当該第二のバイナリコンペアのコンペア先のチャンクである，第二のチャンク管理テーブル１５００で管理される第二の記憶領域３０内のチャンクを示す情報である。
【０２２５】
図１３の例では，コンペア元チャンクが第一のチャンク管理テーブル１４００内の識別子「１」で指定されるチャンクであり，コンペア先チャンクが第二のチャンク管理テーブル１５００内の識別子「１０」で指定されるチャンクであり，コンペア元チャンクとコンペア先チャンクに対して第二のバイナリコンペアを行う際に識別子「１」で指定される光ディスク２４０が必要であること（つまり，コンペア先チャンクが識別子「１」で指定される光ディスク２４０に格納されていること）を示している。
【０２２６】
図１４は，書き込み予定チャンク管理テーブル１８００の構成例を示している。
【０２２７】
書き込み予定チャンク管理テーブル１８００は，光ディスク２４０に書き込む予定であるが，まだ書き込みを行っていない，書き込みバッファ領域４０内のチャンクを管理するテーブルである。
【０２２８】
書き込み予定チャンク管理テーブル１８００は，ＩＤ１８０１，書き込み先光ディスク＃１８０２，書き込みチャンク１８０３から構成される。
【０２２９】
ＩＤ１８０１は，実行予定である書き込みを一意に識別するための識別子である。ＩＤ１８０１で指定される書き込みを当該書き込みと呼ぶ。
【０２３０】
書き込み先光ディスク＃１８０２は，当該書き込みの書き込み先の光ディスク２４０を指定する識別子である。
【０２３１】
書き込みチャンク１８０３は，当該書き込みの対象となる，第二のチャンク管理テーブル１５００で管理される書き込みバッファ領域４０内のチャンクを示す情報である。
【０２３２】
図１４の例では，識別子「１」で指定される書き込みは，第二のチャンク管理テーブル１５００内の識別子「１０」で指定されるチャンクが対象であり，その書き込み先の光ディスク２４０は識別子「１」で指定される光ディスク２４０であることを示している。
【０２３３】
図１５は，統計情報管理テーブル１９００の構成例を示している。
【０２３４】
統計情報管理テーブル１９００は，重複排除サーバ１００で管理している各種統計情報を管理するテーブルである。
【０２３５】
統計情報管理テーブル１９００は，統計情報種別１９０１，統計値１９０２から構成される。
【０２３６】
統計情報種別１９０１は統計情報の種別を示す情報である。統計情報の種別としては，「第一のチャンク管理テーブルの使用容量［ＭＢ］」，「第一のチャンク管理テーブルの空き容量［ＭＢ］」，「第二のチャンク管理テーブルの使用容量［ＭＢ］」，「 第二のチャンク管理テーブルの空き容量［ＭＢ］」，「重複排除サーバ管理下のコンテンツの合計サイズ［ＭＢ］」，「第一の記憶領域の使用容量［ＭＢ］」，「第一の記憶領域の空き容量［ＭＢ］」，「第二の記憶領域の使用容量［ＭＢ］」，「第二の記憶領域の空き容量［ＭＢ］」，「書き込みバッファ領域の使用容量［ＭＢ］」，「書き込みバッファ領域の空き容量［ＭＢ］」が存在する。以下では，これらの統計情報の意味と更新契機について述べる。
【０２３７】
「第一のチャンク管理テーブルの使用エントリ数」は第一のチャンク管理テーブル１４００が使用済みのエントリの合計数を示している。「第一のチャンク管理テーブルの空きエントリ数」は第一のチャンク管理テーブル１４００の空きエントリの合計数を示している。「第一のチャンク管理テーブルの使用エントリ数」，「第一のチャンク管理テーブルの空きエントリ数」の統計値１９０２は，第一のチャンク管理テーブル１４００にエントリを追加したり，第一のチャンク管理テーブル１４００からエントリを削除したりした際に更新される。
【０２３８】
「第二のチャンク管理テーブルの使用エントリ数」は第二のチャンク管理テーブル１５００が使用済みのエントリの合計数を示している。「第二のチャンク管理テーブルの空きエントリ数」は第二のチャンク管理テーブル１５００の空きエントリの合計数を示している。「第二のチャンク管理テーブルの使用エントリ数」，「第二のチャンク管理テーブルの空きエントリ数」の統計値１９０２は，第二のチャンク管理テーブル１５００にエントリを追加，あるいは，第二のチャンク管理テーブル１５００からエントリを削除した際に更新される。
【０２３９】
「重複排除サーバ管理下のコンテンツの合計サイズ［ＭＢ］」はコンテンツ管理テーブル１３００に含まれるコンテンツ２のサイズの合計を示している。「重複排除サーバ管理下のコンテンツの合計サイズ［ＭＢ］」の統計値１９０２は重複排除サーバ１００にコンテンツを格納，あるいは，重複排除サーバ１００からコンテンツを削除した際に更新される。
【０２４０】
「第一の記憶領域の使用容量［ＭＢ］」は第一のチャンク管理テーブル１４００に含まれるチャンクのサイズの合計を示している。「第一の記憶領域の空き容量［ＭＢ］」は第一の記憶領域２０の空き領域の容量を示している。「第一の記憶領域の使用容量［ＭＢ］」，「第一の記憶領域の空き容量［ＭＢ］」の統計値１９０２は，第一の記憶領域２０にチャンクを格納，あるいは，第一の記憶領域２０からチャンクを削除した際に更新される。
【０２４１】
「第二の記憶領域の使用容量［ＭＢ］」は第二のチャンク管理テーブル１５００に含まれるチャンクのサイズの合計を示している。「第二の記憶領域の空き容量［ＭＢ］」は第二の記憶領域３０内の空き領域の容量を示している。「第二の記憶領域の使用容量［ＭＢ］」，「第二の記憶領域の空き容量［ＭＢ］」の統計値１９０２は，第二の記憶領域３０にチャンクを格納，あるいは，第二の記憶領域３０からチャンクを削除した際に更新される。
【０２４２】
「書き込みバッファ領域の使用容量［ＭＢ］」は第二のチャンク管理テーブル１５００に含まれるチャンクのうち書き込みバッファ領域４０に格納されたチャンクのサイズの合計を示している。「書き込みバッファ領域の空き容量［ＭＢ］」は書き込みバッファ領域４０内の空き領域の容量を示している。「書き込みバッファ領域の使用容量［ＭＢ］」，「書き込みバッファ領域の空き容量［ＭＢ］」の統計値１９０２は，書き込みバッファ領域４０にチャンクを格納，あるいは，書き込みバッファ領域４０からチャンクを削除した際に更新される。
【０２４３】
以上が本実施形態における各種テーブルについての説明である。
【０２４４】
図１６は，管理サーバ６００のディスプレイ６１０の表示例を示している。
【０２４５】
管理者によるマウス／キーボード操作に応じて，管理サーバ６００はディスプレイ６１０に統計情報管理テーブル１９００に格納された各種統計情報（統計情報の種別および統計値）を表示する。
【０２４６】
次に，図１７〜図２５を参照しながら，本実施形態における情報処理システム１が実行する各種処理の流れについて説明する。以下の説明で主体が省略されている場合，当該主体は前述のＣＰＵ，コントローラ等である。Ｓはステップを表す。「Ｙ」，「Ｎ」はそれぞれ「Ｙｅｓ」，「Ｎｏ」を表す。
【０２４７】
図１７〜図１９はコンテンツ格納処理２０００の処理フローの一例を示している。
【０２４８】
コンテンツ格納処理２０００は，アーカイブサーバ４００が，マイグレーション処理４１１のプログラムにおいて重複排除サーバ１００にコンテンツを格納する際に，重複排除サーバ１００が実行する処理である。
【０２４９】
重複排除サーバ１００は，Ｓ２００１では，アーカイブサーバ４００から格納対象のコンテンツを受信する。以下では格納対象のコンテンツを当該コンテンツと呼ぶ。重複排除サーバ１００は，当該コンテンツを一時的にメモリ１１０に格納する。なお，重複排除サーバ１００は，当該コンテンツを一時的に，メモリ１１０ではなく，ＨＤＤ１２０，あるいは，ＨＤＤ３２０に格納してもよい。
【０２５０】
重複排除サーバ１００は，Ｓ２００２では，コンテンツ管理テーブル１３００内に新規エントリを追加する。追加した新規エントリを当該新規エントリと呼ぶ。当該新規エントリのコンテンツ＃１３０１には登録済みエントリの識別子と重複しない識別子を登録する。当該新規エントリの構成チャンクリスト１３０２には空のリストを登録する。当該新規エントリのアクセス必要光ディスク枚数１３０３には無効値の「ＮＵＬＬ」を登録する。
【０２５１】
重複排除サーバ１００は，Ｓ２００３では，Ｓ２００２にて登録したコンテンツの識別子をアーカイブサーバ４００に送信する。アーカイブサーバ４００は，送信された識別子を受信し，当該コンテンツに対応する，ファイル管理テーブル１０００のエントリの重複排除サーバ内コンテンツ識別子１００３に受信した識別子を登録する。
【０２５２】
重複排除サーバ１００は，Ｓ２００４では，当該コンテンツを１または複数のチャンクに分割する。チャンクのサイズとしては予め指定された固定長のサイズを用いることができるし，当該コンテンツの内容によって個々のチャンクのサイズを調整する可変長のサイズを用いることもできる。
【０２５３】
重複排除サーバ１００は，分割により得られた１または複数のチャンクに対して，Ｓ２００５〜Ｓ２０１２の処理を実行する。
【０２５４】
重複排除サーバ１００は，Ｓ２００５では，未処理のチャンクを先頭から順番にひとつ選択する。以下のコンテンツ格納処理２０００の説明においては，選択されたチャンクを当該チャンクと呼ぶ。
【０２５５】
重複排除サーバ１００は，Ｓ２００６では，当該チャンクのハッシュ値を算出する。
【０２５６】
重複排除サーバ１００は，Ｓ２００７では，算出したハッシュ値が第一のチャンク管理テーブル１４００に登録済みであるかを判定する。判定結果が「Ｎ」であれば，図１８の「Ｂ」に進む。この判定結果は，当該チャンクと完全に一致するチャンクが第一の記憶領域２０内には存在しないことを意味している。判定結果が「Ｙ」であれば，Ｓ２００８に進む。この判定結果は，当該チャンクと完全に一致するチャンクが第一の記憶領域２０内に存在する可能性があることを示している。
【０２５７】
重複排除サーバ１００は，Ｓ２００８では，当該チャンクと，Ｓ２００７で登録済みであると判定したハッシュ値に対応する，第一の記憶領域２０内のチャンクとをバイナリコンペアする処理である第一のバイナリコンペアを実行する。
【０２５８】
重複排除サーバ１００は，Ｓ２００９では，第一のバイナリコンペアの結果が一致であるかどうかを判定する。判定結果が「Ｎ」であれば，図１８の「Ｂ」に進む。この判定結果は，当該チャンクと完全に一致するチャンクが第一の記憶領域２０内には存在しないことを意味している。判定結果が「Ｙ」であれば，Ｓ２０１０に進む。この判定結果は，当該チャンクと完全に一致するチャンクが第一の記憶領域２０内は存在したことを意味している。
【０２５９】
重複排除サーバ１００は，Ｓ２０１０で，当該チャンクを破棄する。
【０２６０】
重複排除サーバ１００は，Ｓ２０１１で，コンテンツ管理テーブル１３００を更新する。具体的には，重複排除サーバ１００は，当該コンテンツに対応するコンテンツ管理テーブル１３００の構成チャンクリスト１３０２に，Ｓ２００７で登録済みであると判定したハッシュ値に対応する，第一の記憶領域２０内のチャンクの識別子を追加する。
【０２６１】
重複排除サーバ１００は，Ｓ２０１２で，未処理のチャンクがあるかを判定する。判定結果が「Ｎ」であれば，コンテンツ格納処理２０００を終了する。判定結果が「Ｙ」であれば，Ｓ２００５に戻る。
【０２６２】
重複排除サーバ１００は，Ｓ２０１３では，Ｓ２００６で算出したハッシュ値が第二のチャンク管理テーブル１５００に登録済みであるかを判定する。判定結果が「Ｎ」であれば，Ｓ２０２０に進む。この判定結果は，当該チャンクと完全に一致するチャンクが第二の記憶領域３０内には存在しないことを意味している。判定結果が「Ｙ」であれば，Ｓ２０１４に進む。この判定結果は，当該チャンクと完全に一致するチャンクが第二の記憶領域３０内に存在する可能性があることを示している。
【０２６３】
重複排除サーバ１００は，Ｓ２０１４では，後述する第二のバイナリコンペアに必要なチャンクが即時アクセス可能かを判定する。具体的には，（１）Ｓ２０１３で登録済みであると判定したハッシュ値に対応する，第二のチャンク管理テーブル１５００のエントリの格納位置情報１５０３が書き込みバッファ領域４０内のチャンクを指し示している場合，あるいは，（２）同エントリの格納位置情報１５０３が光ディスク２４０内のチャンクを指し示しており，かつ，同光ディスク２４０に対応する，光ディスク管理テーブルの格納位置１１０２が光ディスクドライブ２２０を指し示している場合に，即時アクセス可能である（「Ｙ」）と判定する。それ以外の場合は，同光ディスク２４０がスロット２３０に格納されていることを意味するため，即時アクセス可能でない（「Ｎ」）と判定する。判定結果が「Ｙ」の場合は，Ｓ２０１７に進む。判定結果が「Ｎ」の場合はＳ２０１５に進む。
【０２６４】
重複排除サーバ１００は，Ｓ２０１５では，当該チャンクを第一の記憶領域２０に格納する。
【０２６５】
重複排除サーバ１００は，Ｓ２０１６では，当該チャンクを第一のチャンク管理テーブル１４００に登録し，バイナリコンペア予定チャンク管理テーブル１７００とコンテンツ管理テーブル１３００を更新する。
【０２６６】
具体的には，重複排除サーバ１００は，第一のチャンク管理テーブル１４００に新規エントリを追加し，新規エントリのチャンク＃１４０１，ハッシュ値１４０２，格納位置情報１４０３にはそれぞれ，（１）他のエントリの識別子と重複しない識別子，（２）Ｓ２００６で算出したハッシュ値，（３）Ｓ２０１５で当該チャンクを格納した格納位置に対する識別子を設定する。
【０２６７】
さらに，重複排除サーバ１００は，バイナリコンペア予定チャンク管理テーブル１７００に新規エントリを追加し，（１）新規エントリのＩＤ１７０１に他のエントリと重複しない識別子を設定し，（２）新規エントリの必要光ディスク１７０２に，Ｓ２０１３で登録済みであると判定したハッシュ値に対応する，第二の記憶領域３０内のチャンクが格納されている光ディスク２４０の識別子を設定し，（３）コンペア元チャンク１７０３に，Ｓ２０１５で第一の記憶領域２０に格納したチャンクを重複排除サーバ１００内で一意に識別する識別子を設定し，（４）コンペア先チャンク１７０４に，Ｓ２０１３で登録済みであると判定したハッシュ値に対応する，第二の記憶領域３０内のチャンクを重複排除サーバ１００内で一意に識別する識別子を設定する。
【０２６８】
さらにまた，重複排除サーバ１００は，当該コンテンツに対応するコンテンツ管理テーブル１３００の構成チャンクリスト１３０２に，Ｓ２０１５で第一の記憶領域２０に格納したチャンクを重複排除サーバ１００内で一意に識別する識別子を追加する。その後，重複排除サーバ１００は，図１７の「Ａ」に進む。
【０２６９】
重複排除サーバ１００は，Ｓ２０１７では，当該チャンクと，Ｓ２０１３で登録済みであると判定したハッシュ値に対応する，第二の記憶領域３０内のチャンクとをバイナリコンペアする処理である第二のバイナリコンペアを実行する。
【０２７０】
重複排除サーバ１００は，Ｓ２０１８では，Ｓ２０１７における第二のバイナリコンペアの結果が一致であるかを判定する。判定結果が「Ｙ」（一致である）の場合はＳ２０１９に進む。判定結果が「Ｎ」（一致でない）の場合はＳ２０２０に進む。
【０２７１】
重複排除サーバ１００は，Ｓ２０１９では，図１９の「Ｃ」の処理を実行する。
【０２７２】
重複排除サーバ１００は，Ｓ２０２０では，当該チャンクを書き込みバッファ領域４０に格納する。
【０２７３】
重複排除サーバ１００は，Ｓ２０２１では，第二のチャンク管理テーブル１５００を更新する。具体的には，第二のチャンク管理テーブル１５００に新規エントリを追加し，新規エントリのチャンク＃１５０１，ハッシュ値１５０２，格納位置情報１５０３，重複頻度情報１５０４にそれぞれ，（１）第二のチャンク管理テーブル１５００内の他のエントリと重複しない識別子，（２）Ｓ２００６で算出したハッシュ値，（３）Ｓ２０２０で当該チャンクを格納した書き込みバッファ領域４０内の位置を一意に示す識別子，（４）初期値の「０」，を設定する。
【０２７４】
なお，以下のコンテンツ格納処理２０００のステップにおいて，Ｓ２０２１で追加した新規エントリに対応するチャンクを新規チャンクと呼ぶ。
【０２７５】
重複排除サーバ１００は，Ｓ２０２２では，コンテンツ管理テーブル１３００を更新する。具体的には，重複排除サーバ１００は，当該コンテンツに対応するコンテンツ管理テーブル１３００の構成チャンクリスト１３０２に，Ｓ２０１３で登録済みであると判定したハッシュ値に対応する，第二の記憶領域３０内のチャンクの識別子を追加する。
【０２７６】
重複排除サーバ１００は，Ｓ２０２３では，チャンクファミリー管理テーブル１６００を更新する。具体的には，まず，チャンクファミリー管理テーブル１６００，コンテンツ管理テーブル１３００，第二のチャンク管理テーブル１５００を参照して，新規チャンクが所属するチャンクファミリー５を特定する。次に，特定したチャンクファミリー５がチャンクファミリー管理テーブル１６００に登録されていなければ，チャンクファミリー管理テーブル１６００に新規エントリを追加し，（１）新規エントリのチャンクファミリー＃１６０１に特定したチャンクファミリー５を一意に識別する識別子を設定し，（２）新規エントリの所属チャンクリスト１６０２に，前記新規チャンクを重複排除サーバ１００内で一意に識別する識別子を追加し，（３）新規エントリの格納光ディスクリスト１６０３に，光ディスク管理テーブル１１００の空き領域サイズ１１０３が予め設定された閾値（例えば，５０［ＭＢ］）以上である光ディスク２４０のうち，光ディスク＃１１０１が最も小さい光ディスク２４０の光ディスク＃１１０１を設定し，（４）新規エントリの合計サイズ１６０４に前記新規チャンクのサイズを設定する。特定したチャンクファミリー５がチャンクファミリー管理テーブル１６００に登録されていれば，当該チャンクファミリー５に対応するエントリの所属チャンクリスト１６０２に，前記新規チャンクを重複排除サーバ１００内で一意に識別する識別子を追加し，合計サイズ１６０４に前記新規チャンクのサイズを足し込む。また，格納光ディスクリスト１６０３には，所属チャンクリスト１６０２に含まれるチャンクが格納された光ディスク２４０のリスト（第一のリストと呼ぶ），もしくは，第一のリストに含まれる全ての光ディスク２４０の空き領域サイズが予め設定された閾値（例えば，１００［ＭＢ］）以下であれば，第一のリストに後述する追加光ディスクの識別子を加えたリスト（第二のリスト）を設定する。追加光ディスクとしては，光ディスク管理テーブル１１００の空き領域サイズ１１０３が予め設定された閾値（例えば，５０［ＭＢ］）以上である光ディスク２４０のうち，光ディスク＃１１０１が最も小さい光ディスク２４０を用いることができる。
【０２７７】
重複排除サーバ１００は，Ｓ２０２４では，書き込み予定チャンク管理テーブル１８００を更新する。具体的には，書き込み予定チャンク管理テーブル１８００に新規エントリを追加し，新規エントリのＩＤ１８０１，書き込み先光ディスク＃１８０２，書き込みチャンク１８０３にそれぞれ，（１）書き込み予定チャンク管理テーブル１８００内で重複しない識別子，（２）前記新規チャンクを重複排除サーバ１００内で一意に識別する識別子，（３）前記新規チャンクが所属するチャンクファミリー５に対応する，チャンクファミリー管理テーブル１６の格納光ディスクリスト１６０３に含まれる光ディスク２４０のうち，空き領域サイズ１１０３が最も小さい光ディスク２４０の光ディスク＃１１０１，を設定する。その後，重複排除サーバ１００は図１７の「Ａ」に進む。
【０２７８】
重複排除サーバ１００は，Ｓ２０２５では，第二のチャンク管理テーブル１５００の重複頻度情報１５０４を更新する。具体的には，Ｓ２０１３で登録済みであると判定したハッシュ値に対応する，第二のチャンク管理テーブル１５００のエントリの重複頻度情報１５０４を１だけインクリメントする。
【０２７９】
重複排除サーバ１００は，Ｓ２０２６では，第二のチャンク管理テーブル１５００に登録されたチャンクが頻出チャンクであるかを判定する。具体的には，Ｓ２０１３で登録済みであると判定したハッシュ値に対応する，第二のチャンク管理テーブル１５００のエントリの重複頻度情報１５０４が，予め管理者により設定された閾値（例えば「１０」回）より大きければ，頻出チャンクである（「Ｙ」）と判定し，そうでなければ，頻出チャンクでない（「Ｎ」）と判定する。判定結果が「Ｙ」であれば，Ｓ２０２９に進み，判定結果が「Ｎ」であれば，Ｓ２０２７に進む。
【０２８０】
重複排除サーバ１００は，Ｓ２０２７では，当該チャンクを破棄する。
【０２８１】
重複排除サーバ１００は，Ｓ２０２８では，コンテンツ管理テーブル１３００を更新する。具体的には，重複排除サーバ１００は，当該コンテンツに対応するコンテンツ管理テーブル１３００の構成チャンクリスト１３０２に，Ｓ２０１３で登録済みであると判定したハッシュ値に対応する，第二の記憶領域３０内のチャンクの識別子を追加し，図１９の「Ｃ」の処理を終了する。
【０２８２】
重複排除サーバ１００は，Ｓ２０２９，Ｓ２０３０ではそれぞれ，Ｓ２０１５，Ｓ２０１６と同様の処理を行う。その後，図１９の「Ｃ」の処理を終了する。
【０２８３】
Ｓ２０２６〜Ｓ２０２９において，頻出チャンクを第一の記憶領域２０に格納することにより，以後，頻出チャンクと完全に一致するチャンク（一致チャンクと呼ぶ）は第一の重複排除で破棄されるため，一致チャンクに対しては第二の重複排除を行う必要がなくなり，本実施形態の重複排除の処理のオーバーヘッドを低減することができる。
【０２８４】
図２０はコンテンツ読み出し処理２１００の処理フローの一例を示している。
【０２８５】
コンテンツ読み出し処理２１００では，重複排除サーバ１００は，読み出し要求のあったコンテンツを構成するチャンクを，第一の記憶領域２０，および，第二の記憶領域３０から読み出し，コンテンツを再構築して読み出し要求元へ送信する。また，読み出し要求のあったコンテンツを構成するチャンクを第二の記憶領域３０の光ディスク２４０のから読み出した場合，当該光ディスク２４０に関連する，（１）バイナリコンペア予定チャンク管理テーブル１７００のエントリにより指定される第二のバイナリコンペア，および，（２）書き込み予定チャンク管理テーブル１８のエントリにより指定される書き込み処理，をそれぞれ実行する。
【０２８６】
重複排除サーバ１００は，Ｓ２１０１では，アーカイブサーバ４００からコンテンツの読み出し要求を受信する。読み出し要求には，読み出し対象のコンテンツのコンテンツ＃１３０１が含まれる。以下では，読み出し対象のコンテンツを当該コンテンツと呼ぶ。
【０２８７】
重複排除サーバ１００は，Ｓ２１０２では，当該コンテンツを送信する際に用いる送信バッファを，重複排除サーバ１００のメモリ１１０内に確保する。なお，送信バッファは，ＨＤＤ１２０あるいはＨＤＤ３２０内に確保してもよい。送信バッファのサイズとしては読み出し対象のコンテンツのサイズを用いる。
【０２８８】
重複排除サーバ１００は，Ｓ２１０３では，第一の記憶領域２０もしくは書き込みバッファ４０に格納された必要チャンクを読み出し，確保した送信バッファに書き込む。具体的には，まず，当該コンテンツに対応する，コンテンツ管理テーブル１３００の構成チャンクリスト１３０２を参照して，当該コンテンツの再構築に必要なチャンク（必要チャンクと呼ぶ）を特定する。次に，第一のチャンク管理テーブル１４００を参照して，特定した必要チャンクのうち，第一の記憶領域２０に格納されたチャンクを特定し，特定したチャンクを第一の記憶領域２０から読み出し，読み出したチャンクを前記送信バッファの適切な位置に書き込む。次に，第二のチャンク管理テーブル１５００を参照して，特定した必要チャンクのうち，書き込みバッファ領域４０に格納されたチャンクを特定し，特定したチャンクを書き込みバッファ領域４０から読み出し，読み出したチャンクを前記送信バッファの適切な位置に書き込む。
【０２８９】
重複排除サーバ１００は，Ｓ２１０４では，当該コンテンツを再構築するために必要な光ディスク（必要光ディスクと呼ぶ）を特定する。具体的には，第二のチャンク管理テーブル１５００を参照して，前記必要チャンクが格納された１または複数の光ディスク２４０を特定する。
【０２９０】
次に，重複排除サーバ１００は，必要光ディスクに対して，Ｓ２１０５〜Ｓ２１１１の処理を実行する。
【０２９１】
重複排除サーバ１００は，Ｓ２１０５では，必要光ディスクのうち，未処理の光ディスクをひとつ選択する。選択した光ディスクを当該光ディスクと呼ぶ。
【０２９２】
重複排除サーバ１００は，Ｓ２１０６では，当該光ディスクがロード済みかを判定する。具体的には，当該光ディスクに対応する，光ディスク管理テーブル１１００の格納位置１１０２を参照し，格納位置１１０２が光ディスクドライブ２２０であれば，ロード済みである（「Ｙ」）と判定し，格納位置１１０２がスロット２３０であれば，ロード済みでない（「Ｎ」）と判定する。判定結果が「Ｙ」であれば，Ｓ２１０８に進み，「Ｎ」であれば，Ｓ２１０７に進む。
【０２９３】
重複排除サーバ１００は，Ｓ２１０７では，当該光ディスクをスロット２３０から光ディスクドライブ２２０にロードする。
【０２９４】
重複排除サーバ１００は，Ｓ２１０８では，必要チャンクのうち，当該光ディスクに含まれるチャンクを読み出し，前記送信バッファに書き込む。具体的には，第二のチャンク管理テーブル１５００の格納位置情報１５０３を参照し，前記必要チャンクのうち，当該光ディスクに含まれるチャンクを特定し，特定したチャンクを当該光ディスクから読み出し，読み出したチャンクを前記送信バッファの適切な位置に書き込む。
【０２９５】
重複排除サーバ１００は，Ｓ２１０９では，図２１，図２２のバイナリコンペア処理２２００を実行する。
【０２９６】
重複排除サーバ１００は，Ｓ２１１０では，図２３の書き込み処理２３００を実行する。
【０２９７】
重複排除サーバ１００は，Ｓ２１１１では，未処理の光ディスクがあるかを判定する。未処理の光ディスクがあれば（「Ｙ」），Ｓ２１０５に進み，未処理の光ディスクがなければ（「Ｎ」），Ｓ２１１２に進む。
【０２９８】
重複排除サーバ１００は，Ｓ２１１２では，前記送信バッファ内の当該コンテンツのデータを，コンテンツの読み出し要求元に送信し，コンテンツ読み出し処理２１００を終了する。
【０２９９】
図２１及び図２２はバイナリコンペア処理２２００の処理フローの一例を示している。
【０３００】
バイナリコンペア処理２２００では，バイナリコンペア予定チャンク管理テーブル１７００で指定される第二のバイナリコンペアのうち，当該光ディスクに関連する第二のバイナリコンペアを実行する。バイナリコンペア処理２２００により，コンテンツ格納処理２０００のＳ２０１５〜Ｓ２０１６で実行を先送りされた第二のバイナリコンペアが実行される。
【０３０１】
重複排除サーバ１００は，Ｓ２２０１では，バイナリコンペア予定チャンク管理テーブル１７００の必要光ディスク＃１７０２を参照し，必要光ディスク＃１７０２が当該光ディスクの識別子と一致する，バイナリコンペア予定チャンク管理テーブル１７００のエントリを特定する。
【０３０２】
重複排除サーバ１００は，Ｓ２２０１で特定したエントリに対して，Ｓ２２０２〜Ｓ２２１１の処理を実行する。
【０３０３】
重複排除サーバ１００は，Ｓ２２０２では，Ｓ２２０１で特定したエントリの中から未処理のエントリをひとつ選択する。
【０３０４】
以下のステップでは，Ｓ２２０２で選択したエントリのコンペア元チャンク１７０３，コンペア先チャンク１７０４で指定されるチャンクをそれぞれ，単にコンペア元チャンク，コンペア先チャンクと呼ぶ。
【０３０５】
重複排除サーバ１００は，Ｓ２２０３では，選択したエントリで指定された第二のバイナリコンペアを実行する。具体的には，コンペア元チャンクおよびコンペア先チャンクに対してバイナリコンペアを実行する。
【０３０６】
重複排除サーバ１００は，Ｓ２２０４では，Ｓ２２０３でのバイナリコンペアの結果が一致であるかどうか判定する。判定結果が一致である（「Ｙ」）場合，Ｓ２２０５に進み，判定結果が一致でない（「Ｎ」）場合，Ｓ２２０７に進む。
【０３０７】
重複排除サーバ１００は，Ｓ２２０５では，図２２の「Ｄ」の処理を実行する。
【０３０８】
重複排除サーバ１００は，Ｓ２２０６では，未処理のエントリがあるかどうかを判定する。未処理のエントリがある（「Ｙ」）ならば，Ｓ２２０２に進み，未処理のエントリがあに（「Ｎ」）ならば，バイナリコンペア処理２２００を終了する。
【０３０９】
重複排除サーバ１００は，Ｓ２２０７，Ｓ２２０８では，それぞれ，Ｓ２０２０，Ｓ２０２１と同様の処理を行う。ただし，Ｓ２０２０，Ｓ２０２１の「当該チャンク」を「コンペア元チャンク」に読み替える必要がある。
【０３１０】
重複排除サーバ１００は，Ｓ２２０９では，コンテンツ管理テーブル１３００を更新する。具体的には，重複排除サーバ１００は，コンテンツ管理テーブル１３００の構成チャンクリスト１３０２のエントリのうち，構成チャンクリスト１３０２内にコンペア元チャンクの識別子を含むエントリ内の，コンペア元チャンクの識別子を，Ｓ２２０７で書き込みバッファ領域４０に格納したチャンクに対する識別子に置き換える。Ｓ２２０９の処理は，コンペア元チャンクの格納位置を第一の記憶領域２０から書き込みバッファ領域４０に移動したことに伴う，コンテンツ管理テーブル１３００の更新を意味する。
【０３１１】
重複排除サーバ１００は，Ｓ２２１０，Ｓ２２１１では，それぞれ，Ｓ２０２３，Ｓ２０２４と同様の処理を行う。ただし，Ｓ２２１０，Ｓ２２１１における「新規チャンク」を，「Ｓ２２０７で書き込みバッファ領域４０に格納したチャンク」に読み替える必要がある。その後，重複排除サーバ１００は，Ｓ２２０５に進む。
【０３１２】
重複排除サーバ１００は，Ｓ２２１２では，第二のチャンク管理テーブル１５００の重複頻度情報１５０４を更新する。具体的には，Ｓ２２０７で書き込みバッファ領域４０に格納したチャンクに対応する，第二のチャンク管理テーブル１５重複頻度情報１５０４の値を１だけインクリメントする。
【０３１３】
重複排除サーバ１００は，Ｓ２２１３では，コンペア元チャンクが頻出チャンクであるかどうかを判定する。具体的には，Ｓ２２０７で書き込みバッファ領域４０に格納したチャンクに対応する，第二のチャンク管理テーブル１５重複頻度情報１５０４の値が，予め設定された閾値（例えば「１０」回）より大きければ，頻出チャンクである（「Ｙ」）と判定し，そうでなければ，頻出チャンクでない（「Ｎ」）と判定する。判定結果が「Ｙ」であれば，図２２の「Ｄ」の処理を終了し，判定結果が「Ｎ」であれば，Ｓ２２１４に進む。
【０３１４】
重複排除サーバ１００は，Ｓ２２１４では，コンペア元チャンクを第一の記憶領域２０から削除する。
【０３１５】
重複排除サーバ１００は，Ｓ２２１５では，コンペア元チャンクに対応する，第一のチャンク管理テーブル１４００のエントリを削除し，図２２の「Ｄ」の処理を終了する。
【０３１６】
Ｓ２２１２〜Ｓ２２１５において，頻出チャンクを第一の記憶領域２０から削除しないことにより，以後，頻出チャンクと完全に一致するチャンク（一致チャンクと呼ぶ）は第一の重複排除で破棄されるため，一致チャンクに対しては第二の重複排除を行う必要がなくなり，本実施形態の重複排除の処理のオーバーヘッドを低減することができる。
【０３１７】
図２３は書き込み処理２３００の処理フローの一例を示している。
【０３１８】
書き込み処理２３００では，コンテンツ格納処理２０００やバイナリコンペア処理２２００で実行を先送りされた，書き込みバッファ領域４０内のチャンクの光ディスク２４０への書き込みが実行される。
【０３１９】
重複排除サーバ１００は，Ｓ２３０１では，書き込み予定チャンク管理テーブル１８００内のエントリのうち，Ｓ２１０５で選択された光ディスク２４０に関連するエントリを特定する。
【０３２０】
重複排除サーバ１００は，Ｓ２３０２では，特定したエントリに対応する，光ディスクへの書き込みを行う。具体的には，特定したエントリの書き込みチャンク１８０３で指定される，書き込みバッファ領域４０内のチャンクを，Ｓ２１０５で選択された光ディスク２４０に書き込む。そして，書き込み予定チャンク管理テーブル１８００内のうち特定したエントリを削除し，また，書き込んだチャンクに対応する，第二のチャンク管理テーブル１５００のエントリを削除する。
【０３２１】
図２４は強制バイナリコンペア処理２４００の処理フローの一例を示している。
【０３２２】
強制バイナリコンペア処理２４００は，強制的にバイナリコンペア予定チャンク管理テーブル１７００のエントリで指定される第二のバイナリコンペアを実行し，第一の記憶領域２０に溜まったチャンクの量を削減する処理である。重複排除サーバ１００は，後述する，「第一の閾値［ＭＢ］＜第二の閾値［ＭＢ］」を満たすような二つの閾値を用いて，削減するチャンクの量を制御する。強制バイナリコンペア処理２４００は定期的（例えば，１日毎）に起動される。
【０３２３】
重複排除サーバ１００は，Ｓ２４０１では，統計情報管理テーブル１９００の「第一の記憶領域の使用容量［ＭＢ］」の統計値１９０２を参照し，「第一の記憶領域の使用容量［ＭＢ］」の統計値１９０２が，予め設定された第二の閾値［ＭＢ］を超えるかを判定する。超える場合（「Ｙ」）はＳ２４０２に進み，超えない場合（「Ｎ」）は，強制バイナリコンペア処理２４００を終了する。
【０３２４】
重複排除サーバ１００は，Ｓ２４０２では，強制バイナリコンペア処理２４００に必要な光ディスクを特定する。具体的には，バイナリコンペア予定チャンク管理テーブル１７００の必要光ディスク＃１７０２に含まれる全光ディスク２４０をリストアップする。リストアップした光ディスク２４０を対象光ディスクと呼ぶ。
【０３２５】
次に，重複排除サーバ１００は，対象光ディスクに対して，Ｓ２４０３〜Ｓ２４０６の処理を実行する。
【０３２６】
重複排除サーバ１００は，Ｓ２４０３では，対象光ディスクのうち未処理の光ディスク２４０をひとつ選択する。選択した光ディスク２４０を当該光ディスクと呼ぶ。
【０３２７】
重複排除サーバ１００は，Ｓ２４０４では，当該光ディスクに対して，すでに説明したバイナリコンペア処理２２００を実行する。
【０３２８】
重複排除サーバ１００は，Ｓ２４０５では，統計情報管理テーブル１９００の「第一の記憶領域の使用容量［ＭＢ］」の統計値１９０２を参照し，「第一の記憶領域の使用容量［ＭＢ］」の統計値１９０２が，予め設定された第一の閾値［ＭＢ］を下回るかを判定する。下回る場合（「Ｙ」）は，強制バイナリコンペア処理２４００を終了し，下回らない場合は，Ｓ２４０６に進む。
【０３２９】
重複排除サーバ１００は，Ｓ２４０６では，未処理の光ディスクがあるかを判定する。未処理の光ディスクがある（「Ｙ」）場合，Ｓ２４０３に進み，未処理の光ディスクがない（「Ｎ」）場合，強制バイナリコンペア処理２４００を終了する。
【０３３０】
図２５は強制書き込み処理２５００の処理フローの一例を示している。
【０３３１】
強制書き込み処理２５００は，強制的に書き込み予定チャンク管理テーブル１８００のエントリで指定される書き込みを実行し，書き込みバッファ領域４０に溜まったチャンクの量を削減する処理である。重複排除サーバ１００は，後述する第三の閾値［ＭＢ］を用いて，チャンクの量を削減する必要があるかを判定する。強制書き込み処理２５００は定期的（例えば，１日毎）に起動される。
【０３３２】
重複排除サーバ１００は，Ｓ２５０１では，統計情報管理テーブル１９００の「書き込みバッファ領域の使用容量［ＭＢ］」の統計値１９０２を参照し，「書き込みバッファ領域の使用容量［ＭＢ］」の統計値１９０２が，予め設定された第三の閾値［ＭＢ］を超えるかを判定する。超える場合（「Ｙ」）は，Ｓ２５０２に進み，超えない場合（「Ｎ」）は，強制書き込み処理２５００を終了する。
【０３３３】
重複排除サーバ１００は，Ｓ２５０２では，書き込み予定チャンク管理テーブル１８００に含まれる書き込み先光ディスク＃１８０２をリストアップする。リストアップした書き込み先光ディスク＃１８０２に対応する光ディスク２４０を対象光ディスクと呼ぶ。
【０３３４】
次に，重複排除サーバ１００は，対象光ディスクに対して，Ｓ２５０３〜Ｓ２５０５の処理を実行する。
【０３３５】
重複排除サーバ１００は，Ｓ２５０３では，対象光ディスクのうち未処理の光ディスク２４０をひとつ選択する。選択した光ディスクを当該光ディスクと呼ぶ。
【０３３６】
重複排除サーバ１００は，Ｓ２５０４では，当該光ディスクに対して，図２３で説明した書き込み処理２３００を実行する。ただし，図２３の説明における「Ｓ２１０５で選択された光ディスク２４０」を「当該光ディスク」に読み替える必要がある。
【０３３７】
重複排除サーバ１００は，Ｓ２５０５では，対象光ディスクの中に未処理の光ディスクがあるかを判定する。未処理の光ディスクがある（「Ｙ」）場合は，Ｓ２５０３に進み，未処理の光ディスクがない（「Ｎ」）場合は，強制書き込み処理２５００を終了する。
【０３３８】
以下、第二の実施形態を説明する。  図２７，図２７は第二の実施形態の情報処理システムを説明する図である。
【０３３９】
図２７は，第二の実施形態における情報処理システム１を示している。第二の実施形態の情報処理システム１には，第一の実施形態と異なり，重複排除サーバ１００およびアーカイブサーバ４００が存在しない。第一の実施形態において重複排除サーバ１００およびアーカイブサーバ４００が実行していた処理は，第二の実施形態においては，すべてファイルストレージ３００により実行される。
【０３４０】
図２８は，第二の実施形態におけるメモリ３１１，ＨＤＤ３２０上の各種テーブル，および，メモリ３１１上の各種プログラム，を示している。第二の実施形態におけるメモリ３１１上には，第一の実施形態のアーカイブサーバ４００のメモリ４１０上に記憶されたテーブルおよび各種プログラム，および，第一の実施形態の重複排除サーバ１００のメモリ１１０上に記憶されたテーブルおよび各種プログラム，が記憶されている。
【０３４１】
なお，第二の実施形態におけるメモリ３１１，ＨＤＤ３２０上の各種テーブルは，光ディスク２４０，ＨＤＤ３２０，コントローラ２１０内のメモリ，あるいは，コントローラ２１０内のＨＤＤに記憶するように構成してもよい。 
【０３４２】
以下、第三の実施形態を説明する。図２８，図２９は第三の実施形態の情報処理システムを説明する図である。
【０３４３】
図２８は，第三の実施形態における情報処理システム１を示している。第三の実施形態の情報処理システム１は，第一の実施形態の情報処理システム１とほぼ同様であるが，第一の実施形態のアーカイブサーバ４００の代わりに，電子メールサーバ８００を有する。第三の実施形態における情報処理システム１は，電子メールサーバ８００により，クライアント装置５００に対して，電子メールメッセージを電子メールサーバ８００からクライアント装置５００に読み込んだり，電子メールメッセージを電子メールサーバ８００から送信したりする機能などを提供する。電子メールメッセージはファイルストレージ３００のプライマリ記憶領域１０に記憶されている。
【０３４４】
図２９は，電子メールサーバ８００のメモリ８１０上のテーブルや各種プログラムを示す図である。メモリ８１０上には，電子メール管理テーブル８１１といったテーブルや，マイグレーション処理８１２，電子メール読み出し要求処理８１３といったプログラムが記録されている。電子メール管理テーブル８１１は情報処理システム１内の電子メールメッセージを管理するテーブルである。マイグレーション処理８１２のプログラムは，プライマリ記憶領域１０に記憶された電子メールメッセージのうち，古いメッセージを第一の記憶領域２０あるいは第二の記憶領域３０に移動（マイグレーション）するプログラムである。マイグレーション処理８１２の動作はマイグレーション処理４１１とほぼ同様であるが，マイグレーション処理８１２のプログラムが取り扱うデータがファイルではなく電子メールメッセージである。電子メール読み出し要求処理８１３のプログラムは，クライアント装置５００からの電子メールメッセージ読み出し要求に応じて，クライアント装置５００に電子メールメッセージを送信するプログラムである。電子メール読み出し要求処理８１３の動作は読み出し要求処理４１２とほぼ同様であるが，電子メール読み出し要求処理８１３が取り扱うデータはファイルではなく電子メールメッセージである。
【０３４５】
以上、本発明の好適な実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲を実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【０３４６】
例えば，本発明の光ディスクライブラリはテープライブラリに置き換えることが可能である。また，図３１で説明した本発明の実施形態の重複排除処理における第一の重複排除である（Ｃ１）（Ｃ２）の処理を省略することも可能である（図１７のＳ２００７〜Ｓ２０１０の処理に代えて，図１８の「Ｂ」の処理を行うことを意味する）。ただし，この場合，第二の重複排除の対象となるチャンクの量が増大する可能性がある。一方で，この場合でも，第二のバイナリコンペアは先送りされて，コンテンツ読み出し処理内で実行されるため，光ディスクのロード回数を低減することは可能である。
【０３４７】
また，例えば，異なる二つのチャンクのハッシュ値が同一になる確率は非常に低く，現実的には無視できるくらいの確率であることを想定し，図３１の（Ｃ２）の第一のバイナリコンペア，および，（Ｄ２）の第二のバイナリコンペアを省略することも可能である。この場合，図３１の処理（Ｃ２）（Ｄ２）は実施しない。また，図３１の（Ｃ３）の処理では，（１）処理対象のチャンクのハッシュ値と一致するハッシュ値が見つかった場合，処理対象のチャンクを破棄して次のチャンクの処理に移り，（２）処理対象のチャンクのハッシュ値と一致するハッシュ値が見つからなかった場合，処理対象のチャンクを書き込みバッファに格納して次のチャンクの処理に移る。つまり，処理対象のチャンクの光ディスクへの書き込みの先送りのみが行われることを意味している。先送りされた，光ディスクへの書き込みは図３１の（Ｄ３）にて実行される。光ディスクへの書き込みを先送りすることにより，光ディスクの光ディスクドライブへのロード回数を低減することができる。
【符号の説明】
【０３４８】
１  情報処理システム
２０  第一の記憶領域
３０  第二の記憶領域
４０  書き込みバッファ領域
１００  重複排除サーバ
２００  光ディスクライブラリ
２４０  光ディスク
３００  ファイルストレージ
４００  アーカイブサーバ
５００  クライアント装置
６００  管理サーバ
７００  相互結合網
１４００  第一のチャンク管理テーブル
１５００  第二のチャンク管理テーブル
１７００  バイナリコンペア予定チャンク管理テーブル
１８００  書き込み予定チャンク管理テーブル
【図１】
2013222230.tif 000003
【図２】
2013222230.tif 000004
【図３】
2013222230.tif 000005
【図４】
2013222230.tif 000006
【図５】
2013222230.tif 000007
【図６】
2013222230.tif 000008
【図７】
2013222230.tif 000009
【図８】
2013222230.tif 000010
【図９】
2013222230.tif 000011
【図１０】
2013222230.tif 000012
【図１１】
2013222230.tif 000013
【図１２】
2013222230.tif 000014
【図１３】
2013222230.tif 000015
【図１４】
2013222230.tif 000016
【図１５】
2013222230.tif 000017
【図１６】
2013222230.tif 000018
【図１７】
2013222230.tif 000019
【図１８】
2013222230.tif 000020
【図１９】
2013222230.tif 000021
【図２０】
2013222230.tif 000022
【図２１】
2013222230.tif 000023
【図２２】
2013222230.tif 000024
【図２３】
2013222230.tif 000025
【図２４】
2013222230.tif 000026
【図２５】
2013222230.tif 000027
【図２６】
2013222230.tif 000028
【図２７】
2013222230.tif 000029
【図２８】
2013222230.tif 000030
【図２９】
2013222230.tif 000031
【図３０】
2013222230.tif 000032
【図３１】
2013222230.tif 000033