專利名稱:基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法
基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊設(shè)備技術(shù)領(lǐng)域,尤其涉及一種基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法。
背景技術(shù):
分布式存儲系統(tǒng)包括通過網(wǎng)絡(luò)互連的多個(gè)存儲節(jié)點(diǎn),數(shù)據(jù)可以被分散地存儲到不同的存儲節(jié)點(diǎn)上,以實(shí)現(xiàn)大容量、高可靠性且易擴(kuò)展的存儲應(yīng)用?,F(xiàn)有的分布式存儲系統(tǒng)常用的數(shù)據(jù)高可靠保證技術(shù)是通過數(shù)據(jù)冗余的方法實(shí)現(xiàn)的,即把一份數(shù)據(jù)保存成多個(gè)副本,從而當(dāng)部分副本所在的服務(wù)器故障時(shí),仍然可以從其它 正常的服務(wù)器訪問,這一技術(shù)可以保證數(shù)據(jù)讀取的高可靠。然而在數(shù)據(jù)寫入的過程中,只要其中的某一存有副本的服務(wù)器故障,將造成寫中斷,即無法保證數(shù)據(jù)寫入的高可靠性?,F(xiàn)有技術(shù)中提供了一種“數(shù)據(jù)冗余處理方法、裝置和分布式存儲系統(tǒng)”,見公開號為CN102279777A,
公開日為2011. 12. 14的中國專利,該方法,包括采用冗余算法生成待寫入數(shù)據(jù)的M個(gè)切片數(shù)據(jù)和N個(gè)冗余片數(shù)據(jù),所述M個(gè)切片數(shù)據(jù)和N個(gè)冗余片數(shù)據(jù)中任意損壞至多N個(gè)數(shù)據(jù)時(shí),能夠利用未損壞的數(shù)據(jù)恢復(fù)損壞的數(shù)據(jù),其中M為大于I的自然數(shù),N為不小于I的自然數(shù);將所述M個(gè)切片數(shù)據(jù)和N個(gè)冗余片數(shù)據(jù)分別存儲到位于至少兩個(gè)存儲節(jié)點(diǎn)上的對象中,其中,每個(gè)存儲節(jié)點(diǎn)包含至少一個(gè)對象集,每個(gè)對象集包含至少一個(gè)對象。該發(fā)明實(shí)施例可以提高存儲空間地利用率且降低了存儲負(fù)載,另外可以支持不同的冗余算法,從而滿足客戶不同的可靠性需求,靈活性較高。但該發(fā)明不能實(shí)現(xiàn)某一存儲節(jié)點(diǎn)在數(shù)據(jù)存儲寫入的過程中,其該存儲節(jié)點(diǎn)的服務(wù)器發(fā)生故障,則就會造成寫中斷,即不能達(dá)到數(shù)據(jù)寫入的高可靠性。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題,在于提供一種基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法,實(shí)現(xiàn)了分布式存儲系統(tǒng)上文件數(shù)據(jù)讀和寫的全面高可靠性。本發(fā)明是這樣實(shí)現(xiàn)的一種基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法,所述分布式存儲系統(tǒng)包括至少一控制節(jié)點(diǎn)的控制服務(wù)器和至少兩個(gè)存儲節(jié)點(diǎn)的存儲服務(wù)器,至少在兩個(gè)或兩個(gè)以上存儲節(jié)點(diǎn)的存儲服務(wù)器保存有相同的數(shù)據(jù)副本;所述數(shù)據(jù)冗余處理方法包括不分先后順序的讀取數(shù)據(jù)的處理和寫入數(shù)據(jù)的處理;所述讀取數(shù)據(jù)的處理當(dāng)客戶端要讀取一文件數(shù)據(jù)時(shí),分布式存儲系統(tǒng)從保存有數(shù)據(jù)副本的所有存儲節(jié)點(diǎn)中隨機(jī)選取一存儲節(jié)點(diǎn)的存儲服務(wù)器與客戶端進(jìn)行通信,判斷客戶端從選取的存儲服務(wù)器中是否成功讀取文件數(shù)據(jù);否,則轉(zhuǎn)向分布式存儲系統(tǒng)的其他任意一保存有數(shù)據(jù)副本的存儲節(jié)點(diǎn)的存儲服務(wù)器再進(jìn)行訪問讀取文件數(shù)據(jù);是,則提示讀取文件數(shù)據(jù)成功;所述寫入數(shù)據(jù)的處理當(dāng)客戶端要寫入一文件數(shù)據(jù)時(shí),將所述文件數(shù)據(jù)按一預(yù)設(shè)定的切片大小切片后進(jìn)行寫操作;所述寫操作為先將分布式存儲系統(tǒng)中的各存儲服務(wù)器進(jìn)行分組,所述各組存儲節(jié)點(diǎn)的存儲服務(wù)器為包括至少兩個(gè)存儲服務(wù)器,選取一組存儲節(jié)點(diǎn)的存儲服務(wù)器將文件數(shù)據(jù)切片后的第一切片數(shù)據(jù)進(jìn)行寫入,寫入成功后,重新選擇分布式存儲系統(tǒng)的其他一組存儲節(jié)點(diǎn)的存儲服務(wù)器進(jìn)行文件數(shù)據(jù)的第一切片數(shù)據(jù)的寫入,所有存儲服務(wù)器第一切片數(shù)據(jù)均寫完后,各組存儲服務(wù)器進(jìn)行下一切片數(shù)據(jù)的寫入,如此不斷循環(huán)將所有的切片數(shù)據(jù)進(jìn)行寫入;任意一切片數(shù)據(jù)在寫入的過程中,被寫入的存儲服務(wù)器發(fā)生故障,則設(shè)置當(dāng)前要寫入的切片數(shù)據(jù)大小為故障前文件數(shù)據(jù)最后寫入的大小位置,并立即從文件數(shù)據(jù)的該大小位置開始生成新的切片數(shù)據(jù),選擇新的一組存儲節(jié)點(diǎn)的存儲服務(wù)器繼續(xù)寫入該新的切片數(shù)據(jù);切片數(shù)據(jù)采用同步復(fù)制方法寫入;所述同步復(fù)制方法為保存數(shù)據(jù)的一組存儲節(jié)點(diǎn)中的任何一存儲節(jié)點(diǎn)在接收到寫入數(shù)據(jù)時(shí),先往組內(nèi)其它存儲節(jié)點(diǎn)寫入數(shù)據(jù),最后再寫所述一存儲節(jié)點(diǎn)。
·
本發(fā)明具有如下優(yōu)點(diǎn)本發(fā)明的數(shù)據(jù)冗余處理方法包括不分先后順序的讀取數(shù)據(jù)的處理和寫入數(shù)據(jù)的處理;其讀取數(shù)據(jù)的處理讀取數(shù)據(jù)時(shí),系統(tǒng)隨機(jī)選取一個(gè)存儲節(jié)點(diǎn)進(jìn)行讀取,若讀取失敗,自動轉(zhuǎn)向其它存儲節(jié)點(diǎn)訪問別的副本。寫入數(shù)據(jù)的處理采用文件數(shù)據(jù)分片技術(shù)、同步復(fù)制功能及異步更新功能相結(jié)合的方式實(shí)現(xiàn)數(shù)據(jù)寫入的高可靠。本發(fā)明在分布式存儲系統(tǒng)上既實(shí)現(xiàn)了數(shù)據(jù)讀取的高可靠性,又實(shí)現(xiàn)了數(shù)據(jù)寫入的高可靠性。其保證了分布式存儲系統(tǒng)上數(shù)據(jù)的全面可靠性,其數(shù)據(jù)不會損壞和丟失。
圖I為本發(fā)明分布式存儲系統(tǒng)各存儲服務(wù)器的結(jié)構(gòu)示意圖。圖2為本發(fā)明客戶端從存儲節(jié)點(diǎn)讀取數(shù)據(jù)的處理流程示意圖。圖3為本發(fā)明客戶端寫入數(shù)據(jù)到存儲節(jié)點(diǎn)的處理流程示意圖。
具體實(shí)施方式請參閱圖I所示,本發(fā)明的一種基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法,所述分布式存儲系統(tǒng)包括至少一控制節(jié)點(diǎn)的控制服務(wù)器和至少兩個(gè)存儲節(jié)點(diǎn)的存儲服務(wù)器,數(shù)據(jù)至少在兩個(gè)或兩個(gè)以上存儲節(jié)點(diǎn)的存儲服務(wù)器保存有相同的數(shù)據(jù)副本(在本實(shí)施實(shí)例中包括了由A、B、C、D四個(gè)存儲節(jié)點(diǎn)構(gòu)成的存儲集群);所述數(shù)據(jù)冗余處理方法包括不分先后順序的讀取數(shù)據(jù)的處理和寫入數(shù)據(jù)的處理;如圖2所示,所述讀取數(shù)據(jù)的處理當(dāng)客戶端要讀取一文件數(shù)據(jù)(如文件filel)時(shí),分布式存儲系統(tǒng)從保存文件數(shù)據(jù)的所有存儲節(jié)點(diǎn)中隨機(jī)選取一存儲節(jié)點(diǎn)的存儲服務(wù)器與客戶端進(jìn)行通信(此時(shí)選擇的為存儲節(jié)點(diǎn)存儲服務(wù)器A),所述客戶端發(fā)送讀取數(shù)據(jù)請求,選取的存儲服務(wù)器響應(yīng)客戶端的請求后,客戶端從選取的存儲服務(wù)器中獲取要讀取的文件數(shù)據(jù);判斷客戶端從選取的存儲服務(wù)器中是否成功讀取文件數(shù)據(jù);否,則轉(zhuǎn)向分布式存儲系統(tǒng)的其他任意一保存文件數(shù)據(jù)的存儲節(jié)點(diǎn)的存儲服務(wù)器(如此時(shí)選取的存儲節(jié)點(diǎn)存儲服務(wù)器B)再進(jìn)行訪問讀取文件數(shù)據(jù);是,則提示讀取文件數(shù)據(jù)成功。如圖3所示,所述寫入數(shù)據(jù)的處理當(dāng)客戶端要寫入一文件數(shù)據(jù)時(shí),將所述文件數(shù)據(jù)filel按一預(yù)設(shè)定的切片大小切片后(如切片為三個(gè)filel_partl、filel_part2、filel_part3)進(jìn)行寫操作;所述寫操作為先將分布式存儲系統(tǒng)中的各存儲服務(wù)器進(jìn)行分組(如存儲節(jié)點(diǎn)存儲服務(wù)器A和C為一組,存儲節(jié)點(diǎn)存儲服務(wù)器B和D為一組),所述各組存儲節(jié)點(diǎn)的存儲服務(wù)器為包括至少兩個(gè)存儲服務(wù)器,分布式存儲系統(tǒng)選取一組存儲節(jié)點(diǎn)的存儲服務(wù)器(如存儲節(jié)點(diǎn)存儲服務(wù)器A和C)將文件數(shù)據(jù)切片后的第一切片數(shù)據(jù)(第一切片數(shù)據(jù)為filel_partl)進(jìn)行寫入,寫入成功后,重新選擇分布式存儲系統(tǒng)的其他任意一組存儲節(jié)點(diǎn)的存儲服務(wù)器(如此時(shí)選擇的為存儲節(jié)點(diǎn)存儲服務(wù)器B、D)進(jìn)行文件數(shù)據(jù)的第一切片數(shù)據(jù)(即filel_partl)的寫入,所有存儲服務(wù)器第一切片數(shù)據(jù)均寫完后,各組存儲服務(wù)器(即按上述第一切片數(shù)據(jù)寫入存儲服務(wù)器的順序進(jìn)行各組的存儲服務(wù)器寫入)進(jìn)行下一切片數(shù)據(jù)(下一切片數(shù)據(jù)為filel_part2)的寫入,如此不斷循環(huán)將所有的切片數(shù)據(jù)進(jìn)行寫A ;任意一切片數(shù)據(jù)(如filel_part3)在寫入的過程中,被寫入的存儲服務(wù)器(如存儲節(jié)點(diǎn)存儲服務(wù)器A)發(fā)生故障,則設(shè)置當(dāng)前要寫入的切片數(shù)據(jù)大小為故障前文件數(shù)據(jù)最后寫入的大小位置,并立即從文件數(shù)據(jù)的該大小位置(即將文件數(shù)據(jù)的filel_part3切片位置)開始生成新的切片數(shù)據(jù)(如filel_partnew),選擇新的一組存儲節(jié)點(diǎn)的存儲服務(wù)器(即存儲 節(jié)點(diǎn)存儲服務(wù)器A出現(xiàn)故障,則選擇存儲節(jié)點(diǎn)存儲服務(wù)器B、C)繼續(xù)寫入該新的切片數(shù)據(jù)(即此時(shí)就是filel_part3切片數(shù)據(jù)用filel_partnew切片數(shù)據(jù)進(jìn)行替換);數(shù)據(jù)寫入采用同步復(fù)制的方法;所述同步復(fù)制的方法為保存數(shù)據(jù)的一組存儲節(jié)點(diǎn)中的任何節(jié)點(diǎn)在接收到寫入數(shù)據(jù)時(shí),先往組內(nèi)其它節(jié)點(diǎn)寫入數(shù)據(jù),最后再寫所述一存儲節(jié)點(diǎn)。(如filel_partl寫入到存儲節(jié)點(diǎn)存儲服務(wù)器A時(shí),A先同步把數(shù)據(jù)寫往存儲節(jié)點(diǎn)存儲服務(wù)器B,寫入成功后再寫自身存儲服務(wù)器A本地?cái)?shù)據(jù))其中,本發(fā)明中所述各存儲服務(wù)器中存儲有所述文件數(shù)據(jù)的各切片數(shù)據(jù)后,將各切片數(shù)據(jù)組合成完整的所述文件數(shù)據(jù)。當(dāng)各存儲服務(wù)器要更新一文件數(shù)據(jù)時(shí),某一存儲節(jié)點(diǎn)的存儲服務(wù)器發(fā)生故障,則分布式存儲系統(tǒng)啟動異步更新功能,所述異步更新功能為控制節(jié)點(diǎn)的控制服務(wù)器中將建立一更新日志,待故障的存儲節(jié)點(diǎn)的存儲服務(wù)器恢復(fù)正常后,分布式存儲系統(tǒng)通過重新執(zhí)行所述更新日志,則故障的存儲服務(wù)器進(jìn)行更新文件數(shù)據(jù),以確保各存儲服務(wù)器的數(shù)據(jù)保
持一致??傊?,本發(fā)明的讀取數(shù)據(jù)的處理讀取數(shù)據(jù)時(shí),系統(tǒng)從保存有數(shù)據(jù)的存儲節(jié)點(diǎn)中隨機(jī)選取一個(gè)存儲節(jié)點(diǎn)進(jìn)行讀取,若讀取失敗,自動轉(zhuǎn)向其它存儲節(jié)點(diǎn)訪問別的副本。寫入數(shù)據(jù)的處理采用文件數(shù)據(jù)分片技術(shù)、同步復(fù)制功能及異步更新功能相結(jié)合的方式實(shí)現(xiàn)數(shù)據(jù)寫入的高可靠。本發(fā)明在分布式存儲系統(tǒng)上既實(shí)現(xiàn)了數(shù)據(jù)讀取的高可靠性,又實(shí)現(xiàn)了數(shù)據(jù)寫入的高可靠性。其保證了分布式存儲系統(tǒng)上數(shù)據(jù)的全面可靠性,其數(shù)據(jù)不會損壞和丟失。以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
權(quán)利要求
1.一種基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法,其特征在于所述分布式存儲系統(tǒng)包括至少ー控制節(jié)點(diǎn)的控制服務(wù)器和至少兩個(gè)存儲節(jié)點(diǎn)的存儲服務(wù)器,至少在兩個(gè)或兩個(gè)以上存儲節(jié)點(diǎn)的存儲服務(wù)器保存有相同的數(shù)據(jù)副本; 所述數(shù)據(jù)冗余處理方法包括不分先后順序的讀取數(shù)據(jù)的處理和寫入數(shù)據(jù)的處理; 所述讀取數(shù)據(jù)的處理當(dāng)客戶端要讀取一文件數(shù)據(jù)時(shí),分布式存儲系統(tǒng)從保存有數(shù)據(jù)副本的所有存儲節(jié)點(diǎn)中隨機(jī)選取一存儲節(jié)點(diǎn)的存儲服務(wù)器與客戶端進(jìn)行通信,判斷客戶端從選取的存儲服務(wù)器中是否成功讀取文件數(shù)據(jù);否,則轉(zhuǎn)向分布式存儲系統(tǒng)的其他任意一保存有數(shù)據(jù)副本的存儲節(jié)點(diǎn)的存儲服務(wù)器再進(jìn)行訪問讀取文件數(shù)據(jù);是,則提示讀取文件數(shù)據(jù)成功; 所述寫入數(shù)據(jù)的處理當(dāng)客戶端要寫入一文件數(shù)據(jù)時(shí),將所述文件數(shù)據(jù)按ー預(yù)設(shè)定的切片大小切片后進(jìn)行寫操作;所述寫操作為先將分布式存儲系統(tǒng)中的各存儲服務(wù)器進(jìn)行分組,所述各組存儲節(jié)點(diǎn)的存儲服務(wù)器為包括至少兩個(gè)存儲服務(wù)器,選取ー組存儲節(jié)點(diǎn)的存儲服務(wù)器將文件數(shù)據(jù)切片后的第一切片數(shù)據(jù)進(jìn)行寫入,寫入成功后,重新選擇分布式存儲系統(tǒng)的其他一組存儲節(jié)點(diǎn)的存儲服務(wù)器進(jìn)行文件數(shù)據(jù)的第一切片數(shù)據(jù)的寫入,所有存儲服務(wù)器第一切片數(shù)據(jù)均寫完后,各組存儲服務(wù)器進(jìn)行下一切片數(shù)據(jù)的寫入,如此不斷循環(huán)將所有的切片數(shù)據(jù)進(jìn)行寫入; 任意一切片數(shù)據(jù)在寫入的過程中,被寫入的存儲服務(wù)器發(fā)生故障,則設(shè)置當(dāng)前要寫入的切片數(shù)據(jù)大小為故障前文件數(shù)據(jù)最后寫入的大小位置,并立即從文件數(shù)據(jù)的該大小位置開始生成新的切片數(shù)據(jù),選擇新的一組存儲節(jié)點(diǎn)的存儲服務(wù)器繼續(xù)寫入該新的切片數(shù)據(jù);切片數(shù)據(jù)采用同步復(fù)制方法寫入;所述同步復(fù)制方法為保存數(shù)據(jù)的ー組存儲節(jié)點(diǎn)中的任何一存儲節(jié)點(diǎn)在接收到寫入數(shù)據(jù)時(shí),先往組內(nèi)其它存儲節(jié)點(diǎn)寫入數(shù)據(jù),最后再寫所述一存儲節(jié)點(diǎn)。
2.根據(jù)權(quán)利要求I所述的基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法,其特征在于所述分布式存儲系統(tǒng)隨機(jī)選取ー組存儲節(jié)點(diǎn)的存儲服務(wù)器與客戶端進(jìn)行通信之后,還包括所述客戶端發(fā)送讀取數(shù)據(jù)請求,選取的存儲服務(wù)器響應(yīng)客戶端的請求后,客戶端從選取的存儲服務(wù)器中獲取要讀取的文件數(shù)據(jù)。
3.根據(jù)權(quán)利要求I所述的基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法,其特征在于所述各存儲服務(wù)器中存儲有所述文件數(shù)據(jù)的各切片數(shù)據(jù)后,將各切片數(shù)據(jù)組合成完整的所述文件數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法,其特征在于當(dāng)各存儲服務(wù)器要更新一文件數(shù)據(jù)時(shí),某一存儲節(jié)點(diǎn)的存儲服務(wù)器發(fā)生故障,則分布式存儲系統(tǒng)啟動異步更新功能,所述異步更新功能為控制節(jié)點(diǎn)的控制服務(wù)器中將建立一更新日志,待故障的存儲節(jié)點(diǎn)的存儲服務(wù)器恢復(fù)正常后,分布式存儲系統(tǒng)通過重新執(zhí)行所述更新日志,則故障的存儲服務(wù)器進(jìn)行更新文件數(shù)據(jù),以確保各存儲服務(wù)器的數(shù)據(jù)保持一致。
全文摘要
本發(fā)明提供一種基于分布式存儲系統(tǒng)進(jìn)行數(shù)據(jù)冗余處理方法,所述分布式存儲系統(tǒng)包括至少一控制節(jié)點(diǎn)的控制服務(wù)器和至少兩個(gè)存儲節(jié)點(diǎn)的存儲服務(wù)器,數(shù)據(jù)至少在兩個(gè)或兩個(gè)以上存儲節(jié)點(diǎn)保存有相同的副本;所述數(shù)據(jù)冗余處理方法包括不分先后順序的讀取數(shù)據(jù)的處理和寫入數(shù)據(jù)的處理;其讀取數(shù)據(jù)的處理讀取數(shù)據(jù)時(shí),系統(tǒng)從保存數(shù)據(jù)副本的所有存儲服務(wù)器中隨機(jī)選取一個(gè)存儲節(jié)點(diǎn)進(jìn)行讀取,若讀取失敗,自動轉(zhuǎn)向其它存儲節(jié)點(diǎn)訪問別的副本。寫入數(shù)據(jù)的處理采用文件數(shù)據(jù)分片技術(shù)、同步復(fù)制功能及異步更新功能相結(jié)合的方式實(shí)現(xiàn)數(shù)據(jù)寫入的高可靠。本發(fā)明在分布式存儲系統(tǒng)上既實(shí)現(xiàn)了數(shù)據(jù)讀取的高可靠性,又實(shí)現(xiàn)了數(shù)據(jù)寫入的高可靠性。
文檔編號H04L29/08GK102857554SQ201210262780
公開日2013年1月2日 申請日期2012年7月26日 優(yōu)先權(quán)日2012年7月26日
發(fā)明者劉德建, 陳宏展, 吳家亮, 張建新, 劉弘達(dá), 李浩清 申請人:福建網(wǎng)龍計(jì)算機(jī)網(wǎng)絡(luò)信息技術(shù)有限公司