欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種糾刪碼RAID的數(shù)據(jù)一致性保障方法及系統(tǒng)與流程

文檔序號:11918004閱讀:745來源:國知局
一種糾刪碼RAID的數(shù)據(jù)一致性保障方法及系統(tǒng)與流程

本發(fā)明涉及計算機(jī)存儲領(lǐng)域,特別涉及一種糾刪碼RAID的數(shù)據(jù)一致性保障方法及系統(tǒng)。



背景技術(shù):

RAID(獨立冗余磁盤陣列)技術(shù)是一種提供增強(qiáng)冗余、容量和存儲性能的存儲方法,有著較強(qiáng)的可管理性、可靠性和可用性。通過冗余計算,RAID技術(shù)能夠在滿足可靠性要求的前提下降低系統(tǒng)的容量開銷。RAID技術(shù)作為基礎(chǔ)存儲技術(shù)之一,在過去二十余年中有效地保障了用戶數(shù)據(jù)的可靠性。多副本和糾刪碼技術(shù)是RAID系統(tǒng)常用的可靠性保障技術(shù),多副本技術(shù)導(dǎo)致系統(tǒng)存儲空間利用率過低,帶來高存儲成本。而糾刪碼技術(shù)相對于多副本技術(shù),可在保證數(shù)據(jù)可用性和可靠性的前提下大幅提升存儲空間利用率,因此已成為存儲技術(shù)的發(fā)展趨勢。

糾刪碼(Erasure Code,EC)是一種數(shù)據(jù)保護(hù)方法,它將數(shù)據(jù)分割成片段,把冗余數(shù)據(jù)塊擴(kuò)展、編碼,并將其存儲在不同的物理位置?;驹頌橄驍?shù)據(jù)中加入冗余信息,增加校驗位,使得數(shù)據(jù)損壞后可以通過校驗信息進(jìn)行數(shù)據(jù)的恢復(fù)。使用數(shù)據(jù)盤n塊、校驗碼盤m塊組建RS-Code的RAID存儲系統(tǒng),系統(tǒng)可以容忍小于等于m塊的磁盤同時損壞(壞磁盤數(shù)<=校驗碼盤數(shù)),并能夠保證數(shù)據(jù)的完整性。與副本技術(shù)相比,糾刪碼技術(shù)極大地提高了磁盤陣列的存儲效率,并且只引入了少量的額外能耗開銷。

隨著存儲數(shù)據(jù)量的飛速增長,為減少數(shù)據(jù)冗余代價并保證數(shù)據(jù)的可用性和可靠性,糾刪碼技術(shù)成為了存儲系統(tǒng)發(fā)展的熱點。但糾刪碼存儲系統(tǒng)的寫性能表現(xiàn)不佳,尤其是對于小數(shù)據(jù)寫的情況。糾刪碼系統(tǒng)的條帶化讀-修改-寫策略會將小寫操作轉(zhuǎn)化為一系列的讀寫操作組合,導(dǎo)致頻繁的磁頭抖動,使得糾刪碼系統(tǒng)的小寫性能極低。如圖示1,為三個數(shù)據(jù)盤加兩個校驗盤組成的3+2糾刪碼系統(tǒng)(即RAID6)的數(shù)據(jù)寫入過程。由于條帶化RAID數(shù)據(jù)塊間存在緊耦合問題,當(dāng)用戶寫D1塊時,RAID6將先讀取D2和D3塊的數(shù)據(jù)至內(nèi)存,然后在內(nèi)存中計算新校驗P’和Q’,最后將新數(shù)據(jù)D1’、新校驗P’和Q’寫入磁盤,完成整個寫入過程??梢钥闯?,一個用戶的寫操作導(dǎo)致了多個磁盤的讀寫操作,使得RAID6的寫性能低下。

根據(jù)糾刪碼系統(tǒng)的工作原理和特點,可知,糾刪碼的數(shù)據(jù)更新過程涉及到多個數(shù)據(jù)和校驗設(shè)備,且包含一系列的異步讀寫操作,即糾刪碼的數(shù)據(jù)更新過程本身不是原子操作。在糾刪碼系統(tǒng)中,每次數(shù)據(jù)的更新都需要同時更新校驗,以達(dá)到數(shù)據(jù)和校驗一致的目的。這樣才能保證在故障后,能通過校驗和剩余數(shù)據(jù)將丟失的數(shù)據(jù)恢復(fù)出來。若在糾刪碼更新的過程中發(fā)生故障中斷,那么數(shù)據(jù)和校驗很可能不一致,這種數(shù)據(jù)更新時故障導(dǎo)致的數(shù)據(jù)不一致問題又被稱為Write Hole問題。

Write Hole問題的經(jīng)典場景為盤陣降級后發(fā)生寫更新掉電。以RAID6為例,若在盤陣降級的情況下發(fā)生寫更新掉電,將可能出現(xiàn)Write Hole問題。如圖2所示,RAID6已寫入新數(shù)據(jù)D1’而未寫入新數(shù)據(jù)D2’和新校驗P’、Q’。此時,由新數(shù)據(jù)、舊校驗組成的RAID6條帶數(shù)據(jù)已經(jīng)不一致。

對于這樣的一種場景,RAID6在重新恢復(fù)并開始接受用戶請求后,將無法保證數(shù)據(jù)的正確性。如圖3,用戶發(fā)起對壞盤D3的數(shù)據(jù)讀請求,此時RAID6將讀取所有剩余的數(shù)據(jù)和校驗信息來計算出D3數(shù)據(jù),然而此時條帶數(shù)據(jù)已經(jīng)不一致,將會計算出錯誤的D3數(shù)據(jù)返回給用戶。這個錯誤的D3數(shù)據(jù),既不為舊版本D3,也不為新版本D3,而是舊數(shù)據(jù)和新校驗計算出來的無意義的比特序列。這樣,Write Hole問題導(dǎo)致糾刪碼系統(tǒng)丟失了正確性和可靠性。

數(shù)據(jù)一致性是糾刪碼存儲系統(tǒng)的本質(zhì)屬性,保證了數(shù)據(jù)的可靠性和可用性。Write Hole導(dǎo)致糾刪碼系統(tǒng)丟失數(shù)據(jù)一致性,完全規(guī)避Write Hole問題成為了糾刪碼系統(tǒng)亟待改進(jìn)的重大問題。

基于上述分析,本發(fā)明提出AWR(After Write Remapping)事務(wù)存儲模型,通過保證糾刪碼RAID系統(tǒng)數(shù)據(jù)更新過程的原子性和持久性,來保證糾刪碼RAID數(shù)據(jù)的一致性。



技術(shù)實現(xiàn)要素:

為解決以上技術(shù)問題,本發(fā)明提出一種糾刪碼RAID的數(shù)據(jù)一致性保障方法及系統(tǒng)。

本發(fā)明提出一種糾刪碼RAID的數(shù)據(jù)一致性保障方法,包括:

步驟1,當(dāng)有新數(shù)據(jù)寫入時,修改版本設(shè)備中各設(shè)備的數(shù)據(jù)映射表,并生成事務(wù)日志表,所述版本設(shè)備中各設(shè)備進(jìn)行異步下刷操作,完成后,清除所述事務(wù)日志表,其中所述版本設(shè)備由新數(shù)據(jù)卷與舊數(shù)據(jù)卷構(gòu)成;

步驟2,將所述新數(shù)據(jù)及與其相對應(yīng)的新校驗信息經(jīng)所述版本設(shè)備轉(zhuǎn)發(fā)并寫入新數(shù)據(jù)卷,當(dāng)所述新數(shù)據(jù)與所述新校驗信息都完整寫入后,再觸發(fā)所述步驟1,將所述新數(shù)據(jù)與所述新校驗信息寫入所述舊數(shù)據(jù)卷。

寫入所述新數(shù)據(jù)時,首先臨時存儲在所述新數(shù)據(jù)卷,所述新數(shù)據(jù)的最終數(shù)據(jù)存儲于所述舊數(shù)據(jù)卷中。

所述步驟2包括:所述新數(shù)據(jù)與所述新校驗信息經(jīng)由所述版本設(shè)備持久化到所述新數(shù)據(jù)卷,并修改所述新數(shù)據(jù)卷中條帶狀態(tài)為提交完成狀態(tài)。

所述新數(shù)據(jù)卷與所述舊數(shù)據(jù)卷各自組成一致性維護(hù)的條帶結(jié)構(gòu)。

本發(fā)明還提出一種糾刪碼RAID的數(shù)據(jù)一致性保障系統(tǒng),包括:

重映射模塊,用于當(dāng)有新數(shù)據(jù)寫入時,修改版本設(shè)備中各設(shè)備的數(shù)據(jù)映射表,并生成事務(wù)日志表,所述版本設(shè)備中各設(shè)備進(jìn)行異步下刷操作,完成后,清除所述事務(wù)日志表,其中所述版本設(shè)備由新數(shù)據(jù)卷與舊數(shù)據(jù)卷構(gòu)成;

糾刪碼模塊,用于將所述新數(shù)據(jù)及與其相對應(yīng)的新校驗信息經(jīng)所述版本設(shè)備轉(zhuǎn)發(fā)并寫入新數(shù)據(jù)卷,當(dāng)所述新數(shù)據(jù)與所述新校驗信息都完整寫入后,再觸發(fā)所述重映射模塊,將所述新數(shù)據(jù)與所述新校驗信息寫入所述舊數(shù)據(jù)卷。

寫入所述新數(shù)據(jù)時,首先臨時存儲在所述新數(shù)據(jù)卷,所述新數(shù)據(jù)的最終數(shù)據(jù)存儲于所述舊數(shù)據(jù)卷中。

所述糾刪碼模塊包括:所述新數(shù)據(jù)與所述新校驗信息經(jīng)由所述版本設(shè)備持久化到所述新數(shù)據(jù)卷,并修改所述新數(shù)據(jù)卷中條帶狀態(tài)為提交完成狀態(tài)。

所述新數(shù)據(jù)卷與所述舊數(shù)據(jù)卷各自組成一致性維護(hù)的條帶結(jié)構(gòu)。

由以上方案可知,本發(fā)明的優(yōu)點在于:

本發(fā)明提出了“寫后重映射”存儲模型(After Write Remapping,AWR)和事務(wù)實現(xiàn)方法,保證了糾刪碼數(shù)據(jù)的一致性。AWR模型為糾刪碼數(shù)據(jù)的更新過程提供原子性和持久性,采用數(shù)據(jù)異地更新和原子重映射機(jī)制保證了更新過程中數(shù)據(jù)的一致性。

附圖說明

圖1為RAID6寫入過程圖;

圖2為Write Hole問題經(jīng)典場景圖;

圖3為糾刪碼條帶丟失一致性后的讀錯誤圖;

圖4為版本設(shè)備結(jié)構(gòu)圖;

圖5為remap日志事務(wù)及元數(shù)據(jù)異步下刷機(jī)制圖;

圖6為AWR模型糾刪碼結(jié)構(gòu)圖;

圖7為條帶狀態(tài)位圖及含義圖;

圖8為BRD、ARD新舊版本結(jié)構(gòu)圖;

圖9為AWR模型數(shù)據(jù)更新流程圖。

具體實施方式

下面給出本發(fā)明的具體實施方式,結(jié)合附圖對本發(fā)明做出了詳細(xì)描述,本發(fā)明包括高效remap機(jī)制和AWR事務(wù)模型兩個部分。

(一)高效remap機(jī)制

分析MD-RAID6系統(tǒng)中的一致性問題原因可以得出結(jié)論,MD-RAID6在不能保證一致的新數(shù)據(jù)、校驗信息都已下盤的情況下就覆蓋了一致的舊數(shù)據(jù)、校驗信息,導(dǎo)致條帶處于新舊數(shù)據(jù)混合的中間階段,丟失了數(shù)據(jù)的一致性。

針對這個問題,本發(fā)明設(shè)計了由新舊設(shè)備組成的版本設(shè)備并實現(xiàn)了版本設(shè)備間無數(shù)據(jù)拷貝的高效遷移操作。版本設(shè)備由新數(shù)據(jù)卷BRD(Before Remap Device)和舊數(shù)據(jù)卷ARD(After Remap Device)組建而成,版本設(shè)備結(jié)構(gòu)如圖示4所示,新數(shù)據(jù)的寫入均落于BRD設(shè)備,BRD設(shè)備占用的物理空間很小,僅作為數(shù)據(jù)更新過程的臨時存放位置,最終的數(shù)據(jù)均存儲于ARD設(shè)備中,remap操作實現(xiàn)了數(shù)據(jù)從BRD設(shè)備至ARD設(shè)備的高效遷移,其核心為僅修改設(shè)備中地址的映射信息,從而達(dá)到數(shù)據(jù)遷移的目的,而不發(fā)生任何實際的數(shù)據(jù)拷貝過程,remap過程涉及到兩個設(shè)備數(shù)據(jù)映射表的修改,單純的設(shè)備間獨立修改各自的元數(shù)據(jù)并非原子操作,為此,版本設(shè)備還為remap機(jī)制還添加了事務(wù)日志和異步元數(shù)據(jù)寫入的優(yōu)化工作,如圖示5,在完成記錄remap日志和修改緩存中映射表項后,即可認(rèn)為remap成功,此后,數(shù)據(jù)卷BRD和舊數(shù)據(jù)卷ARD各自完成元數(shù)據(jù)的異步下刷工作,最后,再通知日志事務(wù)設(shè)備清除日志,完成整個remap過程,這樣一來,日志事務(wù)保證了整個remap過程的原子性,即使過程中發(fā)生中斷也能夠根據(jù)日志信息將映射表回滾到一個正確的狀態(tài),同時,元數(shù)據(jù)的異步下刷機(jī)制使得remap過程開銷僅為記錄日志開銷和內(nèi)存映射表項的修改開銷,進(jìn)一步減少了remap操作開銷。

(二)AWR事務(wù)結(jié)構(gòu)及工作流程

RAID6中新數(shù)據(jù)直接覆蓋舊數(shù)據(jù)的做法,最終將導(dǎo)致數(shù)據(jù)的一致性問題,針對此問題,AWR事務(wù)存儲模型提出了三點原則:

1、數(shù)據(jù)和校驗的更新采用非原位更新方式,新數(shù)據(jù)和校驗信息固化于新的物理位置;

2、新的數(shù)據(jù)和校驗信息均固化并一致后,需要替換舊的數(shù)據(jù)和校驗信息;

3、新舊數(shù)據(jù)校驗替換的過程需保證為原子操作,或者在發(fā)生故障時可以根據(jù)相關(guān)信息進(jìn)行回滾,最終能夠?qū)?shù)據(jù)校驗恢復(fù)到一個一致的狀態(tài)。

根據(jù)這些原則,本發(fā)明構(gòu)建了AWR模型依賴的糾刪碼結(jié)構(gòu),如圖示6所示,在這個結(jié)構(gòu)中,由新數(shù)據(jù)卷BRD和舊數(shù)據(jù)卷ARD組成版本設(shè)備WR(Write and Remap),再由WR設(shè)備組成糾刪碼設(shè)備。

發(fā)生數(shù)據(jù)寫時,新校驗信息和新數(shù)據(jù)經(jīng)WR設(shè)備轉(zhuǎn)發(fā)而寫入BRD設(shè)備,當(dāng)新數(shù)據(jù)和校驗信息都完整寫入后,再觸發(fā)版本設(shè)備的remap流程,最終將一致的數(shù)據(jù)及校驗信息都存儲于ARD設(shè)備,也就是說,BRD、ARD設(shè)備各自組成了一致性維護(hù)的條帶結(jié)構(gòu),新舊狀態(tài)中任意一個達(dá)到一致都能保證條帶數(shù)據(jù)的一致性,如圖示7所示。

基于AWR模型的糾刪碼結(jié)構(gòu),本發(fā)明設(shè)計了AWR存儲模型的兩階段寫提交協(xié)議來保證新舊數(shù)據(jù)替換時的數(shù)據(jù)一致性。

兩階段寫的提交協(xié)議將糾刪碼的數(shù)據(jù)更新流程劃分為了兩個階段,第一個階段為write階段,負(fù)責(zé)將新數(shù)據(jù)及新校驗寫入BRD設(shè)備;第二個階段為remap階段,負(fù)責(zé)將BRD中一致的數(shù)據(jù)remap至ARD設(shè)備,為了標(biāo)志條帶的數(shù)據(jù)狀態(tài),兩階段提交協(xié)議為每個糾刪碼條帶引入了兩個位的狀態(tài)位圖,位圖在僅在內(nèi)存中保存,無需固化,代表的含義如圖示8所示。

詳細(xì)的數(shù)據(jù)更新流程如圖示9所示,即

write階段:

(1)糾刪碼模塊計算校驗,下發(fā)數(shù)據(jù)和校驗盤的寫請求;

(2)新數(shù)據(jù)和新校驗信息經(jīng)由WR設(shè)備持久化于BRD設(shè)備;

(3)新數(shù)據(jù)和新校驗信息寫完成,修改新數(shù)據(jù)卷的條帶狀態(tài)為COMMITTED(提交完成狀態(tài));

remap階段:

(4)糾刪碼模塊對條帶中的數(shù)據(jù)盤發(fā)送remap操作;

(5)數(shù)據(jù)盤remap完成后,發(fā)送對條帶中校驗盤的remap操作;

(6)校驗盤remap操作完成,修改條帶狀態(tài)為NORMAL(正常狀態(tài))。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
收藏| 股票| 措勤县| 托里县| 巨野县| 公安县| 建瓯市| 郁南县| 黄石市| 西平县| 凤翔县| 南阳市| 广灵县| 汕头市| 凤阳县| 灵台县| 尚义县| 东港市| 海兴县| 沧源| 沐川县| 于都县| 金门县| 屏边| 邵阳县| 泾源县| 嘉峪关市| 五华县| 含山县| 荣成市| 万全县| 南华县| 安新县| 河曲县| 瑞安市| 中西区| 惠州市| 象州县| 乌苏市| 三门县| 沙洋县|