本發(fā)明涉及存儲管理領(lǐng)域,特別涉及一種訪問異步邏輯單元的方法及系統(tǒng)。
背景技術(shù):
存儲設(shè)備是一種承載大量數(shù)據(jù)的設(shè)備,因此會有大量的用戶對存儲設(shè)備進(jìn)行訪問。在一些對存儲數(shù)據(jù)依賴性很高的行業(yè)中,一旦存儲設(shè)備出現(xiàn)故障,會帶來巨大的影響。為了解決該問題,通常來講,很多存儲設(shè)備的各種組件都做了冗余的考慮,可以消除控制器的單點(diǎn)故障。當(dāng)控制器出現(xiàn)冗余后,選擇哪一個控制器、使用哪一條路徑涉及到了如何制定前端控制器多路徑策略。
在現(xiàn)有技術(shù)中,有aa,ap和alua三種前端控制器策略。其中,aa(symmetricactive/active)對稱active模式,所有控制器都處于活動狀態(tài),并能同時訪問存儲邏輯單元。ap(active/passive)模式,只有一個控制器處于active狀態(tài),其他控制器處于passive狀態(tài)。但是,上述兩種方法中aa模式實現(xiàn)較為困難,只有極少存儲廠商實現(xiàn)aa模式控制;ap模式不能夠最大限度地發(fā)揮硬件設(shè)備的效能,都不是制定前端控制器多路徑策略的可選方式。alua(asymmetricactive/active)模式,所有控制器都處于活動狀態(tài),只有一個控制器能對目標(biāo)邏輯單元進(jìn)行訪問,alua是目前比較主流的前端控制策略,但是通過alua進(jìn)行邏輯單元訪問的具體實現(xiàn)方式也不盡相同。
因此,如何可以制定一種前端控制器多路徑策略可以在訪問邏輯單元時最大限度地發(fā)揮硬件設(shè)備的效能,是本領(lǐng)域技術(shù)人員目前需要解決的技術(shù)問題。
技術(shù)實現(xiàn)要素:
本申請的目的是提供一種訪問異步邏輯單元的方法及系統(tǒng),可以制定一種前端控制器多路徑策略可以在訪問邏輯單元時最大限度地發(fā)揮硬件設(shè)備的效能。
為解決上述技術(shù)問題,本申請?zhí)峁┮环N訪問異步邏輯單元的方法及系統(tǒng),該方法包括:
客戶端向存儲端查詢訪問所述邏輯單元的io路徑的路徑信息;其中,所述路徑信息包括所述io路徑的優(yōu)先級信息;
根據(jù)所述優(yōu)先級信息,將優(yōu)先級最高的所述io路徑設(shè)置為優(yōu)先路徑;
通過所述優(yōu)先路徑發(fā)送io數(shù)據(jù);
監(jiān)控所述io數(shù)據(jù)的發(fā)送狀況,并根據(jù)所述發(fā)送狀況對所述優(yōu)先路徑進(jìn)行修正。
可選的,所述監(jiān)控io數(shù)據(jù)的發(fā)送狀況,并根據(jù)所述發(fā)送狀況對所述優(yōu)先路徑進(jìn)行修正包括:
按預(yù)定周期監(jiān)控所述io數(shù)據(jù)的發(fā)送狀況,獲得狀況信息;
根據(jù)所述狀況信息,判斷所述優(yōu)先路徑的io性能是否變差;
如果是,則更新所述路徑信息,并在可用的所述io路徑中重新選擇一條所述優(yōu)先級最高的所述io路徑作為新的優(yōu)先路徑。
可選的,在可用的所述io路徑中重新選擇一條所述優(yōu)先級最高的所述io路徑作為新的優(yōu)先路徑包括:
刪除io性能變差的優(yōu)先路徑;
根據(jù)更新后的所述路徑信息,在所述io路徑中選擇一條優(yōu)先級最高的所述io路徑作為新的優(yōu)先路徑;
判斷存儲端反饋切換是否成功;
如果否,則按照優(yōu)先級從高到低的順序依次選擇其他所述io路徑作為新的優(yōu)先路徑,直至反饋切換成功。
可選的,所述方法還包括:
將所述優(yōu)先路徑存儲至優(yōu)先路徑鏈表或優(yōu)先路徑搜索樹中。
本申請還提供了一種訪問異步邏輯單元的系統(tǒng),所述系統(tǒng)包括:
查詢模塊,用于客戶端向存儲端查詢訪問所述邏輯單元的io路徑的路徑信息;其中,所述路徑信息包括所述io路徑的優(yōu)先級信息;
路徑選擇模塊,用于根據(jù)所述優(yōu)先級信息,將優(yōu)先級最高的所述io路徑設(shè)置為優(yōu)先路徑;
io處理模塊,用于通過所述優(yōu)先路徑發(fā)送io數(shù)據(jù);
監(jiān)控模塊,用于監(jiān)控所述io數(shù)據(jù)的發(fā)送狀況,并根據(jù)所述發(fā)送狀況對所述優(yōu)先路徑進(jìn)行修正。
可選的,所述監(jiān)控模塊包括:
監(jiān)控單元,用于按預(yù)定周期監(jiān)控所述io數(shù)據(jù)的發(fā)送狀況,獲得狀況信息;
判斷單元,用于根據(jù)所述狀況信息,判斷所述優(yōu)先路徑的io性能是否變差;
修正單元,用于當(dāng)所述優(yōu)先路徑的io性能變差,更新所述路徑信息,并在可用的所述io路徑中重新選擇一條所述優(yōu)先級最高的所述io路徑作為新的優(yōu)先路徑。
可選的,所述修正單元包括:
刪除子單元,用于刪除出現(xiàn)io性能變差的優(yōu)先路徑;
路徑重選子單元,用于根據(jù)更新后的所述路徑信息,在所述io路徑中選擇一條優(yōu)先級最高的所述io路徑作為新的優(yōu)先路徑;
切換判斷子單元,用于判斷存儲端反饋切換是否成功;
路徑再選子單元,用于當(dāng)存儲端反饋切換失敗,按照優(yōu)先級從高到低的順序依次選擇其他所述io路徑作為新的優(yōu)先路徑,直至反饋切換成功。
可選的,所述系統(tǒng)還包括:
優(yōu)先路徑存儲單元,用于將所述優(yōu)先路徑存儲至優(yōu)先路徑鏈表或優(yōu)先路徑搜索樹中。
本發(fā)明提供了一種訪問異步邏輯單元的方法,客戶端向存儲端查詢訪問所述邏輯單元的io路徑的路徑信息;其中,所述路徑信息包括所述io路徑的優(yōu)先級信息;根據(jù)所述優(yōu)先級信息,將優(yōu)先級最高的所述io路徑設(shè)置為優(yōu)先路徑;通過所述優(yōu)先路徑發(fā)送io數(shù)據(jù);監(jiān)控所述io數(shù)據(jù)的發(fā)送狀況,并根據(jù)所述發(fā)送狀況對所述優(yōu)先路徑進(jìn)行修正。
本方法對所有能夠訪問目標(biāo)邏輯單元的io路徑的路徑信息都進(jìn)行了查詢,由于每條路徑的優(yōu)先級不同,優(yōu)先級越高訪問邏輯單元的io路徑也就越優(yōu)化,其中通過主控訪問邏輯單元的io路徑的優(yōu)先級最高。對所有路徑的優(yōu)先級進(jìn)行排序?qū)?yōu)先級最高的io路徑設(shè)置為優(yōu)先路徑,也就是說將通過主控訪問邏輯單元的路徑設(shè)置為優(yōu)先路徑。通過優(yōu)先路徑實現(xiàn)對邏輯單元的訪問,可以最大限度地發(fā)揮硬件設(shè)備的效能。由于每一條io路徑的訪問狀況都不是一成不變的,優(yōu)先路徑的發(fā)送狀況可能會變得十分惡劣,本方法中對優(yōu)先路徑的發(fā)送狀況進(jìn)行監(jiān)控,如果優(yōu)先路徑出現(xiàn)問題,則對優(yōu)先路徑進(jìn)行修正,保證優(yōu)先路徑的優(yōu)先級是各路徑中最高的,以實現(xiàn)在訪問過程中,一直保持最大限度地發(fā)揮硬件設(shè)備效能,實現(xiàn)io性能的優(yōu)化。本申請同時還提供了一種訪問異步邏輯單元的系統(tǒng),具有上述有益效果,在此不再贅述。
附圖說明
為了更清楚地說明本申請實施例,下面將對實施例中所需要使用的附圖做簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請中提供的一種訪問異步邏輯單元的方法所處于的硬件環(huán)境示意圖;
圖2為一種典型的主機(jī)存儲鏈接拓?fù)浣Y(jié)構(gòu)圖;
圖3為本申請實施例所提供的一種訪問異步邏輯單元的方法的流程圖;
圖4為圖3所示實施例中客戶端與存儲端的交互示意圖;
圖5為本申請實施例所提供的另一種訪問異步邏輯單元的方法的流程圖;
圖6為本申請實施例提供的一種訪問異步邏輯單元的系統(tǒng)結(jié)構(gòu)示意圖;
圖7為本申請實施例提供的另一種訪問異步邏輯單元的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
為使本申請實施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護(hù)的范圍。
本申請所提供的一種訪問異步邏輯單元的方法及系統(tǒng),可以應(yīng)用于以下硬件場景中:
請參考圖1,圖1為本申請中提供的一種訪問異步邏輯單元的方法所處于的硬件環(huán)境示意圖,包括客戶端101、存儲端102。
其中,客戶端101也叫主機(jī)端,是用戶選擇優(yōu)先路徑并發(fā)送io數(shù)據(jù)的終端裝置,一般安裝在普通的客戶機(jī)上,需要與存儲端102互相配合運(yùn)行。客戶端101只要是能夠選擇優(yōu)先路徑并發(fā)送io數(shù)據(jù)的終端裝置即可,此處并不對客戶端101做具體的限制。存儲端102是客戶端101的訪問對象,存儲端102向客戶端101提供各條訪問路徑的路徑信息,以便客戶端101選擇一條最優(yōu)的路徑進(jìn)行訪問。存儲端102下轄多個功能模塊,如緩存管理子模塊、io轉(zhuǎn)發(fā)子模塊等。
下面請參見圖2,圖2為一種典型的主機(jī)存儲鏈接拓?fù)浣Y(jié)構(gòu)圖。p1,p2是雙控存儲控制器sp0上的fc端口,p1和p2構(gòu)成端口組pg0,1、2、3、4、是以sp0為主控的邏輯卷,這些邏輯卷構(gòu)成邏輯卷組lg0,同樣p3,p4是控制器上的fc端口,p3和p4構(gòu)成pg1,5、6、7、8構(gòu)成邏輯卷組lg1。根據(jù)圖2中的拓?fù)浣Y(jié)構(gòu),主機(jī)訪問邏輯卷1可以有8種路徑,分別為:
path1:a-1-p1-lv1;
path2:a-2-p2-lv1;
path3:a-3-p3-lv1;
path4:a-4-p4-lv1;
path5:b-1-p1-lv1;
path6:b-2-p2-lv1;
path7:b-3-p3-lv1;
path8:b-4-p4-lv1;
其中后面4種和前面4中的路徑訪問具有對稱關(guān)系,因此可以考慮前面4中,在這4種訪問路徑(path1-path4)中,path1和path2的性能相同且優(yōu)于path3和path4。從alua的角度來看,path1和path2的路徑端口組狀態(tài)是優(yōu)先,而path3和path4的端口組狀態(tài)是非優(yōu)先。對于端口組狀態(tài)出現(xiàn)的優(yōu)先和非優(yōu)先,其主要根據(jù)是控制器相對與邏輯卷組來說存在主控和非主控。
下面請參見圖3、圖4,圖3為本申請實施例所提供的一種訪問異步邏輯單元的方法的流程圖;圖4為圖3所示實施例中客戶端與存儲端的交互示意圖,其中,圖4中標(biāo)出的的客戶端多路徑模塊即客戶端,存儲端alua模塊即存儲端。
具體步驟可以包括:
步驟s201:客戶端向存儲端查詢訪問所述邏輯單元的io路徑的路徑信息;其中,所述路徑信息包括所述io路徑的優(yōu)先級信息;
其中,客戶端先向存儲端發(fā)送查詢指令,例如“inqury”或“reporttargetgroup”。此處并不對查詢指令的具體內(nèi)容進(jìn)行限定,只要是能夠讓存儲端將io路徑的路徑信息發(fā)送到客戶端的查詢指令即可。在某種情況下,客戶端不是直接向存儲端發(fā)送查詢指令,而是間接地通過第三方裝置(如交換機(jī))發(fā)送查詢指令,此處也不對查詢指令是否經(jīng)過第三方裝置轉(zhuǎn)發(fā)進(jìn)行限定。
當(dāng)存儲端接收到查詢命令后,則按照客戶端要求報告路徑狀態(tài)的命令進(jìn)行相關(guān)處理,如:構(gòu)建客戶端指定的邏輯單元的路徑狀況信息,包括邏輯單元的主控是哪個端口,該邏輯單元對應(yīng)的優(yōu)先端口組各個端口的io情況及繁忙程度,非優(yōu)先端口組各個端口的io情況及繁忙程度,并將上述路徑狀況信息發(fā)送給客戶端,以便客戶端進(jìn)行優(yōu)先路徑的選擇??梢岳斫獾氖?,客戶端發(fā)送的路況信息中包含優(yōu)先級信息,優(yōu)先級信息是上述路況信息中部分信息的共同決定的,如各個端口的io情況及繁忙程度。
當(dāng)客戶端接收到存儲端上報的路徑信息,對路徑信息進(jìn)行相關(guān)處理,如創(chuàng)建相關(guān)數(shù)據(jù)結(jié)構(gòu),保存相關(guān)路徑信息(端口組狀態(tài)和優(yōu)先信息),形成邏輯單元的io路徑鏈表??梢岳斫獾氖?,在實際操作中客戶端不僅僅會訪問一個邏輯單元,而是會訪問諸多邏輯單元,存在多次查詢的狀況,所以最終會形成多個邏輯單元io路徑鏈表。
步驟s202:根據(jù)所述優(yōu)先級信息,將優(yōu)先級最高的所述io路徑設(shè)置為優(yōu)先路徑;
其中,每條io路徑的優(yōu)先級信息代表該路徑發(fā)送io數(shù)據(jù)性能的優(yōu)劣,可以理解的是,io路徑的優(yōu)先級越高其發(fā)送io數(shù)據(jù)的性能就越好。因此本步驟將優(yōu)先級最高的io路徑設(shè)置為優(yōu)先路徑,也就是說,將發(fā)送io數(shù)據(jù)性能最佳的io路徑設(shè)置為優(yōu)先路徑。
客戶端確定優(yōu)先路徑的步驟是,先遍歷所有邏輯單元io路徑鏈表,找出優(yōu)先級為1的路徑,并把該路徑設(shè)置為優(yōu)先路徑??梢岳斫獾氖莾?yōu)先級為1路徑是優(yōu)先級最高的路徑,隨著優(yōu)先級的級數(shù)增大,優(yōu)先級的級別逐漸降低。當(dāng)然,優(yōu)先級的級別是一個相對的數(shù)字,是按照優(yōu)先級從高到低依次排序得到的,相同優(yōu)先級不同路徑的發(fā)送io數(shù)據(jù)的性能也不盡相同。
可以理解的是,所有邏輯單元的優(yōu)先路徑存儲在存儲局域網(wǎng)內(nèi),當(dāng)邏輯單元的數(shù)量較少時可以存儲在優(yōu)先路徑鏈表中,當(dāng)邏輯單元數(shù)量較多時可以存儲在優(yōu)先路徑搜索樹中。當(dāng)然,若存在鏈表較長且不經(jīng)常訪問的邏輯單元的路徑,可以刪除該路徑,以節(jié)省空間,提升工作效率。
當(dāng)然,此處并不對選擇優(yōu)先路徑的方法進(jìn)行限定,但是要保證客戶端盡可能通過一條優(yōu)先級較高的路徑訪問異步邏輯單元,也就是說盡可能選擇主控制器進(jìn)行io處理,減少副控制器io轉(zhuǎn)發(fā)帶來的性能衰減,提高io傳輸?shù)男阅堋?/p>
步驟s203:通過所述優(yōu)先路徑發(fā)送io數(shù)據(jù);
其中,由于客戶端訪問的不只是一個邏輯單元,因此客戶端內(nèi)存儲了訪問多個邏輯單元的優(yōu)先路徑,在通過優(yōu)先路徑發(fā)送io數(shù)據(jù)之前,需要遍歷所有邏輯單元的優(yōu)先路徑,以確定io路徑。在確定了io路徑后,將多路徑軟件策略設(shè)定為“固定路徑策略”,也就是說,以后io數(shù)據(jù)都由這一優(yōu)先路徑進(jìn)行發(fā)送??梢岳斫獾氖牵鲜觥肮潭窂讲呗浴辈⒉皇侵竔o路徑一成不變,而是說在優(yōu)先路徑的路徑狀態(tài)不變惡劣的前提下一直使用該io路徑,當(dāng)路徑狀況出現(xiàn)問題時,可以改變優(yōu)先路徑。
步驟s204:監(jiān)控所述io數(shù)據(jù)的發(fā)送狀況,并根據(jù)所述發(fā)送狀況對所述優(yōu)先路徑進(jìn)行修正;
其中,由于優(yōu)先路徑上的訪問量很大,會造成io路徑性能變差,導(dǎo)致客戶端訪問邏輯單元的路徑不是最優(yōu)的一條路徑,因此需要對io數(shù)據(jù)的發(fā)送狀況進(jìn)行監(jiān)控??梢岳斫獾氖牵看伪O(jiān)控的時間間隔不宜過大,也不宜過小。時間間隔過大會導(dǎo)致路徑切換不及時,時間間隔太小會導(dǎo)致操作繁瑣資源浪費(fèi),因此每次監(jiān)控需要在一個適宜的時間間隔,該時間間隔可以通過實驗、計算等方式得出,此處并不對時間間隔的長度和獲得方式進(jìn)行限定。
對優(yōu)先路徑進(jìn)行修正的方法有許多,根據(jù)出現(xiàn)故障的端口及其數(shù)量來決定。修正的具體過程是:當(dāng)客戶端監(jiān)測到優(yōu)先路徑的io性能變差,構(gòu)建設(shè)置目標(biāo)端口組的命令幀進(jìn)行路徑狀態(tài)設(shè)定。存儲端接收到設(shè)置目標(biāo)狀態(tài)命令幀后根據(jù)命令幀中的信息對邏輯單元的主、副控進(jìn)切換。在切換過程中,先暫停該邏輯單元的io訪問,對于已經(jīng)寫入緩存的數(shù)據(jù),根據(jù)原來的主副控設(shè)置進(jìn)行刷寫或轉(zhuǎn)發(fā),切換完成后通知客戶端新的優(yōu)先路徑。
可以理解的是,主、副控是相對而言的,io路徑性能相對較好的端口為主控,相對較差的為副控,當(dāng)主控出現(xiàn)故障其io路徑性能就會變?nèi)酰瑥亩沟酶笨卮嬖瓉淼闹骺貥?gòu)成優(yōu)先路徑,也就是使io盡可能由性能較好的控制器進(jìn)行io處理。
下面請參見圖5,圖5為本申請實施例所提供的另一種訪問異步邏輯單元的方法的流程圖。
此實施例是在上述實施例的基礎(chǔ)上,對監(jiān)控的方法與對優(yōu)先路徑的修正進(jìn)行了相關(guān)限定。
具體步驟可以包括:
步驟s301:客戶端向存儲端查詢訪問所述邏輯單元的io路徑的路徑信息;其中,所述路徑信息包括所述io路徑的優(yōu)先級信息。
步驟s302:根據(jù)所述優(yōu)先級信息,將優(yōu)先級最高的所述io路徑設(shè)置為優(yōu)先路徑。
步驟s303:通過所述優(yōu)先路徑發(fā)送io數(shù)據(jù)。
步驟s304:按預(yù)定周期監(jiān)控所述io數(shù)據(jù)的發(fā)送狀況,獲得狀況信息;
其中,每次監(jiān)控的時間間隔不宜過大,也不宜過小。時間間隔過大會導(dǎo)致路徑切換不及時,時間間隔太小會導(dǎo)致操作繁瑣資源浪費(fèi),因此每次監(jiān)控需要在一個適宜的時間間隔。作為一種優(yōu)選的方案,可以設(shè)置按預(yù)定周期對發(fā)送狀況進(jìn)行監(jiān)控,以保證io數(shù)據(jù)通過優(yōu)先路徑進(jìn)行發(fā)送。
步驟s305:根據(jù)所述狀況信息,判斷所述優(yōu)先路徑的io性能是否變差,若是,進(jìn)入步驟s306;若否,則進(jìn)入s303。
其中,判斷io性能變差并不是優(yōu)先路徑的性能變差一點(diǎn)就判斷io性能變差,可以允許優(yōu)先路徑的性能在一定范圍內(nèi)波動,當(dāng)波動的幅度大于一定的參數(shù)時,再判斷優(yōu)先路徑的io性能變差??梢岳斫獾氖牵琲o性能變差的原因有很多,例如,線路故障、大量客戶端都選擇該優(yōu)選路徑等。
當(dāng)然,對于該步驟可能會出現(xiàn)這樣的情況:優(yōu)先路徑出現(xiàn)故障后,經(jīng)過短暫的時間后故障消失,優(yōu)先路徑繼續(xù)以高性能傳輸io數(shù)據(jù)。因此,當(dāng)優(yōu)先路徑出現(xiàn)短暫的故障就更換路徑并沒有做到盡可能選擇發(fā)送io數(shù)據(jù)性能較好的路徑作為優(yōu)先路徑。針對這種特殊情況,可以在發(fā)現(xiàn)路徑出現(xiàn)一次故障后,縮短監(jiān)控的周期,對故障進(jìn)行更為嚴(yán)密的監(jiān)控。在進(jìn)行更為嚴(yán)密的監(jiān)控后,若發(fā)現(xiàn)優(yōu)先路徑的故障消除,則不判定優(yōu)先路徑出現(xiàn)故障;若發(fā)現(xiàn)優(yōu)先路徑的故障持續(xù)存在,則判定優(yōu)先路徑出現(xiàn)故障,需要更換新的優(yōu)先路徑,并將監(jiān)控的周期恢復(fù)正常狀態(tài),對新的優(yōu)先路徑進(jìn)行監(jiān)控。可以理解的是,實施更加嚴(yán)密的監(jiān)控的具體監(jiān)控周期視實際情況而定,此處并不對該周期的具體數(shù)值進(jìn)行限定。
步驟s306:更新所述路徑信息,并刪除出現(xiàn)io性能變差的優(yōu)先路徑;
其中,當(dāng)優(yōu)先路徑io性能變差后,說明所有路徑中的端口狀況都有可能出現(xiàn)問題,也就是說,各條訪問異步邏輯單元的路徑的狀況都有可能發(fā)生改變。因此需要重新獲取各條路徑的路徑信息,以便重新選擇一條優(yōu)先路徑進(jìn)行訪問。
可以理解的是,優(yōu)先路徑都存儲在優(yōu)先路徑鏈表或優(yōu)先路徑搜索樹中,由于原來的優(yōu)先路徑的io性能變差后,就不再需要原來的優(yōu)先路徑,故需要將其刪除,以節(jié)省存儲空間。
步驟s307:根據(jù)更新后的所述路徑信息,在所述io路徑中選擇一條優(yōu)先級最高的所述io路徑作為新的優(yōu)先路徑;
其中,為了使io數(shù)據(jù)傳輸?shù)穆窂降男阅苓_(dá)到最佳,所以在選擇新的優(yōu)先路徑時也盡量選擇一條優(yōu)先級較高的io路徑。也就是說,當(dāng)主控制器出現(xiàn)故障時,選擇副控制器組成io路徑。此處并不對選擇優(yōu)先路徑的方法進(jìn)行限定,只要是保證客戶端盡可能通過一條優(yōu)先級較高的路徑訪問異步邏輯單元即可。
步驟s308:判斷存儲端反饋切換是否成功,若是,則進(jìn)入步驟s303,若否則進(jìn)入步驟s309;
其中,檢測出io路徑的io性能變差后重新選擇優(yōu)先路徑進(jìn)行傳輸是需要進(jìn)行切換的,但是切換的路徑可能會出現(xiàn)路徑較為的情況,因此如果切換成功則可以通過新的優(yōu)先路徑進(jìn)行訪問,如果切換不成功則需要重新選擇優(yōu)先路徑。
步驟s309:按照優(yōu)先級從高到低的順序依次選擇其他所述io路徑作為新的優(yōu)先路徑,直至反饋切換成功。
其中,原有的優(yōu)先級最高的io路徑的io性能變差,需要重新選擇一條io路徑作為新的優(yōu)先路徑。io路徑的優(yōu)先級越高發(fā)送io數(shù)據(jù)的性能就越好,也就是說,要按照優(yōu)先級降序的順序選擇優(yōu)先路徑。也就是說盡可能在可用路徑中選擇一條優(yōu)先級最高的io路徑作為優(yōu)先路徑。優(yōu)先級從高到低的順序為優(yōu)先級為1、2、3……的順序??梢岳斫獾氖?,新的優(yōu)先路徑的選擇規(guī)則與原有的優(yōu)先路徑選擇規(guī)則一致,具體上面的步驟的s202容大致一致,此處不再贅述。
由于系統(tǒng)部分的實施例與方法部分的實施例相互對應(yīng),因此系統(tǒng)部分的實施例請參見方法部分的實施例的描述,這里暫不贅述。
下面請參見圖6,圖6為本申請?zhí)峁┑囊环N訪問異步邏輯單元的系統(tǒng)結(jié)構(gòu)示意圖,該系統(tǒng)可以包括:
查詢模塊100,用于客戶端向存儲端查詢訪問所述邏輯單元的io路徑的路徑信息;其中,所述路徑信息包括所述io路徑的優(yōu)先級信息;
路徑選擇模塊200,用于根據(jù)所述優(yōu)先級信息,將優(yōu)先級最高的所述io路徑設(shè)置為優(yōu)先路徑;
io處理模塊300,用于通過所述優(yōu)先路徑發(fā)送io數(shù)據(jù);
監(jiān)控模塊400,用于監(jiān)控所述io數(shù)據(jù)的發(fā)送狀況,并根據(jù)所述發(fā)送狀況對所述優(yōu)先路徑進(jìn)行修正。
請參閱圖7,圖7為本申請實施例提供的另一種訪問異步邏輯單元的系統(tǒng)的結(jié)構(gòu)示意圖。
在上述實施例的基礎(chǔ)上,本實施例進(jìn)一步的,所述監(jiān)控模塊400包括:
監(jiān)控單元410,用于按預(yù)定周期監(jiān)控所述io數(shù)據(jù)的發(fā)送狀況,獲得狀況信息;
判斷單元420,用于根據(jù)所述狀況信息,判斷所述優(yōu)先路徑的io性能是否變差;
修正單元430,用于當(dāng)所述優(yōu)先路徑的io性能變差,更新所述路徑信息,并在可用的所述io路徑中重新選擇一條所述優(yōu)先級最高的所述io路徑作為新的優(yōu)先路徑。
進(jìn)一步的,所述修正單元430包括:
刪除子單元431,用于刪除出現(xiàn)io性能變差的優(yōu)先路徑;
路徑重選子單元432,用于根據(jù)更新后的所述路徑信息,在所述io路徑中選擇一條優(yōu)先級最高的所述io路徑作為新的優(yōu)先路徑;
切換判斷子單元433,用于判斷存儲端反饋切換是否成功;
路徑再選子單元434,用于當(dāng)存儲端反饋切換失敗,按照優(yōu)先級從高到低的順序依次選擇其他所述io路徑作為新的優(yōu)先路徑,直至反饋切換成功。
以上對本申請所提供的一種訪問異步邏輯單元的方法及系統(tǒng)進(jìn)行了詳細(xì)介紹。說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點(diǎn)說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的系統(tǒng)而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請原理的前提下,還可以對本申請進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本申請權(quán)利要求的保護(hù)范圍內(nèi)。
還需要說明的是,在本說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的狀況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。