一种面向并行文件系统的通信系统转让专利

申请号 : CN201110326439.X

文献号 : CN102368711B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张攀勇袁重桥赵力邵宗有刘新春苗艳超王勇

申请人 : 曙光信息产业(北京)有限公司

摘要 :

本发明公开了一种面向并行文件系统构建高效通信系统的方法,包括一种面向并行文件系统的通信接口,高效通信系统的实现框架,以及一种零拷贝异步通信方式。提供了“调用-应答”的通信接口,便于文件系统使用。高效通信系统实现框架包括接口层,提供通信请求封装,和“调用-应答”封装接口。通信层包括对端节点管理单元,连接管理单元,消息收发单元,可靠性单元,实现了自适应的连接监控机制,动态的通信请求与连接关联的选择机制。网络层,封装具体网络实现,向上提供连接初始化/结束,连接建立,消息收发,错误处理接口。零拷贝异步通信方式,提供了在通信系统中高效的通信请求传递方式,能够实现文件系统需要的通信-操作隐藏语义。

权利要求 :

1.一种面向并行文件系统的通信系统,其特征在于:

上层并行文件系统统一的基于通信应答接口进行消息通信,使用基于整体系统的虚拟地址编号标识通信目标方,通信系统将系统区拆分为接口层,通信层和网络层; 通信时,接口层提交通信请求,由通信层的连接管理单元根据当前并行文件系统中的节点状态以及连接的服务能力和状态,分配到当前处理能力最大的连接上; 所述接口层的连接管理单元中,通过在每一个连接上定期发送心跳消息,检测连接状态; 所述通信系统采用零拷贝通信机制通信;

所述接口层用于提供并行文件系统的通信接口,提供“调用-应答”通信接口,将通信操作封装为通信请求,提交给下层通信系统收发; 所述通信层负责处理接口层提交的通信请求,使用网络层具体接收收发数据,同时负责网络层的收发,错误请求; 所述网络层用于封装具体的网络通信操作,供通信层使用;

所述分配到当前处理能力最大的连接上的过程为:

S1,系统在初始化时根据管理系统提供的系统拓扑表,读入节点配置情况,并且根据配置在节点之间建立连接,将连接以目标节点链表的方式组织,每一个目标节点上存在一个可用连接链表; S2,通信层根据通信请求的目标节点,在目标节点链表上找到对应节点,进一步找到该节点对应的可用节点链表; S3,遍历可用节点链表,检查每一个链表上的权值,取得权值最大的一个连接; S4,将通信请求与该连接相关联,在该连接上进行数据的发送动作; S5,在链表上的连接发送完成之后,根据发送记录,修改连接的权值。

2.如权利要求1所述的通信系统,其特征在于:所述连接管理单元检测到网络故障时,进入故障处理模式,尝试进行网络通路的重建,通信系统通过实时的通信通路选择机制,自动剔除掉故障的通信通路,使用可用的通信通路发送数据,或者等待通路重建完成之后,进行消息重发。

3.如权利要求1所述的通信系统,其特征在于:所述零拷贝机制的工作过程为: S1,在通信系统中,存在通信的发送和接收线程,每一个通信线程上存在一个通信队列,用于通信操作; S2,接口层将用户请求封装为通信请求,交由通信层处理,通信层在将通信请求与连接完成关联之后,将该通信请求关联到通信线程,由通信线程负责数据的收发操作; S3,通信线程从通信队列中获取待发送、接收的通信请求,异步的进行数据发送,如果不能进行发送/接收操作,则阻塞等待,直到能够持续后续收发操作,通信线程在完成通信请求后,通知应用层通信完成; S4,应用层在获取到通信完成通知之后,继续后续操作。

说明书 :

一种面向并行文件系统的通信系统

技术领域

[0001] 本发明涉及并行文件系统的通信系统,特别涉及一种面向并行文件系统的高效通信系统。

背景技术

[0002] 并行文件系通常由多种不同类型的实体组成,各个实体功能相互独立,运行于不同节点上,由互联网络连接起来,构成一个统一的整体,向外提供统一文件系统服务。这些实体包括:元数据服务,数据服务,客户端,结构如图1所示。
[0003] 为了达到高性能,高可靠性的目标,并行文件系统需要一个高效的通信层以实现文件系统服务之间的通信,而传统的互联网络的通信接口,主要为数据报或者数据流方式,将数据从一段发送到另一端,接口较为复杂,不太适合文件系统直接使用。
[0004] 另一方面,由于构建互联网络的部件:交换机和网卡,随时可能失效,这导致并行文件系统中正在进行的通信操作随时可能中断,这需要一种高可靠的通信系统,其能够检测通信操作的中断,并且能够在互联网络恢复正常之后,恢复通信操作,以保证上层文件系统的可靠运行。
[0005] 由于网络技术的发展,在同一套分布式系统中部署多种类型的网络变成了一种常态;而为了满足整个系统的通信需求以及性价比等方面的考虑,往往会采用并行网络(multi-rail)的方式来提供聚合的高通信性能,这都直接导致了并行文件系统的通信系统需要面对复杂的,多套的底层通信网络,需要通信系统屏蔽底层网络细节,向上提供统一的通信接口,并充分利用到每一部分的通信性能。传统的基于绑定(Bonding)的方式在操作系统层面将多网络聚合成一个虚拟的网络设备,但是其只能够聚合同一类的网络,并且需要复杂的配置,通信系统也不能针对每一套网络进行处理。
[0006] 由于并行文件系统中各个服务之间存在大量的协同和通信交互,直接导致了大量的数据通信,因此通信系统的性能,极大的决定的并行文件系统的性能。需要通信系统提供高效的通信机制,提供高带宽和低延迟。同时为了隐藏通信系统的开销,并行文件系统的服务使用异步通信方式,在通信请求和通信完成之间插入其他无关动作,这需要通信系统提供异步的通信机制。

发明内容

[0007] 本发明的目的是面向并行文件系统的特定需求,提供一种统一的,高效可靠的通信系统实现方法。为了实现上述目的,本发明提供了一种有效的高效通信构建机制和框架,包括
[0008] (1)面向并行文件系统的统一通信接口。提供了调用-应答的通信接口,通信发起方使用调用接口发起通信请求,通信应答方使用应答接口应答通信请求。
[0009] 上层并行文件系统基于通信应答接口进行消息通信,使用基于整体系统的虚拟地址编号标识通信目标方,通信系统将系统区拆分为三层接口:
[0010] 接口层,提供并行文件系统的通信接口,提供“调用-应答”通信接口,将通信操作封装为通信请求,提交给下层通信系统收发。
[0011] 通信层,负责处理接口层提交的通信请求,使用网络层具体接收收发数据,同时负责网络层的收发,错误请求。
[0012] 网络层,封装具体的网络通信操作,供通信层使用。
[0013] 通信系统的构建中,为了保证文件系统能够高效的通信,使用如下三种机制:
[0014] (2)动态的通信请求与连接管理的选择机制。接口层提交的通信请求,由通信层的连接管理单元,根据当前并行文件系统中的节点状态,以及连接的服务能力和状态,分配到当前处理能力最大的连接上,该方式能够有效的聚合底层多通信网络的通信能力。
[0015] 详细步骤为:
[0016] 步骤S1,系统在初始化时根据管理系统提供的系统拓扑表,读入节点配置情况,并且根据配置在节点之间建立连接,将连接以目标节点链表的方式组织,每一个目标节点上存在一个可用连接链表。
[0017] 步骤S2,通信层根据通信请求的目标节点,在目标节点链表上找到对应节点,进一步找到该节点对应的可用节点链表
[0018] 步骤S3,遍历可用节点链表,检查每一个链表上的权值,取得权值最大的一个连接。
[0019] 步骤S4,将通信请求与该连接相关联,在该连接上进行数据的发送动作。
[0020] 步骤S5,在链表上的连接发送完成之后,根据发送记录,修改连接的权值[0021] (3)高可靠机制。在接口层的连接管理单元中,定期监测每一个网络连接的状态,通过在每一个连接上定期发送心跳消息,监测连接的状态。
[0022] 在出现网络故障时,进入故障处理模式,尝试进行网络通路的重建。通信系统通过实时的通信通路选择机制,自动剔除掉故障的通信通路,使用可用的通信通路发送数据,或者等待通路重建完成之后,进行消息重发,该可靠性机制对上层并行文件系统透明。
[0023] (4)高效异步通信机制,使用通信线程的方式,提供异步的通信接口,以保证并行文件系统在异步请求发起完成之后,继续后续操作,通信线程异步的进行通信的收发。为了保证通信的效率,在通信系统中采用“零拷贝”通信机制,并不复制通信数据,以提高通信效率。
[0024] 高效异步通信机制详细步骤为:
[0025] 步骤S1,在通信系统中,存在通信的发送和接收线程,每一个通信线程上存在一个通信队列,用于通信操作
[0026] 步骤S2,接口层将用户请求封装为通信请求,交由通信层处理。通信层在将通信请求与连接完成关联之后,将该通信请求关联到通信线程,由通信线程负责数据的收发操作[0027] 步骤S3,通信线程从通信队列中获取待发送、接收的通信请求,异步的进行数据发送,如果不能进行发送/接收操作,则使用poll/epoll/select方式阻塞等待,直到能够持续后续收发操作。通信线程在完成通信请求后,通知应用层通信完成
[0028] 步骤S4,应用层在获取到通信完成通知之后,继续后续操作。
[0029] 本发明的优点在于:
[0030] 1、本发明的统一通信接口面向并行文件系统的通信需求,封装通信操作实现和底层网络的细节,并行文件系统的服务只需要使用“调用-应答”通信接口操作,降低了通信接口使用难度。
[0031] 2、本发明的网络带宽聚合机制,能够动态利用通信通路的所有通信能力,提高了通信效率,同时无需在系统一级做复杂配置,降低了聚合的难度
[0032] 3、本发明的高可靠机制,在对用户透明的前提下,保证了通信系统在通信网络部分故障的时候能够正常工作,在通信网络恢复之后能够重新利用所有的通信部分,容忍了通信系统的不可靠,提高了并行文件系统的可靠性。
[0033] 4、本发明的高效异步通信方式,提供了并行文件系统所需的异步通信方式,便于并行文件系统实现“通信-操作”的重叠,提高了整体系统的效率,同时提供了“零拷贝”通信机制,降低了通信系统操作通信带来的开销,提高了通信效率。

附图说明

[0034] 以下,结合附图来详细说明本发明的实施例,其中:
[0035] 图1为并行文件系统组成的示意图;
[0036] 图2为通信系统接口的“请求-调用”接口示意图;
[0037] 图3为通信系统结构图;
[0038] 图4为动态请求与连接关联机制示意图;
[0039] 图5为通信系统零拷贝实现方式;

具体实施方式

[0040] 下面结合附图和具体实施方式对本发明的方法进行说明。
[0041] 通信系统的“请求-调用”接口如图2所示,包括如下步骤:
[0042] 步骤S1、通信发起方使用调用接口向目标方发起通信操作,通信操作中包括目标方地址,通信操作类型,以及数据。
[0043] 步骤S2、通信系统根据通信操作中的目标方地址,向通信目标方发送数据;
[0044] 步骤S3、通信应答方的通信系统接收通信发起方发送的通信操作,在数据接收完成之后,提交给通信应答方处理
[0045] 步骤S4、通信应答方处理通信请求,在处理完成之后,使用应答接口向发起方应答通信请求处理完成,该通信请求提交给通信系统,
[0046] 步骤S5、通信应答方向通信发起方发送通信应答消息
[0047] 步骤S6、通信发起方的通信系统接收到通信应答消息,提交给通信发起方处理[0048] 步骤S7、通信发起方处理通信应答消息,完成本次通信操作。
[0049] 通信系统的层次结构如图3所示,具体包括:
[0050] 并行文件系统使用通信接口层提供的通信请求封装接口,将并行文件系统的通信请求封装为通信系统的通信请求,使用“调用-应答”接口将通信请求提交给通信系统处理。
[0051] 通信层的具体描述如下:
[0052] 对端节点管理单元,管理对端节点信息,包括从配置文件和管理接口中获取通信通路的地址和通路类型,使用网络层提供的接口创建连接,将连接和对端节点关联。以及对端节点的动态添加,删除。
[0053] 连接管理单元,用于负责连接的管理,构建控制消息,定期监控连接的可用状态,如果发现连接错误,将错误连接提交给可靠性层,进行连接重建操作。连接监控步骤为:
[0054] 步骤S1,连接监控线程定期检查连接的状态,
[0055] 步骤S2a,如果为正常状态,检查当前连接在一段固定时间内是否发送/接收完成过通信请求,如果发送过,则认为该连接正常工作,继续后续操作。
[0056] 步骤S2b,使用网络层的连接接口,通过连接发送监控消息,如果发送成功,则继续认为该连接可用,否则认为连接状态出错。将连接提交给可靠性单元,进行可靠性处理。
[0057] 连接管理单元还负责根据系统当前的连接状态,动态将通信请求和连接关联,提交由消息收发单元进行实际的消息收发操作。具体的连接选择步骤为,如图4所示:
[0058] 步骤S1,根据通信请求的目标地址,查找到对端节点结构,找到对端节点的所有连接。遍历对端节点的所有连接,
[0059] 步骤S2,如果发现对端节点上的所有连接状态均为不可用,则认为通信请求无法传输到方,根据通信请求提供的错误处理方式,进行相应处理。如果处理方式为重发,则将通信请求挂入请求重传队列,等待有连接重建完成之后,进行消息重发。如果处理方式为直接返回,则直接返回通路错误的错误码给接口层。
[0060] 步骤S3,如果发现存在可用的连接状态,则遍历可用的连接链表。
[0061] 从链表头部开始遍历,根据连接的权值选择可用连接链表上的权值最大的一个连接,权值为连接的等待发送请求长度和连接历史发送带宽的比值。对于图中的状态,最后选定的连接为连接1。
[0062] 消息收发单元,使用通信收发线程,将通信请求使用连接管理单元选定的连接上,进行数据的收发操作。在数据发送完成之后,通过回调函数通知接口层完成通信请求;通信线程接收完成之后,使用接收回调函数,提交给接口层进行消息接收处理。
[0063] 可靠性单元,使用可靠性处理线程,处理连接管理单元提交的需要重建的连接,尝试连接的重建,连接重建步骤包含:
[0064] 根据连接在连接的主动方还是被动方,如果为连接主动方,则调用网络层的具体连接建立过程重建连接,如果重连接成功,则修改该连接状态,提交给连接管理单元继续进行消息收发;如果重连接失败,则采用指数回退的方式,等待一定时间,继续尝试重建连接。
[0065] 如果为连接被动方,则将连接加入被动错误连接队列中,等待主动方的重连请求。如果接收到主动方的连接请求,则复制连接被动方的连接信息到新的连接中,释放错误的连接。
[0066] 网络层包括通信操作的实现层,具体包括针对特定网络系统的连接初始化/结束接口,连接建立接口,连接的数据收发操作,连接的错误处理。
[0067] 通信系统零拷贝实现方式如图5所示,具体的步骤为:
[0068] 步骤S1,并行文件系统使用接口层提供的通信接口,封装通信操作为通信请求,通信请求中包含目标方的通信地址,通信操作的标志,以及应用层通信缓冲区。为了防止在通信请求被通信系统处理时,上层并行文件系统释放该通信缓冲区导致的访问错误,通信系统使用引用计数保护通信缓冲区,在通信过程中,通信系统持有计数,直到步骤S3通信完成之后。
[0069] 步骤S2,在接口层将通信请求传递给通信层,和通信层调用网络层接口操作具体网络时,只传递通信请求的指针,并不将应用层的通信缓冲区中的数据拷贝到通信层中,降低了通信开销。
[0070] 步骤S3,在通信操作完成之后,接口层将减少通信缓冲区的引用计数。此时通信系统使用应用缓冲区完成,上层系统能够正常释放应用层内存。