JP6316211B2 - 間隔制御複製 - Google Patents

間隔制御複製 Download PDF

Info

Publication number
JP6316211B2
JP6316211B2 JP2014559954A JP2014559954A JP6316211B2 JP 6316211 B2 JP6316211 B2 JP 6316211B2 JP 2014559954 A JP2014559954 A JP 2014559954A JP 2014559954 A JP2014559954 A JP 2014559954A JP 6316211 B2 JP6316211 B2 JP 6316211B2
Authority
JP
Japan
Prior art keywords
write
interval
node
remote
local
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
JP2014559954A
Other languages
English (en)
Other versions
JP2015513742A5 (ja
JP2015513742A (ja
Inventor
ダッシュ・プラサンタ・アール
Original Assignee
ベリタス テクノロジーズ エルエルシー
ベリタス テクノロジーズ エルエルシー
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 ベリタス テクノロジーズ エルエルシー, ベリタス テクノロジーズ エルエルシー filed Critical ベリタス テクノロジーズ エルエルシー
Publication of JP2015513742A publication Critical patent/JP2015513742A/ja
Publication of JP2015513742A5 publication Critical patent/JP2015513742A5/ja
Application granted granted Critical
Publication of JP6316211B2 publication Critical patent/JP6316211B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/2071Error 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 using a plurality of controllers
    • G06F11/2074Asynchronous techniques
    • 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/2071Error 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 using a plurality of controllers
    • G06F11/2076Synchronous techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本明細書は、複製に関する。具体的には、本明細書は、分散環境において複製を管理することに関する。
企業は現在、それらの事業を経営するためにオンラインの、頻繁にアクセスされ、常に変化しているデータに全面的に依存している。このデータの可用性を阻害する予定外の事象は、事業運用に重大な損害を与えかねない。加えて、自然災害又は何らかの他の原因による、いかなる永久的データ損失も、事業の継続生存性に対して重大なマイナスの影響を及ぼすことになる可能性がある。したがって、災害時に、企業はデータ損失を排除又は最小化し、使用可能なデータを用いて短時間で復旧するよう、準備していなければならない。
複製は、データ損失を抑制し、データの可用性を向上するために利用される1つの技法であり、データの複製されたコピーが、1つ以上のリモートサイト又はノードに分散され、記憶される。例えば、サイト移行を実施している際、データを記憶している物理的ディスク、又はこのようなディスクと関連するノードに障害が発生する場合がある。このような障害事象において、データの完全性及び可用性を保証するために、リモートで複製されたデータのコピーが利用される場合がある。複製は、強力なデータストレージソリューションを提供するために、クラスタリング等、他の高可用性技法と頻繁に組み合わされる。
本出願の実施形態は、添付の図面を参照することによってより良く理解され、その多くの目的、特徴、及び利点が当業者に明らかにされ得る。
一実施形態に従う、分散ストレージシステムを図示するブロック図である。 1つ以上の実施形態に従う、間隔制御複製におけるノードの操作のための方法を図示するフローチャートである。 1つ以上の実施形態に従う、間隔制御複製におけるノードの操作のための方法を図示するフローチャートである。 1つ以上の実施形態に従う、間隔制御複製におけるノードの操作のための方法を図示するフローチャートである。 1つ以上の実施形態に従う、間隔制御複製におけるノードの操作のための方法を図示するフローチャートである。 一実施形態に従う、間隔制御複製におけるコーディネータノードの操作のための方法を図示するフローチャートである。 一実施形態に従う、間隔制御複製中の分散ストレージシステムのノードによるアクセスを図示する図である。 一実施形態に従う、間隔制御複製中の分散ストレージシステムのノードによるアクセスを図示する図である。 一実施形態に従う、間隔制御複製中の分散ストレージシステムのノードによるアクセスを図示する図である。 一実施形態に従う、間隔制御複製中の分散ストレージシステムのノードによるアクセスを図示する図である。 一実施形態に従う、間隔制御複製中の多様なノードとストレージデバイスとの間の通信を図示する図である。 一実施形態に従う、間隔制御複製中の多様なノードとストレージデバイスとの間の通信を図示する図である。 一実施形態に従う、間隔制御複製中の多様なノードとストレージデバイスとの間の通信を図示する図である。 一実施形態に従う、間隔制御複製におけるコーディネータノードの操作のための方法を図示するフローチャートである。 一実施形態に従う、ノードの多様な構成要素を図示するブロック図である。 一実施形態に従う、コーディネータノードの多様な構成要素を図示するブロック図である。 本出願の実施形態を実装することができるネットワークアーキテクチャを図示するブロック図である。 本出願の実施形態を実装するためのコンピュータシステムの一例を図示するブロック図である。
本出願の実施形態は、様々な修正及び代替形態の影響を受け入れることができるが、特定の実施形態が、図面及び詳細な説明における例として提供される。図面及び詳細な説明は、実施形態を開示される特定の形態に限定することを意図するものではないことが理解されるべきである。その代わりに、本発明は、添付の請求項によって定義されるような本発明の趣旨及び範囲内にある、全ての修正、等価物、及び代替物を包含する。
いくつかの実施形態に関連して本発明について記載してきたが、本発明は、本明細書において説明される特定の形態に限定されることを意図するものではない。反対に、添付の請求項によって定義されるような本発明の範囲内に正当に含まれ得るような代替例、修正、及び等価物を包含するものとする。
最新分散ストレージ環境は、1つ以上の相互接続ネットワークを介して接続される複数のストレージオブジェクトを含むことができる。相互接続ネットワークは、分散共有ストレージ環境の多様な要素を接続するためのインフラストラクチャを提供する。ストレージシステムは、データの完全性、整合性、及び可用性を確実にするために、データ冗長機構を頻繁に使用する。データ冗長の他の使用として、データのバックアップ、分散負荷共有、災害復旧、又はポイントインタイム解析及びレポートを挙げることができる。データ冗長に対する1つの手法は、1次ストレージシステムから、2次ストレージ又は複製されたストレージシステムへデータをコピー又は複製することである。換言すれば、ストレージシステムは、データブロックの1次コピーに書き込まれたデータを、他の2次ストレージシステム内のそのデータブロックの冗長又は複製されたコピーに重複することができる。いくつかの設計において、このコピー動作は、データI/Oが実施されるときに同期的に実行される。他の設計において、この複製は、設計の目的及び使用される技術に依存して、2次ストレージシステムのデータ状態が、一瞬から長時間までのいずれかであり得る時間間隔遅れて、2次ストレージシステムのデータ状態と非同期的に実施される場合がある。周期型複製も使用することができ、2次ストレージシステムへの書込みは、例えば、毎秒単位で集積され、バッチで書き込まれる。
図1は、ノード及びストレージの集合体を含む、分散システム100を図示するブロック図である。分散システム100、例えば、クラスタは、いくつかのノード、例えば、ノード102(1)、102(2)〜102(n)及びコーディネータノード104を含む。それぞれのノードは、ネットワーク、例えば、ネットワーク116を使用して、1次ストレージ、例えば、ストレージ112と通信することができる。更に、それぞれのノードは、ネットワーク、例えば、ネットワーク116を使用して、2次ストレージ、例えば、ストレージ114と通信することができる。ネットワーク116は、ローカルエリアネットワーク(LAN)と、ワイドエリアネットワーク(WAN)と、ストレージエリアネットワーク(SAN)と、イーサネット(登録商標、以下同じ)と、及び/又はこれらの任意の組み合わせとを含むことができる。分散システム100は、異なる数のノードを含む場合があることに注意されたい。
ノード102(1)〜102(n)はそれぞれ、アプリケーション106(1)〜106(n)のうちの1つ以上と、管理モジュール108(1)〜108(n)のうちの1つ以上とを含むことができる。同様に、コーディネータノード104は、アプリケーション106(3)と、管理モジュール110とを含むことができる。このようなアプリケーション106(1)〜106(n)はそれぞれ、ストレージからの読出し及びストレージへの書込みを発生させることができる。例えば、アプリケーション106(1)は、1次ストレージ112への書込みを発生させることができる。ノード102(1)は次いで、この1次ストレージ112への書込みを実施することができる。この書込みは、管理モジュール106(1)を使用すること等によって、2次ストレージ114へ複製することもできる。管理モジュール106(1)は、ノード102(1)、並びに分散システム100内の他のノードのための複製及び他のサービスを実施することができる。一実施形態において、それぞれのアプリケーションが所定データへの書込みを発行すると、そのアプリケーションは、時間的に最初の書込みが完了するまで、このデータへ(又は依存データへ)書き込まない。一実施形態において、アプリケーションと関連する管理モジュールは、そのアプリケーションに対して、そのような時間的に最初の書込みが完了したことを確認応答する。この確認応答をその関連する管理モジュールから受信すると、アプリケーションは次いで、依存書込みを発行することができる。一実施形態において、管理モジュールは、同じノード上に所在するアプリケーションと関連付けることができ、例えば、管理モジュール108(1)がノード102(1)上のアプリケーション108(1)と関連付けられる。しかしながら、他の実施形態において、管理モジュールとアプリケーションとの間の他の関連付けが検討される。
間隔制御複製は、本明細書に記載するように、図1に図示される間隔制御複製のように、分散又はクラスタリングされたコンピューティング環境上に実装することができる。図1に示されるように、ノード102(1)〜102(n)等の1組のソースノードは、1次ストレージ112等の1つ以上の1次ストレージデバイスへデータを書込むことができ、また、2次ストレージ114等の複製ターゲットへデータを複製することもできる。図1に図示されるシステムは、本明細書に記載するような間隔制御複製を実装することができる。間隔制御複製は、いくつかの実施形態において、分散システム100内の他のノードへ間隔指示を送信する、コーディネータ104等のノードが関係する。例えば、ノード102(1)〜102(n)等のこれらの他のノードは、本明細書に記載の様式において、1次ストレージ112及び2次ストレージ114への書込みを実施する。ノード102(1)から等、ノードからの各データの書込みは、現在の間隔の識別子を含むことができる。間隔制御複製は、本明細書に記載するように、少なくとも3つの複製モード、すなわち、同期複製、非同期複製、及び周期複製で使用することができる。
同期複製は、典型的に、1次コピーが更新される時点でデータのリモートコピーが作成されることを確実にする。リモートコピーは、1次コピーと実質的に類似するように作成することができる。同期複製において、I/O動作は、1次ストレージ112及び2次ストレージ114の両方(例えば、ミラーサイト)で完了が確認されるまで、終了したと見なされない。一実施形態において、不完全な動作は、リモートコピーが(実質的に)1次のミラーイメージであるように、アプリケーションノード及び/又は管理モジュールによって、両方の場所で再実行及び/又はロールバックすることができる。リプレリケーション中、データのリモートコピーは、1次コピーが更新される時点で作成される。
例えば、ノード102(1)が、1次ストレージ112及び2次ストレージ114の両方を使用して第1のデータオブジェクトへ書込む場合、間隔制御複製の使用は、ある間隔で開始する書込みが同じ間隔に完了しないことを保証する。加えて、ノード102(1)又は102(2)は、ノード102(1)がオブジェクトの1次ストレージ112及び2次ストレージ114両方へのその(第1の)書込みを完了するまで、この第1のデータオブジェクト、又は第1の書込みに依存する第2のデータオブジェクトどちらへの一切の書込みも発行しない。これは、間隔制御複製を使用する場合、依存的なI/Oは、本来のI/O書込みと同じ間隔の同じ又は別のノードによって書き込まれないことを保証する。間隔制御複製は、1次ストレージ112及び2次ストレージ114両方へデータを書込みノードに適用される。間隔mでI/Oを受信した、間隔制御複製を実装しているノードは、ノード(例えば、ある特定のサブセットの全てのノード)が間隔(m+1)に移動するまで、このI/Oを完了しない。いくつかの実施形態において、ノードは、それがこの次の間隔を確認応答すると、次の間隔へ「移動」した。このような確認応答の多様な実施形態は、以下の図に説明する。実装に依存して、ノードが間隔(m+2)を開始すると、ノードは間隔(m+1)に移動したと想定される。別の実装において、ノードは、このノードが間隔(m+1)を確認応答するメッセージを返信すると、間隔(m+1)に移動したと想定される。換言すれば、所与のノードにおいて、任意のノード上で間隔mに受信されたI/Oは、他のノードが間隔m+1までこれらのI/Oのうちの一切を完了できないため、相互に独立している。
一実施形態において、同期複製の場合、ノードは、前のI/O書込みに依存する次のI/O書込みを発行する前に、1次ストレージからの確認応答、2次ストレージからの確認応答、及び、次の間隔の間隔指示を待機する。例えば、ノード102(1)の管理モジュール108(1)は、第1のI/O書込み(すなわち、第1のローカル書込み及び第1のリモート書込み)が完了したことをアプリケーション106(1)に確認応答する前に、第1のローカル書込みに関する1次ストレージ112からの確認応答(例えば、間隔mの関連IDを有する)、第1のリモート書込みに関する2次ストレージからの確認応答(例えば、間隔mの関連IDを有する)、次の間隔(例えば、m+1)の間隔指示、並びに分散システム100内の他のノードがこの次の間隔(m+1)に移動したことの確認応答を待機する。アプリケーション106(1)がその関連管理モジュール108(1)からこのような確認応答を受信すると、アプリケーション106(1)は、第1のI/O書込みに依存する次のI/O書込みを発行することができる。
一実施形態において、非同期複製の場合、ノードは、前のI/O書込みに依存する次のI/O書込みを発行する前に、1次ストレージからの確認応答、及び次の間隔の間隔指示を待機する。換言すれば、同期複製とは対照的に、非同期複製のノードは、アプリケーションに確認応答を送信する前に、2次ストレージからの確認応答を待機しない。例えば、ノード102(1)の管理モジュール108(1)は、第1のI/O書込み(すなわち、第1のローカル書込み)が完了したことをアプリケーション106(1)に確認応答する前に、第1のローカル書込みに関する1次ストレージ112からの確認応答(例えば、間隔mの関連IDを有する)、及び次の間隔(例えば、m+1)の間隔指示、並びに分散システム100内の他のノードがこの次の間隔(m+1)に移動したことの確認応答を待機する。アプリケーション106(1)がその関連管理モジュール108(1)からこのような確認応答を受信すると、アプリケーション106(1)は、第1のI/O書込みに依存する次のI/O書込みを発行することができる。しかしながら、何らかの時点で、2次ストレージは、リモート書込みを確認応答する。2次ストレージ114は、次の間隔(m+1)のいずれかのI/O書込みを適用する前に、間隔(m)の全てのI/O書込みを適用する。
一実施形態において、周期複製の場合、ノードは、一定の期間で1次ストレージから2次ストレージへデータをコピーする。例えば、複製されるデータは、スナップショットを使用及び/又は別の技法を使用すること等によって、ノードによって収集することができる。一実施形態において、ノードは、ログ及び/又はステージ領域等、ローカルストレージを使用することができ、リモート書込みを集積することができる。一定期間に、複数のリモート書込み(例えば、バッチ書込み)を使用すること等によって、この集積されたデータを2次ストレージに書き込むことができる。周期複製のノードは、アプリケーションに確認応答を送信する前に、2次ストレージからの確認応答を待機しない。例えば、ノード102(1)の管理モジュール108(1)は、第1のI/O書込み(すなわち、第1のローカル書込み)が完了したことをアプリケーション106(1)に確認応答する前に、第1のローカル書込みに関する1次ストレージ112からの確認応答(例えば、間隔mの関連IDを有する)、及び次の間隔(例えば、m+1)の間隔指示、並びに分散システム100内の他のノードがこの次の間隔(m+1)に移動したことの確認応答を待機する。アプリケーション106(1)がその関連管理モジュール108(1)からこのような確認応答を受信すると、アプリケーション106(1)は、第1のI/O書込みに依存する次のI/O書込みを発行することができる。例えば、このようなI/O書込みはそれぞれ集積されてから、次いで、ある特定の期間で2次に書き込まれる。
全ての3つの複製の種類で、一実施形態において、このような間隔指示それぞれは、図1の間隔指示118として実装することができる。間隔指示118は、間隔ID 120とデータ122とを含むことができるが、他の実装が企図される。ノードはそれぞれ、次いで、各受信された間隔指示118の間隔ID 120から現在の間隔を決定することができる。例えば、コーディネータノードのようなノードは、間隔mで開始するような間隔指示を送信する。間隔指示を受信するノードはそれぞれ、その間隔のI/O動作を実施する。コーディネータノードは、ある特定のスケジュール、すなわち、ある特定の間隔でこれらの間隔を送信することができる。間隔指示118のデータ122は、前の間隔指示に確認応答で応答するほかのノードのリスト等、他の情報も含むことができる。
これらの間隔の長さは、それぞれの分散ストレージシステムに対して動的に決定することができる。多くの場合、リモートのI/O書込みレイテンシは、限定要因、すなわち、リモートストレージへのノードの書込みとこのリモートストレージからのその書込みの確認応答との間の経過時間である。一実施形態において、コーディネータノード104は、例えば、履歴データ及び/又は分析に基づく等、管理モジュール110(1)間隔の長さを使用して決定することができる。例えば、ノード110(1)〜110(n)のローカルI/Oが、完了までに1ms未満かかり、これらのノードのリモートI/Oが、完了までに平均3ms〜10msかかる場合、間隔は5msに設定することができる。この例では、7msかかるI/O(例えば、ノード102(1)によるリモート書込み)の場合、このI/O書込みは間隔mに開始し、間隔(m+1)に完了する。ノード102(1)がリモートI/O書込みを開始するとき、ノード102(1)〜102(n)は間隔mにある。この間隔m中、同じデータに書込む他のノードは存在しない。次に、ノードは、次いで、間隔(m+1)の間隔指示を受信する。別のノード、例えば、ノード102(n)は、ノード102(1)がリモートI/Oを終了するまで、同じデータ又は依存するデータに書き込もうとはしない。
一実施形態において、コーディネータノード104は、ノード102(1)〜102(n)へ間隔通知を送信する。これらの間隔通知のうちの1つを受信することに応答して、ノード102(1)〜102(n)はそれぞれ、前の間隔で開始されたI/O動作を完了することもできる。一実施形態において、間隔通知は、間隔の開始を示すことができる。別の実施形態において、間隔通知は、間隔の終了、間隔の中間時点等、他の時点を示すことができる。例えば、間隔指示118はID 120の関連間隔番号を示すことができる。間隔番号は、0の時点での間隔通知は1の間隔番号、次の間隔通知は2の間隔番号を有することができる等、間隔通知と関連付けることができる。ただし、他の実装において、間隔指示は、ある間隔指示から次の間隔指示までの進行を示す異なる方法を使用することができる。
一実施形態において、ノード102(1)は、例えば、コーディネータノード104から、第1の間隔指示を受信する。第1の間隔指示は、第1の間隔の開始を示す。第1の間隔指示を受信した後、ノード102(1)は、1次ストレージ112へのローカル書込みを開始することができる。この時点で、ノード102(1)は、2次ストレージ114へのリモート書込みも開始することができる。一実施形態において、リモート書込みは、例えば、1次ストレージへ書き込まれるデータのいくつか又は全てを複製する、複製プロセスの一部として実施することができる。リモート書込み及びローカル書込みの両方が、関連タイムスタンプを含むことができる。このタイムスタンプは、間隔通知の間隔番号を示すことができる(すなわち、第1の間隔通知を示す)。ノードはそれぞれ各間隔中に複数の書込みを発行し、これらの書込みは現在の間隔に関連することに注意されたい。しかしながら、複製モードは、ノードのアプリケーションが依存する書込みをどのように発行するかを制御する。
一実施形態において、ノード102(1)は、ノード102(1)〜102(n)が次の間隔通知を受信し、確認応答すると、ローカル書込み及びリモート書込みの両方が完了したと想定して、第1の間隔のI/O書込みが完了したことを確認応答することができる。一実施形態において、このような間隔の頻度は、(例えば、コーディネータノード104によって)決定することができるので、ほとんどの場合、第2の間隔指示は、リモートストレージ114が前の間隔のリモート書込み送信が終了したことを確認応答する前に、ノード102(1)〜102(n)へ送信される(更に受信され、確認応答もされる)。これは、アプリケーションのI/O完了が次の間隔指示を待って遅延しないこと、換言すれば、アプリケーションI/Oレイテンシが、間隔制御が導入されても不変であることを保証する。一実施形態において、リモートストレージ114は、リモート書込みがノード102(1)〜102(n)及び/又はコーディネータノード104によって完了したことを確認応答することができる。一実施形態において、第2の間隔指示を受信した後、ノード102(1)〜102(n)のうちのいずれかは、ローカルストレージ112及びリモートストレージ114への追加のI/O書込みを発行するように継続する。上記と同様に、ノード102(1)〜102(n)は、ノード102(1)〜102(n)が第3の間隔指示を受信、プロセスし、かつこれらの追加のローカル及び書込みの両方が完了するときまで、これらの追加のローカル及び書込みの両方が完了したことを(例えば、それぞれ、アプリケーション106(1)〜106(n)に対して)確認応答しない。
一実施形態において、コーディネータノード104は、ノード102(1)〜102(n)から確認応答を受信する。これらの確認応答は、間隔指示の受信を確認応答するために、ノード102(1)〜102(n)によって送信される。一実施形態において、このような確認応答はそれぞれ、図1の確認応答124として実装することができる。確認応答124は、間隔ID 126とデータ128とを含むことができるが、他の実装が企図される。例えば、ノード102(1)−102(n)は、第1の間隔指示の受信を確認応答しているコーディネータノード104に対して、確認応答(例えば、第1の間隔を指示している確認応答124のID 126)を送信することができる。コーディネータノード104は、次いで、ノード102(1)〜102(n)から確認応答を受信することに応答して、次の間隔指示(例えば、第2の間隔を示す間隔指示118のID 120)を送信することができ、これらの確認応答は、ノード102(1)〜102(n)による第1の間隔を示す間隔指示の受信を示す。
一実施形態において、ノード102(1)〜102(n)のうちの1つがこのような確認応答を返信しない場合、コーディネータノード104は、ある特定の期間、次の間隔指示の送信を遅延することができ、その後、コーディネータノード104は、このような延滞ノードによって届けられてない間隔を追跡する一方、ノード102(1)〜102(n)に対する次の間隔指示の送信を再開する。次の間隔で送信されたデータは、有効及び任意の延滞ノードのリストを含むことができる。このデータは、1次及び2次ストレージに記憶されてもよい。延滞ノードが間隔指示に対する応答を開始すると、延滞ノードは、任意の累積された及び/又は進行中の書込みを処理することができる。一実装において、このような累積された書込みは、延滞ノードが間隔指示への応答を再開すると、時刻を示す間隔を使用して全て処理することができる。
間隔制御複製は、本明細書において、アプリケーション、ファイルシステム、ボリュームマネージャー、及び類似のプロセスからのストレージデバイスに対する書込みリクエストを参照して主に説明されるが、一般に、間隔制御複製は、任意の種類のデータストリームのために一貫したポイント又はスナップショットを提供するために利用することができる。例えば、間隔制御複製は、分散若しくはクラスタ環境において、ログの集合体にわたって、ストレージオブジェクトの集合体にわたって、又はメッセージストリームの組にわたって、一貫したチェックポイント又はスナップショットを提供することができる。その上に、「I/O」、「アクセス」、及び/又は「書込み」という用語は、本明細書において、間隔制御複製の間等に、複製ターゲットに対してソースノードによって書き込まれたデータを参照するために互換的に使用される。「アプリケーション」という用語は、ソースノード上で実行し、複製ターゲットへデータを複製する、任意のプロセスを参照するために使用される。このため、「アプリケーション」は、本明細書において使用される場合、ボリュームマネージャー、ファイルシステム、データベースアプリケーション、ストレージレプリケータ、又はエンドユーザーアプリケーション、並びにデータを複製する任意の他のプロセスを参照することができる。
図2Aは、一実施形態に従う、間隔制御複製のための方法200を図示する流れ図である。本開示を考慮すれば明らかであるように、この方法は、代替の実施形態を派生するために、変更されてもよい。また、本実施形態における工程は順次示される。しかしながら、ある特定の工程が、図示されるのと異なる順に生じてもよく、ある特定の工程が同時に実施されてもよく、ある特定の工程が、他の工程と組み合わされてもよく、ある特定の工程が、別の実施形態で不在であってもよい。方法200は、図1に関連して記載される要素の変形を参照して説明する。図2Aは、同期又は非同期複製モードで動作している場合のノード102(1)〜102(N)のようなノードの動作を図示する。これらの2つのモードの間の動作時の違いは、必要に応じて説明する。
要素202において、ノードは、第1の間隔の間のローカル及びリモートI/O書込みを開始する。例えば、ノード102(1)は、(コーディネータノード104から等)第1の間隔の指示を受信することができる。ノード102(1)がこの指示を受信すると、ノード102(1)は、1次ストレージ112へのローカル書込み、並びに2次ストレージ114へのリモート書込みの両方を開始する。リモート書込みは、複製の一部として実施することができ、ノード102(1)の管理モジュールによって開始することができる。ローカル書込み及びリモート書込みは、I/O書込みを実施するアプリケーション106(1)の一部として管理モジュール108(1)によって開始されてもよい。
要素204において、同期複製モードで動作している場合、ノードは、次の間隔、2次ストレージからのリモート書込みの確認応答、及びローカルストレージからのローカル書込みの確認応答を待機する。例えば、ノード102(1)は、1次ストレージ112及び2次ストレージ114からのローカル及びリモート書込み(要素202において開始された)の確認応答、並びに次の間隔指示を待機する。一実装において、ノード102(1)は、分散システム100の他のノード102(n)〜102(n)がこの次の間隔に移動したことの確認応答も待機することができる。
要素204において、非同期複製モードで動作している場合、ノードは、次の間隔及びローカルストレージからのローカル書込みの確認応答を待機する。例えば、ノード102(1)は、1次ストレージ112からのローカル書込み(要素202において開始された)の確認応答、並びに次の間隔指示を待機する。一実装において、ノード102(1)は、分散システム100の他のノード102(n)〜102(n)がこの次の間隔に移動したことの確認応答も待機することができる。しかしながら、非同期モードで動作している場合、ノードは、2次ストレージからのリモート書込みの確認応答を待機しない。
要素206において、ノードは、アプリケーションに対して、I/O書込みが完了したことを確認応答する。例えば、ノード102(1)の管理ノード108(1)は、アプリケーション106(1)に対して、要素202で開始されたI/O書込みが完了したことの確認応答を送信する。アプリケーション106(1)がこの確認応答を受信すると、アプリケーション106(1)は、要素202のI/O書込みに依存するI/O書込みを発行することができる。
図2Bは、一実施形態に従う、間隔制御複製を使用する周期複製モードのための方法225を図示する流れ図である。本開示を考慮すれば明らかであるように、この方法は、代替の実施形態を誘導するために、変更されてもよい。また、本実施形態における工程は順次示される。しかしながら、ある特定の工程が、図示されるのと異なる順に生じてもよく、ある特定の工程が同時に実施されてもよく、ある特定の工程が、他の工程と組み合わされてもよく、ある特定の工程が、別の実施形態で不在であってもよい。方法225は、図1に関連して記載される要素の変形を参照して説明する。図2Aは、周期複製モードで動作している場合のノード102(1)〜102(N)のようなノードの動作を図示する。
要素226において、ノードは、ローカル書込みを開始し、第1の間隔の間のリモートI/Oを集積する。例えば、ノード102(1)は、(コーディネータノード104から等)第1の間隔の指示を受信することができる。ノード102(1)がこの指示を受信すると、ノード102(1)は同時に、1次ストレージ112へのローカル書込みを開始し、並びに2次ストレージ114へのリモート書込みを集積する。リモート書込みは、複製の一部として実施することができ、ノード102(1)の管理モジュールによって開始することができる。ローカル及びリモート書込みは、I/O書込みを実施するアプリケーション106(1)の一部として管理モジュール108(1)によって開始されてもよい。このように、一実施形態において、ノードは、フロントエンドロギングを実施することができ、ローカルI/O書込みが実施されると、リモートI/O書込みがログに収集される。別の実施形態において、ノードは、バックエンドロギングを実施することができ、データが1次ストレージから読み出されてから、次いで、ログに書き込まれる。
要素228において、ノードは、最近の間隔が終了したかを決定する。換言すれば、ノードは、最新のリモート書込み(要素226)が開始された期間が完了したかを決定する。一実施形態において、ノードはそれぞれその独自の期間を追跡することができる。別の実施形態において、コーディネータノードは、分散ストレージシステムの期間を追跡することができる。コーディネータノードはまた、間隔指示の一部(例えば、データフィールドの一部)として、それぞれの期間及び/又は期間完了の指示もノードへ送信することができる。例えば、間隔は5msに設定することができ、期間は15秒に設定することができるので、それぞれの期間は約3,000間隔を含むことができる。
要素230において、ノードは、次の間隔、及びローカルストレージからのローカル書込みの確認応答を待機する。例えば、ノード102(1)は、1次ストレージ112からのローカル書込み(要素226において開始された)の確認応答、並びに次の間隔指示を待機する。一実装において、ノード102(1)は、分散システム100の他のノード102(n)〜102(n)がこの次の間隔に移動したことの確認応答も待機することができる。しかしながら、周期モードで動作している場合、ノードは、2次ストレージからのリモート書込みの確認応答を待機しない。
要素232において、ノードは、集積されたリモートI/O書込みを開始する。例えば、ノード102(1)の管理モジュール108(1)は、集積されたリモートI/O書込み(例えば、最後の期間に集積された)を開始する。一実施形態において、ノードは、1次ストレージの少なくとも一部のスナップショットを得て、集積されたリモートI/O書込みを生成する。一実施形態において、I/O書込みは、アプリケーションデータのスナップショットを使用する代わりに、ログから集積することができる。集積されたI/O書込みは次いで、2次ストレージへ書き込まれる。一実施形態において、間隔(m)の間の何らかのI/O書込みがその期間に含まれる場合、その前の間隔(m−1)の全てのI/O書込みも含まれる。要素232の後、ノードは、要素228を実施する。
周期及び非同期のどちらの複製モードで動作している場合も、2次ストレージはまだリモート書込みを確認応答する。ただし、どちらの場合も、ノードの管理モジュールは、I/O書込みが完了したことをその関連アプリケーションに確認応答する前に、これらのリモート書込みの確認応答を待機しない。リモートI/O書込みは関連する間隔情報(例えば、このリモートI/O書込みのアプリケーションが開始された間隔を示す)を有するため、2次ストレージは、これらのリモートI/O書込みを正しい順序で適用することができ、すなわち、間隔(m)のリモート書込みは、間隔(m+1)のリモート書込みが処理される前に処理される。一実施形態において、2次ストレージは、これらの書込みの間隔に従って、リモートI/O書込みを待ち行列に入れ、処理することができる。間隔に従ってリモート書込みを処理することによって、2次ストレージには整合性がある、すなわち、依存データの書込み競合を生じさせない。
一実施形態において、2次ストレージは、リモート書込みが2次ストレージの待ち行列に入ったときのように、リモート書込みが受信されたがまだ完了していないときに確認応答を送信することができる。一実施形態において、2次ストレージは、リモート書込みがストレージに実際に書き込まれたときに確認応答を送信する。2次ストレージはまた、記憶しているが完了していない場合に個別の確認応答を送信し、第2の書込みが完了すると別の確認応答を送信することもできる。
要素234において、ノードは、アプリケーションに対して、I/O書込みが完了したことを確認応答する。例えば、ノード102(1)の管理ノード108(1)は、アプリケーション106(1)に対して、要素202で開始されたI/O書込みが完了したことの確認応答を送信する。アプリケーション106(1)がこの確認応答を受信すると、アプリケーション106(1)は、要素202のI/O書込みに依存するI/O書込みを発行することができる。
図2Cは、一実施形態に従う、間隔制御複製のための方法250を図示する別の流れ図である。本開示を考慮すれば明らかであるように、この方法は、代替の実施形態を誘導するために、変更されてもよい。また、本実施形態における工程は順次示される。しかしながら、ある特定の工程が、図示されるのと異なる順に生じてもよく、ある特定の工程が同時に実施されてもよく、ある特定の工程が、他の工程と組み合わされてもよく、ある特定の工程が、別の実施形態で不在であってもよい。方法250は、図1に関連して記載される要素の変形を参照して説明する。方法250は、図2Aを参照して上記に説明した方法200の変形である。図2Cは、同期又は非同期複製モードで動作している場合のノード102(1)〜102(N)のようなノードの動作を図示する。これらの2つのモードの間の動作時の違いは、必要に応じて説明する。
要素252において、間隔指示が受信されたかどうかが決定される。例えば、ノード102(1)は、間隔指示がコーディネータノード104から受信されたかどうかを決定する。受信された間隔指示は、間隔IDとデータとを含むことができる。間隔IDは現在の間隔を示すことができる。例えば、ノード102(1)は、間隔mのための間隔指示を受信する。
要素254において、ノードは、I/O書込みを現在の間隔と関連付けることができる。例えば、ノード102(1)が間隔指示を受信すると、ノード102(1)は、ローカル及びリモート両方のI/O書込みを間隔指示の間隔IDと関連付けることができる。上記のように、リモート書込みは、複製の一部として実施することができ、ノード102(1)の管理モジュールによって開始することができる。ローカル書込み及びリモート書込みは、I/O書込みを実施しているアプリケーション106(1)の一部として、管理モジュール108(1)によって開始されてもよい。これらの2つの書込みは、所望に応じて、実質的に同時に実施することができる。
要素256において、バッチ処理を実施することができるかどうかの決定が行われる。例えば、ノード102(1)は、大量のデータを複製することができる(例えば、1次ストレージ112からリモートストレージ114へ)。このような複製の一部は、例えば、トランザクションログを複製している場合等、レイテンシに影響され得る。この場合、一部のデバイスでは、ノードは、完了確認応答を(例えば、コーディネータノード104へ)返信する前に、完了するために間隔を待機しなくてもよい。
要素258は、バッチ処理が実施されると決定された場合(すなわち、要素256において)に実施される。一実装において、ノード102(1)は、未完了の書込みの全てに対する確認応答を受信する必要なく、多数のI/O書込みを実施することができる。例えば、複製されるデータ要素が100ある場合、これらの100のデータ要素は、同じ間隔ID(例えば、100)を使用して書き込むことができる。一実施形態において、このようなバッチ処理されているI/O全てが同じ間隔の依存I/Oであるかもしれないため、2次ストレージの他のI/O書込みの前に処理される。管理モジュールもまた、ノードによって発行されているI/Oがバッチ処理されているI/Oと重複しないかどうかを確認することができる。
要素260において、同期複製モードで動作している場合、ノード102(1)がバッチ処理を実施しないと決定された場合、ノードは、次の間隔、及び2次ストレージからのリモート書込みの確認応答を待機する。ノードは、ローカルストレージからのローカル書込みの確認応答も待機することができる。一実施形態において、要素260は、方法200の要素204に類似する。例えば、ノード102(1)は、間隔(m+1)のための間隔指示を受信する。ノード102(1)が次の間隔指示を受信し、ローカルストレージ112から及びリモートストレージ114から、任意の順序で確認応答を受信することができることに注意されたい。
要素260において、非同期複製モードで動作している場合、ノード102(1)がバッチ処理を実施しないと決定された場合、ノードは、次の間隔、及びローカルストレージからのローカル書込みの確認応答を待機する。一実施形態において、要素260は、方法200の要素204に類似する。例えば、ノード102(1)は、間隔(m+1)のための間隔指示を受信する。ノード102(1)が次の間隔指示を受信し、ローカルストレージ112から任意の順序で確認応答を受信することができることに注意されたい。しかしながら、非同期モードで動作している場合、ノードは、2次ストレージからのリモート書込みの確認応答を待機しない。
要素262において、ノード102(1)は、ネットワーク及び/又はコーディネータノードエラーが存在するかどうかを決定する。例えば、ノード102(1)は、その前の間隔指示がノード102(1)によって受信されてから一定期間が経過した場合、このようなネットワーク及び/又はコーディネータノードエラーを決定することができる。要素264において、ノード102(1)は、このようなネットワーク/コーディネータノードエラーの処理を開始することができる。例えば、ノード102(1)は、別のノード(例えば、ノード102(2))が分散ストレージシステム100のコーディネータノードになるプロセスを開始することができる。ネットワーク/コーディネータノードエラーが処理されると、方法250は要素256に戻る。
要素266において、ノード102(1)は、分散ネットワーク内の他のノードが次の間隔にあるかどうかを決定する。一実施形態において、ノード102(1)は、ノード102(1)が間隔(m+2)の間隔指示を受信した場合、ネットワーク内の他のノードが次の間隔(すなわち、m+1)に移動したと決定する。別の実施形態において、ノード102(1)は、ネットワーク内の他のノードが次の間隔(すなわち、間隔(m+1))に移動したことを示す間隔確認応答指示をコーディネータから受信した場合、ネットワーク内の他のノードが次の間隔(すなわち、間隔(m+1))に移動したと決定する。更に別の実施形態において、ノード102(1)は、ノード102(1)が次のサブ間隔指示を受信した場合、ネットワーク内の他のノードが次の間隔(すなわち、m+1)に移動したと決定する。
要素268において、ノードは、アプリケーションに対して、I/O書込みが完了したことを確認応答する。例えば、ノード102(1)の管理ノード108(1)は、アプリケーション106(1)に対して、要素254で開始されたI/O書込みが完了したことの確認応答を送信する。アプリケーション106(1)がこの確認応答を受信すると、アプリケーション106(1)は、要素254のI/O書込みに依存することができるI/O書込みを発行することができる。換言すれば、同期複製の場合、ノード102(1)は、要素260の条件が満たされ、他のノードが次の間隔に入るまで、I/O書込み(要素254で開始)が終了したことを確認応答しない。
図2Dは、一実施形態に従う、間隔制御複製のための方法275を図示する別の流れ図である。本開示を考慮すれば明らかであるように、この方法は、代替の実施形態を誘導するために、変更されてもよい。また、本実施形態における工程は順次示される。しかしながら、ある特定の工程が、図示されるのと異なる順に生じてもよく、ある特定の工程が同時に実施されてもよく、ある特定の工程が、他の工程と組み合わされてもよく、ある特定の工程が、別の実施形態で不在であってもよい。方法275は、図1に関連して記載される要素の変形を参照して説明する。方法275は、複製の種類を選択するために、分散ストレージシステム内のノードそれぞれによって実行することができる。
要素276において、一実施形態に従い、ノードは、複製の種類の選択肢を受信することができる。例えば、ノード又はコーディネータノードのうちの1つ以上は、この選択肢を受信することができる。この選択肢は、複製プロセスを開始する前に受信してもよく、複製プロセス中に受信してもよい。一実施形態において、分散システム内の全てのノードの管理モジュール(コーディネータノードを含む)は、同じ複製モードを使用する。したがって、どのような複製モードの変更もノード間で合意される。例えば、コーディネータノードは、他のノードの管理モジュールへ複製モードの変更を送信することができる。一実施形態において、コーディネータノードは、別の複製モードに切り替える前に、他のノードからの複製モード確認応答メッセージを待機することができる。一実施形態において、要素276は、複製を開始する前に実施される。別の実施形態において、要素276は、複製中に実施され、複製モードを動的に変更することができる(例えば、ユーザー入力及び/又は別のノード/モジュールからの入力による)。
要素278において、選択肢が同期複製を示すかどうかの決定が行われる。選択肢が同期複製を示す場合、ノードは同期モードで動作する(要素280)。選択肢が同期複製を示さない場合、要素282において、選択肢が非同期複製を示すかどうかの決定が行われる。選択肢が非同期複製を示す場合、ノードは非同期モードで動作する(要素290)。選択肢が非同期複製を示さない場合、ノードは周期モードで動作する(要素284)。
同期モードで動作している場合(要素280)、ノード(及び/又はコーディネータノード)は、このノードの測定評価を計算することができる(要素286)。要素288において、これらの測定評価に基づいて、非同期複製へ切り替えるかどうかの決定が行われる。一実施形態において、これらの測定評価は、2次ストレージが所定時間内にリモート書込みの確認応答を送信できるかどうかを含む。一実施形態において、これらの測定評価は、分散ストレージシステムのネットワーク統計、ノードの応答性、及び/又は2次ストレージの応答性を含む。決定が、非同期複製への切り替えが行われるべきであると示す場合、このノードは、このノードを非同期複製へ切り替えることができる(要素290)。例えば、2次ストレージのレイテンシが大き過ぎる場合、分散ストレージシステムは、同期複製モードではなく、非同期複製モードでより効率的に動作する。
非同期モードで動作している場合(要素290)、ノード(及び/又はコーディネータノード)は、このノードの測定評価を計算することができる(要素292)。要素294において、これらの測定評価、及び本来の同期モード(要素276)に基づいて、同期複製へ切り替えるかどうかの決定が行われる。一実施形態において、これらの測定評価は、2次ストレージが所定時間内にリモート書込みの確認応答を送信できるかどうかを含む。一実施形態において、これらの測定評価は、分散ストレージシステムのネットワーク統計、ノードの応答性、及び/又は2次ストレージの応答性を含む。例えば、測定評価は、未完了のリモート書込みの十分な数(例えば、全て)を2次ストレージへ書き込むことができることを示し、書き込まれている未解決のリモートI/O書込みの十分な数の閾値は、動的に決定することができる。決定が、同期複製への切り替えが行われるべきであると示す場合、このノードは、このノードを同期複製へ切り替えることができる(要素280)。例えば、測定評価を使用している決定が、このほうがもっと効率的であると示し、かつ本来の選択が同期モードであった場合、モードを同期に切り替えることができる。
図3は、一実施形態に従う、間隔制御複製におけるコーディネータノードの動作の方法を図示する流れ図である。本開示を考慮すれば明らかであるように、この方法は、代替の実施形態を誘導するために、変更されてもよい。また、本実施形態における工程は順次示される。しかしながら、ある特定の工程が、図示されるのと異なる順に生じてもよく、ある特定の工程が同時に実施されてもよく、ある特定の工程が、他の工程と組み合わされてもよく、ある特定の工程が、別の実施形態で不在であってもよい。方法300は、図1に関連して記載される要素の変形を参照して説明する。図3は、同期、非同期、又は周期複製におけるコーディネータノードの動作を図示する。一実施形態において、コーディネータノードは、特に記載のない限り、これらの3つの複製モードにおいて実質的に類似して動作する。更に、一実施形態において、コーディネータモジュールと関連するアプリケーション(例えば、アプリケーション106(3))は、本明細書に記載の3つの複製モードのうちの1つを使用して複製されるI/O書込みを発行することができる。換言すれば、コーディネータノードは、コーディネータノードとして動作する上に、他のノードのうちの1つとして動作することができる。一実施形態において、2次サイトを含むより大型のストレージシステムの場合、コーディネータノードは、2次サイトの1つ以上のノード及び/又は2次サイトのピアコーディネータノードに対しても、間隔情報を送信することができる。
要素302において、コーディネータノードは、時間間隔に従って、間隔指示を送信する。コーディネータノード104は、管理モジュール110(1)を使用して、時間間隔を追跡することができる。例えば、コーディネータノード104は、ノード102(1)〜102(n)に対して、第1の間隔中の時間間隔mを示す間隔指示を送信することができる。同様に、例えば、コーディネータノード104は、ノード102(1)〜102(n)に対して、第2の間隔中の時間間隔(m+1)を示す間隔指示を送信することができる。
一実施形態において、分散ストレージシステムが周期複製モードで動作している場合、コーディネータノードは、間隔指示の一部(例えば、データフィールドの一部)として、又は別のメッセージにおいて、ノードに対して、それぞれの期間及び/又は期間完了の指示も送信することができる。例えば、コーディネータノードは、現在の期間を示す期間指示を送信することができる。コーディネータノードは、次の期間が開始したことを示す期間変更も送信することができる。
要素304において、コーディネータノードは、時間間隔が調整されるべきかどうかを決定する。このような決定は、時間間隔が大き過ぎる、又は小さ過ぎる場合に行うことができる。要素304の決定は動的にすることができ、すなわち、管理モジュール110(1)は、例えば、履歴データの解析に基づいて、時間間隔が短過ぎる(又は長過ぎる)ことを決定することができる。例えば、同じ間隔内にリモートI/Oが開始して完了した場合(例えば、リモートI/Oが、このリモートI/Oを開始したノードへ確認応答を返信する)、間隔が長過ぎる可能性がある。このような解析は統計を使用して実施されてもよく、管理モジュール110(1)は、十分なリモートI/O書込みが同じ間隔内に開始して完了したかどうかを決定する閾値を使用してもよい。例えば、このようなI/O書込みのうちの1%だけが同じ間隔内に開始し、完了している場合、管理モジュール110(1)は、間隔は調整する必要がないと決定することができる。一方、このようなI/O書込みのうちの90%が同じ間隔内に開始し、完了している場合、管理モジュール110(1)は、間隔は調整する必要があると決定することができる。
要素306において、コーディネータノードは、時間間隔を調整する。例えば、管理モジュール110(1)が時間間隔が短過ぎると決定した場合、管理モジュール110(1)は、決定されたように、時間間隔をより長い間隔へ調整する。同様に、管理モジュール110(1)が時間間隔が長過ぎると決定した場合、管理モジュール110(1)は、決定されたように、時間間隔をより短い間隔へ調整する。
図4〜7は、間隔制御複製の多様な実施形態の一般的なタイミング図を図示する。図4〜7は、特に、図1を参照して説明した要素、並びに図2A〜2D及び3に図示される流れ図の方法の変形を参照して説明する。ノード1は、ノード102(1)によって実装することができ、ノード2は、ノード102(2)によって実装することができる。図示の簡素化のために、両方のノードは、コーディネータノードからのメッセージを実質的に同時に処理することができ、そのために、新しい間隔を実質的に同時に開始することができると想定される。しかしながら、このようなメッセージを受信するノードの間には、わずかな、しかし有限の遅延及び/又はスキューが存在する場合がある。
図4Aは、一実施形態に従い、間隔制御複製を実装する分散ストレージシステムの2つのノードによるI/O書込みの一般的なタイミング図400である。コーディネータノード(例えば、コーディネータノード104)は、間隔1〜5の402(1)〜402(5)を示す間隔指示をノード1及び2に送信することができる。具体的には、間隔1は402(1)で開始し、402(2)で終了し、間隔2は402(2)で開始し、402(3)で終了する等となる。図4Aは、同期、非同期、又は周期複製におけるノードの動作を図示する。
一実施形態において、間隔指示1を受信すると、ノード1及び2の両方は、間隔1が開始していた内部データ構造を(例えば、管理モジュールを使用して)更新することができる。ノード1は次いで、第1のI/O 404(1)を開始することができる。書込みI/O 404(1)がデータにアクセスする間、他のノードは、オーバーラップする、又は依存するデータに対してI/O書込みを実施できない。1つの間隔あたり1つのI/Oだけが示されるが、どちらのノードもそれぞれの間隔で何百もの独立したI/Oを実施している可能性がある。ノード1は、ノード1が、例えば、間隔2の404(2)が開始したことを示す、次の間隔の指示を受信すると、I/O 404(1)を完了することができる。ノード2は、次の間隔の指示を受信すると、I/O書込み404(1)に依存する可能性があるI/O書込み406(1)を開始することができる。
ただし、ノード1は、第2の間隔内にI/O書込み404(1)を完了する。ノード2は、間隔3の間隔指示を受信した後、間隔3まで、そのデータ依存の可能性があるI/O書込み406(1)を完了しない。同様に、ノード1によるデータ依存の可能性があるI/O書込み404(2)は、第3の間隔まで開始されず、第4の間隔まで完了されない。ノードが間隔メッセージを処理する際のわずかな時間差を考慮するため、I/Oは、全てのノードが次の間隔指示を受信するまで発生しない。これは、ノード及び/又はコーディネータノード間の追加のメッセージを必要とする場合がある。
一実施形態において、図4Bに示されるように、間隔指示の受信は、その前の間隔が全てのノードによって受信されたという確認応答として考えられるかもしれない。図4Bは、一実施形態に従い、間隔制御複製を実装する分散ストレージシステムの2つのノードによるI/O書込みの一般的なタイミング図450である。コーディネータノード(例えば、コーディネータノード104)は、間隔1〜5の502(1)〜502(5)を示す間隔指示をノード1及び2に送信することができる。図4Bは、同期、非同期、又は周期複製におけるノードの動作を図示する。
図4Bに図示される実装において、ノード1の管理モジュールは、その時点で全てのノードが間隔「m+1」の受信を確認応答しているため、間隔「m」で開始したあらゆるI/O書込みが間隔「m+2」で完了することを確認応答する。例えば、ノード1は、間隔1(すなわち、間隔m)でI/O書込み454(1)を開始することができる。このI/O書込みは、ノード1が間隔3(すなわち、間隔(m+2))の間隔指示を受信するまで、確認応答されない(すなわち、ノード1の管理モジュールは、この書込みを開始したアプリケーションに対してこのI/O書込みを確認応答しない)。一実施形態において、ノードが「m+1」のような新しい間隔指示を受信すると、このノードは、他のノードがこの新しい間隔指示をまだ受信していない場合であっても、この新しい間隔指示を今後のI/O書込みのために使用する。
図5は、一実施形態に従い、分散ストレージシステムの2つのノードによるI/O書込みの一般的なタイミング図500である。コーディネータノード(例えば、コーディネータノード104)は、間隔1〜5の502(1)〜502(5)を示す間隔指示をノード1及び2に送信することができる。図5は、遅延によってノード1及び2にI/O書込み問題がどのように発生するかを図示する。図5は、同期、非同期、又は周期複製におけるノードの動作を図示する。
一実施形態において、間隔指示1を受信すると、ノード1及び2の両方は、間隔1が開始していた内部データ構造を(例えば、管理モジュールを使用して)更新することができる。ノード1は次いで、第1のI/O 504(1)を開始することができる。書込みI/O 504(1)がデータにアクセスする間、他のノードは、同じデータへのI/O書込みを実施できない。ノード1は、ノード1が、例えば、間隔2の404(2)が開始したことを示す、次の間隔の指示を受信すると、I/O 404(1)を完了することができる。ところが、ネットワーク又は遅延の問題がある場合、ノード2は、間隔2が開始したという間隔指示を受信しない。この結果、ノード2は、次いで、ノード1のI/O 504(1)に依存するI/O 506(1)を開始することができる。これは、例えば、I/O書込み506(1)がI/O 504(1)に依存するにもかかわらず、両方が同じ間隔内に実施されると、問題となり得る。
図6は、一実施形態に従い、分散ストレージシステムの2つのノードによるI/O書込みの一般的なタイミング図600である。コーディネータノード(例えば、コーディネータノード104)は、間隔1〜4の602(1)〜602(4)を示す間隔指示をノード1及び2へ送信することができる。図6は、I/O書込みとともに発生する可能性がある問題(図5に図示)を克服するために間隔制御複製をどのように使用することができるかの一実施形態を図示する。図6は、同期、非同期、又は周期複製におけるノードの動作を図示する。
一実施形態において、間隔指示1を受信すると、ノード1及び2の両方は、間隔1が開始していた(例えば、管理モジュールによって使用されていた)内部データ構造を更新することができる。ノード1は次いで、第1のI/O 604(1)を開始することができる。書込みI/O 604(1)がデータにアクセスする間、他のノードは、同じデータへのI/O書込みを実施できない。ノード1は、ノード1が、例えば、間隔2の604(2)が開始したことを示す、次の間隔の指示を受信すると、I/O 604(1)を完了することができる。ところが、ネットワーク又は遅延の問題がある場合、ノード2は、間隔2が開始したという間隔指示を受信しない。遅延608は、ノード1がこのような指示を受信した後、第2の間隔602(2)の間隔指示を受信する時間を図示する。
一実施形態において、ノード1及び2の両方は、直近の間隔指示の受信を示す確認応答をコーディネータノードへ送信することができる。例えば、ノード1及び2の両方は、間隔1の602(1)の間隔指示の受信を示す間隔確認応答を送信することができる。間隔2の602(2)の間隔指示を受信すると、ノード1は、この間隔指示の受信を示す間隔確認応答を送信することができる。しかしながら、ノード2は、遅延608の後まで、この第2の間隔指示を受信しない(例えば、ネットワークの遅延又は他の問題に起因して)。この結果、ノード2は、遅延608の後まで、第2の間隔指示の受信の確認応答を送信しない。一実施形態において、コーディネータノードは、ノード2を含む残りのノードが、第2の間隔指示の受信を確認応答するときを示すために、追加の指示を送信してもよい。ノード1は、このような追加の指示を受信した後にI/O 604(1)を完了し、I/O 604(1)は余分な量610だけ遅延する。この結果、ノード2による依存のI/O書込み606(1)は、I/O書込み604(1)と同じ間隔に開始されない。更に、コーディネータノードは、次いで、ノード1及び2の両方が、例えば、間隔4の602(4)等、実質的に同時に次の間隔指示を受信するように、次の間隔指示の時刻を推移し、調整することができる。
図7は、一実施形態に従い、分散ストレージシステムの2つのノードによるI/O書込みの一般的なタイミング図700である。コーディネータノード(例えば、コーディネータノード104)は、間隔1〜5の702(1)〜702(5)を示す間隔指示をノード1及び2へ送信することができる。図7は、ノード2が間隔指示を確認応答しない場合のI/O書込みの処理の一実施形態を図示する。例えば、ネットワーク/遅延の問題がある場合、ノード2は、間隔2が開始したという間隔指示を受信しない。ノード2は、ビジーであるため、第2の間隔指示の受信を確認応答できない可能性もある。この結果、コーディネータノードは、遅延708に対して、次の間隔指示を送信することを遅延することができる。図7は、同期複製におけるノードの動作を図示する。
遅延708の後、コーディネータノードは、分散システム内のノードへの間隔指示の送信を再開することができる。一実施形態において、コーディネータノードは、間隔指示の受信を確認応答したノード及び/又はノードを示す余分の指示メッセージをノードへ送信することができる(すなわち、延滞ノードは間隔指示の受信を確認応答しない)。別の実施形態において、コーディネータノードは、間隔指示の受信を確認応答したノード及び/又は延滞ノードを示す部分的間隔指示メッセージをノードへ送信することができる。ノード1は、遅延710の後にI/O書込み704(1)を完了することができるが、しかしながら、間隔は変更されてもよい。
一実施形態において、同期複製の場合、延滞ノードが2次ストレージへの書込みを開始しようとした場合、この時点では、遅延ノードからの任意のこのような進行中のI/O書込みのある間隔を正しく特定/関連付けることは可能ではない。この結果、このようなI/O書込みは、延滞ノードがコーディネータノードからの間隔指示の確認応答を再開するまで、2次ストレージに含まれない。延滞ノード(例えば、第2のノード)が間隔指示に応答しない期間、第2のノードは、1次及び/又は2次ストレージへI/O書込みを送信することと、これらのI/O書込みを第2のノードによって最後に知られている間隔と関連付けることとが可能である。
一実施形態において、第2のノードが、間隔通知への(例えば、新しい間隔への)応答を再開すると、コーディネータノードは、反応がなかった間隔範囲について、第2のノードに通知することができる。第2のノードは、次いで、コーディネータノードから受信された新しい間隔(例えば、間隔100)に属するとして、あらゆる未完了及び進行中のI/O書込みを関連付けることができる。一実施形態において、これは、この新しい間隔に属するとして、1次及び/又は2次ストレージの書込みに完了されたI/O書込みを関連付けることを含むことができる。換言すれば、最後に確認応答された間隔から現在までに処理された書込みは、最後に受信された間隔に受信されたように処理される。これは、第2のノードは、コーディネータノードに新しい間隔指示を確認応答することなく、アプリケーションに確認応答していた可能性がないため、許容される。第2のノードは、I/O書込み706(1)も再開することができる。
図8〜10は、一実施形態に従う、間隔制御複製中の多様なノードとストレージデバイスとの間の通信を図示する図である。図8〜10は、特に、図1を参照して説明した要素、並びに図2A〜2D及び3に図示される流れ図の方法の変形を参照して説明する。いくつかの実施形態において、ノードは、間隔指示の受信を確認応答するために、メッセージをコーディネータノードへ送信する。一実施形態において、ノードが、間隔(m+2)を示す間隔指示を受信すると、間隔(m+1)に有効であった(すなわち、延滞していなかった)ノードは全て、コーディネータノードに対して、その前の間隔の受信を確認応答していたと想定される。一実施形態において、間隔指示(例えば、データ122)は、有効なメンバーシップが変更されると(例えば、いくつかのノードが、間隔を確認応答しない場合、又はその前は延滞していたが現在は有効であるノード)必ず示すことができる。一実施形態において、間隔指示が他のノードに関する情報を含まない場合、これは、全ての有効なノードがその前の間隔を確認応答したことを示すことができる。図9〜10は、特に記載のない限り、同期複製モードのノードの動作を図示する。図8〜10は同じ単一の複製のノードの動作を図示することに注意されたい(例えば、全てのノードは同期複製モードで動作している)。
図8は、一実施形態に従い、間隔制御複製を実装する分散ストレージシステムの多様な要素間の通信のタイミング図800である。要素802(1)は第1のノード、例えば、ノード1の102(1)を図示し、要素802(2)は第2のノード、例えば、ノード2の102(2)を図示し、要素804(1)はコーディネータノード、例えば、ノード104を図示し、要素806はローカルストレージ、例えば、1次ストレージ112を図示し、要素808はリモートストレージ、例えば、2次ストレージ114を図示する。要素826は、多様な通信が開始され得る時間内の点を図示する。図8は、同期、非同期、又は周期複製におけるノードの動作を図示する。
T1の826(1)の時点で、コーディネータノード804は、第1の間隔を示す間隔指示810(1)を第1のノード802(1)及び第2のノード802(2)へ送信する。同期及び非同期両方の複製モードにおいて、間隔指示810(1)を受信した後、第1の間隔の間に、第1のノード802(1)は第1のI/O書込み、すなわち、(ローカルストア806への)第1のローカル書込み812(1)及びリモートストア808への第1のリモート書込み814(1)を開始する。第1のリモート書込み814(1)は、第1の間隔を示す間隔IDを含むことができる。周期複製モードにおいて、第1のノード802(1)は、代わりに第1のリモート書込みを集積することができる。全ての3つの複製モードにおいて、まだ第1の間隔中、ローカルストア806は、ローカル書込みの確認応答メッセージ816(1)(第1のローカル書込みの完了の確認応答)を第1のノード802(1)へ送信することができる。第1のノード802(1)は、第1の間隔指示810(1)の受信を確認応答するために、間隔確認応答メッセージ816(1)をコーディネータノード804へ送信する。同様に、第2のノード802(2)は、第1の間隔指示810(1)の受信を確認応答するために、間隔確認応答メッセージ818(1)をコーディネータノード804へ送信する。
T2の826(2)の時点で、コーディネータノード804は、第2の間隔を示す間隔指示810(2)を第1のノード802(1)及び第2のノード802(2)へ送信する。同期及び非同期両方の複製モードにおいて、間隔指示810(2)を受信した後、第2の間隔の間に、第2のノード802(2)は、ローカルストア806への第2のローカル書込み812(2)及びリモートストア808への第2のリモート書込み814(2)を開始する。周期複製モードにおいて、第2のノード802(2)は、代わりに第2のリモート書込みを集積することができる。全ての3つの複製モードにおいて、まだ第2の間隔中、ローカルストア806は、ローカル書込みの確認応答メッセージ820(2)(第2のローカル書込みの完了の確認応答)を第1のノード802(1)へ送信することができる。同期複製において、第1の間隔中、リモートストア808は、リモート書込みの確認応答メッセージ822(1)(第1のリモート書込みの完了の確認応答)を第1のノード802(1)へ送信することができる。非同期複製においても、リモートストア808は、リモート書込みの確認応答メッセージ822(1)を送信することができるが、しかしながら、第1のノード802(1)は、第1の書込みの完了をその関連アプリケーションを確認応答する前に、このリモート書込みの確認応答メッセージ822(1)の受信を待機しないことに注意されたい。
第2のI/O書込み(すなわち、第2のローカル書込み812(2)及び第2のリモート書込み814(2))は第1のI/O書込みに依存しないことに注意されたい。第2のリモート書込み814(2)は、第2の間隔を示す間隔IDを含むことができる。第1のノード802(1)及び第2のノード802(2)の両方は、第2の間隔指示810(2)の受信を確認応答するために、それぞれ、確認応答メッセージ816(2)及び818(2)を、コーディネータノード804へ送信する。リモートストア808は、集積されたリモート書込みのバッチが書き込まれると(すなわち、期間の最後に)確認応答を送信することができる。周期複製において、書込みは、ある期間の間集積され(データ容量及び/又はログに)、その期間の終了後(すなわち、その前の期間のデータが送信された後)にリモートストレージへ送信される。
T3の826(3)の時点で、コーディネータノード804は、第3の間隔を示す間隔指示810(3)を第1のノード802(1)及び第2のノード802(2)へ送信する。同期複製で動作している場合、第3の間隔中に、第1のノード802(1)は、ローカル及びリモートストアから、第1のローカル及びリモートI/O書込みが完了したこと、全てのノードが第2の間隔にいることの確認応答を受信したことに基づいて、第1の書込みが完了したことを確認応答することができる。非同期及び周期複製で動作している場合、第3の間隔中に、第1のノード802(1)は、ローカルストアから、第1のローカルI/O書込みが完了したこと、全てのノードが第2の間隔にいることの確認応答を受信したことに基づいて、第1の書込みが完了したことを確認応答することができる。例えば、全ての3つの複製モードにおいて、第1のノードの管理ノードは、第1のノードのアプリケーションに対して、第1のI/O書込みが完了したことを確認応答することができる。このアプリケーションは、第3のI/O書込みを発行するようにリクエストしている可能性がある。しかしながら、第3のI/O書込みは第1のI/O書込みに依存するため(すなわち、これらの書込みによってアクセスされるデータにデータ依存性が存在する)、アプリケーションは、第1のI/O書込みが完了されたという確認応答を受信するまで、第3のI/O書込みを発行することを待機する。間隔指示810(3)を受信した後、第3の間隔中に、第1のノード802(1)は、(ローカルストア806への)第3のローカル書込み812(2)及びリモートストア808への第3のリモート書込み814(2)の両方を開始する。第3のリモート書込み814(3)は、第3の間隔を示す間隔IDを含むことができる。
図9は、一実施形態に従い、間隔制御複製を実装する分散ストレージシステムの多様な要素間の通信のタイミング図900である。要素902(1)は第1のノード、例えば、ノード1の102(902)を図示し、要素902(2)は第2のノード、例えば、ノード2の102(2)を図示し、要素904(1)はコーディネータノード、例えば、ノード104を図示し、要素906はローカルストレージ、例えば、1次ストレージ112を図示し、要素908はリモートストレージ、例えば、2次ストレージ114を図示する。要素926は、多様な通信が開始され得る時間内の点を図示する。図9は、余分な指示メッセージを使用する間隔制御複製の実施形態を図示する。ノード(例えば、ノード902(1)及び902(2))は、間隔指示の受信を確認応答するために、コーディネータノード904へメッセージを送信する。これに応答して、コーディネータノード904は、余分な指示メッセージをノード(例えば、ノード902(1)及び902(2))へ送信し、どのノードが間隔指示の受信を確認応答したかを示す。
T1の926(1)の時点で、コーディネータノード904は、第1の間隔を示す間隔指示910(1)を第1のノード902(1)及び第2のノード902(2)へ送信する。間隔指示910(1)を受信した後、第1の間隔の間に、第1のノード902(1)は第1のI/O書込み、すなわち、(ローカルストア906への)第1のローカル書込み912(1)及びリモートストア908への第1のリモート書込み914(1)を開始する。第1のリモート書込み914(1)は、第1の間隔を示す間隔IDを含むことができる。第1のノード902(1)及び第2のノード902(2)もまた、それぞれ、間隔指示910(1)の受信を確認応答する間隔確認応答916(1)及び917(1)を、コーディネータノード904へ送信する。これに応答して、コーディネータノード904は、間隔確認応答指示メッセージ918(1)をノード902(1)及び902(2)へ送信する。間隔確認応答指示メッセージ918(1)は、どのノードが間隔指示の受信を確認応答したかを示すことができる。更に第1の間隔中、ローカルストア906は、第1のローカル書込みの完了を確認応答する、ローカル書込みの確認応答メッセージ920(1)を、第1のノード902(1)へ送信することができる。
T2の926(2)の時点で、コーディネータノード904は、第2の間隔を示す間隔指示910(2)を第1のノード902(1)及び第2のノード902(2)へ送信する。第1のノード902(1)は、第1のノード902(1)が第2の間隔指示910(2)を受信したことを確認応答する、間隔確認応答916(2)をコーディネータノードへ送信する。しかしながら、第2のノード902(2)は、遅延930の後まで、第2のノード902(2)が確認指示910(2)を受信したことを確認応答する間隔確認応答をコーディネータノード904へ送信しない。この結果、コーディネータノード904は、第2のノード902(2)が間隔確認応答917(2)をコーディネータノード904へ送信するまで、間隔確認応答指示メッセージ918(2)をノード902(1)及び902(2)へ送信することを(例えば、少なくとも遅延930の期間)待機する。この例において、第2のI/O書込みは第1のI/O書込みに依存するため(すなわち、これらの書込みによってアクセスされるデータにデータ依存性が存在する)、第2のノード902(2)は、コーディネータノード904から間隔確認応答指示メッセージ918(2)を受信するまで、第2のローカル書込み912(2)及び第2のリモート書込み914(2)を開始することを待機する。第2のリモート書込み914(2)は、第2の間隔を示す間隔IDを含むことができる。
複数のI/O書込みが要素916(2)と917(2)との間に発生する可能性があるが、簡略性のため、図9には表示されないことに注意されたい。例えば、要素916(2)の後、第1のノード902(1)からのこれらのI/O書込みは第2の間隔を使用するが、第2のノード902(2)上では、これらのI/O書込みは、第1又は第2の間隔を使用する場合がある(第2のノードが910(2)を処理したかどうかに依存する)。一実施形態において、要素917(2)の後、第2のノード902(2)は、918(2)が受信される前であっても、第2の間隔を使用する。
更に第2の間隔中、ローカルストア906は、ローカル書込みの確認応答メッセージ920(2)を第2のノード902(2)へ送信することができる。第2の間隔中、リモートストア908は、リモート書込みの確認応答メッセージ924(1)(第1のリモート書込みの完了の確認応答)を第1のノード902(1)へ送信することができる。T3の926(3)の時点で、コーディネータノード904は、間隔指示910(3)をノード1及び2、902(1)及び902(2)へ送信する。
図10は、一実施形態に従い、間隔制御複製を実装する分散ストレージシステムの多様な要素間の通信のタイミング図1000である。要素1002(1)は第1のノード、例えば、ノード1の102(1)を図示し、要素1002(2)は第2のノード、例えば、ノード2の102(2)を図示し、要素1004(1)はコーディネータノード、例えば、ノード104を図示し、要素1006はローカルストレージ、例えば、1次ストレージ112を図示し、要素1008はリモートストレージ、例えば、2次ストレージ114を図示する。要素1026は、多様な通信が開始され得る時間内の点を図示する。
図10は、サブ間隔指示及び確認応答メッセージを使用する間隔制御複製の実施形態を図示する。この実装において、2つのメッセージ(間隔指示及び間隔確認応答指示)を送信する代わりに、間隔が2つに分割される。間隔の中間であろう点で、その前の間隔の間隔確認応答指示としても使用できる、新しい部分間隔指示メッセージを送信することができる。この手法を用いると、書込み完了が2つの間隔で待機する場合であっても、有効な経過期間は図9の実装と依然として同じである。
ノード(例えば、ノード1002(1)及び1002(2))は、間隔指示の受信を確認応答するために、コーディネータノード1004へメッセージを送信する。これに応答して、コーディネータノード1004は、どのノードがその前の間隔指示の受信を確認応答したかを示すために、部分間隔時点(例えば、本来の間隔時間の中間点)で、部分間隔指示メッセージをノードへ送信する。一実施形態において、ノード1002(1)及び1002(2)は、全ての間隔指示の受信を確認応答する。
T1の1026(1)の時点で、コーディネータノード1004は、第1の間隔を示す間隔指示1010(1)を第1のノード1002(1)及び第2のノード1002(2)へ送信する。間隔指示1010(1)を受信した後、第1の間隔中に、第1のノード1002(1)は、(ローカルストア1006への)第1のローカル書込み(1012)(1)及びリモートストア1008への第1のリモート書込み1014(1)の両方を開始する。第1のノード1002(1)及び第2のノード1002(2)もまた、それぞれ、間隔指示1010(1)の受信を確認応答する間隔確認応答1016(1)及び1017(1)を、コーディネータノード1004へ送信する。更に第1の間隔中、ローカルストア1006は、第1のローカル書込みの完了を確認応答する、ローカル書込みの確認応答メッセージ1020(1)を、第1のノード1002(1)へ送信することができる。間隔確認応答1016(1)及び1017(1)の受信に応答して、コーディネータノード1004は、使用されている間隔の実質的に約0.5であってもよい、T1.5の1026(2)の時点で、部分間隔確認応答指示メッセージ1010(2)を、ノード1002(1)及び1002(2)へ送信する。部分間隔確認応答指示メッセージはそれぞれ、間隔確認応答指示メッセージとしても機能し、どのノードが、その前の間隔指示の受信を確認応答したかを示すことができる。一実施形態において、第1のノード1002(1)及び第2のノード1002(2)もまた、それぞれ、間隔指示1010(2)の受信を確認応答する間隔確認応答1016(2)及び1017(2)を、コーディネータノード1004へ送信する。
T2の1026(3)の時点で、コーディネータノード1004は、第2の間隔を示す間隔指示1010(2)を第1のノード1002(1)及び第2のノード1002(2)へ送信する。第1のノード1002(1)は、第1のノード1002(1)が第2の間隔指示1010(3)を受信したことを確認応答する、間隔確認応答1016(3)をコーディネータノード1004へ送信する。しかしながら、第2のノード1002(2)は、遅延1030の後まで、第2のノード1002(2)が確認指示1010(2)を受信したことを確認応答する間隔確認応答をコーディネータノード1004へ送信しない。この結果、コーディネータノード1004は、第2のノード1002(2)が間隔確認応答1017(4)をコーディネータノード1004へ送信するまで、次の間隔指示1018(4)をノード1002(1)及び1002(2)へ送信することを(例えば、少なくとも遅延1030の期間)待機する。
この例において、第2のI/O書込みが第1のI/O書込みに依存するため(すなわち、これらの書込みによってアクセスされるデータにデータ依存性が存在する)、第2のノード1002(2)は、コーディネータノード1004から次の間隔指示1018(4)を受信するまで、第2のローカル書込み1012(2)及び第2のリモート書込み1014(2)を開始することを待機する。第2のリモート書込み1014(2)は、第2の間隔を示す間隔IDを含むことができる。更に第2の間隔中、ローカルストア1006は、ローカル書込みの確認応答メッセージ1020(2)を第2のノード1002(2)へ送信することができる。第2の間隔中、リモートストア1008は、リモート書込みの確認応答メッセージ1024(1002)(第1のリモート書込みの完了の確認応答)を第1のノード1002(1)へ送信することができる。T3の1026(5)の時点で、コーディネータノード1004は、間隔指示1010(5)を第1及び第2のノード1002(1)及び1002(2)へ送信する。一実施形態において、部分間隔は正規の間隔として取り扱うことができ、このため第1の間隔で開始したアプリケーションの書込みは、第3の間隔で確認応答される(これによって、全てのノードが第2の間隔に移動したことを確実にする)。部分間隔を正規の間隔として取り扱うことによって、間隔粒度を向上することができ、すなわち、余分なメッセージを追加することなく、間隔をより小さくすることができる。
図11は、一実施形態に従う、間隔制御複製におけるコーディネータノードの動作の方法を図示する流れ図である。本開示を考慮すれば明らかであるように、この方法は、代替の実施形態を誘導するために、変更されてもよい。また、本実施形態における工程は順次示される。しかしながら、ある特定の工程が、図示されるのと異なる順に生じてもよく、ある特定の工程が同時に実施されてもよく、ある特定の工程が、他の工程と組み合わされてもよく、ある特定の工程が、別の実施形態で不在であってもよい。方法1100は、図1に関連して記載される要素の変形を参照して説明する。方法1100は、図3を参照して上記に説明した方法300の変形である。図11は、同期、非同期、又は周期複製におけるコーディネータノードの動作を図示する。一実施形態において、コーディネータノードは、特に記載のない限り、これらの3つの複製モードにおいて実質的に類似して動作する。
要素1102において、コーディネータノードは、時間間隔に従って間隔指示を送信する。コーディネータノード104は、管理モジュール110(1)を使用して、時間間隔を追跡することができる。例えば、管理モジュールは、ノード102(1)〜102(n)に対して、第1の間隔中の時間間隔mを示す間隔指示を送信することができる。同様に、例えば、管理モジュールは、ノード102(1)〜102(n)に対して、第2の間隔中の時間間隔(m+1)を示す間隔指示を送信することができる。
要素1104において、コーディネータノードは、実質的に全てのノードから(その前の確認指示を受信したことの)確認応答が受信されたかどうかを決定する。一実施形態において、コーディネータノードは、分散ストレージシステムの全てのノードから確認応答が受信されたかどうかを決定する。別の実施形態において、コーディネータノードは、分散ストレージシステム内の予測されたサブセットからのみ確認応答が受信されたかどうかを決定する。コーディネータノードは、どのノードが、確認応答で応答することを提供することが予測されるかを決定することができる。分散I/Oシステム内の予測されたノードの全て(すなわち、全てのノード、又はノードの予測されたサブセット)から確認応答が受信された場合、方法1100は要素1105を実行する。
要素1105において、時間間隔チェックが実施される。一実施形態において、要素1105は、方法300の要素304及び306を含む。このため、時間間隔調整が必要な場合、時間間隔が調整される。時間間隔調整が必要でない場合、時間間隔は調整されない。一実施形態において、延滞ノード(すなわち、確認応答を提供することが予測されるが、提供しないノード)は、要素1106に指定された遅延閾値以内にこのような確認応答で応答し、次いで、要素1105は、適宜(例えば、図6を参照して上記に説明した状況に応じて)時間間隔を推移及び/又は調整することができる。方法1100は次いで、要素1102を実行する。
要素1106において、コーディネータノードが予測されたノードから確認応答を受信しない場合、コーディネータノードは、これらの確認応答を受信する際の遅延が閾値より長いかどうかを決定する。一実施形態において、この閾値の値は、方法1100の実行前に決定することができる。別の実施形態において、この閾値の値は、例えば、方法1100の実行中等、動的に決定することができる。例えば、この閾値の値は、ノード間の通信の速度を解析する管理モジュールによって計算することができる。遅延が閾値より長くない場合、方法1100は要素1108を実施するので、コーディネータモジュールは、要素1104を再び実行する前に、ある特定の時間量の間待機する。次に、方法1100は要素1114に進み、コーディネータノードが次の間隔を使用する次の間隔指示を送信する。
一実施形態において、要素1102及び/又は1114において、分散ストレージシステムが周期複製モードで動作している場合、コーディネータノードは、間隔指示の一部(例えば、データフィールドの一部)として、又は別のメッセージにおいて、それぞれの期間及び/又は期間完了の指示もノードへ送信することができる。例えば、コーディネータノードは、現在の期間を示す期間指示を送信することができる。コーディネータノードは、次の期間が開始したことを示す期間変更も送信することができる。
要素1116において、コーディネータノードは、延滞ノードを含む、実質的に全てのノードから、(要素1114のその前の間隔指示を受信したことの)確認応答が受信されたかどうかを決定する。一実施形態において、コーディネータノードは、分散ストレージシステムの全てのノードから確認応答が受信されたかどうかを決定する。別の実施形態において、コーディネータノードは、分散ストレージシステム内の予測されたサブセットからのみ確認応答が受信されたかどうかを決定する。コーディネータノードは、どのノードが、確認応答で応答することを提供することが予測されるかを決定することができる。分散I/Oシステム内の予測されたノードの全て(すなわち、全てのノード又はノードの予測されたサブセット、延滞ノードを含む)から確認応答が受信された場合、方法1100は要素1102を実行する。分散I/Oシステム内の予測されたノードの全てから確認応答が受信されていない場合、方法1100は要素1114を再び実行する。コーディネータノードは、延滞ノードがI/O書込みを処理することができることを示す情報を有する他のノードと通信することもできる。一実施形態において、いずれかの延滞ノードがその前のメッセージを受信していないかもしれないため、コーディネータノードは、これらの延滞ノードが特殊な処理を必要とすることを示す、新しいメッセージを延滞ノードに送信し続ける。
一実施形態において、延滞ノードが開始してコーディネータから間隔指示を受信すると、延滞ノードは、これらの間隔指示を確認応答する前に、是正措置をとる。この是正措置プロセスが長い場合、延滞ノードが間隔指示を確認応答できる前に、まだ2、3の間隔が存在する場合がある。延滞ノードが間隔指示を確認応答すると、このノードは、良好な状態のノードであると見なすことができる。別の実施形態において、延滞ノードは、コーディネータノードに対して、是正措置プロセス内にあることを確認応答することができ、バックグラウンドで是正措置処理を実行することができる。一実施形態において、図7を参照して上記で説明したように、この是正措置プロセスは、延滞ノードが、任意の未完了及び進行中I/O書込みを、コーディネータノードから受信された新しい間隔に属するとして関連付けることを含むことができる。
図12は、図1で説明されるノード102(1)〜102(n)等のノード1200のブロック図である。ノード1200は、アプリケーション1202と、管理モジュール1204と、ファイルシステム1206と、メモリ1210と、及び/又は1つ以上のプロセッサ1212とを含む。いくつかの実施形態において、これらの要素のうちの1つ以上は組み合わされてもよいことに注意されたい。例えば、メモリ1210は、アプリケーション1202と、管理モジュール1204と、及び/又はシステム1206とを含む場合がある。また、管理モジュール1204は、ソフトウェア及び/又はハードウェアモジュールとして実装されてもよいことにも注意されたい。更に、いくつかの実施形態において、ノード1200の要素のうちの1つ以上は使用されなくてもよいことにも注意されたい。プロセッサ1212は、アプリケーション1202、管理モジュール1204、及び/又はファイルシステム1206のうちの1つ以上を実行することができる。管理モジュール1204は、図1の管理モジュール108(1)〜108(n)を実装することができる。管理モジュール1204は、方法200及び/又は250の少なくとも一部を実装することができる。
図13は、図1で説明されるコーディネータノード104等のコーディネータノード1300のブロック図である。コーディネータノード1300は、アプリケーション1302と、管理モジュール1304と、ファイルシステム1306と、メモリ1310と、及び/又は1つ以上のプロセッサ1312とを含む。いくつかの実施形態において、これらの要素のうちの1つ以上は組み合わされてもよいことに注意されたい。例えば、メモリ1310は、アプリケーション1302、管理モジュール1304、及び/又はシステム130のうちの1つ以上を含む場合がある。また、管理モジュール1304は、ソフトウェア及び/又はハードウェアモジュールとして実装されてもよいことにも注意されたい。更に、いくつかの実施形態において、ノード1300の要素のうちの1つ以上は使用されなくてもよいことにも注意されたい。プロセッサ1312は、アプリケーション1302、管理モジュール1304、及び/又はファイルシステム1306のうちの1つ以上を実行することができる。管理モジュール1304は、図1の管理モジュール110(1)を実装することができる。管理モジュール1304は、方法300及び/又は1100の少なくとも一部を実装することができる。
ネットワークアーキテクチャの要素は、異なるコンピュータシステム及びネットワークを使用して実装されてもよい。1つのこのようなネットワーク環境の一例は、図14を参照して以下に記載する。図14は、1つ以上のクライアントが様々なネットワーク接続を介してサーバへのアクセスが提供される、ネットワークアーキテクチャ1400を図示する簡略化されたブロック図である。図14に図示されるように、クライアント1402(1)〜(N)はネットワーク1410に連結され、このために、ネットワーク1410を介してサーバ1406(図1、12、及び/又は13のノードを実装するために使用することができる)にアクセスすることができる。代わりに、他のサーバ(図示せず)が、図1、12、及び/又は13のシステム(複数可)ノードを実装するために使用されてもよい。クライアントは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、サーバ、携帯電話、スマートフォン、ネットワークが使用可能な携帯情報端末(PDA)等を使用して実装されてもよい。サーバ1406にアクセスするためにクライアント1402(1)〜(N)によって使用され得る、ネットワーク1410の一例はインターネットである。あるいは、サーバ1406へのアクセスは、イーサネット、IEEE 802.11x、又はいくつかの他の通信プロトコルを利用してローカルエリアネットワーク(LAN)によって提供することができる。理解されるように、サーバ1406は、それに直接連結されるクライアント(図示せず)によってアクセスすることができる。
図14にも図示されるように、サーバ1406は、1次ストレージ112及び/又は2次ストレージ114等のデータ容量を含む、サーバストレージデバイス1408に連結される。サーバストレージデバイス1408は、単一のストレージデバイス又はストレージデバイスの集合体として実装することができる。サーバストレージデバイス1408はまた、ストレージエリアネットワークとして実装されてもよく、リモートストレージデバイスをサーバ(例えば、サーバ1406)に連結して、リモートストレージデバイスが、例えばサーバのOSにローカル接続のストレージデバイスとして見えるようにする。
本開示を考慮すれば、当業者は、サーバストレージデバイス1408が内部又は外部ハードディスクドライブ(HDD)、光ドライブ(例えば、CD−R、CD−RW、DVD−R、DVD−RW等)、フラッシュメモリドライブ(例えば、USBメモリスティック等)、テープドライブ等を含むがこれらに限定されない任意の種類のコンピュータで読み取り可能な記憶媒体によって実装できることを理解するであろう。あるいは、当業者は、本開示を考慮すれば、ネットワークアーキテクチャ1400が、本ネットワークの考察に密接な関係がなく、かつ本明細書では更に説明されない、ルータ、ファイアウォール等の他の構成要素を含むことができることも理解するであろう。当業者であれば、他の構成が可能であることも理解するであろう。例えば、クライアント1402(1)〜(N)は、サーバ又はインターネットを使用することなくサーバストレージデバイス1408に直接連結することができ、サーバ1406は、クライアント及びサーバの両方を実装するために使用することができ、ネットワークアーキテクチャ1400は、クライアント1402(1)〜(N)を使用することなく実装することができる等である。
ネットワークアーキテクチャ1400の例示的な実装として、サーバ1406は、サーバストレージデバイス1408に記憶されたデータに対して、クライアント1402(1)〜(N)によって生成されたデータへのリクエストをサービスする。ノード、エージェント、及び/又は管理モジュールの機能のいずれかは、図1、12、及び/又は13によって図示される様式において他のサーバのうちの1つを使用して実施することができる。
図15は、本開示を実装するために好適なコンピュータシステム1510のブロック図を図示する。コンピュータシステム1510は、特に、ノード及び/又はコーディネータノード等、図1のネットワークで接続されたシステム内の多様なコンピュータシステムの図示であってもよい。コンピュータシステム1510は、中央処理装置1514、システムメモリ1517(典型的には、RAMであるが、ROM、フラッシュRAM等も含み得る)、入力/出力コントローラ1518、オーディオ出力インターフェース1522を介するスピーカシステム1520等の外部オーディオデバイス、ディスプレイアダプタ1526を介するディスプレイ画面1524等の外部デバイス、シリアルポート1528及び1530、キーボード1532(キーボードコントローラ1533とインターフェース接続される)、ストレージインターフェース1534、フロッピーディスク1538(「フロッピー」は登録商標、以下同じ)を受容するように動作可能であるフロッピーディスクドライブ1537、ファイバチャネルネットワーク1590と接続するように動作可能であるホスト・バス・アダプタ(HBA)インターフェースカード1535A、SCSIバス1539に接続するように動作可能であるホスト・バス・アダプタ(HBA)インターフェースカード1535B、並びに光ディスク1542を受容するように動作可能である光ディスクドライブ1540等、コンピュータシステム1510の主要なサブシステムを相互接続するバス1512を含む。また、マウス1546(又はシリアルポート1528を介してバス1512に連結される、他のポイントアンドクリックデバイス)、モデム1547(シリアルポート1530を介してバス1512に連結される)、及びネットワークインターフェース1548(バス1512に直接連結される)も含まれる。
バス1512は、上述のように、中央処理装置1514とシステムメモリ1517との間のデータ通信を可能にし、システムメモリ1517は、リードオンリーメモリ(ROM)又はフラッシュメモリ(いずれも図示せず)と、ランダムアクセスメモリ(RAM)(図示せず)とを含んでもよい。RAMは概して、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリである。ROM又はフラッシュメモリは、他のコードと共に、周辺コンポーネンツとの相互作用等の基本的なハードウェアの動作を制御する、ベーシック・インプット/アウトプット・システム(BIOS)を含むことができる。コンピュータシステム1510に常駐するアプリケーションは概して、ハードディスクドライブ(例えば、固定ディスク1544)、光ドライブ(例えば、光ドライブ1540)、フロッピーディスクユニット1537、又は他の記憶媒体等のコンピュータで読み取り可能な媒体に記憶され、それを介してアクセスされる。加えて、アプリケーションは、ネットワークモデム1547又はインターフェース1548を介してアクセスされるときにアプリケーション及びデータ通信技術に従って変調される電子信号の形態であってもよい。
ストレージインターフェース1534は、コンピュータシステム1510のその他のストレージインターフェースと同様に、固定ディスクドライブ1544等の、情報の記憶及び/又は検索のための標準的なコンピュータで読み取り可能な媒体に接続することができる。固定ディスクドライブ1544は、コンピュータシステム1510の一部であってもよく、独立していて、他のインターフェースシステムを介してアクセスされてもよい。モデム1547は、電話回線を介してリモートサーバへの、又はインターネット・サービス・プロバイダ(ISP)経由でインターネットへの直接接続を提供してもよい。ネットワークインターフェース1548は、POP(ポイント・オブ・プレゼンス)を介したインターネットへのダイレクトネットワークリンクを介してリモートサーバへの直接接続を提供してもよい。ネットワークインターフェース1548は、デジタル携帯電話接続、セルラー・デジタル・パケット・データ(CDPD)接続、又はデジタル衛星データ接続等を含む無線技術を使用して、かかる接続を提供してもよい。
他の多くのデバイス又はサブシステム(図示せず)も同様の方法で接続することができる(例えば、文書スキャナ、デジタルカメラ等)。逆に、図15に示されるデバイスの全てが、本開示を実践するために存在する必要はない。デバイス及びサブシステムは、図15に示されるものとは異なる手法で相互接続することができる。図15に示されるようなコンピュータシステムの動作は、本明細書において詳細に検討しない。本開示を実装するために(図2A〜2D、3、及び11の方法を参照して上述したような)他のアプリケーション等に対するそれらの依存性に基づいてかかるアプリケーション上での動作を自動的に実施するためのコードは、システムメモリ1517、固定ディスク1544、光ディスク1542、又はフロッピーディスク1538のうちの1つ以上等のコンピュータで読み取り可能な記憶媒体に記憶することができる。メモリ1520はまた、プロセッサ1510による命令の実行中に一時変数又は他の中間情報を記憶するためにも使用することができる。コンピュータシステム1510上に提供されるオペレーティングシステムは、MS−DOS(登録商標)、MS−WINDOWS(登録商標)、OS/2(登録商標)、UNIX(登録商標)、Linux(登録商標)、又は別の既知のオペレーティングシステムであってもよい。
更に、本明細書に記載される信号に関して、当業者であれば、信号が第1のブロックから第2のブロックに直接伝送されてもよく、又は信号がブロック間で変更(例えば、増幅、減衰、遅延、ラッチ、バッファ、反転、フィルタリング、又は別の方法で変更)されてもよいことを認識するであろう。上述される実施形態の信号は、あるブロックから次のブロックに伝送されると特徴付けられるが、本開示の他の実施形態は、信号の情報及び/又は機能面がブロック間で伝送される限り、かかる直接伝送された信号の代わりに変更された信号を含むことができる。ある程度、第2のブロックにおける信号入力は、関係する回路の物理的制約(例えば、いくらかの減衰及び遅延が必然的に存在する)により、第1のブロックからの第1の信号出力から得られた第2の信号として概念化されてもよい。したがって、本明細書で使用されるとき、第1の信号から得られた第2の信号は、回路制約によるか、又は第1の信号の情報及び/又は最終機能面を変更しない他の回路素子の通過によるものであろうとなかろうと、第1の信号又は第1の信号に対する何らかの変更を含む。
いくつかの実施形態に関連して本発明について記載してきたが、本発明は、本明細書において説明される特定の形態に限定されことを意図するものではない。反対に、添付の請求項によって定義されるような本発明の範囲内に正当に含まれ得るような代替例、修正、及び等価物を包含するものとする。

Claims (19)

  1. 方法であって、
    アプリケーションからの第1の書込みと、第1の間隔指示と、をローカルノードにおいて受信することであって、
    前記第1の間隔指示が、第1の間隔の開始を示し、
    前記第1の間隔指示が、複数の間隔指示のうちの1つである、受信することと、
    第1のローカル書込み、第1のリモート書込み、及び第2のリモート書込みを前記ローカルノードによって第1に開始することであって、
    前記第1に開始することが、前記第1の間隔指示の受信に応答して実施され、
    前記第1のローカル書込みが、ローカルストレージにアクセスし、
    前記第1のリモート書込みが、第1のリモートストレージにアクセスし、
    前記第1のリモート書込みが、前記第1のローカル書込みを複製し、
    前記第2のリモート書込みが、第2のリモートストレージにアクセスし、
    前記第2のリモート書込みが、前記第1のローカル書込みを複製する、第1に開始することと、
    第1のローカル書込みの確認応答と、第1のリモート書込みの確認応答及び第2のリモート書込みの確認応答の少なくとも一方と、を前記ローカルノードにおいて受信することであって、
    前記第1のリモート書込みの確認応答が、前記第1のリモートストレージが前記第1のリモート書込みを完了したことを示し、
    前記第2のリモート書込みの確認応答が、前記第2のリモートストレージが前記第2のリモート書込みを完了したことを示す、受信することと、
    前記複数の間隔指示のうちの第2の間隔指示を前記ローカルノードにおいて受信することであって、
    前記第2の間隔指示が、第2の間隔の開始を示す、受信することと、
    前記第1の書込みの完了を前記ローカルノードにおいて確認応答することであって、
    前記確認応答が、前記アプリケーションに伝達され、
    前記確認応答が、前記第1のローカル書込みの確認応答と、前記第1のリモート書込みの確認応答及び前記第2のリモート書込みの確認応答の少なくとも一方と、前記第2の間隔指示と、の受信に応じて伝達される、確認応答することと、を含む、方法。
  2. 第2のローカル書込み、第3のリモート書込み、及び第4のリモート書込みを第2に開始することであって、
    複数のノードが、前記ローカルノード及びコーディネータノードを含み、
    前記複数のノードの各々が前記第2の間隔指示を受信したと前記コーディネータノードが決定したことに続いて、前記ローカルノードが前記第2に開始することを実施する、第2に開始することを更に含む、請求項1に記載の方法。
  3. 前記複数のノードの各々が前記第2の間隔指示を受信したと前記コーディネータノードにおいて決定することは、
    前記複数のノードの各々が前記第2の間隔指示を受信したという確認応答を前記コーディネータノードにおいて受信することを含む、請求項2に記載の方法。
  4. 前記第1のリモート書込みが、第1の関連するタイムスタンプを有し、
    前記第1の関連するタイムスタンプが、前記第1の間隔を示す、請求項1に記載の方法。
  5. 前記第1のローカル書込み及び前記第1のリモート書込みが前記第2の間隔指示を受信する前に完了した場合、新しい間隔を前記ローカルノードにおいて決定することを更に含む、請求項1に記載の方法。
  6. 第1の間隔の確認応答を前記ローカルノードから送信することを更に含み、
    前記第1の間隔の確認応答が、前記第1の間隔指示の受信を示す、請求項1に記載の方法。
  7. 前記アプリケーションが前記第1の書込みを発行することであって、
    前記第1に開始することが、更に前記第1の書込みを発行する前記アプリケーションに応答して実施され、
    前記第1の書込みが、第1のデータにアクセスする、発行することと、
    前記アプリケーションが第2の書込みを発行することと、を更に含み、
    前記アプリケーションが、前記第1のリモート書込みの確認応答及び前記第2の間隔指示の受信に応答して前記第2の書込みを発行し、
    前記第2の書込みが、第2のデータにアクセスし、
    前記第2のデータが、前記第1のデータに依存する、請求項1に記載の方法。
  8. 前記第1のリモート書込みが、第1のデータにアクセスし、
    前記第3のリモート書込みが、第のデータにアクセスし、
    前記第3のデータが、前記第1のデータに依存する、請求項に記載の方法。
  9. 前記ローカルストレージへの第3のローカル書込み、前記第1のリモートストレージへの第5のリモート書込み、及び前記第2のリモートストレージへの第6のリモート書込みを前記ローカルノードにおいて第3に開始することを更に含み、
    前記第5のリモート書込みが、前記第3のローカル書込みを複製し、
    前記第3に開始することが、第3の間隔指示の受信に応答して前記ローカルノードにおいて実施され、
    前記第1のリモート書込みが、第1のデータにアクセスし、
    前記第3のリモート書込みが、第2のデータにアクセスし、
    前記第2のデータが、前記第1のデータに依存する、請求項2に記載の方法。
  10. 第1のノードが一定量の前記複数の間隔指示に応答していないかを、前記コーディネータノードにおいて決定することと、
    前記第1のノードが前記一定量の前記複数の間隔指示に応答していないという決定に応答して、前記第1のノードが無反応であることを示すことと、を更に含む、請求項に記載の方法。
  11. 前記第1のノードが遅延後に1つ以上の間隔指示に応答するかを、前記コーディネータノードにおいて決定することと、
    前記第1のノードが遅延後に1つ以上の間隔指示に応答したという決定に応答して、前記遅延中に前記第1のノードによって実施される任意のリモート書込みを前記ローカルノードに処理させる指示を前記ローカルノードへ送信することと、を更に含む、請求項10に記載の方法。
  12. システムであって、
    アプリケーションと、管理モジュールと、を備え、
    前記アプリケーションは、第1の書込みを発行するように構成され、
    前記管理モジュールは、
    第1の間隔の開始を示す第1の間隔指示を受信し、
    ローカルストレージにアクセスする第1のローカル書込みと、第1のリモートストレージにアクセスして前記第1のローカル書込みを複製する第1のリモート書込みと、第2のリモートストレージにアクセスして前記第1のローカル書込みを複製する第2のリモート書込みとを、前記アプリケーションが前記第1の書込みを発行すること及び前記管理モジュールが前記第1の間隔指示を受信することに応答して開始し、
    第2の間隔の開始を示す第2の間隔指示を受信し、
    第1のローカル書込みの確認応答と、前記第1のリモートストレージが前記第1のリモート書込みを完了したことを示す第1のリモート書込みの確認応答及び前記第2のリモートストレージが前記第2のリモート書込みを完了したことを示す第2のリモート書込みの確認応答の少なくとも一方と、を受信し、
    前記第2の間隔指示を受信することと、前記第1のローカル書込みの確認応答を受信することと、前記第1のリモート書込みの確認応答及び前記第2のリモート書込みの確認応答の少なくとも一方を受信することと、に応答して、前記第1の書込みが完了したことを、前記アプリケーションへメッセージを送信することによって確認応答するように構成される、
    システム。
  13. 前記アプリケーションが、前記管理モジュールからの前記第1の書込みの確認応答を受信することに応答して、第2の書込みを発行するように構成される、請求項12に記載のシステム。
  14. 複数のノードが、前記システムを含み、
    前記管理モジュールが、
    前記複数のノードの各々が、前記第2の間隔指示を受信したと決定することに更に応答して、前記第1の書込みの前記確認応答することを実施する、請求項12に記載のシステム。
  15. 前記管理モジュールが、
    第1の間隔の確認応答を送信するように更に構成され、
    前記第1の間隔の確認応答が、前記管理モジュールが前記第1の間隔指示を受信したことを示す、請求項12に記載のシステム。
  16. 複数の命令を記憶する、コンピュータで読み取り可能な記憶媒体であって、
    前記複数の命令は、
    ローカルノードによって実行されると、前記ローカルノードに、第1の書込み及び第1の間隔指示を受信させる第1の組の命令であって、
    前記第1の書込みは、アプリケーションから受信され、
    前記第1の間隔指示が、第1の間隔の開始を示し、
    前記第1の間隔指示が、複数の間隔指示のうちの1つである、第1の組の命令と、
    前記ローカルノードによって実行されると、前記ローカルノードに、第1のローカル書込みと、第1のリモート書込みと、第2のリモート書込みと、を開始させる第2の組の命令であって、
    前記第1のローカル書込みと、前記第1のリモート書込みと、前記第2のリモート書込みと、を開始することが、前記第1の間隔指示の受信に応答して実施され、
    前記第1のローカル書込みが、ローカルストレージにアクセスし、
    前記第1のリモート書込みが、第1のリモートストレージにアクセスし、
    前記第1のリモート書込みが、前記第1のローカル書込みを複製し、
    前記第2のリモート書込みが、第2のリモートストレージにアクセスし、
    前記第2のリモート書込みが、前記第1のローカル書込みを複製する、第2の組の命令と、
    前記ローカルノードによって実行されると、前記ローカルノードに、第1のローカル書込みの確認応答と、第1のリモート書込みの確認応答及び第2のリモート書込みの確認応答の少なくとも一方と、を受信させる第3の組の命令であって、
    前記第1のリモート書込みの確認応答が、前記第1のリモートストレージが前記第1のリモート書込みを完了したことを示し、
    前記第2のリモート書込みの確認応答が、前記第2のリモートストレージが前記第2のリモート書込みを完了したことを示す、第3の組の命令と、
    前記ローカルノードによって実行されると、前記ローカルノードに、前記複数の間隔指示のうちの第2の間隔指示を受信させる第4の組の命令であって、
    前記第2の間隔指示が、第2の間隔の開始を示す、第4の組の命令と、
    前記ローカルノードによって実行されると、前記ローカルノードに、前記第1の書込みの完了を確認応答させる第5の組の命令であって、
    前記第2の間隔指示の受信と、ローカル書込みの確認応答の受信と、前記第1のリモート書込みの確認応答の受信及び前記第2のリモート書込みの確認応答の受信の少なくとも一方と、に応答して前記完了が確認応答される、第5の組の命令と、を含む、記憶媒体。
  17. 前記第1のリモート書込み及び前記第1のローカル書込みの各々が、第1の関連するタイムスタンプを有し、
    前記第1の関連するタイムスタンプが、前記第1の間隔を示す、請求項16に記載の記憶媒体。
  18. 複数のノードの各々が前記第2の間隔指示を受信したと決定することが、
    前記複数のノードの各々が前記第2の間隔指示を受信したという確認応答を受信することを含む、請求項16に記載の記憶媒体。
  19. 前記複数の命令が、
    前記ローカルノードによって実行されると、前記ローカルノードに、第1の間隔の確認応答を送信させる第6の組の命令を更に含み、
    前記第1の間隔の確認応答が、前記第1の間隔指示の受信を示す、請求項16に記載の記憶媒体。
JP2014559954A 2012-02-29 2013-02-27 間隔制御複製 Active JP6316211B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/408,892 US8930309B2 (en) 2012-02-29 2012-02-29 Interval-controlled replication
US13/408,892 2012-02-29
PCT/US2013/027884 WO2013130507A1 (en) 2012-02-29 2013-02-27 Interval-controlled replication

Publications (3)

Publication Number Publication Date
JP2015513742A JP2015513742A (ja) 2015-05-14
JP2015513742A5 JP2015513742A5 (ja) 2016-04-21
JP6316211B2 true JP6316211B2 (ja) 2018-04-25

Family

ID=47846197

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014559954A Active JP6316211B2 (ja) 2012-02-29 2013-02-27 間隔制御複製

Country Status (5)

Country Link
US (1) US8930309B2 (ja)
EP (1) EP2820531B1 (ja)
JP (1) JP6316211B2 (ja)
CN (1) CN104335159B (ja)
WO (1) WO2013130507A1 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141685B2 (en) * 2012-06-22 2015-09-22 Microsoft Technology Licensing, Llc Front end and backend replicated storage
US10037370B2 (en) * 2012-06-29 2018-07-31 M-Files Oy Method, a server, a system and a computer program product for copying data from a source server to a target server
JP6056453B2 (ja) * 2012-12-20 2017-01-11 富士通株式会社 プログラム、データ管理方法および情報処理装置
US9128628B1 (en) * 2013-03-13 2015-09-08 Emc Corporation Dynamic replication mode switching
US11238988B2 (en) 2013-03-14 2022-02-01 Cerner Innovation, Inc. Large scale identification and analysis of population health risks
US10566080B2 (en) 2013-03-14 2020-02-18 Cerner Innovation, Inc. Expression of clinical logic with positive and negative explainability
US9384047B2 (en) * 2013-03-15 2016-07-05 D.E. Shaw Research, Llc Event-driven computation
US9589041B2 (en) * 2013-07-25 2017-03-07 Oracle International Corporation Client and server integration for replicating data
GB2519157A (en) 2013-10-14 2015-04-15 Ibm Robust data replication
US9600203B2 (en) 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
US10191932B2 (en) 2014-03-21 2019-01-29 Oracle International Corporation Dependency-aware transaction batching for data replication
CN104657483B (zh) * 2015-02-28 2018-06-15 华为技术有限公司 处理事务的方法、处理节点、中心节点和集群
US10474536B2 (en) * 2015-06-10 2019-11-12 International Business Machines Corporation Calculating bandwidth requirements for a specified recovery point objective
US10338834B1 (en) * 2016-09-29 2019-07-02 Veritas Technologies Llc Application performance in replication environments
US10216416B1 (en) * 2016-09-29 2019-02-26 Veritas Technologies Llc Application performance in replication environments
US10126946B1 (en) * 2016-09-30 2018-11-13 EMC IP Holding Company LLC Data protection object store
JP6788188B2 (ja) * 2016-11-11 2020-11-25 富士通株式会社 制御装置および制御プログラム
US11294594B2 (en) * 2017-08-07 2022-04-05 Kioxia Corporation SSD architecture supporting low latency operation
US10884871B2 (en) * 2017-08-07 2021-01-05 Datto, Inc. Systems and methods for copying an operating source volume
US11093344B2 (en) * 2017-08-07 2021-08-17 Datto, Inc. Source volume backup with predictive and lookahead optimizations apparatuses, methods and systems
US11061713B2 (en) 2017-08-07 2021-07-13 Datto, Inc. Prioritization and source-nonspecific based virtual machine recovery apparatuses, methods and systems
US10896101B2 (en) 2017-08-07 2021-01-19 Datto, Inc. Multiclient backup replication apparatuses, methods and systems
US10915407B2 (en) * 2017-08-07 2021-02-09 Datto, Inc. Source volume backup with adaptive finalization apparatuses, methods and systems
US11531488B2 (en) 2017-08-07 2022-12-20 Kaseya Limited Copy-on-write systems and methods
US11061776B2 (en) 2017-08-07 2021-07-13 Datto, Inc. Prioritization and source-nonspecific based virtual machine recovery apparatuses, methods and systems
US11036422B2 (en) 2017-08-07 2021-06-15 Datto, Inc. Prioritization and source-nonspecific based virtual machine recovery apparatuses, methods and systems
CN108595638A (zh) * 2018-04-25 2018-09-28 杭州闪捷信息科技股份有限公司 一种分布式系统下确定关联调用时间范围的方法
US10732860B2 (en) 2018-07-19 2020-08-04 Hewlett Packard Enterprise Development Lp Recordation of an indicator representing a group of acknowledgements of data write requests
JP2020071577A (ja) * 2018-10-30 2020-05-07 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム
US10909005B2 (en) 2019-02-25 2021-02-02 Datto, Inc. Object-level metadata-preserving cross heterogeneous operating systems backup and restore apparatuses, methods and systems
US11003545B2 (en) 2019-06-16 2021-05-11 Datto, Inc User space incremental tracking apparatuses, methods and systems
US11010088B2 (en) * 2019-09-03 2021-05-18 Datto, Inc Dynamically determined difference regions apparatuses, methods and systems
US11474909B2 (en) 2020-04-01 2022-10-18 Kaseya Limited On-demand virtualized data recovery apparatuses, methods and systems
US11841768B2 (en) 2020-04-01 2023-12-12 Datto, Inc. Multi-client backup deduplication apparatuses, methods and systems
WO2023034311A1 (en) * 2021-09-03 2023-03-09 Twitter, Inc. Batch event delivery with identifiers

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002326116A1 (en) * 2001-08-14 2003-03-03 Storeage Networking Technologies Asynchronous mirroring in a storage area network
US6976186B1 (en) * 2002-08-27 2005-12-13 At&T Corp. Asymmetric data mirroring
US7188125B1 (en) 2002-12-19 2007-03-06 Veritas Operating Corporation Replication using a special off-host network device
US7921262B1 (en) 2003-12-18 2011-04-05 Symantec Operating Corporation System and method for dynamic storage device expansion support in a storage virtualization environment
US7421549B2 (en) * 2004-03-02 2008-09-02 Hitachi, Ltd. Method and apparatus of remote copy for multiple storage subsystems
US7359927B1 (en) * 2004-12-01 2008-04-15 Emc Corporation Method for performing periodic replication of data on a remote storage system
JP4355674B2 (ja) * 2005-03-17 2009-11-04 富士通株式会社 リモートコピー方法及びストレージシステム
US7467265B1 (en) * 2005-06-30 2008-12-16 Symantec Operating Corporation System and method for block conflict resolution within consistency interval marker based replication
US7464126B2 (en) * 2005-07-21 2008-12-09 International Business Machines Corporation Method for creating an application-consistent remote copy of data using remote mirroring
US7885923B1 (en) 2006-06-30 2011-02-08 Symantec Operating Corporation On demand consistency checkpoints for temporal volumes within consistency interval marker based replication
US8935206B2 (en) * 2007-01-31 2015-01-13 Hewlett-Packard Development Company, L.P. Snapshots in distributed storage systems
US8131940B2 (en) 2007-03-31 2012-03-06 Intel Corporation Methods and apparatuses to support memory transactions using partial physical addresses
US7984254B2 (en) * 2008-04-04 2011-07-19 Vmware, Inc. Method and system for generating consistent snapshots for a group of data objects
US8539486B2 (en) 2009-07-17 2013-09-17 International Business Machines Corporation Transactional block conflict resolution based on the determination of executing threads in parallel or in serial mode

Also Published As

Publication number Publication date
CN104335159B (zh) 2018-01-16
EP2820531B1 (en) 2018-08-22
EP2820531A1 (en) 2015-01-07
US20130226870A1 (en) 2013-08-29
US8930309B2 (en) 2015-01-06
WO2013130507A1 (en) 2013-09-06
JP2015513742A (ja) 2015-05-14
CN104335159A (zh) 2015-02-04

Similar Documents

Publication Publication Date Title
JP6316211B2 (ja) 間隔制御複製
USRE47852E1 (en) Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency
US10255343B2 (en) Initialization protocol for a peer-to-peer replication environment
US10169163B2 (en) Managing backup operations from a client system to a primary server and secondary server
TWI710897B (zh) 資料處理方法和流計算系統
US8489831B2 (en) Systems and methods for data snapshot replication using a token in a replication link
EP3213472B1 (en) System and method for optimizing transportation over networks
US9645859B1 (en) Performing I/O quiesce and drain operations in multi-node distributed systems
US10365978B1 (en) Synchronization of snapshots in a distributed consistency group
US20180101558A1 (en) Log-shipping data replication with early log record fetching
US20140310240A1 (en) Executing distributed globally-ordered transactional workloads in replicated state machines
CN105302676A (zh) 一种分布式文件系统的主备机制数据传输方法及装置
US8689043B1 (en) Fast failover with multiple secondary nodes
CN112749123A (zh) 用于管理文件系统的方法、设备和计算机程序产品
CN112261164B (zh) 一种逻辑时钟同步方法、装置及一种中心授时集群
US10649862B1 (en) Reducing failback performance duration in data replication systems
US9715477B2 (en) Shared-bandwidth multiple target remote copy
US20120191645A1 (en) Information processing apparatus and database system
US10740007B2 (en) Synchronized primary-secondary role swaps with synchronized safe data commit scans
US20180307564A1 (en) Non-transitory computer-readable storage medium and transmission control device
CN115794939A (zh) 一种异步复制方法及装置
Emerson et al. Faster transaction commit even when nodes crash
JPH09204318A (ja) 計算機ネットワークにおけるチェックポイント取得時期決定方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160226

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170221

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20170515

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170522

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20170522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170526

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170720

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180219

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: 20180227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180327

R150 Certificate of patent or registration of utility model

Ref document number: 6316211

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250