JP2012033169A - バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置 - Google Patents

バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置 Download PDF

Info

Publication number
JP2012033169A
JP2012033169A JP2011167387A JP2011167387A JP2012033169A JP 2012033169 A JP2012033169 A JP 2012033169A JP 2011167387 A JP2011167387 A JP 2011167387A JP 2011167387 A JP2011167387 A JP 2011167387A JP 2012033169 A JP2012033169 A JP 2012033169A
Authority
JP
Japan
Prior art keywords
encoded
machines
memory state
memory
backup
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.)
Pending
Application number
JP2011167387A
Other languages
English (en)
Inventor
Yao Wai-Reon
ヤオ ワイ‐レオン
Westphal Cedric
ウェストファール セドリック
C Kozat Ulas
シー. コザット ウラス
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.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
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 NTT Docomo Inc filed Critical NTT Docomo Inc
Publication of JP2012033169A publication Critical patent/JP2012033169A/ja
Pending legal-status Critical Current

Links

Abstract

【課題】データセンタ及び他のバックアップ環境において符号化を使用するための方法及び装置が本明細書で開示されている。
【解決手段】一実施形態では、複数のマシンのメモリ状態を1組の1つ又は複数のバックアップノード上に同期させるための方法は、事前に符号化された変更を1つ又は複数のバックアップノードの各々において受信するステップであって、事前に符号化された変更が、複数のマシンの各1つ又は複数についてのメモリ状態に対する変更を事前に符号化することによって生成されるステップと、複数のマシンの2つ以上にわたって、事前に符号化された変更を符号化することによって、符号化されたメモリ状態を生成するステップとを含む。
【選択図】図13

Description

(優先権)
[0001]本特許出願は、対応する、2010年7月29日に出願された「A Method to Provide Live Check−Pointing for Computer Systems Using Linear Coding」と題する特許仮出願第61/369028号、及び2010年7月29日に出願された「A Method to Minimize the Synchronization and Recovery Bandwidth of a Virtual Machine Back−Up System」と題する特許仮出願第61/369030号の優先権を主張し、これらの特許仮出願を参照することにより組み込む。
(発明の分野)
[0002]本発明は、物理マシン及び/又は仮想マシンを含む、バックアップストレージを使用するデータセンタ及びシステムの信頼性、並びにそれらの同期の分野に関し、より詳細には、本発明は、仮想ネットワーク、分散システムにおけるフォールトトレランス、及びインフラストラクチャ仮想化に関する。
(発明の背景)
[0003]信頼性は、今日のデータセンタの重要な特徴である。必要な信頼性を獲得するため、これらのデータセンタは、しばしばバックアップを使用する。既存の技術は、各サーバ専用のバックアップを有することによって、又はいくつかのバックアップをバックアップノードのより大量のメモリ上に多重化することによって、信頼性を提供する(例えば、REMUSは、各VMのレプリカのために十分なメモリを含むバックアップノード上の、いくつかのVMの信頼性を提供する)。
[0004]信頼性の高い通信及びディスク信頼性では、パケットロスから復旧するために、線形符号化を通信ネットワークにおいて使用する。しかし、VM故障に対する防御は、システム要件及び必要とされるオペレーションステップの観点から、パケットロスに対する防御とは同じではない。ディスク又はデータ信頼性では、符号化は、フォールトトレランス目的で、例えばRAIDレベル5及び6システム上で使用される。しかし、RAIDでは、符号化されたデータ(パリティ)は、バックアップの際、ディスク書き込みのたびに再計算され、その複雑な計算のせいで、しばしば性能低下を引き起こす。
[0005]信頼性は、複数のマシン上のメモリ状態を同期させることによってしばしば達成され、同期は、マシン間でデータを送信することによって達成される。しかし、仮想マシンの信頼性のための同期帯域幅(synchronization bandwidth)は、コストがかかる。REMUSのようなシステムは、仮想マシンの状態とそのレプリカの状態を同期させて維持するために、数Mbpsのデータストリームを生成することができる。
[0006]既存の技術は、更新レートを制限することによって、同期帯域幅を制限しようと試みる。更新レートが低すぎる場合、バックアップノードにおける状態情報は時に陳腐化することがあるので、これは都合が悪いが、さもなければ、同期帯域幅(したがってネットワーク利用に及ぼす負の影響)が、かなり高いものになる。
[0007]分散ストレージの分野における別の関連技術は、再生成符号の2つのクラスであり、すなわち、MSR(最小ストレージ再生成(minimum storage regenerating))符号、及びMBR(最小帯域幅再生成(minimum bandwidth regenerating))符号である。これらの符号は、1つのバックアップノードが故障した場合に使用されて、修復帯域幅(repair bandwidth)を最低限に抑える。そのような場合、ネットワークトポロジは、無視され、符号化は、プライマリノード及びバックアップノードのみで実行される。さらに、MSR符号は、n>kである場合に、プライマリノードの正確な修復を実行できるにすぎない。MBR符号は、プライマリノードに、オリジナルデータの代わりに符号化されたメモリを記憶するよう要求する。さらに、符号化されたメモリのサイズは、オリジナルデータよりも常に大きい。
本発明は、物理マシン及び/又は仮想マシンを含む、バックアップストレージを使用するデータセンタ及びシステムの信頼性、並びにそれらの同期の分野に関し、より詳細には、本発明は、仮想ネットワーク、分散システムにおけるフォールトトレランス、及びインフラストラクチャ仮想化に関する。
[0008]データセンタ及び他のバックアップ環境において符号化を使用するための方法及び装置が、本明細書で開示される。一実施形態では、複数のマシンのメモリ状態を1組の1つ又は複数のバックアップノード上に同期させるための方法は、事前に符号化された変更を1つ又は複数のバックアップノードの各々において受信するステップであって、複数のマシンの各1つ又は複数についてのメモリ状態に対する変更を事前に符号化することによって、事前に符号化された変更が生成されるステップと、複数のマシンの2つ以上にわたって、事前に符号化された変更を符号化することによって、符号化されたメモリ状態を生成するステップとを含む。
本発明の実施形態の1つの利点は、本発明が、ちょうど適正な数のプライマリノードの間でバックアップリソースを共用することによって、適切な量のリソースを使用して、特定のレベルの信頼性(例えば99.99%の稼働時間)を提供することを可能にすることである。別の利点は、本明細書で説明される技法を使用して、異なる仮想サーバの信頼性を独自のバックアップノード上に多重化することによって、事業者は、効率的でコスト効果のよい方式で、仮想サーバを運営するアプリケーションプロバイダに信頼性を提供することができるので、事業者がサービスとして信頼性を提供することを可能にすることである。
[0009]本発明は、以下で与えられる詳細な説明から、また本発明の様々な実施形態についての添付の図面から、より十分に理解されるが、そのような図面は、本発明を特定の実施形態に限定するものと解釈されるべきではなく、説明及び理解のためのものにすぎない。
メモリ書き込みプロセス、及び、パリティノードにおいて符号化を更新するためのプロセスの、データフロー図の一実施形態を示す図である。 プライマリノードとして4つの仮想マシン(VM)を、またパリティノードとして2つの物理マシン(PM)を、用いて例示的に示された、故障検出後の復旧ステージを表すデータフロー図の一実施形態を示す図である。 本発明の一実施形態のネットワーク符号化プロセスを説明する同期例を示す図である。 本発明の一実施形態の復旧プロセスを説明する復旧例を示す図である。 バックアップが1つの場合にソースVMのメモリページにわたって符号化を行うためのアルゴリズムの一実施形態を示す図である。 (A)及び(B)図5のアルゴリズムの例を示す図である。 図5のアルゴリズムの解法を示す図である。 ツリー及び複数のバックアップノードの、別のアルゴリズムの一実施形態を示す図である。 図8のアルゴリズムのevalAllSubTreesプロシージャの一実施形態を示す図である。 図8のアルゴリズムのgetMinSetRateプロシージャの一実施形態を示す図である。 仲介ルータにおいて使用するためのアップリンクプロシージャの一実施形態を示す図である。 仲介ルータによって使用するためのダウンリンクプロシージャの一実施形態を示す図である。 複数のマシンのメモリ状態を1組の1つ又は複数のバックアップノード上に同期させるためのプロセスの一実施形態を示す図である。 ネットワーク符号化を使用して、複数の異なる符号化を複数の異なるバックアップノード上に記憶する一例を示す図である。
(本発明の詳細な説明)
[0010]本発明の実施形態は、複数のライブ(すなわち実際に動作中の)マシンを1組のバックアップノード上に同期させる方法を含み、その結果、バックアップノードの数が削減される。一実施形態では、これは、ライブマシンにわたってメモリ状態を符号化し、線形独立な符号化を各バックアップノードに記憶することによって達成される。一般性を失うことなく、本開示の残りの部分は、もっぱら仮想マシンの観点から本発明を開示するが、本明細書で説明される技法は、仮想マシン及び物理マシンの両方に適用される。
[0011]開示される本発明の実施形態は、ライブチェックポインティング(live checkpointing)のために、すべての仮想マシン(VM)にわたって非同期及び分散方式で行うことができる高速な符号化方式及び復号方式を提供する。アベイラビリティを高めるためにライブチェックポインティングを提供するこれらの既存のシステムとは対照的に、本発明の実施形態は、バックアップロケーションにおけるメモリフットプリント(memory footprint)を削減する。この利点は、プライマリノード故障が、バックアップノードに記憶された符号化されたメモリ状態からメモリを復旧するステージを必要とするため、アベイラビリティの減少という犠牲を払って実現される。
[0012]本発明の実施形態は、ネットワーク符号化(network coding)を使用することによって、ネットワークにおける同期帯域幅の量を削減するための機構を含む。本発明の実施形態は、n個の複数のプライマリノードを任意の個数kのバックアップノード上に記憶することを可能にするネットワーク符号化を提供するために、ネットワーク符号(network code)を計算する。個数kは、信頼性要件及び故障確率に基づいて、計算することができる。
[0013]以下の説明では、本発明のより完全な説明を提供するために、多くの詳細が説明される。しかし、これらの特定の詳細を伴わずとも本発明を実施できることは、当業者には明らかであろう。他の例では、本発明を曖昧にすることを避けるため、よく知られた構造及びデバイスは、詳細にではなくブロック図形式で示される。
[0014]以下の詳細な説明には、コンピュータメモリ内のデータビットに施される操作のアルゴリズム及びシンボル表現によって提示される部分がある。これらのアルゴリズムによる説明及び表現は、仕事の内容を他の当業者に最も効果的に伝えるために、データ処理分野の当業者によって使用される手段である。アルゴリズムは、ここでは、また一般には、所望の結果をもたらす自己矛盾のないステップ系列であると考えられている。ステップは、物理的な量の物理的な操作を必要とするステップである。必ずしも必要ではないが、通常、これらの量は、記憶、転送、組み合わせ、比較、及び他の操作が可能な、電気的信号又は磁気的信号の形態を取る。主として一般的な用法上の理由から、これらの信号をビット、値、要素、シンボル、文字、項、又は数などと呼ぶことが、時に便利であることが分かっている。
[0015]しかし、これらの用語及び類似の用語はすべて、適切な物理的な量に関連付けられており、これらの量に付けられた便利なラベルであるにすぎないことに留意されたい。別途特別に述べられない限り、以下の説明から明らかなように、説明の全体において、「処理する」、「計算する」、「算定する」、「決定する」又は「表示する」などの用語を利用した説明は、コンピュータシステムのレジスタ及びメモリ内の物理的な(電子的な)量として表現されたデータを操作及び変形して、コンピュータシステムメモリ若しくはレジスタ、又は他のそのような情報記憶、伝送、若しくは表示デバイス内の物理的な量として同様に表現される他のデータに変える、コンピュータシステム又は類似の電子的コンピューティングデバイスのアクション及びプロセスを指していることが理解されよう。
[0016]本発明は、本明細書のオペレーションを実行するための装置にも関する。この装置は、必要な目的のために特別に構成することができ、又はコンピュータ内に記憶されたコンピュータプログラムによって選択的に活動化若しくは再構成される汎用コンピュータを含むことができる。そのようなコンピュータプログラムは、フロッピー(登録商標)ディスク、光ディスク、CD−ROM、及び磁気光ディスクを含む任意のタイプのディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード若しくは光カード、又は電子的命令を記憶するのに適した任意のタイプの媒体などの、しかしそれらに限定されない、コンピュータ可読記憶媒体内に記憶することができ、各コンピュータ可読記憶媒体は、コンピュータシステムバスに結合される。
[0017]本明細書で提示されるアルゴリズム及び表示は、いずれか特定のコンピュータ又は他の装置に、本質的に関連するわけではない。本明細書の教示に従ったプログラムとともに、様々な汎用システムを使用することができ、又はより専門化された装置を構成して、必要な方法ステップを実行することが便利であると分かることもある。様々なこれらのシステムに必要な構成は、以下の説明から明らかになる。加えて、本発明は、いずれか特定のプログラミング言語に関連して説明されず、様々なプログラミング言語を使用して、本明細書で説明される本発明の教示を実施できることが理解されよう。
[0018]マシン可読媒体は、マシン(例えばコンピュータ)によって可読な形式で情報を記憶又は伝送するための任意の機構を含む。例えば、マシン可読媒体は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスなどを含む。
(概要)
[0019]本発明の実施形態は、複数のアクティブな物理マシン又は仮想マシン(本明細書ではプライマリノードと呼ばれる)の現在のメモリ状態を、同じ1組のバックアップノード(本明細書ではパリティノードと呼ばれる)上に同期させるための機構を提供する。一実施形態では、この同期は、プライマリノードのメモリ状態に対して実行された変更を複数のバックアップノードにストリーミングすることによって実行される。重要なことに、本発明の実施形態は、バックアップノードにおいて、いくつかのストリームが受信され、一緒に符号化されて、任意の目標信頼性レベル(すなわち故障から復旧する確率)でマシン故障からの復旧を可能にするのに必要なメモリ量を圧縮するという点で、ライブチェックポインティングにおける現在の最先端技術とは対照的である。
[0020]一実施形態では、バックアップノードにおける符号化は、次元がk×nのファンデルモンド行列(Vandermonde matrix)(又はコーシー行列(Cauchy matrix))の係数に基づいた線形符号化であり、ここで、nは、プライマリノードの数であり、kは、システムを復旧できる故障の数である。一実施形態では、本方法は、他のバックアップノードからデータを送信し、ファンデルモンド行列の逆行列を効率的に求めてデータを復旧することによって、故障の場合に復旧機構を使用して復旧を実行するステップも含む。
[0021]各プライマリノードが、1〜Lまでのインデックスを付けられた同じサイズのメモリページを有する場合に、N個のプライマリノードのメモリ状態をK個のバックアップノード上にライブチェックポインティングする一実施形態では、異なるプライマリノードが、様々な数のメモリページを有する場合、最も多数のメモリページを有するプライマリノードが、基準として使用され、パリティノードのメモリページは、すべてのプライマリノードにおける最大のメモリフットプリントに従って設定される。本発明の実施形態は、パリティノードzにおけるインデックスjのメモリページに対して、以下の線形符号化を使用する。

ここで、

は、ビット毎のXOR演算を表し、乗算は、線形独立な符号化を保証するために、十分に大きなガロア体、例えばGF(216)上で実行され、また、α値は、ファンデルモンド行列(又はバックアップノードにおけるプライマリイメージの線形結合)の係数である。
[0022]図1は、一実施形態による、完全な分散及び非同期方式でライブチェックポイントがどのように実行されるかについてのデータフロー図を示している。図1を参照すると、時刻T1において、仮想マシン1(VM)において動作するプロセスが、メモリページiを変更する書き込みオペレーションを実行する。この書き込みイベントは、メモリページに対してコミットされる前に捕捉される。メモリページが、値m(1,i)を有し、書き込み要求をコミットした後にm’(1,i)に更新される場合、VMは、

を計算し、すなわち、現在の値と新しい値の間のXORを計算する。したがって、VMは、データを事前に符号化して、符号化されたデータ(メモリページデータ)を生成する。
[0023]その後、VMは、信頼できる通信(例えばネットワークを介した有線又は無線通信)を使用して、update(1,i)を各パリティノードに送信する。update(1,i)をパリティノードに送信するのと平行して、又はその後に、VMは、書き込みオペレーションをメモリに対してコミットして、現在のメモリページ値m(1,i)を新しいメモリページ値m□(1,i)で置き換える。メッセージは、中継に異なる時間を費やすので、各パリティノードは、ある期間の後、最終的にupdate(1,i)を受信する。
[0024]いったんパリティノードでは、各パリティノードが、線形符号化を実行する。一実施形態では、パリティノードzは、以下に従って新しいパリティ値を計算する。

上記の演算を展開した場合、これは以下の式と等価である。

言い換えると、古いエントリm(1,i)は、新しいエントリm’(1,i)によって置き換えられる。したがって、最終的な書き込みオペレーション

は、VMにおいてコミットされた書き込みオペレーションと同期して、符号化値を正常に維持する。
[0025]XOR演算では、交換則及び結合則が成り立ち、これは、同じVMからの更新の順序を入れ替えることができ、又は複数のVMが更新を非同期に送信できることを意味することに留意されたい。図1は、2つのVMが、2つの異なる時刻に、パリティノードにおいて一緒に符号化されるそれぞれのローカルメモリページを更新しているケースを示している。時刻がT2<T1である場合でも、ステップ(6)の後に最後にコミットされる状態に変わりはないことに留意されたい。一実施形態では、プライマリノードは、特定の更新がコミットされたことを通知する肯定応答をパリティノードから受信するまで、タイムスタンプを有する更新をローカルに記憶する。
(復旧)
[0026]1つ又は複数のVM故障が検出された場合、システムは、復旧ステージに入る。故障VMの数がKよりも、すなわちパリティノードの数よりも少ない場合、システムは、故障から正常に復旧することができる。故障復旧は、複数の方法で実行することができる。2つのそのような実施形態が、以下で開示される。
[0027]一実施形態では、最初に、故障VMのすべてのメモリ状態が、異なるパリティノードにおいて復旧され、その後、VMが、パリティノードと同じ物理ロケーションにおいて活動化される。このモードは、復旧時間に関して時間がかかり、したがって、システム稼働時間は、負の影響を受ける。一実施形態では、復旧プロセスは、以下のように進行する。
[0028]ステップ1:すべての機能中のVMは、未決の更新メッセージ(すなわち、パリティノードによってコミットされた旨の肯定応答を受信していない上述のように計算された更新)と、各メモリページの現在の値を、すべての機能中のパリティノードに送信する。
[0029]ステップ2:各パリティノードzは、VMによって送信されたいずれかの未決の更新メッセージがすでにコミットされているかどうかを、シーケンス番号及びタイムスタンプを使用してチェックする。すでにコミットされている場合、対応するメッセージは無視される。コミットされていない更新は、現在の値との間でXORを求められ、今度は、その値と現在のパリティ値との間でXORが求められ、そのXORはα (z−1)倍され、この最後の値と各メモリページにおける現在のパリティ値e(z,i)との間のXORは、現在の符号化からVMの情報を排除する。したがって、各パリティノードzのメモリページiにおける現在のパリティ値は、

であり、ここで、Fは、故障VMの集合である。
[0030]ステップ3:各パリティノードzは、すべてのiについてのe”(z,i)を、他のパリティノードに送信し、行列E”=P・M(i)がもたらされ、ここで、Pは、エントリがPij=α (i−1)の、K×Nのパリティ行列Pの縮小行列(reduced matrix)であり、故障しなかったプライマリノードに対応する列を排除することによって獲得され、M(i)は、x∈Fについてのエントリm=(x,i)を有する、F×1の列ベクトルである。パリティ行列Pは事前に知られているので、Pも知られている。パリティ行列Pは、後で以下において、行列GのV部分として示される。
[0031]ステップ4:各パリティノードは、(P−1・E”を計算して、紛失シンボルを復旧し、パリティノードxは、その第iのメモリページを、第xの故障ノードを用いて更新する。
[0032]別の実施形態では、ステップ3及びステップ4が、以下のように変更される。
ステップ3:各パリティノードは、各z□≠zについて、(P−1(x,z)・e”(z)を計算し、計算結果をパリティノードz□に送信し、ここで、(P−1(x,z)は、行列の逆行列の第x行第x列である。
ステップ4:各パリティノードzは、各メモリページiについて、各z□≠zから(P−1(x,z)・e”(z)を収集し、m(x,i)=Σ(P−1(x,z)・e”(z)を計算し、ここで、総和記号は、XOR演算を表す。
[0033]別の実施形態では、復旧速度又は稼動時間を改善するため、各VMのメモリページには優先順位が付けられ、優先順位が記憶される。故障が検出された後、各故障VMについて、優先順位が最も高いメモリページが、上に列挙されたステップ1〜ステップ4を使用して最初に復旧され、VMは、上位D個のメモリページが復号された後に活動化され、ここで、Dは、事前に設定された整数である(例えば1、2、3など)。プロセスが復号されていないメモリページにアクセスしようと試みた場合、要求されたメモリページが復号されるまで、プロセスはブロックされる。優先順位は、どのメモリページが最も頻繁にアクセスされるか、及び/又は直近にアクセスされたかを監視することによって、設定することができる。
[0034]一実施形態では、本明細書で説明される技法は、多くの仮想マシンがサーバとして使用されるデータセンタ及びその信頼性に関する状況において使用され、本明細書で説明される技法は、低いハードウェアリソースコストで信頼性を提供するための方法を含む。他の実施形態は、データセンタの外部の分散ネットワーク環境において、仮想マシンに信頼性を与えることを含む。
[0035]本発明の実施形態の1つの利点は、本発明が、ちょうど適正な数のプライマリノードの間でバックアップリソースを共用することによって、適切な量のリソースを使用して、特定のレベルの信頼性(例えば99.99%の稼働時間)を提供することを可能にすることである。別の利点は、本明細書で説明される技法を使用して、異なる仮想サーバの信頼性を独自のバックアップノード上に多重化することによって、事業者は、効率的でコスト効果のよい方式で、仮想サーバを運営するアプリケーションプロバイダに信頼性を提供することができるので、事業者がサービスとして信頼性を提供することを可能にすることである。
(ネットワーク同期)
[0036]本発明のいくつかの実施形態は、複数のバックアップノードが、複数のプライマリマシン(例えば、仮想マシン上でホストされ、REMUSに類似した機構によって同期が取られるサーバ)の符号化されたバックアップ状態を保持することを仮定する。本発明の実施形態は、バックアップ状態の符号化を、ネットワーク符号化の使用によってネットワークに分散させるための機構を含む。これは、バックアップノードにおける符号化処理を削減し、ネットワークにおける帯域幅利用を削減する。
[0037]図3は、これらの技法の一例を示している。図3を参照すると、プライマリノードS1及びS2が、ノードBによってバックアップされ、ネットワーク内の経路が、S1からB及びS2からBへのトラフィックがRを通過するように、ルータRを含む場合、Rは、符号化ポイントとして識別され、RがS1からBへの同期ストリームをS2からBへの同期ストリームと合同で符号化できるように、符号化係数がRに分配される。この例では、メモリページs1及びs2は、Rにおいて、b=XOR(s1,s2)として符号化され、したがって、RからBへのトラフィックは、p1及びp2ではなくbである。このケースでは、帯域幅削減は2分の1である。本発明の実施形態は、単一バックアップの場合における任意のトポロジを扱う。すなわち、本明細書で説明される技法は、任意のトポロジにおいてBによってバックアップされる任意の集合P1,...,PNのための符号化パラメータを識別できるように使用することができる。本発明の実施形態は、ツリートポロジの場合の複数バックアップケースも扱うことができる。複数のバックアップを有する他のトポロジの場合、既存のトポロジを利用して、トポロジ内のx個のツリーを見出し、見出されたすべてのツリーに本発明の実施形態を適用する拡張を使用することができる。
[0038]本発明の実施形態を用いて構成された同じ符号を使用して、復旧帯域幅を削減し、可能性としては最小化することができる。例えば、ノードBが、3つのプライマリノードを、XOR(s1,s2,s3)という符号化を用いてバックアップする場合に、プライマリノードS3が故障したとき、仲介ルータRにおける(故障ノードS3が存在しない)同じ符号化を使用して、バックアップノードBにおいてs3のメモリページを復旧することができる。ルータRにおいて符号化が実行されない場合、このケースにおける帯域幅削減は、2分の1である。
[0039]本発明の実施形態は、x>1であるx個のプライマリノードが故障した場合は、復旧の第2ステージを規定する。このステージは、部分的に復号されたデータをx個のバックアップノードの間で交換することによって、x個のプライマリノードを完全に復旧するために必要である。基本的に、それは、逆行列を求めるための分散実行である。ネットワーク内で実行される場合、それは、x個のバックアップノードを用いる同期方法の、x個のバックアップノード自体への適用である。
[0040]少なくとも1つの実施形態は、WAN又はワイヤレスインタフェースを介したネットワークなど、(同期帯域幅と比較した場合に)帯域幅が制限されたネットワークを介して、1組のプライマリノードが、別の1組のバックアップノードを使用するためのものである。
[0041]少なくとも1つの実施形態の1つの利点は、(おそらく)最少量の帯域幅を使用して、プライマリノードとバックアップノードを同期させることである。本発明の少なくとも1つの実施形態の別の利点は、その実施形態が、故障したバックアップされたノードの状態を(最大でk個まで)復旧するための、ネットワーク分散型の復旧機構を提供することである。
(同期のための符号化)
[0042]以下の式は、バックアップノードにおける符号化方式の一実施形態を記述している。

ここで、s...sは、それぞれプライマリノードS...Sのメモリページの列ベクトルであり、b...bは、それぞれバックアップノードB...Bの符号化されたメモリページの列ベクトルであり、Gは、符号を生成する生成行列であり、

単位行列Iとファンデルモンド行列Vの連結を表す。Gの第(n+j)列は、メモリページs...sがどのように符号化され、バックアップノードBに記憶されるかを表す。一実施形態では、復号を効率的に行うことができるので、ファンデルモンド行列がここで選択される。別の実施形態では、コーシー行列を使用することができる。
[0043]データbがバックアップノードBに記憶されることを保証するための1つの明らかな方法は、すべてのプライマリノードS...Sにそれぞれのデータs...sをノードB...Bにユニキャストさせ、符号化がバックアップノードのみで実行されるようにすることである。これは、nk個の接続を使用する帯域幅集約的な動作である。マルチキャストは、帯域幅を削減するのに役立つことがあるが、ネットワーク内での符号化の実行は、帯域幅をさらに削減し、また符号化タスクをネットワークに委譲する。本発明の実施形態は、バックアップノードが、Gに従って符号化された適切なデータを受信するように、ネットワークにおいて符号化を実行するための方法を提供する。これは、後により詳細に説明される。
(プライマリノード故障が1つの場合の復旧手順)
[0044]プライマリノードSをノードB上で復旧する場合、その目標は、符号化されたデータ

を、S内の元のメモリページであるsに復号することである。それを行うため、残りのn−1個のプライマリノードは、それらのメモリページを、同期のために設計された同じネットワーク符号を使用して、バックアップノードBに送信する。その後、ノードBは、

に等しい符号化されたデータを受信する。
[0045]バックアップノードBは、この符号化されたデータと(それ自体の符号化されたデータ)bとの間のXORを求め、XOR演算の結果を係数を用いて正規化することによって、プライマリノードSへの復旧を完了する。
[0046]図4は、復旧の一例を示している。図4を参照すると、ノードBは、一緒にXORを求めたS、S、Sを表す符号化されたデータを記憶する。ノードSが故障した場合、Rは、S及びSからのデータの間でXORを求めて、それらのデータを符号化し、符号化されたデータをノードBに送信する。ノードBは、Rから受信した符号化されたデータとノードBに記憶された符号化されたデータとの間でXORを求めて、Sを復旧する。
(プライマリノード故障が2つ以上の場合の復旧手順)
[0047]Sが、故障したVMのインデックス集合を表すとし、Bが、復旧を行うためのそれぞれのバックアップノードのインデックス集合を表すとする。一実施形態では、復旧は、2つのステージにおいて実行される。第1のステージは、上で説明された1つのプライマリノード故障から復旧する際のステージと同じである。正常に動作しているn−|S|個のプライマリノードは、同期のために設計された同じネットワーク符号を使用して、それぞれのメモリページをBに属するバックアップノードに送信し、その後、Bに属するバックアップノードは、受信した符号化されたデータとそれ自体の符号化されたデータとの間のXORを求める。その結果、各バックアップノードBは、以下のような部分的に復号されたデータb□を有するようになる。

[0048]上のものは、基本的に、ファンデルモンド行列Vの部分行列である。それは、行列GS,Bによって記述することができ、ここで、各エントリ(i,j)は、以下のようになる。

これは、一般化ファンデルモンド行列としても知られており、逆行列GS,B −1を効率的に計算することができる。
[0049]第2のステージは、Bに属するすべてのバックアップノードが、それらの部分的に復号されたデータを交換することを必要とし、逆行列を乗算することによって、b□を効率的に復号する。最初に、バックアップノードBj□が、その部分的に復号されたデータb□j□を分配のためにネットワークに送信し、それを

を用いて正規化する。その後、

という形式のすべての「符号化された」データについて、バックアップノードBj□は、別のバックアップノードBから受信し、XOR演算を実行し、正規化されたデータを上記の「符号化された」データで置き換える。復旧は、Bj□が「符号化された」データの|B|−1個の部分を受信した後に完了する。
[0050]ネットワークは、行列VをGS,Bに設定し、ノードがデータをそれ自体の上に「同期」させるように符号を構成することによって、すべてのb□の様々な符号化されたコピーを分配することができる。したがって、ツリートポロジの場合に複数のバックアップに同期させるための以下で説明されるのと同じアルゴリズムを使用することができる。
[0051]図14は、ネットワーク符号化を使用して、複数の異なる符号化を複数の異なるバックアップノード上に記憶する一例を示している。図14を参照すると、VM1〜VM4が、X11、X21、X31、X41と呼ばれるそれぞれのデータを提供する。ネットワーク符号化の結果、データの2つの異なる符号化が生じ、2つの異なるバックアップノードに記憶される。具体的には、2つの符号化は、


であり、これらの符号化は、バックアップノードである物理マシン1(PM1)及び物理マシン2(PM2)上にそれぞれ記憶される。
[0052]VM1及びVM3が故障した場合、復旧手順は、PM1がデータX11を復旧し、そのデータにVMを介してアクセスできるようにすることを可能にし、またPM2がデータX31を復旧し、そのデータにVMを介してアクセスできるようにすることを可能にする。
(1つのバックアップノードに同期させるケース)
[0053]図5は、n個のプライマリノードS...Sを、レートr、r、...、rで、1つのバックアップノードBに同期させるためのアルゴリズムの一実施形態を示している。これは、レートが整数単位であることを仮定する。一実施形態では、仲介ルータでは、XOR演算のみが必要とされる。
[0054]一実施形態では、アルゴリズムは、4つの主要ステップを含む。
[0055]ステップ1:すべてのプライマリノードについて、プライマリノードSからBへの最大フロー(max flow)を計算し、r個の最短経路を選択するために、エドモンズ−カープ(Edmonds−Karp)などの最大フローアルゴリズムを使用する。
[0056]ステップ2:すべての選択された経路に基づいて、リンク依存グラフ(link dependency graph)を構築する(図5の4行〜7行)。リンク依存グラフの一例が、図6のA及び図6のBに示されている。SからBへの最大フローは、(黒矢印によって示される){5,1}及び{8,6,4,2}であり、SからBへの最大フローは、(白抜き矢印によって示される){7,2}及び{9,6,3,1}である。
[0057]ステップ3:各ソースにおいて、リンクに、符号化されていない符号語、すなわち、サイズがr×rの単位行列の行を供給し(10行)、リンク依存グラフをトポロジカルに辿る(図5の11行〜14行)。リンク依存グラフ内の各ノードの出力は、その子ノードのすべての符号語の間でXORを求めた結果である。このステップは、データが符号化されずにプライマリノードから送信された場合に、バックアップノードで受信される符号語を評価する。
[0058]ステップ4:各リンクからの符号語をプライマリノードIDによってグループ化する(図5の16行)これは、ノードiについて、サイズがr×rの正方行列を形成する。例えば、グループ化の後に形成されたn個の行列は、各ノードiに対して

である。これらの行列は、逆行列が求められ(図5の17行)、その結果は、バックアップノードBにおいて正しいパリティが受信されるように、プライマリノードにおいて各リンクに対してどのページを符号化すべきであるかを与える。図6のA及び図6のBの例では、Sの逆行列は、

であり、Sの逆行列は、

である。
[0059]図7は、図6の例に対して図5のアルゴリズムを適用した結果を示している。
(ツリートポロジの場合に複数のバックアップに同期させるためのアルゴリズム)
[0060]上で説明された符号構成アルゴリズムは、すべてのノードにおけるすべてのリンクについて、データのどの部分を符号化せずに転送すべきか、及び、データのどの部分を符号化し、既存の符号化されたストリームと組み合わせて、ツリーの残りに分配するべきか、を決定する。決定は、そのリンクを通過しているレートr...rと、ツリーの他方の側のバックアップノードのサイズに依存する。この決定と、したがって最小化された帯域幅とは、以下の最適化によって評価することができる。

ここで、

であり、ここで、Sは、ツリーの一方の側のプライマリノードの集合であり、Bは、ツリーの他方の側のバックアップノードの集合である。最適化から評価された集合Xは、プライマリノードからのどのデータをその仲介ノードにおいて符号化すべきかを示す。最適化手順の一実施形態が、図8にコード形式で示されている。
[0061]データが符号化される場合、ファンデルモンド行列Vの適切なエントリから係数がコピーされる。仲介ノードにおける各リンクに対する符号化オペレーションは、サイズがn×kの行列Mと、1×nの2値ベクトルfによって記述することができる。

ここで、Fは、符号化すべきではないが、そのリンク上で転送すべきプライマリノードからのフローを表し、fは、そのリンクについて、その仲介ノードにおいて符号化すべきプライマリノードからのフローを表し、gは、符号化オペレーションの出力であり、行列Mは、符号化手順の係数を与え、gINは、それ以前のノードからのすでに符号化されているフローを表す。g及びgINの第jのエントリは、バックアップノードjに向かう符号化されたデータを表す。
[0062]図8は、以下の3つの主要ステップを有する主要アルゴリズムの一実施形態をコード形式で示している。
[0063]ステップ1:ノードηにルートを有する各サブツリーについて、ネットワークの残りに寄与すべきプライマリノードデータの集合cηと、ネットワークの残りから得る必要があるプライマリノードデータの集合dηと、そのサブツリー内のバックアップノードの数βηとを計算する。図9のリストは、ツリーの底部から上方に向けての1回のスイープで、この計算アクションを実行する。
[0064]アルゴリズムは、深さHのノードであるツリーのリーフにおいて開始し、ここで、Hは、ツリーのレベルの数である(Hはリーフであり、0はツリーのルートである)。このレベルにおける各ノードついて、アルゴリズムは、ノードがソースであるか、それともバックアップであるかをチェックする(3行)。ノードがソースである場合(3行)、アルゴリズムは、このノードをデータソースのリストに追加し、ノードがバックアップである場合(4行)、アルゴリズムは、このノードをバックアップのリストに追加し(5行)、このツリーの外部のノードを潜在的ソースのリストに追加する(5行)。
[0065]その後、アルゴリズムは、1度に1レベルだけツリーを上昇することによって、再帰的に進行する。各レベルにおいて、アルゴリズムは、このレベルのすべてのノードを検討する(8行)。各ノードについて、アルゴリズムは、そのサブツリー内のすべてのソース(9行)と、そのサブツリー内のすべてのバックアップ(10行)とを調べる。サブツリー内にバックアップノードが存在する場合(11行)、これらのソースのインデックスを除去することによって、1組のデマンド(demand)を計算する。これは、集合d\etaが、そのサブツリーの外部のソースのインデックスのみから構成されることを意味する。そのサブツリー内にソースが存在する場合、ソースのリストには、これらのソースのインデックスが投入される(12行)。
[0066]したがって、このアルゴリズムの結果は、グラフ内の各ノードについての、そのサブツリーの内部のバックアップのリスト\betaと、そのサブツリーの外部のソースのリストdと、そのサブツリーの内部のソースのリストcである。
[0067]ステップ2:アップリンクのレート及び符号化決定を、ツリーの最低ノードから開始して最高ノードまで、図8に示されたアルゴリズムを使用して評価する。
[0068]アルゴリズムは以下のように機能し、すなわち、アルゴリズムは、ツリーの最低レベル(上で説明されたようにレベルH)から開始して、その後、各レベルを再帰的に検討し、最後に、ルート直下のレベルに到達する(6行)。各ノードについて、アルゴリズムは、図10のアルゴリズムを使用して、最小達成可能レートを計算する(8行)。アルゴリズムは、図10のアルゴリズムに、入力として、サブツリー内のバックアップの数とサブツリー内のソースの集合とを与え、この図10のアルゴリズムから、戻りとして、符号化されるソースの集合Xとしてのソースの集合の一区分と、符号化されないソースの集合F_\eta^Uと、最小達成可能レートを受け取る。
[0069]その後、図8のアルゴリズムは、この最小達成可能レートをサポートするのに十分な帯域幅が存在するかどうかをチェックする(10行)。存在しない場合は、ソース/バックアップ同期をネットワークによってサポートすることができず、存在する場合は、アルゴリズムは、図11のアルゴリズムを使用して、レートを更新する。
[0070]図11のアルゴリズムは、入力として、X内の符号化されるソースからのフローの集合fと、F_\eta^∪内の符号化されないソースからのフローの集合Fを取る。f内の各フローについて、アルゴリズムは、この特定のフローのため、及びサブツリーの外部の宛先の集合のため、ファンデルモンド係数を使用することによって符号を計算する(4行、ここで、iは、f内のフローに対応し、jは、サブツリーの外部のバックアップインデックスに対応する)。
[0071]符号化決定が行われると、図11に示されたアルゴリズムは、アップリンクのためにそのノードに符号を植え付ける。集合Λは、すでに符号化されたフローを記録する。
[0072]ステップ3:ツリーのルートからリーフノードに向かう各ダウンリンクのレートを評価する。符号化決定は、図8の12行〜19行に示されたアルゴリズムを使用して獲得される。図12に示されるアルゴリズムは、符号化係数を適切に設定するためのアルゴリズムの一実施形態である。
[0073]ダウンリンクを設定するため、図8のアルゴリズムは、ツリーを下降し(12行)、各ノードについて、アルゴリズムは、親ノードからの寄与を受ける符号化されていないフローF^D_\etaと、子ノードからの符号化されていないフローF^U_\eta’の和集合としての、符号化されていないフローのその集合をチェックする(14行)。各子ノードについて、ノードは、その子ノードのサブツリー内のバックアップソースの数と、この子ノードのサブツリーの内部のバックアップに寄与する、この子ノードのサブツリーの外部のソースとに基づいて、最小レートをチェックする(16行)。そのレートが利用可能な帯域幅よりも大きい場合(18行)、ソース/バックアップの組み合わせは達成可能ではない。それが達成可能な場合、符号化されたフローは、図12のアルゴリズムを使用して計算される。
[0074]図12のアルゴリズムは、符号化されないフローFを手付かずのまま残し(1行)、符号化されるフローのうちのフローfについて(2行)、アルゴリズムは、フローiの寄与がどのバックアップノードjに行くかを考慮して(3行)、ファンデルモンド行列V(i,j)から適切な係数を抽出する。
[0075]ステップ2及びステップ3のいかなる時点でも、それらのリンクの残余の帯域幅が、同期レートr...rをサポートするのに十分でない場合、アルゴリズムは、これを検出し、エラーを返す。
(例示的な同期プロセス)
[0076]図13は、複数のマシンのメモリ状態を1組の1つ又は複数のバックアップノード上に同期させるためのプロセスの一実施形態を示している。プロセスは、ハードウェア(回路、専用ロジックなど)、(汎用コンピュータシステム若しくは専用マシン上で実行される)ソフトウェア、又は両方の組み合わせを含み得る、処理ロジックによって実行される。一実施形態では、このプロセスは、1組の1つ又は複数のバックアップノードに通信可能に結合された複数のマシンを有するネットワーク環境において生じる。一実施形態では、マシンは、仮想マシン又は物理マシンである。
[0077]図13を参照すると、プロセスは、処理ロジックが、各マシンのメモリ状態に対する更新と各マシンのメモリ状態の直前のバージョンとの間でビット毎の排他的OR(XOR)演算を実行して、事前に符号化された変更を生成することによって開始する(処理ブロック1301)。一実施形態では、これは、プライマリノードによって実行される。一実施形態では、メモリ状態は、メモリページを含む。
[0078]次に、処理ロジックは、事前に符号化された変更を1つ又は複数のバックアップノードの各々に送信する(処理ブロック1302)。一実施形態では、これは、プライマリノードによって実行される。
[0079]次に、処理ロジックは、事前に符号化された変更を1つ又は複数のバックアップノードの各々において受信し、事前に符号化された変更は、複数のマシンの各1つ又は複数についてのメモリ状態に対する変更を事前に符号化することによって生成される(処理ブロック1303)。一実施形態では、マシンの1つ又は複数についてのメモリ状態に対する事前に符号化された変更は、各マシンのメモリ状態に対する変更と、前記各マシンのメモリ状態の直前のバージョンとに基づいて計算される。
[0080]次に、処理ロジックは、マシンの2つ以上にわたって、事前に符号化された変更を符号化することによって、符号化されたメモリ状態を生成する(処理ブロック1304)。
[0081]その後、処理ロジックは、1つ又は複数のバックアップノードの1つにおいて、マシンのうちの故障した1つについての1つ又は複数のメモリ状態を復旧する(処理ブロック1305)。
[0082]一実施形態では、事前に符号化された変更を符号化することによって符号化されたメモリ状態を生成するステップは、1つ又は複数のバックアップノードの各々において行われ、符号化されたメモリ状態を生成するステップは、複数のマシンのうちの異なるマシンのメモリページの間でビット毎の排他的OR(XOR)演算を実行するサブステップを含む。そのようなケースでは、少なくとも1つのマシンのメモリ状態の復旧は、1つの物理ロケーションに配置されたバックアップノードの1つにおいて行われ、その後、仮想マシンが、復旧されたメモリ状態を用いて、その物理ロケーションにおいて活動化されて、故障したマシンに取って代わる。
[0083]一実施形態では、符号化されたメモリ状態を生成するステップは、複数のマシンと1つ又は複数のバックアップノードの間に通信可能に結合された仲介ノードにおいてネットワーク符号化を実行するサブステップを含み、そのサブステップは、複数のマシンのうちの異なるマシンのメモリページの間でビット毎の排他的OR(XOR)演算を実行することを含む。そのようなケースでは、符号化されたメモリ状態は、1つ又は複数のバックアップノードに送信される。複数のマシンのうちの故障した1つについての1つ又は複数のメモリ状態を復旧する場合、復旧は、1つ又は複数のバックアップノードにおいて行われ、複数のマシンのうちの故障していない異なるマシンのメモリページの間でビット毎の排他的OR(XOR)演算を実行することによって、仲介ノードにおいてネットワーク符号化を実行して、新しい符号化されたメモリ状態を生成し、新しい符号化されたメモリ状態を1つ又は複数のバックアップノードのうちの少なくとも1つに送信し、新しい符号化されたメモリ状態と、少なくとも1つのバックアップノードに以前に記憶された符号化されたメモリ状態との間でビット毎の排他的OR(XOR)演算を実行することによって、故障したマシンのメモリページを生成することによって実行される。
[0084]物理マシン、仮想マシン、プライマリノード、及びバックアップノードの各々は、情報を伝達するための通信機構又は機能、上で説明されたように情報を処理するための1つ又は複数のプロセッサ又は処理コア、並びに情報及びプロセッサ又は処理コアによって実行される命令を記憶するためのランダムアクセスメモリ(RAM)又は他のストレージを含むことに留意されたい。
[0085]上述の説明を読んだ後には、本発明の多くの修正形態及び変更形態が、当業者には疑いもなく明らかになるが、例として示され、説明されたどの特定の実施形態も、限定と見なされることを決して意図していないことを理解されたい。したがって、様々な実施形態の詳細についての言及は、本発明に必須と見なされる特徴のみをそれこそが列挙する特許請求の範囲を限定することを意図してしない。
[0009]本発明は、以下で与えられる詳細な説明から、また本発明の様々な実施形態についての添付の図面から、より十分に理解されるが、そのような図面は、本発明を特定の実施形態に限定するものと解釈されるべきではなく、説明及び理解のためのものにすぎない。
メモリ書き込みプロセス、及び、パリティノードにおいて符号化を更新するためのプロセスの、データフロー図の一実施形態を示す図である。 プライマリノードとして4つの仮想マシン(VM)を、またパリティノードとして2つの物理マシン(PM)を、用いて例示的に示された、故障検出後の復旧ステージを表すデータフロー図の一実施形態を示す図である。 本発明の一実施形態のネットワーク符号化プロセスを説明する同期例を示す図である。 本発明の一実施形態の復旧プロセスを説明する復旧例を示す図である。 バックアップが1つの場合にソースVMのメモリページにわたって符号化を行うためのアルゴリズムの一実施形態を示す図である。 (A)及び(B)図5のアルゴリズムの例を示す図である。 図5のアルゴリズムの解法を示す図である。 ツリー及び複数のバックアップノードの、別のアルゴリズムの一実施形態を示す図である。 図8のアルゴリズムのevalAllSubTreesプロシージャの一実施形態を示す図である。 図8のアルゴリズムのgetMinSetRateプロシージャの一実施形態を示す図である。 仲介ルータにおいて使用するためのアップリンクプロシージャの一実施形態を示す図である。 仲介ルータによって使用するためのダウンリンクプロシージャの一実施形態を示す図である。 複数のマシンのメモリ状態を1組の1つ又は複数のバックアップノード上に同期させるためのプロセスの一実施形態を示す図である。
[0051]ネットワーク符号化を使用して、複数の異なる符号化を複数の異なるバックアップノード上に記憶する一例を示しているVM1〜VM4が、X11、X21、X31、X41と呼ばれるそれぞれのデータを提供する。ネットワーク符号化の結果、データの2つの異なる符号化が生じ、2つの異なるバックアップノードに記憶される。具体的には、2つの符号化は、
であり、これらの符号化は、バックアップノードである物理マシン1(PM1)及び物理マシン2(PM2)上にそれぞれ記憶される。

Claims (24)

  1. 複数のマシンのメモリ状態を1組の1つ又は複数のバックアップノード上に同期させるための方法であって、
    事前に符号化された変更を前記1つ又は複数のバックアップノードの各々において受信するステップであって、事前に符号化された変更が、前記複数のマシンの各1つ又は複数についての前記メモリ状態に対する変更を事前に符号化することによって生成されるステップと、
    前記複数のマシンの2つ以上にわたって、前記事前に符号化された変更を符号化することによって、符号化されたメモリ状態を生成するステップと、
    を含む方法。
  2. 前記複数のマシンの前記1つ又は複数についての前記メモリ状態に対する、前記事前に符号化された変更が、各マシンのメモリ状態に対する更新と、前記各マシンの前記メモリ状態の直前のバージョンとに基づいて計算される、請求項1に記載の方法。
  3. 各マシンの前記メモリ状態に対する前記更新と、前記各マシンの前記メモリ状態の前記直前のバージョンとの間のビット毎の排他的OR(XOR)演算を実行して、前記事前に符号化された変更を生成するステップと、
    前記事前に符号化された変更を前記1つ又は複数のバックアップノードの各々に送信するステップと、
    をさらに含む、請求項1に記載の方法。
  4. 前記事前に符号化された変更を符号化することによって、前記符号化されたメモリ状態を生成するステップが、前記1つ又は複数のバックアップノードの前記各々において行われる、請求項1に記載の方法。
  5. 前記符号化されたメモリ状態を生成するステップが、
    前記複数のマシンのうちの異なるマシンのメモリページにわたって、ビット毎の排他的OR(XOR)演算を実行するサブステップ
    を含む、請求項4に記載の方法。
  6. 1つの物理ロケーションに配置された前記バックアップノードの1つにおいて、前記複数のマシンの1つについてのメモリ状態を、前記1つのマシンが故障した場合に、復旧するステップと、
    その後、前記物理ロケーションにおいて、前記復旧されたメモリ状態を用いて、仮想マシンを活動化するステップと、
    をさらに含む、請求項5に記載の方法。
  7. 1つの物理ロケーションに配置された前記バックアップノードの1つにおいて、前記複数のマシンの1つについてのメモリ状態を、前記1つのマシンが故障した場合に、復旧されたメモリ状態のサブセットを復号することによって復旧するステップと、
    その後、復旧されたメモリ状態の前記サブセットを用いて、仮想マシンを活動化するステップと、
    をさらに含む、請求項1に記載の方法。
  8. 前記符号化されたメモリ状態を生成するステップが、
    前記複数のマシンと前記1つ又は複数のバックアップノードとの間に通信可能に結合された仲介ノードにおいて、ネットワーク符号化を実行するサブステップであって、前記複数のマシンのうちの異なるマシンのメモリページにわたって、ビット毎の排他的OR(XOR)演算を実行することを含むサブステップを含み、
    前記方法が、前記符号化されたメモリ状態を前記1つ又は複数のバックアップノードに送信するステップをさらに含む、
    請求項1に記載の方法。
  9. 前記1つ又は複数のバックアップノードの1つにおいて、前記複数のマシンのうちの故障した1つについての1つ又は複数のメモリ状態を、
    前記複数のマシンのうちの故障していない異なるマシンのメモリページにわたって、ビット毎の排他的OR(XOR)演算を実行することによって、前記仲介ノードにおいて、ネットワーク符号化を実行して、新しい符号化されたメモリ状態を生成し、
    前記新しい符号化されたメモリ状態を前記1つ又は複数のバックアップノードのうちの少なくとも1つに送信し、
    前記新しい符号化されたメモリ状態と、前記少なくとも1つのバックアップノードに以前に記憶された符号化されたメモリ状態との間のビット毎の排他的OR(XOR)演算を実行することによって、故障した前記マシンのメモリページを生成する
    ことによって復旧するステップをさらに含む、請求項8に記載の方法。
  10. 前記マシンが、仮想マシン又は物理マシンである、請求項1に記載の方法。
  11. 1組の1つ又は複数のバックアップノードに通信可能に結合された複数のマシンを備え、
    前記複数のマシンが、事前に符号化された変更を生成し、前記1つ又は複数のバックアップノードの各々に送信し、複数のマシンが、前記複数のマシンの各1つ又は複数についての前記メモリ状態に対する変更を事前に符号化することによって、事前に符号化された変更を生成し、
    さらに、前記1組のうちの少なくとも1つのバックアップノードが、前記複数のマシンの2つ以上にわたって、前記事前に符号化された変更を符号化することによって、符号化されたメモリ状態を生成する、
    ネットワーク環境。
  12. 少なくとも1つのマシンが、各マシンのメモリ状態に対する更新と、前記各マシンの前記メモリ状態の直前のバージョンとに基づいて、前記複数のマシンの前記1つ又は複数についての前記メモリ状態に対する、前記事前に符号化された変更を計算する、請求項11に記載のネットワーク環境。
  13. 前記複数のマシンのうちの少なくとも1つのマシンが、前記1つのマシンの前記メモリ状態に対する前記更新と、前記1つのマシンの前記メモリ状態の前記直前のバージョンとの間のビット毎の排他的OR(XOR)演算を実行して、前記事前に符号化された変更を生成し、その後、前記事前に符号化された変更を前記1つ又は複数のバックアップノードの各々に送信する、請求項11に記載のネットワーク環境。
  14. 前記1組のうちの少なくとも1つのバックアップノードが、前記事前に符号化された変更を符号化することによって、前記符号化されたメモリ状態を生成し、この生成が、前記1つ又は複数のバックアップノードの前記各々において行われる、請求項11に記載のネットワーク環境。
  15. 前記少なくとも1つのバックアップノードが、前記複数のマシンのうちの異なるマシンのメモリページにわたって、ビット毎の排他的OR(XOR)演算を実行することによって、前記符号化されたメモリ状態を生成する、請求項14に記載のネットワーク環境。
  16. 前記1組のうちの前記バックアップノードの前記少なくとも1つが、1つの物理ロケーションに配置され、前記複数のマシンの1つについてのメモリ状態を、前記1つのマシンが故障した場合に、復旧し、その後、前記物理ロケーションにおいて、前記復旧されたメモリ状態を用いて、仮想マシンを活動化する、請求項15に記載のネットワーク環境。
  17. 1つ又は複数の仲介ノードを介して、1組の1つ又は複数のバックアップノードに通信可能に結合された複数のマシンを備え、
    前記複数のマシンが、事前に符号化された変更を生成し、前記1つ又は複数のバックアップノードの各々に送信し、複数のマシンが、前記複数のマシンの各1つ又は複数についての前記メモリ状態に対する変更を事前に符号化することによって、事前に符号化された変更を生成し、
    さらに、前記仲介ノードの少なくとも1つが、前記複数のマシンのうちの異なるマシンのメモリページにわたって、ビット毎の排他的OR(XOR)演算を実行することを含むネットワーク符号化を実行することによって、符号化されたメモリ状態を生成し、前記符号化されたメモリ状態を前記1つ又は複数のバックアップノードに送信する、
    ネットワーク環境。
  18. 前記1つ又は複数のバックアップノードのうちの1つが、前記複数のマシンのうちの故障した1つのマシンについての1つ又は複数のメモリ状態を、新しい符号化されたメモリデータを使用し、前記新しい符号化されたメモリ状態と、前記少なくとも1つのバックアップノードに以前に記憶された符号化されたメモリ状態との間のビット毎の排他的OR(XOR)演算を実行することによって、故障した前記マシンのメモリページを生成することによって復旧し、さらに、前記新しい符号化されたメモリデータが、前記複数のマシンのうちの故障していない異なるマシンのメモリページにわたって、ビット毎の排他的OR(XOR)演算を実行することによって、新しい符号化されたメモリ状態を生成した前記仲介ノードの1つから受信される、請求項17に記載のネットワーク環境。
  19. 前記マシンが、仮想マシン又は物理マシンである、請求項17に記載のネットワーク環境。
  20. システムによって実行された場合に、複数のマシンのメモリ状態を1組の1つ又は複数のバックアップノード上に同期させるための方法を前記システムに実行させる命令が記憶された、1つ又は複数の非一時的なコンピュータ可読記憶媒体を有する製造物品であって、前記方法が、
    事前に符号化された変更を前記1つ又は複数のバックアップノードの各々において受信するステップであって、事前に符号化された変更が、前記複数のマシンの各1つ又は複数についての前記メモリ状態に対する変更を事前に符号化することによって生成されるステップと、
    前記複数のマシンの2つ以上にわたって、前記事前に符号化された変更を符号化することによって、符号化されたメモリ状態を生成するステップと、
    を含む、製造物品。
  21. 前記方法が、
    各マシンの前記メモリ状態に対する更新と、前記各マシンの前記メモリ状態の直前のバージョンとの間のビット毎の排他的OR(XOR)演算を実行して、前記事前に符号化された変更を生成するステップと、
    前記事前に符号化された変更を前記1つ又は複数のバックアップノードの各々に送信するステップと、
    をさらに含む、請求項20に記載の製造物品。
  22. 前記符号化されたメモリ状態を生成するステップが、前記複数のマシンのうちの異なるマシンのメモリページにわたって、ビット毎の排他的OR(XOR)演算を実行するサブステップを含む、請求項20に記載の製造物品。
  23. 前記符号化されたメモリ状態を生成するステップが、前記複数のマシンと前記1つ又は複数のバックアップノードとの間に通信可能に結合された仲介ノードにおいて、ネットワーク符号化を実行するサブステップであって、前記複数のマシンのうちの異なるマシンのメモリページにわたって、ビット毎の排他的OR(XOR)演算を実行することを含むサブステップを含み、
    前記方法が、前記符号化されたメモリ状態を前記1つ又は複数のバックアップノードに送信するステップをさらに含む、
    請求項20に記載の製造物品。
  24. 前記方法が、前記1つ又は複数のバックアップノードの1つにおいて、前記複数のマシンのうちの故障した1つについての1つ又は複数のメモリ状態を、
    前記複数のマシンのうちの故障していない異なるマシンのメモリページにわたって、ビット毎の排他的OR(XOR)演算を実行することによって、前記仲介ノードにおいて、ネットワーク符号化を実行して、新しい符号化されたメモリ状態を生成し、
    前記新しい符号化されたメモリ状態を前記1つ又は複数のバックアップノードのうちの少なくとも1つに送信し、
    前記新しい符号化されたメモリ状態と、前記少なくとも1つのバックアップノードに以前に記憶された符号化されたメモリ状態との間のビット毎の排他的OR(XOR)演算を実行することによって、故障した前記マシンのメモリページを生成する
    ことによって復旧するステップをさらに含む、請求項23に記載の製造物品。
JP2011167387A 2010-07-29 2011-07-29 バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置 Pending JP2012033169A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US36902810A 2010-07-29 2010-07-29
US61/369,028 2010-07-29

Publications (1)

Publication Number Publication Date
JP2012033169A true JP2012033169A (ja) 2012-02-16

Family

ID=45846443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011167387A Pending JP2012033169A (ja) 2010-07-29 2011-07-29 バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置

Country Status (1)

Country Link
JP (1) JP2012033169A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016051512A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
WO2017081747A1 (ja) * 2015-11-10 2017-05-18 株式会社日立製作所 分散ストレージシステム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887424A (ja) * 1994-09-16 1996-04-02 Toshiba Corp 電子計算機
JP2003099210A (ja) * 2001-09-25 2003-04-04 Toshiba Corp 仮想的なraid装置を有するクラスタシステム及び同システム用のコンピュータ
US20050102548A1 (en) * 2003-10-30 2005-05-12 Volker Lindenstruth Method and apparatus for enabling high-reliability storage of distributed data on a plurality of independent storage devices
JP2008117395A (ja) * 2006-10-31 2008-05-22 Hewlett-Packard Development Co Lp フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正
US20080320259A1 (en) * 2007-06-21 2008-12-25 Garg Vijay K Method for Providing Fault Tolerance to Multiple Servers
US20090213854A1 (en) * 2008-02-21 2009-08-27 Telcordia Technologies, Inc. Efficient, fault-tolerant multicast networks via network coding

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887424A (ja) * 1994-09-16 1996-04-02 Toshiba Corp 電子計算機
JP2003099210A (ja) * 2001-09-25 2003-04-04 Toshiba Corp 仮想的なraid装置を有するクラスタシステム及び同システム用のコンピュータ
US20050102548A1 (en) * 2003-10-30 2005-05-12 Volker Lindenstruth Method and apparatus for enabling high-reliability storage of distributed data on a plurality of independent storage devices
JP2008117395A (ja) * 2006-10-31 2008-05-22 Hewlett-Packard Development Co Lp フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正
US20080320259A1 (en) * 2007-06-21 2008-12-25 Garg Vijay K Method for Providing Fault Tolerance to Multiple Servers
US20090213854A1 (en) * 2008-02-21 2009-08-27 Telcordia Technologies, Inc. Efficient, fault-tolerant multicast networks via network coding

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016051512A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
WO2016052665A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
GB2545290A (en) * 2014-09-30 2017-06-14 Hitachi Ltd Distributed storage system
US10185624B2 (en) 2014-09-30 2019-01-22 Hitachi, Ltd. Distributed storage system
US10496479B2 (en) 2014-09-30 2019-12-03 Hitachi, Ltd. Distributed storage system
US11036585B2 (en) 2014-09-30 2021-06-15 Hitachi, Ltd. Distributed storage system
GB2545290B (en) * 2014-09-30 2021-07-07 Hitachi Ltd Distributed storage system
US11487619B2 (en) 2014-09-30 2022-11-01 Hitachi, Ltd. Distributed storage system
US11886294B2 (en) 2014-09-30 2024-01-30 Hitachi, Ltd. Distributed storage system
WO2017081747A1 (ja) * 2015-11-10 2017-05-18 株式会社日立製作所 分散ストレージシステム
JPWO2017081747A1 (ja) * 2015-11-10 2018-08-09 株式会社日立製作所 分散ストレージシステム
US10740189B2 (en) 2015-11-10 2020-08-11 Hitachi, Ltd. Distributed storage system

Similar Documents

Publication Publication Date Title
CN109643258B (zh) 使用高速率最小存储再生擦除代码的多节点修复
Rashmi et al. Explicit construction of optimal exact regenerating codes for distributed storage
US8522073B2 (en) Distributed storage of recoverable data
US9722637B2 (en) Construction of MBR (minimum bandwidth regenerating) codes and a method to repair the storage nodes
Cadambe et al. Optimal repair of MDS codes in distributed storage via subspace interference alignment
US20140317222A1 (en) Data Storage Method, Device and Distributed Network Storage System
WO2020047707A1 (zh) 分布式存储系统的数据编码、解码及修复方法
US9104603B2 (en) Method of exact repair of pairs of failed storage nodes in a distributed data storage system and corresponding device
US11500725B2 (en) Methods for data recovery of a distributed storage system and storage medium thereof
CN111697976B (zh) 一种基于分布式存储的rs纠删快速解码方法及系统
CN113505019B (zh) 一种纠删码数据及校验恢复方法、装置、设备及可读介质
CN114153651B (zh) 一种数据编码方法、装置、设备及介质
KR20180030935A (ko) 분산 저장 시스템에서 엑스에프 소거 코드를 구현하기 위한 장치 및 방법
Hollmann Storage codes—Coding rate and repair locality
Tebbi et al. A code design framework for multi-rack distributed storage
WO2014012246A1 (zh) 用于分布式网络存储的自修复码的编码、重构和恢复方法
JP2012033169A (ja) バックアップシステムにおける符号化を使用して、ライブチェックポインティング、同期、及び/又は復旧をサポートするための方法及び装置
Zorgui et al. Centralized multi-node repair in distributed storage
CN108199720B (zh) 一种减小存储开销和提高修复效率的节点修复方法及系统
CN108628697B (zh) 一种基于二进制的节点修复方法及系统
CN113098660B (zh) 一种基于部分复制技术的不等局部可修复喷泉码构造方法
Mahdaviani et al. Bandwidth adaptive & error resilient regenerating codes with minimum repair bandwidth
Wang LT codes for efficient and reliable distributed storage systems revisited
US9450617B2 (en) Distribution and replication of erasure codes
Yang Application-driven coding techniques: From cloud storage to quantum communications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140725

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150804

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160329

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160511

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161018