(57)【特許請求の範囲】
【請求項１】
第一の記憶領域を有する、第一のファイルサーバと、
第一のファイルサーバに接続され、第二の記憶領域を有する、１以上の第二のファイルサーバと、
前記第一のファイルサーバおよび前記第二のファイルサーバに接続される１以上の計算機と、
前記第一のファイルサーバ、前記１以上の第二のファイルサーバ及び前記１以上の計算機に接続されるメタデータサーバと、
を有するストレージシステムにより実現されるファイル管理方法であって、
前記計算機は、第一のファイルに格納されるデータ列を、第一の断片データ列を含む１以上の断片データ列へ分割し、
前記第一のファイルサーバは、前記第一の断片データ列を格納する第一の断片ファイルを、前記第一の記憶領域に格納し、
前記計算機は、第二のファイルに格納されるデータ列を、第二の断片データ列を含む1以上の断片データ列へ分割し、
前記１以上の第二のファイルサーバは、前記第二の断片データ列を格納する第二の断片ファイルを前記第二の記憶領域に格納し、
前記メタデータサーバは、一定期間更新されていないファイルの特徴情報に一致する複数のファイルで構成される類似グループに含まれるファイルの数が、既定数となった場合に、前記類似グループに含まれる前記複数のファイルのレイアウトを含む重複排除処理の実行指示を、前記類似グループに含まれるファイルを分割して格納する複数のファイルサーバに送信し、
前記第一のファイルサーバは、
前記類似グループに含まれるファイルを分割して格納する前記複数のファイルサーバのうちの任意の１のファイルサーバであり、
前記重複排除処理の実行指示を受信し、
前記第一の断片データ列から第一の特徴情報を算出し、
前記１以上の第二のファイルサーバは、
前記類似グループに含まれるファイルを分割して格納する前記複数のファイルサーバのうちの、第一のファイルサーバを除くファイルサーバであり、
前記重複排除処理の実行指示を受信し、
前記複数のファイルのレイアウトから前記第一のファイルを格納する前記第一のファイルサーバを、コーディネータの役割をになうファイルサーバであると特定し、
前記第二の断片データ列から第二特徴情報を算出し、
前記第二の特徴情報を前記第一のファイルサーバへ送信し、
前記第一のファイルサーバは、
前記１以上の第二のファイルサーバから１以上の第二の特徴情報を受信し、
前記第一のファイルサーバ及び前記１以上の第二のファイルサーバのうち、前記第一の特徴情報と前記１以上の第二の特徴情報とで一致する特徴情報を有する２以上のファイルサーバをグループ化し、グループ化された２以上のファイルサーバから、前記第一または第二の断片データ列のうち削除対象の断片データ列以外の断片データ列を有するファイルサーバである代表サーバを決定し、
前記代表サーバの識別情報を前記代表サーバ以外の前記第二のファイルサーバへ送信し、
前記第一のファイルサーバは、
自身が前記代表サーバ以外のファイルサーバならば、前記第一の断片データ列を削除し、
前記第一の断片ファイルを、前記代表サーバが有する第二の断片データ列を指示するスタブへ変更し、
第二のファイルサーバは、
自身が前記代表サーバ以外のファイルサーバならば、前記第二の断片データ列を削除し、
前記第二の断片ファイルを、前記代表サーバが有する第一又は第二の断片データ列を指示するスタブへ変更することを特徴とする
ファイル管理方法。
【請求項２】
請求項１に記載のファイル管理方法であって、
前記第一のファイルサーバは、前記第一の断片ファイルを格納する第一の記憶領域に、第一のファイルシステムを構成し、
前記１以上の第二のファイルサーバは、前記第二の断片ファイルを格納する第二の記憶領域に、第二のファイルシステムを構成し、
前記第一のファイルサーバは、前記第二のファイルシステムの容量利用率を前記１以上の第二のファイルサーバから取得し、
前記第一のファイルサーバは、前記第一のファイルシステム及び一以上の第二のファイルシステムの容量利用率に応じて、前記容量利用率が最も少ないファイルシステム以外のファイルシステムが有する第一又は第二の断片データ列を前記削除対象の断片データ列として決定することを特徴とする
ファイル管理方法。
【請求項３】
請求項１に記載のファイル管理方法であって、
前記第一のファイルサーバは、第一のプロセッサを有し、
前記１以上の第二のファイルサーバは、第二のプロセッサを有し、
前記第一のファイルサーバは、前記第二のプロセッサの利用率を前記１以上の第二のファイルサーバから取得し、
前記第一のファイルサーバは、前記第一及び第二のプロセッサの利用率に応じて、前記プロセッサの利用率が少ないファイルサーバ以外のファイルサーバが有する第一又は第二の断片データ列を前記削除対象の断片データ列として決定することを特徴とする
ファイル管理方法。
【請求項４】
請求項２又は３に記載のファイル管理方法であって、
前記第一の断片データ列が、削除対象の断片データ列として削除された場合、
前記第一のファイルサーバは、前記計算機より前記スタブに対してデータの読み出し要求を受けた場合には、前記計算機に対して、前記第二の断片データ列が格納されている、前記１以上の第二のファイルサーバの識別情報を応答することを特徴とする
ファイル管理方法。
【請求項５】
請求項４に記載のファイル管理方法であって、
前記第一のファイルサーバは、計算機より前記スタブに対してデータの書き込み要求を受けた場合には、前記スタブを第三の断片ファイルへ変更し、前記第二の断片データ列の複製を前記第三の断片ファイルへ格納し、前記第三の断片ファイルに、前記計算機より書き込みを要求された前記データを格納することを特徴とする
ファイル管理方法。
【請求項６】
請求項５に記載のファイル管理方法であって、
前記１以上の第二のファイルサーバは、計算機より前記第二の断片ファイルに対してデータの書き込み要求を受けた場合には、前記第二の断片ファイルを第四の断片ファイルへ複製し、前記第二の断片ファイルに前記計算機より書き込みを要求された前記データを格納することを特徴とする
ファイル管理方法。
【請求項７】
請求項６に記載のファイル管理方法であって、
前記第一のファイルと前記第二のファイルは、前記１以上の断片データ列の内、特定の１以上の断片データ列から算出されるハッシュ値が同一であることを特徴とする
ファイル管理方法。
【請求項８】
請求項７に記載のファイル管理方法であって、
前記第一のファイルと前記第二のファイルは、サイズが同一であることを特徴とする
ファイル管理方法。
【請求項９】
第一の記憶領域を有する、第一のファイルサーバと、
第一のファイルサーバに接続され、第二の記憶領域を有する、１以上の第二のファイルサーバと、
前記第一のファイルサーバおよび前記１以上の第二のファイルサーバに接続される１以上の計算機と、
前記第一のファイルサーバ、前記１以上の第二のファイルサーバ及び前記１以上の計算機に接続されるメタデータサーバと、
を有するストレージシステムにおいて、
前記計算機は、第一のファイルに格納されるデータ列を、第一の断片データ列を含む１以上の断片データ列へ分割し、
前記第一のファイルサーバは、前記第一の断片データ列を格納する第一の断片ファイルを、前記第一の記憶領域に格納し、
前記計算機は、第二のファイルに格納されるデータ列を、第二の断片データ列を含む１以上の断片データ列へ分割し、
前記１以上の第二のファイルサーバは、前記第二の断片データ列を格納する第二の断片ファイルを前記第二の記憶領域に格納し、
前記メタデータサーバは、一定期間更新されていないファイルの特徴情報に一致する複数のファイルで構成される類似グループに含まれるファイルの数が、既定数となった場合に、前記類似グループに含まれる前記複数のファイルのレイアウトを含む重複排除処理の実行指示を、前記類似グループに含まれるファイルを分割して格納する複数のファイルサーバに送信し、
前記第一のファイルサーバは、
前記類似グループに含まれるファイルを分割して格納する前記複数のファイルサーバのうちの任意の１のファイルサーバであり、
前記重複排除処理の実行指示を受信し、
前記第一の断片データ列から第一の特徴情報を算出し、
前記１以上の第二のファイルサーバは、
前記類似グループに含まれるファイルを分割して格納する前記複数のファイルサーバのうちの、第一のファイルサーバを除くファイルサーバであり、
前記重複排除処理の実行指示を受信し、
前記複数のファイルのレイアウトから前記第一のファイルを格納する前記第一のファイルサーバを、コーディネータの役割をになうファイルサーバであると特定し、
前記第二の断片データ列から第二特徴情報を算出し、
前記第二の特徴情報を前記第一のファイルサーバへ送信し、
前記第一のファイルサーバは、
前記１以上の第二のファイルサーバから１以上の第二の特徴情報を受信し、
前記第一のファイルサーバ及び前記１以上の第二のファイルサーバのうち、前記第一の特徴情報と前記１以上の第二の特徴情報とで一致する特徴情報を有する２以上のファイルサーバをグループ化し、グループ化された２以上のファイルサーバから、前記第一または第二の断片データ列のうち削除対象の断片データ列以外の断片データ列を有するファイルサーバである代表サーバを決定し、
前記代表サーバの識別情報を前記代表サーバ以外の前記第二のファイルサーバへ送信し、
前記第一のファイルサーバは、
自身が前記代表サーバ以外のファイルサーバならば、前記第一の断片データ列を削除し、
前記第一の断片ファイルを、前記代表サーバが有する第二の断片データ列を指示するスタブへ変更し、
第二のファイルサーバは、
自身が前記代表サーバ以外のファイルサーバならば、前記第二の断片データ列を削除し、
前記第二の断片ファイルを、前記代表サーバが有する第一又は第二の断片データ列を指示するスタブへ変更することを特徴とする
ストレージシステム。
【請求項１０】
請求項９に記載のストレージシステムであって、
前記第一のファイルサーバは、前記第一の断片ファイルを格納する第一の記憶領域に、第一のファイルシステムを構成し、
前記１以上の第二のファイルサーバは、前記第二の断片ファイルを格納する第二の記憶領域に、第二のファイルシステム構成し、
前記第一のファイルサーバは、前記第二のファイルシステムの容量利用率を前記１以上の第二のファイルサーバから取得し、
前記第一のファイルサーバは、前記第一のファイルシステム及び一以上の第二のファイルシステムの容量利用率に応じて、前記容量利用率が最も少ないファイルシステム以外のファイルシステムが有する第一又は第二の断片データ列を前記削除対象の断片データ列として決定することを特徴とする
ストレージシステム。
【請求項１１】
請求項９に記載のストレージシステムであって、
前記第一のファイルサーバは、第一のプロセッサを有し、
前記１以上の第二のファイルサーバは、第二のプロセッサを有し、
前記第一のファイルサーバは、前記第二のプロセッサの利用率を前記１以上の第二のファイルサーバから取得し、
前記第一のファイルサーバは、前記第一及び第二のプロセッサの利用率に応じて、前記プロセッサの利用率が少ないファイルサーバ以外のファイルサーバが有する第一又は第二の断片データ列を前記削除対象の断片データ列として決定することを特徴とする
ストレージシステム。
【請求項１２】
請求項１０又は１１に記載のストレージシステムであって、
前記第一の断片データ列が、削除対象断片データ列として削除された場合、
前記第一のファイルサーバは、前記計算機より前記スタブに対してデータの読み出し要求を受けた場合には、前記計算機に対して、前記第二の断片データ列が格納されている、前記１以上の第二のファイルサーバの識別情報を応答することを特徴とする
ストレージシステム。
【請求項１３】
請求項１２に記載のストレージシステムであって、
前記第一のファイルサーバは、計算機より前記スタブに対してデータの書き込み要求を受けた場合には、前記スタブを第三の断片ファイルへ変更し、前記第二の断片データ列の複製を前記第三の断片ファイルへ格納し、前記第三の断片ファイルに、前記計算機より書き込みを要求された前記データを格納することを特徴とする
ストレージシステム。
【請求項１４】
請求項１３に記載のストレージシステムであって、
前記１以上の第二のファイルサーバは、計算機より前記第二の断片ファイルに対してデータの書き込み要求を受けた場合には、前記第二の断片ファイルを第四の断片ファイルへ複製し、前記第二の断片ファイルに前記計算機より書き込みを要求された前記データを格納することを特徴とする
ストレージシステム。
【請求項１５】
請求項１４に記載のストレージシステムであって、
前記第一のファイルと前記第二のファイルは、前記1以上の断片データ列の内、特定の1以上の断片データ列から算出されるハッシュ値が同一であることを特徴とする
ストレージシステム。
【請求項１６】
請求項１５に記載のストレージシステムであって、
前記第一のファイルと前記第二のファイルは、サイズが同一であることを特徴とする
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散ファイルシステムにおいて、データが重複して格納されている場合に、重複するデータを削除する方法に関する。
【背景技術】
【０００２】
複数のデータ格納サーバにファイルを分散して格納する分散ファイルシステムの技術が開発されている。分散ファイルシステムを適用したストレージシステムでは、記憶容量を備えたデータ格納サーバをストレージシステムに追加することができる。これにより、記憶容量やI/O性能の不足を容易に解消できる。
【０００３】
分散ファイルシステムの一例として、IETF（Internet Engineering Task Force）によるNFS （Network File System）バージョン4.1が挙げられる。NFSバージョン4.1は、分散ファイルシステムの一つであるpNFS（Parallel NFS）の仕様を含む。pNFSでは、ストレージシステムは、全てのファイルのメタデータを集中管理するメタデータサーバと、ファイルの内容を断片化し分散して格納する複数のストレージサーバから構成される。ストレージシステムのクライアントとなる計算機は、ファイルにアクセスする場合、まずメタデータサーバより所望のファイルがどのストレージサーバに分散配置されているかの情報を得て、次にその情報に基づいて適切なストレージサーバへアクセスする。
【０００４】
また、重複データ排除技術がある。例えば、特許文献1は、ファイルの長期保存に適した重複データ排除技術を開示している。特許文献1に開示されているストレージシステムは、複数のデータ格納ノードからなる。このストレージシステムへファイルを格納すると、ファイルは断片に分割され複数のノードに分散して格納される。各ノードには格納するファイルの断片のハッシュ値の範囲が予め定義されている。もし、ファイルの断片から算出したハッシュ値と同じハッシュ値を持つファイルの断片がすでにノードに格納されている場合は、ノードはその断片を格納しない。これにより、同じ内容のファイルを幾つも格納することがないため、重複データの排除が可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国2001/0037323号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
非構造化データ（ファイルデータ）の増大により、ストレージ調達コストの増大やバックアップ等の運用管理コストの増大が企業内情報システムにおける課題となっている。
【０００７】
分散ファイルシステムでは、記憶容量やI/O性能の不足をノードの追加により解消できるものの、ノードを追加すると上記コストが増加する。
【０００８】
分散ファイルシステムと重複データ排除技術を組み合せることにより、スケーラブルかつ空間効率のよいストレージシステムを構成でき、上記コストの低減が期待できる。しかし、特許文献1の技術は、pNFSのような分散ファイルシステムへの適用に適さない。
【０００９】
特許文献1が開示するストレージシステムでは、もし格納されたファイルの断片への変更が行われた場合、そのファイルの断片のハッシュ値が変わるため、ファイルの断片を適切なノードへ再配置する必要がある。従って、クライアントがストレージサーバに格納されたファイルの断片へ直接データを書き込むことができるpNFSのような分散ファイルシステムに対して、特許文献1の技術を適用すると、ファイルへデータを書き込む度にファイルの断片のハッシュ値を計算し直す必要があり、また、データの再配置を行う必要があるため、ストレージシステムの負荷が増大し性能が低下する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明のストレージシステムは、第一の記憶領域を有する、第一のファイルサーバと、第一のファイルサーバに接続され、第二の記憶領域を有する、第二のファイルサーバと、第一のファイルサーバおよび前記第二のファイルサーバに接続される１以上の計算機と、を有する。また、計算機は、一のファイルに格納されるデータ列を、第一の断片データ列を含む１以上の断片データ列へ分割し、第一のファイルサーバは、前記第一の断片データ列を格納する第一の断片ファイルを、前記第一の記憶領域に格納し、計算機は、第二のファイルに格納されるデータ列を、第二の断片データ列を含む1以上の断片データ列へ分割し、第二のファイルサーバは、第二の断片データ列を格納する第二の断片ファイルを第二の記憶領域に格納し、第一のファイルサーバは、第一の断片データ列が、前記第二の断片データ列と一致するならば、前記第一の断片データ列を削除し、前記第一の断片ファイルを、前記第二の断片データ列を指示するスタブへ変更する。
【発明の効果】
【００１１】
分散ファイルシステムにおいて、負荷の少ない重複データ排除方法を提供する。
【図面の簡単な説明】
【００１２】
【図１】計算機システムの概要を説明する図である。
【図２】メタデータサーバ1の一例を説明する図である。
【図３】ストレージサーバ管理テーブル121の一例を説明する図である。
【図４】レイアウトテーブル122の一例を説明する図である。
【図５】分散ファイル属性テーブル123の一例を説明する図である。
【図６】類似グループテーブル124の一例を説明する図である。
【図７】ストレージサーバ2の構成を説明する図である。
【図８】ファイルシステム26の一例を説明する図である。
【図９】類似グループ作成処理の一例を説明するフローチャートである。
【図１０】重複排除処理の一例を説明するフローチャートである。
【図１１】ファイル断片排除サーバ間合意処理の一例を説明するフローチャートである。
【図１２】ファイル断片排除サーバ間合意処理の一例を説明するフローチャートである。
【図１３】ファイル断片排除処理の一例を説明するフローチャートである。
【図１４】ファイルリード処理の一例を説明するフローチャートである。
【図１５】ファイルライト処理の一例を説明するフローチャートである。
【図１６】計算機システムの概要を説明する図である。
【発明を実施するための形態】
【実施例１】
【００１３】
本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組み合せの全てが発明の解決手段に必須であるとは限らない。
【００１４】
まず、本発明の一実施形態に係る計算機システムの概要を説明する。
＜図1：概要＞
図1は、本発明の第一の実施形態に係る計算機システムの概要を説明する図である。
【００１５】
図1の計算機システムは、メタデータサーバ1および複数のストレージサーバ2aないし2lからなるストレージシステム10と、ストレージシステムに対してデータの読み書きを行う計算機3、および、これらを接続するLAN4を含む。
【００１６】
フォールトトレランスのために、メタデータサーバ1は複数あってもよい。この場合、メタデータサーバ1のメモリに格納される様々な情報は、複数のメタデータサーバ1の間で共有される。情報の共有の手段は、共有ディスクを用いる方法や、分散コミットアルゴリズム、コンセンサスアルゴリズムを応用する方法が考えられる。
【００１７】
また、計算機3は複数あってもよい。
【００１８】
メタデータサーバ1、ストレージサーバ2、計算機3は、それぞれLAN4を介して通信する。通信には、ネットワークプロトコルとしてIP（Internet Protocol）を利用する。サーバ1、ストレージサーバ2、計算機3にはIPアドレスが設定されており、通信相手の宛先を示す情報として利用される。
【００１９】
なお、以降、ストレージサーバ2a〜2lのいずれかのストレージサーバを代表するストレージサーバを、指示番号2で示す。
【００２０】
計算機3は、ストレージストレージシステム10に格納された所望のファイル （以降、ストレージシステム10に分散して格納されるファイルを分散ファイルと呼ぶ）にアクセスする場合、まず、メタデータサーバ1に対して所望の分散ファイルがどのストレージサーバ2に分散して格納されているかの情報を得る。次に、得られた情報に基づいて、適切なストレージサーバ2にアクセスし、所望の分散ファイルの所望のアドレスにアクセスする。
【００２１】
分散ファイルは、固定の大きさ（例えば16キロバイト）に分割され（以降、分散ファイルを分割したデータ列をファイル断片と呼ぶ）、ストレージサーバ2に格納される。また、各分散ファイルには一意な分散ファイル識別番号が設定されている。破線囲み500は、分散ファイル識別番号が110である分散ファイル（以降、単に分散ファイル110のように表記する）が、ストレージサーバ2a、ストレージサーバ2b、ストレージサーバ2cに分割されて格納されている様子を示している。ストレージサーバ2a、ストレージサーバ2b、ストレージサーバ2cは、分散ファイル110のファイル断片54a、54b、54cをそれぞれ格納している。破線囲み501〜503も同様に、それぞれ分散ファイル220、330、440が分割されて格納されている様子を示している。
【００２２】
分散ファイルのファイル断片がどのようにストレージサーバ2に格納されているかの情報を、以降レイアウトと呼ぶ。レイアウトはメタデータサーバ1のメモリに格納したレイアウトテーブル122に記録する。また、各分散ファイルの更新時刻等の属性情報は、メタデータサーバ1の分散ファイル属性テーブル123に格納する。
【００２３】
各分散ファイルのレイアウトは、ストレージサーバ2がラウンドロビン方式や各ストレージサーバ2の空き容量等に基づき決定する。
【００２４】
計算機3が分散ファイルを初めて格納する場合は、まずストレージサーバ2よりレイアウトを得て、レイアウトに基づき分散ファイルをファイル断片へ分割し、各ファイル断片をレイアウトに従って適切なストレージサーバ2へ格納する。
【００２５】
以下では、重複排除処理の流れを説明する。
【００２６】
メタデータサーバ1は、分散ファイル属性テーブル123を参照し、一定期間更新されていない分散ファイルを抽出し、これらの分散ファイルで類似性が認められる分散ファイルを類似グループとして類似グループテーブル124へ登録する。この処理は、メタデータサーバ1が定期的に行ってもよいし、メタデータサーバ1の負荷（CPU利用率）が低下している間に行ってもよい。図1では、分散ファイル110、220、330、440が類似グループ1241として登録されている様子を示している。
【００２７】
類似グループ1241のように、既定数（例えば4）の分散ファイルを含むグループが形成されたことを契機として、メタデータサーバ1は、これらの分散ファイルを分散して格納しているストレージサーバ2に対して、分散ファイルの重複排除処理の実行を指示する。
【００２８】
メタデータサーバ1は、まず類似グループ1241に含まれる分散ファイル110、220、330、440の先頭のファイル断片を格納しているストレージサーバ2a、2d、2g、2jに対して、これらの分散ファイルの重複排除処理を指示する。この指示を受けたストレージサーバ2a、2d、2g、2jは、それぞれが格納しているファイル断片511、512、513、514について、そのハッシュ値を算出し、相互にハッシュ値を比較し、ハッシュ値が同じであるストレージサーバを同一断片グループとする。図1では、ハッシュ値の比較の結果、ファイル断片511〜514のハッシュ値が同じであるため、一つの同一断片グループ510が形成されたことを示している。
【００２９】
次に、ポリシーに従って同一断片グループのファイル断片が格納されるストレージサーバの一つが選択される。そして、選択されたストレージサーバに格納されているファイル断片を残して、他のストレージサーバのファイル断片は削除される。図1では、同一断片グループ510のストレージサーバ2aのファイル断片を残し（図では網掛けで示している）、残りのストレージサーバ2d、2g、2jのファイル断片を排除する様子を示している。
【００３０】
次に、ストレージサーバ2a、2d、2g、2jは、それぞれ次のファイル断片を格納しているストレージサーバ2b、2e、2h、2kに、同様に重複排除処理の実行を指示する。ストレージサーバ2b、2e、2h、2kは、上記と同様の処理を行い、各分散ファイルの2番目のファイル断片について重複排除処理を行う。図1では、同一断片グループ520と530が形成され、ストレージサーバ2eとストレージサーバ2hのファイル断片が残ることを示している。
【００３１】
このように、重複データ排除の対象とする分散ファイルを適切な方法で特定し、次いで各ストレージサーバ2が協調して分散ファイルの重複データ排除を再配置することなく行うことにより、分散ファイルシステムであっても処理負荷の少ない重複データ排除を実現できる。また、重複データの検出は各ストレージサーバ2が協調して行うことにより、負荷の特定のサーバへの集中を回避できる。
＜図2：メタデータサーバ＞
図2は、本発明の第一の実施形態に係るメタデータサーバ1の一例を説明する図である。
【００３２】
メタデータサーバ1は、プロセッサ11と、メモリ12と、ネットワークインタフェース13と、記憶装置14を有する。これらはバス15により相互に接続される。
【００３３】
プロセッサ11は、メモリ12に格納されたプログラムやデータを用いて各種処理を実行する。
【００３４】
ネットワークインタフェース13は、LAN4を介して計算機3およびストレージサーバ2とのデータの入出力を制御する。
【００３５】
記憶装置14は、メタデータサーバ1で実行されるプログラムや、プログラムに使用されるデータを格納する。
【００３６】
メモリ12には、ストレージサーバ管理テーブル121と、レイアウトテーブル122と、分散ファイル属性テーブル123と、類似グループテーブル124と、重複排除ポリシー125の各種データが格納される。また、メモリ12には、メタデータ要求処理プログラム126と、類似分散ファイル抽出プログラム127と、ストレージサーバ制御プログラム128と、オペレーティングシステム129の各種プログラムが格納される。これらのプログラムがプロセッサ11によって実行されることにより、メタデータサーバ1はメタデータ要求処理部、類似分散ファイル抽出部、ストレージサーバ制御部、オペレーティングシステム処理部が形成される。以降、プログラムと処理部とを区別することなく説明する。
＜図3：ストレージサーバ管理テーブル＞
図3は、本発明の第一の実施形態に係るストレージサーバ管理テーブル121の一例を説明する図である。
【００３７】
ストレージサーバ管理テーブル121は、ストレージサーバ識別情報フィールド1211と、IPアドレスフィールド1212を有するレコードを格納する。各レコードは、それぞれストレージサーバ2a〜2lに対応しており、それぞれ対応するストレージサーバ2に関する情報を格納する。
【００３８】
各レコードのストレージサーバ識別情報フィールド1212には、対応するストレージサーバ2の識別情報が格納される。ストレージサーバ2の識別情報とは、各ストレージサーバ2に割り当てられた一意な名称である。本実施形態では、各ストレージサーバ2を一文字のアルファベットにより識別する。例えば、ストレージサーバ2aの識別情報を「A」とする。
【００３９】
各レコードのIPアドレスフィールド1212には、対応するストレージサーバ2に設定されたIPアドレスが格納される。各ストレージサーバ2には複数のIPアドレスを設定してもよい。
【００４０】
ストレージサーバ管理テーブルの一例として、図3では、ストレージサーバ管理テーブル121の第一のレコードにはストレージサーバ2aに関する情報が格納されており、ストレージサーバ2aの識別情報が「A」であり、そのIPアドレスが10.0.0.1と10.0.1.1であることを示している。
＜図4：レイアウトテーブル＞
図4は、本発明の第一の実施形態に係るレイアウトテーブル122の一例を説明する図である。
【００４１】
レイアウトテーブル122は、分散ファイル識別番号フィールド1221、ファイル断片番号フィールド1222、ストレージサーバフィールド1223、ファイル断片識別情報フィールド1224を有するレコードを格納する。
【００４２】
レイアウトテーブル122の各レコードは、それぞれストレージシステム10に格納される分散ファイルのファイル断片に対応しており、それぞれ対応するファイル断片に関する情報を格納する。
【００４３】
各レコードの分散ファイル識別番号フィールド1221とファイル断片番号フィールド1222には、対応するファイル断片の分散ファイル識別番号と、ファイル断片の当該ファイルにおける順序をそれぞれ格納する。分散ファイル識別番号とは、各分散ファイルに一意に割り当てられた整数値である。本実施形態では、各分散ファイルをこの分散ファイル識別番号により識別する。
【００４４】
各レコードのストレージサーバフィールド1223には、対応するファイル断片が格納されているストレージサーバ2の識別情報を格納する。
【００４５】
各レコードのファイル断片識別情報フィールド1224には、対応するファイル断片が格納されている、ストレージサーバ2のローカルファイルの識別番号を格納する。ローカルファイルとは、各ストレージサーバ2が備えるファイルシステム26に格納されるファイルのことを言う。ファイルシステムに格納されたローカルファイルは、ファイルシステム内で一意な識別番号により識別される。
【００４６】
例えば、図4では、第一レコードから第三レコードには、分散ファイル識別番号が110である分散ファイルのファイル断片に関する情報を格納している。分散ファイル110は3個のファイル断片からなる。レイアウトテーブル122の第一レコード〜第三レコードに各ファイル断片の情報が格納される。第一レコードを参照すると、分散ファイル110の第一のファイル断片は、ストレージサーバ2a（識別情報A）のローカルファイル1100に格納されている。同様に、分散ファイル110の第二のファイル断片は、ストレージサーバ2b（識別情報B）のローカルファイル1200、分散ファイル110の第三のファイル断片は、ストレージサーバ2c（識別情報C）のローカルファイル1300にそれぞれ格納されていることを示している。
＜図5：ファイル属性テーブル＞
図5は、本発明の第一の実施形態に係る分散ファイル属性テーブル123の一例を説明する図である。
【００４７】
分散ファイル属性テーブル123は、分散ファイル識別番号フィールド1231、パス名フィールド1232、最終更新時刻フィールド1233、ファイルサイズフィールド1234、属性フィールド1235、サマリーハッシュフィールド1236を有するレコードを格納する。
【００４８】
各レコードは、ストレージシステム10に格納される各分散ファイルに対応し、対応する分散ファイルの属性情報を格納する。
【００４９】
各レコードの分散ファイル識別番号フィールド1231には、対応する分散ファイルの分散ファイル識別番号を格納する。
【００５０】
各レコードのパス名フィールド1232は、対応する分散ファイルのパス名を格納する。パス名は、計算機3がストレージシステム10に格納された分散ファイルを、ディレクトリ構造で識別するために用いられる。
【００５１】
各レコードの最終更新時刻フィールド1233には、対応する分散ファイルの最終更新時刻が格納される。計算機3は、分散ファイルに対して更新（データの書き込み）を行った場合、このフィールドを更新するようにメタデータサーバ1へ要求する。要求を受けたメタデータサーバ1のメタデータ要求処理プログラム126が、要求された分散ファイルに対応する最終更新時刻フィールド1223を更新する。
【００５２】
各レコードのファイルサイズフィールド1234には、対応する分散ファイルのサイズが格納される。
【００５３】
各レコードの属性フィールド1235には、対応する分散ファイルのその他の属性が格納される。その他の属性とは、例えば分散ファイルを所有するユーザ、分散ファイルを所有するユーザのグループ、分散ファイルのアクセス権、分散ファイルに最後にアクセスした時刻、分散ファイルの属性を更新した時刻やその他のフラグおよび付加情報等である。
【００５４】
各レコードのサマリーハッシュフィールド1236には、対応する分散ファイルのサマリーハッシュ値が格納される。サマリーハッシュ値とは、対応する分散ファイルの特定のファイル断片と特定の属性から算出されるハッシュ値である。本実施形態では、一例として、以下のようにサマリーハッシュ値を求める。
【００５５】
H（Σi∈Q Si + size）
ここで、Qは、分散ファイルのファイル断片の番号の集合、Hは任意のバイト列を取って32ビットのハッシュ値を出力するハッシュ関数、Siは分散ファイルのi番目のファイル断片のバイト列、sizeは分散ファイルのサイズをバイト列で表わしたデータである。また上記の二項演算+はバイト列を連結することを意味し、Σi∈Q Siは、全てのSiに二項演算+を適用し、連結することを意味する。
【００５６】
ファイル断片の番号の集合Qは、ファイル断片の数に応じて予め定義されているものとする。
【００５７】
図5を参照すると、例えば、分散ファイル属性テーブル123の第一のレコードには分散ファイル110に関する情報が格納されており、分散ファイル110のパス名は/dir01/file01、最終更新時刻は2009/07/02 10:01、ファイルサイズは3,414,336、サマリーハッシュ値が00f00001（十六進表記の整数）であることを示している。属性フィールド1235については記載を省略している。
＜図6:類似グループテーブル＞
図6は、本発明の第一の実施形態に係る類似グループテーブル124の一例を説明する図である。
【００５８】
類似グループテーブル124には、グループ識別情報フィールド1241、分散ファイル識別番号フィールド1242、グループ特徴情報フィールド1243、タイプフィールド1244の各フィールドを有するレコードを格納する。各レコードは、それぞれ類似グループに対応し、類似グループの情報を格納する。
【００５９】
各レコードのグループ識別情報フィールド1241には、対応する類似グループの識別情報が格納される。類似グループの識別情報は、本実施形態では類似グループに一意に割り当てられた整数である。
【００６０】
各レコードの分散ファイル識別番号フィールド1242には、対応する類似グループに含まれる分散ファイルの分散ファイル識別番号が格納される。
【００６１】
各レコードのグループ特徴情報フィールド1243には、対応する類似グループに含まれる分散ファイルの特徴の情報が格納される。分散ファイルの特徴とは、例えばサマリーハッシュ値、ファイルサイズ、その他の属性やこれらの組み合せから算出される値である。
【００６２】
各レコードのタイプフィールド1244には、対応する類似グループのグループ特徴情報フィールド1243に格納される情報の種類が格納される。
【００６３】
例えば、図6では、類似グループテーブル124の第一レコードには、グループ識別情報が1の類似グループに関する情報を格納している。グループ識別情報が1の類似グループは、分散ファイル110、220、330を含んでおり、その共通した特徴は、サマリーハッシュ値が00f00001（十六進表記）であることを示す。
＜図7：ストレージサーバ＞
図7は、本発明の第一の実施形態に係るストレージサーバ2の構成を説明する図である。
【００６４】
ストレージサーバ2は、プロセッサ21と、メモリ22と、ネットワークインタフェース23と、記憶装置24を有する。これらは、バス25により接続されている。
【００６５】
プロセッサ21は、メモリ22に格納されたプログラムやデータを用いて各種処理を実行する。
【００６６】
ネットワークインタフェース23は、LAN4を介して計算機3およびメタデータサーバ1とのデータの入出力を制御する。
【００６７】
記憶装置24には、ファイルシステム26が構成されており、ストレージサーバ2で実行されるプログラムや、プログラムが使用するデータが格納される。
【００６８】
メモリ22は、サーバ識別情報221を格納する。ストレージサーバ2a〜2lのサーバ識別情報221には、それぞれストレージサーバ2a〜2lの識別情報（A〜L）が格納される。
【００６９】
また、メモリ22は、重複排除処理プログラム222と、ネットワークデータI/O処理プログラム223と、ローカルファイルシステムプログラム224と、オペレーティングシステム225を格納する。
＜図8：ファイルシステムの構造＞
図8は、本発明の第一の実施形態に係るファイルシステム26の一例を説明する図である。図8は、例として、ストレージサーバ2aのファイルシステム26の構造と格納されるデータを示している。各ストレージサーバ2のファイルシステム26の構造は同じである。
【００７０】
ファイルシステム26aは、記憶装置24aに構築された、ローカルファイルを格納するための特定の領域である。ファイルシステム26aには複数のローカルファイルを格納できる。ローカルファイルは、データを入れるための論理的な伸縮する容器と見ることができる。例えば、ローカルファイルに10メガバイトのデータを格納すれば、ローカルファイルは10メガバイトの容量を持つ容器となり、データを消去すれば0バイトの容量を持つ容器となる。
【００７１】
ローカルファイルにはメタデータと呼ばれる様々な属性データを設定できる。ローカルファイルを容器と見るならば、メタデータは容器に付けられたタグと見ることができる。
【００７２】
ローカルファイルとは異なり、ファイルシステム26aの容量は一定である。このため、あるローカルファイルの容量を縮小（格納されているデータのサイズを縮小）すれば、ファイルシステム26aの空き容量はその分増加する。
【００７３】
ファイルシステム26aは、メタデータブロック260とデータブロック250からなる。メタデータブロック260には、ファイルシステム26に格納されるローカルファイルのメタデータが格納される。データブロック250にはローカルファイルのデータの内容が格納される
図8では、ストレージサーバ2aのファイルシステム26に格納されているローカルファイルの内、3個のローカルファイル（識別番号1100、2100、3100）を図示している。以下、識別番号が1100のローカルファイルを、単にローカルファイル1100のように表記する。
【００７４】
メタデータブロック260には、ローカルファイル1100、2100、3100にそれぞれ対応するメタデータ261、262、263が格納されている。各メタデータ261、262、263は、それぞれサイズフィールド2611、2621、2631、ファイルタイプフィールド2612、2622、2632、ファイルデータブロックフィールド2613、2623、2633を有する。他に、各メタデータには、ローカルファイルの属性等の情報を格納するフィールドを含んでもよい。
【００７５】
本実施形態では、ローカルファイルには、「データファイル」、「ローカルスタブ」、「リモートスタブ」の3種類がある。データファイルは、ストレージシステム10に格納される分散ファイルのファイル断片を格納する。ローカルスタブとリモートスタブは、ファイル断片を格納せず、他のローカルファイルへの参照情報（例えば、ローカルファイルのファイルシステム26における識別番号）を格納する。ローカルスタブは、同じストレージサーバ2に格納されているデータファイルを参照する情報を有する。リモートスタブは、異なるストレージサーバ2に格納されているローカルファイルを参照する情報を有する。
【００７６】
計算機3がストレージサーバ2に格納されているローカルスタブに対してリード要求を行った場合、ストレージサーバ2はローカルスタブが参照するローカルファイルからデータを取得して応答する。また、計算機3がストレージサーバ2に格納されているリモートスタブに対してリード要求を行った場合、ストレージサーバ2はリモートスタブが参照する別のストレージサーバ2およびそのローカルファイルの識別番号を計算機3に応答する。計算機3は、応答に含まれる参照先のストレージサーバ2に再度アクセスし、所望のデータを得る。
【００７７】
図4で説明したように、ローカルファイル1100は、分散ファイル110の第一のファイル断片を格納している。メタデータ261のファイルタイプフィールド2612には、ローカルファイル1100がデータファイルであることを示す情報が格納されている。分散ファイル110の第一のファイル断片は、ファイルデータブロックフィールド2613に格納された、（記憶装置24上の）論理ブロックアドレス11000により指示される記憶領域266に格納されている。
【００７８】
ローカルファイル2100は、ストレージシステム10に格納された何れかの分散ファイルのファイル断片を参照する情報を有する、ローカルスタブである。ファイルデータブロックフィールド2623に格納された論理ブロックアドレス21000が指示する記憶領域267には、このローカルスタブが参照しているローカルファイル4100の情報を格納している。また、このローカルスタブが別のストレージサーバ2のリモートスタブから参照されている場合は、参照しているストレージサーバ2とリモートスタブの識別情報 （図では「B」および「7000」）が格納される。
【００７９】
ローカルファイル3100は、ストレージシステム10に格納された何れかの分散ファイルのファイル断片を参照する情報を有する、リモートスタブである。ファイルデータブロックフィールド2633に格納された論理ブロックアドレス31000が指示する記憶領域268には、このリモートスタブが参照しているストレージサーバ2（図では「C」）と、参照先ストレージサーバにおけるローカルファイル識別情報（図では「8000」）を格納する。
＜図9：グループ化処理＞
図9は、本発明の第一の実施形態に係る類似グループ作成処理の一例を説明するフローチャートである。
【００８０】
類似グループ作成処理は、メタデータサーバ1の類似分散ファイル抽出プログラム127によって、定期的に（例えば毎日4:00に）実行される。類似グループ作成処理は、ステップs1000から開始される。以下、類似分散ファイル抽出プログラム127が実行する処理の説明である。
【００８１】
ステップs1010において、レイアウトテーブル122に格納されている分散ファイルを一つ選択する。
【００８２】
ステップs1020において、この分散ファイルが重複排除処理の対象とすべき分散ファイルかどうかを調べる。具体的には、選択した分散ファイルの最終更新時刻を分散ファイル属性テーブル123の最終更新時刻フィールド1233を参照して取得し、一定期間（例えば1週間）更新されていないならば対象とする。
【００８３】
ステップs1030において、選択した分散ファイルが重複排除処理の対象となる分散ファイルならば、その特徴情報を作成する。具体的には、分散ファイルのサマリーハッシュ値を作成して特徴情報とするか、より単純には分散ファイルのファイルサイズを特徴情報とする。あるいは、その他の情報を用いて算出してもよい。作成したサマリーハッシュ値は、分散ファイル属性テーブル123の対応するレコードのサマリーハッシュフィールド1236に格納されてもよい。
【００８４】
分散ファイルの特徴情報は、メタデータサーバ1が算出するようにしてもよいし、メタデータサーバ1より要求を受けたストレージサーバ2が算出し、メタデータサーバ1へ提供するようにしてもよい。
【００８５】
ステップs1040において、類似グループテーブル124より、作成した特徴情報に対応するレコードを選択し、そのレコードの分散ファイル識別番号フィールド1242に対象の分散ファイルの識別番号を登録する。この結果、当該レコードの分散ファイル識別番号フィールド1242に登録されるファイル数が既定数（例えば4）となった場合は、ステップs1050において次のステップs1060へ進み、そうでなければ、ステップs1070へ進む。もし対応するレコードが類似グループテーブル124に格納されていなければ、新たなレコードを作成する。
【００８６】
分散ファイル440を対象として処理し、そのサマリーハッシュ値が00f00001となり、分散ファイル440がグループ識別情報1のレコードの分散ファイル識別番号フィールド1242に登録されたものとする。この結果、当該レコードの分散ファイル識別番号フィールドに登録されるファイル数は4となるため、次のステップs1060へ進む。
【００８７】
ステップs1060において、前記当該レコードの分散ファイル識別番号フィールド1242に含まれる分散ファイルを分割して格納するストレージサーバ2（以降、このストレージサーバ2のグループをストレージサーバグループと呼ぶ）に対して、当該分散ファイルの重複排除処理の実行を指示する。ストレージサーバ2に対して指示するためのIPアドレスは、ストレージサーバ管理テーブル121を参照して取得する。
【００８８】
本実施形態では、メタデータサーバ1は各分散ファイルの先頭のファイル断片を持つストレージサーバ2に対して重複排除処理を指示し、二番目以降のファイル断片を持つストレージサーバ2には前のファイル断片を持つストレージサーバから指示が伝達される。
【００８９】
メタデータサーバ1からの指示には、以下の（１）〜（３）の情報を含む。
（１）類似グループと、類似グループに含まれる分散ファイルの識別情報
（２）上記（１）の各分散ファイルのレイアウト
（３）重複排除ポリシー125に格納されている情報
重複排除ポリシー125には、分散ファイルの重複排除を実行する場合に、ファイル断片を消去するストレージサーバ2を選択する方針に関する情報が格納される。この方針とは、例えば、最もファイルシステム利用率（容量利用率）の少ないストレージサーバ2のファイル断片を残し、他のストレージサーバ2のファイル断片を削除する、等である。また、ストレージサーバ2のCPU利用率が少ないストレージサーバ2のファイル断片を残すというポリシーであってもよい。
【００９０】
重複排除ポリシー125は、図示しない管理サーバ等から、ストレージシステム10の管理者が登録する。
【００９１】
ステップs1070において、レイアウトテーブルに登録された全ての分散ファイルを処理済みであればステップs1080に進み処理を終了する。そうでなければ、s1010へ戻り別の分散ファイルを選択し、同様に処理する。
＜図10:重複排除処理＞
図10は、本発明の第一の実施形態に係る重複排除処理の一例を説明するフローチャートである。重複排除処理は、各ストレージサーバ2が、メタデータサーバ1または前のストレージサーバ2からの重複排除処理実行の指示を受け、重複排除処理プログラム222によって実行される。以下、重複排除処理プログラム222の処理の流れである。
【００９２】
重複排除処理は、ステップs2000より開始する。まず、メタデータサーバ1より指示を受けるストレージサーバ2は、先頭のファイル断片を処理の対象とする。各分散ファイルの二番目以降のファイル断片が格納されるストレージサーバ2は、前のファイル断片が格納されるストレージサーバより、処理すべきファイル断片の番号をパラメータとして受け取る。
【００９３】
ステップs2010において、重複排除処理の対象となるファイル断片に対応したローカルファイルの内容からハッシュ値を計算する。ハッシュ値の算出には、SHA512アルゴリズムのように、出力のビット数が十分に大きく、衝突が発生しにくいアルゴリズムを用いる。さらに衝突を避けるために、2個以上の異なるアルゴリズムを用いて二つのハッシュ値を算出し、連結してローカルファイルのハッシュ値としてもよい。
【００９４】
ステップs2020において、類似グループに含まれる分散ファイルを持つストレージサーバ2間で、排除するファイル断片と、排除しないファイル断片を合意する。（ファイル断片排除サーバ間合意処理の詳細については、図11及び12を用いて説明する）。もし、合意が形成された場合は、ステップs2030の分岐において、ステップs2040に進み、ファイル断片に対する処理（ファイル断片排除処理）を行ってステップs2050へ進む。そうでなければ、ステップs2050へ進む。
【００９５】
ステップs2050において、次のファイル断片が格納されるストレージサーバ2に対して、重複排除処理の実行を指示する。指示には、自ストレージサーバ2が処理したファイル断片の次のファイル断片の番号を、処理すべきファイル断片の番号として含む。ファイル断片排除処理の詳細については、図13を用いて説明する。
＜図11、図12：ファイル断片排除サーバ合意処理＞
図11及び図12は、本発明の第一の実施形態に係るファイル断片排除サーバ間合意処理の一例を説明するフローチャートである。
【００９６】
ファイル断片排除サーバ間合意処理は、各ストレージサーバ2の重複排除処理プログラム222が実行する。
【００９７】
ファイル断片排除サーバ間合意処理は、ステップs3000から開始する。
【００９８】
ステップs3010において、自ストレージサーバ2がコーディネータかどうかを判定する。コーディネータとは、ストレージサーバグループに属するストレージサーバ2の内、ファイル断片を排除する方針を算出し、他のストレージサーバ2へ伝達する役目を持つストレージサーバである。本実施形態では、ストレージサーバグループに属するストレージサーバ2の内、識別情報が最も若いストレージサーバがコーディネータとなる。コーディネータの場合、ステップs3020へ進む。そうでなければ、図12のステップs3120へ進む。
【００９９】
ステップs3020において、ストレージサーバグループに属する他のストレージサーバより、ステップs2010で算出したハッシュ値と、ストレージサーバの負荷情報を受信する。負荷情報とは、ストレージサーバのCPU負荷、ファイルシステム26の使用率、メモリ使用率、およびこれらの時間毎の推移等である。重複排除ポリシー125により選択される。例えば、本実施形態では、重複排除のポリシーとして、負荷情報のうちファイルシステム26の利用率を採用する。この場合、ファイルシステム26の利用率を均等化することができる。ストレージサーバ2のCPU利用率やメモリ使用率を負荷情報とする場合、ストレージサーバ2の負荷を均等化できる。
【０１００】
ステップs3030において、もし、既定の時間（例えば1分）以内に全てのサーバからハッシュ値が得られれば、ステップs3040へ進む。そうでなければ、ステップS3100へ進み、処理を終了する。
【０１０１】
ステップs3040において、ストレージサーバグループに属するストレージサーバの内、同じハッシュ値を送信したストレージサーバを同一断片グループとする。もし、全てのストレージサーバが同じハッシュ値を送信した場合は、4つのストレージサーバを含む1つの同一断片グループが形成される。逆に、全てのストレージサーバが異なるハッシュ値を送信した場合は、それぞれ1つのストレージサーバを含む4つの同一断片グループが形成される。
【０１０２】
ステップs3050において、2以上のストレージサーバを含む同一断片グループについて、その負荷情報および重複排除ポリシーを参照し、ファイル断片を排除するストレージサーバ2と、ファイル断片を排除しないストレージサーバ2を決定する。以降、ファイル断片を排除しないストレージサーバ2を、その同一断片グループの代表サーバと呼び、代表サーバでないストレージサーバ2を従属サーバと呼ぶ。
【０１０３】
例えば、重複排除ポリシーとしてファイルシステム使用率の平準化が設定されている場合、同一断片グループに属するストレージサーバ2の内、ファイルシステム26の利用率が最も低いストレージサーバ2を代表サーバとして選択する。
【０１０４】
ステップs3060において、ステップs3040で算出した同一断片グループ、およびステップs3050で算出した代表サーバを、他のストレージサーバグループに属する他のストレージサーバ2へ送信し、応答を待つ。
【０１０５】
ステップs3070において、もし全てのサーバが、同一断片グループと代表サーバを受け入れる応答を返した場合、ファイル断片の排除を実行することを決定する （ステッップs3080）。そうでなければ、ファイル断片の排除を実行しないことを決定する（ステップs3100）。
【０１０６】
ステップs3090において、ストレージサーバグループに属するすべてのストレージサーバ2に、前項の決定内容を送信し、処理を終了する（ステップs3110）。
【０１０７】
ストレージサーバ2がコーディネータではない場合（ステップs3010）、図12のステップs3120からの処理を実行する。
【０１０８】
ステップs3120において、図10ステップs2010で算出したハッシュ値と自ストレージサーバの負荷情報を、コーディネータへ送信する。
【０１０９】
ステップs3130において、コーディネータより同一断片グループと代表サーバを受信する。もし、コーディネータからの応答が既定の時間（例えば1分）ない場合や、コーディネータが重複排除処理の中止を応答した場合は、ステップs3190に進み、ファイル断片の排除を実行しないことを決定して処理を終了する。そうでない場合は、ステップs3150へ進む。
【０１１０】
ステップs3150において、コーディネータから送信された同一断片グループと代表サーバに対して、同意することを送信する。
【０１１１】
ステップs3160において、コーディネータよりファイル断片排除処理の実行または中止の決定を受信する。
【０１１２】
ステップs3170において、コーディネータよりファイル断片の排除の実行が送信された場合、ステップs3180へ進みファイル断片の排除の実行を決定して処理を終了する。そうでない場合、ファイル断片の排除を実行しないことを決定して処理を終了する。
＜図13：ファイル断片排除処理＞
図13は、本発明の第一の実施形態に係るファイル断片排除処理の一例を説明するフローチャートである。
【０１１３】
図10において説明したように、ファイル断片排除サーバ間合意処理において、全てのサーバがファイル断片排除の実行を決定した場合に、本処理はステップs2040より呼び出される。
【０１１４】
ファイル断片排除処理は、ステップs4000より開始する。ファイル断片排除処理は、ストレージサーバ2の重複排除処理プログラム222が実行する。
【０１１５】
ステップs4010において、自ストレージサーバが代表サーバであるかどうかを判定する。自ストレージサーバが代表サーバであるかどうかは、ファイル断片排除サーバ合意処理（図11）のステップs3060より、コーディネータから通知される。もし代表サーバであればステップs4070へ進み、そうでなければステップs4020へ進む。
【０１１６】
ステップs4070において、対象のファイル断片を格納したローカルファイルについて、そのローカルファイルを参照するローカルスタブを作成する。ローカルスタブは、従属サーバの数と同数作成される。各ローカルスタブには、対応する従属サーバの識別情報がそれぞれ格納される。
【０１１７】
ステップs4080において、ステップs4070で作成したローカルスタブの識別情報を各従属サーバへ送信する。
【０１１８】
ステップs4090において、各従属サーバよりリモートスタブの識別情報を受信する。
【０１１９】
ステップs4100において、ステップs4090で受信したリモートスタブの識別情報を、ステップs4070で作成した各従属サーバに対応するローカルスタブに記録する。
【０１２０】
従属サーバならば、ステップs4020からの処理を実行する。
【０１２１】
ステップs4020において、代表サーバよりローカルスタブの情報を受信する。
【０１２２】
ステップs4030において、排除の対象となるローカルファイルを、一次的にファイルシステムの空き領域へ退避する。
【０１２３】
ステップs4040において、排除の対象となるローカルファイルをリモートスタブへ変更する。具体的には、排除の対象となるローカルファイルのファイタイプ（図8参照）をリモートスタブへ変更し、ローカルファイルのファイルデータには、代表サーバの識別情報と、代表サーバから受信したローカルスタブの識別情報が記録される。
【０１２４】
ステップs4045において、リモートスタブの識別情報を代表サーバへ送信する。
【０１２５】
ステップs4050において、ステップs4030で退避したローカルファイルを削除し、処理を終了する。
＜図14：リード処理＞
図14は、本発明の第一の実施形態に係るファイルリード処理の一例を説明するフローチャートである。
【０１２６】
計算機3は、ストレージシステム10に格納された分散ファイルからデータを読み出す場合、まずメタデータサーバ1より所望の分散ファイルのレイアウトを取得する。次に、計算機3は、レイアウトに従ってデータが格納されたストレージサーバ2を特定し、当該のストレージサーバ2に対して、ファイル断片を格納するローカルファイルを読み出す要求を行う。
【０１２７】
ストレージサーバ2は、計算機3からのローカルファイルのデータ読み出し要求を受け、ステップs5000からの処理を開始する。
【０１２８】
ステップs5010において、要求されたローカルファイルがリモートスタブかどうかを判定する。もしリモートスタブであれば、計算機3に対して、ファイル断片を別のストレージサーバ2から読み出すべきであることを応答し、リモートスタブに記録された代表サーバの識別情報と、代表サーバにおけるローカルスタブの識別情報を応答する（ステップs5070）。この応答を計算機3が受けると、計算機3は応答に基づいて適切なストレージサーバ2へ再度要求を発行する。
【０１２９】
ステップs5020において、要求されたローカルファイルがローカルスタブかどうかを判定する。もしローカルスタブであれば、ローカルスタブが参照するローカルファイルよりデータを読み出す（ステップs5060）。そうでなければ、当該のローカルファイルよりデータを読み出す（ステップs5030）。
【０１３０】
ステップs5040において、読み出したデータを計算機3へ応答し、処理を終了する（ステップs5050）。
＜図15：ライト処理＞
図15は、本発明の第一の実施形態に係るファイルライト処理の一例を説明するフローチャートである。
【０１３１】
計算機3は、ストレージシステム10に格納された分散ファイルにデータを書き込む場合、まずメタデータサーバ1より所望の分散ファイルのレイアウトを取得する。次に、計算機3は、レイアウトに従ってデータが格納されたストレージサーバ2を特定し、当該のストレージサーバ2に対して、ファイル断片を格納するローカルファイルへデータを書き込む要求を行う。
【０１３２】
ストレージサーバ2は、計算機3からのローカルファイルへのデータ書き込み要求を受け、ステップs6000からの処理を開始する。
【０１３３】
ステップs6010において、計算機3よりデータの書き込み先として要求されたローカルファイルがリモートスタブかどうかを判定する。もしリモートスタブであれば、このリモートスタブをデータファイルへ復元し、復元したデータファイルへデータを書き込むステップs6100からの処理を行う。
【０１３４】
ステップs6100において、リモートスタブの参照先の代表サーバから、リモートスタブが参照しているファイルデータを読み出す。図12のステップs4040で説明したように、リモートスタブは、代表サーバのローカルスタブを参照している。このため、従属サーバから代表サーバへの要求は、ローカルスタブからのデータの読み出しと同様に処理する。
【０１３５】
ステップs6110において、メタデータのファイルタイプフィールドをリモートスタブからデータファイルへ変更し、代表サーバより読み出したデータをデータファイルへ書き込む。
【０１３６】
ステップs6120において、計算機3から書き込みを要求されたデータを、データファイルへ書き込む。
【０１３７】
ステップs6130において、代表サーバに対して、リモートスタブが参照していた代表サーバ上のローカルスタブを削除するように要求する。代表サーバは、要求されたローカルスタブを削除する。
【０１３８】
ステップs6140において、計算機3に対してデータの書き込みが完了したことを応答し、処理を終了する。
【０１３９】
一方、ステップs6010において、要求を受けたローカルファイルがリモートスタブでない場合、ステップs6020において、計算機3よりデータの書き込み先として要求されたローカルファイルがローカルスタブかどうかを判定する。もしローカルスタブであれば、このローカルスタブを参照している従属サーバに対して、リモートスタブの復元を要求する。ローカルスタブを参照している従属サーバは、ローカルスタブのファイルデータとして記録されている（図8）。この要求を受け、従属サーバは、代表サーバからローカルスタブが参照しているローカルファイルのデータを読み出し、メタデータのファイルタイプフィールドをリモートスタブからデータファイルへ変更し、読み出したデータを当該データファイルへ書き込む。
【０１４０】
ステップs6090において、計算機3に対して、ファイル断片を別のストレージサーバ2へ書き込むべきであることを応答し、ローカルスタブに記録された従属サーバの識別情報と、従属サーバにおけるデータファイルの識別情報を応答する。この応答を計算機3が受けると、計算機3は応答に基づいて適切なストレージサーバ2へ再度要求を発行する。
【０１４１】
ステップs6095において、要求を受けたローカルスタブを削除し、処理を終了する。
【０１４２】
一方、ステップs6020において、要求を受けたローカルファイルがローカルスタブではない場合（データファイルの場合）、ステップs6030からの処理を実行する。
【０１４３】
ステップs6030において、データファイルを別のデータファイルへ複製し、元のデータファイルを参照するローカルスタブを、複製したデータファイルを参照するように変更する。ただし、データファイルを参照するローカルスタブが存在しなければ、この処理を行わない。データファイルを参照するローカルスタブの識別情報は、データファイルの属性情報として記録しておくことができる。
【０１４４】
ステップs6050において、データファイル（複製ではない）に対して、計算機3から要求されたデータを書き込む。
【０１４５】
ステップs6060において、計算機3に対してデータ書き込み完了を応答して処理を終了する。
【実施例２】
【０１４６】
本発明の第二の実施形態を、図面を用いて説明する。
＜図16：第二の実施形態＞
図16は、本発明の第二の実施形態に係る計算機システムの概要を説明する図である。
【０１４７】
第二の実施形態では、第一の実施形態にゲートウェイサーバ5を追加している。
【０１４８】
ゲートウェイサーバ5は、メタデータサーバ1や計算機3と同様の計算機であり、LAN4に接続されている。
【０１４９】
ゲートウェイサーバ5は、そのメモリに共有ファイルシステムサーバプログラム54と、アクセス要求変換プログラム55と、分散ファイルシステムクライアントプログラム56を格納している。これらの各プログラムは、ゲートウェイサーバ5のプロセッサにより実行される。
【０１５０】
共有ファイルシステムサーバプログラム3は、計算機3からストレージシステム10に格納された分散ファイルに対するアクセス要求を受け付ける。このアクセス要求は、アクセス要求変換プログラム55によりストレージシステム10の分散ファイルシステムに対するアクセス要求へ変換され、分散ファイルシステムクライアントプログラム56が第一の実施形態で説明した方法で、ストレージシステム10の分散ファイルにアクセスする。
【０１５１】
ゲートウェイサーバ5はさらに、そのメモリに類似グループテーブル51と、重複排除ポリシー52と、類似ファイル抽出プログラム53を備える。
【０１５２】
類似グループテーブル51は、第一の実施形態における類似グループテーブルl24と同じ構成のデータである。第二の実施形態では、メタデータサーバ1は類似グループテーブル124を持たない。
【０１５３】
重複排除ポリシー52は、第一の実施形態における重複排除ポリシー125と同じ構成のデータである。第二の実施形態では、メタデータサーバ1は重複排除ポリシー125を持たない。
【０１５４】
類似ファイル抽出プログラム53は、第一の実施形態における類似分散ファイル抽出プログラムと同じ働きをするプログラムである。第二の実施形態では、メタデータサーバ1は類似分散ファイル抽出プログラム127を備えない。
【０１５５】
第二の実施形態では、類似ファイルグループ化処理を、メタデータサーバ1に代わりゲートウェイサーバ5の類似ファイル抽出プログラム53が実施する。
【０１５６】
類似ファイル抽出プログラム53は、図9で示した類似ファイルグループ化処理とほぼ同様の処理を行うが、以下の点が異なる。
（１）ステップs1010および、ステップs1020において、類似ファイル抽出プログラム53は、メタデータサーバ1より、レイアウトテーブル122および分散ファイル属性テーブル123に格納されている分散ファイルのレイアウトと属性を取得する。
（２）ステップs1040において、類似ファイル抽出プログラム53は、類似グループの情報を類似グループテーブル51へ格納する。
【０１５７】
ゲートウェイサーバ5が類似ファイルの抽出処理を行うことで、計算機3から頻繁にアクセスされるメタデータサーバ1の負荷を低減することが可能である。
＜他の実施形態＞
以上、本発明を実施形態に基づいて説明したが、本発明は上述した実施の形態に限られず、他の様々な態様に適用可能である。
＜L2を使う＞
例えば、上記実施形態では、LAN4を介した通信で用いるネットワークプロトコルとしてIPを利用したが、本発明はこれに限られず、例えばイーサネット（登録商標）プロトコル等のデータリンクプロトコルを利用してもよい。これにより、IPアドレスの消費を低減できる。
＜複数のLANを使う＞
また、上記実施形態では、一つのLAN4のみを通信用ネットワークとしたが、本発明はこれに限られず、例えば複数のLAN4を用いてもよい。これにより、通信用ネットワークを高信頼化できる。
＜データの比較を行う＞
また、上記実施形態では、ローカルファイルの同一性の検査のために十分に大きな値域のハッシュ関数を用いたが、本発明はこれに限られず、例えば、ローリングハッシュを用いてローカルファイルを少量ずつ比較するようにし、さらに負荷を低減するようにしてもよい。また、ローカルファイルのデータ本体を比較することを否定するものではない。
＜パリティのアップデートを行う＞
また、上記実施形態では、分散ファイルを障害から保護する機能を持たないが、本発明はこれに限られず、例えば、分散ファイルごとにそのパリティデータを持つローカルファイルを備えさせ、分散ファイルのファイル断片を更新した場合には、パリティデータを併せて更新するようにし、分散ファイルを保護するようにしてもよい。分散ファイルのいずれかのファイル断片がローカルスタブまたはリモートスタブを含む場合であっても、これらの更新に併せてパリティデータを更新するようにしてもよい。
＜排除ポリシー＞
また、上記実施形態では、重複排除ポリシーとして、各ストレージサーバのファイルシステム利用率の平準化を設定した場合を示したが、本発明はこれに限られず、例えば、以下のような重複排除ポリシーを設定してもよい。
（１）各ストレージサーバ2のCPU利用率やメモリ利用率を平準化する。すなわち、CPU利用率やメモリ利用率の高いストレージサーバ2からは、優先的にローカルファイルを排除する。これにより、ストレージサーバ2のCPU負荷の平準化が可能である。
（２）各ストレージサーバ2が備える記憶装置24の種類に応じてファイルを蓄積する。例えば、記憶装置24が高価かつ高性能なSAS（Serial Attached SCSI）ディスクならば優先的にローカルファイルを排除する。更新頻度の低いファイルを排除することで、高性能な記憶装置をより更新頻度の高いファイルの格納に利用でき、ストレージシステム10全体の性能向上を図れる。
＜メタデータストレージでもよい＞
また、上記実施形態では、メタデータサーバ1とストレージサーバ2を異なるサーバとしたが、本発明はこれに限られず、メタデータサーバ1がストレージサーバ2の機能を備え、ストレージサーバ2を兼ねるようにしてもよい。これにより、装置数を低減できる。
＜並列処理する＞
また、上記実施形態では、メタデータサーバ1は、分散ファイルの先頭のファイル断片を持つストレージサーバ2に対して重複排除を指示し、2番目以降のファイル断片を持つストレージサーバ2は、前のファイル断片を持つストレージサーバ2から重複排除指示が伝達されるようにしたが、本発明はこれに限られず、メタデータサーバ1が、2番目以降のファイル断片を持つストレージサーバ2に対しても重複排除の実行を指示するようにしてもよい。重複排除を並列処理することで、重複排除処理の時間を短縮できる。
【符号の説明】
【０１５８】
１  メタデータサーバ
２  ストレージサーバ
３  計算機
４  ＬＡＮ
１０  ストレージシステム
【図１】
0005595701.tif 000002
【図２】
0005595701.tif 000003
【図３】
0005595701.tif 000004
【図４】
0005595701.tif 000005
【図５】
0005595701.tif 000006
【図６】
0005595701.tif 000007
【図７】
0005595701.tif 000008
【図８】
0005595701.tif 000009
【図９】
0005595701.tif 000010
【図１０】
0005595701.tif 000011
【図１１】
0005595701.tif 000012
【図１２】
0005595701.tif 000013
【図１３】
0005595701.tif 000014
【図１４】
0005595701.tif 000015
【図１５】
0005595701.tif 000016
【図１６】
0005595701.tif 000017