(57)【特許請求の範囲】
【請求項１】
クライアントが接続されている通信ネットワークに接続された通信インタフェース装置と、
前記格納データのそれぞれに付与された、比較の順序を決定する際に参照されるランクを示したランク情報を記憶したメモリと、
前記クライアントからライト／リードされるユーザデータが記憶される記憶装置と、
前記通信インタフェース装置、前記メモリ及び前記記憶装置に接続されており、前記クライアントからライト要求を受信したときに、前記記憶装置に記憶されているデータの削減効果の所定条件に基づいて第一の重複排除処理が実行されるか否かを判断し、必要に応じて前記第一の重複排除処理を実行し、且つ、任意のタイミングで、第二の重複排除処理を行うようになっているコントローラと
を有し、
前記第一の重複排除処理では、前記コントローラは、前記記憶装置に格納されているデータ群の一部のいずれかの格納データにライト対象データが重複するか否かの第一重複判定を行い、前記ライト対象データがいずれかの格納データに重複していれば、前記ライト対象データを前記記憶装置に格納せず、
前記第二の重複排除処理では、前記コントローラは、前記第一の重複排除処理において格納データに重複するか否か評価されていない対象格納データが、その他の格納データと重複するか否かの第二重複判定を行い、前記対象格納データが前記その他の格納データと重複していれば、前記対象格納データ又は前記対象格納データと重複する同一データを前記記憶装置から削除し、
前記コントローラは、前記第一の重複判定において前記ライト対象データと比較する格納データを、比較候補に含まれる格納データの中から、前記格納データに付与されているランクがより高い順に選択し、重複データと判定された時点で前記第一の重複判定を終了し、
前記コントローラは、重複する可能性が高いと見込まれる格納データに対してより高いランクを付与し、又は前記記憶装置の使用率の削減効果が大きいデータに対してより高いランクを付与する、
ストレージシステム。
【請求項２】
前記メモリには、前記格納データのうちの第一の重複排除処理において比較の対象となり得るデータである比較候補を示した第一の処理情報が記憶され、
前記記憶装置又は前記メモリには、前記格納データに関する情報を示した格納データ情報が記憶され、
前記コントローラは、
（Ａ）前記第一の重複排除処理において、以下（Ａ１）〜（Ａ４）の処理を行い、
（Ａ１）前記ライト要求で指定されたライト対象データと前記比較候補に含まれる格納データとを比較し、前記ライト対象データが、格納データのいずれかと重複する重複データであるか、格納データのいずれとも重複しない非重複データであるか、重複データとも非重複データとも判定できない重複不明データであるかの判定を前記第一の重複判定として行い、
（Ａ２）前記第一の重複判定において重複データと判定された場合は、前記ライト対象データを前記記憶装置に記憶せずに、前記ライト対象データと、前記ライト対象データと重複する同一データとを関連付ける処理を行い、
（Ａ３）前記第一の重複判定において非重複データと判定された場合は、前記ライト対象データを前記記憶装置に記憶するとともに、前記ライト対象データについて重複データか否かの評価が完了した旨を前記格納データ情報に記憶し、
（Ａ４）前記第一の重複判定において重複不明データと判定された場合は、前記ライト対象データを前記記憶装置に記憶するとともに、前記ライト対象データについて重複データか否かの評価が完了していない旨を前記格納データ情報に記憶する、
（Ｂ）前記第二の重複排除処理において、以下（Ｂ１）〜（Ｂ３）の処理を行う、
（Ｂ１）重複データか否かの評価が完了していない対象格納データとその他の格納データとを比較し、前記対象格納データが、その他の格納データのいずれかと重複する重複データであるか、その他の格納データのいずれとも重複しない非重複データであるかの判定を前記第二の重複判定として行い、
（Ｂ２）前記第二の重複判定において重複データと判定された場合は、前記対象格納データを前記記憶装置から削除するとともに、前記対象格納データと、前記対象格納データと重複する同一データとを関連付ける処理を行い、
（Ｂ３）前記第二の重複判定において非重複データと判定された場合は、前記対象格納データについて重複データか否かの評価が完了した旨を前記格納データ情報に記憶する、
請求項１記載のストレージシステム。
【請求項３】
前記メモリには、前記格納データのそれぞれに付与されたランクを世代ごとに示したランク情報が記憶され、
前記格納データに付与されるランクは、定期的に又は不定期的に更新され、更新されると、ランクの世代が次世代に移行し、
前記コントローラは、
（１）前記第一の重複排除処理において、
（１−１）前記ライト対象データが前記比較候補に含まれる格納データのいずれかと一致した場合、又は、前記ライト対象データに関する特徴データが前記比較候補に含まれる格納データのいずれかに関する特徴データと一致した場合に、前記ライト対象データを重複データと判定し、
（１−２）前記ライト対象データと比較する格納データを、前記比較候補に含まれる格納データの中から、前記格納データに付与されているランクがより高い順に選択し、重複データと判定された時点で前記第一の重複判定を終了し、
（１−３）重複不明データと判定された場合、前記ライト対象データについての前記第一の重複排除処理が、どの世代のどのランクの格納データまで比較が完了したかを示す比較済み情報を前記記憶装置又は前記メモリに記憶し、
（２）どの程度重複記憶が排除されているかを示す値である重複排除率を計算し、現在の重複排除率が所定の目標値以下である場合に、前記第二の重複排除処理を行い、
（３）前記第二の重複排除処理において、
（３−１）前記対象格納データが前記その他の格納データのいずれかと一致した場合、又は、前記対象格納データに関する特徴データが前記その他の格納データのいずれかに関する特徴データと一致した場合に、前記対象格納データを重複データと判定し、
（３−２）前記対象格納データと比較する格納データを、前記その他の格納データの中から、前記格納データに付与されているランクがより高い順に選択し、重複データと判定された時点で前記第二の重複判定を終了し、
（３−３）前記比較済み情報を参照して、前記他の格納データのうち比較の完了していない格納データとの間でのみ比較を行う、
請求項２記載のストレージシステム。
【請求項４】
前記コントローラは、どの程度重複記憶が排除されているかを示す値である重複排除率を計算し、現在の重複排除率が所定の目標値以下である場合に、前記第二の重複排除処理を行う、
請求項１又は２記載のストレージシステム。
【請求項５】
前記第一の処理情報には、ハッシュ空間に含まれるハッシュ値ごとに、ハッシュ値を生成した場合に前記ハッシュ値となる格納データが存在するか否かを示した格納データ存否情報が含まれ、
前記コントローラは、前記第一の重複判定において、以下の（ａ１）〜（ａ３）の処理を行う、
（ａ１）前記ライト対象データに関するハッシュ値を生成し、
（ａ２）前記格納データ存否情報を参照して、前記生成されたハッシュ値となる格納データが存在するか否かを判定し、
（ａ３）前記生成されたハッシュ値となる格納データが存在しない場合は、前記ライト対象データを非重複データと判定する、
請求項２〜４のうちのいずれかに記載のストレージシステム。
【請求項６】
前記ハッシュ値は、ユーザデータ全体若しくはユーザデータ本体から生成されたハッシュ値又はユーザデータ本体に付加されたデータから生成されたハッシュ値である、
請求項５記載のストレージシステム。
【請求項７】
前記コントローラは、前記第二の重複判定において、前記対象格納データと比較する格納データを、前記その他の格納データの中から、前記格納データに付与されているランクがより高い順に選択し、重複データと判定された時点で前記第二の重複判定を終了する、
請求項１〜６のうちのいずれかに記載のストレージシステム。
【請求項８】
前記ランク情報において、前記ランクが世代ごとに管理されており、
前記格納データに付与されるランクは、定期的に又は不定期的に更新され、更新されると、ランクの世代が次世代に移行し、
前記コントローラは、
前記第一の重複判定において重複不明データと判定された場合、前記ライト対象データについての前記第一の重複排除処理が、どの世代のどのランクの格納データまで比較が完了したかを示す比較済み情報を前記記憶装置又は前記メモリに記憶し、
前記第二の重複排除処理において、前記比較済み情報を参照して、前記他の格納データのうち比較の完了していない格納データとの間でのみ比較を行う、
請求項１〜７のうちのいずれか１項に記載のストレージシステム。
【請求項９】
前記コントローラは、
前記第一の重複判定において、前記ライト対象データが前記比較候補に含まれる格納データのいずれかと一致した場合、又は、前記ライト対象データに関する特徴データが前記比較候補に含まれる格納データのいずれかに関する特徴データと一致した場合に、前記ライト対象データを重複データと判定し、
前記第二の重複判定において、前記対象格納データが前記その他の格納データのいずれかと一致した場合、又は、前記対象格納データに関する特徴データが前記その他の格納データのいずれかに関する特徴データと一致した場合に、前記対象格納データを重複データと判定する、
請求項１〜８のうちのいずれか１項に記載のストレージシステム。
【請求項１０】
複数のストレージサーバを有し、
前記ストレージサーバの各々は、
前記通信インタフェース装置、前記記憶装置、前記メモリ、及び前記コントローラのそれぞれを有し、
前記メモリには、ユーザデータに関するハッシュ空間であるデータハッシュ空間と前記データハッシュ空間に含まれるユーザデータを管理するストレージサーバとの対応関係を示したサーバ管理情報が、更に記憶され、
前記クライアントからライト要求を受信したストレージサーバである要求受信サーバのコントローラが、
（Ｘ１）前記ライト要求で指定されたライト対象データに関するハッシュ値を生成し、
（Ｘ２）前記サーバ管理情報を参照して、前記ライト対象データを管理するストレージサーバであるデータ担当サーバを決定し、
（Ｘ３）前記データ担当サーバに対して前記ライト対象データを送信し、
前記データ担当サーバのコントローラが、
前記要求受信サーバから前記ライト対象データを受信した際、前記第一の重複排除処理を行い、その後、任意のタイミングで、前記第二の重複排除処理を行う、
請求項１〜９のうちのいずれか１項に記載のストレージシステム。
【請求項１１】
前記データ担当サーバのコントローラは、ライト対象データを記憶装置に記憶する際、（Ｙ１）前記データ担当サーバの記憶装置に十分な空き容量があるかないかを判定し、
（Ｙ２）前記データ担当サーバの記憶装置に十分な空き容量がある場合は、前記データ担当サーバの記憶装置に前記ライト対象データを記憶し、
（Ｙ３）前記データ担当サーバの記憶装置に十分な空き容量がない場合は、前記データ担当サーバ以外の他のストレージサーバの記憶装置に前記ライト対象データを記憶する、
請求項１０記載のストレージシステム。
【請求項１２】
前記サーバ管理情報には、ユーザデータのグローバルパスに関するハッシュ空間である名前ハッシュ空間と前記名前ハッシュ空間に含まれるグローパスパスのパス名を管理するストレージサーバとの対応関係を示した情報が含まれ、
前記クライアントからライト要求を受信したストレージサーバである要求受信サーバのコントローラが、
（Ｚ１）前記ライト対象データのグローバルパスであるライト対象グローバルパスに関するハッシュ値を生成し、
（Ｚ２）前記サーバ管理情報を参照して、前記ライト対象グローバルパスを管理するストレージサーバである名前担当サーバを決定し、
（Ｚ３）前記名前担当サーバに対して前記ライト対象グローバルパスのパス名を送信し、
前記名前担当サーバのコントローラが、
前記要求受信サーバから前記ライト対象グローバルパスのパス名を受信した際、前記ライト対象グローバルパスのパス名を前記名前担当サーバの記憶装置に格納する、
請求項１０又は１１記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関し、特に、重複したデータを排除するための技術に関する。
【背景技術】
【０００２】
近年、ストレージシステムの分野において、ユーザに意識させることなく、重複したデータを排除する技術（以下、「重複排除技術」）が注目されている。重複排除技術が適用されたストレージシステムは、仮想化層を配置することで重複データが排除されたことをユーザに隠蔽する。従って、重複排除技術が適用されることにより、ユーザは、従来どおりのアクセス方法でユーザデータにアクセスでき、それとともに、ストレージシステム内の有限のデータ格納領域を高効率に使用する事が可能となる。
【０００３】
重複排除の方式には、完全一致方式と非完全一致方式とがある。完全一致方式の例としては、クライアントから受信するＩ／Ｏ要求が、ブロックレベルである場合とファイルレベルである場合とがある。ブロックレベルである場合は、或るブロックデータの内容が他のブロックデータの内容と完全に一致した場合に重複データと判断され、その一方が排除される。ファイルレベルである場合は、或るファイルの内容が他のファイルの内容と完全に一致した場合に重複データと判断され、それらのファイルのうちの一方が排除される（例えば、特許文献１参照）。一方、非完全一致方式の例としては、クライアントから受信するＩ／Ｏ要求が、ファイル（特にコンテンツ）レベルである場合がある。コンテンツレベルである場合は、例えば、或るコンテンツと他のコンテンツのそれぞれの特徴点が抽出され、それらの特徴点の類似度が高い場合に重複データと判断される（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第５，７３２，２６５号明細書
【特許文献２】特開２００５−２７４９９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の重複排除方式では、重複排除の処理の対象となるデータが、重複する可能性のある全てのデータと重複するか否かの比較が行われるため、例えば比較対象のデータのデータ数やデータサイズが膨大である場合には、処理性能が著しく低下してしまう。
【０００６】
また、比較対象のデータのデータ数が膨大である場合は、キャッシュミスする可能性が高く、そのため低速のメタデータインデックスを参照する必要があるが、これに伴い処理性能が著しく低下することがある。
【０００７】
一方、比較対象のデータのデータ数が膨大である場合に、複数のストレージ装置に分散させて処理を行わせることで、処理性能を向上させることができるが、いずれにしてもキャッシュではなくディスク上の情報を参照して重複排除の処理が行われるため、大幅な性能改善は困難である。
【０００８】
そこで、本発明の目的は、重複排除の処理の性能を向上させることである。
【課題を解決するための手段】
【０００９】
ストレージシステムが、クライアントからライト要求を受信したときに第一の重複排除処理を行い、その後、任意のタイミングで、第二の重複排除処理を行う。第一の重複排除処理では、記憶装置に格納されているユーザデータ群である格納データ群の一部のいずれかの格納データにライト対象データが重複するか否かが判定され、その判定の結果が肯定的であれば、ライト対象データが記憶装置に格納されないようにする。第二の重複排除処理では、第一の重複排除処理において重複するか否かの評価が完了していない対象格納データが、その他の格納データと重複するか否かが判定され、その判定の結果が肯定的であれば、対象格納データ又は対象格納データと重複する同一データが記憶装置から削除される。
【００１０】
コントローラは、プロセッサを有し、プロセッサが、コンピュータプログラムを実行することにより、各処理を行ってもよい。コンピュータプログラムは、遠隔のサーバからインストールされても良いし、記憶媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤ（Digital Versatile Disk）などの可搬型の記憶媒体）からインストールされても良い。コントローラの少なくとも一部が、ハードウェア回路で実現されても良い。
【図面の簡単な説明】
【００１１】
【図１】実施例１に係る計算機システムの構成例を示す図である。
【図２】ストレージサーバのハードウェア構成例を示す図である。
【図３】ストレージサーバのソフトウェア構成例を示す図である。
【図４】ユーザデータ管理情報の一例を示す図である。
【図５】付加データを説明する図である。
【図６】全リスト情報の一例を示す図である。
【図７】同期重複排除処理用情報の一例を示す図である。
【図８】ライト要求処理部が行う処理のフローチャートである。
【図９】完全一致方式の同期重複排除処理のフローチャートである。
【図１０】第一の非完全一致方式の同期重複排除処理のフローチャートである。
【図１１】第二の非完全一致方式の同期重複排除処理のフローチャートである。
【図１２】第一のモニタ処理のフローチャートである。
【図１３】完全一致方式の非同期重複排除処理のフローチャートである。
【図１４】非完全一致方式の非同期重複排除処理のフローチャートである。
【図１５】ランク更新処理のフローチャートである。
【図１６】重複排除処理のための設定画面の一例を示す図である。
【図１７】モニタ画面の一例を示す図である。
【図１８】実施例２に係るストレージシステムの構成例を示す図である。
【図１９】実施例２に係るストレージサーバのソフトウェア構成例を示す図である。
【図２０】サーバ管理情報の一例を示す図である。
【図２１】実施例２に係るライト要求処理部が行う処理のフローチャートである。
【図２２】データ担当サーバが行うデータ格納処理のフローチャートである。
【図２３】実施例２に係る非重複データ又は重複不明データの登録処理のフローチャートである。
【図２４】名前担当サーバが行う名前格納処理のフローチャートである。
【図２５】第二のモニタ処理のフローチャートである。
【図２６】サーバ分割処理のフローチャートである。
【図２７】サーバ統合処理のフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本発明の幾つかの実施例を説明する。
【実施例１】
【００１３】
図１は、実施例１に係る計算機システムの構成例を示す図である。
【００１４】
一以上のクライアント１０１とストレージシステム１０３とが、通信ネットワーク１０２を介して接続される。通信ネットワーク１０２は、例えば、ＩＰ（Internet Protocol）ネットワークやＦＣ（Fibre Channel）ネットワーク等である。
【００１５】
クライアント１０１は、ストレージシステム１０３に対して、Ｉ／Ｏ要求（リード要求又はライト要求）を送信するコンピュータである。Ｉ／Ｏ要求には、例えば、ファイル（コンテンツを含む）レベルのＩ／Ｏ要求とブロックレベルのＩ／Ｏ要求とがある。ファイルレベルのＩ／Ｏ要求は、Ｉ／Ｏ要求の対象となるユーザデータをファイル単位で指定して、その指定されたユーザデータ（ファイル）のＩ／Ｏを要求するものである。ファイルレベルのＩ／Ｏ要求では、Ｉ／Ｏの対象となるユーザデータ（ファイル）が、その格納先を示す論理パスにより指定される。以下、ファイル単位のユーザデータの格納先を示す論理パスを、「グローバルパス」と呼ぶ。一方、ブロックレベルのＩ／Ｏ要求は、Ｉ／Ｏ要求の対象となるユーザデータをブロック単位で指定して、その指定されたユーザデータ（ブロックデータ）のＩ／Ｏを要求するものである。ブロックレベルのＩ／Ｏ要求では、Ｉ／Ｏの対象となるユーザデータ（ブロックデータ）が、論理ブロック番号により指定される。以下の説明では、主に、クライアント１０１から受信するＩ／Ｏ要求がファイルレベルのＩ／Ｏ要求である場合を例に挙げて説明するが、ブロックレベルのＩ／Ｏ要求である場合にも適用可能である。
【００１６】
ストレージシステム１０３は、ストレージサーバ２０１を備えている。本実施例では、一つのストレージサーバ２０１が、ストレージシステム１０３に備えられているものとする。以下、図２〜図６を参照して、ストレージサーバ２０１の構成を説明する。
【００１７】
図２は、ストレージサーバ２０１のハードウェア構成例を示す図である。
【００１８】
ストレージサーバ２０１は、例えば、ＣＰＵ（Central Processing Unit）２０２と、メモリコントローラ２０３と、メモリ２０４と、入出力コントローラ２０５と、ネットワークコントローラ２０６と、ネットワークポート２０７と、ディスクコントローラ２０８と、ディスク２０９とを備える。各部２０２〜２０９は、例えば図２に示されるように接続される。即ち、ＣＰＵ２０２、メモリ２０４及び入出力コントローラ２０５が、メモリコントローラ２０３に接続される。また、ネットワークコントローラ２０６及びディスクコントローラ２０８が、入出力コントローラ２０５に接続される。そして、ネットワークポート２０７が、ネットワークコントローラ２０６に接続され、ディスク２０９が、ディスクコントローラ２０８に接続される。
【００１９】
なお、ディスク２０９は、複数備えられてもよい。また、一のディスク２０９或いは複数のディスク２０９のうちの一以上が、外部ディスク（ストレージサーバ２０１に外付けされたディスク）とされてもよい。ストレージサーバ２０１と外部ディスクとは、例えば、ＩＰネットワークやＦＣネットワーク等を介して接続される。
【００２０】
図３は、ストレージサーバ２０１のソフトウェア構成例を示す図である。
【００２１】
ストレージサーバ２０１は、例えば、同期重複排除処理部３０１と、非同期重複排除処理部３０２と、リスト管理処理部３０３と、モニタ処理部３０４と、設定処理部３０５と、ライト要求処理部３０６を備える。ストレージサーバ２０１のメモリ２０４には、各処理部３０１〜３０６の機能を実現するための種々のコンピュータプログラムが格納される。ストレージサーバ２０１のＣＰＵ２０２は、メモリ２０４に格納された種々のプログラムを実行することにより、各処理部３０１〜３０６の機能を実現する。各処理部３０１〜３０６が行う具体的な処理については、後述する。
【００２２】
メモリ２０４には、同期重複排除処理が行われる際に参照される同期処理用情報３０７が格納される。なお、同期処理用情報３０７は、ディスク２０９と比較してより高速にアクセスできるデバイスに格納されていればよい。従って、同期処理用情報３０７は、メモリ２０４に限らず、例えば、ＳＳＤ（Solid State Drive）に格納されてもよい。
【００２３】
また、ディスク２０９には、クライアント１０１が書き込みを要求したユーザデータに加えて、例えば、ユーザデータ管理情報３１０と、全リスト情報３１１と、フィンガープリントデータ３１２とが格納される。フィンガープリントデータ３１２は、ユーザデータからその特徴点を抽出することにより得られたデータであり、ユーザデータの特徴を示したデータである。ストレージサーバ２０１は、対象とするユーザデータのフィンガープリントデータ３１２を、ストレージサーバ２０１の外部から取得することもできるし、自ら生成することもできる。
【００２４】
本実施例に係るストレージサーバ２０１は、記憶装置（本実施例ではディスク２０９）に同一内容のユーザデータが重複して記憶されないようにするための処理（以下、「重複排除処理」）を行う。本実施例における重複排除処理には、ライト要求を受信したタイミングで行われる重複排除処理（以下、「同期重複排除処理」）と、ライト要求の受信とは別の任意のタイミングで行われる重複排除処理（以下、「非同期重複排除処理」）との二種類がある。同期重複排除処理は、同期重複排除処理部３０１により行われ、非同期重複排除処理は、非同期重複排除処理部３０２により行われる。
【００２５】
重複排除処理では、二つのユーザデータ（同期重複排除処理の場合は、ライト対象のユーザデータ及び選択された一つのユーザデータであり、非同期排除処理の場合は、選択された二つのユーザデータ）が比較され、それらのユーザデータが、同一か否かが判定される。本実施例における重複排除処理では、二つのユーザデータのデータ内容が完全に一致した場合に、或いはデータ内容に不一致部分があっても類似性が高く実質的に同じと判断できる場合に、両ユーザデータが、同一と判定される。以下、データ内容が完全に一致するか否かを判定することによりユーザデータが同一であるか否かを判定する方式を「完全一致方式」と呼び、実質的に同じと判断できるか否かを判定することによりユーザデータが同一であるか否かを判定する方式を「非完全一致方式」と呼ぶ。非完全一致方式の重複排除処理では、具体的には、例えば付加データや特徴データに基づいて、実質的に同じと判断できるか否かが判定される。ここで、「付加データ」とは、ユーザデータ（ユーザデータ本体）に付加されたデータ、例えば、ユーザデータの属性を示すもの（メタデータやタグデータ等）のことをいう。「特徴データ」とは、ユーザデータの特徴を示したデータ、例えば、フィンガープリントデータ３１２のことをいう。例えば、完全一致方式の重複排除処理は、クライアント１０１から受信するＩ／Ｏ要求がファイルレベルのＩ／Ｏ要求及びブロックレベルのＩ／Ｏ要求のいずれの場合でも、採用することができる。一方、非完全一致方式の重複排除処理は、クライアント１０１から受信するＩ／Ｏ要求がファイル（特にコンテンツ）レベルのＩ／Ｏ要求の場合に採用することができる。
【００２６】
図４は、ユーザデータ管理情報３１０の一例を示す図である。
【００２７】
ユーザデータ管理情報３１０には、例えば、グローバルパスを管理するための情報であるグローバルパス管理テーブル４０１と、ローカルパスを管理するための情報であるローカルパス管理テーブル４０２とが含まれる。ここで、「ローカルパス」とは、ストレージシステム１０３内で参照される、データの格納先を示す物理パスのことをいう。
【００２８】
グローバルパス管理テーブル４０１には、ライト済みデータごとに、そのライト済みデータについての、グローバルパスと、名前ハッシュ値と、データハッシュ値と、データＩＤとが対応付けて記憶される。ここで、「ライト済みデータ」とは、クライアント１０１がライト要求を送信することでストレージサーバ２０１に書き込んだユーザデータ、即ち、正常に処理されたライト要求の対象とされたユーザデータのことをいう。ライト済みデータは、実際にディスク２０９に格納されているユーザデータ（以下、「格納データ」）のうちのいずれかに対応する。ライト済みデータと格納データとの対応付けは、データＩＤにより管理される。即ち、ライト済みデータのデータＩＤ（グローバルパス管理テーブル４０１により管理されているもの）と格納データのデータＩＤ（ローカルパス管理テーブル４０２により管理されているもの）とが同じである場合は、それらのデータは対応するものとなる。なお、クライアント１０１から受信するＩ／Ｏ要求がブロックレベルのＩ／Ｏ要求である場合は、グローバルパスに代えて論理ブロック番号が記憶される。
【００２９】
名前ハッシュ値は、グローバルパスから生成されたハッシュ値である。名前ハッシュ値は、実施例２において利用される。従って、本実施例において、名前ハッシュ値は、必ずしもグローバルパス管理テーブル４０１に含まれていなくともよい。データハッシュ値は、ユーザデータ或いは付加データ（メタデータやタグデータ等）から生成されたハッシュ値である。完全一致方式が採用される場合は、ユーザデータから生成されたハッシュ値が、データハッシュ値とされる。一方、非完全一致方式が採用される場合は、付加データから生成されたハッシュ値が、データハッシュ値とされる。なお、以下の説明においても同様に、「データハッシュ値」とは、完全一致方式が採用される場合は、ユーザデータから生成されたハッシュ値をいい、非完全一致方式が採用される場合は、付加データから生成されたハッシュ値をいうものとする。
【００３０】
ここで、図５を参照して、メタデータ７とタグデータ８について簡単に説明する。いずれのデータ７，８もユーザデータ本体９に付加されたデータであり、ユーザデータ本体９の属性を示すデータである。図５に示されるように、メタデータ７は、ユーザデータ本体９に外的に付加されたデータである。ユーザデータは、メタデータ７とユーザデータ本体９とから構成される。一方、タグデータ８は、ユーザデータ本体９の内部に含まれるデータ（内的に付加されたデータ）である。例えば、ユーザデータがｍｐ３ファイルである場合はアーティスト名等、ユーザデータがＷｏｒｄファイルである場合は作成者情報等が、タグデータ８となる。
【００３１】
ローカルパス管理テーブル４０２には、格納データ（ディスク２０９に格納されているデータ）ごとに、その格納データについての、データＩＤと、データハッシュ値と、重複数と、全体評価フラグと、リスト世代番号と、同期評価最大ランクと、ローカルパスと、フィンガープリントデータパスとが対応付けて記憶される。なお、クライアント１０１から受信するＩ／Ｏ要求がブロックレベルのＩ／Ｏ要求である場合は、ローカルパスに代えて物理ブロック番号が記憶される。
【００３２】
重複数は、格納データの重複数であり、具体的には、対応する格納データ（以下、「対応格納データ」）をデータ内容とするライト済みデータの数、即ち、対応格納データに対応するライト済みデータの数である。図４の例では、例えば、データＩＤが“１００”の格納データは、グローバルパスが“/groot/user1/data1”のライト済みデータとグローバルパスが“/groot/user2/data1”のライト済みデータとの二つに対応しているため（グローバスパス管理テーブル４０１参照）、その重複数は、“２”とされている。全体評価フラグは、対応格納データが、他の全ての格納データとの間で比較（同一か否かの判定）が完了したか否かを示す情報である。本実施例では、全体評価フラグは、他の全ての格納データとの間で比較が完了した場合は“Ｙ”とされ、他の全ての格納データとの間で比較が完了していない場合は“Ｎ”とされる。リスト世代番号は、対応格納データについての同期重複排除処理が、どの世代のリストに基づいて行われたかを示す情報である。同期評価最大ランクは、同期重複排除処理において、どのランクの格納データまで比較が完了したかを示す情報である。フィンガープリントデータパスは、フィンガープリントデータ３１２の格納先を示すパスである。
【００３３】
図６は、全リスト情報３１１の一例を示す図である。
【００３４】
全リスト情報３１１は、全部又は一部の格納データについて、それぞれに付与されたランクを世代ごとに示した情報である。ここで、「ランク」とは、重複排除処理において比較の対象とされる格納データ（以下、「比較対象データ」）を選択する際に参照される順位である。本実施例では、ランクのより高い格納データから順に、比較対象データとして選択される。また、同期重複排除処理では、ランクのより高いものから順に抽出された所定数の格納データが、比較対象データの候補（以下、「比較候補」）とされ、比較候補の中から比較対象データが選択される。即ち、同期重複排除処理では、比較候補が一部の格納データ（よりランクの高いもの）に限定され、それにより処理負荷が軽減される。比較候補の数は、ストレージサーバ２０１が予め保持している値とされてもよいし、管理者により後から設定された値とされてもよい。
【００３５】
ランクは、リスト管理処理部３０３により付与される。リスト管理処理部３０３は、例えば、重複する可能性が高いと見込まれる格納データに対して、より高いランクを付与することができる。重複する可能性が高いと見込まれるデータとしては、例えば、（Ａ）ランキング（例えば、外部で提供されるヒットチャートや視聴率等）が上位のデータ、（Ｂ）重複数が大きいデータ、（Ｃ）最近格納されたデータ、（Ｄ）ライト／リード比率の高いデータ、（Ｅ）フォーマットパターン等の登録データ等が考えられる。また、リスト管理処理部３０３は、重複排除処理により得られる効果（ディスク２０９の使用率の削減効果）が大きいデータに対して、より高いランクを付与することもできる。重複排除処理により得られる効果が大きいデータとしては、例えば、ファイルサイズの大きいデータ等が考えられる。ランクは、定期的又は不定期的に更新され、ランクが更新されるごとに、世代が次の世代に移行する。なお、本実施例では、ランクの値が小さいものほど、ランクが高いことを示している。
【００３６】
図６に示されるように、全リスト情報３１１には、各世代で存在している格納データごとに、その格納データのデータＩＤと、その格納データに付与されたランクと、そのランクが付与された世代の世代番号とが対応付けて記憶される。
【００３７】
図７は、同期重複排除処理用情報３０７の一例を示す図である。
【００３８】
同期重複排除処理用情報３０７は、上述したように、同期重複排除処理が行われる際に参照される情報である。同期重複排除処理用情報３０７には、例えば、部分リスト情報６０１と、サマリビットマップ６０２と、キャッシュ情報６０３とが含まれる。
【００３９】
部分リスト情報６０１は、比較候補（比較候補のデータＩＤ）を、最新の世代のランク順にリスト化した情報である。部分リスト情報６０１には、データハッシュ値ごとの比較候補のランク順のリスト（以下、「第一のランク順リスト」）６１１と、データハッシュ値全体についての比較候補のランク順のリスト（以下、「第二のランク順リスト」）６２１とが含まれる。
【００４０】
サマリビットマップ６０２は、同期重複排除処理の対象となるユーザデータ（ライト対象のユーザデータ）が格納データのいずれとも重複しないデータであるか否かを瞬時に判断するために参照されるデータである。サマリビットマップ６０２には、ハッシュ空間に含まれるデータハッシュ値ごとに、ハッシュ値を生成した場合にそのデータハッシュ値となる格納データが存在するか否かを示すビット値が記憶される。本実施例では、そのデータハッシュ値となる格納データが存在する場合には、ビット値が“Ｔ（ＴＲＵＥ）”とされ、そのデータハッシュ値となる格納データが存在しない場合には、ビット値が“Ｆ（ＦＡＬＳＥ）”とされる。
【００４１】
キャッシュ情報６０３は、ディスク２０９に格納されている、全部又は一部のユーザデータ（即ち、格納データ）のコピーデータ、及び／又は、全部又は一部のフィンガープリントデータ（図７では“ＦＰ”と表記している）３１２のコピーデータである。図３に示したように、同期重複排除処理用情報３０７は、メモリ２０４上に格納されるため、キャッシュ情報６０３内のデータには、高速なアクセスが可能である。キャッシュ情報６０３に含まれる格納データは、例えば比較候補の全てであってもよいし、比較候補の一部であってもよい。
【００４２】
図８は、ライト要求処理部３０６が行う処理のフローチャートである。
【００４３】
ストレージサーバ２０１がクライアント１０１からライト要求を受信すると、ライト要求処理部３０６は、ライト対象のユーザデータ（以下、「ライト対象データ」）が同期重複排除処理の非適用条件（以下、「同期非適用条件」）に合致しているか否かを判定する（Ｓ１０１、Ｓ１０２）。ここで、「同期非適用条件」とは、ライト対象データについて同期重複排除処理を行うか否かを決定するために用いられる条件のことである。本実施例では、ライト対象データが同期非適用条件に合致した場合は、そのライト対象データについて同期重複排除処理は行われない。同期非適用条件の一例としては、例えば、データサイズが大サイズであることや、ライト対象データが暗号化されたデータであること等が挙げられる。大サイズのデータや暗号化されたデータについては、重複排除処理に或る程度の時間を要することから、ライト要求の受信と非同期で重複排除処理が行われること（即ち、非同期重複排除処理が行われること）が望まれるからである。
【００４４】
ライト対象データが同期非適用条件に合致した場合は（Ｓ１０２：ＹＥＳ）、その後、ステップＳ１０６の処理が行われる。
【００４５】
一方、ライト対象データが同期非適用条件に合致しなかった場合は（Ｓ１０２：ＮＯ）、ライト対象データについて同期重複排除処理が行われる（Ｓ１０３）。同期重複排除処理が行われることにより、ライト対象データが、格納データのいずれかと重複する（同一の）データ（以下、「重複データ」）であるか、或いは格納データのいずれとも重複しない（非同一の）データ（以下、「非重複データ」）であるかが判定される。なお、同期重複排除処理だけでは、重複データとも非重複データとも判定できない場合もある。何故ならば、同期重複排除処理では、ライト対象データと比較されるユーザデータが、格納データの一部（比較候補）に限定されているからである。同期重複排除処理において、重複データとも非重複データとも判定されなかったデータ（以下、「重複不明データ」）は、非同期重複判定処理の対象とされる。同期重複排除処理の詳細については、後に図９〜図１１を参照して説明する。
【００４６】
同期重複排除処理において、ライト対象データが重複データであると判定された場合は（Ｓ１０４：ＹＥＳ）、ライト要求処理部３０６は、ライト対象データを重複データとして登録する処理を行う（Ｓ１０７）。
【００４７】
具体的には、ライト要求処理部３０６は、グローバルパス管理テーブル４０１にライト対象データに関するエントリを追加する。この追加されたエントリのデータＩＤは、ライト対象データと同一と判定された格納データ（以下、「同一データ」）のデータＩＤとされる。そして、ローカルパス管理テーブル４０２における、同一データの重複数が、１増やされる。
【００４８】
また、同期重複排除処理において、ライト対象データが重複不明データであると判定された場合は（Ｓ１０４：ＮＯ且つＳ１０５：ＮＯ）、その後、ステップＳ１０６の処理が行われる。
【００４９】
ステップＳ１０６では、ライト要求処理部３０６は、ライト対象データが非同期重複排除処理の非適用条件（以下、「非同期非適用条件」）に合致しているか否かを判定する（Ｓ１０６）。ここで、「非同期非適用条件」とは、ライト対象データについて非同期重複排除処理を行うか否かを決定するために用いられる条件のことである。本実施例では、ライト対象データが非同期非適用条件に合致した場合は、そのライト対象データについて非同期重複排除処理は行われない。非同期非適用条件の一例としては、例えば、データサイズが極小サイズであることや、ライト対象データが暗号化されたデータであること等が挙げられる。
【００５０】
また、同期重複排除処理において、ライト対象データが非重複データであると判定された場合（Ｓ１０４：ＮＯ且つＳ１０５：ＹＥＳ）或いはライト対象データが非同期非適用条件に合致した場合は（Ｓ１０６：ＹＥＳ）、ライト要求処理部３０６は、ライト対象データを非重複データとして登録する処理を行う（Ｓ１０８）。
【００５１】
具体的には、まず、ライト対象データがディスク２０９に格納され、その格納されたデータにデータＩＤが割り当てられる。そして、ライト要求処理部３０６は、サマリビットマップ６０２における、ライト対象データのデータハッシュ値に対応するビット値を“TRUE”に変更する。また、ライト要求処理部３０６は、グローバルパス管理テーブル４０１及びローカルパス管理テーブル４０２のそれぞれに、ライト対象データに関するエントリを追加する。
【００５２】
グローバルパス管理テーブル４０１に追加されたエントリ（以下、「グローバル追加エントリ」）及びローカルパス管理テーブル４０２に追加されたエントリ（以下、「ローカル追加エントリ」）のそれぞれのデータＩＤは、ディスク２０９に格納されたライト対象データに割り当てられたデータＩＤとされる。また、グローバル追加エントリのグローバルパスは、ライト対象データの格納先を示すグローバルパスとされる。また、ローカル追加エントリのローカルパスは、ライト対象データの格納先を示すローカルパスとされる。ローカル追加エントリの重複数は“１”とされ、ローカル追加エントリの全体評価フラグは“Ｙ”とされる。ローカル追加エントリのリスト世代番号は、同期重複排除処理が行われた時点で最新の世代番号とされ、ローカル追加エントリの同期評価最大ランクは、比較対象データ（同期重複排除処理において比較の対象とされた格納データ）に付与されているランクのうち最も低いランクとされる。なお、ライト対象データに関するフィンガープリントデータ３１２が存在する場合は、そのフィンガープリントデータ３１２もディスク２０９に格納される。ローカル追加エントリのフィンガープリントデータパスは、ライト対象データに関するフィンガープリントデータ３１２の格納先を示すパスとされる。
【００５３】
ステップＳ１０６の判定において、ライト対象データが非同期非適用条件に合致しなかった場合は（Ｓ１０６：ＮＯ）、ライト要求処理部３０６は、ライト対象データを重複不明データとして登録する処理を行う（Ｓ１０９）。ステップＳ１０９の処理は、ステップＳ１０８の処理と以下の点を除いて同じである。即ち、重複不明データである場合は、ローカル追加エントリの全体評価フラグは“Ｎ”とされる。
【００５４】
図９は、完全一致方式の同期重複排除処理のフローチャートである。
【００５５】
図９〜図１１の処理は、いずれも図８におけるステップＳ１０３で行われる処理である。完全一致方式が採用される場合は、図９の処理が行われ、非完全一致方式が採用される場合は、図１０又は図１１の処理が行われる。
【００５６】
まず、同期重複排除処理部３０１は、ライト対象データからデータハッシュ値を生成する（Ｓ２０１）。以下、このステップＳ２０１で生成されたデータハッシュ値を、「対象ハッシュ値」と呼ぶ。
【００５７】
次に、同期重複排除処理部３０１は、サマリビットマップ６０２における、対象ハッシュ値に対応するビット値が“FALSE”であるか否かを判定する（Ｓ２０２）。
【００５８】
対象ハッシュ値に対応するビット値が“FALSE”の場合は（Ｓ２０２：ＹＥＳ）、同期重複排除処理部３０１は、ライト対象データを非重複データと判定する。即ち、この場合は、格納データとの比較が行われることなく、ライト対象データは、直ちに非重複データであると判定される。何故ならば、対象ハッシュ値に対応するビット値が“FALSE”であることから、データハッシュ値が同一となる格納データが存在しないこと、即ち、同一の格納データが存在しないことがわかるからである。
【００５９】
一方、対象ハッシュ値に対応するビット値が“TRUE”の場合は（Ｓ２０２：ＮＯ）、同期重複排除処理部３０１は、部分リスト情報６０１から対象ハッシュ値に関する第一のランク順リストを取得する（Ｓ２０３）。例えば、図７の例であれば、対象ハッシュ値が“0x0f”の場合は、“１０２”と“１０１”のデータＩＤを含んだ第一のランク順リストが得られる。このステップＳ２０３で得られた第一のランク順リストに含まれるデータＩＤを持つ格納データのそれぞれが、比較候補とされる。
【００６０】
その後、同期重複排除処理部３０１は、ステップＳ２０３で得られた第一のランク順リストに含まれるデータＩＤ（その格納データが既にライト対象データと比較されたものを除く）の中から、そのランクが最上位のものを選択する（Ｓ２０４）。このステップＳ２０４で選択されたデータＩＤを持つ格納データが、比較対象データとされる。
【００６１】
その後、同期重複排除処理部３０１は、ライト対象データと比較対象データとを比較して、両データが同一であるか否か（ここではデータ内容が完全に一致するか否か）を判定する（Ｓ２０５）。比較対象データがキャッシュ情報６０３に含まれている場合は、キャッシュ情報６０３内の比較対象データを用いて同一か否かが判定される。これにより、ディスク２０９から比較対象データを読み出して比較する場合に比べて、高速に比較処理を行うことができる。一方、比較対象データがキャッシュ情報６０３に含まれていない場合は、比較対象データがディスク２０８から読み出され、その読み出された比較対象データを用いて同一か否かが判定される。なお、データの比較に際して、データ全体を比較する前処理として、両データに関するフィンガープリントデータ３１２が一致するか否かが判定されてもよい。仮に両データに関するフィンガープリントデータ３１２が一致しなかった場合は、データ全体を比較することなく、両データは同一でないと判定することができる。
【００６２】
ライト対象データと比較対象データとが同一であると判定された場合は（Ｓ２０５：ＹＥＳ）、同期重複排除処理部３０１は、ライト対象データを重複データと判定する（Ｓ２０９）。
【００６３】
一方、ライト対象データと比較対象データとが同一でないと判定された場合は（Ｓ２０５：ＮＯ）、同期重複排除処理部３０１は、比較候補の全てと比較が完了したか否かを判定する（Ｓ２０６）。
【００６４】
比較候補の全てと比較が完了していない場合は（Ｓ２０６：ＮＯ）、同期重複排除処理部３０１は、次にランクが上位のデータＩＤを選択し（Ｓ２０４）、その選択されたデータＩＤを持つ格納データを比較対象データとして、ライト対象データと比較する。
【００６５】
一方、比較候補の全てと比較が完了している場合は（Ｓ２０６：ＹＥＳ）、同期重複排除処理部３０１は、ライト対象データを、重複不明データと判定する（Ｓ２０７）。
【００６６】
図１０は、第一の非完全一致方式の同期重複排除処理のフローチャートである。
【００６７】
第一の非完全一致方式の同期重複排除処理は、非完全一致方式が採用される場合に行われる処理であり、特に、重複する可能性のあるデータを付加データを参照することで或る程度絞り込むことができる場合に行なわれる処理である。
【００６８】
図１０の処理は、ステップＳ３０１及びＳ３０２以外のステップ（図９と同一符号が付されているステップ）は、図９の処理と実質的に同じである。以下、図９との主な相違点について説明する。
【００６９】
ステップＳ３０１では、同期重複排除処理部３０１は、付加データからデータハッシュ値を生成する。また、ステップＳ３０２では、同期重複排除処理部３０１は、ライト対象データに関するフィンガープリントデータ３１２と比較対象データに関するフィンガープリントデータ３１２とを比較して、ライト対象データと比較対象データとが同一であるか否か（ここでは実質的に同じと判断できるか否か）を判定する。具体的には、同期重複排除処理部３０１は、ライト対象データに関するフィンガープリントデータ３１２と比較対象データに関するフィンガープリントデータ３１２とが一致した場合に、ライト対象データと比較対象データとが同一であると判定する。なお、ライト対象データに関するフィンガープリントデータ３１２と比較対象データに関するフィンガープリントデータ３１２とが、完全に一致しなくとも、ある程度の確率以上で一致した場合に、ライト対象データと比較対象データとが同一であると判定されてもよい。
【００７０】
図１１は、第二の非完全一致方式の同期重複排除処理のフローチャートである。
【００７１】
第二の非完全一致方式の同期重複排除処理は、非完全一致方式が採用される場合に行われる処理であり、特に、重複する可能性のあるデータを付加データを参照しても絞り込むことが困難な場合に行なわれる処理である。
【００７２】
まず、同期重複排除処理部３０１は、部分リスト情報６０１から第二のランク順リストを取得する（Ｓ４０１）。このステップＳ４０１で得られた第二のランク順リストに含まれるデータＩＤを持つ格納データのそれぞれが、比較候補とされる。
【００７３】
次に、同期重複排除処理部３０１は、ステップＳ４０１で得られた第二のランク順リストに含まれるデータＩＤ（その格納データに関するフィンガープリントデータ３１２が既にライト対象データに関するフィンガープリントデータ３１２と比較されたものを除く）の中から、そのランクが最上位のものを選択する（Ｓ４０２）。このステップＳ４０２で選択されたデータＩＤを持つ格納データが、比較対象データとされる。
【００７４】
その後、同期重複排除処理部３０１は、ライト対象データに関するフィンガープリントデータ３１２と比較対象データに関するフィンガープリントデータ３１２とを比較して、ライト対象データと比較対象データとが同一であるか否か（ここでは実質的に同じと判断できるか否か）を判定する（Ｓ４０３）。具体的には、同期重複排除処理部３０１は、ライト対象データに関するフィンガープリントデータ３１２と比較対象データに関するフィンガープリントデータ３１２とが一致した場合に、ライト対象データと比較対象データとが同一であると判定する。なお、ライト対象データに関するフィンガープリントデータ３１２と比較対象データに関するフィンガープリントデータ３１２とが、完全に一致しなくとも、ある程度の確率以上で一致した場合に、ライト対象データと比較対象データとが同一であると判定されてもよい。
【００７５】
ライト対象データと比較対象データとが同一であると判定された場合は（Ｓ４０３：ＹＥＳ）、同期重複排除処理部３０１は、ライト対象データを重複データと判定する（Ｓ４０６）。
【００７６】
一方、ライト対象データと比較対象データとが同一でないと判定された場合は（Ｓ４０３：ＮＯ）、同期重複排除処理部３０１は、比較候補の全てと比較が完了したか否かを判定する（Ｓ４０４）。
【００７７】
比較候補の全てと比較が完了していない場合は（Ｓ４０４：ＮＯ）、同期重複排除処理部３０１は、次にランクが上位のデータＩＤを選択し（Ｓ４０２）、その選択されたデータＩＤを持つ格納データを比較対象データとして、ライト対象データと比較する。
【００７８】
一方、比較候補の全てと比較が完了している場合は（Ｓ４０４：ＹＥＳ）、同期重複排除処理部３０１は、ライト対象データを、重複不明データと判定する（Ｓ４０５）。
【００７９】
図１２は、第一のモニタ処理のフローチャートである。
【００８０】
第一のモニタ処理は、非同期重複排除処理を実行するか否かを決定するためにモニタ処理部３０４により行われる処理である。モニタ処理部３０４は、任意のタイミングで第一のモニタ処理を行うことができるが、以下では、定期的に（例えば、数時間或いは数週間おきに）行われる場合を例に挙げて説明する。
【００８１】
モニタ処理部３０４は、一定期間（例えば、数時間或いは数週間等）待機した後（Ｓ５０１）、現在の重複排除率を計算する（Ｓ５０２）。ここで、「重複排除率」とは、どの程度、重複記憶が排除されているかを示す値であり、具体的には、その時点で存在する重複データの数に対する、重複排除された重複データ（即ち、ディスク２０９に格納されることが回避された或いはディスク２０９から削除された重複データ）の数の割合で示されるものである。例えば、重複排除率は、全ての重複データが排除されている場合に１００％、重複データが全く排除されていない場合に０％とされる。モニタ処理部３０４は、例えば、グローバルパス管理テーブル４０１及びローカルパス管理テーブル４０２に基づいて、重複排除率を計算することができる。
【００８２】
次に、モニタ処理部３０４は、ステップＳ５０２で計算された重複排除率が所定の目標値（以下、「重複排除目標値」）以下であるか否かを判定する（Ｓ５０３）。
【００８３】
重複排除率が重複排除目標値よりも大きい場合は（Ｓ５０３：ＮＯ）、非同期重複処理は行われずに、モニタ処理部３０４は、一定期間待機する（Ｓ５０１）。
【００８４】
一方、重複排除率が重複排除目標値以下である場合は（Ｓ５０３：ＹＥＳ）、モニタ処理部３０４は、クライアント１０１からのアクセス負荷（ＣＰＵ使用率やＩ／Ｏ量等から算出されたアクセス負荷を示す値）が所定の閾値（以下、「アクセス負荷閾値」）以下であるか否かを判定する（Ｓ５０４）。
【００８５】
アクセス負荷がアクセス負荷閾値よりも大きい場合は（Ｓ５０４：ＮＯ）、非同期重複処理は行われずに、モニタ処理部３０４は、一定期間待機する（Ｓ５０１）。
【００８６】
一方、アクセス負荷がアクセス負荷閾値以下である場合は（Ｓ５０４：ＹＥＳ）、非同期重複排除処理部３０２により、非同期重複排除処理が行われる（Ｓ５０５）。つまり、重複排除率が或る程度低く、且つ、アクセス負荷が低い場合に、非同期重複排除処理が行われる。同期重複排除処理の詳細については、後に図１３及び図１４を参照して説明する。
【００８７】
非同期重複排除処理の終了後、モニタ処理部３０４は、全格納データのそれぞれについて他の全ての格納データとの間で比較（同一か否かの判定）が完了したか否か（即ち、ローカル管理テーブル４０２において全体評価フラグが“Ｎ”の格納データが存在しなくなったか否か）を判定する（Ｓ５０６）。
【００８８】
全格納データのそれぞれについて他の全ての格納データとの間で比較が完了していない場合は（Ｓ５０６：ＮＯ）、モニタ処理部３０４は、再度ステップＳ５０２〜Ｓ５０５の処理を行う。
【００８９】
一方、全格納データのそれぞれについて他の全ての格納データとの間で比較が完了した場合は（Ｓ５０６：ＹＥＳ）、その後、モニタ処理部３０４は、一定期間待機する（Ｓ５０１）。
【００９０】
図１３は、完全一致方式の非同期重複排除処理のフローチャートである。
【００９１】
まず、非同期重複排除処理部３０２は、ローカルパス管理テーブル４０２を参照して、全体評価フラグが“Ｎ”となっている格納データの中から、リスト世代番号が最も小さいものを一つ選択する（Ｓ６０１）。以下、このステップＳ６０１で選択された格納データを「選択データ」と呼ぶ。また、選択データのリスト世代番号を「選択世代番号」と呼び、選択データの同期評価最大ランクを「選択ランク」と呼ぶ。
【００９２】
次に、非同期重複排除処理部３０２は、比較対象データを選択する（Ｓ６０２）。具体的には、非同期重複排除処理部３０２は、全リスト情報３１１を参照して、そのリスト世代番号が選択世代番号であり、且つ、そのランクが選択ランクよりも大きいエントリを一つ選択する。このステップＳ６０２で選択されたエントリのデータＩＤを持つ格納データが、比較対象データとされる。図４、図６の例であれば、全体評価フラグが“Ｎ”である、データＩＤが“３００”の格納データが、選択データとされる（図４参照）。従って、選択世代番号は“２”となり、選択ランクは“４”となる（図４参照）。よって、そのリスト世代番号が“２”であり、且つ、そのランクが“４”よりも大きい格納データである、データＩＤが“１０４”の格納データが、比較対象データとされる（図６参照）。
【００９３】
次に、非同期重複排除処理部３０２は、選択データ及び比較対象データのそれぞれのデータハッシュ値をテーブルより取得する（Ｓ６０３）。
【００９４】
その後、非同期重複排除処理部３０２は、選択データのデータハッシュ値と比較対象データのデータハッシュ値とが一致するか否かを判定する（Ｓ６０４）。
【００９５】
両データハッシュ値が一致しなかった場合は（Ｓ６０４：ＮＯ）、その後、ステップＳ６０８の処理が行われる。
【００９６】
一方、両データハッシュ値が一致した場合は（Ｓ６０４：ＹＥＳ）、非同期重複排除処理部３０２は、選択データと比較対象データとを比較して、両データが同一であるか否か（ここではデータ内容が完全に一致するか否か）を判定する（Ｓ６０５）。
【００９７】
選択データと比較対象データとが同一でないと判定された場合は（Ｓ６０５：ＮＯ）、その後、ステップＳ６０７の処理が行われる。
【００９８】
一方、選択データと比較対象データとが同一であると判定された場合は（Ｓ６０５：ＹＥＳ）、非同期重複排除処理部３０２は、選択データをディスク２０９から削除する処理を行う（Ｓ６０６）。具体的には、非同期重複排除処理部３０２は、グローバルパス管理テーブル４０１における、選択データに対応するライト済みデータのデータＩＤを、比較対象データのデータＩＤに変更する。また、非同期重複排除処理部３０２は、ローカルパス管理テーブル４０２における、比較対象データの重複数を１増やす。そして、非同期重複排除処理部３０２は、選択データ及び選択データに関するフィンガープリントデータ３１２をディスク２０９から削除する。また、非同期重複排除処理部３０２は、ローカルパス管理テーブル４０２から選択データのエントリを削除する。
【００９９】
ステップＳ６０７では、比較対象データを更に選択可能か否かが判定される。比較対象データを更に選択できる場合は（Ｓ６０７：ＹＥＳ）、再度ステップＳ６０２以降の処理が行われる。
【０１００】
一方、比較対象データを更に選択できない場合は（Ｓ６０７：ＮＯ）、非同期重複排除処理部３０２は、ローカルパス管理テーブル４０２における、選択データの全体評価フラグを“Ｙ”に変更する（Ｓ６０８）。
【０１０１】
図１４は、非完全一致方式の非同期重複排除処理のフローチャートである。
【０１０２】
図１４の処理において、図１３と同一符号が付されているステップは、図１３の処理と実質的に同じである。即ち、図１４の処理では、図１３におけるステップＳ６０３〜Ｓ６０５に代えてステップＳ７０１が行われる。
【０１０３】
ステップＳ７０１では、非同期重複排除処理部３０２は、選択データに関するフィンガープリントデータ３１２と比較対象データに関するフィンガープリントデータ３１２とを比較して、選択データと比較対象データとが同一であるか否か（ここでは実質的に同じと判断できるか否か）を判定する。具体的には、非同期重複排除処理部３０２は、選択データに関するフィンガープリントデータ３１２と比較対象データに関するフィンガープリントデータ３１２とが一致した場合に、選択データと比較対象データとが同一であると判定する。なお、選択データに関するフィンガープリントデータ３１２と比較対象データに関するフィンガープリントデータ３１２とが、完全に一致しなくとも、ある程度の確率以上で一致した場合に、選択データと比較対象データとが同一であると判定されてもよい。
【０１０４】
図１５は、ランク更新処理のフローチャートである。
【０１０５】
ランク更新処理は、定期的又は不定期的に実行される。ランクが更新されることに伴って、全リスト情報３１１及び同期重複排除処理用情報３０７の内容が更新される。
【０１０６】
上述したように、ランクは、例えば、重複する可能性の高さや、重複排除処理により得られる効果の大きさに基づいて決定されるが、本実施例では、重複数に基づいて決定されるものとする。
【０１０７】
まず、リスト管理処理部３０３は、ローカルパス管理テーブル４０２で管理される格納データを、重複数の大きいものから順にソートする（Ｓ８０１）。
【０１０８】
次に、リスト管理処理部３０３は、重複数の大きいものほどより高いランクが付与されるように、ステップＳ８０１でソートされた格納データのそれぞれにランクを付与する（Ｓ８０２）。
【０１０９】
その後、リスト管理処理部３０３は、ステップＳ８０２で新たに付与されたランクに関する情報を全リスト情報３１１に登録する（Ｓ８０３）。具体的には、格納データのそれぞれについて、そのデータＩＤと、その格納データに新たに付与されたランクと、リスト世代番号との組み合わせからなるエントリを、全リスト情報３１１に追加する。この際、リスト世代番号は、新たな世代を示す番号（現在のリスト世代番号に１加えた番号）とされる。
【０１１０】
その後、リスト管理処理部３０３は、更新後の全リスト情報３１１の内容（最新世代のランク順）に合わせて、同期重複排除処理用情報３０７（部分リスト情報６０１及びキャッシュ情報６０３）の内容を更新する（Ｓ８０４）。
【０１１１】
図１６は、重複排除処理のための設定画面１６００の一例を示す図である。
【０１１２】
同図に示されるように、重複排除処理のための設定画面１６００には、例えば、入力フィールド（１）〜（５）が設けられる。
【０１１３】
入力フィールド（１）は、重複排除処理の処理タイプを設定するためのフィールドである。処理タイプとしては、例えば、クライアント１０１から受信するＩ／Ｏ要求が、ブロックレベルのＩ／Ｏ要求であるかファイルレベルのＩ／Ｏ要求であるかや、重複排除処理における同一か否かの判定方式が、完全一致方式であるか非完全一致方式であるか等がある。入力フィールド（２）は、重複排除目標値を設定するためのフィールドである。入力フィールド（３）は、比較候補の数（同期重複排除処理において比較の対象とされる格納データの数）を設定するためのフィールドである。入力フィールド（４）は、ランクを付与する際の基準（例えば、重複数の大きさ等）を設定するためのフィールドである。入力フィールド（５）は、ランクを付与する際に参照されるデータパターン（フォーマットパターン等）を入力するためのフィールドである。
【０１１４】
図１７は、モニタ画面１７００の一例を示す図である。
【０１１５】
モニタ画面１７００は、重複排除処理に関する情報（処理結果等）を表示するための画面である。モニタ画面１７００には、例えば、表示フィールド（１）〜（３）が設けられる。
【０１１６】
表示フィールド（１）は、現在の重複排除率を表示するためのフィールドである。図１７における括弧内の数値は、同期重複排除処理単独での重複排除率である。表示フィールド（２）は、ＣＰＵ２０２の使用率を表示するためのフィールドである。ＣＰＵ２０２の使用率が高すぎる場合は、管理者は、例えば、重複排除目標値を変更したり、ストレージシステム１０３の構成を変更したりする（例えば、実施例２で説明するように複数個のストレージサーバ２０１を備えるようにする）ことができる。表示フィールド（３）は、同期重複排除処理に要した処理時間の平均値を表示するためのフィールドである。この値が大きすぎる場合は、管理者は、例えば、比較候補の数を小さくしたり、ストレージシステム１０３の構成を変更したりすることができる。
【実施例２】
【０１１７】
図１８は、実施例２に係るストレージシステム１０３の構成例を示す図である。
【０１１８】
同図に示されるように、実施例２では、ストレージシステム１０３に複数のストレージサーバ２０１が備えられる。個々のストレージサーバ２０１のハードウェア構成は、実施例１（図２で示されるもの）と実質的に同じである。複数のストレージサーバ２０１のそれぞれとロードバランサ１８０１とが、例えばＬＡＮ（Local Area Network）１８０２を介して接続される。また、ロードバランサ１８０１は、通信ネットワーク１０２に接続される。
【０１１９】
図１９は、実施例２に係るストレージサーバ２０１のソフトウェア構成例を示す図である。
【０１２０】
実施例２に係るストレージサーバ２０１には、実施例１と同様の処理部３０１〜３０６が備えられる。また、実施例２に係るストレージサーバ２０１のメモリ２０４或いはディスク２０９には、実施例１と同様の情報３０７，３１０，３１１やデータ３１２が格納される。
【０１２１】
実施例２では、ストレージサーバ２０１には、更に、サーバ分割処理部１９０１と、サーバ統合処理部１９０２とが備えられる。また、ディスク２０９には、更に、サーバ管理情報１９１０が格納される。
【０１２２】
図２０は、サーバ管理情報１９１０の一例を示す図である。
【０１２３】
サーバ管理情報１９１０には、例えば、名前ハッシュ空間サーバ対応テーブル２００１と、データハッシュ空間サーバ対応テーブル２００２と、待機サーバ管理テーブル２００３とが含まれる。
【０１２４】
名前ハッシュ空間サーバ対応テーブル２００１は、名前ハッシュ値（グローバルパスから生成されるハッシュ値）の空間（名前ハッシュ空間）と、その名前ハッシュ空間に含まれる（生成されるハッシュ値がその名前ハッシュ空間内にある）グローバルパスのパス名（文字列）を管理（ディスク２０９に格納）するサーバ２０１との対応関係を示したテーブルである。例えば、グローバルパス“/groot/user1/data”の名前ハッシュ値が“0b00001111”である場合は、図２０のテーブル２００１を参照することにより、パス名“/groot/user1/data”を管理するサーバ２０１はサーバＳであることがわかる。
【０１２５】
データハッシュ空間サーバ対応テーブル２００２は、データハッシュ値（ユーザデータ又は付加データから生成されるハッシュ値）の空間（データハッシュ空間）と、そのデータハッシュ空間に含まれる（生成されるハッシュ値がそのデータハッシュ空間内にある）ユーザデータを管理（ディスク２０９に格納）するサーバ２０１との対応関係を示したテーブルである。例えば、或るユーザデータのデータハッシュ値が“0b11110000”である場合は、図２０のテーブル２００２を参照することにより、そのユーザデータを管理するサーバ２０１はサーバＮであることがわかる。
【０１２６】
待機サーバ管理テーブル２００３は、ストレージシステム１０３に備えられたストレージサーバ２０１のうち待機状態にあるサーバ（以下、「待機サーバ」）２０１を示したテーブルである。待機サーバ管理テーブル２００３は、後述するサーバ分割処理やサーバ統合処理が行われる際に参照される。
【０１２７】
図２１は、実施例２に係るライト要求処理部３０６が行う処理のフローチャートである。
【０１２８】
ライト要求を受信したストレージサーバ（以下、「要求受信サーバ」）２０１のライト要求処理部３０６は、ライト対象データ又は付加データからデータハッシュ値を生成する（Ｓ９０１）。データハッシュ値は、完全一致方式が採用される場合はライト対象データから、非完全一致方式が採用される場合は付加データから、それぞれ生成される。以下、このステップＳ９０１で生成されたデータハッシュ値を「対象データハッシュ値」と呼ぶ。
【０１２９】
次に、ライト要求処理部３０６は、データハッシュ空間サーバ対応テーブル２００２を参照し、対象データハッシュ値に基づいて、ライト対象データを管理するストレージサーバ（以下、「データ担当サーバ」）２０１を決定する（Ｓ９０２）。
【０１３０】
その後、ライト要求処理部３０６は、ステップＳ９０２で決定されたデータ担当サーバ２０１に対して、対象データハッシュ値及びライト対象データを送信する（Ｓ９０３）。
【０１３１】
対象データハッシュ値及びライト対象データを受信したデータ担当サーバ２０１は、ライト対象データをディスク２０９に格納する処理（以下、「データ格納処理」）を行う（Ｓ９０４）。データ格納処理の詳細は、後に図２２を参照して説明する。
【０１３２】
ステップＳ９０４の処理が完了すると、要求受信サーバ２０１は、ライト対象データに付与されたデータＩＤをデータ担当サーバ２０１から受信する（Ｓ９０５）。
【０１３３】
その後、要求受信サーバ２０１のライト要求処理部３０６は、ライト対象データのグローバルパス（以下、「ライト対象グローバルパス」）から名前ハッシュ値を生成する（Ｓ９０６）。以下、このステップＳ９０６で生成された名前ハッシュ値を「対象名前ハッシュ値」と呼ぶ。
【０１３４】
次に、ライト要求処理部３０６は、名前ハッシュ空間サーバ対応テーブル２００１を参照し、対象名前ハッシュ値に基づいて、ライト対象グローバルパスのパス名を管理するストレージサーバ（以下、「名前担当サーバ」）２０１を決定する（Ｓ９０７）。
【０１３５】
その後、ライト要求処理部３０６は、ステップＳ９０７で決定された名前担当サーバ２０１に対して、ライト対象グローバルパスのパス名、対象データハッシュ値、対象名前ハッシュ値及びライト対象データのデータＩＤを送信する（Ｓ９０８）。
【０１３６】
ライト対象グローバルパスのパス名、対象データハッシュ値、対象名前ハッシュ値及びライト対象データのデータＩＤを受信した名前担当サーバ２０１は、ライト対象グローバルパスのパス名をディスク２０９に格納する処理（以下、「名前格納処理」）を行う（Ｓ９０９）。名前格納処理の詳細は、後に図２４を参照して説明する。
【０１３７】
要求受信サーバ２０１が名前担当サーバ２０１から処理完了の応答を受信すると（Ｓ９１０）、本処理は終了する。
【０１３８】
図２２は、データ担当サーバ２０１が行うデータ格納処理のフローチャートである。
【０１３９】
図２２の処理は、ステップＳ１０８’及びＳ１０９’を除き、実施例１における図８〜図１１の処理と実質的に同じである。図２２におけるステップＳ１０３以外の処理は、データ担当サーバ２０１のライト要求処理部３０６により行われ、図２２におけるステップＳ１０３の処理（図９〜図１１の処理）は、データ担当サーバ２０１の同期重複排除処理部３０１により行われる。
【０１４０】
ステップＳ１０８’は、非重複データの登録処理であり、ステップＳ１０９’は、重複不明データの登録処理である。実施例２では、ストレージサーバ２０１が複数備えられるため、複数のストレージサーバ２０１のディスク２０９間で、ディスクの使用率のバランスを取ることが望まれる。ステップＳ１０８’及びＳ１０９’の処理は、図２４に示す通りである。以下、図２３を参照して説明する。
【０１４１】
まず、データ担当サーバ２０１のライト要求処理部３０６は、自サーバ２０１のディスク２０９に十分な空き容量があるかどうかを確認する（Ｓ１００１）。
【０１４２】
十分な空き容量がある場合は（Ｓ１００１：ＹＥＳ）、ライト対象データは、自サーバ２０１に格納される（Ｓ１００２）。
【０１４３】
一方、自サーバ２０１に十分な空き容量がない場合は（Ｓ１００１：ＮＯ）、ライト対象データは、空き容量に余裕のある他サーバ２０１に格納される（Ｓ１００３）。
【０１４４】
ライト対象データがディスク２０９に格納された後、ライト対象データには、データＩＤが割り当てられる（Ｓ１００４）。ライト対象データに割り当てられるデータＩＤは、ハッシュ空間単位でユニークな値とされてもよいし、ストレージシステム１０３全体でユニークな値とされてもよい。ハッシュ空間単位でユニークな値とされる場合は、データハッシュ値とデータＩＤの組み合わせで、ユーザデータが特定される事になる。
【０１４５】
次に、ライト要求処理部３０６は、ローカルパス管理テーブル４０２に、ライト対象データに関するエントリを追加する（Ｓ１００５）。非重複データの場合は、全体評価フラグが“Ｙ”とされ、重複不明データの場合は、全体評価フラグが“Ｎ”とされる。
【０１４６】
なお、実施例２においても非同期重複排除処理が実行される。実施例２における非同期重複排除処理は、実施例１（図１２〜図１４）と実質的に同じである。
【０１４７】
図２４は、名前担当サーバ２０１が行う名前格納処理のフローチャートである。
【０１４８】
ライト対象グローバルパスのパス名、対象データハッシュ値、対象名前ハッシュ値及びライト対象データのデータＩＤを受信した名前担当サーバ２０１は、受信した内容をグローバルパス管理テーブル４０１に登録する（Ｓ１１０１）。
【０１４９】
図２５は、第二のモニタ処理のフローチャートである。
【０１５０】
第二のモニタ処理は、サーバ分割処理或いはサーバ統合処理を行うか否かを決定するためにモニタ処理部３０４により行われる処理である。第一のモニタ処理と同様に、モニタ処理部３０４は、任意のタイミングで第二のモニタ処理を行うことができるが、以下では、定期的に（例えば、数時間或いは数週間おきに）行われる場合を例に挙げて説明する。
【０１５１】
モニタ処理部３０４は、一定期間（例えば、数時間或いは数週間等）待機した後（Ｓ１２０１）、ストレージサーバ２０１の負荷を計算し、ストレージサーバ２０１の負荷の高低を判定する（Ｓ１２０２）。
【０１５２】
ストレージサーバ２０１の負荷が適切であると判定された場合は（Ｓ１２０２：Ｍｉｄｄｌｅ）、モニタ処理部３０４は、再度一定期間待機する（Ｓ１２０１）。
【０１５３】
一方、ストレージサーバ２０１の負荷が高いと判定された場合又は低いと判定された場合は（Ｓ１２０２：Ｈｉｇｈ又はＬｏｗ）、重複排除率が計算され、重複排除率の高低が判定される（Ｓ１２０３、Ｓ１２０４）。
【０１５４】
ストレージサーバ２０１の負荷が高く且つ重複排除率が低いと判定された場合は（Ｓ１２０３：Ｌｏｗ）、サーバ分割処理が実行される（Ｓ１２０５）。サーバ分割処理の詳細については、後に図２６を参照して説明する。
【０１５５】
ストレージサーバ２０１の負荷が低く且つ重複排除率が高いと判定された場合は（Ｓ１２０４：Ｈｉｇｈ）、サーバ統合処理が実行される（Ｓ１２０６）。サーバ統合処理の詳細については、後に図２７を参照して説明する。
【０１５６】
ストレージサーバ２０１の負荷が高く且つ重複排除率が低くはないと判定された場合は（Ｓ１２０３：ＮＯ  Ｌｏｗ）、或いは、ストレージサーバ２０１の負荷が低く且つ重複排除率が高くはないと判定された場合は（Ｓ１２０４：ＮＯ  Ｈｉｇｈ）、モニタ処理部３０４は、再度一定期間待機する（Ｓ１２０１）。
【０１５７】
図２６は、サーバ分割処理のフローチャートである。
【０１５８】
まず、サーバ分割処理部１９０１は、待機サーバ管理テーブル２００３を参照して、待機サーバ２０１を２台確保する（Ｓ１３０１）。
【０１５９】
次に、サーバ分割処理部１９０１は、分割の対象とされるストレージサーバ（以下、「分割対象サーバ」）２０１が管理する名前ハッシュ空間及びデータハッシュ空間（以下、両ハッシュ空間をあわせて「担当ハッシュ空間」という）を、それぞれ分割する（Ｓ１３０２）。例えば、担当ハッシュ空間が“0ｂ1*”であった場合は、“0ｂ10*”と“0ｂ11*”との二つに均等に分割されてもよいし、“0ｂ100*”と“0ｂ101*”＋“0ｂ11*”との二つに分割されてもよい。担当ハッシュ空間の分割は、例えば、ストレージサーバ２０１の負荷を考慮して行われる。分割されたハッシュ空間のそれぞれは、ステップＳ１３０１で確保された待機サーバ（以下、「分割後サーバ」）２０１のいずれか一方が担当することになる。以下、分割後サーバ２０１が担当することになる、分割後のハッシュ空間を、「分割後担当ハッシュ空間」と呼ぶ。
【０１６０】
次に、サーバ分割処理部１９０１は、分割後サーバのそれぞれに、分割後担当ハッシュ空間に相当する管理情報（ユーザデータ管理情報３１０のうちの分割後担当ハッシュ空間に関する部分及び全リスト情報３１１のうちの分割後担当ハッシュ空間に関する部分）を転送する（Ｓ１３０３）。
【０１６１】
次に、サーバ分割処理部１９０１は、各分割後担当ハッシュ空間について、そのハッシュ空間に含まれるユーザデータ（以下、「分割対象ユーザデータ」）に関する同期重複排除処理情報３０７を生成する。そして、サーバ分割処理部１９０１は、その生成した同期重複排除処理情報３０７を、その分割後担当ハッシュ空間を担当する分割後サーバ２０１のメモリ２０４へ書き込む（Ｓ１３０４）。つまり、分割対象ユーザデータと、分割対象ユーザデータに関するフィンガープリントデータ３１２と、分割対象ユーザデータに関して生成された部分リスト情報６０１及びサマリビットマップ６０２とが、分割後サーバ２０１のメモリ２０４に書き込まれる。
【０１６２】
次に、サーバ分割処理部１９０１は、サーバ管理情報１９１０を分割後の内容に変更し、その変更を他のストレージサーバ２０１へ通知する（Ｓ１３０５）。
【０１６３】
サーバ管理情報１９１０の変更通知及び分割後サーバ２０１へのデータ移行が全て完了した後、サーバ分割処理部１９０１は、分割対象サーバ２０１を待機サーバ管理テーブル２００３へ登録する（Ｓ１３０６）。
【０１６４】
なお、本実施例では、待機サーバ２０１を２台確保し、分割対象サーバ２０１の処理の全部を待機サーバ２０１が行うようにする方式を採用したが、待機サーバ２０１を１台確保して、分割対象サーバ２０１の処理の一部を待機サーバ２０１が行うようにする方式が採用されてもよい。
【０１６５】
図２７は、サーバ統合処理のフローチャートである。
【０１６６】
本処理は、統合の対象とされるストレージサーバ（以下、「統合対象サーバ」）２０１のうちの一つサーバ２０１のサーバ統合処理部１９０２により行われる。
【０１６７】
まず、サーバ統合処理部１９０２は、他に統合対象サーバ２０１として適切なサーバ２０１が存在するか否かを判定する（Ｓ１４０１）。
【０１６８】
統合対象サーバ２０１として適切なサーバ２０１が存在しない場合は（Ｓ１４０１：ＮＯ）、サーバ統合処理部１９０２は、処理を終了する。
【０１６９】
一方、統合対象サーバ２０１として適切なサーバ２０１が存在する場合は（Ｓ１４０１：ＹＥＳ）、サーバ統合処理部１９０２は、その適切なサーバ２０１をもう一台の統合対象サーバ２０１と決定する。即ち、本実施例では、本処理を実行しているサーバ２０１と、前記決定されたサーバ２０１との２台が、統合対象サーバ２０１となる。サーバ統合処理部１９０２は、待機サーバ管理テーブル２００３を参照して、待機サーバ２０１を１台確保する（Ｓ１４０２）。
【０１７０】
次に、サーバ統合処理部１９０２は、ステップＳ１４０２で確保された待機サーバ（「統合後サーバ」）２０１に、各統合対象サーバが担当するハッシュ空間（以下、「統合前担当ハッシュ空間」）に相当する管理情報（ユーザデータ管理情報３１０のうちの統合前担当ハッシュ空間に関する部分及び全リスト情報３１１のうちの統合前担当ハッシュ空間に関する部分）のそれぞれを転送する（Ｓ１４０３）。二つの統合前担当ハッシュ空間は、統合後サーバ２０１が担当する一つのハッシュ空間（以下、「統合後担当ハッシュ空間」）に統合される。
【０１７１】
次に、サーバ統合処理部１９０２は、統合後担当ハッシュ空間について、そのハッシュ空間に含まれるユーザデータ（以下、「統合対象ユーザデータ」）に関する同期重複排除処理情報３０７を生成する。そして、サーバ統合処理部１９０２は、その生成した同期重複排除処理情報３０７を、その統合後担当ハッシュ空間を担当する統合後サーバ２０１のメモリ２０４へ書き込む（Ｓ１４０４）。つまり、統合対象ユーザデータと、統合対象ユーザデータに関するフィンガープリントデータ３１２と、統合対象ユーザデータに関して生成された部分リスト情報６０１及びサマリビットマップ６０２とが、統合後サーバ２０１のメモリ２０４に書き込まれる。
【０１７２】
次に、サーバ統合処理部１９０２は、サーバ管理情報１９１０を統合後の内容に変更し、その変更を他のストレージサーバ２０１へ通知する（Ｓ１４０５）。
【０１７３】
サーバ管理情報１９１０の変更通知及び統合後サーバ２０１へのデータ移行が全て完了した後、サーバ統合処理部１９０２は、統合対象サーバ２０１のそれぞれを待機サーバ管理テーブル２００３へ登録する（Ｓ１４０６）。
【０１７４】
なお、本実施例では、待機サーバ２０１を１台確保し、統合対象サーバ２０１のそれぞれの処理の全部を待機サーバ２０１が行うようにする方式を採用したが、待機サーバ２０１を確保せずに、統合対象サーバ２０１のいずれか一方へ統合する方式が採用されてもよい。
【０１７５】
上述した本発明の幾つかの実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
【符号の説明】
【０１７６】
１０１…クライアント、１０２…通信ネットワーク、１０３…ストレージシステム
【図１】
0005303038.tif 000002
【図２】
0005303038.tif 000003
【図３】
0005303038.tif 000004
【図４】
0005303038.tif 000005
【図５】
0005303038.tif 000006
【図６】
0005303038.tif 000007
【図７】
0005303038.tif 000008
【図８】
0005303038.tif 000009
【図９】
0005303038.tif 000010
【図１０】
0005303038.tif 000011
【図１１】
0005303038.tif 000012
【図１２】
0005303038.tif 000013
【図１３】
0005303038.tif 000014
【図１４】
0005303038.tif 000015
【図１５】
0005303038.tif 000016
【図１６】
0005303038.tif 000017
【図１７】
0005303038.tif 000018
【図１８】
0005303038.tif 000019
【図１９】
0005303038.tif 000020
【図２０】
0005303038.tif 000021
【図２１】
0005303038.tif 000022
【図２２】
0005303038.tif 000023
【図２３】
0005303038.tif 000024
【図２４】
0005303038.tif 000025
【図２５】
0005303038.tif 000026
【図２６】
0005303038.tif 000027
【図２７】
0005303038.tif 000028