一种NAS集群系统及NAS集群运行方法与流程

文档序号:15358544发布日期:2018-09-05 00:19阅读:267来源:国知局

本发明涉及集群性能技术领域,特别是涉及一种NAS集群系统。本发明还涉及一种NAS集群运行方法。



背景技术:

NAS(Network Attached Storage的简称)即网络附加存储,是一种直接连接在网络上的存储结构,支持多种文件传输协议,如NFS、CIFS以供Linux和Windows用户访问。

集群NAS是指协同多个NAS节点对外提供高性能、高可用和高负载均衡的NAS(NFS/CIFS)服务。集群NAS从整体架构上由存储子系统、NAS集群、客户端和网络组成。存储子系统包括多个存储服务器。其中,存储子系统可以使用存储区域网络SAN、直接连接存储DAS或者面向对象存储设备OSD的存储架构,DAS架构中每个存储服务器直连各自的后端存储介质,并以SAN文件系统或集群文件系统的方式为NAS集群提供标准文件访问接口。

该架构下集群的扩展是通过增加存储服务器实现的,但是,这种方式下,在扩展存储服务器时,需要将集群所用的开源软件剪裁进每个存储服务器包含的控制器的操作系统中,所需开发时间过长;并且目前的存储服务器与SAN(Storage Area Network,存储区域网络)交互时,两者之间没有隔离带,容易出现问题,可靠性低。

因此,如何提供一种在集群扩展时开发时间短且可靠性高的NAS集群系统及其运行方法是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种NAS集群系统,通过虚拟机处理集群业务,减少集群扩展时对开源软件的裁剪工作,减少开发时间,并能够在存储服务器与网络间增加隔离带,提高集群的可靠性;本发明的另一目的是提供一种基于上述系统的NAS集群运行方法。

为解决上述技术问题,本发明提供了一种NAS集群系统,包括客户端、存储子系统、和用于连接所述客户端和所述存储子系统的网络;

所述存储子系统包括多个存储服务器,每个所述存储服务器上包含成对的控制器,每个所述控制器上设置有一个虚拟机,所述虚拟机通过自身所处的存储服务器内的iscsi target连接该存储服务器的后端存储介质;所述虚拟机用于处理自身所在的存储服务器上接收的NAS业务请求。

优选地,所述虚拟机还包括:

用于提供CIFS协议支持的Samba组件、提供NFS服务的内核nfs组件、用于FTP服务的proftpd组件以及用于进行资源管理的pacemaker集群资源管理器。

为解决上述技术问题,本发明还提供了一种NAS集群运行方法,基于以上任一项所述的系统,所述方法包括:

当前工作的虚拟机通过网络接收所述客户端发送的NAS业务请求;

所述当前工作的虚拟机依据所述NAS业务请求进行NAS业务处理;

所述当前工作的虚拟机将处理结果通过所述网络反馈至所述客户端。

优选地,还包括:

实时检测当前工作的虚拟机的状态;

当前工作的虚拟机接收外部发送的NAS业务请求后,依据检测状态判断所述当前工作的虚拟机是否正常;

若所述当前工作的虚拟机正常,则由所述当前工作的虚拟机处理所述NAS业务请求;

若所述当前工作的虚拟机故障,则依据预设的接管顺序,选择接管虚拟机,将所述当前工作的虚拟机上的文件系统及虚拟IP漂移至所述接管虚拟机内,并将所述NAS业务请求转发至所述接管虚拟机,由所述接管虚拟机处理所述NAS业务请求。

优选地,所述将所述当前工作的虚拟机上的文件系统漂移至所述接管虚拟机内的过程包括:

所述当前工作的控制器内的pacemaker控制所述当前工作的虚拟机的资源代理进程停止,取消对所述当前工作的虚拟机的共享目录的共享,并发送启动信息至所述接管控制器;

所述接管控制器的pacemaker控制所述接管虚拟机的资源代理进程启动,开启所述接管虚拟机的共享目录。

优选地,当前所述当前工作的虚拟机故障时,所述接管虚拟机处理所述NAS业务请求之前,还包括:

采用强制隔离机制,将所述当前工作的虚拟机所在的控制器隔离,使所述当前工作的虚拟机离线。

优选地,还包括:

实时统计集群内的可用控制器的个数;

每当检测到有控制器故障时,等待一个预设时间长度后,依据当前可用控制器的个数,动态调整quorum数值;

实时判断所述当前可用控制器的个数是否不小于所述quorum数值,若是,则集群正常工作,否则,集群停止工作。

优选地,所述虚拟机内文件系统的建立过程为:

依据iscsi协议连接自身所在的存储服务器的后端存储介质中的卷,依据连接的卷虚拟化得到所述虚拟机的虚拟磁盘设备;

将所述虚拟磁盘设备格式化为本地文件系统,挂载到文件系统目录上。

优选地,所述将所述NAS业务请求转发至所述接管虚拟机的过程具体为:

将所述NAS业务请求通过内部网桥转发至所述接管虚拟机。

本发明提供了一种NAS集群系统,其存储子系统包含的存储服务器中的每个控制器上均建立一个虚拟机,并由虚拟机来处理存储服务器上接收的NAS业务请求。由于NAS所用的开源软件在虚拟机上使用时,并不需要做多少裁剪即可使用,因此不需要对这些开源软件做大改动,减少了开发时间;并且,由于虚拟机存在kvm层,在通过虚拟机与SAN网络进行交互时,kvm层可作为隔离带存在,提高集群的可靠性。本发明还提供了一种基于上述系统的运行方法。

附图说明

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

图1为本发明提供的一种NAS集群系统的结构示意图;

图2为本发明提供的一种NAS集群运行方法的过程的流程图;

图3为本发明提供的另一种NAS集群运行方法的过程的流程图。

具体实施方式

本发明的核心是提供一种NAS集群系统,通过虚拟机处理集群业务,减少集群扩展时对开源软件的裁剪工作,减少开发时间,并能够在存储服务器与网络间增加隔离带,提高集群的可靠性;本发明的另一核心是提供一种基于上述系统的NAS集群运行方法。

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

本发明提供了一种NAS集群系统,参见图1所示,图1为本发明提供的一种NAS集群系统的结构示意图;包括客户端1、存储子系统、和用于连接客户端1和存储子系统的网络2;

存储子系统包括多个存储服务器3,每个存储服务器3上包含成对的控制器31,每个控制器31上设置有一个虚拟机311,虚拟机311通过自身所处的存储服务器3内的iscsi target32连接该存储服务器3的后端存储介质4;虚拟机311用于处理自身所在的存储服务器3上接收的NAS业务请求。

其中,每个虚拟机311均分配有唯一的虚拟IP,每个虚拟机311上均安装centos社区企业操作系统。每个虚拟机311上均安装有本地文件系统,例如可以采用xfs文件系统,来实现文件的存储和访问。

另外,每对控制器31上的两个虚拟机311之间通过控制器31直连的网络2实现心跳控制。

作为优选地,虚拟机311还包括:

用于提供CIFS(Common Internet File System,通用网络文件系统)协议支持的Samba组件(SMB(Server Messages Block,信息服务块)的一种实现方式)、提供NFS(NetworkFileSystem,网络文件系统)服务的内核nfs组件、用于FTP服务的proftpd组件(一种FTP服务器程序)以及用于进行资源管理的pacemaker集群资源管理器。

可以理解的是,虚拟机311需要通过以上组件来实现业务的处理、信息的访问以及自身的内部管理,以上几种均为常用的协议组件,由于NAS集群中,其业务基本为NFS、CIFS、FTP等共享操作,因此将以上几种组件设置于虚拟机311中即能够基本满足NAS集群的业务要求,设置过多的组件反而会影响虚拟机311的性能。当然,若客户端1有其他需求,也可根据用户需求调整虚拟机311内的组件类型及个数,本发明对此不作具体限定。

本发明提供了一种NAS集群系统,其存储子系统包含的存储服务器中的每个控制器上均建立一个虚拟机,并由虚拟机来处理存储服务器上接收的NAS业务请求。由于NAS所用的开源软件在虚拟机上使用时,并不需要做多少裁剪即可使用,因此不需要对这些开源软件做大改动,减少了开发时间;并且,由于虚拟机存在kvm层,在通过虚拟机与SAN网络进行交互时,kvm层可作为隔离带存在,提高集群的可靠性。

本发明还提供了一种NAS集群运行方法,基于以上任一项的系统,参见图2所示,图2为本发明提供的一种NAS集群运行方法的过程的流程图;该方法包括:

步骤s1:当前工作的虚拟机通过网络接收客户端发送的NAS业务请求;

步骤s2:当前工作的虚拟机依据NAS业务请求进行NAS业务处理;

步骤s3:当前工作的虚拟机将处理结果通过网络反馈至客户端。

可以理解的是,每个存储服务器上同一时间仅有一个虚拟机工作,因此一般需要用户制定一个虚拟机(或控制器,虚拟机与控制器一一对应)作为主虚拟机,在正常情况下,NAS业务均由主虚拟机处理,在主虚拟机故障的情况下,才会转移到其他虚拟机处理。

进一步可知,虚机及其内部通信全部采用内部ip,用户不可见,NAS服务请求通过NAT(网络地址转换)转发到内部网络。

在优选实施例中,参见图3所示,图3为本发明提供的另一种NAS集群运行方法的过程的流程图。该方法还包括:

步骤s0:实时检测当前工作的虚拟机的状态;

其中,这里的检测过程可以由每个虚拟机上的pacemaker执行monitor流程,来监控自身服务状态。

步骤s11:当前工作的虚拟机接收外部发送的NAS业务请求后,依据检测状态判断当前工作的虚拟机是否正常;若当前工作的虚拟机正常,则进入步骤s2;若当前工作的虚拟机故障,则进入步骤s4;

步骤s4:依据预设的接管顺序,选择接管虚拟机,将当前工作的虚拟机上的文件系统及虚拟IP漂移至接管虚拟机内,并将NAS业务请求转发至接管虚拟机,由接管虚拟机处理NAS业务请求;

可以理解的是,文件系统是用于承载业务的处理的,而NAS业务请求是与虚拟IP相对应的,因此当虚拟机故障时,想要由其他虚拟机继续运行该业务的话,不仅需要将故障虚拟机的文件系统漂移至接管虚拟机,还要将虚拟IP也漂移过去。

步骤s5:接管虚拟机将处理结果通过网络反馈至客户端。

需要注意的是,每个虚拟机上均有各自挂载的文件系统,但是除当前工作的虚拟机外,其余虚拟机内的文件系统处于关闭状态,在当前工作的虚拟机宕机时,才将宕机的虚拟机内的文件系统漂移至接管虚拟机内。

进一步可知,当业务原本运行的虚拟机恢复正常后,该虚拟机的虚拟IP和文件系统会漂移回去,NAS业务也会重新回到该虚拟机运行。

可以理解的是,在该实施例中,通过采用业务漂移的方式,将宕机的虚拟机上的业务漂移至其余虚拟机上运行,这种冗余方式,实现了集群系统的高可用,避免了业务的中断。

作为优选地,本发明中的文件系统读写不进行缓存处理,文件关闭后直接刷入磁盘,从而防止掉电后,缓存数据丢失的情况出现,可靠性更高。

其中,步骤s4中,将当前工作的虚拟机上的文件系统漂移至接管虚拟机内的过程包括:

当前工作的控制器内的pacemaker控制当前工作的虚拟机的资源代理进程停止,取消对当前工作的虚拟机的共享目录的共享,并发送启动信息至接管控制器;

接管控制器的pacemaker控制接管虚拟机的资源代理进程启动,开启接管虚拟机的共享目录。

可以理解的是,Pacemaker软件的功能主要包括虚拟IP资源管理,文件系统资源管理,共享服务资源管理等。每一种资源管理都是Pacemaker通过resource agent实现。Pacemaker自带的资源管理程序都在/usr/lib/ocf/resource.d/下,其中heartbeat目录中包含了那些自带的常用服务。每个OCF资源是一个可执行文件,通过命令行参数和环境变量接受来自Pacemaker的输入。当有一个虚拟机故障时,pacemaker会控制该虚拟机的resource agent执行stop流程,即把共享的目录取消共享。根据预设的接管顺序,接管虚拟机的pacemaker控制自身的resource agent执行start流程,即启动共享目录。

作为优选地,当前工作的虚拟机故障时,接管虚拟机处理NAS业务请求之前,还包括:

采用强制隔离机制,将当前工作的虚拟机所在的控制器隔离,使当前工作的虚拟机离线。

可以理解的是,这里具体采用STONITH(Shoot-Other-Node-In-The-Head)机制实现隔离功能,控制器上安装libvirt(libvirt是一套免费、开源的支持Linux下主流虚拟化工具的C函数库),虚拟机需要安装fence_agents_virsh。由于某个虚拟机没有反应时,并不代表该虚拟机没有数据访问,因此,为了100%确定数据安全,需要使用STONITH隔离故障虚拟机,这样才能保证在从另一个虚拟机访问数据前,故障虚拟机已离线。STONITH还可以在无法停止集群服务时起作用。在这种情况下,集群使用STONITH强制整个服务器离线,以便在其他位置安全地启动该服务。这种强制隔离的方式,极大的提高了数据的安全性和业务处理的可靠性。

在另一实施例中,该方法还包括:

实时统计集群内的可用控制器的个数;

每当检测到有控制器故障时,等待一个预设时间长度后,依据当前可用控制器的个数,动态调整quorum数值;

实时判断当前可用控制器的个数是否不小于quorum数值,若是,则集群正常工作,否则,集群停止工作。

可以理解的是,上述过程的目的是为了采用quorum机制来防止集群发生脑裂。对于2个控制器的集群,集群expected votes(期望投票数)为2,则集群的quorum为1,所以当至少一个控制器处于可用的时候,集群中的total votes(总投票数=可用控制器的个数)才大于或等于quorum,集群才可以正常工作。但是如果集群不设置quorum的动态调整,当2个控制器均发生故障后,集群便不可使用,因为total votes小于quorum了。所以必须动态调整quorum。例如对于2个控制器的集群,初始quorum为1,当一个控制器故障时,等待一个预设时间长度(可配置,默认10s),便动态调整quorum,即重新根据当前集群控制器数量计算quorum,更新后的集群quorum变成了0。采用上述机制能够防止集群发生脑裂,保证集群的正常工作,提高集群的可靠性。

具体的,虚拟机内文件系统的建立过程为:

依据iscsi协议连接自身所在的存储服务器的后端存储介质中的卷,依据连接的卷虚拟化得到虚拟机的虚拟磁盘设备;

将虚拟磁盘设备格式化为本地文件系统,挂载到文件系统目录上。

作为优选地,将NAS业务请求转发至接管虚拟机的过程具体为:

将NAS业务请求通过内部网桥转发至接管虚拟机。这里的内部网桥可以为LinuxBridge,当然,本发明对此不作限定。

可以理解的是,通过内部网桥进行业务请求的转移,能够尽可能保证转移的NAS业务请求的完整性和实时性。

本发明提供了一种NAS集群运行方法,其存储子系统包含的存储服务器中的每个控制器上均建立一个虚拟机,并由虚拟机来处理存储服务器上接收的NAS业务请求。由于NAS所用的开源软件在虚拟机上使用时,并不需要做多少裁剪即可使用,因此不需要对这些开源软件做大改动,减少了开发时间;并且,由于虚拟机存在kvm层,在通过虚拟机与SAN网络进行交互时,kvm层可作为隔离带存在,提高集群的可靠性。

以上的几种具体实施方式仅是本发明的优选实施方式,以上几种具体实施例可以任意组合,组合后得到的实施例也在本发明的保护范围之内。应当指出,对于本技术领域的普通技术人员来说,相关专业技术人员在不脱离本发明精神和构思前提下推演出的其他改进和变化,均应包含在本发明的保护范围之内。

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

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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