專利名稱:一種scsi數(shù)據(jù)讀寫方法、系統(tǒng)和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子信息技術(shù)領(lǐng)域,特別是涉及一種SCSI數(shù)據(jù)讀寫方法、系
統(tǒng)和裝置。
背景技術(shù):
SCSI(Small Computer System Interface,小型計算機(jī)系統(tǒng)專用接口)主要用 來連接外設(shè)設(shè)備以提高系統(tǒng)性能或增加新的功能,例如硬盤、光驅(qū)、ZIP、調(diào) 制解調(diào)器、掃描儀、磁帶機(jī)、JAZ、打印等等。因為SCSI接口卡和設(shè)備非常 昂貴所以SCSI接口的機(jī)種主要以工作站、服務(wù)器等中高檔設(shè)備為主。但隨著 PC技術(shù)的逐漸成熟,SCSI設(shè)備被廣泛地使用,支持SCSI接口的外設(shè)產(chǎn)品從 原本僅有硬盤、磁帶機(jī),增加到掃描儀、光驅(qū)、刻錄機(jī)、MO等各種設(shè)備,再 加上制造技術(shù)的進(jìn)步,SCSI卡與外設(shè)的價格都已經(jīng)在可接受范圍內(nèi),因此 SCSI已取得廣泛應(yīng)用。
如圖1所示,為現(xiàn)有技術(shù)SCSI請求的處理流程圖,圖中包括SCSI initiator 設(shè)備、SCSI target設(shè)備和服務(wù)傳輸子系統(tǒng)。其中,SCSI initiator設(shè)備為包含客 戶和SCSI initiator端口的SCSI設(shè)備,能夠向SCSI target設(shè)備發(fā)起設(shè)備服務(wù)和 任務(wù)管理請求,并接收SCSI target設(shè)備返回的對所述設(shè)備服務(wù)和任務(wù)管理請 求的響應(yīng);SCSItarget設(shè)備與SCSI initiator設(shè)備通過服務(wù)傳輸子系統(tǒng)連接,用 于處理SCSI initiator設(shè)備發(fā)起的設(shè)備服務(wù)和任務(wù)管理請求;服務(wù)傳輸子系統(tǒng) 是SCSI I/O系統(tǒng)一部分,將SCSI initiator設(shè)備的傳輸請求服務(wù)傳送給SCSI target設(shè)備,將SCSI target設(shè)備返回的響應(yīng)傳送給SCSI initiator設(shè)備。
Initiator設(shè)備根據(jù)設(shè)備服務(wù)和任務(wù)管理需求構(gòu)造不同的SCSI請求,請求 通過服務(wù)傳輸子系統(tǒng)發(fā)送給target設(shè)備;在target設(shè)備接收到SCSI請求后, 根據(jù)請求類型進(jìn)行處理,并將處理結(jié)果返回給Initiator設(shè)備。每個SCSI請求 包含一個定義執(zhí)4亍操作的CDB (command descriptor block)和一些命令指定
的輸入及用于處理命令的其它參數(shù)。其中,CDB為SCSI initiator設(shè)備傳輸SCSI 請求到SCSI target設(shè)備使用的結(jié)構(gòu)體;長度一般為6、 10、 12、 16個字節(jié)或 不定長,第一個字節(jié)表示SCSI請求的操作碼,標(biāo)識讀寫操作請求或其它請求。 SCSI請求與響應(yīng)異步處理,當(dāng) 一個SCSI請求發(fā)送給target后,不等待target 設(shè)備將請求處理完成,傳輸子系統(tǒng)繼續(xù)發(fā)送下一個SCSI請求。Target設(shè)備將 請求處理完成后,再將SCSI響應(yīng)傳遞給Initiator設(shè)備。
如上圖所示,對于SCSI Initiator設(shè)備產(chǎn)生的SCSI讀寫操作請求,服務(wù)傳 輸子系統(tǒng)直接傳遞給SCSI target設(shè)備,SCSI target設(shè)備直接解析SCSI命令字 段,執(zhí)行相應(yīng)的SCSI命令,然后將命令響應(yīng)(命令完成狀態(tài))通過服務(wù)傳輸 子系統(tǒng)傳遞給SCSI Initiator設(shè)備。
在實現(xiàn)本發(fā)明實施例過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題 根據(jù)業(yè)務(wù)應(yīng)用場合不同或根據(jù)系統(tǒng)的需要,要求進(jìn)行小數(shù)據(jù)傳輸或?qū)憫?yīng)時 間要求非常高,為了達(dá)到上述要求SCSI Initiator設(shè)備通常會發(fā)送連續(xù)的小塊 讀寫操作請求。但是如果SCSI Initiator設(shè)備發(fā)送連續(xù)的小塊讀寫操作請求, 服務(wù)傳輸子系統(tǒng)必須連續(xù)傳輸小塊數(shù)據(jù)和命令,因此導(dǎo)致服務(wù)傳輸子系統(tǒng)性 能低下。并且另一方面,SCSItarget設(shè)備也必須要處理大量的小塊數(shù)據(jù)請求, 并為小塊數(shù)據(jù)讀寫操作請求不斷分配資源或進(jìn)行相關(guān)運(yùn)算,如DMA傳輸、 RAID讀寫算法等,這些都會導(dǎo)致SCSI系統(tǒng)的讀寫性能降低。
發(fā)明內(nèi)容
本發(fā)明實施例要解決的問題是提供一種SCSI數(shù)據(jù)讀寫方法、系統(tǒng)和裝
置,解決現(xiàn)有技術(shù)中因為小塊數(shù)據(jù)讀寫操作請求所引起的服務(wù)傳輸子系統(tǒng)性
能低下,及導(dǎo)致SCSI系統(tǒng)的讀寫性能P條低的技術(shù)缺陷。
為達(dá)到上述目的,本發(fā)明實施例一方面提出一種SCSI數(shù)據(jù)讀寫方法,用 于提高SCSI系統(tǒng)的讀寫性能,包括以下步驟接收SCSI initiator設(shè)備的SCSI 請求;根據(jù)接收的所述SCSI請求判斷所述SCSI請求與緩存的聚合種子是否 連續(xù);如果判斷不連續(xù),則將所述SCSI請求作為新的聚合種子進(jìn)行緩存,在 后續(xù)SCSI請求與所述新的聚合種子連續(xù)時,將后續(xù)SCSI請求與所述新的聚
合種子進(jìn)行聚合;如果判斷連續(xù),則將所述SCSI請求與緩存的聚合種子進(jìn)行 聚合后生成新的聚合種子并緩存;在滿足下發(fā)條件后將緩存的所有SCSI請求 依次發(fā)送至所述SCSI target設(shè)備。
其中,所述判斷SCSI請求與緩存的聚合種子是否連續(xù)具體為判斷所述 SCSI請求與所述緩存的聚合種子操作屬性是否相同;如果都為讀操作或?qū)懖?作,則進(jìn)一步判斷所述SCSI請求與所述緩存的聚合種子所請求操作的地址是 否連續(xù);如果所述SCSI請求與所述緩存的聚合種子的操作相同且所請求操作 的地址連續(xù),則判斷所述SCSI請求與所述緩存的聚合種子連續(xù)。
其中,需要滿足的下發(fā)條件具體為聚合后的SCSI請求的長度大于或等 于指定的長度;或,聚合等待時間超時;或,已聚合的SCSI請求數(shù)量達(dá)到指 定請求數(shù)。
其中,所述方法還包括在所述緩存的聚合種子為讀操作請求,接收到 的所述SCSI請求為寫操作請求,且所述讀操作請求和所述寫操作請求所請求 操作的地址相同時;或,在所述緩存的聚合種子為寫操作請求,接收到的所 述SCSI請求為讀操作請求,且所述寫操作請求和所述讀操作請求所請求操作 的地址相同時,則先將緩存的所述SCSI請求發(fā)送至所述SCSI target設(shè)備。
其中,所述將SCSI請求與緩存的聚合種子進(jìn)行聚合具體為將所述SCSI 請求和所述緩存的聚合種子確定最初的起始扇區(qū)和相應(yīng)的操作長度。
其中,在所述將緩存所有的SCSI請求依次發(fā)送至所述SCSI target設(shè)備之 后,還包括接收所述SCSI target設(shè)備返回的SCSI響應(yīng);在判斷所述SCSI 響應(yīng)為聚合的SCSI請求的響應(yīng)后,根據(jù)聚合前的每個SCSI請求設(shè)置相應(yīng)的 SCSI響應(yīng)并返回給所述SCSI initiator設(shè)備。
本發(fā)明實施例還提出一種SCSI數(shù)據(jù)讀寫系統(tǒng),用于提高SCSI系統(tǒng)的讀 寫性能,包括SCSI initiator設(shè)備、SCSI target設(shè)備和請求聚合裝置,所述SCSI initiator設(shè)備,用于通過所述請求聚合裝置向所述SCSI target設(shè)備發(fā)送SCSI 請求,并接收所述SCSI target設(shè)備通過所述請求聚合裝置返回的SCSI響應(yīng); 所述SCSI target設(shè)備,用于通過所述請求聚合裝置接收所述SCSI initiator設(shè) 備發(fā)送的SCSI請求,執(zhí)行相應(yīng)操作,并將執(zhí)行結(jié)果通過所述SCSI響應(yīng)向所
述SCSI initiator設(shè)備返回;所述請求聚合裝置,用于接收所述SCSI initiator 設(shè)備的SCSI請求,并在所述SCSI請求與緩存的聚合種子連續(xù)時,將所述SCSI 請求與緩存的聚合種子進(jìn)行聚合后生成新的聚合種子并緩存,在所述SCSI請 求與緩存的聚合種子不連續(xù)時,將所述SCSI請求作為新的聚合種子進(jìn)行緩存, 在后續(xù)SCSI請求與所述新的聚合種子連續(xù)時,將后續(xù)SCSI請求與所述新的 聚合種子進(jìn)行聚合;并在滿足下發(fā)條件后將聚合后的SCSI請求發(fā)送至所述 SCSI target設(shè)備。
其中,所述請求聚合裝置還用于接收所述SCSI target設(shè)備返回的SCSI 響應(yīng),在判斷所述SCSI響應(yīng)為聚合的SCSI請求的響應(yīng)后,根據(jù)聚合前的每 個SCSI請求i殳置相應(yīng)的SCSI響應(yīng)并返回給所述SCSI initiatori殳備。
本發(fā)明實施例還提出一種請求聚合裝置,用于提高SCSI系統(tǒng)的讀寫性能, 包括SCSI請求接收模塊、請求判斷模塊、聚合模塊和發(fā)送模塊,所述SCSI 請求接收模塊,用于接收SCSI initiator設(shè)備的SCSI請求;所述請求判斷模塊, 用于根據(jù)所述SCSI請求接收模塊接收的所述SCSI請求判斷所述SCSI請求與 緩存的聚合種子是否連續(xù),在所述SCSI請求與緩存的聚合種子連續(xù)時,將所 述SCSI請求作為新的聚合種子進(jìn)行緩存;所述聚合模塊,用于在所述請求判 斷模塊判斷所述SCSI請求與緩存的聚合種子連續(xù)時,將所述SCSI請求與緩 存的聚合種子進(jìn)行聚合后生成新的聚合種子并緩存;所述發(fā)送模塊,用于在 滿足下發(fā)條件后將聚合后的SCSI請求發(fā)送至所述SCSI target設(shè)備。
其中,所述請求判斷模塊包括操作判斷子模塊和地址判斷子模塊,所述 操作判斷子模塊,用于判斷所述SCSI請求與所述緩存的聚合種子操作屬性是 否相同;所述地址判斷子模塊,用于在所述操作判斷子模塊判斷所述SCSI請 求與所述緩存的聚合種子操作屬性相同后,進(jìn)一步判斷所述SCSI請求與所述 緩存的聚合種子所請求操作的地址是否連續(xù),如果所述SCSI請求與所述緩存 的聚合種子的操作相同且所請求操作的地址連續(xù)則認(rèn)為所述SCSI請求與所述 緩存的聚合種子連續(xù)。
其中,還包括,SCSI響應(yīng)接收模塊,響應(yīng)判斷模塊和設(shè)置模塊,所述SCSI 響應(yīng)接收模塊,用于接收所述SCSI target設(shè)備返回的SCSI響應(yīng);所述響應(yīng)判
斷模塊,用于判斷所述SCSI響應(yīng)接收模塊接收到的所述SCSI響應(yīng)是否為聚 合的SCSI請求的響應(yīng);所述設(shè)置模塊,用于在所述響應(yīng)判斷模塊判斷接所述 SCSI響應(yīng)為聚合的SCSI請求的響應(yīng)后,根據(jù)聚合前的每個SCSI請求設(shè)置相 應(yīng)的SCSI響應(yīng)并返回給所述SCSI initiator設(shè)備。
本發(fā)明實施例還提出 一種數(shù)據(jù)讀寫系統(tǒng),位于存儲系統(tǒng)的發(fā)起端以及目 標(biāo)端之間,包括數(shù)據(jù)讀寫軟件以及運(yùn)行該數(shù)據(jù)讀寫軟件的硬件,其中該數(shù)據(jù) 讀寫軟件在硬件運(yùn)行的時候,用以使得數(shù)據(jù)讀寫系統(tǒng)執(zhí)行上述SCSI數(shù)據(jù)讀寫 方法中的步驟。
本發(fā)明實施例的技術(shù)方案具有以下優(yōu)點,通過將連續(xù)的小塊數(shù)據(jù)讀或?qū)?操作聚合為一個讀或?qū)懖僮髡埱?,從而減少了讀寫操作請求的傳輸次數(shù)和請 求的執(zhí)行時間,有效提高讀寫性能,并滿足特定讀寫算法的需求。
圖1為現(xiàn)有技術(shù)SCSI請求的處理流程圖2為本發(fā)明實施例一的SCSI Initiator設(shè)備向SCSI target設(shè)備發(fā)送SCSI
請求消息的流程圖3為本發(fā)明實施例二的SCSI Initiator設(shè)備向SCSI target設(shè)備發(fā)送SCSI
請求消息的流程圖4為本發(fā)明實施例三的SCSI數(shù)據(jù)讀寫方法流程圖; 圖5為本發(fā)明實施例四的SCSI數(shù)據(jù)讀寫方法示意圖; 圖6為本發(fā)明實施例五的SCSI數(shù)據(jù)讀寫方法示意圖; 圖7為本發(fā)明實施例SCSI數(shù)據(jù)讀寫系統(tǒng)結(jié)構(gòu)圖。
具體實施例方式
下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進(jìn)一步詳細(xì)描述 本發(fā)明實施例主要在于將SCSI Initiator設(shè)備發(fā)送的小塊數(shù)據(jù)的SCSI請 求進(jìn)行聚合,聚合為一個總的SCSI請求后向SCSI target設(shè)備發(fā)送,從而減輕 服務(wù)傳輸子系統(tǒng)的負(fù)擔(dān),減少讀/寫操作請求的傳輸次數(shù)和請求的執(zhí)行時間,
有效提高讀寫性能。
如圖2所示,為本發(fā)明實施例一的SCSI Initiator設(shè)備向SCSI target設(shè) 備發(fā)送SCSI請求消息的流程圖,首先在SCSI Initiator設(shè)備發(fā)送的SCSI請 求到達(dá)SCSI target設(shè)備之前,需要對SCSI Initiator設(shè)備發(fā)送的連續(xù)的小塊 數(shù)據(jù)讀寫操作請求進(jìn)行聚合,將多個SCSI請求聚合成一個SCSI請求,之 后通過服務(wù)傳輸子系統(tǒng)下發(fā)給SCSI target設(shè)備,從而能夠減小服務(wù)傳輸子 系統(tǒng)的傳輸次數(shù),并且也能夠提高SCSI target設(shè)備處理SCSI請求的速率, 完成相同的讀寫功能,提高系統(tǒng)讀寫性能。如對于10個SCSI Initiator設(shè) 備發(fā)送的連續(xù)的小塊數(shù)據(jù)讀操作請求,SCSI target設(shè)備需要進(jìn)行10次解析 請求,并根據(jù)請求進(jìn)行相應(yīng)的讀操作才能夠?qū)CSI Initiator設(shè)備所請求的 數(shù)據(jù)全部讀出并發(fā)送給SCSI Initiator設(shè)備,但是對于經(jīng)過聚合的SCSI請 求來說,只需進(jìn)行一次讀操作即可,從而大大降低了 SCSI target設(shè)備處理 SCSI請求的速率,提高了系統(tǒng)讀寫性能。
在上述實施例中首先對小塊數(shù)據(jù)進(jìn)行聚合再通過服務(wù)傳輸子系統(tǒng)發(fā)送 給SCSI target設(shè)備,但是也可以先通過服務(wù)傳輸子系統(tǒng)傳輸,再對服務(wù)傳 輸子系統(tǒng)傳輸后的請求進(jìn)行聚合,這樣雖然也能夠提高SCSI target設(shè)備處 理SCSI請求的速率,但是沒有減小服務(wù)傳輸子系統(tǒng)的傳輸次數(shù)。如圖3 所示,為本發(fā)明實施例二的SCSI Initiator設(shè)備向SCSI target設(shè)備發(fā)送SCSI 請求消息的流程圖。
如圖4所示,為本發(fā)明實施例三的SCSI數(shù)據(jù)讀寫方法流程圖,包括以下 步驟
步驟S401, SCSI initiator設(shè)備通過請求聚合裝置向SCSI target設(shè)備發(fā)送 SCSI請求,該SCSI請求可以是讀操作請求,也可以是寫操作請求。
步驟S402,請求聚合裝置接收到SCSI initiator設(shè)備的SCSI請求后,判 斷是否有緩存的聚合種子,如果沒有緩存的聚合種子,則將該SCSI請求進(jìn)行 緩存作為新的聚合種子。其中,對于請求聚合裝置來說可能會緩存有多個聚 合種子,在接收到SCSI請求后分別判斷其是否與緩存的聚合種子連續(xù),如其 與任一個聚合種子連續(xù)則將其與該聚合種子進(jìn)行聚合生成新的聚合種子。如
果有緩存的聚合種子,則進(jìn)一步判斷是否滿足下發(fā)條件,如果滿足下發(fā)條件
則將該SCSI請求發(fā)送給SCSI target設(shè)備。其中下發(fā)條件可以是聚合后的SCSI 請求的長度大于指定的長度,即聚合后的SCSI請求的長度已大于或等于SCSI 請求所能攜帶的最大的數(shù)據(jù)長度;或請求聚合裝置聚合等待時間超時;或已 聚合的SCSI請求數(shù)量達(dá)到指定請求數(shù),無法繼續(xù)聚合。
步驟S403,如果未滿足下發(fā)條件,則判斷該SCSI請求與緩存的聚合種 子(一個或多個新的SCSI請求,或者是一個或多個已聚合過的SCSI請求) 是否連續(xù)。如果不連續(xù)則將該SCSI請求進(jìn)行緩存作為新的聚合種子。但是作 為本發(fā)明的一個優(yōu)選方案,如果此次接收到的SCSI請求為寫操作請求,且所
述讀操作請求和所述寫操作請求所請求操作的地址相同時,則先將緩存的所
述SCSI請求發(fā)送至SCSI target設(shè)備,因為如果先將寫操作請求發(fā)送至SCSI target設(shè)備,再發(fā)送聚合后的SCSI請求,該聚合后的SCSI請求請求讀M目同 的地址,那么讀出的結(jié)果就是SCSI請求請求寫入的數(shù)據(jù)而不是原有的數(shù)據(jù), 因此就會造成讀寫的錯誤。
其中判斷SCSI請求與緩存的聚合種子是否連續(xù)具體為判斷SCSI請求 與緩存的聚合種子操作屬性是否相同,即判斷這兩個請求是否都為讀操作或 寫操作;如果這兩個請求都為讀操作或?qū)懖僮鳎瑒t進(jìn)一步判斷SCSI請求與緩 存的聚合種子所請求操作的地址是否連續(xù);如果所述SCSI請求與所述緩存的 聚合種子的操作相同且所請求操作的地址連續(xù),則判斷SCSI請求與緩存的聚 合種子連續(xù)。每個SCSI讀寫請求要求SCSI target設(shè)備對指定扇區(qū)讀寫指定長 度的數(shù)據(jù),CDB結(jié)構(gòu)體中的相應(yīng)字段表示讀寫請求的起始扇區(qū)和讀寫長度。 如果兩個讀寫請求CDB中的字段滿足下表中的條件1或條件2,即認(rèn)為兩個 讀寫請求連續(xù);
條件1: (A)起始扇區(qū)+讀/寫長度=(B)起始扇區(qū)
條件2: (B)起始扇區(qū)+讀/寫長度=(A)起始扇區(qū)
如果兩個SCSI讀寫請求(A、 B)連續(xù),可重新構(gòu)造一個SCSI請求(C ), 按照A、 B請求的起始扇區(qū)和長度填充C請求CDB和其它命令參數(shù)中的相應(yīng) 字段,完成相同的讀寫請求功能。
如針對條件1的新SCSI請求(C)的參數(shù)如下
(C)起始扇區(qū)=(A)起始扇區(qū)
(C)讀/寫長度=(A)讀寫長度+ (B)讀寫長度
如針對條件2的新SCSI請求(C)的參數(shù)如下
(C)起始扇區(qū)=(B)起始扇區(qū)
(C)讀/寫長度=(A)讀寫長度+ (B)讀寫長度
為了便于描述,以下將以具體的SCSI請求為例進(jìn)行描述
如圖5所示,為本發(fā)明實施例四的SCSI數(shù)據(jù)讀寫方法示意圖,SCSI initiator設(shè)備發(fā)送的三個SCSI請求中,SCSI請求1和SCSI請求3連續(xù), SCSI請求2和SCSI請求1及SCSI請求3不連續(xù)。首先將SCSI請求1緩 存作為聚合種子,在接收到SCSI請求2后,判斷SCSI請求2與SCSI請 求1不連續(xù),則將SCSI請求2進(jìn)行緩存作為一個新的聚合種子,再接收SCSI 請求3,并判斷SCSI請求3和緩存的聚合種子SCSI請求1和聚合種子SCSI 請求2是否連續(xù),SCSI請求3和緩存的聚合種子SCSI請求1連續(xù),因此 將SCSI請求1和SCSI請求3聚合生成SCSI請求4作為新的聚合種子與 SCSI請求2—起等待后續(xù)的SCSI請求進(jìn)行聚合。
如圖6所示,為本發(fā)明實施例五的SCSI數(shù)據(jù)讀寫方法示意圖,SCSI initiator設(shè)備發(fā)送的三個SCSI請求中,SCSI請求1、 SCSI請求2和SCSI 請求3均連續(xù),首先將SCSI請求1緩存作為聚合種子,在接收到SCSI請 求2后,判斷SCSI請求2與SCSI請求1 (聚合種子)連續(xù),則將SCSI 請求2和SCSI請求1聚合生成新的SCSI請求4 (新的聚合種子),再接收 SCSI請求3,并判斷SCSI請求3和緩存的聚合種子4連續(xù),因此將SCSI 請求4和SCSI請求3聚合生成新的SCSI請求5。
步驟S404,如果判斷連續(xù),則將所述SCSI請求與緩存的聚合種子進(jìn)行 聚合,并在滿足下發(fā)條件后將聚合后的SCSI請求發(fā)送至所述SCSI target設(shè)備。
步驟S405, SCSI target設(shè)備根據(jù)接收到的SCSI請求執(zhí)行相應(yīng)操作,并返 回SCSI響應(yīng)。
步驟S406,請求聚合裝置接收SCSI target設(shè)備返回的SCSI響應(yīng),并判
斷該SCSI響應(yīng)是否是聚合的SCSI請求的響應(yīng),如果不是則正常向SCSI Initiator設(shè)備轉(zhuǎn)發(fā),如果是,則需要根據(jù)聚合前的每個SCSI請求設(shè)置相應(yīng)的 SCSI響應(yīng)并返回給所述SCSI initiator i殳備。
如圖7所示,為本發(fā)明實施例SCSI數(shù)據(jù)讀寫系統(tǒng)結(jié)構(gòu)圖,該系統(tǒng)用于提 高SCSI系統(tǒng)的讀寫性能,包括SCSI initiator設(shè)備1、 SCSI target設(shè)備2和請 求聚合裝置3 , SCSI initiator設(shè)備1用于通過請求聚合裝置3向SCSI target設(shè) 備2發(fā)送SCSI請求,并接收SCSI target設(shè)備2通過請求聚合裝置3返回的 SCSI響應(yīng);SCSI target設(shè)備2用于通過請求聚合裝置3接收SCSI initiator 設(shè)備1發(fā)送的SCSI請求,執(zhí)行相應(yīng)操作,并將執(zhí)行結(jié)果通過所述SCSI響應(yīng) 向SCSI initiator設(shè)備1返回;請求聚合裝置3用于接收SCSI initiator設(shè)備1 的SCSI請求,并在所述SCSI請求與緩存的聚合種子連續(xù)時,將所述SCSI 請求與緩存的聚合種子進(jìn)行聚合后生成新的聚合種子并緩存,在所述SCSI請 求與緩存的聚合種子不連續(xù)時,將所述SCSI請求作為新的聚合種子進(jìn)行緩存, 在后續(xù)SCSI請求與所述新的聚合種子連續(xù)時,將后續(xù)SCSI請求與所述新的 聚合種子進(jìn)行聚合;并在滿足下發(fā)條件后將聚合后的SCSI請求發(fā)送至SCSI target設(shè)備2。
其中,請求聚合裝置3還用于接收SCSI target設(shè)備2返回的SCSI響應(yīng), 在判斷所述SCSI響應(yīng)為聚合的SCSI請求的響應(yīng)后,根據(jù)聚合前的每個SCSI 請求設(shè)置相應(yīng)的SCSI響應(yīng)并返回給SCSI initiator設(shè)備1 。
其中,請求聚合裝置3包括SCSI請求接收模塊31、請求判斷模塊32、 聚合模塊33和發(fā)送模塊34, SCSI請求接收模塊31用于接收SCSI initiator 設(shè)備1的SCSI請求;請求判斷模塊32用于根據(jù)SCSI請求接收模塊31接收 的SCSI請求判斷所述SCSI請求與緩存的聚合種子是否連續(xù),在所述SCSI 請求與緩存的聚合種子連續(xù)時,將所述SCSI請求作為新的聚合種子進(jìn)行緩存; 聚合模塊33用于在請求判斷模塊32判斷所述SCSI請求與緩存的聚合種子連 續(xù)時,將所述SCSI請求與緩存的聚合種子進(jìn)行聚合后生成新的聚合種子并緩 存;發(fā)送模塊34用于在滿足下發(fā)條件后將聚合后的SCSI請求發(fā)送至SCSI target設(shè)備2。其中,請求判斷模塊32包括操作判斷子模塊321和地址判斷子
模塊322,操作判斷子模塊321用于判斷所述SCSI請求與所述緩存的聚合種 子操作屬性是否相同;地址判斷子模塊322用于在操作判斷子模塊321判斷 所述SCSI請求與所述緩存的聚合種子操作屬性相同后,進(jìn)一步判斷所述SCSI 請求與所述緩存的聚合種子所請求操作的地址是否連續(xù),如果所述SCSI請求 與所述緩存的聚合種子的操作相同且所請求操作的地址連續(xù)則認(rèn)為所述SCSI 請求與所述緩存的聚合種子連續(xù)。
其中,請求聚合裝置3還包括SCSI響應(yīng)接收模塊35,響應(yīng)判斷模塊36 和設(shè)置模塊37, SCSI響應(yīng)接收模塊35用于接收SCSI target設(shè)備2返回的 SCSI響應(yīng);響應(yīng)判斷模塊36用于判斷SCSI響應(yīng)接收4莫塊35接收到的SCSI 響應(yīng)是否為聚合的SCSI請求的響應(yīng);設(shè)置模塊37用于在響應(yīng)判斷模塊36判 斷接所述SCSI響應(yīng)為聚合的SCSI請求的響應(yīng)后,根據(jù)聚合前的每個SCSI 請求設(shè)置相應(yīng)的SCSI響應(yīng)并返回給所述SCSI initiator設(shè)備1。
本發(fā)明實施例通過將連續(xù)的小塊數(shù)據(jù)讀或?qū)懖僮骶酆蠟橐粋€讀或?qū)懖僮?請求,從而減少了讀寫操作請求的傳輸次數(shù)和請求的執(zhí)行時間,有效提高讀 寫性能,并滿足特定讀寫算法的需求。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本 發(fā)明可借助^l件加必需的通用>^更件平臺的方式來實現(xiàn),當(dāng)然也可以通過石更 件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技 術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體 現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使 得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行 本發(fā)明各個實施例所述的方法。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的 普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn) 和潤飾,這些改進(jìn)和潤飾也應(yīng)一見為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種SCSI數(shù)據(jù)讀寫方法,用于提高SCSI系統(tǒng)的讀寫性能,其特征在于,包括以下步驟接收SCSI initiator設(shè)備的SCSI請求;根據(jù)接收的所述SCSI請求判斷所述SCSI請求與緩存的聚合種子是否連續(xù);如果判斷不連續(xù),則將所述SCSI請求作為新的聚合種子進(jìn)行緩存,在后續(xù)SCSI請求與所述新的聚合種子連續(xù)時,將后續(xù)SCSI請求與所述新的聚合種子進(jìn)行聚合;如果判斷連續(xù),則將所述SCSI請求與緩存的聚合種子進(jìn)行聚合后生成新的聚合種子并緩存;在滿足下發(fā)條件后將緩存的所有SCSI請求依次發(fā)送至所述SCSI target設(shè)備。
2、 如權(quán)利要求1所述SCSI數(shù)據(jù)讀寫方法,其特征在于,所述判斷SCSI 請求與緩存的聚合種子是否連續(xù)具體為判斷所述SCSI請求與所述緩存的聚合種子操作屬性是否相同; 如果都為讀操作或?qū)懖僮?,則進(jìn)一步判斷所述SCSI請求與所述緩存的聚合種子所請求操作的地址是否連續(xù);如果所述SCSI請求與所述緩存的聚合種子的操作相同且所請求操作的地址連續(xù),則判斷所述SCSI請求與所述緩存的聚合種子連續(xù)。
3、 如權(quán)利要求1所述SCSI數(shù)據(jù)讀寫方法,其特征在于,需要滿足的下 發(fā)條件具體為聚合后的SCSI請求的長度大于或等于指定的長度;或,聚合等待時間超時;或,已聚合的SCSI請求數(shù)量達(dá)到指定請求數(shù)。
4、 如權(quán)利要求2所述SCSI數(shù)據(jù)讀寫方法,其特征在于,所述方法還包 括在所述緩存的聚合種子為讀操作請求,接收到的所述SCSI請求為寫操作 請求,且所述讀操作請求和所述寫操作請求所請求操作的地址相同時;或,在所述緩存的聚合種子為寫操作請求,接收到的所述SCSI請求為讀操作請求,且所述寫操作請求和所述讀操作請求所請求操作的地址相同時,則先將緩存的所述SCSI請求發(fā)送至所述SCSI target設(shè)備。
5、 如權(quán)利要求1所述SCSI數(shù)據(jù)讀寫方法,其特征在于,所述將SCSI 請求與緩存的聚合種子進(jìn)行聚合具體為將所述SCSI請求和所述緩存的聚合種子確定最初的起始扇區(qū)和相應(yīng)的操 作長度。
6、 如權(quán)利要求1所述SCSI數(shù)據(jù)讀寫方法,其特征在于,在所述將緩存 所有的SCSI請求依次發(fā)送至所述SCSI target設(shè)備之后,還包括接收所述SCSI target設(shè)備返回的SCSI響應(yīng);在判斷所述SCSI響應(yīng)為聚合的SCSI請求的響應(yīng)后,根據(jù)聚合前的每個 SCSI請求設(shè)置相應(yīng)的SCSI響應(yīng)并返回給所述SCSI initiator i殳備。
7、 一種SCSI數(shù)據(jù)讀寫系統(tǒng),用于提高SCSI系統(tǒng)的讀寫性能,其特征在 于,包括SCSI initiator設(shè)備、SCSI target設(shè)備和請求聚合裝置,所述SCSI initiator設(shè)備,用于通過所述請求聚合裝置向所述SCSI target 設(shè)備發(fā)送SCSI請求,并接收所述SCSI target設(shè)備通過所述請求聚合裝置返回 的SCSI響應(yīng);所述SCSI target設(shè)備,用于通過所述請求聚合裝置接收所述SCSI initiator 設(shè)備發(fā)送的SCSI請求,執(zhí)行相應(yīng)操作,并將執(zhí)行結(jié)果通過所述SCSI響應(yīng)向 所述SCSI initiator i臾備返回;所述請求聚合裝置,用于接收所述SCSI initiator設(shè)備的SCSI請求,并在 所述SCSI請求與緩存的聚合種子連續(xù)時,將所述SCSI請求與緩存的聚合種 子進(jìn)行聚合后生成新的聚合種子并緩存,在所述SCSI請求與緩存的聚合種子 不連續(xù)時,將所述SCSI請求作為新的聚合種子進(jìn)行緩存,在后續(xù)SCSI請求 與所述新的聚合種子連續(xù)時,將后續(xù)SCSI請求與所述新的聚合種子進(jìn)行聚合; 并在滿足下發(fā)條件后將聚合后的SCSI請求發(fā)送至所述SCSI target設(shè)備。
8、 如權(quán)利要求7所述SCSI數(shù)據(jù)讀寫系統(tǒng),其特征在于,所述請求聚合 裝置還用于接收所述SCSI target設(shè)備返回的SCSI響應(yīng),在判斷所述SCSI響 應(yīng)為聚合的SCSI請求的響應(yīng)后,根據(jù)聚合前的每個SCSI請求設(shè)置相應(yīng)的 SCSI響應(yīng)并返回給所述SCSI initiator設(shè)備。
9、 一種請求聚合裝置,用于提高SCSI系統(tǒng)的讀寫性能,其特征在于, 包括SCSI請求接收模塊、請求判斷模塊、聚合模塊和發(fā)送模塊,所述SCSI請求接收模塊,用于接收SCSI initiator設(shè)備的SCSI請求; 所述請求判斷模塊,用于根據(jù)所述SCSI請求接收模塊接收的所述SCSI請求判斷所述SCSI請求與緩存的聚合種子是否連續(xù),在所述SCSI請求與緩存的聚合種子連續(xù)時,將所述SCSI請求作為新的聚合種子進(jìn)行緩存;所述聚合模塊,用于在所述請求判斷模塊判斷所述SCSI請求與緩存的聚合種子連續(xù)時,將所述SCSI請求與緩存的聚合種子進(jìn)行聚合后生成新的聚合種子并緩存;所述發(fā)送模塊,用于在滿足下發(fā)條件后將聚合后的SCSI請求發(fā)送至所述 SCSI target設(shè)備。
10、 如權(quán)利要求9所述請求聚合裝置,其特征在于,所述請求判斷模塊 包括操作判斷子模塊和地址判斷子模塊,所述操作判斷子模塊,用于判斷所述SCSI請求與所述緩存的聚合種子操 作屬性是否相同;所述地址判斷子才莫塊,用于在所述操作判斷子模塊判斷所述SCSI請求與 所述緩存的聚合種子操作屬性相同后,進(jìn)一步判斷所述SCSI請求與所述緩存 的聚合種子所請求操作的地址是否連續(xù),如果所述SCSI請求與所述緩存的聚 合種子的操作相同且所請求操作的地址連續(xù)則認(rèn)為所述SCSI請求與所述緩存 的聚合種子連續(xù)。
11、 如權(quán)利要求9所述請求聚合裝置,其特征在于,還包括,SCSI響應(yīng) 接收模塊,響應(yīng)判斷模塊和設(shè)置模塊,所述SCSI響應(yīng)接收模塊,用于接收所述SCSI target設(shè)備返回的SCSI響應(yīng);所述響應(yīng)判斷模塊,用于判斷所述SCSI響應(yīng)接收模塊接收到的所述SCSI 響應(yīng)是否為聚合的SCSI請求的響應(yīng); 所述設(shè)置模塊,用于在所述響應(yīng)判斷模塊判斷接所述SCSI響應(yīng)為聚合的 SCSI請求的響應(yīng)后,根據(jù)聚合前的每個SCSI請求設(shè)置相應(yīng)的SCSI響應(yīng)并返 回給所述SCSI initiator設(shè)備。
12、 一種數(shù)據(jù)讀寫系統(tǒng),位于存儲系統(tǒng)的發(fā)起端以及目標(biāo)端之間,其特 征在于,包括數(shù)據(jù)讀寫軟件以及運(yùn)行該數(shù)據(jù)讀寫軟件的硬件,其中該數(shù)據(jù)讀 寫軟件在硬件運(yùn)行的時候,用以使得數(shù)據(jù)讀寫系統(tǒng)執(zhí)行如權(quán)利要求1-6所述的 步驟。
全文摘要
本發(fā)明公開了一種SCSI數(shù)據(jù)讀寫方法,用于提高SCSI系統(tǒng)的讀寫性能,包括接收SCSI initiator設(shè)備的SCSI請求;根據(jù)接收的SCSI請求判斷所述SCSI請求與緩存的聚合種子是否連續(xù);如果不連續(xù),則將SCSI請求作為新的聚合種子進(jìn)行緩存;否則將SCSI請求與緩存的聚合種子進(jìn)行聚合后生成新的聚合種子并緩存;在滿足下發(fā)條件后將緩存的所有SCSI請求依次發(fā)送至所述SCSI target設(shè)備。本發(fā)明實施例通過將多個連續(xù)的小塊數(shù)據(jù)讀或?qū)懖僮骶酆蠟橐粋€讀或?qū)懖僮髡埱螅瑥亩鴾p少了讀寫操作請求的傳輸次數(shù)和請求的執(zhí)行時間,有效提高讀寫性能,并滿足特定讀寫算法的需求。
文檔編號G06F3/06GK101183298SQ200710160640
公開日2008年5月21日 申請日期2007年12月26日 優(yōu)先權(quán)日2007年12月26日
發(fā)明者鍵 張, 王嬋娟, 胡永寧 申請人:杭州華三通信技術(shù)有限公司