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