JP7015848B2 - ディストリビューテッド・ストレージ・ネットワーク - Google Patents

ディストリビューテッド・ストレージ・ネットワーク Download PDF

Info

Publication number
JP7015848B2
JP7015848B2 JP2019565516A JP2019565516A JP7015848B2 JP 7015848 B2 JP7015848 B2 JP 7015848B2 JP 2019565516 A JP2019565516 A JP 2019565516A JP 2019565516 A JP2019565516 A JP 2019565516A JP 7015848 B2 JP7015848 B2 JP 7015848B2
Authority
JP
Japan
Prior art keywords
slice
units
computing device
slice name
eds
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
JP2019565516A
Other languages
English (en)
Other versions
JP2020524324A (ja
Inventor
カディワラ、ラヴィ
レッシュ、ジェイソン
デュース、グレゴリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020524324A publication Critical patent/JP2020524324A/ja
Application granted granted Critical
Publication of JP7015848B2 publication Critical patent/JP7015848B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • 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
    • 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/0617Improving the reliability of storage systems in relation to availability
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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]

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、一般に、コンピュータ・ネットワークに関し、より特定的には、データの分散エラー符号化(dispersing error encoded data)に関する。
コンピューティング・デバイスは、データの通信、データの処理、及び/又はデータの格納を行うことが知られている。そのようなコンピューティング・デバイスは、無線スマートフォン、ラップトップ、タブレット、パーソナル・コンピュータ(PC)、ワーク・ステーション、及びビデオ・ゲーム・デバイスから、毎日何百万ものウェブ検索、株式取引、又はオンライン購入をサポートするデータ・センタにまで及ぶ。一般に、コンピューティング・デバイスは、中央処理ユニット(CPU)、メモリ・システム、ユーザ入力/出力インターフェース、周辺機器インターフェース、及び相互接続バス構造を含む。
さらに知られているように、コンピュータは、「クラウド・コンピューティング」を用いて、コンピュータの代わりに1つ又は複数のコンピューティング機能(例えば、サービス、アプリケーション、アルゴリズム、演算論理関数等)を実行することにより、そのCPUを事実上拡張することができる。さらに、大規模なサービス、アプリケーション、及び/又は機能については、クラウド・コンピューティングを複数のクラウド・コンピューティング・リソースによりディストリビュート方式で行って、サービス、アプリケーション、及び/又は関数の完了のための応答時間を改善することができる。例えば、Hadoopは、数千のコンピュータによるアプリケーション実行を可能にするディストリビューテッド・アプリケーションをサポートするオープンソース・ソフトウェア・フレームワークである。
クラウド・コンピューティングに加えて、コンピュータは、そのメモリ・システムの一部として「クラウド・ストレージ」を用いることができる。知られているように、クラウド・ストレージは、ユーザがそのコンピュータを介して、ファイル、アプリケーションなどをインターネット・ストレージ・システム上に格納することを可能にする。インターネット・ストレージ・システムは、エラー訂正スキームを用いて格納のためにデータを符号化するRAID(redundant array of independent disks、独立ディスク冗長アレイ)システム、及び/又は分散ストレージ・システムを含むことができる。
分散ストレージ・ネットワーク(DSN)の1つ又は複数のコンピューティング・デバイスの1つ又は複数の処理モジュールにより実行するための方法を提供する。
第一側面の観点から、本発明は、コンピューティング・デバイスであって、分散又はディストリビューテッド・ストレージ・ネットワーク(DSN)とインターフェース接続し、通信するように構成されたインターフェースと、操作命令を格納するメモリと、前記インターフェース及び前記メモリに動作可能に結合された処理モジュールと、を含む。
前記処理モジュールは、前記操作命令に基づいて前記コンピューティング・デバイス内で動作可能なとき、
要求中のコンピューティング・デバイスから、前記DSNを介して、データ・オブジェクトを複数のディストリビューテッド・ストレージ(DS)ユニット内に格納する要求を受け取ることと、
前記データ・オブジェクトと関連したソース名、前記ソース名についての第1の値、及び提案試行識別子を含む提案メッセージを生成することと、
前記提案メッセージを前記複数のDSユニットに伝送することと、
前記提案メッセージに応答して、前記複数のDSユニットから閾値数の提案メッセージ応答を受け取ることであって、前記閾値数の提案メッセージ応答のうちの1つの提案メッセージ応答は、前記複数のDSユニットのうちの1つのDSユニットから受け取られ、前記DSユニットにより直近に受理された、前記ソース名についての第2の値に対応し、前記複数のDSユニットのうちの前記DSユニットが他のいずれかの提案メッセージを受け取ったかどうかをさらに示す、受け取ることと、
前記複数のDSユニットのうちの前記DSユニットから受け取った前記閾値数の提案メッセージ応答のうちの前記提案メッセージ応答が、前記複数のDSユニットのうちの前記DSユニットにより他の提案メッセージを受け取っていないことを示すとき、前記提案メッセージ内に含まれる前記ソース名についての前記第1の値を、前記ソース名についての永続値として採用し、前記ソース名についての前記永続値を前記要求中のコンピューティング・デバイスに通知することと、
前記複数のDSユニットのうちの前記DSユニットから受け取った前記閾値数の提案メッセージ応答のうちの前記提案メッセージ応答が、前記複数のDSユニットのうちの前記DSユニットにより、少なくとも1つの他の提案メッセージを受け取っていることを示すとき、前記複数のDSユニットからの前記閾値数の提案メッセージ応答に基づいて、前記ソース名についての第3の値を、前記ソース名についての前記永続値として採用し、前記ソース名についての前記永続値を前記要求中のコンピューティング・デバイスに通知することと、を行うように構成される。
本発明の実施形態による、分散(dispersed)又はディストリビューテッド(distributed)ストレージ・ネットワーク(DSN)の実施形態の模式的ブロック図である。 本発明の実施形態による、コンピューティング・コアの実施形態の模式的ブロック図である。 本発明の実施形態による、データの分散ストレージ・エラー符号化の例の模式的ブロック図である。 本発明の実施形態による、エラー符号化関数の一般的な例の模式的ブロック図である。 本発明の実施形態による、エラー符号化関数の特定の例の模式的ブロック図である。 本発明の実施形態による、符号化データ・スライス(EDS)のスライス名の例の模式的ブロック図である。 本発明の実施形態による、データの分散ストレージ・エラー復号の例の模式的ブロック図である。 本発明の実施形態による、エラー復号関数の一般的な例の模式的ブロック図である。 本発明の実施形態による、符号化データ・スライスのセットに対する重複する書き込み要求の例の模式的ブロック図である。 本発明の実施形態による、符号化データ・スライスに対する書き込み要求の例の模式的ブロック図である。 本発明の実施形態による、符号化データ・スライスに対する読み取り要求の例の模式的ブロック図である。 本発明の実施形態による、符号化データ・スライスのセットに対する重複する書き込み要求及び読み取り要求の別の例の模式的ブロック図である。 本発明の実施形態による、DSNのストレージ・ユニットにより格納される、符号化データ・スライスについての提案記録の例の模式的ブロック図である。 本発明の実施形態による、提案メッセージの例の模式的ブロック図である。 本発明の実施形態による、提案メッセージを用いてDSNにおける競合を管理する方法の例の論理図である。
図1は、複数のコンピューティング・デバイス12~16、管理ユニット18、完全性(integrity)処理ユニット20、及びDSNメモリ22を含む分散又はディストリビューテッド・ストレージ・ネットワーク(DSN)10の実施形態の模式的ブロック図である。DSN10のコンポーネントは、ネットワーク24に結合され、ネットワーク24は、1つ又は複数の無線及び/又は有線通信システム;1つ又は複数の非パブリック・イントラネット・システム及び/又は公衆インターネット・システム;及び/又は1つ又は複数のローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を含むことができる。
DSNメモリ22は、地理的に異なる場所(例えば、1つはシカゴ、1つはミルウォーキー等)に、共通の場所に、又はその組み合わせで配置することができる複数のストレージ・ユニット36を含む。例えば、DSNメモリ22が8個のストレージ・ユニット36を含む場合、各ストレージ・ユニットは、異なる場所に配置される。別の例として、DSNメモリ22が8個のストレージ・ユニット36を含む場合、8個のストレージ・ユニット全てが同じ場所に配置される。さらに別の例として、DSNメモリ22が8個のストレージ・ユニット36を含む場合、第1の対のストレージ・ユニットは第1の共通の場所にあり、第2の対のストレージ・ユニットは第2の共通の場所にあり、第3の対のストレージ・ユニットは第3の共通の場所にあり、第4の対のストレージ・ユニットは第4の共通の場所にある。DSNメモリ22は、8個より多い又は少ないストレージ・ユニット36を含み得ることに留意されたい。さらに、各々のストレージ・ユニット36は、コンピューティング・コア(図2又はそのコンポーネントに示されるような)と、分散エラー符号化データを格納するための複数のメモリ・デバイスとを含むことに留意されたい。
コンピューティング・デバイス12~16、管理ユニット18、及び完全性処理ユニット20の各々は、コンピューティング・コア26を含み、コンピューティング・コア26は、ネットワーク・インターフェース30~33を含む。コンピューティング・デバイス12~16はそれぞれ、携帯型コンピューティング・デバイス及び/又は固定型コンピューティング・デバイスとすることができる。携帯型コンピューティング・デバイスは、ソーシャル・ネットワーキング・デバイス、ゲーミング・デバイス、携帯電話、スマートフォン、デジタル・アシスタント、デジタル音楽プレーヤ、デジタル・ビデオ・プレーヤ、ラップトップ・コンピュータ、手持ち式コンピュータ、タブレット、ビデオ・ゲーム・コントローラ、及び/又はコンピューティング・コアを含む任意の他の携帯型デバイスとすることができる。固定型コンピューティング・デバイスは、パーソナル・コンピュータ(PC)、コンピュータ・サーバ、ケーブル・セットトップ・ボックス、衛星放送受信器、テレビ・セット、プリンタ、ファックス装置、家庭用娯楽機器、ビデオ・ゲーム機、及び/又は任意のタイプの家庭用若しくはオフィス用コンピューティング機器とすることができる。管理ユニット18及び完全性処理ユニット20の各々は、別個のコンピューティング・デバイスであってもよく、共通のコンピューティング・デバイスであってもよく、及び/又はコンピューティング・デバイス12~16の1つ又は複数及び/又はストレージ・ユニット36の1つ又は複数に統合されてもよいことに留意されたい。
各インターフェース30、32及び33は、ネットワーク24を介して間接的に及び/又は直接的に1つ又は複数の通信リンクをサポートするためのソフトウェア及びハードウェアを含む。例えば、インターフェース30は、コンピューティング・デバイス14と16との間の通信リンク(例えば、有線、無線、直接、LANを介する、ネットワーク24を介するなど)をサポートする。別の例として、インターフェース32は、コンピューティング・デバイス12及び16とDSNメモリ22との間の通信リンク(例えば、有線接続、無線接続、LAN接続、及び/又はネットワーク24との間の任意の他のタイプの接続)をサポートする。さらに別の例として、インターフェース33は、ネットワーク24に対する管理ユニット18及び完全性処理ユニット20の各々のための通信リンクをサポートする。
図3~図8の1つ又は複数を参照して後で説明されるように、コンピューティング・デバイス12及び16は、コンピューティング・デバイスが、データ(例えば、データ40)を分散ストレージ・エラー符号化及び復号するのを可能にする、分散ストレージ(DS)クライアント・モジュール34を含む。この例示的な実施形態において、コンピューティング・デバイス16は、コンピューティング・デバイス14のための分散ストレージ処理エージェントとして機能する。この役割において、コンピューティング・デバイス16は、コンピューティング・デバイス14の代わりにデータを分散ストレージ・エラー符号化及び復号する。分散ストレージ・エラー符号化及び復号を用いれば、DSN10は、データ損失なしに、及び、データの冗長又はバックアップ・コピーを必要とせずに、かなりの数のストレージ・ユニットの障害に対する耐性がある(障害の数は、分散ストレージ・エラー符号化関数のパラメータに基づく)。さらに、DSN10は、データ損失なしにセキュアな方法で無期限にデータを格納する(例えば、システムは、権限のないデータ・アクセスの試行に対して非常に耐性がある)。
動作において、管理ユニット18は、DS管理サービスを行う。例えば、管理ユニット18は、コンピューティング・デバイス12~14に対して個々に、又はユーザ・デバイスのグループの一部として、ディストリビューテッド・データ・ストレージ・パラメータ(例えば、ボールト(vault)の作成、ディストリビューテッド・ストレージ・パラメータ、セキュリティ・パラメータ、課金情報、ユーザ・プロファイル情報など)を確立する。特定の例として、管理ユニット18は、ユーザ・デバイス、デバイスのグループ、又はパブリック・アクセスのためのDSNメモリ22内のボールト(例えば、DSNのネーム空間全体の一部と関連した仮想メモリ・ブロック)の作成を調整し、ボールトについての分散ストレージ(DS)エラー符号化パラメータを、ボールトごとに確立する。管理ユニット18は、DSN10のレジストリ情報を更新することによって、各ボールトについてのDSエラー符号化パラメータの格納を容易にし、それにより、レジストリ情報は、DSNメモリ22、コンピューティング・デバイス12~16、管理ユニット18、及び/又は完全性処理ユニット20内に格納され得る。
管理ユニット18は、ユーザ・プロファイル情報(例えば、アクセス制御リスト(ACL))を作成し、ローカル・メモリ内及び/又はDSNメモリ22のメモリ内に格納する。ユーザ・プロファイル情報は、認証情報、許可、及び/又はセキュリティ・パラメータを含む。セキュリティ・パラメータは、暗号化/解読スキーム、1つ又は複数の暗号化鍵、鍵生成スキーム、及び/又はデータ符号化/復号スキームを含むことができる。
管理ユニット18は、特定のユーザ、ユーザ・グループ、ボールト・アクセス、パブリック・ボールト・アクセス等に対する課金情報を作成する。例えば、管理ユニット18は、非パブリック・ボールト及び/又はパブリック・ボールトにユーザがアクセスする回数を追跡し、それを用いてアクセスごとの課金情報を生成することができる。別の例では、管理ユニット18は、ユーザ・デバイス及び/又はユーザ・グループによって格納された及び/又は取り出されたデータの量を追跡し、それを用いてデータ量ごとの課金情報を生成することができる。
別の例として、管理ユニット18は、ネットワーク動作、ネットワーク管理、及び/又はネットワーク保守を実行する。ネットワーク動作は、ユーザ・データ割り当て要求(例えば、読み出し及び/又は書き込み要求)を認証すること、ボールトの作成を管理すること、ユーザ・デバイスに対する認証資格証明を確立すること、DSN10へ/からコンポーネント(例えば、ユーザ・デバイス、ストレージ・ユニット、及び/又はDSクライアント・モジュール34を有するコンピューティング・デバイス)を追加/削除すること、及び/又はストレージ・ユニット36に対する認証資格証明を確立することを含む。ネットワーク管理は、デバイス及び/又はユニットの障害を監視すること、ボールト情報を保持すること、デバイス及び/又はユニットのアクティブ化ステータスを決定すること、デバイス及び/又はユニットのロードを決定すること、及び/又はDSN10の性能レベルに影響を与える任意の他のシステム・レベル動作を決定することを含む。ネットワーク保守は、DNS10のデバイス及び/又はユニットの交換、アップグレード、修理、及び/又は拡張を容易にすることを含む。
完全性処理ユニット20は、「不良」又は欠損している符号化データ・スライスの再構築を実行する。高レベルにおいては、完全性処理ユニット20は、DSNメモリ22から、符号化データ・スライス、及び/又は符号化データ・スライスのスライス名の取り出し/列挙を定期的に試みることによって再構築を実行する。取り出された符号化スライスについて、それらは、データ破損、古いバージョン等に起因するエラーに関してチェックされる。スライスがエラーを含む場合、それは「不良」スライスとしてフラグが立てられる。受け取られなかった及び/又は列挙されなかった符号化データ・スライスについては、それらは、欠損スライスとしてフラグが立てられる。不良及び/又は欠損スライスは、その後、再構築されたスライスを生成するために良好なスライスとみなされる他の取り出された符号化データ・スライスを使用して再構築される。再構築されたスライスは、DSNメモリ22内に格納される。
図2は、処理モジュール50、メモリ・コントローラ52、メイン・メモリ54、ビデオ・グラフィック処理ユニット55、入力/出力(IO)コントローラ56、周辺コンポーネント相互接続(PCI)インターフェース58、IOインターフェース・モジュール60、少なくとも1つのIOデバイス・インターフェース・モジュール62、読み出し専用メモリ(ROM)基本入出力システム(BIOS)64、及び1つ又は複数のメモリ・インターフェース・モジュールを含むコンピューティング・コア26の実施形態の模式的ブロック図である。1つ又は複数のメモリ・インターフェース・モジュールは、ユニバーサル・シリアル・バス(USB)インターフェース・モジュール66、ホスト・バス・アダプタ(HBA)インターフェース・モジュール68、ネットワーク・インターフェース・モジュール70、フラッシュ・インターフェース・モジュール72、ハード・ドライブ・インターフェース・モジュール74、及びDSNインターフェース・モジュール76のうちの1つ又は複数を含む。
DSNインターフェース・モジュール76は、従来のオペレーティング・システム(OS)ファイル・システム・インターフェース(例えば、ネットワーク・ファイル・システム(NFS)、フラッシュ・ファイル・システム(FFS)、ディスク・ファイル・システム(DFS)、ファイル転送プロトコル(FTP)、ウェブベースのディストリビューテッド・オーサリング及びバージョニング(WebDAV)等)、及び/又はブロック・メモリ・インターフェース(例えば、スモール・コンピュータ・システム・インターフェース(SCSI)、インターネット・スモール・コンピュータ・システム・インターフェース(iSCSI)等)を模倣するように機能する。DSNインターフェース・モジュール76及び/又はネットワーク・インターフェース・モジュール70は、図1のインターフェース30~33の1つ又は複数として機能することができる。IOデバイス・インターフェース・モジュール62及び/又はメモリ・インターフェース・モジュール66~76は、集合的に又は個々にIOポートと呼ぶことができることに留意されたい。
図3は、データの分散ストレージ・エラー符号化の一例の模式的ブロック図である。コンピューティング・デバイス12又は16が格納すべきデータを有するとき、コンピューティング・デバイス12又は16は、分散ストレージ・エラー符号化パラメータに基づく分散ストレージ・エラー符号化プロセスに従って、データを分散ストレージ・エラー符号化する。分散ストレージ・エラー符号化パラメータは、符号化関数(例えば、情報分散アルゴリズム、リード・ソロモン(Reed-Solomon)、コーシー・リード・ソロモン(CauchyReed-Solomon)、系統的符号化、非系統的符号化、オンライン・コード等)、データ・セグメント化プロトコル(例えば、データ・セグメント・サイズ、固定、可変等)、及びデータ・セグメント毎の符号化値を含む。データ・セグメント毎符号化値は、データ・セグメントの符号化当たりの(すなわち、符号化データ・スライスのセット内の)符号化データ・スライスの総数又はピラー幅(pillar width)数(T);データ・セグメントを回復するのに必要な符号化データ・スライス・セットの符号化データ・スライスの復号閾値数(D);データ・セグメントを復号するためにストレージから読み出すべきセット当たりの符号化データ・スライスの数を示す、符号化データ・スライスの読み出し閾値数(R);及び/又は符号化データ・セグメントが適切に格納されたと見なされるまでに正確に格納されなければならないセット当たりの符号化データ・スライスの数を示す、書き込み閾値数(W)を含む。分散ストレージ・エラー符号化パラメータは、スライス(slicing)情報(例えば、各データ・セグメントに対して作成される符号化データ・スライスの数)、及び/又はスライス・セキュリティ情報(例えば、符号化データ・スライス毎の、暗号化、圧縮、完全性チェックサム等)をさらに含むことができる。
本例において、符号化関数としてコーシー・リード・ソロモンが選択され(一般的な例が図4に示され、特定の例が図5に示される)、データ・セグメント化プロトコルは、データ・オブジェクトを固定サイズのデータ・セグメントに分割することであり、データ・セグメント毎符号化値は、ピラー幅5、復号閾値3、読み出し閾値4、及び書き込み閾値4を含む。データ・セグメント化プロトコルに従って、コンピューティング・デバイス12又は16は、データ(例えば、ファイル(テキスト、ビデオ、音声等)、データ・オブジェクト、又は他のデータ配列)を複数の固定サイズのデータ・セグメント(例えば、キロバイトからテラバイト又はそれを上回る範囲の、1乃至Yの固定サイズ)に分割する。作成されるデータ・セグメントの数は、データのサイズ及びデータ・セグメント化プロトコルに依存する。
次に、コンピューティング・デバイス12又は16は、選択された符号化関数(例えば、コーシー・リード・ソロモン)を用いてデータ・セグメントを分散ストレージ・エラー・符号化し、符号化データ・スライスのセットを生成する。図4は、一般的なコーシー・リード・ソロモン符号化関数を示し、これは、符号化行列(encoding matrix、EM)、データ行列(DM)、及びコード化行列(codedmatrix、CM)を含む。符号化行列(EM)のサイズは、選択されたデータ・セグメント毎符号化値のピラー幅数(T)及び復号閾値数(D)に依存する。データ行列(DM)を生成するために、データ・セグメントは、複数のデータブロックに分割され、データブロックは、1行当たりZのデータブロックを有する数Dの行に配列される。Zは、データ・セグメントから作成されるデータブロックの数及び復号閾値数(D)の関数であることに留意されたい。コード化行列は、データ行列に符号化行列を行列乗算することによって生成される。
図5は、ピラー数(T)5及び復号閾値数3の、コーシー・リード・ソロモン符号化の特定の例を示す。この例において、第1のデータ・セグメントは、12個のデータブロック(D1~D12)に分割される。コード化行列は、5行のコード化データブロックを含み、ここで第1の行X11~X14は、第1の符号化データスライス(EDS1_1)に対応し、第2の行X21~X24は、第2の符号化データスライス(EDS2_1)に対応し、第3の行X31~X34は、第3の符号化データスライス(EDS3_1)に対応し、第4の行X41~X44は、第4の符号化データスライス(EDS4_1)に対応し、第5の行X51~X54は、第5の符号化データスライス(EDS5_1)に対応する。EDSの名称の2番目の数は、データ・セグメント数に対応することに留意されたい。
図3の検討に戻ると、コンピューティング・デバイスはまた、符号化データ・スライスのセット内の各符号化データスライス(EDS)についてのスライス名(SN)も作成する。スライス名80の典型的な形式が、図6に示される。図示のように、スライス名(SN)80は、符号化データ・スライスのピラー数(例えば、1~Tのうちの1つ)、データ・セグメント数(例えば、1~Yのうちの1つ)、ボールト識別子(ID)、データ・オブジェクト識別子(ID)を含み、さらに符号化データ・スライスのリビジョン(revision)レベル情報を含むことができる。スライス名は、少なくとも部分的に、DSNメモリ22への格納及びそこからの取り出しための符号化データ・スライスのためのDSNアドレスとして機能する。
符号化の結果として、コンピューティング・デバイス12又は16は、複数の符号化データ・スライスのセットを生成し、これらには、格納用のストレージ・ユニットに対するそれぞれのスライス名が与えられる。図示のように、第1の符号化データ・スライスのセットは、EDS1_1からEDS5_1までを含み、第1のスライス名のセットは、SN1_1からSN5_1までを含み、最後の符号化データ・スライスのセットは、EDS1_YからEDS5_Yまでを含み、最後のスライス名のセットは、SN1_YからSN5_Yまでを含む。
図7は、図4の例において分散ストレージ・エラー符号化されて格納されたデータ・オブジェクトの、分散ストレージ・エラー復号の一例の模式的ブロック図である。この例において、コンピューティング・デバイス12又は16は、ストレージ・ユニットから、少なくとも、データ・セグメント毎の復号閾値数の符号化データ・スライスを取り出す。特定の例として、コンピューティング・デバイスは、読出し閾値数の符号化データ・スライスを取り出す。
復号閾値数の符号化データ・スライスからのデータ・セグメントを回復するために、コンピューティング・デバイスは、図8に示すような復号関数を用いる。図示のように、復号関数は、本質的に図4の符号化関数の逆行列である。コード化行列は、復号閾値数(例えば、この例では3)の行を含み、復号行列は、コード化行列の対応する行を含む符号化行列の逆行列である。例えば、コード化行列が行1、2及び4を含む場合、符号化行列を行1、2及び4に減らし、次いで逆行列にして、復号行列を生成する。
図9は、同じスライス名のセットを有する符号化データ・スライスのセットに対する、重複する書き込み要求の例の模式的ブロック図である。書き込み要求の重複は、書き込み要求の1つのセットが保留中の(例えば、書き込みファイナライズ(finalize)コマンドがまだ発行されていない)ときに生じ、同じスライス名のセットを有する符号化データ・スライスのセットに対する書き込み要求の別のセットを、ストレージ・ユニットにより受け取る。この例では、コンピューティング・デバイスA及びBは、同じスライス名のセットを有する符号化データ・スライスのセットに関する重複する書き込み要求を送る。
重複する書き込み要求(及び他の重複するデータ・アクセス要求)を処理するために、各ストレージ・ユニット36(SU#1~SU#5)は、スライス名又スライス名のグループについての、それぞれの提案記録(proposal record)90-1乃至90-5を格納する。提案記録90は、保留中のトランザクション92の順序付きリスト(ordered list)92を含み、符号化データ・スライス(EDS)94の、可視の異なるバージョンの順序付きリストは、同じスライス名を有する。提案記録90は、符号化データ・スライスの現在のリビジョン・レベルの表示をさらに含むことができる。
保留中のトランザクション92の順序付きリストは、提案記録がオープンである(例えば、保留中の書き込み要求の1つに対して、書き込みファイナライズ・コマンドがまだ発行されていない)間に受け取ったスライス名に関するデータ・アクセス要求と関連した、トランザクション番号の時間順序リスト、又は他の表示を含む。例えば、ストレージ・ユニット#1の提案記録90-1は、スライス名のセットの第1のスライス名に関するデータ・アクセス要求に対するトランザクション番号の順序付きリストを含む。
特定の例として、第1のスライス名を有する符号化データ・スライスのバージョンに関するコンピューティング・デバイスAからの第1の書き込み要求は、第1のトランザクション番号(例えば、0413)を有し、第1のスライス名を有する符号化データ・スライスの別のバージョンに関するコンピューティング・デバイスBからの第2の書き込み要求は、第2のトランザクション番号(例えば、0279)を有する。ストレージ・ユニット#1は、第2の書き込み要求を受け取る前に第1の書き込み要求を受け取っており、従って、提案記録90-1は、第1の優先順位位置にある第1の書き込み要求(例えば、第1のトランザクション番号)、及び第2の優先順位位置にある第2の書き込み要求を有する。
別の特定の例として、第2のスライス名を有する符号化データ・スライスのバージョンに関するコンピューティング・デバイスAからの書き込み要求は、第1のトランザクション番号(例えば、0413)を有し、第2のスライス名を有する符号化データ・スライスの別のバージョンに関するコンピューティング・デバイスBからの書き込み要求は、第2のトランザクション番号(例えば、0279)を有する。ストレージ・ユニット#2は、コンピューティング・デバイスAから書き込み要求を受け取る前に、コンピューティング・デバイスBから書き込み要求を受け取っている。従って、提案記録90-2は、第1の優先順位位置にあるコンピューティング・デバイスBの書き込み要求(例えば、第2のトランザクション番号)、及び第2の優先順位位置にあるコンピューティング・デバイスAからの書き込み要求を有する。残りのストレージ・ユニットは、同様の方法でそれぞれの提案記録を生成する。
一般に、ストレージ・ユニットは、スライス名を有する符号化データ・スライスのバージョンに対する新しい書き込み要求を受け取ったとき、提案記録を「オープンする」(すなわち、他の書き込み要求は保留中でなくなる)。ストレージ・ユニットは、書き込み要求を送っているコンピューティング・デバイスに提案記録を送る。スライス名のセットを有する符号化データ・スライスのセットに対する重複する書き込み要求がない場合、他のストレージ・ユニット(SU#2~SU#5)は、提案記録をオープンし、それらをコンピューティング・デバイスに送る。
コンピューティング・デバイスは、提案記録をインターセプトし、閾値数の又はそれより多い(例えば、デコード閾値数、書き込み閾値数等)の書き込み要求が、第1の優先順位位置にあるかどうかを判断する。重複する書き込み要求がない場合、書き込み要求は、第1の優先順位位置にある。従って、コンピューティング・デバイスは、ファイナライズ要求をストレージ・ユニットに送る。ストレージ・ユニットは、ファイナライズ要求を処理して、新しいバージョンの符号化データ・スライスを最新の符号化データ・スライスのセットにし、それぞれの提案記録を閉じる。
重複する書き込み要求がある(例えば、ストレージ・ユニットが、スライス名についてのオープンな提案記録を有する)場合、ストレージ・ユニットは、新しい書き込み要求を、前に受け取った保留中の書き込み要求よりも低い優先順位位置に置くことにより、新しい書き込み要求で提案記録を更新する。提案記録を更新した後、ストレージ・ユニットは、提案記録を、新しい書き込み要求を送ったコンピューティング・デバイスに送る。
コンピューティング・デバイスが提案記録を受け取ると、コンピューティング・デバイスは、少なくとも閾値数のそれぞれの書き込み要求が第1の優先順位位置にあるかどうかを判断する。肯定である場合、コンピューティング・デバイスは、ファイナライズ・コマンドを発行すする。肯定ではない場合、コンピューティング・デバイスは、その書き込み要求を取り消すか、又は何らかの他のフォールバック位置を実行する。
2つの書き込み要求に加えて、コンピューティング・デバイスCは、符号化データ・スライス98のセットに対する読み取り要求をストレージ・ユニットに送っている。ストレージ・ユニットは、読み取り要求をそれぞれの提案記録に付加し、更新した提案記録をコンピューティング・デバイスCに送る。提案記録を受け取ると、コンピューティング・デバイスCは、読み取り要求(例えば、符号化データ・スライスのセットの現在のリビジョン・レベルを読み取る)を続行するか、又は読み取り要求を終了させるかを判断する。代案として、コンピューティング・デバイスCは、提案記録を処理して、コンピューティング・デバイスA又はコンピューティング・デバイスBからの新しい符号化データ・スライスのセットが、符号化データ・スライスのセットの次の現バージョンになると判断する。この判断を行うと、コンピューティング・デバイスCは、符号化データ・スライスのセットの次の現バージョンを読み取るように、その読み取り要求を修正する。
図10は、図9の書き込み要求96又100の例の模式的ブロック図である。書き込み要求は、トランザクション番号フィールド、スライス名(SN)フィールド、符号化データ・スライス(EDS)フィールド、現リビジョンレベル・フィールド、及び新バージョン・レベル・フィールドを含む。書き込み要求のセット内の各書き込み要求は、同じトランザクション番号、異なるスライス名、異なるEDS、同じ現リビジョン・レベル、及び同じ新リビジョン・レベルを含む。
図11は、図9の読み取り要求102の例の模式的ブロック図である。読み取り要求は、トランザクション番号フィールド、スライス名(SN)フィールド、及び現リビジョンレベル・フィールドを含む。読み取り要求102のセット内の各読み取り要求は、同じトランザクション番号、異なるスライス名、及び同じ現リビジョン・レベルを含む。
図12は、符号化データ・スライス98のセットに対する重複する書き込み要求96、100及び読み取り要求102の別の例の模式的ブロック図である。この例では、コンピューティング・デバイスA及びBの各々は、データ・セグメントを5つの符号化データ・スライスのセットに符号化している。従って、コンピューティング・デバイスA及びBの各々は、5つの書き込み要求96-1乃至96-5及び100-1乃至100-5を生成する。コンピューティング・デバイスAからの書き込み要求は、0413の同じトランザクション番号(ランダムに生成することができる、タイムスタンプとすることができる等)、異なるスライス名(SN1_1乃至SN5_1)、異なる符号化データ・スライス(EDS A_1_1乃至EDS A_5_1)、003の同じ現リビジョン・レベル、及び004の次のリビジョン・レベルを含む。
コンピューティング・デバイスBからの書き込み要求は、0279の同じトランザクション番号、異なるスライス名(SN1_1乃至SN5_1)、異なる符号化データ・スライス(EDS B_1_1乃至EDS B_5_1)、003の同じ現リビジョン・レベル、及び004の次のリビジョン・レベルを含む。コンピューティング・デバイスAからの書き込み要求とコンピューティング・デバイスBからの読み取り要求を比較すると、書き込み要求が、同じスライス名、同じ現リビジョン・レベル、及び同じ次のリビジョン・レベルを有する。書き込み要求は、トランザクション番号及び符号化データ・スライスが異なる。
コンピューティング・デバイスCは、符号化データ・スライス98のセットに対する5つの読み取り要求を発行する。読み取り要求102-1乃至102-5は、03338の同じトランザクション番号、異なるスライス名(SN1_1乃至SN5_1)、003の現リビジョン・レベルを含む。書き込み要求及び読み取り要求は、ストレージ・ユニットSU1乃至SU5に送られ、これらのストレージ・ユニットは、図13を参照して説明されるように要求を処理する。
図13は、DSNのストレージ・ユニットにより格納される符号化データ・スライスのセットについての提案記録の例の模式的ブロック図である。この例では、コンピューティング・デバイスとストレージ・ユニットとの間の異なる待ち時間及び/又は処理能力に起因して、書き込み要求96及び100、並びに読み取り要求102は、ほぼ同じ時間に送り出されるが、要求は、それらの要求が送信された順番ではなく、異なる時間に、及び潜在的には異なる順番で、ストレージ・ユニットにより受け取られる。
読み取り要求又は書き込み要求のいずれかを受け取る前に、ストレージ・ユニットは、符号化データ・スライスのセットの現リビジョン・レベルを格納する。示されるように、ストレージ・ユニットSU#1はEDS1_1を格納し、ストレージ・ユニットSU#2はEDS2_1を格納し、以下同様である。この例では、符号化データ・スライスの現リビジョン・レベルは、003である。さらに、ストレージ・ユニットの各々は、それぞれの符号化データ・スライスについてのオープンな提案記録を持たない。
この例において、ストレージ・ユニットがデータ・アクセス要求を受け取ると、ストレージ・ユニットは、受け取ったばかりのデータ・アクセスを識別する提案記録、現リビジョン・レベル、及び符号化データ・スライスの現リビジョン・レベルが可視である(例えば、DSNのコンピューティング・デバイスによりアクセスされ得る)という表示をオープンする。提案記録をオープンすると、ストレージ・ユニットは、要求を受け取ったコンピューティング・デバイスに提案記録を送る。
例えば、ストレージ・ユニット1、3、4及び5の各々は、最初にコンピューティング・デバイスAから書き込み要求を受け取った。従って、各ストレージ・ユニットは、保留中のトランザクション92の順序付きリストと、コンピューティング・デバイスAに送られる、EDS94の可視の異なるバージョンの順序付きリストとを含む提案記録を作成する。例えば、保留中のトランザクション92-1、92-3、92-4及び92-5の順序付きリストの各々は、第1の優先順位位置にある0413のトランザクション番号(コンピューティング・デバイスAの書き込み要求に対するトランザクション番号)を含む。さらに、EDS94-1、94-3、94-4及び94-5の可視の異なるバージョンの順序付きリストの各々は、符号化データ・スライスの現リビジョン・レベル及びコンピューティング・デバイスAからの符号化データ・スライスが可視である(例えば、SU#1の場合、EDS1_1及びEDS A_1_1は可視である)という表示を含む。
例を続けると、ストレージ・ユニット#2は、最初にコンピューティング・デバイスBから書き込み要求を受け取る。従って、ストレージ・ユニット#2は、保留中のトランザクション92-2の順序付きリストと、コンピューティング・デバイスBに送られる、EDS94-4の可視の異なるバージョンの順序付きリストとを含む提案記録を作成する。例えば、保留中のトランザクション92-2の順序付きリストは、第1の優先順位位置にある0279のトランザクション番号(コンピューティング・デバイスBの書き込み要求に対するトランザクション番号)を含む。さらに、EDS94-2の可視の異なるバージョンの順序付きリストは、符号化データ・スライスの現リビジョン・レベル及びコンピューティング・デバイスBからの符号化データ・スライスが可視である(例えば、EDS A_2_1及びEDS B_2_1は視認可能である)との表示を含む。
コンピューティング・デバイスAから書き込み要求を受け取った後、ストレージ・ユニット1、3、4及び5は、コンピューティング・デバイスBから書き込み要求を受け取る。従って、各ストレージ・ユニットは、その提案記録を更新し、提案記録は、コンピューティング・デバイスAに送られる。例えば、保留中のトランザクション92-1、92-3、92-4及び92-5の順序付きリストの各々は、第2の優先順位位置にある0279のトランザクション番号(コンピューティング・デバイスBの書き込み要求に対するトランザクション番号)を含むように更新される。さらに、EDS94-1、94-3、94-4及び94-5の可視の異なるバージョンの順序付きリストの各々は、符号化データ・スライスの現リビジョン・レベル、並びにコンピューティング・デバイスA及びBからの符号化データが可視である(例えば、SU#1の場合、EDS1_1、EDS A_1_1及びEDS B1_1は視認可能である)という表示を含むように更新される。
コンピューティング・デバイスBから書き込み要求を受け取った後、ストレージ・ユニット2は、コンピューティング・デバイスAから書き込み要求を受け取る。従って、ストレージ・ユニット#2は、その提案記録を更新し、提案記録は、コンピューティング・デバイスBに送られる。例えば、保留中のトランザクション92-2の順序付きリストは、第2の優先順位位置にある0413のトランザクション番号(コンピューティング・デバイスAの書き込み要求に対するトランザクション番号)を含む。さらに、EDS94-2の可視の異なるバージョンの順序付きリストは、符号化データ・スライスの現リビジョン・レベル、並びにコンピューティング・デバイスA及びBからの符号化データが可視である(例えば、EDS2_1、EDS B_2_1及びEDS A_2_1は可視である)という表示を含む。
コンピューティング・デバイスA及びB両方から書き込み要求を受け取った後、提案記録を閉じる前、ストレージ・ユニットは、コンピューティング・デバイスCから読み取り要求を受け取る。従って、ストレージ・ユニットの各々は、読み取り要求を含むように、その提案記録を更新する。特に、各ストレージ・ユニットは、第3の優先順位位置にある読み取り要求のトランザクション番号0279を含むように、保留中のトランザクション92の順序付きリストを更新する。更新された提案記録は、コンピューティング・デバイスCに送られる。
複数の符号化データ・スライスに対する更新は、単一のトランザクションの一部として達成することができる。「アトミック操作(atomic operation)」として説明されることが多いこれらの操作は、動作中、他のいずれかのプロセスが状態を読み取ること又は変更することなく(読み取り又は変更が更新される以外に)、実行することができる。アトミック操作は、事実上、単一のステップとして実行され、複数のアルゴリズムが複数の独立したプロセスを処理する(同期を必要とすることなく共有データを更新するアルゴリズム、及び同期を必要とするアルゴリズムに対して)システムにおいて重要な属性であり得る。通常のアトミック書き込み操作は、次のように実行することができる。(1)DSプロセッサは、データ・オブジェクトと関連したメタデータに対するロックを取得する;(2)DS処理ユニットは、オブジェクトをメモリに書き込む;(3)DS処理ユニットは、データ・オブジェクトが書き込まれるコンテナについての割り当ての使用量を有するデータ・オブジェクトと関連したメタデータを更新する;(4)データ・オブジェクトと関連したメタデータの割り当ての更新に失敗した場合、データ・オブジェクトをメモリから削除する;及び(5)DS処理ユニットは、データ・オブジェクトと関連したメタデータに対するロックを解放する。
この例において、アトミック操作は、現在のトランザクションにおいて行われている全ての更新が即座に一貫性をもつことを強要し、更新中に何らかの障害が生じた場合、トランザクション全体がアボートされ、既に書き込まれたあらゆるオブジェクトがロールバックされる。関連したメタデータ更新が失敗したという理由での、既に書き込まれたデータ・オブジェクトの削除に関する非効率性に加えて、同じコンテナ内に複数の書き込みがある場合、上述したもののようなアトミック操作は、データ・オブジェクトと関連したメタデータの競合をもたらし得る。
DSNプロトコルは、単一の要素のアトミックな「compare and swap of 1 element(CAS-1)」を可能にし、ここで、アトミック・トランザクション操作で、データ・ソースをアトミックにインクリメントすることができる。複数の(任意のN個の)アトミックなcompare and swap(CAS-N)トランザクションは、DSNプロトコルの拡張を必要とし、それは、N-要素のcompare and swap(CAS-N)を可能にするように、プロトコルを用いて達成される。CAS-Nは、アトミックな読み取り可視性(visibility)を有する任意の要素間の強い一貫性を提供する。CAS-Nトランザクションは、(ソース(SOURCE)、古いリビジョン(OLD REVISION)、新しいリビジョン(NEW REVISION))の形をとる「提案(proposal)」のセットから成り、ここで、トランザクションが完了するために、各提案のリビジョンの比較をアトミックに履行しなければならず、何らかの失敗があった場合、いずれのソースの更新も行われない。これは、少なくともトランザクションの間、各データ位置に(例えば、CAS-N操作内のソースの少なくとも1つのスライスを保持する各々の関与するDSユニット上に)、完全な「トランザクション記述」(全ての提案のセット)を格納することにより、達成される。次に、進行中の(オープンの)トランザクションにおいてソースに遭遇するあらゆる読取者(reader)又は書込者(writer)は、そのソースに関して、新しいリビジョン又は古いリビジョンが可視であるかどうかを判断する前に、トランザクションの提案全体を検証しなければならない。場合によっては、このことは、クライアントが、トランザクション記述内で参照される以前は未知であったソースに対する付加的な要求の発行を必要とすることがある。CAS-Nトランザクションが完了すると、全ての参加するDSユニットからトランザクション記述を除去することができ、そうしたとき、各ソースの新しいリビジョンは可視である。
1より多い提案者(proposer)がデータ・ソースの同じリビジョン/バージョンを同時に更新しようと試みるとき、競合が生じる。この場合、提案者は、通常、同じデータ・ソース(セグメント、又はメタデータ・オブジェクトを表すデータ・ソース)を同時に更新しようと試みる2又はそれより多いDS処理ユニットである。ディストリビューテッド・ストレージ・システムにおいて強い一貫性は望ましい特性であるので、一般に、何らかの形態のコンセンサス・プロトコルが必要とされる。一般的に、システム内の全ての行為者(actor)がこうしたプロトコルに従い、強い一貫性がさらに保証される場合、複数の書込者が同じデータ・オブジェクトを更新しようと試みている場合(すなわち、「競合がある場合」)に、受理可能なように実行しながら、競合がある場合において単一のラウンドトリップでコンセンサスが達成可能であることも有利である。
Paxosのようなプロトコルは、コンセンサス問題を処理するために、アウト・オブ・バンド式プロセスを用いて区別されるクライアントを確立するために開発された。Paxosの目的は、幾つかのピア(peer)が、値に関する合意に達することである;Paxosは、あるピアが何らかの値が大多数により合意されたと信じる場合、大多数が、決して異なる値に合意しないことを保証する。プロトコルは、いずれの合意も、ノードの大多数の承認を経たものでなければならないように設計される。Paxosのアウト・オブ・バンド式プロセスは、ラウンドトリップを必要とし得るので、ディストリビューテッド・ストレージ・システムにオーバーヘッドを付加することがある。強い一貫性特性は、特定のリビジョン、又はDSNメモリ内の何らかの名称の初期的権利(initial right)(「コンテスト(contest)」と呼ばれることもある)の上書きの際に達成される。複数のDS処理ユニッは、同じDSNメモリ内に格納されたデータ・ソースの同じリビジョンを更新しようと試みる場合、同じコンテストに参加する。
「Fast Paxos」と呼ばれるPaxosの変形は、競合のない理想的な場合において単一のネットワーク・ラウンドトリップ時間(RTT)にコンセンサスを確立するのを可能にするように開発された。Fast Paxosは、一般に、(1)リーダー(leader)を選出し、(2)コンセンサスのために新しい値を提案するための別個の明確な段階を有する。提案をリーダー選出段階と組み合わせるFast Paxos変形のための提案が、以下に示される。これは、提案メタデータをリーダー選出におけるバロット(ballot)として使用することにより行われる。このFast Paxos変形は、「暗黙のリーダー選出を用いるFast Paxos(Fast Paxos with Implicit Leader Election)」(FPILE)と呼ばれる。FPILEは、保証される強い一貫性及び迅速な競合解決(典型的には、2RTT)と共に、最良の場合に単一のRTT書き込みを可能にする。
FPILEは、以下の目的を達成するように設計される:すなわち、(1)安全性(強い一貫性(読取者は受理された(accepted)値のみを見ることができる));(2)可用性(デッドロック・フリー(常に進行し得る));及び(3)性能(迅速な競合解決(平均ケースにおいて単一のラウンドトリップで))。
一般的なデータ・プロトコルは、様々な故障状態にさらされる。これらのプロトコルは、強い一貫性を提供できるが、ここで説明されるような可用性又は性能を提供しない。従来のプロトコル下では、クライアントの機能停止及びストアの停止がシステムを不確定な状態のままにすることがあり、その場合、最新の回復可能なリビジョンを判断することができないので、進行することはできない。これらのプロトコルは、クライアントが、指数バックオフの他に調整されたバックオフ機構を有さずに要求を再試行し続けることがあるという点で、不十分な競合の解決に悩まされることもある。これは、競合に遭遇した場合、長い遅延をもたらす。
FPILEの目的は、(これに限定されるものではないが)既存のプロトコルの強い一貫性の保証を維持しながら、性能及び可用性も向上させることを含む。これらの特性は、以下により詳細に論じられる。
上述のように、CAS-Nがディストリビューテッド・ストレージ・ネットワークに与える複数の有益な改善があるが、利点の一部として、オブジェクトの古いリビジョン又は新しいリビジョンのいずれかが可視であることの強い保証が挙げられる(Slicestor(IBMサーバ)の場合における、停電(例えば、W-T SSを超える停電)など)。これは、電力損失の際、インデックスのようなコンカレントな構造体が、破損がないことが常に保証されることを意味する。停電の場合、「部分的書き込み」はなく、全ての書き込みはアトミックである(図13に見られるように)。これは、クライアントが機能停止した後でも、インデックス、メタデータ及び使用が常に同期していることを意味する。
競合が存在しない場合、単一のラウンドトリップで、書き込みをユーザに確認応答することができる。これは、書き込みの待ち時間を2分の1に減らすことにより、WAN環境における性能を改善する。複数の書き込みが同じノードを更新している場合、大きな競合の発生したオブジェクト(委譲なしのインデックスへの連続的な書き込みのような)をより予測可能なかつ低遅延の方法で完了するのを可能にすることにより、競合のオーバーヘッドも低減される。インテント(intents)を用いれば、インデックス及び他の「導出された」構造体を非同期的に更新することができ、このことも、書き込みの成功を達成するためのラウンドトリップの数を減らす。
既存の及び新しく提案されたプロトコルの安全性、特性を、「強い、即時の、一貫性」の形として説明することができ、これは、多数の保証を具体化する。:PFILEは、安全性の概念において、少なくともこれらの特性を含む。
(1)読取者は、成功裡に書き込まれた、すなわち、システムにより「受理された」値のみを戻すことができる(非自明性)。多くとも1つの受理された値があることができ、そこで、受理された値は、所定のリビジョンのための提案された後継者(successor)である(安全性);
(2)全てのクライアントは、受理された値が何であるかについての決定的な最終合意を行うことができる(一貫性);
(3)成功した書き込みの後に開始された読み取りは、常に、その書き込み又はより新しい書き込みを見る(即時性、線形化可能性(linearizability)とも呼ばれる);
(4)Compare and Swap操作は、完全に失敗するか又は完全に成功するかのいずれかである(アトミック性)。
以下のセクションは、独立して動作しているクライアントの観点からプロトコル及びアルゴリズムを概説する。:
Compare and Swapアルゴリズム(書き込み/更新/削除)
書込者:
書込者は、txid、リビジョン、データを各ストアに書き込む。ストアは、同じ契約を順守し、バロット内のあらゆるテーブルについて、どのラウンドがアクティブであるかも含むことを除き、fast-casnにおいて概説された同じバロットを返す。
write(source_name, data, proposed_revision,txid, current_round, stores[],
to_rebuild, current_revision):
for i in stores.size:
//最適化:if(current_round == 0)の場合(又は、他の誰かを再構築するとき)
slice = current_round == 0 || i in to_rebuild ? get_slice(data, i) :null
ballots[i] = write(current_revision, current_round, store[i], (txid,
proposed_revision, slice)) to all W stores.
//幾つのバロットが現在のラウンドについての首位のtxidとしてのtxidを含むかを判断する
success_count = count_my_successes(ballots, current_round)
if success_count >= Threshold.WRITE:
//我々は、current_revisionを更新するために勝利した
finalize()
return Operation.SUCCESS;
else if (count_max_successes(ballots, current_round) >=Threshold.WRITE)
or contains_finalized_slice(ballots):
//この更新のために他の誰かが我々を打ち負かした、我々のスライスを除去することが安全であるとストアに伝える
withdraw_writes()
//最適化:バロットから判断できる場合、新しいデータ又はリビジョンが何であるかのヒントを与えることができる
return Operation.RETRIABLE_FAILURE
else:
//この更新のために、我々も他の誰かも決定的には勝利していない
(競合がある)
//最初に、少なくともThreshold.WRITEの成功を有するものとして決定的に除外することはできないトランザクションのセットを判断する
potential_winners = potentially_at_wt(ballots, current_round)
if potential_winners.size() == 0:
//誰もこのラウンドにおいて書き込み閾値に達することはできなかった、我々は進行するためのリーダーを決定する必要がある
excluded_candidates = [] //まだ誰も排斥されていない
leader = sloppy_leader_election(ballots, current_round,
excluded_candidates)
while leader is all inactive and below Threshold.IDA:
excluded_leaders.append(leader)
leader = sloppy_leader_election(ballots, current_round,
excluded_leaders)
//定義上、我々はアクティブなリーダーを有する(誰もいない場合、我々は依然としてアクティブである)
else if potential_winners.size() == 1:
leader = potential_winner[0] // この潜在的な勝者は、リーダー選出もすれば勝利したであろう
won the leader election
else if potential_winners.size() > 1:
//彼らが失敗したストア上で勝利した可能性があるので、我々は、これらのいずれも勝者にすることはできない
//これは、if f > min(W - WT, WT - T)の場合にのみ生じ得る
return Operation.FAILURE;
if leader == txid:
//我々はリーダーであり、次のラウンドに入る
write(data, proposed_revision, txid, (current_round + 1), stores[],{},
current_revision)
else:
//他の誰かがリーダーである
leader_successes = count_leader_successes(ballots, current_round,
leader)
if is_inactive(leader):
if (leader_successes < Threshold.IDA):
withdraw_writes()
//潜在的な勝者は、Tより下である(再構築不能)
//これは、if f > min(W - WT, WT - T)の場合にのみ生じ得る
return Operation.FAILURE;
else:
withdraw_writes()
if (leader_successes < Threshold.WRITE):
//リーダーのデータを再構築する、それらは、Threshold.IDAより上であるが、Threshold.WRITEより下である
//リーダーを有さないストアを得る
to_rebuild = {i for i in ballots.size if not
has_leader-revision(ballots[i])}
else:
//何も再構築する必要はない
to_rebuild = {}
write(leader-data, leader-revision, leader-txid, leader_round + 1,
stores[], to_rebuild, current_revision)
else:
//リーダーはアクティブである
withdraw_writes()
write(data, proposed_revision, txid, current_round /* notcurrent_round
+ 1 !!! */, stores[], {}, current_revision)
potentially_at_wt(ballots, current_round):
return all candidates whose first place votes + num_failures >=WT
/***
* 次のラウンドに進むことができる単一の候補のリーダーを返す(リーダーが誰であるかについて幾つかのクライアントが同意しないことがある分割がある場合)
*/
sloppy_leader_election(ballots, current_round, excluded_leaders):
valid_candidates = remove_excluded_leaders(ballots, current_round,
excluded_leaders)
m = get_max_first_places_in_round(ballots, current_round,
valid_candidates)
potential_leaders = {c in valid_candidates(ballots) | num_first_places(c)
== m}
return potential_leader having the highest txid
読み取り
読取者:
書込者に非常に類似している:
read():
ballots = 読取者は、最初に、単にTのslicestorsを読み取ることができる
if 少なくとも1つのファイナライズされたスライスを有するリビジョンのTのスライスの場合:
rerutn そのリビジョン
else:
WTを達成したソースがあるまで、又はどのソースもWTを達成できなくなるまで、さらに読み取り、次いで再実行する
if WTを達成するリビジョンがある場合:
それが少なくともアクティブでないWTである場合、それを返し、そうでない場合、単に再試行する
else:
if 失敗がワイルドカードであり、どのリビジョンもWTを達成したことがあり得ない場合:
前のリビジョンにフォールバックすることができる
else:
leader = sloppy_leader_election(ballots, current_round)
if all_inactive(leader)及びリーダーがWT(失敗を有する)の唯一の可能な達成者であり、リーダーがTより上である場合:
それをWTに再構築する
else:
再試行する
アルゴリズム特性
fは、失敗したストアの数とする
書込者の進行を、成功、競争者の勝利による失敗、又は競争者が協働する場合に成功する再試行と定める
クレーム1:f<=min(WT-T,W-WT)である限り、書込者は常に進行する
利用可能なWTストアより少ない場合、書込者は、明らかに成功することはできず、従って、f<=W-WTである
Aは、競争する書込者とし、首位の投票の数Aが達成されたとする。a+f<WTの場合、我々は、アルゴリズムに記述されるように新しいラウンドを安全にオープンすることができる。そうでない場合、a+f>=WTである。a>=Tの場合、我々は、単にそのリビジョンを回復することができ、我々の書き込みは失敗する。次に、a=T-1と仮定する。我々は、AがWTを達成するのは不可能であるようになることを好む。つまり、我々は:
(W - (T - 1)) - x < WT - (T - 1)となるX個の「非A」を必要とする(A-Xにおいて勝利していないストアは、AがWTを達成するために必要な残りの勝利の量より少ないことが必要である)
=>
x > W - WT
次いで、必要な「非A」の最小数は、x = W - WT + 1である
次いで、最大のfは次のとおりとすることができる
f <= (W - (T - 1)) - X (A-num個の「非A」をまだ受理していないnum個のストアが必要)
f <= (W - (T - 1)) - (W - WT + 1)
f <= WT - T
s >= 3f + 1 (or W >= 4f + 1)
図14は、DSNの処理モジュールからの提案メッセージの例の模式的ブロック図である。書き込み要求は、トランザクション番号フィールド、更新したいスライス名(SN)フィールド、処理モジュールが永続値(persistent value)であることを要求している符号化データ・スライス(EDS)フィールド、及び提案の試行により表される、提案試行に従ってインクリメントされ得る提案識別子を含む。
図15の論理図に示されるように、処理モジュールは、ステップにおいて、データ・オブジェクト格納要求を受け取り、ステップ504において、少なくとも閾値数のディストリビューテッド・ストレージ(DS)ユニットについての提案メッセージ(書き込み要求)を生成する。方法は、処理モジュールが提案メッセージを閾値数のDSユニットに伝送するステップ506に引き継がれる。1つのDSユニット(閾値数のDSユニットのうちの)が別の提案を受け取っていないソース名についての提案メッセージを受け取ったとき、又は、ソース名に対する全ての以前の要求がより少ないラウンドを有していた場合、DSユニットは、要求を受け入れ、それが直近に受理された値であることを示す応答、並びに、それが見たあらゆる提案の表示を処理モジュールに返す。DS処理モジュールが、書き込み閾値のDSユニットから受理された値が、関係する最も多いラウンドに対するものであると判断した場合、その値についてコンセンサスが達成されたものとみなし、通常の一貫性保証を仮定する。この時点で、DS処理ユニットは、提案された値が、閾値数のDSストレージ・ユニットにより成功裡に受理されたこと、及び、その値が対象のソース名についての永続値になることを、要求者(requester)に通知する。
書き込み閾値数のDSユニットがコンセンサスを達成しなかった(すなわち、同じ提案メッセージが受理され、書き込み閾値数のDSユニットに対して応答が返された)場合、次に、処理モジュールは、提案メッセージ応答を調べ、他のいずれかの提案メッセージを受け取り、対象ソース名が受理されたのかどうかを判断する。提案メッセージを受け取り、閾値数のDSユニットにより対象ソース名が受理された場合、処理モジュールは、対象ソース名についての提案メッセージを伝送したサード・パーティの処理モジュールと共に、DSユニットにより受理された提案メッセージのいずれかが、ソース名の値についてのコンセンサスを達成できるかどうか判断することができる。コンセンサス値が利用可能であると判断されると、その値を再提案することができ(すなわち、その値についての提案メッセージを再び閾値数のDSユニットに伝送することができ)、その提案メッセージを生成した処理モジュールがリーダーであると判断する。
リーダーのみが、インクリメントされたラウンドを有する値の再提案を続行することができ、対象ソース名についての提案メッセージを伝送した他の全ての処理ユニットは、この時点で、失敗(すなわち、コンテストに負けたこと)を要求者に通知するように選択することができる。全ての他の処理ユニットは、ラウンドトリップを減らすために、要求者への通知に加えて、ネットワーク効率/負荷に応じて永続値を提供することができる。
場合によっては、誰も明らかなリーダーでなくても、処理モジュールは(他の全ての処理モジュールと共に)、コンセンサス値として潜在的に利用可能な2つの値があると判断することができる。この場合、潜在的なコンセンサス値の両方と関連した処理モジュールは、コンセンサス値及びリーダーを判断するために。その提案メッセージを再提案することができる。この2ラウンド・システム(第2のバロット、決選投票(runoff voting)、又はバロテージ(ballotage)としても知られる)が、コンセンサスが達成されない場合に、リーダーを選択するために使用され、最も多く投票された2つを除く全ての候補値が排除され、投票の第2のラウンドが行われる。
当業者により理解されるように、DS処理ユニットは、安全性のためにいずれかの特定の値を提案する義務はないが、上に示されるように、値を選択する際の特定のスキームにより、競合が発生するコンテストを解決するのに必要なラウンドトリップの数を大きく減らすことができる。例えば、DS処理ユニットは、提案への応答を選出におけるバロットとみなすことができる。これらのバロットから値を選択するためのスキームの幾つかの例として、最も古いタイムスタンプを有する提案を選ぶこと、又は値の決定性関数を使用することが挙げられる。さらに、DSユニットは、これらが見た提案をランク付けするように選択することができ、DS処理ユニットは、即時決選投票(instant runoff voting)(上記を参照)のようなランク付け投票スキームを使用することができる。ひとたび値が選択されると、関連したリーダーが決定され、インクリメントされたラウンドを続行し、コンテストにおけるサード・パーティ処理ユニットは、この時点で失敗するように選択するか、又は幾らかの遅延を有してその提案メッセージ自体を再試行するか、又は今の永続値及び再試行を修正することにより更新することができる。
指数バックオフを含む、及び/又はDSユニットからの情報を用いる種々のアルゴリズムを用いてこの遅延を求め、リーダーが依然としてアクティブであるかどうかを推定することができる。対象ソース名についての現在の合意された値を読み取りたいと思うDS処理ユニットは、これが読み取るあらゆる値が、それを要求者に返す前に書き込み閾値に永続されていたことを保証する必要がある。いずれの値も現在のコンテストの生じている更新においてコンセンサスを達成できないと判断することができる場合、読取者は、前のソース名の値にフォールバックすることができる。付加的な最適化として、書込者は、コンセンサスを達成した後、ソース名及び値に対する「ファイナライズ」要求を送り、値に関して、コンセンサスが達成されたことをDSユニットに通知することができる。その後で処理モジュールが対象ソース名に対する読み取り要求を伝送する処理モジュールは、ソースがファイナライズされているおかげで、値を要求者に返す前に、値に関して書き込み閾値が達成されたことを判断するための付加的な作業を行う必要はないことになる。
当業者によりさらに理解されるように、Fast Paxosは、(上述のように)トリム書き込み(Trimmed Writes)とうまく機能する。トリム書き込みシステムにおいて、幅-WT=WT-閾値を構成することは一般的であり、ファイナライズ段階は、前のスライスだけでなく、成功裡に書き込まれたスライスのスライス・コンテンツもクリーンアップする新しいクリーンアップ・メッセージ(例えば、ブーリアン・フラグを有するファイナライズ・メッセージ)を挿入する理想的な位置を提供する。このフラグは、ストアに送られたファイナライズ・メッセージの多くとも(W-WT)「上に」しか設定されない。このことは、余分の(W-WT)スライスにより利用された可能性がある過剰なデータ・ストレージを解放する。
本明細書で使用され得る場合、ビットストリーム、ストリーム、信号シーケンス等(又はその均等物)などの用語は、そのコンテンツが多数の所望のタイプ(例えば、いずれも一般に「データ」と呼ぶことができるデータ、ビデオ、スピーチ、音声等)のいずれかに対応するデジタル情報を記述するために互換的に用いられていることに留意されたい。
本明細書で使用できる場合、「実質的に」及び「約」という用語は、その対応する用語及び/又は項目間の相関性について業界で受け入れられる許容範囲を与える。そのような業界で受け入れられる許容範囲は、1パーセント未満から50パーセントまでに及び、これらに限定されるものではないが、成分値、集積回路プロセス変動、温度変動、立ち上がり及び立ち下がり時間、及び/又は熱雑音に対応する。そのような項目間の相関性は、数パーセントの差から大規模な差に及ぶ。同じく本明細書で使用できる場合、「動作可能に結合された」、「結合された」、及び/又は「結合」という用語は、項目間の直接結合、及び/又は介在する項目を介する項目間の間接結合を含み(例えば、項目は、これらに限定されるものではないが、コンポーネント、要素、回路、及び/又はモジュール)、ここで、間接結合については、介在する項目は、信号の情報を変更しないが、その電流レベル、電圧レベル、及び/又は電力レベルを調整することができる。さらに本明細書で使用できる場合、推論結合(inferred coupling)(すなわち、1つの要素が別の要素に推論によって結合される)は、「結合される」と同じように2つの項目間の直接及び間接結合を含む。さらに本明細書で使用できる場合、「動作可能」又は「動作可能に結合された」という用語は、項目が、アクティブにされたときに1つ又は複数の対応する機能を実行するための電力接続、入力、出力等のうちの1つ又は複数を含むことを示し、1つ又は複数の他の項目に推論結合することをさらに含むことができる。さらに本明細書で使用できる場合、「関連付けられた」という用語は、別個の項目、及び/又は別の項目内に埋め込まれている1つの項目の直接及び/又は間接結合を含む。
本明細書で使用できる場合、「比較して好ましい(compares favorably)」という用語は、2つ又はそれより多い項目、信号等の間の比較が望ましい関係を与えることを示す。例えば、望ましい関係が、信号1が信号2より大きい強さを有することである場合、信号1の強さが信号2の強さよりも大きいとき、又は信号2の強さが信号1の強さよりも小さいときに、好ましい比較が達成され得る。本明細書で使用し得る場合、「比較して好ましくない(compares unfavorably)」という用語は、2つ又はそれより多い項目、信号等の間の比較が所望の関係を与えないことを示す。
また本明細書で使用できる場合、「処理モジュール」、「処理回路」、及び/又は「処理ユニット」という用語は、単一の処理デバイス又は複数の処理デバイスであり得る。そのような処理デバイスは、マイクロプロセッサ、マイクロコントローラ、デジタル・シグナル・プロセッサ、マイクロコンピュータ、中央処理装置、フィールド・プログラマブル・ゲート・アレイ、プログラマブル論理デバイス、状態機械、論理回路、アナログ回路、デジタル回路、及び/又は回路のハード・コーディング及び/又は操作命令に基づいて信号(アナログ及び/又はデジタル)を操作する任意のデバイスであり得る。処理モジュール、モジュール、処理回路、及び/又は処理ユニットは、メモリ及び/又は集積メモリ要素であることができ、又はそれらをさらに含むことができ、それらは、単一のメモリ・デバイス、複数のメモリ・デバイス、及び/又は別の処理モジュール、モジュール、処理回路、及び/又は処理ユニットの組み込み回路であり得る。そのようなメモリ・デバイスは、読み出し専用メモリ、ランダム・アクセス・メモリ、揮発性メモリ、不揮発性メモリ、スタティック・メモリ、ダイナミック・メモリ、フラッシュ・メモリ、キャッシュメモリ、及び/又はデジタル情報を格納する任意のデバイスであり得る。処理モジュール、モジュール、処理回路、及び/又は処理ユニットが1つより多い処理デバイスを含む場合、処理デバイスは、中央に配置されてよく(例えば、有線及び/又は無線のバス構造を介して一緒に直接結合される)、又は分散して配置されてもよい(例えば、ローカル・エリア・ネットワー及び/又は広域ネットワークを介した間接結合によるクラウド・コンピューティング)ことに留意されたい。さらに、処理モジュール、モジュール、処理回路、及び/又は処理ユニットが、状態機械、アナログ回路、デジタル回路、及び/又は論理回路を介してその機能の1つ又は複数を実装する場合、対応する操作命令を格納するメモリ及び/又はメモリ要素は、状態機械、アナログ回路、デジタル回路、及び/又は論理回路を含む回路の内部又は外部に組み込まれ得ることに留意されたい。さらに、図の1つ又は複数に示されるステップ及び/又は機能の少なくとも幾つかに対応するハード・コード命令及び/又は操作命令を、メモリ要素が格納し、処理モジュール、モジュール、処理回路、及び/又は処理ユニットが実行することができることにも留意されたい。そのようなメモリ・デバイス又はメモリ要素は、製造品内に含まれ得る。
1つ又は複数の実施形態は、指定された機能及びその関係の性能を示す方法ステップを用いて上記に説明されている。これらの機能的な基本構成要素(functional building block)及び方法ステップの範囲及びシーケンスは、説明の便宜のために本明細書では任意に定められている。指定された機能及び関係が適切に実施される限り、代替的な範囲及びシーケンスを定めることもできる。従って、いずれのそのような代替的な範囲又はシーケンスも、特許請求される発明の範囲内にある。さらに、これらの機能的基本構成要素の範囲は、説明の便宜のために任意に定められている。特定の重要な機能が適切に実施される限り、代替的な範囲を定めることができる。同様に、フロー図のブロックは、特定の重要な機能を示すために本明細書では任意に定められ得る。
使用される範囲において、フロー図のブロックの範囲及びシーケンスは、別様に定められてもよく、依然として特定の重要な機能を実施することができる。従って、機能的基本構成要素及びフロー図のブロックの両方のそうした代替的定義は、特許請求される発明の範囲内にある。当業者であれば、本明細書における機能的基本構成要素、及び他の例示的なブロック、モジュール、及びコンポーネントは、例示されたように実装されてよく、又は個別部品、特定用途向け集積回路、適切なソフトウェアなどを実行するプロセッサ、又はこれらの任意の組み合わせによって実装されてもよいことも認識するであろう。
加えて、フロー図は、「開始」及び/又は「続行」の表示を含むことができる。「開始」及び「続行」表示は、提示されたステップを他のルーチンに任意に組み込むことができること又は別様に他のルーチンと関連して用いることできることを反映する。この文脈において、「開始」は、提示された最初のステップの始まりを示すものであり、具体的に示されていない他の活動がその前に先立っていてもよい。さらに、「続行」表示は、提示されたステップを複数回実行することができること、及び/又は具体的に示されていない他の活動がその後に続いていてもよいことを反映する。さらに、フロー図は、ステップの特定の順序を示すが、因果律が維持される条件で、他の順序も同様に可能である。
1つ又はそれ以上の実施形態は、本明細書において、1つ又は複数の態様、1つ又は複数の特徴、1つ又は複数の概念、及び/又は1つ又は複数の例を示すために使用されている。装置、製品、機械、及び/又はプロセスの物理的実施形態は、本明細書で論じられる実施形態の1つ又は複数を参照して説明される態様、特徴、概念、例等の1つ又は複数を含み得る。さらに、図ごとに、実施形態は、同じ若しくは異なる参照番号を使用することができる同じ又は類似した名前の機能、ステップ、モジュール等を組み込んでもよく、従って、それらの機能、ステップ、モジュール等は、同じ又は類似した機能、ステップ、モジュール等であってもよく、又は異なるものであってもよい。
特に記述されていない限り、本明細書に提示された図面のいずれかの図における要素への、要素からの、及び/又は要素間の信号は、アナログ又はデジタル、連続時間又は離散時間、及びシングルエンド又は差動であり得る。例えば、信号経路がシングルエンド経路として示されている場合、それは差動信号経路も表す。同様に、信号経路が差動経路として示されている場合、それはシングルエンド信号経路も表す。1つ又は複数の特定のアーキテクチャが本明細書に説明されるが、当業者により認識されるように、明確に示されていない1つ又は複数のデータ・バス、要素間の直接接続、及び/又は他の要素間の間接結合を使用する他のアーキテクチャが同様に実装されてもよい。
「モジュール」という用語は、本発明の種々の実施形態の説明で使用される。モジュールは、本明細書で説明され得るような1つ又は複数の機能を実行するための処理モジュール、機能ブロック、ハードウェア、及び/又はメモリ上に格納されたソフトウェアを含む。モジュールがハードウェアによって実装される場合、ハードウェアは、ソフトウェア及び/又はファームウェアと独立して及び/又は関連して動作することができることに留意されたい。本明細書で使用される場合、モジュールは、1つ又は複数のサブ・モジュールを含むことができ、サブ・モジュールの各々は、1つ又は複数のモジュールであり得る。
本明細書においてさらに使用し得るように、コンピュータ可読メモリは、1つ又は複数のメモリ要素を含む。メモリ要素は、別個のメモリ・デバイス、複数のメモリ・デバイス、又はメモリ・デバイス内のメモリ位置の集合とすることができる。このようなメモリ・デバイスは、読出し専用メモリ、ランダム・アクセス・メモリ、揮発性メモリ、不揮発性メモリ、静的メモリ、動的メモリ、フラッシュ・メモリ、キャッシュメモリ、及び/又はデジタル情報を格納するあらゆるデバイスとすることができる。メモリ・デバイスは、固体メモリ、ハードドライブメモリ、クラウドメモリ、サムドライブ、サーバメモリ、コンピューティング・デバイスメモリ、及び/又はデジタル情報を格納するための他の物理媒体の形態とすることができる。
本発明の種々の機能及び特徴の特定の組み合わせが本明細書で明示的に説明されているが、これらの特徴及び機能の他の組み合わせも同様に可能である。本発明は、本明細書に開示された特定の例により限定されるものではなく、これらの他の組み合わせを明白に組み込む。
1~5:ストレージ・ユニット
10:分散又はディストリビューテッド・ストレージ・ネットワーク(DSN)
12~16、A、B、C:コンピューティング・デバイス
18:管理ユニット
20:完全性処理ユニット
22:DSNメモリ
24:ネットワーク
26:コンピューティング・コア
30~33:ネットワーク・インターフェース
34:クライアント・モジュール
36:ストレージ・ユニット
40:データ・オブジェクト
50:処理モジュール
52:メモリ・コントローラ
54:メイン・メモリ
55:ビデオ・グラフィック処理ユニット
56:入力/出力(IO)コントローラ
58:周辺コンポーネント相互接続(PCI)インターフェース
60:IOインターフェース・モジュール
62:IOデバイス・インターフェース・モジュール
64:読み出し専用メモリ(ROM)基本入出力システム(BIOS)
66:ユニバーサル・シリアル・バス(USB)インターフェース・モジュール
68:ホスト・バス・アダプタ(HBA)インターフェース・モジュール
70:ネットワーク・インターフェース・モジュール
72:フラッシュ・インターフェース・モジュール
74:ハード・ドライブ・インターフェース・モジュール
76:DSNインターフェース・モジュール
80:スライス名
90、90-1~90-5:提案記録
92、92-1~92-5:保留中のトランザクション
94、94-1~94-5:符号化データ・スライス(EDS)
96、96-1~96-5、100、100-1~100-5:書き込み要求
98:符号化データ・スライス
102、102-1~102-5:読み取り要求

Claims (8)

  1. コンピューティング・デバイスであって、
    ィストリビューテッド・ストレージ・ネットワーク(DSN)とインターフェース接続し、通信するように構成されたインターフェースと、
    操作命令を格納するメモリと、
    前記インターフェース及び前記メモリに動作可能に結合された処理モジュールと、
    を含み、前記処理モジュールは、前記操作命令に基づいて前記コンピューティング・デバイス内で動作可能なとき、
    要求中のコンピューティング・デバイスから、前記DSNを介して、データ・オブジェクトを複数のディストリビューテッド・ストレージ(DS)ユニット内に格納する要求を受け取ることと、
    前記データ・オブジェクトと関連したスライス名、永続値として要求されている前記スライス名についての符号化データ・スライス(EDS)、及び提案試行識別子を含む提案メッセージを生成することと、
    前記提案メッセージを前記複数のDSユニットに伝送することと、
    前記提案メッセージに応答して、前記複数のDSユニットから閾値数の提案メッセージ応答を受け取ることであって、前記閾値数の提案メッセージ応答のうちの1つの提案メッセージ応答は、前記複数のDSユニットのうちの1つのDSユニットから受け取られ、前記DSユニットにより直近に受理された、前記スライス名についての符号化データ・スライス(EDS)に対応し、前記複数のDSユニットのうちの前記DSユニットが他のいずれかの提案メッセージを受け取ったかどうかをさらに示し、
    前記複数のDSユニットのうちの前記DSユニットから受け取った前記閾値数の提案メッセージ応答のうちの前記提案メッセージ応答が、前記複数のDSユニットのうちの前記DSユニットにより他の提案メッセージを受け取っていないことを示すとき、前記提案メッセージ内に含まれる前記永続値として要求されている前記スライス名についての前記符号化データ・スライス(EDS)を、前記スライス名についての永続値として採用し、前記スライス名についての前記永続値を前記要求中のコンピューティング・デバイスに通知することと、
    前記複数のDSユニットのうちの前記DSユニットから受け取った前記閾値数の提案メッセージ応答のうちの前記提案メッセージ応答が、前記複数のDSユニットのうちの前記DSユニットにより、少なくとも1つの他の提案メッセージを受け取っていることを示すとき、前記複数のDSユニットからの前記閾値数の提案メッセージ応答に基づいて、前記DSユニットにより直近に受理された、前記スライス名についての符号化データ・スライス(EDS)を、前記スライス名についての前記永続値として採用し、前記スライス名についての前記永続値を前記要求中のコンピューティング・デバイスに通知することと、
    を行うように構成される、コンピューティング・デバイス。
  2. 前記永続値は、前記処理モジュールによる決定性関数の実行に基づいて決定される、請求項1に記載のコンピューティング・デバイス。
  3. 前記永続値は、前記処理モジュールにより実行されるバロット・プロセスに基づいて決定される、請求項1に記載のコンピューティング・デバイス。
  4. 前記バロット・プロセスは、前記提案メッセージと関連したタイムスタンプに基づいてバロット値を選択することを含む、請求項に記載のコンピューティング・デバイス。
  5. 前記バロット・プロセスは、2つの潜在的な永続値をもたらし、前記永続値は、前記2つの潜在的な永続値と関連した第2の処理モジュール及び第3の処理モジュールが、それぞれ、前記処理モジュールが前記閾値数の提案メッセージを受け取った後に伝送された提案メッセージを再伝送した後、前記潜在的な永続値から選択される、請求項に記載のコンピューティング・デバイス。
  6. 分散ストレージ・ネットワーク(DSN)の1つ又は複数のコンピューティング・デバイスの1つ又は複数の処理モジュールにより実行するための方法であって、前記方法は、
    要求中のコンピューティング・デバイスから、前記DSNを介して、データ・オブジェクトを複数のディストリビューテッド・ストレージ(DS)ユニット内に格納する要求を受け取ることと、
    前記データ・オブジェクトと関連したスライス名、永続値として要求されている前記スライス名についての符号化データ・スライス(EDS)、及び提案試行識別子を含む提案メッセージを生成することと、
    前記提案メッセージを前記複数のDSユニットに伝送することと、
    前記提案メッセージに応答して、前記複数のDSユニットから閾値数の提案メッセージ応答を受け取ることであって、前記閾値数の提案メッセージ応答のうちの1つの提案メッセージ応答は、前記複数のDSユニットのうちの1つのDSユニットから受け取られ、前記DSユニットにより直近に受理された、前記スライス名についての符号化データ・スライス(EDS)に対応し、前記複数のDSユニットのうちの前記DSユニットが他のいずれかの提案メッセージを受け取ったかどうかをさらに示し、
    前記複数のDSユニットのうちの前記DSユニットから受け取った前記閾値数の提案メッセージ応答のうちの前記提案メッセージ応答が、前記複数のDSユニットのうちの前記DSユニットにより他の提案メッセージを受け取っていないことを示すとき、前記提案メッセージ内に含まれる前記永続値として要求されている前記スライス名についての前記符号化データ・スライス(EDS)を、前記スライス名についての永続値として採用し、前記スライス名についての前記永続値を前記要求中のコンピューティング・デバイスに通知することと、
    前記複数のDSユニットのうちの前記DSユニットから受け取った前記閾値数の提案メッセージ応答のうちの前記提案メッセージ応答が、前記複数のDSユニットのうちの前記DSユニットにより、少なくとも1つの他の提案メッセージを受け取っていることを示すとき、前記複数のDSユニットからの前記閾値数の提案メッセージ応答に基づいて、前記DSユニットにより直近に受理された、前記スライス名についての符号化データ・スライス(EDS)を、前記スライス名についての前記永続値として採用し、前記スライス名についての前記永続値を前記要求中のコンピューティング・デバイスに通知することと、
    を含む、方法。
  7. 分散ストレージ・ネットワーク(DSN)の1つ又は複数のコンピューティング・デバイスの1つ又は複数の処理モジュールにより実行するための方法であって、前記方法は、
    コンピューティング・デバイスにより、分散ストレージ・ネットワーク(DSN)の閾値数のストレージ・ユニットに向けられたアクセス要求を受け取ることであって、前記アクセス要求は、スライス名と関連した符号化データ・スライス(EDS)についてのものであり、さらに、前記コンピューティング・デバイスは、前記閾値数のストレージ・ユニットのうちの少なくとも幾つかから1つ又複数の提案メッセージ応答を受け取り、
    前記スライス名と関連した前記符号化データ・スライス(EDS)が、前記スライス名についての永続値であるかどうかを判断することであって、前記判断することは、前記コンピューティング・デバイスが、前記閾値数のストレージ・ユニットから閾値数の提案メッセージ応答を受け取ったことに基づき、さらに、前記判断することは、前記スライス名と関連した前記符号化データ・スライス(EDS)についてコンセンサス値が決定されたことを、前記閾値数の提案メッセージ応答が示すかどうかにも基づき、
    前記スライス名と関連した前記符号化データ・スライス(EDS)が前記スライス名についての前記永続値であるとき、前記スライス名と関連した前記符号化データ・スライス(EDS)を前記アクセス要求中のコンピューティング・デバイスに伝送することと、
    を含む、方法。
  8. 前記スライス名と関連した前記符号化データ・スライス(EDS)が前記スライス名についての前記永続値でないとき、永続値を決定することができないと判断し、前記スライス名と関連した前記符号化データ・スライス(EDS)についての前に格納した符号化データ・スライス(EDS)を選択し、前記前に格納した符号化データ・スライス(EDS)を前記アクセス要求中のコンピューティング・デバイスに伝送することをさらに含む、請求項に記載の方法。
JP2019565516A 2017-06-05 2018-06-01 ディストリビューテッド・ストレージ・ネットワーク Active JP7015848B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/613,531 2017-06-05
US15/613,531 US10372381B2 (en) 2017-06-05 2017-06-05 Implicit leader election in a distributed storage network
PCT/IB2018/053932 WO2018224925A1 (en) 2017-06-05 2018-06-01 Distributed storage network

Publications (2)

Publication Number Publication Date
JP2020524324A JP2020524324A (ja) 2020-08-13
JP7015848B2 true JP7015848B2 (ja) 2022-02-03

Family

ID=64459663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019565516A Active JP7015848B2 (ja) 2017-06-05 2018-06-01 ディストリビューテッド・ストレージ・ネットワーク

Country Status (6)

Country Link
US (3) US10372381B2 (ja)
JP (1) JP7015848B2 (ja)
CN (1) CN110663031B (ja)
DE (1) DE112018001561B4 (ja)
GB (1) GB2576468B (ja)
WO (1) WO2018224925A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10372381B2 (en) * 2017-06-05 2019-08-06 International Business Machines Corporation Implicit leader election in a distributed storage network
US10671482B2 (en) * 2017-09-12 2020-06-02 Cohesity, Inc. Providing consistency in a distributed data store
CN111488333B (zh) * 2020-05-18 2023-07-11 网易(杭州)网络有限公司 数据处理方法及装置、存储介质和电子设备
CN114338695B (zh) * 2022-03-10 2022-05-24 深圳艾灵网络有限公司 基于多副本的领导者选举方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150319244A1 (en) 2014-04-30 2015-11-05 Cleversafe, Inc. Retrieving multi-generational stored data in a dispersed storage network
US20160255150A1 (en) 2015-02-27 2016-09-01 International Business Machines Corporation Storing data in a dispersed storage network
JP2016534471A (ja) 2013-10-18 2016-11-04 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited シェアード・ナッシング分散型ストレージ・システムにおけるターゲットにより駆動される独立したデータの完全性および冗長性のリカバリ

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4092732A (en) 1977-05-31 1978-05-30 International Business Machines Corporation System for recovering data stored in failed memory unit
US5485474A (en) 1988-02-25 1996-01-16 The President And Fellows Of Harvard College Scheme for information dispersal and reconstruction
US5454101A (en) 1992-09-15 1995-09-26 Universal Firmware Industries, Ltd. Data storage system with set lists which contain elements associated with parents for defining a logical hierarchy and general record pointers identifying specific data sets
US5987622A (en) 1993-12-10 1999-11-16 Tm Patents, Lp Parallel computer system including parallel storage subsystem including facility for correction of data in the event of failure of a storage device in parallel storage subsystem
US6175571B1 (en) 1994-07-22 2001-01-16 Network Peripherals, Inc. Distributed memory switching hub
US5848230A (en) 1995-05-25 1998-12-08 Tandem Computers Incorporated Continuously available computer memory systems
US5774643A (en) 1995-10-13 1998-06-30 Digital Equipment Corporation Enhanced raid write hole protection and recovery
US5809285A (en) 1995-12-21 1998-09-15 Compaq Computer Corporation Computer system having a virtual drive array controller
US6012159A (en) 1996-01-17 2000-01-04 Kencast, Inc. Method and system for error-free data transfer
US5802364A (en) 1996-04-15 1998-09-01 Sun Microsystems, Inc. Metadevice driver rename/exchange technique for a computer system incorporating a plurality of independent device drivers
US5890156A (en) 1996-05-02 1999-03-30 Alcatel Usa, Inc. Distributed redundant database
US6058454A (en) 1997-06-09 2000-05-02 International Business Machines Corporation Method and system for automatically configuring redundant arrays of disk memory devices
US6088330A (en) 1997-09-09 2000-07-11 Bruck; Joshua Reliable array of distributed computing nodes
US5991414A (en) 1997-09-12 1999-11-23 International Business Machines Corporation Method and apparatus for the secure distributed storage and retrieval of information
US6272658B1 (en) 1997-10-27 2001-08-07 Kencast, Inc. Method and system for reliable broadcasting of data files and streams
JPH11161505A (ja) 1997-12-01 1999-06-18 Matsushita Electric Ind Co Ltd メディア送出装置
JPH11167443A (ja) 1997-12-02 1999-06-22 Casio Comput Co Ltd インターフェイス装置
US6415373B1 (en) 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6374336B1 (en) 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
WO2000011554A1 (en) 1998-08-19 2000-03-02 Boris Nikolaevich Vilkov A system and method for identification of transformation of memory device addresses
US6356949B1 (en) 1999-01-29 2002-03-12 Intermec Ip Corp. Automatic data collection device that receives data output instruction from data consumer
US6609223B1 (en) 1999-04-06 2003-08-19 Kencast, Inc. Method for packet-level fec encoding, in which on a source packet-by-source packet basis, the error correction contributions of a source packet to a plurality of wildcard packets are computed, and the source packet is transmitted thereafter
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US6718361B1 (en) 2000-04-07 2004-04-06 Network Appliance Inc. Method and apparatus for reliable and scalable distribution of data files in distributed networks
DE60131900T2 (de) 2000-10-26 2008-12-04 Flood, James C. jun., Portland Verfahren und system zur verwaltung von verteilten inhalten und verwandten metadaten
US7140044B2 (en) 2000-11-13 2006-11-21 Digital Doors, Inc. Data security system and method for separation of user communities
US7146644B2 (en) 2000-11-13 2006-12-05 Digital Doors, Inc. Data security system and method responsive to electronic attacks
US8176563B2 (en) 2000-11-13 2012-05-08 DigitalDoors, Inc. Data security system and method with editor
US7103915B2 (en) 2000-11-13 2006-09-05 Digital Doors, Inc. Data security system and method
GB2369206B (en) 2000-11-18 2004-11-03 Ibm Method for rebuilding meta-data in a data storage system and a data storage system
US6785783B2 (en) 2000-11-30 2004-08-31 International Business Machines Corporation NUMA system with redundant main memory architecture
US7080101B1 (en) 2000-12-01 2006-07-18 Ncr Corp. Method and apparatus for partitioning data for storage in a database
US20020120874A1 (en) 2000-12-22 2002-08-29 Li Shu Method and system for secure exchange of messages
US6857059B2 (en) 2001-01-11 2005-02-15 Yottayotta, Inc. Storage virtualization system and methods
US20020165942A1 (en) 2001-01-29 2002-11-07 Ulrich Thomas R. Data path accelerator with variable parity, variable length, and variable extent parity groups
US20030037261A1 (en) 2001-03-26 2003-02-20 Ilumin Corporation Secured content delivery system and method
US6879596B1 (en) 2001-04-11 2005-04-12 Applied Micro Circuits Corporation System and method for systolic array sorting of information segments
US7024609B2 (en) 2001-04-20 2006-04-04 Kencast, Inc. System for protecting the transmission of live data streams, and upon reception, for reconstructing the live data streams and recording them into files
GB2377049A (en) 2001-06-30 2002-12-31 Hewlett Packard Co Billing for utilisation of a data storage array
US6944785B2 (en) 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US7636724B2 (en) 2001-08-31 2009-12-22 Peerify Technologies LLC Data storage system and method by shredding and deshredding
US7024451B2 (en) 2001-11-05 2006-04-04 Hewlett-Packard Development Company, L.P. System and method for maintaining consistent independent server-side state among collaborating servers
US7003688B1 (en) 2001-11-15 2006-02-21 Xiotech Corporation System and method for a reserved memory area shared by all redundant storage controllers
US7171493B2 (en) 2001-12-19 2007-01-30 The Charles Stark Draper Laboratory Camouflage of network traffic to resist attack
US7103824B2 (en) 2002-07-29 2006-09-05 Robert Halford Multi-dimensional data protection and mirroring method for micro level data
US7051155B2 (en) 2002-08-05 2006-05-23 Sun Microsystems, Inc. Method and system for striping data to accommodate integrity metadata
US20040122917A1 (en) 2002-12-18 2004-06-24 Menon Jaishankar Moothedath Distributed storage system for data-sharing among client computers running defferent operating system types
US7251832B2 (en) 2003-03-13 2007-07-31 Drm Technologies, Llc Secure streaming container
US7185144B2 (en) 2003-11-24 2007-02-27 Network Appliance, Inc. Semi-static distribution technique
GB0308262D0 (en) 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
GB0308264D0 (en) 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
US7415115B2 (en) 2003-05-14 2008-08-19 Broadcom Corporation Method and system for disaster recovery of data from a storage device
CN101566931B (zh) 2003-08-14 2011-05-18 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
US7899059B2 (en) 2003-11-12 2011-03-01 Agere Systems Inc. Media delivery using quality of service differentiation within a media stream
US8332483B2 (en) 2003-12-15 2012-12-11 International Business Machines Corporation Apparatus, system, and method for autonomic control of grid system resources
US7206899B2 (en) 2003-12-29 2007-04-17 Intel Corporation Method, system, and program for managing data transfer and construction
US7222133B1 (en) 2004-02-05 2007-05-22 Unisys Corporation Method for reducing database recovery time
US7240236B2 (en) 2004-03-23 2007-07-03 Archivas, Inc. Fixed content distributed data storage using permutation ring encoding
US7231578B2 (en) 2004-04-02 2007-06-12 Hitachi Global Storage Technologies Netherlands B.V. Techniques for detecting and correcting errors using multiple interleave erasure pointers
JP4446839B2 (ja) 2004-08-30 2010-04-07 株式会社日立製作所 ストレージ装置及びストレージ管理装置
US7680771B2 (en) 2004-12-20 2010-03-16 International Business Machines Corporation Apparatus, system, and method for database provisioning
US7386758B2 (en) 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
US7672930B2 (en) 2005-04-05 2010-03-02 Wal-Mart Stores, Inc. System and methods for facilitating a linear grid database with data organization by dimension
US8285878B2 (en) 2007-10-09 2012-10-09 Cleversafe, Inc. Block based access to a dispersed data storage network
US7574579B2 (en) 2005-09-30 2009-08-11 Cleversafe, Inc. Metadata management system for an information dispersed storage system
US7546427B2 (en) 2005-09-30 2009-06-09 Cleversafe, Inc. System for rebuilding dispersed data
US7574570B2 (en) 2005-09-30 2009-08-11 Cleversafe Inc Billing system for information dispersal system
US7904475B2 (en) 2007-10-09 2011-03-08 Cleversafe, Inc. Virtualized data storage vaults on a dispersed data storage network
US7953937B2 (en) 2005-09-30 2011-05-31 Cleversafe, Inc. Systems, methods, and apparatus for subdividing data for storage in a dispersed data storage grid
US8171101B2 (en) 2005-09-30 2012-05-01 Cleversafe, Inc. Smart access to a dispersed data storage network
US20070214285A1 (en) 2006-03-08 2007-09-13 Omneon Video Networks Gateway server
US8549351B2 (en) 2007-10-09 2013-10-01 Cleversafe, Inc. Pessimistic data reading in a dispersed storage network
US10372686B2 (en) 2009-12-29 2019-08-06 International Business Machines Corporation Policy-based storage in a dispersed storage network
US9152489B2 (en) 2009-12-29 2015-10-06 Cleversafe, Inc. Revision synchronization of a dispersed storage network
US10104168B2 (en) 2011-12-12 2018-10-16 International Business Machines Corporation Method for managing throughput in a distributed storage network
JP5586718B2 (ja) * 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US10020826B2 (en) * 2014-04-02 2018-07-10 International Business Machines Corporation Generating molecular encoding information for data storage
US10372381B2 (en) * 2017-06-05 2019-08-06 International Business Machines Corporation Implicit leader election in a distributed storage network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016534471A (ja) 2013-10-18 2016-11-04 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited シェアード・ナッシング分散型ストレージ・システムにおけるターゲットにより駆動される独立したデータの完全性および冗長性のリカバリ
US20150319244A1 (en) 2014-04-30 2015-11-05 Cleversafe, Inc. Retrieving multi-generational stored data in a dispersed storage network
US20160255150A1 (en) 2015-02-27 2016-09-01 International Business Machines Corporation Storing data in a dispersed storage network

Also Published As

Publication number Publication date
US10372381B2 (en) 2019-08-06
CN110663031A (zh) 2020-01-07
US20220066644A1 (en) 2022-03-03
DE112018001561B4 (de) 2021-04-08
JP2020524324A (ja) 2020-08-13
GB201918307D0 (en) 2020-01-29
US20190332273A1 (en) 2019-10-31
DE112018001561T5 (de) 2019-12-24
US20180349039A1 (en) 2018-12-06
CN110663031B (zh) 2022-12-30
US11204723B2 (en) 2021-12-21
WO2018224925A1 (en) 2018-12-13
US11620087B2 (en) 2023-04-04
GB2576468A (en) 2020-02-19
GB2576468B (en) 2020-07-08

Similar Documents

Publication Publication Date Title
JP7015848B2 (ja) ディストリビューテッド・ストレージ・ネットワーク
US10437671B2 (en) Synchronizing replicated stored data
US20190056869A1 (en) Utilizing fast memory devices to optimize different functions
US20170123848A1 (en) Multi-task processing in a distributed storage network
CN108073656A (zh) 一种数据同步方法及相关设备
JP2008516343A (ja) 冗長データストレージの再構成
US10904337B2 (en) Zone storage—resilient and efficient storage transactions
US10007438B2 (en) Method and system for achieving consensus using alternate voting strategies (AVS) with incomplete information
US10558621B2 (en) Lock stealing writes for improved reliability
US10025505B2 (en) Accessing data in a dispersed storage network during write operations
US10536525B2 (en) Consistency level driven data storage in a dispersed storage network
JP6931005B2 (ja) 一貫性を有する散在ストレージ・ネットワークにおけるデータの格納
US9998147B1 (en) Method for using write intents in a distributed storage network
JP2018524705A (ja) データ転送中にデータアクセス要求を処理するための方法及びシステム
US10157021B2 (en) Processing incomplete data access transactions
US10067998B2 (en) Distributed sync list
US10379961B2 (en) Ensuring metadata and index consistency using write intents
US10728334B1 (en) Compare-and-swap rebuilder for a distributed storage network
US20240045777A1 (en) Processing of Data Access Requests in a Storage Network
US20200311047A1 (en) Establishing distributed consensus via alternate voting strategies in a dispersed storage network
US20230214303A1 (en) Synchronized Vault Management In A Distributed Storage Network
US10956266B2 (en) Processing data access transactions in a dispersed storage network using source revision indicators
US20190079951A1 (en) Recovering from conflicts that emerge from eventually consistent operations
Hope Personal Internetworked Notary and Guardian supported by distributed data storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200609

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220124