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