一種FCoE讀寫處理系統(tǒng)、處理方法及交換ID分配方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)存儲技術(shù)領(lǐng)域,更具體地,涉及一種FCoE讀寫處理系統(tǒng)及讀寫處理方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)服務(wù)的發(fā)展,企業(yè)用戶對存儲區(qū)域網(wǎng)的需求越來越高,開始部署基于以太網(wǎng)光纖通道(Fibre Channel over Ethernet,F(xiàn)CoE)的存儲區(qū)域網(wǎng);計(jì)算機(jī)服務(wù)器通過FCoE存儲區(qū)域網(wǎng)將數(shù)據(jù)寫入存儲系統(tǒng)或從存儲系統(tǒng)中讀出數(shù)據(jù)。隨著多核服務(wù)器、高速存儲設(shè)備和高速網(wǎng)絡(luò)技術(shù)的發(fā)展,多核服務(wù)器在并行訪問存儲系統(tǒng)時(shí),讀寫處理軟件的性能越來越重要。
[0003]讀寫處理延遲和并行處理性能是FCoE存儲區(qū)域網(wǎng)讀寫協(xié)議棧軟件的兩個(gè)重要性能指標(biāo),現(xiàn)有FCoE存儲區(qū)域網(wǎng)讀寫協(xié)議棧Open-FCoE是基于單請求隊(duì)列塊層、SCSI子系統(tǒng)和Iibfc多個(gè)模塊層來處理讀寫請求的,讀寫執(zhí)行路徑長,經(jīng)過SCSI子系統(tǒng)、Iibfc和Open-FCoE和標(biāo)準(zhǔn)以太網(wǎng)網(wǎng)絡(luò)接口,CPU開銷高,讀寫處理延遲高;同時(shí)塊層、SCSI層、Iibfc各層中單隊(duì)列入隊(duì)和出隊(duì)操作時(shí)都使用鎖機(jī)制進(jìn)行同步開銷,極大的限制了多核環(huán)境下讀寫的并行處理能力。
【發(fā)明內(nèi)容】
[0004]針對現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種FCoE讀寫處理系統(tǒng),其目的在于解決現(xiàn)有FCoE協(xié)議棧在多核計(jì)算機(jī)上處理讀寫時(shí)并發(fā)度低、開銷高和延遲高的問題。
[0005]為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種FCoE讀寫處理系統(tǒng),包括交換ID (Exchange ID)管理模塊、請求幀(FCoE FCP_CMND)封裝發(fā)送模塊、數(shù)據(jù)幀(FCoEFCP_DATA)封裝發(fā)送模塊、數(shù)據(jù)幀(FCoE FCP_DATA)接收處理模塊、準(zhǔn)備幀(FCoE FCP_XTEP_RDY)接收處理模塊、響應(yīng)幀(FCoE FCP_RSP)接收處理模塊和接收隊(duì)列;其中,F(xiàn)CoEFCP_CMND 是指 FCoE 命令服務(wù)請求,F(xiàn)CoE FCP_DATA 是指 FCoE 數(shù)據(jù)、FCoE FCP_XFER_RDY 是準(zhǔn)備好處理FCoE數(shù)據(jù)傳送請求的指示,F(xiàn)CoE FCP_RSP是指FCoE命令服務(wù)響應(yīng);
[0006]其中,交換ID (Exchange ID)管理模塊將分配的Exchange ID發(fā)送到FCoE FCP_CMND封裝發(fā)送模塊,并回收來自FCoE FCP_RSP接收處理模塊的Exchange ID ;用于為讀寫請求相關(guān)的幀分配、回收、管理唯一的Exchange ID, Exchange ID范圍為0?OxFFFF ;
[0007]FCoE FCP_CMND封裝發(fā)送模塊具有塊設(shè)備驅(qū)動(dòng)請求接口和通用塊請求接口,用于根據(jù)通用塊請求或塊設(shè)備驅(qū)動(dòng)請求類型(讀請求或?qū)懻埱?,按照FCoE協(xié)議和FCP協(xié)議生成對應(yīng)的FCoE FCP_CMND幀,并填充該幀各字段傳輸至網(wǎng)絡(luò)發(fā)送端口 ;
[0008]FCoE FCP_DATA封裝發(fā)送模塊,用于在執(zhí)行寫請求時(shí),按照FCoE協(xié)議和FCP協(xié)議將寫請求的數(shù)據(jù)內(nèi)容進(jìn)行封裝,生成對應(yīng)寫請求的FCoE FCP_DATA數(shù)據(jù)幀,并填充該幀各字段傳輸至網(wǎng)絡(luò)發(fā)送端口;
[0009]FCoE FCP_XTEP_RDY接收處理模塊,用于在執(zhí)行寫請求時(shí),對來自接收隊(duì)列的FCoEFCP_XTEP_RDY幀,根據(jù)FCoE協(xié)議和FCP協(xié)議進(jìn)行處理;
[0010]FCoE FCP_DATA接收處理模塊用于在執(zhí)行讀請求時(shí),根據(jù)FCoE協(xié)議和FCP協(xié)議,處理來自接收隊(duì)列的FCoE FCP_DATA幀,將要讀的數(shù)據(jù)從FCoE FCP_DATA幀復(fù)制到讀請求對應(yīng)的內(nèi)存;
[0011]FCoE FCP_RSP接收處理模塊具有通用塊請求處理結(jié)果接口和塊設(shè)備驅(qū)動(dòng)請求處理結(jié)果接口 ;用于根據(jù)FCoE協(xié)議和FCP協(xié)議,處理來自接收隊(duì)列的FCoE FCP_RSP幀,將讀寫處理的結(jié)果通過上述兩個(gè)接口返回給上層;FCoE FCP_RSP幀指示讀寫請求處理完成;
[0012]接收隊(duì)列用于緩存接收到的對應(yīng)讀寫請求的FCoE幀,將FCoE FCP_DATA轉(zhuǎn)發(fā)給FCoE FCP_DATA 接收處理模塊、將 FCoE FCP_XTEP_RDY 轉(zhuǎn)發(fā)給 FCoE FCP_XTEP_RDY 接收處理模塊、將FCoE FCP_RSP幀轉(zhuǎn)發(fā)給FCoE FCP_RSP接收處理模塊。每個(gè)核都具有私有接收隊(duì)列;
[0013]按照本發(fā)明的另一方面,提供了一種FCoE讀寫請求處理方法,基于上述FCoE讀寫請求處理系統(tǒng),包括以下步驟:
[0014](I)當(dāng)接收到上層讀寫接口提交的通用塊層請求或塊設(shè)備驅(qū)動(dòng)請求時(shí),ExchangeID管理模塊為該讀寫接口分配一個(gè)Exchange ID, FCo EFCP_CMND封裝處理模塊按照FCoE協(xié)議和FCP協(xié)議封裝對應(yīng)的表示讀或?qū)懻埱蟮腇CoE FCP_CMND幀并發(fā)送到目標(biāo)端存儲設(shè)備;
[0015](2)判斷請求類型,若為讀請求,進(jìn)入步驟(3);若為寫請求,則進(jìn)入步驟⑷;
[0016](3)將接收到的與Exchange ID對應(yīng)的FCoE FCP_DATA幀中的數(shù)據(jù)復(fù)制到讀請求對應(yīng)的內(nèi)存地址上;進(jìn)入步驟(5);
[0017](4)接收與Exchange ID對應(yīng)的FCoE FCP_XTEP_RDY幀,將擬寫入的數(shù)據(jù)封裝為與Exchange ID對應(yīng)的FCoE FCP_DATA幀,并發(fā)送到目標(biāo)端存儲設(shè)備;進(jìn)入步驟(5);
[0018](5)接收對應(yīng)Exchange ID的FCoE FCP_RSP幀,回收對應(yīng)的Exchange ID,向上層反饋?zhàn)x寫結(jié)果。
[0019]按照本發(fā)明的另一方面,還提供了一種Exchange ID分配方法,為各讀寫請求分配唯一 Exchange IDj^Exchange ID的所有值進(jìn)行劃分,分配給不同的核進(jìn)行分配和回收管理,具體包括以下步驟:
[0020](I)為每個(gè)核劃分所管理的Exchange ID域:根據(jù)計(jì)算機(jī)系統(tǒng)中核的數(shù)目N,將FCP協(xié)議中規(guī)定的可用Exchange ID的范圍O?OxFFFE劃分為N份,分別交由各核進(jìn)行分配和回收管理;如此處理的有益效果在于消除為不同的核分配或回收Exchange ID帶來的同步開銷;
[0021](2)每個(gè)管理Exchange ID的核使用連續(xù)的內(nèi)存指示所有Exchange ID的狀態(tài),指示其是否已經(jīng)分配給正在執(zhí)行的讀寫請求,采用一個(gè)下標(biāo)來表示下一個(gè)可能被分配的Exchange ID值,根據(jù)下標(biāo)檢查對應(yīng)Exchang ID的狀態(tài),進(jìn)行Exchange ID的分配;修改對應(yīng)Exchange ID的狀態(tài),進(jìn)行Exchange ID的回收。
[0022]優(yōu)選的,上述步驟(2)中,核采用下標(biāo)對應(yīng)的內(nèi)存表示該Exchange ID的值是否被分配;根據(jù)下標(biāo)檢查對應(yīng)Exchang ID的狀態(tài),下標(biāo)若為O表示該Exchange ID空閑,可被分配;若下標(biāo)為I表示該Exchange ID已被占用。
[0023]優(yōu)選的,述步驟(2)中,當(dāng)Exchange ID被占用,則檢測下一個(gè)下標(biāo)對應(yīng)的Exchange ID的狀態(tài),直至找到未被占用的Exchange ID0
[0024]總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
[0025](I)本發(fā)明提供的FCoE讀寫處理系統(tǒng),取代現(xiàn)有技術(shù)中的SCS1、Libfc和Open-FCoE模塊,縮短了讀寫路徑,減小處理時(shí)延和CPU開銷;
[0026](2)本發(fā)明提供的FCoE讀寫處理系統(tǒng),與Open-FCoE相比,在多隊(duì)列請求的基礎(chǔ)上提尚了多核讀與處理的并彳丁能力;
[0027](3)本發(fā)明將提供的Exchange ID分配方法,將Exchange ID的域進(jìn)行劃分,分別由多個(gè)核同時(shí)進(jìn)行分配、回收管理,與Exchange統(tǒng)一管理的方法相比,有效提升了多核環(huán)境下Exchange ID并行分配和回收管理的效率,加速FCoE FCP_CMND幀的生成。
【附圖說明】
[0028]圖1是本發(fā)明中FCoE讀寫處理系統(tǒng)在操作系統(tǒng)中所處的架構(gòu)示意圖;
[0029]圖2是現(xiàn)有技術(shù)中FCoE存儲區(qū)域網(wǎng)讀寫協(xié)議棧在操作系統(tǒng)中所處的架構(gòu)示意圖;
[0030]圖3是FCoE讀寫處理系統(tǒng)功能框圖;
[0031 ] 圖4是實(shí)施例中FCoE讀寫處理系統(tǒng)按照FCoE協(xié)議和FCP協(xié)議處理讀請求的過程示意圖;
[0032]圖5是實(shí)施例中FCoE讀寫處理系統(tǒng)按照FCoE協(xié)議和FCP協(xié)議處理寫請求的過程示意圖;
[0033]圖6是實(shí)施例中FCoE讀寫處理系統(tǒng)處理通用塊層請求或塊設(shè)備驅(qū)動(dòng)請求一次讀寫請求的處理過程:
[0034]圖7是實(shí)施例中的Exchange ID管理方法示意圖。
【具體實(shí)施方式】
[0035]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
[0036]圖1所示,是本發(fā)明提供的FCoE讀寫處理系統(tǒng)在操作系統(tǒng)中所處的架構(gòu),與圖2所示的傳統(tǒng)FCoE存儲區(qū)域網(wǎng)I/O協(xié)議棧(Open-FCoE)相比,傳統(tǒng)FCoE存儲區(qū)域網(wǎng)I/O協(xié)議棧基于單隊(duì)列塊I/O子系統(tǒng),對來自單隊(duì)列塊I/O子系統(tǒng)的讀寫請求,需依次經(jīng)由SCSI模塊、LIBFC模塊、FCoE模塊進(jìn)行處理;而采用本發(fā)明,可直接或通過文件系統(tǒng)訪問塊設(shè)備,生成通用塊層請求;
[0037]通用塊層請求可由FCoE讀寫處理系統(tǒng)處理,也可經(jīng)多隊(duì)列塊層I/O子系統(tǒng)進(jìn)行I/O調(diào)度層處理生成塊設(shè)備驅(qū)動(dòng)請求后再交由FCoE讀寫處理系統(tǒng)進(jìn)行處理;FCoE讀寫處理系統(tǒng)按照FCoE協(xié)議和FCP協(xié)議處理來自上層的對應(yīng)多隊(duì)列塊設(shè)備的通用塊層請求或塊設(shè)備驅(qū)動(dòng)層請求;FCoE幀通過標(biāo)準(zhǔn)以太網(wǎng)網(wǎng)絡(luò)接口傳輸。
[0038]圖3示意了本發(fā)明提供的FCoE讀寫處理系統(tǒng)的功能框圖;FCoE讀寫處理系統(tǒng)包括Exchange ID管理模塊、FCoE FCP_CMND封裝發(fā)送模塊、FCoE FCP_DATA封裝發(fā)送模塊、FCoE FCP_DATA接收處理模塊、FCoE FCP_XTEP_RDY接收處理模塊、FCoE FCP_RSP接收處理模塊和接收隊(duì)列;
[0039]其中,Exchange ID管理模塊將分配的Exchange ID發(fā)送到FCoE FCP_CMND封裝發(fā)送模塊,并回收來自FCoE FCP_RSP接收處理模塊的Exchange ID ;用于為讀寫請求相關(guān)的幀分配、回收、管理唯一的Exchange ID, Exchange ID范圍為0?OxFFFF ;
[0040]FCoE FCP_CMND封裝發(fā)送模塊具有塊設(shè)備驅(qū)動(dòng)請求接口和通用塊請求接口,用于根據(jù)通用塊請求或塊設(shè)備驅(qū)動(dòng)請求類型(讀請求或?qū)懻埱?,按照FCoE協(xié)議和FCP協(xié)議生成對應(yīng)的FCoE FCP_CMND幀,并填充該幀各字段傳輸至網(wǎng)絡(luò)發(fā)送端口 ;
[0041]FCoE FCP_DATA封裝發(fā)送模塊,用于在執(zhí)行寫請求時(shí),按照FCoE協(xié)議和FCP協(xié)議將寫請求的數(shù)據(jù)內(nèi)容進(jìn)行封裝,生成對應(yīng)寫請求的FCoE FCP_DATA數(shù)據(jù)幀,并填充該幀各字段傳輸至網(wǎng)絡(luò)發(fā)送端口;
[0042]FCoE FCP_XTEP_RDY接收處理模塊,用于在執(zhí)行寫請求時(shí),對來自接收隊(duì)列的FCoEFCP_XTEP_RDY幀,根據(jù)FCoE協(xié)議和FCP協(xié)議進(jìn)行處理;
[0043]FCoE FCP_DATA接收處理模塊用于在執(zhí)行讀請求時(shí),根據(jù)FCoE協(xié)議和FCP