(58)【調査した分野】(Int.Cl.,DB名)
プライマリ・サーバでパーティションを実行するステップであって、前記パーティションは、前記プライマリ・サーバの第一メモリ・ブロック・アドレスの第一メモリ・ロケーションにアクセスする、前記実行するステップと、
前記プライマリ・サーバの前記パーティションがミラーされた、実行されないパーティションを含むセカンダリ・サーバの第一対応メモリ・ロケーションが前記プライマリ・サーバの前記第一メモリ・ロケーションに対応していて、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションがエラーを有する場合、前記プライマリ・サーバの前記第一メモリ・ロケーションから前記プライマリ・サーバの第二メモリ・ロケーションにオブジェクトを移動させるステップと、
前記プライマリ・サーバが故障したことを検出するのに応じて、前記セカンダリ・サーバ上で前記ミラーされたパーティションの実行を開始するステップと、
前記セカンダリ・サーバが故障したことを検出するのに応じて、前記プライマリ・サーバの前記第一メモリ・ロケーションにオブジェクトを格納するのを可能にするステップと、
を含む方法。
前記セカンダリ・サーバの前記第一対応メモリ・ロケーションは、前記プライマリ・サーバの前記第一メモリ・ロケーションの前記第一メモリ・ブロック・アドレスが、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションの第一対応メモリ・ブロック・アドレスと一致するときに、前記プライマリ・サーバの前記第一メモリ・ロケーションに対応する、請求項1に記載の方法。
前記セカンダリ・サーバの前記第一対応メモリ・ロケーションは、前記プライマリ・サーバの前記第一メモリ・ロケーションの前記第一メモリ・ブロック・アドレスが、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションの第一対応メモリ・ブロック・アドレスと一致するときに、前記プライマリ・サーバの前記第一メモリ・ロケーションに対応する、請求項6に記載のコンピュータ可読ストレージ媒体。
複数のセカンダリ・サーバの間から、エラーを有するメモリ・ブロックの数が最少のセカンダリ・サーバを選択するステップをさらに前記コンピュータに実行させる、請求項6に記載のコンピュータ可読ストレージ媒体。
【発明を実施するための形態】
【0007】
添付の図面は、本発明の単なる例示的な実施形態を表しているだけであり、したがって、本発明の他の実施形態の範囲を限定するものではない。
【0008】
図面を参照すると(図面中の同様の番号は同様な部分を表している)、
図1は、本発明の一つの実施形態による、ネットワーク130に接続されたサーバ・コンピュータ・システム100のハイレベルのブロック図表現を示す。本発明の諸実施形態のメカニズムおよび装置は、任意の適切なコンピューティング・システムにも同様に適用される。サーバ・コンピュータ・システム100の主要コンポーネントには、一つ以上のプロセッサ101、メモリ102、ターミナル・インターフェース・ユニット111、ストレージ・インターフェース・ユニット112、I/O(入出力)デバイス・インターフェース・ユニット113、およびネットワーク・インターフェース・ユニット114が含まれ、これらの全ては、内部コンポーネント間の通信のため、メモリ・バス103、I/Oバス104、およびI/Oバス・インターフェース・ユニット105を介して、直接または間接的に通信可能に接続されている。
【0009】
サーバ・コンピュータ・システム100は、一つ以上の汎用プログラム可能中央処理ユニット(CPU)101A、101B、101C、および101Dを含み、本明細書ではこれらを総称してプロセッサ101と言う。一つの実施形態において、サーバ・コンピュータ・システム100は、比較的大きなシステムでは、通常、複数のプロセッサを備えるが、また一方、別の実施形態では、サーバ・コンピュータ・システム100は、上記に換えて単一CPUのシステムであってよい。各プロセッサ101は、メモリ102に格納された命令を実行し、一つ以上のレベルのオンボード・キャッシュを含むことが可能である。
【0010】
一つの実施形態において、メモリ102には、データおよびプログラムを格納またはエンコードするためのランダムアクセス半導体メモリ、ストレージ・デバイス、またはストレージ媒体(揮発性あるいは不揮発性)を含めることができる。別の実施形態において、メモリ102は、サーバ・コンピュータ・システム100の仮想メモリ全体を表し、また、サーバ・コンピュータ・システム100に直接、またはネットワーク130を介して接続された他のコンピュータ・システムの仮想メモリを含んでよい。メモリ102は、概念上は単一のモノリシック・エンティティであるが、他の実施形態において、メモリ102は、キャッシュおよび他のメモリ・デバイスの階層など、もっと複雑な機構である。例えば、メモリは複数レベルのキャッシュを含むことができ、これらのキャッシュは、機能別にさらに分割し、一つのキャッシュは命令を保持し、別のキャッシュは一つまたは複数のプロセッサにより使用される非命令のデータを保持するようにすることができる。さらに、メモリは、様々ないわゆる不均一メモリ・アクセス(NUMA)コンピュータ・アーキテクチャにおいて知られるように、分散させ、相異なるCPU群またはCPU群のセットに関連付けることが可能である。
【0011】
メモリ102は、複数のパーティション134、ハイパーバイザ136、およびメモリ・テーブル140を含んで示されている。パーティション134、ハイパーバイザ136、およびメモリ・テーブル140は、サーバ・コンピュータ・システム100中のメモリ102内に格納されて示されているが、別の実施形態では、これらの一部または全部を異なるコンピュータ・システムに置き、リモートから、例えばネットワーク130を介してアクセスすることもできる。さらに、サーバ・コンピュータ・システム100は、サーバ・コンピュータ・システム100のプログラムが、複数の小型ストレージ・エンティティへのアクセスの代わりに、あたかも大きな単一のストレージ・エンティティにだけアクセスできるように動作することを可能にする仮想アドレッシング・メカニズムを用いることが可能である。従って、パーティション134、ハイパーバイザ136、およびメモリ・テーブル140は、メモリ102中に所在するものとして示されているが、これらの構成要素は、必ずしも、すべてが揃って同じストレージ・デバイスに同時に含まれている必要はない。
【0012】
パーティション134の各々は、アプリケーション(APP)144、オペレーティング・システム(OS)146、およびパーティション・データ148を含む。任意の数のパーティション134をサポートでき、パーティション134がコンピュータ100に追加されたりこれから削除されたりするのに応じて、何時においてもコンピュータ100中に所在するパーティション134の数を動的に変更することが可能である。パーティション134の各々は、別個のまたは独立したメモリ空間においてプロセッサ101上で実行される命令を含む。様々な実施形態において、アプリケーション144は、ユーザ・アプリケーション、第三者アプリケーション、またはこれらの任意の部分、複合体もしくは組み合わせとして実装される。アプリケーション144およびオペレーティング・システム146は、プロセッサ101上で実行される命令、またはプロセッサ101上で実行される命令によって解釈されるステートメントを含む。アプリケーション144の各々は、相互に同じであっても異なっていてもよく、オペレーティング・システム146の各々も、相互に同じであっても異なっていてもよく、そして、データ148の各々も、相互に同じであっても異なっていてもよい。
【0013】
ハイパーバイザ136は、メモリ102内に格納されているものとして示されているが、他の実施形態では、ハイパーバイザ136の全部または一部をファームウェアまたはハードウェアに実装することが可能である。ハイパーバイザ136は、ページ・テーブル管理などの低レベルの管理機能と、また、パーティション134の生成および削除、同時I/Oメンテナンス、並びに、様々なパーティション134へのプロセッサ、メモリ、および他のハードウェアまたはプログラム・リソースの割り当て/割り当て解除などの高レベルな管理機能との双方を実施することができる。ハイパーバイザ136は、パーティション134への共用リソースの割り当て、ロッキング、およびロッキング解除、並びにパーティション134による共用リソースへのアクセスを制御し、サーバ・コンピュータ・システム100内のパーティション134のセキュリティおよび分離性を確実にする。ハイパーバイザは、プロセッサ101上のパーティション134の実行を開始、停止、および一時中止(サスペンド)する。
【0014】
ハイパーバイザ136は、コンピュータ100中の利用可能なリソースの一部を、静的または動的に、各パーティション134に割り当てる。例えば、各パーティション134に、一つ以上のプロセッサ101、その上で実行される一つ以上のハードウェア・スレッド、およびアクセスのために利用可能なメモリ空間の一部を割り当てることができる。パーティション134は、特定のプログラムおよびプロセッサ101などのハードウェア・リソースを共用することができ、そのため所与のリソースを複数のパーティション134で利用することができる。上記に換えて、プログラムおよびハードウェア・リソースを、一回に一つだけのパーティション134に割り当てることも可能である。さらなるリソース、例えば大容量ストレージ、バックアップ・ストレージ、ユーザ・インプット、ネットワーク接続、およびそれらのI/Oアダプタなどが、通常、一つ以上のパーティション134に割り当てられる。リソースは、複数のパーティション134が同じバス上のリソースを共用している状態において、例えば、バス単位の割り当てまたはリソース単位の割り当てなど、多くの方法で割り当てることが可能である。いくつかのリソースを、同時に複数のパーティション134に割り当てることができる。本明細書で挙げるリソースは単なる例であって、割り当て可能な任意の適切なリソースを用いることができる。
【0015】
一つの実施形態において、パーティション134もしくはハイパーバイザ136またはその両方は、以下で
図2、3、4、5、6、および7を参照してさらに説明するように、諸機能を実施するため、プロセッサ101上で実行される命令、またはプロセッサ101上で実行される命令によって解釈されるステートメントを含む。別の実施形態において、パーティション134もしくはハイパーバイザ136またはその両方は、マイクロコードまたはファームウェアで実装することができる。別の実施形態において、ハイパーバイザ136は、論理ゲート、半導体デバイス、チップ、回路、回路カード、もしくは他の物理ハードウェア・デバイスまたはこれらの組み合わせを用いてハードウェアで実装することが可能である。
【0016】
メモリ・バス103は、プロセッサ101、メモリ102、およびI/Oバス・インターフェース・ユニット105の間でデータを転送するためのデータ通信経路または通信ファブリックを提供する。I/Oバス・インターフェース・ユニット105は、様々なI/Oユニットとの間でデータを転送するためのI/Oバス104にさらに接続される。I/Oバス・インターフェース・ユニット105は、I/Oバス104を介して、I/Oプロセッサ(IOP)またはI/Oアダプタ(IOA)とも呼ばれる、複数のI/Oインターフェース・ユニット111、112、113、および114と通信する。
【0017】
I/Oインターフェース・ユニットは、様々なストレージおよびI/Oデバイスとの通信をサポートする。例えば、ターミナル・インターフェース・ユニット111は、一つ以上のユーザI/Oデバイスの接続をサポートし、これらデバイスは、(ビデオ・ディスプレイ・デバイス、プロジェクタ、スピーカ、テレビジョン・セットなどの)ユーザ出力デバイスおよび(カメラ、キーボード、マウス、キーパッド、タッチパッド、トラックボール、ボタン、無線識別タグ、ライトペン、指、スタイラスペン、他のポインティング・デバイスなどの)ユーザ入力デバイスを含み得る。ユーザは、ユーザI/Oデバイス121およびサーバ・コンピュータ・システム100に入力データおよびコマンドを供給するために、ユーザ・インターフェースを使ってユーザ入力デバイスを操作することができ、ユーザ出力デバイスを介して出力データを受け取ることができる。例えば、ユーザ・インターフェースは、ディスプレイ・デバイス上に表示するなど、ユーザI/Oデバイス121を介して提供することが可能である。ユーザI/Oデバイス121は、任意のサイズとすることができ、複数のユーザが同時にまたは協働してディスプレイ・デバイスを見たりこれにタッチしたりするように調整することが可能で、一つの実施形態では、任意のユーザがディスプレイ・デバイスの任意の場所にタッチすることができる。
【0018】
ストレージ・インターフェース・ユニット112は、一つ以上のディスク・ドライブまたは直接アクセス・ストレージ・デバイス125(これらは、一般に回転磁気ディスク・ドライブ・ストレージ・デバイスであるが、これに換えて、ホスト・コンピュータには単一の大容量ストレージ・デバイスのように見えるよう構成されたディスク・ドライブのアレイを含め、他のストレージ・デバイスにすることもできよう)の接続をサポートする。別の実施形態において、ストレージ・デバイス125は、任意の種類のセカンダリ・ストレージ・デバイスを用いて実装することが可能である。メモリ102の内容、またはその任意の部分を、必要に応じストレージ・デバイス125に格納し、これから読み出すことができる。I/Oデバイス・インターフェース・ユニット113は、プリンタまたはファックス・マシンなど、様々な他の入出力デバイスまたは他の種類のデバイスのいずれに対してもインターフェースを提供する。ネットワーク・インターフェース・ユニット114は、サーバ・コンピュータ・システム100から他のデジタル・デバイスおよびコンピュータ・システムへの一つ以上の通信経路を提供し、かかる経路は、例えば、一つ以上のネットワーク130を含み得る。
【0019】
図1中に示されたメモリ・バス103は、プロセッサ101、メモリ102、およびI/Oバス・インターフェース・ユニット105の間に直接の通信経路を提供する、比較的簡単な単一のバス構造体として示されているが、実際は、メモリ・バス103は、複数の相異なるバスまたは通信経路を含み得、これらは、階層的、星状、またはウェブ構成中のポイントツーポイント・リンク、複数階層バス、並列および冗長経路、または任意の他の適切な種類の構成など、任意の様々な形に配置することができる。さらに、I/Oバス・インターフェース・ユニット105およびI/Oバス104は、単一の個別ユニットとして示されているが、実際は、サーバ・コンピュータ・システム100は、複数のI/Oバス・インターフェース・ユニット105および複数のI/Oバス104を含み得る。複数のI/Oインターフェース・ユニットが示されており、これらが、様々なI/Oデバイスに及ぶ様々な通信経路からのI/Oバス104を分離しているが、他の実施形態では、I/Oデバイスの一部または全部が、一つ以上のシステムI/Oバスに直接接続される。
【0020】
様々な実施形態において、サーバ・コンピュータ・システム100は、マルチユーザ・メインフレーム・コンピュータ・システムであるか、シングルユーザ・システムであるか、または、直接のユーザ・インターフェースをほとんどもしくは全く持たないが、他のコンピュータ・システム(クライアント)からの要求を受信するサーバ・コンピュータもしくは類似のデバイスである。他の実施形態において、サーバ・コンピュータ・システム100は、デスクトップ・コンピュータ、携帯コンピュータ、ラップトップ・コンピュータまたはノートブック・コンピュータ、タブレット・コンピュータ、ポケット・コンピュータ、電話、スマートフォン、ページャ、自動車、テレビ会議システム、電気器具、または、任意の他の適切な種類の電子デバイスとして実装される。
【0021】
ネットワーク130は、任意の適切なバス、ネットワーク、またはこれらの複合体または組み合わせであってよく、サーバ・コンピュータ・システム100に出入りするデータもしくはコードまたはその両方の通信に適した任意の適切なプロトコルをサポートすることができる。様々な実施形態において、ネットワーク130は、サーバ・コンピュータ・システム100に直接にまたは間接的に接続されたストレージ・デバイスまたはストレージ・デバイスの組み合わせを表し得る。別の実施形態において、ネットワーク130は、無線通信をサポートすることが可能である。別の実施形態では、ネットワーク130は、電話回線またはケーブルなど、有線の通信をサポートすることができる。別の実施形態では、ネットワーク130は、インターネットであってよく、IP(インターネット・プロトコル)をサポートすることが可能である。別の実施形態では、ネットワーク130は、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)として実装される。別の実施形態では、ネットワーク130は、ホットスポット・サービス・プロバイダのネットワークとして実装される。別の実施形態では、ネットワーク130は、イントラネットとして実装される。別の実施形態では、ネットワーク130は、任意の適切なセル方式データ・ネットワーク、セルベースの無線ネットワーク技術、または無線ネットワークとして実装される。別の実施形態では、ネットワーク130は、任意の適切なバス、ネットワーク、またはこれらの任意の複合体または組み合わせとして実装される。
【0022】
図1は、サーバ・コンピュータ・システム100およびネットワーク130の代表的な主要コンポーネントを示すことを意図している。但し、個別のコンポーネントは
図1に表されたよりも高い複雑性を有し得、
図1に示された以外のまたはこれらに追加されたコンポーネントが存在し得て、かかるコンポーネントの数、種類、および構成は多種多様であり得る。かかるさらなる複雑性またはさらなる変形のいくつかの具体例が本明細書で開示され、これらは例示のためだけのものであり、これらだけが必ずしもかかる変形なのではない。
図1に示され、本発明の様々な実施形態を実装する多様なプログラム・コンポーネントは、様々なコンピュータ・アプリケーション、ルーティン、コンポーネント、プログラム、オブジェクト、モジュール、データ構造体などの使用を含め、多くの仕方で実装することができ、以降、これらを「コンピュータ・プログラム」または単に「プログラム」と言う。
【0023】
これらコンピュータ・プログラムは一つ以上の命令またはステートメントを含み、様々な時点でサーバ・コンピュータ・システム100中の様々なメモリおよびストレージ・デバイスに常駐し、サーバ・コンピュータ・システム100中の一つ以上のプロセッサによって読み取られ実行されたとき、または一つ以上のプロセッサによって実行された命令によって解釈されたとき、サーバ・コンピュータ100に、本発明の諸実施形態の様々な態様を含むステップまたは要素を実行するのに必要な動作を遂行させる。本発明の実施形態の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の実施形態の態様は、全体がハードウェアの実施形態、全体がプログラムの実施形態(ファームウェア、常駐プログラム、マイクロコードなどを含み、これらはストレージ・デバイスに格納される)、あるいは、プログラムおよびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは本明細書では一般に全て「回路」、「モジュール」、または「システム」と称されることがある。さらに、本発明の諸実施形態は、具現化されたコンピュータ可読プログラム・コードを有する、一つ以上のコンピュータ可読媒体中に具現化されたコンピュータ・プログラム製品の形を取ることも可能である。
【0024】
一つ以上のコンピュータ可読媒体の任意の組み合わせを用いることが可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体であっても、コンピュータ可読ストレージ媒体であってもよい。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいは前述の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例(非包括的リスト)は、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク(例えば、ストレージ・デバイス125)、ランダム・アクセス・メモリ(RAM)(例えば、メモリ102)、読み取り専用メモリ(ROM)、消去およびプログラム可能読み取り専用メモリ(EPROM)またはフラッシュ・メモリ、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせを含み得る。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを包含または格納できる任意の有形媒体であってよい。
【0025】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送を行う任意のコンピュータ可読媒体であってよい。コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、ワイヤレス、有線、光ファイバ・ケーブル、無線周波、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【0026】
本発明の実施形態の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、オブジェクト指向プログラミング言語および手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、ユーザのコンピュータで専ら実行してもよく、遠隔のコンピュータで部分的に実行してもよく、あるいは遠隔のコンピュータまたはサーバで専ら実行してもよい。後者の場合は、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことも可能である。
【0027】
方法、装置(システム)およびコンピュータ・プログラム製品のフロー・チャートおよびブロック図を参照しながら、本発明の実施形態の態様が以下に説明される。フロー・チャートおよびブロック図の各ブロック、ならびに、フロー・チャートおよびブロック図のブロックの組み合わせは、コンピュータ可読媒体中に具現化されたコンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フロー・チャートおよびブロック図のブロック中に特定されている機能/動作を実装するための手段を生成するようにすることができる。また、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フロー・チャートおよびブロック図のブロック中に特定されている機能/動作を実装する命令群を含む製造品を作り出せるようにすることが可能である。
【0028】
本発明の様々な実施形態の機能を定義するコンピュータ・プログラムを、動作可能にまたは通信可能に(直接または間接的に)一つまたは複数のプロセッサと接続できる様々な有形のコンピュータ可読ストレージ媒体を用いて、コンピュータ・システムに供給することができる。さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フロー・チャートおよびブロック図のブロック中に特定されている機能/動作を実装するためのプロセスを提供するようにすることも可能である。
【0029】
図面中のフロー・チャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フロー・チャートまたはブロック図中の各ブロックは、特定の論理機能を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。一部の実施形態では、ブロック中に記載された機能が、図面に記載された順序から外れて行われることがある。例えば、連続して示された2つのブロックが、関与する機能性によっては、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。ブロック図およびフロー・チャートの各ブロック、およびそれらのブロックの組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装が可能である。
【0030】
また、本発明の諸実施形態は、クライアント企業、ノンプロフィット組織、政府機関、または内部組織構造体とのサービス契約の一部として提供することもできる。これらの実施形態の態様は、本明細書に記載の方法の一部または全部を実装するコンピューティング・サービス(例えば、コンピュータ可読コード、ハードウェア、およびウェブ・サービス)を実施するためのコンピュータ・システムを構成すること、およびそれらのサービスを展開することを含み得る。また、これらの実施形態の態様には、クライアント会社を分析すること、分析に応じて提案を生成すること、それら提案の部分を実装するためのコンピュータ可読コードを作成すること、そのコンピュータ可読コードを既存のプロセス、コンピュータ・システム、およびコンピューティング・インフラストラクチャに組み込むこと、本明細書に記載の方法およびシステムの使用を計量すること、ユーザに費用を割り当てること、およびユーザにこれらの方法およびシステムの使用の費用を請求することを含めることもできよう。さらに、以降で説明する様々なプログラムは、それらが本発明の特定の実施形態中に実装された対象のアプリケーションに基づいて識別することができよう。但し、以下のどの特定のプログラム用語も単に便宜上使用されているものであり、従って、本発明の実施形態は、かかる用語によって識別または暗示されるいかなる特定のアプリケーションにおける使用にだけ限定されるものではない。
図1中に示された例示的な実施形態は、本発明を限定することは意図されていない。実際上、本発明の実施形態の範囲から逸脱することなく、他の代替ハードウェアもしくはプログラム環境またはその両方を用いることが可能である。
【0031】
図2は、本発明の一つの実施形態による、ネットワーク130およびストレージ・デバイス125を介して接続された、例示的なサーバ・コンピュータ・システムA100−1、例示的なサーバ・コンピュータ・システムB100−2、例示的なサーバ・コンピュータ・システムC100−3、および例示的なサーバ・コンピュータ・システムD100−4のハイレベルのブロック図を示す。サーバ・コンピュータ・システム100−1、100−2、100−3、および100−4は、サーバ・コンピュータ・システム100の例であり、サーバ・コンピュータ・システム100と総称される。サーバ・コンピュータA100−1は、パーティション134−1、パーティション134−2、ハイパーバイザ136、およびメモリ・テーブル140−1を含む。パーティション134−1は、アプリケーション144−1、オペレーティング・システム146−1、およびデータ148−1を含み、本明細書ではこれらをオブジェクトと言う。パーティション134−2は、パーティション134−1、134−3、134−4、134−5、134−6、134−7、および134−8と同一のまたは相異なるアプリケーション、オペレーティング・システム、およびデータを含んでよい。
【0032】
サーバ・コンピュータB100−2は、パーティション134−3、パーティション134−4、ハイパーバイザ136、およびメモリ・テーブル140−2を含む。パーティション134−3は、アプリケーション144−2、オペレーティング・システム146−2、およびデータ148−2を含み、本明細書ではこれらをオブジェクトと言う。パーティション134−3は、パーティション134−1、134−2、134−4、134−5、134−6、134−7、および134−8と同一のまたは相異なるアプリケーション、オペレーティング・システム、およびデータを含んでよい。サーバ・コンピュータC100−3は、パーティション134−5、パーティション134−6、ハイパーバイザ136、およびメモリ・テーブル140−3を含む。パーティション134−5は、アプリケーション144−3、オペレーティング・システム146−3、およびデータ148−3を含み、本明細書ではこれらをオブジェクトと言う。パーティション134−6は、パーティション134−1、134−2、134−3、134−4、134−5、134−7、および134−8と同一のまたは相異なるアプリケーション、オペレーティング・システム、およびデータを含んでよい。サーバ・コンピュータD100−4は、パーティション134−7、パーティション134−8、ハイパーバイザ136、およびメモリ・テーブル140−4を含む。パーティション134−7は、アプリケーション144−4、オペレーティング・システム146−4、およびデータ148−4を含み、本明細書ではこれらをオブジェクトと言う。パーティション134−8は、パーティション134−1、134−2、134−3、134−4、134−5、134−6、および134−7と同一のまたは相異なるアプリケーション、オペレーティング・システム、およびデータを含んでよい。
【0033】
パーティション134−1、134−2、134−3、134−4、134−5、134−6、134−7、および134−8は、パーティション134(
図1)の例であり、パーティション134と総称される。メモリ・テーブル140−1、140−2、140−3、および140−4は、メモリ・テーブル140(
図1)の例であり、メモリ・テーブル140と総称される。アプリケーション144−1、144−2、144−3、および144−4は、アプリケーション144(
図1)の例であり、アプリケーション144と総称される。アプリケーション144−1、144−2、144−3、および144−4は互に同一であっても異なっていてもよい。オペレーティング・システム146−1、146−2、146−3、および146−4は、オペレーティング・システム146(
図1)の例であり、オペレーティング・システム146と総称される。オペレーティング・システム146−1、146−2、146−3、および146−4は互に同一であっても異なっていてもよい。データ148−1、148−2、148−3、および148−4は、データ148(
図1)の例であり、データ148と総称される。データ148−1、148−2、148−3、および148−4は互に同一であっても異なっていてもよい。
【0034】
データ148−1、148−2、148−3、および148−4は、それぞれのパーティション134−1、134−3、134−5、および134−7の実行の現在状態を表す状態情報を含むことができる。パーティション134−1、134−3、134−5、および134−7は、それぞれのデータ148−1、148−2、148−3、および148−4を含むが、さらに各パーティションがまだネットワーク130にまたはストレージ・デバイス125に書き込んでいないバッファ・データも含み得る。
【0035】
パーティション134が実行されているサーバ・コンピュータは、当該パーティション134に対するプライマリ・サーバである。パーティション134は、そのセカンダリ・サーバ上では実行されない。代わりに、パーティション134はセカンダリ・サーバにミラーされる。すなわち、パーティション134のアプリケーションおよびオペレーティング・システム146がセカンダリ・サーバのメモリ中にインストールされて存在し、プライマリ・サーバは、定期的に、プライマリ・サーバのパーティション134からセカンダリ・サーバのパーティション134にデータをコピーして、プライマリ・サーバの故障に対応してセカンダリ・サーバが新しいプライマリ・サーバとなることを可能にし、この新しいプライマリ・サーバのパーティション134は、故障したプライマリ・サーバのパーティション134が停止した点から、最低限の中断でパーティション134のユーザにはほぼ透過的に、実行を開始することができる。かくして、フェイルオーバ・オペレーションに先立って、或るサーバをパーティション134に対するセカンダリ・サーバとすることができ、フェイルオーバ・オペレーション後は、該サーバが同じパーティション134の新しいプライマリ・サーバになることができる。さらに、或るサーバが一つのパーティション134に対するプライマリ・サーバとなり、同時に、別のパーティション134に対するセカンダリ・サーバとなることも可能である。以下でさらに説明するように、パーティション134は、該パーティション134が実行されているプライマリ・サーバに所在するメモリ・テーブル140を使用する。サーバ100−1、100−2、100−3、または100−4のいずれもが、諸パーティションに対するセカンダリ・サーバでありながら、一つ以上のパーティションに対するプライマリ・サーバであることができる。さらに、或るサーバが、或る時点では或るパーティションに対するプライマリ・サーバであり、別の時点では同じパーティションに対しセカンダリ・サーバであってもよい。
【0036】
図3は、本発明の一つの実施形態による、プライマリ・サーバAのメモリ・テーブル140−1に対する例示的なデータ構造のブロック図を示す。メモリ・テーブル140−1は、プライマリ・サーバAでのパーティション134の実行によってアクセスされた、プライマリ・サーバAのメモリ102中の各々のメモリ・ブロック・アドレスに対し各一つの、任意の数のエントリを含む。これらエントリの各々は、メモリ・ブロック・アドレスのフィールド302を含む。また、これらエントリの各々は、プライマリ・サーバAのエラーのフィールド304、セカンダリ・サーバBのエラーのフィールド306、セカンダリ・サーバCのエラーのフィールド308、およびセカンダリ・サーバDのエラーのフィールド310を含むが、他の実施形態においては、ネットワーク130に接続されたプライマリおよびセカンダリ・サーバの数に対応して、これより多いまたは少ないフィールドが存在し得る。
【0037】
各エントリのメモリ・ブロック・アドレスのフィールド302は、サーバのメモリ102内のメモリ・ロケーションまたはメモリ・ブロックのアドレスを指定する。様々なサーバにおける同じメモリ・ブロック・アドレス302は対応している。すなわち、これらは、相異なるサーバ中の相異なるメモリ中ではあるが、同一のメモリ・ブロック・アドレスを有する。様々な実施形態において、メモリ・ブロック・アドレスのフィールド302によって指定されるアドレスは、論理アドレス、物理アドレス、仮想アドレス、絶対アドレス、または相対アドレスであってよい。プライマリ・サーバAのエラーのフィールド304、セカンダリ・サーバBのエラーのフィールド306、セカンダリ・サーバCのエラーのフィールド308、およびセカンダリ・サーバDのエラーのフィールド310は、それぞれのサーバでの各エントリ中の、同じメモリ・ブロック・アドレス302によって指定されたそれぞれのメモリ・ロケーションのそれぞれのエラー状態を特定する。様々な実施形態において、このエラー状態は;それぞれのサーバのメモリ・ブロック・アドレス302のメモリ・ロケーションにエラーがないこと、それぞれのサーバのメモリ・ブロック・アドレス302のメモリ・ロケーションにエラーがあったが訂正されたこと、または当該メモリ・ブロック・アドレスのメモリ・ロケーションに訂正不可能なエラー、すなわち訂正できないエラーがあること;を示すことができる。
【0038】
様々な実施形態において、訂正されたエラーは、エラーに遭遇したオペレーションの再試行を介し(そしてその再試行において問題に遭遇することなく)、もしくは、メモリ中のシングルビットまたはダブルビット・エラーを判定してエラーに遭遇したメモリ・ロケーションに訂正されたデータを再書き込みする、ECC(エラー訂正符号)の使用によって、再書き込みでさらなるエラーに遭遇することなくサーバが訂正した、一時的、軽度な、または間欠的エラーであって、サーバは、そのエラーの訂正後、訂正されたエラーに遭遇したメモリ・ブロック・アドレスには継続してアクセスをすることが可能になる。様々な実施形態において、訂正されたエラーは、電磁ノイズ、宇宙線により、または、時間とともに劣化が続き、遂にはメモリに訂正不可能なエラーを引き起こすことになるメモリ・セルの劣化により生じた可能性がある。様々な実施形態において、訂正不可能なエラーは、ハード・エラー、非一時的エラー、サーバが訂正、修理、または回復することができないメモリ回路中の欠陥に起因したエラーであって、サーバは、訂正不可能なエラーを検出した後、またはエラーの訂正を試みて不成功だった後、当該メモリ・ロケーションへのアクセスを停止することになる。
【0039】
メモリ・テーブル140−1は、セカンダリ・サーバBのエラーを有するメモリ・ブロック数のフィールド312、セカンダリ・サーバCのエラーを有するメモリ・ブロック数のフィールド314、セカンダリ・サーバDのエラーを有するメモリ・ブロック数のフィールド316、をさらに含む。セカンダリ・サーバBのエラーを有するメモリ・ブロック数のフィールド312、セカンダリ・サーバCのエラーを有するメモリ・ブロック数のフィールド314、セカンダリ・サーバDのエラーを有するメモリ・ブロック数のフィールド316は、それぞれのサーバにおける、訂正されたもしくは訂正不可能なエラーあるいはその両方のエラーを有するメモリ・ブロックの数をカウントする。
【0040】
図4は、本発明の一つの実施形態による、チェックポイントの例示的な処理のフロー・チャートを示す。
図4の論理は、サーバ100−1、100−2、100−3、および100−4など、任意のプライマリ・サーバで、任意の回数実施することができる。
図4の論理は、
図5、6、および7の論理とともに、同じまたは異なるサーバの同じまたは異なるプロセッサ上で、同時に、並行して、または交互に実行することが可能である。制御はブロック400で開始される。次いで制御はブロック405に続き、プライマリ・サーバで実行されているパーティション134がチェックポイントに達する。チェックポイントは、或る時間期間の満了によって、または別のチェックポイント限界決定イベントによって示される。一つの実施形態において、ハイパーバイザ136は、タイマの発信を検出することによって、チェックポイントに到達したことを判断することができる。次いで、制御はブロック410に続き、チェックポイントに到達したのに応じ、プライマリ・サーバのハイパーバイザ136は、一つ又は複数のセカンダリ・サーバにパーティションのデータ148を送信し、セカンダリ・サーバは、そのパーティションのデータ148を受信し、それぞれのメモリに格納する。このような仕方で、プライマリ・サーバは、定期的にパーティションのデータ148をセカンダリ・サーバに送信する。次いで制御はブロック415に続き、プライマリ・サーバのハイパーバイザ136は(次のチェックポイントに到達するまでの期間の間)待つ。次いで制御は前述で説明したブロック405に戻る。
【0041】
図5は、本発明の一つの実施形態による、メモリ・エラーに対処するための例示的な処理のフロー・チャートを示す。
図5の論理は、サーバ100−1、100−2、100−3、および100−4など、任意のプライマリ・サーバで任意の回数実施することができる。制御はブロック500で開始される。次いで制御はブロック505に続き、プライマリ・サーバで実行されるパーティション134は、プライマリ・サーバのメモリ102中のメモリ・ブロック・アドレスのメモリ・ロケーションにあるオブジェクトにアクセスする(読み取りまたは書き込み)。
【0042】
次いで制御はブロック510に続き、プライマリ・サーバのオペレーティング・システム146は、実行中のパーティション134によってアクセス(読み取りまたは書き込み)される、プライマリ・サーバの第一メモリ・ロケーションが訂正されたエラーを有したか、またはセカンダリ・サーバの対応する(プライマリ・サーバの第一メモリ・ロケーションに対応する)メモリ・ロケーションがエラー(訂正済みまたは訂正不可能)を有するもしくは有したかどうかを判定する。ブロック510での判定が真の場合、実行中のパーティション134によってアクセス(読み取りまたは書き込み)される、プライマリ・サーバの第一メモリ・ロケーションは、訂正されたエラーを有したか、またはセカンダリ・サーバの対応するメモリ・ロケーション(プライマリ・サーバの第一メモリ・ロケーションに対応する)がエラーを有したかもしくは訂正不可能エラーを有し、したがって、制御はブロック515へと続き、実行中のパーティション134中のオペレーティング・システム146は、読み取りまたは書き込みオブジェクトをプライマリ・サーバの第一メモリ・ロケーションからプライマリ・サーバの第二メモリ・ロケーションに移動させる。この第二メモリ・ロケーションは、訂正不可能エラーを有することなく、または訂正されたエラーを有したこともなく、そして(随意的に)第二メモリ・ロケーションに対応するメモリ・ロケーション(この対応するメモリ・ロケーションはセカンダリ・サーバにある)は訂正不可能なエラーを有さず、訂正されたエラーを有したこともない。パーティションは、第一メモリ・ロケーションがエラーを有していたと判定されたとき、セカンダリ・サーバの対応するメモリ・ロケーションがエラーを有していたと判定されたとき、および、プライマリ・サーバにおいてオブジェクトを第一メモリ・ロケーションから第二メモリ・ロケーションに移動させているときには、セカンダリ・サーバで実行されない。オペレーティング・システム146は、エラー(訂正されたまたは訂正不可能)のあるセカンダリ・サーバの対応メモリ・ロケーションを有するプライマリ・サーバの第二メモリ・ロケーションへは、たとえそのプライマリ・サーバの第二メモリ・ロケーションにエラーがなくても、オブジェクトを移動させるのを避ける。
【0043】
次いで制御はブロック520に続き、プライマリ・サーバのハイパーバイザ136は、プライマリ・サーバに接続された全ての他のサーバに対し、該プライマリ・サーバのメモリ中の訂正されたまたは訂正不可能なエラーを有するロケーション、および訂正されたまたは訂正不可能なエラーを有する該プライマリ・サーバのメモリ・ブロックの数を送信する。他のサーバは、それらのロケーションおよび数を受信し、それぞれのメモリ・テーブル中に格納する。次いで制御はブロック505に続き、パーティション134は、前述のように、プライマリ・サーバ上での実行を継続し、同一のまたは異なるメモリ・ロケーションの同一のまたは異なるオブジェクトにアクセスする。
【0044】
ブロック510での判定が偽の場合は、プライマリ・サーバで実行中のパーティション134によってアクセスされたどのメモリ・ロケーションも訂正されたエラーを有したことがなく、プライマリ・サーバで実行中のパーティション134によってアクセスされたメモリ・ロケーションに対応する、セカンダリ・サーバのメモリ・ロケーションも訂正されたエラーを有したことがなく、訂正不可能なエラーを有したことがなかったので、制御はブロック505に戻り、パーティション134は、プライマリ・サーバ上での実行を継続し、ブロック515および520で述べた処理を行うことなく、前述のように、同一のまたは異なるメモリ・ロケーションの同一のまたは異なるオブジェクトにアクセスする。
【0045】
図6は、本発明の一つの実施形態による、プライマリ・サーバの故障に対処するための例示的な処理のフロー・チャートを示す。
図6に示された論理は、任意の回数実行することが可能で、サーバ・コンピュータ100−1、100−2、100−3、および100−4など、任意のサーバ・コンピュータで、実行することができる。制御はブロック600で開始される。次いで制御はブロック605に続き、或るサーバ・コンピュータ100のハイパーバイザ136が、プライマリ・サーバが故障したことを検出する。様々な実施形態において、ハイパーバイザ136は、特定の期間内に、プライマリ・サーバからメッセージ、パケット、信号、または他の通知を受信しないのに応じて、プライマリ・サーバが故障したと判定する。様々な実施形態において、ハイパーバイザ136は、ユーザI/Oデバイス121から、ネットワーク130から、またはハイパーバイザ136の設計者から、上記の期間の指定を受信する。一つの実施形態において、ハイパーバイザ136は、ハートビート・プロトコルを介してプライマリ・サーバが故障したことを判定する。様々な実施形態において、プライマリ・サーバは、プライマリ・サーバでの無限ループ、プライマリ・サーバへの(意図的なまたは意図的でない)電力の喪失、またはプライマリ・サーバでのプログラムまたはハードウェア・エラーに起因して故障した可能性がある。
【0046】
このとき、制御はブロック610に続き、サーバ・コンピュータ100のハイパーバイザ136は、(該故障したプライマリ・サーバに対するセカンダリ・サーバである全てのサーバの間から)他の全てのセカンダリ・サーバに比べて、訂正されたまたは訂正不可能なエラーを有するメモリ・ブロックの数が最少の、選択されたセカンダリ・サーバを選ぶ。
【0047】
次いで制御はブロック615に続き、サーバ・コンピュータ100のハイパーバイザ136は、故障したサーバ・コンピュータ上で(故障したサーバ・コンピュータの故障の前に)実行されていたパーティション134に対する新しいプライマリ・サーバとして、該選択されたセカンダリ・サーバを指定し、その新しいプライマリ・サーバ(選択されたセカンダリ・サーバ)上でパーティション134の実行を開始し、そして、該新しいプライマリ・サーバのパーティション134は、新しいプライマリ・サーバからパーティション・データ148を読み取り、そのパーティション・データ148を使って、パーティション134が実行されているプロセッサの状態、もしくはパーティション134が処理しているトランザクションもしくは要求の状態、またはその両方の状態を判断する。パーティション134は、新しいプライマリ・サーバのメモリ・テーブル140を用い、
図4および
図5の論理に沿って、新しいプライマリ・サーバ上で実行される。次いで制御はブロック699に続き、
図6の論理は始めに戻る。
【0048】
図7は、本発明の一つの実施形態による、セカンダリ・サーバの故障に対処するための例示的な処理のフロー・チャートを示す。
図7に表された論理は、任意の回数実行することが可能で、サーバ・コンピュータ100−1、100−2、100−3、および100−4など、任意のプライマリ・サーバ・コンピュータで実行することができる。制御はブロック700で開始される。次いで制御はブロック705に続き、プライマリ・サーバのハイパーバイザ136が、或るセカンダリ・サーバが故障したことを検出する。様々な実施形態において、ハイパーバイザ136は、特定の期間内に、セカンダリ・サーバからメッセージ、パケット、信号、または他の通知を受信しないのに応じて、プライマリ・サーバが故障したと判定する。一つの実施形態において、ハイパーバイザ136は、ハートビート・プロトコルを介してセカンダリ・サーバが故障したことを判定する。様々な実施形態において、セカンダリ・サーバは、セカンダリ・サーバでの無限ループ、セカンダリ・サーバへの(意図的なまたは意図的でない)電力の喪失、またはセカンダリ・サーバでのプログラムまたはハードウェア・エラーに起因して故障した可能性がある。次いで制御はブロック710に続き、セカンダリ・サーバが故障したことの検出に応じ、ハイパーバイザ136は、プライマリ・サーバのメモリ・テーブル140から、故障したセカンダリ・サーバに対する訂正されたおよび訂正不可能なエラーの表示を削除する。
【0049】
次いで制御はブロック715に続き、セカンダリ・サーバが故障したことの検出に応じ、ハイパーバイザ136は、プライマリ・サーバのオペレーティング・システム146に当該セカンダリ・サーバが故障したことを通知する。この通知の受信を受けて、プライマリ・サーバのオペレーティング・システム146は、故障したセカンダリ・サーバのエラーのあったメモリ・ロケーションの回避を中止する。すなわち、プライマリ・サーバのオペレーティング・システム146は、セカンダリ・サーバに(訂正されたまたは訂正不可能な)エラーのある対応ロケーションを有していたプライマリ・サーバのメモリ・ロケーションへの、オブジェクトの格納を可能にする。次いで制御はブロック799に続き、
図7の論理は始めに戻る。
【0050】
このような仕方で、一つの実施形態において、パーティションは、フェイルオーバ・オペレーションの直後にメモリ・エラーに遭遇するのを避けることができる。
【0051】
本明細書で使用される用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「或る、一つの(“a”、“an”)」、および「該(“the”)」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに、当然のことながら本明細書で用いられる「含む(“comprise”)」および「含んでいる(“comprising”)」は、述べられた特徴、整数、ステップ、オペレーション、要素、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、整数、ステップ、オペレーション、要素、コンポーネント、もしくはこれらの群、またはこれらの組み合わせの存在または追加を排除するものではない。本発明の例示的な諸実施形態の前述の詳細な説明において、添付の図面(図中の同様な番号は同様な要素を表す)への参照が行われており、これらは本明細書の一部を形成し、これら図中では例証として本発明が実践可能な具体的な例示の実施形態が示されている。これらの実施形態は、当業者が本発明を実践することができるよう十分な詳しさで説明したが、他の実施形態を用いることも可能で、本発明の範囲から逸脱することなく、論理的、機械的、電気的なおよび他の変更を加えることが可能である。前述の説明において、本発明の実施形態の徹底的理解を提供するために、数々の具体的詳細が述べられた。但し、本発明の実施形態は、これらの具体的詳細がなくても実践することができる。他の諸例においては、本発明の実施形態を分かり難くしないために周知の回路、構造体、および技法は示さなかった。
【0052】
本明細書内で用いた用語「実施形態」の種々の例は必ずしも同じ実施形態を言及しないが、するものもある。本明細書で例示された、または説明された一切のデータおよびデータ構造は、例示のためだけのものであり、他の実施形態では、異なるデータの量、データの種類、フィールド、フィールドの数および種類、フィールドの名称、行の数および種類、記録、エントリ、またはデータの編成を用いることが可能である。さらに、別個のデータ構造が必要ないように、任意のデータと論理と組み合わせることができる。したがって、前述の詳細な説明は限定する意味として取るべきではない。