JP6353924B2 - ブロックベースストレージに対するデータボリュームの耐久性状態の低減 - Google Patents

ブロックベースストレージに対するデータボリュームの耐久性状態の低減 Download PDF

Info

Publication number
JP6353924B2
JP6353924B2 JP2016556707A JP2016556707A JP6353924B2 JP 6353924 B2 JP6353924 B2 JP 6353924B2 JP 2016556707 A JP2016556707 A JP 2016556707A JP 2016556707 A JP2016556707 A JP 2016556707A JP 6353924 B2 JP6353924 B2 JP 6353924B2
Authority
JP
Japan
Prior art keywords
storage
data volume
storage node
storage nodes
replication
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
JP2016556707A
Other languages
English (en)
Other versions
JP2017509990A (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 JP2017509990A publication Critical patent/JP2017509990A/ja
Application granted granted Critical
Publication of JP6353924B2 publication Critical patent/JP6353924B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • 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/2069Management of state, configuration or failover
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content

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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

ハードウェアリソース、ソフトウェア及びネットワーク全体における情報記憶の仮想化を動的に共有するための最近の技術革新は、コンピューティングにおける信頼性、スケーラビリティ及びコスト効率を向上させている。特に、仮想化の出現を通して、オンデマンドで仮想コンピューティングリソース及びストレージを提供できるようになったことは、リソース及び記憶装置を処理するコンシューマが、コンピューティング及び記憶装置の必要性を直ちに認識し、それに応じてそのコンピューティング及び記憶のコストを弾力的に構築することを可能にした。仮想化によって顧客は、製造の遅れ及びコスト並びにハードウェアの配置で決定づけられるプロビジョニングサイクルにおける固定されたハードウェアの購入またはリースではなく、授業が発生した時にプロセッササイクル及び記憶装置を獲得することができる。コンピューティング及び記憶装置の可用性を判定するための将来の需要の正確な予測に依存する代わりに、ユーザは必要に応じて比較的瞬時にコンピューティング及び記憶装置リソースの使用を獲得することができる。
仮想化されたコンピューティング環境は、ブロックベースのストレージでサポートされることが多い。このようなブロックベースのストレージは、このブロックベースストレージは、一連の標準化されたストレージの呼び出しを通じて、多様な計算仮想化環境と対話できるストレージシステムを提供する。このとき、標準化されたストレージの呼び出しは、ブロックベースストレージを、それがサポートするボリュームの構造的、機能的な詳細や、それがストレージの可用性を提供する仮想環境上で実行中のオペレーティングシステムに機能的に依存しない状態にする。しかし、仮想化リソースの処理能力の増大と共に、ネットワークの伝送能力が増大すると、ブロックベースストレージへの入出力要求も増大することがある。入出力要求がサービス要求に対するブロックベースのストレージの能力を超えると、待ち時間、及び/または、仮想化コンピューティングリソースのブロックベースのストレージ性能の耐久性が低下し、仮想化コンピューティング性能の損失となる。
いくつかの実施形態によるブロックベースストレージに対するデータボリュームの耐久性状態の低減及びブロックベースストレージ用効率的なデータボリュームのレプリケーションを示す一連のブロック図である。 いくつかの実施形態によるブロックベースストレージに対するデータボリューム耐久性状態の低減及び効率的なデータボリュームのレプリケーションを実行するブロックベースストレージサービスを含むマルチネットワークベースのサービスを実行するプロバイダネットワークを示すブロック図である。 いくつかの実施形態による、データボリューム耐久性状態の低減及び効率的なデータボリュームのレプリケーションを実行するストレージノードを示すブロック図である。 いくつかの実施形態による、データボリュームに対する耐久性状態を低減するときのクライアント、マスタストレージノード、スレーブストレージノード及び制御プレーン間の対話を説明するシーケンス図である。 いくつかの実施形態による、低減された耐久性状態から耐久性状態を増加したデータボリュームに対する有効レプリケーション操作を実行するマスタストレージノードとスレーブストレージノードとの間の対話を説明するシーケンス図である。 いくつかの実施形態による、ブロックベースのストレージに対する耐久性を低減する種々の方法及び技術を説明する高レベルフロー図である。 いくつかの実施形態による、低減された耐久性状態からデータボリュームに対する耐久性状態を増大する種々の方法及び技術を示す高レベルフロー図である。 いくつかの実施形態による、データボリュームに対する効果的レプリケーションに対する種々の方法及び技術を示す高レベルフロー図である。 いくつかの実施形態による、更新するための古い複製を有するストレージノードを識別するための種々の方法及び技術を示す高レベルフロー図である。 いくつかの実施形態による、効率的なレプリケーションが実行できないことを判定するための種々の方法及び技術を示す高レベルフロー図である。 いくつかの実施形態による例示的なコンピューティングシステムを示すブロック図である。
本明細書には、例として複数の実施形態及び説明図について記載しているが、当業者であれば、実施形態は、ここに記載の実施形態または図に制限されるものではないことが認識される。図面及びこれの詳細な説明は、ここに記載の特定の形態に実施形態を制限することを意図するものではなく、反対に、その意図は、添付の請求の範囲で画定される精神及び範囲に包含される変更、同等物及び代替の全てを包含することにある。ここに使用する見出しは組織化目的だけであり、説明または請求の範囲の影響する範囲を制限するために使用することを意味するものではない。本願全体を通じて使用されるように、用語「may」は、強制的な意味(すなわち、〜なければならないの意味)よりは、許可の意味(すなわち、可能性を有することを意味する)。同様に、用語「include」、「including」及び「includes」は、制限するものではない。
ここに記載のシステム及び方法は、ブロックベースストレージに対するデータボリューム耐久性状態の低減を実現することができる。ブロックベースストレージシステムは、種々の実施形態において、データボリュームの現在のバージョンを維持する複製の数を増加することによりブロックベースストレージシステムにより維持されるデータボリュームに対する耐久性状態を確立することが可能である。データボリュームの耐久性状態は、データボリュームを維持するブロックベースストレージシステムのルール、要件または他の保証の一環として、データボリュームに対して実施することが可能である。特定のデータボリュームの複製を維持するストレージノード間における複製操作は、データボリュームの耐久性状態に従ってデータボリュームの最新のバージョンを維持するために、データボリュームの複製の全体に対してデータボリュームへの変更を実行させることが可能である。しかし、ストレージノード間における複製操作は中断される可能性がある。ネットワーク分割、ネットワーク高利用度またはシステム障害は、データボリュームに対する複製操作を中断させる可能性のある多くの異なる事象のいくつかである。これらの複製操作における中断によって、データボリュームの複製を維持するストレージノードが他のストレージノードとの複製に対して利用できなくなり、データボリュームの耐久性状態に反することになり得る。データボリュームに向けた書き込み要求及び他の入出力操作は、データボリュームに対する耐久性状態が充足されていないために、ブロックされる可能性がある。ブロックベースストレージシステムにおけるデータボリュームの耐久性状態を低減することによって、データボリュームに対する耐久性状態を維持することができない事象において、データボリュームに向けた操作をほとんど中断することなく、持続できるようにし得る。いくつかの実施形態では、データボリュームに対する耐久性状態の低減は、データボリュームの耐久性に顕著な危険とはならない可能性がある(例えば、制限時間内までに完了さえしていれば)。
ここに記載のシステム及び方法は、効果的なデータボリュームレプリケーションの実行することが可能である。上述のように、いくつかの実施形態では、データボリュームの多数の複製が異なるストレージノード内に維持され、データボリュームに対する耐久性を確立する。データボリュームが低減された耐久性状態にあるときに発生するような、データボリュームが多数のストレージノードで既に維持されていない場合、低減された耐久性状態になる際にデータボリュームに対して行われた変更を示すためにデータボリュームの一部に対する変更が維持される。例えば、データボリュームがマスタストレージノード及びスレーブストレージノードに維持され、スレーブストレージノードがレプリケーションに利用できなくなる場合、マスタストレージノードはデータボリュームに対する入出力(I/O)の処理を続け、データボリュームのどの部分が変更されたのかを記録する。後に、マスタストレージノードは、データボリュームの古い複製を維持する他のストレージノード(前のスレーブストレージノードまたはデータボリュームの複製を維持する他のストレージノード)のデータボリュームを複製することにより、データボリュームの耐久性状態を増大することが可能である。データボリュームの変更された部分は、古い複製内におけるデータからでは無いデータボリュームの部分を送ることなく、古い複製を更新するために送ることが可能であり、レプリケーションを実行及び/またはマスタストレージノードと新しいスレーブストレージノードとの間のネットワークトラフィックを低下するための時間量を削減する。古い複製が更新されると、マスタストレージノードと新しいスレーブストレージノードとの間のデータボリュームに対する複製操作が、データボリュームに対する将来の変更のために可能とすることができる。
図1は、いくつかの実施形態による、ブロックベースストレージ用データボリューム耐久性状態の低減及び効率的なデータレプリケーションを示す一連のブロック図である。ブロックベースストレージサービス100は、マスタストレージノード110及びスレーブストレージノード120を実装し、データボリューム112に対する耐久性状態を確立する。マスタストレージノード110及びスレーブストレージノード120は、持続性ブロックベースストレージ(例えば、ハードディスクドライブまたはソリッドステートドライブ)を実装し、データボリュームの複製112、122それぞれを格納することができるストレージサービスまたは他のコンピューティングシステム(例えば、図11に関して以下に説明するコンピューティングシステム2000)とすることができる。種々の実施形態では、データボリューム複製112、122は、データチャンク114がデータチャンク124に対応するように、複製操作のためにデータチャンク114、124にそれぞれ分割される。
場面102に示すように、入出力要求132(例えば、書き込み要求)は、マスタストレージノードが受取り、これが入出力要求132を完了させることができる。例えば、マスタストレージノード110が受取ったデータボリューム112の一部を変更する書き込み要求を実行することができる。入出力要求は、この後、いくつかの実施形態では、スレーブストレージノード120に送られ134、マスタストレージノード110でデータに行われた何らかの変更のレプリケーションを行う。このようにして、データボリューム112の最新の耐久性状態を充足することができる。
場面104に示すように、スレーブストレージノード120は、利用不能となる136。これは、ネットワーク分割、大量のネットワークトラフィック、システム障害、または、制御システムの指示の下(例えば、スレーブストレージノード120にボリューム複製122の維持を停止するよう命令することがある)等のネットワーク状態によることがある。しかし、入出力要求132は、マスタストレージノード110でも受け取ることがある。書き込み要求をブロックする、失敗する、または他の方法で書き込み要求を完了しないことに代えて、データボリューム110に対する耐久性状態を低減させることができる。例えば、いくつかの実施形態では、入出力要求132がマスタストレージノード110で完了し、入出力132を要求したクライアントまたは他のシステム、コンポーネント、デバイスに受け取ったことを確認することが可能である。したがって、入出力要求132(場面104で受け取られるように)、他のいかなるストレージノード(スレーブストレージノード120または他のブロックベースのストレージサービス100における他のストレージノード)で完了することなく、マスタストレージノード110で完了することがある。2つ以上のストレージノードを有する(例えば3つのストレージノード)を有する他の実施例では、3つのストレージノードに維持されるデータボリュームに対する耐久性状態を低減すること(2つのストレージノードに耐久性状態を低減すること等)は、入出力要求が完了したとして確認する前に、より少ない数のストレージノードで入出力要求が完了することができるようになり得る。
種々の実施形態では、マスタストレージノード110は、低減した耐久性状態で作動しつつ、データボリューム112で行われる変更を追跡することができる。例えば、変更されたデータチャンク116をマークし、指標を付し、リストし、または、他の識別を付す(例えば、データボリュームメタデータで)ことができる。ある時点で、データボリューム112に対する増加した耐久性状態による入出力要求を処理するために、データボリュームの複製を可能とするための判定を行うことができる。この判定は、データボリュームの他の複製を格納するためのストレージノードの可用性、現在のネットワークの利用、トラフィックまたは他のネットワーク事象、または、データボリュームに対する耐久性の状態(例えば、1つのストレージノード、2つのストレージノード等に複製された)等の複数の要因に基づいて行うことができる。耐久性状態を増加するために、データボリューム複製を維持していた、以前のストレージノードを識別することができる。例えば、制御システムは、ストレージノード識別子のリストをマスタストレージノード110に送り、または、マスタストレージノード110自体が、データボリュームの複製を維持する先のストレージノードのリストを維持することができる。スレーブストレージノード120が識別されると(図示の実施例では、識別されたストレージノード120は、データボリュームの複製を維持する最も新しいストレージノードであるが、しかし、データボリュームの古い複製を維持するか、またはデータボリュームの複製を全く維持しない他のストレージノードが選択される可能性もある)、変更されたデータチャンク116は、場面106に示すようにスレーブストレージノード120に複製し138、ボリュームの複製122に格納することができる。変更されてないデータチャンクは複製する必要はない。場面108に示すように、レプリケーションは、入出力要求132としてデータボリュームに対して再度有効とすることができ、再度レプリケーションのためにスレーブストレージノード120に送られ140、データボリューム112に対する耐久性状態が増大し、マスタストレージノード110及びスレーブストレージノード120の双方に維持される。
上記説明は制限することを意図するものでなく、単に、ブロックベースストレージシステムに対する低減状態及び効果的なレプリケーションとして設けられたものである。例えば、ストレージノードの数、または、データボリュームの数は、図1に示すものと相違してもよい。異なるレプリケーションスキーム(例えば、マスタまたはスレーブの役割無しで)を実行することができ、データボリュームに対する異なる耐久性状態を確立することができる。いくつかの実施形態では、耐久性状態の低減は、1つより多くのストレージノードが利用不能となったときに(例えば3つのストレージノードが1つの利用可能なストレージノードに)、生じる可能性がある。
本明細書は、データボリューム耐久性状態の低減及び効率的なデータボリュームのレプリケーションを実現することのできる一般的な記述のブロックベースのストレージサービスプロバイダで開始する。この後、異なるコンポーネント/モジュール、または、ブロックベースストレージサービスプロバイダを実現する部分として採用することのできるコンポーネント/モジュールの配置を含む、ブロックベースストレージサービスプロバイダの種々の実施例を検討する。データボリューム耐久性状態を低減すること、及び、効率的なデータボリュームレプリケーションを実行する多くの異なる方法及び技術を、この後、検討し、これらのいくつかを添付のフロー図に示す。最後に、種々のコンポーネント、モジュール、システム、デバイス、及び/または、ノードを実現することのできる例示的なコンピューティングシステムを説明する。種々の実施例が明細書を通じて提供される。
図2は、いくつかの実施形態による、スナップショット操作中に最適化した書き込み動作を実行するブロックベースストレージサービスを含む多数のネットワークベースサービスを実現するプロバイダネットワークを説明するブロック図である。プロバイダネットワーク200は、企業または公的部門の組織等のエンティティによってセットアップされ、インターネット及び/または他のネットワークを介してクライアント210にアクセス可能な1つまたは複数のサービス(種々のタイプのクラウドベースのコンピューティングまたはストレージ等)を提供することができる。プロバイダネットワーク200は、プロバイダネットワーク200で提供されるインフラストラクチャ及びサービスを実行及び分散するために必要とされる、物理的及び/または仮想コンピュータサービス、ストレージデバイス、ネットワーク設備等のコレクション等(例えば、図11に関して後述するコンピューティングシステム2000)の種々のリソースプールをホスティングする多数のデータセンタを有しても良い。いくつかの実施形態では、プロバイダネットワーク200は、仮想コンピュータサービス230、ブロックベースのストレージサービス220等のストレージサービス、及び、他のストレージサービス240(オブジェクト/キー値ベースのデータストア等の種々のストレージ形式または種々のタイプのデータベースシステムを包含することができる)、及び/または、任意の他の形式のネットワークベースのサービス250等のコンピューティングリソースを提供することができる。クライアント210は、ネットワーク260を介してプロバイダネットワーク200で提供されるこれらの種々のサービスにアクセスすることができる。同様に、ネットワークベースサービスは、自身が通信し及び/または互いに使用して異なるサービスを提供する。例えば、クライアント210に「インスタンス」と呼ばれる単位で提供される、仮想または物理的計算インスタンスまたはストレージインスタンス等のコンピューティングリソースは、特定のデータボリューム226を使用することができ、計算インスタンス用の仮想ブロックストレージを提供する。
上述のように、仮想計算サービス230は、クライアント210に種々の計算インスタンスを提供することができる。仮想計算インスタンスは、例えば、特別の計算能力(これは、CPUのタイプ及び数、及び、主メモリサイズ等を示すことで特定することができる)を有する1つまたはそれ以上のサーバ、及び、特定のソフトウェアスタック(例えば、ハイバーバイザの上で順に実行することができるオペレーティングシステムの特定のバージョン)を備えることができる。多数の異なる形式のコンピューティングデバイスを単独でまたは組合わせて使用し、一般的目的または特定目的のコンピュータサーバ、ストレージデバイス、ネットワークデバイス等を含む異なる実施形態で仮想計算サービス230の計算インスタンスを実行することができる。いくつかの実施形態では、インスタンスクライアント210または他の任意のユーザは1つの計算インスタンスに対してネットワークトラフィックを向けるように構成される(及び/または、許可される)ことができる。種々の実施形態では、計算インスタンスは、種々の操作を実行するための永続的なブロックベースストレージを取得するために、ブロックベースストレージサービス220で提供される1つまたはそれ以上のデータボリューム226に取り付けまたはマップすることができる。
計算インスタンスは、アプリケーションサーバーインスタンス、Java(登録商標)仮想マシン(JVM)、汎用若しくは特殊目的のオペレーティングシステム等の種々の異なるプラットフォーム、Ruby、Perl、Python、C、C++等のインタプリタ形式若しくはコンパイルされたプログラミング言語をサポートするプラットフォーム、または、クライアントアプリケーションを実行するのに適した高性能演算プラットフォームを、例えばクライアント210がインスタンスにアクセスすることを必要とせずに、操作または実行することができる。いくつかの実施形態では、計算インスタンスは、予想される稼働率に基づいて、異なる形式または構成を有する。特定の計算インスタンスの稼働率は、例えば予約された時間の総量に対するインスタンスが作動される時間の量の比として定義することができる。稼働率は、いくつかの実行で使用率と呼ぶことができる。クライアントは、インスタンスが予約される時間に対する比較的僅かな時間(例えば、年間予約の30%〜35%)だけ計算インスタンスを使用することを見込む場合、クライアントは、低稼働率インスタンスとしてインスタンスを確保することを判定することができ、関連する価格設定ポリシーにしたがって、割引時間単位の使用料を支払う。クライアントは、その時間のほとんどインスタンスが稼働していることを必要とする定常状態のワークロードを予想する場合、クライアントは高稼働率のインスタンスを予約し、さらに安い時間単位の使用量を支払うが、いくつかの実施形態では、時間単位の料金は、実際の使用時間数に関わりなく、価格設定ポリシーにしたがって予約の全期間にわたって請求されることがある。中稼働率のインスタンスに対する選択は、対応する価格設定ポリシーと共に、初期費用及び時間単位費用が対応する高稼働率コスト及び低稼働率コスト間に収まるいくつかの実施形態においても、対応することができる。
計算インスタンス構成は、更に、計算集約型アプリケーションのための計算作業負荷(例えば高トラフィックウェブアプリケーション、広告配信、バッチ処理、ビデオエンコーディング、分散型分析、高エネルギー物理学、ゲノム解析、及び、計算流体力学)、グラフィックス集約型の作業負荷等(例えば、ゲームストリーミング、3Dアプリケーションストリーミング、サーバ側のグラフィックス作業負荷、レンダリング、財務モデリング、及び、エンジニアリングデザイン)、メモリ集約型の作業負荷(例えば、高性能データベース、分散メモリキャッシュ、インメモリ分析、ゲノムアセンブリ、及び、分析)、及び、ストレージ最適化された作業負荷(例えば、データウェアハウス、及び、クラスタファイルシステム)等の汎用または特定目的の計算インスタンスを包含することができる。特定の数の仮想CPUコア、メモリ、キャッシュ、ストレージ等の計算インスタンスのサイズ、及び、任意の他の性能。また、計算インスタンスの構成は、特定のデータセンタ内の位置、利用可能ゾーン、地理的、位置等...及び、(予約された計算インスタンスの場合)予約語長を含むことができる。
種々の実施形態では、プロバイダネットワーク200は、記憶操作を実行するためのブロックベースのストレージサービス220も実行することができる。ブロックベースのストレージサービス220は、複数の独立したストレージノード224a、224b、224c〜224n(例えば、サーバのブロックデータ記憶システム)のプールから構成されるストレージシステムであり、データボリュームデータボリューム(複数可)226a、226b、226c〜226nの1つまたは複数のセットを格納するためのブロックレベルのストレージを提供する。データボリューム226は、論理ブロックの連続集合として仮想ブロックベースの記憶装置(例えば、ハードディスク記憶装置または他の永続ストレージ)を提供する、特定のクライアントにマッピングしても良い。いくつかの実施形態では、データボリューム226は、スナップショット操作または複製操作等の他のブロックストレージ操作を実行するために複数のデータチャンク(1つまたは複数のデータブロックを含む)に分割することができる。
データボリューム226のボリュームスナップショットは、データボリューム226の状態の固定時点の表示とすることができる。
いくつかの実施形態では、ボリュームスナップショット242は、他のストレージサービス240内等、データボリュームを維持するストレージノード224から遠隔的に格納しても良い。
スナップショット操作は、他のストレージサービス240内のリモートスナップショットデータ保存等、他の記憶場所の所定のデータボリュームのスナップショットを、送り、コピーし、及び/または、保存するために実行しても良い。
ブロックベースのストレージサービス220は、ブロックベースのストレージサービス220の操作を支援するために、ブロックベースのストレージサービス制御プレーン222を実行しても良い。種々の実施形態では、ブロックベースのストレージサービス制御プレーン222が、仮想計算サービス230及び/または、任意でプロバイダネットワーク200内に配置される他のネットワークベースのサービス及び/または1つまたは複数の他のデータセンタ内に配置されるコンピューティングシステム(図示しない)またはネットワーク260上で利用可能なプロバイダネットワーク200の外部の他のコンピューティングシステムで提供される計算インスタンス上で実行するプログラム等のクライアントに対するブロックデータストレージの可用性の管理を支援する。データボリューム226に対するアクセスは、ブロックデータトランザクション命令に応じて、プロバイダネットワーク200内の内部ネットワーク上で、または、ネットワーク260を介して外部に提供される。
ブロックベースのストレージサービス制御プレーン222は、ユーザーアカウントの管理(例えば、作成、削除、請求、支払の回収など)を含む、ブロックレベルのストレージ機能を提供することに関連した様々なサービスを提供することができる。ブロックベースのストレージサービス制御プレーン222はさらに、設定要求に応じて、データボリューム226の作成、使用、および削除に関連するサービスを提供することができる。ブロックベースのストレージサービス制御プレーン222は、更に、他のストレージサービス240上のボリュームスナップショット242の作成、使用及び削除に連するサービスを提供することができる。ブロックベースのストレージサービス制御プレーン222は、更に、データボリューム226及びこれらのボリュームのスナップショット242の使用に関するパフォーマンスおよび監査データの収集及び処理に関連するサービスを提供する。
上述のように、プロバイダネットワーク200はまた、別のストレージサービス240を実現しても良い。他のストレージサービス240は、ブロックベースのストレージサービス220によって提供されるものと同じまたは異なる形式のストレージを提供しても良い。例えば、いくつかの実施形態では、他のストレージサービス240は、データオブジェクトとしてデータを格納及び管理できるオブジェクトベースのストレージサービスを提供しても良い。例えば、種々のデータボリューム226のボリュームスナップショット242は、特定のデータボリューム226に対するスナップショットオブジェクトとして格納しても良い。他のストレージサービス240に加え、プロバイダネットワーク200は、他のネットワークベースのサービス250を実行しても良く、これは、様々な形式の分析、計算、格納、または、プロバイダネットワーク200の他のサービス(例えば、ブロックベースのストレージサービス220、仮想計算サービス230及び/または他のストレージサービス240)に加えて、クライアント210が様々なタスクを実行または要求するのを可能とする他のネットワークベースのシステムを含むことができる。
クライアント210は、ネットワークプロバイダ200に要求を送信するため設定可能な任意の形式のクライアントを包含することができる。例えば、所定のクライアント210は、ウェブブラウザの適切なバージョンを有してもよく、または、ウェブブラウザにより提供された実行環境内で若しくは拡張として実行するように構成されたプラグインモジュール若しくはコードモジュールの他のタイプを有しても良い。これに代え、クライアント210は、データベースアプリケーション(または、そのユーザインタフェース)、メディアアプリケーション、オフィスアプリケーション、または、計算インスタンス、データボリューム226若しくは種々の操作を実行するプロバイダネットワーク200内の他のネットワークベースのサービスを使用することのできる他のアプリケーション等のアプリケーションを有しても良い。いくつかの実施形態では、そのようなアプリケーションは、全ての形式のネットワークベースのデータに対するフルブラウザサポートを必ずしも実行することなく、ネットワークベースのサービス要求を生成及び処理する充分なプロトコルサポート(例えば、ハイパーテキスト転送プロトコル(HTTP)の適切なバージョンに対する)を包含することができる。いくつかの実施形態では、クライアント210は、表示状態転送(Representational State Transfer(REST))スタイルのネットワークベースのサービスアーキテクチャ、ドキュメントベース若しくはメッセージベースのネットワークベースのサービスアーキテクチャ、または、他の適切なネットワークベースのサービスアーキテクチャによる、ネットワークベースのサービス要求を生成するように構成することができる。いくつかの実施形態では、クライアント210(例えば、計算クライアント)は、計算インスタンスで提供されるコンピュータリソースまたはデータボリューム226で提供されるブロックストレージを使用するクライアント210上で実行するアプリケーションに対して透過的な方法で、計算インスタンスまたはデータボリューム226へのアクセスを提供するように構成することができる。
クライアント210は、外部ネットワーク260を介して、プロバイダネットワーク200にネットワークベースのサービス要求を伝えることができる。種々の実施形態では、外部ネットワーク260は、クライアント210とプロバイダネットワーク200との間のネットワークベースの通信を確立するために必要なネットワークハードウェア及びプロトコルの任意の適切な組み合わせを包含することができる。例えば、ネットワーク260は、一般に、集合的に、インターネットを実現する様々な電気通信ネットワーク及びサービスプロバイダを包含することができる。ネットワーク260は、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)のようなプライベートネットワーク、及び、公衆またはプライベート無線ネットワークを包含しても良い。例えば、所定のクライアント210及びプロバイダネットワーク200の双方は、それぞれ独自の内部ネットワークを有する企業内に設けても良い。このような実施形態では、ネットワーク260は、所定のクライアント210とインターネット間、及び、インターネットとプロバイダネットワーク200間においてネットワークリンクを確立するために必要なハードウェア(例えば、モデム、ルータ、スイッチ、ロードバランサ、プロキシサーバ等)、及び、ソフトウェア(例えば、プロトコルスタック、会計ソフト、ファイアウォール/セキュリティソフトウェア等)有しても良い。なお、いくつかの実施形態では、クライアント210は、公共インターネットよりはむしろプライベートネットワークを使用するプロバイダネットワーク200と通信しても良いことに注目される。
ブロックベースのストレージサービス220は、様々な方法でデータボリューム226を管理し、維持することができる。別の耐久性スキームは、データボリュームの複製を維持する二つ以上のストレージノード間でいくつかのデータボリュームで実行することができる。例えば、ミラーリング及び/または複製技術の異なる形式で実行し(例えば、RAID1)、データボリュームの単一の障害ポイントを排除すること等によって、データボリュームの耐久性を高めることができる。データボリュームへのアクセスを提供するために、ストレージノードは、データボリュームの複製を維持する複数のストレージノード間で書き込み要求などの入出力要求を、調整することができる。スナップショット操作時の書き込み最適化を提供するストレージノードのために、追加の調整を実行することができる。
図3は、いくつかの実施形態による、データボリュームの耐久性状態の低減及び効率的なデータボリュームの複製を実行するストレージノードを示すブロック図である。ストレージノード310a、310b、310c〜310n等の複数のストレージノードを、ブロックベースのストレージサービスを提供するために実装しても良い。ストレージノード310は、ストレージサーバまたは他のコンピューティングシステム(例えば、図11に関連して後述するコンピューティングシステム2000)等の1つまたは複数のコンピューティングシステムまたはデバイスであっても良い。各ストレージノード310は、データボリュームのそれぞれの複製を維持することができる。例えば、ストレージノード310aは、データボリューム312a、312b、312c、312d〜312nを維持し、ストレージノード310bは、データボリューム314a、314b、314c、314d〜314nを維持し、ストレージノード310cは、データボリューム316a、316b、316c、316d〜316nを維持し、を介してデータボリューム318a、318b、318c、318d〜318nを維持するストレージノード310nに至る。ストレージノード310は等しい数のデータボリュームを有するように示してあるが、ストレージノード上で維持されるデータボリュームの数は、ストレージノード310から他のストレージノード310までに変化させてもよい。いくつかの実施形態では、いくつかのデータボリュームが、他のデータボリュームとサイズが異なってもよい。ストレージノード310は、マルチテナント型ストレージを提供することができる。例えば、いくつかの実施形態では、ストレージノード310cに維持されるデータボリューム316aは、ブロックベースのストレージサービス220の1つのアカウントを維持し、一方、ストレージノード310cに維持されるデータボリューム316bは、別のアカウントを維持することができる。ストレージノード310は、直接それぞれのストレージノードを実現するコンピューティングシステム、またはデバイスに設けることができる1つまたは複数のブロックベースのストレージデバイス(例えば、ハードディスクドライブ、ソリッドステートドライブ等)で、それぞれのデータボリュームを持続することができる。
ブロックベースのストレージサービス220は、種々の異なる方法でデータボリュームを管理し、維持することができる。データボリュームの耐久性状態を確立するデータボリュームの同じ複製を維持する二つ以上のストレージノードのうちのいくつかのデータボリューム対して、異なる耐久性スキームを実行しても良い。例えば、ミラーリング及び/または複製技術の異なる形式を実行(例えば、RAID1)し、データボリュームの単一障害点を排除すること等によって、データボリュームの耐久性を高めることができる。データボリュームへのアクセスを提供するために、ストレージノードは、データボリュームの複製を維持する複数のストレージノード間で書き込み要求等入出力要求を調整することができる。例えば、所定のデータボリューム312aに対して、ストレージノード310aがマスタストレージノードとして機能することができる。マスタストレージノードは、様々な実施形態において、データボリュームのクライアントからの要求(例えば、入出力要求)を受け、処理することができる。これにより、ストレージノード310aは、書き込み要求等の入出力要求の複製、または、データボリューム312aのその他の変更若しくは修正を、スレーブストレージノードとして作用する1つ以上の他のストレージノードに対して調整することができる。例えば、ストレージノード310cは、データボリューム312aの複製であるデータボリューム316dを維持することができる。したがって、ストレージノード310aのデータボリューム312aに対する書き込み要求を受けたときに、ストレージノード310aは、書き込み要求をストレージノード310cに転送し、ストレージノード310で書き込み要求を完了する前に、ストレージノード310cが、書き込み要求が完了していると承認するまで待つことができる。マスタストレージノードは、スナップショットの操作または他の入出力操作(例えば、読み出し要求の提供)等のデータボリュームに対する他の操作を命令することができる。
なお、いくつかの実施形態では、マスタ及びスレーブストレージノードの役割は、データボリューム毎に割り当てても良い。例えば、ストレージノード310aに維持されるデータボリューム312aに対し、ストレージノード310aはマスタストレージノードとして機能することができる。一方、ストレージノード310aに維持されるデータボリューム312b等の他のデータボリュームに対しては、ストレージノード310aはスレーブストレージノードとして機能することができる。
種々の実施形態では、ストレージノード310はそれぞれ、ページキャッシュを実装しても良い。ページキャッシュは、それぞれのストレージノードに維持されるデータボリューム312の1つからデータのページまたは他のグループを格納するシステムメモリまたは他のメモリデバイスの一部としても良い。データボリュームの要求されたデータの一部を維持するブロックベースのストレージデバイスに直接書き込みまたは読み出す代わりに、ページキャッシュを更新しても良い。例えば、データボリュームの一部に対する読出し要求を受け取った場合、最初にデータがページキャッシュに存在するか否かを判定することができる。はいの場合、データを、ページキャッシュから読み出すことができる。いいえの場合、データは、データボリュームの要求されたデータの部分を維持するそれぞれのブロックベースのストレージデバイスから検索し、将来の使用のためにページキャッシュに書き込むことができる。同様に、書き込み要求は、ページキャッシュに向けても良い。受け取った書き込み要求に対し、書き込まれるデータに対応するページキャッシュエントリ(例えば、既にページキャッシュに維持されるデータボリュームの部分)は、書き込み要求にしたがって更新することができる。同様に、書き込み要求によって変更されるべきデータがページキャッシュに存在しない場合には、まずデータを維持するブロックベースのストレージデバイスからデータを取得し、ページキャッシュ内の新しいページキャッシュエントリに書き込み、この後、書き込み要求にしたがって更新することができる。ページキャッシュ技術は、当業者に周知であり、したがって、上述の実施例は、他のページのキャッシュ技術に制限することを意図するものではない。
種々の実施形態では、ストレージノード310は、ページキャッシュログ320a、320b、320c〜320n等の各ページキャッシュログを実行することができる。ページキャッシュログは、ページキャッシュ330に維持されるデータを変更する書き込み要求等、各ページキャッシュの更新を記述するログレコードを格納することができる。したがって、ページキャッシュ330内のデータを喪失させるシステムまたは他の障害が発生した場合に、ページキャッシュログ320内のログレコードを使用して、障害前の状態にページキャッシュを復元することができる。いくつかの実施形態において、ログレコードは、ページキャッシュ330に加えられた更新の順序に従って順に格納することができる。例えば、書き込み要求1Aが受取られ、実行され、そして、対応するログレコード1Aが格納される。次に、書き込み要求1Bが受取られ、実行され、そして、対応するログレコード1Bが格納され、同様に続く。ログレコードを順次格納することによって、ログレコードは、特定の時点で、ページキャッシュの状態を生成するために、格納された順番で再生または再適用することができる。
更に、ログレコードの順次記憶は、ログレコードを格納するための書き込み待ち時間を減少させることができる。ページキャッシュログ320は、永続的ストレージデバイス(例えば、ハードディスクドライブ、ソリッドステートドライブ(SSD)、又は他のブロックベースのストレージデバイス)として実現しても良い。このような形式の永続的ストレージデバイスへの順次書き込みは、多くの場合、ランダムアクセスによる書き込みよりも、より高速である。種々の実施形態では、ページキャッシュログ320は、ストレージノードのための専用のブロックストレージデバイス上に実現しても良い。いくつかの実施形態では、ページキャッシュログを持続する永続的ストレージデバイスは、ストレージノードにデータボリュームを持続するブロックベースのストレージデバイスから分離することができる。
ストレージノード310は、入出力マネージャ340a、340b、340c〜340n等の各入出力マネージャを実装してもよい。入出力マネージャ340は、特定のストレージノードに維持されるデータボリュームに向けられた入出力要求を操作することができる。したがって、入出力マネージャ340bは、例えば、ストレージノード310bにおけるボリューム314bへの書き込み要求を処理し、操作することができる。入出力マネージャ340は、ブロックベースのストレージサービスのアプリケーションプログラミングインタフェース(API)、及び/または、インターネットスモールコンピュータシステムインタフェース(iSCSI)等の他の通信プロトコルにしたがって入出力要求を処理するように構成することができる。いくつかの実施形態では、入出力マネージャ340は、ログ管理342a、342b、342c〜342n等のログ管理コンポーネントをそれぞれ実現することができる。ログ管理コンポーネントは、ログレコードのトリミング及び/または少なくとも部分的にログレコードに基づくベースページキャッシュリカバリの実行等の種々のログ管理機能を実行することができる。
図3は、ブロックベースのストレージサービスで実行することができるストレージノードの実施例を提供することに注目されたい。ストレージノードの他の配置または構成も、ページキャッシュ書き込みログを実行してないストレージノード等、いくつかの実施形態で実現することができる。
図4は、いくつかの実施形態によるデータボリュームに対する耐久性状態を低減するときの、クライアントと、マスタストレージノードと、スレーブストレージノードと、制御プレーンとの間の対話を示すシーケンス図である。クライアント410は、マスタストレージノードであるストレージノード420の特定のデータボリュームに対する入出力要求461(例えば、書き込み要求)をマスタストレージノード420に送ることができる。データボリュームに対する現在の耐久性状態を満たす一環として、マスタストレージノード420は、スレーブストレージノード430に入出力要求を複製しようと試みることができるが、最終的に失敗することがある463。上述のように、種々の、ネットワーク分割、高ネットワーク使用率、システム障害、または他の形式の事象が、データボリュームの複製操作を阻害することがある。例えば、ネットワーク分割がマスタストレージノード420とスレーブストレージノード430との間に発生する状況では、マスタストレージノードの420の不成功の入出力要求463は、スレーブストレージノード430に到達しないことがある。そのスレーブストレージノード430が複製のために利用できないことの判定に応答して、マスタストレージノードは、データボリュームの複製を無効にするためのストレージサービス制御プレーン440からの許可を要求する465ことによって、データボリュームに対する低減した耐久性状態に入ることを試みることができる。ストレージサービス制御プレーン440は、現在のネットワークの状態(例えば、ネットワーク分割、大規模障害、大量のネットワークトラフィック)等の種々の要因に基づいて、マスタストレージノード420が低減した耐久性で操作し、レプリケーションを無効にする467ことを可能にすることができる。データボリュームの低減された耐久性状態が許可されると、マスタストレージノード420は、特定のデータボリュームに対する入出力承認469を行うことを許可され得る。
ある時点で、マスタストレージノード420(または制御プレーン440)は、データボリュームのより大きな耐久性状態を再開したい場合がある。例えば、データボリュームのための耐久性の状態を増加させることを試みる前に、一定の時間が経過するまで、または、データボリュームに対する所定数の変更を受け取るまで、マスタストレージノード420は待機することができる。マスタストレージノード420からの要求は、ストレージサービス制御プレーン440に送られ、データボリューム471のための複製を有効化することを許可することができる。上述したものと同様の要素に基づいて、ストレージサービス制御プレーンは、マスタストレージノード420に、候補とするスレーブストレージノード473のリストを送ることができる。候補ストレージノードのリストは、最新でないデータボリュームの古い複製を維持するストレージノード及び/またはデータボリュームの複製を維持しないが、データボリュームの複製を格納する容量を有するストレージノードを包含することができる。いくつかの実施形態では、マスタストレージノード420は、候補ストレージノードのリストを取得する必要はなくても良いが、候補スレーブストレージノードのリストをローカルに(例えば、以前マスタストレージノード420がデータボリュームに対して複製されたストレージノード)維持することができる。マスタストレージノード420は新しいスレーブノード450等、候補ストレージノードのリストからスレーブノードを選択して、450にデータボリュームを複製することができる。マスタストレージノードは、スレーブストレージノード450上にデータボリュームの新しいボリュームの複製475を作成するための要求を送ることができる。スレーブストレージノード450は、作られたボリュームの複製477を承認することができる。マスタストレージノード420は、この後、1つまたは複数の複製操作を開始し、マスタストレージノード420に維持されたものと同じボリュームを複製することができる。各複製操作は、データボリュームの一部を、格納すべき新しいスレーブストレージノード450に送ることができる。複製が完了すると、マスタストレージノード420は、データボリュームに対して再度レプリケーション481を有効化し、データボリュームの増大した耐久性状態に応じて入出力要求を処理することができる。例えば、マスタストレージノード420が受取った入出力要求483は、新しいスレーブストレージノード450に送られる485。
いくつかの実施形態では、データボリュームの低減した耐久性状態から増加した耐久性状態に遷移するとき、種々の効率的なデータボリュームのレプリケーション技術を実行することができる。図5は、いくつかの実施形態による、低減した耐久性状態から増加した耐久性状態への効率的なデータボリュームの複製操作を実行する、マスタストレージノードとスレーブストレージノードとの間の対話を示すシーケンス図である。クライアント510は、マスタストレージノード520に入出力要求551を送ることができる。図4に関して上述したように、スレーブストレージノード530が利用できないため入出力要求が失敗することがある。マスタストレージノード520は、複製を無効にする権限を要求し555、データボリュームの低減した耐久性状態に入ることができる。種々の要因(例えば、ネットワーク分割、大規模障害、大量のネットワークトラフィック)に基づいて、ストレージサービス制御プレーン540は、レプリケーションを無効化することを許可し557、マスタストレージノードが再度入出力を完了及び承認559できるようにすることができる。
マスタストレージノード520は、ある時点でデータボリュームの耐久性状態を増大することを望み、ストレージサービス制御プレーン540からレプリケーションを有効化することの承認を求める561ことができる。再度、上記のように、種々の要因に基づいて、ストレージサービス制御プレーンは、レプリケーションを許可し、マスタストレージノードに候補スレーブノード563を送信することができる。候補スレーブノード563は、データボリュームの古い(すなわち、最新でない)複製を維持するストレージノードを含んでも良い。古い複製は、データボリュームに対する変更を複製する候補ストレージノードとマスタストレージノード520との過去のペアリングから生じることがある。候補ストレージノードのリストを使用し、マスタストレージノード520は、複製するための最小データ量でスレーブストレージノードを識別すること等により、ストレージノードに対するスレーブを選択するように構成することができる。例えば、いくつかの実施形態では、マスタストレージノード520は、ボリューム565内のデータチャンクのバージョン番号を示すボリュームメタデータを予想されるスレーブストレージノードに送ることができる。スレーブストレージノードは、古い複製の自身のボリュームメタデータと比較することによって、ボリュームのメタデータを評価し、複製する必要のある自身の複製のデータチャンクを識別することができる。
識別されたデータチャンクはマスタストレージノードに示すことができる567。古い複製を有するスレーブストレージノードが複数ある場合、データチャンクの最も小さい番号を有するスレーブストレージノードが必要とされる(または、古くないデータチャンクの最も大きい番号が、新しいスレーブストレージノードとして選択することができる)。いくつかの実施形態では、この選択は、他の要因、例えば、候補スレーブストレージノードに向けられているネットワークトラフィックの現在の量、及び/または、スレーブストレージノードの作業負荷との組み合わせて行うことができる。図5では、スレーブストレージノード530が選択されている(最新のスレーブストレージノードとして、マスタストレージノード上のデータボリュームとの差が最も少ない)。識別されたデータチャンクは、マスタストレージノードとスレーブストレージノード520とに維持されるデータボリュームの複製を同期させるために、この後、スレーブストレージノードに複製される569。このように、データボリュームの古い複製のデータチャンクは、種々の実施形態において、更新する必要はない。レプリケーションは、データボリュームに対する増大した耐久性状態にしたがって要求を処理するために、データボリュームに対して有効化される571ことができる。したがって、マスタストレージノード520に送信された入出力要求473は、データボリュームを複製する一環として、スレーブストレージノード530に575で送られ、データボリュームの耐久性状態を復元することができる。
いくつかの実施形態では、マスタとスレーブストレージノードの役割は、データボリューム毎に割り当てても良いことに注意されたい。例えば、あるストレージノードで維持される1つのデータボリュームに対し、このストレージノードはマスタストレージノードとして作用することができる。一方、同じストレージノードで維持される他のデータボリュームに対しては、このストレージノードは、スレーブストレージノードとして作用することができる。
図2〜5に関連して上述したブロックベースのストレージに対するデータボリュームの耐久性状態の低減及びブロックベースのストレージに対する効果的なデータボリュームのレプリケーションの実施例は、ブロックベースのストレージサービスに関して行ってきた。種々の他の形式またはブロックベースのストレージの構成は、これらの技術を実装することができる。例えば、ストレージノードの異なる構成も、上述のマスタ及びスレーブ(複数の)モデルとは異なるデータボリュームの耐久性状態を確立することができる種々の数の複製、ミラーリング、または他の耐久性技術を実行することができる。図6は、いくつかの実施形態による、ブロックベースのストレージのためのデータボリュームの耐久性を低下させるための種々の方法および技術を示す高レベルフローチャートである。図2〜5に関連して上述したように、これらの技術は、1つ以上のストレージノード(または、ブロックベースのストレージ内のデータボリュームを維持する他のシステムコンポーネント)を使用して実行しても良い。
ストレージノードのグループは、いくつかの実施形態では、ブロックベースのストレージのデータボリュームの複製を維持することができる。ストレージノードのグループは、データボリュームのレプリケーションを実行するために、書き込み要求が完了したと承認する前に、グループ内のストレージノードのそれぞれにおけるデータボリュームに対する受信した書き込み要求を完了することによって、データボリュームの耐久性状態を確立することができる。いくつかの実施形態では、これらのストレージノードは、ピアストレージノードと称することができる。610で示すように、データボリュームの複製を維持するストレージノードのグループのあるストレージノードは、複製のために利用できないことを、判定することができる。例えば、3つのストレージノードがデータボリュームの複製を維持している場合に、3つのストレージノードの1つが利用できなくなる。ストレージノードは、多くの理由でレプリケーションに使用できなくなることがあり、これには、ネットワーク分割、高ネットワーク使用率、システム障害、または、他の任意の事象が含まれるが、これらに限定されるものではない。いくつかの実施形態では、ストレージノードで維持されるデータボリュームの複製を維持するピアストレージノードは、書き込み要求を複製するために使用できないことの判定を、ストレージノードのグループの他のストレージノードで行っても良い。例えば、ピアストレージノードに送られた書き込み要求が承認されず、種々のハートビート、またはピアストレージノードに健全性若しくは状況を示す他のゴシッププロトコルが、ストレージノードが利用できないことを示すことができる。いくつかの実施形態では、図2のブロックベースのストレージサービス制御プレーン222のような制御システムが、ピアストレージノードが利用できないことの指摘を他のストレージノードに送ることができる。
しかし判定されると、それに応じて、データボリュームに対する後から受け取った書き込み要求の処理が、データボリュームに対して低減した耐久性状態にしたがって実行することができ、620で示されるように、データボリュームに対するレプリケーションは利用不能のストレージノードに対して不能にする。耐久性状態の変化は、例えばデータボリュームを維持するストレージノードのグループ内のストレージノードに維持される等、データボリュームについて維持される情報に記録されまたは示される。いくつかの実施形態では、図2のブロックベースのストレージサービス制御プレーン222等の制御システムは、特定のデータボリュームが低減した耐久性状態にしたがって作動していることを示すブロックベースのストレージシステム情報を更新することができる。
低減された耐久性状態のデータボリュームに対して書込み要求を後から受け取ったときに、630で示すように、書き込み要求は、レプリケーションが利用可能なストレージノードで完了する。したがって、書き込み要求は、耐久性状態を低減する前よりも少ない数のストレージノードで完了することができる。例えば、データボリュームの複製を維持する5つのストレージノードの1つのストレージノードが、レプリケーションに使用できない場合、及び、データボリュームの耐久性状態が低減された場合、5つのストレージノードのうちのレプリケーションに使用できる4つのストレージノードが書き込み要求を完了することができる(書き込み要求を完了することのできたであろう5つのストレージノードよりも少ない)。マスタストレージノードとスレーブストレージノードのみを有する図4に関して上述したように、いくつかの実施形態では、書き込み要求は、単一のストレージノードでデータボリュームに対して完了することができ、ブロックベースのストレージシステム内の任意の他のストレージノードでは完了しない。実際には、種々の実施形態において、書込み要求は、書き込み要求を受けたストレージノードで完了するのみである。他のストレージノードで、このような状況では書き込み要求を複製または完了することはない。640で示すように、低減した耐久性状態にしたがって完了した書き込み要求は、この後、クライアントに肯定応答することができる。
図7は、いくつかの実施形態による、データボリュームの耐久性状態を復元するための種々の方法および技術を示す高レベルのフローチャートである。710で示すように、増加した耐久性状態にしたがって書き込み要求を処理するために、ストレージノードで維持されたデータボリュームのレプリケーションを他のストレージノードに対して可能にすることの決定を行うことができる。種々の実施形態では、この決定は、図2のブロックベースのストレージサービス制御プレーン222等の制御システムによって、またはストレージノード自体によって行うことができる。
レプリケーションを有効にすることでデータボリュームの耐久性状態を増加する時期を、様々な異なる要因で決定することができる。いくつかの実施形態では、ピアストレージノード(マスタまたはスレーブ)として作用する利用可能なストレージノードの数を変更することができる。例えば、利用可能なストレージノードの数が増加する場合、データボリュームの他の複製を格納するための容量を増加することができるため、データボリュームに対するレプリケーションを有効化することができる。別の因子、ブロックベースのストレージシステムの全体として状態(データセンタ等の特定の位置における物理的設備であるか否か)を考慮することができる。ブロックベースのストレージシステム内のストレージノード間で発生したブロックベースのストレージシステムにおける複製操作の数も考慮することができる。いくつかの実施形態では、データボリュームの耐久性状態も考慮することができる。例えば、データボリュームが、ブロックベースのストレージシステムに加え、ページキャッシュ等の特定のハードウェアの最適化であろうとなかろうと他の別のデータストアにアーカイブされまたはバックアップされる場合、図3に関連して上述した書き込みログが実行される。いくつかの実施形態では、別の要因は、レプリケーションを実行するために、所望のまたは好適なピアストレージノードの利用可能性とすることができる。例えば、好ましいピアは、現在、多数の複製操作を実行しており、その時点でデータボリュームのレプリケーションを開始することができなくても良い。種々の実施形態において、1つ、複数、または、全てのこれらの様々な要因が、レプリケーションを有効化するタイミングを評価するために用いられる。いくつかの実施形態では、優先順位付けのスキームまたは順序は、各要因を重み付けし、レプリケーションが他ではなく1つのデータボリュームに対して有効とすべきときに、間の関係を破壊するために使用することができる。
720で示されるように、いくつかの実施形態では、他のストレージノードは、データボリュームの複製を維持するために識別することができる。このストレージノードは、いくつかの実施形態では、データボリュームの古い複製を維持する以前のピアであっても良い。いくつかの実施形態では、識別されるストレージノードは、データボリュームの複製を維持していない新しいストレージノードであっても良い。一旦識別されると、1つ以上の複製操作を、他のストレージノードに格納されたデータボリュームの複製を更新するために実行することができる。複製操作は、ストレージノードに維持されるデータボリュームのデータチャンクの一部または全部が他のストレージノードに送られ、そこに維持されるデータボリュームの複製に書き込まれることを包含しても良い。図8は、データボリュームが低減した耐久性状態に入った後に変更されたデータチャンクを送るための技術等、以下に詳述する効果的な複製技術を記載する。複製操作が完了し、ストレージノード及び他のストレージノードに維持されるデータボリュームが同期されると、ストレージノードにおけるレプリケーションが有効となり、ストレージノード及び他のストレージノードの双方で書き込みが完了するまで、書き込み要求は、740で示すように、完了したと承認されない。この後、書き込み要求は、データボリュームの最新のバージョンを維持するようになったストレージノード及び他のストレージノードにおいて完了したときに、肯定応答される。上述のように、いくつかの実施形態では、複数のストレージノードがデータボリュームの複製を維持することができ、ストレージノード(例えば4つのストレージノード)の低減された耐久性状態が、720、730、740で示すように、追加のストレージノードを加えて増大する(例えば5つのストレージノードに増加)。他のストレージノードに対してレプリケーションが有効な状態で、データボリュームに対して書き込み要求を受けた場合、書き込み要求が完了したとの肯定応答の前(例えば、肯定応答の前に5つのストレージノードで完了して)に、多数のストレージノード及び他のストレージノードで書き込み要求を完了することができる。
図8は、いくつかの実施形態による、データボリュームの耐久性状態を増大させる際に発生する等の、効率的なデータボリュームのレプリケーションのための種々の方法および技術を示す高レベルのフローチャートである。種々の実施形態では、古い複製は、データボリュームに対する低減された耐久性状態で動作するストレージノード等、1つのストレージノードがデータボリュームの最新のバージョンを有するストレージノードのグループ(対のストレージノード等)の一部であったストレージノードに維持されても良い。利点は、ストレージノード間で複製を同期させるためにレプリケーションの実行がより少ないピアストレージノードを識別するためにこれらの古い複製から得られる。810で示すように、有効化事象は、データボリュームのレプリケーションのためのストレージノードで検出することができる。複製の有効化事象は、種々の要因に基づく等の上述の部材710と同様に決定されまたはトリガされることができ、これらの要因には、データボリュームの耐久性状態、データボリュームの複製を格納するための他のストレージノードの可用性、または、ブロックベースのストレージシステム間のネットワーク利用率が含まれるが、これに制限するものではない。
820で示すように、ピアストレージノードは、ストレージノードに維持されるデータボリュームにしたがって更新するデータボリュームの古い複製を維持していることを識別されることができる。いくつかの実施形態では、識別されるストレージノードは、データボリュームの複製操作を実行するためのデータボリュームの古い複製を維持する最新のストレージノードとすることができる。図9は、いくつかの実施形態による、更新する古い複製を有するストレージノードを識別するための種々の方法および技術を示す高レベルのフローチャートである。910で示すように、データボリュームのそれぞれの古い複製を維持する候補ストレージノードの識別子は、種々の実施形態において、ストレージノードで受け取ることができる。図2の制御プレーン222等の制御システムは、データボリュームの複製を維持している前回のストレージノードを追跡することができる。いくつかの実施形態では、種々の要因(例えば、ストレージノードは利用可能か、健全か、先の障害の履歴を有するか、または、現在の作業負荷はどうか)にしたがって、制御プレーンは、データボリュームの古い複製を維持しているストレージノードの番号のサブセットから候補ストレージノードのリストを作成することができる。いくつかの実施形態では、ストレージノード自体は、ストレージノードがデータボリュームの複製操作を行ったというストレージノードの履歴を追跡し、維持することができる。これらのストレージノードのネットワークアドレス等、ストレージノードの識別子は、送られ、または、ストレージノードに維持することができる。920で示すように、いくつかの実施形態では、判定は、データボリュームのそれぞれの古い複製における更新すべき古いデータチャンクのそれぞれの番号に関して、候補ストレージノードのそれぞれに行うことができる。例えば、いくつかの実施形態において、書き込み要求が無効にされた複製を有するストレージノードで受け取られたときに、データボリュームに対するメタデータが更新され、どのデータチャンクが変更されたか示すことができる(例えば、単調に増加するバージョン番号を、各データチャンクに対して維持することができる)。候補ストレージノードは古い複製の各データチャンクのそれぞれのバージョン番号とボリュームのメタデータを維持することもできる。しかし、古い複製のこのボリュームメタデータも、同様に古くなっていることがある。したがって、データボリュームの古い複製と、データボリュームの最新のバージョンとの間のデータチャンクの違いを識別することができる。例えば、いくつかの実施形態では、ストレージノードは、そのボリュームメタデータを、データボリュームに対する最新のボリュームメタデータと比較するために、それぞれの候補ストレージノードに問い合わせることができる。候補ストレージノードは、データボリュームの複製を同期させるために更新する必要があるデータチャンクの識別子を送ることができる。古いデータチャンクのこれらのそれぞれの番号に基づいて、ピアストレージノードは、更新するように選択することができる。930で示すように、例えば、この選択されたストレージノードは、古いデータチャンクの最小の番号を有する候補のストレージノードの1つとすることができる。いくつかの実施形態では、他の要因も、更新すべき古いデータチャンクの量と組合わせて、更新するピアストレージノードを選択するために使用することができる。例えば、現在の作業負荷、向けられたネットワークトラフィック、または、レプリケーションを実行するための特定の候補ストレージノードの性能若しくは能力に関する他の情報も用いても良い。例えば、1つの候補ストレージノードが他の候補ストレージノードよりも多くの更新すべきデータチャンクを有するが、複製操作を実行するためにより多くの容量を有する場合(例えば、他の候補ストレージノードが他のデータボリュームの複製操作または他の作業を実行している)、より多くの更新すべきデータチャンクを有する候補ストレージノードを選択することができる。
図8に戻ると、830で示すように、一度選択されると、ピアストレージノードのデータボリュームの複製におけるデータチャンクをアップデートし、ストレージノードのデータボリュームにおける対応するデータチャンクと整合させる複製操作を実行することができる。したがって、いくつかの実施形態では、ストレージノード間で同期されていないデータチャンク(すなわち一致していない)だけが更新する必要があり、ストレージノード間でデータチャンクを送るために必要なネットワークトラフィックが低減する。データボリュームの古い複製とデータボリュームの最新のバージョンとが一致しているデータチャンクについては、複製操作を実行しなくても良い。複製操作が完了すると、データボリュームに対するレプリケーションは、ストレージノードとピアストレージノードとの双方で有効化され得る。ストレージノードとピアストレージノードとの双方で実行されるまで、書き込み要求は完了したと承認されない。
図10は、いくつかの実施形態による、データボリュームに対する効率的なレプリケーションが実行されていないことを判定するための種々の方法および技術を示す高レベルのフローチャートである。1010で示すように、判定は、ストレージノードに対して、ストレージノードに維持されるデータボリュームのレプリケーションを無効とすることができる低減した耐久性状態に入ることと、現在の時間との間の時間が有効なレプリケーションの時間閾値を超えるデータボリュームの古い複製を有するピアストレージノードを特定することで行うことができる。効率的な時間閾値は、古い複製が期限を経過しすぎており、新しい複製をレプリケーションすることがストレージノードにおける古い複製を更新するよりも効率的に複製操作を実行できるような、時間を示すことができる。いくつかの実施形態では、効率的な時間の複製閾値は、データボリュームの耐久性状態(例えば、データボリュームが別の場所にバックアップされているか、または、アーカイブされているかどうか)に基づく等、特定のデータボリュームに対して決定されても良い。1020で示すように、それに応答して、データボリュームの古い複製を維持しない利用可能なストレージノードに対して、データボリュームの完全なレプリケーションを実行することができる。データボリュームに対する効率的なレプリケーションを実行しないことの判定は、時間の他の異なる情報に基づいて行うことができる。例えば、いくつかの実施形態では、候補となるストレージノードに置換するための古いデータチャンクの数(すなわち、更新されるデータの量)が、データレプリケーションのための効率的データ量の閾値を超えており、代わりにデータボリュームの新しい複製を作成することができる。
1010に関して説明したような、効率的なレプリケーションを非効率にする時間、データまたはその他検討要因を有する古い複製を維持するストレージノードに対して、1030で示すように、古い複製は自ら識別することができる。図2の制御プレーン222等の制御システムは、1040で示すように、ストレージノードがそれぞれの古い複製を削除することを要求することができる。いくつかの実施形態では、ストレージノード自体が、ストレージノードに維持される特定の古い複製を維持する必要がなく、古い複製を削除することを決定しても良い。
本明細書に記載される方法は、様々な実施形態において、ハードウェアとソフトウェアの任意の組み合わせによって実現することができる。例えば、1つの実施形態では、方法は、プロセッサに連結されたコンピュータ読み取り可能な記憶媒体に格納されたプログラム命令を実行する1つ又は複数のプロセッサを含む、コンピュータシステム(図11のように、例えば、コンピュータシステム)によって実現することができる。プログラム命令は、本明細書に記載された機能(例えば、種々のサーバ、ストレージノード、制御プレーン、管理及び/または他のコンポーネントの機能、例えば、本明細書に記載のブロックベースのストレージサービスを実行するもの等)を実行するように構成しても良い。図面に示し、本明細書に記載された種々の方法は、方法の例示的な実施形態を表す。任意の方法の順番を変更し、種々の要素を追加し、並び換え、組合せ、省略し、変更することができる。
本開示の実施形態は、以下の条項を考慮して説明することができる。
項1. 複数のストレージノードを備え、複数のストレージノードのそれぞれは、ストレージノードで実行されるブロックベースのストレージデバイス内の複数のデータボリュームの複製を維持し、有効なレプリケーションを有する複数のデータボリュームのデータボリュームに対するクライアントから受け取った書き込み要求が、クライアントに対する書き込み要求を承認する前に、データボリュームの各それぞれの複製で完了され、
複数のストレージノードのそれぞれは、
ストレージノードに維持されている複数のデータボリュームの特定のデータボリュームの同じ複製を維持する複数のストレージノードのピアストレージノードがレプリケーションのために利用できないことを判定し、
ピアストレージノードが利用できないことの判定に応答して、特定のデータボリュームのレプリケーションを無効にし、これが、
ストレージノードで書き込み要求を受け取った後に完了し、
複数のストレージノードの他のいずれのストレージノードでも書き込み要求を完了することなく、完了した書き込み要求を承認することを包含するように、構成される、
システム。
項2. 更に、
複数のデータボリュームに対するレプリケーションの有効化及び無効化を認可する制御プレーンを備え、
各ストレージノードは、制御プレーンからレプリケーションの無効化の許可の受け取りに応答して特定のデータボリュームのレプリケーションの無効化を実行するように構成され、
制御プレーンは、
1つまたは複数の候補ストレージノードが特定のデータボリュームの別の複製を維持するという、ストレージノードからの要求の受け取りに応答して、
特定のデータボリュームに対するレプリケーションを有効化することを決定し、
特定のデータボリュームに対するレプリケーションを有効化することの決定に応答して、複数のストレージノードの1つまたは複数の候補ストレージノードのそれぞれの識別子を要求しているストレージノードに送り、要求しているストレージノードが特定のデータボリュームを1つまたは複数の候補ストレージノードに複製するように構成される、項1のシステム。
項3. 要求するストレージノードは、
1つまたは複数の候補ストレージノードのそれぞれの識別子を受け取り、
少なくとも一部が候補識別子に基づいて、1つまたは複数の候補ストレージノードの特定の1つを識別して、データボリュームの他の複製を維持し、
要求するストレージノードで維持される特定のデータボリュームの複製を複製するために、1つまたは複数の複製操作を実行してデータボリュームの他の複製を更新し、更に、
書き込む要求の完了との承認前に、要求するストレージノードで受け取られた書き込み要求が、他のストレージノードに送られるように、特定のデータボリュームに対するレプリケーションを有効化する、項2のシステム。
項4. 複数のストレージノードは、一緒に、ネットワークベースでブロックベースのストレージサービスを実行し、このとき書き込み要求は、ネットワークベースの仮想計算サービルにより実行される1つまたは複数の仮想計算インスタンスから受け取られ、ネットワークベースでブロックベースのストレージサービス及びネットワークベースの仮想計算サービスが、同じネットワークベースのサービスのプロバイダネットワークの一部として共に実行される、項1のシステム。
項5. 1つまたは複数のコンピューティングデバイスにより実行し、
データボリュームのそれぞれの複製を維持する複数のストレージノードの1つのストレージノードがレプリケーションに利用できないことを判定し、このときデータボリュームに対するレプリケーションを実行するためにデータボリュームのために受け取った書き込み要求は複数のストレージノードのそれぞれで完了され、書き込み要求は、複数のストレージノードのそれぞれのストレージノードで完了したときに、完了として承認され、
ストレージノードが利用できないことの前記判定に応答して、データボリュームに対するレプリケーションがストレージノードに対して無効となるように、データボリュームに対する低減した耐久性状態にしたがって、後から受け取ったデータボリュームに対する書き込み要求を処理し、これは、
データボリュームに対する後から受け取った書き込み要求のそれぞれに対して、
レプリケーションに利用可能な複数のストレージノードの1つまたは複数のストレージノードで、後から受け取った書き込み要求を完了し、この書き込み要求は複数のストレージノードよりも少ない数のストレージノードで完了し、更に、
書き込み要求の完了に応答して、書き込み要求完了の承認を行うことを包含する、方法。
項6. 複数のストレージノードは、マスタストレージノードとスレーブストレージノードとを有し、レプリケーションに使用不能と判定されたストレージノードは、マスタストレージノードであり、データボリュームに対する書き込み要求はマスタストレージノードで受け取り、マスタストレージノードは、マスタストレージノードで受け取った書き込み要求を、スレーブストレージノードで完了するためにスレーブストレージノードに送る、項5に記載の方法であって、この方法は、更に、
前記ストレージノードは利用できないとの判定に応答して、スレーブストレージノードをデータボリュームに対する新しいマスタストレージノードに格上げし、後から受け取ったデータボリュームに対する書き込み要求は、新しいマスタストレージノードで受け取り、
レプリケーションに利用できる複数のストレージノードの1つまたは複数のストレージノードにおける前記後から受け取った書き込み要求の完了は、後から受け取った書き込み要求が、複数のストレージノードの他の任意のストレージノードでの書き込み要求が完了することなく、新しいマスタストレージノードで完了するように実行される。
項7. 更に、
増大した耐久性状態にしたがってデータボリュームに対する書き込み要求を処理するため、他のストレージノードに対してデータボリュームのレプリケーションを有効化することを決定し、
データボリュームに対するレプリケーションを有効化することの決定に対応して、
データボリュームの他の複製を維持する他のストレージノードを特定し
1つまたは複数のストレージノードに維持されるようにデータボリュームを複製するために、データボリュームの他の複製を更新する1つまたは複数の複製操作を実行し、更に、
追加の書き込み要求を完了として承認する前に、他のストレージノードで追加の書き込み要求が完了するように、他のストレージノードに対するレプリケーションを有効化する、項5の方法。
項8. 他のストレージノードは、利用不能であると判定されたストレージノードと相違し、他の複製の更新を実行した1つまたは複数の複製操作は、1つまたは複数のストレージノードに維持される全てのデータボリュームのコピーを送りデータボリュームの他の複製として格納される、項7の方法。
項9. 複数のストレージノードが、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記データボリュームに対するレプリケーションを有効化するという決定は、
データボリュームの他の複製を維持するためのストレージノードの大きなコレクション中の記憶容量、
ストレージノードの大きなコレクション中のネットワーク利用、または、
データボリュームに対する耐久性の状態、
の1つまたは複数に、少なくとも一部が基づいている、項7の方法。
項10. 1つまたは複数のコンピューティングデバイスの少なくともいくつかは、ストレージノードの大きなコレクションに対する制御プレーンを実装し、データボリュームに対するレプリケーションを有効化することの決定は、制御プレーンで実行される、項9の方法。
項11. 複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、複数の異なるデータボリュームの少なくともいくつかに対する書き込み要求は、それぞれの低減した耐久性状態にしたがって処理され、データボリュームに対するレプリケーションを有効化することの前記決定は、それぞれ低減した耐久性状態の少なくともいくつかのデータボリュームの耐久性を増大するための優先順位付けスキームに少なくとも部分的に基づく、項7の方法。
項12. 複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、ストレージノードが利用不能であることの前記判定、低減した耐久性状態にしたがうデータボリュームに対する後から受け取った書き込み要求の前記処理、レプリケーションを有効化することの前記決定、他のストレージノードの前記特定、1つまたは複数の複製操作の前記実行、及び、他のストレージに対する前記レプリケーションを有効化することは、複数の異なるデータボリュームの異なるものを格納する少なくともいくつかのストレージノードに対して実行される、項7の方法。
項13. 複数のストレージノードは、ネットワークベースでブロックベースのストレージサービスを実装するストレージノードの大きなコレクションの一部であり、書き込み要求は、ネットワークベースの仮想計算サービスにより実装される1つまたは複数の仮想計算インスタンスから受け取り、ネットワークベースでブロックベースのストレージサービス及びネットワークベースの仮想計算サービスは、同じプロバイダネットワークの一部として共に実装される、項5の方法。
項14. プログラム命令を格納する非一過性のコンピュータ読取可能な記憶媒体であって、このプログラム命令は、1つまたは複数のコンピューティングデバイスで実行されたときに、この1つまたは複数のコンピューティングデバイスを、
データボリュームのそれぞれの複製を維持する複数のストレージノードの1つのストレージノードがレプリケーションに利用できないことを判定し、データボリュームに対するレプリケーションを実行するためにデータボリュームのために受け取った書き込み要求が複数のストレージノードのそれぞれで完了し、書き込み要求は、複数のストレージノードのそれぞれのストレージノードで完了したときに、完了として承認させ、
ストレージノードが利用できないことの前記判定に応答して、データボリュームに対するレプリケーションがストレージノードに対して無効となるように、データボリュームに対する低減した耐久性状態にしたがって、後から受け取ったデータボリュームに対する書き込み要求を処理させ、これは、
データボリュームに対する後から受け取った書き込み要求のそれぞれに対して、
レプリケーションに利用可能な複数のストレージノードの1つまたは複数のストレージノードで、後から受け取る書き込み要求を完了させ、この書き込み要求は、複数のストレージノードよりも少ない数のストレージノードで完了され、更に、
書き込み要求の完了に応答して、書き込み要求完了の承認を行わせる。
項15. 項14に記載の非一過性のコンピュータ読取可能な記憶媒体であって、複数のストレージノードは、マスタストレージノード及びスレーブストレージノードを有し、使用不能と判定されたストレージノードはスレーブストレージノードであり、マスタストレージノードは、マスタストレージノードで受け取ったクライアントからの書き込み要求を、スレーブストレージノードに送りスレーブストレージノードで完了し、レプリケーションに利用可能な複数のストレージノードの1つまたは複数のストレージノードで後から受け取った書き込み要求の前記完了は、複数のストレージノードの他の任意のストレージノードで書き込み要求を完了することなく、後から受け取った書き込み要求がマスタストレージノードで完了するように、実行される。
項16. 項14の非一過性のコンピュータ読取可能なストレージ媒体であって、プログラム命令は1つまたは複数のコンピューティングデバイスに、更に、
増大した耐久性状態にしたがってデータボリュームに対する書き込み要求を処理するため、他のストレージノードに対してデータボリュームのレプリケーションを有効化することを決定させ、
データボリュームのレプリケーションを有効化することの決定に対応して、
データボリュームの他の複製を維持する他のストレージノードを特定させ、
1つまたは複数のストレージノードに維持されるようにデータボリュームを複製するために、データボリュームの他の複製を更新する1つまたは複数の複製操作を実行し、更に、
追加の書き込み要求が完了として承認する前に、他のストレージノードで追加の書き込み要求が完了するように、他のストレージノードに対するレプリケーションを有効化する。
項17. 項16の非一過性でコンピュータ読取可能なストレージ媒体であって、他のストレージノードはストレージノードであり、データボリュームの他の複製はデータボリュームのそれぞれの複製であり、データボリュームの他の複製を更新する1つまたは複数の複製操作の前記実行するときに、プログラム命令は、1つまたは複数のコンピューティングデバイスに、
データボリュームのそれぞれの複製を更新するために、ストレージノードのデータボリュームに対する複製の無効化の後で変更されたデータボリュームのデータチャンクを送らせる。
項18. 項16の非一過性でコンピュータ読取可能なストレージ媒体であって、複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、データボリュームに対するレプリケーションを有効化することの前記決定は、
データボリュームの他の複製を維持するためのストレージノードの大きなコレクション中の記憶容量、
ストレージノードの大きなコレクション中のネットワーク利用、または、
データボリュームに対する耐久性の状態、
の1つまたは複数に、少なくとも一部が基づいて行うことが可能である。
項19. 項16の非一過性でコンピュータ読取可能なストレージ媒体であって、複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、複数の異なるデータボリュームの少なくともいくつかに対する書き込み要求は、それぞれの低減した耐久性状態にしたがって処理され、データボリュームに対するレプリケーションを有効化することの前記判定は、それぞれ低減した耐久性状態の少なくともいくつかのデータボリュームの耐久性を増大するための優先順位付けスキームに少なくとも部分的に基づく。
項20. 項14の非一過性でコンピュータ読取可能なストレージ媒体であって、複数のストレージノードは、ネットワークベースでブロックベースのストレージサービスを実装するストレージノードの大きなコレクションの一部であり、書き込み要求は、ネットワークベースの仮想計算サービスにより実装される1つまたは複数の仮想計算インスタンスから受け取り、ネットワークベースでブロックベースのストレージサービス及びネットワークベースの仮想計算サービスは、同じプロバイダネットワークの一部として共に実装される。
本明細書に記載されるように、ブロックベースストレージの耐久性状態の低減及び効率的なデータボリュームのレプリケーションの実施形態は、様々な他のデバイスと対話することができる1つ以上のコンピュータシステム上で実行することができる。図11は、様々な実施形態による、例示的なコンピュータシステムを示すブロック図である。例えば、コンピュータシステム2000は、異なる実施形態で、ストレージ、及び/または、計算クラスタ、データストア及び/またはクライアントの計算ノードを実装するように構成することができる。コンピュータシステム2000は、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノート型コンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、ストレージデバイス、電話、携帯電話、または、一般に任意のタイプのコンピューティングデバイスの任意の種々の形式のデバイスを包含するが、これらに限定するものではない。
コンピュータシステム2000は、入出力(I/O)インタフェース2030を介してシステムメモリ2020と連結された1つ以上のプロセッサ2010(いずれもの単一またはマルチスレッドとすることができる複数のコアを含むことができる)を有する。コンピュータシステム2000は、さらに、入出力インタフェース2030に連結されたネットワークインターフェース2040を有する。様々な実施形態では、コンピュータシステム2000は、1つのプロセッサ2010を有する単一プロセッサシステム、または、複数のプロセッサ2010(例えば、2個、4個、8個、又は他の適切な数)を有するマルチプロセッサシステムとすることができる。プロセッサ2010は、命令を実行することができる任意の適切なプロセッサであっても良い。例えば、様々な実施形態において、プロセッサ2010は、x86、PowerPC、SPARC、MIPS ISA、または、任意の他の適切なISA等、種々の命令セットアーキテクチャ(ISA)を実行する汎用又は組み込みプロセッサとすることができる。マルチプロセッサシステムにおいて、プロセッサ2010はそれぞれ、必ずではないが、一般に、同一のISAを実装することができる。コンピュータシステム2000は、更に、通信ネットワーク(例えば、インターネット、LAN、等)を介して他のシステムおよび/または要素と通信するための1つまたは複数のネットワーク通信デバイス(例えば、ネットワークインターフェース2040)を有する。
図示の実施形態では、コンピュータシステム2000は、更に、1つまたは複数の永続的ストレージデバイス2060及び/または1つ以上の入出力デバイス2080を有する。種々の実施形態では、永続的ストレージデバイス2060は、ディスクドライブ、テープドライブ、固体メモリ、他の大容量記憶装置、ブロックベースの記憶装置、または、他の永続的記憶装置に対応しても良い。コンピュータシステム2000(又は分散型アプリケーションまたはその上で動作するオペレーティングシステム)は、所望に応じて、永続的ストレージデバイス2060に命令及び/またはデータを格納し、必要に応じて、格納された命令および/またはデータを取り出すことができる。例えば、いくつかの実施形態では、コンピュータシステム2000は、ストレージシステムのサーバーノードを主宰(host)することができ、永続ストレージ2060は、サーバーノードに取り付けられたSSDを有することができる。
コンピュータシステム2000は、プロセッサ(複数を含む)2010がアクセス可能な命令及びデータを記憶するように構成された1つまたは複数のシステムメモリ2020を有する。種々の実施形態では、システムメモリ2020は、任意の適切なメモリ技術を使用して実装することができる(例えば、1つ以上のキャッシュ、スタティックランダムアクセスメモリ(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10 RAM、同期ダイナミックRAM(SDRAM)、ランバスRAM、EEPROM、不揮発性/フラッシュ型メモリ、または、他の形式のメモリ)。システムメモリ2020は、本明細書に記載の方法および技術を実行するためにプロセッサ(複数を含む)2010によって実行可能なプログラム命令2025を包含することができる。種々の実施形態では、プログラム命令2025は、プラットフォームのネイティブバイナリ、Java(商標)バイトコード等の任意のインタプリタ言語、若しくはC/C++、Java(商標)等の任意の他の言語、または、その任意の組合わせに符号化することができる。例えば、図示の実施形態では、プログラム命令2025は、異なる実施形態において、ストレージノードの機能を実行するために実行可能なプログラム命令を有する。いくつかの実施形態では、プログラム命令2025は、複数の独立したクライアント、ノード、及び/または他のコンポーネントを実装することができる。
いくつかの実施形態では、プログラム命令2025は、UNIX(登録商標)、LINUX、Solaris(商標)、MacOS(商標)、Windows(商標)等の種々のオペレーティングシステムのいずれでもよいオペレーティングシステム(図示せず)を実行するために実行可能な命令を包含することができる。プログラム命令2025のいずれかまたは全部は、コンピュータプログラム製品またはソフトウェアとして提供することができ、これは、命令を格納した非一過性のコンピュータ可読記憶媒体を包含することができ、この命令は、コンピュータシステム(または、他の電子装置)のプログラムを作成し、種々の実施形態による処理を実行することができる。非一過性のコンピュータ可読記憶媒体は、機械(例えば、コンピュータ)によって読み取り可能な形式(例えば、ソフトウェア、処理アプリケーション)で情報を格納するための任意の機構を含むことができる。一般的に、非一過性のコンピュータアクセス可能媒体は、入出力インタフェース2030を介してコンピュータシステム2000に連結される、例えば、ディスクまたはDVD/CD−ROMである磁気又は光媒体等のコンピュータ可読記憶媒体又はメモリ媒体を含むことができる。持続的コンピュータ可読記憶媒体は、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等の揮発性又は不揮発性媒体を含むことができ、これらは、コンピュータシステム2000のいくつかの実施形態では、システムメモリ2020または他の形式のメモリとして包含することができる。他の実施形態では、プログラム命令は、ネットワークインターフェース2040を介して実施することができるようなネットワーク及び/または無線リンク等の通信媒体を介して搬送される、光、音響または他の形態の伝播信号(例えば、搬送波、赤外線信号、デジタル信号、等)を使用して通信することができる。
いくつかの実施形態では、システムメモリ2020は、本明細書に記載されるように構成することができるデータストア2045含むことができる。一般に、システムメモリ2020(例えば、システムメモリ2020内のデータストア2045)、永続的ストレージ2060及び/またはリモートストレージ2070は、データブロック、データブロックの複製、データのブロック及び/またはそれらの状態に関連するメタデータ、構成情報、及び/または本明細書に記載の方法および技術を実施する際に使用可能な他の情報を格納することができる。
一実施形態では、入出力インタフェース2030は、プロセッサ2010、システムメモリ2020、及び、ネットワークインターフェース2040又は他の周辺インタフェースを介するものを含むシステム内の任意の周辺機器の間で入出力トラフィックを調整するように構成することができる。いくつかの実施形態では、入出力インタフェース2030は、1つのコンポーネント(例えば、システムメモリ2020)からのデータ信号を他のコンポーネント(例えば、プロセッサ2010)が使用するのに適した形式に変換するため、必要なプロトコル、タイミング又は他のデータ変換を実行することができる。いくつかの実施形態では、入出力インタフェース2030は、例えば、周辺構成要素相互接続(PCI)バス規格又はユニバーサルシリアルバス(USB)規格の変種等の種々の形式の周辺バスを通じて取り付けられたデバイスのサポートを包含することができる。いくつかの実施形態では、入出力インタフェース2030の機能は、例えば、ノースブリッジ及びサウスブリッジなど、2つ以上の別々のコンポーネントに分割することができる。更に、いくつかの実施形態では、システムメモリ2020とのインタフェース等の入出力インタフェース2030の機能の一部または全てをプロセッサ2010に直接組み込むことができる。
ネットワークインターフェース2040は、コンピュータシステム2000と、例えば、他のコンピュータシステム2090のようなネットワークに接続された他の装置との間でデータを交換できるように構成しても良い。さらに、ネットワークインターフェース2040は、コンピュータシステム2000と、種々の入出力デバイス2050及び/またはリモートストレージ2070との間の通信を可能にするように構成しても良い。入力/出力装置2050は、いくつかの実施形態では、1つ以上のディスプレイ端末、キーボード、キーパッド、タッチパッド、走査デバイス、音声又は光学認識デバイス、または、1つ以上のコンピュータシステム2000でデータを入力若しくは検索するのに適した任意の他のデバイスを有することができる。複数の入力/出力装置2050は、コンピュータシステム2000に存在しても良く、または、コンピュータシステム2000を含む分散システムの種々のノード上に分散しても良い。いくつかの実施形態では、同様な入力/出力デバイスが、コンピュータシステム2000から独立しても良く、ネットワークインターフェース2040による等の有線または無線接続を介して、コンピュータシステム2000を含む分散システムの1つまたは複数のノードと対話することができる。ネットワークインターフェース2040は、一般に、1つまたは複数の無線ネットワーキングプロトコルをサポートすることができる(例えば、Wi−Fi/IEEE 802.11、または他の無線ネットワーク標準)。しかし、種々の実施形態では、ネットワークインターフェース2040は、例えば、イーサネット(登録商標)ネットワークの他のタイプ等の任意の適切な有線又は無線による一般のデータネットワークを介して通信をサポートすることができる。更に、ネットワークインターフェース2040は、ファイバチャネルSANなどのストレージエリアネットワークを介して、または任意の他の適切な種類のネットワーク及び/またはプロトコルを介して、アナログ音声ネットワーク又はデジタルファイバ通信ネットワーク等の電気通信/電話ネットワークを介する通信をサポートすることができる。種々の実施形態では、コンピュータシステム2000は、図112000に示したものよりも、多い、少ない、または、異なる部材を包含することができる(例えば、ディスプレイ、ビデオカード、オーディオカード、周辺機器、ATMインタフェース等の他のネットワークインターフェース、イーサネットインタフェース、フレームリレーインタフェース、等)。
なお、本明細書に記載の分散システムの実施形態のいずれか、または、その部材のいずれかは、1つまたは複数のネットワークベースのサービスとして実施しても良い。例えば、コンピューティングサービス内のコンピュータクラスタは、コンピューティング及び/またはストレージサービス、及び/または、本明細書に記載の分散コンピューティングシステムを使用する他のタイプのサービスを、ネットワークベースのサービスとしてクライアントに提示することができる。いくつかの実施形態では、ネットワークベースのサービスは、ソフトウェア及び/またはネットワークを介して相互運用可能な機械対機械の対話をサポートするように設計されたハードウェアシステムによって実行することができる。ネットワークベースのサービスは、Webサービス記述言語(WSDL)などの機械処理可能な形式で記述されたインタフェースを有しても良い。他のシステムは、ネットワークベースのサービスのインタフェースの説明で規定される方法により、ネットワークベースのサービスと相互作用することができる。例えば、ネットワークベースのサービスは、他のシステムが呼び出す種々の操作を画定することができ、種々の操作を要求するときに他のシステムが適合することを期待する特定のアプリケーションプログラミングインターフェース(API)を画定することができる。だが
様々な実施形態では、ネットワークベースのサービスは、ネットワークベースのサービスの要求に関連するパラメータ及び/またはデータを含むメッセージの使用を通じて、要求しまたは呼び出すことができる。このようなメッセージは、拡張マークアップ言語(XML)等の特定のマークアップ言語にしたがってフォーマットし、及び/または、簡易オブジェクトアクセスプロトコル(SOAP)のようなプロトコルを用いてカプセル化することができる。ネットワークベースのサービス要求を実行するため、ネットワークベースのサービスクライアントは、要求を含むメッセージをアセンブルし、ハイパーテキスト転送プロトコル(HTTP)のようなインターネットベースのアプリケーション層転送プロトコルを使用して、ネットワークベースのサービスに対応するアドレス可能なエンドポイント(例えば、ユニフォームリソースロケータ(URL))にメッセージを伝えることができる。
いくつかの実施形態では、ネットワークベースのサービスは、メッセージベースの技術よりも、むしろRepresentational State Transfer(「RESTful」)の技術を用いて実現することができる。例えば、RESTful技術にしたがって実行されるネットワークベースのサービスは、SOAPメッセージ内にカプセル化するよりも、むしろPUT、GET、DELETE等のHTTPメソッド内に含まれるパラメータを介して呼び出すことができる。
上記実施形態について、かなり詳細に説明してきたが、上記の開示を完全に理解することにより、当業者にとって明らかなように、多くの変形及び変更が可能である。したがって、以下の特許請求の範囲は、このような変形及び変更を包含するように解釈されること意図したものであり、上記の説明は説明のためであり、場面に限定するものではない。

Claims (15)

  1. 1つまたは複数のコンピューティングデバイスにより
    クライアントから受け取ったデータボリュームに対する書き込み要求を、前記データボリュームに対するレプリケーションを実行するために、前記データボリュームのレプリカを維持する複数のストレージノードにおいて完了することであって、前記書き込み要求は、前記複数のストレージノードのそれぞれにおいて完了したときに、完了として承認される、前記完了することと、
    前記複数のストレージノードの1つのストレージノードがレプリケーションに利用できないことを判定することと
    前記ストレージノードが利用できないことの前記判定に応答して、前記データボリュームに対するレプリケーションが前記ストレージノードに対して無効となるように、前記データボリュームに対する低減した耐久性状態にしたがって、前記データボリュームに対する後から受け取った書き込み要求を処理することであって、前記処理することは、
    前記データボリュームに対する前記後から受け取った書き込み要求のそれぞれに対して、
    レプリケーションに利用可能な前記複数のストレージノードの1つまたは複数のストレージノードで、前記後から受け取った書き込み要求を完了し、この書き込み要求は前記複数のストレージノードよりも少ない数のストレージノードで完了されることと
    前記書き込み要求を承認するために以前使用された前記複数のストレージノードより少ない数の前記1つまたは複数のストレージノードでの前記後から受け取った書き込み要求の完了に応答して、前記後から受け取った書き込み要求完了の承認を行うことと、を包含する、前記処理することと、
    を実行することを備える方法。
  2. 前記複数のストレージノードは、マスタストレージノードとスレーブストレージノードとを有し、レプリケーションに利用できないと判定された前記ストレージノードはマスタストレージノードであり、前記データボリュームに対する前記書き込み要求はマスタストレージノードで受け取り、前記マスタストレージノードは、前記マスタストレージノードで受け取った書き込み要求を、前記スレーブストレージノードに送り前記スレーブストレージノードで完了、この方法は、更に、
    前記ストレージノードは利用できないとの前記判定に応答して、前記スレーブストレージノードを前記データボリュームに対する新しいマスタストレージノードに格上げし、前記後から受け取った前記データボリュームに対する書き込み要求は、前記新しいマスタストレージノードで受け取り、
    レプリケーションに利用できる前記複数のストレージノードの前記1つまたは複数のストレージノードにおける前記後から受け取った書き込み要求の前記完了は、前記後から受け取った書き込み要求が、前記複数のストレージノードの他の任意のストレージノードでの書き込み要求が完了することなく、前記新しいマスタストレージノードで完了するように実行される、請求項1に記載の方法。
  3. 更に、
    前記データボリュームに対する書き込み要求を処理するため、他のストレージノードに対して前記データボリュームのレプリケーションを有効化することを決定し、
    前記データボリュームレプリケーションを有効化することの決定に対応して、
    前記データボリュームの他の複製を維持する前記他のストレージノードを特定し
    1つまたは複数のストレージノードに維持されるように前記データボリュームを複製するために、前記データボリュームの前記他の複製を更新する1つまたは複数の複製操作を実行し、更に、
    追加の書き込み要求を完了として承認する前に、前記他のストレージノードで追加の書き込み要求が完了するように、前記他のストレージノードに対するレプリケーションを可能にする、請求項1に記載の方法。
  4. 前記他のストレージノードは、利用できないと判定された前記ストレージノードと相違し、前記他の複製の更新を実行した前記1つまたは複数の複製操作は、記1つまたは複数のストレージノードに維持される全てのデータボリュームのコピーを送り、前記コピーは、前記データボリュームの前記他の複製として格納される、請求項3に記載の方法。
  5. 前記複数のストレージノードが、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記データボリュームに対するレプリケーションの前記判定は、
    前記データボリュームの前記他の複製を維持するためのストレージノードの前記大きなコレクション中の記憶容量、
    前記ストレージノードの大きなコレクション中のネットワーク利用、または、
    前記データボリュームに対する耐久性の状態、
    の1つまたは複数に、少なくとも一部が基づいて行われる、請求項3に記載の方法。
  6. 前記1つまたは複数のコンピューティングデバイスの少なくともいくつかは、ストレージノードの前記大きなコレクションに対する制御プレーンを実装し、前記データボリュームに対するレプリケーションを有効化することの前記決定は、前記制御プレーンで実行される、請求項5に記載の方法。
  7. 前記複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記複数の異なるデータボリュームの少なくともいくつかに対する書き込み要求は、それぞれの低減した耐久性状態にしたがって処理され、前記データボリュームに対するレプリケーションを有効化することの前記決定は、それぞれ低減した耐久性状態の少なくともいくつかのデータボリュームの耐久性を増大するための優先順位付けスキームに少なくとも部分的に基づく、請求項2−6のいずれか一項に記載の方法。
  8. 前記複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記ストレージノードが利用できないことの前記判定、前記低減した耐久性状態にしたがう前記データボリュームに対する前記後から受け取った書き込み要求の前記処理、レプリケーションを有効化することの前記決定、他のストレージノードの前記特定、前記1つまたは複数の複製操作の前記実行、及び、他のストレージに対する前記レプリケーションの有効化は、前記複数のデータボリュームの異なるものを格納する少なくともいくつかのストレージノードに対して実行される、請求項2−6のいずれか一項に記載の方法。
  9. 前記複数のストレージノードは、ネットワークベースでブロックベースのストレージサービスを実装するストレージノードの大きなコレクションの一部であり、書き込み要求は、ネットワークベースの仮想計算サービスにより実装される1つまたは複数の仮想計算インスタンスから受け取り、前記ネットワークベースでブロックベースのストレージサービス及びネットワークベースの仮想計算サービスは、同じプロバイダネットワークの一部として共に実装される、請求項1−7のいずれか一項に記載の方法。
  10. プログラム命令を格納する非一過性のコンピュータ読取可能な記憶媒体であって、このプログラム命令は、1つまたは複数のコンピューティングデバイスで実行されたときに、この1つまたは複数のコンピューティングデバイスに
    クライアントから受け取ったデータボリュームに対する書き込み要求を、前記データボリュームに対するレプリケーションを実行するために、前記データボリュームのレプリカを維持する複数のストレージノードにおいて完了させることであって、前記書き込み要求は、前記複数のストレージノードのそれぞれにおいて完了したときに、完了として承認される、前記完了させることと、
    データボリュームの複製を維持する前記複数のストレージノードの1つのストレージノードがレプリケーションに利用できないことを判定させることと
    前記ストレージノードが利用できないことの前記判定に応答して、前記データボリュームに対するレプリケーションがストレージノードに対して無効となるように、前記データボリュームに対する低減した耐久性状態にしたがって、前記データボリュームに対する後から受け取った書き込み要求を処理させることであって、前記処理させることは、
    前記データボリュームに対する前記後から受け取った書き込み要求のそれぞれに対して、
    レプリケーションに利用可能な前記複数のストレージノードの1つまたは複数のストレージノードで、前記後から受け取った書き込み要求を完了させることであって、この書き込み要求は、前記複数のストレージノードよりも少ない数のストレージノードで完了され、更に、
    前記書き込み要求を承認するために以前使用された前記複数のストレージノードより少ない数の前記1つまたは複数のストレージノードでの前記後から受け取った書き込み要求の完了に応答して、前記後から受け取った書き込み要求完了の承認を行わせる、ことを包含する、前記処理することと、
    を実行させる、非一過性のコンピュータ読取可能な記憶媒体。
  11. 前記複数のストレージノードは、マスタストレージノード及びスレーブストレージノードを有し、利用できないと判定された前記ストレージノードは前記スレーブストレージノードであり、前記マスタストレージノードは、前記マスタストレージノードで受け取った前記クライアントからの前記書き込み要求を、前記スレーブストレージノードに送り前記スレーブストレージノードで完了し、レプリケーションに利用可能な前記複数のストレージノードの前記1つまたは複数のストレージノードで前記後から受け取った書き込み要求の前記完了は、前記複数のストレージノードの他の任意のストレージノードで前記書き込み要求を完了することなく、前記後から受け取った書き込み要求が前記マスタストレージノードで完了するように、実行される、請求項10に記載の非一過性のコンピュータ読取可能な記憶媒体。
  12. 前記プログラム命令は前記1つまたは複数のコンピューティングデバイスに、更に、
    前記データボリュームに対する書き込み要求を処理するため、他のストレージノードに対して前記データボリュームのレプリケーションを有効化することを決定させ、
    前記データボリュームをレプリケーション有効化することの決定に対応して、
    前記データボリュームの他の複製を維持する前記他のストレージノードを特定させ、
    前記1つまたは複数のストレージノードに維持されるように前記データボリュームを複製するために、前記データボリュームの前記他の複製を更新する1つまたは複数の複製操作を実行させ、更に、
    追加の書き込み要求が完了として承認する前に、前記他のストレージノードで前記追加の書き込み要求が完了するように、前記他のストレージノードに対するレプリケーションを可能にさせる、請求項10に記載の非一過性でコンピュータ読取可能なストレージ媒体。
  13. 前記他のストレージノードは利用できないと決定された前記ストレージノードであり、前記データボリュームの前記他の複製は前記データボリュームの前記それぞれの複製であり、前記データボリュームの前記他の複製を更新する前記1つまたは複数の複製操作を前記実行するときに、前記プログラム命令は、前記1つまたは複数のコンピューティングデバイスに、
    前記データボリュームの前記それぞれの複製を更新するために、前記ストレージノードの前記データボリュームに対する複製の無効化の後で変更された前記データボリュームのデータチャンクを送らせる、請求項12に記載の非一過性でコンピュータ読取可能なストレージ媒体。
  14. 前記複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記データボリュームに対するレプリケーションを有効化することの前記決定は、
    前記データボリュームの前記他の複製を維持するためのストレージノードの前記大きなコレクション中の記憶容量、
    ストレージノードの前記大きなコレクション中のネットワーク利用、または、
    前記データボリュームに対する耐久性の状態、
    の1つまたは複数に、少なくとも一部が基づいて行うことが可能である、請求項12または13に記載の非一過性でコンピュータ読取可能なストレージ媒体。
  15. 前記複数のストレージノードは、ネットワークベースでブロックベースのストレージサービスを実装するストレージノードの大きなコレクションの一部であり、書き込み要求は、ネットワークベースの仮想計算サービスにより実装される1つまたは複数の仮想計算インスタンスから受け取り、前記ネットワークベースでブロックベースのストレージサービス及び前記ネットワークベースの仮想計算サービスは、同じプロバイダネットワークの一部として共に実装される、請求項10−14のいずれか一項に記載の非一過性でコンピュータ読取可能なストレージ媒体。
JP2016556707A 2014-03-11 2015-03-06 ブロックベースストレージに対するデータボリュームの耐久性状態の低減 Active JP6353924B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/204,943 2014-03-11
US14/204,943 US9600203B2 (en) 2014-03-11 2014-03-11 Reducing data volume durability state for block-based storage
PCT/US2015/019087 WO2015138221A1 (en) 2014-03-11 2015-03-06 Reducing data volume durability state for block-based storage

Publications (2)

Publication Number Publication Date
JP2017509990A JP2017509990A (ja) 2017-04-06
JP6353924B2 true JP6353924B2 (ja) 2018-07-04

Family

ID=54068912

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016556707A Active JP6353924B2 (ja) 2014-03-11 2015-03-06 ブロックベースストレージに対するデータボリュームの耐久性状態の低減

Country Status (9)

Country Link
US (2) US9600203B2 (ja)
EP (1) EP3117326B1 (ja)
JP (1) JP6353924B2 (ja)
KR (1) KR101862718B1 (ja)
CN (1) CN106170777B (ja)
AU (1) AU2015229864B2 (ja)
CA (1) CA2940328C (ja)
SG (1) SG11201607071QA (ja)
WO (1) WO2015138221A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600203B2 (en) 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
US9720620B1 (en) 2014-03-11 2017-08-01 Amazon Technologies, Inc. Efficient data volume replication for block-based storage
US9569461B2 (en) * 2014-06-11 2017-02-14 The Boeing Company Distributed data authority system
US11386115B1 (en) * 2014-09-12 2022-07-12 Amazon Technologies, Inc. Selectable storage endpoints for a transactional data storage engine
US10587688B2 (en) * 2014-09-19 2020-03-10 Netapp, Inc. Techniques for coordinating parallel performance and cancellation of commands in a storage cluster system
TWI567554B (zh) * 2014-11-06 2017-01-21 慧榮科技股份有限公司 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置
US9817587B1 (en) * 2015-03-04 2017-11-14 Amazon Technologies, Inc. Memory-based on-demand data page generation
US10623486B2 (en) 2015-06-15 2020-04-14 Redis Labs Ltd. Methods, systems, and media for providing distributed database access during a network split
US10078562B2 (en) * 2015-08-18 2018-09-18 Microsoft Technology Licensing, Llc Transactional distributed lifecycle management of diverse application data structures
US9733869B1 (en) 2015-09-25 2017-08-15 Amazon Technologies, Inc. Provisioning a slave for data storage using metadata with updated references
US10452680B1 (en) * 2015-09-25 2019-10-22 Amazon Technologies, Inc. Catch-up replication with log peer
US9753813B1 (en) 2015-09-25 2017-09-05 Amazon Technologies, Inc. Data replication snapshots for persistent storage using operation numbers
US11194500B2 (en) * 2016-01-28 2021-12-07 Netapp, Inc. Resilient implementation of client file operations and replication
US10509601B2 (en) 2016-12-28 2019-12-17 Amazon Technologies, Inc. Data storage system with multi-tier control plane
US10114582B1 (en) * 2016-12-28 2018-10-30 EMC IP Holdinig Company LLC Dynamically selecting between sync and async replication modes
US10484015B2 (en) 2016-12-28 2019-11-19 Amazon Technologies, Inc. Data storage system with enforced fencing
US11301144B2 (en) 2016-12-28 2022-04-12 Amazon Technologies, Inc. Data storage system
US10514847B2 (en) 2016-12-28 2019-12-24 Amazon Technologies, Inc. Data storage system with multiple durability levels
US10834190B2 (en) 2018-01-18 2020-11-10 Portworx, Inc. Provisioning of clustered containerized applications
KR102509256B1 (ko) * 2018-03-27 2023-03-14 넷플릭스, 인크. 스케줄링된 안티-엔트로피 복구 설계를 위한 기술들
CN112470112B (zh) * 2018-04-30 2024-05-10 亚马逊技术有限公司 块存储系统的分布式副本
US10409511B1 (en) * 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10592144B2 (en) 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
US20200133801A1 (en) * 2018-10-26 2020-04-30 EMC IP Holding Company LLC System and method for data backup in mixed disk environment
US10949131B2 (en) * 2019-06-28 2021-03-16 Amazon Technologies, Inc. Control plane for block storage service distributed across a cloud provider substrate and a substrate extension
US11411771B1 (en) 2019-06-28 2022-08-09 Amazon Technologies, Inc. Networking in provider network substrate extensions
US10949125B2 (en) * 2019-06-28 2021-03-16 Amazon Technologies, Inc. Virtualized block storage servers in cloud provider substrate extension
US10949124B2 (en) * 2019-06-28 2021-03-16 Amazon Technologies, Inc. Virtualized block storage servers in cloud provider substrate extension
US11374789B2 (en) 2019-06-28 2022-06-28 Amazon Technologies, Inc. Provider network connectivity to provider network substrate extensions
US11169723B2 (en) 2019-06-28 2021-11-09 Amazon Technologies, Inc. Data storage system with metadata check-pointing
US11044118B1 (en) 2019-06-28 2021-06-22 Amazon Technologies, Inc. Data caching in provider network substrate extensions
CN114514500A (zh) * 2019-09-23 2022-05-17 亚马逊技术有限公司 跨区复制块存储装置
US11182096B1 (en) 2020-05-18 2021-11-23 Amazon Technologies, Inc. Data storage system with configurable durability
US11681443B1 (en) 2020-08-28 2023-06-20 Amazon Technologies, Inc. Durable data storage with snapshot storage space optimization
KR102351220B1 (ko) * 2021-10-08 2022-01-14 주식회사 이글루시큐리티 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NZ229740A (en) 1988-07-11 1991-11-26 Amdahl Corp Improving data storage reliability: backup copy written into archive
JP2713528B2 (ja) * 1992-08-11 1998-02-16 日本電信電話株式会社 記憶装置容量の無中断拡張方法
US5634052A (en) 1994-10-24 1997-05-27 International Business Machines Corporation System for reducing storage requirements and transmission loads in a backup subsystem in client-server environment by transmitting only delta files from client to server
JPH0926916A (ja) 1995-07-12 1997-01-28 Oki Electric Ind Co Ltd 非破壊ディスク装置
JP2000066843A (ja) 1998-08-17 2000-03-03 Nec Corp ディスクアレイ装置
US7418620B1 (en) * 2001-02-16 2008-08-26 Swsoft Holdings, Ltd. Fault tolerant distributed storage method and controller using (N,K) algorithms
US7103727B2 (en) * 2002-07-30 2006-09-05 Hitachi, Ltd. Storage system for multi-site remote copy
JP4214832B2 (ja) * 2002-07-30 2009-01-28 株式会社日立製作所 記憶装置システム
US20040204975A1 (en) 2003-04-14 2004-10-14 Thomas Witting Predicting marketing campaigns using customer-specific response probabilities and response values
US6996586B2 (en) 2003-06-18 2006-02-07 International Business Machines Corporation Method, system, and article for incremental virtual copy of a data block
JP4291077B2 (ja) 2003-07-29 2009-07-08 株式会社日立製作所 分散ストレージ装置のファイル管理方法及び分散ストレージシステム
JP2005062928A (ja) * 2003-08-11 2005-03-10 Hitachi Ltd 複数のサイトにリモートコピーを行うシステム
EP1668486A2 (en) 2003-08-14 2006-06-14 Compellent Technologies Virtual disk drive system and method
JP2006012142A (ja) 2004-06-09 2006-01-12 Hewlett-Packard Development Co Lp 非ディスク永続メモリを利用したチェックポイント方法およびシステム
JP4550541B2 (ja) 2004-10-06 2010-09-22 株式会社日立製作所 ストレージシステム
US7657578B1 (en) 2004-12-20 2010-02-02 Symantec Operating Corporation System and method for volume replication in a storage environment employing distributed block virtualization
JP4815825B2 (ja) * 2005-03-10 2011-11-16 日本電気株式会社 ディスクアレイ装置及びその再構築方法
US7487386B2 (en) 2005-03-30 2009-02-03 International Business Machines Corporation Method for increasing file system availability via block replication
JP4800056B2 (ja) 2006-02-09 2011-10-26 株式会社日立製作所 ストレージシステム及びその制御方法
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8346719B2 (en) 2007-05-17 2013-01-01 Novell, Inc. Multi-node replication systems, devices and methods
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US7831682B2 (en) 2008-08-08 2010-11-09 Amazon Technologies, Inc. Providing a reliable backing store for block data storage
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
WO2010138628A1 (en) 2009-05-28 2010-12-02 Marvell World Trade Ltd. Metadata management for virtual volumes
US9395933B2 (en) * 2009-09-01 2016-07-19 Nec Corporation Distributed storage system, distributed storage method, and program and storage node for distributed storage
US8341115B1 (en) 2009-12-26 2012-12-25 Emc Corporation Dynamically switching between synchronous and asynchronous replication
CN101764712A (zh) 2010-01-21 2010-06-30 瑞斯康达科技发展股份有限公司 一种日志信息的传输系统及方法
US8677055B2 (en) 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US8612700B1 (en) 2010-10-29 2013-12-17 Symantec Corporation Method and system of performing block level duplications of cataloged backup data
US9805108B2 (en) * 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US8612392B2 (en) 2011-05-09 2013-12-17 International Business Machines Corporation Identifying modified chunks in a data set for storage
US8751863B2 (en) * 2011-05-23 2014-06-10 Microsoft Corporation Implementing failover processes between storage stamps
US9294564B2 (en) 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
US9323659B2 (en) 2011-08-12 2016-04-26 Sandisk Enterprise Ip Llc Cache management including solid state device virtualization
WO2013024485A2 (en) 2011-08-17 2013-02-21 Scaleio Inc. Methods and systems of managing a distributed replica based storage
US8930309B2 (en) 2012-02-29 2015-01-06 Symantec Corporation Interval-controlled replication
JP5938965B2 (ja) * 2012-03-19 2016-06-22 富士通株式会社 マルチノードストレージシステムのノード装置および処理速度管理方法
US9600203B2 (en) 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage

Also Published As

Publication number Publication date
EP3117326A1 (en) 2017-01-18
KR20160130490A (ko) 2016-11-11
CA2940328A1 (en) 2015-09-17
SG11201607071QA (en) 2016-09-29
US20150261443A1 (en) 2015-09-17
CN106170777A (zh) 2016-11-30
US20170206260A1 (en) 2017-07-20
US9600203B2 (en) 2017-03-21
US10489422B2 (en) 2019-11-26
KR101862718B1 (ko) 2018-05-30
CN106170777B (zh) 2019-12-27
AU2015229864B2 (en) 2017-08-03
CA2940328C (en) 2020-12-15
AU2015229864A1 (en) 2016-09-08
JP2017509990A (ja) 2017-04-06
EP3117326A4 (en) 2017-10-25
WO2015138221A1 (en) 2015-09-17
EP3117326B1 (en) 2022-07-27

Similar Documents

Publication Publication Date Title
JP6353924B2 (ja) ブロックベースストレージに対するデータボリュームの耐久性状態の低減
US9983825B2 (en) Efficient data volume replication for block-based storage
US11729073B2 (en) Dynamic scaling of storage volumes for storage client file systems
US9792060B2 (en) Optimized write performance at block-based storage during volume snapshot operations
JP6437007B2 (ja) ブロックベースのストレージにおけるページキャッシュ書き込みロギング
US10169068B2 (en) Live migration for virtual computing resources utilizing network-based storage
JP6389268B2 (ja) 個々のデータボリュームに対し動的に修正する耐久性特徴
US9836327B1 (en) Network-based storage access control for migrating live storage clients
US20190272260A1 (en) Remote Durable Logging for Journaling File Systems
US10505862B1 (en) Optimizing for infrastructure diversity constraints in resource placement
US11461156B2 (en) Block-storage service supporting multi-attach and health check failover mechanism
US10929041B1 (en) Block-storage service supporting multi-attach
US10812408B1 (en) Preventing concentrated selection of resource hosts for placing resources
US11121981B1 (en) Optimistically granting permission to host computing resources

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170912

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180611

R150 Certificate of patent or registration of utility model

Ref document number: 6353924

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