亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種維護(hù)主從式雙控軟Raid6一致性的方法及系統(tǒng)的制作方法

文檔序號(hào):10488691閱讀:346來(lái)源:國(guó)知局
一種維護(hù)主從式雙控軟Raid6一致性的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提出一種維護(hù)主從式雙控軟Raid6一致性的方法及系統(tǒng),該方法包括主控制器節(jié)點(diǎn)中Raid6設(shè)備獲取數(shù)據(jù)更新請(qǐng)求,主控制器節(jié)點(diǎn)中Raid6設(shè)備計(jì)算數(shù)據(jù)更新請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)更新位置,并在內(nèi)存中記錄位圖更新狀態(tài)A,并固化在主控制器節(jié)點(diǎn)的Raid6校驗(yàn)設(shè)備中,Raid6設(shè)備計(jì)算校驗(yàn)值,并對(duì)數(shù)據(jù)小盤Data Disk與校驗(yàn)小盤Parity Disk下發(fā)更新請(qǐng)求,寫入快照源,作為新數(shù)據(jù),當(dāng)所有Data Disk與Parity Disk更新完成,在內(nèi)存中記錄位圖更新狀態(tài)B,固化在主控制器節(jié)點(diǎn)的校驗(yàn)設(shè)備中;并同步到從控制器節(jié)點(diǎn)中Raid6設(shè)備,并固化在從控制器節(jié)點(diǎn)的校驗(yàn)設(shè)備中;主控制器節(jié)點(diǎn)中Raid6設(shè)備在內(nèi)存中找到位圖更新狀態(tài)為B的數(shù)據(jù)更新位置,通過(guò)對(duì)Data Disk與Parity Disk的發(fā)送Remap指令,將新數(shù)據(jù)重映射到快照設(shè)備Data Snapshot與Parity Snapshot。
【專利說(shuō)明】
一種維護(hù)主從式雙控軟Ra i d6—致性的方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)存儲(chǔ)領(lǐng)域,特別涉及一種維護(hù)主從式雙控軟Raide—致性的方法及系統(tǒng)。
【背景技術(shù)】
[0002]RAID(獨(dú)立冗余磁盤陣列)技術(shù)是一種提供增強(qiáng)冗余、容量和存儲(chǔ)性能的存儲(chǔ)方法,有著較強(qiáng)的可管理性、可靠性和可用性。Raid算法根據(jù)實(shí)現(xiàn)原理可分為不同的級(jí)別,分別用1^0(10、1^丨(11、1^丨(14、1^丨(15、1^0(16、1^丨(110等表示,其中1^丨(16是可靠性最高的,它具有2個(gè)校驗(yàn)盤,可以容忍2個(gè)磁盤失效,如圖1所示,Parity Disk的數(shù)據(jù)由所有組成Raid6的Data Disk上的數(shù)據(jù)通過(guò)校驗(yàn)公式計(jì)算得到。Raid算法可以由硬件Raid卡來(lái)實(shí)現(xiàn),也可以由軟件來(lái)實(shí)現(xiàn),比如Linux MD Raid算法,由于軟件實(shí)現(xiàn)的Raid算法,更容易部署,下文所述的Ra i d算法都是指軟件實(shí)現(xiàn)的Ra i d算法,簡(jiǎn)稱軟Ra i d。
[0003]傳統(tǒng)的Raid6技術(shù)存在控制器單點(diǎn)故障和被稱為“WriteHole”的一致性問(wèn)題,單點(diǎn)故障是指控制器節(jié)點(diǎn)故障,數(shù)據(jù)訪問(wèn)就會(huì)中斷;一致性問(wèn)題是指在寫過(guò)程中發(fā)生RAID控制器故障(如系統(tǒng)崩潰或斷電)引起條帶上的數(shù)據(jù)和校驗(yàn)不一致,這會(huì)導(dǎo)致:即使控制器修復(fù),數(shù)據(jù)的一致性已經(jīng)不能保證(校驗(yàn)公式兩側(cè)不相等),如圖2所示,一致性問(wèn)題的根本原因在于RAID存儲(chǔ)過(guò)程涉及多個(gè)磁盤,卻不是一個(gè)原子操作,因而不能避免寫入過(guò)程被異常中斷而產(chǎn)生的Write Hole問(wèn)題,該問(wèn)題是由收到新數(shù)據(jù)和計(jì)算出的新校驗(yàn)直接寫在舊的位置上所導(dǎo)致的。
[0004]為了避免單控制器故障,可以采用雙控制器的方案,比如AutoRaid,雙控RAID使用2個(gè)RAID控制器,分別放置在2個(gè)不同物理服務(wù)器節(jié)點(diǎn)上,用于容忍控制器單點(diǎn)故障,兩個(gè)RAID控制器分別以DAS(Direct Attached Storage)的方式直接連接到所有磁盤,其中一個(gè)控制器故障,還可以由另外一個(gè)繼續(xù)工作,如圖3所示,根據(jù)工作模式不同,雙控Raid6可以分為雙活和主從兩種,雙活是指兩個(gè)控制器同時(shí)接受相同的數(shù)據(jù)訪問(wèn);主從是指兩個(gè)控制器中有一個(gè)為主控制器,接受數(shù)據(jù)訪問(wèn),另外一個(gè)備用控制器,只有在主控制器故障時(shí)才接受數(shù)據(jù)訪問(wèn),本發(fā)明主要涉及主從模式的雙控制器Raid6,以下簡(jiǎn)稱主從式雙控Raid6,但是技術(shù)思想依然適用于主從式硬件Raid6控制器。
[0005]雙控僅解決Rai d6的單點(diǎn)故障問(wèn)題,而解決一致性問(wèn)題最直接的方式是可以通過(guò)將新數(shù)據(jù)和新校驗(yàn)寫到另一個(gè)新的位置而不是覆蓋舊數(shù)據(jù),這樣即使更新時(shí)出現(xiàn)控制器故障等異常,也不會(huì)影響舊數(shù)據(jù)的一致性,現(xiàn)有技術(shù)中,多采用預(yù)寫日志或者COW機(jī)制來(lái)解決一致性問(wèn)題,比如ZFS中的Raid-Z。預(yù)寫日志,是指數(shù)據(jù)先寫入日志,在更新舊數(shù)據(jù),通過(guò)維護(hù)日志提交狀態(tài)來(lái)保存數(shù)據(jù)一致性;COW機(jī)制,是指舊數(shù)據(jù)先拷貝在更新,通過(guò)重映射保存一致性,因此,預(yù)寫日志和COW機(jī)制都可以保證正在更新的數(shù)據(jù)和校驗(yàn)不覆蓋舊數(shù)據(jù),但是存儲(chǔ)開銷和拷貝開銷會(huì)影響Raid6的性能,如圖4所示,對(duì)于主從模式控制器,主控制器需要把相關(guān)信息傳給從控制器,保持二者之間的同步,否則主控制器故障后,從控制器即使工作也無(wú)法提供正確的數(shù)據(jù),既然要同步二者的數(shù)據(jù),主從控制器的同步開銷過(guò)大必然會(huì)影響 Raid的訪問(wèn)性能。

【發(fā)明內(nèi)容】

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