(57)【特許請求の範囲】
【請求項１】
ネットワークによって主サーバに接続された２次サーバであって、前記２次サーバは前記主サーバに格納されたログファイルを複製するように構成されており、前記２次サーバは、
前記ログファイルの複製を格納するよう構成されたローカル記憶装置と、
前記２次サーバのハードウェアによって動作されるソフトウェア・モジュールであって、前記２次サーバの前記ソフトウェア・モジュールは、
前の更新動作からの公開固有ＩＤ及び私用固有ＩＤを含む前記主サーバからの更新動作を受け取り、
前記２次サーバの前記ローカル記憶装置に格納された前記ログファイルの前記複製に格納された最後の更新動作から、前の公開固有ＩＤを得て、
前記私用固有ＩＤのハッシュを生成し、前記私用固有ＩＤの前記生成されたハッシュを前記前の公開固有ＩＤと比較し、そして
前記私用固有ＩＤの前記生成されたハッシュが前記前の公開固有ＩＤに等しいとの確認に応じて、前記２次サーバの前記ローカル記憶装置内の前記ログファイルの前記複製に前記更新動作を追加するよう構成されたソフトウェア・モジュールと、
を備える２次サーバ。
【請求項２】
前記公開固有ＩＤが、前記主サーバに格納されたマスター秘密値から生成された新しい私用固有ＩＤのハッシュである請求項１記載の２次サーバ。
【請求項３】
前記新しい私用固有ＩＤが、前記マスター秘密値のビットごとの交差のハッシュ、前記前の更新動作からの前記私用固有ＩＤ、及び前記更新動作に対応するデータを含む請求項２記載の２次サーバ。
【請求項４】
前記ログファイルが更新動作のリストを含む請求項１記載の２次サーバ。
【請求項５】
前記ログファイル及び前記ログファイルの前記複製が、前記主サーバで実行する仮想計算機のディスク画像に対応する請求項４記載の２次サーバ。
【請求項６】
前記更新動作が、前記仮想計算機により出された書込み動作に対応して前記仮想計算機の論理アドレス及び前記論理アドレスに書き込まれるデータを含むデータ部を更に含む請求項５記載の２次サーバ。
【請求項７】
前記ソフトウェア・モジュールが更に、前記私用固有ＩＤの前記生成されたハッシュが前記前の公開固有ＩＤに等しくないとの確認に応じて、前記更新動作を拒否するように構成された請求項１記載の２次サーバ。
【請求項８】
ログファイルの複製を更新する方法において、前記ログファイルは主サーバのローカル記憶装置に格納され、前記複製は２次サーバのローカル記憶装置に格納され、前記主サーバと前記２次サーバとがネットワークによって接続されている方法であって、
前記２次サーバによって前記主サーバから更新動作を受け取るステップであって、前記更新動作は前の更新動作からの公開固有ＩＤ及び私用固有ＩＤを含むステップと、
前記２次サーバによって、前記２次サーバの前記ローカル記憶装置に格納された前記ログファイルの前記複製に格納された最後の更新動作から、前の公開固有ＩＤを得るステップと、
前記２次サーバによって前記私用固有ＩＤのハッシュを生成するステップと、
前記２次サーバによって、前記私用固有ＩＤの前記生成されたハッシュを前記前の公開固有ＩＤと比較するステップと、
前記私用固有ＩＤの前記生成されたハッシュが前記前の公開固有ＩＤに等しいとの確認
に応じて、前記２次サーバによって前記ログファイルの前記複製に前記更新動作を追加するステップと、
を含む方法。
【請求項９】
前記公開固有ＩＤが、前記主サーバに格納されたマスター秘密値から生成された新しい私用固有ＩＤのハッシュである請求項８記載の方法。
【請求項１０】
前記新しい私用固有ＩＤが、前記マスター秘密値のビットごとの交差のハッシュ、前記前の更新動作からの前記私用固有ＩＤ、及び前記更新動作に対応するデータを含む請求項９記載の方法。
【請求項１１】
前記ログファイルが更新動作のリストを含む請求項８記載の方法。
【請求項１２】
前記ログファイル及び前記ログファイルの前記複製が、前記主サーバで実行する仮想計算機のディスク画像に対応する請求項１１記載の方法。
【請求項１３】
前記更新動作が、前記仮想計算機により出された書込み動作に対応しており、前記仮想計算機の論理アドレス及び前記論理アドレスに書き込まれるデータを含むデータ部を更に含む請求項１２記載の方法。
【請求項１４】
前記私用固有ＩＤの前記生成されたハッシュが前記前の公開固有ＩＤに等しくないとの確認に応じて、前記更新動作を拒否するステップを更に含む請求項８記載の方法。
【請求項１５】
主サーバと２次サーバとがネットワークによって接続されており、前記主サーバのローカル記憶装置に格納されたログファイルの複製を格納するローカル記憶装置を有する前記２次サーバの処理装置により実行されるときに、
前記２次サーバによって、前記主サーバから更新動作を受け取るステップであって、前記更新動作は前の更新動作からの公開固有ＩＤ及び私用固有ＩＤを含むステップと、
前記２次サーバによって、前記２次サーバの前記ローカル記憶装置に格納された前記ログファイルの前記複製に格納された最後の更新動作から、前の公開固有ＩＤを得るステップと、
前記２次サーバによって、前記私用固有ＩＤのハッシュを生成するステップと、
前記２次サーバによって、前記私用固有ＩＤの前記生成されたハッシュを前記前の公開固有ＩＤと比較するステップと、
前記私用固有ＩＤの前記生成されたハッシュが前記前の公開固有ＩＤに等しいとの確認に応じて、前記２次サーバによって前記ログファイルの前記複製に前記更新動作を追加するステップと、
を実行することによって、前記処理装置に前記複製を更新させる命令を含むプログラムを格納するコンピュータ可読記憶媒体。
【請求項１６】
前記公開固有ＩＤが、前記主サーバに格納されたマスター秘密値から生成された新しい私用固有ＩＤのハッシュである請求項１５記載のコンピュータ可読記憶媒体。
【請求項１７】
前記新しい私用固有ＩＤが、前記マスター秘密値のビットごとの交差のハッシュ、前記前の更新動作からの前記私用固有ＩＤ、及び前記更新動作に対応するデータを含む請求項１６記載のコンピュータ可読記憶媒体。
【請求項１８】
前記ログファイルが更新動作のリストを含む請求項１５記載のコンピュータ可読記憶媒体。
【請求項１９】
前記ログファイル及び前記ログファイルの前記複製が、前記主サーバで実行する仮想計算機のディスク画像に対応する請求項１８記載のコンピュータ可読記憶媒体。
【請求項２０】
前記更新動作が、前記仮想計算機により出された書込み動作に対応して前記仮想計算機
の論理アドレス及び前記論理アドレスに書き込まれるデータを含むデータ部を更に含む請
求項１９記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウドコンピューティング・ベースの仮想計算機・ファイルシステムにおいてディスク画像を複製するシステム及び方法に関する。
[関連出願の相互参照]
[0001]本願は、「分散形システムにおいて秘密共有で投票する方法」（代理人整理番号：Ａ３６３）という名称である米国特許出願（その出願は本発明の譲受人に譲渡されている）に関連があり、同じ日に出願された。
【背景技術】
【０００２】
[0002]現在のエンタープライズレベルの仮想計算機・ファイルシステム、例えばＶＭｗａｒｅ社の仮想計算機（ＶＭＦＳ）・ファイルシステムは、通常、ストレージリソースを仮想計算機に提供するために、ストレージ・エリア・ネットワーク（ＳＡＮ）のような外部記憶装置を利用する共有ディスク・ファイルシステムである。これらの仮想計算機はインスタンス化されて、それらの仮想計算機のディスク画像をストレージ・エリア・ネットワーク（ＳＡＮ）に別々のファイルとして格納する１つ以上のサーバ（サーバークラスタと呼ばれることもある）で動作する。クラスタの各サーバは、サーバのストレージ・エリア・ネットワークとのインタラクションを調整する仮想計算機・ファイルシステムの実行を含む仮想化層（ハイパーバイザと呼ばれることもある）を実行する。例えば、クラスタの各サーバの各仮想計算機・ファイルシステムは、複数のサーバで実行する仮想計算機が、他のサーバが同じディスク画像に同時にアクセスすることを可能にするという懸念無しに、ストレージ・エリア・ネットワークのそれらのディスク画像に同時にアクセスする（例えば、読込み及び書込みを行う）ことを可能にする共通パーファイル・ロッキング・プロトコルを実施して従う。
【０００３】
[0003]図１は、ストレージ・エリア・ネットワークを利用している仮想化サーバのクラスタのためのネットワークアーキテクチャの１つの実施例を示す。各仮想化サーバ１００Ａ〜１００Ｊは、ストレージ・エリア・ネットワーク１０５にネットワーク化されて、ＳＣＳＩベースのプロトコルを用いてストレージ・エリア・ネットワーク１０５と通信する。前述のように、各仮想化サーバ１００Ａ〜１００Ｊは、１１５Ａのような仮想計算機・ファイルシステムを含むハイパーバイザ、例えば１１０Ａを含む。ハイパーバイザ１１０Ａは、そのサーバ１００Ａが多くの仮想計算機、例えば１２０Ａ〜１２５Ａをインスタンス化することを可能にするために、仮想化サポートを提供する。仮想計算機１２０Ａ〜１２５Ａの各々のためのディスク画像はストレージ・エリア・ネットワーク１０５に格納される。
【０００４】
[0004]ストレージ・エリア・ネットワーク１０５が、すべてのサーバの仮想計算機のためのディスク画像をクラスタに格納する中央ストレージリソースとしての機能を果たすので、図１のネットワークアーキテクチャはサーバの故障を防止する。例えば、サーバ１００Ａがハードウェアの故障を生じる場合、クラスタの他のサーバのいずれもが、新規な仮想計算機をインスタンス化し、そして新しく生成された仮想計算機をストレージ・エリア・ネットワーク１０５に格納された故障した仮想計算機のディスク画像と関連させることによって、仮想計算機１２０Ａ〜１２５Ａのいずれをも「フェイルオーバー」することができる（即ち、この種のサーバが、仮想計算機をサポートするための、充分なコンピューティング・リソースを備えている場合には）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
[0005]しかしながら、ストレージ・エリア・ネットワーク１０５自体が潜在的ボトルネック及び単一障害点になる。更にまた、もともと、中央ストレージ・エリア・ネットワークの使用は、クラスタのサーバの数を増やし、及び／又はワイド・エリア・ネットワーク（ＷＡＮ）を通じてクラスタにサーバを分散する能力を制限する。加えて、ストレージ・エリア・ネットワークは、従来より、データセンタの最も高価な構成要素の１つであった。そして、しばしば、仮想化ソフトウェア及びサーバクラスタの合計のコストより大きいコストがかかる。
【課題を解決するための手段】
【０００６】
[0006]本発明の１つ以上の実施形態は、複製分散記憶装置を使用する仮想計算機・ファイルシステムを提供する。このシステムにおいて、ウェアハウス・スタイル又は「クラウド」コンピューティング・システムのように、この種の複製分散記憶装置がストレージ・エリア・ネットワークのボトルネック及び単一障害点を排除するので、複数のネットワーク化されたサーバは、それらの信頼性がより低いとしても、集中化したストレージ・エリア・ネットワークより安価なローカル・ストレージ・リソース（例えば、ＳＡＴＡディスク）を利用し、そして更に、単により多くのサーバを加えることによって、追加の及び大規模なデータセンタ成長の可能性を提供する。しかしながら、この種のローカル・ストレージ・リソースの使用もストレージ・エリア・ネットワークの使用より信頼性が低い。信頼性を改善するために、高可用性を提供して、サーバ全体の複製データの完全性及び整合性を確実にするデータ複製技術が使用される。
【０００７】
[0007]本発明の一実施形態による２次サーバは、ネットワークによって主サーバに接続されており、主サーバに格納されたログファイルを複製するように構成されている。本２次サーバは、ログファイルの複製を格納するよう構成されたローカル記憶装置及び２次サーバのハードウェアによって動作されるソフトウェア・モジュールを備え、ソフトウェア・モジュールは、主サーバからの更新動作を受け取り（そこにおいて、更新動作は前の更新動作からの公開固有ＩＤ及び私用固有ＩＤを含む）、２次サーバのローカル記憶装置に格納されたログファイルの複製に格納された最後の更新動作から、前の公開固有ＩＤを得て、私用固有ＩＤのハッシュを生成し、私用固有ＩＤの生成されたハッシュを前の公開固有ＩＤと比較し、私用固有ＩＤの生成されたハッシュが前の公開固有ＩＤに等しいとの確認に応じて、更新動作を２次サーバのローカル記憶装置内のログファイルの複製に追加するように構成されている。この種の２次サーバの一実施形態において、ログファイル及びログファイルの複製は、主サーバで動作する仮想計算機のディスク画像に対応する。
【図面の簡単な説明】
【０００８】
【図１】[0008]ストレージ・エリア・ネットワークを利用している仮想化サーバのクラスタのためのネットワークアーキテクチャを示す。
【図２】[0009]本発明の１つ以上の実施形態による、仮想計算機・ファイルシステムのための複製分散記憶装置を使用しているネットワークアーキテクチャを示す。
【図３】[0010]本発明の１つ以上の実施形態による、サーバで動作する仮想計算機のためのディスク画像複製を示す。
【図４Ａ】[0011]本発明の１つ以上の実施形態による、ローカル記憶装置に格納された仮想計算機のディスク画像のログ構造を示す。
【図４Ｂ】[0012]本発明の１つ以上の実施形態による、ディスク画像の更新動作の内部データ構造を示す。
【図５】[0013]本発明の１つ以上の実施形態による、２次サーバに主要なデータ画像を複製するためのフローチャートを示す。
【図６】[0014]本発明の１つ以上の実施形態による、データ画像に対する一連の更新動作を示す。
【図７】[0015]本発明の１つ以上の実施形態による、多数のサーバ全体のマスター秘密トークンを共有するためのフローチャートを示す。
【発明を実施するための形態】
【０００９】
[0016]図２は、本発明の１つ以上の実施形態による、仮想計算機・ファイルシステムのための複製分散記憶装置を使用しているネットワークアーキテクチャを示す。仮想化サーバ１００′（各々は、仮想計算機ファイルシステム１１５′、ハイパーバイザ１１０′、及び１つ以上の仮想計算機１２０′、１２５′を含む）は、それらのそれぞれのインスタンス化された仮想計算機に対応する格納されたディスク画像にアクセスするために集中ストレージ・エリア・ネットワーク１０５と通信する、図１のネットワークアーキテクチャとは対照的に、図２のクラスタの仮想化サーバ２００Ａ〜２００Ｈの各々は、それ自体の直接取付けられたローカル記憶装置、例えば、仮想化サーバ２００Ａのためのローカル記憶装置２０５Ａを有する。このように、サーバ２００Ａで実行する仮想計算機２１０Ａ〜２１５Ａは、それらのディスク画像をローカル記憶装置２０５Ａに格納する。ディスク画像データ（全体で）がサーバにあるさまざまなローカル記憶装置にわたって格納されるので、この種のネットワークアーキテクチャの記憶は、従って「分散している」とみなすことができる。仮想化サーバ２００Ａ〜２００Ｈの各々は、サーバにおける仮想計算機のインスタンス化及び実行をサポートする仮想化ソフトウェア、例えば２２５Ａのようなハイパーバイザを含む。ハイパーバイザ２２５Ａは、仮想計算機２１０Ａ〜２１５Ａによって、（即ち、それらのそれぞれのディスク画像から読み取るか又は書き込むために）、ローカル記憶装置２０５Ａへのアクセスを調整及び管理する仮想計算機・ファイルシステム２２０Ａを更に含む。
【００１０】
[0017]サーバ２００Ａ〜２００Ｈの各々は、クラスタの他のサーバの１つ以上に更にネットワーク化される。例えば、サーバ２００Ａは、サーバ２００Ｂ、サーバ２００Ｃ、サーバ２００Ｇ、及びサーバ２００Ｈにネットワーク化される。図２のネットワーク・トポロジに示すように、各サーバはクラスタの４つの他のサーバにネットワーク化されて、１つのホップだけで、別のサーバに達することができる。しかしながら、図２のネットワーク・トポロジが例示目的のための簡略化された具体例であり、そしてクラスタのサーバ間の通信を可能にするいかなるネットワーク・トポロジも、いかなるリング、メッシュ、スター、ツリー、ポイント・ツー・ポイント、ピア・ツー・ピア、又はその他のネットワーク・トポロジを限定されずに含み、サーバに部分的に接続するか又は完全に接続するかにかかわらず、本願明細書における教示と整合して使用されることができることを認識するべきである。ネットワークアーキテクチャから集中ストレージ・エリア・ネットワークを取り除くことによって、本発明の実施形態は、アーキテクチャの潜在的ボトルネック及び故障点を取り除いて、ローカル記憶装置を利用するサーバをクラスタに逐次加えることによって、コスト効率的な方法で仮想データセンタのための記憶を拡大することがより容易に可能である。
【００１１】
[0018]図２のネットワークアーキテクチャと類似のネットワークアーキテクチャを利用する本発明の実施形態は、サーバの故障防止を施すために、クラスタのサーバのローカル記憶装置全体に、ディスク画像を複製する。サーバが故障する場合、故障したサーバに仮想計算機のディスク画像の局所的に格納された複製を有するクラスタの別のサーバは、その特定の仮想計算機をフェイルオーバーすることができる。一実施形態において、クラスタの指定されたサーバは複製マネージャとして責任があり、そして、例えば、サーバ２００Ａに、仮想計算機２１０Ａのためのディスク画像をサーバ２００Ｂ、２００Ｃ、及び２００Ｈのローカル記憶装置に複製するように命令できる。本願明細書に述べる通り、仮想計算機を実行しているサーバは仮想計算機に関する「主サーバ」であり、そしてフェイルオーバー目的のための仮想計算機のディスク画像の複製を格納する他のサーバは「２次サーバ」である。同様に、主サーバのローカル記憶装置に格納された仮想計算機のディスク画像のコピーは、「主」コピー、レプリカ、又はディスク画像であり、そして２次サーバのローカル記憶装置に格納された仮想計算機のディスク画像のコピーは「２次」コピー、レプリカ、又はディスク画像である。図３は、本発明の１つ以上の実施形態による、分散記憶装置を用いてサーバで実行する仮想計算機のためのディスク画像複製を示す。特に、主サーバ２００Ａで実行する仮想計算機２１０Ａは、通常動作の間に、サーバ２００Ａのローカル記憶装置２０５Ａに格納された主ディスク画像３００を利用する。主ディスク画像３００は、２次ディスク画像３０５、３１０、及び３１５として、それぞれ、２次サーバ２００Ｂ、２００Ｃ、及び２００Ｈのローカル記憶装置において複製される。
【００１２】
[0019]図４Ａは、本発明の１つ以上の実施形態による、ローカル記憶装置に格納された仮想計算機のディスク画像のログ構造を示す。図４Ａに示すように、サーバ２００Ａで実行する仮想計算機２１０Ａのためのディスク画像３００は、ディスクになされた更新動作の一時的に順序付けられたログとして構成されている。例えば、仮想計算機２１０Ａが書込み動作（例えば、仮想計算機の仮想アドレス空間からの論理ブロック・アドレス及び論理ブロック・アドレスに書き込まれるデータを含む）をそのディスクに出すときに、仮想計算機・ファイルシステム２２０Ａは書込み動作を受信して、対応する更新動作、例えば更新動作４００を生成し、そして更新動作４００をディスク画像３００のログ構造の末端部に追加する。一実施形態において、仮想計算機・ファイルシステム２２０Ａは、更に、仮想計算機２１０Ａにより出された書込み動作で参照された論理ブロック・アドレスを、出された書込み動作に対応する更新動作の位置（及びそこにあるデータ）を参照するローカル記憶装置２０５Ａの物理アドレスにマップするＢツリーのデータ構造を維持する。このような実施形態では、仮想計算機・ファイルシステム２２０Ａが仮想計算機２１０Ａから書込み動作を受け取るときに、書込み動作の論理ブロック・アドレスをＢツリーに提供することによって物理アドレスが見つかるように、それはディスク画像のログ構造における更新動作に対応する物理アドレスをＢツリーに更に挿入する。このＢツリーは、仮想計算機２１０Ａにより出された読込み動作を仮想計算機・ファイルシステム２２０Ａが処理することを可能にする。例えば、仮想計算機２１０Ａが読込み動作（例えば、データを読込む仮想計算機の仮想アドレス空間からの論理ブロック・アドレスを含む）をそのディスクに出すときに、仮想計算機・ファイルシステム２２０Ａは、読込み動作を受信し、要求データを含むログ構造に格納された、前の更新コマンド４０５に対応するＢツリーから（例えば、従来の完了された書込み動作から）物理アドレスを得て、仮想計算機２１０Ａのためのデータを検索する。Ｂツリーのデータ構造の代わりに、他の類似のツリー又は検索データ構造を、例えば、ルックアップテーブル、基数ツリーなどに限定されないが、使うことができる。
【００１３】
[0020]図４Ｂは、本発明の１つ以上の実施形態による、ディスク画像の更新動作の内部データ構造を示す。ディスク画像３００に格納された更新動作、例えば、図４Ｂの更新動作４１０は、ヘッダー部分４１５及びデータ部分４２０を含む。ヘッダー部分４１５は、更新動作のための公開固有識別又はＩＤを格納するＩＤ入力４２５、ディスク画像３００のログに格納された前の更新動作の私用固有ＩＤを格納する「親」ＩＤ入力４３０、及びデータ部分４２０に関する記述的情報（例えば、データの量、アドレス位置など）を格納するデータ情報入力４３５を含む。
【００１４】
[0021]本発明の一実施形態では、図２及び３に示すような複製分散記憶装置が、スプリットブレイン・シナリオを回避する方法で、２次サーバに対する主データ画像の複製を実行する。例えば、サーバ２００Ａのネットワーク接続が故障する場合、スプリットブレイン・シナリオは起こることがありえるが、サーバ２００Ａの仮想計算機２１０Ａは、さもなければ正常に動作して、主データ画像３００に更新動作として格納されている書込み動作を出し続ける。サーバ２００Ａがクラスタの他のいかなるサーバによってももはやアクセス可能でないので、一実施形態において、フェイルオーバー管理に対して責任がある指定されたサーバは、そのサーバ２００Ａが故障したと結論することができ、従ってサーバ２００Ｂに命令して、その２次ディスク画像３０５を利用して、仮想計算機２１０Ａをフェイルオーバーすることができる。２００Ａのためのネットワーク接続がその後回復するという場合には、仮想計算機２１０Ａの２つの異なる例示はサーバ２００Ａ及び２００Ｂで実行している。更にまた、サーバ２００Ａ及びサーバ２００Ｂの仮想計算機２１０Ａのためのそれぞれのディスク画像３００及び３０５は適切に同期しないであろう。２次サーバがデータ画像のそれらの２次複製を不適切に更新するこの種のスプリットブレイン状況を防止するために、本発明の実施形態による、主サーバの仮想計算機・ファイルシステムは、主サーバにより伝播される更新動作だけが２次サーバによって受け入れられることを確実にするために、主サーバだけに知られているマスター秘密トークンを使用する。
【００１５】
[0022]図５は、本発明の１つ以上の実施形態による、２次サーバに主データ画像を複製するためのフローチャートを示す。フローチャートのステップが図２、３、４Ａ、及び４Ｂの構造を参照するが、本願明細書における教示と整合している他のいかなるネットワークアーキテクチャ、仮想化サーバ、ディスク画像フォーマット、及び更新動作構造も、図５のフローチャートに関連して用いられることが可能であると認識されなければならない。ステップ５００において、主サーバ２００Ａの仮想計算機・ファイルシステム２２０Ａは仮想計算機２１０Ａから書込み動作を受け取る。ステップ５０５において、仮想計算機・ファイルシステム２２０Ａは、書込み動作のための更新動作のための私用固有ＩＤを生成する。一実施形態において、私用固有ＩＤは、主サーバ２００Ａのマスター秘密トークン、前の更新動作に関する親ＩＤ（主及び２次ディスク画像の最後の入力として格納された）、及び書込み動作のためのデータのビット単位の交差ハッシュする（又は、連結、ＸＯＲなどのような他のビット単位の方法でデータ、親ＩＤ、マスター秘密トークンを組み合わせる）ことによって生成され、Ｈ（ｓ|ｐａｒｅｎｔ｜ｄａｔａ）、ここでＨは暗号一方向性ハッシュ関数、例えばＳＨＡ―Ｉ又はＳＨＡ―２５６であり、ｓはマスター秘密トークンであり、そしてｐａｒｅｎｔは親ＩＤである。ステップ５１０において、私用固有ＩＤは、次に、公開固有ＩＤ、Ｈ（Ｈ（ｓ|ｐａｒｅｎｔ｜ｄａｔａ））を得るために、（例えば、実施形態に応じて、同じ又は異なるハッシング機能によって、）再びハッシュされる。ステップ５１５において、仮想計算機・ファイルシステム２２０Ａは、主ディスク画像３００に格納された前の更新動作から生成された、前の私用固有ＩＤの格納されたコピーを得る。ステップ５２０において、仮想計算機・ファイルシステム２２０Ａは、受け取った書込み動作に対応する更新動作構造を構成し、そこにおいて、（ｉ）更新動作構造のＩＤ入力４２５は、ステップ５１０において生成された公開固有ＩＤであり、（ｉｉ）更新動作構造の親ＩＤ入力４３０は、ステップ５１５において得られた前の私用固有ＩＤであり、そして（ｉｉｉ）更新動作構造のデータは、受け取った書込み動作のデータである。ステップ５２５において、仮想計算機・ファイルシステム２２０Ａは、更新動作構造を主ディスク画像３００の末端部に追加する。ステップ５３０において、仮想計算機・ファイルシステム２２０Ａは、更に更新動作構造を２次サーバ２００Ｂ、２００Ｃ、及び２００Ｈの各々に送信する。一実施形態において、更新動作構造は、ＨＴＴＰ又は他の類似のネットワーク通信プロトコルを用いて、２次サーバに送信される。ステップ５３５において、仮想計算機・ファイルシステム２２０Ａは、ステップ５１５において得られた前の私用固有ＩＤの格納されたコピーを、ステップ５０５において生成された現在の更新動作の私用固有ＩＤと置き換える（即ち、Ｈ（ｓ|ｐａｒｅｎｔ｜ｄａｔａ）であり、Ｈ（Ｈ（ｓ|ｐａｒｅｎｔ｜ｄａｔａ））でない。ステップ５４０において、物理アドレスが書込み動作の論理ブロック・アドレスをＢツリーデータ構造に提供することによって見つけられるように、��想計算機・ファイルシステム２２０Ａは、主ディスク画像３００の追加した更新動作に対応する物理アドレスを得て、物理アドレスをそのＢツリーデータ構造に挿入する。
【００１６】
[0023]ステップ５４５において、２次サーバの各々のための仮想計算機・ファイルシステムは更新動作構造を受信する。ステップ５５０において、２次サーバの各仮想計算機・ファイルシステムは、親ＩＤ入力４３０（それは、ステップ５３０における２次サーバへの更新動作構造の伝送の前に主サーバ２００Ａだけに知られている前の更新動作の私用固有ＩＤである）を受信した更新動作構造から抽出し、ステップ５５５において、親ＩＤ入力４３０のハッシュを生成する。ステップ５６０において、２次サーバの各仮想計算機・ファイルシステムは、ＩＤ入力４２５をその２次ディスク画像複製の最後の更新動作から抽出する。ステップ５２０において構成された更新動作構造のＩＤ入力４２５と同様に、ステップ５６０において抽出されたＩＤ入力４２５は、従来の更新動作のために仮想計算機・ファイルシステム２２０Ａによって作成された公開固有ＩＤである。ステップ５６５において、生成されたハッシュされた親ＩＤが２次ディスク画像の最後の更新動作のＩＤ入力４２５として格納された公開固有ＩＤに等しい場合、次にステップ５７０において、２次サーバの仮想計算機・ファイルシステムは、受信された更新動作構造が主サーバ２２０Ａから生じたことを確認して、受信された更新動作構造をその２次データ画像の末端部（それぞれ、主ディスク画像３００のための３０５、３１０、及び３１５）に追加する。ステップ５７５において、２次サーバの仮想計算機・ファイルシステムは、２次データ画像の追加された更新動作に対応する物理アドレスを得て、その物理アドレスをそのＢツリーデータ構造に挿入する。しかしながら、ステップ５６５において、生成されたハッシュされた親ＩＤが２次ディスク画像の最後の更新動作のＩＤ入力４２５として格納された公開固有ＩＤに等しくない場合、受信された更新動作構造はステップ５８０において拒否される。
【００１７】
[0024]図５に示されるステップにより、確実に、主サーバにより生成された更新動作だけが受け入れられて、２次サーバによって、それらのそれぞれの２次ディスク画像に追加されることになる。特に、主サーバの仮想計算機・ファイルシステムだけが、次の更新動作の親ＩＤとして供給されることができる現在の更新動作の私用固有ＩＤのコピーを所有する。他の全ての２次サーバは、２次ディスク画像の更新動作のＩＤ入力４２５として格納された対応する公開固有ＩＤを得ることができるだけである。更に更新動作間の関係を例示するために、図６は、本発明の１つ以上の実施形態による、データ画像に対する一連の更新動作を示す。図６の更新動作が、例示するためにＩＤ入力４２５、親ＩＤ入力４３０、及びデータ部分４２０だけで例示されたが、更新動作は、本発明の１つ以上の実施形態に従って、例えば、データ情報入力４３５を含む、付加的なフィールド及び情報を含むことができると認識されなければならない。前述のように、主サーバは、主データ画像の最後の入力に対応する現在の私用固有ＩＤを格納するメモリバッファ６００を保持する。これは、ステップ５１５において得られて、ステップ５３５において、その後置換された私用固有ＩＤの格納されたコピーである。注目すべきは、現在の私用固有ＩＤのこの格納されたコピーは、ステップ５１０において生成されて対応する更新動作のＩＤ入力４２５に格納された公開固有ＩＤのハッシュされていないバージョンである。例えば、現在の私用固有ＩＤがＨ（ｓ|ｐａｒｅｎｔ｜ｄａｔａ）である場合、主及び２次ディスク画像の対応する更新動作のためのＩＤ入力４２５は、導出された公開固有ＩＤ、Ｈ（Ｈ（ｓ|ｐａｒｅｎｔ｜ｄａｔａ））を含む。ハッシュ関数の性質により明らかであるように、主サーバだけがバッファ６００に格納された私用固有ＩＤにアクセスし、そしてクラスタの他のいかなるサーバも、それらの２次ディスク画像の最後の更新動作のＩＤ入力４２５の対応する公開固有ＩＤにアクセスする２次サーバを含んで、バッファ６００に格納された私用固有ＩＤを決定するか又は導出することができない。図６の更新動作Ｕ０は、主ディスク画像及びすべての２次ディスク画像に現在格納されているディスク画像の第１更新動作を表す。私用固有ＩＤ６０５、Ｈ（ｓ｜ｄａｔａ０）は、ステップ５０５のように、仮想メモリ・ファイルシステムにより生成され、続いて更新動作Ｕ０のＩＤ入力４２５の公開固有ＩＤとして格納される前に、ステップ５１０においてハッシュされる。私用固有ＩＤ６０５は、続いて、ステップ５３５において、主サーバのメモリバッファ６００に格納される。更新動作Ｕ０の親ＩＤ入力４３０がディスク画像のための第１更新動作であるので、それはヌル（ＮＵＬＬ）である。主サーバは、バッファ６００に格納された、そのマスター秘密トークンｓ、更新動作Ｕ１のための新しいデータ、及び現在のＩＤ、ｉｄ０のその交差をハッシュすることによって、新しい私用固有ＩＤ６１０を作成することによって、次の更新動作Ｕ１を生成する、Ｈ（ｓ|ｉｄ０|ｄａｔａ１）、ここでｉｄ０は、Ｈ（ｓ｜ｄａｔａ０）である。更新動作Ｕ１の親ＩＤ入力４３０はｉｄ０である。更新動作Ｕ１がステップ５３０��おいて２次サーバに転送されるときに、２次サーバは、ステップ５６５において受信された更新動作Ｕ１の親ＩＤのハッシュ、Ｈ（ｉｄ０）が現在格納されている更新動作Ｕ０のＩＤ入力４２５、Ｈ（Ｈ（ｓ｜ｄａｔａ０））に等しいことを確認することによって、更新動作Ｕ１が主サーバから生じていることを確かめることが可能である。
【００１８】
[0025]主サーバが故障するという場合にマスター秘密トークンを失うことを回避するために、本発明の１つ以上の実施形態は、マスター秘密トークンを実際のところ明らかにしない方法で他のサーバ全体にマスター秘密トークンを分散するために、秘密共用プロトコルを利用する。図７は、本発明の１つ以上の実施形態による、多くのサーバにわたってマスター秘密トークンを共有するためのフローチャートを示す。ステップ７００において、主サーバの仮想計算機・ファイルシステム、例えば仮想計算機・ファイルシステム２２０Ａは、例えば図５のフローに従って、更新動作を２次サーバに伝播して、２次ディスク画像に格納されるように用いるために、マスター秘密トークンｓを生成する。マスター秘密トークンｓを利用する前に（例えば、図５のフローに従って）、ステップ７０５において、仮想計算機・ファイルシステムは、マスター秘密トークンｓをｎの部分又はシェアに分割する。ｎのシェアは、いかなる閾値番号ｔとｎのシェアの組合せもマスター秘密トークンｓを再形成できるという特徴を有する。ステップ７１０において、主サーバの仮想計算機・ファイルシステムは、ｎのシェアの各々を、クラスタの異なるサーバに分散する。シャミル（Ｓｈａｍｉｒ）の秘密共有、ブレークレー（Ｂｌａｋｌｅｙ）の秘密共有、及び他の類似の秘密共有方法のような周知の秘密共有技術が、本発明の実施形態に従ってマスター秘密トークンｓを分割して、再構成するために用いることができると認識しなければならない。
【００１９】
[0026] ステップ７１５におけるように、主サーバ２００Ａが故障すると、２次サーバ、例えば２次サーバ２００Ｂは、ステップ７２０において、主サーバ２００Ａの故障を認識できる。例えば、一実施形態において、フェイルオーバー管理責任を有する指定されたサーバは、２次サーバ２００Ｂに主サーバ２００Ａの故障を通知して、２次サーバ２００Ｂに新規な主サーバになるように命令して、フェイルオーバー手順を開始できる。代替実施形態では、２次サーバ２００Ｂはそれ自体で主サーバ２００Ａの故障を発見して（即ち、それ自体のモニタリング機能を用いて）、例えば、新規な主サーバになるために、ランポート（Ｌａｍｐｏｒｔ）のパクソス（Ｐａｘｏｓ）アルゴリズム又は類似の周知の投票アルゴリズムを利用し、主サーバの故障を同様に認識して、新規な主サーバになるためにそれ自体の投票手順を開始した他の２次サーバと潜在的に競争することによって、投票手順を開始できる。例えば、ステップ７２５において、２次サーバ２００Ｂは、故障した主サーバ２００Ａにより所有されるマスター秘密トークンｓのそれらのそれぞれのシェアのために、クラスタの他のサーバに要求を出す。ステップ７３０及び７３５において、２次サーバ２００Ｂがマスター秘密トークンシェアの閾値ｔを受信するまで、それはマスター秘密トークンシェアを受信し続ける。競合している二次サーバを有する実施形態において、例えば、２次サーバがランポートのパクソス・アルゴリズム又は類似のアルゴリズムに基づいて受理の規則に従う場合、別の２次サーバは２次サーバ２００Ｂの前にマスター秘密トークンシェアの閾値ｔを得ることができる。ステップ７４０において、２次サーバ２００Ｂは、ｔシェアからマスター秘密トークンｓを生成することが可能である。ステップ７４５において、２次サーバ２００Ｂは、マスター秘密トークンｓの交差、その２次ディスク画像の最後の更新動作の親ＩＤ、及び最後の更新動作からのデータをハッシュすることによって、新規な更新動作の正しい親ＩＤを生成する：Ｈ（ｓ|ｐａｒｅｎｔ｜ｄａｔａ）。ステップ７５０において、２次サーバ２００Ｂは、それがステップ７４５において生成された親ＩＤの正しいバージョンを含む「ビュー・チェンジ」更新動作を送信することによって、新規な主サーバとして責任を引き受けたとすべての他の２次サーバに通知する。ステップ７５５において、２次サーバ２００Ｂは新規な仮想計算機をインスタンス化して、それを故障した主サーバの故障した仮想計算機のためのその２次ディスク画像と関連させ、新規な主サーバとして責任を負って、ステップ７００に戻ることによって、新しく生成されたマスター・キー・トークンを生成して、その後伝播する。
【００２０】
[0027]さまざまな変更態様及び改変が、添付の特許請求の範囲に記載したように本発明のより広い精神及び範囲を逸脱しない範囲で本願明細書において記載されている特定の実施形態になされることができると認識されなければならない。例えば、前述の実施形態が、複製分散仮想化データセンタの仮想計算機ディスク画像を更新するとの関連で記載されたけれども、複数のコンピュータ又は装置を通じて複製される、いかなるログファイル又はオブジェクト（あるいは本願明細書の教示によるログとして構成されることができるファイル又はオブジェクト）も有するいかなるシステムも、この種のファイル又はオブジェクトへの排他的なアクセスを確実にするために本願明細書において開示された技術を利用できると認識されなければならない。同様に、別の実施形態は、更新動作の代わりに、又はそれに加えて、ディスク画像に追加される他のタイプの動作を送信できる。例えば、一実施形態は「分岐」及び削除動作を含む場合があり、そこにおいてクラスタのいかなるサーバもこの種の新しいディスク画像の作成を要求する（例えば、スナップショットするために）ことができるように、分岐動作は、新しいディスク画像がマスター秘密トークンについての知識を必要とせずに現在のディスク画像に基づいて作成されることを可能にし、そして削除動作は全てのディスク画像の削除を可能にする。別の実施形態は固有ＩＤを生成するために他の技術を利用できる。例えば、マスター秘密トークン、親ＩＤ、及び現行データの交差のハッシュを作成するのではなく、別の実施形態は、マスター秘密トークン及び現行データ又は親ＩＤの交差のハッシュを作成するか、又は本願明細書において記載されているようにその使用と整合したその他の方法で固有ＩＤを生成できる。一実施形態において、固有ＩＤは１６０ビットの値でもよい。別の代替実施形態では、仮想計算機・ファイルシステムは、個々のブロック位置ではなく全てのエクステントを追跡する６４ビットのインデックスを付けられたＢツリーを利用できる。別の実施形態のサーバクラスタは、共有記憶装置、例えばストレージ・エリア・ネットワーク、及びサーバ自体のローカル記憶装置の組み合わせを使用できる。例えば、そのような実施形態で、ストレージ・エリア・ネットワークにネットワーク化した他のサーバが仮想計算機をフェイルオーバーすることができるように、主サーバは仮想計算機のための主ディスク画像をストレージ・エリア・ネットワークに格納し、更にストレージ・エリア・ネットワークの故障の場合に付加的な保護手段を提供するために、他の２次サーバのローカル記憶装置の２次ディスク画像に仮想計算機に対応する更新動作を伝播する。更にまた別の実施形態においては、クラスタの各サーバはそれ自体のローカル記憶装置を含み、そして共有ストレージ・エリア・ネットワークにもネットワーク化される。この種の実施形態のサーバは本願明細書の教示と整合したローカル記憶装置を利用し、そしてそのローカル記憶装置が故障するか又はさもなければ一杯であるという場合には、ストレージ・エリア・ネットワークにアクセスすることができる。あるいは、この種の実施形態のサーバは、その主記憶装置としてストレージ・エリア・ネットワークを利用することができ、ストレージ・エリア・ネットワークの故障時にだけローカル記憶装置の助けを求めることができる。共有記憶装置及びローカル記憶装置の両方を使用することのさまざまな他の組み合わせが本願明細書の教示と整合して利用できると認識されなければならない。
【００２１】
[0028]本願明細書に記載されているさまざまな実施形態は、コンピュータシステムに格納されたデータを伴うさまざまなコンピュータ実行動作を使用できる。例えば、これらの動作は、通常、物理的な量の物理的操作を必要とすることがあり、必然的ではないが、これらの量は電気又は磁気信号という形をとることができて、それら、又はそれらの表現は、格納され、転送され、結合され、比較されるか、あるいは操作されることができる。更に、この種の操作は、しばしば、生成、識別、決定、又は比較のような用語で呼ばれる。本発明の１つ以上の実施形態の一部を形成する本願明細書に記載のいかなる動作も、有用な機械操作であってもよい。加えて、本発明の１つ以上の実施形態は、これらの動作を実行する装置又は器具にも関する。器具は特定の必要な目的のために特別に構成されることができるか、又はそれはコンピュータに格納されたコンピュータプログラムによって、選択的に作動されるか又は構成された汎用コンピュータでもよい。特に、さまざまな汎用機械は本願明細書において教示に従って記述されたコンピュータプログラムとともに用いられてもよく、又は必要な動作を実行するためにより特化された装置を構成することが、より便利である場合がある。
【００２２】
[0029]本願明細書に記載のさまざまな実施形態は、携帯用装置、マイクロプロセッサシステム、マイクロプロセッサ・ベース又はプログラム可能な家電、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成により実践されることができる。
【００２３】
[0030]本発明の１つ以上の実施形態は、１つ以上のコンピュータ可読媒体で具体化された１つ以上のコンピュータプログラムとして、又は１つ以上のコンピュータプログラム・モジュールとして実施されることができる。用語「コンピュータ可読媒体」は、コンピュータシステムにその後で入力されることができるデータを格納できるいかなるデータ記憶装置も指し、コンピュータ可読媒体は、コンピュータプログラムをそれらがコンピュータによって読み込まれることを可能にする方法で具体化するための、いかなる既存又は後に開発される技術にも基づいてもよい。コンピュータ可読媒体の例は、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読出し専用メモリ、ランダムアクセス・メモリ（例えば、フラッシュメモリ装置）、ＣＤ（コンパクトディスク）ＣＤ―ＲＯＭ、ＣＤ―Ｒ、又はＣＤ―ＲＷ、ＤＶＤ（デジタル多用途ディスク）、磁気テープ、ならびに他の光学及び非光学データ記憶装置を含む。コンピュータ可読コードが分散方式で格納されて、実行されるように、コンピュータ可読媒体はネットワーク結合コンピュータシステムに分散されることもできる。
【００２４】
[0031]本発明の１つ以上の実施形態が明確に理解するために少し詳しく説明されたが、特定の改変と変更態様が特許請求の範囲内でなされることができることは明らかである。従って、記載された実施形態は例示的であり限定的でないとみなすべきであり、そして特許請求の範囲は本願明細書に与えられた詳細に限定されるべきではなくて、特許請求の範囲及び同等物内で変更されることができる。特許請求の範囲において、要素及び／又はステップは、特許請求の範囲に明確に述べられない限り、動作のいかなる特定の順序も意味しない。
【００２５】
[0032]複数の例が、単一の例として本願明細書において記載されている構成要素、動作、又は構造のために提供されることができる。最後に、さまざまな要素、動作、及びデータ記憶の境界はいくらか任意であり、そして特定の動作は特定の例示的な構成との関連で例示される。機能の他の配置が予想されて、本発明の範囲内にあればよい。一般に、典型的な構成の別々の構成要素として提示される構造及び機能は、複合構造又は構成要素として実施されることができる。同様に、単一の構成要素として提示される構造及び機能は、別々の構成要素として実施されることができる。これらの、そしてまた他の変形例、変更態様、追加、及び改良は、添付の特許請求の範囲にあればよい。
【図１】
0005486682.tif 000002
【図２】
0005486682.tif 000003
【図３】
0005486682.tif 000004
【図４Ａ】
0005486682.tif 000005
【図４Ｂ】
0005486682.tif 000006
【図５】
0005486682.tif 000007
【図６】
0005486682.tif 000008
【図７】
0005486682.tif 000009