本發(fā)明涉及分布式數(shù)據(jù)存儲技術(shù)領(lǐng)域,特別涉及一種分布式數(shù)據(jù)存儲方法及系統(tǒng)。
背景技術(shù):
現(xiàn)有技術(shù)中,通過數(shù)據(jù)冗余來處理磁盤失效的問題,通常是每一份數(shù)據(jù)都可以存儲于三塊甚至更多塊磁盤上,當(dāng)某塊磁盤失效時,可以依靠剩下的兩個副本做數(shù)據(jù)恢復(fù),防止在磁盤損壞或者存儲模塊宕機時數(shù)據(jù)丟失。但實際上,數(shù)據(jù)恢復(fù)策略必須要得到完善的設(shè)計,否則還是會遇到數(shù)據(jù)丟失的問題。企業(yè)在搭建存儲集群時,通常都會同批次購買很多的存儲服務(wù)器和磁盤,同批次的磁盤往往具備類似的硬件規(guī)格和驅(qū)動固件,即可能出現(xiàn)同時失效的情況,在這種情況下,某一塊磁盤開始失效之時,存儲于此塊磁盤上的數(shù)據(jù)都處于降級的狀態(tài),更壞的是,與之同批次的其他磁盤也隨之失效的概率就會提高,如果此時另外一塊磁盤也失效,則一部分?jǐn)?shù)據(jù)將僅剩下一個存活的副本,并且降級程度進一步惡化,如果數(shù)據(jù)不能盡快修復(fù),降級的數(shù)據(jù)可能會因最后一個副本所在的磁盤的失效而完全丟失。
處理磁盤失效問題,通常的方案是增加副本數(shù),即由原來的三副本策略修改為四副本,這種簡單粗暴的方案會嚴(yán)重增加企業(yè)的存儲成本,另外增加副本數(shù)之后,數(shù)據(jù)的寫入性能也會降低,因此不是一個好的方案。
通常而言,用戶的數(shù)據(jù)都具有明顯的冷熱區(qū)別,越熱的數(shù)據(jù)即越經(jīng)常被訪問的數(shù)據(jù),對于用戶而言也是越重要的數(shù)據(jù)。這也是計算機系統(tǒng)中著名的局部性原理的一種體現(xiàn),即用戶在某一天某一時刻訪問的數(shù)據(jù)在未來仍需被訪問的概率較高。分布式存儲系統(tǒng)都提供了較高的可用性,即使數(shù)據(jù)的某一個副本損壞,當(dāng)用戶訪問這個數(shù)據(jù)時,仍然可以從其他副本中讀取并返回給用戶。但是對于被用戶訪問到的重要的熱點數(shù)據(jù),如果不能夠盡快修復(fù),那么如果磁盤繼續(xù)損壞,那么這些重要數(shù)據(jù)將會出現(xiàn)丟失,給用戶帶來的損失也就更大。
技術(shù)實現(xiàn)要素:
為解決磁盤損壞不能盡快修復(fù)時會出現(xiàn)數(shù)據(jù)丟失的技術(shù)問題,本發(fā)明提出一種分布式數(shù)據(jù)存儲方法及系統(tǒng)來實現(xiàn)。
一種分布式數(shù)據(jù)存儲方法,包括以下步驟:
將分布式系統(tǒng)的存儲空間分成多個存儲區(qū)域,每個區(qū)域中設(shè)有若干存儲設(shè)備,查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
監(jiān)視每個存儲設(shè)備的工作狀態(tài),當(dāng)存在故障存儲設(shè)備時,根據(jù)所述起始物理地址、端口信息或者存儲設(shè)備標(biāo)識符中的任意一種或幾種來確定故障存儲設(shè)備中的出現(xiàn)故障的部分的具體位置并且確定所述出現(xiàn)故障的全部數(shù)據(jù)組;
查詢相同存儲層中存活存儲設(shè)備,搜索與出現(xiàn)故障的部分的全部數(shù)據(jù)組相互對應(yīng)的第一數(shù)據(jù)組,在此,所述第一數(shù)據(jù)組物理地址長度不小于出現(xiàn)故障的部分的全部數(shù)據(jù)組;
選擇第一數(shù)據(jù)組替換所述出現(xiàn)故障的部分的全部數(shù)據(jù)組。
作為一種可實施方式,所述查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符,具體包括以下步驟:
根據(jù)存儲數(shù)據(jù)的冷熱程度,為每個存儲層設(shè)置一個編碼,為每個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
根據(jù)所述編碼和所述唯一存儲設(shè)備標(biāo)識符,查詢所對應(yīng)存儲設(shè)備的起始物理地址和端口信息。
作為一種可實施方式,當(dāng)出現(xiàn)故障的存儲設(shè)備的數(shù)量為兩個以上時,將根據(jù)出現(xiàn)故障的存儲設(shè)備所在的存儲層的位置順序,生成恢復(fù)順序,按照恢復(fù)順序?qū)Τ霈F(xiàn)故障的存儲設(shè)備進行替換。
作為一種可實施方式,所述按照恢復(fù)順序?qū)Τ霈F(xiàn)故障的存儲設(shè)備進行替換是指,至少有一個存活的存儲設(shè)備向出現(xiàn)故障的存儲設(shè)備中進行數(shù)據(jù)遷徙。
作為一種可實施方式,所述出現(xiàn)故障的存儲設(shè)備包括失效存儲設(shè)備和數(shù)據(jù)損害設(shè)備中的至少一種。
一種分布式數(shù)據(jù)存儲系統(tǒng),包括分層查詢模塊、監(jiān)視模塊、查詢模塊和替換模塊;
所述存儲分層模塊,用于將分布式系統(tǒng)的存儲空間分成多個存儲區(qū)域,每個區(qū)域中設(shè)有若干存儲設(shè)備,查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
所述監(jiān)視模塊,監(jiān)視每個存儲設(shè)備的工作狀態(tài),當(dāng)存在故障存儲設(shè)備時,根據(jù)所述起始物理地址、端口信息或者存儲設(shè)備標(biāo)識符中的任意一種或幾種來確定故障存儲設(shè)備中的出現(xiàn)故障的部分的具體位置并且確定所述出現(xiàn)故障的全部數(shù)據(jù)組;
所述查詢模塊,用于查詢相同存儲層中存活存儲設(shè)備,搜索與出現(xiàn)故障的部分的全部數(shù)據(jù)組相互對應(yīng)的第一數(shù)據(jù)組,在此,所述第一數(shù)據(jù)組物理地址長度不小于出現(xiàn)故障的部分的全部數(shù)據(jù)組;
所述替換模塊,用于選擇第一數(shù)據(jù)組替換所述出現(xiàn)故障的部分的全部數(shù)據(jù)組。
作為一種可實施方式,所述分層查詢模塊設(shè)置為:
所述查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符,具體包括以下步驟:
根據(jù)存儲數(shù)據(jù)的冷熱程度,為每個存儲層設(shè)置一個編碼,為每個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
根據(jù)所述編碼和所述唯一存儲設(shè)備標(biāo)識符,查詢所對應(yīng)存儲設(shè)備的起始物理地址和端口信息。
作為一種可實施方式,所述替換模塊設(shè)置為,當(dāng)出現(xiàn)故障的存儲設(shè)備的數(shù)量為兩個以上時,將根據(jù)出現(xiàn)故障的存儲設(shè)備所在的存儲層的位置順序,生成恢復(fù)順序,按照恢復(fù)順序?qū)Τ霈F(xiàn)故障的存儲設(shè)備進行替換。
作為一種可實施方式,所述替換模塊設(shè)置為,所述按照恢復(fù)順序?qū)Τ霈F(xiàn)故障的存儲設(shè)備進行替換是指,至少有一個存活的存儲設(shè)備向出現(xiàn)故障的存儲設(shè)備中進行數(shù)據(jù)遷徙。
作為一種可實施方式,所述監(jiān)視模塊設(shè)置為:所述出現(xiàn)故障的存儲設(shè)備包括失效存儲設(shè)備和數(shù)據(jù)損害設(shè)備中的至少一種。
本發(fā)明相比于現(xiàn)有技術(shù)的有益效果在于:
本發(fā)明為一種分布式數(shù)據(jù)存儲方法,包括以下步驟:將分布式系統(tǒng)的存儲空間分成多個存儲區(qū)域,每個區(qū)域中設(shè)有若干存儲設(shè)備,查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
監(jiān)視每個存儲設(shè)備的工作狀態(tài),當(dāng)存在故障存儲設(shè)備時,根據(jù)所述起始物理地址、端口信息或者存儲設(shè)備標(biāo)識符中的任意一種或幾種來確定故障存儲設(shè)備中的出現(xiàn)故障的部分的具體位置并且確定所述出現(xiàn)故障的全部數(shù)據(jù)組;
查詢相同存儲層中存活存儲設(shè)備,搜索與出現(xiàn)故障的部分的全部數(shù)據(jù)組相互對應(yīng)的第一數(shù)據(jù)組,在此,所述第一數(shù)據(jù)組物理地址長度不小于出現(xiàn)故障的部分的全部數(shù)據(jù)組;
選擇第一數(shù)據(jù)組替換所述出現(xiàn)故障的部分的全部數(shù)據(jù)組。
本發(fā)明為一種分布式數(shù)據(jù)存儲系統(tǒng),包括分層查詢模塊、監(jiān)視模塊、查詢模塊和替換模塊;所述存儲分層模塊,用于將分布式系統(tǒng)的存儲空間分成多個存儲區(qū)域,每個區(qū)域中設(shè)有若干存儲設(shè)備,查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
所述監(jiān)視模塊,監(jiān)視每個存儲設(shè)備的工作狀態(tài),當(dāng)存在故障存儲設(shè)備時,根據(jù)所述起始物理地址、端口信息或者存儲設(shè)備標(biāo)識符中的任意一種或幾種來確定故障存儲設(shè)備中的出現(xiàn)故障的部分的具體位置并且確定所述出現(xiàn)故障的全部數(shù)據(jù)組;
所述查詢模塊,用于查詢相同存儲層中存活存儲設(shè)備,搜索與出現(xiàn)故障的部分的全部數(shù)據(jù)組相互對應(yīng)的第一數(shù)據(jù)組,在此,所述第一數(shù)據(jù)組物理地址長度不小于出現(xiàn)故障的部分的全部數(shù)據(jù)組;
所述替換模塊,用于選擇第一數(shù)據(jù)組替換所述出現(xiàn)故障的部分的全部數(shù)據(jù)組。
采用本發(fā)明的方法對失效存儲設(shè)備中的失效部分進行數(shù)據(jù)修復(fù)即本發(fā)明中所說的第一數(shù)據(jù)組替換所述失效部分的全部數(shù)據(jù)組,方便快捷,并且準(zhǔn)確率高,節(jié)省時間,進而減小了損失。
附圖說明
圖1為本發(fā)明的方法流程示意圖;
圖2為本發(fā)明的部分流程示意圖;
圖3為本發(fā)明的系統(tǒng)結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖,對本發(fā)明上述的和另外的技術(shù)特征和優(yōu)點進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明的部分實施例,而不是全部實施例。
請參閱以下實施例
示例性方法
本發(fā)明為一種分布式數(shù)據(jù)存儲方法,如圖1所示,包括以下步驟:
一種分布式數(shù)據(jù)存儲方法,包括以下步驟:
s1、將分布式系統(tǒng)的存儲空間分成多個存儲區(qū)域,每個區(qū)域中設(shè)有若干存儲設(shè)備,查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
s2、監(jiān)視每個存儲設(shè)備的工作狀態(tài),當(dāng)存在故障存儲設(shè)備時,根據(jù)所述起始物理地址、端口信息或者存儲設(shè)備標(biāo)識符中的任意一種或幾種來確定故障存儲設(shè)備中的出現(xiàn)故障的部分的具體位置并且確定所述出現(xiàn)故障的全部數(shù)據(jù)組;
s3、查詢相同存儲層中存活存儲設(shè)備,搜索與出現(xiàn)故障的部分的全部數(shù)據(jù)組相互對應(yīng)的第一數(shù)據(jù)組,在此,所述第一數(shù)據(jù)組物理地址長度不小于出現(xiàn)故障的部分的全部數(shù)據(jù)組;
s4、選擇第一數(shù)據(jù)組替換所述出現(xiàn)故障的部分的全部數(shù)據(jù)組。
更進一步地,如圖2所示,所述查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符,具體包括以下步驟:
s11、根據(jù)存儲數(shù)據(jù)的冷熱程度,為每個存儲層設(shè)置一個編碼,為每個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
s12、根據(jù)所述編碼和所述唯一存儲設(shè)備標(biāo)識符,查詢所對應(yīng)存儲設(shè)備的起始物理地址和端口信息。
采用本發(fā)明的方法對失效存儲設(shè)備中的失效部分進行數(shù)據(jù)修復(fù)即本發(fā)明中所說的第一數(shù)據(jù)組替換失效部分的全部數(shù)據(jù)組,方便快捷,并且準(zhǔn)確率高,節(jié)省時間,進而減小了損失。
本發(fā)明還公開了一種分布式數(shù)據(jù)存儲系統(tǒng),如圖3所示,包括分層查詢模塊1、監(jiān)視模塊2、查詢模塊3和替換模塊4;
所述存儲分層模塊1,用于將分布式系統(tǒng)的存儲空間分成多個存儲區(qū)域,每個區(qū)域中設(shè)有若干存儲設(shè)備,查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
所述監(jiān)視模塊2,監(jiān)視每個存儲設(shè)備的工作狀態(tài),當(dāng)存在故障存儲設(shè)備時,根據(jù)所述起始物理地址、端口信息或者存儲設(shè)備標(biāo)識符中的任意一種或幾種來確定故障存儲設(shè)備中的出現(xiàn)故障的部分的具體位置并且確定所述出現(xiàn)故障的全部數(shù)據(jù)組;
所述查詢模塊3,用于查詢相同存儲層中存活存儲設(shè)備,搜索與出現(xiàn)故障的部分的全部數(shù)據(jù)組相互對應(yīng)的第一數(shù)據(jù)組,在此,所述第一數(shù)據(jù)組物理地址長度不小于出現(xiàn)故障的部分的全部數(shù)據(jù)組;
所述替換模塊4,用于選擇第一數(shù)據(jù)組替換所述出現(xiàn)故障的部分的全部數(shù)據(jù)組。
所述分層查詢模塊1設(shè)置為:所述查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符,具體包括以下步驟:
根據(jù)存儲數(shù)據(jù)的冷熱程度,為每個存儲層設(shè)置一個編碼,為每個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
根據(jù)所述編碼和所述唯一存儲設(shè)備標(biāo)識符,查詢所對應(yīng)存儲設(shè)備的起始物理地址和端口信息。
本發(fā)明的實施例都是依賴于示例性方法和示例性系統(tǒng),不會超出此范圍。
實施例1
一種分布式數(shù)據(jù)存儲方法,如圖1所示,包括以下步驟:
s1、將分布式系統(tǒng)的存儲空間分成多個存儲區(qū)域,每個區(qū)域中設(shè)有若干存儲設(shè)備,查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
s2、監(jiān)視每個存儲設(shè)備的工作狀態(tài),當(dāng)存在故障存儲設(shè)備時,根據(jù)所述起始物理地址、端口信息或者存儲設(shè)備標(biāo)識符中的任意一種或幾種來確定故障存儲設(shè)備中的出現(xiàn)故障的部分的具體位置并且確定所述出現(xiàn)故障的全部數(shù)據(jù)組;
s3、查詢相同存儲層中存活存儲設(shè)備,搜索與出現(xiàn)故障的部分的全部數(shù)據(jù)組相互對應(yīng)的第一數(shù)據(jù)組,在此,所述第一數(shù)據(jù)組物理地址長度不小于出現(xiàn)故障的部分的全部數(shù)據(jù)組;
s4、選擇第一數(shù)據(jù)組替換所述出現(xiàn)故障的部分的全部數(shù)據(jù)組。
如圖2所示,所述查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符,具體包括以下步驟:
s11、根據(jù)存儲數(shù)據(jù)的冷熱程度,為每個存儲層設(shè)置一個編碼,為每個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
s12、根據(jù)所述編碼和所述唯一存儲設(shè)備標(biāo)識符,查詢所對應(yīng)存儲設(shè)備的起始物理地址和端口信息。
在根據(jù)存儲數(shù)據(jù)的冷熱程度,為每個存儲層設(shè)置一個編碼中,冷數(shù)據(jù)是指沒人訪問或者是很少被訪問的數(shù)據(jù),而熱數(shù)據(jù)就是經(jīng)常被大家訪問或者是大家都喜歡看的數(shù)據(jù),就是按照數(shù)據(jù)冷熱程度,一層層的設(shè)置編碼,然后再給每一層的存儲設(shè)備設(shè)置編碼,其實就相當(dāng)于設(shè)置了一個簡單的矩陣,通過查找層數(shù)的編碼和設(shè)備編碼可以直接搜索到存儲設(shè)備。
當(dāng)出現(xiàn)故障的存儲設(shè)備的數(shù)量為兩個以上時,根據(jù)與所述出現(xiàn)故障的存儲設(shè)備根據(jù)存儲層的位置,生成恢復(fù)順序,按照恢復(fù)順序?qū)Τ霈F(xiàn)故障的存儲設(shè)備進行替換。當(dāng)失效存儲設(shè)備的數(shù)量為兩個以上時,根據(jù)與失效存儲設(shè)備根據(jù)存儲層的位置,生成恢復(fù)順序,按照恢復(fù)順序?qū)κТ鎯υO(shè)備進行替換。一般情況下,數(shù)據(jù)熱度高的層優(yōu)先于數(shù)據(jù)熱度低的層進行替換,也就是說,數(shù)據(jù)熱度越高,則所在存儲層對用戶越重要,所以必須優(yōu)先修復(fù)。
所述按照恢復(fù)順序?qū)Τ霈F(xiàn)故障的存儲設(shè)備進行替換是指,至少一個存活存儲設(shè)備向出現(xiàn)故障的存儲設(shè)備中進行數(shù)據(jù)遷徙。
本實施例中,所述出現(xiàn)故障的存儲設(shè)備為失效存儲設(shè)備。
于另一個實施例中,所述出現(xiàn)故障的存儲設(shè)備為數(shù)據(jù)損害設(shè)備中的一種。其替換方法與為失效存儲設(shè)備的方法相同。
一種分布式數(shù)據(jù)存儲系統(tǒng),包括分層查詢模塊1、監(jiān)視模塊2、查詢模塊3和替換模塊4;
所述存儲分層模塊1,用于將分布式系統(tǒng)的存儲空間分成多個存儲區(qū)域,每個區(qū)域中設(shè)有若干存儲設(shè)備,查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
所述監(jiān)視模塊2,監(jiān)視每個存儲設(shè)備的工作狀態(tài),當(dāng)存在故障存儲設(shè)備時,根據(jù)所述起始物理地址、端口信息或者存儲設(shè)備標(biāo)識符中的任意一種或幾種來確定故障存儲設(shè)備中的出現(xiàn)故障的部分的具體位置并且確定所述出現(xiàn)故障的全部數(shù)據(jù)組;
所述查詢模塊3,用于查詢相同存儲層中存活存儲設(shè)備,搜索與出現(xiàn)故障的部分的全部數(shù)據(jù)組相互對應(yīng)的第一數(shù)據(jù)組,在此,所述第一數(shù)據(jù)組物理地址長度不小于出現(xiàn)故障的部分的全部數(shù)據(jù)組;
所述替換模塊4,用于選擇第一數(shù)據(jù)組替換所述出現(xiàn)故障的部分的全部數(shù)據(jù)組。
所述分層查詢模塊1設(shè)置為:所述查找并獲得所有存儲設(shè)備的起始物理地址、端口信息以及為每一個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符,具體包括以下步驟:
根據(jù)存儲數(shù)據(jù)的冷熱程度,為每個存儲層設(shè)置一個編碼,為每個存儲設(shè)備分配唯一的存儲設(shè)備標(biāo)識符;
根據(jù)所述編碼和所述唯一存儲設(shè)備標(biāo)識符,查詢所對應(yīng)存儲設(shè)備的起始物理地址和端口信息。
所述替換模塊4設(shè)置為,當(dāng)出現(xiàn)故障的存儲設(shè)備的數(shù)量為兩個以上時,根據(jù)與所述出現(xiàn)故障的存儲設(shè)備根據(jù)存儲層的位置,生成恢復(fù)順序,按照恢復(fù)順序?qū)Τ霈F(xiàn)故障的存儲設(shè)備進行替換。
所述替換模塊設(shè)置4為,所述按照恢復(fù)順序?qū)Τ霈F(xiàn)故障的存儲設(shè)備進行替換是指,至少一個存活存儲設(shè)備向出現(xiàn)故障的存儲設(shè)備中進行數(shù)據(jù)遷徙。一般情況下,在每個存儲層中將每個數(shù)據(jù)組至少存儲在兩個存儲設(shè)備中,預(yù)防出現(xiàn)失效存儲設(shè)備,當(dāng)其中一個存儲設(shè)備出現(xiàn)失效部分時,可以再其他存數(shù)設(shè)備中查找與失效部分相同的數(shù)據(jù)組,進而進行替換。
所述監(jiān)視模塊設(shè)置2為:所述出現(xiàn)故障的存儲設(shè)備包括失效存儲設(shè)備和數(shù)據(jù)損害設(shè)備中的至少一種。
以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步的詳細說明,應(yīng)當(dāng)理解,以上所述僅為本發(fā)明的具體實施例而已,并不用于限定本發(fā)明的保護范圍。特別指出,對于本領(lǐng)域技術(shù)人員來說,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。