一種維護主從式雙控軟Raid6一致性的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提出一種維護主從式雙控軟Raid6一致性的方法及系統(tǒng),該方法包括主控制器節(jié)點中Raid6設備獲取數(shù)據(jù)更新請求,主控制器節(jié)點中Raid6設備計算數(shù)據(jù)更新請求對應的數(shù)據(jù)更新位置,并在內(nèi)存中記錄位圖更新狀態(tài)A,并固化在主控制器節(jié)點的Raid6校驗設備中,Raid6設備計算校驗值,并對數(shù)據(jù)小盤Data Disk與校驗小盤Parity Disk下發(fā)更新請求,寫入快照源,作為新數(shù)據(jù),當所有Data Disk與Parity Disk更新完成,在內(nèi)存中記錄位圖更新狀態(tài)B,固化在主控制器節(jié)點的校驗設備中;并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中;主控制器節(jié)點中Raid6設備在內(nèi)存中找到位圖更新狀態(tài)為B的數(shù)據(jù)更新位置,通過對Data Disk與Parity Disk的發(fā)送Remap指令,將新數(shù)據(jù)重映射到快照設備Data Snapshot與Parity Snapshot。
【專利說明】
一種維護主從式雙控軟Ra i d6—致性的方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計算機網(wǎng)絡存儲領(lǐng)域,特別涉及一種維護主從式雙控軟Raide—致性的方法及系統(tǒng)。
【背景技術(shù)】
[0002]RAID(獨立冗余磁盤陣列)技術(shù)是一種提供增強冗余、容量和存儲性能的存儲方法,有著較強的可管理性、可靠性和可用性。Raid算法根據(jù)實現(xiàn)原理可分為不同的級別,分別用1^0(10、1^丨(11、1^丨(14、1^丨(15、1^0(16、1^丨(110等表示,其中1^丨(16是可靠性最高的,它具有2個校驗盤,可以容忍2個磁盤失效,如圖1所示,Parity Disk的數(shù)據(jù)由所有組成Raid6的Data Disk上的數(shù)據(jù)通過校驗公式計算得到。Raid算法可以由硬件Raid卡來實現(xiàn),也可以由軟件來實現(xiàn),比如Linux MD Raid算法,由于軟件實現(xiàn)的Raid算法,更容易部署,下文所述的Ra i d算法都是指軟件實現(xiàn)的Ra i d算法,簡稱軟Ra i d。
[0003]傳統(tǒng)的Raid6技術(shù)存在控制器單點故障和被稱為“WriteHole”的一致性問題,單點故障是指控制器節(jié)點故障,數(shù)據(jù)訪問就會中斷;一致性問題是指在寫過程中發(fā)生RAID控制器故障(如系統(tǒng)崩潰或斷電)引起條帶上的數(shù)據(jù)和校驗不一致,這會導致:即使控制器修復,數(shù)據(jù)的一致性已經(jīng)不能保證(校驗公式兩側(cè)不相等),如圖2所示,一致性問題的根本原因在于RAID存儲過程涉及多個磁盤,卻不是一個原子操作,因而不能避免寫入過程被異常中斷而產(chǎn)生的Write Hole問題,該問題是由收到新數(shù)據(jù)和計算出的新校驗直接寫在舊的位置上所導致的。
[0004]為了避免單控制器故障,可以采用雙控制器的方案,比如AutoRaid,雙控RAID使用2個RAID控制器,分別放置在2個不同物理服務器節(jié)點上,用于容忍控制器單點故障,兩個RAID控制器分別以DAS(Direct Attached Storage)的方式直接連接到所有磁盤,其中一個控制器故障,還可以由另外一個繼續(xù)工作,如圖3所示,根據(jù)工作模式不同,雙控Raid6可以分為雙活和主從兩種,雙活是指兩個控制器同時接受相同的數(shù)據(jù)訪問;主從是指兩個控制器中有一個為主控制器,接受數(shù)據(jù)訪問,另外一個備用控制器,只有在主控制器故障時才接受數(shù)據(jù)訪問,本發(fā)明主要涉及主從模式的雙控制器Raid6,以下簡稱主從式雙控Raid6,但是技術(shù)思想依然適用于主從式硬件Raid6控制器。
[0005]雙控僅解決Rai d6的單點故障問題,而解決一致性問題最直接的方式是可以通過將新數(shù)據(jù)和新校驗寫到另一個新的位置而不是覆蓋舊數(shù)據(jù),這樣即使更新時出現(xiàn)控制器故障等異常,也不會影響舊數(shù)據(jù)的一致性,現(xiàn)有技術(shù)中,多采用預寫日志或者COW機制來解決一致性問題,比如ZFS中的Raid-Z。預寫日志,是指數(shù)據(jù)先寫入日志,在更新舊數(shù)據(jù),通過維護日志提交狀態(tài)來保存數(shù)據(jù)一致性;COW機制,是指舊數(shù)據(jù)先拷貝在更新,通過重映射保存一致性,因此,預寫日志和COW機制都可以保證正在更新的數(shù)據(jù)和校驗不覆蓋舊數(shù)據(jù),但是存儲開銷和拷貝開銷會影響Raid6的性能,如圖4所示,對于主從模式控制器,主控制器需要把相關(guān)信息傳給從控制器,保持二者之間的同步,否則主控制器故障后,從控制器即使工作也無法提供正確的數(shù)據(jù),既然要同步二者的數(shù)據(jù),主從控制器的同步開銷過大必然會影響 Raid的訪問性能。
【發(fā)明內(nèi)容】
[0006]針對現(xiàn)有技術(shù)的不足,本發(fā)明提出一種維護主從式雙控軟Raid6—致性的方法及系統(tǒng)。
[0007 ]本發(fā)明提出一種維護主從式雙控軟Ra i d6—致性的方法,包括:
[0008]步驟I,主控制器節(jié)點中Raid6設備獲取數(shù)據(jù)更新請求,主控制器節(jié)點中Raid6設備計算數(shù)據(jù)更新請求對應的數(shù)據(jù)更新位置,并在內(nèi)存中記錄位圖更新狀態(tài)A,并固化在主控制器節(jié)點的Raid6校驗設備中,Raid6設備計算校驗值,并對數(shù)據(jù)小盤Data Disk與校驗小盤Parity Disk下發(fā)更新請求,寫入快照源,作為新數(shù)據(jù);
[0009]步驟2,當所有Data Disk與Parity Disk更新完成,在內(nèi)存中記錄位圖更新狀態(tài)B,固化在主控制器節(jié)點的校驗設備中;并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中;
[0010]步驟3,主控制器節(jié)點中Raid6設備在內(nèi)存中找到位圖更新狀態(tài)為B的數(shù)據(jù)更新位置,通過對Data Disk與Parity Disk的發(fā)送Remap指令,將新數(shù)據(jù)重映射到快照設備DataSnapshot與Parity Snapshot,當所有重映射指令完成時,主控制器節(jié)點在內(nèi)存中記錄位圖更新狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。
[0011]如果主控制器節(jié)點在步驟I或者步驟2內(nèi)發(fā)生故障,當從控制器節(jié)點接替后,依然看到的是位圖更新狀態(tài)A,表示是舊數(shù)據(jù);如果主控制器節(jié)點在步驟3內(nèi)發(fā)生故障,從控制器節(jié)點接替主控制器節(jié)點后會看到位圖更新狀態(tài)B,繼續(xù)完成步驟3,從而保證了新數(shù)據(jù)一致性。
[0012]如果主控制器節(jié)點與從控制器節(jié)點同時發(fā)生故障,則在重啟之后,需要從主控制器節(jié)點的校驗設備中讀取出位圖信息,如果位圖信息中位圖更新狀態(tài)A,不需要任何操作;如果位圖更新狀態(tài)B,則通過Remap指令重映射新數(shù)據(jù)到舊數(shù)據(jù),當所有重映射完成時,更新位圖狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。
[0013]對于Raid6設備的每一個條帶,固定使用兩個bit位表示:位圖更新狀態(tài)A為00,位圖更新狀態(tài)B為10。
[0014]本發(fā)明還提出一種維護主從式雙控軟Raid6—致性的系統(tǒng),包括:
[0015]數(shù)據(jù)模塊,用于主控制器節(jié)點中Raid6設備獲取數(shù)據(jù)更新請求,主控制器節(jié)點中Raid6設備計算數(shù)據(jù)更新請求對應的數(shù)據(jù)更新位置,并在內(nèi)存中記錄位圖更新狀態(tài)A,并固化在主控制器節(jié)點的Raid6校驗設備中,Raid6設備計算校驗值,并對數(shù)據(jù)小盤Data Disk與校驗小盤Parity Disk下發(fā)更新請求,寫入快照源,作為新數(shù)據(jù);
[ΟΟ?6] 位圖狀態(tài)模塊,用于當所有Data Disk與Parity Disk更新完成,在內(nèi)存中記錄位圖更新狀態(tài)B,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中;
[0017]重映射模塊,用于主控制器節(jié)點中Raid6設備在內(nèi)存中找到位圖更新狀態(tài)為B的數(shù)據(jù)更新位置,通過對Data Disk與Parity Disk的發(fā)送Remap指令,將新數(shù)據(jù)重映射到快照設備Data Snapshot與Parity Snapshot,當所有重映射指令完成時,主控制器節(jié)點在內(nèi)存中記錄位圖更新狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。
[0018]如果主控制器節(jié)點在所述的數(shù)據(jù)模塊或者所述的位圖狀態(tài)模塊內(nèi)發(fā)生故障,當從控制器節(jié)點接替后,依然看到的是位圖更新狀態(tài)A,表示是舊數(shù)據(jù);如果主控制器節(jié)點在所述的重映射模塊內(nèi)發(fā)生故障,從控制器節(jié)點接替主控制器節(jié)點后會看到位圖更新狀態(tài)B,繼續(xù)完成更新模塊,從而保證了新數(shù)據(jù)一致性。
[0019]如果主控制器節(jié)點與從控制器節(jié)點同時發(fā)生故障,則在重啟之后,需要從主控制器節(jié)點的校驗設備中讀取出位圖信息,如果位圖信息中位圖更新狀態(tài)A,不需要任何操作;如果位圖更新狀態(tài)B,則通過Remap指令重映射新數(shù)據(jù)到舊數(shù)據(jù),當所有重映射完成時,更新位圖狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。
[°02°]對于Raid6設備的每一個條帶,固定使用兩個bit位表示:位圖更新狀態(tài)A為00,位圖更新狀態(tài)B為10。
[0021 ]由以上方案可知,本發(fā)明的優(yōu)點在于:
[0022]本發(fā)明在解決主從式雙控軟Raid6—致性問題時,采用了兩階段更新機制,將新數(shù)據(jù)和新校驗寫入新位置,保證了數(shù)據(jù)一致性,沒有引入額外的存儲開銷和拷貝開銷;并且更新的狀態(tài)會低開銷地由主控制器傳遞給從控制器,降低對性能的影響。
【附圖說明】
[0023]圖1為Raid6結(jié)構(gòu)示意圖;
[0024]圖2為Raid6的WriteHole問題圖;
[0025]圖3為雙控Raid6的示意圖;
[0026]圖4為預寫日志、COW機制解決一致性問題圖;
[0027]圖5為主從式Raid6控制器系統(tǒng)結(jié)構(gòu)圖;
[0028]圖6為本發(fā)明第一階段更新過程圖;
[0029]圖7為本發(fā)明第二階段重映射過程圖;
[0030]圖8為本發(fā)明數(shù)據(jù)訪問流程圖。
【具體實施方式】
[0031]下面給出本發(fā)明的【具體實施方式】,結(jié)合附圖對本發(fā)明做出了詳細描述,本
【發(fā)明內(nèi)容】
包括系統(tǒng)結(jié)構(gòu),數(shù)據(jù)一致性維護方法,數(shù)據(jù)訪問過程三部分。
[0032](一)系統(tǒng)結(jié)構(gòu)
[0033]系統(tǒng)兩個控制器,位于不同的服務器節(jié)點,管理同樣的磁盤設備,其中一個作為主控制器,另外一個作為從控制器,備用;只有主控制器故障后,從控制器才能工作,如圖5所示,Raid6控制器、Data Disk和Parity Disk可以分別屬于網(wǎng)絡存儲的不同節(jié)點;為節(jié)省資源,控制器和Parity Disk可以屬于同一節(jié)點:主控制器和一個Parity Disk屬于一個節(jié)點,從控制器和另外一個Parity Disk屬于另外的節(jié)點。主控制器和從控制器之間的同步機制,借助于網(wǎng)絡互聯(lián)協(xié)議實現(xiàn),比如ISCSI/SCST。以下,稱主控制器所在的節(jié)點為主控制器節(jié)點,從控制器所在的節(jié)點為從控制器節(jié)點,客服端在使用該系統(tǒng)時,借助與多路徑軟件和兩個控制器節(jié)點相連,并配置其中切換策略為ALUA(Asymmetric Logical Unit Access)。
[0034]磁盤設備作為物理存儲單元,負責數(shù)據(jù)存儲,其中數(shù)據(jù)有新舊之分,舊數(shù)據(jù)以新數(shù)據(jù)的快照形式存在,新數(shù)據(jù)作為舊數(shù)據(jù)的快照源存在,快照設備Disk Snapshot和ParitySnapshot保存了邏輯訪問地址和實際存儲地址的映射關(guān)系,支持重映射命令。
[0035]同一位置的新數(shù)據(jù)和舊數(shù)據(jù)會存在不同的設備,當新數(shù)據(jù)達到一致狀態(tài),會利用數(shù)據(jù)重映射轉(zhuǎn)化為舊數(shù)據(jù),原有的舊數(shù)據(jù)會刪除,這個轉(zhuǎn)化過程沒有數(shù)據(jù)移動開銷,對性能影響低,數(shù)據(jù)磁盤設備,負責數(shù)據(jù)的存儲和元數(shù)據(jù)的存儲,寫入數(shù)據(jù)磁盤的數(shù)據(jù),會同時記錄和數(shù)據(jù)相關(guān)的狀態(tài)。(二)數(shù)據(jù)一致性維護方法
[0036]Raid6的一致性問題,根本原因是數(shù)據(jù)和校驗的更新過程不滿足原子性,為了維護Raid6的一致性,本發(fā)明設計了兩階段的更新協(xié)議:新的數(shù)據(jù)和校驗并不直接覆蓋舊的數(shù)據(jù)和校驗,而是等所有的更新都完成,才算是新一致狀態(tài),否則,還是舊一致狀態(tài),這樣的好處在于:在部分數(shù)據(jù)得到更新時發(fā)生控制器故障,并不影響舊一致狀態(tài);新狀態(tài)在達到一致之前,數(shù)據(jù)的更新并不對外可見。
[0037]兩個Raid6控制器在組建Raid6設備時,會在內(nèi)存中預先分配好所有數(shù)據(jù)條帶的狀態(tài)位圖,并初始化。
[0038]由于數(shù)據(jù)讀請求不影響一致性,本發(fā)明以寫請求為主,介紹數(shù)據(jù)一致性維護方法:兩階段更新,第一階段更新是在用戶請求的路徑上進行,第二階段是異步進行,其具體步驟如下:
[0039]1.第一階段更新,如圖6所示:
[0040]1.1、用戶數(shù)據(jù)更新請求進入主控制器節(jié)點的Raid6設備;
[0041]1.2、Raid6設備計算該請求對應的數(shù)據(jù)更新位置,并在內(nèi)存中記錄位圖更新狀態(tài)A,并固化在主控制器節(jié)點的校驗設備中;
[0042]1.3、Raid6設備計算校驗值,并對數(shù)據(jù)小盤和校驗小盤下發(fā)更新請求;對DataD i s I^PPar ity D i s k的1,會寫入快照源,作為新數(shù)據(jù);
[0043]1.4、所有的Data Disk和Parity Disk更新完成,在內(nèi)存中記錄位圖更新狀態(tài)B,固化在主控制器節(jié)點的校驗設備中;并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中;
[0044]1.5、第一階段結(jié)束,用戶數(shù)據(jù)更新請求結(jié)束;
[0045]2.第二階段更新,如圖7所示:
[0046]2.1、主控制器節(jié)點中Raid6設備在內(nèi)存中找到位圖更新狀態(tài)為B的數(shù)據(jù)位置;
[0047]2.2、通過對Data Disk和Parity Disk的這些位置發(fā)送Remap指令,將快照源上的數(shù)據(jù)重映射到快照設備Data Snapshot和Parity Snapshot;
[0048]2.3、等所有的重映射指令完成,主控制器節(jié)點中Raid6內(nèi)部記錄位圖更新狀態(tài)為A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,固化在從控制器節(jié)點的校驗設備中;
[0049]2.4、第二階段結(jié)束;
[0050]在某次數(shù)據(jù)更新時,發(fā)生主控制器故障,多路徑軟件會切換到從控制器,將當時出錯的請求進行重發(fā),如果主控制器是在第一階段內(nèi)故障,這些數(shù)據(jù)更新并沒有覆蓋舊數(shù)據(jù),當從控制器接替后,依然看到的是位圖更新狀態(tài)A,表示是舊狀態(tài);如果主控制器是在第二階段內(nèi)故障,從控制器接替后會看到位圖更新狀態(tài)B,可以繼續(xù)完成第二階段,從而保證了新狀態(tài)一致性,需要說明的是,Remap指令是冪等操作:多次執(zhí)行Remap指令的結(jié)果是一樣的。
[0051]在第二階段中,新數(shù)據(jù)是通過Remap指令重映射到舊數(shù)據(jù)狀態(tài),這個過程只是映射關(guān)系的改變,并沒有數(shù)據(jù)移動開銷,同時為了降低同步的開銷,本發(fā)明采用了位圖來記錄更新狀態(tài):對于Raid6的每一個條帶,固定使用兩個bit位表示:更新狀態(tài)A為00,更新狀態(tài)B為10,因此,構(gòu)建Raid6的Data Disk數(shù)量增多也不影響位圖的空間開銷,只維護位圖就可以維護一致性,是因為一旦更新狀態(tài)為B,則說明新的數(shù)據(jù)和校驗一定都保存在磁盤上;如果更新狀態(tài)為A,那么新數(shù)據(jù)不一定得到了更新,因此只能信任舊的數(shù)據(jù)和校驗。
[0052]如果發(fā)送兩個控制器同時故障(比如機房停電),那么在重啟之后,需要從主控制器的校驗設備中先讀取出位圖信息,然后根據(jù)位圖的狀態(tài),進行不同的操作:
[0053]I)如果位圖的更新狀態(tài)是A,不需要任何操作;
[0054]2)如果位圖的更新狀態(tài)是B,則先要通過Remap指令重映射新數(shù)據(jù)到舊數(shù)據(jù)狀態(tài),也就是將快照源的數(shù)據(jù)Remap到快照上。
[0055](三)數(shù)據(jù)訪問過程
[0056]在兩階段更新的過程中,如果有其他的數(shù)據(jù)訪問請求,需要根據(jù)當前的位圖更新狀態(tài)來判斷數(shù)據(jù)的位置,如圖8所示。
[0057]I)如果此時是讀請求,并且位圖狀態(tài)為A,那么此時是舊狀態(tài)一致,則需要從DataSnapshot快照上讀取數(shù)據(jù),如果位圖狀態(tài)為B,那么此時是新狀態(tài)一致,就首先對Data Disk進行一次Remap操作將數(shù)據(jù)重映射到Data Snapshot,然后再從Data Snapshot快照上讀取。
[0058]2)如果此時是寫請求,操作比較簡單,就是需要等待前面的寫請求完成,并且更新狀態(tài)為變?yōu)锳才可以繼續(xù)進行。
[0059]本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條件下,還可以對以上內(nèi)容進行各種各樣的修改。因此本發(fā)明的范圍并不僅限于以上的說明,而是由權(quán)利要求書的范圍來確定的。
[0060]本發(fā)明還提出一種維護主從式雙控軟Raid6—致性的系統(tǒng),包括:
[0061]數(shù)據(jù)模塊,用于主控制器節(jié)點中Raid6設備獲取數(shù)據(jù)更新請求,主控制器節(jié)點中Raid6設備計算數(shù)據(jù)更新請求對應的數(shù)據(jù)更新位置,并在內(nèi)存中記錄位圖更新狀態(tài)A,并固化在主控制器節(jié)點的Raid6校驗設備中,Raid6設備計算校驗值,并對數(shù)據(jù)小盤Data Disk與校驗小盤Parity Disk下發(fā)更新請求,寫入快照源,作為新數(shù)據(jù);
[0062]位圖狀態(tài)模塊,用于當所有Data Disk與Parity Disk更新完成,在內(nèi)存中記錄位圖更新狀態(tài)B,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中;
[0063]重映射模塊,用于主控制器節(jié)點中Raid6設備在內(nèi)存中找到位圖更新狀態(tài)為B的數(shù)據(jù)更新位置,通過對Data Disk與Parity Disk的發(fā)送Remap指令,將新數(shù)據(jù)重映射到快照設備Data Snapshot與Parity Snapshot,當所有重映射指令完成時,主控制器節(jié)點在內(nèi)存中記錄位圖更新狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。
[0064]如果主控制器節(jié)點在所述的數(shù)據(jù)模塊或者所述的位圖狀態(tài)模塊內(nèi)發(fā)生故障,當從控制器節(jié)點接替后,依然看到的是位圖更新狀態(tài)A,表示是舊數(shù)據(jù);如果主控制器節(jié)點在所述的重映射模塊內(nèi)發(fā)生故障,從控制器節(jié)點接替主控制器節(jié)點后會看到位圖更新狀態(tài)B,繼續(xù)完成更新模塊,從而保證了新數(shù)據(jù)一致性。
[0065]如果主控制器節(jié)點與從控制器節(jié)點同時發(fā)生故障,則在重啟之后,需要從主控制器節(jié)點的校驗設備中讀取出位圖信息,如果位圖信息中位圖更新狀態(tài)A,不需要任何操作;如果位圖更新狀態(tài)B,則通過Remap指令重映射新數(shù)據(jù)到舊數(shù)據(jù),當所有重映射完成時,更新位圖狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。
[ΟΟ??] 對于Raid6設備的每一個條帶,固定使用兩個bit位表示:位圖更新狀態(tài)A為00,位圖更新狀態(tài)B為10。
【主權(quán)項】
1.一種維護主從式雙控軟Raid6—致性的方法,其特征在于,包括: 步驟I,主控制器節(jié)點中Raid6設備獲取數(shù)據(jù)更新請求,主控制器節(jié)點中Raid6設備計算數(shù)據(jù)更新請求對應的數(shù)據(jù)更新位置,并在內(nèi)存中記錄位圖更新狀態(tài)A,并固化在主控制器節(jié)點的Raid6校驗設備中,Raid6設備計算校驗值,并對數(shù)據(jù)小盤Data Disk與校驗小盤ParityDisk下發(fā)更新請求,寫入快照源,作為新數(shù)據(jù); 步驟2,當所有Data Disk與Parity Disk更新完成,在內(nèi)存中記錄位圖更新狀態(tài)B,固化在主控制器節(jié)點的校驗設備中;并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中; 步驟3,主控制器節(jié)點中Raid6設備在內(nèi)存中找到位圖更新狀態(tài)為B的數(shù)據(jù)更新位置,通過對Data Disk與Parity Disk的發(fā)送Remap指令,將新數(shù)據(jù)重映射到快照設備DataSnapshot與Parity Snapshot,當所有重映射指令完成時,主控制器節(jié)點在內(nèi)存中記錄位圖更新狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。2.如權(quán)利要求1所述的維護主從式雙控軟Raid6—致性的方法,其特征在于,如果主控制器節(jié)點在步驟I或者步驟2內(nèi)發(fā)生故障,當從控制器節(jié)點接替后,依然看到的是位圖更新狀態(tài)A,表示是舊數(shù)據(jù);如果主控制器節(jié)點在步驟3內(nèi)發(fā)生故障,從控制器節(jié)點接替主控制器節(jié)點后會看到位圖更新狀態(tài)B,繼續(xù)完成步驟3,從而保證了新數(shù)據(jù)一致性。3.如權(quán)利要求1所述的維護主從式雙控軟Raid6—致性的方法,其特征在于,如果主控制器節(jié)點與從控制器節(jié)點同時發(fā)生故障,則在重啟之后,需要從主控制器節(jié)點的校驗設備中讀取出位圖信息,如果位圖信息中位圖更新狀態(tài)A,不需要任何操作;如果位圖更新狀態(tài)B,則通過Remap指令重映射新數(shù)據(jù)到舊數(shù)據(jù),當所有重映射完成時,更新位圖狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。4.如權(quán)利要求1所述的維護主從式雙控軟Raid6—致性的方法,其特征在于,對于Raid6設備的每一個條帶,固定使用兩個bit位表示:位圖更新狀態(tài)A為00,位圖更新狀態(tài)B為10。5.一種維護主從式雙控軟Raid6—致性的系統(tǒng),其特征在于,包括: 數(shù)據(jù)模塊,用于主控制器節(jié)點中Raide設備獲取數(shù)據(jù)更新請求,主控制器節(jié)點中Raide設備計算數(shù)據(jù)更新請求對應的數(shù)據(jù)更新位置,并在內(nèi)存中記錄位圖更新狀態(tài)A,并固化在主控制器節(jié)點的Raid6校驗設備中,Raid6設備計算校驗值,并對數(shù)據(jù)小盤Data Disk與校驗小盤Parity Disk下發(fā)更新請求,寫入快照源,作為新數(shù)據(jù); 位圖狀態(tài)模塊,用于當所有Data Disk與Parity Disk更新完成,在內(nèi)存中記錄位圖更新狀態(tài)B,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中; 重映射模塊,用于主控制器節(jié)點中Raid6設備在內(nèi)存中找到位圖更新狀態(tài)為B的數(shù)據(jù)更新位置,通過對Data Disk與Parity Disk的發(fā)送Remap指令,將新數(shù)據(jù)重映射到快照設備Data Snapshot與Parity Snapshot,當所有重映射指令完成時,主控制器節(jié)點在內(nèi)存中記錄位圖更新狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。6.如權(quán)利要求5所述的維護主從式雙控軟Raid6—致性的系統(tǒng),其特征在于,如果主控制器節(jié)點在所述的數(shù)據(jù)模塊或者所述的位圖狀態(tài)模塊內(nèi)發(fā)生故障,當從控制器節(jié)點接替后,依然看到的是位圖更新狀態(tài)A,表示是舊數(shù)據(jù);如果主控制器節(jié)點在所述的重映射模塊內(nèi)發(fā)生故障,從控制器節(jié)點接替主控制器節(jié)點后會看到位圖更新狀態(tài)B,繼續(xù)完成更新模塊,從而保證了新數(shù)據(jù)一致性。7.如權(quán)利要求5所述的維護主從式雙控軟Raid6—致性的系統(tǒng),其特征在于,如果主控制器節(jié)點與從控制器節(jié)點同時發(fā)生故障,則在重啟之后,需要從主控制器節(jié)點的校驗設備中讀取出位圖信息,如果位圖信息中位圖更新狀態(tài)A,不需要任何操作;如果位圖更新狀態(tài)B,則通過Remap指令重映射新數(shù)據(jù)到舊數(shù)據(jù),當所有重映射完成時,更新位圖狀態(tài)A,固化在主控制器節(jié)點的校驗設備中,并同步到從控制器節(jié)點中Raid6設備,并固化在從控制器節(jié)點的校驗設備中。8.如權(quán)利要求5所述的維護主從式雙控軟Raid6—致性的系統(tǒng),其特征在于,對于Raid6設備的每一個條帶,固定使用兩個bit位表示:位圖更新狀態(tài)A為00,位圖更新狀態(tài)B為10。
【文檔編號】G06F3/06GK105843560SQ201610218815
【公開日】2016年8月10日
【申請日】2016年4月8日
【發(fā)明人】劉建亮, 劉振軍, 賈思懿, 方沛, 許魯
【申請人】中國科學院計算技術(shù)研究所, 天津中科藍鯨信息技術(shù)有限公司