專利名稱:基于因特網(wǎng)小型計算機系統(tǒng)接口的命令處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲技術(shù)領(lǐng)域,具體涉及基于因特網(wǎng)小型計算機系統(tǒng)接口(iSCSI, Internet Small Computer System Interface)的命令處理方法及裝置。
背景技術(shù):
目前,在監(jiān)控系統(tǒng)中使用因特網(wǎng)協(xié)議存儲區(qū)域網(wǎng)絡(luò)(IPSAN,InternetProtocol Storage Area Network)作為存儲體普遍應(yīng)用,將攝像頭的數(shù)據(jù)存儲到IPSAN中,當(dāng)用戶需要查看歷史錄像時,從IPSAN中讀取錄像數(shù)據(jù)。圖1為現(xiàn)有的典型IP監(jiān)控組網(wǎng)圖。如圖1所示,主要包括錄像存儲過程編碼器(EC,Encoder)通過iSCSI連接到IPSAN,將錄像數(shù)據(jù)寫入 IPSAN0錄像回放過程視頻客戶端(VC,Video Client)或解碼器(DC,Decoder)向視頻管理(VM,Video Management)服務(wù)器發(fā)出申請,由數(shù)據(jù)管理(DM,Data Management)服務(wù)器讀取IPSAN中的數(shù)據(jù)轉(zhuǎn)發(fā)給VC。錄像存儲過程對存儲實時性要求比較高,由于EC緩存資源有限,當(dāng)IPSAN上的陣列在重建或同步時,對客戶端的輸入輸出(IOJnput Output)響應(yīng)會變慢,EC由于10延時太大導(dǎo)致EC緩存數(shù)據(jù)下刷很慢,最終導(dǎo)致EC存儲丟包。而對于錄像回放過程,當(dāng)存在多路回放時,由于DM跟IPSAN只建立一個iSCSI會話,從而導(dǎo)致所有回放業(yè)務(wù)都運行在一個會話上,而每個會話只有一個命令隊列,導(dǎo)致多個回放業(yè)務(wù)相互影響,當(dāng)其中一個存儲邏輯單元上的回放業(yè)務(wù)的10響應(yīng)慢時會導(dǎo)致其它存儲邏輯單元上的回放業(yè)務(wù)的10響應(yīng)也變慢。
發(fā)明內(nèi)容
本發(fā)明提供基于iSCSI的命令處理方法及裝置,以提高基于iSCSI的命令處理效率。本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種基于因特網(wǎng)小型計算機系統(tǒng)接口 iSCSI的命令處理方法,該方法包括當(dāng)存儲系統(tǒng)與主機建立iSCSI會話后,存儲系統(tǒng)接收主機發(fā)來的為本次iSCSI會話針對的各個邏輯單元號LUN設(shè)置的業(yè)務(wù)參數(shù),所述業(yè)務(wù)參數(shù)包括最大響應(yīng)時長;存儲系統(tǒng)接收主機發(fā)來的iSCSI輸入輸出10命令,該命令中設(shè)置有業(yè)務(wù)優(yōu)化標(biāo)志,所述業(yè)務(wù)優(yōu)化標(biāo)志為關(guān)鍵數(shù)據(jù)標(biāo)志和/或響應(yīng)時長限制標(biāo)志;存儲系統(tǒng)判斷該命令中是否設(shè)置了響應(yīng)時長限制標(biāo)志,若是,判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,若設(shè)置了, 確定優(yōu)先調(diào)度該命令,若未設(shè)置,則根據(jù)該命令的接收時刻以及該命令中的LUN對應(yīng)的最大響應(yīng)時長,計算該命令的應(yīng)完成時刻,計算該命令的應(yīng)完成時刻與當(dāng)前時刻的差值,若該差值小于預(yù)設(shè)閾值,則確定優(yōu)先調(diào)度該命令;否則,確定正常調(diào)度該命令。所述閾值為所述iSCSI 10命令中的LUN對應(yīng)的最大響應(yīng)時長除以m所得的商值,其中,m > 1。當(dāng)所述iSCSI IO命令為讀命令時,存儲系統(tǒng)判定該命令中設(shè)置了響應(yīng)時長限制標(biāo)志之后、判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志之前進一步包括判斷是否已對該命令中的LUN對應(yīng)的存儲邏輯單元啟用預(yù)讀功能,若已啟用,則確定正常調(diào)度該命令;若未啟用,則執(zhí)行所述判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志的動作。當(dāng)所述iSCSI IO命令為讀命令且為順序讀時,所述iSCSI IO命令中進一步包括 順序讀標(biāo)志;且,當(dāng)存儲系統(tǒng)處理完該讀命令,并向主機返回讀響應(yīng)后,對該讀命令中的LUN對應(yīng)的存儲邏輯單元啟用并執(zhí)行預(yù)讀功能。當(dāng)所述iSCSI IO命令為讀命令且命令中包含響應(yīng)時長限制標(biāo)志時,當(dāng)存儲系統(tǒng)處理完該讀命令,并向主機返回讀響應(yīng)后,根據(jù)該讀命令的最大響應(yīng)時長判斷讀響應(yīng)是否超時,若超時,判斷讀命令中的LUN對應(yīng)的存儲邏輯單元是否已啟用預(yù)讀功能,若未啟用,則啟用;若已啟用,則關(guān)閉該預(yù)讀功能,且,當(dāng)接收到后續(xù)讀命令時,若該讀命令中設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,則處理該讀命令,否則,丟棄該讀命令。一種基于iSCSI的命令處理裝置,包括第一模塊當(dāng)與主機建立iSCSI會話后,接收并記錄主機發(fā)來的為本次iSCSI會話針對的各個LUN設(shè)置的業(yè)務(wù)參數(shù),所述業(yè)務(wù)參數(shù)包括最大響應(yīng)時長;第二模塊接收主機發(fā)來的iSCSI IO命令,該命令中設(shè)置有業(yè)務(wù)優(yōu)化標(biāo)志,所述業(yè)務(wù)優(yōu)化標(biāo)志為關(guān)鍵數(shù)據(jù)標(biāo)志和/或響應(yīng)時長限制標(biāo)志,判斷該命令中是否設(shè)置了響應(yīng)時長限制標(biāo)志,若是,判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,若設(shè)置了,確定優(yōu)先調(diào)度該命令,若未設(shè)置,根據(jù)該命令的接收時刻以及第一模塊記錄的該命令中的LUN對應(yīng)的最大響應(yīng)時長,計算該命令的應(yīng)完成時刻,計算該命令的應(yīng)完成時刻與當(dāng)前時刻的差值,若該差值小于預(yù)設(shè)閾值,則確定優(yōu)先調(diào)度該命令;否則,確定正常調(diào)度該命令。所述第二模塊進一步用于,當(dāng)所述iSCSI IO命令為讀命令時,在判定該命令中設(shè)置了響應(yīng)時長限制標(biāo)志之后,判斷是否已對該命令中的LUN對應(yīng)的存儲邏輯單元啟用預(yù)讀功能,若已啟用,則確定正常調(diào)度該命令;若未啟用,則執(zhí)行所述判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志的動作。所述第二模塊進一步用于,當(dāng)所述iSCSI IO命令為讀命令且包含順序讀標(biāo)志時, 當(dāng)處理完該讀命令,并向主機返回讀響應(yīng)后,對該讀命令中的LUN對應(yīng)的存儲邏輯單元啟用并執(zhí)行預(yù)讀功能。所述第二模塊進一步用于,當(dāng)所述iSCSI IO命令為讀命令且命令中包含響應(yīng)時長限制標(biāo)志時,當(dāng)處理完該讀命令,并向主機返回讀響應(yīng)后,根據(jù)該讀命令的最大響應(yīng)時長判斷讀響應(yīng)是否超時,若超時,判斷讀命令中的LUN對應(yīng)的存儲邏輯單元是否已啟用預(yù)讀功能,若未啟用,則啟用;若已啟用,則關(guān)閉該預(yù)讀功能,且,當(dāng)接收到后續(xù)讀命令時,若該讀命令中設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,則處理該讀命令,否則,丟棄該讀命令。所述裝置位于iSCSI存儲系統(tǒng)中。與現(xiàn)有技術(shù)相比,本發(fā)明中,可以使得主機控制iSCSI命令的響應(yīng),從而提高了基于iSCSI的命令處理效率。
另外,本發(fā)明實施例中,當(dāng)主機的讀命令為順序讀時,存儲系統(tǒng)可以啟動預(yù)讀功能,或者,當(dāng)存儲系統(tǒng)響應(yīng)超時后啟動預(yù)讀功能,從而加快了讀響應(yīng),提高了讀性能,進一步提高了基于iscsi的命令處理效率。
圖1為現(xiàn)有的典型IP監(jiān)控組網(wǎng)圖;圖2為本發(fā)明實施例提供的基于iSCSI的命令處理方法流程圖;圖3為本發(fā)明實施例提供的設(shè)置業(yè)務(wù)參數(shù)的方法流程圖;圖4為本發(fā)明實施例提供的基于iSCSI的讀流程圖;圖5為本發(fā)明實施例提供的基于iSCSI的寫流程圖;圖6為本發(fā)明實施例提供的基于iSCSI的命令處理裝置的組成圖。
具體實施例方式下面結(jié)合附圖及具體實施例對本發(fā)明再作進一步詳細(xì)的說明。圖2為本發(fā)明實施例提供的基于iSCSI的命令處理方法流程圖,如圖2所示,其具體步驟如下步驟201 當(dāng)主機與存儲系統(tǒng)建立iSCSI會話后,為本次iSCSI會話針對的各個 LUN設(shè)置業(yè)務(wù)參數(shù),主機將該本次iSCSI會話針對的各LUN的業(yè)務(wù)參數(shù)發(fā)送給存儲系統(tǒng),其中,業(yè)務(wù)參數(shù)包括IO塊大小和/或最大響應(yīng)時長。步驟202 主機向存儲系統(tǒng)發(fā)送iSCSI IO命令,該命令中設(shè)置有業(yè)務(wù)優(yōu)化標(biāo)志,其中,業(yè)務(wù)優(yōu)化標(biāo)志為關(guān)鍵數(shù)據(jù)標(biāo)志和/或響應(yīng)時長限制標(biāo)志。步驟203 存儲系統(tǒng)接收iSCSI IO命令,判斷該命令中是否設(shè)置了響應(yīng)時長限制標(biāo)志,若是,執(zhí)行步驟204 ;否則,執(zhí)行步驟207。步驟204 存儲系統(tǒng)判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,若是,執(zhí)行步驟208 ; 否則,執(zhí)行步驟205。步驟205 存儲系統(tǒng)根據(jù)該命令的接收時刻以及該命令中的LUN的最大響應(yīng)時長, 計算該命令的應(yīng)完成時刻。步驟206 存儲系統(tǒng)判斷該命令的應(yīng)完成時刻與當(dāng)前時刻的差值是否大于或等于預(yù)設(shè)閾值,若是,執(zhí)行步驟207 ;否則,執(zhí)行步驟208。這里,預(yù)設(shè)閾值可取命令中的LUN的最大響應(yīng)時長/m,其中,m為大于1的整數(shù)。步驟207 存儲系統(tǒng)正常調(diào)度該命令,本流程結(jié)束。步驟208 存儲系統(tǒng)優(yōu)先調(diào)度該命令。圖3為本發(fā)明實施例提供的設(shè)置業(yè)務(wù)參數(shù)的方法流程圖,如圖3所示,其具體步驟如下步驟301 主機與存儲系統(tǒng)建立iSCSI會話,主機將本次會話針對的各LUN的業(yè)務(wù)參數(shù)攜帶在業(yè)務(wù)參數(shù)設(shè)置請求報文中發(fā)送給存儲系統(tǒng)。LUN的業(yè)務(wù)參數(shù)包括IO塊大小(Blocksize)、最大響應(yīng)時長??捎缮蠈討?yīng)用單元或管理員根據(jù)業(yè)務(wù)需求,在主機上設(shè)置本次iSCSI會話針對的各LUN的業(yè)務(wù)參數(shù),不同LUN 的業(yè)務(wù)參數(shù)不一定相同。
本步驟中的業(yè)務(wù)參數(shù)設(shè)置請求報文有兩個字段為本發(fā)明實施例擴展字段1、Time-limit 表示最大響應(yīng)時長。2、IO Blocksize 10塊大小,即每次讀、寫操作的數(shù)據(jù)塊大小。另外,報文中的type字段的取值可為iSCSI協(xié)議的任一預(yù)留值,這里取Oxlc。步驟302 存儲系統(tǒng)接收業(yè)務(wù)參數(shù)設(shè)置請求報文,判斷報文中的業(yè)務(wù)參數(shù)是否可行,若是,執(zhí)行步驟304 ;否則,執(zhí)行步驟303。存儲系統(tǒng)可根據(jù)自身性能規(guī)格判斷業(yè)務(wù)參數(shù)是否可行。步驟303 存儲系統(tǒng)向主機返回指示失敗的業(yè)務(wù)參數(shù)設(shè)置響應(yīng)報文,本流程結(jié)束。步驟304 存儲系統(tǒng)向主機返回指示成功的業(yè)務(wù)參數(shù)設(shè)置響應(yīng)報文,同時將各LUN 的業(yè)務(wù)參數(shù)記錄到本次會話的描述信息中。對于業(yè)務(wù)參數(shù)設(shè)置響應(yīng)報文,本發(fā)明實施例擴展了一個字段status字段,用于表示業(yè)務(wù)參數(shù)設(shè)置成功還是失敗,如取值為1時,表示成功,取值為O時,表示失敗。且,其中的type字段的取值可為iSCSI協(xié)議的任一預(yù)留值,當(dāng)然,取值也必須與業(yè)務(wù)參數(shù)設(shè)置請求報文不同,這里取0x3c。當(dāng)業(yè)務(wù)參數(shù)設(shè)置成功后,就可進行IO過程了,以下分別給出iSCSI讀過程和iSCSI 寫過程的
具體實施例方式圖4為本發(fā)明實施例提供的基于iSCSI的讀流程圖,如圖4所示,其具體步驟如下步驟401 主機向存儲系統(tǒng)發(fā)送iSCSI讀命令,該命令中攜帶業(yè)務(wù)優(yōu)化標(biāo)志位。這里,業(yè)務(wù)優(yōu)化標(biāo)志位包括順序讀標(biāo)志位C、響應(yīng)時長限制標(biāo)志位T、關(guān)鍵數(shù)據(jù)標(biāo)志位。例如,可設(shè)定當(dāng)C為1時,表示本主機當(dāng)前發(fā)起的iSCSI讀命令為順序讀命令,即相鄰讀命令針對的是相鄰的數(shù)據(jù)塊;當(dāng)C為O時,表示本主機當(dāng)前發(fā)起的iSCSI讀命令不為順序讀命令;當(dāng)T為1時,表示本iSCSI讀命令有響應(yīng)時長限制;當(dāng)T為O時,表示本iSCSI讀命令沒有響應(yīng)時長限制?,F(xiàn)有的iSCSI報文中包含attr字段,這里,可將iSCSI讀命令中的attr字段的最高位作為關(guān)鍵數(shù)據(jù)標(biāo)志位,例如當(dāng)其置1時表示本次所讀數(shù)據(jù)為關(guān)鍵數(shù)據(jù)。步驟402 存儲系統(tǒng)接收iSCSI讀命令,根據(jù)該讀命令中的T,判斷該讀命令是否有響應(yīng)時長限制,若是,執(zhí)行步驟403 ;否則,執(zhí)行步驟407。步驟403 存儲系統(tǒng)根據(jù)該讀命令中的attr,判斷本次所讀數(shù)據(jù)是否為關(guān)鍵數(shù)據(jù), 若是,執(zhí)行步驟408 ;否則,執(zhí)行步驟404。步驟404 存儲系統(tǒng)判斷該讀命令中的LUN對應(yīng)存儲邏輯單元是否已啟用預(yù)讀功能,若是,執(zhí)行步驟407 ;否則,執(zhí)行步驟405。步驟405:存儲系統(tǒng)根據(jù)讀命令中的LUN,在自身記錄的本次會話描述信息中查找到該LUN對應(yīng)的最大響應(yīng)時長,根據(jù)該讀命令的接收時刻和該最大響應(yīng)時長,計算出該讀命令的應(yīng)完成時刻。讀命令的應(yīng)完成時刻=讀命令的接收時刻+讀命令中的LUN的最大響應(yīng)時長。步驟406 存儲系統(tǒng)判斷讀命令的應(yīng)完成時刻-當(dāng)前時刻>讀命令中的LUN的最大響應(yīng)時長/2是否成立,若是,執(zhí)行步驟407 ;否則,執(zhí)行步驟408。步驟407 存儲系統(tǒng)將該讀命令的優(yōu)先級設(shè)置為正常,將該讀命令和優(yōu)先級放入本次會話的命令隊列中,轉(zhuǎn)至步驟409。步驟408 存儲系統(tǒng)將該讀命令的優(yōu)先級設(shè)置為高,將該讀命令和優(yōu)先級放入本次會話的命令隊列中,轉(zhuǎn)至步驟409。步驟409 存儲系統(tǒng)根據(jù)命令隊列中各命令的優(yōu)先級確定各命令的處理順序,當(dāng)存儲系統(tǒng)從命令隊列中取出上述讀命令時,根據(jù)讀命令中的LUN以及本次會話描述信息中該LUN對應(yīng)的IO塊大小,從對應(yīng)邏輯存儲單元中讀取一個IO塊大小的數(shù)據(jù),將該數(shù)據(jù)攜帶在讀響應(yīng)中返回給主機。步驟410 存儲系統(tǒng)根據(jù)讀命令中的C,判斷該讀命令是否為順序讀,若是,執(zhí)行步驟411 ;否則,本流程結(jié)束。步驟411 存儲系統(tǒng)判斷該讀命令中的LUN對應(yīng)的存儲邏輯單元是否已啟用預(yù)讀功能,若是,執(zhí)行步驟412;否則,執(zhí)行步驟413。步驟412 存儲系統(tǒng)對該讀命令中的LUN對應(yīng)的存儲邏輯單元執(zhí)行預(yù)讀功能即,將當(dāng)前讀取的數(shù)據(jù)之后一個IO塊大小的數(shù)據(jù)放入讀緩存,本流程結(jié)束。步驟413 存儲系統(tǒng)對該讀命令中的LUN對應(yīng)的存儲邏輯單元啟用預(yù)讀功能,同時將當(dāng)前讀取的數(shù)據(jù)之后一個IO塊大小的數(shù)據(jù)放入讀緩存。將讀取的數(shù)據(jù)之后一個IO塊大小的數(shù)據(jù)放入讀緩存,這樣,當(dāng)此后再收到讀命令時,就可直接將讀緩存中的數(shù)據(jù)返回給主機了,而不需再進行從存儲邏輯單元中讀取數(shù)據(jù)的操作了,從而提高了讀性能。在步驟406中,只為讀命令的應(yīng)完成時刻與當(dāng)前時刻的差值設(shè)置了一個閾值讀命令中的LUN的最大響應(yīng)時長若大于該閾值,則確定讀命令的優(yōu)先級為正常;否則,確定讀命令的優(yōu)先級為高。在實際應(yīng)用中,當(dāng)存儲系統(tǒng)支持多個優(yōu)先級時,可設(shè)置多個閾值, 以對優(yōu)先級進行進一步細(xì)分。在圖4所示實施例中,當(dāng)存儲系統(tǒng)向主機返回讀響應(yīng)時,還可進一步判斷該讀響應(yīng)返回時刻是否大于步驟405計算出的讀命令的應(yīng)完成時刻,若大于,則通過如下步驟優(yōu)化后續(xù)讀性能步驟01 判斷當(dāng)前讀命令中的LUN對應(yīng)的存儲邏輯單元是否已啟用預(yù)讀功能,若是,執(zhí)行步驟03 ;否則,執(zhí)行步驟02。步驟02 對該讀命令中的LUN對應(yīng)的存儲邏輯單元啟用預(yù)讀功能,本流程結(jié)束。步驟03 在本次會話描述信息中設(shè)置讀響應(yīng)超時標(biāo)志。步驟04 當(dāng)接收到后續(xù)iSCSI讀命令時,發(fā)現(xiàn)本次會話描述信息中有讀響應(yīng)超時標(biāo)志,判斷該讀命令中的LUN對應(yīng)的存儲邏輯單元是否已啟用預(yù)讀功能,若是,執(zhí)行步驟 05 ;否則,執(zhí)行步驟06。步驟05 關(guān)閉該預(yù)讀功能。關(guān)閉預(yù)讀功能后,此后當(dāng)處理完一個iSCSI讀命令后,不再將當(dāng)前讀取的數(shù)據(jù)之后一個IO塊大小的數(shù)據(jù)放入讀緩存。步驟06 根據(jù)該后續(xù)讀命令中的attr,判斷當(dāng)前所讀數(shù)據(jù)是否為關(guān)鍵數(shù)據(jù),若是, 按照步驟408、409處理該讀命令;否則,不處理該讀命令,直接向主機返回指示失敗的讀響應(yīng)。圖5為本發(fā)明實施例提供的基于iSCSI的寫流程圖,如圖5所示,其具體步驟如
8下步驟501 主機向存儲系統(tǒng)發(fā)送iSCSI寫命令,該命令中攜帶業(yè)務(wù)優(yōu)化標(biāo)志位。這里,業(yè)務(wù)優(yōu)化標(biāo)志位包括響應(yīng)時長限制標(biāo)志位T、關(guān)鍵數(shù)據(jù)標(biāo)志位。例如,可設(shè)定當(dāng)T為1時,表示本iSCSI寫命令有響應(yīng)時長限制;當(dāng)T為0時,表示本iSCSI寫命令沒有響應(yīng)時長限制。這里,可將iSCSI寫命令中的attr字段的最高位作為關(guān)鍵數(shù)據(jù)位,例如 當(dāng)其置1來表示本次寫入數(shù)據(jù)為關(guān)鍵數(shù)據(jù)。步驟502 存儲系統(tǒng)接收iSCSI寫命令,根據(jù)寫命令中的T,判斷該寫命令是否有響應(yīng)時長限制,若是,執(zhí)行步驟503 ;否則,執(zhí)行步驟506。步驟503 存儲系統(tǒng)根據(jù)該寫命令中的attr,判斷本次寫入數(shù)據(jù)是否為關(guān)鍵數(shù)據(jù), 若是,執(zhí)行步驟507 ;否則,執(zhí)行步驟504。步驟504 存儲系統(tǒng)根據(jù)寫命令中的LUN,在自身記錄的本次會話描述信息中查找到該LUN對應(yīng)的最大響應(yīng)時長,根據(jù)該寫命令的接收時刻和該最大響應(yīng)時長,計算出該寫命令的應(yīng)完成時刻。寫命令的應(yīng)完成時刻=寫命令的接收時刻+寫命令中的LUN的最大響應(yīng)時長。步驟505 存儲系統(tǒng)判斷寫命令的應(yīng)完成時刻-當(dāng)前時刻>寫命令中的LUN的最大響應(yīng)時長/2是否成立,若是,執(zhí)行步驟506 ;否則,執(zhí)行步驟507。步驟506 存儲系統(tǒng)將該寫命令的優(yōu)先級設(shè)置為正常,將該寫命令和優(yōu)先級放入本次會話的命令隊列中,轉(zhuǎn)至步驟508。步驟507 存儲系統(tǒng)將該寫命令的優(yōu)先級設(shè)置為高,將該寫命令和優(yōu)先級放入本次會話的命令隊列中,轉(zhuǎn)至步驟508。步驟508 存儲系統(tǒng)根據(jù)命令隊列中各命令的優(yōu)先級確定各命令的處理順序,當(dāng)存儲系統(tǒng)從命令隊列中取出上述寫命令時,根據(jù)寫命令中的LUN,將寫命令中的數(shù)據(jù)寫入對應(yīng)存儲邏輯單元,寫入完畢,向主機返回指示成功的寫響應(yīng)。在步驟505中,只為寫命令的應(yīng)完成時刻與當(dāng)前時刻的差值設(shè)置了一個閾值寫命令中的LUN的最大響應(yīng)時長若大于該閾值,則確定寫命令的優(yōu)先級為正常;否則,確定寫命令的優(yōu)先級為高。在實際應(yīng)用中,當(dāng)存儲系統(tǒng)支持多個優(yōu)先級時,可設(shè)置多個閾值, 以對優(yōu)先級進行進一步細(xì)分。圖6為本發(fā)明實施例提供的基于iSCSI的命令處理裝置的組成圖,如圖6所示,其主要包括第一模塊61和第二模塊62,其中第一模塊61 當(dāng)與主機建立iSCSI會話后,接收并記錄主機發(fā)來的為本次iSCSI 會話針對的各個LUN設(shè)置的業(yè)務(wù)參數(shù),所述業(yè)務(wù)參數(shù)包括10塊大小和/或最大響應(yīng)時長。第二模塊62 接收主機發(fā)來的iSCSI IO命令,該命令中設(shè)置有業(yè)務(wù)優(yōu)化標(biāo)志,所述業(yè)務(wù)優(yōu)化標(biāo)志為關(guān)鍵數(shù)據(jù)標(biāo)志和/或響應(yīng)時長限制標(biāo)志,判斷該命令中是否設(shè)置了響應(yīng)時長限制標(biāo)志,若是,判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,若設(shè)置了,確定優(yōu)先調(diào)度該命令,若未設(shè)置,從第一模塊61獲取該命令中的LUN對應(yīng)的最大響應(yīng)時長,根據(jù)該命令的接收時刻以及該獲取的最大響應(yīng)時長,計算該命令的應(yīng)完成時刻,計算該命令的應(yīng)完成時刻與當(dāng)前時刻的差值,若該差值小于預(yù)設(shè)閾值,則確定優(yōu)先調(diào)度該命令;否則,確定正常調(diào)度該命令。第二模塊62還可用于,當(dāng)所述iSCSI IO命令為讀命令時,在判定該命令中設(shè)置了響應(yīng)時長限制標(biāo)志之后,判斷是否已對該命令中的LUN對應(yīng)的存儲邏輯單元啟用預(yù)讀功能,若已啟用,則確定正常調(diào)度該命令;若未啟用,則執(zhí)行所述判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志的動作。第二模塊還可用于,當(dāng)所述iSCSI IO命令為讀命令且包含順序讀標(biāo)志時,當(dāng)處理完該讀命令,并向主機返回讀響應(yīng)后,對該讀命令中的LUN對應(yīng)的存儲邏輯單元啟用并執(zhí)行預(yù)讀功能。第二模塊還可用于,當(dāng)所述iSCSI IO命令為讀命令且命令中包含響應(yīng)時長限制標(biāo)志時,當(dāng)處理完該讀命令,并向主機返回讀響應(yīng)后,根據(jù)該讀命令的最大響應(yīng)時長判斷讀響應(yīng)是否超時,若超時,判斷讀命令中的LUN對應(yīng)的存儲邏輯單元是否已啟用預(yù)讀功能,若未啟用,則啟用;若已啟用,則關(guān)閉該預(yù)讀功能,且,當(dāng)接收到后續(xù)讀命令時,若該讀命令中設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,則處理該讀命令,否則,丟棄該讀命令。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
權(quán)利要求
1.一種基于因特網(wǎng)小型計算機系統(tǒng)接口 iscsi的命令處理方法,其特征在于,該方法包括當(dāng)存儲系統(tǒng)與主機建立iSCSI會話后,存儲系統(tǒng)接收主機發(fā)來的為本次iSCSI會話針對的各個邏輯單元號LUN設(shè)置的業(yè)務(wù)參數(shù),所述業(yè)務(wù)參數(shù)包括最大響應(yīng)時長;存儲系統(tǒng)接收主機發(fā)來的iSCSI輸入輸出IO命令,該命令中設(shè)置有業(yè)務(wù)優(yōu)化標(biāo)志,所述業(yè)務(wù)優(yōu)化標(biāo)志為關(guān)鍵數(shù)據(jù)標(biāo)志和/或響應(yīng)時長限制標(biāo)志;存儲系統(tǒng)判斷該命令中是否設(shè)置了響應(yīng)時長限制標(biāo)志,若是,判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,若設(shè)置了,確定優(yōu)先調(diào)度該命令,若未設(shè)置,則根據(jù)該命令的接收時刻以及該命令中的LUN對應(yīng)的最大響應(yīng)時長,計算該命令的應(yīng)完成時刻,計算該命令的應(yīng)完成時刻與當(dāng)前時刻的差值,若該差值小于預(yù)設(shè)閾值,則確定優(yōu)先調(diào)度該命令;否則,確定正常調(diào)度該命令。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述閾值為所述iSCSIIO命令中的LUN 對應(yīng)的最大響應(yīng)時長除以m所得的商值,其中,m > 1。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述iSCSIIO命令為讀命令時,存儲系統(tǒng)判定該命令中設(shè)置了響應(yīng)時長限制標(biāo)志之后、判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志之前進一步包括判斷是否已對該命令中的LUN對應(yīng)的存儲邏輯單元啟用預(yù)讀功能,若已啟用,則確定正常調(diào)度該命令;若未啟用,則執(zhí)行所述判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志的動作。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述iSCSIIO命令為讀命令且為順序讀時,所述iSCSI IO命令中進一步包括順序讀標(biāo)志;且,當(dāng)存儲系統(tǒng)處理完該讀命令,并向主機返回讀響應(yīng)后,對該讀命令中的LUN對應(yīng)的存儲邏輯單元啟用并執(zhí)行預(yù)讀功能。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述iSCSIIO命令為讀命令且命令中包含響應(yīng)時長限制標(biāo)志時,當(dāng)存儲系統(tǒng)處理完該讀命令,并向主機返回讀響應(yīng)后,根據(jù)該讀命令的最大響應(yīng)時長判斷讀響應(yīng)是否超時,若超時,判斷讀命令中的LUN對應(yīng)的存儲邏輯單元是否已啟用預(yù)讀功能,若未啟用,則啟用;若已啟用,則關(guān)閉該預(yù)讀功能,且,當(dāng)接收到后續(xù)讀命令時,若該讀命令中設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,則處理該讀命令,否則,丟棄該讀命令。
6.一種基于iSCSI的命令處理裝置,其特征在于,包括第一模塊當(dāng)與主機建立iSCSI會話后,接收并記錄主機發(fā)來的為本次iSCSI會話針對的各個LUN設(shè)置的業(yè)務(wù)參數(shù),所述業(yè)務(wù)參數(shù)包括最大響應(yīng)時長;第二模塊接收主機發(fā)來的iSCSI IO命令,該命令中設(shè)置有業(yè)務(wù)優(yōu)化標(biāo)志,所述業(yè)務(wù)優(yōu)化標(biāo)志為關(guān)鍵數(shù)據(jù)標(biāo)志和/或響應(yīng)時長限制標(biāo)志,判斷該命令中是否設(shè)置了響應(yīng)時長限制標(biāo)志,若是,判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,若設(shè)置了,確定優(yōu)先調(diào)度該命令,若未設(shè)置,根據(jù)該命令的接收時刻以及第一模塊記錄的該命令中的LUN對應(yīng)的最大響應(yīng)時長,計算該命令的應(yīng)完成時刻,計算該命令的應(yīng)完成時刻與當(dāng)前時刻的差值,若該差值小于預(yù)設(shè)閾值,則確定優(yōu)先調(diào)度該命令;否則,確定正常調(diào)度該命令。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第二模塊進一步用于,當(dāng)所述iSCSI IO命令為讀命令時,在判定該命令中設(shè)置了響應(yīng)時長限制標(biāo)志之后,判斷是否已對該命令中的LUN對應(yīng)的存儲邏輯單元啟用預(yù)讀功能,若已啟用,則確定正常調(diào)度該命令;若未啟用,則執(zhí)行所述判斷該命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志的動作。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第二模塊進一步用于,當(dāng)所述iSCSI IO命令為讀命令且包含順序讀標(biāo)志時,當(dāng)處理完該讀命令,并向主機返回讀響應(yīng)后,對該讀命令中的LUN對應(yīng)的存儲邏輯單元啟用并執(zhí)行預(yù)讀功能。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第二模塊進一步用于,當(dāng)所述iSCSI IO命令為讀命令且命令中包含響應(yīng)時長限制標(biāo)志時,當(dāng)處理完該讀命令,并向主機返回讀響應(yīng)后,根據(jù)該讀命令的最大響應(yīng)時長判斷讀響應(yīng)是否超時,若超時,判斷讀命令中的LUN 對應(yīng)的存儲邏輯單元是否已啟用預(yù)讀功能,若未啟用,則啟用;若已啟用,則關(guān)閉該預(yù)讀功能,且,當(dāng)接收到后續(xù)讀命令時,若該讀命令中設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,則處理該讀命令,否則,丟棄該讀命令。
10.根據(jù)權(quán)利要求6至9任一所述的裝置,其特征在于,所述裝置位于iSCSI存儲系統(tǒng)中。
全文摘要
本發(fā)明公開了基于因特網(wǎng)小型計算機系統(tǒng)接口的命令處理方法及裝置。方法包括當(dāng)存儲系統(tǒng)與主機建立iSCSI會話后,接收主機發(fā)來的為本次iSCSI會話的各LUN設(shè)置的業(yè)務(wù)參數(shù),業(yè)務(wù)參數(shù)包括最大響應(yīng)時長;存儲系統(tǒng)接收主機發(fā)來的iSCSI IO命令,命令中設(shè)置有業(yè)務(wù)優(yōu)化標(biāo)志,業(yè)務(wù)優(yōu)化標(biāo)志為關(guān)鍵數(shù)據(jù)標(biāo)志和/或響應(yīng)時長限制標(biāo)志;存儲系統(tǒng)判斷命令中是否設(shè)置了響應(yīng)時長限制標(biāo)志,若是,判斷命令中是否設(shè)置了關(guān)鍵數(shù)據(jù)標(biāo)志,若設(shè)置了,優(yōu)先調(diào)度命令,若未設(shè)置,計算命令的應(yīng)完成時刻,計算命令的應(yīng)完成時刻與當(dāng)前時刻的差值,若差值小于預(yù)設(shè)閾值,優(yōu)先調(diào)度命令;否則,正常調(diào)度命令。本發(fā)明提高了基于iSCSI的命令處理效率。
文檔編號H04L29/08GK102185874SQ20111002210
公開日2011年9月14日 申請日期2011年1月19日 優(yōu)先權(quán)日2011年1月19日
發(fā)明者陳乾業(yè) 申請人:杭州華三通信技術(shù)有限公司