用於分布式存儲集群的數據修複方法及系統與流程
2023-05-19 01:14:36 3

本發明涉及分布式存儲技術領域,具體涉及一種用於分布式存儲集群的數據修複方法及系統。
背景技術:
分布式存儲系統,是將數據按照一定規則切分並打散存儲在多臺獨立通用存儲伺服器上。傳統的網絡存儲系統採用集中的存儲伺服器存放所有數據,存儲伺服器成為系統性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規模存儲應用的需要,而分布式存儲系統採用可擴展的系統結構,利用多臺存儲伺服器分擔存儲負荷,利用位置伺服器定位存儲信息,它不但提高了系統的可靠性、可用性和存取效率,還易於擴展。存儲集群的成千上萬臺伺服器可以將數據充分冗餘,從而可以顯著提高數據的安全性。
在分布式存儲系統中,通常採用三副本的方式保證數據安全。三副本方式是指,由一個主磁碟負責接收請求,並轉發數據給另外兩個(從)磁碟,等另外兩個磁碟上數據落盤成功之後,自己再落盤,並在成功之後給予用戶回應。
在實現本發明的過程中,發明人發現現有技術至少存在以下問題:三副本方式下,並沒有任何機制可以用來確認磁碟是否能夠將數據完全正確地寫入。這樣可能存在的問題是,其中兩塊從磁碟在落盤時可能出現與寫入的數據與實際數據並不相符的情況。並且當僅有的一塊數據正確的磁碟出現不可恢復的故障之後,該數據將無法恢復。這對於數據一致性要求非常高的場景下是無法接受的。此外,這樣數據不一致的情況存在的時間越長,數據的安全性就越受到威脅。因為磁碟的壽命有限制,隨著壞掉的磁碟越來越多,由此帶來的磁碟的頻繁更換,都會使得數據丟失的可能性越來越大。因此,對修復這種同一數據在不同磁碟內存儲內容不一致的需求是目前業界亟待解決的需要課題。
技術實現要素:
本發明實施例提供一種用於分布式存儲集群的數據修複方法及系統,用以解決上述闡述的現有技術中的至少一個問題。
本發明實施例的一個方面提供了一種用於分布式存儲集群的數據修複方法,包括:
根據接收到的數據讀取請求在所述分布式存儲集群中的主磁碟中確定數據的主副本,並將所述主副本返回至所述數據讀取請求的發起者;
基於校驗概率確定從副本校驗命中結果,當結果為是時,向所述從副本所在的從磁碟發送校驗請求,並接收所述從磁碟發送的第一校驗值;
確定所述第一校驗值與所述主副本的第二校驗值是否相同,當所述第一校驗值和所述第二校驗值不同時,利用所述主副本對所述從副本進行修復。
本發明實施例的另一方面提供了一種用於分布式存儲集群的數據修復系統,所述系統包括:
請求響應單元,用於根據接收到的數據讀取請求在所述分布式存儲集群中的主磁碟中確定數據的主副本,並將所述主副本返回至所述數據讀取請求的發起者;
副本修復單元,用於:
基於校驗概率確定從副本校驗命中結果,當結果為是時,向所述從副本所在的從磁碟發送校驗請求,並接收所述從磁碟發送的第一校驗值;
確定所述第一校驗值與所述主副本的第二校驗值是否相同,當所述第一校驗值和所述第二校驗值不同時,利用所述主副本對所述從副本進行修復。
本發明實施例提供的用於分布式存儲集群的數據修複方法及系統,在將主磁碟中的主副本返回數據讀取請求的發起者後,基於校驗概率來確定是否對數據的從副本進行校驗;當校驗命中結果為是時,向從磁碟發送校驗請求並接收從磁碟返回的響應於校驗請求的從副本的校驗值;最後確定從副本的校驗值與主副本的校驗值是否相同,當不同時表明主副本和從副本的內容不一致,此時利用主磁碟中的主副本即可完成對內容不一致的從副本進行自動修復的過程。本發明實施例所示方法及系統能夠基於主副本對存儲的數據其內容不一致的從副本進行自動修復。由於從副本與主副本中數據不一致的情況並不總是出現在每一塊數據中的,因此通過設置校驗概率來確定副本校驗的命中結果以確定是否對從副本進行數據一致性的校驗,能夠降低分布式存儲集群的系統負載,減少資源浪費,增加系統性能。且整個校驗過程和修復過程均為機器自動處理,無需人為操作,大大減少了人為因素帶來的各種誤差。
附圖說明
為了更清楚地說明本發明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明一實施例的用於分布式存儲集群的數據修複方法的流程圖;
圖2是本發明一實施例的用於分布式存儲集群的數據修復系統的結構示意圖;
圖3是實施本發明實施例的用於分布式存儲集群的數據修複方法的設備的結構示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
需要說明的是,在不衝突的情況下,本發明中的實施方式及實施方式中的特徵可以相互組合。
本發明可用於眾多通用或專用的計算系統環境或配置中。例如:個人計算機、伺服器計算機、手持設備或可攜式設備、平板型設備、多處理器系統、基於微處理器的系統、置頂盒、可編程的消費電子設備、網絡PC、小型計算機、大型計算機、包括以上任何系統或設備的分布式計算環境等等。
本發明可以在由計算機執行的計算機可執行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、對象、組件、數據結構等等。也可以在分布式計算環境中實踐本發明,在這些分布式計算環境中,由通過通信網絡而被連接的遠程處理設備來執行任務。在分布式計算環境中,程序模塊可以位於包括存儲設備在內的本地和遠程計算機存儲介質中。
最後,還需要說明的是,在本文中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關係或者順序。而且,術語「包括」、「包含」,不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句「包括……」限定的要素,並不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
圖1是本發明一實施例的用於分布式存儲集群的數據修複方法的流程圖。如圖1所示,該方法包括:
S11:根據接收到的數據讀取請求在所述分布式存儲集群中的主磁碟中確定數據的主副本,並將所述主副本返回至所述數據讀取請求的發起者;
S12:基於校驗概率確定從副本校驗命中結果,當結果為是時,向所述從副本所在的從磁碟發送校驗請求,並接收所述從磁碟發送的第一校驗值;
S13:確定所述第一校驗值與所述主副本的第二校驗值是否相同,當所述第一校驗值和所述第二校驗值不同時,利用所述主副本對所述從副本進行修復。
本實施例在將主磁碟中的主副本返回數據讀取請求的發起者後,基於校驗概率來確定是否對數據的從副本進行校驗;當校驗命中結果為是時,向從磁碟發送校驗請求並接收從磁碟返回的響應於校驗請求的從副本的校驗值;最後確定從副本的校驗值與主副本的校驗值是否相同,當不同時表明主副本和從副本的內容不一致,此時利用主磁碟中的主副本即可完成對內容不一致的從副本進行自動修復的過程。本發明實施例所示方法能夠基於主副本對存儲的數據其內容不一致的從副本進行自動修復。由於從副本與主副本中數據不一致的情況並不總是出現在每一塊數據中的,因此通過設置校驗概率來確定副本校驗的命中結果以確定是否對從副本進行數據一致性的校驗,能夠降低分布式存儲集群的系統負載,減少資源浪費,增加系統性能。且整個校驗過程和修復過程均為機器自動處理,無需人為操作,大大減少了人為因素帶來的各種誤差。
作為圖1所示實施例的進一步優化,圖1所示實施例中,校驗概率包括用於磁碟空閒狀態的第一校驗概率和用於磁碟工作狀態的第二校驗概率,其中,第一校驗概率大於第二校驗概率。
磁碟在非空閒時間內即處於工作狀態時,由於用戶的數據讀寫請求數量較多且頻率較高,此時若是經常對從副本進行校驗則會加重系統負擔。因此非空閒時間內設置較小的校驗概率值,例如5%,既可以滿足對從副本數據一致性的校驗的需求,又不會為系統帶來較大的壓力。而在空閒時間內,用戶的請求數量較少。此時可以設置較大的校驗概率值,並且通過系統內部人員進行數據讀寫請求的方式,對大部分的數據進行一致性校驗以進行從副本的自動修復,可以保證數據的安全性。特別地,可以將空閒時間內的校驗概率設為100%,用於對磁碟中的所有數據進行遍歷並找出數據不一致的副本以在對數據進行讀操作的同時對其進行從副本修復。
作為圖1所示實施例的進一步說明,圖1所示實施例中S13確定所述第一校驗值與所述主副本的第二校驗值是否相同,當所述第一校驗值和所述第二校驗值不同時,利用所述主副本對所述從副本進行修復包括:
S131:將所述主副本發送至所述從磁碟以替換所述從副本。
本實施例中,主副本讀取成功並被用於響應數據讀取請求後,將主副本發送至從磁碟以覆蓋或替換從磁碟中校驗值與主副本的校驗值不一致的從副本,可以在發現從副本與主副本不一致的同時對從副本立即進行修復,避免了在從副本在等待修復的過程中主磁碟因故障導致主副本缺失,從而導致用戶無法訪問該數據的缺陷,降低了該期間數據缺失帶來的損失。
在上述實施例中,所述校驗值根據所述數據讀取請求對應的數據內容確定,所述校驗值至少包括MD5校驗值或CRC32校驗值中的一種。
應當說明的是,在三副本方式下,當檢測到的兩個從副本的第一校驗值一致,卻不同於主副本的第二校驗值時,此時是與上述方法實施例一樣,數據以主副本為準,還是以多數存儲的副本為準,可以交由分布式存儲集群的系統管理員確定。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作合併,但是本領域技術人員應該知悉,本發明並不受所描述的動作順序的限制,因為依據本發明,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於優選實施例,所涉及的動作和模塊並不一定是本發明所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
圖2是本發明一實施例的用於分布式存儲集群的數據修復系統的結構示意圖。本發明實施例中所述的用於分布式存儲集群的數據修複方法可以基於本實施例中的用於分布式存儲集群的數據修復系統實施。如圖2所示,該系統包括請求響應單元21和副本修復單元22。
請求響應單元21用於根據接收到的數據讀取請求在所述分布式存儲集群中的主磁碟中確定數據的主副本,並將所述主副本返回至所述數據讀取請求的發起者;
副本修復單元22用於:
基於校驗概率確定從副本校驗命中結果,當結果為是時,向所述從副本所在的從磁碟發送校驗請求,並接收所述從磁碟發送的第一校驗值;
確定所述第一校驗值與所述主副本的第二校驗值是否相同,當所述第一校驗值和所述第二校驗值不同時,利用所述主副本對所述從副本進行修復。
本實施例在通過數據讀取單元21將主磁碟中的主副本返回數據讀取請求的發起者後,通過副本修復單元22來基於校驗概率確定是否對數據的從副本進行校驗;當校驗命中結果為是時,向從磁碟發送校驗請求並接收從磁碟返回的響應於校驗請求的從副本的校驗值;最後確定從副本的校驗值與主副本的校驗值是否相同,當不同時表明主副本和從副本的內容不一致,此時利用主磁碟中的主副本即可完成對內容不一致的從副本進行自動修復的過程。本發明實施例所示系統能夠基於主副本對存儲的數據其內容不一致的從副本進行自動修復。由於從副本與主副本中數據不一致的情況並不總是出現在每一塊數據中的,因此通過設置校驗概率來確定副本校驗的命中結果以確定是否對從副本進行數據一致性的校驗,能夠降低分布式存儲集群的系統負載,減少資源浪費,增加系統性能。且整個校驗過程和修復過程均為機器自動處理,無需人為操作,大大減少了人為因素帶來的各種誤差。
作為圖2所示實施例的進一步優化,圖2所示實施例中,校驗概率包括用於磁碟空閒狀態的第一校驗概率和用於磁碟工作狀態的第二校驗概率,其中,第一校驗概率大於第二校驗概率。
磁碟在非空閒時間內即處於工作狀態時,由於用戶的數據讀寫請求數量較多且頻率較高,此時若是經常對從副本進行校驗則會加重系統負擔。因此非空閒時間內設置較小的校驗概率值,例如5%,既可以滿足對從副本數據一致性的校驗的需求,又不會為系統帶來較大的壓力。而在空閒時間內,用戶的請求數量較少。此時可以設置較大的校驗概率值,並且通過系統內部人員進行數據讀寫請求的方式,對大部分的數據進行一致性校驗以進行從副本的自動修復,可以保證數據的安全性。特別地,可以將空閒時間內的校驗概率設為100%,用於對磁碟中的所有數據進行遍歷並找出數據不一致的副本以在對數據進行讀操作的同時對其進行副本修復。
作為圖2所示實施例的進一步說明,圖2所示實施例中副本修復單元22用於將所述主副本發送至所述從磁碟以替換所述從副本。
本實施例中,主副本讀取成功並被用於響應數據讀取請求後,將主副本發送至從磁碟以覆蓋或替換從磁碟中第一校驗值與主副本的第二校驗值不一致的從副本,可以在發現從副本與主副本不一致的同時對從副本立即進行修復,避免了在從副本在等待修復的過程中主磁碟因故障導致主副本缺失,從而導致用戶無法訪問該數據的缺陷,降低了該期間數據缺失帶來的損失。
在上述實施例中,所述校驗值根據所述數據讀取請求對應的數據內容確定,所述校驗值至少包括MD5校驗值或CRC32校驗值中的一種。
本發明實施例中可以通過硬體處理器(hardware processor)來實現相關功能模塊。
本發明提供一種非瞬時性(non-transitory)計算機可讀存儲介質,所述存儲介質中存儲有一個或多個包括執行指令的程序,所述執行指令能夠被帶有控制界面的電子設備執行,以用於執行上述方法實施例中的相關步驟,例如:
根據接收到的數據讀取請求在所述分布式存儲集群中的主磁碟中確定數據的主副本,並將所述主副本返回至所述數據讀取請求的發起者;
基於校驗概率確定從副本校驗命中結果,當結果為是時,向所述從副本所在的從磁碟發送校驗請求,並接收所述從磁碟發送的第一校驗值;
確定所述第一校驗值與所述主副本的第二校驗值是否相同,當所述第一校驗值和所述第二校驗值不同時,利用所述主副本對所述從副本進行修復。
圖3是實施本發明實施例的用於分布式存儲集群的數據修複方法的設備300的結構示意圖。本發明具體實施例並不對設備300的具體實現做限定。如圖3所示,該設備可以包括:
處理器(processor)310、通信接口(Communications Interface)320、存儲器(memory)330、以及通信總線340。其中:
處理器310、通信接口320、以及存儲器330通過通信總線340完成相互間的通信。
通信接口320,用於與比如客戶端等的網元通信。
處理器310,用於執行存儲器330中的程序332,具體可以執行上述方法實施例中的相關步驟。
具體地,程序332可以包括程序代碼,所述程序代碼包括計算機操作指令。
處理器310可能是一個中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實施本發明實施例的一個或多個集成電路。
存儲器330,用於存放程序332。存儲器330可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁碟存儲器。程序332具體可以用於使得設備300執行以下操作:
根據接收到的數據讀取請求在所述分布式存儲集群中的主磁碟中確定數據的主副本,並將所述主副本返回至所述數據讀取請求的發起者;
基於校驗概率確定從副本校驗命中結果,當結果為是時,向所述從副本所在的從磁碟發送校驗請求,並接收所述從磁碟發送的第一校驗值;
確定所述第一校驗值與所述主副本的第二校驗值是否相同,當所述第一校驗值和所述第二校驗值不同時,利用所述主副本對所述從副本進行修復。
程序332中各步驟的具體實現可以參見上述實施例中的相應步驟和單元中對應的描述,在此不贅述。所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的設備和模塊的具體工作過程,可以參考前述方法實施例中的對應過程描述,在此不再贅述。
以上所描述的實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性的勞動的情況下,即可以理解並實施。
通過以上的實施例的描述,本領域的技術人員可以清楚地了解到各實施例可藉助軟體加必需的通用硬體平臺的方式來實現,當然也可以通過硬體。基於這樣的理解,上述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品可以存儲在計算機可讀存儲介質中,如ROM/RAM、磁碟、光碟等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行各個實施例或者實施例的某些部分所述的方法。
本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或電腦程式產品。因此,本發明可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本發明可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器和光學存儲器等)上實施的電腦程式產品的形式。
本發明是參照根據本發明實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
最後應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的精神和範圍。