JP6444400B2 - セカンダリ・コンピュータ中のメモリ・エラーに応じたプライマリ・コンピュータ中のオブジェクトの移動 - Google Patents

セカンダリ・コンピュータ中のメモリ・エラーに応じたプライマリ・コンピュータ中のオブジェクトの移動 Download PDF

Info

Publication number
JP6444400B2
JP6444400B2 JP2016528328A JP2016528328A JP6444400B2 JP 6444400 B2 JP6444400 B2 JP 6444400B2 JP 2016528328 A JP2016528328 A JP 2016528328A JP 2016528328 A JP2016528328 A JP 2016528328A JP 6444400 B2 JP6444400 B2 JP 6444400B2
Authority
JP
Japan
Prior art keywords
server
memory location
primary server
partition
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016528328A
Other languages
English (en)
Other versions
JP2016528616A (ja
Inventor
ジェイコブス、スチュアート、ゼッド.
ラーソン、デイヴィッド、エー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2016528616A publication Critical patent/JP2016528616A/ja
Application granted granted Critical
Publication of JP6444400B2 publication Critical patent/JP6444400B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

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

Claims (12)

  1. プライマリ・サーバでパーティションを実行するステップであって、前記パーティションは、前記プライマリ・サーバの第一メモリ・ブロック・アドレスの第一メモリ・ロケーションにアクセスする、前記実行するステップと、
    前記プライマリ・サーバの前記パーティションがミラーされた、実行されないパーティションを含むセカンダリ・サーバの第一対応メモリ・ロケーションが前記プライマリ・サーバの前記第一メモリ・ロケーションに対応していて、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションがエラーを有する場合、前記プライマリ・サーバの前記第一メモリ・ロケーションから前記プライマリ・サーバの第二メモリ・ロケーションにオブジェクトを移動させるステップと、
    前記プライマリ・サーバが故障したことを検出するのに応じて、前記セカンダリ・サーバ上で前記ミラーされたパーティションの実行を開始するステップと、
    前記セカンダリ・サーバが故障したことを検出するのに応じて、前記プライマリ・サーバの前記第一メモリ・ロケーションにオブジェクトを格納するのを可能にするステップと、
    を含む方法。
  2. 前記オブジェクトを移動させるステップが、
    前記プライマリ・サーバの前記第一メモリ・ロケーションから、前記セカンダリ・サーバの第二対応メモリ・ロケーションに対応する、前記プライマリ・サーバの前記第二メモリ・ロケーションに前記オブジェクトを移動させるステップをさらに含み、前記セカンダリ・サーバの前記第二対応メモリ・ロケーションはエラーを有しない、
    請求項1に記載の方法。
  3. 前記セカンダリ・サーバの前記第一対応メモリ・ロケーションは、前記プライマリ・サーバの前記第一メモリ・ロケーションの前記第一メモリ・ブロック・アドレスが、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションの第一対応メモリ・ブロック・アドレスと一致するときに、前記プライマリ・サーバの前記第一メモリ・ロケーションに対応する、請求項1に記載の方法。
  4. 複数のセカンダリ・サーバの間から、エラーを有するメモリ・ブロックの数が最少のセカンダリ・サーバを選択するステップをさらに含む、請求項に記載の方法。
  5. 前記エラーが訂正されたエラーまたは訂正不可能なエラーを含む、請求項1に記載の方法。
  6. プログラムが記録されたコンピュータ可読ストレージ媒体であって、前記プログラムはコンピュータに、
    プライマリ・サーバでパーティションを実行するステップであって、前記パーティションは、前記プライマリ・サーバの第一メモリ・ブロック・アドレスの第一メモリ・ロケーションにアクセスする、前記実行するステップと、
    前記プライマリ・サーバの前記パーティションがミラーされた、実行されないパーティションを含むセカンダリ・サーバの第一対応メモリ・ロケーションが前記プライマリ・サーバの前記第一メモリ・ロケーションに対応していて、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションがエラーを有する場合、前記プライマリ・サーバの前記第一メモリ・ロケーションから前記プライマリ・サーバの第二メモリ・ロケーションにオブジェクトを移動させるステップであって、前記オブジェクトを、前記プライマリ・サーバの前記第一メモリ・ロケーションから、前記セカンダリ・サーバの第二対応メモリ・ロケーションに対応する前記プライマリ・サーバの前記第二メモリ・ロケーションに移動させるステップをさらに含み、前記セカンダリ・サーバの前記第二対応メモリ・ロケーションはエラーを有しない、前記移動させるステップと、
    前記プライマリ・サーバが故障したことを検出するのに応じて、前記セカンダリ・サーバ上で前記ミラーされたパーティションの実行を開始するステップと、
    前記セカンダリ・サーバが故障したことを検出するのに応じて、前記プライマリ・サーバの前記第一メモリ・ロケーションにオブジェクトを格納するのを可能にするステップと、
    を実行させる、
    コンピュータ可読ストレージ媒体。
  7. 前記セカンダリ・サーバの前記第一対応メモリ・ロケーションは、前記プライマリ・サーバの前記第一メモリ・ロケーションの前記第一メモリ・ブロック・アドレスが、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションの第一対応メモリ・ブロック・アドレスと一致するときに、前記プライマリ・サーバの前記第一メモリ・ロケーションに対応する、請求項に記載のコンピュータ可読ストレージ媒体。
  8. 複数のセカンダリ・サーバの間から、エラーを有するメモリ・ブロックの数が最少のセカンダリ・サーバを選択するステップをさらに前記コンピュータに実行させる、請求項に記載のコンピュータ可読ストレージ媒体。
  9. 前記エラーが訂正されたエラーまたは訂正不可能なエラーを含む、請求項に記載のコンピュータ可読ストレージ媒体。
  10. プロセッサと、
    前記プロセッサに通信可能に接続されたメモリであって、前記メモリはプログラムを含み、前記プログラムは前記プロセッサに、
    プライマリ・サーバでパーティションを実行するステップであって、前記パーティションは、前記プライマリ・サーバの第一メモリ・ブロック・アドレスの第一メモリ・ロケーションにアクセスする、前記実行するステップと、
    前記プライマリ・サーバの前記パーティションがミラーされたパーティションを含むセカンダリ・サーバの第一対応メモリ・ロケーションが前記プライマリ・サーバの前記第一メモリ・ロケーションに対応していて、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションがエラーを有する場合、前記プライマリ・サーバの前記第一メモリ・ロケーションから前記プライマリ・サーバの第二メモリ・ロケーションにオブジェクトを移動させるステップであって、前記オブジェクトを、前記プライマリ・サーバの前記第一メモリ・ロケーションから、前記セカンダリ・サーバの第二対応メモリ・ロケーションに対応する前記プライマリ・サーバの前記第二メモリ・ロケーションに移動させるステップをさらに含み、前記セカンダリ・サーバの前記第二対応メモリ・ロケーションはエラーを有せず、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションは、前記プライマリ・サーバの前記第一メモリ・ロケーションの前記第一メモリ・ブロック・アドレスが、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションの第一対応メモリ・ブロック・アドレスと一致するときに、前記プライマリ・サーバの前記第一メモリ・ロケーションに対応し、前記セカンダリ・サーバの前記第一対応メモリ・ロケーションがエラーを有すると判定された時に、前記ミラーされたパーティションは前記セカンダリ・サーバで実行されていない、前記移動させるステップと、
    前記プライマリ・サーバが故障したことを検出するのに応じて、前記セカンダリ・サーバ上で前記ミラーされたパーティションの実行を開始するステップであって、前記プライマリ・サーバが故障したことは、前記セカンダリ・サーバが特定の期間内に前記プライマリ・サーバからメッセージを受信しなかったことにより検出される、前記開始するステップと、
    前記セカンダリ・サーバが故障したのを検出するのに応じて、前記プライマリ・サーバの前記第一メモリ・ロケーションにオブジェクトを格納するのを可能にするステップであって、前記セカンダリ・サーバが故障したことは、前記プライマリ・サーバが特定の期間内に前記セカンダリ・サーバからメッセージを受信しなかったことにより検出される、前記可能にするステップと、
    を実行させる、
    前記メモリと、
    を含むコンピュータ。
  11. 前記プログラムが、
    複数のセカンダリ・サーバの間から、エラーを有するメモリ・ブロックの数が最少のセカンダリ・サーバを選択するステップ、
    をさらに前記プロセッサに実行させる、請求項10に記載のコンピュータ。
  12. 前記エラーが訂正されたエラーまたは訂正不可能なエラーを含む、請求項10に記載のコンピュータ。
JP2016528328A 2013-07-22 2014-07-10 セカンダリ・コンピュータ中のメモリ・エラーに応じたプライマリ・コンピュータ中のオブジェクトの移動 Active JP6444400B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/947,420 2013-07-22
US13/947,420 US9235485B2 (en) 2013-07-22 2013-07-22 Moving objects in a primary computer based on memory errors in a secondary computer
PCT/CN2014/081948 WO2015010543A1 (en) 2013-07-22 2014-07-10 Moving objects in primary computer based on memory errors in secondary computer

Publications (2)

Publication Number Publication Date
JP2016528616A JP2016528616A (ja) 2016-09-15
JP6444400B2 true JP6444400B2 (ja) 2018-12-26

Family

ID=52344612

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016528328A Active JP6444400B2 (ja) 2013-07-22 2014-07-10 セカンダリ・コンピュータ中のメモリ・エラーに応じたプライマリ・コンピュータ中のオブジェクトの移動

Country Status (6)

Country Link
US (1) US9235485B2 (ja)
JP (1) JP6444400B2 (ja)
CN (1) CN105359109B (ja)
DE (1) DE112014003372T5 (ja)
GB (1) GB2531678B (ja)
WO (1) WO2015010543A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US10191672B2 (en) * 2015-10-16 2019-01-29 Google Llc Asynchronous copying of data within memory
US10747630B2 (en) * 2016-09-30 2020-08-18 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including operations by a master monitor node
US11301144B2 (en) 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10514847B2 (en) * 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US10771550B2 (en) 2016-12-28 2020-09-08 Amazon Technologies, Inc. Data storage system with redundant internal networks
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
KR101986695B1 (ko) * 2017-11-08 2019-06-07 라인 가부시키가이샤 네트워크 서비스 지속성 관리
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659682A (en) * 1994-06-16 1997-08-19 International Business Machines Corporation Scheme to determine completion of directory operations for server recovery
KR100244836B1 (ko) * 1995-11-02 2000-02-15 포만 제프리 엘 컴퓨터시스템 및 다수의 기능카드 중 한개의 기능카드를 격리하는 방법
JP3180737B2 (ja) * 1997-10-29 2001-06-25 日本電気株式会社 システムの冗長化方法
US20040059735A1 (en) * 2002-09-10 2004-03-25 Gold Russell Eliot Systems and methods for enabling failover in a distributed-object computing environment
WO2004027650A1 (en) 2002-09-18 2004-04-01 Netezza Corporation Disk mirror architecture for database appliance
US7472221B1 (en) 2004-03-29 2008-12-30 Emc Corporation Mirrored memory
US20050278439A1 (en) * 2004-06-14 2005-12-15 Ludmila Cherkasova System and method for evaluating capacity of a heterogeneous media server configuration for supporting an expected workload
EP1934775A4 (en) * 2005-10-10 2009-01-28 Waratek Pty Ltd MULTIPLE COMPUTER SYSEMA WITH IMPROVED CLEANING OF THE MEMORY
EP1934774A4 (en) * 2005-10-10 2009-04-15 Waratek Pty Ltd MODIFIED MACHINE ARCHITECTURE WITH PARTIAL MEMORY UPDATE
US7627775B2 (en) 2005-12-13 2009-12-01 International Business Machines Corporation Managing failures in mirrored systems
US7930496B2 (en) 2006-06-29 2011-04-19 International Business Machines Corporation Processing a read request to a logical volume while relocating a logical volume from a first storage location to a second storage location using a copy relationship
US7882326B2 (en) 2007-03-23 2011-02-01 International Business Machines Corporation Live migration of a logical partition
JP5011073B2 (ja) * 2007-11-22 2012-08-29 株式会社日立製作所 サーバ切り替え方法、およびサーバシステム
US8255639B2 (en) 2008-05-06 2012-08-28 International Business Machines Corporation Partition transparent correctable error handling in a logically partitioned computer system
US8407515B2 (en) * 2008-05-06 2013-03-26 International Business Machines Corporation Partition transparent memory error handling in a logically partitioned computer system with mirrored memory
US8499297B2 (en) * 2008-10-28 2013-07-30 Vmware, Inc. Low overhead fault tolerance through hybrid checkpointing and replay
JP4870183B2 (ja) * 2009-03-13 2012-02-08 株式会社日立製作所 ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム
US8769535B2 (en) 2009-09-24 2014-07-01 Avaya Inc. Providing virtual machine high-availability and fault tolerance via solid-state backup drives
US8407516B2 (en) 2009-12-23 2013-03-26 Intel Corporation Controlling memory redundancy in a system
US8605132B1 (en) * 2010-03-26 2013-12-10 Insors Integrated Communications Methods, systems and program products for managing resource distribution among a plurality of server applications
US8499336B2 (en) 2010-11-23 2013-07-30 Cisco Technology, Inc. Session redundancy among a server cluster
US8458514B2 (en) 2010-12-10 2013-06-04 Microsoft Corporation Memory management to accommodate non-maskable failures
JP6098778B2 (ja) * 2012-03-29 2017-03-22 日本電気株式会社 冗長化システム、冗長化方法、冗長化システムの可用性向上方法、及びプログラム

Also Published As

Publication number Publication date
CN105359109B (zh) 2017-09-29
GB2531678B (en) 2016-12-07
DE112014003372T5 (de) 2016-03-31
US20150026508A1 (en) 2015-01-22
JP2016528616A (ja) 2016-09-15
US9235485B2 (en) 2016-01-12
CN105359109A (zh) 2016-02-24
GB2531678A (en) 2016-04-27
WO2015010543A1 (en) 2015-01-29
GB201602092D0 (en) 2016-03-23

Similar Documents

Publication Publication Date Title
JP6444400B2 (ja) セカンダリ・コンピュータ中のメモリ・エラーに応じたプライマリ・コンピュータ中のオブジェクトの移動
CN110392876B (zh) 用于将数据集和其他受管理对象同步地复制到基于云的存储系统的方法
US10204017B2 (en) Variable drive health determination and data placement
US9164853B2 (en) Multi-core re-initialization failure control system
EP3195574B1 (en) Techniques for coordinating parallel performance and cancellation of commands in a storage cluster system
US11630593B2 (en) Inline flash memory qualification in a storage system
JP5336729B2 (ja) サポート・プロセッサによる最適化されたデータ・マイグレーションのための方法、システム、およびプログラム
US9354907B1 (en) Optimized restore of virtual machine and virtual disk data
JP5946472B2 (ja) コンピュータ・システムにおけるアプリケーション処理の管理のための方法、システム、コンピュータ・プログラム
US10402377B1 (en) Data recovery in a distributed computing environment
US11947968B2 (en) Efficient use of zone in a storage device
US10007456B1 (en) Efficient scrubbing of mirrored memory
US20230254127A1 (en) Sharing Encryption Information Amongst Storage Devices In A Storage System
US20170286209A1 (en) Techniques for dynamic selection of solutions to storage cluster system trouble events
US9798615B2 (en) System and method for providing a RAID plus copy model for a storage network
US10346269B2 (en) Selective mirroring of predictively isolated memory
WO2013080299A1 (ja) データ管理装置、データコピー方法、およびプログラム
US20200174683A1 (en) Method and system for delivering message in storage system
JP2017033113A (ja) システム、情報処理装置、および情報処理方法
US8621260B1 (en) Site-level sub-cluster dependencies
US10162542B1 (en) Data protection and incremental processing for multi-span business applications
US10387252B2 (en) Synchronously storing data in a plurality of dispersed storage networks
Bronevetsky et al. Scalable I/O systems via node-local storage: Approaching 1 TB/sec file I/O
CN107515723B (zh) 用于管理存储系统中的存储器的方法和系统
US11366618B2 (en) All flash array server and control method thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170609

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180525

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181127

R150 Certificate of patent or registration of utility model

Ref document number: 6444400

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150