(57)【要約】本発明は、データ保存をコンピュータ・ネットワーク（１８）に分散させるために使用するデータ・ストレージ・システム（１０）を提供することを目的とする。データ・ストレージ・システムの一実施形態は、各々がデータ保存を行なうストレージ・サーバ（２０）から構成されたストレージ・サーバ・システムと、各々が管理サーバシステムに関する管理機能を提供する一つ以上の管理サーバから構成される管理サーバシステムと、データ・ストレージ・システムを利用するアプリケーション・クライアント（１４）の各々との接続が可能なドライバと、を備える。その値がストレージ・システムの構成またはストレージ・システム内の保存領域割当てに変化が生じるときに更新されるデータ・ストレージ・コンフィグレーション識別子を使用して、ストレージ・システムとアプリケーション・クライアントとの間のデータ転送を管理する。
2005528684.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・ネットワーク上での分散データ保存を実現する際に使用するシステムであって、
一つ以上のストレージ・サーバを含むストレージ・サーバ・システムであって、該一つ以上のストレージ・サーバの各々は、データ・ストレージ・デバイス及びネットワーク・インターフェイスを含み、該ネットワーク・インターフェイスは、データ保存を要求するアプリケーション・クライアント及び管理ストレージ・サーバと通信する、ストレージ・サーバ・システムと、
一つ以上の管理ストレージ・サーバを含む管理ストレージ・サーバ・システムであって、該一つ以上の管理ストレージ・サーバの各々は、ネットワーク・インターフェイスを含み、該ネットワーク・インターフェイスは、データ保存を要求するアプリケーション・クライアント及び前記一つ以上のストレージ・サーバの各々と通信する、管理ストレージ・サーバと、を備え、
前記管理ストレージ・サーバの各々は、その値が前記ストレージ・サーバ・システム内の或る時点でのデータ保存領域の割当てを示すデータ・ストレージ・コンフィグレーション識別子を含み、
前記ストレージ・サーバ・システム内のデータ保存領域の割当ては、前記ストレージ・サーバの内の一つ以上のストレージ・サーバに渡って分散した一つ以上のデータ保存領域の仮想ボリュームを定義することを備え、
前記管理ストレージ・サーバの各々は、前記データ・ストレージ・コンフィグレーション識別子の第１の値をアプリケーション・クライアントに供給する機能を有し、
前記管理ストレージ・サーバの各々は、前記ストレージ・サーバ・システム内のデータ保存領域の割当てに変化が生じた後に、前記データ・ストレージ・コンフィグレーション識別子の第２の値を前記ストレージ・サーバの各々に供給する機能を有し、
前記ストレージ・サーバの各々は、（ａ）アプリケーション・クライアントから受信したデータ保存関連リクエストに関連する前記データ・ストレージ・コンフィグレーション識別子の前記第１の値を、（ｂ）前記データ・ストレージ・コンフィグレーション識別子の前記第２の値と比較し、（ｃ）前記第１の値が前記第２の値に等しくない場合に前記データ保存関連リクエストを無視する比較器を含む、システム。
【請求項２】
アプリケーション・クライアントのオペレーティング・システムとの接続を行なうドライバを更に備え、
前記ドライバは、前記データ・ストレージ・コンフィグレーション識別子の前記第１の値を、ネットワークを通して前記ストレージ・サーバに送信されるデータ保存関連のリクエストに関連付ける機能を有する、請求項１記載のシステム。
【請求項３】
前記一つ以上の管理ストレージ・サーバの各々は、前記ストレージ・サーバ・システムの前記一つ以上のストレージ・サーバを識別することが可能なコンフィグレーション・マップを含み、
前記一つ以上の管理ストレージ・サーバの各々は、ユーザが前記コンフィグレーション・マップを変更してストレージ・サーバを追加するか、或いは取り除くことを可能にするインターフェイスを含む、請求項１記載のシステム。
【請求項４】
前記一つ以上の管理ストレージ・サーバの各々は、（ａ）前記ストレージ・サーバ・システムの前記一つ以上のストレージ・サーバを識別すること、（ｂ）前記ストレージ・サーバ・システムの内の２つ以上のサーバに渡って拡張された仮想ボリュームを識別すること、（ｃ）前記ストレージ・サーバの内の２つ以上のサーバ間の前記仮想ボリュームのパーティションを識別すること、が可能なコンフィグレーション・マップを備え、
前記一つ以上の管理ストレージ・サーバの各々は、ユーザが前記コンフィグレーション・マップを変更して前記仮想ボリュームの前記パーティションを定義することを可能にするインターフェイスを含む、請求項１記載のシステム。
【請求項５】
前記一つ以上の管理ストレージ・サーバの各々は、コンフィグレーション・マップを備える、請求項１記載のシステム。
【請求項６】
前記一つ以上の管理ストレージ・サーバの各々は、コンフィグレーション・マップを備える、請求項１記載のシステム。
【請求項７】
前記一つ以上の管理ストレージ・サーバの各々は、コンフィグレーション・マップを備える、請求項１記載のシステム。
【請求項８】
前記一つ以上の管理ストレージ・サーバの各々は、コンフィグレーション・マップを備える、請求項１記載のシステム。
【請求項９】
前記データ・ストレージ・コンフィグレーション識別子の前記値は、タイム・スタンプである、請求項１記載のシステム。
【請求項１０】
前記タイム・スタンプは、論理タイム・スタンプを含む、請求項９記載のシステム。
【請求項１１】
前記データ・ストレージ・デバイスは、ディスク・ドライブを備える、請求項１記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ保存に関し、特にコンピュータ・ネットワーク上でのデータ保存の分散に関する。
【背景技術】
【０００２】
従来のネットワーク・コンピュータ・システムは、各々がオペレーティング・システムを有する多数のコンピュータ、データをコンピュータ間で授受するネットワーク、及びネットワークに直接取り付けられるのではなく複数のコンピュータの内の少なくとも一つのコンピュータに取り付けられる少なくとも一つのデータ・ストレージ・デバイスから構成される。このようなシステムにおいては、データ・ストレージ・デバイスと、デバイスの接続先のコンピュータ以外のシステムのコンピュータとの間のデータの転送には、データ・ストレージ・デバイスの接続先のコンピュータのオペレーティング・システムがある程度の時間を割いてデータ転送を処理する必要がある。コンピュータのオペレーティング・システムは通常、コンピュータで動作する種々のアプリケーション（例えば、ワード・プロセッシング・アプリケーション）からのリクエストに応えているので、オペレーティング・システムは通常、データ転送を処理するためには短い時間しか割くことができない。
【０００３】
ネットワーク上でのデータ転送速度は比較的低かったが、オペレーティング・システムは通常、データ転送リクエストに十分迅速に応答することができるのでネットワークで利用できる時間を全て利用してシステムのコンピュータ間のデータ転送を行なうことができた。換言すれば、ネットワークはその転送速度が比較的低いので、システムのあるコンピュータに接続されるデータ・ストレージ・デバイスとシステムの他のコンピュータとの間でデータを転送する際のボトルネックになっていた。しかしながら、ネットワークのデータ転送速度が向上すると、オペレーティング・システムがボトルネックになった。この理由は、ネットワークがデータ・ストレージ・デバイスとのデータ転送に利用できる場合に、オペレーティング・システムは通常、種々のアプリケーションからのリクエストに応答しているからである。
【０００４】
オペレーティング・システムがボトルネックになるのを回避するために、ネットワークに直接取り付けられるデータ・ストレージ・デバイス、すなわちネットワーク・データ・ストレージ・デバイスが開発された。この直接取り付けにより、ネットワーク・コンピュータ・システムの全てのコンピュータはネットワーク・ストレージ・デバイスと直接通信することができる。
【０００５】
そこで更に行われたのが分散ネットワーク・データ・ストレージの開発であり、このデータ・ストレージでは、２つ以上のネットワーク・データ・ストレージ・デバイスを利用することができ、２つ以上のデータ・ストレージ・デバイスに渡って物理的に拡張された論理ボリューム、すなわちデータ保存単位を定義するメカニズムが存在する。従って、ネットワーク・コンピュータ・システムのコンピュータにとっては、論理ボリュームが単一のストレージ・デバイスに見える。分散ネットワーク・ストレージを用いるネットワーク・コンピュータ・システムの一例は、（ａ）２つのファイバ・チャネルディスク・ドライブ、（ｂ）コンピュータ、及び（ｃ）これらのドライブとコンピュータとの間のデータ転送を容易にするネットワーク、から構成される。コンピュータは、これらのドライブの各々及び論理ボリュームマネージャーのためのドライバ（オペレーティング・システムがデバイスと通信することを可能にするプログラム）を備え、この論理ボリューム・マネージャーは、ドライブを制御して２つのファイバ・チャネル・ディスク・ドライブに渡って拡張された論理ボリュームまたは仮想ボリュームを定義する。
【発明の開示】
【課題を解決するための手段】
【０００６】
本発明は、ネットワークにおける分散ネットワークデータ保存を実現するために使用するシステムを提供するものであり、このシステムによって、データ保存容量のスケーリングを行ない、データをストライピングし、データを複製し、データを移行し、データのスナップショットを生成し、シェアド・アクセスを可能にする機能等の追加機能を実現するフレキシビリティを提供することができる。
【０００７】
一実施形態では、システムはストレージ・サーバ・システムから構成されている。このストレージ・サーバ・システムは、データ保存機能及びデータ転送機能をネットワーク・コンピュータ・システムのアプリケーション・クライアントに提供する一つ以上のデータ・ストレージ・サーバから構成されている。アプリケーション・クライアントは、ネットワーク・コンピュータ・システムのコンピュータであって、このコンピュータは、データ保存機能及びデータ転送機能を必要とするか、或いは必要とする可能性がある特定のアプリケーション・プログラム（例えば、データベース管理プログラム）である、またはアプリケーション・プログラムを実行する。データ・ストレージ・サーバは、データ・ストレージ・デバイス（例えばディスク・ドライブ）、並びにネットワークを通してアプリケーション・クライアント及び管理ストレージ・サーバとの通信を行なうネットワーク・インターフェイスから構成される。
【０００８】
更に、システムは、管理ストレージ・サーバ・システムから構成されている。この管理ストレージ・サーバ・システムは、各々が全てのアプリケーション・クライアント及びストレージ・サーバ・システムに所定の保存管理機能を提供する一つ以上の管理ストレージ・サーバから構成されている。管理データ・ストレージ・サーバは、ネットワークを通してアプリケーション・クライアント、及びストレージ・システムのストレージ・サーバとの通信を行なうネットワーク・インターフェイスから構成されている。更に、管理データ・ストレージ・サーバは、データ・ストレージ・デバイス（例えばディスク・ドライブ及びテープ・ドライブ）から構成される。
【０００９】
管理ストレージ・サーバの各々は、ストレージ・サーバの動作を調整するために使用するデータ・ストレージ・コンフィグレーション識別子を含む。この識別子の値はストレージ・サーバ・システム内の特定の時点でのデータ保存領域の割当てを示す。一実施形態では、この値はタイム・スタンプである。他のタイプの値を用いることもできる。ストレージ・サーバ・システム内のデータ保存領域の割当てにおいては、どのような数の仮想ボリュームまたは論理ボリュームも定義することができ、これらのボリュームの各々は、ストレージ・サーバの内の一つ以上のストレージ・サーバに渡って分散させる。管理ストレージ・サーバの各々は、識別子の第１の値をアプリケーション・クライアントに供給する機能を有する。例えば、管理ストレージ・サーバは、識別子の第１の値をアプリケーション・クライアントに、このアプリケーション・クライアントへのデータ保存領域の割当ての一部として供給する。また管理ストレージ・サーバの各々は、ストレージ・サーバ・システム内のデータ保存領域の割当てに変化が生じた後に、識別子の更新値をストレージ・サーバの各々に供給する機能を有する。
【００１０】
ストレージ・サーバは識別子は、アプリケーション・クライアントからのデータ関連リクエストを実行するかどうかを判断するために使用される。更に詳細には、ストレージ・サーバがアプリケーション・クライアントから受信するデータ関連リクエストは、アプリケーション・クライアントが保有するデータ・ストレージ・コンフィグレーション識別子の最新値を含む。ストレージ・サーバは、このサーバが保有する識別子の最新値を、受信リクエストに関連する識別子の値と比較する。これらの値が同じである場合、アプリケーション・クライアント及びストレージ・サーバの双方はデータ保存領域の割当てが同じであることを認識する。この場合、ストレージ・サーバは、データ関連リクエストの処理を進める。しかしながら、ストレージ・サーバが保有する識別子の値とリクエストに関連する識別子の値とが異なる場合、アプリケーション・クライアント及びストレージ・サーバはデータ保存領域の割当てが異なることを認識する。別の表現をすれば、アプリケーション・クライアントは、期限切れのデータ保存領域の割当てに基づいて動作している。この場合、ストレージ・サーバはリクエストの処理を進めない。この理由は、処理を進めとデータを破損する恐れがあるからである。一実施形態では、ストレージ・サーバによってエラーが生成され、このエラーがネットワークを通して管理ストレージ・サーバに供給される。これに応答して、管理ストレージ・サーバは、アプリケーション・クライアントに更新識別子を供給し、この識別子をアプリケーション・クライアントが必要に応じて利用して、データ関連リクエストを再試行することができる。
【発明を実施するための最良の形態】
【００１１】
図１は、ネットワーク・コンピュータ・システム１０の実施形態を示している。このシステム１０は、分散ストレージ・システム１２の一実施形態を用いており、以後このストレージ・スステム１２をシステム１２と呼ぶ。ネットワーク・コンピュータ・システム１０は、（ａ）一つ以上のアプリケーション・クライアント１６（すなわち、アプリケーション・プログラムであるか、またはアプリケーション・プログラムを実行するコンピュータ）を含むアプリケーション・クライアント・システム１４と、（ｂ）システム１２と、（ｃ）アプリケーション・クライアント１６とシステム１２との間、及びシステム１２の構成要素間の通信を可能にするネットワーク１８と、を含む。この実施形態では、ネットワーク１８はギガ・ビット・イーサネット・ネットワークである。しかしながら、本発明を他のタイプのネットワークに適用する、即ち適合させることができる。
【００１２】
図１を参照すると、システム１２は、アプリケーション・クライアントで実行されるアプリケーション・プログラムにデータ保存機能を付与するストレージ・システム２０から構成されている。ストレージ・システム２０は一つ以上のストレージ・サーバ２２を備える。各ストレージ・サーバ２２は少なくとも一つのデータ・ストレージ・デバイス及びネットワーク１８と通信するための少なくとも一つのインターフェイスを備える。一実施形態では、データ・ストレージ・デバイスはディスク・ドライブである。しかしながら、他のタイプのデータ・ストレージ・デバイスも用いることができる。例えば、テープ・ドライブを用いることができる。通常、ストレージ・サーバ２２が複数のデータ・ストレージ・デバイスから構成される場合、これらのデバイスは全て同じタイプ（例えば、ディスク・ドライブ）である。しかしながら、異なるタイプのデータ・ストレージ・デバイスを使用することも可能である（例えば、ディスク・ドライブ及びテープ・ドライブ、異なるタイプのディスク・ドライブ、異なるタイプのテープ・ドライブ、またはこれらの組合せ）。
【００１３】
図１を参照すると、更に、システム１２は、アプリケーション・クライアントとストレージ・システム２０との間のデータ転送に関する管理機能を提供する管理ストレージ・サーバ・システム２４から構成されている。管理ストレージ・サーバ・システム２４は一つ以上の管理ストレージ・サーバ２６を備える。一般的に、障害に対応できるようにするために複数の管理ストレージ・サーバ２６を有することが望ましい。各管理ストレージ・サーバ２６は、ネットワーク１８と通信するための少なくとも一つのインターフェイス及び少なくとも一つのデータ・ストレージ・デバイス（例えば、ディスク・ドライブ又はテープ・ドライブ）を備える。また、管理ストレージ・サーバ２６の内の少なくとも一つはインターフェイス２８を備え、このインターフェイスによってユーザはサーバ２６と情報を授受してアプリケーション・クライアント１６とストレージ・システム２０との間のデータ転送に関する機能を実行することができる。この実施形態では、インターフェイス２８はグラフィカル・ユーザ・インターフェイス（ＧＵＩ）であり、このＧＵＩによってユーザは一般的なモニター及びキーボードまたはマウスを通してサーバ２６と情報を授受することができる。他のタイプの周辺機器（例えば、プリンタ、ライトペン、音声認識機など）またはネットワーク・プロトコルと通信する他のタイプのインターフェイスを用いることができる。当然のことながら、管理ストレージ・サーバは、ストレージ・サーバ及び／又はドライバと同じ場所に配置されている。
【００１４】
図１を参照すると、システム１２はさらにドライバ２９を備え、このドライバは各アプリケーション・クライアント１６に接続され、アプリケーション・クライアント１６とシステム１２との間の通信を容易にする。当然のことながら、ドライバ２９の使用に替えて別の装置を使用することができる。例えば、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ：周辺機器接続アーキテクチャ）カードまたはホスト・バス・アダプタ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ：ＨＢＡ）カードを利用することができる。
【００１５】
管理ストレージ・サーバ２６の各々はデータ・ストレージ・コンフィグレーション識別子を含み、この識別子はストレージ・コンフィグレーション・マップに関連し、このマップは、或る時点におけるストレージ・システム２０の構成、及び或る時点におけるストレージ・システム２０上でのデータ保存領域の種々のアプリケーション・クライアント１６への割り当てを示す。データ・ストレージ・コンフィグレーション識別子は、ストレージ・デバイス２０の構成が変化するか、或いはシステム２０内での保存領域の割当てが変化するときに変化する値を有する。一実施形態では、識別子の値は、変化が生じるにつれて単調に増加する論理タイム・スタンプである。他のタイプの論理タイム・スタンプも使用可能である。例えば、減少する論理タイム・スタンプだけでなく、予測可能な形で値が変化する論理タイム・スタンプも使用可能である。また、論理タイム・スタンプ以外のタイム・スタンプを用いることができる。例えば、実時間を反映するタイム・スタンプも用いることができる。
【００１６】
ストレージ・コンフィグレーション・マップによって、ストレージ・システム２０のストレージ・サーバ２２の各々が識別される。また、マップによって、各論理ボリュームまたは各仮想ボリューム、すなわち２つ以上のストレージ・サーバ２２に分散され、特定のアプリケーション・クライアント１６に割り当てられるデータ保存量が識別される。また、マップによって、各論理ボリュームまたは各仮想ボリュームのパーティション、すなわちどの位の量のボリュームのデータ保存領域がをストレージ・サーバ２２の各々により提供されているかを認識することができる。
【００１７】
管理ストレージ・サーバ２６がストレージ・システム２０内のデータ保存領域をアプリケーション・クライアント１６に割り当てると、サーバ２６はデータ・ストレージ・コンフィグレーション識別子の更新値を関連するアプリケーション・クライアント１６に、具体的には、アプリケーション・クライアント１６内のドライバ２９に供給する。識別子は、アプリケーション・クライアントにより、ストレージ・システム２０からのデータ転送の全てのリクエストに添付される。また、管理ストレージ・サーバ２６は、ストレージ・サーバ２２の各々に識別子の更新値を供給する。しかしながら、管理ストレージ・サーバ２６は、更新値を他のアプリケーション・クライアントに供給することができない可能性がある。その結果、他のアプリケーション・クライアントは古いコンフィグレーションを反映した古い識別子の値を有することがある。
【００１８】
識別子の値は、アプリケーション・クライアントからデータ転送のリクエストを受け取るストレージ・サーバ２２の各々により使用され、データ破損が防止される。更に詳細には、ストレージ・サーバ２２の各々は、比較器を備え、この比較器は、管理ストレージ・サーバ２６からごく最近に受け取った識別子の値をアプリケーション・クライアントからのデータ転送リクエストに添付された識別子の値と比較する。これらの値が等しくない場合、ストレージ・システム２０の構成、またはストレージ・サーバ・システム２０内の保存領域の割当てに変化があったことになる。この場合、転送が行なわれると、データ破損が生じるか、或いは誤ったデータがアプリケーション・クライアントに供給されるので、ストレージ・サーバ２２は、リクエストを少なくとも無視する。一実施形態では、ストレージ・サーバ２２は、エラー・メッセージを関連するアプリケーション・クライアントまたは管理ストレージ・サーバ２６に返送し、このメッセージは処理されて、関連するアプリケーション・クライアントに識別子の更新値が供給される。一旦、関連するアプリケーション・クライアントが識別子の最新の値を有すると、アプリケーション・クライアントは、データ転送のリクエストを再開するか、または新規のコンフィグレーションを取得する必要があることを認識することができる。
【００１９】
比較器が、リクエストに添付される識別子の値が、管理ストレージ・サーバがストレージ・サーバにごく最近に供給した識別子の値と等しいと判定した場合、ストレージ・システム２０の構成、またはシステム２０内の保存領域割当てに変化が無かったことになる。この場合、ストレージ・サーバ２２は関連するアプリケーション・クライアントがリクエストするデータ転送を処理する。
【００２０】
スケーリング（Ｓｃａｌｉｎｇ）。システム１２に対して容易にスケーリングを行なうことができ、このスケーリングによってストレージ・システム２０のストレージ・サーバ２２の数を増やす、または減らすことができる。更に詳細には、ユーザは、管理ストレージ・サーバ２６の内の少なくとも一つに接続されるインターフェイス２８を使用してコンフィグレーション・マップの変更を提案することができ、コンフィグレーション・マップの変更には、ストレージ・サーバをストレージ・システム２０に加えるか、またはストレージ・サーバ２２をシステム２０から取り外すか、のいずれかが含まれる。管理ストレージ・サーバ・システム２４内に他の管理ストレージ・サーバ２６が存在する場合、提案された構成の変更がサーバ２６の各々に対して提供される。サーバ２６の各々は、提案される変更が及ぼす影響を評価し、この変更に対する賛同または拒否を示す「投票」を行なう機能を備える。管理ストレージ・サーバは、提案される変更が或る保存機能を実行する機能に悪影響を及ぼすと考えられる場合には拒否の投票を行なうことができる。例えば、管理ストレージ・サーバがアプリケーション・クライアントからのデータを２つのストレージ・サーバ上で複製して各サーバ上にコピーが存在する場合、別のストレージ・サーバを付加することなくこれらのストレージ・サーバの内の一つのサーバを取り外すことは許容されない可能性が大きい。提案される変更が管理ストレージ・サーバ・システム２４の管理ストレージ・サーバ２６に承認された場合、コンフィグレーション・マップを変更し、変更に必要なストレージ・システム２０内の保存領域の再割り当ての全てを実行し、ストレージ・システム２０内のデータのコピーを行ない、データ・ストレージ・コンフィグレーション識別子の更新値をストレージ・サーバの各々に発行する。
【００２１】
ストライピング（Ｓｔｒｉｐｉｎｇ）。システム１２は、ストライピングを実行する、すなわち２つ以上のストレージ・サーバ２２に対して論理ボリュームまたは仮想ボリュームのパーティショニングを実行する機能を備える。更に詳細には、ユーザは・管理ストレージ・サーバ２６の内の少なくとも一つに接続されるインターフェイス２８を使用して次の項目を提案することができる。（ａ）一アプリケーション・クライアントに対応するストレージ・システム２０内の論理ボリュームまたは仮想ボリューム、及び（ｂ）ストレージ・システム２０のストレージ・サーバ２２の内の２つ以上のサーバ間のこのようなボリュームに対するパーティショニング、である。提案される論理ボリューム及びボリュームに関して提案されるパーティショニングを管理ストレージ・サーバ２６の各々に通知して、各々がその影響を評価し、承認投票または拒否投票を行なうことができる。提案される論理ボリューム及びそれらのパーティショニングが管理ストレージ・サーバ・システム２４の管理ストレージ・サーバ２６により承認されると、コンフィグレーション・マップを変更し、変更に必要なストレージ・システム２０内の保存領域の再割当ての全てを実行し、ストレージ・システム２０内の全てのデータのコピーを行ない、データ・ストレージ・コンフィグレーション識別子の更新値をストレージ・サーバの各々に発行する。
【００２２】
シェアド・アクセス（Ｓｈａｒｅｄ  Ａｃｃｅｓｓ）。図２を参照すると、分散ストレージ・システム１２を備え、シェアド・アクセスを実行するネットワーク・コンピュータ・システム１０’の一実施形態が示されている。ネットワーク・コンピュータ・システム１０’は、特定のアプリケーション・クライアント・システム、すなわちオラクル（Ｏｒａｃｌｅ）・パラレル・データベース・サーバ・システム等のパラレル・データベース・サーバ・システム１４’を更に備える。パラレル・データベース・サーバシステム１４’は、２つ以上のパラレル・データベース・サーバ１６’から構成され、これらのサーバ１６’は、ストレージ・システム２０のボリュームに保存されているか或いは保存されることになるデータベースの管理において互いに協力して動作する。更に、パラレル・データベース・サーバ・システム１４’は、分散ロック管理システム３０から構成されている。この管理システムは、一つ以上の分散ロック・マネージャー３２から構成され、これらのロック・マネージャーの各々は「ロック（ｌｏｃｋｓ）」をパラレル・データベース・サーバ１６’に発行する動作を行う。ロックは、データベースの明確に区別された部分に関連し、この部分は、ストレージ・システム２０のパラレル・データベース・サーバ・システムに割り当てられるボリュームに保存されているか、または保存されることになる。ロックをパラレル・データベース・サーバ１６’の内の一つのサーバに発行することにより、データベースの区別された部分の一部に排他的な書き込みアクセスを行なう、またはシェアド・アクセス方式を利用して読み出しを行なうことが可能になり、この区別された部分にはロックが他のパラレル・データベース・サーバとの関係で関与する。排他的な書き込みアクセスをパラレル・データベース・サーバ１６’の内の一つのサーバのみに対して行うことにより、サーバの内の２つのサーバが同時にデータベースの同じ部分を更新する状況を回避することができる。
【００２３】
分散ロック・マネージャー３０がパラレル・データベース・サーバ１６’から独立している形で示されているが、ある実施形態では、分散ロック・マネージャー３０の各々がパラレル・データベース・サーバ１６’の内の一つのサーバと接続されるような形で分散ロック・マネージャー３０を用いることができる。このような実施形態では、分散ロック・マネージャー３０の各々はドライバ２９に（パラレル・データベース管理プログラムに接続される汎用インターフェイスを通して）アクセスすることができ、このドライバによって分散ストレージ・システム１２との通信が容易になる。分散ロック・マネージャー３０の他の実施形態を用いることができるが、この場合、ロック・マネージャーの各々が管理ストレージ・サーバ２６の内の少なくとも一つのサーバと通信する機能を備えることが前提となる。
【００２４】
分散ロック・マネージャー３０の各々は、ロックが発行されているパラレル・データベース・サーバをモニターする動作を行って、ロックがパラレル・データベース・サーバ１６’の内の別のサーバに発行されるようにロックの返送が可能かどうかを判断する。或る状況では、分散ロック・マネージャー３０は、パラレル・データベース・サーバ１６の内の第１サーバに発行されるロックを破棄する動作を行う。例えば、分散ロック・マネージャー３０が、ロックが発行されている第１パラレル・データベース・サーバとの通信リンクが起動されていない即ち利用できないと判断するか、或いは第１パラレル・データベース・サーバが障害を起こしていると判断すると、分散ロック・マネージャー３０は、第１パラレル・データベース・サーバに発行されているロックを破棄する。このような状況では、分散ロック・マネージャー３０は、このロックを第２パラレル・データベース・サーバに再発行することができる。
【００２５】
第２パラレル・データベース・サーバにロックを発行する際の問題は、第１パラレル・データベース・サーバが、ロックを保有している状態で、ストレージ・システム２０のボリュームに対する書き込みリクエストを開始してしまい、このリクエストが、ロックが廃棄されて第２パラレル・データベース・サーバに発行される時点までにストレージ・システム２０によって処理されなかった場合に生じる。この状況は、例えば、ロックが廃棄されて第２パラレル・データベース・サーバに再発行される期間中に、書き込みリクエストが依然としてネットワークを伝送されている場合に生じる。この場合、第１及び第２パラレル・データベース・サーバが同時にデータベースのボリュームの同じ部分を更新している可能性があり、この状況は望ましくない。
【００２６】
この問題を解決するために、分散ロック・マネージャー３２の内の一つのマネージャーは、そのドライバ２９を通して管理ストレージ・サーバ２６の内の一つのサーバと通信してロックが廃棄されていることを通知する。これに応答して、管理ストレージ・サーバは、「ロック」マップを更新する。「ロック」マップを更新することにより、データ・ストレージ・コンフィグレーション識別子の値が更新される。識別子の値が更新された後、管理ストレージ・サーバは、データ・ストレージ・コンフィグレーション識別子の更新値をストレージ・システム２０のストレージ・サーバ２２の各々に供給する。続いて、管理ストレージ・サーバは、ロック・マネージャーにロックの再発行の権限を付与する通知を分散ロック・マネージャーに発行する。
【００２７】
データ・ストレージ・コンフィグレーション識別子の更新値をストレージ・サーバ２２に供給することにより、第１パラレル・データベース・サーバが開始した書き込みリクエストがストレージ・サーバによって処理されることを防止することができる。更に詳細には、書き込みリクエストに関連するのは、管理ストレージ・サーバ２６の内の一つのサーバによって予めパラレル・データベース・サーバに供給されているデータ・ストレージ・コンフィグレーション識別子の特定の値である。しかしながら、データ・ストレージ・コンフィグレーション識別子を更新することにより、ストレージ・サーバ２２は、書き込みリクエストに関連する識別子の値とは異なるデータ・ストレージ・コンフィグレーション識別子の更新値を有することになる。その結果、ストレージ・サーバ２２の内の一つのサーバが書き込み更新を受信すると、ストレージ・サーバの比較器は、これらのデータ・ストレージ・コンフィグレーション識別子の値の差を検出し、この差によって書き込み更新に関するリクエストを少なくとも無視する。
【００２８】
複製（Ｒｅｐｌｉｃａｔｉｏｎ）。ユーザは、管理ストレージ・サーバ２６の内の少なくとも一つのサーバに接続されるインターフェイス２８を使用して、アプリケーション・クライアントからのデータを、そのアプリケーション・クライアント専用のストレージ・システム２０のボリュームに複製して、データの一つのコピーがストレージ・サーバ２２の内の一つのサーバに存在し、かつデータの一つ以上の他のコピーが他のストレージ・サーバ２２の内の一つのサーバに存在するようにすることができる。この冗長性によって障害が生じても障害に対応できる。ユーザは、コンフィグレーション・マップをインターフェイス２８を通して適切に変更することによりデータを複製することを指示する。コンフィグレーション・マップを更新することにより、データ・ストレージ・コンフィグレーション識別子の値を更新することができる。データ・ストレージ・コンフィグレーション識別子の更新値は、複製に関連するストレージ・サーバ２２の各々とアプリケーション・クライアントのドライバ２９に供給される。また、ドライバ２９には、コンフィグレーション・マップまたは他の情報が供給され、この情報によってアプリケーション・クライアントデータに適用される複製が決定される。この場合、アプリケーション・クライアントデータは、例えばデータのコピーが含まれる関連するボリューム及びストレージ・サーバである。
【００２９】
データを複製する際の問題は、データの複数コピーが同期しなくなる、すなわちこれらのコピーが互いに同じではなくなることである。例えば、データの第１コピーがストレージ・サーバ２２の内の一つのサーバにおいて更新されるが、データの第２コピーを有する他のストレージ・サーバ２２の内の一つのサーバが、更新がそのサーバにおいて行われる前に故障した場合、データの複数コピーが同期しなくなる。
【００３０】
この問題は、ビット・マスク装置（同期ビットとも呼ぶ）を、データが複製される予定のストレージ・サーバにおいて使用することにより解決することができるが、この場合、このビット・マスク装置を管理ストレージ・サーバが時々精査し、この管理ストレージ・サーバがビット・マスク装置を使用してコピーが同期しなくなったかどうかを判断して是正措置を採る。図３Ａを参照すると、ビット・マスク装置の動作が示されており、１ページのデータの複数のコピーがサーバ「０」及びサーバ「１」に複製されようとしている状況を示している。１ページのデータがストレージ・システム２０に対する割当て単位であり、割当て単位は通常、メガバイト級のサイズであるが他のサイズも用いることができる。サーバ「０」に関連するのは２ビットのビット・マスク４０であり、このマスクは、サーバ「０」に関連するマスクの第１ビット及びサーバ「１」に関連する第２ビットを有する。サーバ「１」に関連するのは２ビットのビット・マスク４２であり、このマスクは、サーバ「０」に関連するマスクの第１ビット及びサーバ「１」に関連する第２ビットを有する。これらのサーバの両方に存在する１ページのデータのコピーが同期しているとき、両方のビット・マスクのビットの各々の値は論理「１」であり、この状態は「変更無し（ｃｌｅａｎ）」状態とも呼ばれる。両方のビット・マスクのビットの各々の値が「１」ではない場合、コピーが同期していない可能性がある。１ページのデータのコピーは、必ずそれ自体と同期していると見なされる。その結果、マスク４０のビット「Ｓ０」は必ず論理「１」に設定され、マスク４２のビット「Ｓ１」は必ず論理「１」に設定される。
【００３１】
データの複製元となるアプリケーション・クライアントに接続されたドライバ２９が書き込みリクエストをサーバ「０」に発行する場合、書き込みリクエストは、消去ビット・マスク値及び復元マスク値を含む。消去ビット・マスク値は、サーバ「０」が書き込みリクエストを処理する前のビット・マスク４０のビットの設定値である。復元ビット値は、書き込みリクエストが処理されたことが確認された後のビット・マスク４０のビットの設定値である。消去ビット・マスク値を使用して、サーバ「０」に対する書き込みリクエストが処理される前にビット・マスク４０を更新する。一旦、サーバ「０」に対する書き込みリクエストがサーバ「０」によって処理されると、このサーバは、トークン付きのアクノリッジメントをクライアント・アプリケーションに発行する。
【００３２】
同様に、ドライバ２９がサーバ「１」に対して発行する書き込みリクエストは、消去ビット・マスク値及び復元ビット・マスク値を含む。消去ビット・マスク値を使用して、サーバ「１」に対する書き込みリクエストが処理される前にビット・マスク４２を更新する。一旦、サーバ「１」に対する書き込みリクエストがサーバ「１」によって処理されると、このサーバは、トークン付きのアクノリッジメントをクライアント・アプリケーションに発行する。
【００３３】
一旦、ドライバ２９がアクノリッジメントをサーバ「０」及びサーバ「１」の両方から受信すると、ドライバ２９は、データの複製先であるストレージ・サーバの各々に対して発行される次の命令にトークンを含ませる。通常、次の命令は、サーバ「０」及びサーバ「１」の両方に発行されてデータを複製する書き込みリクエストである。ストレージ・サーバ「０」はこの命令に対して、ビット・マスク４０のビットの値を復元値、すなわち「１１」に変更することにより応答する。ストレージ・サーバ「１」はこの命令に対して、ビット・マスク４２のビットの値を復元値、すなわち「１１」に変更することにより応答する。この時点で、ビット・マスク４０，４２の各々におけるビットの各々の値は同じ、すなわち論理「１」である。この結果、サーバ「０」及びサーバ「１」上のページデータのコピーは同期、すなわち互いに同じとなる。
【００３４】
図３Ｂを参照すると、ビット・マスク４０，４２を使用して、ページデータの２つのコピーが同期しなくなった状況を識別する様子が示されている。同期していない理由は、サーバ「１」が、クライアント・アプリケーションからの書き込みリクエストが発行される前に故障した（すなわち、リクエストまたは命令を処理できなくなった）と考えられる。その結果、アプリケーションがページデータをサーバ「０」及び「１」に複製しようと試みると、サーバ「０」のデータのみが更新される。その結果、サーバ「１」が復旧すると、サーバ「１」上のページデータのコピーはサーバ「０」上のページデータのコピーに対して「古く」なってしまう。
【００３５】
図３Ｂを参照すると、サーバ「０」及び「１」上のページデータのコピーは最初は同期していたと仮定されている。従って、ビット・マスク４０，４２のビットの各々の値は同じ、すなわち論理「１」である。サーバ「０」及び「１」に対して書き込みリクエストが発行されて複製動作が行われる前に、管理ストレージ・サーバ２６の内の一つのサーバはサーバ「１」に故障が起きたと考えられる。管理ストレージ・サーバ２６の内の少なくとも一つのサーバは、ストレージ・サーバ２２の内の一つのサーバにリクエストを時々発行して、そのストレージ・サーバが動作可能かどうかを判断する。ストレージ・サーバは、動作可能である場合、或る形式の返答またはアクノリッジメントを所定の期間内に、リクエストを発行した管理ストレージ・サーバに送信する。返答またはアクノリッジメントが所定の期間内に受信されない場合、管理ストレージ・サーバは、そのストレージ・サーバが故障したと判断する。このような状況では、管理ストレージ・サーバは、コンフィグレーション・マップを更新し、データコンフィグレーション・マップ識別子の値を更新し、マップ及び識別子をアプリケーション・クライアントだけでなくストレージ・サーバ２２にも供給する。アプリケーション・クライアントがサーバ「１」が故障したことを認識するので、書き込みリクエストは、ストレージ・サーバ「１」には発行されない。サーバ「０」に発行される書き込みリクエストは、消去ビット値及び復元ビット値を含む。しかしながら、サーバ「１」の故障により生じ、データ・ストレージ・コンフィグレーション識別子の変化に反映されるストレージ・システム２０の変化により、復元ビット値は図３Ａとは異なり、“１０”に設定される。
【００３６】
サーバ「０」は、書き込みリクエストを受信した後で、かつ書き込みリクエストを処理する前に、ビット・マスク４０のビットの値を消去ビット値、すなわち論理「０１」に設定する。次にサーバは、書き込みリクエストを処理し、アクノリッジメントをトークンを持つアプリケーション・クライアントに送信する。サーバ「０」がアプリケーションから受信する次の命令はトークンを含む。これに応答して、サーバ「０」はビット・マスク４０のビットを、書き込みリクエストに添付された復元ビット値にて指定される復元値、すなわち論理「０１」に変更する。この時点で、ビット・マスク４０，４２のビットの各々の値は同じ値を採ることができないので（ビット・マスクが「１０」に設定されるので）、これらのビット・マスクは同期していない状態を示す。管理ストレージ・サーバ２６の内の少なくとも一つのサーバは、これらのビット・マスクをモニターしており、ページデータのコピーが同期していないことを検出する。管理ストレージ・サーバがこの状態を検出した後、管理ストレージ・サーバは是正措置を採る。この場合、管理ストレージ・サーバがサーバ「０」上のページデータのコピーをサーバ「１」に書き込み、これによりデータのコピーを同期状態に戻す。当然のことながら、ビット・マスクを、他の原因による非同期を検出するために使用することもできる。
【００３７】
図３Ａ及び３Ｂに関連付けて説明したビット・マスク装置は、より多くの数のコピーに対応できるように拡張することができる。当然のことながら、図３Ａ及び３Ｂに関連付けて説明したものとは反対のビット値を利用してもよい。
【００３８】
移行（マイグレーション：ｍｉｇｒａｔｉｏｎ）。ユーザは、管理ストレージ・サーバ２６の内の少なくとも一つのサーバに接続されるインターフェイス２８を使用してある論理ボリュームのデータを別の論理ボリュームに移行させることができる。これは、「半透明（ｔｒａｎｓｌｕｃｅｎｔ）」なレイヤ化機構の使用を確立することにより行なうことができる。更に詳細には、実行予定のデータの移行をユーザが開始、または決定した後、管理ストレージ・サーバは、移行される予定のデータを含むボリューム（古いボリューム）に関連するデータ・ストレージ・コンフィグレーション・マップの一部分を保存し、マップのこの部分をレイヤとして識別し、このレイヤを第１レイヤまたは旧レイヤとして整理する。次にデータ・ストレージ・コンフィグレーション・マップを更新して新規のデータ・ストレージ・コンフィグレーションを反映させ、データの移行先である論理ボリューム（新規ボリューム）を特定する。これにより、データ・ストレージ・コンフィグレーション識別子の値を更新する。識別子の新規マップ及び新規の値をストレージ・サーバ２２及び関連するアプリケーション・クライアントのドライバ２９に配布する。また、データの移行先の新規ボリュームに関連するコンフィグレーション・マップの一部分をレイヤとして特定し、このレイヤを第２レイヤまたは新規レイヤとして整理する。
【００３９】
レイヤ化を定義するかまたは整理した後、データを旧ボリュームから新規ボリュームに２つの可能な機構により移行させる。第１に、管理ストレージ・サーバ２６の内の少なくとも一つのサーバが、第１レイヤまたは旧レイヤのページの各々を能動的にモニターして、旧ボリュームのページの各々に関連するデータが新規ボリュームに移行されていないかどうかを判断する。新規ボリュームに移行されなかったデータを含むページが検出された場合、管理ストレージ・サーバは、旧ボリュームのページのデータを読み出し、次にデータを新規ボリュームに書き込み、旧ボリュームのページに「消去済み」とマークする。データを旧ボリュームから新規ボリュームに移行させる第２機構は、アプリケーション・クライアントが新規ボリュームのページに書き込みを行おうと試みる際に実施される。この状況では、ドライバ２９は、ページに関する書き込みリクエストを発行する前に、新規レイヤを精査して新規レイヤのページが旧ボリュームの該当するページからデータを受信したかどうかを判断する。データを受信していなかった場合、ドライバ２９は、データの書き込み先のページに関連する新規レイヤの「透明な」部分から旧レイヤに至るまで「透視し」、データが未だに該当するページの旧ボリュームから移行されていないことを「見る（ｓｅｅ）」ことができる。この場合、ドライバ２９は、旧ボリュームのページのデータを読み出し、次にデータを新規ボリュームに書き込み、旧ボリュームのページに「消去済み」とマークする。さらに、旧ボリュームのページのデータが新規ボリュームに移行した後、ドライバ２９は、書き込みリクエストを発行し、このリクエストによりデータが新規ボリュームのページに書き込まれる。
【００４０】
ページのデータが移行した後に旧ボリュームの各ページに消去済みとマークすることにより、移行に悪影響を及ぼす状況が生じないようにする機構を設ける。更に詳細には、２つのクライアント・アプリケーションは、同じ期間中でページのデータが旧ボリュームから未だ移行していない状態において新規ボリュームのページに書き込みを試みることが可能である。この状況では、各アプリケーション・クライアントに接続されるドライバ２９は、データを旧ボリュームのページから新規ボリュームの該当するページに移行させようと試みる。アプリケーション・クライアントの内の一つのクライアントに接続されるドライバ２９はページのデータを無事に移行させ、次に新規ボリュームのページのデータを書き込みリクエストを通して更新する。他のアプリケーション・クライアントに接続されるドライバ２９は、上述したマークを付さない場合にはページのデータが移行されたことを認識せず、データを新規ボリュームの該当するページに移行しようと試みる。このようなことが起こると、他のアプリケーション・クライアントが移行するデータが、データを最初に移行させたアプリケーション・クライアントが発行した書き込みリクエストによりページに生成された新規データに上書きされる。このような可能性を無くすために、ドライバ２９は旧レイヤの関連ページをチェックして、データ移行のための動作を行う前にページのデータが既に移行されてしまったかどうかを判断する。ページのデータが移行されてしまっている場合、ドライバ２９は現在の書き込みリクエストを中断して書き込みリクエストを再度試みる。
【００４１】
旧ボリュームの各ページのデータが新規ボリュームに移行すると、旧レイヤは消去される。
図４Ａ〜４Ｃを参照して、移行の例を説明する。図４Ａは、それぞれデータ（Ａ〜Ｅ）を含む６つのページ（０〜５）から構成された旧ボリューム、及び新規ボリュームを示しており、この状態は、データが旧ボリュームから新規ボリュームに移行する前である。移行を実行するために、更に旧ボリュームは、レイヤとして識別され、第１レイヤまたは旧レイヤとして整理される。データは、この時点で旧ボリュームのページの各々に含まれるので、旧レイヤに関連する「透明度」は無い。新規ボリュームもレイヤとして識別され、第２レイヤまたは新規レイヤとして整理される。データはこの時点で新規ボリュームのページのいずれにも含まれないので、新規レイヤの各ページに関連する「透明度」がある。この「透明度」によりアプリケーション・クライアントに接続されるドライバはページのデータが第１レイヤまたは旧レイヤに含まれていることを「見る（ｓｅｅ）」ことができる。
【００４２】
図４Ｂは、旧ボリュームのページ「１」のデータ（Ｂ）が新規ボリュームのページ「１」に移行した後の旧ボリューム及び新規ボリュームを示している。この時点で、新規レイヤのページ「１」に関連する「透明度」が無くなっており、これは、旧ボリュームのページ「１」のデータが新規ボリュームのページ「１」に移行したことを示している。新規レイヤの他のページに関連する「透明度」は依然として保たれており、これは、旧レイヤの該当するページのデータが未だ移行していないことを示している。尚、移行によって旧レイヤのページ「１」が消去済みとマークされ、“Ｘ”により表現される。
【００４３】
図４Ｃは、旧ボリュームの各ページのデータが新規ボリュームの該当するページに移行した後の旧ボリューム及び新規ボリュームを示している。この時点で、新規レイヤに関連する「透明度」が無くなっており、これは、旧ボリュームの全ページのデータが新規ボリュームに移行したことを示している。また、移行が完了したことによって旧レイヤのページの各々が消去済みとマークされる。その結果、旧レイヤはもう必要なくなっているので、消去することができる。
【００４４】
当然のことながら、半透明レイヤ化機構を、追加レイヤを必要とする複数の移行に拡張することができる。
スナップショット。スナップショットによって特定時点でのボリュームの状態を保持することができ、同時に保持ボリューム、すなわちスナップショット・ボリュームのページのデータを新規ボリュームへ移行し、この新規ボリュームにおいて、ページをアプリケーション・クライアントの内の一つ以上のクライアントにより更新することができる。スナップショット・ボリュームの状態を保持するために、新規ボリュームはスナップショット・ボリュームと重複することができない。
【００４５】
ユーザは、管理ストレージ・サーバ２６の内の少なくとも一つのサーバに接続されるインターフェイス２８を使用してスナップショットを行うことができる。一旦、スナップショットが開始されると、管理ストレージ・サーバ２６は、移行プロセスについて説明したのと同じ半透明レイヤ化機構を確立してスナップショット・ボリュームから新規ボリュームへのデータの移行を容易にする。アプリケーションに関連するドライバ２９が行なう書き込みリクエストの発行の前段階として、ページのデータを移行させることにより移行が行われる。しかしながら移行プロセスとは異なり、ページのデータがスナップショット・ボリュームから新規ボリュームに移行した後、スナップショット・ボリュームのページは、消去済みとはマークされない。その結果、スナップショット・ボリュームのページのデータは保持される。
【００４６】
図５Ａ〜５Ｃを参照して、スナップショットの例を説明する。図５Ａは、それぞれデータ（Ａ〜Ｅ）を含む６つのページ（０〜５）から構成されたスナップショット・ボリューム及び新規ボリュームを示しており、この状態は、データがスナップショット・ボリュームから新規ボリュームに移行する前である。移行を実行するために、更にスナップショット・ボリュームは、レイヤとして識別され、第１レイヤまたは旧レイヤとして整理される。データは、この時点でスナップショット・ボリュームのページの各々に含まれているので、旧レイヤに関連する「透明度」は無い。新規ボリュームもレイヤとして識別され、第２レイヤまたは新規レイヤとして整理される。データは、この時点で新規ボリュームのページのいずれにも含まれていないので、新規レイヤの各ページに関連する「透明度」がある。この「透明度」によりアプリケーション・クライアントに接続されるドライバは、ページのデータが第１レイヤまたは旧レイヤに含まれていることを「見る（ｓｅｅ）」ことができる。
【００４７】
図５Ｂは、スナップショット・ボリュームのページ「１」のデータ（Ｂ）が新規ボリュームのページ「１」に移行した後のスナップショット・ボリューム及び新規ボリュームを示している。この時点で、新規レイヤのページ「１」に関連する「透明度」が無くなっており、これは、スナップショット・ボリュームのページ「１」のデータが新規ボリュームのページ「１」に移行したことを示している。新規レイヤの他のページに関連する「透明度」は依然として保たれており、これは、スナップショットレイヤの該当するページのデータが未だ移行していないことを示している。尚、移行前のスナップショット・ボリュームのページ「１」にあったデータが依然としてスナップショット・ボリュームのページ「１」に残っており、変更されていない。しかしながら、新規ボリュームのページ「１」に移行したデータは変更され易い。
【００４８】
図５Ｃは、スナップショット・ボリュームの各ページのデータが新規ボリュームの該当するページに移行した後のスナップショット・ボリューム及び新規ボリュームを示している。この時点で、新規レイヤに関連する「透明度」が無くなっており、これは、旧ボリュームの全ページのデータが新規ボリュームに移行したことを示している。尚、移行前のスナップショット・ボリュームのページの各々のデータが移行完了後に、依然として同じ位置に残っている。従って、スナップショットによって、特定の時点での初めのボリュームの状態が保持されたことになる。スナップショット・ボリュームのページの各々のデータも新規ボリュームに移行し、新規ボリュームのページは、アプリケーション・クライアントが発行する書き込みリクエストが処理される結果、変更され易い。
【００４９】
管理ストレージ・サーバプロセス。図６に示すように、管理ストレージ・サーバの各々は２つの主要なタスクを含むプロセスを実行する。２つの主要なタスクとは、ストレージ・サーバの故障または再起動の後のデータの再同期、及びボリュームデータの移行である。このプロセスは、２つのフェーズを有する。第１フェーズでは、ボリュームの位置、及びボリューム内のページであって再同期または移行を必要とするページの位置を特定する。まず、管理ストレージ・サーバは、現時点における管理対象のボリュームに関する一連のコンフィグレーション・マップを分析する。この分析から、サーバはどのボリュームが或る作業を必要としているかを判断するが、この理由は、ボリュームを異なる一連のストレージ・サーバに移行させる処理を施しているか、またはボリュームのデータを保存しているストレージ・サーバの内の少なくとも一つのサーバが機能しなくなり、その後再起動したが、完全には再同期していないからである。作業を必要としている一連のボリュームを判断した後、管理ストレージ・サーバはこれらのボリュームの内の一つのボリュームをランダムに、または或る優先度に従って選択する。次に管理ストレージ・サーバは、ストレージ・サーバの各々が移行基準または再同期基準に合致する或る固定数のページを最大数とするページを列挙するようにリクエストする。これらのページは、管理ストレージ・サーバによって蓄積され、この場合複製は廃棄される。次に管理はこれらのページ全体に渡って、１ページずつ、場合によっては数ページ並行して行われ、プロセスの第２フェーズに移る。
【００５０】
各ページに対して、管理ストレージ・サーバはまず、関連するストレージ・サーバに対してボリュームに関連する全てのレイヤのページの全コピーの状態をリクエストする。レイヤのいずれかのページのコピーのいずれかが、異なるコピーが異なるデータを含んでいることを示す同期ビットを有する場合、ページのこれらのレイヤが再同期するように選択される。これらのレイヤは次のようにして同期する。管理ストレージ・サーバは、一つのサーバのページの「信頼できるコピー」と呼ばれるコピーを選択し、そのコピーのコンテンツを読み出す。これらの管理ストレージ・サーバは、これらのサーバの全てが同じコピーを信頼できるものとして選択するような方法で、信頼できるコピーを選択する必要がある。これを行なうための一つの方法は、選択をコンフィグレーション・マップの情報に基づいて行うことであるが、他の方法を用いることも可能である。信頼できるコピーを読み出した後、管理ストレージ・サーバはページのコンテンツを該当するレイヤのページの他のコピーに書き込む。次に管理ストレージ・サーバは、ページの全コピーに、これらのコピーの同期ビットを設定することにより変更無し（ｃｌｅａｎ）とマークする。これにより管理ストレージ・サーバは、当面はこのページに対する作業を完了した状態にある（ページに対して行なわれる予定の追加の作業が残っている可能性があるが、この場合にはストレージ・サーバはページを再度列挙する）。
【００５１】
ページの複数のコピーを再同期させる必要はないが、移行させる必要のあるコピーがある場合、管理ストレージ・サーバは、次のステップに従う。管理ストレージ・サーバはまず、どのレイヤが移行元レイヤになり、そしてどのレイヤが移行先レイヤになるかを判断する。次に管理ストレージ・サーバは、一つのコピーを移行元レイヤから読み出す。管理ストレージ・サーバは、このデータを移行先レイヤの全コピーに書き込む。次に管理ストレージ・サーバは、移行先レイヤの全コピーに、これらのコピーの同期ビットを設定することにより変更無しとマークする。最後に管理ストレージ・サーバは、移行元レイヤの全コピーを消去するようにリクエストする。この時点で、管理ストレージ・サーバはページの移行を終える。
【００５２】
このプロセスの各ステップを実行している最中に、ストレージ・サーバが、管理ストレージ・サーバが期限切れのデータ・ストレージ・コンフィグレーション識別子の値を使用していることを示すエラーを生成することがある。このようなことが起こると、管理ストレージ・サーバはプロセスを再開する。また、管理ストレージ・サーバは、プロセス中に通信エラーが生じるか、またはボリュームのコンフィグレーション・マップの構成が変化するとプロセスを再開する。
【００５３】
クライアント・ドライバ読み出しプロセス。図７Ａに示すように、ドライバ２９は、ボリュームのページデータの一部を読み出すプロセスを実行する。このプロセスは、ドライバが現時点のコンフィグレーション・マップのコピー及びデータ・ストレージ・コンフィグレーション識別子の値を、ドライバがアクセスしているボリュームの管理ストレージ・サーバから受信した後にのみ開始する。ドライバは最上層のレイヤから始めて、当該レイヤのページの一つのコピーを選択してそのコピーに対する読み出しを行なう。ドライバは、このコピーを選択してこのコピーに対する読み出しを、ランダムな方法、または性能負荷基準（負荷の最も軽いストレージ・サーバを選択しようとする）に従った方法を含む任意方法によって行なう。該当するレイヤにデータが含まれている場合、ドライバは、ドライバが読み出したデータをオペレーティング・システムに返送する。該当するレイヤにデータが含まれていない場合、ドライバはレイヤを一つずつ進んで、各レイヤのページデータを読み出そうとする。ドライバが有効なコピーの位置を特定することなく最後のレイヤに達したる場合、ドライバは、データは存在しているが全てがゼロ（「０」）であるかのように、データをオペレーティング・システムに返送する。同期ビットの状態によりいずれかのコピーが同期していない可能性があると判明すると、ドライバは、「信頼できるコピー」を読み出し、レイヤの全ての他のコピーに書き込みを行ない、同期ビットを全て「１」に設定し、プロセスを再開することにより、そのデータを再同期させる。どの時点においても、ストレージ・サーバがリクエストに対する返信として、ドライバが使用したデータ・ストレージ・コンフィグレーション識別子のコンフィグレーション値が古いことを通知すると、ドライバは、管理ストレージ・サーバに対して新規のコンフィグレーション・マップをリクエストし、プロセスを再開する。また、管理ストレージ・サーバがドライバに新規のコンフィグレーション・マップを送信する場合、以前には存在しているとしてマークされていたがそれ以降消去されてしまったページにドライバが遭遇した場合、または何らかの通信エラーが生じている場合、プロセスが再開する。
【００５４】
ドライバ書き込みプロセス。図７Ｂに示すように、ドライバ２９は、データをボリュームのページの一部に書き込む処理を実行する。このプロセスは、ドライバがその第１コンフィグレーション・マップ及びデータ・ストレージ・コンフィグレーション識別子を管理ストレージ・サーバから受信した後にのみ開始する。
【００５５】
このプロセスでは、まず、最上層または最上層に最も近いレイヤのページの全てのコピーにデータを書き込む。全ての書き込みが無事行なわれると、ドライバは無事完了した旨をオペレーティング・システムに返信する。最上層のレイヤにコピーが全く含まれていない場合、ドライバは、レイヤを下位に向かって走査を進めて、全てのレイヤに関してデータの最上層コピーを探索する。データが同期していない場合、ドライバはデータを再同期させる（上記読み出しプロセスのステップと同じステップを使用する）。どのレイヤにもページが含まれていない場合、ゼロが最上層レイヤの全コピーに書き込まれ、全コピーの同期ビットが設定され、プロセスが再開する。いずれかのレイヤにページが含まれている場合、最上層レイヤのデータの一つのコピーを選択し、ドライバがページの全体を読み出し、最上層レイヤの全コピーに書き込み、最上層レイヤの同期ビットを設定し、このプロセスを再開する。
【００５６】
他のプロセスにおけるように、いずれかのリクエストに対して、ストレージ・サーバがドライバのコンフィグレーションＩＤが古いと返答すると、クライアント・ドライバは、新規のコンフィグレーション・マップ及びデータ・ストレージ・コンフィグレーション識別子を管理ストレージ・サーバにリクエストし、プロセスを再開する。また、管理ストレージ・サーバがドライバに新規のコンフィグレーション・マップを送信する場合、以前には存在しているとしてマークされていたがそれ以降消去されてしまったページにドライバが遭遇した場合、または何らかの通信エラーが生じている場合にも、プロセスは再開する。
【図面の簡単な説明】
【００５７】
【図１】本発明の分散ストレージ・システムの一実施形態を用いたネットワーク・コンピュータ・システムのブロック図である。
【図２】アプリケーション・クライアントがパラレル・データベース・サーバであり、本発明の分散ストレージ・システムの一実施形態が用いらたネットワーク・コンピュータ・システムのブロック図。
【図３Ａ】データが複製されているとき、あるストレージ・サーバのページデータが別のストレージ・サーバのページデータのコピーと同期していることが確認される検証においてビット・マスクを使用することを示す図。
【図３Ｂ】データが複製されているとき、ビット・マスクを使用して、一のストレージ・サーバのページデータが別のストレージ・サーバのページデータのコピーと同期していないことを示す図。
【図４Ａ】データを一のボリュームのページから別のボリュームのページに移行させるレイヤ化機構の使用の一例を示す図。
【図４Ｂ】データを一のボリュームのページから別のボリュームのページに移行させるレイヤ化機構の使用の一例を示す図。
【図４Ｃ】データを一のボリュームのページから別のボリュームのページに移行させるレイヤ化機構の使用の一例を示す図。
【図５Ａ】スナップショット動作を実行するレイヤ化機構の使用の一例を示す図。
【図５Ｂ】スナップショット動作を実行するレイヤ化機構の使用の一例を示す図。
【図５Ｃ】スナップショット動作を実行するレイヤ化機構の使用の一例を示す図。
【図６】管理ストレージ・サーバがストレージ・サーバ・システムを管理するために実行するプロセスの実施形態を示す図。
【図７Ａ】アプリケーション・クライアントに関連するドライバが読み出し動作を行なうために実行するプロセスの実施形態を示す図。
【図７Ｂ】アプリケーション・クライアントに関連するドライバが書き込み動作を行なうために実行するプロセスの実施形態を示す図。
【図１】
2005528684.tif 000003
【図２】
2005528684.tif 000004
【図３Ａ】
2005528684.tif 000005
【図３Ｂ】
2005528684.tif 000006
【図４Ａ】
2005528684.tif 000007
【図４Ｂ】
2005528684.tif 000008
【図４Ｃ】
2005528684.tif 000009
【図５Ａ】
2005528684.tif 000010
【図５Ｂ】
2005528684.tif 000011
【図５Ｃ】
2005528684.tif 000012
【図６】
2005528684.tif 000013
【図７Ａ】
2005528684.tif 000014
【図７Ｂ】
2005528684.tif 000015
【手続補正書】
【提出日】平成15年12月31日(2003.12.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ・ネットワーク上での分散データ保存を実現する際に使用するシステムであって、
一つ以上のストレージ・サーバを含むストレージ・サーバ・システムであって、該一つ以上のストレージ・サーバの各々は、データ・ストレージ・デバイス及びネットワーク・インターフェイスを含み、該ネットワーク・インターフェイスは、データ保存を要求するアプリケーション・クライアント及び管理ストレージ・サーバと通信する、ストレージ・サーバ・システムと、
一つ以上の管理ストレージ・サーバを含む管理ストレージ・サーバ・システムであって、該一つ以上の管理ストレージ・サーバの各々は、ネットワーク・インターフェイスを含み、該ネットワーク・インターフェイスは、データ保存を要求するアプリケーション・クライアント及び前記一つ以上のストレージ・サーバの各々と通信する、管理ストレージ・サーバと、を備え、
前記管理ストレージ・サーバの各々は、その値が前記ストレージ・サーバ・システム内の或る時点でのデータ保存領域の割当てを示すデータ・ストレージ・コンフィグレーション識別子を含み、
前記ストレージ・サーバ・システム内のデータ保存領域の割当ては、前記ストレージ・サーバの内の一つ以上のストレージ・サーバに渡って分散した一つ以上のデータ保存領域の仮想ボリュームを定義することを備え、
前記管理ストレージ・サーバの各々は、前記データ・ストレージ・コンフィグレーション識別子の第１の値をアプリケーション・クライアントに供給する機能を有し、
前記管理ストレージ・サーバの各々は、前記ストレージ・サーバ・システム内のデータ保存領域の割当てに変化が生じた後に、前記データ・ストレージ・コンフィグレーション識別子の第２の値を前記ストレージ・サーバの各々に供給する機能を有し、
前記ストレージ・サーバの各々は、（ａ）アプリケーション・クライアントから受信したデータ保存関連リクエストに関連する前記データ・ストレージ・コンフィグレーション識別子の前記第１の値を、前記データ・ストレージ・コンフィグレーション識別子の前記第２の値と比較し、（ｂ）前記第１の値が前記第２の値に等しくない場合に前記データ保存関連リクエストを無視する比較器を含む、システム。
【請求項２】
アプリケーション・クライアントのオペレーティング・システムとの接続を行なうドライバを更に備え、
前記ドライバは、前記データ・ストレージ・コンフィグレーション識別子の前記第１の値を、ネットワークを通してストレージ・サーバに送信されるデータ保存関連のリクエストに関連付ける機能を有する、請求項１記載のシステム。
【請求項３】
前記一つ以上の管理ストレージ・サーバの各々は、前記ストレージ・サーバ・システムの前記一つ以上のストレージ・サーバを識別することが可能なコンフィグレーション・マップを含み、
前記一つ以上の管理ストレージ・サーバの少なくとも一つは、ユーザが前記コンフィグレーション・マップを変更して前記ストレージ・サーバ・システムにストレージ・サーバを追加するか、或いは前記ストレージ・サーバ・システムからストレージ・サーバを取り除くことを可能にするインターフェイスを含む、請求項１記載のシステム。
【請求項４】
前記一つ以上の管理ストレージ・サーバの各々は、（ａ）前記ストレージ・サーバ・システムの前記一つ以上のストレージ・サーバを識別すること、（ｂ）前記ストレージ・サーバ・システムの内の２つ以上のサーバに渡って拡張された仮想ボリュームを識別すること、（ｃ）前記ストレージ・サーバの内の２つ以上のサーバ間の前記仮想ボリュームのパーティションを識別すること、が可能なコンフィグレーション・マップを備え、
前記一つ以上の管理ストレージ・サーバの少なくとも一つは、ユーザが前記コンフィグレーション・マップを変更して前記仮想ボリュームの前記パーティションを定義することを可能にするインターフェイスを含む、請求項１記載のシステム。
【請求項５】
前記一つ以上の管理ストレージ・サーバの各々は、（ａ）前記ストレージ・サーバ・システムの前記一つ以上のストレージ・サーバを識別すること、（ｂ）前記ストレージ・サーバの２つ以上に渡って拡張された仮想ボリュームを識別することが可能なコンフィグレーション・マップを備え、
前記一つ以上の管理ストレージ・サーバの少なくとも一つは、アプリケーション・クライアントからのデータが、前記仮想ボリュームに関連する第１のストレージ・サーバに存在し、前記データのコピーが、前記仮想ボリュームに関連する第２のストレージ・サーバに存在するように、ユーザが命令することを可能にするインターフェイスを備える、請求項１記載のシステム。
【請求項６】
前記一つ以上の管理ストレージ・サーバの各々は、（ａ）前記ストレージ・サーバ・システムの前記一つ以上のストレージ・サーバを識別すること、（ｂ）各々が前記ストレージ・サーバの２つ以上に渡って拡張された複数の仮想ボリュームを識別することが可能なコンフィグレーション・マップを備え、
前記一つ以上の管理ストレージ・サーバは、データが第１の仮想ボリュームから第２の仮想ボリュームへ移行するように、ユーザが命令することを可能にするインターフェイスを備える、請求項１記載のシステム。
【請求項７】
前記一つ以上の管理ストレージ・サーバの各々は、（ａ）前記ストレージ・サーバ・システムの前記一つ以上のストレージ・サーバを識別すること、（ｂ）各々が前記ストレージ・サーバの２つ以上に渡って拡張された複数の仮想ボリュームを識別することが可能なコンフィグレーション・マップを備え、
前記一つ以上の管理ストレージ・サーバは、データが、第１の仮想ボリュームから第２の仮想ボリュームへ移行し、かつ前記第１の仮想ボリュームに保存されるように、ユーザが命令することを可能にするインターフェイスを備える、請求項１記載のシステム。
【請求項８】
前記管理ストレージ・サーバの少なくとも一つは、ロックがパラレル・データベース・サーバから破棄される分散ロック・マネージャーからの通信に応答して前記データ・ストレージ・コンフィグレーション識別子の値を変更することが可能である、請求項１記載のシステム。
【請求項９】
前記データ・ストレージ・コンフィグレーション識別子の前記値は、タイム・スタンプである、請求項１記載のシステム。
【請求項１０】
前記タイム・スタンプは、論理タイム・スタンプを含む、請求項９記載のシステム。
【請求項１１】
前記データ・ストレージ・デバイスは、ディスク・ドライブを備える、請求項１記載のシステム。
【請求項１２】
前記管理ストレージ・サーバの少なくとも一つは、第２のストレージ・サーバに存在するデータが第１のストレージ・サーバに存在するデータのコピーではないことを同期／非同期装置が示していることを検出するモニターを備える、請求項５記載のシステム。
【請求項１３】
前記同期／非同期装置は、前記第１ストレージ・サーバに関連する第１のビット・マスクと、前記第２のストレージ・サーバに関連する第２のビット・マスクとを備える、請求項１２記載のシステム。
【請求項１４】
前記第１の仮想ボリュームにあるデータの一部が前記第２の仮想ボリュームに移行したかどうかの判定を可能にする移行状態機構を更に備える請求項６記載のシステム。
【請求項１５】
前記移行状態機構は、各々が前記第２の仮想ボリューム上のデータ領域の特定の割り当てを示す一つ以上のページを有する第２の仮想ボリューム・マップと、各々が前記第２の仮想ボリューム・マップの前記一つ以上のページの内の一つに対応する一つ以上のページを有する第１の仮想ボリューム・マップとを備える、請求項１４記載のシステム。
【請求項１６】
前記移行状態機構は、データのページが、前記第１の仮想ボリュームから前記第２の仮想ボリュームへ移行したことを前記第１の仮想ボリューム・マップにて示すマーク装置を備える、請求項１５記載のシステム。
【請求項１７】
前記第１の仮想ボリュームにあるデータの一部が前記第２の仮想ボリュームに移行したかどうかの判定を可能にする移行状態機構を更に備える請求項７記載のシステム。
【国際調査報告】
2005528684.tif 000016
2005528684.tif 000017