(57)【特許請求の範囲】
【請求項１】
(1)(i)初期の分配取り決めから新たな分配取り決めへと複数のオリジネータノード間において１以上のオリジネータデータサブセットを再分配し、
(ii)オリジネータデータサブセットの識別情報と、初期の分配取り決めに従って前記オリジネータデータサブセットを分配した以前のオリジネータノードの識別情報と、新たな分配取り決めに従って前記オリジネータデータサブセットを現在分配する現在のオリジネータノードの識別情報とを含むデータ再分配情報を決定するように構成された１以上のプロセッサと、
(2)前記データ再分配情報をレプリカ・システムに送信する通信インタフェースと、を備え、
前記データ再分配情報は、以前にレプリカされた取り決めから新たにレプリカされる取り決めへと複数のレプリカノード間で１以上の対応するレプリカデータを再分配するために前記レプリカ・システムにより使用されるシステム。
【請求項２】
前記データ再分配情報は、前記１以上のオリジネータデータサブセットが移動した１以上の前オリジネータノードの識別情報と、前記オリジネータデータサブセットが現在存在する１以上の現在オリジネータノードの識別情報とを含む、請求項１に記載のシステム。
【請求項３】
前記１以上のオリジネータデータサブセットは１以上のデータコンテイナーを含む、請求項１に記載のシステム。
【請求項４】
前記データ再分配情報は前記１以上のデータコンテイナーに関連したメタデータを含む、請求項１に記載のシステム。
【請求項５】
前記データ再分配情報は前記１以上のデータコンテイナーに関連したメタデータを含み、前記１以上のデータコンテイナーのそれぞれは１以上のデータセグメントを含む、請求項１に記載のシステム。
【請求項６】
前記１以上のオリジネータデータサブセット及び前記１以上のレプリカデータサブセットは同一のバックアップデータを含む、請求項１に記載のシステム。
【請求項７】
前記複数のオリジネータノードはファイルシステムの中に含まれている、請求項１に記載のシステム。
【請求項８】
前記データ再分配情報はバックアップデータを含まない、請求項１に記載のシステム。
【請求項９】
前記１以上のオリジネータデータサブセットは、１以上の既存ノードから新たに追加されたノードまで再分配される、請求項１に記載のシステム。
【請求項１０】
前記１以上のオリジネータデータサブセットは、前記複数のオリジネータノードの負荷を再バランスするために再分配される、請求項１に記載のシステム。
【請求項１１】
初期の分配取り決めから新たな分配取り決めへと複数のオリジネータノード間において１以上のオリジネータデータサブセットを再分配する処理と、
オリジネータデータサブセットの識別情報と、初期の分配取り決めに従って前記オリジネータデータサブセットを分配した以前のオリジネータノードの識別情報と、新たな分配取り決めに従って前記オリジネータデータサブセットを現在分配する現在のオリジネータノードの識別情報とを含むデータ再分配情報を決定する処理と、
前記データ再分配情報をレプリカ・システムに送信する処理とを含み、
前記データ再分配情報は、以前にレプリカされた取り決めから新たにレプリカされる取り決めへと複数のレプリカノード間で１以上の対応するレプリカデータを再分配するために前記レプリカ・システムにより使用されるデータ複製方法。
【請求項１２】
前記データ再分配情報は、前記１以上のオリジネータデータサブセットが移動した１以上の前オリジネータノードの識別情報と、前記オリジネータデータサブセットが現在存在する１以上の現在オリジネータノードの識別情報とを含む、請求項１１に記載の方法。
【請求項１３】
前記１以上のオリジネータデータサブセットは１以上のデータコンテイナーを含む、請求項１１に記載の方法。
【請求項１４】
前記データ再分配情報は前記１以上のデータコンテイナーに関連したメタデータを含む、請求項１１に記載の方法。
【請求項１５】
前記データ再分配情報は前記１以上のデータコンテイナーに関連したメタデータを含み、前記１以上のデータコンテイナーのそれぞれは１以上のデータセグメントを含む、請求項１１に記載の方法。
【請求項１６】
前記１以上のオリジネータデータサブセット及びｚ１以上のレプリカデータサブセットは同一のバックアップデータを含む、請求項１１に記載の方法。
【請求項１７】
コンピュータ読み出し可能な記録媒体に記録されるデータ複製のためのコンピュータプログラムであって、コンピュータに、
初期の分配取り決めから新たな分配取り決めへと複数のオリジネータノード間において１以上のオリジネータデータサブセットを再分配する手順と、
オリジネータデータサブセットの識別情報と、初期の分配取り決めに従って前記オリジネータデータサブセットを分配した以前のオリジネータノードの識別情報と、新たな分配取り決めに従って前記オリジネータデータサブセットを現在分配する現在のオリジネータノードの識別情報とを含むデータ再分配情報を決定する手順と、
前記データ再分配情報をレプリカ・システムに送信する手順と、を実行させるコンピュータ命令を含み、
前記データ再分配情報は、以前にレプリカされた取り決めから新たにレプリカされる取り決めへと複数のレプリカノード間で１以上の対応するレプリカデータを再分配するために前記レプリカ・システムにより使用されるコンピュータプログラム。
【請求項１８】
１以上のオリジネータノードを含むオリジネータ・システムからデータ再分配情報を受信するインタフェースであって、前記データ再分配情報は、１以上のオリジネータデータサブセットの識別情報と、初期の分配取り決めに従って前記オリジネータデータサブセットを分配した以前のオリジネータノードの識別情報と、新たな分配取り決めに従って前記オリジネータデータサブセットを現在分配する現在のオリジネータノードの識別情報とを含み、
複数のレプリカノード間で以前にレプリカされた取り決めから新たにレプリカされる取り決めへと１以上の対応するレプリカデータサブセットを前記データ再分配情報に従い再分配する１以上のプロセッサと、
を備えたシステム。
【請求項１９】
１以上のオリジネータノードを含むオリジネータ・システムからデータ再分配情報を受信する処理であって、前記データ再分配情報は、１以上のオリジネータデータサブセットの識別情報と、初期の分配取り決めに従って前記オリジネータデータサブセットを分配した以前のオリジネータノードの識別情報と、新たな分配取り決めに従って前記オリジネータデータサブセットを現在分配する現在のオリジネータノードの識別情報とを含み、
複数のレプリカノード間で以前にレプリカされた取り決めから新たにレプリカされる取り決めへと１以上の対応するレプリカデータサブセットを前記データ再分配情報に従い再分配する処理と、
を含む方法。
【請求項２０】
コンピュータ読み出し可能な記録媒体に記録されるデータ複製のためのコンピュータプログラムであって、コンピュータに、
１以上のオリジネータノードを含むオリジネータ・システムからデータ再分配情報を受信する手順であって、前記データ再分配情報は、１以上のオリジネータデータサブセットの識別情報と、初期の分配取り決めに従って前記オリジネータデータサブセットを分配した以前のオリジネータノードの識別情報と、新たな分配取り決めに従って前記オリジネータデータサブセットを現在分配する現在のオリジネータノードの識別情報とを含む手順と、
複数のレプリカノード間で以前にレプリカされた取り決めから新たにレプリカされる取り決めへと１以上の対応するレプリカデータサブセットを前記データ再分配情報に従い再分配する手順と、
を実行させるコンピュータ命令を記録したコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
既存の多くのデータ複製システムの場合、オリジナルとレプリカの間でデータを同期することになる。オリジナルで生じる任意の変化はレプリカに送られ、ミラー化される。頻繁に起こるデータ更新は、多くのバンド幅を消費し、かつ、非効率性を生じさせる。この問題は、ワイドエリアネットワーク（ＷＡＮ）によってオリジナルとレプリカが分離されたり、バンド幅が制限されたりといった環境において特にはっきり言われている。
【０００２】
本発明の様々な実施例が、以下の詳細な説明及び添付の図面に開示されている。
【図面の簡単な説明】
【０００３】
【図１】図１は、データ複製の一実施例を示すブロック図である。
【図２】図２は、データ複製のプロセスの一実施例を示すフローチャートである。
【図３】図３は、データ複製のプロセスの別の実施例を示すフローチャートである。
【図４】図４は、コンテイナーの一実施例を示すデータ構造図である。
【図５Ａ】図５Ａは、データを再分配する例示のシナリオを示す一連の図である。
【図５Ｂ】図５Ｂは、データを再分配する例示のシナリオを示す一連の図である。
【図５Ｃ】図５Ｃは、データを再分配する例示のシナリオを示す一連の図である。
【発明を実施するための形態】
【０００４】
本発明は様々な方法で実行される。例えば、プロセス、装置、システム、合成物、コンピュータ読み出し可能な記録媒体上のコンピュータプログラム製品、及び／又はプロセスに結合されたメモリに記憶されたり提供されたりする命令を実行するプロセッサを含む。本明細書では、これらのインプリメンテーション（実装例）又は本発明がとり得る他の任意の形式が技術して引用される。一派的に、開示したプロセスのステップ順は、本発明の範囲内で変更され得る。特に断りがない限り、タスクを実行するものとして記載したプロセッサ又はメモリなどのコンポーネントは、或る時間でタスクを実行するよう一時的に構成された汎用コンポーネントとして、あるいはそのタスクを実行するために製造された特定コンポーネントとしてインプリメント（実装）される。ここで用いられる「プロセッサ」の語は、１以上のデバイス、回路、及び／又はコンポーネントプログラム命令などのデータを処理するよう構成したプロセスコアを称している。
【０００５】
本発明の１以上の実施例の詳細な記述は、本発明の原理をあらわす添付の図面と共に以下に提供される。本発明はそのような実施例に関連して記載されるものであるが、これら実施例に限定されるわけではない。本発明の範囲は特許請求の範囲のよってのみ限定され、本発明は多数の変形、修正及び均等物を包含する。多数の特定の詳細は本発明の全体的な理解を提供するために後述する記載で述べているものである。これらの詳細は例示の目的で与えられ、本発明はこれら特定の詳細の幾つか又は全てを必要とせずに特許請求の範囲に従って実施化される。明確さを図るため、本発明に関連する本技術分野で基地の技術的事項は詳細には記載しておらず、その結果、本発明はいたずらに不明瞭にしていない。
【０００６】
図１はデータ複製環境の実施例を示すブロック図である。この例において、データ複製システム１００は、オリジネータ・システム（ソースシステムとも称される。）１０２と、レプリカ・システム１０４（宛先システムとも称される。）を含む。これらのシステムは、ローカルエリアネットワークやワイドエリアネットワークなどの１以上のネットワークによって分離される。
【０００７】
オリジネータ・システムは、オリジネータ・フロントエンド・デバイス１１０と、複数のオリジネータノード１１２ａ，１１２ｂ，１１２ｃ（オリジネータ・バックエンド・デバイスとも称される。）を含む。レプリカ・システムは、レプリカ・フロントエンド・デバイス１２０、及び複数のレプリカノード１２２ａ，１２２ｂ，１２２ｃ（レプリカ・バックエンド・デバイスとも称される。）を含む。異なる数のノード、並びにフロントエンド・デバイス及びノードのアレンジメントが可能である。例えば、フロントエンド・デバイス及びノードの機能は一つの物理デバイスへ統合され得る。
【０００８】
データを記憶するためにノードを用いる。様々な実施例において、コンポーネントをストレージするストレージデバイスやファイルサーバなどの任意の適当なタイプのデバイスを用いて、ノードがインプリメントされる。また、フロントエンド・デバイスは、データレプリカ管理ソフトウェアを実行する汎用サーバなどの様々なデバイスを用いてインプリメントされる。各フロントエンド・デバイスは、それぞれのノード、当該ノードに関する対応するデータストレージと通信し、仮想ファイルシステムを実現する。言い換えると、フロントエンド・デバイスを通じたデータにアクセスする外部デバイスに対して、フロントエンド・デバイスは、一つのファイルシステムを管理するファイルシステムサーバであるかのようにみえる。幾つかの実施例において、フロントエンドノード及びバックエンドノードは、１つの物理デバイス上で分離ストレージ・パーティションにより共存する。
【０００９】
詳細は後述するが、オリジネータ・システム及びレプリカ・システムはお互いに通信する。詳しくいうと、オリジネータ・システムは、レプリカ・フロントエンド・デバイスにバックアップ情報を送り、それには新たなデータに関する情報と既存データの分配に関する情報とを含む。フロントエンド・デバイス間、又はノード間で直接に通信がおこる。
【００１０】
幾つかの実施例において、バックアップデータのストリームがフロントエンド・デバイスで受信され処理される。そして、記憶されるはずのオリジネータノードに分配される。図１に示す例の場合、レプリカのデータは、オリジネータのデータと同じミラーイメージを維持する。新たなデータが利用できるようになると、オリジネータデータに記憶されるとともに、レプリカにも複製される。システム１００のような、オリジネータとレプリカが同じノード構成を有する場合、特別なオリジネータノードの新たなデータは対応するレプリカノード（時々、「バディー」と称される。）に複製される。例えば、ノード１１２ｂに記憶された新たなデータはバディーノード１２２ｂに複製される。幾つかの実施例の場合、ノード及びバディーに関する知識はフロントエンド・デバイスで保持される。個々のノードはお互いに直接通信する。あるいはまた、オリジネータノードはオリジネータ・フロントエンド・デバイスと通信し、フロントエンド・デバイスは順繰りにレプリカ・フロントエンド・デバイスと通信して適当なレプリカノードに複製したデータを転送する。
【００１１】
幾つかの状況において、オリジネータの既存データは一つのオリジネータノードから別のオリジネータノードへ移動することができる。例えば、データ分配が不平等になったら、言い換えると、あまりに多くのデータが或るノードに記憶され、一方で他のノードへの記憶が少なすぎるような場合、システムはノード間のデータ分配を再び均等化するようにする。データの再分配を生じさせる別の状況というのは、新たなノードがシステムに追加されたときである。このデータは既存のノードから新たなノードに再分配される。データの再分配が生じるとき、再分配されたデータに関係する情報がオリジネータからレプリカに送信され、その結果、データは同じ方法でレプリカ上で再分配され得る。しかしながらシステム自体は最新ではない。レプリカデータを新しいレプリカノードにコピーし、それから古いレプリカノードに記憶された同じデータを削除することはもはや要求されていないので、全体システムはデータの再分配を効率的に処理する。
【００１２】
図２はデータ複製の処理の実施例を示すフローチャートである。幾つかの実施例において、プロセス２００はオリジネータシステム（１０２など）で実行される。幾つかの実施例において、プロセスはフロントエンド・デバイス１１０によってインプリメントされる。２０２で、１以上のオリジネータデータサブセットが複数のオリジネータノード間で再分配される。すなわち、オリジネータデータサブセットは或るオリジネータノードから他のオリジネータノードへと移動する。再分配はシステムが負荷バランスを実行するときに生じ、新たなノードがネットワークに追加されて、任意の適当な理由にために既存のノードがネットワークから削除されたりする。幾つかの実施例において、オリジネータデータサブセットは、その詳細は後述するデータコンテイナーである。２０４で、どのようにして再分配されるかということに関係するデータサブセット情報が決定される。幾つかの実施例において、データ再分配情報はデータサブセットが移動してきたソースオリジネータノードと、オリジネータシステムサブセットが移動される宛先オリジネータノードとに関係する情報を含む。２０６で、データ再分配情報がレプリカ・システムに対する通信インタフェースを介して送られる。レプリカ・システムは再分配情報を用いて、レプリカノード間の対応するレプリカデータサブセットを再分配する。
【００１３】
図３は、データ複製のプロセスの別の実施例を示すフローチャートである。幾つかの実施例において、プロセス３００はレプリカ・システム１０４で実行される。幾つかの実施例において、フロントエンド・デバイス１２０がそのプロセスを実行する。３０２で、データ再分配情報はオリジネータから受信される。データ再分配情報は、オリジネータ印譜裏面ティングプロセス２００から送信される。３０４で、１以上の対応するレプリカデータサブセットがデータ再分配情報に従い、レプリカ・システムで再分配される。上述したように、データ再分配情報はソースノードと、再分配されたデータサブセットに関連する宛先ノードに関する情報を含む。各オリジネータノードが対応するバディーレプリカノードを持つこと、元々、同じオリジネータデータサブセット及びレプリカデータサブセットがオリジネータノード及び対応のレプリカノードのそれぞれに記憶され、そしてオリジネータノード間のデータサブセットの初期分配がレプリカノード間の分配と同一であると仮定する。データ再分配情報が与えられると、レプリカ・システムは、重複したデータ送信オーバーヘッドを負うことなく、オリジネータ・システムと同じ方法で、その既存のデータサブセットを再分配することができる。
【００１４】
幾つかの実施例において、上述したプロセスで用いられるデータサブセットはコンテイナーである。様々な実施例において、コンテイナーは数メガバイトのサイズである。例えば、４.５MBのコンテイナーは幾つかの実施例で使用される。ノードは多数のコンテ−なーを記憶する。図４は、コンテイナーの一実施例を示すデータ構造図である。この例において、コンテイナー４００は、バックアップデータ部４０４とメタデータ部４０２を含む。バックアップデータ部はバックアップを要求する実際のデータを含み、そしてメタデータ部はデータバックアップを容易にするのに用いられるバックアップデータ部に関係する情報を含む。バックアップデータ部は多数のデータセグメントを含み、それは異なる大きさであり得るデータストレージサブユニットである。オリジネータでデータを受信する一方で、例えば、データストリームはフロントエンド・デバイスによって読み出される。データはデータセグメントに分けられ、適当なセグメント識別子（ＩＤ）が生成される。また、フロントエンド・デバイスはデータセグメントをチェックするなどの機能を実行し、どんな重複したセグメントも受信されないことを証明する。データストリームが再構築されるためにデータセグメントがどのようにしてデータストリームでアレンジされるかの記録は、フロントエンド・デバイスで保持されたり、又は１以上のノード内に記憶される。
【００１５】
データセグメントは適当なコンテイナーにパックされ、それらの対応するオフセット及びセグメントＩＤがメタデータ部に記録される。メタデータ部は多数のオフセット／セグメント識別子（ＩＤ）組を含む。オフセットはデータセグメントの開始のオフセットを示す。セグメントＩＤはシステムセグメントを識別するために用いられる。幾つかの実施例において、データセグメントを唯一に識別する指紋又は修正された指紋が用いられる。このコンテイナーを識別するコンテイナーＩＤ、コンテイナーが現在存在するノードを識別するカレントノードＩＤ（すなわち、コンテイナーが移動させられる宛先ノード）、そしてコンテイナーが前に存在していたノードを識別する前ノードＩＤ（すなわち、コンテイナーが移動させられたソースノード）とがメタデータ部に含まれる。コンテイナーＩＤ、カレントノードＩＤ、前ノードＩＤは、複製中、コンテイナー再分配プロセスを容易にするために用いられる。
【００１６】
図５Ａ−５Ｃは、データを再分配する例示のシナリオを示す一連の図であり、新たなノードの結果がシステムに加えられる。図５Ａにおいて、データ複製システム１００はオリジネータ・システム１０２とレプリカ・システム１０４とを含むように構成される。オリジネータ・システムで、データコンテイナー１１５，１１７，１１９はオリジネータノード１１２ａ，１１２ｂ，１１２ｃでそれぞれ分配される。各ノードは更に追加のコンテイナー（不図示）を含む。オリジネータ・システムをミラーするレプリカ・システムで、対応する複製データコンテイナー１２５，１２７，１２９がレプリカノード１１２ａ，１１２ｂ，１１２ｃで分配される。これらのレプリカコンテイナーはオリジネータから以前にコピーされていた。オリジネータ・システム内のフロントエンド・デバイス、ノード、データコンテイナーなどのオリジネータコンポーネントは、この例ではレプリカ・システムのものとは異なるラベル／ＩＤを有するように示されているが、幾つかの実施例において、オリジネータコンポーネントと、レプリカでの対応する部分は同じ識別子を共有する。レプリカ・システムによりオリジネータコンポーネントとレプリカでの対応する部分とが関連できるかぎりにおいて、様々な識別子スキームが用いられる。
【００１７】
図５Ｂにおいて、新しいノード１１２ｄがオリジネータ・システムに追加され、対応の新たなノード１２２ｄもまたレプリカ・システムに追加される。その結果、オリジネータ・システム及びレプリカ・システムに記憶されるデータは再び均衡（バランス）が図られるべきである。この例の場合、プロセス２００がオリジネータ・システム１０２で生じる。詳しくいうと、オリジネータ・システムにおいて、コンテイナー１１５，１１７，１１９を再分配する。これらのコンテイナーをレプリカに再送信するというよりも、データ分配情報を決定する。このケースにおいて、コンテイナー１１５，１１７，１１９は新たなノード１１２ｄへ移動されていた。したがって、データ再分配情報は再分配されるコンテイナーに関係するメタデータのコンパクトセットを含み、具体的にはコンテイナーのＩＤ、コンテイナーが前に存在していた各ノードのＩＤ、そしてコンテイナーが再分配され現在存在するカレントノードのＩＤを含む。コンテイナー内のシステムセグメントなどの実際のバックアップデータは、本例においては送信されず、そしてバンド幅を一定に保つ。
【００１８】
図５Ｃにおいて、本例において、レプリカ・システム１０４でプロセス３００が生じる。データ再分配情報をオリジネータ・システムから受信すると、レプリカ・システムのシステムコンテイナーは、データ再分配情報に従って再分配される。この例において、フロントエンドデバイス１２０は再分配情報を受信し且つ構文解析をし、そして対応するコンテイナーがオリジネータに再分配されるのと同じ方法でデータコンテイナーを再分配するようレプリカノードを調整（コーディネート）する。与えられたデータ再分配に基づき、（コンテイナー１１５，１１７，１１９にそれぞれ対応する）データコンテイナー１２５，１２７，１２９は新たなノード１２２ｄへ移動する。
【００１９】
また、上述したプロセスは負荷バランスに応じて実行されるようにしてもよい。一実施例において、ノード１１２ａ−ｃ及び１２２ａ−ｃが既存ノードであり、ノード１１２ｄ及び１２２ｄもまた、新たに追加されたノードというよりは既存ノードである。あまりに多くのデータがノード１１２ａ，１１２ｂ，１１２ｃに記憶され、そしてノード１１２ｄ及び１２２ｄに記憶されているデータが充分でないということを決定したとする。図５Ａ−５Ｃに記載したものと同様のプロセスが、データを再分配し、様々なノードに記憶されたデータの量をバランスすることを実行する。データ再分配情報を用いることによって、データコンテイナーはネットワークを介して送信する必要はなく、そして負荷バランスが迅速に効率的に達成され得る。
【００２０】
上述した実施例は理解を明確にする目的から詳細に述べたものであるが、本発明はこの提供した詳細に限定されるものではない。本発明を実現する多くの代替方法がある。開示された実施例は例示的なものであり、制限的なものではない。
【図１】
0005693560.tif 000002
【図２】
0005693560.tif 000003
【図３】
0005693560.tif 000004
【図４】
0005693560.tif 000005
【図５Ａ】
0005693560.tif 000006
【図５Ｂ】
0005693560.tif 000007
【図５Ｃ】
0005693560.tif 000008