專利名稱::一種多存儲陣列負載均衡的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,特別是涉及一種基于權(quán)值的多存儲陣列負載均衡的方法和設(shè)備。
背景技術(shù):
:在網(wǎng)絡(luò)存儲領(lǐng)域,一般通過iSCSI協(xié)議(InternetSmallComputerSystemInterface,互聯(lián)網(wǎng)小型計算機系統(tǒng)接口)完成客戶端和IP-SAN(StorageAreaNetwork,存儲區(qū)域網(wǎng)絡(luò))間的數(shù)據(jù)傳輸。具體地,SCSI(SmallComputerSystemInterface,小型計算機系統(tǒng)接口)結(jié)構(gòu)基于客戶端/服務(wù)器模式,通常應(yīng)用環(huán)境是設(shè)備互相靠近,并且由SCSI總線連接。iSCSI通過在SCSI數(shù)據(jù)包外封裝TCP/IP(TransmissionControlProtocol/InternetProtocol,傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議)協(xié)議,使SCSI數(shù)據(jù)包可以在IP網(wǎng)絡(luò)中傳輸。如圖1所示,當客戶端(啟動器Initiator)通過IP網(wǎng)絡(luò)實現(xiàn)與存儲設(shè)備(目標器Target)間進行大量數(shù)據(jù)的存儲傳輸時,客戶端(如Initiator)的SCSI數(shù)據(jù)包先被封裝成iSCSI的PDU(ProtocolDataUnit,協(xié)議數(shù)據(jù)單元),然后封裝相應(yīng)的網(wǎng)絡(luò)協(xié)議發(fā)送到網(wǎng)絡(luò)的另一端存儲設(shè)備(如Target),再依次解封裝還原成最初的SCSI數(shù)據(jù)包。存儲設(shè)備通過不同的RAID(RedundantArrayofIndependentDisk,獨立冗余磁盤陣列)方式來對外提供同時多路讀寫10(Input/Output,輸出/輸入)服務(wù)。然而,進一步如圖2所示,當存儲設(shè)備高負載運行或者不可用時,基于iSCSI協(xié)議的客戶端Initiator無法從該存儲設(shè)備上獲得其請求的服務(wù),在此情況下,不得不等待重新連接該存儲設(shè)備Target或者在支持iSNS(InternetStroageNameService,互聯(lián)網(wǎng)存儲名稱服務(wù))的情況下,向其他存儲設(shè)備Target發(fā)起連接請求。將上述系統(tǒng)應(yīng)用于大規(guī)模城域或廣域視頻監(jiān)控場景中,如圖3所示,由于視頻存儲數(shù)據(jù)通常根據(jù)物理區(qū)域分布就近保存在不同物理域的數(shù)據(jù)中心,編碼器實時輸出數(shù)據(jù),通過iSCSI協(xié)議保存在IP-SAN中。但在這種應(yīng)用模式下,如上所述,當設(shè)備負載較高或者出現(xiàn)問題時,同一數(shù)據(jù)中心以及分布在不同區(qū)域數(shù)據(jù)中心的iSCSI連接將存在負載不均衡的問題。為解決上述問題,現(xiàn)有技術(shù)中提供以下三種方案進行負載均衡,具體如下方案一、靜態(tài)配置預(yù)先為客戶端Initiator手動配置指定的存儲設(shè)備Target的位置信息,該位置信息包括=Target的IP地址,TCP端口(通常默認為3260),以及Target的名字等信息,該位置信息存儲在客戶端Initiator本地,使客戶端Initiator通過該位置信息與指定的存儲設(shè)備Target建立iSCSI連接。通常,為了保證客戶端能正常工作,該列表中配置有多個存儲設(shè)備Target的位置信息。當客戶端Initiator與當前存儲設(shè)備Target的連接中斷時,該客戶端Initiator從列表中重新選擇一個新的存儲設(shè)備Target并與該新的存儲設(shè)備Target建立iSCSI連接。方案二、發(fā)起會話(SendTargets)客戶端Initiator向存儲設(shè)備Target網(wǎng)關(guān)發(fā)起會話,從而獲得該Target網(wǎng)關(guān)的位置信息,如IP地址,TCP端口以及Target的名字等。當客戶端Initiator與Target建立iSCSI連接時,數(shù)據(jù)首先由Initiator發(fā)送給該Target網(wǎng)關(guān),再由該Target網(wǎng)關(guān)將數(shù)據(jù)傳輸?shù)絋arget,在此過程中,Target網(wǎng)關(guān)可以根據(jù)各個Target的負載信息進行動態(tài)調(diào)整。方案三、零配置(如iSNS,SLP,etc.)利用iSCSI所支持的名字發(fā)現(xiàn)服務(wù)如iSNS^PSLP(ServiceLocationProtocol,服務(wù)定位協(xié)議)等。以iSNS服務(wù)器為例,Initiator和Target均在iSNS服務(wù)器端注冊,由iSNS服務(wù)器來維護Target的IP地址、端口和名字等信息,上述信息為Target的位置信息。當Initiator需要獲得當前可用的Target時,只需連接到iSNS服務(wù)器,即可獲得完整的Target的信息列表,并從該Target的信息列表中選擇Target建立iSCSI連接。對于上述現(xiàn)有方案,方案一與方案三的缺陷在于由于該Target的列表中僅包括Target的位置信息,無法獲取每一個Target的負載信息,即無法獲知所選擇的Target是否可用,因此當重新選擇的Target不可用時,該Initiator需要再次從列表中依次選擇新的Target并與所選擇的新的Target建立連接,如此循環(huán),降低了效率。方案二的缺陷在于雖然Target網(wǎng)關(guān)可以獲取Target的負載信息并根據(jù)Target的負載信息進行動態(tài)調(diào)整,但由于Target網(wǎng)關(guān)同時參與iSCSI連接,且所有的數(shù)據(jù)都要通過該Target網(wǎng)關(guān)進行傳輸,此時若Initiator與該Target網(wǎng)關(guān)之間的連接中斷,Initiator則無法與該Target網(wǎng)關(guān)下的所有Target建立iSCSI連接。
發(fā)明內(nèi)容本發(fā)明提供一種多存儲陣列負載均衡的方法和設(shè)備,用于動態(tài)調(diào)整IP存儲網(wǎng)絡(luò)中各Target的負載,并進行負載均衡。本發(fā)明提供一種多存儲陣列負載均衡的方法,應(yīng)用于進行通信的客戶端Initiator和存儲設(shè)備Target組成的存儲系統(tǒng)中,所述Initiator和Target之間通過存儲設(shè)備代理設(shè)備TargetAgent建立連接,所述方法包括以下步驟所述TargetAgent動態(tài)獲取Target的資源狀態(tài)信息;當接收到所述Initiator的資源查詢請求時,所述TargetAgent根據(jù)所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target;所述TargetAgent將所述匹配的Target的信息發(fā)送給所述Initiator,使所述Initiator與所述匹配的Target建立連接。其中,所述TargetAgent動態(tài)獲取Target的資源狀態(tài)信息包括所述TargetAgent獲取所述Target周期上報的資源狀態(tài)信息;或所述TargetAgent獲取所述Target檢測到自身資源狀態(tài)信息發(fā)生變化后主動上報的資源狀態(tài)信息。其中,所述TargetAgent根據(jù)所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target包括所述TargetAgent將所述Target的資源狀態(tài)信息存儲到配置的Target資源狀態(tài)列表;所述TargetAgent查詢所述Target資源狀態(tài)列表,根據(jù)所述Target資源狀態(tài)列表中Target的資源狀態(tài)信息為所述Initiator分配匹配的Target,所述資源狀態(tài)信息具體為Target的位置信息、負載信息和其他附加信息,其中所述負載信息包括權(quán)值和/或空閑容量和/或空閑iSCSI連接數(shù)。其中,還包括所述TargetAgent動態(tài)獲取Initiator的資源狀態(tài)信息。其中,還包括所述TargetAgent檢測Target的資源狀態(tài)信息;當檢測到所述Target的負載超過預(yù)設(shè)的負載門限時,所述TargetAgent根據(jù)與所述Target連接的Initiator的資源狀態(tài)信息,選擇對應(yīng)的Initiator并中斷所述Target與所述對應(yīng)的Initiator的連接,同時調(diào)整該Target的負載信息;和/或當所述TargetAgent與Target的資源狀態(tài)信息傳輸中斷時,所述TargetAgent根據(jù)預(yù)先配置的Initiator與Target的對應(yīng)關(guān)系獲知與所述Target連接的Initiator,并為與所述Target連接的Initiator重新分配Target。本發(fā)明提供一種存儲設(shè)備代理設(shè)備TargetAgent,應(yīng)用于包括客戶端Initiator和存儲設(shè)備Target組成的存儲系統(tǒng)中,所述Initiator和Target之間通過所述TargetAgent建立連接,所述TargetAgent包括收發(fā)模塊,用于獲取Target上報的資源狀態(tài)信息,并接收所述Initiator的資源查詢請求,將與所述Initiator匹配的Target的信息發(fā)送給所述Initiator;存儲模塊,與所述收發(fā)模塊連接,用于存儲所述收發(fā)模塊獲取的Target的資源狀態(tài)信息;匹配模塊,與所述收發(fā)模塊和存儲模塊連接,用于根據(jù)所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target。其中,所述收發(fā)模塊具體用于獲取所述Target周期上報的資源狀態(tài)信息;或獲取所述Target檢測到自身資源狀態(tài)信息發(fā)生變化后主動上報的資源狀態(tài)信肩、ο其中,所述存儲模塊具體用于將所述Target的資源狀態(tài)信息存儲到配置的Target資源狀態(tài)列表,所述Target的資源狀態(tài)信息具體為Target的位置信息、負載信息和其他附加信息,其中所述負載信息具體包括權(quán)值和/或空閑容量和/或空閑iSCSI連接數(shù);所述匹配模塊具體用于查詢所述Target資源狀態(tài)列表,根據(jù)所述Target資源狀態(tài)列表中所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target。其中,所述收發(fā)模塊還用于動態(tài)獲取Initiator的資源狀態(tài)信息。其中,還包括檢測模塊,與所述存儲模塊連接,用于檢測Target的負載是否超過預(yù)設(shè)的負載門限;中斷模塊,與所述檢測模塊和存儲模塊連接,用于當檢測到所述Target的負載超過預(yù)設(shè)的負載門限時,根據(jù)與所述Target連接的Initiator的資源狀態(tài)信息,選擇對應(yīng)的Initiator并中斷所述Target與所述對應(yīng)的Initiator的連接,同時調(diào)整該Target的負載信息其中,所述匹配模塊還用于當所述TargetAgent與Target的資源狀態(tài)信息傳輸中斷時,根據(jù)預(yù)先配置的Initiator與Target的對應(yīng)關(guān)系獲知與所述Target連接的Initiator,并為與所述Target連接的Initiator重新分配Target。本發(fā)明具有以下優(yōu)點通過TargetAgent動態(tài)獲取Target的資源狀態(tài)信息,并根據(jù)該資源狀態(tài)信息為Initiator分配匹配的Target,使Initiator與Target之間建立連接,從而實現(xiàn)了動態(tài)調(diào)整Target的負載,進行負載均衡。此外,還可以通過TargetAgent動態(tài)獲取Initiator的資源狀態(tài)信息,對不同的Initiator實現(xiàn)差異化服務(wù)。圖1為現(xiàn)有技術(shù)中iSCSI協(xié)議應(yīng)用場景示意圖;圖2為現(xiàn)有技術(shù)中存儲設(shè)備高負載運行或者不可用;圖3為現(xiàn)有技術(shù)中大規(guī)模城域或廣域視頻監(jiān)控應(yīng)用場景;圖4為本發(fā)明中的一種多存儲陣列負載均衡的方法流程圖;圖5為本發(fā)明中的一種多存儲陣列負載均衡的方法流程圖;圖6為本發(fā)明的TargetAgent為Initiator分配匹配的Target的過程的流程圖;圖7為本發(fā)明中的另一種多存儲陣列負載均衡的方法流程圖;圖8為本發(fā)明中的權(quán)值的計算方式;圖9為本發(fā)明中的TargetAgent為Initiator重新分配匹配的Target的過程的流程圖;圖10為本發(fā)明中的TargetAgent中斷Target與對應(yīng)的Initiator的連接的過程的流程圖;圖11為本發(fā)明中的一種TargetAgent的結(jié)構(gòu)示意圖。具體實施例方式本發(fā)明的核心思想是通過在IP存儲網(wǎng)絡(luò)中設(shè)置一TargetAgent(存儲設(shè)備代理設(shè)備),利用該TargetAgent動態(tài)獲取各存儲設(shè)備Target的資源狀態(tài)信息,并根據(jù)動態(tài)獲取的各存儲設(shè)備Target的資源狀態(tài)信息為IP存儲網(wǎng)絡(luò)中的客戶端Initiator分配匹配的存儲設(shè)備Target,使Initiator與Target之間建立連接。本發(fā)明提供一種多存儲陣列負載均衡的方法,應(yīng)用于進行通信的客戶端Initiator和存儲設(shè)備Target組成的存儲系統(tǒng)中,所述Initiator和Target之間通過存儲設(shè)備代理設(shè)備TargetAgent建立連接,如圖4所示,所述方法具體包括以下步驟步驟401、所述TargetAgent動態(tài)獲取Target的資源狀態(tài)信息。步驟402、當接收到所述Initiator的資源查詢請求時,所述TargetAgent根據(jù)所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target。步驟403、所述TargetAgent將所述匹配的Target的信息發(fā)送給所述Initiator,使所述Initiator與所述匹配的Target建立連接。為了更加清楚的說明本發(fā)明提供的技術(shù)方案,下面結(jié)合具體的應(yīng)用場景,對本發(fā)明提供的負載均衡的方法進行詳細介紹。本發(fā)明提供的負載均衡的方法,應(yīng)用于IP存儲網(wǎng)絡(luò)中,其中,該IP存儲網(wǎng)絡(luò)包括存儲設(shè)備代理設(shè)備TargetAgent、存儲設(shè)備Target以及客戶端Initiator,TargetAgent為客戶端Initiator分配存儲設(shè)備Target,以使Initiator建立與所分配的Target之間的連接。如圖5所示,本發(fā)明應(yīng)用場景提供的負載均衡的方法包括以下步驟步驟501、存儲設(shè)備Target存儲并維護自身的資源狀態(tài)信息。具體的,該資源狀態(tài)信息包括但不限于=Target的位置信息、負載信息和其他附加信息(例如,Target所在SAN資源的設(shè)備信息)。其中,該位置信息包括但不限于該Target的IP地址、端口和iSCSI節(jié)點名稱;該負載信息包括但不限于該Target的空閑容量、空閑iSCSI連接數(shù)和表示該Target讀寫情況(例如,可以為讀寫的繁忙程度,用于表示該Target的負載情況)的權(quán)值等。當然,該負載信息并不限于此,凡是基于Target負載情況的信息均屬于本發(fā)明的保護范圍。需要說明的是,上述表示該Target負載情況的權(quán)值的獲取方式包括但不限于根據(jù)權(quán)值信息計算該Target的權(quán)值,具體如公式(1)Target的權(quán)值=(-^^-+-)χΡχ100公式⑴&S+(PwxWt+VrxRt)S+(PwxWt+xxRt)AV通過公式(1)可以看出,該權(quán)值信息中至少包含以下信息(I)S:Target所在的實體設(shè)備(IP-SAN)的IOPS值(I/Opersecond,每秒讀寫操作次數(shù)),即該Target自身每秒能夠進行讀操作和寫操作的次數(shù),表示該Target的訪問能力,通常選取該IOPS值為100;當然,實際應(yīng)用中,也可以選擇其他數(shù)值作為該IOPS值;(2)P=Target自身的優(yōu)先級,由于多個Target可能在同一個實體設(shè)備上,當至少兩個Target需要進行讀或?qū)懖僮鲿r,對不同Target的操作請求按照各自的優(yōu)先級(P的取值,例如為18(該數(shù)值可以根據(jù)實際需要進行調(diào)整)級,數(shù)值越高,優(yōu)先級越高)進行處理;(3)Wt在單位時間內(nèi)的寫請求次數(shù),其中該單位時間可以根據(jù)實際需要而設(shè)置,該寫請求次數(shù)為該Target在單位時間內(nèi)實際接收的寫請求次數(shù)。(4)Rt在單位時間內(nèi)的讀請求次數(shù),其中該單位時間可以根據(jù)實際需要而設(shè)置,該讀請求次數(shù)為該Target在單位時間內(nèi)實際接收的讀請求次數(shù)。(5)Pw:寫請求優(yōu)先級;(6)Pr讀請求優(yōu)先級。其中,Wt和Rt均為該Target實際的負載情況,例如該Target在10秒內(nèi)接收了100次讀請求和200次寫請求;Pw和Pr用于當該Target同時接收到了讀請求和寫請求,Target根據(jù)讀寫請求的優(yōu)先級對接收的請求進行處理。需要說明的是,上述的公式(1)僅為根據(jù)權(quán)值信息獲取權(quán)值的一種優(yōu)選實施方式,具體計算形式不影響本發(fā)明的保護范圍,而且在實際應(yīng)用中,權(quán)值信息中的信息也并不局限于上述信息,還可以為其他的信息,即公式(1)中計算權(quán)值的過程可以根據(jù)不同的信息變化進行相應(yīng)的調(diào)整,凡是根據(jù)權(quán)值信息獲取權(quán)值的方式均屬于本發(fā)明的保護范圍,本發(fā)明中不再詳加贅述。需要注意的是,上述根據(jù)權(quán)值信息計算該Target的權(quán)值的過程中,可以是Target自身根據(jù)權(quán)值信息獲取權(quán)值,也可以由Target將權(quán)值信息發(fā)送給TargetAgent,由TargetAgent根據(jù)權(quán)值信息獲取權(quán)值,且TargetAgent無需將所獲取的權(quán)值發(fā)送給對應(yīng)的Target。步驟502、Target向TargetAgent發(fā)送自身的資源狀態(tài)信息。具體的,Target至少可以通過以下方式中的任意一種方式向TargetAgent發(fā)送自身的資源狀態(tài)信息(I)Target根據(jù)預(yù)設(shè)的周期向TargetAgent上報資源狀態(tài)信息。其中,該Target可以通過專用消息或者非專用消息(例如,Target向TargetAgent發(fā)送的資源注冊消息)攜帶該資源狀態(tài)信息向TargetAgent發(fā)送。(2)Target經(jīng)觸發(fā)向TargetAgent上報資源狀態(tài)信息,該觸發(fā)事件可以為Target檢測到自身資源狀態(tài)信息發(fā)生變化、或者Target接收到資源狀態(tài)信息查詢請求等,觸發(fā)事件的具體表現(xiàn)形式不應(yīng)視為對本發(fā)明保護范圍的限制。通過上述兩種方式上報的資源狀態(tài)信息中所包括的具體信息可以由TargetAgent指定,或由TargetAgent與Target協(xié)商而定,可以上報所有資源狀態(tài)信息;或者上報發(fā)生改變的資源狀態(tài)信息以及必要的資源狀態(tài)信息(例如IP地址、端口和節(jié)點名稱等位置信息);或者上報發(fā)生改變的資源狀態(tài)信息以及必要的資源狀態(tài)信息,并將未發(fā)生改變的資源狀態(tài)信息設(shè)置成預(yù)設(shè)標識。對于其他的攜帶方式,本發(fā)明中不再詳加贅述。本發(fā)明中,以在資源注冊消息中攜帶所有資源狀態(tài)信息為例進行說明。此時,該資源注冊消息的格式如表1所示表1、資源注冊消息<table>tableseeoriginaldocumentpage9</column></row><table>在表1中,Register(注冊)為消息關(guān)鍵字,表示該消息的類型。IP地址、端口以及iSCSI節(jié)點名稱為Target的位置信息。權(quán)值為Target的負載信息,例如該Target權(quán)值為102。設(shè)備信息為Target的附加信息,表示該Target所在SAN資源的設(shè)備信息。需要說明的是,表1所示的資源注冊消息僅為一種優(yōu)選的實施方式,任何形式上的改變不影響本發(fā)明的保護范圍,凡是能夠承載資源注冊消息的形式均屬于本發(fā)明的保護范圍。步驟503、TargetAgent維護各個Target的資源狀態(tài)信息。具體地,當TargetAgent獲取到資源狀態(tài)信息后,將資源狀態(tài)信息更新到本地配置的Target資源狀態(tài)列表。Target資源狀態(tài)列表用于存儲各個Target的資源狀態(tài)信息,一個Target對應(yīng)一條存儲條目,具體格式如表2所示。其中,表2所示的Target資源狀態(tài)列表僅是本發(fā)明一種優(yōu)選的實施方式,凡是能夠?qū)崿F(xiàn)資源狀態(tài)信息維護功能的方式均屬于本發(fā)明的保護范圍,如任何形式上的改變(將列表更改為對應(yīng)關(guān)系等)或資源狀態(tài)信息的改變(資源狀態(tài)信息的個數(shù)改變,格式改變等)等。表2、Target資源狀態(tài)列表<table>tableseeoriginaldocumentpage10</column></row><table>優(yōu)選地,Target資源狀態(tài)列表中每一個Target的存儲條目可以按照條目中的某一信息(例如,權(quán)值的高低)或多個信息(例如權(quán)值的高低和空閑容量的大小)排列存儲。當然,也可以按照其他順排列存儲,此處不再贅述。為了更加清楚的說明本步驟中TargetAgent維護從Target獲取的資源狀態(tài)信息的過程,下面對該過程進行進一步介紹,該過程包括以下步驟(1)、TargetAgent從資源狀態(tài)信息中提取Target的iSCSI節(jié)點名稱。(2),TargetAgent從本地維護的Target資源狀態(tài)列表中查詢是否存在該“iSCSI節(jié)點名稱”。如果未查詢到該“iSCSI節(jié)點名稱”,轉(zhuǎn)到步驟(3)。如果查詢到該“iSCSI節(jié)點名稱”,轉(zhuǎn)到步驟(4)。(3)>TargetAgent在Target資源狀態(tài)列表中添加與該“iSCSI節(jié)點名稱”對應(yīng)的存儲條目。(4)、TargetAgent根據(jù)所接收的資源狀態(tài)信息更新Target資源狀態(tài)列表。需要注意的是,在上述過程中,TargetAgent能夠維護各個Target的資源狀態(tài)信息,而當TargetAgent需要根據(jù)各個Target的資源狀態(tài)信息為Initiator分配匹配的Target時,該方法還可以包括以下步驟步驟504、Initiator向TargetAgent發(fā)送資源查詢請求。具體的,當Initiator需要與Target建立iSCSI連接時,Initiator需要向TargetAgent發(fā)送資源查詢請求,以獲取匹配的Target。其中,資源查詢請求的格式如表3所示。表3、資源查詢請求<table>tableseeoriginaldocumentpage11</column></row><table>其中,Query表示該消息的消息關(guān)鍵字,表示該消息為資源查詢消息;IP地址、端口和iSCSI節(jié)點名稱為Initiator的位置信息。需要說明的是,上述資源查詢請求消息中攜帶的信息只是一種優(yōu)選的實施方式,凡是可以實現(xiàn)對TargetAgent資源查詢功能的方式均屬于本發(fā)明的保護范圍,例如資源查詢請求消息中還攜帶Initiator自身的資源狀態(tài)信息(Initiator的權(quán)值),或Initiator對所分配的匹配的Target的要求,例如Initiator對所分配的匹配的Target的空閑iSCSI連接數(shù)的要求。步驟505、TargetAgent根據(jù)各個Target的資源狀態(tài)信息為Initiator分配匹配的Target。為了清楚的闡述本步驟,以圖6所示的TargetAgent為Initiator分配匹配的Target的過程為例進行進一步的說明,具體包括以下步驟步驟5051、TargetAgent獲取分配準則。其中,該分配準則可以由TargetAgent設(shè)置,或者,TargetAgent與Initiator和/或Target約定。具體地,分配準則可以根據(jù)負載均衡的目的從Target資源狀態(tài)列表中的資源狀態(tài)信息中提取,例如如果負載均衡的目的為平衡各個Target的繁忙程度,則根據(jù)資源狀態(tài)信息中的權(quán)值提取出權(quán)值最低準則,即從Target資源狀態(tài)列表中選擇權(quán)值最低的Target分配給Initiator。當然,凡是根據(jù)負載均衡的目的所提取的分配準則均屬于本發(fā)明的保護范圍,例如空閑容量最大準則和空閑iSCSI連接數(shù)最大準則等。需要說明的是,各種分配準則可以獨立使用,也可以配合使用。此外,對于不同的Initiator,TargetAgent可使用相同的分配準則,也可使用不同的分配準則,且分配準則可事先約定,或在資源查詢請求中攜帶。本發(fā)明中以分配準則為權(quán)值最低準則為例進行說明。步驟5052、TargetAgent根據(jù)分配準則,查詢Target資源狀態(tài)列表,獲取匹配的Target的信息。具體地,TargetAgent查詢Target資源狀態(tài)列表中各個Target的權(quán)值信息,從Target資源狀態(tài)列表中選擇權(quán)值最低的Target作為匹配的Target,并獲取該匹配的Target的信息。其中,Target的信息為該Target的位置信息,包括=Target的IP地址,端口和iSCSI節(jié)點名稱,以使Initiator根據(jù)該信息與匹配的Target建立連接。優(yōu)選地,將分配準則與Target資源狀態(tài)列表中Target的存儲條目的排列順序相結(jié)合,以便在分配時快速選擇到匹配的Target。例如當分配準則為權(quán)值最低準則時,TargetAgent按照Target的權(quán)值由低到高的順序?qū)arget資源狀態(tài)列表中Target的存儲條目進行排列與存儲,此時權(quán)值最低的Target對應(yīng)的存儲條目為Target資源狀態(tài)列表中的第一條存儲條目。當TargetAgent為Initiator分配匹配的Target時,可直接讀取第一條存儲條目對應(yīng)Target,該Target即為匹配的Target。當然,也可以按照權(quán)值由高到低的順序?qū)Υ鎯l目進行排列與存儲。進一步地,TargetAgent為Target設(shè)置權(quán)值門限。TargetAgent從Target資源狀態(tài)列表中選擇匹配的Target時,判斷Target的權(quán)值是否高于預(yù)設(shè)的權(quán)值門限;當Target的權(quán)值高于權(quán)值門限時,表示該Target的負載已經(jīng)達到門限,繼續(xù)為該Target添加負載,會使該Target的性能下降,此時TargetAgent不再為該Target分配Initiator,直到該Target的權(quán)值低于權(quán)值門限。TargetAgent通過對Target設(shè)置權(quán)值門限,以均衡各個Target的負載,提高系統(tǒng)整體性能。該方法同樣適用于其他分配準則。需要說明的是,TargetAgent為Initiator所分配匹配的Target可以為一個,也可以為多個,以供Initiator選擇。步驟5053、TargetAgent向Initiator發(fā)送資源查詢響應(yīng),該資源查詢響應(yīng)中攜帶所分配的匹配的Target的信息,即該Target的位置信息。其中,資源查詢響應(yīng)的格式如表4所示。表4、資源查詢響應(yīng)_ResourceQuery消息1__Query_—2_IP地址一3端口~iSCSI節(jié)點名稱表4所示的資源查詢響應(yīng)的信息格式與表3所示的資源查詢請求的格式類似,其中Query表示該消息的消息關(guān)鍵字(當然,也可有別于資源查詢請求的關(guān)鍵字而設(shè)置為"Query0K”等),IP地址、端口和iSCSI節(jié)點名稱為該匹配的Target的位置信息。步驟506、Initiator獲取由TargetAgent分配的匹配的Target的信息。步驟507、Initiator與該Target的信息所對應(yīng)的Target建立iSCSI連接。具體地,Initiator根據(jù)Target的信息,與該Target的信息所對應(yīng)的Target發(fā)送iSCSI連接請求。Target接收Initiator的iSCSI連接請求,與Initiator建立iSCSI連接,并向Initiator發(fā)送iSCSI連接響應(yīng)。需要說明的是,當Target與新的Initiator建立iSCSI連接時,Target的資源狀態(tài)信息會發(fā)生改變,而由于Target通過資源注冊消息周期性地向TargetAgent上報資源狀態(tài)信息,因此TargetAgent將根據(jù)該連接更新Target資源狀態(tài)列表,并當Target資源狀態(tài)列表為按順序排列存儲時,根據(jù)更新后的資源狀態(tài)信息進行隊列調(diào)整。需要說明的是,通過使用上述的處理過程,即可以實現(xiàn)Initiator與所分配的匹配的Target的連接,但是,在實際應(yīng)用中,如果當Initiator和與該Initiator建立iSCSI連接的Target的連接中斷(例如Initiator與Target的iSCSI連接故障)時,Initiator則重新向TargetAgent發(fā)送資源查詢請求,使TargetAgent根據(jù)Target的資源狀態(tài)列表重新為該Initiator分配匹配的Target(例如Target_b),從而該Initiator與Target-b建立連接,其中具體過程與步驟504步驟507類似,均為資源查詢、資源分配和iSCSI連接建立的流程,此處不再贅述。需要注意的是,上述的處理過程是針對TargetAgent僅維護Target側(cè)的資源狀態(tài)信息的情況,而在實際應(yīng)用中,TargetAgent還可以同時維護Initiator側(cè)的資源狀態(tài)信息和Target側(cè)的資源狀態(tài)信息,該TargetAgent獲取并維護Initiator的資源狀態(tài)信息的方式與上述獲取并維護Target的資源狀態(tài)信息相似,此處不再詳加贅述。似,此處不再詳加贅述。本發(fā)明還提供一種多存儲陣列負載均衡的方法,應(yīng)用于Initiator與Target建立連接之后,如圖7所示,該方法包括以下步驟步驟701、TargetAgent建立并維護Initiator與Target的對應(yīng)關(guān)系。具體的,TargetAgent根據(jù)為各個Initiator所分配的Target獲取Initiator與Target的對應(yīng)關(guān)系,并以排序表的形式存儲和維護,該排序表與Target資源狀態(tài)列表和Initiator資源狀態(tài)列表關(guān)聯(lián),該排序表中攜帶的內(nèi)容如表5所示。需要說明的是,排序表僅為本發(fā)明一種優(yōu)選的排序方式,凡是實現(xiàn)維護Target和Initiator的對應(yīng)關(guān)系的方式均屬于本發(fā)明的保護范圍。表5、排序表<table>tableseeoriginaldocumentpage14</column></row><table>由于在實際應(yīng)用中,多個Target可能會有相同的IP地址,該TargetAgent可以將具有相同IP地址的多個Target作為TargetHost,并可以使用該TargetHost為Initiator分配Target。如圖8所示,此時,各個具有相同IP地址的Target將作為該TargetHost的下屬子節(jié)點,且每一個Target與和自身建立連接的Initiator關(guān)聯(lián)。在這種情況下,該TargetHost的權(quán)值為上述各個具有相同IP地址的各個Target的權(quán)值的總和;而各個Target的權(quán)值通過上述步驟502獲取,所以能夠得到各個Target的權(quán)值以及TargetHost的權(quán)值??梢钥闯觯诒?中,TargetIP地址即用于標識TargetHost,相同IP地址Target的權(quán)值和即可以表示TargetHost的權(quán)值,對于表5中的其他字段,在此不再詳加贅述。步驟702、TargetAgent與具有建立連接的Initiator的Target的資源狀態(tài)信息傳輸中斷時,TargetAgent根據(jù)Initiator與Target的對應(yīng)關(guān)系獲知與該Target具體地,為了更加清楚地說明本步驟,如圖9所示,該過程進一步包括以下步驟步驟7021、Target-a與TargetAgent之間的資源狀態(tài)信息傳輸中斷。Target與TargetAgent之間的資源狀態(tài)信息傳輸方式為(1)Target向TargetAgent周期性上報資源狀態(tài)信息,或(2)Target經(jīng)觸發(fā)向TargetAgent上報資源狀態(tài)fe息。若采用第一種方式,則TargetAgent在上報時間到來時未接收到Target-a的上報時,判斷與Target-a的資源狀態(tài)信息傳輸中斷;若采用第二種方式,則TargetAgent在預(yù)設(shè)的時間段(該預(yù)設(shè)的時間段由TargetAgent根據(jù)經(jīng)驗值,或需求配置)內(nèi)未收到Target-a的上報;或TargetAgent向Target主動發(fā)起資源狀態(tài)信息查詢但未收到響應(yīng)時,判斷與Target-a的資源狀態(tài)信息傳輸中斷。需要說明的是,此時Initiator與Target-a的iSCSI連接可能發(fā)生故障,也可能未發(fā)生故障,但并不影響本發(fā)明方案的實施。步驟7022、TargetAgent通過Initiator與Target的對應(yīng)關(guān)系判斷是否存在已與Target-a建立iSCSI連接的Initiator。具體地,TargetAgent通過查詢?nèi)绫?所示的排序表,判斷是否存在已與Target-a建立iSCSI連接的Initiator當判斷存在已與Target-a建立iSCSI連接的Initiator時,轉(zhuǎn)到步驟7024;當判斷不存在已與Target-a建立iSCSI連接的Initiator時,結(jié)束該流程。步驟7023、TargetAgent獲取已與Target-a建立iSCSI連接的Initiator(例如Initiator-a)。步驟7024、TargetAgent為已與Target-a建立iSCSI連接的Initiator重新分配Target,使Initiator-a與新分配的匹配的Target建立iSCSI連接。為了更加清楚地說明本步驟,下面將對本步驟中TargetAgent為Initiator-a重新分配Target,使Initiator-a與新分配的匹配的Target建立iSCSI連接的過程進行進一步介紹,該過程包括以下步驟(1)、TargetAgent根據(jù)Target資源狀態(tài)列表為Initiator-a分配新的匹配的Target(例如,Target-b)。需要說明的是,TargetAgent也可以根據(jù)排序表進行分配,其原理類似,此處不再贅述。(2),TargetAgent向Initiator-a發(fā)送資源重定向請求,該資源重定向請求中攜帶Target-b的信息。(3)、Initiator-a與Target-b建立iSCSI連接。(4)、Initiator-a向TargetAgent返回資源重定向響應(yīng)。當與TargetAgent發(fā)生資源狀態(tài)信息傳輸中斷的Target-a再次向TargetAgent發(fā)起資源注冊請求時,如果TargetAgent已將Target-a從Target資源狀態(tài)列表中刪除,則Target-a將作為新的資源重新進行注冊;如果TargetAgent僅將Target-a的狀態(tài)標識置為不可用,則修改其狀態(tài)標識為可用,并初始化其權(quán)值,即設(shè)置其權(quán)值為0。需要說明的是,當Target主動下線時,可以預(yù)先向TargetAgent發(fā)送反注冊消息,使TargetAgent為與該Target連接的Initiator重新分配其他在線的Target。步驟703、TargetAgent通過Target資源狀態(tài)列表檢測到Target的負載超過預(yù)設(shè)的負載門限時,TargetAgent根據(jù)與該Target連接的Initiator的資源狀態(tài)信息,選擇對應(yīng)的Initiator并中斷該Target與對應(yīng)的Initiator的連接。為了更加清楚地說明本步驟,如圖10所示,該過程進一步包括以下步驟步驟7031、TargetAgent檢測Target資源狀態(tài)信息中的負載信息是否超過預(yù)設(shè)的負載門限。其中,負載超過預(yù)設(shè)的負載門限包括Target的權(quán)值高于預(yù)設(shè)的權(quán)值門限,或Target的空閑容量低于預(yù)設(shè)的空閑容量門限等,凡是表征Target負載狀態(tài)的信息均屬于本發(fā)明的保護范圍。具體地,當檢測到任意一個Target(例如Target-a)的負載超過預(yù)設(shè)的負載門限時,轉(zhuǎn)到步驟7032。步驟7032、TargetAgent獲取與Target—a連接的Initiator(例如Initiator_a禾口Initiator-b)。具體地,TargetAgent通過查詢排序表中Target與Initiator的對應(yīng)關(guān)系,獲取與Target-aInitiator-a禾口Initiator_b0步驟7033、TargetAgent查詢Initiator資源狀態(tài)列表,選擇對應(yīng)的Initiator(例如Initiator-a)并中斷Target與該對應(yīng)的Initiator的iSCSI連接。Initiator的資源狀態(tài)信息與Target的資源狀態(tài)信息類似,包含有Initiator自身的優(yōu)先級信息。具體地,本步驟中選擇對應(yīng)的Initiator可以為選擇與該Target建立iSCSI連接的Initiator中優(yōu)先級最低的Initiator,或優(yōu)先級低于優(yōu)先級門限的Initiator(此時,存在優(yōu)先級高于優(yōu)先級門限的Initiator),并中斷對應(yīng)的Initiator與該Target的iSCSI連接,其中中斷方式包括但不限于以下兩種方式中的任意一種(1)TargetAgent通知對應(yīng)的Initiator中斷與Target的連接,并丟棄該Initiator。(2)TargetAgent為對應(yīng)的Initiator重新分配Target,并通過資源重定向請求發(fā)送給該Initiator,使該Initiator與重新分配的Target建立連接。需要說明的是,本發(fā)明中按照優(yōu)先級選擇對應(yīng)的Initiator僅為一種優(yōu)選的實施方式,凡是根據(jù)負載均衡的需求選擇對應(yīng)的Initiator的方式均屬于本發(fā)明的保護范圍。通過上述負載均衡的方法,以確保優(yōu)先級高的Initiator的數(shù)據(jù)傳輸,從而實現(xiàn)對不同的Initiator的差異化服務(wù)。需要說明的是,上述步驟702和步驟703無先后順序。本發(fā)明提供一種存儲設(shè)備代理設(shè)備TargetAgent,應(yīng)用于包括客戶端Initiator和存儲設(shè)備Target組成的存儲系統(tǒng)中,所述Initiator和Target之間通過所述TargetAgent建立連接,如圖11所示,所述TargetAgent1100包括收發(fā)模塊1110,用于獲取Target上報的資源狀態(tài)信息,并接收所述Initiator的資源查詢請求,將與所述Initiator匹配的Target的信息發(fā)送給所述Initiator。具體地,收發(fā)模塊1110獲取所述Target周期上報的資源狀態(tài)信息;或獲取所述Target檢測到自身資源狀態(tài)信息發(fā)生變化后主動上報的資源狀態(tài)信息。收發(fā)模塊1110還可以動態(tài)獲取Initiator的資源狀態(tài)信息。存儲模塊1120,與收發(fā)模塊1110連接,用于存儲收發(fā)模塊1110獲取的Target的資源狀態(tài)信息。具體地,存儲模塊1120將所述Target的資源狀態(tài)信息存儲到配置的Target資源狀態(tài)列表,所述Target的資源狀態(tài)信息具體為Target的位置信息、負載信息和其他附加信息,其中所述負載信息具體包括權(quán)值和/或空閑容量和/或空閑iSCSI連接數(shù)。匹配模塊1130,與收發(fā)模塊1110和存儲模塊1120連接,用于根據(jù)所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target。具體地,匹配模塊1130查詢所述Target資源狀態(tài)列表,根據(jù)所述Target資源狀態(tài)列表中所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target。當所述TargetAgent與Target的資源狀態(tài)信息傳輸中斷時,匹配模塊1130還可以根據(jù)預(yù)先配置的Initiator與Target的對應(yīng)關(guān)系獲知與所述Target連接的Initiator,并為與所述Target連接的Initiator重新分配Target,同時調(diào)整該Target的負載信息。檢測模塊1140,與存儲模塊1120連接,用于檢測Target的負載是否超過預(yù)設(shè)的負載門限。中斷模塊1150,與檢測模塊1140和存儲模塊1120連接,用于當檢測到所述Target的負載超過預(yù)設(shè)的負載門限時,根據(jù)與所述Target連接的Initiator的資源狀態(tài)信息,選擇對應(yīng)的Initiator并中斷所述Target與所述對應(yīng)的Initiator的連接。本發(fā)明具有以下優(yōu)點通過TargetAgent動態(tài)獲取Target的資源狀態(tài)信息,并根據(jù)該資源狀態(tài)信息為Initiator分配匹配的Target,使Initiator與Target之間建立連接,從而實現(xiàn)了動態(tài)調(diào)整Target的負載,進行負載均衡。此外,還可以通過TargetAgent動態(tài)獲取Initiator的資源狀態(tài)信息,對不同的Initiator實現(xiàn)差異化服務(wù)。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視本發(fā)明的保護范圍。權(quán)利要求一種多存儲陣列負載均衡的方法,應(yīng)用于進行通信的客戶端Initiator和存儲設(shè)備Target組成的存儲系統(tǒng)中,其特征在于,所述Initiator和Target之間通過存儲設(shè)備代理設(shè)備TargetAgent建立連接,所述方法包括以下步驟所述TargetAgent動態(tài)獲取Target的資源狀態(tài)信息;當接收到所述Initiator的資源查詢請求時,所述TargetAgent根據(jù)所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target;所述TargetAgent將所述匹配的Target的信息發(fā)送給所述Initiator,使所述Initiator與所述匹配的Target建立連接。2.如權(quán)利要求1所述的方法,其特征在于,所述TargetAgent動態(tài)獲取Target的資源狀態(tài)信息包括所述TargetAgent獲取所述Target周期上報的資源狀態(tài)信息;或所述TargetAgent獲取所述Target檢測到自身資源狀態(tài)信息發(fā)生變化后主動上報的資源狀態(tài)信息。3.如權(quán)利要求1所述的方法,其特征在于,所述TargetAgent根據(jù)所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target包括所述TargetAgent將所述Target的資源狀態(tài)信息存儲到配置的Target資源狀態(tài)列表;所述TargetAgent查詢所述Target資源狀態(tài)列表,根據(jù)所述Target資源狀態(tài)列表中Target的資源狀態(tài)信息為所述Initiator分配匹配的Target,所述資源狀態(tài)信息具體為Target的位置信息、負載信息和其他附加信息,其中所述負載信息包括權(quán)值和/或空閑容量和/或空閑iSCSI連接數(shù)。4.如權(quán)利要求1-3中任一項所述的方法,其特征在于,還包括所述TargetAgent動態(tài)獲取Initiator的資源狀態(tài)信息。5.如權(quán)利要求4中所述的方法,其特征在于,還包括所述TargetAgent檢測Target的資源狀態(tài)信息;當檢測到所述Target的負載超過預(yù)設(shè)的負載門限時,所述TargetAgent根據(jù)與所述Target連接的Initiator的資源狀態(tài)信息,選擇對應(yīng)的Initiator并中斷所述Target與所述對應(yīng)的Initiator的連接,同時調(diào)整該Target的負載信息;和/或當所述TargetAgent與Target的資源狀態(tài)信息傳輸中斷時,所述TargetAgent根據(jù)預(yù)先配置的Initiator與Target的對應(yīng)關(guān)系獲知與所述Target連接的Initiator,并為與所述Target連接的Initiator重新分配Target。6.一種存儲設(shè)備代理設(shè)備TargetAgent,應(yīng)用于包括客戶端Initiator和存儲設(shè)備Target組成的存儲系統(tǒng)中,其特征在于,所述Initiator和Target之間通過所述TargetAgent建立連接,所述TargetAgent包括收發(fā)模塊,用于獲取Target上報的資源狀態(tài)信息,并接收所述Initiator的資源查詢請求,將與所述Initiator匹配的Target的信息發(fā)送給所述Initiator;存儲模塊,與所述收發(fā)模塊連接,用于存儲所述收發(fā)模塊獲取的Target的資源狀態(tài)信息;匹配模塊,與所述收發(fā)模塊和存儲模塊連接,用于根據(jù)所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target。7.如權(quán)利要求6所述的TargetAgent,其特征在于,所述收發(fā)模塊具體用于獲取所述Target周期上報的資源狀態(tài)信息;或獲取所述Target檢測到自身資源狀態(tài)信息發(fā)生變化后主動上報的資源狀態(tài)信息。8.如權(quán)利要求6所述的TargetAgent,其特征在于,所述存儲模塊具體用于將所述Target的資源狀態(tài)信息存儲到配置的Target資源狀態(tài)列表,所述Target的資源狀態(tài)信息具體為Target的位置信息、負載信息和其他附加信息,其中所述負載信息具體包括權(quán)值和/或空閑容量和/或空閑iSCSI連接數(shù);所述匹配模塊具體用于查詢所述Target資源狀態(tài)列表,根據(jù)所述Target資源狀態(tài)列表中所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target。9.如權(quán)利要求6-8中任一項所述的TargetAgent,其特征在于,所述收發(fā)模塊還用于動態(tài)獲取Initiator的資源狀態(tài)信息。10.如權(quán)利要求9中所述的TargetAgent,其特征在于,還包括檢測模塊,與所述存儲模塊連接,用于檢測Target的負載是否超過預(yù)設(shè)的負載門限;中斷模塊,與所述檢測模塊和存儲模塊連接,用于當檢測到所述Target的負載超過預(yù)設(shè)的負載門限時,根據(jù)與所述Target連接的Initiator的資源狀態(tài)信息,選擇對應(yīng)的Initiator并中斷所述Target與所述對應(yīng)的Initiator的連接,同時調(diào)整該Target的負載fn息ο11.如權(quán)利要求9所述的TargetAgent,其特征在于,所述匹配模塊還用于當所述TargetAgent與Target的資源狀態(tài)信息傳輸中斷時,根據(jù)預(yù)先配置的Initiator與Target的對應(yīng)關(guān)系獲知與所述Target連接的Initiator,并為與所述Target連接的Initiator重新分配Target。全文摘要本發(fā)明公開了一種多存儲陣列負載均衡的方法和設(shè)備,應(yīng)用于進行通信的客戶端Initiator和存儲設(shè)備Target組成的存儲系統(tǒng)中,所述Initiator和Target之間通過存儲設(shè)備代理設(shè)備TargetAgent建立連接,所述方法包括以下步驟所述TargetAgent動態(tài)獲取Target的資源狀態(tài)信息;當接收到所述Initiator的資源查詢請求時,所述TargetAgent根據(jù)所述Target的資源狀態(tài)信息為所述Initiator分配匹配的Target;所述TargetAgent將所述匹配的Target的信息發(fā)送給所述Initiator,使所述Initiator與所述匹配的Target建立連接。通過本發(fā)明,實現(xiàn)了動態(tài)調(diào)整Target的負載,進行負載均衡。文檔編號H04L29/08GK101808119SQ20101011762公開日2010年8月18日申請日期2010年3月4日優(yōu)先權(quán)日2010年3月4日發(fā)明者李飛申請人:杭州華三通信技術(shù)有限公司