本地生成的簡單糾刪碼的制作方法
【專利說明】本地生成的簡單糾刪碼
[0001]背景
[0002]現代服務器計算設備經常被以一種方式物理配置以提升有限空間(諸如機架)內的多個此類服務器計算設備的安裝和維護。服務器計算設備的多個機架隨后可被容納在專用設施(常被稱為“數據中心”)中。通過將計算資源聚集在一起,數據中心可提供規模效率,同時提供提高的計算能力和可用性。例如,數據中心可包括數以千計的計算設備,其組合的處理能力可以無數種方式來分割和共享,由此使得實體能夠以與這些實體如果自己購買計算設備相比更低的成本訪問遠遠大得多的處理能力。作為另一示例,數據中心可實施對于個人而言貴的離譜的冗余機制,但是在冗余機制的成本被分攤到數據中心的所有用戶上時,可提供并不昂貴的風險降低。這樣的冗余機制可包括將數據中心內的計算設備劃分成各個故障域,故障域可包括物理上不同的位置、獨立的網絡連接和功率源、以及其它類似的屬性,使得大部分潛在地故障應當僅影響單個故障域。
[0003]經常,為了維持可靠性,數據的冗余副本被維持在一個數據中心內、或跨多個物理上不同的數據中心的多個這樣的故障域。然而,這樣的數據集可能足夠大,導致對于這樣的數據集的跨網絡的數據通信可能是耗時和高成本的。結果,冗余常常以網絡資源消耗以及因此的性能降級為代價來實現。另外,冗余機制常常需要對數據執行計算上昂貴的數學運算。因此,除了增加網絡資源消耗,冗余還可能增加處理能力的使用。由于網絡資源和處理能力兩者都可能由昂貴的計算硬件以及其它類似的資本投資來支持,因此網絡資源和處理能力兩者的高效利用同時維持冗余性可以是合乎需要的。
[0004]概述
[0005]在一個實施例中,數據的冗余副本可以編碼狀態來維護,該編碼狀態僅使用了存儲該數據的不經編碼的副本所需的存儲容量的一小部分。為了減少處理資源的消耗,數據可使用X0R函數來編碼,X0R函數可由現代處理硬件高效地執行。
[0006]在另一實施例中,冗余可通過由以編碼狀態維護的數據冗余副本來提供,數據冗余副本可僅從本地數據副本中生成,由此避免了對于網絡資源的消耗。
[0007]在進一步實施例中,可維護至少一個未經編碼的數據副本,并且對于該數據的請求可從該未經編碼的數據副本中提供。假如這一未經編碼的副本遭受故障(包括毀壞性故障以及不可用性故障),可由另選的計算設備生成新的未經編碼的副本,該另選的計算設備能夠訪問與所請求的數據一起被編碼的其它數據的經編碼的副本以及未經編碼的副本兩者。
[0008]在又一實施例中,通過遞歸地應用對編碼數據的解碼,可從多個故障中幸存。
[0009]提供本概述以便以簡化形式介紹將在以下詳細描述中進一步描述的一些概念。本
【發明內容】
并不旨在標識所要求保護主題的關鍵特征或必要特征,也不旨在用于限制所要求保護主題的范圍。
[0010]當參考附圖閱讀以下詳細描述時,將使得其它特征和優點是顯而易見的。
[0011]附圖簡述
[0012]以下詳細描述在結合附圖參考時可得到最佳的理解,附圖中:
[0013]圖1是示出其中可實現本地生成的簡單糾刪碼機制的示例性環境的框圖;
[0014]圖2是示出簡單糾刪碼機制的示例性本地生成的框圖;
[0015]圖3是示出實現本地生成的簡單糾刪碼機制的示例性系統的操作方面的框圖;
[0016]圖4是示出實現本地生成的簡單糾刪碼機制的系統中的示例性錯誤恢復的框圖;
[0017]圖5是示出實現本地生成的簡單糾刪碼機制的系統中的另一示例性錯誤恢復的框圖;
[0018]圖6是示出簡單糾刪碼機制的示例性本地生成的流程圖;
[0019]圖7是示出示例性的利用簡單糾刪碼來提供冗余數據的流程圖;以及
[0020]圖8是示例性計算設備的框圖。
[0021]詳細描述
[0022]以下的描述涉及用于實現本地生成的簡單糾刪碼的機制。糾刪碼可以是對多個不同數據集的編碼。數據的冗余副本可以這樣的糾刪碼以編碼狀態來維護,該編碼狀態僅使用了存儲該數據的不經編碼的副本所需的存儲容量的一小部分。為了減少處理資源的消耗,并且實現更高效且更快速的糾刪碼生成,就如“異或”或X0R —樣簡單的糾刪碼可被用于所描述的機制。另外,糾刪碼可從本地地存儲在生成這一糾刪碼的計算設備上的數據中生成,由此避免網絡資源的消耗。數據集的至少一個不經編碼的副本應當被維護,而該數據的其余冗余副本可與其它的正交數據編碼成一個或多個糾刪碼。對數據的請求可從這一未經編碼的副本來提供。假如未經編碼的副本遭受故障(包括毀壞性故障以及不可用性故障),可由另一個運作的并且可用的計算設備生成新的未經編碼的副本,該計算設備能夠訪問糾刪碼以及也被壓入該糾刪碼的其它數據的未經編碼的副本兩者。通過遞歸地應用對編碼數據的這一解碼,可從多個故障中幸存。
[0023]處于解說的目的,此處所描述的技術在對于數據中心而言典型的基礎結構的上下文內來提出。具體來說,此處所描述的技術提及多個計算設備、多個故障域、以及它們之間的網絡通信。然而,對這類環境和實施例的提及和說明是嚴格地示例性的,且不旨在將所描述的機制限于所提供的特定示例。事實上,此處所描述的技術同樣可適用于其中數據的冗余副本被存儲在諸如多個獨立的存儲介質上、或多個獨立計算設備上的任何計算環境,無論這一存儲介質或計算設備的物理表現是什么。
[0024]另外,雖然未作要求,但以下描述將處在諸如程序模塊等正由一個或多個計算設備執行的計算機可執行指令的一般上下文中。更具體而言,除非另外指明,否則描述將參考一個或多個計算設備或外圍設備所執行的動作以及其所執行的操作的符號表示。由此,應當理解,有時被稱作計算機可執行的這種動作和操作包括處理單元對以結構化形式表示數據的電信號的操縱。這種操縱轉換了數據或將其維持在存儲器的位置中,這就以本領域技術人員所熟知的方式來重新配置或更改計算設備或外設的操作。數據被維護在其中的數據結構是具有由數據形式所定義的特定屬性的物理位置。
[0025]—般而言,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、對象、組件、數據結構等。此外,本領域技術人員將會認識到這些計算設備不必限于常規個人計算機,并且包括其他計算配置,包括手持式設備、多處理器系統、基于微處理器的或可編程消費電子設備、網絡PC、小型計算機、大型計算機等等。類似地,這些計算設備不必限于獨立計算設備,因為各機制也可以在通過通信網絡鏈接的分布式計算環境中實現。在分布式計算環境中,程序模塊可位于本地和遠程存儲器存儲設備中。
[0026]參考圖1,示出了示例性系統100,為以下的描述提供上下文。示例性系統100可以位于數據中心(諸如示例性的數據中心120)的上下文中,該數據中心通過網絡(諸如網絡101)提供數據中心能力和功能。客戶端計算設備(諸如客戶端計算設備110)可由數據中心120的客戶使用來利用通過網絡101提供的數據中心能力和功能。例如,為了說明此處所描述的冗余機制的操作,示例性客戶端計算設備110可通過網絡101向數據中心120傳送客戶端計算設備110請求由數據中心120存儲和保持的數據180。這一數據提供由圖1中示出的通信181來解說。
[0027]在一個實施例中,當經由通信181接收到數據180之際,數據中心120可標識要在其上存儲該數據180的一個或多個計算設備。更具體地,名稱服務器計算設備(諸如示例性名稱服務器計算設備130)可維護與存儲在數據中心120的計算設備(諸如示例性計算設備 141、142、143、151、152、153、161、162、163、171、172 和 173)上的數據有關的元數據。因此,在這一實施例中,名稱服務器計算設備(諸如示例性名稱服務器計算設備130)可知曉數據中心120的計算設備中的哪個計算設備已在其本地存儲介質上存儲了任何給定的數據集合。名稱服務器計算設備還可維護其它元數據,諸如與數據中心120的服務器計算設備存儲附加數據的可用性有關的信息。元數據(諸如什么數據被存儲在哪個設備上的位置圖)的維護可由名稱服務器計算設備使用事務和冗余技術來可靠地維護,事務和冗余技術可使得該名稱服務器計算設備在被需要時可靠地可用,在考慮了在此處所描述的各機制的程度上。
[0028]在圖1中示出的示例中,名稱服務器計算設備130可已將計算設備143、162和171標識為數據中心120中要在它們之間維護通過通信181接收的數據180的三個冗余副本的計算設備。名稱服務器計算設備130可恰當地指令計算設備143、162以及171,并且這些計算設備中的至少一個可接受正由客戶端計算設備110所發送的數據180。例如,如圖1中所解說的,通過通信181和191,數據180可被最初定向到服務器計算設備162,在此數據180可被存儲為數據196。雖然數據180可與數據196是相同的,但是圖1中使用的不同的附圖標記表示數據196是數據180的分開且獨立的副本。類似的,在本發明及相關聯的附圖的全文中,不同的副本標記將被用來指相同數據的不同副本。
[0029]在接收到數據180并將其本地地存儲為數據196之際,在一個實施例中,服務器計算設備162可將數據196重傳給其它計算設備(在本示例中,即服務器計算設備143和171)。圖1的系統100中所示的通信192和193解說了數據196從服務器計算設備162被分別重傳到服務器計算設備143和171,其中該數據可分別被存儲為數據198和197。在其它實施例中,數據196、197和198的副本可通過數據中心120的計算設備間的另選通信來生成。在考慮此處所描述的機