本發(fā)明涉及網(wǎng)絡(luò)存儲領(lǐng)域,特別是涉及一種SCST及其數(shù)據(jù)處理方法。
背景技術(shù):
網(wǎng)絡(luò)存儲是目前一種應(yīng)用廣泛的存儲方式,在網(wǎng)絡(luò)存儲中,通過SAN(Storage Area Network,存儲區(qū)域網(wǎng))來實(shí)現(xiàn)客戶端(計(jì)算機(jī)系統(tǒng))與存儲端(例如硬盤或磁盤等)之間的數(shù)據(jù)傳輸,而IP技術(shù)特點(diǎn)在網(wǎng)絡(luò)開發(fā)性上有強(qiáng)大的優(yōu)勢,故基于IP的SAN,即IPSAN具有廣闊的應(yīng)用前景。在IPSAN中,需要通過SCSI(Small Computer System Interface,小型計(jì)算機(jī)系統(tǒng)接口)來連接硬盤并進(jìn)行數(shù)據(jù)的傳輸。
SCST(SCSI target subsystem for Linux)為基于Linux系統(tǒng)的SCSI存儲端中間層子系統(tǒng),它為SCSI存儲端(即target端)驅(qū)動(dòng)提供了統(tǒng)一的內(nèi)核訪問接口,從而簡化target驅(qū)動(dòng)的設(shè)計(jì)開發(fā)。
SCST位于SCSI存儲端子系統(tǒng)的中間層之上(可視為位于SCSI存儲端子系統(tǒng)中的第二層),SCST通過其上設(shè)置的讀寫接口接收來自客戶端的命令以及數(shù)據(jù)后,可以對其進(jìn)行簡單的讀寫處理,但是,目前的SCST采用同步串行的方法對接收到的多個(gè)數(shù)據(jù)及命令進(jìn)行依次處理,處理時(shí)間長,進(jìn)而造成SCST回復(fù)客戶端的響應(yīng)時(shí)間變長。
因此,如何提供一種能夠減少響應(yīng)時(shí)間的SCST及其數(shù)據(jù)處理方法是本領(lǐng)域技術(shù)人員目前需要解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種SCST及其數(shù)據(jù)處理方法,采用異步方式,減少SCST回復(fù)客戶端的響應(yīng)時(shí)間。
為解決上述技術(shù)問題,本發(fā)明提供了一種SCST的數(shù)據(jù)處理方法,用于存儲區(qū)域網(wǎng),包括:
持續(xù)接收客戶端傳輸?shù)臄?shù)據(jù)請求,將所述數(shù)據(jù)請求按預(yù)設(shè)順序加入待處理鏈表內(nèi),返回完成響應(yīng)至所述客戶端;
依據(jù)所述待處理鏈表內(nèi)的處理順序,從所述待處理鏈表內(nèi)獲取預(yù)設(shè)個(gè)數(shù)的未處理的數(shù)據(jù)請求,并發(fā)送至底層處理模塊進(jìn)行處理;
當(dāng)所述底層處理模塊完成對一個(gè)數(shù)據(jù)請求的處理后,接收所述底層處理模塊發(fā)送的回調(diào)異步響應(yīng),其中,所述回調(diào)異步響應(yīng)內(nèi)包含有處理成功或處理失敗的信息;
若接收到的所述回調(diào)異步響應(yīng)內(nèi)包含處理失敗的信息,則發(fā)送失敗響應(yīng)至所述客戶端。
優(yōu)選地,所述接收所述底層處理模塊發(fā)送的回調(diào)異步響應(yīng)后還包括:
將所述回調(diào)異步響應(yīng)對應(yīng)的數(shù)據(jù)請求從所述待處理鏈表內(nèi)刪除。
優(yōu)選地,所述數(shù)據(jù)請求為讀取請求或?qū)懭胝埱螅耶?dāng)所述數(shù)據(jù)請求為寫入請求時(shí),所述寫入請求內(nèi)攜帶有待寫入的數(shù)據(jù)。
優(yōu)選地,所述預(yù)設(shè)個(gè)數(shù)大于1。
優(yōu)選地,所述發(fā)送至底層處理模塊進(jìn)行處理的過程具體為:
將所述預(yù)設(shè)個(gè)數(shù)的數(shù)據(jù)請求分別發(fā)送至不同的底層處理模塊進(jìn)行處理。
優(yōu)選地,所述底層處理模塊為硬盤或磁盤。
本發(fā)明還提供了一種SCST,用于存儲區(qū)域網(wǎng),包括:
第一響應(yīng)模塊,用于持續(xù)接收客戶端傳輸?shù)臄?shù)據(jù)請求,將所述數(shù)據(jù)請求按預(yù)設(shè)順序加入待處理鏈表內(nèi),返回完成響應(yīng)至所述客戶端;
請求選擇模塊,用于依據(jù)所述待處理鏈表內(nèi)的處理順序,從所述待處理鏈表內(nèi)獲取預(yù)設(shè)個(gè)數(shù)的數(shù)據(jù)請求,并發(fā)送至底層處理模塊進(jìn)行處理;
回調(diào)異步響應(yīng)接收模塊,用于當(dāng)所述底層處理模塊完成對一個(gè)數(shù)據(jù)請求的處理后,接收所述底層處理模塊發(fā)送的回調(diào)異步響應(yīng),其中,所述回調(diào)異步響應(yīng)內(nèi)包含有處理成功或處理失敗的信息;若接收到的所述回調(diào)異步響應(yīng)內(nèi)包含處理失敗的信息,觸發(fā)第二響應(yīng)模塊;
所述第二響應(yīng)模塊,用于發(fā)送失敗響應(yīng)至所述客戶端。
本發(fā)明提供了一種SCST的數(shù)據(jù)處理方法,用于存儲區(qū)域網(wǎng),該方法采用異步方式(即不用阻塞當(dāng)前線程來等待處理完成,而是允許后續(xù)操作,直至其它線程將處理完成,并回調(diào)通知此線程),在接收到客戶端傳輸?shù)臄?shù)據(jù)請求后,將數(shù)據(jù)請求加入待處理鏈表內(nèi)即返回完成響應(yīng)至客戶端,而不等待該數(shù)據(jù)請求處理完成,當(dāng)后續(xù)該數(shù)據(jù)請求處理完成后,由底層處理模塊發(fā)送回調(diào)異步響應(yīng),通知SCST處理完成??梢姡c同步方式相比,本方法大大減少了響應(yīng)時(shí)間。本發(fā)明還提供了一種SCST,也具有上述優(yōu)點(diǎn),在此不再贅述。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對現(xiàn)有技術(shù)和實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種SCST的數(shù)據(jù)處理方法的過程的流程圖;
圖2為本發(fā)明提供的一種SCST的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明的核心是提供一種SCST及其數(shù)據(jù)處理方法,采用異步方式,減少SCST回復(fù)客戶端的響應(yīng)時(shí)間。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明提供了一種SCST的數(shù)據(jù)處理方法,用于存儲區(qū)域網(wǎng),參見圖1所示,圖1為本發(fā)明提供的一種SCST的數(shù)據(jù)處理方法的過程的流程圖;該方法包括:
步驟s101:持續(xù)接收客戶端傳輸?shù)臄?shù)據(jù)請求,將數(shù)據(jù)請求按預(yù)設(shè)順序加入待處理鏈表內(nèi),返回完成響應(yīng)至客戶端;
可以理解的是,SCST接收到一個(gè)數(shù)據(jù)請求后,即按照預(yù)設(shè)順序?qū)⒃摂?shù)據(jù)請求加入待處理鏈表內(nèi),并返回完成響應(yīng);之后再接收下一個(gè)數(shù)據(jù)請求,然后將其加入待處理鏈表內(nèi),并返回完成響應(yīng),以此類推,持續(xù)以上操作。
其中,這里的預(yù)設(shè)順序優(yōu)選為數(shù)據(jù)請求加入待處理鏈表內(nèi)的順序,當(dāng)然本發(fā)明對此不作限定。
另外,這里的數(shù)據(jù)請求為讀取請求或?qū)懭胝埱螅耶?dāng)數(shù)據(jù)請求為寫入請求時(shí),寫入請求內(nèi)攜帶有待寫入的數(shù)據(jù)。
步驟s102:依據(jù)待處理鏈表內(nèi)的處理順序,從待處理鏈表內(nèi)獲取預(yù)設(shè)個(gè)數(shù)的未處理的數(shù)據(jù)請求,并發(fā)送至底層處理模塊進(jìn)行處理;
其中,這里的處理順序,可以為上述預(yù)設(shè)順序,也可以為重新定義的其他順序,本發(fā)明對此不作限定。
步驟s103:當(dāng)?shù)讓犹幚砟K完成對一個(gè)數(shù)據(jù)請求的處理后,接收底層處理模塊發(fā)送的回調(diào)異步響應(yīng),其中,回調(diào)異步響應(yīng)內(nèi)包含有處理成功或處理失敗的信息;
作為優(yōu)選地,接收底層處理模塊發(fā)送的回調(diào)異步響應(yīng)后還包括:
將回調(diào)異步響應(yīng)對應(yīng)的數(shù)據(jù)請求從待處理鏈表內(nèi)刪除。
可以理解的是,通過將處理完成的數(shù)據(jù)請求刪除,能夠保證待處理鏈表內(nèi)均為未處理的數(shù)據(jù)請求,能夠避免出現(xiàn)重復(fù)處理的情況,也便于調(diào)整處理順序即根據(jù)處理順序選擇預(yù)設(shè)個(gè)數(shù)的未處理的數(shù)據(jù)請求。當(dāng)然,也可以不刪除數(shù)據(jù)請求,而是將待處理鏈表內(nèi)處理完成的數(shù)據(jù)請求標(biāo)記為已完成請求。也可以采用其他方式,本發(fā)明對此不作限定。
步驟s104:若接收到的回調(diào)異步響應(yīng)內(nèi)包含處理失敗的信息,則發(fā)送失敗響應(yīng)至客戶端。
作為優(yōu)選地,預(yù)設(shè)個(gè)數(shù)大于1。
進(jìn)一步可知,發(fā)送至底層處理模塊進(jìn)行處理的過程具體為:
將預(yù)設(shè)個(gè)數(shù)的數(shù)據(jù)請求分別發(fā)送至不同的底層處理模塊進(jìn)行處理。
可以理解的是,由多個(gè)底層處理模塊同時(shí)進(jìn)行處理,即采用并發(fā)工作方式,能夠極大地減少數(shù)據(jù)請求的處理時(shí)間,其中,以上僅為優(yōu)選實(shí)施例,本發(fā)明不限定并發(fā)線程的數(shù)量,即這里的預(yù)設(shè)個(gè)數(shù)與底層處理模塊的個(gè)數(shù)對應(yīng)關(guān)系本發(fā)明并不限定,例如,當(dāng)預(yù)設(shè)個(gè)數(shù)為4時(shí),可以將4個(gè)數(shù)據(jù)請求分別發(fā)送至4個(gè)底層處理模塊進(jìn)行處理,也可以將4個(gè)數(shù)據(jù)請求分別發(fā)送至2個(gè)底層處理模塊進(jìn)行處理,具體可根據(jù)實(shí)際選擇而定。
其中,這里的底層處理模塊為硬盤或磁盤。當(dāng)然,本發(fā)明對此不作限定。
另外,在實(shí)際工作時(shí),客戶端與SCST之間的信息交互過程具體如下:
由客戶端的SCSI適配器發(fā)送一個(gè)數(shù)據(jù)請求。
將數(shù)據(jù)請求封裝到TCP/IP包中并送入到以太網(wǎng)絡(luò)。
SCST從TCP/IP包中抽取出數(shù)據(jù)請求并執(zhí)行相關(guān)操作后返回相應(yīng)的響應(yīng)及數(shù)據(jù)。
把響應(yīng)及數(shù)據(jù)封裝到TCP/IP包中,并通過以太網(wǎng)絡(luò)發(fā)送回客戶端。
本發(fā)明提供了一種SCST的數(shù)據(jù)處理方法,用于存儲區(qū)域網(wǎng),該方法采用異步方式(即不用阻塞當(dāng)前線程來等待處理完成,而是允許后續(xù)操作,直至其它線程將處理完成,并回調(diào)通知此線程),在接收到客戶端傳輸?shù)臄?shù)據(jù)請求后,將數(shù)據(jù)請求加入待處理鏈表內(nèi)即返回完成響應(yīng)至客戶端,而不等待該數(shù)據(jù)請求處理完成,當(dāng)后續(xù)該數(shù)據(jù)請求處理完成后,由底層處理模塊發(fā)送回調(diào)異步響應(yīng),通知SCST處理完成??梢?,與同步方式相比,本方法大大減少了響應(yīng)時(shí)間。
本發(fā)明還提供了一種SCST,用于存儲區(qū)域網(wǎng),參見圖2所示,圖2為本發(fā)明提供的一種SCST的結(jié)構(gòu)示意圖。該SCST包括:
第一響應(yīng)模塊11,用于持續(xù)接收客戶端傳輸?shù)臄?shù)據(jù)請求,將數(shù)據(jù)請求按預(yù)設(shè)順序加入待處理鏈表內(nèi),返回完成響應(yīng)至客戶端;
請求選擇模塊12,用于依據(jù)待處理鏈表內(nèi)的處理順序,從待處理鏈表內(nèi)獲取預(yù)設(shè)個(gè)數(shù)的數(shù)據(jù)請求,并發(fā)送至底層處理模塊進(jìn)行處理;
回調(diào)異步響應(yīng)接收模塊13,用于當(dāng)?shù)讓犹幚砟K完成對一個(gè)數(shù)據(jù)請求的處理后,接收底層處理模塊發(fā)送的回調(diào)異步響應(yīng),其中,回調(diào)異步響應(yīng)內(nèi)包含有處理成功或處理失敗的信息;若接收到的回調(diào)異步響應(yīng)內(nèi)包含處理失敗的信息,觸發(fā)第二響應(yīng)模塊14;
第二響應(yīng)模塊14,用于發(fā)送失敗響應(yīng)至客戶端。
本發(fā)明提供了一種SCST,用于存儲區(qū)域網(wǎng),采用異步方式(即不用阻塞當(dāng)前線程來等待處理完成,而是允許后續(xù)操作,直至其它線程將處理完成,并回調(diào)通知此線程),在接收到客戶端傳輸?shù)臄?shù)據(jù)請求后,將數(shù)據(jù)請求加入待處理鏈表內(nèi)即返回完成響應(yīng)至客戶端,而不等待該數(shù)據(jù)請求處理完成,當(dāng)后續(xù)該數(shù)據(jù)請求處理完成后,由底層處理模塊發(fā)送回調(diào)異步響應(yīng),通知SCST處理完成??梢姡c同步方式相比,本發(fā)明大大減少了響應(yīng)時(shí)間。
需要說明的是,在本說明書中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其他實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。