TW201606543A - 用於使用流動分散式儲存來可靠地儲存資料的系統和方法(三) - Google Patents

用於使用流動分散式儲存來可靠地儲存資料的系統和方法(三) Download PDF

Info

Publication number
TW201606543A
TW201606543A TW104122373A TW104122373A TW201606543A TW 201606543 A TW201606543 A TW 201606543A TW 104122373 A TW104122373 A TW 104122373A TW 104122373 A TW104122373 A TW 104122373A TW 201606543 A TW201606543 A TW 201606543A
Authority
TW
Taiwan
Prior art keywords
source
data
segments
repair
storage
Prior art date
Application number
TW104122373A
Other languages
English (en)
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 TW201606543A publication Critical patent/TW201606543A/zh

Links

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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or 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/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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

實施例提供了用於使用流動分散式儲存控制將資料可靠地儲存在儲存系統內的方法。此種流動分散式儲存控制操作用於:將儲存系統內針對資料修復處理而使用的修復頻寬壓縮到在流動方案中進行操作的程度。實施例的流動分散式儲存控制邏輯單元可以採用懶惰修復策略、修復頻寬控制、大糾刪碼及/或修復佇列。流動分散式儲存控制邏輯單元的實施例可以另外地或替代地實現一種資料組織,該資料組織適於:允許修復策略避免處理大的物件,替代地,以非常精細的粒度將資料串流到儲存節點中。

Description

用於使用流動分散式儲存來可靠地儲存資料的系統和方法(三) 【相關申請的交叉引用】
本專利申請案請求享受於2014年7月9日提出申請的、名稱為「SYSTEMS AND METHODS FOR RELIABLY STORING DATA USING LIQUID DISTRIBUTED STORAGE」的共同待決的美國臨時專利申請號62/022,499、以及於2014年12月11日提出申請的、名稱為「SYSTEMS AND METHODS FOR RELIABLY STORING DATA USING LIQUID DISTRIBUTED STORAGE」的美國專利申請序號14/567,303的優先權;本案涉及於2014年12月11日與本案同時遞交的、名稱為「SYSTEMS AND METHODS FOR RELIABLY STORING DATA USING LIQUID DISTRIBUTED STORAGE」的共同待決的美國專利申請序號14/567,203、以及於2014年12月11日與本案同時遞交的、名稱為「SYSTEMS AND METHODS FOR RELIABLY STORING DATA USING LIQUID DISTRIBUTED STORAGE」的美國專利申請序號14/567,249,故以引用方式將上述申請的揭示內容併入本文。
本案涉及用於使用流動分散式儲存來可靠地儲存資料的系統和方法
在日常世界中,電子資料的建立、管理、儲存和取得已經變得幾乎無處不在。此種電子資料可以包括各種形式的資訊,例如,原始資料(例如,從感測器、監視設備、控制系統等收集的資料)、經處理的資料(例如,根據原始資料產生的度量或其他結果、資料聚合、經過濾的資料等)、產生的內容(例如,程式碼、文件、照片、視訊、音訊等)等等。此種資料可以由各種自動系統(例如,網路監視器、車載電腦系統、自動控制系統等)、由使用者設備(例如,智慧型電話、個人數位助理、個人電腦、數位照相機、平板設備等)及/或很多其他設備來產生。
不管資料的特定來源或類型,每天產生、儲存和存取大量的電子資料。因此,已經開發了諸如網路附接儲存(NAS)、儲存區域網(SAN)和基於雲端的儲存(例如,網際網路區域網(IAN)儲存系統)之類的複雜的儲存系統,以提供對大量的電子資料的儲存。此種儲存系統提供了一種配置,在該配置中複數個儲存節點用於儲存一或多個使用者/設備的電子資料,並且可以經由一或多個存取伺服器來儲存和取得該電子資料。
圖1A圖示儲存系統100A的示例性實現,其中存取伺服器110與最終使用者(EU)設備120進行通訊,以提供針對 其的儲存服務。存取伺服器110可以包括一或多個伺服器,該一或多個伺服器可在指令集的控制下操作用於:從諸如EU設備120之類的設備接收資料;對資料的儲存進行控制;及回應於來自諸如EU設備120之類的設備的請求而取得資料。因此,存取伺服器110亦與複數個(M個)儲存節點(這裡被示出為儲存節點130-1至130-M)進行通訊。儲存節點130-1至130-M可以包括提供持久儲存的儲存媒體(例如,硬碟、光碟機、固態驅動器、隨機存取記憶體(RAM)、快閃記憶體等)的同構或異構集合或陣列(例如,獨立磁碟冗餘陣列(RAID)陣列),其中電子資料由存取伺服器110儲存並且可經由存取伺服器110存取。每個此種儲存節點可以是例如商用web伺服器。或者,在一些部署中,至少一些儲存節點可以是經由網際網路來互連的個人設備。EU設備120可以包括操作用於產生、管理及/或存取電子資料的設備的任何配置。應當了解,儘管僅圖示單個此種設備,但是儲存系統100A可以操作用於對複數個設備進行服務,該複數個設備中的一些或所有設備可以包括除了被描述成「最終使用者」設備的設備之外的設備或替代被描述成「最終使用者」設備的設備。
圖1B圖示儲存系統100B的示例性實現,其中存取伺服器110-1至110-14可以與EU設備120-1至120-3中的一或多個EU設備進行通訊,以提供針對其的儲存服務。應當了解,儲存系統100B圖示上面所論述的100A的配置的替代配置,其中儘管可以如上面所描述的來體現存取伺服器、EU設備和儲存節點,但是儲存系統110B的儲存節點是以集群配置來部署的 ,示出為儲存節點集群130。在儲存系統100B的操作中,存取伺服器的集群可以存取儲存節點的集群。因此,EU設備可以以各種方式連接到各個存取伺服器,以獲得資料服務。在一些情況下,存取伺服器可以分佈在全國各地,使得無論EU設備位於何處,其皆可以存取儲存在儲存節點集群中的資料。此種配置的儲存節點亦可以在地理上進行分佈。
通常將電子資料的源塊作為物件儲存在諸如儲存系統100A和100B之類的儲存系統中。此種源塊,以及因此由儲存系統儲存的對應的物件,可以包括單獨檔、檔集合、資料分卷、資料聚合等,並且可以是非常大的(例如,在百萬位元組、千百萬位元組、百萬百萬位元組等數量級上)。物件通常劃分成被稱為片段(fragmant)的較小的區塊(例如,一個片段通常由單個符號組成),以便儲存在儲存系統中。例如,物件可以劃分成k個相等大小的片段(亦即,該等片段包括來自來源資料的連續位元組的區塊),以便儲存在儲存系統100A和100B中。k個片段之每一者片段可以例如儲存在儲存節點中的不同的儲存節點上。
在操作中,諸如儲存系統100A和100B之類的儲存系統用於以可靠和高效的方式來提供對電子資料的儲存和存取。例如,在資料寫入操作中,存取伺服器110可以操作用於:從EU設備120接受資料,根據資料來建立物件,根據物件來建立片段,並且將片段寫入儲存節點的某個子集。相應地,在資料讀取操作中,存取伺服器110可以從EU設備120接收針對所儲存的資料的部分的請求,讀取儲存在儲存節點的子集上 的片段的適當部分,重新建立物件或者物件的適當部分,提取資料的所請求的部分,並且向EU設備120提供所提取的資料。然而,單獨的儲存節點有些不可靠,因為其會間歇失效,在間歇失效的情況下,儲存在其上的資料臨時不可用,或者會永久失效,在永久失效的情況下,儲存在其上的資料永久丟失(例如,如圖1C中的儲存節點130-2的失效所表示的)。
糾刪碼(例如,tornado碼、低密度同位元碼、Reed-Solomon編碼和最大距離可分(MDS)碼)已經被用於在儲存節點失效時防止來源資料丟失。當使用諸如MDS糾刪碼之類的糾刪碼時,向物件的每個源片段(亦即,物件被劃分成的k個片段)應用糾刪編碼,以產生用於該片段的修復資料,其中所產生的修復片段與源片段是相等大小的。在儲存系統的操作中,源片段和對應的修復片段各自儲存在儲存節點中的不同的儲存節點上。
糾刪碼可以為每個源物件提供r個修復片段,由此,源物件的片段的總數n可以表示為n=k+r。因此,糾刪碼可以參數化為(nkr),其中k是源塊中源符號的數量,n是編碼符號的總數量,並且r=n-k是修複合符號的數量。MDS糾刪碼的特性是,可以從n個編碼符號中的任意k個編碼符號中恢復所有k個源符號(亦即,可以藉由取得k個片段的任何組合(源片段及/或修復片段)來取得源塊的電子資料)。儘管提供了資料可靠性,但是應當了解,當期望資料不可用時(例如,片段由於失效的儲存節點而不可用),為了重新建立缺失的資料,必須存取k個片段來重新建立該缺失的資料(亦即 ,必須存取資料量的k倍來重新建立期望的但缺失的資料)。這會導致針對於諸如通訊頻寬、計算資源等資源使用的低效率。
在提供對電子資料的可靠儲存中,諸如實現了對資料進行糾刪編碼的儲存系統100A和100B之類的儲存系統(例如,操作用於提供修復伺服器功能的、圖1C的存取伺服器110),具有在後臺執行的修復程序或策略,以決定針對於物件可用的片段數量(例如,為了偵測例如由於失效的儲存節點而缺失一或多個片段的物件)。對於具有某種程度的缺失片段的物件(例如,在可用片段的數量接近k時),儲存系統修復程序的邏輯單元將讀取該物件的k個剩餘片段,並且重新建立物件並向儲存系統寫入另外的片段(例如,在儲存節點中保持可用的其他儲存節點上)。通常,根據此種修復策略,最少的片段可用的物件是在具有更多片段可用的物件之前首先進行修復的物件(假定物件的片段的數量相等)。
應當了解,儘管圖1C的例子將修復伺服器示出為由存取伺服器110來實現,但是可以用各種配置來提供可操作用於提供本文的修復服務的修復伺服器。例如,根據實施例,可以與儲存系統的存取伺服器分開地提供一或多個修復伺服器。舉另一個例子,修復伺服器和或存取伺服器可以由儲存節點130-1至130-M來實現。
前面提到的間歇的節點失效遠比永久的節點失效典型(例如,90%的節點失效是間歇的),並且恢復在該等節點上臨時不可用的資料不需要修復策略,因為最終當節點回到 線上時,該資料將變得再次可用。因此,當片段變得不可用時,修復程序可以在某一時間段T內(例如,間歇失效閥值時間)偵測並延遲修復資料,以決定失效是間歇的還是永久的。
已經針對儲存系統實現的糾刪碼解決方案是小糾刪碼解決方案,因為其適於相對快速地重新建立缺失的來源資料。若n<<M,則(nkr)糾刪碼解決方案被稱為是小糾刪碼解決方案(亦即,對於每個源物件,在儲存節點的一小部分處存在片段)。此種小糾刪碼配置(例如,k=10)大體包括對應地小數量的修復片段(例如,r=4,因此n=14)。因此,對於小糾刪碼解決方案,使用反應式(reactive)修復策略是有益的(亦即,當物件的片段由於永久的節點失效而丟失時,則修復策略根據片段的總數量n(非常接近於為了恢復資料而需要的片段的最小數量k),立即或儘快用另一個片段來替換丟失的片段)。由於每個節點上儲存了大量的資料(通常多個百萬百萬位元組),當節點永久失效時,包括儲存在該節點上的片段的所有資料通常需要被替換,因此在節點永久失效之後,修復程序讀取並寫入大量的資料。此種對大量資料的讀取和寫入大體導致由修復策略消耗儲存系統中的大量頻寬,並且,當與反應式修復策略結合時,會導致儲存系統頻寬使用的破壞性尖峰(例如,延遲或阻止由儲存系統進行的主要資料存取服務)。亦即,針對小糾刪碼配置而實現的修復策略由此可能表現得有些不穩定,在試圖立即修復資料(在決定片段由於永久失效的節點而不可用後)的時間段 內,該修復策略使用大量的頻寬。
儘管增加用於特定源物件的片段的數量k,從而減小片段的大小是可能的,但是大體認為針對小糾刪碼實現該操作不是令人滿意的解決方案。對於現有的小糾刪碼解決方案來說,隨著源片段的數量k增加,使用已被認為是不當的反應式修復策略,需要修復的資料的總數量與k成比例增長。
與小糾刪碼及其對應的反應式修復策略的典型使用相關聯的進一步的複合缺點是,該等解決方案往往對間歇失效閥值T(用於決定片段的間歇不可用和永久不可用)高度敏感。隨著T減小,針對更大數量的片段(例如,可能包括在短時間內其本身將變得再次可用的、較大數量的片段)來實現修復策略,從而增加了由修復程序消耗的儲存系統頻寬並且留出更少的頻寬可用於儲存系統的主要操作。然而,隨著T增加,由於超出資料恢復所要求的k個片段相對少的片段可用(例如,在時間T中另外的片段可能丟失,從而阻止資料恢復),因此小糾刪碼的彈性和可靠性有風險。
根據本案內容的實施例,提供了一種用於存取源物件的來源資料的方法,該源物件儲存成跨越儲存系統的多個儲存節點分佈的多個片段,其中該多個片段中的一或多個片段包括該源物件的冗餘資料。實施例的該方法包括:從該多個儲存節點中的複數個儲存節點讀取該多個片段中的複數個片段的資料,以存取該來源資料的請求的部分,其中該多個片段中的至少一個片段的資料是由該多個儲存節點使用資料 組織來儲存的,該資料組織連結來自該源物件的多個源塊,以便在該源物件的該多個片段中的複數個片段之每一者片段中包括每個源塊的符號。實施例的該方法亦包括:根據從該複數個儲存節點讀取的該複數個片段的該資料,對該來源資料的該部分進行糾刪解碼。
根據本案內容的另外的實施例,提供了一種用於存取源物件的來源資料的裝置,該源物件儲存成跨越儲存系統的多個儲存節點分佈的多個片段,其中該多個片段中的一或多個片段包括該源物件的冗餘資料。實施例的該裝置包括:一或多個資料處理器;及一或多個包含程式碼的非暫時性電腦可讀取儲存媒體,該程式碼被配置為使該一或多個資料處理器執行操作。實施例的該操作包括:從該多個儲存節點中的複數個儲存節點讀取該多個片段中的複數個片段的資料,以存取該來源資料的請求的部分,其中該多個片段中的至少一個片段的資料是由該多個儲存節點使用資料組織來儲存的,該資料組織連結來自該源物件的多個源塊,以便在該源物件的該多個片段中的複數個片段之每一者片段中包括每個源塊的符號。實施例的該操作亦包括:根據從該複數個儲存節點讀取的該複數個片段的該資料,對該來源資料的該部分進行糾刪解碼。
根據本案內容的另外的實施例,一種用於存取源物件的來源資料的裝置,該源物件儲存成跨越儲存系統的多個儲存節點分佈的多個片段,其中該多個片段中的一或多個片段包括該源物件的冗餘資料。實施例的該裝置包括:用於從 該多個儲存節點中的複數個儲存節點讀取該多個片段中的複數個片段的資料,以存取該來源資料的請求的部分的手段,其中該多個片段中的至少一個片段的資料是由該多個儲存節點使用資料組織來儲存的,該資料組織連結來自該源物件的多個源塊,以便在該源物件的該多個片段中的複數個片段之每一者片段中包括每個源塊的符號。實施例的該裝置亦包括:用於根據從該複數個儲存節點讀取的該複數個片段的該資料,對該來源資料的該部分進行糾刪解碼的手段。
根據本案內容的實施例,提供了一種包括用於存取源物件的來源資料的代碼的非暫時性電腦可讀取媒體,該源物件儲存成跨越儲存系統的多個儲存節點分佈的多個片段,其中該多個片段中的一或多個片段包括該源物件的冗餘資料。實施例的該代碼使電腦執行以下操作:從該多個儲存節點中的複數個儲存節點讀取該多個片段中的複數個片段的資料,以存取該來源資料的請求的部分,其中該多個片段中的至少一個片段的資料是由該多個儲存節點使用資料組織來儲存的,該資料組織連結來自該源物件的多個源塊,以便在該源物件的該多個片段中的複數個片段之每一者片段中包括每個源塊的符號。實施例的該代碼亦使電腦執行以下操作:根據從該複數個儲存節點讀取的該複數個片段的該資料,對該來源資料的該部分進行解碼。
100A‧‧‧儲存系統
100B‧‧‧儲存系統
110‧‧‧存取伺服器
110-1‧‧‧存取伺服器
110-2‧‧‧存取伺服器
110-3‧‧‧存取伺服器
110-4‧‧‧存取伺服器
110-5‧‧‧存取伺服器
110-6‧‧‧存取伺服器
110-7‧‧‧存取伺服器
110-8‧‧‧存取伺服器
110-9‧‧‧存取伺服器
110-10‧‧‧存取伺服器
110-11‧‧‧存取伺服器
110-12‧‧‧存取伺服器
110-13‧‧‧存取伺服器
110-14‧‧‧存取伺服器
120‧‧‧EU設備
120-1‧‧‧EU設備
120-2‧‧‧EU設備
120-3‧‧‧EU設備
130‧‧‧儲存節點的集群
130-1‧‧‧儲存節點
130-2‧‧‧儲存節點
130-3‧‧‧儲存節點
130-4‧‧‧儲存節點
130-5‧‧‧儲存節點
130-6‧‧‧儲存節點
130-7‧‧‧儲存節點
130-M‧‧‧儲存節點
200‧‧‧儲存系統
201‧‧‧連接
202‧‧‧連接
210‧‧‧存取伺服器
211‧‧‧處理器
213‧‧‧輸入/輸出(I/O)單元
214‧‧‧匯流排
220‧‧‧EU設備
230-1‧‧‧儲存節點
230-2‧‧‧儲存節點
230-3‧‧‧儲存節點
230-4‧‧‧儲存節點
230-M‧‧‧儲存節點
250‧‧‧流動分散式儲存控制邏輯單元
251‧‧‧大糾刪碼邏輯單元
252‧‧‧懶惰修復策略邏輯單元
253‧‧‧修復頻寬控制邏輯單元
254‧‧‧修復佇列
255‧‧‧交錯資料組織邏輯單元
401‧‧‧股
402‧‧‧源塊
403‧‧‧股
510‧‧‧處理狀態圖
510-1‧‧‧處理狀態圖
510-2‧‧‧處理狀態圖
510-3‧‧‧處理狀態圖
510-4‧‧‧處理狀態圖
510-5‧‧‧處理狀態圖
510-6‧‧‧處理狀態圖
510-7‧‧‧處理狀態圖
510-8‧‧‧處理狀態圖
510-9‧‧‧處理狀態圖
530-1‧‧‧處理狀態圖
530-2‧‧‧處理狀態圖
530-3‧‧‧處理狀態圖
530-4‧‧‧處理狀態圖
530-5‧‧‧處理狀態圖
530-6‧‧‧處理狀態圖
530-7‧‧‧處理狀態圖
530-8‧‧‧處理狀態圖
530-9‧‧‧處理狀態圖
530-10‧‧‧處理狀態圖
530-11‧‧‧處理狀態圖
530-12‧‧‧處理狀態圖
530-13‧‧‧處理狀態圖
530-13a‧‧‧處理狀態圖
530-13b‧‧‧處理狀態圖
530-14‧‧‧處理狀態圖
530-15‧‧‧處理狀態圖
530-15a‧‧‧處理狀態圖
530-15b‧‧‧處理狀態圖
530-16‧‧‧處理狀態圖
530-17‧‧‧處理狀態圖
530-18‧‧‧處理狀態圖
530-19‧‧‧處理狀態圖
530-20‧‧‧處理狀態圖
601‧‧‧功能框
611‧‧‧框
612‧‧‧框
613‧‧‧框
614‧‧‧框
615‧‧‧框
701‧‧‧功能框
711‧‧‧框
712‧‧‧框
713‧‧‧框
714‧‧‧框
715‧‧‧框
716‧‧‧框
717‧‧‧框
718‧‧‧框
801‧‧‧框
802‧‧‧框
803‧‧‧框
804‧‧‧框
901‧‧‧框
902‧‧‧框
903‧‧‧框
904‧‧‧框
1001‧‧‧功能框
1011‧‧‧框
1012‧‧‧框
1013‧‧‧框
1014‧‧‧框
1101‧‧‧功能框
1111‧‧‧框
1112‧‧‧框
1113‧‧‧框
1114‧‧‧框
1115‧‧‧框
1116‧‧‧框
1117‧‧‧框
1401‧‧‧連接
1402‧‧‧連接
1403‧‧‧連接
1404‧‧‧連接
1420-1‧‧‧熱儲存節點
1420-2‧‧‧熱儲存節點
1420-3‧‧‧熱儲存節點
1420-4‧‧‧熱儲存節點
1420-5‧‧‧熱儲存節點
1420-6‧‧‧熱儲存節點
1420-7‧‧‧熱儲存節點
1420-N‧‧‧熱儲存節點
1520-1‧‧‧同級設備
1520-2‧‧‧同級設備
1520-3‧‧‧同級設備
1520-4‧‧‧同級設備
1520-5‧‧‧同級設備
1520-6‧‧‧同級設備
1520-7‧‧‧同級設備
1520-8‧‧‧同級設備
1520-9‧‧‧同級設備
1520-10‧‧‧同級設備
1520-11‧‧‧同級設備
1520-11‧‧‧同級設備
1520-12‧‧‧同級設備
1520-13‧‧‧同級設備
1520-14‧‧‧同級設備
圖1A-圖1C圖示儲存系統的示例性實現。
圖2A和圖2B根據本案內容的各態樣,圖示適於提供 流動分散式儲存控制的儲存系統。
圖3A根據本案內容的各態樣,圖示懶惰修復策略邏輯單元與修復頻寬控制邏輯單元合作,從而在限制修復頻寬時提供對源物件的懶惰修復,以提供穩定的修復速率的實施例的操作。
圖3B圖示與在偵測到儲存節點失效之後試圖儘快修復資料的修復處理相關聯的、在偵測到該儲存節點失效後的修復速率尖峰。
圖3C根據本案內容的各態樣,圖示反應式修復策略的操作與懶惰修復策略的操作的比較。
圖4A和圖4B根據本案內容的各態樣,圖示被劃分成源片段的來源資料的表示,其中每個源片段包括對來自源物件中的源塊的符號的連結。
圖4C圖示提供由來自來源資料的連續位元組塊構成的片段的傳統資料結構。
圖4D根據本案內容的各態樣,圖示使用一種資料組織對資料進行編碼和解碼。
圖4E根據本案內容的各態樣,圖示使用一種資料組織來對資料進行存取和映射。
圖4F和圖4G根據本案內容的各態樣,圖示使用交錯資料結構來提供串流編碼的操作。
圖4H和圖4I根據本案內容的各態樣,圖示用於使用交錯資料結構來提供串流來源資料的解碼操作。
圖4J和圖4K根據本案內容的各態樣,圖示存取伺服 器使用交錯資料結構對來源資料的恢復。
圖4L-圖4N根據本案內容的各態樣,圖示經由交錯資料組織技術來促進的修復資料的串流產生。
圖4O圖示對源物件的傳統糾刪編碼/解碼。
圖4P-圖4R根據本案內容的各態樣,圖示使用交錯資料結構來適應針對糾刪碼參數的變化的操作。
圖5A-圖5E根據本案內容的各態樣,圖示實現大糾刪碼的懶惰修復策略的操作。
圖6和圖7根據本案內容的各態樣,圖示適於實現流動分散式儲存控制以促進源物件的來源資料的修復的功能框,其中該源物件儲存成跨越儲存系統的多個儲存節點分佈的多個片段。
圖8和圖9根據本案內容的各態樣,圖示採用允許修復策略避免處理大的物件,並且替代地以非常精細的粒度將資料串流傳輸到儲存節點的資料組織技術的特徵的操作。
圖10根據本案內容的各態樣,圖示用於為來源資料提供修復資料的操作,其中該來源資料作為跨越多個儲存節點的分佈的片段資料儲存在儲存系統中。
圖11根據本案內容的各態樣,圖示用於重新分佈用於來源資料的修復資料的操作,其中該來源資料作為跨越多個儲存節點分佈的片段資料冗餘地儲存在儲存系統中。
圖12和圖13根據本案內容的各態樣,圖示針對特定的儲存系統配置的模擬結果,以提供對使用小糾刪碼的反應式修復策略的操作和使用大糾刪碼的懶惰修復策略的操作的 比較。
圖14A-圖14E根據本案內容的各態樣,圖示由EU設備經由多個連接來存取資料的部分。
圖15根據本案內容的各態樣,圖示實現交錯資料組織的同級間儲存系統的實施例。
本文使用詞語「示例性的」來表示「用作例子、實例或說明」。本文中被描述為「示例性的」任何態樣不一定解釋為比其他態樣優選或有利。
在本描述中,術語「應用」亦可以包括具有可執行內容的檔,例如:物件代碼、腳本、位元組代碼、標記語言檔和修補程式。此外,本文提到的「應用」亦可以包括本質上不可執行的檔,例如可能需要打開的文件或需要存取的其他資料檔案。
如本描述中所使用的,無論本質上是可執行的亦是不可執行的,術語「資料」和「電子資料」可以包括各種形式的資訊和內容,包括原始資料、經處理的資料、產生的內容等等。此種資料可以例如包括從感測器、監視設備、控制系統收集的資料、根據原始資料產生的度量或其他結果、資料聚合、經過濾的資料、程式碼、文件、照片、視訊、音訊等,該等可以由各種自動系統、由使用者設備及/或其他設備產生。
如本描述中所使用的,術語「片段」是指可以儲存在儲存節點處的內容的一或多個部分。例如,源物件的資料 可以劃分成複數個源片段。可以對複數個源片段進行糾刪編碼,以產生一或多個對應的修復片段,由此,修復片段包括針對源片段的冗餘資料。被糾刪編碼/解碼的資料單元是源塊,其中k是每源塊的源符號的數量,Bsize是源塊大小,Ssize是符號大小(Bsize=kSsize),n是每源塊產生的和儲存的編碼符號的數量,並且r是修複合符號的數量(r=n-k),並且其中符號是用於糾刪編碼/解碼的資料的原子單元。儘管符號大小(Ssize)對於不同的源塊可以不同,但是對於一個源塊內的所有符號,符號大小大體保持相同。類似地,儘管源符號的數量(k)、修複合符號的數量(r)和產生的編碼符號的數量對於不同的源塊可以不同,但是對於特定物件的所有源塊,該等值大體保持相同。Osize是源物件的大小,並且Fsize是片段的大小。根據實施例,k既是每源塊的源符號的數量又是每源物件的片段的數量(例如,Osize=kFsize)。
如本描述中所使用的,術語「元件」、「資料庫」、「模組」、「系統」、「邏輯單元」等意欲代表電腦相關的實體,硬體、韌體、硬體和軟體的組合、軟體或者執行中的軟體。例如,元件可以是但不限於:在處理器上執行的程序、處理器、物件、可執行程式、執行的執行緒、程式及/或電腦。經由說明的方式,在計算設備上執行的應用和計算設備二者可以是元件。一或多個元件可以常駐在執行的程序及/或執行緒內,並且元件可以集中在一個電腦上及/或分佈在兩個或兩個以上電腦之間。此外,可以經由其上儲存有各種資料結構的各種電腦可讀取媒體來執行該等元件。元件可以經 由本端的及/或遠端的程序的方式,例如根據具有一或多個資料封包的信號(例如,來自與本端系統、分散式系統中另一個元件進行互動的一個元件的資料,及/或經由信號的方式越過諸如網際網路之類的網路與其他系統進行互動的一個元件的資料)來進行通訊。
如本文所使用的,術語「使用者裝置」、「使用者設備」和「客戶端設備」包括能夠從web伺服器或其他類型的伺服器請求和接收內容並且向web伺服器或者其他類型的伺服器發送資訊的設備。在一些情況下,「使用者裝備」、「使用者設備」或「客戶端設備」可以裝備有邏輯單元,該邏輯單元允許其從儲存節點讀取部分或所有片段,以恢復部分或所有源物件。此種設備可以是固定設備或行動設備。術語「使用者裝備」、「使用者設備」和「客戶端設備」可以被互換使用。
如本文所使用的,術語「使用者」是指在使用者設備或客戶端設備上接收內容並且向網站或其他儲存基礎設施發送資訊或者從網站或其他儲存基礎設施接收資訊的個體。
根據本案內容的概念的實施例提供了針對以下問題的解決方案:在具有不可靠的節點(亦即,可以儲存資料的節點,但是會間歇失效,在間歇失效的情況下,儲存在節點上的資料臨時不可用,或者會永久失效,在永久失效的情況下,儲存在節點上的資料永久丟失)的儲存系統內,以可靠和高效的方式儲存和存取來源資料。具體而言,可以在系統和方法的各種配置中實現的本文的實施例提供了用於使用流 動分散式儲存控制將資料可靠地儲存在儲存系統內的方法。此種流動分散式儲存控制操作用於:將修復頻寬(亦即,在儲存系統內用於資料修復處理的頻寬)壓縮到在流動方案中進行操作的程度(亦即,需要修復的項目的佇列累積並且該等項目如流一樣進行修復)。
應當了解,存在用來評估儲存系統解決方案的各種度量。本文的實施例使用諸如可靠性、儲存效率、修復頻寬效率和存取效率之類的度量。
可靠性提供了對可以在不丟失任何資料的情況下儲存所有來源資料的時間量的衡量。可靠性通常由來源資料丟失的平均時間來衡量,並且通常以年為單位來衡量。根據本文的一些實施例而使用的可靠性度量是丟失任何來源資料的平均時間,本文縮寫為MTTDL。可以例如藉由計算丟失特定的來源資料片的平均時間並且用儲存系統中來源資料片的數量乘以該度量,來估計MTTDL。
儲存效率提供了對儲存系統內可以用於儲存來源資料的可用儲存部分的衡量。儲存管理負擔或者儲存冗餘度(β)是用於所有物件的修復資料的總數量除以用於儲存系統中所有物件的來源資料和修復資料的總數量的比率。因此,儲存管理負擔是所使用的儲存(其不是用於來源資料)的比例。儲存效率(其是可用於來源資料的儲存的比例)因此可以依據儲存管理負擔表示成1-β。
修復頻寬效率提供了對用於修復從失效的儲存節點丟失的資料的網路頻寬量的衡量。應當了解,修復頻寬可以 是與存取頻寬及/或儲存頻寬共享的資源(例如,均從可用的資料通訊頻寬中獲得)。因此,根據本文的實施例,提供了修復頻寬(R)的上限。
存取效率提供了對為了取得來源資料的給定部分而需要從儲存系統讀取的資料量的衡量(例如,f(A)是為了存取A位元組的來源資料而從儲存節點讀取的資料量,其中當f(A)大於A時,資料存取是低效率的)。應當了解,用於存取來源資料的時間量與存取效率有關。因此,當為了存取來源資料的特定部分而從儲存節點讀取的資料量大於來源資料的該部分時,不僅使用比存取來源資料最小需要的頻寬更多的頻寬來存取資料,而且為了存取來源資料而花費的時間量會比最小需要的時間量更長。因此,本文的實施例適於提供其中f(A)=A的實現。
節點的永久失效通常經由由λ參數化的泊松(Poisson )程序來模型化,其中λ表示每個節點根據指數分佈的失效速率。亦存在節點的間歇失效(例如,在某一小的時間間隔內不可用、但是恢復線上並再次完全可用的節點)。如先前所提到的,此種間歇的節點失效遠比永久的節點失效典型。因此,恢復該等節點上臨時不可用的資料不需要修復策略來,因為最終當節點恢復線上時該資料將變得再次可用,並且因此,當節點失效時,在決定該失效是間歇的還是永久的之前,存在某一時間段,該時間段可以用間歇失效閥值T來表示。可以向儲存系統添加節點以替換已經永久失效的節點。當替換節點對於永久失效的節點可用時,修復策略可以藉由以下 方式來修復在失效節點上已丟失片段的物件:從其他節點讀取用於物件的片段,根據所讀取的片段對該物件進行糾刪解碼,根據該物件對另外的片段進行糾刪編碼,並且將該等另外的片段儲存在替換節點上。
根據本案內容的實施例,所使用的修復頻寬度量是被規定為由修復策略用於確保所提供的MTTDL的頻寬量,由此,修復策略可以在每個時間點使用該修復頻寬量,或者更一般地,修復策略可以使用在更長的時間窗上經平均化的該修復頻寬數量。可以在即時基礎上遵守向修復程序規定的修復頻寬(亦即,修復程序可以以規定的修復頻寬,或者低於規定的修復頻寬的穩定速率來使用修復頻寬)。或者,向修復程序規定的修復頻寬可以被認為是在長的時間窗上的平均,該長的時間窗對於修復程序達到規定的MTTDL是足夠的,並且因此,修復程序可以決定例如獨立於儲存節點失效的時序的、排程的方式來使用修復頻寬。例如,修復程序可以被排程為每天定期執行一個小時或兩個小時,每週執行幾個小時,或者每月或每幾個月執行幾個小時,使得在該等時間窗上修復程序所使用的平均修復頻寬平均化為規定的修復頻寬。
修復策略可以以避免與共享相同頻寬資源的其他程序(例如,對儲存在儲存節點上的資料進行存取的存取程序,或者向儲存節點儲存資料的儲存程序)相干擾的方式,來使用規定的修復頻寬。例如,修復策略可以偵測另一程序在某一時間段內需要使用共享頻寬的很大一部分,並且修復程 序可以在該時間段內暫停或者顯著減緩其對修復頻寬的使用,並且隨後在其他程序頻寬需求減小後,再次使用更多的修復頻寬。在該例子中,修復策略針對頻寬消耗基本上執行為後臺程序(例如,回應於其他程序增加的頻寬使用,修復策略撤回其對頻寬的使用)。舉另一個例子,修復策略可以具有其何時使用修復頻寬的排程的時間,並且禁止在其他時間使用修復頻寬,其中使用修復頻寬的排程的時間是例如共享頻寬資源的其他程序通常是靜態的時間(例如,修復程序每天早上從1A.M.到3A.M.、當儲存系統記憶體在非常少的存取或儲存活動時,使用修復頻寬)。在該等情況下,修復伺服器對修復頻寬的使用在很大程度上獨立於儲存系統內資料丟失的時序(例如,永久的或間歇的儲存節點失效的時序)。
根據實施例,修復頻寬限制度量可以被認為是主要的儲存系統解決方案度量,這是因為當修復處理被這樣限制時,對從儲存系統讀取來源資料或者向儲存系統寫入來源資料的應用,存在已知的、有保證的最大影響。另一個修復傳輸量度量(儘管在實施例中也許沒有修復頻寬度量重要)是在長的時間段上由修復策略隨時間跨越網路傳送的位元組總量。
可以針對複數種情形來考慮存取效率度量。例如,可以針對以下情況來考慮存取效率度量:在用於儲存來源資料的儲存節點中不存在節點失效(間歇的或永久的)的情況;及在用於儲存來源資料的儲存節點中存在節點失效(間歇的或永久的)的情況。為了存取來源資料的組塊(chunk)而 從儲存節點讀取的資料量是存取效率的重要組成部分,因為這在很大程度上決定了能夠存取組塊的速度。理想情況下,為了存取組塊而讀取的資料量應當等於組塊的大小。
先前用於在儲存系統內儲存及存取來源資料的解決方案,主要集中在針對被決定為不可用的資料使用反應式修復策略上。在根據此種反應式修復策略的操作中,一旦永久失效的節點上丟失任何資料,資料就被排程用於修復,並且使用儘可能多的頻寬,在短脈衝中執行修復。對於對反應式修復策略的可靠性分析,通常向儲存系統中的單獨物件應用瑪律科夫(Markov)鏈分析。此種分析假定需要修復的物件的數量總是幾乎為零,若修復策略總是能夠足夠迅速地工作,則此種假定是合理的。
使用反應式修復策略,產生的修復傳輸量的總量與永久失效的節點上丟失的資料量的至少k+1倍成比例,其中k是糾刪碼所使用的源符號的數量。這是因為每次物件的片段在永久失效的節點上丟失,就由修復策略讀取該物件的至少k個片段,以產生儲存在替換節點上的至少一個修復片段。
針對用於在具有不可靠的節點的儲存系統內可靠和高效地儲存和存取來源資料的解決方案,大體不考慮大糾刪碼。修復傳輸量隨著k的值增加而增加的直覺,可能是大糾刪碼一直沒有被認為對於此種儲存系統解決方案是可行的主要原因之一。然而,如本文將示出的,此種直覺僅在使用反應式修復策略時是有效的。因此,根據本文概念而實現的實施例使用懶惰(lazy)修復策略(而不是反應式修復策略)與大 糾刪碼結合(而不是通常針對儲存系統解決方案而實現的小糾刪碼)。如下文所示出的,大糾刪碼解決方案與懶惰修復策略結合,在儲存效率、修復頻寬效率和可靠性方面達到的折衷比任何小糾刪碼解決方案可能達到的折衷更佳。此外,本文所提供的分析展示用於大糾刪碼的可行的儲存管理負擔、修復頻寬和可靠性參數之間的量化的折衷。
儘管在傳統資料組織的情況下使用大糾刪碼,大體導致對當前不可用的來源資料進行存取的高成本(例如,由於間歇的節點失效或者由於亦未被修復的永久的節點失效),但是經由使用允許對所有來源資料的高效存取的、替代的資料組織(如下文詳細描述的),本文的實施例克服了此種問題。
圖2A和2B根據本文所揭示的概念,圖示適於提供流動分散式儲存控制的儲存系統200。根據本文概念,圖2A的示例性實施例圖示具有流動分散式儲存控制邏輯單元250的存取伺服器210與EU設備220進行通訊,以提供針對其的儲存服務。來源資料(由本文實施例的儲存系統針對其提供儲存服務)可以包括資料的各種配置,包括資料區塊(例如,任意大小的源塊)及/或資料串流(例如,任意大小的源串流)。與諸如實施例的儲存系統所儲存的來源資料相對應的源物件,可以包括單獨檔、檔集合、資料分卷、資料聚合等,以及其部分,如可以作為資料區塊、資料串流以及其組合而被提供用於儲存處理(例如,編碼、寫入、讀取、解碼等)。因此,本文的源物件可以包括應用層物件(例如,具有元資料 )、複數個應用層物件、應用層物件的某一部分等等。此種源物件因此可以是非常小(例如,在幾百或幾千位元組的數量級上)、非常大(例如,在百萬位元組、千百萬位元組、百萬百萬位元組等數量級上),或者是可以分離成如本文所描述的片段或片段的部分的資料的任何部分。
存取伺服器210可以包括一或多個伺服器,該一或多個伺服器可在指令集的控制下操作用於:從諸如EU設備220之類的設備接收資料;及對資料的儲存進行控制;及回應於來自諸如EU設備220之類的設備的請求而取得資料,其中使用GET和PUT和POST命令以及位元組範圍請求的HTTP 1.1協定,是EU設備可以如何與存取伺服器210進行通訊的例子。因此,存取伺服器210亦與複數個(M個)儲存節點(這裡示出為儲存節點230-1至230-M)進行通訊,其中使用GET和PUT和POST命令以及位元組範圍請求的HTTP 1.1協定,是存取伺服器210可以如何與儲存節點230-1至230-M進行通訊的例子。在一些實施例中,儲存節點的數量M通常非常大,例如在幾百、幾千甚至幾萬的數量級上。儲存節點230-1至230-M可以包括提供持久儲存的儲存媒體(例如,硬碟、光碟機、固態驅動器、RAM、快閃記憶體、高端商用伺服器、低成本商用伺服器、個人電腦、平板設備、網際網路設備、web伺服器、SAN伺服器、NAS伺服器、IAN儲存伺服器等)的同構或異構集合或陣列(例如,RAID陣列),其中電子資料由存取伺服器210儲存並且可經由存取伺服器210存取。EU設備220可以包括操作用於產生、管理及/或存取電子資料的設備(例如,個人電 腦、平板設備、智慧型電話、個人數位助理(PDA)、照相機、網際網路設備等)的任何配置。應當了解,儘管僅圖示單個此種設備,但是儲存系統200可以操作用於對複數個設備進行服務,該複數個設備中的一些或所有設備可以包括除了被描述成「最終使用者」設備的設備之外的設備或替代被描述成「最終使用者」設備的設備。
圖2B圖示針對實施例的存取伺服器210的另外的細節。所示出的實施例的存取伺服器210包括複數個功能框,這裡示出為包括處理器211、記憶體212和輸入/輸出(I/O)單元213。儘管為簡單起見沒有在圖2B中的表示中示出,但是存取伺服器210可以包括另外的功能框,例如使用者介面、射頻(RF)模組、顯示器等,該等功能框中的一些或所有功能框可以由根據本文的概念的操作來使用。前述的功能框可以經由諸如匯流排214之類的一或多個匯流排操作地連接。匯流排214可以包括邏輯的和實體的連接,以允許所連接的單元、模組和元件進行通訊和交互動操作。
實施例的處理器111可以是能夠執行用於對存取伺服器210的操作和功能進行控制的指令的任何通用處理器或專用處理器。儘管被示出為單個單元,但是處理器211可以包括多個處理器,或者分散式處理架構。
I/O單元213可以包括及/或耦合到各種輸入/輸出元件。例如,I/O單元213可以包括及/或耦合到顯示器、揚聲器、麥克風、鍵盤、指向設備、觸摸敏感螢幕、使用者介面控制單元,以及允許使用者提供輸入命令並從存取伺服器210接 收輸出的任意其他設備或系統。另外地或替代地,I/O單元213可以包括及/或耦合到磁碟控制卡、網路介面卡(NIC)、射頻(RF)收發機,以及促進客戶端設備210的輸入及/或輸出功能的任何其他設備或系統。所示出的實施例的I/O單元213提供了用於連接201和202的介面(例如,使用前面提到的磁碟控制卡、NIC及/或RF收發機中的一或多個),從而提供了分別針對EU設備220和儲存節點230-1至230-M的資料通訊。應當了解,連接201和202可以包括適合於本文的資料通訊的各種形式的連接,例如由有線鏈路、無線鏈路、區域網路(LAN)鏈路、廣域網(WAN)鏈路、SAN鏈路、網際網路鏈路、蜂巢通訊系統鏈路、有線傳輸系統鏈路、光纖鏈路等(包括其組合)提供的連接。
記憶體212可以是任何類型的揮發性或者非揮發性記憶體,並且在一個實施例中,可以包括快閃記憶體。記憶體212可以被永久地安裝在存取伺服器210中,或者可以是可移動的記憶體單元,例如卸載式存放裝置卡。儘管被示出為單個單元,但是記憶體212可以包括多個個別記憶體及/或記憶體類型。
記憶體212可以儲存或以其他方式包括各種電腦可讀取程式碼片段,例如可以形成應用、作業系統、檔、電子文件、內容等。存取伺服器210可操作用於:使用流動分散式儲存控制,在儲存系統200內提供可靠的資料儲存。因此,所示出的實施例的記憶體212包括用於定義流動分散式儲存控制邏輯單元250的電腦可讀取程式碼片段,當該程式碼片段由 處理器(例如,處理器211)執行時,提供可如本文所描述的來操作的邏輯電路。具體而言,存取伺服器210的流動分散式儲存控制邏輯單元250在圖2B中被示出為包括可以被單獨或組合使用的複數個功能框,以提供用於在儲存系統200內可靠地儲存資料的流動分散式儲存的各個態樣。所示出的實施例的流動分散式儲存控制邏輯單元250包括大糾刪碼邏輯單元251、懶惰修復策略252、修復頻寬控制邏輯單元253和交錯資料組織邏輯單元255。應當了解,實施例可以包括所示出的功能框及/或除了彼等所示出的功能框之外的功能框的子集。
記憶體212所儲存的程式碼片段可以提供除了前面提到的流動分散式儲存控制邏輯單元250之外的應用。例如,根據本文的實施例,記憶體212可以儲存諸如儲存伺服器之類的應用,該等應用在EU設備210和儲存節點230-1至230-M之間的電子資料的仲裁管理、儲存和取得方面有用。此種儲存伺服器可以是web伺服器、NAS儲存伺服器、SAN儲存伺服器、IAN儲存伺服器等等。
除了前面提到的形成應用、作業系統、檔、電子文件、內容等的程式碼片段之外,記憶體212亦可以包括或者以其他方式提供由存取伺服器210的功能框使用的各種暫存器、緩衝區、快取記憶體、佇列和儲存單元(storage cell)。例如,記憶體212可以包括一或多個系統映射,該一或多個系統映射被保持以用於追蹤對於每個源物件來說哪些片段被儲存在哪些節點上。另外地或替代地,記憶體212可以包括儲存操作參數(例如,根據實施例而使用的糾刪碼參數)的各種暫 存器。類似地,記憶體212可以包括諸如修復佇列254之類的一或多個修復佇列,該一或多個修復佇列提供用於修復處理的源物件例項的等級。
在根據實施例的操作中,電子資料的源塊作為物件儲存在儲存系統200中。本文所使用的源物件可以是例如大致地相等大小的。源塊,以及因此由儲存系統儲存的對應的物件,可以包括單獨檔、檔集合、資料分卷、資料聚合等,並且可以是非常大的(例如,在百萬位元組、千百萬位元組、百萬百萬位元組等數量級上)。存取伺服器210可以操作用於:將到達的來源資料劃分成源物件;及保持來源資料到源物件的映射(例如,包括用於提供來源資料到物件的映射的應用或源物件映射Map:App-Obj)。存取伺服器210亦可以操作用於:對源物件進行糾刪編碼,將源物件劃分為片段,將源物件的每個片段儲存在不同的儲存節點處,以及保持源物件到片段的映射(例如,包括用於提供物件到片段的映射的物件片段映射Map:Obj-Frag)。因此,物件由存取伺服器210的邏輯單元劃分成片段,以便儲存在儲存系統中。例如,物件可以劃分成k個片段以便儲存在儲存系統200中。根據實施例,k個片段之每一者片段可以是相等大小的。在根據本文實施例的操作中,以及將經由下文的論述更好地理解的,前面提到的片段可以包括複數個符號。
根據實施例,在實現對來源資料的此種劃分的儲存中,可以存在與M個儲存節點之每一者儲存節點相關聯的唯一編碼符號ID(ESI),並且儲存在儲存節點上的所有片段是使 用與該節點相關聯的ESI來產生的。因此,可以針對每個儲存節點保持用於指示關聯的ESI的映射,並且可以針對每個源物件保持用於指示哪些片段儲存在哪些儲存節點上的映射(例如,用於指示用於每個源物件的每個片段的編碼符號ID(ESI)和儲存節點ID的Map:Obj-Frag映射)。可以針對源物件,對用於指示當儲存節點永久失效時哪些片段可用的前述映射資訊進行更新。存取伺服器210可以操作用於:決定特定的來源資料(例如,EU設備220所請求的來源資料)被包含在哪個源物件內(例如,使用Map:App-Obj映射);及藉由決定片段中的哪些片段包含相關的來源資料或修復資料(例如,使用Map:Obj-Frag映射),從儲存適當片段的儲存節點讀取資料。
在提供對資料的彈性的和可靠的儲存中,實施例的存取伺服器210針對源物件使用一或多個糾刪碼,其中產生修復片段以提供在恢復源物件的資料中有用的冗餘資料。例如,流動分散式儲存控制邏輯單元的實施例實現參數化為(nkr)的最大距離可分(MDS)糾刪碼,其中k是一個源塊中源符號的數量,n是編碼符號的總數量,並且r=n-k是修複合符號的數量。MDS糾刪碼的特性是,可以從n個編碼符號中的任意k個編碼符號中恢復所有k個源符號。在操作中,源物件的每個片段(亦即,源片段和修復片段)儲存在與源物件的其他片段不同的儲存節點處。儲存管理負擔是用於所有物件的修復資料的總數量除以用於儲存系統中所有物件的來源資料和修復資料的總數量的比率。因此,儲存管理負擔是所使用的儲存(其不是用於來源資料)的比例。
在一些情況下,來源資料不是直接地儲存在儲存系統中,僅修復資料儲存在儲存系統中。在此種情況下,對於每個物件,存在n個修復片段儲存在儲存系統中,其中大體n個片段中的任意k個片段(對於一些糾刪碼,有時使用稍大於k個片段)可以用於恢復原始物件,並且因此,儲存系統中仍然存在除了為了恢復物件而需要的k個片段之外的r=n-k個修復片段的冗餘儲存。一種替代類型的儲存管理負擔是修復資料的總數量除以來源資料的總數量的比率,亦即,對於該類型,儲存管理負擔是r/k。本文大體將r/n用作為儲存管理負擔,並且本領域技藝人士可以看到,存在從一種類型的儲存管理負擔到另一類型的儲存管理負擔的轉換。
如上面所論述的,(nkr)糾刪碼解決方案,其中(nkr)是小的常數,若n<<M,則被認為是小糾刪碼解決方案。在使用此種小糾刪碼時,源物件通常劃分成k個源片段,對該k個源片段進行糾刪編碼以產生n個編碼片段,其中n個片段中的r個片段是修復片段。隨後可以在儲存系統中的M個儲存節點中選擇n個儲存節點(例如,隨機地選擇儲存節點、選擇具有獨立失效的儲存節點等),並且將n個片段儲存到n個所選擇的儲存節點,每儲存節點儲存一個片段。傳統上針對此種小糾刪碼而實現的修復策略是反應式修復策略。
在根據反應式修復策略的操作中,當儲存節點失效時,以高頻寬來實現對缺失片段的修復。亦即,為了在另一儲存節點失效之前修復失效的儲存節點,並且為了避免源物件具有一個以上的缺失片段,修復策略使存取伺服器的修復 伺服器功能試圖儘快修復在儲存節點上丟失的片段(為了滿足根據使用小糾刪碼可獲得的小數量的修復片段或冗餘資料的可靠性目標,通常是必要的)。此種反應式修復策略是在由節點何時失效所決定的時間而不是在排程的時間,使用大量的短脈衝修復傳輸量。因此,短脈衝修復傳輸量可能發生在共享頻寬的其他程序是活躍的時間,例如存取程序從儲存系統取得資料,或者儲存程序將資料儲存到儲存系統。因此,若在與儲存節點失效所觸發的短脈衝修復傳輸量相重疊的時間段中,該等其他程序中的一個程序恰好正在活躍地使用頻寬,則該等其他程序的效能會受到負面影響(例如,被短脈衝修復傳輸量降低效能)。
儘管在流動分散式儲存解決方案的一些實施例中,可以使用如上面所描述的彼等小糾刪碼(亦即,n<<M),但是所示出的存取伺服器210的實施例實現大糾刪碼解決方案(例如,使用大糾刪碼邏輯單元251),以提供如經由下文的論述將了解的另外的益處。根據實施例,在使用此種大糾刪碼中,源物件可以劃分成k個源片段,對該k個源片段進行糾刪編碼以產生n個編碼片段,其中n個片段中的r個片段是修復片段。隨後可以將n個片段儲存到M個儲存節點,每儲存節點儲存一個片段。因此,應當了解,若n=M(亦即,對於每個源物件,存在片段儲存在所有儲存節點處)、若nM的很大一部分(例如,n≧½.M),或者若n儘管也許獨立於M而選擇但是很大(例如,n≧50或者n≧30),則(nkr)糾刪碼解決方案是大糾刪碼解決方案。例如可以根據本文實施例而 使用的示例性的大糾刪碼包括如IETF RFC 6330中所指定的、可從高通公司獲得的RAPTORQ。如本文可以使用的大糾刪碼的另外例子係包括如IETF RFC 5053中所指定的RAPTOR、IETF RFC 5170中所指定的LDPC碼、tornado碼,以及Luby變換(LT)碼。
實施例的流動分散式儲存控制邏輯單元250實現一種修復策略,以便提供對丟失片段的恢復,並且從而促進對來源資料的彈性的和可靠的儲存。例如,流動分散式儲存控制250的修復策略可以在後臺執行(例如,作為針對儲存伺服器應用的後臺工作),以監視儲存節點,進而決定哪些儲存節點已經失效,並且提供用於替換儲存在失效的儲存節點上的片段的操作。在根據實施例的操作中,可以使用物件到片段的映射(例如,前面提到的Map:Obj-Frag映射)來追蹤片段位於何處,使得當儲存節點被決定為已經永久失效時,所儲存的片段的丟失從而被辨識(例如,決定由於儲存節點的失效而不再可用的片段)。根據修復策略,可以在用於修復操作的修復佇列中追蹤該等片段或者其某一部分。
儘管對於小糾刪碼解決方案,使用反應式修復策略(亦即,當物件的片段由於永久的節點失效而丟失時,修復策略儘快用另一片段來替換丟失的片段)可能是有益的,但是實施例例如經由懶惰修復策略邏輯單元252的操作而使用懶惰修復策略(亦即,允許物件累積,由此以穩定的修復速率R來修復物件)。根據實施例,在實現懶惰修復策略中,修復速率R被設計為確保丟失任何來源資料的大的平均時間( MTTDL)。另外地或替代地,修復頻寬使用可以被排程為獨立於節點失效的時序而發生。例如,修復頻寬可以被排程為當諸如存取或儲存資料之類的其他頻寬活動為靜態時,每晚使用幾個小時。因此,修復程序可以定期在短的時間段內使用大部分或者所有的可用頻寬,以避免中斷或擾亂諸如存取或儲存資料之類的其他頻寬敏感型活動。舉另一個例子,修復程序可以被排程為僅當儲存系統上電時以及在儲存系統斷電的其他時間偶爾發生,以節約能量消耗和成本。對修復程序使用修復頻寬的排程亦可以是不定期的(亦即,被排程在諸如向存放裝置讀取或寫入資料之類的其他程序相對不活動時)。在每種情況下,可以制定修復頻寬使用,以避免中斷其他程序,其中該等其他程序在與修復程序所使用的網路路徑相同的網路路徑中的一些或部分路徑上發送或接收資料,並且亦可以獨立於諸如儲存節點失效之類的資料丟失事件的時間制定修復頻寬使用。
應當了解,實施例可以實現除了懶惰修復策略以外的修復策略,例如反應式修復策略。然而,使用反應式修復策略,產生的修復傳輸量的總量與在永久失效的儲存節點上丟失的資料量的至少k+1倍成比例。這是因為每次源物件的片段在永久失效的儲存節點上丟失,就由修復策略讀取該物件的至少k個片段,以產生儲存在替換儲存節點上的至少一個修復片段。修復傳輸量隨著k的值增加而增加的直覺,可能是大糾刪碼一直沒有被認為對於儲存系統是可行的主要原因之一。然而,根據本文的實施例,此種直覺僅當使用反應式修復 策略時是有效的,而當使用懶惰修復策略時是無效的。
在操作中,基於前面提到的系統映射,修復策略的邏輯單元可以決定對於每個源物件,哪些片段可用並且哪些片段缺失。根據實施例,針對被決定為永久丟失的彼等片段(例如,由於儲存該片段的儲存節點的永久失效)來執行修復處理。儲存節點的永久失效經常經由由λ參數化的Poisson程序來模型化,其中λ表示每個節點根據指數分佈的失效速率。
實施例的修復策略維護物件例項的修復佇列(例如,修復佇列254),其中當有可能產生並儲存用於源物件的另外的片段時(例如,當儲存用於該源物件的片段的儲存節點已經失效時,或者當新的儲存節點或者替換儲存節點已經被添加到儲存系統時,等等),用於該源物件的源物件例項被添加到修復佇列。使用懶惰修復策略實現大糾刪碼解決方案的實施例可以操作用於:當用於源物件的、預先指定的最小數量minQ>1的片段由於節點儲存失效而丟失時,向修復佇列添加該源物件例項,例如以限制修復傳輸量的總量。然而,分析表明,設置minQ=1使可靠性最大化並且使小糾刪碼解決方案和大糾刪碼解決方案兩種修復策略所使用的修復網路頻寬最小化。此外,分析表明,對於大糾刪碼解決方案,根據本文所描述的實施例實現的懶惰修復策略極少處理源物件,除非對於該物件來說許多片段缺失。因此,設置minQ>1可能實務上提供與設置minQ=1沒有不同的操作。本文的所有描述因此假定minQ=1。
每當修復佇列中存在至少一個源物件例項時,實施例的修復策略就進行工作,以修復與修復佇列中的源物件例項相對應的源物件。例如,實現修復策略的邏輯單元可以線性地遍歷修復佇列中的物件例項,讀取至少k個片段以恢復需要修復的源物件,並且產生用於源物件的另外的片段並將其儲存在一或多個替換儲存節點上。
儘管當儲存節點永久失效時,儲存在該儲存節點上的所有資料丟失,但是儲存節點可以間歇失效,在此種情況下,儲存在儲存節點上的資料僅是臨時不可用。修復策略由於間歇的儲存節點失效而修復資料會起反作用,因為用於修復的網路頻寬成本會潛在地非常高並且最終不必要。因此,根據實施例實現的修復策略操作用於:實現用於避免對間歇失效的儲存節點進行修復的邏輯單元。
因此,修復策略的邏輯單元可以使用間歇失效閥值時間T來延遲向修復佇列添加源物件的例項,以避免修復間歇缺失的資料。例如,間歇失效閥值時間T可以建立在當儲存節點失效時和當修復策略可以開始修復在該儲存節點上丟失的資料時之間的時間。根據實施例,間歇失效閥值時間可以設置為30分鐘(亦即,T=30分鐘)。在一些系統中,該值提供了用於在臨時失效和永久失效之間進行區分的合理時間量,因為通常當儲存節點失效時,大於90%的情形其僅是間歇失效並且在幾分鐘內恢復線上。間歇的儲存節點失效的原因的例子係包括軟體或韌體更新、維護、間歇的問題等等。在該等情況下,即使可能在30分鐘內偵測到永久的儲存節點失效, 但直到儲存節點被替換並且修復策略可以開始將片段儲存在替換儲存節點上之前,時間可能久得多。例如,在不那麼緊急的基礎上替換永久失效的儲存節點可能是更加成本有效的(例如,在已經偵測到永久失效之後,可能在幾天或甚至幾周之後替換儲存節點是成本有效的或實際可行的)。
應當了解,對於小糾刪碼解決方案,在保持起作用的儲存節點上可能存在多餘的容量,該多餘的容量可以用於儲存用於源物件的另外的片段,以替換在永久失效的儲存節點上的片段。因此,一旦決定儲存節點失效是永久的,就可以開始修復在永久失效的儲存節點上具有丟失的片段的源物件。然而,此種方法確實要求多餘的儲存節點容量,並且確實具有某種映射複雜性和負載均衡挑戰。例如,通常在儲存節點永久失效時添加替換儲存節點,並且以均衡的方式來使用該等替換節點會具有挑戰性。相比之下,對於根據本文實施例實現的大糾刪碼解決方案,由於在每個儲存節點上存在用於每個源物件的片段,因此當儲存節點永久失效時,在該儲存節點上丟失的片段最終由被放置到替換儲存節點上的片段來替換。
在根據實施例的操作中,由修復策略的邏輯單元對修復佇列內的源物件例項進行優先順序化。例如,對於使用相同劃分水平(亦即,相同的k值)的源物件,可以向與具有最小數量的可用片段的源物件相對應的源物件例項提供最高優先順序,並且若對應的源物件具有相等數量的可用片段,則可以向比其他源物件例項更早添加到修復佇列的源物件例 項提供更高的優先順序。另外地或替代地,在修復佇列中可以向特定的源物件提供優先的修復操作,例如以便提供更高水平的可靠性(例如,當特定的源物件被視為比其他源物件更重要時,當與特定的源物件相關聯的客戶端要接收更高的服務品質(QoS)時,等等)。例如,預設情況可以是,具有相同數量的可用片段的普通物件具有相同的優先順序,但是具有給定數量f的可用片段的較高優先順序物件,可以與具有f'個可用片段的普通優先順序物件具有修復策略內相同的優先順序,其中f'<f。例如可以藉由提供與每個物件相關聯的整數清單來指示優先順序(例如,0,1,2,3,4等可以提供用於普通優先順序物件的優先順序清單,而100,110,111,115等可以提供用於較高優先順序物件的優先順序清單,其中可以基於針對每個此種優先順序類型提供的公式而顯式地或隱式地計算,來提供該等列表),由此,解釋是,當第一物件具有k+j個可用片段(其中值j在其關聯的列表中在位置i處)時,則第一物件與具有k+j’個可用片段的第二物件(其中值j’在其關聯的列表中在位置i處)在修復策略中具有相同的優先順序。由於對於大糾刪碼解決方案存在如此多的片段,因此此種優先順序排序水平可以是非常精細的粒度。
應當意識的是,根據本文實施例的優先順序排序,適應針對源物件的各種有關情形。例如,前述的優先順序排序方案適應以下情形:一些源物件比其他源物件具有更多與其相關聯的修復片段;及某些源物件相對於其他源物件被修復程序優選,即使在該時間點源物件可能具有相同數量的可 用片段。舉另一個針對不同物件的不同類型的優先順序的例子,物件可以被分類為例如類型1或者類型2,其中規定的修復頻寬總量R劃分成R 1R 2(例如,R=R 1+R 2),並且屬於類型1的物件在修復佇列中使用最多R 1的平均修復頻寬進行處理,並且屬於類型2的物件在修復佇列中使用最多R 2的平均修復頻寬進行處理。因此,若D 1是類型1的物件的總大小並且D 2是類型2的物件的總大小,則若R 1=D 1/(D 1+D 2).R,則兩種類型的物件會具有大致相等的優先順序,並且因此,若R 1>D 1/(D 1+D 2).R,則類型1的物件將比類型2的物件具有更高的優先順序(更佳的MTTDL)。根據本文的實施例,優先順序的數量可以自然地從兩個優先順序擴展到任何數量的優先順序。
在提供流動分散式儲存控制中,本文的實施例將修復策略所使用的修復頻寬限制為可用的或者儲存系統所使用的總的全域頻寬量的一小部分。例如,將修復頻寬限制到此種程度:需要修復的物件的佇列建立,並且將物件像流一樣進行修復(亦即,到修復策略在流動方案中進行操作並且流動分析是適用的程度)。因此,如經由下文的論述將更加充分理解的,所示出的流動分散式儲存控制250的實施例包括修復頻寬控制邏輯單元253,例如可以與諸如懶惰修復策略邏輯單元252之類的修復策略邏輯單元合作進行操作,以限制修復處理中所使用的修復頻寬。
根據實施例,在提供前面提到的修復頻寬限制中所使用的修復頻寬度量,是被規定為由修復策略使用的頻寬量 ,由此,修復策略在每個時間點受該規定頻寬限制。應當了解,儘管下文的描述假定修復頻寬的此種即時定義,但是根據本文概念而提供的結果對於考慮在相關時間段上的平均修復頻寬而不是即時修復頻寬的情形是適用的。更一般而言,修復程序所使用的修復頻寬可以根據對其他程序進行的活動作出反應的定期排程,或者根據各種其他的標準而不同,只要在相關時間窗上的平均修復頻寬使用足以達到規定的MTTDL。足以達到規定的MTTDL的規定修復頻寬的平均量可以取決於儲存在儲存系統中的來源資料的數量、儲存管理負擔、資料從儲存系統丟失的速率、以及其他類似的參數,並且因此,可以回應於該等參數的變化,緩慢地調整規定的修復頻寬的平均量。
在根據實施例的操作中,被規定由修復策略使用的頻寬量可以隨時自動地調整。例如,可以基於來自儲存節點的預計的或實際的資料丟失速率及/或實現的修復策略所提供的資料冗餘度,來定期地調整頻寬量以及因此實現的修復速率R。根據實施例,修復頻寬控制邏輯單元253的邏輯單元可以操作用於:基於儲存在儲存系統中的來源資料的總數量進行計算,以決定預計的或實際的資料丟失速率、修復速率,該修復速率保證所實現的修復策略能夠對排隊的源物件例項進行處理,以便在足夠的片段丟失導致資料的永久丟失之前修復丟失的資料。
圖3A的圖圖示懶惰修復策略邏輯單元252與修復頻寬控制邏輯單元253進行合作,從而在限制修復頻寬時提供對 源物件的懶惰修復,以提供穩定的修復速率R LAZY,導致對從儲存系統200讀取來源資料和向儲存系統200寫入來源資料的應用的可接受的已知的、有保證的最大影響的實施例的操作。亦即,儘管儲存節點可以在不同的時間失效(例如,如沿著圖3中的時間軸所表示的),但是懶惰修復策略邏輯單元252操作用於:使用修復頻寬控制253所設置的修復頻寬量,來實現對源物件的修復。更一般而言,可以由修復策略以很大程度上獨立於儲存節點失效的時序的方式,來分配所使用的修復頻寬量。
前述的穩定修復速率與通常針對小糾刪碼實現的反應式修復策略的短脈衝修復速率相反,在小糾刪碼的情況下,修復頻寬使用的短脈衝的時序取決於儲存節點失效的時序,並且可能是在與諸如存取或儲存之類的其他程序的操作相干擾的時間,或者可能發生在例如儲存系統功率使用將最小化時的、計畫的靜態時段的時間。在分析與反應式修復策略的操作相關聯的修復傳輸量中,單獨的儲存節點的失效速率可以表示為λ,並且因此,儲存節點的總失效速率可以表示為λ.M。儲存在儲存系統中的源物件的總大小可以用D SRC表示,並且可能儲存在儲存系統中的、用於該等儲存物件(每源物件具有n個片段)的資料總量可以用DALL= D SRCn/k表示。在決定用於反應式修復策略的平均修復傳輸量(A FAST)中,λ.M是儲存節點失效的平均速率,D ALL/M是在失效的儲存節點上丟失的平均資料量,並且為了恢復在儲存節點上丟失的資料而需要的修復頻寬是失效的儲存節點上的資料量的k+1倍,因 此提供A FAST =λ.D ALL(k+1),如圖3B的圖中所表示的。然而,又如圖3B中所示出的,與在偵測到儲存節點失效之後試圖儘快修復資料的修復處理相關聯的、在偵測到儲存節點失效後修復速率尖峰(亦即,沿著圖3B中的時間軸所表示的、緊隨儲存節點失效而示出的實際修復速率)。應當了解,儘管為了簡化該圖,圖3B中所示出的修復頻寬使用的短脈衝被示出為具有相同的幅度,但是對應於與源節點失效相關聯而具有片段丟失的源物件的數量,此種短脈衝的幅度可以顯著地不同(亦即,例子中的R FAST1 R FAST2 R FAST3 R FAST4 可以具有不同的幅度)。為了在實現小糾刪碼和反應式修復策略的儲存系統中確保可靠性,修復頻寬R FAST 必須大於(可能顯著大於)平均修復傳輸量(例如,R FAST >A FAST )。亦即,儲存系統應當以比平均丟失速率高得多的速率來實現修復,以確保當存在儲存節點的多個失效時(例如,在短的時間段上)資料保持可恢復(例如,針對每個源物件至少k個片段可用)。
經由前述針對小糾刪碼對反應式修復策略的操作的描述,可以看到,在取代小糾刪碼而使用大糾刪碼的情況下,平均修復傳輸量將會增加。然而,根據本文實施例,使用懶惰修復策略避免了此種不當的或不可接受的修復傳輸量。在懶惰修復策略的操作中,在修復源物件的片段中可以使用適量的修復頻寬(例如,可以例如基於一或多個修復參數而被限制在預先決定的水平)。例如,可以例如基於預計的或實際的冗餘資料丟失,來計算或者也許緩慢地調整修復頻寬(並且因此,限制懶惰修復速率R LAZY)。在此種懶惰修復程 序的操作中,通常僅在用於源物件的多個、可能大量(例如,源物件片段的數量是ε.r或更多,其中例如ε=½)的片段丟失之後才修復源物件。
根據實施例,懶惰修復策略的實現操作用於:限制修復頻寬並且提供穩定的修復速率R LAZYR LAZY接近糾刪碼的冗餘度和儲存系統丟失資料的速率的乘積。亦即R LAZY βμ,其中β是糾刪碼的冗餘度和儲存系統的儲存管理負擔(亦即,β=r/n),並且μ是儲存系統資料丟失速率。由此種懶惰修復程序來修復所有源物件的時間,最多是儲存系統中可能的資料總量D ALL除以修復速率R LAZY(D ALL/R LAZY)。因此選擇修復速率R LAZY,以便使得修復程序能夠在比與修複合符號的數量r相等的源節點的數量更多的源節點丟失之前處理源物件。亦即,若在任意持續時間段t上,儲存節點失效的數量最多是r=βM,則沒有物件將丟失。若λ.Mt=r,則在時間t中預計的儲存節點失效數量是r。求解該等式,R LAZY=λ.MD ALL/r=λ.D ALL/β。因此,本文實施例可以設置RLAZY=δ.λ.D ALL/β,其中δ可以根據期望的可靠性水平來選擇(例如δ>1,其中當δ稍大於一時,MTTDL是高的,這是因為當使用大糾刪碼時r是大的)。由於所使用的修復頻寬是資料丟失速率和資料冗餘度的近似最優函數,因此此種實現提供了促進可靠的和彈性的資料儲存的高效修復操作。
圖3C的圖圖示使用小糾刪碼的反應式修復策略的操作(如圖3B中所示出的)和使用大糾刪碼的懶惰修復策略的實施例(如圖3A中所示出的)的比較。可以在所示出的例子 中看到,懶惰修復策略所使用的修復頻寬(R LAZY)不僅顯著小於反應式修復策略的峰值修復頻寬(R FAST ),並且經常甚至小於反應式修復策略的平均修復頻寬(A FAST ),但是對R LAZY進行限制,以便避免反應式修復策略的操作導致的短脈衝修復傳輸量。此種懶惰修復策略頻寬使用與儲存系統的存取和儲存策略一起很好地工作,其中儲存系統的存取和儲存策略均會試圖將總的可用頻寬中的一定量頻寬用於由客戶端應用儲存和存取資料。R LAZY的值可以是在相對長的時間段上的平均修復頻寬,並且在較短的時間間隔上修復頻寬的實際使用可以基於多個因素來調整或調節,例如避免與其他程序(例如,存取或儲存程序,或者在儲存系統斷電的時間段期間避免修復頻寬使用以節省功率)所進行的高頻寬活動的時段相干擾。
當使用傳統的資料組織方案時(亦即,將源物件劃分成連續資料的塊),存在對當前不可用的來源資料進行存取的高成本(例如,由於間歇的儲存節點失效或者由於還未被修復的永久的儲存節點失效)。例如,典型的儲存系統(例如,由可從微軟公司獲得的AZURE雲端平臺所提供的)的存取特性,提供了從儲存節點讀取f(L)位元組以存取L位元組的來源資料,其中f(L)的值取決於儲存系統的狀態。若來源資料是在可用的儲存節點上的源片段內,則系統可以從儲存節點直接地讀取來源資料,並且因此,f(L)=L,並且該存取是讀取高效的(儘管可能是從一個儲存節點進行讀取的,若該儲存節點正因任何原因而操作緩慢,則可能急劇地降低讀取效 能)。然而,若來源資料是在失效的儲存節點上的一或多個源片段內,則對資料的直接讀取失敗,並且讀取被減緩或甚至停頓(例如,等待解決該讀取)。可以從可用儲存節點上的k個其他片段中恢復來源資料,由此f(L)=kL,並且因此,該存取是k倍地讀取低效的(要注意,若L<NBsize,則針對所有儲存節點經歷較高的讀取複雜性)。應當了解,前述的讀取低效(其中在失效的儲存節點的情況下,讀取了所存取的資料量的k倍來恢復資料)針對使用大糾刪碼特別成問題,其中k是非常大的。因此,流動分散式儲存控制邏輯單元250的實施例,實現了例如可以由交錯資料組織邏輯單元255來實現的、替代的資料組織(本文中被稱為交錯資料組織),即使當使用大糾刪碼時,該資料組織亦允許對所有來源資料的高效存取。
根據實施例實現的交錯資料組織提供了對來自源物件的短源塊的連結,以便在複數個所產生的源片段之每一者源片段中包括每個源塊的符號。在實施例的交錯資料組織技術的操作中,可以將源物件視為串流,與特定大小的物件相對,由此,該串流的資料被展開成片段(例如,就像繩子展開成股(strand))。例如,源物件可以展開成複數股,其中用於該等股中的每一股的資料被作為片段寫入不同的節點。在根據實現交錯資料組織的實施例的操作中,可以在物件到達時對其進行糾刪編碼。根據實施例,源塊是物件的非常小的部分,由此,符號大小Ssize被設置為獨立於物件大小Osize的小的值,每kSsize個位元組是另一個源塊,並且該源塊劃分 成k個源符號。在操作中,對於每個源塊,可以對r個修複合符號進行糾刪編碼(n=k+r)。根據交錯資料組織的實施例,來自每個源塊的符號i隨後可以被添加到片段i,從而提供儲存在每個源片段中的物件的來源資料的交錯模式,其中每個片段可以儲存在不同的儲存節點中。對源物件的此種流式類型連結,允許修復策略避免處理大的物件,而是以非常精細的粒度將資料串流傳輸到儲存節點中(例如,BsizeNBsize的一小部分)。類似地,若來源資料的一部分丟失,則交錯資料組織的連結的源塊資料結構促進僅從其他片段讀取小部分,該部分在聚合中等於缺失資料的大小(亦即,為了恢復缺失資料而讀取的資料量是該缺失資料的原始大小,與傳統資料組織方案中的缺失資料大小的k倍相對)。
在使用前述的交錯資料結構的例子中,可以對條(stripe)j進行編碼,其中源物件正在被分解為條,其中每一條均包括源塊。在該例子中,源塊j包括源物件的位元組jkSsize...(j+1).kSsize-1。編碼符號可以表示為Enc(i,j),其中i是源符號編號(例如,ESI或者編碼符號ID),並且j是源塊編號。因此,片段i包含位元組jkSsize...(j+1).kSsize-1中的Enc(i,j)。給定來自針對至少k個值的i的片段i的Enc(i,j),則可以對前述的示例性條j進行解碼(亦即,源物件的位元組jkSsize...(j+1).kSsize-1可以被恢復)。
圖4A、圖4B、圖4D-圖4N根據本文實施例,圖示實現交錯資料結構的操作的高級表示。圖4A的圖示展示被劃分成源塊和源片段的源物件的表示,其中根據交錯資料組織的 實施例,源片段i包括對來自源物件中的源塊的符號i的連結。參考圖4B,來自源片段0(其具有ESI=0)的第i個符號、來自源片段1(其具有ESI=1)的第i個符號、來自源片段2的第i個符號(其具有ESI=2),......以及來自源片段k-1(其具有ESI=k-1)的第i個符號,用於產生用於片段kk+1,...,n-1(具有對應的ESI=kk+1,...,n-1)的第i個符號。使用源片段0,1,...,k-1的下一個符號來重複該程序,以產生用於修復片段(例如,片段kk+1,...,n-1)之每一者修復片段的下一個符號。經由前述內容可了解,來自每個源塊的第i個符號被放入片段i中。
在圖4A中所示出的交錯資料結構的實施例中,源物件大小比源塊大小大得多,其中Bsize是以位元組為單位的源塊大小,並且Osize是以位元組為單位的物件大小,並且因此,Bsize<<Osize,並且節點塊大小(亦即,典型快速讀取的大小)比符號中的位元組數量大得多,其中Ssize是以位元組為單位的符號大小,並且NBsize是以位元組為單位的節點塊大小(節點塊是從儲存節點高效讀取的資料單元,例如,500位元組至數百的千位元組,取決於特定的儲存技術),並且因此,Ssize<<NBsize
與交錯資料結構所提供的連結的配置相比,傳統的資料結構提供了由來自來源資料的連續位元組塊構成的片段(例如,源片段0=來自源塊的符號0),如圖4C的圖示中所示出的。應了解,在圖4C中所示出的資料結構中,源物件大小和源塊大小是相等的(Bsize=Osize),而符號中的位元組數 量比節點塊大小大得多(Ssize>>NBsize)。
圖4D中圖示使用交錯資料組織對資料進行編碼和解碼,其中每源塊的源符號的數量k表示為5,並且每個方格包含Ssize位元組的資料(亦即,每個方格包含資料的一個符號)。在圖4D的例子中可以看到,在圖的左邊表示的源物件中的每一列包括一個源塊(亦即,一個源塊包括k個源符號)。在圖4D中,源物件中的資料的順序用每個方格中的計數標記來表示(亦即,標記為0的方格中的資料包括源物件的最先Ssize位元組,緊接著是標記為1,2,3,...,29的方格中的資料的Ssize位元組中的每Ssize位元組)。沿著在圖的左邊表示的源物件的行移動,當物件首次儲存在儲存系統中時,使用不同源片段的符號來產生在圖的右邊示出的、每個對應的修復片段的每個修複合符號(例如,使用RaptorQ編碼)。根據實施例,對於每個源塊,亦產生了另外的修複合符號,如用所示出的實施例(圖示實施例的片段5和片段8)的片段5至片段8表示的。在所示出的例子中,對源符號編制索引從0至k-1,並且對修複合符號編制索引從kn-1。圖4D的片段0以正確的順序與來自具有編碼符號ID為0的源塊(亦即,在圖的左邊示出的、源物件中的源符號的第一行)之每一者源塊的符號相對應。對於所示出的修復片段,在表示符號的方格中所示出的第一索引值是編碼符號ID(例如,對於片段5,編碼符號ID是5),並且第二索引值是源塊編號(例如,0,1,2,3,...)。
在圖4E中所示出的實施例中,節點塊大小NBsize是 在單次讀取操作中能夠從儲存節點高效讀取的資料量,源塊中源符號的數量k被表示為5,並且表示符號的每個方格包含Ssize位元組的資料。可以在示例性的實施例中看到,與節點塊大小比源符號大小小得多的典型資料結構相反,節點塊大小NBsize可以明顯大於符號大小。因此,在該例子中,一次可以從儲存節點讀取片段的5個符號,由此,kNBsize是資料恢復塊大小。
作為交錯資料結構的示例性實現,在一些實施例中Ssize=64位元組是對於符號來說的適當大小,因為隨後在一些CPU架構中可以高效地對每個符號進行操作,因為64位元組可以是快取記憶體行的大小,或者可以是可以方便地裝入CPU暫存器中的資料量。在此種情況下,若例如源符號的數量k=1024,則Bsize=kSsize=64千位元組。Bsize的值對於一些CPU結構來說亦是方便的,因為經常存在此種情況,64千位元組的資料可以容易地裝入可用於CPU的最快的快取記憶體中,這加快了在編碼和解碼程序期間對源塊的所有符號的快速存取,實現非常快的糾刪編碼和解碼速度。例如,對於在IETF RFC 6330中所描述的RaptorQ糾刪碼的實現,在標準伺服器架構上使用單個CPU,達到了幾千百萬位元組每秒的範圍內的編碼和解碼速度。對於基於FLASH的儲存節點架構,NBsize的值可能是8千位元組,並且因此,Ssize<<NBsize,並且在該例子中資料恢復塊大小是kNBsize=8百萬位元組。在該相同例子中,源物件的大小Osize可以是1千百萬位元組,並且因此,BsizeOsize的非常小的部分(亦即,Bsize/Osize=0.000061)。
儲存系統(例如根據上面引用了可從微軟公司獲得的ZAURE雲端平臺的實現的例子而配置的、但是根據本文概念實現了交錯資料結構的儲存系統)的存取特性,提供了獨立於儲存節點的狀態、從儲存節點讀取L位元組的資料以存取L位元組的來源資料。具體而言,為了從可用的儲存節點上的任意k個片段中恢復資料,可以從來源資料的至少k個片段讀取L/k位元組,並且對L位元組的來源資料進行解碼(例如,使用RaptorQ解碼),由此,f(L)=kL/k=L。此外,根據實施例,即使一些片段不可用(例如,由於失效的儲存節點)或者例如藉由從大於k個片段讀取資料而使一些資料緩慢到達(例如,實施例可以操作用於:從大於k個片段讀取L個期望的位元組,以便即使當儲存節點已經失效或者資料在返回時以其他方式延遲時促進成功、高效的讀取),讀取亦會成功。因此,實現交錯資料結構,有助於其中讀取速度獨立於儲存節點可用性的操作,並且提供更多的可用性。此外,可以對資料進行增量編碼/解碼(例如,一次一個源塊)。此種操作可以減小編碼/解碼延遲(例如,有時與諸如RaptorQ之類的大糾刪碼相關聯的編碼/解碼延遲)並且促進最佳化的CPU/快取記憶體編碼/解碼工作流。此種增量編碼/解碼促進近似即時的資料可用性。
圖4F根據實施例,圖示使用交錯資料結構來提供如上面所描述的流編碼的操作。在圖4F的圖示中,在源物件的資料從左向右移動時,對源塊進行糾刪編碼並寫入儲存節點。由於源塊是源物件的相對小的部分,所以可以對該部分進 行編碼並串流傳輸到不同的片段,該等片段隨後可以立即寫入儲存節點(或者也許進行本端快取以收集可以被高效地寫入儲存節點的每個片段的部分)。在圖4G的圖示中,此種流編碼是在示例性儲存系統的上下文中示出的,其中資料正在從EU設備到達,由此,對每個源塊進行糾刪編碼形成被寫入儲存節點的、片段的不同部分。應當了解,儘管在圖4G中的存取伺服器和儲存節點之每一者儲存節點之間圖示單個連接,但是本文的實施例可以在存取伺服器和儲存節點之間使用多個連接以便將片段的資料上傳到儲存節點。
圖4H和圖4I根據本文的實施例,圖示使用交錯資料結構的解碼操作(分別與圖4F和圖4G的圖示相對應)。在所示出的解碼操作中,正在從儲存系統存取資料並提供給EU設備,因此,圖示中的資料正在從右向左移動。圖示的右邊展示正在讀取的片段的部分,根據所讀取的片段的部分,對期望的來源資料進行糾刪解碼以產生源塊。隨後可以向EU設備提供源塊(例如,作為源物件或者其某一部分)。經由圖4I的圖示可了解,在資料到達解碼器邏輯單元後,根據正在讀取的資料對源塊進行解碼,以便幾乎立即地提供來源資料的流(例如,一旦k個片段的至少一部分已經到達,就可以對來源資料進行解碼並串流傳輸到EU設備)。應當了解,儘管在圖4I中的存取伺服器和儲存節點之間圖示單個連接,但是本文的實施例可以在存取伺服器和儲存節點之間使用多個連接,以便從儲存節點下載片段的資料。
顯示了來源資料的存取伺服器恢復的圖4J,圖示前 面提到的、一旦k個片段的至少一部分已經到達時的來源資料的可用性。在圖4J中所示出的實施例中,源塊中源符號的數量k是5。因此,為了恢復來源資料僅需要讀取5個片段。在圖4J中所示出的實施例中,存取伺服器試圖從8個片段(亦即,片段0-7)讀取期望的資料。在圖4J中,針對正在讀取的片段之每一者片段而示出的條形表示多少資料已經從片段到達存取伺服器的首碼(prefix)。在所示出的例子中,對於片段0、片段1、片段5、片段6和片段7,首碼已經從儲存節點接收到多達至少虛線的資料。因此,針對片段7而接收的資料一旦達到虛線的水平(要了解,片段7的資料是5個中最後一個達到該閥值水平的),就可以對來源資料進行解碼。圖4K圖示在比圖4J中所表示的時間點稍晚的時間點處的來源資料的存取伺服器恢復。在圖4J中所示出的例子中,針對該等片段中的一些片段的資料的接收已經加快及/或針對該等片段中的一些其他片段的資料的接收已經減緩。不過,在虛線所表示的點處,已經接收到來自5個片段的資料(現在是片段0、片段1、片段3、片段4和片段6)。來自這5個片段的資料可以因此用於恢復來源資料。經由前述內容可了解,資料的可用性沒有停止或停頓,並且因此,即使當儲存節點已經失效(例如,儲存片段2的儲存節點)或者資料以其他方式延遲(例如,圖4J中的片段3和4的資料,或者圖4K中的片段5和7的資料)時,藉由讀取大於k個片段,亦提供了對期望資料的成功的、高效讀取。在不同片段的資料到達時,最先k個片段的資料可以用於對期望的來源資料進行解碼,從而即使當儲存節點已 經失效及/或來自一或多個儲存節點的資料延遲時,在資料恢復方面亦提供良好的速度。
圖4L圖示由實施例的交錯資料結構來促進的對修復資料的串流產生。可以從圖4L的圖形表示看到,在片段串流到達修復程序時(股401),對該等串流進行糾刪解碼以產生來源資料串流的源塊部分(源塊402),並且隨後對其進行糾刪編碼以產生片段的另外的部分(股403),其中該等片段的另外的部分隨後可以作為片段串流儲存到儲存節點。根據所示出的實施例,為了產生修復資料,從儲存節點讀取至少k個片段串流,以便修復源物件的該部分。可以對k個片段的資料進行糾刪解碼以產生源塊,並且隨後立即對其進行糾刪編碼,以產生要寫入其他的儲存節點(例如,新添加的儲存節點)的源片段及/或修復片段(例如,多達r個另外的片段)。在圖4M中圖示針對示例性儲存系統的上下文來示出的此種對片段進行讀取和解碼以恢復源塊。相應地,在圖4N中圖示在示例性儲存系統的上下文中,進行編碼以產生源片段及/或修復片段並由儲存節點對其進行儲存的例子(例如,在該圖示中,產生了源片段4和修復片段6並將其寫入儲存節點)。
圖4O圖示對源物件的傳統糾刪編碼/解碼,其中源物件劃分成連續資料的塊。經由圖4O的圖形表示可了解,當來源資料的一部分不可用時(例如,由於間歇的儲存節點失效或者由於還未被修復的永久的儲存節點失效),必須存取相對大的資料組塊、以及超過期望的資料量的資料。例如,在要從資料片段0存取來源資料的1百萬位元元組部分的情況下 ,資料片段0不可用(例如,由於儲存資料片段0的儲存節點已經失效),但是資料片段1-9和資料片段13是可用的。隨後,可以從儲存節點讀取來自資料片段1-9和資料片段13之每一者資料片段的資料的對應1百萬位元元組部分,並且應用糾刪解碼以產生來自資料片段0的來源資料的1百萬位元元組部分。然而,這要求從儲存節點讀取10百萬位元組的資料,以存取來自資料片段0的來源資料的1百萬位元元組部分。這導致對當前不可用的來源資料進行存取的高成本。這與藉由使用如圖4A、4B和圖4D-圖4N中所描述的交錯資料結構進行的糾刪編碼/解碼來促進的資料存取相反。
經由前述內容可了解,對於任何糾刪碼解決方案(包括大糾刪碼解決方案),實施例的交錯資料組織技術皆提供了出色的存取效率,以及實現了對來源資料的串流式糾刪編碼而不是典型資料組織技術的塊編碼。與交錯資料組織一起使用大糾刪碼解決方案,保持了大糾刪碼在可靠性、儲存管理負擔和修復頻寬方面相對於小糾刪碼的所有優點,而同時提供出色的存取效率。
儘管上面已經參考在儲存系統內對資料丟失提供修復,來描述了實施例的流動分散式儲存控制的操作,但是根據本文概念的操作可以應用於多種不同的情形。例如,修復策略邏輯單元和修復頻寬控制邏輯單元之間的合作,促進動態地改變各種儲存系統參數而不經歷破壞性結果。舉一個例子,在儲存系統中儲存節點的數量可以顯著地發生改變(例如,儲存節點的數量M從1200擴展到2000),由此,實現大糾 刪碼(例如,n=Mn≧¾ M,等等)、受規定的修復頻寬限制的懶惰修復策略將操作用於:以與規定的修復頻寬相對應的穩定修復速率R,隨時間重新產生用於每個源物件的片段,將片段儲存在儲存節點之每一者儲存節點上。根據本文實施例,可以類似地適應針對糾刪碼參數(nkr)中的任何參數的變化而沒有破壞性結果。
圖4P根據實施例,圖示使用交錯資料結構來適應針對糾刪碼參數的變化的操作。例如,根據本文概念,使用交錯資料結構的流式解碼和編碼,如圖4P的例子中所示出的操作可以用於在儲存系統內重新分佈資料。舉一個修復程序適應針對糾刪碼參數的變化的例子,假定儲存系統初始地包括1000個儲存節點(亦即,M=1000),並且針對修復程序使用大糾刪碼(例如,n=M=1000)。因此,在初始狀態中,源物件可以劃分成k個源片段(例如,k=750)並且對其進行糾刪編碼以提供r個修復片段(例如,r=250),使得針對任意特定的源物件,在1000個儲存節點之每一者儲存節點上儲存了全部1000個片段中的一個片段(其中n=k+r)。此後,儲存節點的數量可以增加,例如包括2000個儲存節點(亦即,M’=2000)。根據本文實施例,經由改變糾刪碼參數的中的一或多個參數並且向儲存在儲存系統中的資料應用修復程序,該修復程序的操作可以用於在添加的儲存節點上重新分佈資料。例如,可以由修復程序使用初始的糾刪碼參數(nkr)對資料進行讀取和解碼,並且由修復程序使用新的糾刪碼參數(n’;k’;r’)進行編碼和寫入。在前述的例子中,源物件的片段 的總數量n可以增加到2000(亦即,n’=2000=M’),並且kr對應地改變(例如,k’=1500,r’=500,並且n’=2000=k’+r’)。此後,使用新的糾刪碼參數(n’;k’;r’),可以使用糾刪編碼,根據來源資料來產生n’個新片段。所產生的新片段可以儲存在每個儲存節點上(亦即,在該例子中n’=M’)。在圖4Q圖示針對示例性儲存系統的上下文示出的、使用初始的糾刪碼參數對片段進行讀取和解碼。相應地,在圖4R中圖示在示例性儲存系統的上下文中,使用新的糾刪碼參數進行編碼以產生編碼片段,並且由儲存節點對產生的片段進行儲存。在儲存了使用改變的糾刪碼參數而產生的新片段後,儲存節點上曾用於對源物件的初始片段進行儲存的儲存空間可以釋放(例如,進行標記以便刪除)。在使用交錯資料組織結構的實施例的操作中,前述使用初始的糾刪碼參數對資料進行存取、使用新的糾刪碼參數來寫入資料、以及釋放源物件的初始片段,可以在逐個物件的基礎上執行,或者甚至在源物件內增量地執行(例如,在逐個片段的基礎上,或者在每個片段的對應部分的基礎上),從而當正在進行對資料的重新分佈時,使對可用儲存空間的影響最小化。應當了解,儘管提供了相同的冗餘度相對水平,但是在給定的例子中的前述的操作,導致在每個儲存節點上儲存來自每個源物件的½的資料。此外,在沒有擾亂儲存系統操作的情況下,將資料分散在新的儲存節點上,但是是作為後臺修復程序操作。作為替代,可以使用與修復程序不同的程序,來執行對儲存系統中的來源資料進行該重新分佈和重新編碼。
圖5A-圖5E根據實施例,圖示實現了n=M的大糾刪碼的懶惰修復策略的操作。在圖5A-圖5E的示例性儲存系統中,儲存節點的數量M是20,針對源物件而儲存的片段的總數量n是20,源符號的數量k是10,並且修複合符號的數量r是10,以便提供簡化的配置來幫助理解本文的概念。應當了解,在實際的實現中,前述的參數可以顯著不同(例如,儲存節點的數量M,以及對應地被儲存用於源物件的片段的總數量n、源符號的數量k和修複合符號的數量r可以顯著更大,例如M在30、50、100、1000或者10000的數量級上)。
圖5A的處理狀態圖510圖示由提供實現了懶惰修復策略的修復服務(例如可以由一或多個修復伺服器提供)的存取伺服器(例如,圖2的存取伺服器210)進行的懶惰修復策略操作的狀態。處理狀態圖530-1至530-20根據實現了懶惰修復策略的修復服務,圖示由儲存節點(例如,圖2的儲存節點210-1至210-M)進行的懶惰修復操作的狀態。對於處理狀態圖510和530-1至530-20之每一者處理狀態圖,用所示出的水平條形表示當前的處理點,其中處理圍繞每個處理狀態圖的圓圈順時針行進。處理狀態圖510的圓圈表示由儲存系統儲存的源物件(例如,用圓圈的對應部分表示單獨的源物件,其中聚合中的源物件提供完整的圓圈)。處理狀態圖530-1至530-20的圓圈表示處理狀態圖510所表示的源物件的片段,該等片段由每個相應的儲存節點來儲存(例如,用圓圈的對應部分表示每個單獨的片段)。然而,應當了解,不是所有的儲存節點被示出為包括用於所有物件的全部完整的片段(亦 即,圓圈的無陰影部分表示與圓圈的該部分相對應的源物件的缺失片段)。與圖5A中具有較高的標示數位的處理狀態圖(例如,處理狀態圖530-12至530-20)相關聯的儲存節點可能最近已被添加到儲存系統,並且因此,用於所有源物件的片段可能還沒有儲存到該等儲存節點上。
在該實施例中,在修復策略的操作中,所示出的實施例的修復服務線性地遍歷源物件之每一者源物件,如處理狀態圖510的處理點順時針行進經過源物件所表示的,以實現針對缺失片段的修復。相應地,可以對具有用於源物件的片段的儲存節點(或者其某部分)進行存取(例如,用處理狀態圖530-1至530-12表示的儲存節點,其中處理點被指示為讀取片段),以產生缺失的片段(例如,源片段及/或修復片段),以便由缺失源物件的片段的儲存節點(例如,用處理狀態圖530-13至530-20表示的儲存節點,其中處理點被指示為寫入片段)來儲存。亦即,在該例子中,最舊的12個儲存節點(用處理狀態圖530-1至530-12表示)具有用於所有來源資料的片段,並且因此,若k最多是12,則可以從儲存在這12個儲存節點上的片段恢復所有的源物件。在對來源資料進行修復的整個週期內,該例子的剩餘8個儲存節點(用處理狀態圖530-13至530-20表示)在儲存系統中還不可操作,並且因此,具有用於一些但不是所有源物件的片段。例如,用處理狀態圖530-13表示的儲存節點具有一些源物件片段,並且隨著修復程序繼續另一小段時間(假定該儲存節點沒有永久失效),該儲存節點將很快亦具有用於所有源物件的片段(例如,圍 繞圓圈旋轉另外大約1/4將達到這一點)。用處理狀態圖530-20表示的儲存節點最近已經被添加到儲存系統。因此,該儲存節點僅具有用於最近修復的源物件的片段,並且將會過一段時間之後該節點才具有用於所有源物件的片段。
應當了解,在前述的例子中,12個儲存節點(用處理狀態圖530-1至530-12表示的儲存節點)被示出為能夠存取(讀取)修復程序當前正在處理的源物件的片段,以便產生片段以用於修復。然而,上面的例子提供源符號的數量k為10,並且因此,可以由修復程序來針對其各自的片段對儲存節點中的任意10個儲存節點進行存取,以產生為了完成針對源物件而儲存的片段的總數n(亦即,在前述的例子中,n為20)而需要的片段。
根據本文實施例,在懶惰修復策略的操作中,允許具有缺失片段的源物件累積,由此,經由修復服務的操作(如用處理狀態圖510中的順時針遍歷源物件表示的),以穩定的修復速率R來修復該等源物件。圖5B進一步詳細地圖示這一點。如先前所提到的,處理狀態圖510的圓圈表示儲存系統所儲存的源物件。又如先前所提到的,由處理程序按照具有最少數量的可用片段的彼等源物件的順序來處理源物件,並且,在具有相同數量的可用片段的源物件中,在過去進一步修復的彼等物件比最近修復的物件具有高優先順序。當n=M時(亦即,當在每個儲存節點上存在用於每個源物件的片段時),結果發現,每次處理源物件時,對源物件的處理順序是相同的順序。因此,實施例的懶惰修復策略操作可以被視為總 是以相同的順序處理源物件,就好像源物件被圍繞圓圈佈置,並且懶惰修復策略操作圍繞圓圈行進,從而按照源物件圍繞圓圈佈置的對應順序來處理源物件,根據本文概念來實現懶惰修復策略。因此,單獨的源物件用圓圈的對應部分表示。例如,具有最多缺失片段的彼等源物件(例如,具有較高優先順序來產生修復片段)是圓圈中針對順時針處理方向所量測的、最靠近處理點的彼等物件,並且具有最少缺失片段的彼等源物件(例如,具有較低優先順序來產生修復片段)是圓圈中針對順時針處理方向所量測的、離處理點最遠的彼等物件(亦即,該等是在逆時針方向上最接近處理點、將來最晚處理的物件)。在圖5B中所示出的特定例子中,用部分510-1表示的源物件具有8個缺失片段,用部分510-2表示的源物件具有7個缺失片段,用部分510-3表示的源物件具有6個缺失片段,用部分510-4表示的源物件具有5個缺失片段,用部分510-5表示的源物件具有4個缺失片段,用部分510-6表示的源物件具有3個缺失片段,用部分510-7表示的源物件具有2個缺失片段,並且用部分510-8表示的源物件具有1個缺失片段。然而,用部分510-9表示的源物件具有所有20個片段可用(亦即,沒有缺失片段),此可以是最近針對其執行了修復處理(如處理點在順時針方向上與其緊鄰所指示的)並且自從該等源節點被修復後沒有另外的儲存節點失效的結果。相比之下,用部分510-2表示的源物件僅具有12個可用片段,其中在前述的例子中需要10個片段來恢復資料,並且因此,呈現了針對修復處理的最高緊急性。因此,該等源物件對於修復處理 是下一個(如處理點在逆時針方向上與其緊鄰所指示的)。倘若是以修復速率R(該修復速率R足以在片段的丟失速率導致儲存系統中少於10個片段可用之前,對排隊的源物件進行處理),來遍歷源物件之每一者物件(如用處理點圍繞處理狀態圖501的圓圈順時針行進所表示的),則沒有資料將丟失。在知道儲存系統的資料丟失速率靜態值的情況下,可以由實施例的懶惰修復策略來決定和實現用於實現此種修復處理的速率(也許具有針對丟失速率變化的某種緩衝區)。
圖5C圖示針對間歇的儲存節點失效的懶惰修復策略的操作。在圖5C中所示出的例子中,與處理狀態圖530-13和530-15相關聯的儲存節點經歷了間歇失效(亦即,臨時失效),由此,儲存節點在某一時間段內針對存取(例如,針對讀取和寫入片段資料)是不可用的(儘管,由於這是臨時失效,在足夠短的時間內該等儲存節點均將變得可用,以免被宣佈為永久失效)。亦即,在剛剛過去的處理點處,由修復程序進行的處理不能夠向該等儲存節點寫入用於當時正在進行處理的源物件的片段。因此,間歇失效是用逆時針方向上緊鄰處理點的(亦即,對於處理狀態圖530-13的部分530-13a和對於處理狀態圖530-15的部分530-15a)、沒有與其相關聯的片段的相應的圓圈部分來表示的。
修復服務可以實現間歇失效策略,以適應諸如圖5C中所示出的彼等間歇的儲存節點失效。根據實施例,在根據此種間歇失效策略的操作中,修復策略可以讀入源物件的至少k個片段,在片段到達時根據該等片段來對源物件進行糾刪 解碼,並且在對源物件進行解碼時,產生源物件的另外的片段。在產生另外的片段時,可以將其寫入儲存節點。然而,繼續上面例子的間歇的儲存節點失效,一些儲存節點(例如,與處理狀態圖530-13和530-15相關聯的儲存節點)是臨時不可用的。因此,修復服務可以操作用於:追蹤哪些片段(或者其部分)被成功地寫入了,並且保持沒有被寫入的片段(或者其部分)的本機複本(例如,修復服務儲存片段,如由圖5D的存取伺服器110的修復伺服器功能儲存的片段530-13b和530-15b所示出的)。當經歷了間歇失效的儲存節點被偵測為已經從失效中恢復時,修復服務可以排程對專用於現已恢復的儲存節點的、未寫入的片段(或者其部分)進行寫入(例如,修復服務使片段被寫入儲存節點,如片段530-13b和530-15b被寫入用圖5E的處理狀態圖530-13和530-15表示的儲存節點中的相應儲存節點中所示出的)。
由修復服務為了本端地儲存片段以適應如上面所描述的儲存節點間歇失效而使用的儲存量,可以容易地由本文實施例的修復伺服器來適應。舉例而言,儲存系統可以包括1000個儲存節點(亦即,M=1000),間歇的儲存節點失效速率可以是每月¼(亦即,λ’=每月1/4),並且用於間歇的儲存節點恢復的時間可以是30分鐘(亦即,T=30分鐘)。在該例子中,在30分鐘內可以預計大約0.2個間歇的儲存節點失效(亦即,1000.3/365/48=0.2),如下進行推導,1000.3是每年的間歇失效數量,除以365,提供每天的間歇失效數量,除以48,提供每30分鐘的間歇失效數量。實現每秒10千兆位元的修 復速率(亦即,R=10Gbps)、30分鐘內經歷100個間歇失效(是前述預計的失效水平的500倍的水平)的實施例,將儲存最多10%的要寫入的片段(亦即,在30分鐘內儲存100/1000,其中在時間T(30分鐘之後),由於儲存節點被決定為永久失效,修復服務丟棄片段)。因此,該例子的修復伺服器會使用最多225GB的臨時儲存容量(10Gbps.30分鐘.10%=225GB)。
已經根據本文實施例,概括地描述了適於提供流動分散式儲存控制的系統和裝置,現在參考圖6-圖9,圖6-圖9圖示根據一些實施例的操作的流程圖。應當了解,在圖6-圖9的流程中所闡述的操作可以藉由如由存取伺服器210的處理器211執行的流動分散式儲存控制212的邏輯單元來執行。
圖6根據實施例,圖示功能框601,其適於:實現流動分散式儲存控制以促進來源資料的修復,該來源資料包括作為跨越儲存系統的多個儲存節點分佈的多個片段儲存的一或多個源物件。如上面所論述的,該多個片段包括用於來源資料的冗餘資料(本文亦被稱為修復資料)。在框611處,根據所示出的實施例的操作,決定要產生和儲存的、該一或多個源物件中的源物件的該多個片段中的至少一個另外的片段。在框612處,所示出的實施例的操作從該多個儲存節點中的複數個儲存節點讀取該多個片段中的複數個片段。如所示出的,在框613處的操作中,根據該複數個片段的資料,對源物件進行糾刪解碼。在所示出的實施例的框614處,隨後對源物件的資料進行糾刪編碼,以提供用於該多個片段的至少一個 另外的片段的資料。如所示出的,在框615的操作中,將該至少一個另外的片段的資料寫入該多個儲存節點中的至少一個儲存節點。如本領域技藝人士將認識到的,可以對上面的實施例進行修改,以應用於源物件的部分而不是應用於整個源物件。
在替代的實施例中,前述框中的各種框的操作可以進行組合。例如,完全RAPTORQ解碼器實現可以用兩個步驟來操作,其中第一步驟是根據接收到的編碼符號來產生資料的中間塊,並且第二步驟是根據中間塊來產生源塊(的缺失符號),並且這是在框613中對RaptorQ解碼器進行操作的一種方式。類似地,完全RAPTORQ編碼器實現可以用兩個步驟來操作,其中第一步驟是根據源塊來產生中間塊,並且第二步驟是根據中間塊來產生修複合符號,並且這是在框614中對RAPTORQ編碼器進行操作的一種方式。然而,根據實施例,框613和框614的操作可以進行組合,其中使用下文的方法,可以更高效地實現框613和框614的操作的組合。在框613中,引動RAPTORQ解碼器的第一步驟,以便根據接收到的編碼符號來產生中間塊。在框614中,引動RAPTORQ編碼器的第二步驟,直接地應用於在框613中所產生的中間塊,以產生與該至少一個另外的片段相對應的編碼符號(源符號或修複合符號)。因此,此種替代的方法僅操作了完全RAPTORQ解碼器的第一步驟和完全RAPTORQ編碼器的第二步驟,因此避免了操作RAPTORQ解碼器的第二步驟和RAPTORQ編碼器的第一步驟。
在由實施例的功能框601實現流動分散式儲存控制的特徵中,可以針對讀取該複數個片段的資料(框612)和寫入該至少一個另外的片段的資料(框615),來提供流動分散式儲存控制,以控制平均的聚合讀取和寫入頻寬(R),使得Rβ μ,其中R包括用於儲存系統內的來源資料的修復的平均的聚合讀取和寫入頻寬,β包括由包括冗餘資料的該一或多個片段提供的、儲存系統的資料冗餘度的分數,並且μ包括資料從儲存系統的該多個儲存節點丟失的速率。另外地或替代地,可以針對讀取該複數個片段的資料(框612)和寫入該至少一個另外的片段的資料(框615),來提供流動分散式儲存控制,以將讀取和寫入頻寬限制在低於值RRβμ的函數,其中R包括用於儲存系統內的來源資料的修復的平均的聚合讀取和寫入頻寬,β包括由包括冗餘資料的該一或多個片段提供的、儲存系統的資料冗餘度的分數,並且μ包括資料從儲存系統的該多個儲存節點丟失的速率。類似地,可以針對讀取該複數個片段的資料(框612)和寫入該至少一個另外的片段的資料(框615),來提供實現流動分散式儲存控制,以提供受限制的修復時間(t REP ),使得t REP 最多是βM個節點永久失效的時間,其中t REP 是一次對儲存系統的源物件之每一者源物件進行修復處理的時間(亦即,t REP 最多是D ALL/R),其中β包括由包括冗餘資料的該一或多個片段提供的、儲存系統的資料冗餘度的分數,並且M是儲存系統的該多個儲存節點的數量。
換種說法,可以這樣配置修復頻寬R,使得t REP 最多 是βM個節點永久失效的時間,其中β包括由包括冗餘資料的該一或多個片段提供的、儲存系統的資料冗餘度的分數,並且M是儲存系統的儲存節點的數量。當這樣配置R時,則來源資料將不會從儲存系統丟失(亦即,總是存在足夠的資料儲存在儲存節點中,以確保可以對儲存在儲存系統中的來源資料的每個部分進行糾刪解碼)。亦即,由於t REP 最多是D ALL/R,因此若D ALL/R最多是M個節點中βM個節點永久失效的時間,則來源資料將不會從儲存系統丟失。對此進行重新說明,若R乘以T FAIL至少是D ALL,則來源資料將不會從儲存系統丟失,其中T FAILβM個節點永久失效的最小時間量。例如,若儲存節點以速率λ獨立地永久失效,則在βM個節點永久失效之前的預計時間是β/λ(例如,若1/λ=3年並且β=0.33,則在βM個節點永久失效之前的預計時間是一年,並且T FAIL小於一年)。由於可能存在在一段時間內沒有被新節點替換的、永久的節點失效,因此在修復程序期間確保將來源資料的所有部分恢復為M個片段是不切實際的,更一般而言,可以利用本段落中的X來替換βM,其中X是在來源資料的所有部分上,在剛修復之後來源資料的部分具有的可用片段的數量和用於來源資料的該部分的源片段的數量之間的差值的最小值。亦可能存在間歇的節點失效,在此種情況下,可以進一步將X減小同時的間歇節點失效的最大數量(具有高概率)。當n<M時,若T FAIL被重新定義為任意n個節點中的X個節點永久失效的最小時間量,則此種方法亦適用。此外,T FAIL可以被定義為一個時間量,在小於該時間量中,任意n個節點中的X個節點永久 失效是不大可能的(而不是不可能)。因此,若R乘以TFAIL至少是D ALL,則從儲存系統丟失來源資料是不太可能的,其中TFAIL是一個時間量,在該時間量內,當定期地替換節點時,則多於βM個節點永久失效是不太可能的,或者更一般而言,TFAIL是一個時間量,在該時間量內,大於X個節點永久失效是不太可能的,其中X是如上面所描述的。
R的規定值可以是在長的時間窗上修復程序所需要的平均修復頻寬,而可以對修復程序所使用的實際修復頻寬進行控制,以便在時間窗W上將其平均化為R的規定值,而在比W短的時間間隔上,修復頻寬可以急劇地變化,而獨立於資料何時從儲存系統(例如,由於儲存節點失效)丟失(但是源物件不一定丟失,並且優選地源物件不丟失)。例如,若規定的頻寬在一個月的窗口W上平均化時是R=1Gbps,則可以達到目標MTTDL,並且因此,懶惰修復程序操作所進行的修復頻寬使用的實際模式可以是在每個星期日的三個半小時時間段內(亦即,從1AM到4:30AM)使用48Gbps。因此,可以動態地調整由實施例的流動分散式儲存控制提供的平均的聚合讀取和寫入頻寬(R)。例如,可以針對讀取該複數個片段的資料(框612)和寫入該至少一個另外的片段的資料(框615),來提供實現流動分散式儲存控制,以提供經動態地調整的修復頻寬R,其中R是基於修復佇列中修復例項的數量以及預測的針對該多個儲存節點的資料丟失速率來動態地調整的。大體而言,可以這樣調整規定的修復頻寬R,使得RW逐漸地改變,其中W是一個時間窗,在該時間窗上,修復策略應 當使用平均是R的頻寬(若修復佇列中存在物件的話)以達到規定的MTTDL。
在圖6的前述論述中,修復頻寬被表示為R,而在圖3A和圖3B的論述中,修復速率被表示為R。應當了解,修復速率是修復程序正使用頻寬的實際速率,並且修復頻寬一般是修復速率,儘管修復頻寬可以用於指示修復速率的上限。然而,對於本文實施例的懶惰修復策略,大部分時間修復速率和修復速率的上限是相同的(亦即,大部分時間修復策略使用可用於修復策略的修復頻寬中的所有修復頻寬)。因此,前面提到的例子使用了R來表示修復速率和修復頻寬二者。
圖7根據實施例,圖示功能框701,其適於:實現流動儲存控制,以促進來源資料的修復,該來源資料包括作為跨越儲存系統的多個儲存節點分佈的多個片段儲存的一或多個源物件。在框711處,根據所示出的實施例的操作,決定用於源物件的該多個片段中的至少一個片段從儲存系統中缺失,對於該源物件,在修復佇列中不存在對應的物件例項。在框712處,用於源物件的對應的物件例項被添加到修復佇列。應當了解,修復佇列可以包含用於儲存在儲存系統中的物件的大的部分的、對應的物件例項。例如,根據實施例,此種大的部分可以包括大於或等於1-c/r的一定數量個物件例項,其中r是該一或多個源物件中的源物件的多個修復片段的數量,c是正的、非零常數值(例如,根據實施例,1≦c≦10)。另外地或替代地,根據實施例,此種大的部分可以包括源物件的50%或更多、源物件的70%或更多,或者源物件的90% 或更多。在所示出的實施例的框713處,基於物件例項相對於修復佇列中其他物件例項的優先順序,從修復佇列中選擇物件例項。在框714處,根據所示出的實施例的操作,從該多個儲存節點中的複數個儲存節點,讀取與所選擇的物件例項相對應的、該多個片段中的複數個片段。此後,根據所示出的實施例,根據該複數個片段,對對應的源物件進行糾刪解碼(框715),並且根據解碼的源物件,對該一或多個另外的片段進行糾刪編碼(框716)。如所示出的,該一或多個另外的片段被寫入儲存系統的儲存節點(框717),並且從修復佇列中刪除所選擇的物件例項(框718)。
在替代的實施例中,前述框中各個框的操作可以進行組合。例如,框715和框716可以進行組合,僅操作完全RAPTORQ解碼器的第一步驟和完全RAPTOrQ編碼器的第二步驟,因此避免了操作完全RAPTORQ解碼器的第二步驟和完全RAPTORQ編碼器的第一步驟,類似於本文所描述的圖6的框613和614的替代實施例。
如經由前述內容可以了解,根據功能框701來實現的實施例採用修復佇列。如經由本文揭示內容可以容易地了解,在實現懶惰修復策略、用於修復處理的源物件例項的基於優先順序的等級等等中,可以使用此種修復佇列。
圖8和圖9圖示採用諸如前面提到的交錯資料組織之類的資料組織技術的特徵的操作,該資料組織技術允許修復策略避免處理大的物件,並且替代地,以非常精細的粒度將資料串流傳輸到儲存節點。應當了解,儘管沒有被示出為用 於實現流動分散式儲存控制的功能框的一部分,但是若需要,則圖8和圖9的實施例可以用作為流動分散式儲存控制的一部分,以促進來源資料的修復,該來源資料包括作為跨越儲存系統的多個儲存節點分佈的多個片段儲存的一或多個源物件。
在根據圖8的實施例的操作中,在框801處,接收到用於對使用(nkr)糾刪碼來儲存的來源資料的一部分進行存取的請求。在所示出的實施例的框802處,從多個儲存節點中的複數個儲存節點讀取多個片段中的複數個片段的資料,以存取資料的該部分。應當了解,由於所使用的資料組織,因此對於包括至少k個可用片段的所有模式,在實施例的框802處讀取的該複數個片段的資料的數量基本等於來源資料的所請求的部分的大小,而獨立於哪些片段可用和哪些片段缺失的模式。在所示出的實施例的框803處的操作,提供了根據從該複數個儲存節點讀取的該複數個片段的資料,對來源資料的該部分進行糾刪解碼。此後,在框804處,可以回應於該請求而提供來源資料的該部分。
圖9根據本文概念,圖示流程,其適於:產生用於源物件的來源資料的修復資料,其中源物件的來源資料要儲存成跨越儲存系統的多個儲存節點分佈的多個片段。可以例如使用(nkr)糾刪碼,根據來源資料來產生修復資料。在所示出的實施例的框901處的操作,提供了將來源資料作為資料串流來進行接收。經由使用根據實施例而使用的資料組織的特徵,在來源資料串流到達時,對來源資料串流進行糾刪 編碼,以產生編碼資料串流(框902),並且在正在產生編碼資料串流時,根據編碼資料串流,產生複數個輸出片段串流串(框903)。此後,使用資料組織,在正在產生輸出片段串流時,將複數個輸出片段串流中的各個輸出片段串流寫入儲存節點(框904),其中輸出片段串流中的各個輸出片段串流的第一部分與源物件的第一部分相對應,並且在已接收到源物件的第二部分之前被寫入儲存節點。
圖10根據實施例,圖示用於提供用於來源資料的修復資料的操作,該來源資料作為跨越多個儲存節點分佈的片段資料儲存在儲存系統中。所示出的實施例包括功能框1001,其適於:在框1001處,使用修復程序(例如,在一或多個伺服器上執行的修復程序),來產生來源資料的片段資料。修復資料的糾刪碼可以例如包括(nkr)糾刪碼。根據實施例,來源資料(根據該來源資料來產生修復資料)被組織成來源資料的連續源塊,其中來源資料的大小比源塊的大小大得多。在根據實施例的操作中,修復程序按順序對來源資料的源塊之每一者源塊進行處理。所示出的實施例的修復程序流程包括:對於至少k個儲存節點之每一者儲存節點,存取與來源資料的源塊相對應的、儲存在儲存節點上的片段資料的部分(框1011)。在所示出的實施例的框1012處,使用糾刪解碼,從片段資料的所存取的部分中恢復來源資料的源塊。在所示出的實施例的框1013處,使用糾刪編碼,根據來源資料的源塊來產生片段資料的至少一個部分。此後,對於針對其產生片段資料的部分的每個儲存節點,片段資料的所產 生的部分可以儲存在該儲存節點上(框1014)。在根據實施例的操作中,儲存在多個儲存節點之每一者節點上的來源資料的資料被組織成片段資料的連續部分,其中片段資料的連續部分是根據來源資料的連續源塊來產生的。
在替代的實施例中,前述框中各個框的操作可以進行組合。例如,框1012和框1013可以進行組合,僅操作完全RAPTORQ解碼器的第一步驟和完全RAPTORQ編碼器的第二步驟,因此避免了操作完全RAPTORQ解碼器的第二步驟和完全RAPTORQ編碼器的第一步驟,類似於本文所描述的圖6的框613和614的替代實施例。
圖11圖示用於重新分佈用於來源資料的修復資料的操作,該來源資料作為跨越多個儲存節點分佈的片段資料冗餘地儲存在儲存系統中。使用(nkr)糾刪碼,利用修復程序(例如,在一或多個伺服器上執行的修復程序),根據來源資料來產生修復資料。根據實施例,來源資料(根據該來源資料產生修復資料)被組織成來源資料的連續的現有源塊,其中來源資料的大小比現有源塊的大小大得多。根據實施例,儲存在多個儲存節點之每一者儲存節點上的來源資料被組織成片段資料的連續部分,其中片段資料的連續部分是根據來源資料的連續部分來產生的。所示出的實施例包括功能框1101,其適於:由修復程序來重新分佈修復資料,該修復程序按順序處理來源資料的現有源塊之每一者現有源塊。由所示出的實施例的修復程序進行的處理包括:針對來源資料的現有源塊,決定糾刪碼的參數(nkr)和符號大小Ssize ,該糾刪碼用於根據現有源塊來產生片段資料的部分並對其進行儲存(框1111)。在所示出的實施例的框1112處,對於至少k個節點之每一者節點,存取與來源資料的現有源塊相對應的、儲存在儲存節點上的片段資料的現有部分。在所示出的實施例的框1113處,使用糾刪解碼,從所存取的片段資料的現有部分中恢復來源資料的現有源塊,並且大小kSsize的現有源塊被放置到FIFO(先入先出)臨時緩衝區中。在所示出的實施例的框1114處,決定用於來源資料的新源塊的參數(n’k’r’)和符號大小Ssize’,以用於要為來源資料的新源塊產生的片段資料的新部分。在所示出的實施例的框1115處,只要在FIFO臨時緩衝區中存在至少k’Ssize’位元組,則從FIFO臨時緩衝區移除k’Ssize’位元組的資料以形成新源塊,並且使用糾刪編碼,根據來源資料的新源塊來產生片段資料的n’個新部分。在根據實施例的操作中,片段資料的新部分中的k’個部分包括來自來源資料的新源塊的資料。在所示出的實施例的框1116處,對於針對其產生片段資料的新部分的每個儲存節點,將所產生的片段資料的新部分儲存在該儲存節點上。此後,可以釋放儲存節點上曾用於對來源資料的現有源塊的片段資料的現有部分進行儲存的儲存空間(框1117)。
根據本文實施例,前述的論述已提供了對流動分散式儲存控制以及其功能框的操作的描述。下文的論述提供了針對流動分散式儲存控制的各個態樣、以及大糾刪碼的對應使用、懶惰修復策略、修復頻寬控制和交錯資料組織的另外的細節和分析。
下文的分析顯示,對於大糾刪碼解決方案,在儲存效率和修復頻寬之間存在折衷。具體而言,使用更大的資料冗餘度允許使用更小的修復頻寬,反之亦然。此外,對於相同的儲存效率,大糾刪碼解決方案可以使用比小糾刪碼解決方案更小的修復頻寬,或者替代地,在使用相同或更小的修復頻寬的情況下,大糾刪碼解決方案可以是比小糾刪碼解決方案更加儲存高效的。對修復策略的分析,分析了修復策略所要求的修復頻寬的下限,以便小糾刪碼解決方案和大糾刪碼解決方案二者能夠提供良好的可靠性。對於大糾刪碼解決方案,分析顯示,足以提供針對給定的儲存管理負擔的良好可靠性的修復頻寬量相對地接近下限。應當了解,當修復頻寬壓被壓縮到修復佇列極少是空的(例如,幾乎總是存在多個物件例項以協調的方式流過修復佇列)並且因此物件例項表現為流的程度時,該分析適用。該分析因此在本文中被稱為對修復策略的流動分析。
本文流動分析對修復策略的整體系統表現進行模型化,並且具體而言,對修復佇列(填充有針對要求修復的物件的物件例項)的大小相對於修復策略所使用的修復頻寬壓縮了多少如何增長進行模型化。相比之下,瑪律科夫鏈分析大體假定物件例項被獨立地處理,並且不在修復佇列中聚集(例如,物件例項表現地像被獨立修復的氣體分子),並且因此,本文將此種分析被稱為氣體分析。在修復頻寬被壓縮時,這裡所提供的對修復策略的流動分析通常對修復策略的表現何時從氣體方案轉變為流動方案進行辨識,其大致辨識 了氣體分析適用的修復頻寬範圍。針對小糾刪碼解決方案的流動分析所提供的發現之一是,在分配給修復策略的假定的修復頻寬R降低時,修復策略的表現經歷狀態轉變。
下文為了簡單起見,系統中存在M個儲存節點(亦即,當儲存節點永久失效時,新的儲存節點在合理的時間量內(例如幾乎立即、在一天或一星期或一年內)被添加到系統)。對於小糾刪碼解決方案,流動分析顯示,存在下降的修復頻寬閥值的序列,...,,在該等閥值處發生下文的狀態轉變:若R足夠地高於閥值,則修復佇列大體接近為空,並且物件相對迅速地被修復(亦即,修復策略處於氣體方案中);在R下降低於閥值時,發生至流動方案的狀態轉變,其中修復佇列填充有增加的具有一個片段缺失的部分物件,並且該等物件在增加的持續時間中保留在修復佇列中,直到其被修復,或者直到其其具有兩個缺失片段並且隨後相對迅速地被修復;在R下降低於閥值時,發生第二狀態轉變,其中修復佇列填充有如此多具有一個片段缺失的物件,以至於其從不被修復,直到其具有兩個片段缺失,並且具有兩個片段缺失的物件要麼在增加的時間段內保留在修復佇列中直到其被修復,要麼直到其具有三個缺失的片段並且隨後相對迅速地被修復;並且在R下降低於閥值時,發生第i狀態轉變,其中修復佇列填充有如此多具有最多i-1個片段缺失的物件,以至於其從不被修復,直到其具有i個片段缺失,並且具有i個片段缺失的物件要麼在增加的時間段內保留在修復佇列中直到被修復,要麼直到其具有i+1個缺失片段並 且隨後相對迅速地被修復。
對於大糾刪碼,修復策略在以下方案中進行操作:其中在該方案中,流動分析對於任何合理的修復頻寬量適用,並且流動分析提供了對於給定的儲存管理負擔和可靠性是足夠的修復頻寬的相對緊密的分析。下文表達了若所有M個片段對於每個所儲存的物件可用,則針對儲存在系統中的來源資料和修復資料的聚合大小的總大小D ALL= D SRC/(1-β),修復頻寬R何時提供可靠性,其中作為每物件的修復片段的數量r的函數,D SRC是儲存在儲存系統中的所有源物件的聚合大小:若在持續時間段上,失效的儲存節點的數量最多是r=βM,則來源資料從不丟失。持續時間是以平均修復頻寬速率R來修復儲存系統中的所有物件的時間量的上限,並且r=βM是在物件自從上次修復後需要修復之前,儲存節點可以失效的最大數量。該運算式可以用於描述在修復頻寬R、儲存管理負擔、儲存系統中總資料量D ALL的上限、以及儲存節點失效速率λ之間的關係。由於在時間中預計的節點失效數量是,因此運算式暗示著: 解釋等式(1)的一種方式是,修復頻寬R和儲存管理負擔β的乘積應當至少與儲存系統丟失資料的速率μ=λ.D ALL一樣大。
現在轉到對(nkr)小糾刪碼的流動分析,分析表明了修復頻寬限制R和修復佇列的填充度之間的關係。對於i=0至r,令f i n-i個片段可用的物件的部分。假設f 0=1,(亦即,用於所有物件的所有片段可用),並且因此修復佇列是 空的。則修復傳輸量被添加到修復佇列的速率至少是 ,因為要讀取或寫入n個片段中的 至少k+1個片段以修復物件,並且具有n個片段可用的每個物件以速率n.λ被添加到修復佇列,並且D ALL是物件(對於該物件,所有n個片段可用)的所有片段的總大小。
第一狀態轉變在閥值處發生。當時,修復 佇列填充得比清空得慢,並且因此,大部分時間其可以是空 的,當時,修復佇列以與清空的速率相同的速率來填充,並且因此,其是不穩定的狀態,其中有時其可以是空的, 但是其他時間由於隨機波動而非常滿,並且當時,修復 佇列填充得比清空得快,並且因此,其開始填充。
大體而言,對於i=1至r,第i狀態轉變發生在 處。為了領會這一點,假設速率R使得:對於j=1 至i-1,物件以均衡的速率被添加到f j 或者從f j 移除,以至於f j 不改變,並且修復傳輸量被添加到f i 的速率是R。則,物件從f j -1至f j 的轉變速率相對於物件從f j f j+1 的轉變速率的比率是 ,其暗示著:nf 0=(n-1).f 1=…=(n-(i-1)).f i-1,並且f i =f i+1=…=f r =0。該等限制暗示 著狀態轉變是在處。要注意,
根據實施例,前述的流動分析圖示實現流動分散式儲存控制的一些結果,特別是對於小糾刪碼解決方案。例如 ,當時,用於修復物件的甚至單個片段丟失的平均時間 大體將比T大得多,其中T是在當儲存節點失效時和當決定儲存節點失效是永久的或者間歇的時之間的時間,並且甚至遠大於用於對受單個節點丟失影響的所有物件進行處理的時間 ,其中S是儲存在失效的儲存節點上的資料量。這是因為 在修復佇列中將會存在用於其他物件的大量的物件例項,該等物件例項將爭用修復策略能夠用於修復的R網路頻寬。例如 ,若,則至少33%的物件將在修復佇列中。根據實施例 ,由於當用於物件的物件例項首次放置在修復佇列中時,其具有最低的優先順序,除非對於該物件存在另一個片段丟失(該丟失提高物件例項的優先順序),否則修復策略為了產生用於物件的一或多個修復片段而花費的平均時間量至少是 ,其大約是以速率R讀取儲存系統中所有來源資料而花 費的時間的67%。這是因為用於具有一個片段丟失的物件的物件例項以R/2的速率向缺失兩個片段移動,並且用於缺失兩個片段的物件的物件例項具有比用於缺失一個片段的物件的物件例項更高的優先順序,並且因此,用於具有一個片段缺失的物件的物件例項以只有R/2的速率被修復並從修復佇列中移除。
前述的時間量顯著地長於在用於決定MTTDL的通常的瑪律科夫鏈分析中所假定的修復時間。此外,當儲存節點失效時,可能該儲存節點儲存的片段中的一大部分是在該節點失效之前已經具有一個片段失效的物件。因此,將花費某一大段時間量來修復在失效的儲存節點上具有兩個片段缺 失的該等物件。該分析指示,當時,大體此種瑪律科夫 鏈分析不直接適用,並且當R如所描述的受限制時,實際的MTTDL大得多。
對於小糾刪碼解決方案,其中r=n-k個修複合符號之每一者修複合符號是針對物件所提供的保護的相對顯著的部 分,當時,產生的高的物件平均修復時間顯著地降低由 儲存系統解決方案提供的可靠性保護。即使當R小於閥值 但是接近時,由於儲存節點失效速率的隨機變化,因此在 延長的時間段內修復佇列將間歇地增長到顯著的水平,從而將小糾刪碼解決方案所提供的保護置於風險中。因此,對於 小糾刪碼解決方案,修復頻寬R通常大體大於閥值
現在轉到對(nkr)=(M;(1-β).MβM)大糾刪碼的流 動分析,其中是儲存管理負擔,該分析顯示,大糾刪 碼解決方案可以提供高的可靠性並且使用比小糾刪碼解決方案顯著更小的修復頻寬R。在此種大糾刪碼的情況下,r=βM 個修複合符號之每一者修複合符號是整體保護的相對小部 分。在提供大糾刪碼流動分析中,應當觀察到,在當物件的物件例項被添加到修復佇列時和當修復佇列恢復用於物件的 所有M個片段時之間的時間(亦即,修復時間)最多是。 可以如下證明此種觀察,假定用於物件O的物件例項O-instance在時間t start 處被添加到修復佇列,並且由修復策略對O-instance進行的處理在時間t end 處結束。分析顯示,在對時間t start 之後被添加到修復佇列的任何物件例項進行處理之前,對O-instance進行處理。
現在考慮在時間t start 處在修復佇列中的、用於物件 O’的物件例項O’-prior。假定對O’-prior的處理在時間t’處結束,其中t start <t’<t end ,並且因此,O’的所有片段在時間t’處亦沒有失效的所有儲存節點上可用。可以看到,從時間t’到時間t end ,在存在針對O而儲存的片段的每個儲存節點上,將存在被儲存用於O’的片段(並且O’可能亦有片段儲存在沒有片段被儲存用於O的儲存節點上),並且因此,在該時間間隔期間,用於O’的可用片段的數量至少是用於O的可用片段的數量。
假定用於物件O’的物件例項O’-after在時間t”處被添加到修復佇列,其中t start <t’<t”<t end 。由於時間t’和時間t end 之間的O’具有與O一樣多的可用片段,並且由於O’-after是在O-instance之後被添加到修復佇列的,因此在修復佇列中O-instance的優先順序應當總是高於O’-after的優先順序,並因此將在O’-after之前對O-instance進行處理。類似地,考慮在時間t start 處不在修復佇列中、但是在時間t start 之後並且t end 之前被添加到修復佇列中的用於O’的任何物件例項O’-after。經由與上面類似的論述,將在O’-after之前對O-instance進行處理。
經由前述內容,在最壞的情況下,用於完成對O-instance的處理的時間是為了修復在時間t start 處在修復佇列中的物件例項而花費的時間量。在最壞的情況下,在時間t start 處修復佇列中存在用於每個物件的物件例項,並且O-instance在該等物件例項中具有最低優先順序。用於一次修復每個物 件的總傳輸量由D ALL限定。因此,
由於前面提到的觀察顯示,僅當失效事件發生時來 源資料丟失才會發生,因此來源資料被儲存系統丟失的概率的上限可以根據隨後的失效事件的概率來決定。假定一失效 事件,在該失效事件中,在持續時間的時間間隔中存在大 於r=βM個儲存節點失效。
為了評估失效事件概率,令X為泊松(Poisson)隨 機變數,其中。亦即,λ是在持續時間的 時間間隔上預計的節點失效數量。
為具有均值a的泊松隨機變數 至少是b的概率。則Pr[X r]=Poisson(λ,r)。
永久的節點失效事件以速率λ.M λM 發生。僅當在t 之前的持續時間的窗口中存在至少r個永久的節點失效時 ,時間t處的永久的節點失效才會造成資料丟失。因此,使用聯合界限,資料丟失的頻率最多是λ.M.Poisson(λ',r),並且因此 MTTDL至少是。令m為目標MTTDL。若 ,則MTTDL將至少是m。可以找到最小的δ ≧1,使得。若將R設置為,則對 於R的這一值,λ’=βM=r(亦即,E[X]=r)。因此,R=δR Lg暗 示著,並且保證MTTDL至少是mR的這一值是保守的 ,因為其假定物件的所有n個片段在修復期間要麼被存取要麼被儲存,而大體小於n個片段在修復期間被存取或儲存。自此 可以看到,若在每個至少的持續時間的窗口上,修復程序 所讀取或寫入的資料量至少是D ALL,則MTTDL至少是m。換種 說法,若在每個至少的持續時間的窗口上,平均修復頻寬 至少是R,則MTTDL至少是m。對於固定的MTTDL目標m、固定的值β β 和固定的單獨節點失效速率λ λ ,δ的值作為系統中儲存節點的增加的數量M的函數而接近一。因此,足夠的平均 修復頻寬量R接近,並且窗口持續時間作為系統中儲存節 點的增加的數量M的函數而接近
可以如下輸入R的稍微樂觀的值:當修復發生在缺失 個片段的物件上時,用於一次修復所有物件的整體網路傳輸 量與成比例,因為讀取了k個片段並且寫入了個片段 以修復具有n個片段的物件。若,則在持續時間 的時間間隔上,預計的儲存節點失效數量是,在此 種情況下,失效事件的概率的上限適用。應當了解,保證MTTDL至少是mR的實際值是在R的保守值和稍微樂觀的值之間的某處。
對修復頻寬的使用可以被考慮為兩個單獨的分量:用於從儲存節點讀取資料到存取伺服器的頻寬量,後文稱之為讀取修復頻寬,以及用於將資料從存取伺服器寫入到儲存節點的頻寬量,後文稱之為寫入修復頻寬。取決於網路架構,經常存在此種情況:修復程序所使用的讀取修復頻寬與存取程序為了存取用於EU設備的源物件或者源物件的部分而使用的頻寬,使用共享的網路資源。類似地,經常存在此種情況:修復程序所使用的寫入修復頻寬與儲存程序為了對用於EU設備的源物件或者源物件的部分進行儲存而使用的頻寬,使用共享的網路資源。因此,為了達到用於儲存系統的給定 的MTTDL,單獨地限定修復程序所需要的讀取修復頻寬量和寫入修復頻寬量會是有用的。
對於使用反應式修復策略的小碼解決方案,在長的時間段上平均化的、所使用的寫入修復頻寬量是λD ALL,因為大體對於小碼解決方案,大部分時間,所有n個片段對於儲存物件是可用的,並且因此,儲存在儲存節點上的資料量通常接近D ALL,並且平均以資料丟失的速率λD ALL来写入数据。來寫入資料。另一方面,如本文所描述的,對於小碼解決方案,在不可預測的時間處,在短的時段上寫入修復頻寬可以高得多。對於使用大碼和懶惰修復策略的流動分散式儲存系統,所使用的寫入修復頻寬量最多是λD ALL並且至少是λD SRC,因為當使用懶惰修復策略時,儲存在儲存系統中的資料量是在D ALLD SRC之間。因此,對於流動分散式儲存解決方案,平均寫入修復頻寬最多是小碼解決方案的平均寫入修復頻寬。此外,類似於整體修復頻寬,可以獨立於儲存節點失效事件,靈活地排程對寫入修復頻寬的使用。
對於使用反應式修復策略的小碼解決方案,在長的時間段上平均化的、所使用的讀取修復頻寬量是λk SmD ALL=λn SmD SRC,因為大體而言對於小碼解決方案,對於寫入的每個片段,至少讀取k Sm個片段,其中(n Smk Smr Sm)是小碼參數。另一方面,如本文所描述的,在不可預測的時間處,對於小碼解決方案,在短的時段上讀取修復頻寬可以高得多。對於使用大碼和懶惰修復策略的流動分散式儲存系統, 所使用的讀取修復頻寬量最多是。這是因為,使 用與用於限定整體修復頻寬類似的推導,若在每個至少的 持續時間的窗口上,修復程序所讀取的資料量至少是D SRC,則 MTTDL至少是m。換種說法,若在每個至少的的持續時間 的窗口上,平均修復頻寬至少是R READ,則MTTDL至少是m。 對於固定的MTTDL目標m、固定的值β和固定的單獨儲存節點失效速率λδ的值作為系統中儲存節點的增加的數量M的函 數而接近一。因此,足夠的平均讀取修復頻寬量R READ接近 ,並且窗口持續時間作為系統中儲存節點的增加的數量M的函 數而接近。此外,類似於整體修復頻寬,可以獨立於儲存節 點失效事件,靈活地排程對讀取修復頻寬的使用。要注意,對於流動分散式儲存解決方案,讀取修復頻寬是 ,其中(n Lgk Lgr Lg)是用於大碼的碼參數,並且 若兩種解決方案使用相同的相對儲存管理負擔,則 對於流動分散式儲存解決方案,讀取修復頻寬可以表示為 ,其比使用反應式修復策略的小碼解決方案所 使用的讀取修復頻寬小了倍,並且在δ作為系統中儲存節點 的增加的數量M的函數而接近一時,小了接近r Sm倍。剛剛上面當R是讀取修復頻寬時的分析,是對上面當R是聚合的讀取和寫入頻寬時所提供的分析的小修改。對上面當R是聚合的讀取和寫入頻寬時所提供的分析的其他部分的類似修改,亦可以提供當R是讀取修復頻寬時的分析。例如,當R是讀取修復頻寬時,則經修改的分析顯示,若R乘以T FAIL至少是D SRC,則不太可能從儲存系統丟失來源資料,其中T FAIL是當定期地替換 節點時,多於βM個節點永久失效是不太可能的時間量,或者更一般而言,T FAIL是大於X個節點永久失效是不太可能的時間量,其中X如先前所描述的。舉另一個例子,當R是讀取修復頻寬時,則經修改的分析顯示,R和儲存管理負擔β的乘積應當至少與儲存系統丟失來源資料的速率μ=λD SRC一樣大。
在考慮大糾刪碼解決方案中,對於i=0至r,令O k+i 為在時間t處具有k+i個片段可用的物件的集合。可以看到,O k+i 中的所有物件在與k+i個ESI的集合ESI k+i 相關聯的k+i個儲存節點的相同集合M k+i 上具有完全相同的可用片段。此外,可以看到,M k M k+1 M k+r ,並且因此ESI k ESI k+1 ESI k+r 。應當了解,下文是獨立於大糾刪碼是否是MDS的結果:對於所有i=0至rk+i個ESI的集合ESI k+i 決定O k+i 中所有物件的可恢復性,因此要麼O k+i 中所有物件可恢復,要麼O k+i 中沒有物件可恢復,並且若O k+i 中所有物件可恢復,則本文使用術語「O k+i 是可恢復的」。對於所有i=1至r,若O k+i-1 是可恢復的,則O k+i 是可恢復的,因此若O k+iMIN 是可恢復的,則所有物件是可恢復的,其中i MIN =min{iO k+i ≠Ø}(亦即,i M1N 是使得物件集合O k+i 包含至少一個物件,或者等效地不是空集的i的最小索引)。因此,在每個時間點,存在k+i MIN 個ESI的一個集合ESI k+iMIN ,該集合決定所有物件的可解碼性。
修復策略與儲存節點失效的互動具有相對簡單的模式。修復策略正在修復O k+iMIN 中的物件,並且在修復該等物件之後移動到O k+r =O n 。因此,修復策略可以被視為以速率R將物件從O k+iMIN 移動到O k+r =O n
假定在時間t處存在儲存節點失效。則,就在t之後O k+r 是空的(亦即,不包含物件),並且對於所有i=r-1至0,就在t之後的O k+i 等於就在t之前的O k+i+1 。要注意,若就在t之前O k 不是空的(亦即,包含至少一個物件),則就在t之前的O k 中的所有物件在時間t處丟失。
經由前述內容可以了解,在時間t處,O k+r 是自從在t之前的第一節點失效後被修復的物件的集合,O k+r-1 是在t之前的第一儲存節點失效和第二儲存節點失效之間被修復的物件的集合,並且大體而言,O k+r-i 是在t之前的節點失效ii+1之間被修復的物件的集合。
假定i MIN 不變。令D k+i =(n-i MIN).Fsize.|O k+i |,其中|O k+i |是 O k+i 中物件的數量。則支映在t之前的儲存節點失效ii+1 之間的時間量,因為當物件O被添加到O k+i 時,網路傳輸量是(n-i MIN).Fsize。例如,若連續的儲存節點失效之間的時間是相等的,則當修復策略正在以速率R同時清空O k+iMIN 並且填充O k+r 時,對於所有i=r-1至i MIN +1,D k+i 將是相同的。若修復速率R加倍並且失效速率λ保持不變,則對於所有i=r-1至i MIN +1,大體r-i MIN 減半並且D k+i 加倍。若相反修復速率R保持不變並且失效速率λ加倍,則對於所有i=r-1至i MIN +1,大體r-i MIN 加倍並且D k+i 減半。
上面對修復策略的分析,基於正在進行的相關參數的量測,在提供對修復速率R的動態調整中提供了有用的資訊。應當了解,適合於修復策略的修復頻寬可以取決於事先會難以決定的許多參數,包括儲存節點失效速率和替換速率以 及儲存在儲存系統中的來源資料的數量。因此,一種方法是保守地估計相關參數。然而,這會造成修復頻寬設置得太高並且不必要地消耗網路頻寬。替代地,若太激進地估計相關參數,則修復頻寬會設置得太低並且損害可靠性。因此,實施例可操作用於:基於對相關參數的不斷量測,用小的增量來動態地並且連續地調整修復頻寬。
在提供對修復頻寬的動態調整中,考慮在時間t處的 情形。令為在使用修復頻寬R來修復O k+iMIN 中 的物件期間,預計的儲存節點失效數量。類似地,對於i=i MIN +1 至r,令為使用修復頻寬R來修復O k+iMIN O k+i 中的物件期間,預計的儲存節點失效數量。
對於i=i MIN r,令X k+i 為具有均值λ’ k+i 的泊松隨機變數,並且令p k+i =Pr[X k+i >i]。若對於i=i MIN rX k+i i,則在時間t之後一次修復所有物件之前,沒有物件將丟失。因此,在時間t之後一次修復所有物件之前,至少一個物件丟失的概率 最多是。類似於如先前所描述可以如何設置目標 值f,MTTDL的目標值可以用於推導p sum的目標值,p sum的目標值轉而可以用於決定達到該p sum的值的R的值,並且因此達到目標MTTDL。
根據實施例,可以定期地將修復頻寬R調整到以下的最小值:該最小值確保p sum最多是目標失效概率。
經由前述的流動分析,可以容易地了解下文的觀察:對於使用相同的相對儲存管理負擔的小糾刪碼解決方案和 大糾刪碼解決方案,大糾刪碼解決方案使用顯著更小的修復頻寬;並且對於使用相同修復頻寬的小糾刪碼解決方案和大糾刪碼解決方案,大糾刪碼解決方案使用顯著更小的儲存管理負擔。
例如,考慮(16;12;4)小糾刪碼解決方案和(1600;1200;400)大糾刪碼解決方案。這兩種解決方案具有相同 的儲存管理負擔。用於修復頻寬的界限的比率滿足
對於大糾刪碼解決方案,若R被設置為閥值R Lg,則λ’=r=400,並且因此δ可以被設置為δ=1.5,使得R=δ.R Lg並且 使得。則,使用標準泊松計算, Pr[X>r=400]10-14,對於每天一個儲存節點的平均失效速率λ.M,實現了超過2000億年的MTTDL。因此,在該例子中,僅比閥值R Lg高50%的修復頻寬R,達到了是宇宙生命週期的許多倍的MTTDL。相比之下,對於小糾刪碼解決方案,為了達到與大糾刪碼解決方案相同的可靠性水平,修復頻寬可能比閥值大得多(例如,比閥值R Lg大三倍以上)。
圖12和圖13根據本文實施例,圖示針對特定的儲存系統配置的模擬的結果,以提供對使用小糾刪碼的反應式修復策略的操作和使用大糾刪碼的懶惰修復策略的操作的比較。具體而言,圖12提供了基於雲端的儲存系統配置,例如其可以由可從微軟公司獲得的AZURE雲端平臺來實現,而圖13提供了應用服務供應商儲存系統配置,例如其可以由可從Facebook公司獲得的FACEBOOK社交網路應用來實現。
在圖12的模擬的儲存系統配置中,儲存系統包括400個儲存節點,其中每個節點具有16百萬百萬位元組的儲存。對於該等模擬,在儲存節點的丟失之間的平均時間被假定為3年,並且因此λ=1/3(每年1/3個儲存節點失效)。在儲存節點失效和決定儲存節點已經永久失效之間的時間是30分鐘(亦即,T=30分鐘)。圖12的模擬是針對儲存系統的1000萬年的操作。
如可以在圖12中所提供的結果表格中看到的,對於使用小糾刪碼的反應式修復策略、修復頻寬限制於40Gbps的模擬,修復策略在稍小於10%的時間中執行修復(亦即,在多達40Gbps的修復頻寬的短脈衝中),對於100MB源物件,具有2,200年的丟失任何來源資料的平均時間(MTTDL),或者對於2GB源物件,具有9,800年的MTTDL(亦即,Osize=100MB或者Osize=2GB)。對於使用小糾刪碼的反應式修復策略、修復頻寬限制於80Gbps的模擬,修復策略在稍小於5%的時間中執行修復(亦即,在多達80Gbps的修復頻寬的短脈衝中),對於100MB源物件,具有4,800年的丟失任何來源資料的平均時間(MTTDL),或者對於2GB源物件,具有22,000年的MTTDL。對於使用小糾刪碼的反應式修復策略、修復頻寬限制於100Gbps的模擬,修復策略在稍小於4%的時間中執行修復(亦即,在多達100Gbps的修復頻寬的短脈衝中),對於100MB源物件,具有6,000年的丟失任何來源資料的平均時間(MTTDL),或者對於2GB源物件,具有27,000年的MTTDL。對於使用小糾刪碼的反應式修復策略,修復傳輸量的短脈 衝緊隨儲存節點失效,並且因此,短脈衝是受失效事件的任意時序控制的,該等失效事件是不可預測的,並且可能與使用重要的共用頻寬資源、以高速度來存取或儲存來源資料的時間重合。
相比之下,對於使用大糾刪碼的懶惰修復策略、提供267個源片段和133個修復片段(提供了與所模擬的反應式修復策略的修復管理負擔相匹配的修復管理負擔的配置)、修復頻寬限制於2.44Gbps的模擬,修復策略不斷地執行修復(亦即,以2.44Gbps的穩定的修復頻寬速率),對於100MB和2GB源物件二者,均具有10,000,000年的丟失任何來源資料的平均時間(MTTDL)(亦即,MTTDL超過了模擬的持續時間)。對於使用大糾刪碼的懶惰修復策略、提供336個源片段和64個修復片段(亦即,使用比所模擬的反應式修復策略顯著更小的修復管理負擔)、修復頻寬限制於7.61Gbps的模擬,修復策略不斷地執行修復(亦即,以7.61Gbps的穩定的修復頻寬速率),對於100MB和2GB源物件二者,均具有10,000,000年的丟失任何來源資料的平均時間(MTTDL)(亦即,MTTDL再次超過了模擬的持續時間)。對於使用大糾刪碼的懶惰修復策略,對修復傳輸量的排程要靈活得多(例如,可以獨立於失效事件的時序來進行排程,並且可以在更大的時間段上均勻地或者不均勻地分散,例如被排程為當存取和儲存活動很大程度上是靜態時每天發生一個小時,或者當高級的存取或儲存發生或者消耗共享頻寬的其他活動發生時,修復處理可以臨時暫停,並且隨後當其他活動減弱時,修 復處理可以繼續)。此外,足以達到給定的MTTDL的、規定的修復頻寬量很大程度上對在當節點失效時和當決定失效是永久失效時之間存在多少時間T不敏感,並且對在當節點永久失效時和當新的儲存節點被添加到儲存系統以替換從失效的節點丟失的儲存容量時之間存在多少時間不敏感,其中對於使用小糾刪碼的立即修復策略不是此種情形。例如,當T從30分鐘增加到24小時時,對於使用小糾刪碼的反應式修復策略、修復頻寬限制於40Gbps的模擬,對於100MB源物件,丟失任何來源資料的平均時間(MTTDL)下降到大約8.5個月,並且對於2GB源物件,下降到剛剛低於2年,而對於使用大糾刪碼的懶惰修復策略、提供267個源片段和133個修復片段(提供了與所模擬的反應式修復策略的修復管理負擔相匹配的修復管理負擔的配置)、修復頻寬限制於2.44Gbps的模擬,對於100MB和2GB源物件二者,丟失任何來源資料的平均時間(MTTDL)保持在10,000,000年(亦即,MTTDL超過了模擬的持續時間)。
在圖13的模擬的儲存系統配置中,儲存系統包括3000個儲存節點,其中每個儲存節點具有10TB(百萬百萬位元組)的儲存。對於該等模擬,在儲存節點的丟失之間的平均時間被假定為4年,並且因此λ=1/4(每年1/4個儲存節點失效)。在儲存節點失效和決定儲存節點已經永久失效之間的時間是30分鐘(亦即,T=30分鐘)。圖13的模擬再次是假定針對儲存系統的1000萬年的操作。如可以在圖13中所提供的結果表格中看到的,對於使用小糾刪碼的反應式修復策略、 修復頻寬限制於8.42Gbps的模擬,修復策略100%的時間在執行修復(亦即,修復頻寬低於),並且因此,對於100MB源物件,丟失任何來源資料的平均時間(MTTDL)是0.037年,或者對於2GB源物件,MTTDL是0.077年(亦即,Osize=100MB或者Osize=2GB)。對於使用小糾刪碼的反應式修復策略、修復頻寬限制於28.5Gbps的模擬,修復策略在稍小於75%的時間中執行修復(亦即,在多達28.5Gbps的修復頻寬的短脈衝中),對於100MB源物件,具有160,000年的丟失任何來源資料的平均時間(MTTDL),或者對於2GB源物件,具有1,600,000年的MTTDL。相比之下,對於使用大糾刪碼的懶惰修復策略、提供2143個源片段和857個修復片段(提供了與所模擬的反應式修復策略的修復管理負擔相匹配的修復管理負擔的配置)、修復頻寬限制於7.96Gbps的模擬,修復策略不斷地在執行修復(亦即,以7.96Gbps的穩定的修復頻寬速率),對於100MB和2GB源物件二者,均具有10,000,000年的丟失任何來源資料的平均時間(MTTDL)(亦即,MTTDL超過了模擬的持續時間)。對於使用大糾刪碼的懶惰修復策略、提供2625個源片段和375個修復片段(亦即,使用比所模擬的反應式修復策略顯著更小的修復管理負擔)、修復頻寬限制於20.8Gbps的模擬,修復策略不斷地在執行修復(亦即,以穩定的20.8Gbps的修復頻寬速率),對於100MB和2GB源物件二者,均具有10,000,000年的丟失任何來源資料的平均時間(MTTDL)(亦即,MTTDL再次超過了模擬的持續時間)。
經由前述的模擬可以容易地看到,即使允許大量的短脈衝頻寬以促進實現對源物件的反應式修復,所模擬的反應式修復策略中亦沒有任何一個提供了滿足由所模擬的懶惰修復策略提供的可靠性的解決方案。在操作中,使用大糾刪碼的懶惰修復策略從用於修復的可用頻寬中消耗固定的頻寬量,或者消耗在時間窗口上平均化為最多該固定的頻寬量的修復頻寬量,其中頻寬的此種平滑的消耗或者靈活的消耗,對儲存系統內的資料存取具有很小的影響,因為該平均量是可用頻寬的一小部分,或者是在對共享頻寬的其他程序(例如存取程序或儲存程序)不具有負面影響的時間使用頻寬。此外,經由不同的儲存節點失效模式或者節點失效的時序,在來自修復頻寬使用的影響態樣沒有變化。相比之下,使用小糾刪碼的反應式恢復策略在不可預測的時間消耗大的頻寬短脈衝(亦即,受失效事件的控制)。此種頻寬是共享的資源(例如,由儲存系統內的儲存操作和存取操作共享),並且因此該等短脈衝對資料存取會具有負面影響,其中對此種資料存取的影響根據儲存節點失效模式而不同。此外,經由上面的模擬可以看到,儘管反應式修復策略的可靠性明顯受到源物件大小的影響,但是由所模擬的懶惰修復策略提供的可靠性不受源物件大小的影響。
下文的表格描述了在使用反應式修復策略的小糾刪碼解決方案和使用懶惰修復策略的大糾刪碼解決方案之間的一些定性區別。小糾刪碼解決方案對間歇失效閥值T的值的增加敏感。若T增加x倍,則通常MTTDL下降x r-1倍。因此,例如 對於具有r=4的小糾刪碼解決方案,若T從30分鐘增加到24小時,則對應的MTTDL下降超過100,000倍。相比之下,根據本文概念,對於使用懶惰修復策略的大糾刪碼解決方案,T從30分鐘增加到24小時的影響是很小的。
此外,小糾刪碼解決方案對儲存系統中物件的數量敏感。這是因為用於每個物件的片段是獨立於其他物件而儲存在隨機選擇的小的節點集合上的。因此,對於所儲存的相同的來源資料總量,與使用較大並且較少數量的物件相比,使用較小並且較多數量的物件將片段更加分散在節點中。因此,當存在更多的物件時,有更大的機會物件是在失效的、特定的小的節點集合中的各個節點上具有片段,從而造成該物件的永久丟失。對於小糾刪碼解決方案,因此在物件大小和MTTDL之間存在折衷,由此,更多數量的小物件導致更小的MTTDL但是允許對來源資料進行更精細的修復和存取。然而,大糾刪碼解決方案對儲存系統中物件的數量或大小不敏感。
此外,小糾刪碼解決方案對儲存節點的將來失效敏感,因為僅僅幾個儲存節點的失效會造成永久的來源資料丟失。因此,反應式修復策略可以操作用於:在短的時間段內突然地提高所使用的修復頻寬量,以恢復資料並且防止將來的來源資料丟失。例如,在大部分時間內,需要修復的來源資料的數量經常是零或者非常小,直到偵測到節點失效,此時修復頻寬在一段時間內非常高。對於大糾刪碼解決方案,修復頻寬可以以平滑得多的方式來調整(例如,根據本文所 描述的概念和技術來調整修復頻寬)。
如先前所論述的,提供流動分散式儲存控制的實施例實現了一種資料組織,本文中被稱為交錯資料組織,即使當使用大糾刪碼時,其亦允許對所有來源資料的高效存取。為了說明理解實施例的交錯資料組織,下文針對(nkr)糾刪碼對其進一步詳細描述。示例性的糾刪碼使用小的符號大小(例如,Ssize=64位元組),其中源塊的大小是Bsize=kSsize。根據實施例,大小Osize的源物件可以劃分成個 源塊,並且對每個此種源塊獨立地進行糾刪編碼形成n個源符號。根據物件來產生的n個片段之每一者片段可以與ESI相關聯,並且為了簡單起見,假設ESI是:0至k-1,對應於k個源片段;及kn-1,對應於r=n-k個修復片段。對於每個i=0至n-1,實施例的片段i包括對具有ESI iN個符號的連結,其中ESI i是根據物件的N個連續源塊之每一者源塊來產生的。
根據本文實施例而使用的交錯資料組織具有幾個相關特性。例如,可以在物件到達時,在執行中(on-the-fly)產生用於物件的片段。具體而言,在根據實施例的操作中,當物件的接下來的Bsize個位元組到達以形成下一個源塊時, 可以向該源塊應用糾刪編碼以產生n個符號,並且具有ESI i的符號被附加到片段i
類似地,藉由從與物件相關聯的n個片段中的至少k個片段讀取適當的符號,可以高效地存取該物件的源塊大小的組塊。因此,至少當組塊大小至少是Bsize時,為了存取物件的組塊而要讀取的資料量是組塊的大小。
應當了解,只要用於物件(組塊是該物件的一部分)的k個片段可用,就可以高效地(同時在時間和所讀取的資料量方面)存取組塊。此外,藉由在最先k個片段到達時就從大於k個片段中讀取並進行恢復,可以提高存取速度。
假設,例如由應用請求物件的位元組[ss+1至e]的組塊,其中C=e-s+1是以位元組為單位的組塊大小。為了滿足該請求,可以從儲存系統中恢復物件的源塊[i s i e ],其中 並且。為了恢復物件的源塊[i s i e ],可以 從用於物件的至少k個片段之每一者片段讀取位元組[i s Ssize至(i e +1).Ssize-1]。
經由前述內容可以了解,對於實現諸如本文所描述的儲存系統100和200之類的儲存系統,交錯資料組織是有用的。此外,交錯資料組織在多個其他應用中是有用的,例如同級間檔共享和資料串流應用,等等。
應當了解,存在可以參照本文所描述的示例性實施例而採用的許多變型。例如,每個片段可以使用一個以上的ESI(例如,片段可以具有來自每個源塊的一個以上的符號,例如,具有不同ESI的相同數量G的符號可以與每源塊的每個 片段或者物件或者資料串流相關聯)。此種實施例對於減小相對編碼管理負擔、提高糾刪碼對特定的節點丟失模式的彈性等等可能是有利的。
舉另一個變型的例子,與物件或資料串流相關聯的片段可以是可變大小的(亦即,不同的片段攜帶來自源塊之每一者源塊的不同數量的符號)。此種實施例對於跨越儲存節點負載均衡資料可能是有用的。例如,與較小容量的儲存節點相比,可以向大容量的儲存節點可以分配具有每源塊更多符號的片段(例如,被分配給片段的每源塊的符號數量可以與要在其上儲存片段的儲存節點的儲存容量成比例)。另外地或替代地,可以向與物件或者資料串流相關聯的所有片段被分配每源塊相同的符號數量,並且隨後根據儲存節點的相對容量,不同數量的片段儲存在儲存節點上。例如,具有4百萬百萬位元元組容量的儲存節點可以儲存每物件或資料串流兩個片段,具有8百萬百萬位元元組容量的儲存節點可以儲存四個片段,而具有14百萬百萬位元元組容量的儲存節點可以儲存七個片段。
在另一個變型中,可以使用(nkr)糾刪碼,其中n不等於M。例如,M個儲存節點的集群可以劃分成較少節點的子集群,例如M=3000個儲存節點的集群中的s=100個節點形成子集群,其中子集群獨立於其他子集群來處理。在前述的例子中,M=3000個儲存節點可以劃分成均具有s=100個節點的30個子集群,並且每個物件可以被分配給一子集群並且使用被分佈到該子集群中的100個儲存節點的100個片段。替 代地,子集群可以使用儲存節點重疊的集合(例如,前述例子之每一者子集群可以被分配給100個儲存節點,但是所分配的儲存節點可以與被分配給其他子集群的儲存節點相重疊)。例如,可以這樣設計儲存系統,使得每個儲存節點加入d個子集群,並且每個子集群使用M個儲存節點中的s個儲存節點。若d=3並且s=100並且M=3000,則存在90個子集群,並且每個儲存節點在d=3個子集群中。根據實施例,儲存節點加入的子集群的數量可以取決於儲存節點的儲存容量(例如,更多的容量暗示著加入更多的子集群)。
在另一個變型中,每個源物件可以定義其自己的子集群(例如,對於獨立於其他源物件,隨機分佈在M=3000個儲存節點中每個源物件,n=100個片段)。然而,此種實現可能經歷較高的簿記成本,並且對於使用保證目標MTTDL的給定修復頻寬量來設計良好的修復策略可能更加困難。
根據一些實施例,當使用具有子集群的設計時,可以每子集群分配修復頻寬。替代地,可以全域地分配修復頻寬並且修復頻寬由用於子集群之每一者子集群的修復程序共享。無論是否使用子集群,皆可能存在許多修復程序,該等修復程序以分散式的方式同時工作,以提供針對集群的整體修復策略。
舉另一個變型的例子,由應用頻繁地或者大體同時存取的來源資料的組塊可以這樣來組織,使得在具有物件或資料串流的情況下其是連續的。這允許當存取此種資料的多個連續組塊時,從儲存節點讀取更大數量的連續片段。因此 ,頻繁地存取的資料組塊可以保留在快取記憶體中,並且當再次對其進行存取時避免後續地從儲存節點讀取片段。
在另一個變型中,EU設備可以使用針對一或多個存取伺服器的多個連接以用於資料存取及/或儲存。根據一些實施例,用於對資料進行編碼及/或解碼的功能可以置於EU設備中。在此種實施例中,對資料的糾刪編碼及/或糾刪解碼可以因此從上面所描述的示例性實施例的存取伺服器轉移到EU設備。可以使用此種配置以促進使用前面提到的、在EU設備和儲存網路的一或多個存取伺服器之間的多個連接。針對EU設備和儲存節點之間的資料通訊,此種配置的存取伺服器可以提供多工/解多工的作用。例如,存取伺服器可以支援與幾百甚至幾千的儲存節點進行通訊,而EU設備可以經由在10的數量級上的連接來支援與存取伺服器進行通訊。在操作中,EU設備可以使用至單個存取伺服器的多個連接(例如,多個TCP連接)以針對用於重建物件的資料提出位元組範圍請求(例如,HTTP 1.1位元組範圍請求),例如以使用並行連接來提供增加的下載速度。類似地,EU設備可以使用與多個存取伺服器的連接,例如使用提供不同資料速度的連接及/或針對各個存取伺服器請求不同的資料量的連接,來提供更高的聚合頻寬並減少存取時間。此種EU設備可以例如具有多個介面(例如,WiFi、LTE等等),由此,EU設備經由每個此種介面的不同的一個介面,連接到不同的存取伺服器。
在根據其中EU設備使用至一或多個存取伺服器的多個連接的實施例的操作中,EU設備可以向存取伺服器提出 請求,類似於上面所描述的實施例。然而,EU設備可以經由不同的連接來請求不同片段、經由相同的連接來請求多個片段、經由不同的連接來請求片段的組塊,等等。EU設備可以因此包括多工功能,該多工功能可操作用於:對用於向糾刪解碼器提供資料的回應進行組合。在此種實施例中,存取伺服器可以接受來自EU設備的請求,形成並提出針對來自儲存節點的片段的部分的請求,對來自儲存節點的回應進行多工處理,以形成對EU設備請求的回應,並且向EU設備提供該等回應。根據該示例性的實施例,可以經由多個連接向EU設備提供多個回應,而不是來源資料回應於請求而作為流來到EU設備。
圖14A-圖14D根據實施例,圖示由EU設備經由多個連接來存取資料的一部分。在所示出的例子中,期望的來源資料可以是整體物件的一部分(例如,物件可以包括符號0-59的資料,而期望的資料包括符號10-44的資料,其中每個符號是Ssize大小)。根據實施例的交錯資料結構的實現,在圖14A中所示出的例子中,符號的每一列包括一個源塊(亦即,在所示出的例子中,一個源塊包括5個源符號(k=5),其中該等列中的另外3個符號包括根據對應列中的源符號的源塊來產生的修複合符號)。在所示出的例子中,由於EU設備僅對來自符號10-44的資料的部分感興趣,因此僅請求了根據源物件的該部分來產生的資料,其包括符號10-44的資料,以及與所請求的源塊之每一者源塊相對應的修複合符號(亦即,修複合符號(5,2)、(6,2)、(7,2)、(5,3)、(6,3)、( 7,3)、(5,4)、(6,4)、(7,4)、(5,5)、(6,5)、(7,5)、(5,6)、(6,6)、(7,6)、(5,7)、(6,7)、(7,7)、(5,8)、(6,8)和(7,8))。在操作中,EU設備可以請求用於物件的該部分的所有來源資料,該資料從符號10到符號44(亦即,在圖14的圖示中與ESI 0、ESI 1、ESI 2、ESI 3和ESI 4相關聯的、B2至B8列的部分),並且在該例子中所有的修復資料可用(亦即,與ESI 5、ESI 6和ESI 7相關聯的、B2至B8列的部分)。假定在該例子中EU設備正在使用2個連接,則EU設備可以將請求分解為2個請求(例如,經由第一連接來請求與ESI 0、ESI 1、ESI 2、ESI 3相關聯的片段的部分,並且經由第二連接來請求與ESI 4、ESI 5、ESI 6和ESI 7相關聯的片段的部分)。
圖14B圖示由EU設備使用至相同的存取伺服器的多個連接(亦即,在所示出的例子中的2個連接,示出為連接1401和1402),來對所請求的資料進行下載並解碼。如在圖14B中所示出的例子中可以看到的,EU設備經由連接1401來請求具有編碼符號ID 0-3的片段的部分,並且經由連接1402來請求具有編碼符號ID 4-7的片段的部分。存取伺服器轉而針對片段的適當部分對特定的儲存節點提出請求。然而,在該例子中,儲存片段1的儲存節點和儲存片段5的儲存節點已經失效。因此,存取伺服器從儲存節點接收用於片段0、2-4、6和7的資料並且對該資料進行聚合,以提供對來自EU設備的請求的回應(例如,對來自片段0、2和3的資料的適當部分進行聚合並經由連接1401來提供,並且對來自片段4、6和7的資料的適當部 分進行聚合並經由連接1402來提供)。
圖14C圖示由EU設備使用至不同存取伺服器的多個連接(亦即,在所示出的例子中的2個連接,示出為連接1403和1404),來對所請求的資料進行下載並解碼。如在圖14C中所示出的例子中可以看到的,EU設備經由連接1403來請求具有編碼符號ID 0-3的片段的部分,並且經由連接1404來請求具有編碼符號ID 4-7的片段的部分。存取伺服器轉而針對片段的適當部分對特定的儲存節點提出請求。在該例子中,儲存片段1的儲存節點和儲存片段5的儲存節點已經失效。因此,存取伺服器110-1從儲存節點接收用於片段0、2、3的資料並對資料進行聚合,以提供對來自EU設備的請求的回應(例如,對來自片段0、2和3的資料的適當部分進行聚合並經由連接1403來提供)。類似地,存取伺服器110-2從儲存節點接收用於片段4、6和7的資料並對該資料進行聚合,以提供對來自EU設備的請求的回應(例如,對來自片段4、6和7的資料的適當部分進行聚合並經由連接1404來提供)。
圖14D圖示由存取伺服器經由上面例子的2個連接來提供的回應的例子。繼續前面提到的例子,要重建的來源資料包括符號10-44的資料,其中每個符號是Ssize大小。如在所示出的例子中可以看到的,由於儲存片段1的源節點失效,因此經由第一連接(例如,圖14B的連接1401或者圖14C的連接1403)來提供的回應僅包括具有編碼符號ID 0、2和3的符號。類似地,由於儲存片段5的源節點失效,因此經由第二連接(例如,圖14B的連接1402或者圖14C的連接1404)來提供的 回應僅包括具有編碼符號ID 4、6和7的符號。然而,在該等回應中所提供的修復資料促進從各個回應中恢復期望的來源資料。
根據實施例,EU設備經由多個連接向儲存系統儲存資料的操作與前述的多個連接資料存取例子相似。EU設備可以例如使用至單個存取伺服器的多個連接來向儲存網路儲存資料,例如以提供增加的資料上傳速度。例如,EU設備可以使用至存取伺服器的多個TCP連接,以進行用於源物件的資料的HTTP 1.1位元組範圍發佈(post)。另外地或替代地,EU設備可以使用至不同存取伺服器的多個連接來向儲存網路儲存資料,例如以提供更高的聚合頻寬從而減少儲存時間。根據實施例,至任意此種不同的存取伺服器的連接的速度可以與其他存取伺服器不同,並且因此,向每個此種存取伺服器發佈的資料量可以不同。在提供前面提到的多個連接中,EU設備可以使用多個介面(例如,WiFi、LTE等等),由此,EU設備可以使用此種介面中的不同的一個介面來連接到不同的存取伺服器。
與EU設備使用多個連接從儲存系統存取資料的實施例、EU設備使用多個連接向儲存系統儲存資料的實施例一樣,用於對資料進行編碼及/或解碼的功能可以置於EU設備中。因此,EU設備可以操作用於:對來源資料進行糾刪編碼並形成多個發佈,以經由多個連接上傳經編碼的資料(例如,可以經由每個連接上傳一或多個片段串流)。在根據實施例的操作中,EU設備根據所使用的連接,對來自糾刪編碼器的 資料進行分割。EU設備可以例如經由不同的連接發佈不同的片段、經由相同的連接發佈多個片段、在不同的發佈中包括片段的組塊,等等。相應地,應用伺服器可以操作用於:接受來自EU設備的發佈,並且形成針對片段的部分的發佈並且向各個儲存節點進行發佈。
在前述內容的另一個變型中,可以存在分層次的存取伺服器。例如,可以存在兩種水平的存取伺服器,其中EU設備向第一水平存取伺服器提出針對源物件的一部分的請求,並且其中第一水平存取伺服器向多個第二水平存取伺服器提出請求,其中從第一水平存取伺服器到第二水平存取伺服器的每個請求包括針對與源物件的所請求的部分相對應的、片段的複數個部分的請求,並且其中第二水平存取伺服器向儲存片段的複數個部分中的片段的該部分的每個儲存節點提出請求。因此,當每個儲存節點回應於來自第二水平存取伺服器的請求而提供片段的該部分時,第二水平存取伺服器對其接收的回應進行組合,並且將其作為回應提供給第一水平存取伺服器。第一水平存取伺服器從第二水平存取伺服器接收回應,若必要的話,進行糾刪解碼以恢復所請求的來源資料的部分,並且回應於來自EU設備的原始請求,向EU設備提供源物件的所請求的部分。舉例而言,考慮一種儲存系統,第一水平存取伺服器並且具有30個機架的伺服器,並且在每個機架記憶體在40個儲存節點和至少一個第二水平存取伺服器(其可以與儲存節點重合)。第一水平存取伺服器可以建立30個連接,針對30個機架的伺服器之每一者機架內的第二 水平存取伺服器之每一者第二水平存取伺服器來建立一個連接,並且可以向第二水平存取伺服器提出針對片段(的部分)的請求,該等片段儲存在與第二水平存取伺服器相同的機架內的儲存節點處。轉而,每個第二水平存取伺服器可以建立40個連接,針對與第二水平存取伺服器相同的機架內的40個儲存節點之每一者儲存節點來建立一個連接,並且可以向儲存節點提出針對片段的部分的請求,該等片段儲存在由第一水平存取伺服器向第二水平存取伺服器所請求的儲存節點上。使用該實施例,第一水平存取伺服器僅經由30個連接進行通訊,並且第二水平存取伺服器均經由40個連接進行通訊,與本文所描述的平的層次的實施例相對,在平的層次的實施例中,存取伺服器建立1200個連接,針對儲存系統的儲存節點之每一者儲存節點來建立一個連接。如本領域技藝人士將認識到的,存在該實施例的許多變型,包括大於兩種水平的層次,包括第一水平存取伺服器與每個機架內一個以上的第二水平存取伺服器建立連接,包括連接的其他可能拓撲結構,等等。
在另一個變型中,流動分散式儲存解決方案可以結合本文中被稱為熱儲存系統的互補儲存系統來使用。例如,如圖14E中所示出的,流動分散式儲存解決方案(其包括儲存節點130-1至130-M和存取伺服器110-1)具有與熱儲存系統(其包括熱儲存節點1420-1至1420-N)的網路連接。在該實施例中,熱儲存系統的熱儲存節點1420-1至1420-N將源物件以其原始未修改的形式進行儲存(例如,在熱儲存節點1420-1 至1420-N中的一個節點上連續地儲存每個源物件)。EU設備(未圖示)可以對儲存在熱儲存系統的熱儲存節點上的源物件進行儲存和存取。熱儲存系統可以具有至EU設備的高頻寬連接,並且因此,EU設備可以對熱儲存系統中的資料進行迅速地存取或儲存。此外,可以跨越熱儲存節點1420-1至1420-N,以分散式的方式來執行單獨作業,對原始的源物件的資料進行操作。例如,單獨作業可能是跨越整個熱儲存系統執行的分散式MAP REDUCE程序的一部分,例如以Hadoop分散式儲存系統中的此種程序為例。在此種情況下,執行分散式MAP REDUCE程序是直接明瞭的,因為熱儲存節點1420-1至1420-N儲存源物件的未修改版本,MAP REDUCE作業可以對其進行直接處理。
熱儲存系統可以在流動分散式儲存系統中儲存源物件的可靠的備份副本(例如,熱儲存節點可以向存取伺服器提供該熱儲存節點儲存的源物件的副本,以便在流動分散式儲存系統內建立源物件的可靠的備份副本,在此種情況下,流動分散式儲存系統建立並儲存用於源物件的片段,該等片段儲存在儲存節點130-1至130-M中)。類似地,熱儲存系統的熱儲存節點可以存取先前儲存在流動分散式儲存系統中的源物件的備份副本(例如,藉由從存取伺服器請求源物件的副本,其中存取伺服器從儲存節點130-1至130-M取得足夠的片段,以恢復源物件並將其提供給進行請求的熱儲存節點)。在源物件的備份副本已經可靠地儲存在流動分散式儲存系統中之後,熱儲存系統可以從該熱儲存系統中刪除源物件, 從而釋放熱儲存系統中的儲存空間以便儲存其他源物件。若熱儲存節點臨時地或者永久地失效,則從失效的熱儲存節點丟失的、先前備份的源物件,可以從流動分散式儲存系統中恢復。例如,熱儲存節點失效可能觸發熱儲存節點恢復程序以決定哪些源物件丟失,並且隨後聯絡一或多個存取伺服器以向恢復程序所指定的熱儲存節點提供彼等丟失的源物件的副本。丟失的源物件的經恢復的副本可以跨越熱儲存節點均勻地分散(例如,每個經恢復的源物件可以儲存在單個熱儲存節點上,但是不同的經恢復的源物件可以儲存在不同的熱儲存節點上)。圖14E中圖示對此種例子的圖示,其中如所示出的,存取伺服器110-1正在從流動分散式儲存系統的儲存節點130-1至130-M讀取片段,以恢復物件並將恢復的物件發送給熱儲存節點1420-5和1420-6,而同時存取伺服器110-2正在從流動分散式儲存系統的儲存節點130-1至130-M讀取片段,以恢復物件並將恢復的物件發送給熱儲存節點1420-3和1420-N。
流動分散式儲存系統和熱儲存系統的此種組合的優點有許多。例如,流動分散式儲存系統提供對源物件的高度可靠的備份,並且因此,熱儲存系統不需要針對其儲存的物件提供完全可靠的儲存。流動分散式儲存系統亦提供對從不需要或者不再需要用於熱儲存系統內的立即處理(例如MAP REDUCE處理)的源物件的長期儲存,並且因此,該等物件從不或者不再儲存在熱儲存系統中。另一方面,熱儲存系統提供對未修改的源物件的立即分散式存取(包括針對諸如MAP REDUCE處理之類的分散式處理的存取),而不要求對源物件的可靠儲存,因為流動分散式儲存系統將對源物件的可靠儲存和存取作為服務提供給熱儲存系統。
儘管上面已經針對流動分散式儲存系統和互補儲存系統的組合,論述了實現互補儲存系統的實施例,但是應當了解,此種組合的儲存系統的概念並非受限於針對流動分散式儲存系統的應用。可以使用提供對用於一或多個源物件的冗餘資料的部分進行儲存的各種配置,來提供此種組合的儲存系統,例如可以實現不同種類的糾刪碼,例如小糾刪碼、大糾刪碼、tornado碼、低密度同位元碼、Reed-Solomon編碼、MDS碼等等,並且例如可以實現不同種類的修復策略,例如反應式修復策略、懶惰修復策略等等。
在另一個變型中,根據上面所論述的概念,可以針對同級間儲存網路配置來使用交錯資料組織。例如,可以與如圖15中所示出的同級間儲存系統來使用交錯資料組織,其中EU設備120與同級設備(例如,亦是EU設備)1520-1至1520-14進行通訊。此種同級間儲存系統可以被配置為:例如藉由使用被應用於源物件以產生片段的第一糾刪編碼程序(例如,第一前向糾錯(FEC)編碼程序),並且隨後使用第二糾刪編碼程序在同級設備之中分發片段,來向該等同級設備傳送源物件。相應地,可以這樣配置同級間儲存系統,使得第一同級設備能夠從多個其他同級設備同時下載根據片段來產生的資料。例如,其他同級設備之每一者同級設備向片段應用第二糾刪編碼,以產生資料並以此種方式將資料傳送給 第一同級設備:使得從所有其他同級設備向第一同級設備傳送的所有資料,在對片段的恢復中是加性的。例如,其他同級設備之每一者同級設備可以選擇並使用ESI範圍來根據片段產生經糾刪編碼的符號,使得其他同級設備中的所有同級設備的ESI範圍是不相交的(使用諸如RaptorQ碼之類的噴泉(fountain)糾刪碼,很容易使每個同級設備選擇並使用不與其他同級設備所選擇的ESI範圍相交的ESI範圍)。在提交給ICC 2015的「RaptorQP2P:Maximize the Performance of P2P File Distribution with RaptorQ Coding」(本文中被稱為「Daigle」)中,描述了此種同級間資料分發技術的例子。
在圖15中所示出的例子中,同時操作成同級間儲存網路中的資料接收方的EU設備120,正在試圖恢復片段0(在該例子中,片段0已經被分發給同級設備以便儲存)。在所示出的操作中,EU設備120與同級設備1520-8、1520-10和1520-13建立連接,以取得期望的片段。然而,如上面所描述的,同級設備例如使用諸如RaptorQ之類的噴泉碼,對資料進行糾刪編碼以便將其提供給EU設備120,而不是提供如所儲存的片段(或者其部分)。因此,使用編碼資料的噴泉特性,符號來自何處對EU設備120來說不重要,並且一旦接收設備從同級設備的任意組合接收到足夠的符號,就可以恢復片段0。
在Daigle中,第一糾刪編碼程序使用傳統的資料組織方案。在此種同級間儲存系統中,針對第一糾刪編碼程序使用交錯資料組織,可以使前述的資料存取操作變得高效。假設第一糾刪編碼程序使用交錯資料組織方案和具有參數(nkr)的糾刪碼,並且假設EU設備120已經恢復並在本機存放區中儲存了用於源物件的至少k個片段。隨後可以指示EU設備120從本機存放區的片段中恢復源物件的全部或者部分。例如,可以指示EU設備120從物件的開頭至結尾、順序地存取源物件(例如,因為源物件包括視訊檔,並且最終使用者想要在EU設備120的螢幕上觀看視訊檔的重播)。在解碼和讀取與所恢復的源物件的部分的大小成比例的片段資料的總量中,EU設備120可以使用小的儲存量(例如,與交錯資料組織方案中所使用的源塊大小成比例的儲存量),來讀取至少k個恢復的片段的順序部分,並且對源物件的對應的順序部分進行糾刪解碼,而獨立於n個片段中的哪些k個片段用於解碼。在此種情況下,EU設備120可以不將源物件的恢復的部分寫入本機存放區,因為源物件的恢復部分可以直接地被送入視屏播放機以便重播。若期望將恢復的源物件儲存在本機存放區中,則EU設備120可以另外地或替代地將恢復的源物件在其被恢復時順序地寫入本機存放區設備。
與第一糾刪編碼程序一起使用交錯資料組織,亦允許EU設備120迅速地並且高效地重建源物件的任意部分,因此若源物件是由視訊檔構成的,則使得能夠在EU設備120處高效地播放視訊內容。相比之下,若使用傳統的資料組織方案,則若要恢復的源物件的部分是沒有由EU設備120接收並本端地儲存的源片段的一部分,則會要求EU設備120讀取恢復的源物件的部分的大小的k倍。因此,使得EU設備120能夠順序地恢復並重播包括視訊檔的源物件,或者能夠順序地恢復源物 件並寫入本機存放區,或者能夠恢復源物件的任意部分,在使用傳統的資料組織方案時沒有在使用交錯資料組織方案時高效。因此,針對諸如圖15中所示出的同級間儲存網路來實現交錯資料組織,提供了比傳統的資料組織方案具優勢的多個優點。
801‧‧‧框
802‧‧‧框
803‧‧‧框
804‧‧‧框

Claims (60)

  1. 一種用於存取一源物件的來源資料的方法,該源物件儲存成跨越一儲存系統的多個儲存節點分佈的多個片段,其中該多個片段中的一或多個片段包括該源物件的冗餘資料,該方法包括:從該多個儲存節點中的複數個儲存節點讀取該多個片段中的複數個片段的資料,以存取該來源資料的一請求的部分,其中該多個片段中的至少一個片段的資料是由該多個儲存節點使用一資料組織來儲存的,該資料組織連結來自該源物件的多個源塊,以便在該源物件的該多個片段中的複數個片段之每一者片段中包括每個源塊的一符號;及根據從該複數個儲存節點讀取的該複數個片段的該資料,對該來源資料的該部分進行糾刪解碼。
  2. 根據請求項1之方法,其中僅修復片段儲存在該儲存系統中。
  3. 根據請求項1之方法,其中從該複數個儲存節點讀取的該複數個片段的該資料的一數量基本等於該來源資料的所請求的部分的一大小。
  4. 根據請求項3之方法,其中該多個片段中不屬於該複數個片段的至少一個片段包括來源資料的所請求的部分的至少一部分,由此,該讀取該複數個片段的資料不從該至少一個片 段讀取資料。
  5. 根據請求項1之方法,其中在用於該來源資料的所請求的部分的該資料中的至少一些資料被讀取之前,該糾刪解碼提供該來源資料的所請求的部分的一經解碼的部分。
  6. 根據請求項1之方法,其中該存取來源資料是由一最終使用者(EU)設備進行的,該方法亦包括:從該EU設備接收用於存取該來源資料的一部分的一請求;及回應於該請求,向該EU設備提供該來源資料的該部分。
  7. 根據請求項1之方法,亦包括:將該來源資料作為一資料串流進行接收;當該來源資料串流到達時,對該來源資料串流進行糾刪編碼以產生經編碼的一資料串流;當該經編碼的資料串流正在被產生時,根據該經編碼的資料串流來產生該多個片段作為複數個輸出片段串流;及當該複數個輸出片段串流正在被產生時,將該多個片段作為該輸出片段串流的各個輸出片段串流寫入該儲存節點,其中該輸出片段串流中的各個輸出片段串流的一第一部分與該源物件的第一部分相對應,並且在該源物件的第二部分已經被接收之前,被寫入該儲存節點。
  8. 根據請求項7之方法,其中當與該源物件的該第一部分相對應的該複數個片段串流的一部分已經被寫入儲存節點時,該源物件的一大小是未知的。
  9. 根據請求項7之方法,其中該冗餘資料是使用(nkr)糾刪碼、根據該來源資料來產生的,其中該複數個輸出片段串流的片段串流的一數量是n
  10. 根據請求項7之方法,其中該冗餘資料是使用(nkr)糾刪碼,根據該來源資料來產生的,其中該存取來源資料是回應於來自該修復程序的、用於為該源物件產生修復資料的一請求的,其中該讀取複數個片段的資料包括:讀取被寫入儲存節點的該複數個輸出片段中的至少k個片段之每一者片段作為輸入片段串流,並且其中該對來源資料的該部分進行糾刪解碼包括:當該k個輸入片段串流正在被讀取時,對該k個輸入片段串流進行糾刪解碼以產生用於該源物件的一來源資料串流,其中在與該物件的該第二部分相對應的該輸入片段串流的一部分從儲存節點被讀取之前,與該源物件的該第一部分相對應的該輸出片段串流的一部分被寫入該節點。
  11. 根據請求項7之方法,其中該源物件亦包括一第三部分,其中該源物件的該第三部分在該物件的該第一部分之後並且在該源物件的該第二部分之前,其中在該第一部分被寫入該儲存節點之後並且在該源物件的該第二部分已經被接收之前 ,對該源物件的該第三部分進行糾刪編碼,並且其中該源物件的該第三部分的一大小遠遠小於該源物件的一大小。
  12. 根據請求項1之方法,其中該存取來源資料是由用於為該源物件產生修復資料的一修復程序進行的,該方法亦包括:使用一(nkr)糾刪碼,根據該來源資料來產生該修復資料,其中該來源資料被組織成來源資料的連續源塊,其中該來源資料的一大小比該源塊的一大小大得多,其中該修復程序按順序處理來源資料的該源塊之每一者源塊,其中由該修復程序進行的該處理包括:對於至少k個儲存節點之每一者儲存節點,存取與該來源資料的該源塊相對應的、儲存在該儲存節點上的該片段資料的一部分;使用糾刪解碼,從該片段資料的所存取的部分中恢復該來源資料的該源塊;使用糾刪編碼,根據該來源資料的該源塊來產生片段資料的至少一個部分;及對於針對其產生片段資料的一部分的每個儲存節點,將片段資料的所產生的部分儲存在該儲存節點上,其中儲存在該多個儲存節點之每一者節點上的該來源資料的資料被組織成片段資料的連續部分,其中片段資料的該連續部分是根據該來源資料的該連續源塊來產生的。
  13. 根據請求項12之方法,其中在該修復程序已經完成了對 該來源資料的一最後源塊的處理之後,該修復程序在該來源資料的一第一源塊處再次開始。
  14. 根據請求項12之方法,其中該修復程序存取和儲存該儲存節點上的資料的一聚合速率被限制為低於值R,該值R取決於一值β和一值μ,其中β是該儲存系統的資料冗餘度的分數,並且其中μ是資料從該儲存系統的該儲存節點丟失的一平均速率。
  15. 根據請求項14之方法,其中該聚合速率是一聚合讀取和寫入速率。
  16. 根據請求項14之方法,其中該聚合速率是一聚合讀取速率。
  17. 根據請求項12之方法,其中若在該儲存節點上存在比與來源資料的特定源塊相對應的片段資料的部分的預先決定的一數量多的部分可用,則對於該來源資料的該特定源塊,跳過由該修復程序對該來源資料的該特定源塊的該處理。
  18. 根據請求項1之方法,其中該儲存系統包括一同級間儲存系統配置,並且其中該多個儲存節點包括與存取該來源資料的一設備同級的設備。
  19. 根據請求項18之方法,其中該讀取該多個片段中的複數個片段的資料包括:在一同級設備處恢復並本端地儲存該複數個片段之每一者片段,其中該對來源資料的該部分進行糾刪解碼包括:存取本端地儲存在該同級設備處的該複數個片段的部分,其中該複數個片段的所存取的部分的一聚合大小基本等於來源資料的該部分的大小,並且其中該對來源資料的該部分進行糾刪解碼包括:在該同級設備處,根據該複數個片段的所存取的部分,對來源資料的該部分進行糾刪解碼,其中由該同級設備用於糾刪解碼的記憶體遠遠小於來源資料的該部分的該大小。
  20. 根據請求項1之方法,其中該儲存系統是一組合的儲存系統配置,其包括:將該源物件儲存成跨越該多個儲存節點分佈的多個片段的冗餘資料儲存系統,以及以該源物件的原始未修改的形式來儲存該源物件的一互補儲存系統。
  21. 根據請求項20之方法,其中該讀取該複數個片段的資料以及該根據讀取的該複數個片段的該資料對來源資料的該部分進行糾刪解碼,向該互補儲存系統提供了對該冗餘資料儲存系統所儲存的該源物件的資料的一備份副本的存取。
  22. 根據請求項21之方法,其中一最終使用者(EU)設備經由該互補儲存系統來存取該源物件的資料。
  23. 根據請求項20之方法,其中該互補儲存系統以一分散式的方式跨越該互補儲存系統的儲存節點執行針對該源物件的單獨作業。
  24. 根據請求項20之方法,亦包括:在該源物件的一備份副本已經可靠地儲存在該冗餘資料儲存系統中之後,從該互補儲存系統中刪除該源物件。
  25. 一種用於存取一源物件的來源資料的裝置,該源物件儲存成跨越一儲存系統的多個儲存節點分佈的多個片段,其中該多個片段中的一或多個片段包括該源物件的冗餘資料,該裝置包括:一或多個資料處理器;及一或多個包含程式碼的非暫時性電腦可讀取儲存媒體,該程式碼被配置為使該一或多個資料處理器執行包括以下各項的操作:從該多個儲存節點中的複數個儲存節點讀取該多個片段中的複數個片段的資料,以存取該來源資料的一請求的部分,其中該多個片段中的至少一個片段的資料是由該多個儲存節點使用一資料組織來儲存的,該資料組織連結來自該源物件的多個源塊,以便在該源物件的該多個片段中的複數個片段之每一者片段中包括每個源塊的一符號;及根據從該複數個儲存節點讀取的該複數個片段的該 資料,對該來源資料的該部分進行糾刪解碼。
  26. 根據請求項25之裝置,其中從該複數個儲存節點讀取的該複數個片段的該資料的一數量基本等於該來源資料的所請求的部分的一大小。
  27. 根據請求項26之裝置,其中該多個片段中不屬於該複數個片段的至少一個片段包括來源資料的所請求的部分的至少一部分,由此,該讀取該複數個片段的資料不從該至少一個片段讀取資料。
  28. 根據請求項25之裝置,其中在用於該來源資料的所請求的部分的該資料中的至少一些資料被讀取之前,該糾刪解碼提供該來源資料的所請求的部分的一經解碼的部分。
  29. 根據請求項25之裝置,其中該存取來源資料是由一最終使用者(EU)設備進行的,其中該程式碼被配置為使該一或多個資料處理器亦執行包括以下各項的操作:從該EU設備接收用於存取該來源資料的一部分的一請求;及回應於該請求,向該EU設備提供該來源資料的該部分。
  30. 根據請求項25之裝置,其中該程式碼被配置為使該一或多個資料處理器亦執行包括以下各項的操作: 將該來源資料作為一資料串流進行接收;當該來源資料串流到達時,對該來源資料串流進行糾刪編碼以產生經編碼的一資料串流;當該經編碼的資料串流正在被產生時,根據該經編碼的資料串流來產生該多個片段作為複數個輸出片段串流;及當該複數個輸出片段串流正在被產生時,將該多個片段作為該輸出片段串流的各個輸出片段串流寫入該儲存節點,其中該輸出片段串流中的各個輸出片段串流的一第一部分與該源物件的一第一部分相對應,並且在該源物件的一第二部分已經被接收之前,被寫入該儲存節點。
  31. 根據請求項30之裝置,其中當與該源物件的該第一部分相對應的該複數個片段串流的一部分已經被寫入儲存節點時,該源物件的大小是未知的。
  32. 根據請求項30之裝置,其中該冗餘資料是使用一(nkr)糾刪碼,根據該來源資料來產生的,其中該複數個輸出片段串流的片段串流的一數量是n
  33. 根據請求項30之裝置,其中該冗餘資料是使用一(nkr)糾刪碼,根據該來源資料來產生的,其中該存取來源資料是回應於來自該修復程序的、用於為該源物件產生修復資料的一請求的,其中該讀取複數個片段的資料包括:讀取被寫入儲存節點的該複數個輸出片段中的至少k個片段之每一 者片段作為一輸入片段串流,並且其中該對來源資料的該部分進行糾刪解碼包括:當該k個輸入片段串流正在被讀取時,對該k個輸入片段串流進行糾刪解碼,以產生用於該源物件的一來源資料串流,其中在與該物件的該第二部分相對應的該輸入片段串流的部分從儲存節點被讀取之前,與該源物件的該第一部分相對應的該輸出片段串流的一部分被寫入該節點。
  34. 根據請求項30之裝置,其中該源物件亦包括一第三部分,其中該源物件的該第三部分在該物件的該第一部分之後並且在該源物件的該第二部分之前,其中在該第一部分被寫入該儲存節點之後並且在該源物件的該第二部分已經被接收之前,對該源物件的該第三部分進行糾刪編碼,並且其中該源物件的該第三部分的一大小遠遠小於該源物件的一大小。
  35. 根據請求項25之裝置,其中該存取來源資料是由用於為該源物件產生修復資料的一修復程序進行的,其中該程式碼被配置為使該一或多個資料處理器亦執行包括以下各項的操作:使用一(nkr)糾刪碼,根據該來源資料來產生該修復資料,其中該來源資料被組織成來源資料的連續源塊,其中該來源資料的一大小比該源塊的一大小大得多,其中該修復程序按順序處理來源資料的該源塊之每一者源塊,其中由該修復程序進行的該處理包括: 對於至少k個儲存節點之每一者儲存節點,存取與該來源資料的該源塊相對應的、儲存在該儲存節點上的該片段資料的一部分;使用糾刪解碼,從該片段資料的所存取的部分中恢復該來源資料的該源塊;使用糾刪編碼,根據該來源資料的該源塊來產生片段資料的至少一個部分;及對於針對其產生片段資料的一部分的每個儲存節點,將片段資料的所產生的部分儲存在該儲存節點上,其中儲存在該多個儲存節點之每一者節點上的該來源資料的資料被組織成片段資料的連續部分,其中片段資料的該連續部分是根據該來源資料的該連續源塊來產生的。
  36. 根據請求項35之裝置,其中該修復程序存取和儲存該儲存節點上的資料的一聚合速率被限制為低於一值R,該值R取決於一值β和一值μ,其中β是該儲存系統的資料冗餘度的分數,並且其中μ是資料從該儲存系統的該儲存節點丟失的一平均速率。
  37. 根據請求項36之裝置,其中該聚合速率是一聚合讀取和寫入速率。
  38. 根據請求項36之裝置,其中該聚合速率是一聚合讀取速率。
  39. 根據請求項35之裝置,其中若在該儲存節點上存在比與來源資料的特定源塊相對應的片段資料的部分的預先決定的一數量多的部分可用,則對於該來源資料的該特定源塊,跳過由該修復程序對該來源資料的該特定源塊的該處理。
  40. 根據請求項25之裝置,其中該儲存系統包括一同級間儲存系統配置,並且其中該多個儲存節點包括與存取該來源資料的一設備同級的設備。
  41. 根據請求項40之裝置,其中該讀取該多個片段中的複數個片段的資料包括:在一同級設備處恢復並本端地儲存該複數個片段之每一者片段,其中該對來源資料的該部分進行糾刪解碼包括:存取本端地儲存在該同級設備處的該複數個片段的部分,其中該複數個片段的存取的部分的一聚合大小基本等於來源資料的該部分的大小,並且其中該對來源資料的該部分進行糾刪解碼包括:在該同級設備處,根據該複數個片段的所存取的部分,對來源資料的該部分進行糾刪解碼,其中由該同級設備用於糾刪解碼的記憶體遠遠小於來源資料的該部分的該大小。
  42. 根據請求項25之裝置,其中該儲存系統是一組合的儲存系統配置,其包括:將該源物件儲存成跨越該多個儲存節點分佈的多個片段的一冗餘資料儲存系統,以及以該源物件的 原始未修改的形式來儲存該源物件的一互補儲存系統。
  43. 根據請求項42之裝置,其中該讀取該複數個片段的資料以及該根據讀取的該複數個片段的該資料對來源資料的該部分進行糾刪解碼,向該互補儲存系統提供了對該冗餘資料儲存系統所儲存的該源物件的資料的一備份副本的存取。
  44. 根據請求項43之裝置,其中一最終使用者(EU)設備經由該互補儲存系統來存取該源物件的資料。
  45. 根據請求項42之裝置,其中該互補儲存系統以一分散式的方式跨越該互補儲存系統的儲存節點執行針對該源物件的單獨作業。
  46. 根據請求項42之裝置,其中該程式碼被配置為使該一或多個資料處理器亦執行包括以下各項的操作:在該源物件的一備份副本已經可靠地儲存在該冗餘資料儲存系統中之後,從該互補儲存系統中刪除該源物件。
  47. 一種用於存取一源物件的來源資料的裝置,該源物件儲存成跨越一儲存系統的多個儲存節點分佈的多個片段,其中該多個片段中的一或多個片段包括該源物件的冗餘資料,該裝置包括:用於從該多個儲存節點中的複數個儲存節點讀取該多個 片段中的複數個片段的資料,以存取該來源資料的一請求的部分的手段,其中該多個片段中的至少一個片段的資料是由該多個儲存節點使用一資料組織來儲存的,該資料組織連結來自該源物件的多個源塊,以便在該源物件的該多個片段中的複數個片段之每一者片段中包括每個源塊的一符號;及用於根據從該複數個儲存節點讀取的該複數個片段的該資料,對該來源資料的該部分進行糾刪解碼的手段。
  48. 根據請求項47之裝置,其中從該複數個儲存節點讀取的該複數個片段的該資料的一數量基本等於該來源資料的所請求的部分的一大小。
  49. 根據請求項47之裝置,其中在用於該來源資料的所請求的部分的該資料中的至少一些資料被讀取之前,該糾刪解碼提供該來源資料的所請求的部分的一經解碼的部分。
  50. 根據請求項47之裝置,亦包括:用於將該來源資料作為一資料串流進行接收的手段;用於當該來源資料串流到達時,對該來源資料串流進行糾刪編碼,以產生經編碼的一資料串流的手段;用於當該經編碼的資料串流正在被產生時,根據該經編碼的資料串流來產生該多個片段作為複數個輸出片段串流的手段;及用於當該複數個輸出片段串流正在被產生時,將該多個 片段作為該輸出片段串流的各個輸出片段串流寫入該儲存節點的手段,其中該輸出片段串流中的各個輸出片段串流的一第一部分與該源物件的一第一部分相對應,並且在該源物件的一第二部分已經被接收之前,被寫入該儲存節點。
  51. 根據請求項50之裝置,其中該冗餘資料是使用一(nkr)糾刪碼,根據該來源資料來產生的,其中該複數個輸出片段串流中的一片段串流的數量是n
  52. 根據請求項50之裝置,其中該冗餘資料是使用一(nkr)糾刪碼,根據該來源資料來產生的,其中該存取來源資料是回應於來自該修復程序的、用於為該源物件產生修復資料的一請求的,其中該讀取複數個片段的資料包括:讀取被寫入儲存節點的該複數個輸出片段中的至少k個片段之每一者片段作為一輸入片段串流,並且其中該對來源資料的該部分進行糾刪解碼包括:當該k個輸入片段串流正在被讀取時,對該k個輸入片段串流進行糾刪解碼,以產生用於該源物件的一來源資料串流,其中在與該物件的該第二部分相對應的該輸入片段串流的部分從儲存節點被讀取之前,與該源物件的該第一部分相對應的該輸出片段串流的一部分被寫入該節點。
  53. 根據請求項47之裝置,其中該存取來源資料是由用於為該源物件產生修復資料的一修復程序進行的,該裝置亦包括 :用於使用一(nkr)糾刪碼,根據該來源資料來產生該修復資料的手段,其中該來源資料被組織成來源資料的連續源塊,其中該來源資料的一大小比該源塊的大小大得多,其中該修復程序按順序處理來源資料的該源塊之每一者源塊,其中由該修復程序進行的該處理包括:用於對於至少k個儲存節點之每一者儲存節點,存取與該來源資料的該源塊相對應的、儲存在該儲存節點上的該片段資料的一部分的手段;用於使用糾刪解碼,從該片段資料的所存取的部分中恢復該來源資料的該源塊的手段;用於使用糾刪編碼,根據該來源資料的該源塊來產生片段資料的至少一個部分的手段;及用於對於針對其產生片段資料的部分的每個儲存節點,將片段資料的所產生的部分儲存在該儲存節點上的手段,其中儲存在該多個儲存節點之每一者節點上的該來源資料的資料被組織成片段資料的連續部分,其中片段資料的該連續部分是根據該來源資料的該連續源塊來產生的。
  54. 一種包括用於存取一源物件的來源資料的代碼的非暫時性電腦可讀取媒體,該源物件儲存成跨越一儲存系統的多個儲存節點分佈的多個片段,其中該多個片段中的一或多個片段包括該源物件的冗餘資料,該代碼使一電腦執行以下操作: 從該多個儲存節點中的複數個儲存節點讀取該多個片段中的複數個片段的資料,以存取該來源資料的一請求的部分,其中該多個片段中的至少一個片段的資料是由該多個儲存節點使用資料組織來儲存的,該資料組織連結來自該源物件的多個源塊,以便在該源物件的該多個片段中的複數個片段之每一者片段中包括每個源塊的符號;及根據從該複數個儲存節點讀取的該複數個片段的該資料,對該來源資料的該部分進行解碼。
  55. 根據請求項54之非暫時性電腦可讀取媒體,其中從該複數個儲存節點讀取的該複數個片段的該資料的一數量基本等於該來源資料的所請求的部分的一大小。
  56. 根據請求項54之非暫時性電腦可讀取媒體,其中在用於該來源資料的所請求的部分的該資料中的至少一些資料被讀取之前,該糾刪解碼提供該來源資料的所請求的部分的一經解碼的部分。
  57. 根據請求項54之非暫時性電腦可讀取媒體,其中該代碼亦使該電腦執行以下操作:將該來源資料作為一資料串流進行接收;在該來源資料串流到達時,對該來源資料串流進行糾刪編碼,以產生一經編碼的資料串流;當該經編碼的資料串流正在被產生時,根據該經編碼的 資料串流來產生該多個片段作為複數個輸出片段串流;及當該複數個輸出片段串流正在被產生時,將該多個片段作為該輸出片段串流的各個輸出片段串流寫入該儲存節點,其中該輸出片段串流中的各個輸出片段串流的一第一部分與該源物件的一第一部分相對應,並且在該源物件的一第二部分已經被接收之前,被寫入該儲存節點。
  58. 根據請求項57之非暫時性電腦可讀取媒體,其中該冗餘資料是使用一(nkr)糾刪碼,根據該來源資料來產生的,其中該複數個輸出片段串流中的片段串流的一數量是n
  59. 根據請求項57之非暫時性電腦可讀取媒體,其中該冗餘資料是使用一(nkr)糾刪碼,根據該來源資料來產生的,其中該存取來源資料是回應於來自該修復程序的、用於為該源物件產生修復資料的一請求的,其中該讀取複數個片段的資料包括:讀取被寫入儲存節點的該複數個輸出片段中的至少k個片段之每一者片段作為一輸入片段串流,並且其中該對來源資料的該部分進行糾刪解碼包括:當該k個輸入片段串流正在被讀取時,對該k個輸入片段串流進行糾刪解碼以產生用於該源物件的一來源資料串流,其中在與該物件的該第二部分相對應的該輸入片段串流的部分從儲存節點被讀取之前,與該源物件的該第一部分相對應的該輸出片段串流的一部分被寫入該節點。
  60. 根據請求項54之非暫時性電腦可讀取媒體,其中該存取來源資料是由用於為該源物件產生修復資料的一修復程序進行的,其中該代碼亦使該電腦執行以下操作:使用一(nkr)糾刪碼,根據該來源資料來產生該修復資料,其中該來源資料被組織成來源資料的連續源塊,其中該來源資料的一大小比該源塊的一大小大得多,其中該修復程序按順序處理來源資料的該源塊之每一者源塊,其中由該修復程序進行的處理包括使用使該電腦執行以下操作的代碼:對於至少k個儲存節點之每一者儲存節點,存取與該來源資料的該源塊相對應的、儲存在該儲存節點上的該片段資料的部分;使用糾刪解碼,從該片段資料的所存取的部分中恢復該來源資料的該源塊;使用糾刪編碼,根據該來源資料的該源塊來產生片段資料的至少一個部分;及對於針對其產生片段資料的部分的每個儲存節點,將片段資料的所產生的部分儲存在該儲存節點上,其中儲存在該多個儲存節點之每一者節點上的該來源資料的資料被組織成片段資料的連續部分,其中片段資料的該連續部分是根據該來源資料的該連續源塊來產生的。
TW104122373A 2014-07-09 2015-07-09 用於使用流動分散式儲存來可靠地儲存資料的系統和方法(三) TW201606543A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462022499P 2014-07-09 2014-07-09
US14/567,303 US9734007B2 (en) 2014-07-09 2014-12-11 Systems and methods for reliably storing data using liquid distributed storage

Publications (1)

Publication Number Publication Date
TW201606543A true TW201606543A (zh) 2016-02-16

Family

ID=53762329

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104122373A TW201606543A (zh) 2014-07-09 2015-07-09 用於使用流動分散式儲存來可靠地儲存資料的系統和方法(三)

Country Status (3)

Country Link
US (1) US9734007B2 (zh)
TW (1) TW201606543A (zh)
WO (1) WO2016007379A1 (zh)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594632B2 (en) * 2014-07-09 2017-03-14 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9734007B2 (en) 2014-07-09 2017-08-15 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9582355B2 (en) 2014-07-09 2017-02-28 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9853873B2 (en) 2015-01-10 2017-12-26 Cisco Technology, Inc. Diagnosis and throughput measurement of fibre channel ports in a storage area network environment
US10114692B2 (en) * 2015-01-27 2018-10-30 Quantum Corporation High/low energy zone data storage
US9921910B2 (en) 2015-02-19 2018-03-20 Netapp, Inc. Virtual chunk service based data recovery in a distributed data storage system
US9900250B2 (en) 2015-03-26 2018-02-20 Cisco Technology, Inc. Scalable handling of BGP route information in VXLAN with EVPN control plane
US10222986B2 (en) 2015-05-15 2019-03-05 Cisco Technology, Inc. Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system
US11588783B2 (en) 2015-06-10 2023-02-21 Cisco Technology, Inc. Techniques for implementing IPV6-based distributed storage space
WO2017001870A1 (en) 2015-07-02 2017-01-05 Payfont Limited Resilient secret sharing cloud based architecture for data vault
US10778765B2 (en) 2015-07-15 2020-09-15 Cisco Technology, Inc. Bid/ask protocol in scale-out NVMe storage
US10007587B2 (en) * 2015-09-18 2018-06-26 Qualcomm Incorporated Systems and methods for pre-generation and pre-storage of repair fragments in storage systems
US9804787B2 (en) * 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration
US9892075B2 (en) 2015-12-10 2018-02-13 Cisco Technology, Inc. Policy driven storage in a microserver computing environment
US10621041B2 (en) 2016-03-25 2020-04-14 Intel Corporation Methods and apparatus to assign indices and relocate object fragments in distributed storage systems
US9830221B2 (en) * 2016-04-05 2017-11-28 Netapp, Inc. Restoration of erasure-coded data via data shuttle in distributed storage system
US10140172B2 (en) * 2016-05-18 2018-11-27 Cisco Technology, Inc. Network-aware storage repairs
US20170351639A1 (en) 2016-06-06 2017-12-07 Cisco Technology, Inc. Remote memory access using memory mapped addressing among multiple compute nodes
US10664169B2 (en) 2016-06-24 2020-05-26 Cisco Technology, Inc. Performance of object storage system by reconfiguring storage devices based on latency that includes identifying a number of fragments that has a particular storage device as its primary storage device and another number of fragments that has said particular storage device as its replica storage device
US10157021B2 (en) * 2016-06-29 2018-12-18 International Business Machines Corporation Processing incomplete data access transactions
US11563695B2 (en) 2016-08-29 2023-01-24 Cisco Technology, Inc. Queue protection using a shared global memory reserve
US10740198B2 (en) 2016-12-22 2020-08-11 Purdue Research Foundation Parallel partial repair of storage
US10545914B2 (en) 2017-01-17 2020-01-28 Cisco Technology, Inc. Distributed object storage
US10243823B1 (en) 2017-02-24 2019-03-26 Cisco Technology, Inc. Techniques for using frame deep loopback capabilities for extended link diagnostics in fibre channel storage area networks
US10713203B2 (en) 2017-02-28 2020-07-14 Cisco Technology, Inc. Dynamic partition of PCIe disk arrays based on software configuration / policy distribution
US10254991B2 (en) 2017-03-06 2019-04-09 Cisco Technology, Inc. Storage area network based extended I/O metrics computation for deep insight into application performance
US10374637B1 (en) * 2017-04-28 2019-08-06 EMC IP Holding Company LLC System and method for unbalanced load handling with distributed erasure coding
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10303534B2 (en) 2017-07-20 2019-05-28 Cisco Technology, Inc. System and method for self-healing of application centric infrastructure fabric memory
US10817388B1 (en) 2017-07-21 2020-10-27 EMC IP Holding Company LLC Recovery of tree data in a geographically distributed environment
US10684780B1 (en) 2017-07-27 2020-06-16 EMC IP Holding Company LLC Time sensitive data convolution and de-convolution
US10404596B2 (en) 2017-10-03 2019-09-03 Cisco Technology, Inc. Dynamic route profile storage in a hardware trie routing table
US10942666B2 (en) 2017-10-13 2021-03-09 Cisco Technology, Inc. Using network device replication in distributed storage clusters
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
US10817374B2 (en) 2018-04-12 2020-10-27 EMC IP Holding Company LLC Meta chunks
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US10936196B2 (en) 2018-06-15 2021-03-02 EMC IP Holding Company LLC Data convolution for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
US10719250B2 (en) 2018-06-29 2020-07-21 EMC IP Holding Company LLC System and method for combining erasure-coded protection sets
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US10768840B2 (en) 2019-01-04 2020-09-08 EMC IP Holding Company LLC Updating protection sets in a geographically distributed storage environment
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
WO2020199162A1 (zh) * 2019-04-03 2020-10-08 东莞理工学院 一种用于数据中心的机架感知再生码
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
US11055018B2 (en) 2019-06-25 2021-07-06 Western Digital Technologies, Inc. Parallel storage node processing of data functions
US11314593B2 (en) 2019-06-25 2022-04-26 Western Digital Technologies, Inc. Storage node processing of data functions using overlapping symbols
US10990324B2 (en) 2019-06-25 2021-04-27 Western Digital Technologies, Inc. Storage node processing of predefined data functions
US11281531B2 (en) * 2019-06-25 2022-03-22 Western Digital Technologies, Inc. Serial storage node processing of data functions
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11954518B2 (en) * 2019-12-20 2024-04-09 Nvidia Corporation User-defined metered priority queues
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11604697B2 (en) * 2020-03-26 2023-03-14 Quantum Corporation Distributed erasure encoding in shared file system
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
JP7149313B2 (ja) * 2020-09-28 2022-10-06 株式会社日立製作所 記憶システム及びその制御方法
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6516425B1 (en) 1999-10-29 2003-02-04 Hewlett-Packard Co. Raid rebuild using most vulnerable data redundancy scheme first
US6647514B1 (en) 2000-03-23 2003-11-11 Hewlett-Packard Development Company, L.P. Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request
US6990547B2 (en) * 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US7139931B2 (en) 2002-08-19 2006-11-21 Aristos Logic Corporation Method of controlling the system performance and reliability impact of hard disk drive rebuild
US7523343B2 (en) 2004-04-30 2009-04-21 Microsoft Corporation Real-time file system repairs
WO2006012599A2 (en) 2004-07-22 2006-02-02 Seachange International, Inc. Data error control
JP2006285803A (ja) 2005-04-04 2006-10-19 Sony Corp データ記憶装置、再構築制御装置、再構築制御方法、プログラム及び記憶媒体
US8468244B2 (en) * 2007-01-05 2013-06-18 Digital Doors, Inc. Digital information infrastructure and method for security designated data and with granular data stores
US20080298276A1 (en) 2007-05-31 2008-12-04 Microsoft Corporation Analytical Framework for Multinode Storage Reliability Analysis
US7979635B2 (en) 2008-02-14 2011-07-12 International Business Machines Corporation Apparatus and method to allocate resources in a data storage library
US8239623B2 (en) 2008-07-03 2012-08-07 Oracle America, Inc. Scheduling read operations during drive reconstruction in an array of redundant disk drives
US8140914B2 (en) * 2009-06-15 2012-03-20 Microsoft Corporation Failure-model-driven repair and backup
US8750059B2 (en) 2009-08-12 2014-06-10 Taiwan Semiconductor Manufacturing Company, Ltd. Self-repairing memory
US8341457B2 (en) 2010-03-11 2012-12-25 Lsi Corporation System and method for optimizing redundancy restoration in distributed data layout environments
US8645799B2 (en) * 2010-12-31 2014-02-04 Microsoft Corporation Storage codes for data recovery
US9785498B2 (en) 2011-04-29 2017-10-10 Tata Consultancy Services Limited Archival storage and retrieval system
US9304857B2 (en) * 2011-12-12 2016-04-05 Cleversafe, Inc. Retrieving data from a distributed storage network
US8788913B1 (en) 2011-12-30 2014-07-22 Emc Corporation Selection of erasure code parameters for no data repair
US8751861B2 (en) 2012-02-08 2014-06-10 Lsi Corporation System and method for improved rebuild in RAID
EP2845100A1 (en) 2012-05-04 2015-03-11 Thomson Licensing Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices
EP2672387B1 (en) * 2012-06-04 2018-08-01 Amplidata NV A distributed object storage system
US8892939B2 (en) 2012-11-21 2014-11-18 Hewlett-Packard Development Company, L.P. Optimizing a RAID volume
US20140201046A1 (en) 2013-01-17 2014-07-17 Asigra Inc. Data recovery pricing method and data backup and recovery method
US20140215147A1 (en) 2013-01-25 2014-07-31 Hewlett-Packard Development Company, L.P. Raid storage rebuild processing
US9647698B2 (en) 2013-02-26 2017-05-09 Peking University Shenzhen Graduate School Method for encoding MSR (minimum-storage regenerating) codes and repairing storage nodes
US9292389B2 (en) 2014-01-31 2016-03-22 Google Inc. Prioritizing data reconstruction in distributed storage systems
US9529834B2 (en) * 2014-02-26 2016-12-27 International Business Machines Corporation Concatenating data objects for storage in a dispersed storage network
US9606866B2 (en) 2014-03-20 2017-03-28 Xyratex Technology Limited Method of, and apparatus for, improved data recovery in a storage system
US9075773B1 (en) * 2014-05-07 2015-07-07 Igneous Systems, Inc. Prioritized repair of data storage failures
US9582355B2 (en) 2014-07-09 2017-02-28 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9594632B2 (en) 2014-07-09 2017-03-14 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9734007B2 (en) 2014-07-09 2017-08-15 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage

Also Published As

Publication number Publication date
US9734007B2 (en) 2017-08-15
WO2016007379A1 (en) 2016-01-14
US20160011936A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
TW201606543A (zh) 用於使用流動分散式儲存來可靠地儲存資料的系統和方法(三)
TW201606541A (zh) 用於使用流動分散式儲存來可靠地儲存資料的系統和方法(一)
TW201606542A (zh) 用於使用流動分散式儲存來可靠地儲存資料的系統和方法(二)
US9933973B2 (en) Systems and methods for data organization in storage systems using large erasure codes
US10007587B2 (en) Systems and methods for pre-generation and pre-storage of repair fragments in storage systems
US10191808B2 (en) Systems and methods for storing, maintaining, and accessing objects in storage system clusters
US10003357B2 (en) Systems and methods for verification of code resiliency for data storage
US10558565B2 (en) Garbage collection implementing erasure coding
EP3519974B1 (en) System and method for improvements to a content delivery network
US10044371B2 (en) Systems and methods for repair rate control for large erasure coded data storage
US11178226B2 (en) Integrated erasure coding for data storage and transmission
CN107422989A (zh) 一种Server SAN系统多副本读取方法及存储架构
JP6671708B2 (ja) バックアップリストアシステム及びバックアップリストア方法
KR102001572B1 (ko) 분산 파일 시스템 및 이의 데이터 관리 방법
Nachiappan et al. Adaptive bandwidth-efficient recovery techniques in erasure-coded cloud storage
Zhang et al. Parity-only caching for robust straggler tolerance
Monti et al. Timely offloading of result-data in hpc centers
Wei Auto-configurable, reliable, and fault-tolerant cloud storage with dynamic parameterization
Gong et al. Topology-aware node selection for data regeneration in heterogeneous distributed storage systems
Misra et al. An erasure coded archival storage system
Monti An Integrated End-User Data Service for HPC Centers