專利名稱:Linux系統(tǒng)中通過iSCSI實現(xiàn)的儲存服務器的制作方法
技術領域:
本發(fā)明涉及一種儲存服務器,且特別是一種于Linux系統(tǒng)中通過因特網(wǎng)小 型計算機系統(tǒng)接口實現(xiàn)的儲存服務器。
背景技術:
硬盤技術日新月異,硬盤空間由兆字節(jié)(Mega Byte, MB)提升至千兆位組 (GigaByte,GB)。隨著網(wǎng)絡技術進歩,名為因特網(wǎng)小型計算機系統(tǒng)接口(internet Small Computer Systems Interface, iSCSI)的通訊協(xié)議標準被IETF提出,用以通 過TCP/IP通訊協(xié)議串接多臺計算機主機而形成一虛擬的網(wǎng)絡儲存服務器,其 擁有高速傳輸能力及無限制擴充虛擬儲存設備容量的擴充/備份能力。通過 iSCSI通訊協(xié)議實現(xiàn)的儲存服務器可由一個或多個目標端(Target)組成, 一次存 儲數(shù)據(jù)稱為會話(Session),發(fā)起會話一端稱為發(fā)起端(Initator),發(fā)起端傳送請 求(Request)封包與目標端建立會話,目標端接收請求封包以響應并建立會話聯(lián) 機。
如圖1所示的儲存服務器中的目標端的系統(tǒng)架構示意圖,當一個請求封包 通過TCP/IP網(wǎng)絡傳送到目標端100時,需經(jīng)過網(wǎng)絡子系統(tǒng)110、 iSCSI模塊 120、 SCSI模塊130,然后再傳到SCSI子系統(tǒng)140。 iSCSI模塊120具有獨立 的執(zhí)行體負責由網(wǎng)絡子系統(tǒng)110解析的iSCSI封包解析出SCSI指令與數(shù)據(jù)。 之后,再交由SCSI模塊130解析這些SCSI指令與數(shù)據(jù)。待SCSI模塊130解 析完成后,將解析結果提交至SCSI子系統(tǒng)140,并等待SCSI子系統(tǒng)140執(zhí)行 該些解析結果后產(chǎn)生的響應數(shù)據(jù)(亦即執(zhí)行SCSI指令與數(shù)據(jù)后的結果)。上述 各層以交握方式進行進程切換,每一層皆充當請求者與響應者的角色。舉例來 說,當目標端100接收網(wǎng)絡封包后,網(wǎng)絡子系統(tǒng)110發(fā)出請求封包(或信號)通 知iSCSI模塊120切換為用以執(zhí)行解析網(wǎng)絡封包中的iSCSI封包數(shù)據(jù)的角色, 并由iSCSI模塊120響應此請求;SCSI模塊130在接收到iSCSI模塊120的 請求后,在執(zhí)行解析后的SCSI指令與數(shù)據(jù),并發(fā)起一請求SCSI子系統(tǒng)140提交執(zhí)行結果。在大量傳輸?shù)木W(wǎng)絡環(huán)境(大壓力環(huán)境)下,前述交握式處理方式 造成進程切換次數(shù)大幅提升。每一個聯(lián)機請求皆需通過各層間的進程切換,特
別是iSCSI模塊120及SCSI模塊130—方面需接收下層(網(wǎng)絡子系統(tǒng)IIO)的聯(lián) 機請求并進一步將執(zhí)行結果提交給上層(SCSI子系統(tǒng)140),另一方面需傳送響 應封包(信號)用以響應下層的請求。如此頻繁的進程切換造成儲存服務器的效 能瓶頸,降低儲存服務器的執(zhí)行速度。
發(fā)明內(nèi)容
鑒于上述儲存服務器中的目標端需通過各層組件的繁復交握程序(傳送要 求及等待響應)建立會話,各層組件進程切換頻繁、易造成儲服務器的效能瓶 頸。本發(fā)明提供了一種Litiux系統(tǒng)中通過因特網(wǎng)小型計算機系統(tǒng)接口實現(xiàn)的儲 存服務器,通過網(wǎng)絡子系統(tǒng)與小型計算機系統(tǒng)接口(Small Computer Systems Interface, SCSI)子系統(tǒng)的內(nèi)嵌模塊將因特網(wǎng)小型計算機系統(tǒng)接口層(internet Small Computer Systems Interface, iSCSI)和SCSI層的功能嵌入網(wǎng)絡子系統(tǒng)和 SCSI子系統(tǒng),使網(wǎng)絡子系統(tǒng)和SCSI子系統(tǒng)各為獨立的執(zhí)行體,避免各層之間 頻繁的進程切換,以及避免各層之間多次的內(nèi)存數(shù)據(jù)拷貝動作,數(shù)據(jù)傳送期間 無須在各層進行拷貝動作,可節(jié)省數(shù)據(jù)傳遞所需時間,使整體運作效能提升。
為達上述目的,本發(fā)明的Linux系統(tǒng)中通過因特網(wǎng)小型計算機系統(tǒng)接口 (iSCSI)實現(xiàn)的儲存服務器,包括網(wǎng)絡子系統(tǒng)與SCSI子系統(tǒng)兩部分
第一部份為網(wǎng)絡子系統(tǒng),其接收發(fā)起端傳送的網(wǎng)絡封包。在網(wǎng)絡子系統(tǒng)中 內(nèi)嵌有因特網(wǎng)小型計算機系統(tǒng)接口(internet Small Computer Systems Interface, iSCSI)模塊以及小型計算機系統(tǒng)接口(Small Computer Systems Interface, SCSI) 模塊。當因特網(wǎng)小型計算機系統(tǒng)接口模塊被網(wǎng)絡子系統(tǒng)調(diào)用時,判斷網(wǎng)絡封包 為iSCSI請求封包,并解析出當中的SCSI請求指令或SCSI數(shù)據(jù);小型計算機 系統(tǒng)接口模塊被因特網(wǎng)小型計算機系統(tǒng)接口模塊調(diào)用,接收SCSI請求指令或 SCSI數(shù)據(jù),并封裝為SCSI子系統(tǒng)識別格式封包。
第二部份為SCSI子系統(tǒng),其接收前述SCSI識別格式封包,并返回網(wǎng)絡 子系統(tǒng)識別格式封包至網(wǎng)絡子系統(tǒng)以完成接收程序。SCSI子系統(tǒng)亦內(nèi)嵌有小
型計算機系統(tǒng)接口模塊及因特網(wǎng)小型計算機系統(tǒng)接口模塊。小型計算機系統(tǒng)接
口模塊被SCSI子系統(tǒng)調(diào)用,用以判斷SCSI子系統(tǒng)所傳送指令為響應指令。之后,小型計算機系統(tǒng)接口模塊再調(diào)用因特網(wǎng)小型計算機系統(tǒng)接口模塊,因特 網(wǎng)小型計算機系統(tǒng)接口模塊依據(jù)響應指令產(chǎn)生iSCSI響應格式數(shù)據(jù),并將該 iSCSI響應格式數(shù)據(jù)封裝為網(wǎng)絡子系統(tǒng)識別格式封包而傳送予網(wǎng)絡子系統(tǒng)。
依照本發(fā)明的較佳實施例所述的Linux系統(tǒng)中通過因特網(wǎng)小型計算機系 統(tǒng)接口實現(xiàn)的儲存服務器,其中網(wǎng)絡子系統(tǒng)內(nèi)嵌的因特網(wǎng)小型計算機系統(tǒng)接口 模塊判斷接收的網(wǎng)絡封包不是iSCSI請求封包時,將網(wǎng)絡封包傳遞給網(wǎng)絡子系 統(tǒng)執(zhí)行標準的封包解析流程;另外,SCSI子系統(tǒng)內(nèi)嵌的小型計算機系統(tǒng)接口 模塊判斷SCSI子系統(tǒng)所傳送的指令不為響應指令時,則SCSI子系統(tǒng)通過標 準流程把響應提交給相關的應用程序。
依照本發(fā)明的較佳實施例所述的Linux系統(tǒng)中通過因特網(wǎng)小型計算機系 統(tǒng)接口實現(xiàn)的儲存服務器,其中前述網(wǎng)絡封包為TCP層的數(shù)據(jù)封包;iSCSI 請求封包為包含iSCSI請求指令的iSCSI封包。
依照本發(fā)明的較佳實施例所述的Linux系統(tǒng)中通過因特網(wǎng)小型計算機系 統(tǒng)接口實現(xiàn)的儲存服務器,其中網(wǎng)絡子系統(tǒng)的小型計算機系統(tǒng)接口模塊通過調(diào) 用SCSI子系統(tǒng)提供的接口,將SCSI識別格式封包傳送到SCSI子系統(tǒng);SCSI 子系統(tǒng)的因特網(wǎng)小型計算機系統(tǒng)接口模塊亦通過調(diào)用網(wǎng)絡子系統(tǒng)提供的接口, 傳送網(wǎng)絡子系統(tǒng)識別格式封包。
由上所述,本發(fā)明的Linux系統(tǒng)中通過因特網(wǎng)小型計算機系統(tǒng)接口實現(xiàn)的 儲存服務器的網(wǎng)絡子系統(tǒng)與小型計算機系統(tǒng)接口子系統(tǒng)各自內(nèi)嵌一組因特網(wǎng) 小型計算機系統(tǒng)接口模塊及小型計算機系統(tǒng)接口模塊,用以專門作為接收進行 或作為發(fā)送進程的用途,各模塊不需作接收或發(fā)送的進程轉換(切換為傳送要 求/響應指令的發(fā)起者),因此可節(jié)省進程轉換造成的系統(tǒng)效能瓶頸。另外,由 于要求與響應任務的發(fā)起端(網(wǎng)絡子系統(tǒng)與SCSI子系統(tǒng))的運作為各自獨立的, 因此要求與發(fā)起指令可并行操作,提升整體儲存服務器的處理速度。
有關本發(fā)明的詳細特征與實作,茲配合圖示在實施方式中詳細說明如下, 其內(nèi)容足以使任何熟悉本領域的技術人員了解本發(fā)明的技術內(nèi)容并據(jù)以實施, 且根據(jù)本說明書所揭露的內(nèi)容及圖式,可輕易地理解本發(fā)明相關的目的及優(yōu)
圖1為現(xiàn)有技術儲存服務器中的目標端的系統(tǒng)架構示意圖2為本發(fā)明較佳實施例的儲存服務器中的目標端的系統(tǒng)架構示意圖3為本發(fā)明較佳實施例的網(wǎng)絡子系統(tǒng)處理接收的網(wǎng)絡封包的流程圖4為本發(fā)明較佳實施例的SCSI子系統(tǒng)處理響應指令的流程圖。
其中,附圖標記為
100、 200 目標端
110、 210 網(wǎng)絡子系統(tǒng)
120、 212、 222 因特網(wǎng)小型計算機系統(tǒng)接口模塊 130、 214、 224 小型計算機系統(tǒng)接口模塊 140、 220 小型計算機系統(tǒng)接口子系統(tǒng)
具體實施例方式
本發(fā)明的目的及其執(zhí)行方法在下列較佳實施例中詳細說明。然而本發(fā)明的 概念亦可用于其它范圍。以下列舉的實施例僅用于說明本發(fā)明的目的與執(zhí)行方 法,并非用以限制其范圍。
圖2為本發(fā)明較佳實施例的儲存服務器中的目標端的系統(tǒng)架構示意圖。請 參照圖2,在本實施例中,Linux系統(tǒng)中通過因特網(wǎng)小型計算機系統(tǒng)接口(iSCSI) 實現(xiàn)的儲存服務器,例如由一個或多個目標端200構成,目標端200中包括網(wǎng) 絡子系統(tǒng)210以及小型計算機系統(tǒng)接口 (Small Computer Systems Interface, SCSI)子系統(tǒng)220兩部分。在網(wǎng)絡子系統(tǒng)210及SCSI子系統(tǒng)220中各自內(nèi)嵌 一組因特網(wǎng)小型計算機系統(tǒng)接口(intemai Small Computer Systems Interface, iSCSI)模塊(212、 222)及SCSI模塊(214、 224)。
網(wǎng)絡子系統(tǒng)210接收來自發(fā)起端傳送的網(wǎng)絡封包,此網(wǎng)絡封包為TCP層 的數(shù)據(jù)封包。之后,網(wǎng)絡子系統(tǒng)210調(diào)用iSCSI模塊212判斷網(wǎng)絡封包是否具 有iSCSI請求封包,并解析出包覆于此iSCSI請求封包的SCSI請求指令或是 SCSI數(shù)據(jù)。所謂的iSCSI請求封包即是包含iSCSI請求指令的iSCSI封包,在 本實施例中,例如先判斷網(wǎng)絡封包中有無存在iSCSI檔頭以快速判斷是否為 iSCSI封包,隨后再解析iSCSI封包中的SCSI請求指令或是SCSI數(shù)據(jù),以判 斷是否為SCSI請求封包。之后,iSCSI模塊212調(diào)用SCSI模塊214以接收解析的SCSI請求指令或是SCSI數(shù)據(jù),并將這些數(shù)據(jù)封裝為SCSI識別格式封包。 iSCSI模塊再調(diào)用SCSI子系統(tǒng)220提供的接口 ,將此SCSI識別格式封包傳送 到SCSI子系統(tǒng)220。
由于SCSI子系統(tǒng)220內(nèi)嵌有獨立的iSCSI模塊222與SCSI模塊224,因 此可同步處理響應指令而不需等待iSCSI模塊222與SCSI模塊224由請求端 進程轉換為回應端。SCSI子系統(tǒng)220接收前述的SCSI識別格式封包后,判斷 需返回網(wǎng)絡子系統(tǒng)識別格式封包至網(wǎng)絡子系統(tǒng)210以完成接收程序。則SCSI 子系統(tǒng)220先調(diào)用SCSI模塊224, SCSI模塊224判斷SCSI子系統(tǒng)220傳送 為響應指令。之后,SCSI模塊224調(diào)用iSCSI模塊222,并依據(jù)此響應指令產(chǎn) 生iSCSI響應格式數(shù)據(jù),并將此iSCSI響應格式數(shù)據(jù)封裝為網(wǎng)絡子系統(tǒng)識別 格式封包而傳送予網(wǎng)絡子系統(tǒng)210。其中,iSCSI模塊222調(diào)用網(wǎng)絡子系統(tǒng)210 提供的接口,將網(wǎng)絡子系統(tǒng)識別格式封包傳送到網(wǎng)絡子系統(tǒng)210。
圖3為本發(fā)明較佳實施例的網(wǎng)絡子系統(tǒng)處理接收的網(wǎng)絡封包的流程圖。請 參照圖3,發(fā)起端傳送建立會話請求的網(wǎng)絡封包,首先目標端接收網(wǎng)絡封包(步 驟S310);之后,網(wǎng)絡子系統(tǒng)調(diào)用內(nèi)嵌的iSCSI模塊提供的接口(步驟S320), 并判斷網(wǎng)絡封包是否為iSCSI相關封包(步驟S330):若為iSCSI相關封包(步驟 S330的是),則進一步以調(diào)用的iSCSI模塊解析iSCSI封包中的SCSI指令或數(shù) 據(jù)(步驟S340);反之(步驟S330的否),則以網(wǎng)絡子系統(tǒng)處理網(wǎng)絡封包的標準 流程,直接將網(wǎng)絡封包提交給相關應用程序(步驟S350),例如當iSCSI模塊判 斷網(wǎng)絡封包不是iSCSI請求封包時,將網(wǎng)絡封包提交給TCP應用程序;然后, iSCSI模塊再調(diào)用內(nèi)嵌的小型計算機系統(tǒng)接口模塊將小型計算機系統(tǒng)接口指令 與數(shù)據(jù)封裝為識別格式封包(步驟S360)以及傳送此識別格式封包到小型計算 機系統(tǒng)接口子系統(tǒng),以完成接收過程(步驟S370)。
圖4為本發(fā)明較佳實施例的SCSI子系統(tǒng)處理響應指令額流程圖。請參照 圖4, SCSI子系統(tǒng)執(zhí)行以下步驟以通過內(nèi)嵌于SCSI子系統(tǒng)的iSCSI模塊及SCSI 模塊進行響應請求封包進程。首先,SCSI子系統(tǒng)接收并執(zhí)行SCSI指令(步驟 S410)及返回執(zhí)行結果或數(shù)據(jù)(步驟S420);之后SCSI子系統(tǒng)調(diào)用SCSI模塊判 斷是否為SCSI層響應指令(步驟S430):若是則通過調(diào)用的SCSI模塊取出響 應指令(步驟S440);反之,直接將執(zhí)行結果或數(shù)據(jù)提交給相關的應用程序(步 驟S450),例如當SCSI模塊發(fā)現(xiàn)SCSI子系統(tǒng)傳送的指令不是響應指令時,則
8直接以SCSI子系統(tǒng)標準流程,由標準流程負責提交該指令給應用程序執(zhí)行。
然后,SCSI模塊調(diào)用iSCSI模塊依據(jù)響應指令產(chǎn)生iSCSI響應格式數(shù)據(jù),并 將此iSCSI響應格式數(shù)據(jù)封裝為網(wǎng)絡子系統(tǒng)識別格式封包(步驟S460),并調(diào)用 網(wǎng)絡子系統(tǒng)所提供的接口傳送此網(wǎng)絡子系統(tǒng)識別格式封包至網(wǎng)絡子系統(tǒng)(歩驟 S470)。
雖然本發(fā)明已以一較佳實施例揭露如上,然其并非用以限定本發(fā)明,在 不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領域的技術人員當可根據(jù)本發(fā)明 作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的 權利要求的保護范圍。
9
權利要求
1. 一種Linux系統(tǒng)中通過iSCSI實現(xiàn)的儲存服務器,其特征在于,包括一網(wǎng)絡子系統(tǒng),接收一發(fā)起端傳送的網(wǎng)絡封包,該網(wǎng)絡子系統(tǒng)內(nèi)嵌有一因特網(wǎng)小型計算機系統(tǒng)接口模塊,該因特網(wǎng)小型計算機系統(tǒng)接口模塊被該網(wǎng)絡子系統(tǒng)調(diào)用,以判斷該網(wǎng)絡封包具有一iSCSI請求封包,并解析出一SCSI請求指令或一SCSI數(shù)據(jù);以及一小型計算機系統(tǒng)接口模塊,該小型計算機系統(tǒng)接口模塊被該因特網(wǎng)小型計算機系統(tǒng)接口模塊調(diào)用,用以接收該SCSI請求指令或該SCSI數(shù)據(jù),并封裝為一SCSI識別格式封包;以及一SCSI子系統(tǒng),接收該SCSI識別格式封包,并返回一網(wǎng)絡子系統(tǒng)識別格式封包至該網(wǎng)絡子系統(tǒng)以完成接收程序,該SCSI子系統(tǒng)內(nèi)嵌有一小型計算機系統(tǒng)接口模塊,該小型計算機系統(tǒng)接口模塊被該SCSI子系統(tǒng)調(diào)用,判斷該SCSI子系統(tǒng)傳送為一響應指令;以及一因特網(wǎng)小型計算機系統(tǒng)接口模塊,該因特網(wǎng)小型計算機系統(tǒng)接口模塊被該小型計算機系統(tǒng)接口模塊調(diào)用,依據(jù)該響應指令產(chǎn)生iSCSI響應格式數(shù)據(jù),并將該iSCSI響應格式數(shù)據(jù)封裝為該網(wǎng)絡子系統(tǒng)識別格式封包而傳送予該網(wǎng)絡子系統(tǒng)。
2. 根據(jù)權利要求1所述的Linux系統(tǒng)中通過iSCSI實現(xiàn)的儲存服務器,其特征在于,該網(wǎng)絡子系統(tǒng)內(nèi)嵌的該因特網(wǎng)小型計算機系統(tǒng)接口模塊判斷該網(wǎng)絡封包不是iSCSI請求封包時,將該網(wǎng)絡封包提交給相關的TCP應用程序。
3. 根據(jù)權利要求1所述的Linux系統(tǒng)中通過iSCSI實現(xiàn)的儲存服務器,其特征在于,該SCSI子系統(tǒng)內(nèi)嵌的該小型計算機系統(tǒng)接口模塊判斷該SCSI子系統(tǒng)所傳送的指令不為該響應指令,則直接提交該指令給相關應用程序。
4. 根據(jù)權利要求1所述的Linux系統(tǒng)中通過iSCSI實現(xiàn)的儲存服務器,其特征在于,該網(wǎng)絡封包為TCP層的數(shù)據(jù)封包。
5. 根據(jù)權利要求1所述的Linux系統(tǒng)中通過iSCSI實現(xiàn)的儲存服務器,其特征在于,該iSCSI請求封包為包含一 iSCSI請求指令的一 iSCSI封包。
6. 根據(jù)權利要求1所述的Linux系統(tǒng)中通過iSCSI實現(xiàn)的儲存服務器,其特征在于,該網(wǎng)絡子系統(tǒng)的該小型計算機系統(tǒng)接口模塊更包括調(diào)用該SCSI子系統(tǒng)提供的接口 ,將該SCSI識別格式封包傳送到該SCSI子系統(tǒng)。
7.根據(jù)權利要求1所述的Linux系統(tǒng)中通過iSCSI實現(xiàn)的儲存服務器,其 特征在于,該SCSI子系統(tǒng)的該因特網(wǎng)小型計算機系統(tǒng)接口模塊更包括調(diào)用該 網(wǎng)絡子系統(tǒng)提供的接口 ,傳送該網(wǎng)絡子系統(tǒng)識別格式封包。
全文摘要
本發(fā)明公開了一種Linux系統(tǒng)中通過iSCSI實現(xiàn)的儲存服務器。包括網(wǎng)絡子系統(tǒng)與小型計算機系統(tǒng)接口子系統(tǒng)兩部分,其各自內(nèi)嵌一組iSCSI模塊以及SCSI模塊。當網(wǎng)絡子系統(tǒng)接收來自發(fā)起端的聯(lián)機請求封包時,通過內(nèi)嵌的iSCSI模塊以及SCSI模塊產(chǎn)生SCSI子系統(tǒng)可用的SCSI識別格式封包;另外,SCSI子系統(tǒng)通過其內(nèi)嵌的SCSI模塊及iSCSI模塊,產(chǎn)生具有響應指令的網(wǎng)絡子系統(tǒng)識別格式封包,傳送予網(wǎng)絡子系統(tǒng)完成響應程序。網(wǎng)絡子系統(tǒng)與SCSI子系統(tǒng)各自內(nèi)嵌有iSCSI模塊以及SCSI模塊,可立即調(diào)用iSCSI模塊與SCSI模塊、無須再等待的進程切換,進而解決儲存服務器效能瓶頸,提升儲存服務器運作速率。
文檔編號H04L29/08GK101471947SQ20071016068
公開日2009年7月1日 申請日期2007年12月29日 優(yōu)先權日2007年12月29日
發(fā)明者劉文涵, 鶴 張, 陳玄同 申請人:英業(yè)達股份有限公司