本發(fā)明涉及計算機存儲技術(shù)領(lǐng)域,特別涉及一種雙控RAID同步方法及裝置。
背景技術(shù):
RAID(Redundant Arrays of Independent Disks,RAID),獨立冗余磁盤陣列,是由很多價格較為便宜的磁盤,組合成的一個容量巨大的磁盤組,可以利用個別磁盤提供數(shù)據(jù)所產(chǎn)生的加成效果提升整個磁盤系統(tǒng)效能。利用這項技術(shù),能夠?qū)?shù)據(jù)切割成許多區(qū)段,分別存放在各個硬盤上。同時RAID還提供不同程度的冗余能力(RAID0除外),當(dāng)陣列中的一塊磁盤出現(xiàn)故障時,通過冗余數(shù)據(jù),可以將故障盤中的數(shù)據(jù)恢復(fù)到熱備盤上。從而保證了用戶數(shù)據(jù)的完整性。
RAID的實現(xiàn)技術(shù)主要有兩種,一種是鏡像技術(shù),像RAID1,一種是條帶技術(shù),像RAID5、RAID6。鏡像技術(shù)是當(dāng)一塊磁盤故障時,可以通過故障盤的鏡像直接將數(shù)據(jù)拷貝到熱備盤上,從而恢復(fù)了故障盤。條帶技術(shù)是當(dāng)一塊磁盤故障時,可以利用條帶技術(shù),使用其它磁盤中的數(shù)據(jù),重新計算出故障盤上的數(shù)據(jù)到熱備盤上,從而恢復(fù)了故障盤。
RAID數(shù)據(jù)恢復(fù),是RAID同步的一種方式,是非常耗時的,尤其是對傳統(tǒng)RAID更是非常耗時。耗時主要是磁盤的讀寫,對于條帶RAID另一個耗時的地方就是計算。在同步過程中,每當(dāng)同步完一定數(shù)量的條帶,就使用bitmap中的一個bit位來標(biāo)記。每一個bit位代表一個bitmap chunk(位圖數(shù)據(jù)塊)大小的區(qū)域是否同步。如果該bit為1表示這塊區(qū)域為臟,這塊區(qū)域有條帶不一致,否則如果為0,表示該區(qū)域所有的條帶已經(jīng)同步。如果bitmap(位圖)中的有效位就全部清空,也就是1全部變?yōu)?,表示整個RAID已經(jīng)同步完畢。每當(dāng)同步完一個chunk(數(shù)據(jù)塊),會同時將bitmap位同步到磁盤的元數(shù)據(jù)中。
現(xiàn)有技術(shù)中,在雙控環(huán)境中同步一個RAID大部分是在一個控制器中進行的,在同步結(jié)束后只是同步兩個節(jié)點的狀態(tài)。由于只通過一個控制器也就數(shù)在一個節(jié)點中運行同步,并不能充分發(fā)揮雙控RAID的兩個節(jié)點的資源,造成同步速度過慢,不利于用戶體驗。因此,如何充分發(fā)揮雙控RAID的兩個節(jié)點的資源,提高同步速度,提升用戶體驗,是現(xiàn)今亟須解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種雙控RAID同步方法及裝置,以充分發(fā)揮雙控RAID的兩個節(jié)點的資源,通過兩個節(jié)點并行運行同步操作,提高同步速度,提升用戶體驗。
為解決上述技術(shù)問題,本發(fā)明提供一種雙控RAID同步方法,包括:
主節(jié)點和從節(jié)點從磁盤的元數(shù)據(jù)區(qū)加載置臟后的位圖;
所述主節(jié)點和所述從節(jié)點分別同步所述位圖中偶數(shù)位對應(yīng)的偶數(shù)數(shù)據(jù)塊和所述位圖中奇數(shù)位對應(yīng)的奇數(shù)數(shù)據(jù)塊;其中,所述主節(jié)點和所述從節(jié)點每同步完一個數(shù)據(jù)塊均會更新一次所述元數(shù)據(jù)區(qū)的位圖;
所述元數(shù)據(jù)區(qū)的位圖的有效位均清空后,所述主節(jié)點和所述從節(jié)點重新加載所述元數(shù)據(jù)區(qū)的位圖。
可選的,所述主節(jié)點和從節(jié)點分別同步所述位圖中偶數(shù)位對應(yīng)的偶數(shù)數(shù)據(jù)塊和所述位圖中奇數(shù)位對應(yīng)的奇數(shù)數(shù)據(jù)塊,包括:
所述主節(jié)點從數(shù)據(jù)塊0開始遍歷,對偶數(shù)數(shù)據(jù)塊進行同步并在遍歷到奇數(shù)數(shù)據(jù)塊時,將所述奇數(shù)數(shù)據(jù)塊的數(shù)據(jù)塊號發(fā)送給所述從節(jié)點;
所述從節(jié)點收到所述數(shù)據(jù)塊號后進行回應(yīng),并對所述數(shù)據(jù)塊號對應(yīng)的數(shù)據(jù)塊進行同步;
所述主節(jié)點收到所述回應(yīng)后,繼續(xù)遍歷。
可選的,所述從節(jié)點收到所述數(shù)據(jù)塊號后進行回應(yīng)之后,還包括:
若所述主節(jié)點在預(yù)設(shè)時間內(nèi)未接收到所述回應(yīng),則停止所述從節(jié)點的同步線程,所述主節(jié)點將不再發(fā)送所述數(shù)據(jù)塊號并同步接下來遍歷的全部數(shù)據(jù)塊。
可選的,還包括:
若所述主節(jié)點處理出現(xiàn)錯誤,則切換所述從節(jié)點與所述主節(jié)點。
可選的,還包括:
若所述從節(jié)點下發(fā)IO出錯,則在全部奇數(shù)數(shù)據(jù)塊同步結(jié)束后,將全部錯誤發(fā)送到所述主節(jié)點。
此外,本發(fā)明還提供了一種雙控RAID同步裝置,包括:
第一加載模塊,用于主節(jié)點和從節(jié)點從磁盤的元數(shù)據(jù)區(qū)加載置臟后的位圖;
同步模塊,用于所述主節(jié)點和所述從節(jié)點分別同步所述位圖中偶數(shù)位對應(yīng)的偶數(shù)數(shù)據(jù)塊和所述位圖中奇數(shù)位對應(yīng)的奇數(shù)數(shù)據(jù)塊;其中,所述主節(jié)點和所述從節(jié)點每同步完一個數(shù)據(jù)塊均會更新一次所述元數(shù)據(jù)區(qū)的位圖;
第二加載模塊,用于所述元數(shù)據(jù)區(qū)的位圖的有效位均清空后,所述主節(jié)點和所述從節(jié)點重新加載所述元數(shù)據(jù)區(qū)的位圖。
可選的,所述同步模塊,包括:
遍歷單元,用于所述主節(jié)點從數(shù)據(jù)塊0開始遍歷;
第一同步單元,用于所述主節(jié)點對偶數(shù)數(shù)據(jù)塊進行同步;
發(fā)送單元,用于所述主節(jié)點在遍歷到奇數(shù)數(shù)據(jù)塊時,將所述奇數(shù)數(shù)據(jù)塊的數(shù)據(jù)塊號發(fā)送給所述從節(jié)點;
第二遍歷單元,用于所述從節(jié)點收到所述數(shù)據(jù)塊號后進行回應(yīng),并對所述數(shù)據(jù)塊號對應(yīng)的數(shù)據(jù)塊進行同步;
響應(yīng)單元,用于所述主節(jié)點收到所述回應(yīng)后,繼續(xù)遍歷。
可選的,所述同步模塊,還包括:
第三同步單元,用于若所述主節(jié)點在預(yù)設(shè)時間內(nèi)未接收到所述回應(yīng),則停止所述從節(jié)點的同步線程,所述主節(jié)點將不再發(fā)送所述數(shù)據(jù)塊號并同步接下來遍歷的全部數(shù)據(jù)塊。
可選的,所述同步模塊,還包括:
切換單元,用于若所述主節(jié)點處理出現(xiàn)錯誤,則切換所述從節(jié)點與所述主節(jié)點。
可選的,還包括:
錯誤發(fā)送模塊,用于若所述從節(jié)點下發(fā)IO出錯,則在全部奇數(shù)數(shù)據(jù)塊同步結(jié)束后,將全部錯誤發(fā)送到所述主節(jié)點。
本發(fā)明所提供的一種雙控RAID同步方法,包括:主節(jié)點和從節(jié)點從磁盤的元數(shù)據(jù)區(qū)加載置臟后的位圖;所述主節(jié)點和所述從節(jié)點分別同步所述位圖中偶數(shù)位對應(yīng)的偶數(shù)數(shù)據(jù)塊和所述位圖中奇數(shù)位對應(yīng)的奇數(shù)數(shù)據(jù)塊;其中,所述主節(jié)點和所述從節(jié)點每同步完一個數(shù)據(jù)塊均會更新一次所述元數(shù)據(jù)區(qū)的位圖;所述元數(shù)據(jù)區(qū)的位圖的有效位均清空后,所述主節(jié)點和所述從節(jié)點重新加載所述元數(shù)據(jù)區(qū)的位圖;
可見,本發(fā)明通過主節(jié)點和從節(jié)點分別同步位圖中偶數(shù)位對應(yīng)的偶數(shù)數(shù)據(jù)塊和位圖中奇數(shù)位對應(yīng)的奇數(shù)數(shù)據(jù)塊,可以使雙控RAID的同步根據(jù)位圖上的奇數(shù)位和偶數(shù)位在兩個節(jié)點上并行進行,實現(xiàn)了負載均衡,避免了節(jié)點空閑的現(xiàn)象,通過元數(shù)據(jù)區(qū)的位圖的有效位均清空后,主節(jié)點和從節(jié)點重新加載元數(shù)據(jù)區(qū)的位圖,進行了位圖的合并,使得雙控RAID可以更加快速的完成同步,縮減了丟失數(shù)據(jù)風(fēng)險的時間,提升了用戶體驗。此外,本發(fā)明還提供了一種雙控RAID同步裝置,同樣具有上述有益效果。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例所提供的一種雙控RAID同步方法的流程圖;
圖2為本發(fā)明實施例所提供的另一種雙控RAID同步方法的流程圖;
圖3為本發(fā)明實施例所提供的另一種雙控RAID同步方法的位圖與數(shù)據(jù)塊對應(yīng)關(guān)系示意圖;
圖4為本發(fā)明實施例所提供的另一種雙控RAID同步方法的RAID5更新示意圖;
圖5為本發(fā)明實施例所提供的一種雙控RAID同步裝置的結(jié)構(gòu)圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參考圖1,圖1為本發(fā)明實施例所提供的一種雙控RAID同步方法的流程圖。該方法可以包括:
步驟101:主節(jié)點和從節(jié)點從磁盤的元數(shù)據(jù)區(qū)加載置臟后的位圖。
其中,置臟后的位圖可以為位于磁盤元數(shù)據(jù)中的已經(jīng)將需要同步的數(shù)據(jù)塊對應(yīng)的位設(shè)置為1的位圖。對于位圖中置臟的位的設(shè)置數(shù)量,可以為將位圖中全部位均設(shè)置為1,也可以為將位圖中部分位設(shè)置為1,本實施例對此不受任何限制。
對于位圖的置臟方式可以為主節(jié)點(Owner節(jié)點)將位圖置臟并更新到磁盤,也可以為從節(jié)點(Slave節(jié)點)將位圖置臟并更新到磁盤,或者通過其他方式將磁盤中的位圖置臟,本實施例對此不做任何限制。
可以理解的是,主節(jié)點和從節(jié)點從磁盤的元數(shù)據(jù)區(qū)加載置臟后的位圖,可以為主節(jié)點和從節(jié)點獲取置臟后的位圖的步驟,也就是說,只要可以使主節(jié)點和從節(jié)點獲取置臟后的位圖,可以不通過兩個節(jié)點均從磁盤的元數(shù)據(jù)區(qū)加載置臟后的位圖的方式,如主節(jié)點將位圖置臟并更新到磁盤,那么主節(jié)點已經(jīng)獲取了置臟后的位圖,只需從節(jié)點從磁盤的元數(shù)據(jù)區(qū)加載置臟后的位圖,便可實現(xiàn)兩個節(jié)點獲取置臟后的位圖的目的,本實施例對此不受任何限制。
需要說明的是,主節(jié)點和從節(jié)點為雙控RAID的兩個節(jié)點,對于主節(jié)點和從節(jié)點的設(shè)置選擇,可以根據(jù)用戶需求和實用場景進行設(shè)置,本實施例對此不做任何限制。
步驟102:所述主節(jié)點和所述從節(jié)點分別同步所述位圖中偶數(shù)位對應(yīng)的偶數(shù)數(shù)據(jù)塊和所述位圖中奇數(shù)位對應(yīng)的奇數(shù)數(shù)據(jù)塊;其中,所述主節(jié)點和所述從節(jié)點每同步完一個數(shù)據(jù)塊均會更新一次所述元數(shù)據(jù)區(qū)的位圖。
其中,由于位圖中的每一個位均存在使用一個索引,那么若該索引為奇數(shù),我們可以稱該位其為奇數(shù)位,對應(yīng)的數(shù)據(jù)塊可以稱之為奇數(shù)數(shù)據(jù)塊,對奇數(shù)數(shù)據(jù)塊進行同步就可以稱為奇同步;若該索引為偶數(shù),我們可以稱該位其為偶數(shù)位,對應(yīng)的數(shù)據(jù)塊可以稱之為偶數(shù)數(shù)據(jù)塊,對偶數(shù)數(shù)據(jù)塊進行同步就可以稱為偶同步。
本實施例中雙控RAID的同步是通過主節(jié)點和從節(jié)點分別進行偶同步和奇同步來實現(xiàn)的,也就是主節(jié)點和從節(jié)點分別同步位圖中偶數(shù)位對應(yīng)的數(shù)據(jù)塊和奇數(shù)位對應(yīng)的數(shù)據(jù)塊。可以理解的是,本實施例的目的是為了充分利用雙控RAID中兩個節(jié)點的資源進行同步,也就是,只要可以使用兩個節(jié)點并行對雙控RAID進行同步便可達到本實施例的目的。也就是說,兩個節(jié)點不僅可以按照本實施中位圖中偶數(shù)位和奇數(shù)位對對應(yīng)的數(shù)據(jù)塊進行同步,還可以按照其他的方式,如兩個節(jié)點按照從位圖兩端位開始分別開始同步的方式。本實施例對此不受任何限制。由于雙控RAID進行偶同步和奇同步可以使兩個節(jié)點的IO能夠順序達到磁盤,使得磁頭盡可能向同一個方向移動,避免產(chǎn)生磁盤的抖動,導(dǎo)致讀寫效率下降的情況,因此雙控RAID進行偶同步和奇同步可以為優(yōu)選方案。
需要說明的是,雙控RAID進行奇同步和偶同步的節(jié)點的設(shè)置,可以為主節(jié)點進行偶同步,從節(jié)點進行奇同步,也可以為主節(jié)點進行奇同步,從節(jié)點進行偶同步,本實施例對此不受任何限制。
對于主節(jié)點和從節(jié)點分別進行偶同步和奇同步的方式,可以為兩個節(jié)點分別遍歷位圖進行偶同步和奇同步,也可以為主節(jié)點遍歷位圖,向從節(jié)點發(fā)送需要同步的數(shù)據(jù)塊號或位號的方式,本實施對此不受任何限制。由于后一種方式可以充分發(fā)揮主節(jié)點作為集群的管理者,進行統(tǒng)一管理同步的速度,停止,以及重啟同步等的功能,因此,優(yōu)選的可以使用后一種方式進行偶同步和奇同步。
步驟103:所述元數(shù)據(jù)區(qū)的位圖的有效位均清空后,所述主節(jié)點和所述從節(jié)點重新加載所述元數(shù)據(jù)區(qū)的位圖。
其中,元數(shù)據(jù)區(qū)的位圖的有效位均清空可以為位圖中設(shè)置為1的位均變?yōu)榱?,表明主節(jié)點和從節(jié)點均分別完成了偶同步和奇同步。
可以理解的是,主節(jié)點和從節(jié)點均分別完成了偶同步和奇同步后,每個節(jié)點的位圖中只有自身同步的位變?yōu)榱?,通過重新加載元數(shù)據(jù)區(qū)的位圖,可以更新兩個節(jié)點中的位圖,達到兩個節(jié)點和磁盤中的位圖一致,且均為最新狀態(tài)。
本實施例中,本發(fā)明實施例通過主節(jié)點和從節(jié)點分別同步位圖中偶數(shù)位對應(yīng)的偶數(shù)數(shù)據(jù)塊和位圖中奇數(shù)位對應(yīng)的奇數(shù)數(shù)據(jù)塊,可以使雙控RAID的同步根據(jù)位圖上的奇數(shù)位和偶數(shù)位在兩個節(jié)點上并行進行,實現(xiàn)了負載均衡,避免了節(jié)點空閑的現(xiàn)象,通過元數(shù)據(jù)區(qū)的位圖的有效位均清空后,主節(jié)點和從節(jié)點重新加載元數(shù)據(jù)區(qū)的位圖,進行了位圖的合并,使得雙控RAID可以更加快速的完成同步,縮減了丟失數(shù)據(jù)風(fēng)險的時間,提升了用戶體驗。
請參考圖2、圖3和圖4,圖2為本發(fā)明實施例所提供的另一種雙控RAID同步方法的流程圖;圖3為本發(fā)明實施例所提供的另一種雙控RAID同步方法的位圖與數(shù)據(jù)塊對應(yīng)關(guān)系示意圖;圖4為本發(fā)明實施例所提供的另一種雙控RAID同步方法的RAID5更新示意圖。該方法可以包括:
步驟201:主節(jié)點將位圖全部置臟,并更新到磁盤;從節(jié)點從磁盤的元數(shù)據(jù)區(qū)加載置臟后的位圖。
其中,位圖中的位與數(shù)據(jù)盤的數(shù)據(jù)塊的對應(yīng)關(guān)系可以如圖3所示,位圖(bitmap)中每一個位(bit)對應(yīng)數(shù)據(jù)盤(disk)中的一個數(shù)據(jù)塊(chunk)。如果該位值為0,則表明該位對應(yīng)的數(shù)據(jù)塊都已經(jīng)同步完畢,如果該位值為1,則表明該位對應(yīng)的數(shù)據(jù)塊有些沒有同步。如圖3所示,位圖中偶數(shù)位對應(yīng)的數(shù)據(jù)塊為深色,奇數(shù)位對應(yīng)的數(shù)據(jù)塊為淺色。在雙控RAID中,每一個節(jié)點的RAID都維護一個位圖,且要實時更新位圖到磁盤的元數(shù)據(jù)區(qū)。
可以理解的是,本實施例是以雙控RAID進行重建為例,由主節(jié)點將位圖全部置臟,并更新到磁盤,然后從節(jié)點再從磁盤的元數(shù)據(jù)區(qū)加載該位圖。
需要說明的是,主節(jié)點和從節(jié)點均獲取了置臟后的位圖后,均可以啟動同步線程,準(zhǔn)備進行同步。
步驟202:主節(jié)點從數(shù)據(jù)塊0開始遍歷,對偶數(shù)數(shù)據(jù)塊進行同步并在遍歷到奇數(shù)數(shù)據(jù)塊時,將奇數(shù)數(shù)據(jù)塊的數(shù)據(jù)塊號發(fā)送給從節(jié)點。
可以理解的是,本實施例是以主節(jié)點作為同步操作的管理者,由主節(jié)點對位圖進行遍歷的同時,對遍歷到的偶數(shù)數(shù)據(jù)塊進行同步,將遍歷到的奇數(shù)數(shù)據(jù)塊的數(shù)據(jù)塊號作為從節(jié)點進行同步的請求發(fā)送給從節(jié)點,可以通過主節(jié)點對雙控RAID的同步進行統(tǒng)一的管理。
步驟203:從節(jié)點收到數(shù)據(jù)塊號后進行回應(yīng),并對數(shù)據(jù)塊號對應(yīng)的數(shù)據(jù)塊進行同步。
其中,從節(jié)點向主節(jié)點進行的回應(yīng),用于向主節(jié)點提示從節(jié)點可以對該數(shù)據(jù)塊號對應(yīng)的數(shù)據(jù)塊進行同步,使主節(jié)點可以了解從節(jié)點的狀態(tài)。
可以理解的是,對于主節(jié)點和從節(jié)點的同步過程,可以如圖4中主節(jié)點和從節(jié)點對RAID5數(shù)據(jù)盤的同步所示,RAID5數(shù)據(jù)盤有三塊磁盤構(gòu)成,RAID5正在使用熱備盤進行重建。disk0,disk1為數(shù)據(jù)盤,S0為熱備盤。位圖中偶數(shù)位對應(yīng)的數(shù)據(jù)塊為深色通過主節(jié)點的同步條帶進行同步,位圖中奇數(shù)位對應(yīng)的數(shù)據(jù)塊為淺色通過從節(jié)點的同步條帶進行同步。
需要說明的是,若從節(jié)點下發(fā)IO出錯,也就是,在同步的過程中出現(xiàn)錯誤,由于并不影響從節(jié)點繼續(xù)同步,因此可以在此數(shù)據(jù)塊同步完成后,將錯誤信息發(fā)送到同步操作的管理者主節(jié)點中,也可以在奇同步完成后,也就是對全部奇數(shù)數(shù)據(jù)塊的同步完成后,將全部錯誤信息發(fā)送到主節(jié)點,方便主節(jié)點集中處理。本實施例對此不受任何限制。
步驟204:主節(jié)點收到回應(yīng)后,繼續(xù)遍歷。
可以理解的是,本實施例是以主節(jié)點作為同步操作的管理者,為了確保對從節(jié)點進行奇同步的管理,主節(jié)點每遍歷到位圖中的奇數(shù)位對應(yīng)的數(shù)據(jù)塊時,都需要發(fā)送該數(shù)據(jù)塊的數(shù)據(jù)塊號到從節(jié)點,告知從節(jié)點對該數(shù)據(jù)塊進行同步,并根據(jù)從節(jié)點的回應(yīng)確定從節(jié)點可以對該數(shù)據(jù)塊進行同步,然后再繼續(xù)遍歷。
步驟205:若主節(jié)點在預(yù)設(shè)時間內(nèi)未接收到回應(yīng),則停止從節(jié)點的同步線程,主節(jié)點將不再發(fā)送數(shù)據(jù)塊號并同步接下來遍歷的全部數(shù)據(jù)塊。
可以理解的是,若主節(jié)點在預(yù)設(shè)時間內(nèi)未接收到回應(yīng),則說明從節(jié)點出現(xiàn)了問題,不能再對奇數(shù)數(shù)據(jù)塊進行同步了,因此主節(jié)點可以控制停止從節(jié)點的同步線程,并不再發(fā)送數(shù)據(jù)塊號,而是通過主節(jié)點自身對剩下的未同步的數(shù)據(jù)塊進行同步。
步驟206:若主節(jié)點處理出現(xiàn)錯誤,則切換從節(jié)點與主節(jié)點。
其中,切換從節(jié)點與主節(jié)點也就數(shù)雙控RAID進行主備切換,由原來的從節(jié)點完成出現(xiàn)錯誤的主節(jié)點需要進行的操作流程。
步驟207:元數(shù)據(jù)區(qū)的位圖的有效位均清空后,主節(jié)點和從節(jié)點重新加載元數(shù)據(jù)區(qū)的位圖。
可以理解得是,步驟207與步驟103相似,在此不再贅述。
本實施例中,本發(fā)明實施例通過主節(jié)點的管理對雙控RAID進行奇同步和偶同步,可以使每個磁盤接受兩個節(jié)點的IO能夠順序達到磁盤,使得磁頭盡可能向同一個方向移動,避免產(chǎn)生因磁盤的抖動,導(dǎo)致的讀寫效率下降的問題,并且處理的區(qū)域塊不會重復(fù),避免需要加鎖處理。
請參考圖5,圖5為本發(fā)明實施例所提供的一種雙控RAID同步裝置的結(jié)構(gòu)圖。該裝置可以包括:
第一加載模塊100,用于主節(jié)點和從節(jié)點從磁盤的元數(shù)據(jù)區(qū)加載置臟后的位圖;
同步模塊200,用于所述主節(jié)點和所述從節(jié)點分別同步所述位圖中偶數(shù)位對應(yīng)的偶數(shù)數(shù)據(jù)塊和所述位圖中奇數(shù)位對應(yīng)的奇數(shù)數(shù)據(jù)塊;其中,所述主節(jié)點和所述從節(jié)點每同步完一個數(shù)據(jù)塊均會更新一次所述元數(shù)據(jù)區(qū)的位圖;
第二加載模塊300,用于所述元數(shù)據(jù)區(qū)的位圖的有效位均清空后,所述主節(jié)點和所述從節(jié)點重新加載所述元數(shù)據(jù)區(qū)的位圖。
可選的,所述同步模塊200,可以包括:
遍歷單元,用于所述主節(jié)點從數(shù)據(jù)塊0開始遍歷;
第一同步單元,用于所述主節(jié)點對偶數(shù)數(shù)據(jù)塊進行同步;
發(fā)送單元,用于所述主節(jié)點在遍歷到奇數(shù)數(shù)據(jù)塊時,將所述奇數(shù)數(shù)據(jù)塊的數(shù)據(jù)塊號發(fā)送給所述從節(jié)點;
第二遍歷單元,用于所述從節(jié)點收到所述數(shù)據(jù)塊號后進行回應(yīng),并對所述數(shù)據(jù)塊號對應(yīng)的數(shù)據(jù)塊進行同步;
響應(yīng)單元,用于所述主節(jié)點收到所述回應(yīng)后,繼續(xù)遍歷。
可選的,所述同步模塊200,還可以包括:
第三同步單元,用于若所述主節(jié)點在預(yù)設(shè)時間內(nèi)未接收到所述回應(yīng),則停止所述從節(jié)點的同步線程,所述主節(jié)點將不再發(fā)送所述數(shù)據(jù)塊號并同步接下來遍歷的全部數(shù)據(jù)塊。
可選的,所述同步模塊200,還可以包括:
切換單元,用于若所述主節(jié)點處理出現(xiàn)錯誤,則切換所述從節(jié)點與所述主節(jié)點。
可選的,該裝置還可以包括:
錯誤發(fā)送模塊,用于若所述從節(jié)點下發(fā)IO出錯,則在全部奇數(shù)數(shù)據(jù)塊同步結(jié)束后,將全部錯誤發(fā)送到所述主節(jié)點。
本實施例中,本發(fā)明實施例通過同步模塊200使主節(jié)點和從節(jié)點分別同步位圖中偶數(shù)位對應(yīng)的偶數(shù)數(shù)據(jù)塊和位圖中奇數(shù)位對應(yīng)的奇數(shù)數(shù)據(jù)塊,可以使雙控RAID的同步根據(jù)位圖上的奇數(shù)位和偶數(shù)位在兩個節(jié)點上并行進行,實現(xiàn)了負載均衡,避免了節(jié)點空閑的現(xiàn)象,通過第二加載模塊300使元數(shù)據(jù)區(qū)的位圖的有效位均清空后,主節(jié)點和從節(jié)點重新加載元數(shù)據(jù)區(qū)的位圖,進行了位圖的合并,使得雙控RAID可以更加快速的完成同步,縮減了丟失數(shù)據(jù)風(fēng)險的時間,提升了用戶體驗。
說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上對本發(fā)明所提供的雙控RAID同步方法及裝置進行了詳細介紹。本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。