本公開公開了一種基于多副本的數據存儲方法,包括以下步驟:當文件中的數據執行寫入時,由主磁盤進程在內存中計算出文件中的數據的循環冗余碼以及文件的大小;多個從磁盤進程在接受到文件中的數據寫入請求時,將循環冗余碼、文件的大小以及文件中的數據執行寫入操作,并將反饋信息發送至主磁盤進程;主磁盤進程收到多個從磁盤進程的反饋信息后,執行核對操作,并將核對信息發送至數據集群管理端。上述基于多副本的數據存儲方法保證數據的強一致性,能夠應對包括主OSD(Object?Storage?Daemon,對象存儲進程)在內的任一副本所在的磁盤的故障。本公開還公開了一種基于多副本的數據存儲裝置。
【技術實現步驟摘要】
本公開涉及計算機存儲
,特別是涉及一種基于多副本的數據存儲方法和裝置。
技術介紹
目前,多副本下,無法保證數據的完全一致,需要采取額外的機制來保證這一點。例如,在三副本下,傳統的方式都是由一個磁盤負責接收請求,并轉發數據給另外兩塊磁盤,等另外兩塊落盤成功之后,自己再落盤,并在成功之后給予客戶回應,至于磁盤是否能夠完全正確的寫入,并沒有任何機制可以完全確認,這樣有可能存在問題,即其中兩快盤出現在落盤是寫入出現與實際不相符的情況,而且當僅有的一塊正確的盤出現不可恢復的故障之后,這部分錯誤的數據將沒有辦法恢復出來。這對于數據一致性要求非常高的場景下是無法接受的。另外,傳統技術中,上述的不一致性存在的時間越長,數據的安全性就越受到威脅,由于磁盤有壽命,隨著壞掉的磁盤越來越多,磁盤的更換都會帶來潛在的數據丟失的情況。
技術實現思路
基于此,有必要提供一種提高數據一致性且保證數據安全的基于多副本的數據存儲方法和裝置。一種基于多副本的數據存儲方法,該方法包括:當文件中的數據執行寫入時,由主磁盤進程在內存中計算出所述文件中的數據的循環冗余碼以及文件的大小;多個從磁盤進程在接受到所述文件中的數據寫入請求時,將所述循環冗余碼、所述文件的大小以及所述文件中的數據執行寫入操作,并將反饋信息
發送至所述主磁盤進程;所述主磁盤進程收到所述多個從磁盤進程的所述反饋信息后,執行核對操作,并將核對信息發送至數據集群管理端。在其中一個實施例中,其中,所述計算出所述文件中的數據的循環冗余碼以及文件的大小以文件系統擴展屬性的方式進行存儲。在其中一個實施例中,其中,所述主磁盤進程收到所述多個從磁盤進程的所述反饋信息后,執行核對操作包括:所述主磁盤進程接收到所述反饋信息后,遍歷其存儲的所有文件;所述主磁盤進程向位于多個磁盤的所述多個從磁盤進程發起文件長度核對請求;接收到所述多個從磁盤進程返回的所述文件長度后,將文件系統中比對長度與擴展屬性中所述文件長度執行比對操作;如果所述文件長度比對不一致,則向所述主磁盤進程返回錯誤消息,如果所述文件長度比對一致,則將所述文件長度和副本號發送至所述主磁盤進程。在其中一個實施例中,還包括:當向所述主磁盤進程返回所述錯誤消息時,則針對比對的所述文件進行修復標志的設置。在其中一個實施例中,其中,所述針對比對的所述文件進行修復標志的設置包括:收集位于所述多個磁盤的所述多個從磁盤進程中所述文件長度和所述副本號;將所述文件長度和所述副本號與所述主磁盤進程中的所述文件長度進行比對;若比對不一致,則將所述主磁盤進程中的所述文件拷貝給位于所述多個磁盤的所述多個從磁盤進程,若比對一致,則對所述主磁盤進程中的所述文件執行替換操作。一種基于多副本的數據存儲裝置,包括:計算模塊,用于當文件中的數據執行寫入時,由主磁盤進程在內存中計算出所述文件中的數據的循環冗余碼以及文件的大小;反饋信息發送模塊,用于多個從磁盤進程在接受到所述文件中的數據寫入請求時,將所述循環冗余碼、所述文件的大小以及所述文件中的數據執行寫入操作,并將反饋信息發送至所述主磁盤進程;核對處理模塊,用于所述主磁盤進程收到所述多個從磁盤進程的所述反饋信息后,執行核對操作,并將核對信息發送至數據集群管理端。在其中一個實施例中,其中,所述計算出所述文件中的數據的循環冗余碼以及文件的大小以文件系統擴展屬性的方式進行存儲。在其中一個實施例中,其中,所述核對處理模塊包括:遍歷模塊,用于所述主磁盤進程接收到所述反饋信息后,遍歷其存儲的所有文件;核對請求模塊,用于所述主磁盤進程向位于多個磁盤的所述多個從磁盤進程發起文件長度核對請求;第一比對模塊,用于接收到所述多個從磁盤進程返回的所述文件長度后,將文件系統中比對長度與擴展屬性中所述文件長度執行比對操作;第一執行模塊,用于如果所述文件長度比對不一致,則向所述主磁盤進程返回錯誤消息,如果所述文件長度比對一致,則將所述文件長度和副本號發送至所述主磁盤進程。在其中一個實施例中,還包括:設置模塊,用于當向所述主磁盤進程返回所述錯誤消息時,則針對比對的所述文件進行修復標志的設置。在其中一個實施例中,其中,所述設置模塊包括:收集模塊,用于收集位于所述多個磁盤的所述多個從磁盤進程中所述文件長度和所述副本號;第二比對模塊,用于將所述文件長度和所述副本號與所述主磁盤進程中的所述文件長度進行比對;第二執行模塊,用于若比對不一致,則將所述主磁盤進程中的所述文件
拷貝給位于所述多個磁盤的所述多個從磁盤進程,若比對一致,則對所述主磁盤進程中的所述文件執行替換操作。上述基于多副本的數據存儲方法和裝置,當文件中的數據執行寫入時,由主磁盤進程在內存中計算出文件中的數據的循環冗余碼以及文件的大小;多個從磁盤進程在接受到文件中的數據寫入請求時,將循環冗余碼、文件的大小以及文件中的數據執行寫入操作,并將反饋信息發送至主磁盤進程;主磁盤進程收到多個從磁盤進程的反饋信息后,執行核對操作,并將核對信息發送至數據集群管理端。上述基于多副本的數據存儲方法保證數據的強一致性,能夠應對包括主OSD(Object Storage Daemon,對象存儲進程)在內的任一副本所在的磁盤的故障。附圖說明圖1是一個實施例中基于多副本的數據存儲方法的流程示意圖;圖2是另一個實施例中基于多副本的數據存儲方法的流程示意圖;圖3是一個實施例中基于多副本的數據存儲裝置的結構示意圖;以及圖4是另一個實施例中基于多副本的數據存儲裝置的結構示意圖。具體實施方式為使本公開的目的、技術方案和優點更加清楚明了,下面結合具體實施方式并參照附圖,對本公開進一步詳細說明。應該理解,這些描述只是示例性的,而并非要限制本公開的范圍。此外,在以下說明中,省略了對公知結構和技術的描述,以避免不必要地混淆本公開的概念。參見圖1,一個實施例中,提供了一種基于多副本的數據存儲方法,該方法包括以下步驟:步驟102,當文件中的數據執行寫入時,由主磁盤進程在內存中計算出文件中的數據的循環冗余碼以及文件的大小。本實施例中,計算出文件中的數據的循環冗余碼以及文件的大小以文件
系統擴展屬性的方式進行存儲。步驟104,多個從磁盤進程在接受到文件中的數據寫入請求時,將循環冗余碼、文件的大小以及文件中的數據執行寫入操作,并將反饋信息發送至主磁盤進程。步驟106,主磁盤進程收到多個從磁盤進程的反饋信息后,執行核對操作,并將核對信息發送至數據集群管理端。本實施例中,主磁盤進程接收到反饋信息后,遍歷其存儲的所有文件;主磁盤進程向位于多個磁盤的多個從磁盤進程發起文件長度核對請求;接收到多個從磁盤進程返回的文件長度后,將文件系統中比對長度與擴展屬性中文件長度執行比對操作;如果文件長度比對不一致,則向主磁盤進程返回錯誤消息,如果文件長度比對一致,則將文件長度和副本號發送至主磁盤進程。需要說明的是,由于每個對象都只有一個主對象存儲進程,因此對于對象的更新都是順序的,不存在同步問題。當主對象存儲進程收到對象的寫請求時,它負責把數據發送給其他磁盤落盤,只要這個數據被保存在所有的對象存儲進程上時,主對象存儲進程才應答對象的寫請求,保證了副本的一致性上述基于多副本的數據存儲方法,當文件中的數據執行寫入時,由主磁盤進程在內存中計算出文件中本文檔來自技高網...
【技術保護點】
一種基于多副本的數據存儲方法,該方法包括:當文件中的數據執行寫入時,由主磁盤進程在內存中計算出所述文件中的數據的循環冗余碼以及文件的大小;多個從磁盤進程在接受到所述文件中的數據寫入請求時,將所述循環冗余碼、所述文件的大小以及所述文件中的數據執行寫入操作,并將反饋信息發送至所述主磁盤進程;所述主磁盤進程收到所述多個從磁盤進程的所述反饋信息后,執行核對操作,并將核對信息發送至數據集群管理端。
【技術特征摘要】
1.一種基于多副本的數據存儲方法,該方法包括:當文件中的數據執行寫入時,由主磁盤進程在內存中計算出所述文件中的數據的循環冗余碼以及文件的大小;多個從磁盤進程在接受到所述文件中的數據寫入請求時,將所述循環冗余碼、所述文件的大小以及所述文件中的數據執行寫入操作,并將反饋信息發送至所述主磁盤進程;所述主磁盤進程收到所述多個從磁盤進程的所述反饋信息后,執行核對操作,并將核對信息發送至數據集群管理端。2.根據權利要求1所述的方法,其中,所述計算出所述文件中的數據的循環冗余碼以及文件的大小以文件系統擴展屬性的方式進行存儲。3.根據權利要求1所述的方法,其中,所述主磁盤進程收到所述多個從磁盤進程的所述反饋信息后,執行核對操作包括:所述主磁盤進程接收到所述反饋信息后,遍歷其存儲的所有文件;所述主磁盤進程向位于多個磁盤的所述多個從磁盤進程發起文件長度核對請求;接收到所述多個從磁盤進程返回的所述文件長度后,將文件系統中比對長度與擴展屬性中所述文件長度執行比對操作;如果所述文件長度比對不一致,則向所述主磁盤進程返回錯誤消息,如果所述文件長度比對一致,則將所述文件長度和副本號發送至所述主磁盤進程。4.根據權利要求3所述的方法,還包括:當向所述主磁盤進程返回所述錯誤消息時,則針對比對的所述文件進行修復標志的設置。5.根據權利要求4所述的方法,其中,所述針對比對的所述文件進行修復標志的設置包括:收集位于所述多個磁盤的所述多個從磁盤進程中所述文件長度和所
\t述副本號;將所述文件長度和所述副本號與所述主磁盤進程中的所述文件長度進行比對;若比對不一致,則將所述主磁盤進程中的所述文件拷貝給位于所述多個磁盤的所述多個從磁盤進程,若比對一致,則對所述主磁盤進程中的所述文件執行替換操作。6.一種基于多副本的數據存儲裝置,包括:計算模塊,用...
【專利技術屬性】
技術研發人員:吳興義,
申請(專利權)人:樂視控股北京有限公司,樂視云計算有限公司,
類型:發明
國別省市:北京;11
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。