(57)【要約】【課題】  クラスタの選択及び協調的レプリケーションのためにクラスタ・ファミリーを生成する装置、システム、及び方法を提供する。【解決手段】  クラスタの選択及び協調的レプリケーションのためにクラスタ・ファミリーを生成する装置、システム、及び方法が開示される。クラスタは、その関係及び役割に基づいて、クラスタ・ファミリーのファミリー・メンバーにグループ化される。クラスタ・ファミリーのメンバーは、複製された情報を取得するのに、どのファミリー・メンバーが最良の位置にあるかを判断し、それらのクラスタ・ファミリー内で累積的一貫性をもつようになる。ひとたびクラスタ・ファミリーが累積的一貫性をもつようになると、データはクラスタ・ファミリー内で共有され、クラスタ・ファミリー内部の全てのコピーが一貫性をもつようになる。【選択図】      図１
2013513839.tif 000002
【特許請求の範囲】
【請求項１】
複数のクラスタの協調的レプリケーションのための方法であって、前記方法は、
前記複数のクラスタの少なくとも１つのサブセットをクラスタ・ファミリーのファミリー・メンバー内に配置するステップと、
前記クラスタ・ファミリー・メンバー間で協議して、前記ファミリーの外部の少なくとも１つのクラスタから少なくとも１つの外部データ・オブジェクトを取得するのに、どのクラスタ・ファミリーが最良の位置にあるかを判断するステップと、
前記外部データ・オブジェクトを取得するために、前記クラスタ・ファミリーの１つのファミリー・メンバーを選択するステップと、
前記クラスタ・ファミリー・メンバーの間で前記外部データ・オブジェクトを共有し、前記クラスタ・ファミリー内の各クラスタが外部データ・オブジェクトに対して一貫性をもつようにするステップと、
を含む方法。
【請求項２】
クラスタ関係要因及び役割要因の少なくとも一方に基づいて、前記クラスタ・ファミリーの間の関係を生成するステップをさらに含む、請求項１に記載の方法。
【請求項３】
一貫性のあるソースを有するファミリー・メンバーが、ボリュームをキャッシュ内に保持し、ピア・レプリケーションのために、他のファミリー・メンバーが前記ボリュームを容易に利用できるようにするステップをさらに含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記他のファミリー・メンバーのために前記ボリュームを前記キャッシュ内に保持する前記ファミリー・メンバーが、コピーを前記外部クラスタのキャッシュ内に保持することがら前記外部クラスタを解放するステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記ファミリー内のＮ個のファミリー・メンバーの各々が、前記外部データ・オブジェクトのＮ分の１のボリュームを複製するステップをさらに含む、請求項１に記載の方法。
【請求項６】
全てのレプリケーションを前記クラスタ・ファミリー内に協調的にシリアル化するステップをさらに含む、請求項１から請求項５までのいずれかに記載の方法。
【請求項７】
前記外部データ・オブジェクトのＮ分の１のボリュームを複製する前記Ｎ個のファミリー・メンバーの第１のものが、前記外部クラスタに、前記第１のファミリー・メンバーが、前記クラスタ・ファミリー・メンバーのために前記ボリュームを保持し、前記ボリュームを前記外部クラスタのキャッシュ内に保持することから前記外部クラスタを解放することを通知するステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記クラスタ・ファミリー内のクラスタ間で外部データ・オブジェクトを共有する前に、複数の外部データ・オブジェクトの前記クラスタ・ファミリー内で累積的一貫性を達成するステップをさらに含む、請求項１から請求項７までのいずれかに記載の方法。
【請求項９】
マウント処理のために、前記クラスタ・ファミリー内の前記ファミリー・メンバーの１つを、前記クラスタ・ファミリーの外部のクラスタより優先するステップをさらに含む、請求項１から請求項８までのいずれかに記載の方法。
【請求項１０】
複数のクラスタ・ファミリーを準備するステップであって、各々のファミリーからの少なくとも１つのファミリー・メンバーがボリュームを複製する、準備するステップをさらに含む、請求項１から請求項９までのいずれかの記載の方法。
【請求項１１】
複数のクラスタを含むドメインを準備するステップであって、前記クラスタは協働して、各々のファミリーからの少なくとも１つのファミリー・メンバーがボリュームを複製し、前記残りのクラスタはレプリケーション要件を放棄することを確実にする、準備するステップをさらに含む、請求項１に記載の方法。
【請求項１２】
前記方法は、
ボリュームを第１のクラスタにコピーするコピー要求を受け取るステップと、
前記第１のクラスタがクラスタ・ファミリーのファミリー・メンバーであるかどうかを判断するステップと、
前記第１のクラスタがファミリー・メンバーであることに応答して、別のファミリー・メンバーが既に前記ボリュームのコピーを完了しているかどうかを判断するステップと、
別のファミリー・メンバーがまだ前記ボリュームをコピーしていないことに応答して、前記コピー要求を継承するように前記第１のクラスタを指定するステップと、
前記コピー要求を実行し、前記ボリュームを前記クラスタ・ファミリー内に協調的に複製するステップと、
前記クラスタ・ファミリー内で累積的一貫性を達成するステップと、
前記クラスタ・ファミリー内で前記ボリュームを共有し、前記クラスタ・ファミリー内の前記ボリュームの全てのコピーが一貫性をもつようにするステップと、
をさらに含む、請求項１に記載の方法。
【請求項１３】
第２のファミリー・メンバーが前記ボリュームをアクティブにコピーしているかどうかを判断するステップと、
前記第２のファミリー・メンバーが前記ボリュームをアクティブにコピーしていることに応答して、前記コピー要求を継承するように前記第２のファミリー・メンバーを指定するステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１４】
第２のファミリー・メンバーが、コピーする準備はできているが現時点ではアクティブにコピーしていないのかどうかを判断するステップと、
前記第２のファミリー・メンバーが、コピーする準備はできているが現時点ではアクティブにコピーしていないことに応答して、前記第２のファミリー・メンバーのコピー優先順位を下げて、前記コピー要求を延期させるステップと、
をさらに含む、請求項１３に記載の方法。
【請求項１５】
前記コピー要求を継承するために第２のファミリー・メンバーを選択するステップと、
前記第１のクラスタ・ファミリー・メンバーのコピー優先順位を下げて、前記コピー要求を延期させるステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１６】
前記クラスタ・ファミリーのためのソース・クラスタとして前記コピー要求を継承するように、前記第１のファミリー・メンバーを指定するステップと、
前記第１のファミリー・メンバーにおいて前記コピーを完了するステップと、
前記第１のファミリー・メンバーにおいてコピー要求フラグをクリアするステップと、
前記第１のファミリー・メンバーにおいて他のファミリー・メンバーのためのコピー要求フラグを設定するステップと、
前記他のファミリー・メンバーが前記コピー要求フラグを継承するステップと、
前記他のファミリー・メンバーがコピーを完了するステップと、
各々のファミリー・メンバーがコピー要求フラグを再設定するステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１７】
複数のクラスタの協調的レプリケーションのためのシステムであって、前記システムは、
ネットワークと、
前記ネットワーク上で通信する複数のサイトと、
を含み、各々のサイトは、少なくとも１つのホストと、複数のクラスタを含むストレージ・システムとを含み、各々のクラスタは、磁気テープ上に格納されたボリュームにアクセスするように構成された少なくとも１つのテープ・ドライブと、少なくとも１つのテープ・ボリューム・キャッシュと、
クラスタのグループをクラスタ・ファミリーのファミリー・メンバーにセットアップして配置するように動作可能な生成モジュールと、
外部データ・オブジェクトを前記クラスタ・ファミリー内に協調的に複製し、累積的一貫性を達成するためにファミリー・メンバーを選択するように動作可能な協調的レプリケーション・モジュールと、
を含むクラスタ・マネージャと、
を含むシステム。
【請求項１８】
前記協調的レプリケーション・モジュールは、前記ファミリー・メンバーの各々の間でレプリケーションを共有するようにさらに動作可能である、請求項１７に記載のシステム。
【請求項１９】
前記ファミリー内のＮ個のファミリー・メンバーの各々が、前記外部データ・オブジェクトのＮ分の１のボリュームを複製するようにさらに動作可能である、請求項１８に記載のシステム。
【請求項２０】
前記生成モジュールは、クラスタ間の関係要因及び役割要因の少なくとも１つに基づいて、クラスタ・ファミリーを生成するようにさらに動作可能である、請求項１７から請求項１９までのいずれかに記載のシステム。
【請求項２１】
前記協調的レプリケーション・モジュールは、前記クラスタ・ファミリー内のクラスタ間で外部データ・オブジェクトを共有する前に、複数の外部データ・オブジェクトの前記クラスタ・ファミリー内で累積的一貫性を達成するようにさらに動作可能である、請求項１７から請求項２０までのいずれかに記載のシステム。
【請求項２２】
複数クラスタの協調的レプリケーションのためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、
処理回路により読み取り可能であり、請求項１から請求項１６までのいずれかに記載の方法を実行するために、前記処理回路による実行のための命令を格納するコンピュータ可読ストレージ媒体を含む、コンピュータ・プログラム製品。
【請求項２３】
コンピュータ可読媒体上に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、請求項１から請求項１６までのいずれかに記載の方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【請求項２４】
複数クラスタの協調的レプリケーションのための装置であって、前記装置は、
ネットワーク上で通信し、各々がキャッシュを含む、複数のクラスタからクラスタ・ファミリーを生成するように動作可能な生成モジュールと、
少なくとも１つの外部データ・オブジェクトを前記クラスタ・ファミリー内に協調的に複製するように動作可能な協調的レプリケーション・モジュールと、
をさらに含む装置。
【請求項２５】
前記生成モジュールは、クラスタ関係要因及び役割要因の少なくとも１つに従って、クラスタのグループをファミリー・メンバーにセットアップして配置するようにさらに動作可能である、請求項２４に記載の装置。
【請求項２６】
前記協調的レプリケーション・モジュールは、前記レプリケーションを延期することにより永続的レプリケーション・ソースの認識に対処するようにさらに動作可能である、請求項２４又は請求項２５に記載の装置。
【請求項２７】
前記クラスタ・ファミリー内のＮ個のファミリー・メンバーの各々は、前記外部データ・オブジェクトのＮ分の１のボリュームを複製する、請求項２４から請求項２６までのいずれかに記載の装置。
【請求項２８】
前記協調的レプリケーション・モジュールは、前記外部データ・オブジェクトを取得し、前記クラスタ・ファミリー内の全てのファミリー・メンバーのためのソース・クラスタとなるように、前記クラスタ・ファミリーのファミリー・メンバーを選択し、かつ、前記ソース・クラスタに、前記外部データ・オブジェクトを共有する前に前記クラスタ・ファミリー内の累積的一貫性の達成に関与させるように、さらに動作可能である、請求項２４から請求項２７までのいずれかに記載の装置。
【請求項２９】
前記クラスタ・ファミリーと前記ファミリー・メンバーとの間の役割、規則、及び関係を定める要因を保持するように動作可能な関係モジュールをさらに含む、請求項２４から請求項２８までのいずれかに記載の装置。
【請求項３０】
生産目的のために、前記クラスタ・ファミリー内の前記ファミリー・メンバーを、他のクラスタ・ファミリーより優先するように動作可能なマウント処理モジュールをさらに含む、請求項２４から請求項２９までのいずれかに記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・ストレージ・システムに関するデータ・ストレージに関し、より具体的には、ストレージ・システム内のクラスタに関する。
【背景技術】
【０００２】
ストレージ・システムは、ライブラリ・マネージャを用いて複数の磁気テープにアクセスするために用いられる複数のテープ・ドライブを含むことができる。磁気テープは、カートリッジ内に配置することができる。コントローラは、アクチュエータに、テープ・カートリッジを記憶領域（storage area）からテープ・ドライブに転送し、磁気テープ上に書き込まれたデータにアクセスする、及び／又は、データを磁気テープに書き込むように指示することができる。
【０００３】
ストレージ・システムは、複数の地理的に異なるサイトを含む複数のサイトに配置することができる。ストレージ・システムは、１つ又は複数のネットワークを通じて通信することができる。各々のストレージ・システムは、複数のクラスタを含むことができる。各々のクラスタは、複数のテープ・ドライブを含むことができる。磁気テープは、磁気テープとの間でデータを読み書きするために、テープ・ドライブにマウント（mount）される。
【０００４】
各々の磁気テープは、本明細書ではボリュームと呼ばれる、１つ又は複数の論理ボリュームとして編成することができる。ボリュームは、ホストには別個のストレージ・デバイスのように見えることがある。ボリュームは、仮想テープ・ドライブ上に論理的に「マウントする」ことができる。本明細書で用いられる仮想テープ・ドライブは、ホストにはテープ・ドライブのように見える論理構成体（logical construct）である。
【０００５】
特許文献１（Sutani,M R,他）は、分散構造におけるクラスタにわたるデータのパーティション化を開示し、ここで、キャッシュされたノードの動的レプリケーション（複製、replication）は、バディ・レプリケーション（buddy replication）の概念に基づいている。バディ・レプリケーションは、クラスタ内の有限数のノードによってデータを複製することを可能にし、ネットワーク・レプリケーション・トラフィックを低減させる。
【０００６】
特許文献２（Bates,J W）は、ピア・ツー・ピアのデータ・レプリケーションを実施する、レプリケーション・クラスタ内で実施される遠隔非同期データ・レプリケーション・プロセスを開示する。ピア・ツー・ピア・トポロジーは、データをネットワーク上のサイトの間で双方向に複製することによって、ローカル・サイトの一次ストレージが、データを遠隔サイトに分散させることを可能にする。
【０００７】
マルチ・クラスタ構成においては、各々のクラスタは、全ての他のクラスタから同じように独立している。何らかの関係の認識がなければ、クラスタは、その役割及び／又は他のクラスタからの距離に基づいて最も有効な方法で動作することができない。典型的なグリッド構成においては、マウント処理中、ボリュームを調達するためにクラスタを選択する手段、及び、クラスタがボリューム・レプリケーションを行う能力は、この関係に対する無認識によって大きな影響を受ける。例えば、グリッドは、マウント処理及び／又はコピー処理のために、メトロ・遠隔クラスタよりも、グローバル遠隔ソース・クラスタを選択することがある。グローバル・遠隔クラスタは、クラスタ間のネットワークの距離のために、効率がずっと悪い。リアルタイムの待ち時間チェックを導入して、この距離を検出することはできるが、広域ネットワーク（ＷＡＮ）の不規則性及びランダム性により、相対距離を確実に測定することが非常に難しくなる。さらに一歩踏み込んで論じれば、グループが連携して、データをグループ内に累積的に複製し、次に互いの間で複製する場合、グループ内の２つ又はそれ以上のクラスタまでの距離にわたるレプリケーション自体は、ずっと効果的であり得る。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第２００９／０１３２６５７号明細書
【特許文献２】米国特許第２００９／００３０９８６  Ａ１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従って、当技術分野において、前述の問題に対処する必要性が存在する。
【課題を解決するための手段】
【００１０】
クラスタ・ファミリーの生成、クラスタ・ファミリー・メンバー又はクラスタ・ファミリーの選択、並びにファミリー・メンバー及び異なるファミリー間の協調的レプリケーションのための方法、装置、及びシステムが提供される。例えば、クラスタは、その関係に基づいて、クラスタ・ファミリーのファミリー・メンバーにグループ化される。クラスタ・ファミリーのメンバーは、外部データ・オブジェクトを取得するのに、どのファミリー・メンバーが最良の位置にあるかを判断し、そのクラスタ・ファミリー内で外部データ・オブジェクトに対して累積的に一貫性をもつ（cumulatively consistent）ようになる。ひとたびクラスタ・ファミリーが累積的一貫性をもつようになると、データ・オブジェクトはそのクラスタ・ファミリー内で共有され、クラスタ・ファミリー内の全てのクラスタが、各々の外部データ・オブジェクトの一貫性のあるコピーを有するようになる。
【００１１】
１つの態様の観点から見ると、本発明は、コンピュータ可読プログラムを含むコンピュータ使用可能媒体を備えるコンピュータ・プログラム製品を提供する。コンピュータ可読プログラムは、コンピュータ上で実行されたとき、コンピュータに、複数のクラスタをクラスタ・ファミリーのファミリー・メンバーにグループ化させ、ソースから外部データを取得するのに、どのファミリー・メンバーが最良の位置にあるかを判断させ、データを取得するために、クラスタ・ファミリーの１つ又は複数のファミリー・メンバーを選択させ、データをクラスタ・ファミリーに複製させ、クラスタ・ファミリー内で少なくとも２つの外部データ・オブジェクトの累積的一貫性を達成させ、クラスタ・ファミリー内でデータを共有させ、クラスタ・ファミリー内の全てのクラスタが、各々の外部データ・オブジェクトの一貫性のあるコピーを有するようにさせる。
【００１２】
別の態様の観点から見ると、本発明は、複数のクラスタの協調的レプリケーションのための方法を提供する。本方法は、複数のクラスタをクラスタ・ファミリーのファミリー・メンバー内に配置することと、ファミリー・メンバー間で協議して、ソースからデータを取得するのに、どのファミリー・メンバーが最良の位置にあるかを判断することと、データを取得するために、クラスタ・ファミリーの１つ又は複数のファミリー・メンバーを選択することと、データをクラスタ・ファミリーに協調的に複製することと、クラスタ・ファミリー内で累積的一貫性を達成することと、データをクラスタ・ファミリー内で共有し、クラスタ・ファミリー内の全てのデータ・コピーが一貫性をもつようにすることと、を含む。
【００１３】
別の態様の観点から見ると、本発明は、協調的レプリケーションを実施するために、クラスタ・ファミリー及びファミリー・メンバーを生成するための装置を提供する。本装置は、クラスタ・ファミリー及びファミリー・メンバーを生成するステップと、協調的レプリケーションを適用するステップと、それらの関係に基づいてクラスタ・ファミリー及びファミリー・メンバーを選択するステップとを機能的に実行するように構成された複数のモジュールを含む。これらのモジュールは、説明される実施形態において、関係モジュール、生成モジュール、協調的レプリケーション・モジュール、マウント処理モジュール、通信モジュール、及びポリシー・モジュール、又はそれらのいずれかの組み合わせを含むことができる。
【００１４】
関係モジュールは、プロセッサ上で実行されるコンピュータ可読プログラムを含み、クラスタ・ファミリーとファミリー・メンバーとの間の役割、規則、及び関係を定める要因を保持する。クラスタは、ネットワーク上で通信する。各々のクラスタは、例えば仮想ボリューム・キャッシュなどの少なくとも１つのキャッシュを含む。
【００１５】
生成モジュールは、プロセッサ上で実行されるコンピュータ可読プログラムを含み、クラスタの選択及び協調的レプリケーションのためにクラスタ・ファミリーを生成する。本発明の好ましい実施形態において、生成モジュールは、その関係及び役割に基づいて、クラスタをファミリー・メンバーにグループ化することによって、クラスタ・ファミリーを生成する。１つの代替的な実施形態において、生成モジュールは、構成時にクラスタをファミリー内に配置する。１つの代替的な実施形態において、生成モジュールは、異なるクラスタ間の関係を生成し、クラスタをファミリーにグループ化する。
【００１６】
協調的レプリケーション・モジュールは、プロセッサ上で実行されるコンピュータ可読プログラムを含み、クラスタ・ファミリー内のクラスタ・ファミリー・メンバー及び異なるクラスタ・ファミリーにわたって、データを協調的に複製する。
【００１７】
マウント処理モジュールは、プロセッサ上で実行されるコンピュータ可読プログラムを含み、生産目的のために、他のクラスタ・ファミリーよりクラスタ・ファミリー内のファミリー・メンバーを優先する。
【００１８】
別の態様の観点から見ると、本発明は、複数のクラスタの協調的レプリケーションのためのシステムを提供する。本システムは、ネットワークと、ネットワーク上で通信する複数のサイトとを含み、各々のサイトは少なくとも１つのホストと、複数のクラスタを含むストレージ・システムとを含み、各々のクラスタは、磁気テープ上に格納されたボリュームにアクセスするように構成された少なくとも１つのテープ・ドライブと、少なくとも１つのテープ・ボリューム・キャッシュと、プロセッサ及びメモリを用いてコンピュータ可読プログラムを実行するように構成されたクラスタ・マネージャとを含み、ここでコンピュータ可読プログラムは、クラスタのグループをファミリーのファミリー・メンバーにセットアップして配置するように構成された生成モジュールと、データをクラスタ・ファミリーに協調的に複製してファミリーの累積的一貫性を達成するためにファミリー・メンバーを選択するように構成された協調的レプリケーション・モジュールとを含む。
【００１９】
ここで、本発明を、以下の図面に示されるような好ましい実施形態を参照して、単なる例として説明する。
【図面の簡単な説明】
【００２０】
【図１】本発明による分散サイトの１つの好ましい実施形態を示す概略的なブロック図である。
【図２】本発明によるストレージ・システムの１つの好ましい実施形態を示す概略的なブロック図である。
【図３】本発明によるストレージ・システムの１つの好ましい実施形態を示す概略的なブロック図である。
【図４】本発明のクラスタの１つの好ましい実施形態を示す概略的なブロック図である。
【図５】本発明のクラスタ・ファミリー装置の１つの好ましい実施形態を示す概略的なブロック図である。
【図６】本発明のクラスタ・ファミリーの選択及び協調的レプリケーションの方法の１つの好ましい実施形態を示す概略的なフロー・チャート図である。
【図７】本発明のクラスタ・ファミリーの選択及び協調的レプリケーションの方法の１つの好ましい実施形態を示す概略的なフロー・チャート図である。
【図８】本発明のクラスタ・ファミリーの選択及び協調的レプリケーションの方法の１つの好ましい実施形態を示す概略的なフロー・チャート図である。
【発明を実施するための形態】
【００２１】
本明細書の全体を通して、特徴、利点、又はそれに類した用語に対する言及は、本発明によって実現することができる全ての特徴及び利点が、本発明のいずれか単一の実施形態に含まれるべきであること又は含まれることを意味するものではない。むしろ、特徴及び利点について言及する用語は、１つの好ましい実施形態と関連して記述される特定の特徴、利点、又は特性が、本発明の少なくとも１つの好ましい実施形態に含まれることを意味するものと理解される。従って、特徴及び利点、並びにそれに類した用語についての議論は、本明細書を通して同じ実施形態に言及していることもあるが、必ずしもそうである必要はない。
【００２２】
さらに、説明される本発明の特徴、利点、及び特性は、１つ又は複数の実施形態においていずれかの適切な方式で組み合わせることができる。当業者であれば、本発明は、特定の実施形態の１つ又は複数の特定の特徴又は利点なしでも実施できることを認識するであろう。他の場合には、本発明の全ての実施形態に存在するものではない付加的な特徴及び利点を、特定の実施形態において認めることができる。
【００２３】
同様の番号が同じ又は類似の要素を表す図面を参照して、本発明を、以下の説明における実施形態において記述する。本発明は、本発明の目的を達成するための最良の形態に関して説明されるが、当業者であれば、本発明の範囲から逸脱することなく、これらの教示に照らして変形を達成できることが理解されるであろう。
【００２４】
本明細書において説明される機能ユニットの多くは、それらの実施の独立性をより特定的に強調するために、モジュールとして表記されている。例えば、モジュールは、特注の超大規模集積（ＶＬＳＩ）回路又はゲート・アレイを含むハードウェア回路、論理チップなどの既製の半導体、トランジスタ、若しくは他の別個のコンポーネントとして実装することができる。モジュールはまた、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラマブル・アレイ論理、プログラマブル論理デバイス等といったプログラム可能なハードウェア・デバイスの形で実装することもできる。モジュールはまた、種々のタイプのプロセッサにより実行するためのソフトウェアの形で実施することもできる。実行可能コードの識別されるモジュールは、例えば、オブジェクト、プロシージャ、又は関数として編成することができるコンピュータ命令の１つ又は複数の物理又は論理ブロックを含むことができる。それにもかかわらず、識別されるモジュールの実行ファイルは、物理的に一ヶ所に配置する必要はなく、論理的に互いに結合されたとき、そのモジュールを含み、モジュールの規定の目的を達成する、異なる記憶場所（location）に格納された異なる命令を含むことができる。
【００２５】
実際には、実行可能コードのモジュールは、単一の命令又は多数の命令とすることができ、幾つかの異なるコード・セグメントにわたって、異なるプログラムの間で、及び、幾つかのメモリ・デバイス間にわたって、分散させることさえ可能である。同様に、本明細書において、動作データは、モジュール内で識別して示すことができるが、いずれかの適切な形態に具体化して、いずれかの適切なタイプのデータ構造体内に編成することができる。動作データは、単一のデータセットとして集めることができ、或いは、異なるストレージ・デバイスを含む異なる記憶場所にわたって分散させることができる。
【００２６】
本明細書の全体を通して、「１つの好ましい実施形態」、又は同様の用語への言及は、その実施形態と関連して説明される特定の特徴、構造、又は特性が、本発明の少なくとも１つの好ましい実施形態に含まれていることを意味する。従って、「１つの好ましい実施形態において」といった語句、又は同様の用語の出現は、この明細書の全体を通して、必ずしも全て同じ実施形態について言及するものではない。
【００２７】
さらに、本発明の説明される特徴、構造又は特性は、１つ又は複数の実施形態においていずれかの適切な方法で組み合わせることができる。以下の説明においては、本発明の実施形態の十分な理解を与えるように、プログラミング、ソフトウェア・モジュール、ユーザ選択、ネットワーク・トランザクション、データベース照会、データベース構造、ハードウェア・モジュール、ハードウェア回路、ハードウェア・チップ等の例のような多数の特定の細部が提供される。しかしながら、当業者であれば、特定の細部の１つ又は複数を用いることなく、或いは、他の方法、コンポーネント、材料等を用いて、本発明を実施できることが分かるであろう。他の例では、本発明の態様を不明瞭なものにしないように、周知の構造、材料又は動作は、詳細に示すことも説明することもない。
【００２８】
図１は、本発明による分散サイト１００の好ましい実施形態を示す概略的なブロック図である。分散サイト１００は、複数のサイト１０５を含む。各々のサイト１０５は、ネットワーク１１０上で他のサイト１０５と通信する。ネットワーク１１０は、インターネット、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、専用ネットワーク、ネットワークの組み合わせ等とすることができる。
【００２９】
以下で説明されるように、各々のサイト１０５は、１つ又は複数のストレージ・システムを含むことができる。さらに、各々のサイト１０５は、ストレージ・システムをネットワーク１１０に接続するブリッジ、ルータ等を含むことができる。
【００３０】
図２及び図３は、本発明によるストレージ・システム２００の１つの好ましい実施形態を示す概略的なブロック図である。図１の各サイト１０５内に、１つ又は複数のストレージ・システム２００を具体化することができる。
【００３１】
ストレージ・システム２００は、これらに限られるものではないが、ストレージ・カートリッジ、ディスク・ドライブ、ソリッドステート・ディスク（ＳＳＤ）、直接アクセス・ストレージ・デバイス（ＤＡＳＤ）、磁気テープ・ドライブ、ライブラリ、及び独立ディスクの冗長アレイ（redundant array of independent disks、ＲＡＩＤ）、又は単純ディスク束（just a bunch of disks、ＪＢＯＤ）のようなディスク・ドライブ・アレイを含む、異なる物理媒体内にデータを格納することができる。ストレージ・カートリッジの一例は、リールのハブに巻かれた再書き込み可能な磁気テープと、カートリッジ・メモリとを含む磁気テープ・カートリッジである。磁気テープ・カートリッジの一例は、Ｌｉｎｅａｒ  Ｔａｐｅ−Ｏｐｅｎ（ＬＴＯ）技術に基づいたカートリッジを含む。Ｌｉｎｅａｒ  Ｔａｐｅ−Ｏｐｅｎ、ＬＴＯ、及びＬＴＯロゴは、米国及び他の国々におけるＨＰ社、ＩＢＭ  Ｃｏｒｐ．社、及びＱｕａｎｔｕｍ社の商標である。
【００３２】
ストレージ・システム２００は、論理データ又は仮想データのような異なる形態でデータを格納することができる。ここでは、データは、「ボリューム」又は「オブジェクト」と呼ばれる種々の形態のいずれかで編成することができ、この用語は、データのいずれの特定のサイズ又は配置にも関係なく選択される。
【００３３】
図２及び図３に示されるように、ストレージ・システム２００は、複数のホスト・システム２１０のためのストレージを提供する。例えば、ストレージ・システム２００は、複数のホスト２１０、複数のクラスタ２２０、及びネットワーク２１５を含む。簡単にするために、図２には２つのホスト２１０ａ、２１０ｂ、４つのクラスタ２２０ａ、２２０ｂ、２２０ｃ、２２０ｄ、及び１つのネットワーク２１５が示されるが、いずれの数のホスト２１０、クラスタ２２０、及びネットワーク２１５を用いてもよい。従って、いずれの数のクラスタ２２０をストレージ・システム２００内に含ませることもできる。
【００３４】
図２に示されるように、ストレージ・システム２００は、ネットワーク２１５によって接続された４つのクラスタ２２０ａ、２２０ｂ、２２０ｃ、２２０ｄを用いることができ、各々のクラスタ２２０は、ホスト２１０ａ、２１０ｂに対してテープ・ドライブ又はテープ・ライブラリをエミュレートするための仮想化ノード（「ＶＮ」）２６０及びストレージ・デバイス２３０を含む。１つの好ましい実施形態において、クラスタ２２０ａ、２２０ｂ、２２０ｃ、２２０ｄは、仮想テープ・サーバ・クラスタである。
【００３５】
各々のクラスタ２２０は、データを、ストレージ・デバイス２３０とライブラリ２４０との間で局所的に移動する及び／又は転送するための階層ストレージ・ノード（「ＨＳＮ」）２５０を含む。１つの好ましい実施形態において、ストレージ・システム２００は、ディスク・ストレージ２３０と、テープ・ライブラリ２４０とを含む。１つの好ましい実施形態においては、ライブラリ２４０は、自動テープ・ライブラリ（「ＡＴＬ」）である。ＨＳＮ２５０は、データを、ローカル・ディスク・ストレージ２３０と遠隔ディスク・ストレージ２３０との間で遠隔転送するように動作することができる。ディスク・ストレージ２３０は、例えば、ＲＡＩＤ、ＪＢＯＤ、ＳＳＤ、又はそれらのいずれかの組み合わせとして構成された１つ又は複数のディスク・ドライブを含むことができる。
【００３６】
以下で説明されるように、各々のクラスタ２２０は、磁気テープを有する、図４に示されるようなライブラリ・マネージャ３７０を含む。ホスト２１０は、クラスタ・ファミリー２８０及び／又はファミリー・メンバー２２０内の磁気テープとの間でデータを読み書きする、テープ・ジョブのようなタスク又はジョブを開始及び実行することができる。ホスト２１０は、メインフレーム・コンピュータ、サーバ等とすることができる。ホスト２１０は、複数のオペレーティング・システムを実行又はホストする能力をもつことができる。例えば、ホスト２１０は、Ｌｉｎｕｘ（登録商標）、Ｊａｖａ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）等といった複数のオペレーティング・システムを実行又はホストすることができる。Ｌｉｎｕｘは、米国、その他の国々、又はその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓ社の登録商標である。Ｊａｖａ及び全てのＪａｖａベースの商標及びロゴはＯｒａｃｌｅ社及び／又はその関連会社の商標又は登録商標である。Ｍｉｃｒｏｓｏｆｔ、Ｗｉｎｄｏｗｓ、及びＷｉｎｄｏｗｓロゴは、米国、その他の国々、又はその両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社の商標である。ストレージ・システム２００のホスト２１０の各々は、単一のメインフレーム・コンピュータとして、１つ又は複数のサーバとして、又は仮想マシンのメンバーとして、動作することができる。ホスト２１０は、Ｐｒｏｃｅｓｓｏｒ  Ｒｅｓｏｕｒｃｅ／Ｓｙｓｔｅｍ  Ｍａｎａｇｅｒ（ＰＲ／ＳＭ）ファシリティを介する論理パーティション（ＬＰＡＲ）、ＩＢＭ（登録商標）ｚ／ＶＭ（登録商標）オペレーティング・システムを介する仮想マシン、及びオペレーティング・システム、特にキー保護されたアドレス空間及び目標指向型作業負荷スケジューリングを有するＩＢＭ  ｚ／ＯＳ（登録商標）オペレーティング・システムを通じた、３つのレベルの仮想化を提供することができる。ＩＢＭ、ｚ／ＶＭ、及びｚ／ＯＳは、世界中の多数の管轄区域において登録されているＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ社の商標である。
【００３７】
以下で説明されるように、ホスト２１０は、ネットワーク２１５上でクラスタ２２０と通信し、クラスタ・ファミリー・メンバー２２０を通して、複数の磁気テープ・ドライブ、ディスク・ドライブ及び他のストレージ・デバイスにアクセスすることができる。例えば、第１のホスト２１０ａは、ネットワーク２１５上で通信し、第１のクラスタ２２０ａを通して、ストレージ・デバイス及び磁気テープにアクセスすることができる。
【００３８】
図４に示されるように、各々のクラスタ２２０は、階層ストレージ・ノード３１５のような、階層ストレージ・コントローラを含むことができる。ストレージ又はストレージ制御ノードと、高速書き込みキャッシュ、ポイント・イン・タイム・コピー、トランスペアレントなデータ・マイグレーション、及び遠隔コピーのような高度な機能を実装するためのプラットフォームとを付加することによって、クラスタ２２０は、データの読み出し及び格納のためのシングル・ポイント管理（single point management）を提供し、ストレージを異なるホスト２１０に容易に割り当てることができるストレージ・プールを集約し、ストレージ・システム２００をスケーリングすることができる。
【００３９】
クラスタ２２０は、「イン・バンド（in-band）」手法に従うことができる。イン・バンド手法により、クラスタ・ファミリー・メンバー２２０を通して、全ての入力／出力（Ｉ／Ｏ）要求、並びに全ての管理及び構成要求を処理することができる。
【００４０】
ネットワーク２１５を通じて、クラスタ２２０の各々をクラスタ自体の間で、及び、ホスト２１０と接続して、磁気テープ上に書き込まれたデータにアクセスすること、及び／又は、データを磁気テープに書き込むことができる。複数のクラスタ２２０は、ストレージ・システム２００のドメイン２０５を形成することができる。ドメイン２０５は、マルチ・クラスタ構成又はグリッド構成を表すことができる。ドメイン２０５は、２つ又はそれ以上のクラスタ２２０を含むことができる。
【００４１】
ストレージ・システム２００のネットワーク２１５は、ストレージ・エリア・ネットワーク（ＳＡＮ）、トークン・リング・ネットワーク、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、専用ネットワーク、ネットワークの組み合わせ等とすることができる。ＳＡＮは、これを通じてホスト２１０がネットワーク２１５上でクラスタ２２０と通信することができる「ファブリック」から成ることができる。ファブリックは、ファイバ・チャネル・ネットワーク、イーサネット・ネットワーク等を含むことができる。全ての要素が、通信のために同じファブリックを共有しないこともある。第１のホスト２１０ａは、１つのファブリック上で第１のクラスタ２２０ａと通信することができる。さらに、第１のホスト２１０ａは、別のファブリック上で第３のクラスタ２２０ｃと通信することができる。
【００４２】
各々のストレージ・システム２００は、クラスタ・ファミリー２８０を含むことができる。クラスタ・ファミリー２８０は、複数のクラスタ・ファミリー・メンバー２２０を含むことができ、これらは、クラスタ・ファミリー２８０に配置され、構成され、編成され、及び／又はグループ化される。例えば、図３に示されるように、ストレージ・システム２００は、クラスタ・ファミリー２８０（１）及びクラスタ・ファミリー２８０（２）を含む。クラスタ・ファミリー２８０（１）は、クラスタ・ファミリー２８０（１）のファミリー・メンバーにグループ化される複数のクラスタ２２０（ａ）、２２０（ｂ）を含む。クラスタ・ファミリー２８０（２）は、クラスタ・ファミリー２８０（２）のファミリー・メンバーにグループ化される複数のクラスタ２２０（ｃ）、２２０（ｄ）を含む。クラスタ・ファミリー２８０（１）及びクラスタ・ファミリー２８０（２）は、ネットワーク１１０、２１５などのネットワークを介して、互いに通信する。各々のクラスタ・ファミリー２８０に名前を与えること又は割り当てることができる。例えば、クラスタ・ファミリー２８０（１）は都市Ａと名付けることができ、クラスタ・ファミリー２８０（２）は都市Ｂと名付けることができる。
【００４３】
簡単にするために、図３は、２つのクラスタ・ファミリー２８０を有するストレージ・システム２００を示すが、如何なる数のストレージ・システム２００、クラスタ・ファミリー２８０、及びクラスタ・ファミリー・メンバー２２０を用いてもよい。
【００４４】
ストレージ・システム２００の一例は、ＩＢＭ  ＴＳ７７００  Ｖｉｒｔｕａｌ  Ｔａｐｅ  Ｓｅｒｖｅｒである。
【００４５】
図４は、本発明のクラスタ２２０の１つの好ましい実施形態を示す概略的なブロック図である。クラスタ２２０は、例えば、図２及び図３のクラスタ・ファミリー２８０のクラスタ・ファミリー・メンバー２２０を表すことができる。クラスタ２２０の説明は、図１−図２の要素を参照しており、同様の符号が同様の要素を示す。クラスタ２２０は、仮想化ノード３１０、階層ストレージ・ノード３１５、ボリューム・キャッシュ３６５、及びライブラリ・マネージャ３７０を含むことができる。
【００４６】
ストレージ・デバイス２３０は、例えば、独立ディスクの冗長アレイ（ＲＡＩＤ）又は単純ディスク束（ＪＢＯＤ）、又はソリッドステート・ディスク（ＳＳＤ）等として配置された１つ又は複数のディスク・ドライブを含むことができる。ストレージ・デバイス２３０は、ボリューム・キャッシュ３６５を含むことができる。ボリューム・キャッシュ３６５は、仮想ボリューム・キャッシュ及び／又はテープ・ボリューム・キャッシュ（ＴＶＣ）の役目を果たすことができる。
【００４７】
例えば、ストレージ・デバイス２３０は、仮想ボリューム・キャッシュ３６５を含む。仮想ボリューム・キャッシュ３６５は、ＴＶＣの役目を果たすことができ、ここでＴＶＣは、ハードディスク・ドライブのような高速でアクセス可能なストレージ・デバイスを含む。１つの好ましい実施形態において、クラスタ２２０は、データをＴＶＣ３６５にキャッシュするように動作する。
【００４８】
ＴＶＣ３６５は、論理ボリュームから読み出されるデータをキャッシュすること、及び／又は、論理ボリュームに書き込まれるデータをキャッシュすることができる。ホスト２１０は、論理ボリュームに繰り返し書き込みを行うことができる。ＴＶＣ３６５は、データを論理ボリュームの磁気テープに書き込むことなく、書き込まれたデータをハードディスク・ドライブ２３０上に格納することができる。後の時点で、ＴＶＣ３６５は、キャッシュされたデータをテープ・ライブラリ２４０内の磁気テープに書き込むことができる。従って、論理ボリュームをマウントする仮想テープ・ドライブに対する、読み出し動作及び書き込み動作などの動作は、ＴＶＣ３６５を通して経路指定することができる。
【００４９】
ホスト２１０は、クラスタ２２０上で、タスク及び／又はジョブを開始及び実行することができる。例えば、第１のホスト２１０ａのアクセスの結果、ライブラリ・マネージャ３７０のアクチュエータが、物理テープ・マネージャ３３５によって制御されて、テープ・カートリッジをストレージ・エリアからテープ・ドライブに転送し、磁気テープ上に書き込まれたデータにアクセスすること、及び／又は、データを磁気テープ及び／又はＴＶＣ３６５に書き込むことがある。
【００５０】
仮想化ノード３１０は、ネットワーク２１５への複数の接続を有する独立したプロセッサ・ベースのサーバとすることができる。仮想化ノード３１０は、バッテリ・バックアップ式ユニット（ＢＢＵ）を含むこと、及び／又は、無停電電源装置（ＵＰＳ）へのアクセスを有することができる。仮想化ノード３１０は、ウォッチドッグ・タイマーを含むことができる。ウォッチドッグ・タイマーは、回復することができない、及び／又は、回復するのに長い時間がかかる故障した仮想化ノード３１０を再始動できることを保証できる。
【００５１】
仮想化ノード３１０は、１つ又は複数のテープ・デーモン３１２を含むことができる。テープ・デーモン３１２は、ホスト２１０に対してクラスタ２２０のテープ・ドライブを、仮想テープ・ドライブとしてエミュレートすることができる。テープ・デーモン３１２は、ＴＶＣ３６５上にあるファイル上で動作することができ、及び／又は、遠隔ファイル・アクセス３２５を通して、別のクラスタ２２０の遠隔ＴＶＣ３６５内のファイル上で動作することができる。
【００５２】
階層ストレージ・ノード３１５は、クラスタ・マネージャ３２０、遠隔ファイル・アクセス３２５、データ・ムーバ（data mover）３３０、物理テープ・マネージャ３３５、キャッシュ・マネージャ３４０、リコール・マネージャ３４５、データベース３５０、管理インターフェース３５５、及び媒体マネージャ３６０を含むことができる。クラスタ・マネージャ３２０は、マルチ・クラスタ又はグリッド・トポロジーにおける複数のクラスタ２２０間の動作を連係させることができる。
【００５３】
クラスタ・マネージャ３２０は、トークンを用いて、どのクラスタ２２０が現在のデータのコピーを有するかを判断することができる。トークンは、データベース３５０内に格納することができる。クラスタ・マネージャ３２０はまた、クラスタ２２０の間のデータのコピーを連係させることもできる。クラスタ・マネージャ３２０は、当業者には周知であるようなコンピュータ可読プログラムを実行するように構成された１つ又は複数のプロセッサを含むことができる。
【００５４】
遠隔ファイル・アクセス３２５は、サーバ、１つ又は複数のプロセッサ等とすることができる。遠隔ファイル・アクセス３２５は、いずれかの遠隔クラスタ２２０によるアクセスのために、ＴＶＣ３６５へのリンクを提供することができる。クラスタ・マネージャ３２０は、コンピュータ可読プログラムを含むことができる。
【００５５】
データ・ムーバ３３０は、クラスタ２２０間で行われるコピーのための実際のデータ転送動作を制御することができ、同様に、物理テープ媒体とＴＶＣ３６５との間でデータを転送することもできる。データ・ムーバ３３０は、コンピュータ可読プログラムを含むことができる。
【００５６】
物理テープ・マネージャ３３５は、クラスタ２２０内の物理テープを制御することができる。物理テープ・マネージャ３３５は、複数プール内の物理テープ、共通スクラッチ・プールとの間のボリュームの再利用、借入及び返却を管理し、プール間でテープを転送することができる。物理テープ・マネージャ３３５は、コンピュータ可読プログラムを含むことができる。
【００５７】
キャッシュ・マネージャ３４０は、ＴＶＣ３６５から物理テープへのデータのコピー、及びその後のＴＶＣ３６５からのデータの冗長コピーの除去を制御することができる。キャッシュ・マネージャ３４０はまた、制御信号を提供して、異なるコンポーネントとＴＶＣ３６５の間のデータ・フローのバランスを取ることができる。キャッシュ・マネージャ３４０は、コンピュータ可読プログラムを含むことができる。
【００５８】
リコール・マネージャ３４５は、仮想テープ・ドライブ又はクラスタ・マネージャ３２０が要求するコピーに関する、物理媒体からＴＶＣ３６５へのデータ・リコールをキューに入れ、制御することができる。リコール・マネージャ３４５は、コンピュータ可読プログラムを含むことができる。
【００５９】
データベース３５０は、ハードディスク・ドライブ上に格納することができる記録の構造化された集合体とすることができる。記録は、磁気テープ上のデータの記憶場所を含むことができる。ホスト２１０は、データをクラスタ２２０の磁気テープに書き込むことができ、及び／又は、データベース・アドレスを用いて磁気テープからのデータにアクセスし、データをユーザに提供することができる。
【００６０】
管理インターフェース３５５は、クラスタ２２０についての情報をユーザに提供することができる。また、管理インターフェース３５５は、ユーザが、クラスタ２２０を制御し、構成することを可能にする。管理インターフェース３５５は、コンピュータ陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）スクリーン、キーボード等を含んでもよく、又は、ウェブ・ベースのインターフェースとして存在してもよい。
【００６１】
媒体マネージャ３６０は、クラスタ２２０の磁気テープの物理的な取扱いを管理することができる。また、媒体マネージャ３６０は、クラスタ２２０の磁気テープのエラー回復を管理することもできる。媒体マネージャ３６０は、エラーを診断することができ、そのエラーが物理テープ・ドライブにより生じたものか、又は物理テープ媒体により生じたものかを判断することができる。さらに、媒体マネージャ３６０は、エラー回復に対して適切な措置を取ることができる。
【００６２】
ライブラリ・マネージャ３７０は、複数の物理テープ・ドライブ、ロボット・アクセサ（accessor）及び複数の物理テープ媒体を含むことができる。ライブラリ・マネージャ３７０のロボット・アクセサは、磁気テープを、ＴＶＣ３６５に割り当てられたテープ・ドライブに移送することができる。仮想テープ・ドライブは、ホスト２１０に対しては、物理テープ・ドライブのように見える論理構成体とすることができる。当業者には周知のように、読み出し／書き込みチャネルを通して、データをテープ・ドライブの磁気テープとの間で読み書きすることができる。
【００６３】
複数のクラスタ２２０のテープ・ドライブの各々は、１つ又は複数の磁気テープを用いて、データを格納することができる。磁気テープは、ストレージ・システム２００においてデータのストレージ媒体として機能することができる。クラスタ２２０は、いずれの数のテープ・ドライブ及び磁気テープを用いることもできる。例えば、ストレージ・システム２００は、２つのテープ・ドライブ及び２５６個の仮想ドライブを用いることができる。
【００６４】
ＴＶＣ３６５は、動作されているテープ・ボリュームからのデータを含むことができ、高速アクセスのために、付加的なボリューム・データを格納する。ボリュームをマウントする仮想テープ・ドライブに対する、読み出し動作及び書き込み動作のような動作を、ＴＶＣ３６５を通して経路指定することができる。従って、クラスタ２２０を選択することは、クラスタのＴＶＣ３６５を選択することになり得る。テープ・ドライブの全ての磁気テープを、１つ又は複数の論理ボリュームとして編成することができる。ＴＶＣ３６５内のボリュームは、先入れ先だし（first in first out、ＦＩＦＯ）及び／又は最長時間未使用（leastrecently used、ＬＲＵ）アルゴリズムを用いて管理することができる。
【００６５】
ＴＶＣ３６５は、高速でアクセス可能なストレージ・デバイスとすることができる。例えば、ＴＶＣ３６５は、５４００ギガバイト（ＧＢ）等のストレージ容量を有するハードディスク・ドライブとすることができる。ストレージ・システム２００において、テープ・ドライブは、論理ボリュームから読み出されるデータをＴＶＣ３６５にキャッシュすることができ、及び／又は、論理ボリュームに書き込まれるデータをキャッシュすることができる。例えば、ホスト２１０は、仮想テープ・ドライブに対して繰り返し書き込みを行うことができる。ＴＶＣ３６５は、データを仮想磁気テープに書き込むことなく、書き込まれたデータをハードディスク・ドライブ上に格納することができる。後の時点で、キャッシュ・マネージャ３４０は、キャッシュされたデータをクラスタ２２０の磁気テープに書き込むことができる。
【００６６】
ボリュームにアクセスした仮想化ノード３１０は、マウント・ポイント（mount point）と呼ぶことができる。論理ボリュームに関する最近のマウント・ポイントのために用いられた遠隔クラスタＴＶＣ３６５を選ぶことにより、そのボリュームへのアクセスを改善することができる。ＴＶＣ３６５の高可用性、高速書き込みストレージは、データが物理ディスクに書き込まれるのを待つ必要なしに、ホスト２１０がデータをＴＶＣ３６５に書き込むのを可能にする。
【００６７】
１つの好ましい実施形態において、各々のサイト１０５は、ストレージ・システム２００を含む。各々のストレージ・システム２００は、互いにグループ化されてクラスタ・ファミリー２８０を生成する２つ又はそれ以上のクラスタ・ファミリー・メンバー２２０を含む。例えば、クラスタ・ファミリー２８０（１）は、クラスタ・ファミリー・メンバー２２０（ａ）及び２２０（ｂ）のグループを含み、クラスタ・ファミリー２８０（２）は、クラスタ・ファミリー・メンバー２２０（ｃ）及び２２０（ｄ）のグループを含む。例えば、クラスタ・ファミリー２８０（１）を生産目的に用い、クラスタ・ファミリー２８０（２）を災害復旧（ＤＲ）又はアーカイブ（保存記録、archive）目的に用いることができる。従って、クラスタ・ファミリー２８０は、他のクラスタ・ファミリー２８０に対して異なる役割を果たすことができる。さらに、クラスタ・ファミリー２８０のクラスタ・ファミリー・メンバー２２０は、クラスタ・ファミリー２８０内で互いに対して異なる役割を果たすことができる。従って、クラスタ・ファミリー２８０のクラスタ・ファミリー・メンバー２２０は、非ファミリー・メンバーに対して異なる役割を果たすことができる。
【００６８】
１つの好ましい実施形態において、クラスタ・ファミリー２８０は、グローバル距離、メトロ距離、又はそれらの組み合わせで構成することができる。同様に、クラスタ・ファミリー・メンバー２２０は、グローバル距離、メトロ距離、又はそれらの組み合わせで構成することができる。さらに、クラスタ・ファミリー・メンバー２２０は、クラスタ・ファミリー２８０において互いに異なる距離格付け（distant rating）を有することができる。同様に、クラスタ・ファミリー２８０は、互いの間で異なる距離格付けを有することができる。距離格付けは、クラスタ・ファミリー２８０とクラスタ・ファミリー・メンバー２２０との間の役割及び関係を定める要因として用いることができるが、これは、単に、クラスタ・ファミリー２８０とクラスタ・ファミリー・メンバー２２０との間の関係認識をもたらす１つの要因に過ぎない。従って、クラスタ・ファミリー・メンバーへのクラスタ２２０を構成又はグループ化は、距離に制限されるものではない。
【００６９】
さらに、各々のストレージ・システム２００は、２つ又はそれ以上のクラスタ２２０をファミリー・メンバーにグループ化することによって生成されたクラスタ・ファミリー２８０を含むので、各々のストレージ・システム２００又はストレージ・システム２００の組み合わせは、マルチ・クラスタ構成又はグリッドを表すことができる。
【００７０】
さらに、ストレージ・システム２００のクラスタ２２０は、分散型ストア構成を形成することができる。例えば、第２のクラスタ２２０（ｂ）は、ボリュームの二次インスタンスを生成することができる。二次インスタンスを、第１のクラスタ２２０（ａ）上の一次コピーと同期化させることができ、ここで一次コピーが更新されたときはいつでも、二次コピーが更新される。二次インスタンスを、遠隔サイト１０５に配置された別のクラスタ・ファミリー２８０内に格納し、一次インスタンスが利用できなくなった場合のデータの可用性を保証することができる。将来のマウント・ポイント・アクセスは、二次コピーを一次コピーとして選択することができる。データを磁気テープに追加、除去、及び／又は再バランスする際に、トランスペアレントなデータ・マイグレーションを用いることができる。
【００７１】
図１−図２を参照して、本発明の好ましい実施形態が説明されるが、これは例示のためだけのものである。当業者であれば、本発明は、いずれかの特定のグリッド構成に限定されるものではなく、いずれのマルチ・クラスタ構成又はグリッド構成でも実装できることを認識するであろう。例えば、サイト１０５（ａ）からの１つ又は複数のクラスタ２２０を、サイト１０５（ｂ）のような異なるサイト１０５からの１つ又は複数のクラスタ２２０とグループ化して、第１のクラスタ・ファミリー２８０を生成することができる。同様に、サイト１０５（ｃ）及びサイト１０５（ｄ）からの１つ又は複数のクラスタ２２０をファミリー・メンバー内にグループ化して、第２のクラスタ・ファミリー２８０を生成することができる。従って、クラスタ２２０のいずれの組み合わせも、ファミリー・メンバーにグループ化して、クラスタ・ファミリー２８０を生成することができる。
【００７２】
図５は、本発明のクラスタ・ファミリー装置４００の１つの好ましい実施形態を示す概略的なブロック図である。この装置４００は、ホスト２１０及び／又はクラスタ２２０の形で具体化することができる。１つの好ましい実施形態において、装置４００は、クラスタ・マネージャ２３０の形で具体化される。装置４００の説明は、図１−図４の要素を参照しており、同様の符号は同様の要素を指す。装置４００は、関係モジュール４０５、生成モジュール４１０、協調的レプリケーション・モジュール４１５、マウント処理モジュール４２０、通信モジュール４２５、及びポリシー・モジュール４３０、又はこれらのいずれかの組み合わせを含むことができる。
【００７３】
関係モジュール４０５は、クラスタ・マネージャ３２０のプロセッサのようなプロセッサ上で実行されるコンピュータ可読プログラムを含む。さらに、クラスタ関係モジュール４０５は、クラスタ・ファミリー２８０とファミリー・メンバー２２０との間の役割及び関係を定める要因を含む。例えば、どのファミリー・メンバーがどのファミリーに属するのか、隣接するファミリー及び／又はファミリー・メンバーの間の距離格付け、及びどのファミリー・メンバーが製造目的に用いられ、どのファミリー・メンバーがＤＲ（災害復旧）及び／又はアーカイブ目的に用いられるか、に関する要因である。
【００７４】
クラスタ・ファミリー・メンバー２２０は、ネットワーク１１０及び／又はネットワーク２１５のようなネットワーク上で通信する。各々のクラスタ・ファミリー・メンバー２２０は、磁気テープ上に格納されたボリュームにアクセスするように構成された少なくとも１つのテープ・ドライブを有するライブラリ・マネージャ３７０と、少なくとも１つのＴＶＣ３６５とを有する。
【００７５】
生成モジュール４１０は、クラスタ・マネージャ３２０のプロセッサのようなプロセッサ上で実行されるコンピュータ可読プログラムを含む。生成モジュール４１０は、共通の組のガイドライン、規則、及び／又は目的で動作するようにクラスタ２２０を互いにグループ化することにより、クラスタ２２０を選択し、クラスタ・ファミリー２８０のファミリー・メンバー内に配置する。
【００７６】
生成モジュール４１０は、クラスタ２２０をクラスタ・ファミリー２８０にグループ化して、ファミリー・メンバー２２０が共通の組の規則又はガイドラインに従うことができるようにする。このことにより、例えばファミリー２８０（１）、２８０（２）のようなクラスタのグループが連携して、特定のタスクをより効率的に達成できるようになり、又はクラスタ２２０及び／又はファミリー２８０の異なるグループが、グリッド内で異なる目的を有することができるようになる。
【００７７】
生成モジュール４１０を用いて、構成特性を通して、ファミリー２８０内のファミリー・メンバー２２０のカスタマイズ可能な動作を可能にすることができる。例えば、図３を参照すると、クラスタ・ファミリー・メンバー２２０（ａ）、２２０（ｂ）のグループは、生産作業負荷に有利な１組の規則に従う生産ファミリー２８０（１）として働くことが許容される。ドメイン２０５内のクラスタ・ファミリー・メンバー２２０（ｃ）、２２０（ｄ）の別のグループは、アーカイブ又は災害復旧ファミリー２８０（２）として働くことが許容され、規則を作成するファミリー・メンバー２２０（ｃ）、２２０（ｄ）が、生産ファミリー２８０（１）からデータを複製する際により有効に動作する
【００７８】
さらに、生成モジュール４１０は、ファミリー２８０のファミリー・メンバー２２０の関係、及び、異なるクラスタ・ファミリー２８０間の関係を管理する。例えば、生成モジュール４１０は、クラスタ・ファミリー・メンバー２２０を、その関係及び役割に基づいて管理することができる。１つの好ましい実施形態においては、関係モジュール４０５は、この情報を生成モジュール４１０に提供することができる。ファミリー・メンバー及び隣接するファミリーの関係及び／又は役割に基づいて、クラスタ・ファミリー・メンバー２２０が互いの間で協議して、ファミリー２８０の外部の複数のクラスタから外部データを取得するのに、どのファミリー・メンバー２２０が最良の位置にあるかを判断する。生成モジュール４１０は、この情報を用いて、ファミリー２８０のメンバー２２０をＴＶＣクラスタとして優先することができ、或いは、クラスタだけ又はグリッド全体とは対照的に、ファミリー２８０でのアクセス制限又は他の特例行動を可能にすることができる。
【００７９】
生成モジュール４１０は、管理インターフェース３５５を用いて、ページを表示することができ、そこでユーザ（例えば顧客）は、８文字の名前のような文字名を有するクラスタ・ファミリーを生成することができる。次に、ユーザは、生成モジュール４１０を用いて、１つ又は複数のクラスタをファミリーに付加することができる。生成モジュール４１０は、この情報をクラスタの永続的な重要プロダクト・データ（vital product data）内に格納することができるので、マルチ・クラスタ又はグリッド構成内の全てのクラスタは、そのクラスタの役割及びそれが属するファミリーを認識する。生成モジュール４１０は、ファミリーのために選択されているクラスタが、別のファミリーのために既に選択されていることを判断することができる。いずれか１つのクラスタが同時に２つのファミリー内に存在するのを回避するために、生成モジュール４１０は、ユーザに、選択されているクラスタが既に別のファミリー・メンバー内に存在することを通知することができる。さらに、生成モジュール４１０は、１組の規則を用いて、１つのクラスタが同時に２つのファミリーに選択されるのを防止することができる。
【００８０】
ポリシー・モジュール４３０は、クラスタ・マネージャ３２０のプロセッサのようなプロセッサ上で実行されるコンピュータ可読プログラムを含む。１つの好ましい実施形態において、ポリシー・モジュール４３０は、どのクラスタ・ファミリー・メンバー２２０を生産のために用いるべきであり、どのファミリー・メンバーをＤＲ／アーカイブ目的のために用いるべきであるかに関する特定のポリシーを含むことができる。これらのポリシーは、データのレプリケーションを支配する規則の組を含むことができる。ユーザは、管理インターフェース３５５を介して、複数のクラスタ・ファミリー２８０及びファミリー・メンバー２２０を管理するためのポリシーを入力することができる。
【００８１】
図２及び図３を参照すると、クラスタ・ファミリー生成モジュール４１０を用いて、「都市Ａ」と名付けられるクラスタ・ファミリー２８０（１）と、「都市Ｂ」と名付けられる別のクラスタ・ファミリー２８０（２）とを生成することができる。クラスタ・ファミリー２８０（１）は、クラスタ・ファミリー・メンバー２２０（ａ）、２２０（ｂ）のグループを含むことができ、クラスタ・ファミリー２８０（２）は、クラスタ・ファミリー・メンバー２２０（ｃ）、２２０（ｄ）のグループを含むことができる。さらに、生成モジュール４１０を用いて、ファミリー・メンバー２２０を、クラスタ・ファミリー２８０に付加し又はそこから除去すること、及び、クラスタ・ファミリー・メンバーを異なるクラスタ・ファミリー２８０に再グループ化することができる。
【００８２】
生成モジュール４１０は、ファミリーの生成中、互いに対するその関係及び／又は役割に基づいてクラスタをセットアップし、ファミリー・グループ内に配置するので、グリッド又はマルチ・クラスタ構成内の全てのクラスタは、互いの役割及びそれらが属するファミリーを認識している。従って、生成モジュール４１０は、管理インターフェース３５５を介して、ユーザに、例えばファミリー２８０（１）に付加されているクラスタ２２０（ｄ）が現在、別のファミリー２８０（２）のファミリー・メンバーであることを警告又は通知することができる。次いで、ユーザは、ファミリー２８０（２）からクラスタ２２０（ｄ）を選択解除し、クラスタ２２０（ｄ）をファミリー２８０（１）に付加又は再選択することができる。従って、生成モジュール４１０により、ドメイン２０５（例えば、グリッド）内の全てのクラスタ２２０が、自分の属するファミリー、他のファミリー・メンバー、及び他のファミリーに属する非ファミリー・メンバーに対する、各自の役割及び関係を認識することが可能になる。
【００８３】
１つの好ましい実施形態において、生成モジュール４１０は、クラスタ・ファミリーに名前を割り当てることができる。例えば、構成中、ユーザは、管理インターフェース３５５を用いて、クラスタ・ファミリーに名前を割り当てることができる。
【００８４】
協調的レプリケーション・モジュール４１５は、クラスタ・マネージャ３２０のプロセッサのようなプロセッサ上で実行されるコンピュータ可読プログラムを含む。さらに、協調的レプリケーション・モジュール４１５は、既存のコピー管理を強化して、クラスタ・ファミリー２８０に属するクラスタ２２０のグループが、ファミリー２８０のために、及び、ファミリー２８０内の個々のクラスタ２２０（例えば、ファミリー・メンバー２２０）の間で、一貫性を達成するのにより効率的に協働するのを可能にする。
【００８５】
協調的レプリケーション・モジュール４１５は、ＤＲ又はアーカイブ・ファミリーのようなファミリー２８０内の２つ又はそれ以上のクラスタ・ファミリー・メンバー２２０が、インバウンド・レプリケーションの作業負荷を共有することを可能にする。従って、協調的レプリケーション・モジュール４１５を用いるＤＲ／アーカイブ・ファミリー・メンバー２２０のファミリー２８０は、レプリケーションのためにソース・クラスタを選ぶ際に、改善されたＴＶＣ選択から恩恵を受ける。
【００８６】
協調的レプリケーション・モジュール４１５は、クラスタ・ファミリー・メンバーが、同じファミリーに属する他のクラスタ・ファミリー・メンバーの間でコピー作業負荷を共有することを可能にする。例えば、１つの好ましい実施形態において、ドメイン２０５は、Ｙ個のクラスタ２２０を含み、ここでＹは、ドメイン２０５内に含まれるクラスタ２２０の数を表す。クラスタは、Ｎ個（２つ又はそれ以上）のクラスタ・ファミリー・メンバー２２０を有するクラスタ・ファミリー２８０にグループ化される。従って、ドメイン２０５は、Ｙ個のクラスタ２２０から構成され、クラスタ２２０の一部は、クラスタ・ファミリー２８０のＮ個のクラスタ・ファミリー・メンバーにグループ化される。
【００８７】
例えば、図３を参照すると、ドメイン２０５内には４つのクラスタ２２０（ａ）、２２０（ｂ）、２２０（ｃ）、及び２２０（ｄ）があるので、Ｙは４つのクラスタを表す（Ｙ＝４）。２つのクラスタ２２０（ａ）及び２２０（ｂ）は、第１のクラスタ・ファミリー２８０（１）のＮ＝２個のクラスタ・ファミリー・メンバーにグループ化され、２つのクラスタ２２０（ｃ）及び２２０（ｄ）は、第２のクラスタ・ファミリー２８０（２）のＮ＝２個のクラスタ・ファミリー・メンバーにグループ化される。このグリッド構成において、ドメイン２０５は、Ｙ（４）個のクラスタから構成され、Ｎ＝２個のクラスタのサブセットが、クラスタ・ファミリー２８０のファミリー・メンバーにグループ化される。従って、１つのファミリー内のクラスタ・ファミリー・メンバーの数として、Ｎ＝２である。
【００８８】
協調的レプリケーション・モジュール４１５は、初めてそれをファミリー内にもたらすときに、いずれか１つのボリュームのレプリケーションをシリアル化する（serialize）ことによって、クラスタのファミリー・グループを協調的に複製する。例えば、協調的レプリケーション・モジュール４１５は、Ｎがコピーを必要とするファミリー内のクラスタの数である場合に、外部ボリュームのＮ分の１を複製するように、ファミリー２８０（２）内の各クラスタ・メンバー２２０（ｃ）、２２０（ｄ）に指示する。ひとたび全ての外部ボリュームがファミリー２８０（２）内に複製され、ファミリー２８０（２）が累積的一貫性をもつようになると、次に、同じファミリー２８０（２）内の一貫性のないクラスタが互いの間で外部データを共有する。
【００８９】
一例として、本発明を用いない場合、マイクロコード・レベルからは、クラスタ２２０が互いに対するその関係及び役割を認識していないので、各々のクラスタ２２０は、互いに独立して機能することが可能である。例えば、クラスタ２２０（ａ）が、クラスタ２２０（ｃ）及び２２０（ｄ）に複製する必要がある２０個のボリュームを含むと仮定した場合である。クラスタ２２０（ｃ）及び２２０（ｄ）は互いに独立して機能するので、各々のクラスタ２２０（ｃ）、２２０（ｄ）は、ネットワーク２１５にわたってオリジナル・データの２０個のボリュームをプルする（pull）ことができる。
【００９０】
ここで図２及び図３を参照すると、１つの好ましい実施形態においては、例えば４つのクラスタがあり、そこで、生成モジュール４１０を介して、２つのクラスタ２２０（ａ）、２２０（ｂ）がファミリー２８０（１）にグループ化され、２つのクラスタ２２０（ｃ）、２２０（ｄ）がファミリー２８０（２）にグループ化される。全てのファミリー・メンバー２２０は、互いに認識し、ファミリー・メンバー２００が属するファミリー２８０を認識し、さらに、ファミリー内の隣接するクラスタ内に複製する必要がある全てのボリュームを認識している。
【００９１】
例えば、クラスタ・ファミリー・メンバー２２０（ｃ）及び２２０（ｄ）は、互いに認識し、かつ、自分のファミリー２８０（２）内に複製する必要がある、異なるクラスタ・ファミリー２８０（１）内の非ファミリー・メンバー２２０（ａ）からの２０個のボリュームがあることを認識している。協調的レプリケーション・モジュール４１５を用いて、ファミリー・メンバー２２０（ｃ）は、１０個の固有ボリュームをプルし、ファミリー・メンバー２２０（ｄ）は、他の１０個の固有ボリュームをプルする。つまり、Ｎがファミリー内のクラスタ・ファミリー・メンバーの数である場合に、各々のクラスタ・ファミリー・メンバー２２０（ｃ）、２２０（ｄ）は、ボリュームのＮ分の１をプルする。この例では、ファミリー・クラスタ２８０（２）に属する２つのクラスタ・ファミリー・メンバー２２０（ｃ）、２２０（ｄ）があるので、合計で２０個のボリュームを得るために、各々のファミリー・メンバーは、ボリュームの１／２をプルする（例えば、各々が１０個の固有ボリュームをプルする）。次に、クラスタ・ファミリー・メンバー２２０（ｃ）、２２０（ｄ）は、互いに１０個の固有ボリュームを共有する。
【００９２】
どの１つのボリュームも、Ｎ回に対して１回しか遠隔リンク１１０／２１５にわたってプルされなかったので、協調的レプリケーション・モジュール４１５を介して協調的に複製することにより、クラスタ・ファミリー２８０（２）又はＤＲ記憶場所は、Ｎ倍速く累積的一貫性をもつようになる。次に、クラスタ・ファミリー・メンバー２２０は、これらの間の相対距離のために、可用性に関して、ずっと速く互いに一貫性をもつようになり得る。従って、各々のクラスタ２２０が、同じ遠隔の生産クラスタ２２０から別個に調達するのと比べて、ＤＲ及びＨＡ（高可用性）の両方が一貫性をもつようになるまでの全体的な時間が大きく改善され得る。
【００９３】
従って、コピー・スループットを最適化し、クラスタ・ファミリー２８０内のボリュームの一貫性を達成するまでの全体的な時間を改善することが可能である。例えば、帯域幅が制限されたシステム又は複数のアーカイブ・サイトを有するグリッドにおいて、協調的レプリケーション・モジュール４１５は、如何なる努力の重複もなしに、全ての入ってくるコピーに関して、ファミリー２８０内の各ファミリー・メンバー２２０がレプリケーション・プロセスに関与することを可能にする。ひとたびファミリー２８０内のクラスタのグループ（ファミリー・メンバー）２２０が全体的に見て一貫性のある状態に到達すると、同じファミリー内のピア・クラスタの間でファミリー２８０の個々のクラスタ２２０内の一貫性のあるコピーが共有される。
【００９４】
さらに、協調的レプリケーション・モジュール４１５は、レプリケーションを遅らせることにより、永続的なレプリケーション・ソースの認識に対処する。例えば、一貫性のあるソースを有するクラスタ・メンバー２２０に、そのソース・ボリュームをキャッシュ内に保持するように命令して、他のファミリー・メンバー２２０がピア・レプリケーションのためにそれを容易に利用できるようにすることができる。一貫性のあるソースを有するクラスタは、オリジナルのマウント・ソース・クラスタ、又は、ホストにより生成／修正されたオリジナル・コピーを含むクラスタの役割を継承する。ひとたびファミリー内の１つのクラスタがそのＮ分の１のボリュームの１つを複製すると、協調的レプリケーション・モジュール４１５は、最初に、オリジナルのマウント・ソース・クラスタに、それ自体を含むそのファミリー内の全ての他のクラスタに説明がなされること、及び、生産クラスタは、ターゲットとするファミリー内のクラスタに代わって自分自身をその役割から解放できることを通知する。このことは、生産クラスタを解放して、ボリュームを外部のバック・エンド・テープにステージし（コピーを必要とする他のファミリー又は生産クラスタが存在しないと仮定して）、従って、より多くのキャッシュ可用性をもたらす。第２に、ボリュームに対するレプリケーションを開始したＤＲファミリー・クラスタがその役割を継承し、そのファミリー内のどのクラスタが依然としてコピーを必要とするかを記憶に留める。この継承を通じて、全てのピア・ファミリー・クラスタがコピーを完了するまで、キャッシュ内にボリュームを支持することができる。
【００９５】
１つの好ましい実施形態において、協調的レプリケーション・モジュール４１５は、コピー要求フラグ（copy required flag）のカスケード化を用いることができる。例えば、クラスタ・ファミリーが一貫性をもつようになったとき、協調的レプリケーション・モジュール４１５は、コピー要求フラグの所有権を、１つのクラスタ・ファミリーから別のクラスタ・ファミリーへと移動させる。コピー要求フラグをカスケード化することにより、協調的レプリケーション・モジュール４１５は、フラッグを１つのファミリーから別のファミリーにシフトさせ、従って、関与するオリジナルのＴＶＣを解放するという利点を可能にする。コピー要求フラグをＴＶＣから継承することにより、例えば、ひとたびファミリー・メンバーがコピーを得ると、ＴＶＣクラスタがボリュームをマイグレートし、他の新しい作業負荷のためのスペースをキャッシュ内に作ることが可能になる。
【００９６】
一例として、ＤＲ／アーカイブ・ファミリーと併せて、生産又はデフォルト・ファミリーから成るドメインを挙げることができる。ＴＶＣクラスタは、生産又はデフォルト・ファミリーのメンバーとすることができ、コピー要求フラグの管理を始めることができる。ひとたびＤＲ／アーカイブ・ファミリーのメンバーがＴＶＣクラスタからコピーを取得すると、ＤＲ／アーカイブ・ファミリーは、ＴＶＣクラスタに、そのＤＲ／アーカイブ・ファミリーのメンバーに関する全てのコピー要求フラグをクリアするように通知することができる。これに伴って、ＤＲ／アーカイブ・ファミリーは、そのファミリー・メンバーに関するこれらのコピー要求フラグを管理する責任を継承することができる。
【００９７】
例えば、ストレージ・システム２００の別の実施形態（図示せず）において、ドメイン２０５は、クラスタ・ファミリー・メンバー２２０（ａ）、２２０（ｂ）、２２０（ｃ）を含む第１のファミリー・クラスタ２８０（１）と、クラスタ・ファミリー・メンバー２２０（ｄ）、２２０（ｅ）、２２０（ｆ）を含む第２のファミリー・クラスタ２８０（２）と、クラスタ・ファミリー・メンバー２２０（ｇ）、２２０（ｈ）、２２０（ｉ）を含む第３のファミリー・クラスタ２８０（３）とを含むことができる。各々のファミリー２８０は、３つのクラスタ・ファミリー・メンバー２２０を含み、各々のファミリー・メンバーは、１ビットを表す。各々が３つのファミリー・メンバー（３ビット）を有する３つのファミリーが存在するので、ビット・セット内には合計で９ビットが存在する。ファミリー・クラスタ２８０（１）は、例えば、ファミリー・クラスタ２８０（２）、２８０（３）への複製を必要とするオリジナルのデータ・オブジェクトを含む。
【００９８】
クラスタ２２０（ａ）は、９つのクラスタ２２０の全てがネットワーク１１０又は２１５にわたってコピーをプルするまで、ボリュームをキャッシュ内に保持することが可能である。例えば、クラスタ２２０（ａ）は９ビット・セットを含むことができ、各クラスタ２２０がコピーをプルしたとき、クラスタ２２０（ａ）は、そのマスク内の１ビットをクリアすることができる。クラスタ２２０（ａ）は、９つのクラスタ２２０の全てに関するコピーをそのキャッシュ内に保持しているので、クラスタ２２０（ａ）は、付加的な作業負荷のためのスペースを作ることができない。
【００９９】
各々のクラスタ・ファミリー２８０が、そのファミリー・メンバーに関するこれらのコピー要求フラグを管理する責任を継承するのを可能にすることにより、クラスタ２２０（ａ）は、これらのクラスタ・ファミリー２８０（２）、２８０（３）についての残りの６ビットをクリアし、ファミリー２８０（１）内にあるそれぞれの２つのファミリー・メンバー２２０（ｂ）、２２０（ｃ）に関するコピーだけをそのキャッシュ内に保持することができる。ひとたびそれぞれのファミリー・メンバー２２０（ｂ）及び２２０（ｃ）がコピーを有すると、次に、クラスタ２２０（ａ）はそのマスクをクリアし、より多くの作業負荷のためのスペースを作ることができる。
【０１００】
この例では、ファミリー２８０（２）のクラスタ２２０（ｄ）は、ネットワーク２１５にわたってコピーをプルし、ファミリー・クラスタ２８０（１）のクラスタ２２０（ａ）に、クラスタ２２０（ｄ）は、そのファミリー・メンバー２２０（ｅ）、２２０（ｆ）がコピーを受け取るまでコピーをそのキャッシュ内に保持するので、もはやファミリー２８０（２）のためにコピーをキャッシュ内に保持する必要がないことを通知する。これにより、クラスタ２２０（ａ）は、クラスタ・ファミリー２８０（２）の全てのファミリー・メンバーのためにコピーをキャッシュ内に保持することから解放される。同様に、ファミリー２８０（３）に属するファミリー・メンバー２２０（ｇ）は、クラスタ２２０（ａ）に、ファミリー・メンバー２２０（ｇ）が、そのファミリー・メンバー２２０（ｈ）、２２０（ｉ）のためにコピーをそのキャッシュ内に保持していることを通知する。こうして、クラスタ２２０（ａ）は、ファミリー２８０（３）に属する全てのファミリー・メンバーのためにコピーをそのキャッシュ内に保持することから解放される。
【０１０１】
さらに、協調的レプリケーション・モジュール４１５は、主としてＴＶＣからのコピーに依存する代わりに、コピーを実施するために、ドメイン内でより多くのリンクを用いることにより、低帯域幅環境における性能を増大させることができ、ファミリー内のクラスタが一貫性をもつようになるまでの全体的な時間が改善する。例えば、協調的レプリケーション・モジュール４１５を用いるファミリー２８０は協働して、ファミリーにわたる一貫性を達成する。ファミリー全体にわたる一貫性を達成すると、次に、ファミリー・メンバー２２０は連携してファミリー・メンバー間でデータを共有し、個々のメンバーをファミリーの一貫性レベルまでもっていく。
【０１０２】
マウント処理モジュール４２０は、クラスタ・マネージャ３２０のプロセッサのようなプロセッサ上で実行されるコンピュータ可読プログラムを含む。マウント処理モジュール４２０は、クラスタを有する論理ボリュームへのマウントが行われたとき、そのファミリーの外部のクラスタより、そのファミリー内のクラスタ・ファミリー・メンバーを優先し、選択する。例えば、生産クラスタへのマウントは、主としてＤＲ又はエレクトロニック・ヴォールティング（electronic vaulting）のために用いられる遠隔クラスタよりも、同じファミリー２８０（１）内の別の生産クラスタを優先することができる。マウント処理モジュール４２０は、高可用性のために、生成データをローカルに留めて迅速に複製する必要があるときには、災害復旧可能性よりも可用性を優先し、従って、ＤＲファミリーよりも生産ファミリー内のファミリー・メンバーを選択するように用いることができる。
【０１０３】
マウント処理モジュール４２０は、遠隔マウントが必要とされるときにクラスタ・ファミリー・メンバーを優先することによって、制御及び性能を改善することができる。ファミリー及び／又はファミリー・メンバーは、遠隔ＴＶＣを選択するときに、他のクラスタよりも、特定のクラスタを優先するように（例えば、生成モジュール４１０を用いて）構成することができる。このことは、１組の生産クラスタを非生産クラスタと区別する際に有利であり得る。同じ生産ファミリー内のファミリー・メンバーを優先することにより、ＤＲ又はアーカイブ目的の遠方の遠隔クラスタを潜在的に選択するのではなく、ＴＶＣ選択を生産クラスタ内に保持することができる。
【０１０４】
さらに、クラスタ・ファミリー２８０内のクラスタ・ファミリー・メンバー２２０はマウントのターゲットであり、同じクラスタ・ファミリー２８０内で優先されるので、ＴＶＣ選択処理が改善され得る。
【０１０５】
１つの好ましい実施形態において、ストレージ・システム２００は、複数のクラスタを含むことができ、そこで、２つ又はそれ以上のクラスタ２２０のサブセットが第１のクラスタ・ファミリー２８０にグループ化され、２つ又はそれ以上のクラスタ２２０のサブセットが第２のクラスタ・ファミリー２８０にグループ化される。ファミリー・グループのグループ化は、互いに対する、及び／又は、他の非ファミリー・メンバー・クラスタに対する、ファミリー・メンバーの役割、関係、及び／又は距離に基づくことができる。クラスタ・ファミリー２８０のクラスタ・ファミリー・メンバーの各々は、互いに対するそれらの関係を認識している。ファミリー・メンバーの間のこの関係認識により、グループが、効率的に連携し、データをグループ内に累積的に複製し、次に、互いの間で複製することが可能になる。
【０１０６】
サイト１０５は、クラスタ・ファミリー２８０又はクラスタ・ファミリー２８０の組み合わせを含むことができる。例えば、サイト１０５（ａ）は、第１のクラスタ・ファミリー２８０と、第２のクラスタ・ファミリー２８０とを含むことができる。第１のクラスタ・ファミリー２８０は、生産クラスタ２２０（ａ）、２２０（ｂ）を含むことができ、第２のクラスタ・ファミリー２８０は、ＤＲクラスタ２２０（ｃ）、２２０（ｄ）を含むことができる。さらに、クラスタ２２０をサイト１０５の組み合わせから選択して、クラスタ・ファミリー２８０を生成することができる。例えば、１０５（ａ）及び１０５（ｂ）といった複数のサイト１０５においてクラスタ２２０を選択することから、クラスタ・ファミリー２８０を生成することができ、ここでサイト１０５（ａ）におけるクラスタ２２０（ａ）、２２０（ｂ）は、生産目的に用いられ、サイト１０５（ｂ）におけるクラスタ２２０（ｃ）、２２０（ｄ）は、ＤＲ及び／又はアーカイブ目的に用いられる。
【０１０７】
１つの好ましい実施形態において、クラスタ２２０（ｃ）、２２０（ｄ）は、データのアーカイブに用いられる。１つの好ましい実施形態において、クラスタ２２０（ｃ）、２２０（ｄ）は、ＤＲに用いられる。別の実施形態において、クラスタ２２０（ｃ）などの１つのクラスタは、ＤＲに用いられ、クラスタ２２０（ｄ）などの他のクラスタは、アーカイブに用いられる。
【０１０８】
この後の概略的なフロー・チャート図は、全体的に、論理フロー・チャート図として説明される。従って、記載された順序及び表記されたステップは、提示される方法の１つの好ましい実施形態を示すものである。機能、論理、又は効果が、示される方法の１つ又は複数のステップ又はその一部と同等である他のステップ及び方法を考えることができる。さらに、用いられる形式及び記号は、本方法の論理ステップを説明するために提供されるものであり、方法の範囲を限定するように理解されるものではない。フロー・チャート図には、種々の矢印タイプ及び線種が用いられることがあるが、これらは対応する方法の範囲を限定するものではないことが理解される。実際に、幾つかの矢印又は他のコネクタは、方法の論理フローを示すためだけに用いられ得る。例えば、矢印は、示される方法の列挙されたステップ間の不特定期間の待ち時間又は監視時間を示し得る。さらに、特定の方法が行われる順序は、示される対応するステップの順序に厳密に従っても従わなくてもよい。
【０１０９】
図６は、本発明のクラスタ・ファミリー選択及び協調的レプリケーション方法の１つの好ましい実施形態を示す概略的なフロー・チャート図である。方法５００は、実質的に、図１−図５の説明される装置及びシステムの動作に関して上記に提示された機能を実行するためのステップを含む。１つの好ましい実施形態において、方法は、コンピュータ可読プログラムを有するコンピュータ可読媒体を含むコンピュータ・プログラム製品により実施される。コンピュータ可読プログラムは、クラスタ・マネージャ３２０及び／又はホスト２１０などのコンピューティング・システム内に統合することができ、ここで、プログラムは、コンピューティング・システムと組み合わされて、方法５００を実行することができる。
【０１１０】
方法５００が開始し、ステップ５１０において、クラスタのグループが、クラスタ・ファミリーのファミリー・メンバー内に配置される。例えば、クラスタは、互いに対する関係、及び、ドメイン内の他のクラスタに対する関係に基づいてグループ化される。クラスタ・ファミリーは、役割（例えば生産ソース、ＤＲ、アーカイブ等）、範囲、距離（例えば、ファミリー間の距離格付け）等を含む種々の要因及び／又は機能に基づいて生成することができる。さらに、ユーザは、文字名を割り当てて、クラスタ・ファミリーを生成することができる。例えば、図３に示されるように、クラスタ・ファミリーは、文字名「都市Ａ」を用いて生成することができ、別のファミリーは「都市Ｂ」を用いて生成することができる。
【０１１１】
１つの好ましい実施形態においては、生成モジュール４１０は、クラスタ・ファミリーを生成するために用いられ、ここでユーザは、管理インターフェース３５５を用いて構成中にクラスタ・ファミリーを生成して、クラスタ・ファミリー名を生成し、１つ又は複数のクラスタをファミリーに付加し、隣接するファミリーの間で役割及び／又は距離格付けを割り当て、構成特性を用いてクラスタを教育することができる。これらの永続的設定を、生成モジュール４１０により用いて、例えば、１つ又は複数のクラスタ或いはファミリー・メンバーに対する関係の認識、並びに、距離のようなファミリー間の相対的特性をもたらすことができる。
【０１１２】
１つの好ましい実施形態において、関係モジュール４０５は、クラスタ・ファミリー及びファミリー・メンバーに関するこれらの永続的設定を保持する。
【０１１３】
さらに、自律機能を用いて、クラスタ間の役割及び関係を検出することができる。自律機能は、例えば、生成モジュール４１０において実行することができる。
【０１１４】
ステップ５１５において、ファミリー・メンバーは互いに協議して、外部データ・オブジェクトを取得するために、ファミリーのどのファミリー・メンバーが最良の位置にあるかを判断する。例えば、図３に示されるように、クラスタ・ファミリー２８０（１）は、メトロ距離で構成し、生産目的に使用することができる、２つ又はそれ以上のファミリー・メンバー２２０（ａ）、２２０（ｂ）を含む。クラスタ・ファミリー２８０（２）は、ファミリー２８０（１）に対してグローバル距離で構成し、ＤＲ目的に用いることができる、２つ又はそれ以上のファミリー・メンバー２２０（ｃ）、２２０（ｄ）を含む。クラスタ・ファミリー２８０（１）は、ネットワーク１１０、２１５を介して、データ・オブジェクトをコピーする準備ができていることを、クラスタ・ファミリー２８０（２）と通信することができる。各々のファミリーのクラスタ・ファミリー・メンバー、並びにファミリー自体は、互いの役割及び互いとの関係を認識しているので、ファミリー・メンバー２２０（ｃ）、２２０（ｄ）は互いに協議して、外部データ・オブジェクトのコピーを取得するために、ファミリー２８０（２）のどのファミリー・メンバーが最良の位置にあるかを判断することができる。
【０１１５】
１つの好ましい実施形態においては、例えば、クラスタ・ファミリー２８０に属するクラスタ・ファミリー・メンバー２２０は、共通のコピー作業キューを用いて、ＦＩＦＯ順で作業する。コピーに取り掛かる前に、各々のクラスタ・ファミリー・メンバー２２０は、最初に、クラスタ・ファミリー２８０内の他のクラスタ・ファミリー・メンバーが、まだコピーを行っていないか又はまだコピーを終えていないことを確認する。コピーを行っていないか又はまだコピーを終えていない場合には、１つ又は複数のクラスタ・ファミリー・メンバー２２０は、コピーを行うことができる。コピーが別のファミリー・メンバーにより行われているか又は別のファミリー・メンバーにより既に行われている場合には、１つ又は複数のクラスタ・ファミリー・メンバーは、そのコピーを据え置き(deferred）キューに移動させる。全てのアクティブな生産コンテンツがクラスタ・ファミリー２８０にコピーされてからしばらくして、ファミリー・メンバーは、互いの間で共有すべきコンテンツである据え置きキューでの作業を開始する。もともとコピーを取得したピア・ファミリー・メンバーが存在しない場合には、依然として外部クラスタ又は別のファミリー・メンバーからコピーを取得することができる。
【０１１６】
ステップ５２０において、１つ又は複数のファミリー・メンバーが、情報又はソース・ボリュームを取得し、複製する。例えば、クラスタ・ファミリー２８０に属する１つ又は複数のクラスタ・ファミリー・メンバー２２０が、遠隔ネットワーク１１０、１２５にわたってデータ又はソース・ボリュームをプルし、そのデータ又はソース・ボリュームをコピー／複製し、それをクラスタ・ファミリー２８０内にもたらすように選択される。例えば、ファミリー２８０（２）のファミリー・メンバー２２０（ｃ）は、ネットワーク１１０、２１５を通じて外部データ・オブジェクトをファミリー２８０（２）内にプルする。今やファミリー・メンバー２２０（ｃ）は一貫性のあるソースを有し、そのソース・ボリュームをキャッシュ（例えば、ＴＶＣ３６５）内に保持し、これをピア・レプリケーションのために容易に使用できるようにすることが求められ得る。
【０１１７】
ステップ５２５において、ソース・ボリュームは、ファミリーのファミリー・メンバーの間で協調的に複製される。例えば、クラスタのファミリー・グループは、初めてそれをファミリー内にもたらすときに、いずれか１つのボリュームのレプリケーションをシリアル化することによって協働する。Ｎがコピーを必要とするファミリー内のクラスタの数である場合、ファミリー内のクラスタは、それぞれボリュームのＮ分の１の複製で役割を果たすことができる。
【０１１８】
いずれの１つのボリュームも、複数回に対して１回しか、遠隔リンクにわたってプルされなかったので、クラスタ・ファミリー又はＤＲ記憶場所は、Ｎ倍速く累積的一貫性をもつようになり得る。次に、クラスタは、これらの間の相対距離のために、ずっと速く、可用性に関して互いの間で一貫性をもつようになり得る。各々のクラスタが同じ遠隔生産クラスタから別個に調達するのと比べて、ＤＲ及びＨＡ（高可用性）の両方が一貫性をもつようになるまでの全体的な時間が大きく改善され得る。
【０１１９】
ステップ５３０において、クラスタ・ファミリーは、累積的一貫性を達成する。つまり、クラスタ・ファミリー内に複製する必要があるクラスタ・ファミリーの外部の全てのボリュームが完了する。クラスタ・ファミリーは、全体として、全ての外部データ・オブジェクトに対して一貫性がある。今や、クラスタ・ファミリー・メンバーは、互いの間で共有するので、クラスタ・ファミリー内の個々のファミリー・メンバーがそれぞれのコピーを有することができる。
【０１２０】
ステップ５３５において、全てのボリュームがファミリー内に複製され、ファミリーが累積的一貫性をもつようになった後、次に、同じファミリー内の一貫性のないクラスタが、ボリューム（即ち、データ・オブジェクト）を互いの間で共有する。
【０１２１】
従って、本発明の実装方法５００は協調的レプリケーションを実行し、ここで、いずれの１つのボリュームも、Ｎ回に対して１回しか、遠隔リンクにわたってプルされなかったので、クラスタ・ファミリー又はＤＲ記憶場所は、Ｎ倍速く累積的一貫性をもつようになり得る。次に、クラスタは、これらの間の相対距離のために、ずっと速く、可用性に関して互いの間で一貫性をもつようになり得る。各々のクラスタが同じ遠隔生産クラスタから別個に調達するのと比べて、ＤＲ及びＨＡ（高可用性）の両方が一貫性をもつようになるまでの全体的な時間が大きく改善され得る。
【０１２２】
さらに、方法５００は、顧客がＮ個のコピーだけを必要とし、そのＮ個のコピーが互いから遠く離れている必要がある場合、Ｘ個のクラスタ（ここで、Ｘはクラスタの数を表す）に複製するより有効な方法のために、ファミリーを用いる。これにより、顧客は、どのクラスタがコピーを受け取るかをことさら明示することなく、距離／ファミリーにわたってコピーを分散させることができるようになる。例えば、ユーザは、Ｎ個のコピーが存在する限り（ここで、ＮはＸより少ない）、どのクラスタがコピーを含むかについて関心をもたなくてもよく、顧客は、Ｎ個のコピーが全て独立したファミリー内に存在することを要求する。従って、１つのドメイン内の全てのクラスタが協働して、各ファミリーからの少なくとも１つのメンバーがボリュームを複製することを保証することができ、次に、残りのメンバーは、そのレプリケーション要件を放棄することができる。そして、いずれの１つの領域内に過剰なＮ個のコピーもつことなく、Ｎ個のファミリー内にＮ個のコピーをもつようになることが可能である。
【０１２３】
方法５００のステップは、いずれかの組み合わせで、マウント処理において用いることができる。例えば、ステップ５１０において構成されたクラスタ・ファミリーの場合、ステップ５１５−５３５を用いて、方法５００は、ファミリー外部のクラスタよりも、それぞれのファミリー内のクラスタを優先することができる。例えば、生産クラスタへのマウントは、主として災害復旧（エレクトロニック・ヴォールティング）に用いられる遠隔クラスタよりも、（同じファミリー内の）別の生産クラスタを優先することができる。ユーザは、高可用性のために、生産データをローカルに留めて迅速に複製することを望む傾向があるので（災害復旧可能性よりも可用性を優先する）、生産クラスタの調達は、短期的目標に関してはずっと有効であり、依然として長期的目標には影響を及ぼさない。
【０１２４】
図７及び図８は、本発明のクラスタ・ファミリー選択及び協調的レプリケーション方法の１つの好ましい実施形態を示す概略的なフロー・チャート図である。方法６００は、実質的に、図１−図５の説明される装置及びシステムの動作に関して上記に提示された機能を実行するためのステップを含む。１つの好ましい実施形態において、方法は、コンピュータ可読プログラムを有するコンピュータ可読媒体を含むコンピュータ・プログラム製品により実施される。コンピュータ可読プログラムは、クラスタ・マネージャ３２０及び／又はホスト２１０などのコンピューティング・システム内に統合することができ、ここで、プログラムを、コンピューティング・システムと組み合わせて、方法６００を実行することができる。
【０１２５】
方法６００が開始し、ステップ６０５において、コピー・プロセスが始まる。例えば、都市Ａ内の外部データ・オブジェクトを、都市Ｂ（例えば図３）に複製する必要がある。
【０１２６】
ステップ６１０において、制御は、コピー要求を受け取るクラスタがクラスタ・ファミリー・メンバーであるかどうかを判断する。そうでない場合、ステップ６１５において、協調的レプリケーションを行うことなく、ボリュームがコピーされる。例えば、協調的レプリケーション・モジュール４１５は、遅延又は優先順位の変更なしにコピー要求を管理することができる。
【０１２７】
さらに、協調的レプリケーション・モジュール４１５は、遠隔リンク又はネットワークにわたってデータをプルするように、ファミリー内の少なくとも１つのファミリー・メンバーを選択することができる。ひとたび、クラスタがファミリー・メンバーであり、他のファミリー・メンバーはネットワークにわたってデータをプルしていないと判断されると、選択を行うことができる。
【０１２８】
これがクラスタ・ファミリー・メンバーである場合、ステップ６２０において、制御は、他のファミリー・メンバーの１つが既にこのボリュームのコピーを完了しているかどうかを判断する。肯定の場合、ステップ６２５において、他のファミリー・メンバーの１つが既にこのボリュームをコピーしているので、ボリュームのコピーにより低い優先順位が与えられ、これをキューに戻す。
【０１２９】
ファミリー・メンバーの１つがまだこのボリュームのコピーを完了していない場合、ステップ６３０において、制御は、別のファミリー・メンバーがこのボリュームをアクティブにコピーしているかどうかを判断する。肯定の場合、ステップ６３５において、このボリュームのコピーに関する優先順位を下げて、キューに戻す前に遅延させる。コピー要求を再びキューに送る前の遅延は、例えば、ボリュームをアクティブにコピーしている別のファミリー・メンバーが、ボリュームをコピーする如何なる問題にも遭遇しないことを確実にするためである。
【０１３０】
ステップ６３０において、ボリュームをアクティブにコピーしている他のファミリー・メンバーが存在しない場合、次にステップ６４０において、制御は、別のファミリー・メンバーもこのボリュームをコピーする準備ができているが、現時点ではアクティブにコピーしていないのかどうかを判断する。否定である場合、ステップ６５５において、制御は、現時点ではボリュームをアクティブにコピーしていないこの他のファミリー・メンバーが、コピー要求フラグを継承すべきかどうかを判断する。肯定の場合、ステップ６４５において、このクラスタはコピーの優先順位を下げ、遅延させてからキューに戻る。
【０１３１】
ステップ６４５において否定である場合、方法６００はステップ６５５に進み、このファミリー・メンバーが、２つのクラスタ・メンバーの間のせめぎ合いに勝ってコピー・フラグを継承する。従って、ステップ６４５において、制御は、コピー・フラグを継承するように、どのファミリー・メンバーを指定するかを判断する。指定されなかったファミリー・メンバーはコピーの優先順位を下げて、キューに戻るのを遅延させる（例えば、ステップ６５０）。
【０１３２】
ステップ６４０に戻ると、別のファミリー・メンバーはこのボリュームをコピーする準備ができていない場合、次にステップ６５５において、制御は、このファミリー・メンバー内で、１つのファミリー・メンバーだけがボリュームをコピーする準備ができていると判断し、そのファミリー・メンバーをクラスタとして指定してコピー・フラグを継承し、レプリケーションを完了する。
【０１３３】
ステップ６４０において、制御は、コピーする準備ができており、現時点ではアクティブにコピーしていない別のファミリー・メンバーが存在すると判断することができるが、ステップ６４５に示されるように、他のクラスタはコピー・フラグを継承しないと判断することができることに留意すべきである。従って、ステップ６４０におけるクラスタは、ステップ６５５に示されるように、コピー・フラグを継承する。
【０１３４】
ステップ６６０において、ステップ６５５においてコピー・フラグを継承した指定されたクラスタが、コピーを完了する。
【０１３５】
ステップ６７０において、制御は、ソース・クラスタにおけるコピー要求フラグをクリアし、クラスタ・ファミリーのファミリー・メンバーのためのコピー要求フラグを設定することによって、協働して累積的にファミリーを一貫性のある状態にする。
【０１３６】
ステップ６７５において、クラスタ・ファミリーの他のファミリー・メンバーは、そのコピーを完了し、コピー・フラグを継承するように指定されたクラスタ内に、ステップ６５５において設定されたコピー要求フラグを再設定する。
【０１３７】
図１−図４は、マルチ・クラスタ構成を示すものとすることができる。マルチ・クラスタ構成（又は、グリッド構成）においては、マイクロコードの観点から見ると、各々のクラスタは、自分自身及び他のクラスタに対する関係及び役割を認識していないことがあり、従って、全ての他のクラスタから独立して等しく動作する。例えば、２つ又はそれ以上のクラスタが１つ又は複数の生産クラスタからグローバル・遠隔に構成される場合、それらは、遠隔ネットワークにわたってデータを「プルする」ことにより、独立して複製を行うことができる。これらのクラスタには関係の認識がないため、これらは、役割及び／又は他のクラスタからの距離に基づいた最も有効な方法で動作することができない。
【０１３８】
さらに、マルチ・クラスタ構成においては、マウント処理中にボリュームを調達するようにクラスタを選択する手段、及び、クラスタがボリュームのレプリケーションを履行する能力は、この関係を認識していないことで大きな影響を受ける。例えば、生産クラスタは、マウント処理及び／又はコピー処理のために、メトロ遠隔クラスタよりも、グローバル・遠隔ソース・クラスタを選択することがある。グローバル・遠隔クラスタは、クラスタ間のネットワークの距離のために、ずっと効率が悪い。
【０１３９】
本発明の実装は、マルチ・クラスタ構成又はグリッド構成内のファミリー・メンバー及びファミリーの間に関係認識をもたらすことにより、これらの問題を解決することができる。さらに、本発明を実施することにより、データ・コピー及び／又はレプリケーションの性能、効率、及び最適化を改善することができる。例えば、ファミリー内に協調的に複製して、Ｎ倍速く累積的なファミリーの一貫性を達成すること、及び、累積的なネットワーク・スループットのＮ分の１だけを利用することにより、効率及び性能を改善することができる。
【０１４０】
図１−図６を参照すると、本発明の実施は、ソフトウェア、ファームウェア、マイクロコード、ハードウェア、及び／又はこられのいずれかの組み合わせを含むことができる。本実施は、メモリ、ストレージ、及び／又は階層ストレージ・ノード３１５の回路のような媒体内に実装されたコード又は論理の形態を取ることができ、ここで媒体は、ハードウェア論理（例えば、集積回路チップ、プログラマブル・ゲート・アレイ［ＰＧＡ］、特定用途向け集積回路［ＡＳＩＣ］、又は他の回路、論理若しくはデバイス）、或いは磁気ストレージ媒体（例えば、電子、磁気、光学、電磁気、赤外線又は半導体のシステム、半導体若しくはソリッドステート・メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、及びランダム・アクセス・メモリ［ＲＡＭ］、読み出し専用メモリ［ＲＯＭ］、剛性磁気ディスク及び光ディスク、コンパクト・ディスク−読み出し専用メモリ［ＣＤ−ＲＯＭ］、コンパクト・ディスク−読み出し／書き込み［ＣＤ−Ｒ／Ｗ］、並びにデジタル・ビデオ・ディスク（ＤＶＤ））のようなコンピュータ可読ストレージ媒体を含むことができる。
【０１４１】
当業者であれば、上述の方法に対して、ステップの順序の変更を含む変更をなし得ることを理解するであろう。さらに、当業者であれば、本明細書において示されたものとは異なる特定のコンポーネント構成を用い得ることを理解するであろう。
【０１４２】
本発明の好ましい実施形態を詳細に示したが、以下の特許請求の範囲に記載される本発明の範囲から逸脱することなく、これらの実施形態に対する修正及び改造を行い得ることが、当業者には明らかである。
【符号の説明】
【０１４３】
１００：分散サイト
１０５ａ、１０５ｂ、１０５ｃ：サイト
１１０、２１５：ネットワーク
２００：ストレージ・システム
２０５：ドメイン
２１０、２１０ａ、２１０ｂ：ホスト・システム
２２０、２２０ａ、２２０ｂ、２２０ｃ、２２０ｄ：クラスタ
２３０：ストレージ・デバイス
２４０：ライブラリ
２５０、３１０、３１５：階層ストレージ・ノード（ＨＳＮ）
２６０：仮想化ノード（ＶＮ）
２８０：クラスタ・ファミリー
３１２：テープ・デーモン
３２０：クラスタ・マネージャ
３２５：遠隔ファイル・アクセス
３３０：データ・ムーバ
３３５：物理テープ・マネージャ
３４０：キャッシュ・マネージャ
３４５：リコール・マネージャ
３５０：データベース
３５５：管理インターフェース
３６０：媒体マネージャ
３６５：ボリューム・キャッシュ（仮想ボリューム・キャッシュ（ＴＶＣ））
３７０：ライブラリ・マネージャ
４００：クラスタ・ファミリー装置
４０５：関係モジュール
４１０：生成モジュール
４１５：協調的レプリケーション・モジュール
４２０：マウント処理モジュール
４２５：通信モジュール
４３０：ポリシー・モジュール
【図１】
2013513839.tif 000003
【図２】
2013513839.tif 000004
【図３】
2013513839.tif 000005
【図４】
2013513839.tif 000006
【図５】
2013513839.tif 000007
【図６】
2013513839.tif 000008
【図７】
2013513839.tif 000009
【図８】
2013513839.tif 000010
【手続補正書】
【提出日】平成24年7月26日(2012.7.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のクラスタの協調的レプリケーションのためにストレージ・システムにより実行される方法であって、前記方法は、
前記複数のクラスタの少なくとも１つのサブセットをクラスタ・ファミリーのファミリー・メンバー内に配置するステップと、
前記クラスタ・ファミリー・メンバー間で協議して、前記ファミリーの外部の少なくとも１つのクラスタから少なくとも１つの外部データ・オブジェクトを取得するのに、どのクラスタ・ファミリーが最良の位置にあるかを判断するステップと、
前記外部データ・オブジェクトを取得するために、前記クラスタ・ファミリーの１つのファミリー・メンバーを選択するステップと、
前記クラスタ・ファミリー・メンバーの間で前記外部データ・オブジェクトを共有し、前記クラスタ・ファミリー内の各クラスタが外部データ・オブジェクトに対して一貫性をもつようにするステップと、
を含む方法。
【請求項２】
クラスタ関係要因及び役割要因の少なくとも一方に基づいて、前記クラスタ・ファミリーの間の関係を生成するステップをさらに含む、請求項１に記載の方法。
【請求項３】
一貫性のあるソースを有するファミリー・メンバーが、ボリュームをキャッシュ内に保持し、ピア・レプリケーションのために、他のファミリー・メンバーが前記ボリュームを容易に利用できるようにするステップをさらに含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記他のファミリー・メンバーのために前記ボリュームを前記キャッシュ内に保持する前記ファミリー・メンバーが、コピーを前記外部クラスタのキャッシュ内に保持することがら前記外部クラスタを解放するステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記ファミリー内のＮ個のファミリー・メンバーの各々が、前記外部データ・オブジェクトのＮ分の１のボリュームを複製するステップをさらに含む、請求項１に記載の方法。
【請求項６】
全てのレプリケーションを前記クラスタ・ファミリー内に協調的にシリアル化するステップをさらに含む、請求項１から請求項５までのいずれかに記載の方法。
【請求項７】
前記外部データ・オブジェクトのＮ分の１のボリュームを複製する前記Ｎ個のファミリー・メンバーの第１のものが、前記外部クラスタに、前記第１のファミリー・メンバーが、前記クラスタ・ファミリー・メンバーのために前記ボリュームを保持し、前記ボリュームを前記外部クラスタのキャッシュ内に保持することから前記外部クラスタを解放することを通知するステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記クラスタ・ファミリー内のクラスタ間で外部データ・オブジェクトを共有する前に、複数の外部データ・オブジェクトの前記クラスタ・ファミリー内で累積的一貫性を達成するステップをさらに含む、請求項１から請求項７までのいずれかに記載の方法。
【請求項９】
マウント処理のために、前記クラスタ・ファミリー内の前記ファミリー・メンバーの１つを、前記クラスタ・ファミリーの外部のクラスタより優先するステップをさらに含む、請求項１から請求項８までのいずれかに記載の方法。
【請求項１０】
複数のクラスタ・ファミリーを準備するステップであって、各々のファミリーからの少なくとも１つのファミリー・メンバーがボリュームを複製する、準備するステップをさらに含む、請求項１から請求項９までのいずれかの記載の方法。
【請求項１１】
複数のクラスタを含むドメインを準備するステップであって、前記クラスタは協働して、各々のファミリーからの少なくとも１つのファミリー・メンバーがボリュームを複製し、前記残りのクラスタはレプリケーション要件を放棄することを確実にする、準備するステップをさらに含む、請求項１に記載の方法。
【請求項１２】
前記方法は、
ボリュームを第１のクラスタにコピーするコピー要求を受け取るステップと、
前記第１のクラスタがクラスタ・ファミリーのファミリー・メンバーであるかどうかを判断するステップと、
前記第１のクラスタがファミリー・メンバーであることに応答して、別のファミリー・メンバーが既に前記ボリュームのコピーを完了しているかどうかを判断するステップと、
別のファミリー・メンバーがまだ前記ボリュームをコピーしていないことに応答して、前記コピー要求を継承するように前記第１のクラスタを指定するステップと、
前記コピー要求を実行し、前記ボリュームを前記クラスタ・ファミリー内に協調的に複製するステップと、
前記クラスタ・ファミリー内で累積的一貫性を達成するステップと、
前記クラスタ・ファミリー内で前記ボリュームを共有し、前記クラスタ・ファミリー内の前記ボリュームの全てのコピーが一貫性をもつようにするステップと、
をさらに含む、請求項１に記載の方法。
【請求項１３】
第２のファミリー・メンバーが前記ボリュームをアクティブにコピーしているかどうかを判断するステップと、
前記第２のファミリー・メンバーが前記ボリュームをアクティブにコピーしていることに応答して、前記コピー要求を継承するように前記第２のファミリー・メンバーを指定するステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１４】
第２のファミリー・メンバーが、コピーする準備はできているが現時点ではアクティブにコピーしていないのかどうかを判断するステップと、
前記第２のファミリー・メンバーが、コピーする準備はできているが現時点ではアクティブにコピーしていないことに応答して、前記第２のファミリー・メンバーのコピー優先順位を下げて、前記コピー要求を延期させるステップと、
をさらに含む、請求項１３に記載の方法。
【請求項１５】
前記コピー要求を継承するために第２のファミリー・メンバーを選択するステップと、
前記第１のクラスタ・ファミリー・メンバーのコピー優先順位を下げて、前記コピー要求を延期させるステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１６】
前記クラスタ・ファミリーのためのソース・クラスタとして前記コピー要求を継承するように、前記第１のファミリー・メンバーを指定するステップと、
前記第１のファミリー・メンバーにおいて前記コピーを完了するステップと、
前記第１のファミリー・メンバーにおいてコピー要求フラグをクリアするステップと、
前記第１のファミリー・メンバーにおいて他のファミリー・メンバーのためのコピー要求フラグを設定するステップと、
前記他のファミリー・メンバーが前記コピー要求フラグを継承するステップと、
前記他のファミリー・メンバーがコピーを完了するステップと、
各々のファミリー・メンバーがコピー要求フラグを再設定するステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１７】
複数のクラスタの協調的レプリケーションのためのシステムであって、前記システムは、
ネットワークと、
前記ネットワーク上で通信する複数のサイトと、
を含み、各々のサイトは、少なくとも１つのホストと、複数のクラスタを含むストレージ・システムとを含み、各々のクラスタは、磁気テープ上に格納されたボリュームにアクセスするように構成された少なくとも１つのテープ・ドライブと、少なくとも１つのテープ・ボリューム・キャッシュと、
クラスタのグループをクラスタ・ファミリーのファミリー・メンバーにセットアップして配置するように動作可能な生成モジュールと、
外部データ・オブジェクトを前記クラスタ・ファミリー内に協調的に複製し、累積的一貫性を達成するためにファミリー・メンバーを選択するように動作可能な協調的レプリケーション・モジュールと、
を含むクラスタ・マネージャと、
を含むシステム。
【請求項１８】
コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されるとき、前記コンピュータをストレージ・システムとして請求項１から請求項１６までのいずれかに記載の方法を実行させるためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【請求項１９】
複数クラスタの協調的レプリケーションのための装置であって、前記装置は、
ネットワーク上で通信し、各々がキャッシュを含む、複数のクラスタからクラスタ・ファミリーを生成するように動作可能な生成モジュールと、
少なくとも１つの外部データ・オブジェクトを前記クラスタ・ファミリー内に協調的に複製するように動作可能な協調的レプリケーション・モジュールと、
をさらに含む装置。
【請求項２０】
前記生成モジュールは、クラスタ関係要因及び役割要因の少なくとも１つに従って、クラスタのグループをファミリー・メンバーにセットアップして配置するようにさらに動作可能である、請求項１９に記載の装置。
【請求項２１】
前記協調的レプリケーション・モジュールは、前記レプリケーションを延期することにより永続的レプリケーション・ソースの認識に対処するようにさらに動作可能である、請求項１９又は請求項２０に記載の装置。
【請求項２２】
前記クラスタ・ファミリー内のＮ個のファミリー・メンバーの各々は、前記外部データ・オブジェクトのＮ分の１のボリュームを複製する、請求項１９から請求項２１までのいずれかに記載の装置。
【請求項２３】
前記協調的レプリケーション・モジュールは、前記外部データ・オブジェクトを取得し、前記クラスタ・ファミリー内の全てのファミリー・メンバーのためのソース・クラスタとなるように、前記クラスタ・ファミリーのファミリー・メンバーを選択し、かつ、前記ソース・クラスタに、前記外部データ・オブジェクトを共有する前に前記クラスタ・ファミリー内の累積的一貫性の達成に関与させるように、さらに動作可能である、請求項１９から請求項２２までのいずれかに記載の装置。
【請求項２４】
前記クラスタ・ファミリーと前記ファミリー・メンバーとの間の役割、規則、及び関係を定める要因を保持するように動作可能な関係モジュールをさらに含む、請求項１９から請求項２３までのいずれかに記載の装置。
【請求項２５】
生産目的のために、前記クラスタ・ファミリー内の前記ファミリー・メンバーを、他のクラスタ・ファミリーより優先するように動作可能なマウント処理モジュールをさらに含む、請求項１９から請求項２４までのいずれかに記載の装置。
【国際調査報告】
2013513839.tif 000011
2013513839.tif 000012