亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種多控多活RAID同步方法及系統(tǒng)與流程

文檔序號:11215860閱讀:483來源:國知局
一種多控多活RAID同步方法及系統(tǒng)與流程

本發(fā)明涉及計算機存儲計數領域,特別涉及一種多控多活raid同步方法及系統(tǒng)。



背景技術:

在存儲系統(tǒng)中,有單控系統(tǒng),雙控系統(tǒng),還有多控系統(tǒng)。單控系統(tǒng),即整個系統(tǒng)只有一個節(jié)點,比較簡單。為了提高系統(tǒng)的可靠性和io性能,又出現了雙控和多控等集群系統(tǒng)。即整個存儲系統(tǒng)中,或者一個機箱內有多個節(jié)點??刂破鞯臄盗吭蕉啵到y(tǒng)就越復雜。而raid(redundantarraysofindependentdisks獨立冗余磁盤陣列)技術在多控系統(tǒng)中更為復雜。在多控系統(tǒng)中,raid既要保證數據的一致性,又要保證io的高效性。為了保證數據的一致性,多控之間需要進行加鎖,為了保證io的高效性,raid通常采用雙活或四活模式。然而多控之間的數據同步,常常有會導致io的性能下降。

因此,如何在保證raid數據的一致性基礎上,提高raid同步之間的數據同步效率,保障io的高效性是當前的研究難點。



技術實現要素:

有鑒于此,本發(fā)明的目的在于提供一種多控多活raid同步方法及系統(tǒng),保證raid數據的一致性,提高了raid同步之間的數據同步效率,保障了io的高效性。其具體方案如下:

一種多控多活raid同步方法,包括:

目標主raid節(jié)點接收目標raid的加鎖請求;

所述目標主raid節(jié)點利用所述加鎖請求查找目標條帶,判斷所述目標條帶是否被占用;

如果否,則所述目標主raid節(jié)點發(fā)送授權信息至所述目標raid;

所述目標raid對所述目標條帶加鎖,以便于raid之間同步數據;

其中,所述目標主raid節(jié)點包括與所述目標raid具有相同的id的raid,所述目標主raid節(jié)點為k個目標主raid節(jié)點中的任意一個目標主raid節(jié)點,每個目標主raid節(jié)點負責不同id的raid的加鎖請求,k個目標主raid節(jié)點均為按照輪詢方式,利用id%n算法,從n個raid節(jié)點中選取出的raid節(jié)點,n為大于等于2的正整數,k為正整數。

可選的,所述所述目標主raid節(jié)點利用所述加鎖請求查找目標條帶的過程,包括:

所述目標主raid節(jié)點利用所述加鎖請求中的所述目標條帶的起始位置和條帶大小,查找目標條帶。

可選的,還包括:

當所述目標主raid節(jié)點停止工作,則按照輪詢方式,利用id%n算法,重新從n-1個raid節(jié)點中選取出的一個新目標主raid節(jié)點。

本發(fā)明還公開了一種多控多活raid同步系統(tǒng),包括目標主raid節(jié)點和目標raid;其中,所述目標主raid節(jié)點包括:

接收模塊,用于接收目標raid的加鎖請求;

查找模塊,用于利用所述加鎖請求查找目標條帶;

判斷模塊,用于判斷所述目標條帶是否被占用;

發(fā)送模塊,用于如果所述判斷模塊判定所述目標條帶未被占用,則發(fā)送授權信息至所述目標raid;

所述目標raid包括:

加鎖模塊,用于對所述目標條帶加鎖,以便于raid之間同步數據;

其中,所述目標主raid節(jié)點包括與所述目標raid具有相同的id的raid,所述目標主raid節(jié)點為k個目標主raid節(jié)點中的任意一個目標主raid節(jié)點,每個目標主raid節(jié)點負責不同id的raid的加鎖請求,k個目標主raid節(jié)點均為按照輪詢方式,利用id%n算法,從n個raid節(jié)點中選取出的raid節(jié)點,n為大于等于2的正整數,k為正整數。

可選的,所述查找模塊,具體用于利用所述加鎖請求中的所述目標條帶的起始位置和條帶大小,查找目標條帶。

可選的,所述目標主raid節(jié)點,還包括:

選取模塊,用于當所述目標主raid節(jié)點停止工作,則按照輪詢方式,利用id%n算法,重新從n-1個raid節(jié)點中選取出的一個新目標主raid節(jié)點。

本發(fā)明中,多控多活raid同步方法,包括:目標主raid節(jié)點接收目標raid的加鎖請求;目標主raid節(jié)點利用加鎖請求查找目標條帶,判斷目標條帶是否被占用;如果否,則目標主raid節(jié)點發(fā)送授權信息至目標raid;目標raid對目標條帶加鎖,以便于raid之間同步數據;其中,目標主raid節(jié)點包括與目標raid具有相同的id的raid,目標主raid節(jié)點為k個目標主raid節(jié)點中的任意一個目標主raid節(jié)點,每個目標主raid節(jié)點負責不同id的raid的加鎖請求,k個目標主raid節(jié)點均為按照輪詢方式,利用id%n算法,從n個raid節(jié)點中選取出的raid節(jié)點,n為大于等于2的正整數,k為正整數。本發(fā)明實施例通過將負責不同id的raid的加鎖請求的目標主raid節(jié)點分布在不同的raid節(jié)點中,使得不同id的raid的加鎖請求分散在不同的目標主raid節(jié)點上,使負載均衡分布在多個raid節(jié)點上,避免了請求集中在一個raid節(jié)點上,導致該raid節(jié)點上的raid大量的負責處理加鎖請求,只能少量的處理寫io操作,同時,只需要通過目標raid與目標主raid節(jié)點之間進行加鎖請求的通信,而不用在每個raid節(jié)點之間進行通信,避免了產生大量的加鎖請求,減少了負載,綜上所述,保證了raid數據的一致性,提高了raid同步之間的數據同步效率,多余的負載保障了io的高效性。

附圖說明

為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。

圖1為本發(fā)明實施例公開的一種多控多活raid同步方法流程示意圖;

圖2為本發(fā)明實施例公開的一種多控多活raid同步方法結構示意圖;

圖3為本發(fā)明實施例公開的一種多控多活raid同步系統(tǒng)結構示意圖。

具體實施方式

下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

本發(fā)明實施例公開了一種多控多活raid同步方法,參見圖1和圖2所示,該方法包括:

步驟s11:目標主raid節(jié)點接收目標raid的加鎖請求。

具體的,目標主raid節(jié)點創(chuàng)建監(jiān)聽套接字,啟動監(jiān)聽服務,以便接收目標raid的加鎖請求。

其中,目標主raid節(jié)點包括與目標raid具有相同的id的raid,例如,rd0-1為目標主raid節(jié)點中的目標主raid,rd0-2為目標raid,rd0-1和rd0-2具有相同的id,目標主raid節(jié)點為k個目標主raid節(jié)點中的任意一個目標主raid節(jié)點,例如,第一節(jié)點、第二節(jié)點、第三節(jié)點和第四節(jié)點,k個目標主raid節(jié)點均勻分布在n個raid節(jié)點上,k個目標主raid節(jié)點均為按照輪詢方式,利用id%n算法,從n個raid節(jié)點中選取出的節(jié)點,n為大于等于2的正整數,k為正整數。

需要說明的是,同一raid節(jié)點中的raid的id不相同,例如,第一節(jié)點中rd0-1、rd1-1、rd2-1和rd3-1的id均不相同,只有在不同raid節(jié)點之間,才會出現相同id的raid,例如,rd0-1、rd0-2、rd0-3和rd0-4的id均相同,同一節(jié)點中的raid數可以根據實際應用需求進行設定。

步驟s12:目標主raid節(jié)點利用加鎖請求查找目標條帶,判斷目標條帶是否被占用。

具體的,目標主raid節(jié)點利用加鎖請求中的目標條帶的特征信息,查找到目標條帶,進而判斷目標條帶是否為占用狀態(tài)。

可以理解的是,由于目標主raid節(jié)點中的目標主raid與目標raid具有相同id,目標主raid與目標raid共用相同的條帶,當然目標條帶也在其中,所以目標主raid節(jié)點可以直接查找到目標條帶,并判斷目標條帶是否為占用狀態(tài)。

其中,判斷目標條帶是否被占用的條件為判斷目標條帶是否正被寫io,如果目標條帶正被寫io,則為被占用,如果目標條帶未被寫io,則未被占用。

步驟s13:如果否,則目標主raid節(jié)點發(fā)送授權信息至目標raid。

具體的,如果判定目標條帶未被占用,則目標主raid節(jié)點響應目標raid的加鎖請求,發(fā)送授權信息至目標raid,允許目標raid對目標條帶加鎖。

可以理解的是,如果是,目標條帶被占用,則目標主raid節(jié)點可以發(fā)送拒絕信息至目標raid,目標raid則可以等待目標條帶未被占用時,目標主raid節(jié)點再次向目標raid發(fā)送授權信息,也可以在一定時間后再次向目標主raid節(jié)點發(fā)送加鎖請求。

需要說明的是,當目標raid的加鎖請求被授權,目標條帶被鎖,其他與目標raid的id相同的raid需要向目標條帶寫io時,目標主raid節(jié)點會查詢到目標條帶被占用,因此目標主raid節(jié)點不會向其他與目標raid的id相同的raid發(fā)送授權信息,其他與目標raid的id相同的raid便無法再對目標條帶進行寫io操作。

步驟s14:目標raid對目標條帶加鎖,以便于raid之間同步數據。

可以理解的是,為防止多個用戶數據同時通過不同的raid向同一個條帶寫入數據,而導致raid之間數據無法同步,最終導致數據的完整性被破壞,因此在一個用戶對一個條帶寫入數據時,為條帶加鎖,使其他用戶無法通過不同的raid向同一個條帶寫入數據,保證數據的完整性,保證raid之間數據的一致性,所以目標raid對目標條帶加鎖,以便于raid之間同步數據。

可見,本發(fā)明實施例通過將負責不同id的raid的加鎖請求的目標主raid節(jié)點分布在不同的raid節(jié)點中,使得不同id的raid的加鎖請求分散在不同的目標主raid節(jié)點上,使負載均衡分布在多個raid節(jié)點上,避免了請求集中在一個raid節(jié)點上,導致該raid節(jié)點上的raid大量的負責處理加鎖請求,只能少量的處理寫io操作,同時,只需要通過目標raid與目標主raid節(jié)點之間進行加鎖請求的通信,而不用在每個raid節(jié)點之間進行通信,避免了產生大量的加鎖請求,減少了負載,綜上所述,保證了raid數據的一致性,提高了raid同步之間的數據同步效率,多余的負載保障了io的高效性。

本發(fā)明實施例公開了一種具體的多控多活raid同步方法,相對于上一實施例,本實施例對技術方案作了進一步的說明和優(yōu)化。具體的:

本發(fā)明實施例中,上述步驟s12中目標主raid節(jié)點利用加鎖請求查找目標條帶的過程,可以具體為目標主raid節(jié)點利用加鎖請求中的目標條帶的起始位置和條帶大小,查找目標條帶。

其中,上一實施例中的id%n算法,具體為利用每個節(jié)點上的raid使用的id與n求余,得到余數,利用余數從n個raid節(jié)點中選取出作為目標主raid節(jié)點的raid節(jié)點。

在實際應用中,有可能發(fā)生raid節(jié)點offline或者被拔出的可能性,此時,可能會出現目標主raid節(jié)點缺失的情況,如果不能及時恢復目標主raid節(jié)點將無法進行鎖操作,也無法進行與缺失的目標主raid節(jié)點相應的raid之間的數據同步,因此,還可以當目標主raid節(jié)點停止工作,則按照輪詢方式,利用id%n算法,重新從n-1個raid節(jié)點中選取出的一個新目標主raid節(jié)點,即,在剩余的與缺失的目標主raid節(jié)點中目標raid具有相同的id的raid的raid節(jié)點中選取出的一個新目標主raid節(jié)點,替代缺失的目標主raid節(jié)點,從而能夠繼續(xù)工作,在缺失的目標主raid節(jié)點恢復后,可以根據按照輪詢方式,利用id%n算法,將恢復的缺失的目標主raid節(jié)點重新選為目標主raid節(jié)點,當然,如果替代缺失的目標主raid節(jié)點的新目標主raid節(jié)點,僅有新目標主raid節(jié)點一個目標主raid,則在缺失的目標主raid節(jié)點恢復后也可以繼續(xù)使用新目標主raid節(jié)點,而缺失的目標主raid節(jié)點則作為普通的raid節(jié)點繼續(xù)工作。

相應的,本發(fā)明實施例還公開了一種多控多活raid同步系統(tǒng),參見圖3所示,該系統(tǒng)包括目標主raid節(jié)點11和目標raid12;其中,

目標主raid節(jié)點11包括:

接收模塊111,用于接收目標raid12的加鎖請求;

查找模塊112,用于利用加鎖請求查找目標條帶;

判斷模塊113,用于判斷目標條帶是否被占用;

發(fā)送模塊114,用于如果判斷模塊113判定目標條帶未被占用,則發(fā)送授權信息至目標raid12;

目標raid12包括:

加鎖模塊121,用于對目標條帶加鎖,以便于raid之間同步數據;

其中,目標主raid節(jié)點11包括與目標raid12具有相同的id的raid,目標主raid節(jié)點11為k個目標主raid節(jié)點中的任意一個目標主raid節(jié)點,每個目標主raid節(jié)點負責不同id的raid的加鎖請求,k個目標主raid節(jié)點均為按照輪詢方式,利用id%n算法,從n個raid節(jié)點中選取出的raid節(jié)點,n為大于等于2的正整數,k為正整數。

可見,本發(fā)明實施例通過將負責不同id的raid的加鎖請求的目標主raid節(jié)點分布在不同的raid節(jié)點中,使得不同id的raid的加鎖請求分散在不同的目標主raid節(jié)點上,使負載均衡分布在多個raid節(jié)點上,避免了請求集中在一個raid節(jié)點上,導致該raid節(jié)點上的raid大量的負責處理加鎖請求,只能少量的處理寫io操作,同時,只需要通過目標raid12與目標主raid節(jié)點11之間進行加鎖請求的通信,而不用在每個raid節(jié)點之間進行通信,避免了產生大量的加鎖請求,減少了負載,綜上所述,保證了raid數據的一致性,提高了raid同步之間的數據同步效率,多余的負載保障了io的高效性。

本發(fā)明實施例中,上述查找模塊,可以具體用于利用加鎖請求中的目標條帶的起始位置和條帶大小,查找目標條帶。

本發(fā)明實施例中,目標主raid節(jié)點還可以包括:

選取模塊,用于當目標主raid節(jié)點停止工作,則按照輪詢方式,利用id%n算法,重新從n-1個raid節(jié)點中選取出的一個新目標主raid節(jié)點。

最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。

以上對本發(fā)明所提供的一種多控多活raid同步方法及系統(tǒng)進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發(fā)明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發(fā)明的限制。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1