【技術實現步驟摘要】
分布式存儲的方法、裝置和系統
本專利技術涉及數據存儲領域,尤其是涉及一種分布式存儲的方法、裝置和系統。
技術介紹
在分布式存儲系統中,為了實現可靠性,采用文件級別的多副本冗余技術,或者采用數據塊級別的冗余編碼技術,例如,糾刪編碼(Erasure Coding)技術。在多副本冗余技術中,可以通過為一份數據文件存儲多份的相同的副本來降低數據丟失的概率,而在冗余編碼技術中,可以通過為文件中的任何局部數據增加校驗塊來提高可靠性。通常,可以采用分布式哈希表(Distributed Hash Table,DHT)對數據塊和校驗塊進行存儲。然而,由于DHT的隨機性,因此無法避免將同一數據切片的多個數據塊部署在同一物理存儲節點上,從而無法避免單一物理存儲節點(例如,機架、服務器、或硬盤時)失效導致數據丟失的風險。例如,采用M+N的糾刪編碼技術,其中M為數據塊個數,N為校驗塊個數,當有N+1個以上的數據塊或校驗塊部署在同一個硬盤上時,該硬盤故障將導致上述M個數據塊的丟失,從而可能導致整個文件不可用。以12+3的冗余存儲機制為例,當4個以上的數據塊丟失時,數據切片會丟失并且無法恢復。換句話說,在現有的分布式存儲系統中,單點(例如,硬盤、服務器或機架)故障可能會導致數據丟失,尤其在分布式存儲系統的規模較小時,故障的風險和概率特別大,從而降低了分布式存儲系統的可靠性。
技術實現思路
本專利技術的實施例提供了一種分布式存儲系統和分布式存儲方法、裝置和系統,能夠提高分布式存儲系統的可靠性。第一方面,提供了一種分布式存儲方法,包括:對數據文件進行分割,生成K個數據切片,對K個數 ...
【技術保護點】
一種分布式存儲方法,其特征在于,包括:對數據文件進行分割,生成K個數據切片,對所述K個數據切片中的每個數據切片進行分割,針對每個數據切片生成M個數據塊,并且采用冗余算法對所述M個數據塊進行校驗編碼,生成N個校驗塊;利用隨機算法確定與所述M個數據塊或N個校驗塊中的一個數據塊或一個校驗塊對應的第一物理存儲節點,并且基于所述第一物理存儲節點按照符合預設規則的第一排序方式確定至少M+1個不同的物理存儲節點;將所述M個數據塊和所述N個校驗塊中的至少M+1個塊分別存儲在所述至少M+1不同的物理存儲節點上,所述K、M和N為正整數。
【技術特征摘要】
1.一種分布式存儲方法,其特征在于,包括: 對數據文件進行分割,生成K個數據切片,對所述K個數據切片中的每個數據切片進行分割,針對每個數據切片生成M個數據塊,并且采用冗余算法對所述M個數據塊進行校驗編碼,生成N個校驗塊; 利用隨機算法確定與所述M個數據塊或N個校驗塊中的一個數據塊或一個校驗塊對應的第一物理存儲節點,并且基于所述第一物理存儲節點按照符合預設規則的第一排序方式確定至少M+1個不同的物理存儲節點; 將所述M個數據塊和所述N個校驗塊中的至少M+1個塊分別存儲在所述至少M+1不同的物理存儲節點上,所述K、M和N為正整數。2.根據權利要 求1所述的分布式存儲方法,其特征在于,所述利用隨機算法確定與所述M個數據塊或N個校驗塊中的一個數據塊或校驗塊對應的第一物理存儲節點,包括: 對所述M個數據塊或N個校驗塊中的一個數據塊或校驗塊的標識符進行哈希計算生成關鍵值; 根據所述關鍵值確定與所述M個數據塊或N個校驗塊中的一個數據塊或者校驗塊對應的物理存儲節點,并將所述物理存儲節點作為所述的第一物理存儲節點。3.根據權利要求1所述的分布式存儲方法,其特征在于,所述利用隨機算法確定與所述M個數據塊或N個校驗塊中的一個數據塊或校驗塊對應的第一物理存儲節點,包括: 對分割成所述M個數據塊的所述數據切片的標識符進行哈希計算生成關鍵值; 根據所述關鍵值確定與所述M個數據塊或N個校驗塊中的一個數據塊或者校驗快對應的物理存儲節點,并將所述物理存儲節點作為所述的第一物理存儲節點。4.根據權利要求1至3中的任一項所述的分布式存儲方法,其特征在于,所述基于所確定的第一物理存儲節點按照所述第一排序方式確定至少M+1個不同的物理存儲節點,包括: 基于所述第一物理存儲節點按照所述第一排序方式確定M+N個不同的物理存儲節點, 其中所述將所述M個數據塊和所述N個校驗塊中的至少M+1個塊分別存儲在至少M+1個不同的物理存儲節點上,包括: 將所述M個數據塊和所述N個校驗塊分別存儲在所述M+N個不同的物理存儲節點上。5.根據權利要求1至4中的任一項所述的分布式存儲方法,其特征在于,所述基于所述第一物理存儲節點按照所述第一排序方式確定至少M+1個不同的物理存儲節點,包括: 將所述第一物理存儲節點與所述至少M+1個塊中的I個塊對應,并以所述第一物理存儲節點的位置為基準,按照所述第一排序方式確定所述至少M+1個塊中的其它至少M個塊對應的物理存儲節點,其中所述M+1個不同的物理存儲節點包括所述第一物理存儲節點; 或者, 以所述第一物理存儲節點的位置為基準,按照所述第一排序方式確定所述至少M+1個塊對應的物理存儲節點,其中所述M+1個不同的物理存儲節點不包括所述第一物理存儲節點。6.根據權利要求1至5中的任一項所述的分布式存儲方法,其特征在于,所述不同的物理存儲節點為硬盤,所述硬盤的數目等于或者大于M+1 ; 或者,所述不同的物理存儲節點為服務器,其中所述服務器的數目等于或者大于M+1 ; 或者, 所述不同的物理存儲節點為機架,其中所述機架的數目等于或者大于M+1。7.根據權利要求1至6中的任一項所述的分布式存儲方法,其特征在于,還包括: 在存儲有所述M個數據塊和所述N個校驗塊中的至少M+1個塊的所述至少M+1個不同的物理存儲節點之一發生故障的情況下,將所述至少M+1個不同的物理存儲節點中發生故障的物理存儲 節點上的數據恢復到所述物理存儲節點所在的分布式存儲系統中的熱備用存儲節點上。8.根據權利要求1至6中的任一項所述的分布式存儲方法,其特征在于,還包括: 在所述至少M+1個不同的物理存儲節點中存儲的、按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第L個塊的物理存儲節點發生故障的情況下,如果L不大于(M+N)/2,則將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第L個塊及第L個塊之前的塊依次向沿第一方向相鄰的物理存儲節點搬移,其中所述第一方向與所述第一排序方式的順序方向相逆,如果L大于(M+N)/2,則將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第L個塊及第L個塊之后的塊依次向沿第二方向相鄰的物理存儲節點搬移,其中所述第二方向與所述第一排序方式的順序方向相同;或者, 在所述至少M+1個不同的物理存儲節點中存儲的、按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第L個塊的物理存儲節點發生故障的情況下,將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第L個塊及第L個塊之前的塊依次向沿所述第一方向相鄰的物理存儲節點搬移; 或者, 在所述至少M+1個不同的物理存儲節點中存儲的、按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第L個塊的物理存儲節點發生故障的情況下,則將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第L個塊及第L個塊之后的塊依次向沿所述第二方向相鄰的物理存儲節點搬移。9.根據權利要求1至8中的任一項所述的分布式存儲方法,其特征在于,還包括: 在所述至少M+1個不同的物理存儲節點中存儲的、按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第P個塊的物理存儲節點之后添加新的物理存儲節點的情況下,如果P不大于(M+N)/2,則將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的所述第P個塊向所述新的物理存儲節點搬移,并且將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中第P個塊之前的塊依次向沿第一方向相鄰的物理存儲節點搬移,其中所述第一方向與所述第一排序方式的順序方向相同,如果P大于(M+N)/2,則將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第P+1個塊向所述新的物理存儲節點搬移,并將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中第P+1個塊之后的塊依次向沿第二方向相鄰的物理存儲節點搬移,其中所述第二方向與所述第一排序方式的順序方向相逆,其中所述P為整數; 或者, 在所述至少M+1個不同的物理存儲節點中存儲的、按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第P個塊的物理存儲節點之后添加新的物理存儲節點的情況下,將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第P個塊向所述新的物理存儲節點搬移,并且將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第P個塊之前的塊依次向沿所述第一方向相鄰的物理存儲節點搬移; 或者, 在所述至少M+1個不同的物理存儲節點中存儲的、按照所述第一排序方式的所述M個數據塊和所述N個校驗塊中第P個塊所在的物理存儲節點之后添加新的物理存儲節點的情況下,將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第P+1個塊向所述新的物理存儲節點搬移,并且將按照所述第一排序方式排序的所述M個數據塊和所述N個校驗塊中的第P+1個塊之后的塊依次向沿所述第二方向相鄰的物理存儲節點搬移。10.根據權利要求1至9中的任一項所述的分布式存儲方法,其特征在于,還包括: 在需要讀取所述數據文件時,利用隨機算法確定與所述M個數據塊或N個校驗塊中的一個數據塊或校驗塊對應的所述第一物理存儲節點,基于所述所確定的所述第一物理存儲節點按照所述第一排序方式確定至少M個不同的物理存儲節點; 從所述至少M個不同的物理存儲節點上讀取至少M個塊,所讀取的M個塊包括所述M個數據塊,或包括所述M個數據塊中的部分數據塊和所述N個校驗塊中的部分校驗塊; 對所述至少M個塊進行解碼和去校驗,生成解碼的M個數據塊,并且對所述解碼的M個數據塊進行合并,生成所述數據文件。11.根據權利要求1至10中的任一項所述的分布式存儲方法,其特征在于,所述數據文件從所述分布式存儲系統外部獲取,或者所述數據文件從所述分布式存儲系統的部分物理存儲節點獲取。12.根據權利要求1至11中的任一項所述的分布式存儲方法,其特征在于,所述冗余算法為糾刪編碼算法,所述隨機算法為分布式哈希表算法。13.根據權利要求1至12中的任一項所述的分布式存儲方法,其特征在于,所述不同的物理存儲節點為分布式存儲系統上的不同的物理存儲節點,所述不同的物理存儲節點中的每個物理存儲節點包括多個虛擬存儲節點,編號連續的虛擬存儲節點按照符合預設規則的第二排序方式部署在不同的物理存儲節點上, 其中所述利用隨機算法確定與所述M個數據塊和N個校驗塊中的一個塊對應的第一物理存儲節點,并且基于所確定的第一物理存儲節點按照所述第一排序方式確定至少M+1個不同的物理存儲節點,包括: 利用隨機算法確定與所述M個數據塊和N個校驗塊中的一個塊對應的所述第一虛擬存儲節點的編號,并且基于所述第一虛擬存儲節點的編號按照所述第一排序方式確定至少M+1個虛擬存儲節點的編號, 其中將所述M個數據塊和所述N個校驗塊中的至少M+1個塊分別存儲在所述至少M+1不同的物理存儲節點上,包括: 將所述M個數據塊 和所述N個校驗塊中的至少M+1個塊分別存儲在所述至少M+1個虛擬存儲節點的編號對應的虛擬存儲節點上。14.根據權利要求...
【專利技術屬性】
技術研發人員:馮斌,黃澄,龔學文,
申請(專利權)人:華為技術有限公司,
類型:發明
國別省市:廣東;44
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。