(57)【特許請求の範囲】
【請求項１】
第１のサーバコンピュータと少なくとも１つの第２のサーバコンピュータであって、各サーバコンピュータは、少なくとも１つのプロセッサと、少なくとも１つのローカルマスストレージデバイスと、少なくとも１つのネットワークコンポーネントとを有する、第１のサーバコンピュータと少なくとも１つの第２のサーバコンピュータと、
前記第１のサーバコンピュータと前記少なくとも１つの第２のサーバコンピュータとのネットワークコンポーネントがデータをやりとりするため接続されるデータネットワークと、
を有するクラスタシステムであって、
メモリサーバソフトウェアが、第１のバーチャルマシーンにおいて前記第１のサーバコンピュータにより実行され、前記メモリサーバソフトウェアが、前記データネットワーク上でバーチャルマスストレージデバイスを提供し、前記提供されたバーチャルマスストレージデバイスは、前記少なくとも１つの第２のサーバコンピュータによりネットワークドライブとして搭載され、
更なるバーチャルマシーンが、前記第２のサーバコンピュータにより実行され、
フィルタドライバは、対応するバーチャルマスストレージデバイスへの前記更なるバーチャルマシーンによる対応するマスストレージデバイスアクセスを傍受し、前記対応するマスストレージデバイスアクセスを前記第２のサーバコンピュータのローカルマスストレージデバイスにリダイレクトし、前記バーチャルマスストレージデバイスの第１のコピーが前記更なるバーチャルマシーンのデータのローカルストレージのために記憶され、
前記第２のサーバコンピュータ又はそこに設置されたローカルマスストレージデバイスの故障に関するフェイルセーフ機能を確保し、前記第１のサーバコンピュータ上への少なくとも１つのバーチャルマシーンのシフトを可能にするため、前記バーチャルマスストレージデバイスのコンテンツが、前記第１のサーバコンピュータのローカルマスストレージデバイス上に前記バーチャルマスストレージデバイスの第２のコピーとして前記第２のサーバコンピュータによって複製され、
前記第１のコピー及び前記第２のコピーは、前記サーバコンピュータのそれぞれにおいて定期的に実行されるバックグラウンドタスクにより同期化され、前記第１のコピーのデータの変更されたブロックを含むデータ伝送は、前記第２のサーバコンピュータにより提供されるｉＳＣＳＩイニシエータと、前記メモリサーバソフトウェアを実行する前記第１のサーバコンピュータにより提供されるｉＳＣＳＩターゲットとにより実行されるクラスタシステム。
【請求項２】
特定の期間又は特定のボリュームによる前記第１のコピーにおけるデータの全ての変更されたブロックが、アップデートメッセージに合成及び収集され、前記ｉＳＣＳＩイニシエータを介し前記第１のサーバコンピュータの前記ｉＳＣＳＩターゲットにブロック毎に転送される、請求項１記載のクラスタシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のバーチャルマシーンを実行するための複数のサーバコンピュータとデータネットワークとを有するクラスタシステムに関する。さらに、本発明は、複数のサーバコンピュータ上で複数のバーチャルマシーンを実行する方法に関する。
【背景技術】
【０００２】
電子データ処理のエリアでは、特にハイパーバイザなどのバーチャル化ソフトウェアの制御の下で、コンピュータの少なくとも部分的な共通のリソース、特にプロセッサ、メイン及びますストレージデバイス上での複数のおそらく異なるオペレーティングシステムのパラレルな実行は、バーチャル化として理解される。異なるタイプのバーチャル化が従来技術から知られる。
【０００３】
いわゆるバーチャルなデスクトップインフラストラクチャ（ＶＤＩ）では、ユーザの既存のクライアントインストレーションはバーチャルマシーンに移転されるか、あるいは、新たなバーチャルマシーンがユーザについてセットアップされる。関連するユーザに固有のソフトウェアによるオペレーティングシステムなどのクライアントインストレーションによるバーチャルマシーンは、データネットワークにおけるサーバコンピュータにより実行される。ユーザ自身は、データネットワークを介しバーチャルマシーンにアクセスするため、特にシンプルなクライアントコンピュータ、特にいわゆるシン又はゼロクライアントを利用する。あるいは、ソフトウェアがインストールされた端末による従来のファットクライアントがまた、バーチャルマシーンにアクセスするのに利用可能である。ユーザにより開始される全てのプログラムは、クライアントコンピュータ上でなく、サーバコンピュータによりバーチャルマシーン内で実行される。従って、バーチャルマシーンは、ユーザプログラムを実行するため、プロセッサやメモリリソースなどのサーバコンピュータのリソースにアクセスする。
【０００４】
他のタイプのバーチャル化、特にいわゆるサーババーチャル化がまた基本的に知られている。サーババーチャル化のケースでは、サーバコンピュータにより提供されるサービスは、バーチャルマシーンにカプセル化される。このようにして、例えば、それぞれが共通の物理的なサーバコンピュータ上で異なる実行環境を要求するウェブサーバとメールサーバとを実行することなどが可能である。
【０００５】
利用可能なサーバコンピュータ上で均一なワークロードを実現するため、サーバコンピュータへのバーチャルマシーンの割り当ては、一般にいわゆるコネクションブローカ又は同様のマネージメントツールにより制御される。コネクションブローカは、特に新たに開始されるバーチャルマシーンがそれらを実行するのに十分なリソースを依然として有するサーバコンピュータ上で開始されることを保証する。これにより、既知のバーチャル化システムは、何れかのサーバコンピュータ上でのバーチャルマシーンの実行を許可するため、クラスタシステムの全てのサーバコンピュータによりアクセス可能な別のメモリサーバを前提とする。
【０００６】
バーチャル化システムの１つの可能なアーキテクチャは、図１の具体例により示される。図１に示される例では、３つのバーチャルマシーン１１ａ，１１ｂ，１１ｃが、共通のサーバコンピュータ１２上で実行される。図１に示されるサーバコンピュータ１２に加えて、バーチャルマシーン１１ａ〜１１ｃを実行するのに適した更なるサーバコンピュータが設けられる。
【０００７】
各バーチャルマシーン１１ａ〜１１ｃには、専用のバーチャルマスストレージデバイス１３ａ〜１３ｃが割り当てられる。サーバコンピュータ１２のハイパーバイザ又は他のバーチャル化ソフトウェアは、バーチャルマシーン１１のため、対応する物理的なマスストレージデバイスの存在をエミュレートする。バーチャルマシーン１１ａ上で実行される実行中のシステムについて、バーチャルマスストレージデバイス１３ａは、例えば、ローカルＳＣＳＩハードディスクなどとして現れる。バーチャルマスストレージデバイス１３ａにアクセスすると、バーチャル化ソフトウェアは、いわゆるｉＳＣＳＩイニシエータ１４を呼び出す。ｉＳＣＳＩイニシエータ１４は、マスストレージデバイス１３ａへのアクセスが所望され、別のメモリサーバ１６にデータネットワーク１５を介し対応するＳＣＳＩ  ｉｎｑｕｉｒｙをわたすことを認識する。制御ソフトウェアがメモリサーバ１６上で実行され、当該制御ソフトウェアは、ｉＳＣＳＩイニシエータ１６の照会のためいわゆるｉＳＣＳＩターゲットを提供する。ｉＳＣＳＩターゲット１７は、受信したｉｎｑｕｉｒｙをメモリサーバ１６のハードディスクドライブ１８にわたす。このようにして、サーバコンピュータ１２の全てのマシーン１１ａ〜１１ｃからのｉｎｑｕｉｒｙが、メモリサーバ１６により中央的に回答される。
【０００８】
図１に示されるアーキテクチャによる１つの問題点は、全てのバーチャルマシーン１１ａ〜１１ｃの全てのメモリアクセスが常にデータネットワーク１５を介して実行され、メモリサーバ１６の１つ又は少数のハードディスクドライブ１８により回答される。従って、バーチャルマシーン１１ａ〜１１ｃは、データネットワーク１５における帯域幅を競う。更に、競合するｉｎｑｕｉｒｙは、交互にメモリサーバ１６によってしか回答できない。
【０００９】
図１に示されるクラスタシステム１０が更なるバーチャルマシーン１１を実行するため、更なるサーバコンピュータ１２を加えることによって拡張される場合、メモリサーバ１６のハードディスクドライブ１８上のメモリ容量の需要が増大するだけでなく、バーチャルマスストレージデバイス１３へのアクセスに関する遅延時間もまた増加する。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の課題は、バーチャルマシーンのバーチャルマスストレージデバイスへのアクセスのための遅延時間が短縮されるクラスタシステム及びクラスタシステムのための動作方法を説明することである。好ましくは、説明される手段は、既知のシステムのパフォーマンスの付随するロスなくクラスタシステムのフレキシブルな拡張にとって適するべきである。
【課題を解決するための手段】
【００１１】
本発明の第１の態様によると、クラスタシステムが開示される。クラスタシステムは、各サーバコンピュータが少なくとも１つのプロセッサと、少なくとも１つのローカルマスストレージデバイスと、少なくとも１つのネットワークコンポーネントとを有する複数のサーバコンピュータと、複数のサーバコンピュータのネットワークコンポーネントがデータ技術に関して接続されるデータネットワークとを有する。当該クラスタシステムは、複数のバーチャルマシーンを実行するよう構成され、バーチャルマシーンのそれぞれには、少なくとも１つのバーチャルマスストレージデバイスが割り当てられる。各バーチャルマシーンについて、割り当てられたバーチャルマスストレージデバイスのデータの第１コピーが第１サーバコンピュータの少なくとも１つのローカルマスストレージデバイスに格納され、割り当てられたバーチャルマスストレージデバイスのデータの第２コピーが複数のサーバコンピュータの第２サーバコンピュータの少なくとも１つのローカルマスストレージデバイスに格納される。第１サーバコンピュータの少なくとも１つのプロセッサによる複数のバーチャルマシーンのアクティブなバーチャルマシーンの実行中、割り当てられた少なくとも１つのバーチャルマスストレージデバイスへのアクティブなバーチャルマシーンのマスストレージデバイスアクセスは、第１サーバコンピュータのローカルマスストレージデバイスにリダイレクトされる。第２サーバコンピュータの少なくとも１つのプロセッサによるアクティブなバーチャルマシーンの実行中、割り当てられた少なくとも１つのバーチャルマスストレージデバイスへのアクティブなバーチャルマシーンのマスストレージデバイスアクセスは、第２サーバコンピュータのローカルマスストレージデバイスにリダイレクトされる。アクティブなバーチャルマシーンのバーチャルマスストレージデバイスのデータの第１コピー又は第２コピーの変更は、それぞれ第２コピーと第１コピーとデータネットワークを介し同期化される。
【００１２】
開示されるクラスタシステムでは、バーチャルマスストレージデバイスのコピーは、少なくとも２つのサーバコンピュータに格納される。サーバコンピュータのローカルマスストレージデバイスは、バーチャルマシーンのバーチャルマスストレージデバイスとして利用される。ローカルマスストレージデバイスによって、データネットワークを介したアクセスが不要な転送が回避され、データアクセスの遅延時間を短縮し、アクセス回数を複数のサーバコンピュータのローカルマスストレージデバイスに分割する。データの不整合を回避し、あるサーバコンピュータから他のサーバコンピュータへのバーチャルマシーンのシフトを許可するため、ローカルに実行される変更が、あるサーバコンピュータから他のサーバコンピュータに同期される。
【００１３】
本発明は、ホストオペレーティングシステム又はハイパーバイザを開始するため、サーバコンピュータにおけるローカルマスストレージデバイス、特にハードディスクが一般に提供されるという知識を利用する。しかしながら、そのパフォーマンスは、サーバのオペレーティングシステム又はハイパーバイザが相対的に小さなメモリボリュームを占有し、ローカルマスストレージデバイスへの少数のみのアクセスしか求めないため、一般に十分に利用されていない。
【００１４】
この結果、開示されたクラスタシステムによって、バーチャルマシーンのバーチャルマスストレージデバイスへのアクセス中の遅延時間の短縮が実現され、同時に、クラスタシステムのスケーラビリティの向上が全体として得られる。特に、利用可能なマスストレージデバイスのパフォーマンスとキャパシティとの双方が、別個の特にハイパフォーマンスなメモリサーバがこのために必要とされることなく、更なるサーバコンピュータを追加することによって増大する。
【００１５】
同期の効果的な実現のため、好適な実施例では、複数のサーバコンピュータのそれぞれは、同期モジュールを有する。第１サーバコンピュータの同期モジュールは、特定の期間又は特定のデータ範囲についてアクティブなバーチャルマシーンのバーチャルマスストレージデバイスのデータの第１コピーの変更を合成し、それらを一緒に第２サーバコンピュータに転送するよう構成される。
【００１６】
更なる効果的な実施例によると、サーバコンピュータの少なくとも１つによって、特に少なくとも１つのサーバコンピュータ上で実行されるバーチャルマシーンによって、メモリサーバソフトウェアが実行可能である。メモリサーバソフトウェアは、データネットワークを介し複数のバーチャルマシーンのバーチャルマスストレージデバイスのコンテンツを提供するよう構成される。クラスタシステムのサーバコンピュータによるメモリサーバソフトウェアの実行は、バーチャルマスストレージデバイスの同期を簡単化し、既存のバーチャル化システムとの互換性を向上させ、同時にバーチャルマシーンがクラスタシステムの何れかのサーバコンピュータ上で良好に開始できることを保証する。メモリサーバのバーチャル化によって、別個に構成又は備えられたデータサーバ又はサーバコンピュータの追加的な提供なしに済ますことが可能である。
【００１７】
更なる効果的な実施例によると、複数のサーバコンピュータのそれぞれは、フィルタドライバを有し、フィルタドライバは、サーバコンピュータの少なくとも１つのプロセッサによりローカルに実行されるバーチャルマシーンによるマスストレージデバイスアクセスを傍受し、それらをローカルマスストレージデバイス上の少なくとも１つのバーチャルマスストレージデバイスのデータの第１コピーにリダイレクトするよう構成される。
【００１８】
本発明の第２の態様によると、複数のサーバコンピュータ上で複数のバーチャルマシーンを実行する方法が開示される。本方法は、
第１ローカルマスストレージデバイスを有する第１サーバコンピュータ上で第１バーチャルマシーンを開始するステップと、
第２ローカルマスストレージデバイスを有する第２サーバコンピュータ上で第２バーチャルマシーンを開始するステップと、
前記第１バーチャルマシーンから第１ライトリクエストを受信するステップと、
前記第１ローカルマスストレージデバイス上の第１データを変更するため前記第１ライトリクエストを実行するステップと、
前記第２バーチャルマシーンから第２ライトリクエストを受信するステップと、
前記第２ローカルマスストレージデバイス上の第２データを変更するため前記第２ライトリクエストを実行するステップと、
データネットワークを介し前記第１サーバコンピュータと前記第２サーバコンピュータとの間で前記変更された第１データを同期させるステップと、
前記データネットワークを介し前記第２サーバコンピュータと前記第１サーバコンピュータとの間で前記変更された第２データを同期させるステップと、
を有する。
【００１９】
開示された方法のステップによって、第２サーバコンピュータの他のローカルマスストレージデバイス上で冗長性が得られると同時に、バーチャルマシーンのデータのローカルストレージが実現される。
【００２０】
当該方法の異なる実施例によると、第１データ又は第２データの同期化は、パケット毎に合成され、及び／又はトランザクション指向的に実行される。
【００２１】
更なる効果的な実施例によると、本方法は更に、
前記第１サーバコンピュータ上の前記第１バーチャルマシーンを停止するステップと、
前記変更された第１データを同期させるステップが完了するまで待機するステップと、
前記第２サーバコンピュータ上の前記第１バーチャルマシーンを以降に開始するステップと、
を有する。
【００２２】
これらのステップによって、バーチャルマシーンは、バーチャルマスストレージデバイスのデータに生じる不整合なく、クラスタシステムのあるサーバコンピュータから他のサーバコンピュータに転送可能である。
【００２３】
本発明の更なる効果的な実施例は、添付した請求項及び以下の例示的な実施例の説明に開示される。
【００２４】
本発明は、例示的な実施例と添付した図面とを参照してより詳細に後述される。
【図面の簡単な説明】
【００２５】
【図１】図１は、別個のメモリサーバを有するクラスタシステムのアーキテクチャを示す。
【図２】図２は、本発明の一実施例によるクラスタシステムのアーキテクチャを示す。
【図３】図３は、本発明の一実施例による３つのサーバコンピュータを有するクラスタシステムを示す。
【図４】図４は、２つのバーチャルマシーンのパラレルな実行のための方法のフロー図を示す。
【図５】図５は、バーチャルマシーンをシフトするための方法のフロー図を示す。
【図６Ａ】図６Ａは、バーチャルマスストレージデバイスを同期させるための方法のフロー図を示す。
【図６Ｂ】図６Ｂは、バーチャルマスストレージデバイスを同期させるための方法のフロー図を示す。
【発明を実施するための形態】
【００２６】
以下の詳細な説明では、異なる例示的な実施例の同様の又は類似するコンポーネントのため、参照番号が一貫して利用される。さらに、同様のコンポーネントの異なるインスタンスは、添え字を添付することによって区別される。説明がコンポーネントの特定のインスタンスに関するものでない場合、各参照番号は添え字の添付なしに利用される。
【００２７】
図２は、詳細には示されない第１サーバコンピュータ１２ａ、第２サーバコンピュータ１２ｂ及び更なるサーバコンピュータ１２を有するクラスタシステム２０を示す。サーバコンピュータ１２は、共通のデータネットワーク１５を介し相互接続される。クラスタシステム２０の構成は、図１のクラスタシステム１０の構成に類似している。そこからの出発として、図２のアーキテクチャには別個のメモリサーバが利用されない。その代わり、図示された例示的な実施例のサーバコンピュータ１２ａ上の互換性のため、メモリサーバソフトウェアが、第１サーバコンピュータ１２ａ上のバーチャルマシーン１１ａにおいて実行される。バーチャルマシーン１１ａに加えて、更なるバーチャルマシーン１１ｂ〜１１ｃがまた、第１サーバコンピュータ１２ａにより提供可能である。
【００２８】
更なるバーチャルマシーン１１ｄ〜１１ｆは、例示的な実施例においてサーバコンピュータ１２ｂにより実行される。バーチャルマシーン１１ｄ〜１１ｆの１つがそれに割り当てられたバーチャルマスストレージデバイスにアクセスする場合、フィルタドライバ２１が、対応するマスストレージデバイスのアクセスを傍受する。フィルタドライバ２１は、図１を参照して説明されたように、メモリ照会をｉＳＣＳＩイニシエータ１４に転送せず、サーバコンピュータ１２ｂのローカルマスストレージデバイス２２ｂ、特に搭載されているハードディスクドライブに当該照会をリダイレクトする。各バーチャルマスストレージデバイス１３ｄ〜１３ｆの第１コピー２４ｄ〜２４ｆは、これによりローカルマスストレージデバイス２２ｂに格納される。例示的な実施例では、コピー２４ｄ〜２４ｆは、バーチャル化レイヤ２３により利用されるいわゆるハードディスクコンテナのコピーである。
【００２９】
バーチャルマシーン１１ｄ〜１１ｆがサーバコンピュータ１２ｂからその他のサーバコンピュータ１２の１つにシフトされない限り、サーバコンピュータ１２ｂのローカルマスストレージデバイス２２ｂのローカルな第１コピー２４ｄ〜２４ｆに対する全てのアクセスは、フィルタドライバ２１を介して行われる。従って、データネットワーク１５へのアクセスをなくすことが主として可能であり、これは、特にバーチャルマシーン１１ｄ〜１１ｆのマスストレージデバイスのアクセスにおける遅延時間を短縮する。
【００３０】
サーバコンピュータ１２ｂ又はそれにインストールされているコンポーネント、例えば、特にローカルマスストレージデバイス２２ｂの失敗に関するフェイルセーフ機能を確保するため、ローカルマスストレージデバイス２２ｂのコピー２４ｄ〜２４ｆに格納されるバーチャルマスストレージデバイス１３ｄ〜１３ｆのコンテンツは、少なくとも１つのリモートマスストレージデバイス、例示的な実施例では、第１サーバコンピュータ１２ａのローカルマスストレージデバイス２２ａ上の第２コピー２５ｄ〜２５ｆとして再生される。これは、サーバコンピュータ１２ａ上への全ての又は個々のバーチャルマシーン１１ｄ〜１１ｆのシフトを同時に許可する。
【００３１】
例示的な実施例では、コピー２４及び２５は、サーバコンピュータ１２のそれぞれにおいて定期的に実行されるバックグラウンドタスクにより同期化される。当該同期を簡単化し、既存のクラスタソフトウェアとの互換性を取得するため、第２サーバコンピュータ１２ｂのケースではｉＳＣＳＩイニシエータ１４によって、またメモリサーバソフトウェアを実行する第１サーバコンピュータ１２ａのケースではｉＳＣＳＩターゲット１７によって、図１を参照して説明されたようにデータ転送が行われる。図１を参照して説明されるように、第１サーバコンピュータ１２ａ上で実行されるメモリサーバソフトウェアは、バーチャルマスストレージデバイス１３ｄ〜１３ｆをデータネットワーク１５を介し利用可能にする。これらは、他のサーバコンピュータ１２、特に第２サーバコンピュータ１２ｂによりネットワークドライブとして搭載される。その後、第２サーバコンピュータ１２ｂ上で実行されるバックグラウンドタスクは、データネットワーク１５を介し提供されるバーチャルマスストレージデバイス１３ｄ〜１３ｆの第２コピー２５ｄ〜２５ｆと第１コピー２４ｄ〜２４ｆとをマージする。
【００３２】
好ましくは、第１コピー２４の全ての変更は、１５秒若しくは１分などの特定の期間において、又は１メガバイトの全サイズによる変更されたブロック若しくはセクタなどの特定の範囲などの特定の範囲においてアップデートメッセージに合成及び収集されるか、あるいは、ｉＳＣＳＩイニシエータ１４を介し第１サーバコンピュータ１２ａのｉＳＣＳＩターゲット１７にｉＳＣＳＩイニシエータ１４を介しブロック毎に転送される。あるいは、第１若しくは第２コンピュータシステム１２ａ若しくは１２ｂ、データネットワーク１５及び／又はマスストレージデバイス２２ａ若しくは２２ｂが特に低い占有を有していることが検出されると、同期化がまた行うことができる。その後、第１サーバコンピュータ１２ａのｉＳＣＳＩターゲット１７は、ローカルマスストレージデバイス２２ａ上のバーチャルマスストレージデバイス１３の第２コピー２５を更新する。
【００３３】
簡単化のため、これは図２に示されていないが、バーチャルマシーン１１ａ〜１１ｃにはまた、バーチャルマスストレージデバイス１３ａ〜１３ｃが割り当てられ、そのコンテンツは、第１サーバコンピュータ１２ａのローカルマスストレージデバイス２２ａ上に第１コピー２４として、また他のサーバコンピュータ１２の少なくとも１つのローカルマスストレージデバイス２２上の第２コピー２５として格納され、同様にして同期付けされる。
【００３４】
図３は、バーチャルデスクトップインフラストラクチャのために利用される更なる例示的なクラスタシステム３０を示す。図示された例示的な実施例では、クラスタシステム３０は３つのサーバコンピュータ１２ａ〜１２ｃを有し、これらを介して、合計で６つのバーチャルデスクトップ３１ａ〜３１ｆが提供される。各バーチャルデスクトップ３１は、これに割り当てられ、少なくとも１つのバーチャルマスストレージデバイス１３に割り当てられたバーチャルマシーン１１を介し実現される。簡単化のため、バーチャルマシーン１１及びバーチャルマスストレージデバイス１３は、図３に示されない。
【００３５】
例示的な実施例では、各サーバコンピュータ１２は、例えば、特に内部のハードドライブ、フィルタドライバ２１及び同期モジュール３２などの１以上のローカルマスストレージデバイス２２を有する。さらに、各サーバコンピュータ１２上に、従来のメモリサーバ１６の機能を提供するためのメモリサーバソフトウェア３３がインストールされる。しかしながら、何れか１つの時点では、メモリサーバソフトウェア３３は、第１サーバコンピュータ１２ａなどの３つのサーバコンピュータ１２ａ〜１２ｃの１つのみによって実行される。第１サーバコンピュータ１２ａが故障すると、管理サービス３４が、他のサーバコンピュータ１２ｂ又は１２ｃの１つにおいてメモリサーバソフトウェア３３を起動し、これにより、当該サーバコンピュータ１２ｂ又は１２ｃは、サーバコンピュータ１２ａの機能を何れかの時点で引き継ぐことができる。
【００３６】
管理サービス３４はまた、バーチャルデスクトップ３１をサーバコンピュータ１２に分散化する。図示された例示的な実施例では、バーチャルデスクトップ３１ａ〜３１ｆは、３つのサーバコンピュータ１２ａ〜１２ｃに均一に分散化される。特に、バーチャルデスクトップ３１ａ及び３１ｂは第１サーバコンピュータ１２ａによりホストされ、バーチャルデスクトップ３１ｃ及び３１ｄは第２サーバコンピュータ１２ｂによりホストされ、バーチャルデスクトップ３１ｅ及び３１ｆは第３サーバコンピュータ１２ｃによりホストされる。
【００３７】
図３のクラスタシステムでは、ローカルマスストレージデバイス２２ａ〜２２ｃのストレージ容量は、各バーチャルデスクトップ３１ａ〜３１ｆのバーチャルマスストレージデバイス１３を保持するのに十分である。各サーバコンピュータ１２ａ〜１２ｃ上における各バーチャルデスクトップ３１ａ〜３１ｅの実行を許可するため、バーチャルデスクトップ３１ａ〜３１ｆのバーチャルマスストレージデバイス１３は、各マスストレージデバイス２２ａ〜２２ｃ上のコピーとして格納される。管理サービス３４及び同期モジュール３２によって、バーチャルマスストレージデバイス１３のコンテンツの各同期化が行われる。
【００３８】
図示された例示的な実施例では、第１サーバコンピュータ１２ａ上でアクティブなバーチャルデスクトップ３１ａ及び３１ｂにより引き起こされるバーチャルマスストレージデバイス１３のコンテンツの変更は、データネットワーク１５のブロードキャスト通信を介しサーバコンピュータ１２ｂ及び１２ｃに配信される。その後、サーバコンピュータ１２ｂ及び１２ｃは、関連するバーチャルマスストレージデバイス１３の各自の対応するコピーを更新する。図３において、これは、矢印によって第１バーチャルデスクトップ３１ａについて一例として示される。他方、バーチャルデスクトップ３１ｃ及び３１ｄのバーチャルマスストレージデバイス１３における変更は、第２サーバコンピュータ１２ｂからサーバコンピュータ１２ａ及び１２ｃにブロードキャストによって転送される。バーチャルデスクトップ３１ｅ及び３１ｆのバーチャルマスストレージデバイス１３における変更は、第３サーバコンピュータ１２ｃからサーバコンピュータ１２ａ及び１２ｂに転送される。
【００３９】
同期化により引き起こされ、またマスストレージデバイス１２のローカルユーザによって引き起こされるアクセス間において個々のローカルマスストレージデバイス１２の帯域幅を公平に分散させるため、同期化のために利用されるリクエストは、一実施例ではすぐには同期されず、同期モジュール３２又は管理サービス３４のリクエストに応じてブロック毎に転送される。
【００４０】
バーチャルマシーン１１と、あるサーバコンピュータ１２から他のサーバコンピュータ１２に提供されるバーチャルデスクトップ３１との具体的な同期処理及びシフト処理が、図４〜６のフロー図を利用して後述される。
【００４１】
図４は、クラスタシステム２０又は３０の１つなどのクラスタシステムの処理のための方法４０のフロー図を示す。図４の左半分は、クラスタシステムの第１サーバコンピュータ１２ａにより実行されるステップを示す。図４の右半分は、第２サーバコンピュータ１２ｂにより実行されるステップを示す。
【００４２】
２つの異なるサーバコンピュータ１２上の方法ステップのパラレルな実行のため、これらは、互いに関して時間同期的には実行されない。バーチャルマスストレージデバイス１３のコンテンツの変更の同期化の場合にのみ、以下でより詳細に説明されれ同期化が、第１サーバコンピュータ１２ａと第２サーバコンピュータ１２ｂとの間で行われる。
【００４３】
第１ステップ４１ａでは、第１バーチャルマシーン１１ａが開始される。例えば、Ｗｉｎｄｏｗｓ(登録商標)オペレーティングシステムは、バーチャルデスクトップインフラストラクチャを介しバーチャルマシーン１１ａにアクセスするユーザについて開始される。ステップ４２ａにおいて、サーバコンピュータ１２ａ上で実行されるハイパーバイザなどのサーバコンピュータ１２ａのマネージメントソフトウェアが、第１バーチャルマシーン１１ａのライト照会を受信する。例えば、ユーザは、自らのバーチャルマシーン１１ａのバーチャルマスストレージデバイス１３ａに変更されたテキストドキュメントを格納することを所望するかもしれない。当該リクエストはまず、ステップ４３ａにおいてローカルに変換される。このため、ライトコマンドは、サーバコンピュータ１２ａのフィルタドライバ２１により傍受され、ローカルマスストレージデバイス２２ａのためのローカルなライトコマンドに変換される。
【００４４】
これとパラレルに、方法ステップ４１ｂ〜４３ｂにおいて、第２バーチャルマシーン１１ｂの対応する処理が第２サーバコンピュータ１２ｂ上で実行される。バーチャルマスストレージデバイス１３ｂ上の第２バーチャルマシーン１１ｂの変更はまず、第２サーバコンピュータ１２ｂのローカルマスストレージデバイス２２ｂに再実行される。
【００４５】
ステップ４４ａでは、例えば、所定の時間の経過後又は所定の変更回数の発生後、第１サーバコンピュータ１２ａは、バーチャルマシーン１１ａによりこれまで実行された変更を合成し、対応する第１アップデートメッセージを第２サーバコンピュータ１２ｂに転送する。第２サーバコンピュータ１２ｂは、ステップ４５ｂにおいて第１アップデートメッセージを受信し、対応して第１バーチャルマシーン１１ａのバーチャルマスストレージデバイス１３ａのそれのコピーを更新する。他方、ステップ４４ｂにおいて、第２サーバコンピュータ１２ｂは第２バーチャルマシーン１１ｂのこれまで発生した変更を、ローカルマスストレージデバイス２２ｂ上のバーチャルマスストレージデバイス１３ｂのそれのコピー２４に転送し、これを第２アップデートメッセージの形式により第１サーバコンピュータ１２ａに転送する。ステップ４５ａにおいて、第１サーバコンピュータ１２ａは、対応して第２バーチャルマシーン１１ｂのバーチャルマスストレージデバイス１３ｂのそれのコピーを更新する。
【００４６】
図５は、第１サーバコンピュータ１２ａから第２サーバコンピュータ１２ｂにバーチャルマシーン１１をシフトするための方法５０を概略的に示す。図４と同様に、第１サーバコンピュータ１２ａの各ステップは図５の左側に示され、第２サーバコンピュータ１２ｂの方法ステップは図５の右側に示される。
【００４７】
第１ステップ５１において、第１コンピュータ１２ａ上のバーチャルマシーン１１の実行が停止される。例えば、更なるプロセッサ時間が、管理サービス３４又はバーチャルマシーン１１のハイパーバイザにより割り当てられていないなどである。
【００４８】
ステップ５２において、バーチャルマシーン１１に割り当てられるバーチャルマスストレージデバイス１３上でこれまで行われた変更は、その後アップデートメッセージに合成される。当該アップデートメッセージは、第１サーバコンピュータ１２ａから第２サーバコンピュータ１２ｂに転送される。ステップ５３において、これは、アップデートメッセージの変更に対応してバーチャルマシーン１１のバーチャルマスストレージデバイス１３のそれのローカルコピー２５を更新する。
【００４９】
その後、ステップ５４において、第２サーバコンピュータ１２ｂ上のバーチャルマシーン１１の実行が継続可能である。一実施例では、バーチャルマシーン１１のワーキングメモリの現在状態は、その後、アップデートメッセージ及び／又はバーチャルマスストレージデバイス１３に含まれ、これにより、ステップ５２及び５３においてサーバコンピュータ１２ａと１２ｂとの間で同期化される。あるいは、ワーキングメモリの現在状態は、管理サービス３４などの提供されたクラスタソフトウェアにより転送される。双方のケースにおいて、バーチャルマシーン１１は、同一のアプリケーション及び同一の開かれたドキュメントの実行などにより、ステップ５１において停止されたもの正確に同じ状態でステップ５４において開始される。バーチャルマシーン１１のユーザについて、第１サーバコンピュータ１２ａ又は第２サーバコンピュータ１２ｂ上のバーチャルマシーン１１の実行の間には認識可能な相違はない。
【００５０】
図示しない更なる実施例では、第１サーバコンピュータ１２ａのローカルマスストレージデバイス２２ａと第２サーバコンピュータ１２ｂのローカルマスストレージデバイス２２ｂとの間のバーチャルマスストレージデバイス１３の同期化は、バーチャルマシーン１１の実行とパラレルに実行される。例えば、バーチャルマスストレージデバイス１３の一部又は全コンテンツが、バーチャルマシーン１１の停止前に第２サーバコンピュータ１２ｂに転送可能である。また、第１サーバコンピュータ１２ａ上のバーチャルマシーン１１の停止に近い時間に第２サーバコンピュータ１２ｂ上でバーチャルマシーン１１を開始し、関連するバーチャルマスストレージデバイス１３のみの同期化を以降において、すなわち、第２サーバコンピュータ１２ｂによるバーチャルマシーン１１の実行中に実行することが可能である。
【００５１】
必要な場合、第２サーバコンピュータ１２ｂのローカルマスストレージデバイス２２ｂにまだ転送されていないコンテンツが、第１サーバコンピュータ１２ａのローカルマスストレージデバイス２２ａからデータネットワーク１５を介し遷移時間に読み込むことができる。
【００５２】
図６Ａ及び６Ｂは、２つの異なるサーバコンピュータ１２ａ及び１２ｂの間のバーチャルマスストレージデバイス１３のコピー２４及び２５をマージするための可能な同期方法６０の進捗を概略的に示す。
【００５３】
第１ステップ６１において、第１サーバコンピュータ１２ａのタイマ又は他のカウンタがリセットされる。以降のステップ６２において、１分間の時間間隔などの所定の時間間隔Ｔがすでに経過したか、又はバーチャルマスストレージデバイス１３の１０００個のブロック又はセクタの変更がすでに発生したかチェックされる。このケースでない場合、ステップ６３において、ローカルに実行されたバーチャルマシーンのリード又はライトリクエストが第２サーバコンピュータ１２ａにより検出されたかチェックされる。このケースでない場合、本方法はステップ６２に続く。
【００５４】
そうでない場合、ステップ６４において、バーチャルマシーン１１の検出されたリクエストのタイプがチェックされる。それがリードリクエストである場合、ステップ６５において、対応するリードリクエストがサーバコンピュータ１２ａのローカルマスストレージデバイス２２ａにわたされ、バーチャルマスストレージデバイス１３のローカルな第１コピー２４により回答される。リードリクエストはバーチャルマスストレージデバイス１３の異なるコピー２４及び２５の間で不整合を生じさせないため、本方法はステップ６２において更なる測定を実行することなく継続可能である。
【００５５】
しかしながら、ステップ６４において、ライトコマンドがあることが認識された場合、ステップ６６において、バーチャルマスストレージデバイス１３のローカルコピーの書き込まれるブロック又はセクタが、適したデータ構造において変更済みとしてマーク付けされる。例えば、フィルタドライバ２１は、ワーキングメモリの占有リストのローカルに上書きされた各ブロックのアドレスを同期モジュール３２のテーブル又は関連するファイルシステムの適したメタデータに格納する。ライトリクエストは、その後、ステップ６７において、サーバコンピュータ１２ａのローカルマスストレージデバイス２２ａ上で実行され、本方法は再びステップ６２において継続される。
【００５６】
所定の同期結果がステップ６２において最終的に生じた場合、ローカルマスストレージデバイス２２ａのバーチャルマスストレージデバイス１３の第１コピー２４が、第２サーバコンピュータ１２ｂのローカルマスストレージデバイス２２ｂの対応する第２コピー２５と同期化される。これに関して、特に図６Ｂのステップ６８〜７５が利用される。
【００５７】
ステップ６８において、第１サーバコンピュータ１２ａは、アップデートメッセージとバーチャルマスストレージデバイス１３の全ての変更されたコンテンツとを合成する。例えば、ステップ６６において変更済みとマーク付けされたバーチャルマスストレージデバイス１３の第１コピー２４の全てのブロック又はセクタのコンテンツが、アップデートメッセージにおいて適切なアドレス情報と合成される。
【００５８】
以降のステップ６９において、第１サーバコンピュータ１２ａからのアップデートメッセージは、データネットワーク１５を介し第２サーバコンピュータ１２ｂに転送され、必要に応じてバーチャルマシーン１１のバーチャルマスストレージデバイス１３のローカルコピーを保持する更なるサーバコンピュータ１２に転送される。ネットワークトラフィックを低減するため、当該転送は、好ましくは、ブロードキャスト機構を用いて実行される。その後、第１サーバコンピュータ１２ａは、任意的に、第２サーバコンピュータ１２ｂと、必要に応じて更なるサーバコンピュータ１２とが要求されたような同期化を実行し、確認したか確認するため、ステップ７０において待機する。
【００５９】
これとパラレルに、ステップ７１において、第２サーバコンピュータ１２ｂはまず、ステップ６９において送信されたアップデートメッセージを受信し、それをローカルマスストレージデバイス２２ｂに格納する。アップデートメッセージに含まれる情報を利用して、第２サーバコンピュータ１２ｂは、それがバーチャルマシーン１１のバーチャルマスストレージデバイス１３のローカルコピー２５を保持しているかチェックする。保持している場合、ステップ７２において、それは変更されたブロック又はセクタを引き継ぎ、以降においてバーチャルマシーン１１のバーチャルマスストレージデバイス１３の第２コピー２５が、第１サーバコンピュータ１２ａのローカルマスストレージデバイス２２ａ上の第１コピー２４に対応する第２サーバコンピュータ１２ｂのローカルマスストレージデバイス２２ｂに配置される。その後、電源の中断などのエラーが発生した場合、当該更新はローカルに格納されたデータを利用して以降において繰り返されるか、又は継続可能である。
【００６０】
ステップ７３において、任意的に、同期化中に問題が発生したかチェックされる。例えば、アップデートメッセージは、不完全に又は誤って受信される可能性がある。そうである場合、ステップ７４において、更新された転送又はアップデートメッセージが、第１サーバコンピュータ１２ａにより要求される。そうでない場合、ローカルマスストレージデバイス２２ｂの完了した同期化に関するコンファメーションメッセージが好ましくは生成される。このコンファメーションメッセージは、ステップ７５において第１サーバコンピュータ１２ａにより受信され、これにより、同期化処理が終了され、本方法はステップ６１において再び継続される。他方、所定の期間後、コンファメーションメッセージが第２サーバコンピュータ１２ｂから受信されない場合、第１サーバコンピュータ１２ａは、同期化の実行が成功せず、ステップ６９においてアップデートメッセージを再発行する。あるいは又はさらに、同期化の実現はまた、メモリサーバソフトウェアの中央サービスと連携可能である。
【００６１】
説明された実施例では、ステップ６８〜７５は第１サーバコンピュータ１２ａの同期モジュール３２又は管理サービス３４と連携される。更新中、第１コピー２４の状態は凍結される。例えば、フィルタドライバを利用して、第１コピー２４への更なるライトアクセスは、同期化が終了するまで中断されるか、又は中間的にローカルに格納される。
【００６２】
説明されたクラスタシステム及び動作方法は、優先的な要求に応じて本発明の異なる実施例を取得するため、多数の方法により組み合わせ及び互いに補完可能である。
【００６３】
例示的な一実施例では、各バーチャルマシーン１１の全てのバーチャルマスストレージデバイス１３が、クラスタシステムの各サーバコンピュータ１２の全てのローカルマスストレージデバイス２２上に保持され、互いに同期付けされ、これにより、各バーチャルマシーン１１は各サーバコンピュータ１２上で実行可能となり、同時に更なるデータ冗長性が生成される。他の実施例では、バーチャルマシーン１１のサブセットからのバーチャルマスストレージデバイス１３は、サーバコンピュータ１２のサブグループ上に保持され、これにより、対応するバーチャルマシーン１１は、サブグループの各サーバコンピュータ１２上で実行可能になる。本実施例は、ローカルマスストレージデバイス２２のサイズ要求と各バーチャルマシーン１１の実行のフレキシビリティとに関する妥協である。更なる実施例では、各ケースにおいて、２つの異なるサーバコンピュータ１２ａ及び１２ｂ上にバーチャルマスストレージデバイス１３のちょうど２つのコピーが存在し、これは、各バーチャルマシーン１１の冗長な処理が、何れか１つのサーバコンピュータ１２の故障した場合に保証されることを意味する。
【００６４】
説明されたアプローチは、更なる一連の効果を導く。例えば、メモリサーバソフトウェア３３が実行されるサーバコンピュータ１２は、もはや故障に対して特に保証される必要はない。それの機能が、クラスタシステムの各サーバコンピュータ１２により引き継ぎ可能であるためである。複数のマスストレージデバイスへのデータアクセスの同時の配信によって、特にハイパフォーマンスネットワークコンポーネント、ハードディスク及びＲＡＩＤシステムなどの特殊なハードウェアを利用しないことが可能である。
【符号の説明】
【００６５】
１０  クラスタシステム
１１  バーチャルマシーン
１２  サーバコンピュータ
１３  バーチャルマスストレージデバイス
１４  ｉＳＣＳＩイニシエータ
１５  データネットワーク
１６  メモリサーバ
１７  ｉＳＣＳＩターゲット
１８  ハードディスクドライブ
２０  クラスタシステム
２１  フィルタドライバ
２２  ローカルマスストレージデバイス
２３  バーチャル化レイヤ
２４  バーチャルマスストレージデバイスの第１コピー
２４  バーチャルマスストレージデバイスの第２コピー
３０  クラスタシステム
３１  バーチャルデスクトップ
３２  同期モジュール
３３  メモリサーバソフトウェア
３４  管理サービス
【図１】
0005995981.tif 000002
【図２】
0005995981.tif 000003
【図３】
0005995981.tif 000004
【図４】
0005995981.tif 000005
【図５】
0005995981.tif 000006
【図６Ａ】
0005995981.tif 000007
【図６Ｂ】
0005995981.tif 000008