一种分布式iscsi服务实现方法、系统及相关装置与流程

文档序号:17356415发布日期:2019-04-09 21:43阅读:199来源:国知局
一种分布式iscsi服务实现方法、系统及相关装置与流程

本申请涉及存储技术领域,特别涉及一种分布式iscsi服务实现方法、系统、分布式存储系统及计算机可读存储介质。



背景技术:

目前,在分布式存储系统中使用iscsi服务对外提供存储块业务。其中,iscsi技术是一个供硬件设备使用的可以在ip协议的上层运行的scsi指令集,这种指令集合可以实现在ip网络上运行scsi协议,使其能够在诸如高速千兆以太网上进行路由选择。

但是,在分布式存储系统的每个节点上,iscsi服务都是独立部署,一旦主节点出现异常,则整个分布式存储系统中各个节点的iscsi服务都将无法正常工作。

因此,如何实现分布式存储系统中分布式的iscsi服务,进而即使在主节点出现异常的情况下,分布式存储系统的iscsi服务也能正常工作是本领域技术人员需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种分布式iscsi服务实现方法、系统、分布式存储系统及计算机可读存储介质,能够实现分布式存储系统中分布式的iscsi服务,进而即使在主节点出现异常的情况下,分布式存储系统的iscsi服务也能正常工作。

为解决上述技术问题,本申请提供一种分布式iscsi服务实现方法,包括:

读取分布式存储系统中所有节点的节点信息;

控制目标节点中的目标客户端根据所述节点信息向其他所有节点的服务端发送连接请求;其中,所述目标节点为所述分布式存储系统中的任一节点;

利用所述目标客户端接收所述服务端发送的响应消息,建立所述目标节点与所述其他所有节点之间的单向连接;

利用所述目标节点中的目标服务端接收所述其他所有节点的客户端发送的连接请求;

控制所述目标服务端向所述客户端发送响应消息,建立所述目标节点与所述其他所有节点之间的双向连接。

优选地,所述控制目标节点中的目标客户端根据所述节点信息向其他所有节点的服务端发送连接请求,包括:

控制所述目标节点中的所述目标客户端创建目标客户端子线程;

利用所述目标客户端子线程根据所述节点信息向所述其他所有节点的所述服务端发送所述连接请求。

优选地,所述利用所述目标节点中的目标服务端接收所述其他所有节点的客户端发送的连接请求,包括:

控制所述目标节点中的所述目标服务端创建目标服务端子线程;

利用所述目标服务端子线程接收所述其他所有节点的所述客户端发送的所述连接请求。

优选地,建立所述目标节点与所述其他所有节点之间的双向连接之后,还包括:

将所述目标节点与所述其他所有节点之间的所述双向连接对应的信息和所述其他所有节点的节点信息进行绑定并记录至所述目标节点中。

本申请还提供一种分布式iscsi服务实现系统,包括:

节点信息读取模块,用于读取分布式存储系统中所有节点的节点信息;

连接请求发送控制模块,用于控制目标节点中的目标客户端根据所述节点信息向其他所有节点的服务端发送连接请求;其中,所述目标节点为所述分布式存储系统中的任一节点;

单向连接建立模块,用于利用所述目标客户端接收所述服务端发送的响应消息,建立所述目标节点与所述其他所有节点之间的单向连接;

连接请求接收模块,用于利用所述目标节点中的目标服务端接收所述其他所有节点的客户端发送的连接请求;

双向连接建立模块,用于控制所述目标服务端向所述客户端发送响应消息,建立所述目标节点与所述其他所有节点之间的双向连接。

优选地,所述连接请求发送控制模块,包括:

目标客户端子线程创建控制单元,用于控制所述目标节点中的所述目标客户端创建目标客户端子线程;

连接请求发送单元,用于利用所述目标客户端子线程根据所述节点信息向所述其他所有节点的所述服务端发送所述连接请求。

优选地,所述连接请求接收模块,包括:

目标服务端子线程创建控制单元,用于控制所述目标节点中的所述目标服务端创建目标服务端子线程;

连接请求接收单元,用于利用所述目标服务端子线程接收所述其他所有节点的所述客户端发送的所述连接请求。

优选地,该分布式iscsi服务实现系统还包括:

信息记录模块,用于将所述目标节点与所述其他所有节点之间的所述双向连接对应的信息和所述其他所有节点的节点信息进行绑定并记录至所述目标节点中。

本申请还提供一种分布式存储系统,包括:

存储器和处理器;其中,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现上述所述的分布式iscsi服务实现方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的分布式iscsi服务实现方法的步骤。

本申请所提供的一种分布式iscsi服务实现方法,包括:

读取分布式存储系统中所有节点的节点信息;控制目标节点中的目标客户端根据所述节点信息向其他所有节点的服务端发送连接请求;其中,所述目标节点为所述分布式存储系统中的任一节点;利用所述目标客户端接收所述服务端发送的响应消息,建立所述目标节点与所述其他所有节点之间的单向连接;利用所述目标节点中的目标服务端接收所述其他所有节点的客户端发送的连接请求;控制所述目标服务端向所述客户端发送响应消息,建立所述目标节点与所述其他所有节点之间的双向连接。

该方法在读取分布式存储系统中所有节点的节点信息后,不仅建立了目标节点的目标客户端与其他所有节点的服务端的连接关系,还建立了该目标节点的目标服务端和其他所有节点的客户端之间的连接关系,实现了分布式存储系统中分布式的iscsi服务,进而即使在主节点出现异常的情况下,分布式存储系统的iscsi服务也能正常工作。本申请还提供一种分布式iscsi服务实现系统、分布式存储系统及计算机可读存储介质,均具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种分布式iscsi服务实现方法的流程图;

图2为本申请实施例所提供的一种accelio组件结构示意图;

图3为本申请实施例所提供的一种分布式iscsi服务实现系统的结构框图。

具体实施方式

本申请的核心是提供一种分布式iscsi服务实现方法,能够实现分布式存储系统中分布式的iscsi服务,进而即使在主节点出现异常的情况下,分布式存储系统的iscsi服务也能正常工作。本申请的另一核心是提供一种分布式iscsi服务实现系统、分布式存储系统及计算机可读存储介质。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

目前,在分布式存储系统中使用iscsi服务对外提供存储块业务。但是,在分布式存储系统的每个节点上,iscsi服务都是独立部署,一旦主节点出现异常,则整个分布式存储系统中各个节点的iscsi服务都将无法正常工作。本申请实施例能够实现分布式存储系统中分布式的iscsi服务,进而即使在主节点出现异常的情况下,分布式存储系统的iscsi服务也能正常工作,具体请参考图1,图1为本申请实施例所提供的一种分布式iscsi服务实现方法的流程图,该分布式iscsi服务实现方法具体包括:

s101、读取分布式存储系统中所有节点的节点信息;

本申请实施例在分布式存储系统中的每个节点上部署了改进后的accelio组件,主要的改进是在原始accelio组件的基础上增加了多个处理模块,进而实现分布式存储系统中各个节点的iscsi业务层分布式连接,即实现分布式的iscsi服务。其中,改进后的accelio组件主要在原始accelio组件的基础上增加了节点信息处理模块、客户端及服务端消息处理模块、会话管理模块,如图2所示,图2为本申请实施例所提供的一种accelio组件结构示意图。其中,节点信息处理模块保存各节点的节点信息;客户端及服务端消息处理模块向应用层提供客户端请求发送接口及服务端处理请求接口,负责接收应用层传递的消息、封装请求数据、发送数据请求、接收请求、封装获取到的数据、发送响应、接受响应、向应用层回返数据;会话管理模块负责管理整个系统连接网络,包括多连接的建立、多连接的销毁以及连接状态检测,连接检测模块用于检测客户端与服务端连接的状态,用于客户端与服务端在发送消息之前判断连接是否可用。本申请实施例先是读取分布式存储系统中所有节点的节点信息,在此对节点信息的内容不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,通常节点信息包括节点网络地址、与节点地址一一对应的id号、线程名称及线程id。进一步地,在读取到所有节点的节点信息后,对该节点信息进行缓存或记录,至于缓存或记录的位置在此不作具体限定。

s102、控制目标节点中的目标客户端根据节点信息向其他所有节点的服务端发送连接请求;其中,目标节点为分布式存储系统中的任一节点;

本申请实施例在读取分布式存储系统中所有节点的节点信息后,控制目标节点中的目标客户端根据节点信息向其他所有节点的服务端发送连接请求。因为本申请实施例的目的是实现分布式iscsi服务,所以分布式存储系统中的各个节点需要实现iscsi业务层分布式连接,即分布式存储系统中的每一个节点都需要和其他节点建立双向连接,故目标节点为分布式存储系统中的任一节点。在此对于分布式存储系统中节点的数量不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。由上文可知,本申请实施例在分布式存储系统中的每个节点上部署了改进后的accelio组件,每一个改进后的accelio组件中包含对应的客户端和服务端。例如,在目标节点上部署的改进后的accelio组件中包含对应的目标客户端和目标服务端。

进一步地,对于控制目标节点中的目标客户端根据节点信息向其他所有节点的服务端发送连接请求的过程,在此也不作具体限定,该过程通常包括:控制目标节点中的目标客户端创建目标客户端子线程;利用目标客户端子线程根据节点信息向其他所有节点的服务端发送连接请求。例如,设分布式存储系统中节点的数量为n,则目标节点会向其他n-1个节点发送连接请求,故连接请求的数量也为n-1个。其中,控制目标节点中的目标客户端创建目标客户端子线程,通常包括:控制目标节点中的目标客户端启动目标客户端线程,利用该目标客户端线程创建目标客户端子线程。在此对于目标客户端线程和目标客户端子线程的创建方式不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,例如可以通过继承thread类创建线程,也可通过实现runnable接口创建线程,还可使用callable和future创建线程。

s103、利用目标客户端接收服务端发送的响应消息,建立目标节点与其他所有节点之间的单向连接;

本申请实施例在控制目标节点中的目标客户端根据节点信息向其他所有节点的服务端发送连接请求后,利用目标客户端接收服务端发送的响应消息,建立目标节点与其他所有节点之间的单向连接。由步骤s102可知,目标节点会向其他n-1个节点发送连接请求,故此处接收到的响应消息的数量也为n-1个。每接收一个其他节点的服务端发送的响应消息,建立与该节点之间的单向连接,直至建立目标节点与其他所有节点之间的单向连接。在此对响应消息的内容不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。

s104、利用目标节点中的目标服务端接收其他所有节点的客户端发送的连接请求;

本申请实施例在建立目标节点与其他所有节点之间的单向连接后,利用目标节点中的目标服务端接收其他所有节点的客户端发送的连接请求。由上文可知,其他所有节点的数量有n-1个,故接收其他所有节点的客户端发送的连接请求的数量也为n-1个。进一步地,对于利用目标节点中的目标服务端接收其他所有节点的客户端发送的连接请求的过程,在此不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,该过程通常包括:控制目标节点中的目标服务端创建目标服务端子线程;利用目标服务端子线程接收其他所有节点的客户端发送的连接请求。其中,控制目标节点中的目标服务端创建目标服务端子线程,通常包括:控制目标节点中的目标服务端启动目标服务端线程,利用该目标服务端线程创建目标服务端子线程。在此对于目标服务端线程和目标服务端子线程的创建方式不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,例如可以通过继承thread类创建线程,也可通过实现runnable接口创建线程,还可使用callable和future创建线程。

s105、控制目标服务端向客户端发送响应消息,建立目标节点与其他所有节点之间的双向连接。

本申请实施例在利用目标节点中的目标服务端接收其他所有节点的客户端发送的连接请求后,控制目标服务端向客户端发送响应消息,建立目标节点与其他所有节点之间的双向连接。在此对响应消息的内容不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。进一步地,建立目标节点与其他所有节点之间的双向连接之后,通常还包括:将目标节点与其他所有节点之间的双向连接对应的信息和其他所有节点的节点信息进行绑定并记录至目标节点中。由于目标节点为分布式存储系统中的任一节点,故当分布式存储系统中每个节点均与其他节点建立稳定的双向连接,此时就组成了分布式的通信网络。所以,上层的应用层如iscsi服务在启动相关进程时,会注册由accelio组件提供的请求发送接口和请求处理接口,当应用层通过客户端调用发送接口时,accelio会解析应用层传入的数据。当判断出相应连接可用时,然后封装数据向对端发送数据包,当对端的服务端收到请求后,会解析数据并传递给应用层去处理,应用层处理完毕后将新的数据传给服务端,服务端封装消息后会发送响应消息,当客户端收到响应消息后会解析数据,然后向应用层回返数据。而且,accelio组件会通过定时器监测请求的处理时间,一旦发送或接受超时,会销毁当前的请求。

本申请实施例在读取分布式存储系统中所有节点的节点信息后,不仅建立了目标节点的目标客户端与其他所有节点的服务端的连接关系,还建立了该目标节点的目标服务端和其他所有节点的客户端之间的连接关系,实现了分布式存储系统中分布式的iscsi服务,进而即使在主节点出现异常的情况下,分布式存储系统的iscsi服务也能正常工作。而且,iscsi服务在线升级时,可以实现业务的快速切换。进一步地,实现了分布式存储系统中分布式的iscsi服务后,可以通过某一个节点获取整个集群的iscsi服务信息。

下面对本申请实施例提供的一种分布式iscsi服务实现系统、分布式存储系统及计算机可读存储介质进行介绍,下文描述的分布式iscsi服务实现系统、分布式存储系统及计算机可读存储介质与上文描述的分布式iscsi服务实现方法可相互对应参照。

请参考图3,图3为本申请实施例所提供的一种分布式iscsi服务实现系统的结构框图;该分布式iscsi服务实现系统包括:

节点信息读取模块301,用于读取分布式存储系统中所有节点的节点信息;

连接请求发送控制模块302,用于控制目标节点中的目标客户端根据节点信息向其他所有节点的服务端发送连接请求;其中,目标节点为分布式存储系统中的任一节点;

单向连接建立模块303,用于利用目标客户端接收服务端发送的响应消息,建立目标节点与其他所有节点之间的单向连接;

连接请求接收模块304,用于利用目标节点中的目标服务端接收其他所有节点的客户端发送的连接请求;

双向连接建立模块305,用于控制目标服务端向客户端发送响应消息,建立目标节点与其他所有节点之间的双向连接。

基于上述实施例,本实施例中连接请求发送控制模块302,通常包括:

目标客户端子线程创建控制单元,用于控制目标节点中的目标客户端创建目标客户端子线程;

连接请求发送单元,用于利用目标客户端子线程根据节点信息向其他所有节点的服务端发送连接请求。

基于上述实施例,本实施例中连接请求接收模块304,通常包括:

目标服务端子线程创建控制单元,用于控制目标节点中的目标服务端创建目标服务端子线程;

连接请求接收单元,用于利用目标服务端子线程接收其他所有节点的客户端发送的连接请求。

基于上述任意实施例,本实施例中该分布式iscsi服务实现系统通常还包括:

信息记录模块,用于将目标节点与其他所有节点之间的双向连接对应的信息和其他所有节点的节点信息进行绑定并记录至目标节点中。

本申请还提供一种分布式存储系统,包括:

存储器和处理器;其中,存储器用于存储计算机程序,处理器用于执行计算机程序时实现上述任意实施例的分布式iscsi服务实现方法的步骤。

本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的分布式iscsi服务实现方法的步骤。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种分布式iscsi服务实现方法、系统、分布式存储系统及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1