一种FCoE读写处理系统、处理方法及交换ID分配方法

文档序号:9326831阅读:290来源:国知局
一种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
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1