故障检测方法及装置与流程

文档序号:11133813阅读:360来源:国知局
故障检测方法及装置与制造工艺

本发明涉及数据库技术领域,特别涉及一种故障检测方法及装置。



背景技术:

分布式存储系统包括三种类型的节点(节点指的是一台运行有用户业务进程的物理服务器或虚拟服务器):元数据节点、计算节点和存储节点。其中,元数据节点用于保存用户业务的管理数据,存储节点用于保存用户业务的业务数据,计算节点用于向用户提供接口以访问存储节点中保存的业务数据。这三种类型的节点作为一个整体来处理用户业务。当某一节点出现故障时,可能会导致被处理的用户业务受损,但并不会导致该用户业务中断(即用户业务处于亚健康状态),在这种情况下,也需要及时进行故障检测,确定故障节点(即出现故障的节点),并采取相应的措施以便继续处理该用户业务。

现有技术中,当被处理的用户业务受损时,通常是先确定该用户业务对应的接口,再确定该接口对应的计算节点,然后检测该计算节点是否出现故障,当该计算节点出现故障时,进行故障恢复,当该计算节点未出现故障时,检测保存业务数据的存储主节点(为了防止业务数据丢失,同一业务数据被同时保存在存储主节点和存储备节点上)是否出现故障,当该存储主节点出现故障时,进行故障恢复,当该存储主节点未出现故障时,检测保存该业务数据的存储备节点是否出现故障,当该存储备节点出现故障时,进行故障恢复。此外,还可能需要对保存管理数据的元数据节点进行故障检测。

由于需要对较多节点进行故障检测,所以检测故障的过程较繁琐,检测效率较低。



技术实现要素:

为了解决现有技术检测故障的过程较繁琐,检测效率较低的问题,本发明提供了一种故障检测方法及装置。所述技术方案如下:

第一方面,提供了一种故障检测方法,用于故障分析节点,该故障分析节点可以为分布式存储系统中的元数据节点、计算节点或存储节点,也可以为除元数据节点、计算节点和存储节点之外的运行有用户业务进程的物理服务器或虚拟服务器,即为一个独立的节点,该方法包括:故障分析节点统计分布式存储系统的n个节点中每个节点上记录的输入输出IO异常事件数量,n为大于1的整数,IO异常事件为IO操作超时所产生的事件。故障分析节点再根据统计的每个节点上记录的IO异常事件数量,为每个节点所属的收发对中的节点投票,该收发对包括:发起数据请求的请求节点和响应数据请求的响应节点。之后,故障分析节点根据每个节点获得的投票数量从n个节点中筛选出至少一个节点作为故障节点。

该故障检测方法采用投票机制对记录有IO异常事件的节点所属的收发对中的节点投票,根据所有节点获得的投票数量筛选出故障节点,快速缩小了故障检测范围,加速了定位故障节点的过程,简化了检测过程,提高了检测效率。

可选的,根据每个节点获得的投票数量从n个节点中筛选出至少一个节点作为故障节点,包括:根据每个节点获得的投票数量将n个节点降序排列;将排名前m位的节点确定为故障节点,m为大于等于1的整数。

该故障检测方法采用投票机制对记录有IO异常事件的节点所属的收发对中的节点投票,投票数量越多的节点,出现故障的概率就越大,需要优先对该节点进行故障排查。因此,该故障检测方法按照所有节点获得的投票数量的排序,筛选出投票数量排名靠前的节点作为故障节点。

可选的,在统计分布式存储系统的n个节点中每个节点上记录的输入输出IO异常事件数量之前,该方法还包括:获取第一节点与其余节点的交互时延,得到多个交互时延,该第一节点为n个节点中的任一节点;接着,确定目标交互时延的数量p,该目标交互时延为与多个交互时延中的最小交互时延的差值大于预设差值的交互时延;之后,在第一节点上记录p个IO异常事件。

预设差值的大小可以根据实际应用来确定。假设节点LL为其余节点中的某一节点,在确定第一节点与节点LL的交互时延时,可以确定第一节点与节点LL的平均时延,也即确定第一节点与节点LL在一段时间内的所有交互时延的平均值。记录的IO异常事件可以包括进行交互的两个节点的信息,如两个节点请求的业务数据和系统拓扑等中两个节点的连接关系等。该记录过程可以由故障分析节点完成,也可以由第一节点完成。

当某一节点出现故障时,所有向该节点发起数据请求的请求节点与该节点的交互时延都会比较大,所以该故障检测方法通过确定每个节点的目标交互时延的数量,在每个节点上记录相应数量的IO异常事件,进而使得故障分析节点能够统计每个节点上记录的IO异常事件数量,并为节点投票。

可选的,在统计分布式存储系统的n个节点中每个节点上记录的输入输出IO异常事件数量之前,该方法还包括:获取第一节点与其余节点的交互时延,得到多个交互时延,第一节点为n个节点中的任一节点;再确定多个交互时延中大于预设时延阈值的交互时延的数量p;之后,在第一节点上记录p个IO异常事件。

该故障检测方法通过确定多个交互时延中大于预设时延阈值的交互时延的数量,在每个节点上记录相应数量的IO异常事件,进而使得故障分析节点能够统计每个节点上记录的IO异常事件数量,并为节点投票。

可选的,根据统计的每个节点上记录的IO异常事件数量,为每个节点所属的收发对中的节点投票,包括:根据统计的第一节点上记录的IO异常事件数量p,为第一节点所属的p个收发对中每个收发对包括的第一节点和响应节点分别投票,该第一节点为n个节点中的任一节点,该第一节点用于发起数据请求,响应节点用于响应数据请求。

该故障检测方法能够为每个节点所属的收发对中的节点投票,得到所有节点的投票数量,以便于故障分析节点根据每个节点获得的投票数量从n个节点中筛选出至少一个节点作为故障节点。

可选的,统计分布式存储系统的n个节点中每个节点上记录的输入输出IO异常事件数量,包括:检测被处理的用户业务是否出现异常;当用户业务出现异常时,确定该异常的类型;当该异常的类型为亚健康类型时,统计n个节点中每个节点上记录的IO异常事件数量。

可选的,该用户业务可以为文件系统业务或数据库业务等。在统计每个节点上记录的IO异常事件数量时,故障分析节点可以先检测被处理的用户业务是否出现异常,当用户业务出现异常时,故障分析节点判断该异常的类型是否为亚健康类型。当该异常的类型为亚健康类型时,表明用户业务因故障节点已受损,但并未中断。此时,故障分析节点便可以统计n个节点中每个节点上记录的IO异常事件数量,进而为节点投票。

第二方面,提供了一种故障检测装置,用于故障分析节点,该故障分析节点可以为分布式存储系统中的元数据节点、计算节点或存储节点,也可以为除元数据节点、计算节点和存储节点之外的运行有用户业务进程的物理服务器或虚拟服务器,该故障检测装置包括:至少一个模块,该至少一个模块用于实现上述第一方面所提供的故障检测方法。

第三方面,提供了一种故障检测装置,用于故障分析节点,该故障分析节点可以为分布式存储系统中的元数据节点、计算节点或存储节点,也可以为除元数据节点、计算节点和存储节点之外的运行有用户业务进程的物理服务器或虚拟服务器,该故障检测装置包括:处理器、存储器、网络接口和总线。其中,总线用于连接处理器、存储器和网络接口。网络接口用于实现节点之间的通信连接。处理器用于执行存储器中存储的程序来实现第一方面所述的故障检测方法。

上述本发明第二至第三方面所获得的技术效果与第一方面中对应的技术手段所获得的技术效果近似,在这里不再赘述。

综上所述,本发明提供的技术方案带来的有益效果是:

由于能够根据统计的每个节点上记录的IO异常事件数量,为每个节点所属的收发对中的节点投票,并根据每个节点获得的投票数量从n个节点中筛选确定故障节点,快速缩小了故障检测范围,加速了定位故障节点的过程,减少了需要进行故障检测的节点的数量,相较于现有技术,无需对较多节点进行故障检测,所以简化了检测故障的过程,提高了检测效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

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

图1是本发明各个实施例所涉及的分布式存储系统的结构示意图;

图2是本发明实施例提供的一种故障检测装置的结构示意图;

图3-1是本发明实施例提供的一种故障检测方法的流程图;

图3-2是本发明实施例提供的一种统计IO异常事件数量的流程图;

图3-3是本发明实施例提供的一种筛选故障节点的流程图;

图3-4是一种分布式存储系统的结构示意图;

图4是本发明实施例提供的另一种故障检测方法的流程图;

图5-1是本发明实施例提供的一种故障检测装置的结构示意图;

图5-2是本发明实施例提供的另一种故障检测装置的结构示意图;

图5-3是本发明实施例提供的又一种故障检测装置的结构示意图。

通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明各个实施例所涉及的分布式存储系统的结构示意图,该分布式存储系统可以包括元数据节点001、计算节点002和存储节点003。其中,元数据节点001用于保存用户业务的管理数据,计算节点002用于向用户提供接口以访问存储节点中保存的业务数据,存储节点003用于保存用户业务的业务数据。元数据节点001、计算节点002和存储节点003可以是一台运行有用户业务进程的物理服务器或虚拟服务器。计算节点可以向存储节点发送数据请求,请求获取业务数据,计算节点也可以向元数据节点发送数据请求,请求获取管理数据;存储节点可以向元数据节点发送数据请求,请求获取管理数据,存储节点也可以向另一存储节点发送数据请求,请求获取业务数据。本发明实施例对三种类型的节点的数量不做限定。

需要补充说明的是,现有技术中,大规模的分布式存储系统使用的都是X86通用服务器(X86通用服务器指的是一系列以“86”为结尾的处理器的服务器),对于X86通用服务器而言,磁盘、固态硬盘(英文:Solid State Drives;简称:SSD)、网络、中央处理器(英文:Central Processing Unit;简称:CPU)等发生硬件故障的概率较高。当这些硬件故障导致被处理的用户业务中断时,分布式存储系统能够采用完备的机制来快速隔离出现故障的服务器(即故障节点)。此外也存在另外一种情况,即出现的硬件故障仅会导致被处理的用户业务受损,但不至于导致户业务中断。用户业务受损通常体现为输入输出(英文:Input Output;简称:IO)操作时延较大(IO操作时延较大也被称作IO亚健康)。由于这种情况,在不同的应用场景以及不同的硬件配置下无法预测IO操作时延,所以无法按照用户业务中断的情况来快速隔离故障节点,且分布式存储系统中节点间的关系较密切,同一条IO路径上的节点会相互影响,单个节点无法自行检测故障,需要进行全局性的故障节点定位。因此,当用户业务受损时,为了迅速恢复故障,就需要从大量的节点中快速定位故障节点,可见,该检测过程十分复杂。

在分布式存储系统中,用户业务的业务数据被分布在多个存储节点上,该业务数据与多个存储节点的对应关系被记录在元数据节点保存的系统拓扑中。元数据节点用于保存并维护该系统拓扑。计算节点和存储节点会周期性地从元数据节点上获取该系统拓扑。计算节点可以根据该系统拓扑查找业务数据,存储节点可以根据该系统拓扑查找备份数据(备份数据指的是业务数据的副本数据)。当分布式存储系统中有节点退出或进入时,元数据节点会更新系统拓扑,并在特定事件触发后将更新后的系统拓扑主动发送至计算节点和存储节点。如果元数据节点无法及时更新系统拓扑,或者计算节点和存储节点无法及时获取更新后的系统拓扑,IO操作会发生卡顿或阻塞,最终导致用户业务受损甚至中断。发生故障的元数据节点对分布式存储系统的影响范围最大。

计算节点用于向用户提供小型计算机系统接口(英文:Small Computer System Interface;简称:SCSI)或互联网小型计算机系统接口(英文:Intemet Small Computer System Interface;简称:iSCSI)、Object(中文:对象)接口、File(中文:文件)接口等,这些接口是用户访问分布式存储系统的入口。发生故障的计算节点会对用户通过计算节点访问业务数据造成影响。

作为分布式存储系统的核心,存储节点保存有用户业务的业务数据。发生故障的存储节点会对用户访问存储节点上的业务数据造成影响。

现有技术中,当用户感知到用户业务受损时,采用的是单点故障检测技术,具体是根据系统拓扑确定用户业务对应的接口(该接口也被称作用户卷),确定该接口对应的计算节点,排查计算节点的状态和日志,排查是否和元数据节点(或存储节点)存在IO操作异常,再在系统拓扑中查找存储节点,检测存储节点是否出现故障,再在系统拓扑中查找元数据节点,检测元数据节点是否出现故障。可见,该检测过程较繁琐,检测效率较低。

图2是本发明实施例提供的一种故障检测装置的结构示意图,该装置可以用于故障分析节点,该故障分析节点可以为图1所示的元数据节点001、计算节点002或存储节点003,也可以为除元数据节点001、计算节点002和存储节点003之外的运行有用户业务进程的物理服务器或虚拟服务器,即为一个独立的节点。如图2所示,该装置包括处理器201(如CPU)、存储器202、网络接口203和总线204。其中,总线204用于连接处理器201、存储器202和网络接口203。存储器202可能包含随机存取存储器(英文:Random Access Memory;简称:RAM),也可能包含非不稳定的存储器(英文:non-volatile memory),例如至少一个磁盘存储器。通过网络接口203(可以是有线或者无线)实现节点之间的通信连接。存储器202中存储有程序2021,该程序2021用于实现各种应用功能,处理器201用于执行存储器202中存储的程序2021来实现下述故障检测方法。

本发明实施例提供了一种故障检测方法,该方法可以用于故障分析节点,该故障分析节点可以为图1所示的元数据节点001、计算节点002或存储节点003,也可以为除元数据节点001、计算节点002和存储节点003之外的运行有用户业务进程的物理服务器或虚拟服务器,如图3-1所示,该方法可以包括:

步骤301、故障分析节点获取第一节点与其余节点的交互时延,得到多个交互时延。

该第一节点为n个节点中的任一节点。其余节点指的是与第一节点进行数据交互的所有节点。需要说明的是,本发明实施例中,节点10与节点20的交互时延指的是节点10发出数据请求到接收到节点20反馈的响应的时间差。

在分布式存储系统中,计算节点与存储节点,存储节点与存储节点,计算节点与元数据节点,存储节点与元数据节点之间都会进行数据交互,任何一个数据交互的交互时延变大都会影响到被处理的用户业务。

假设节点LL为其余节点中的某一节点,在确定第一节点与节点LL的交互时延时,可以确定第一节点与节点LL的平均时延,也即确定第一节点与节点LL在一段时间内的所有交互时延的平均值。

现以分布式存储系统包括七个节点为例进行说明,该七个节点分别为计算节点A,计算节点B,元数据节点a,存储节点CC1,存储节点CC2,存储节点CC3和存储节点CC4。故障分析节点可以为该七个节点中的任一节点。假设第一节点为存储节点CC3,且存储节点CC3与计算节点A的交互时延为t1,存储节点CC3与存储节点CC1的交互时延为t2,存储节点CC3与存储节点CC4的交互时延为t3,那么故障分析节点可以获取存储节点CC3的三个交互时延:t1、t2和t3。

步骤302、故障分析节点确定目标交互时延的数量p,该目标交互时延为与多个交互时延中的最小交互时延的差值大于预设差值的交互时延。

按照步骤301,故障分析节点得到存储节点CC3的三个交互时延:t1、t2和t3。假设这三个交互时延中的最小交互时延为t2,如果预设差值为x,经判断,t1与t2的差值大于x,t3与t2的差值也大于x,那么,故障分析节点可以确定目标交互时延是t1和t3,目标交互时延的数量p为2。预设差值x的大小可以根据实际应用来确定,本发明实施例对此不做限定。

步骤303、故障分析节点在第一节点上记录p个IO异常事件。

该IO异常事件可以包括进行交互的两个节点的信息,如两个节点请求的业务数据和系统拓扑等中两个节点的连接关系等。

按照步骤302,故障分析节点确定了目标交互时延的数量p为2之后,可以在存储节点CC3上记录两个IO异常事件。该IO异常事件为IO操作超时所产生的事件。

假设第一节点为计算节点A,故障分析节点获取计算节点A与其余节点的交互时延,得到四个交互时延,并确定了此时的目标交互时延的数量p为3,那么故障分析节点可以在计算节点A上记录三个IO异常事件。

假设是存储节点CC1出现了故障,如存储节点CC1的磁盘IO操作速度降低,那么所有向存储节点CC1发起数据请求的请求节点与存储节点CC1的交互时延都会比较大,这些请求节点都有可能记录一个IO异常事件。此外,本发明实施例中的故障均指的是硬件故障。

需要说明的是,该记录过程可以由故障分析节点完成,也可以由第一节点完成,本发明实施例对此不做限定。

步骤304、故障分析节点统计分布式存储系统的n个节点中每个节点上记录的IO异常事件数量。

n为大于1的整数。

具体的,如图3-2所示,步骤304可以包括:

步骤3041、故障分析节点检测被处理的用户业务是否出现异常。

在统计每个节点上记录的IO异常事件数量时,故障分析节点可以先检测被处理的用户业务是否出现异常。示例的,该用户业务可以为文件系统业务或数据库业务等。

步骤3042、当用户业务出现异常时,故障分析节点确定异常的类型。

当用户业务出现异常时,故障分析节点可以确定异常的类型,判断该异常的类型是否为亚健康类型。当该异常的类型为亚健康类型时,表明用户业务因故障节点已受损,但并未中断。示例的,当该用户业务的处理时延较大,或者带宽出现较大幅度波动时,故障分析节点都可以确定异常的类型为亚健康类型。

步骤3043、当异常的类型为亚健康类型时,故障分析节点统计n个节点中每个节点上记录的IO异常事件数量。

可选的,故障分析节点可以采用日志收集工具,基于系统拓扑去收集和统计每个节点上记录的IO异常事件数量。

当异常的类型为亚健康类型时,故障分析节点可以统计分布式存储系统七个节点中每个节点的IO异常事件数量。如故障分析节点统计的计算节点A上记录的IO异常事件数量为z1,统计的计算节点B上记录的IO异常事件数量为z2,统计的存储节点CC1上记录的IO异常事件数量为z3,统计的存储节点CC2上记录的IO异常事件数量为z4,统计的存储节点CC3上记录的IO异常事件数量为z5,统计的存储节点CC4上记录的IO异常事件数量为z6,统计的元数据节点a上记录的IO异常事件数量为z7。

步骤305、故障分析节点根据统计的每个节点上记录的IO异常事件数量,为每个节点所属的收发对中的节点投票,该收发对包括:发起数据请求的请求节点和响应数据请求的响应节点。

当出现硬件故障时,常常会体现在IO操作超时上。当某一节点出现故障时,与该节点进行数据交互的节点也会受到影响,造成IO操作超时,产生IO异常事件。本发明实施例将进行数据交互的两个节点称为一个收发对。

按照步骤304,故障分析节点统计完七个节点中每个节点上记录的IO异常事件数量之后,根据统计的IO异常事件数量,为每个节点所属的收发对中的节点投票,投票数量越多的节点,出现故障的概率就越大,需要优先对该节点进行故障排查。

具体的,步骤305可以包括:

根据统计的第一节点上记录的IO异常事件数量p,为第一节点所属的p个收发对中每个收发对包括的第一节点和响应节点分别投票,第一节点用于发起数据请求,响应节点用于响应数据请求。

以分布式存储系统中的存储节点CC3为例,故障分析节点统计的存储节点CC3上记录的IO异常事件数量为2,那么故障分析节点可以为存储节点CC3所属的两个收发对中每个收发对包括的存储节点CC3和响应节点分别投票,如第一个收发对包括存储节点CC3和计算节点A,第二个收发对包括存储节点CC3和存储节点CC4。两个收发对中的存储节点CC3均为请求节点,用于发起数据请求,计算节点A和存储节点CC4均为响应节点,用于响应存储节点CC3发起的数据请求。故障分析节点根据IO异常事件数量2,为第一个收发对中的存储节点CC3和计算节点A分别投一票,为第二个收发对中的存储节点CC3和存储节点CC4分别投一票。

同样的,可以采用相同的方式为其余六个节点所属的收发对中的节点投票。最终,可以得到七个节点中每个节点的投票数量,该投票数量大于等于0。

步骤306、故障分析节点根据每个节点获得的投票数量从n个节点中筛选出至少一个节点作为故障节点。

故障分析节点得到每个节点的投票数量后,再根据每个节点获得的投票数量从分布式存储系统的七个节点中筛选出故障节点。

具体的,如图3-3所示,步骤306可以包括:

步骤3061、故障分析节点根据每个节点获得的投票数量将n个节点降序排列。

故障分析节点根据每个节点获得的投票数量将n个节点降序排列,排名越靠前的节点,出现故障的概率就越大,所以需要被优先排查。

示例的,分布式存储系统中的计算节点A获得的投票数量为y1,计算节点B获得的投票数量为y2,存储节点CC1获得的投票数量为y3,存储节点CC2获得的投票数量为y4,存储节点CC3获得的投票数量为y5,存储节点CC4获得的投票数量为y6,元数据节点a获得的投票数量为y7。假设y5>y4>y2>y1>y7>y6>y3那么故障分析节点根据y1至y7七个值将七个节点降序排列得到:存储节点CC3,存储节点CC2,计算节点B,计算节点A,元数据节点a,存储节点CC4,存储节点CC1。

步骤3062、故障分析节点将排名前m位的节点确定为故障节点,m为大于等于1的整数。

示例的,故障分析节点可以将步骤3061中排名前3位的节点如存储节点CC3,存储节点CC2和计算节点B确定为故障分析节点。或者,故障分析节点可以将排名第1位的节点如存储节点CC3确定为故障分析节点。

现以图3-4所示的分布式存储系统为例对该故障检测方法的步骤进行说明。假设故障分析节点为计算节点JS。按照步骤301,计算节点JS获取计算节点JS与存储节点CJ1的交互时延jh1,获取计算节点JS与存储节点CJ2的交互时延jh2,获取存储节点CJ1与存储节点CJ2的交互时延jh3,获取存储节点CJ1与计算节点JS的交互时延jh4。按照步骤302,计算节点JS确定计算节点JS的目标交互时延的数量为1,确定存储节点CJ1的目标交互时延的数量为1。按照步骤303,计算节点JS在计算节点JS上记录一个IO异常事件,在存储节点CJ1上记录一个IO异常事件。按照步骤304,计算节点JS统计计算节点JS上记录的IO异常事件数量为1,统计存储节点CJ1上记录的IO异常事件数量也为1。按照步骤305,计算节点JS为计算节点JS所属的收发对中的节点即计算节点JS和存储节点CJ2分别投一票,并为存储节点CJ1所属的收发对中的节点即存储节点CJ1和存储节点CJ2分别投一票。这样一来,计算节点JS获得的投票数量为1,存储节点CJ1获得的投票数量为1,存储节点CJ2获得的投票数量为2。按照步骤306,计算节点JS可以将获得投票数量最多的存储节点CJ2作为故障节点。

在分布式存储系统中,IO路径错综复杂,一个节点可能会参与到多个IO路径中,所以涉及到异常的IO路径越多的节点,出现故障的概率就越大。该故障检测方法采用投票机制对记录有IO异常事件的节点所属的收发对中的两个节点投票,最终按照所有节点获得的投票数量的排序,筛选出故障节点,从而达到了快速缩小故障检测范围,加速定位故障节点的过程,简化检测过程,提高检测效率的效果,减小了对用户业务的影响。

综上所述,本发明实施例提供的故障检测方法,由于能够根据统计的每个节点上记录的IO异常事件数量,为每个节点所属的收发对中的节点投票,并根据每个节点获得的投票数量从n个节点中筛选确定故障节点,快速缩小了故障检测范围,加速了定位故障节点的过程,减少了需要进行故障检测的节点的数量,相较于现有技术,无需对较多节点进行故障检测,所以简化了检测故障的过程,提高了检测效率,减小了对用户业务的影响。

本发明实施例提供了一种故障检测方法,该方法可以用于故障分析节点,该故障分析节点可以为图1所示的元数据节点001、计算节点002或存储节点003,也可以为除元数据节点001、计算节点002和存储节点003之外的运行有用户业务进程的物理服务器或虚拟服务器,如图4所示,该方法可以包括:

步骤401、故障分析节点获取第一节点与其余节点的交互时延,得到多个交互时延。

第一节点为n个节点中的任一节点。其余节点指的是与第一节点进行数据交互的所有节点。

现以分布式存储系统包括七个节点为例进行说明,该七个节点分别为计算节点A,计算节点B,元数据节点a,存储节点CC1,存储节点CC2,存储节点CC3和存储节点CC4。故障分析节点可以为该七个节点中的任一节点。假设第一节点为计算节点A,且计算节点A与存储节点CC1的交互时延为T1,计算节点A与存储节点CC2的交互时延为T2,计算节点A与存储节点CC3的交互时延为T3,计算节点A与存储节点CC4的交互时延为T4,那么故障分析节点可以获取计算节点A的四个交互时延,即T1、T2、T3和T4。

步骤402、故障分析节点确定多个交互时延中大于预设时延阈值的交互时延的数量p。

按照步骤401,故障分析节点得到计算节点A的四个交互时延:T1、T2、T3和T4。假设这四个交互时延中大于预设时延阈值u的交互时延为T1、T2和T3,那么故障分析节点可以确定这四个交互时延中大于预设时延阈值u的交互时延的数量p为3。

步骤403、故障分析节点在第一节点上记录p个IO异常事件。

按照步骤402,故障分析节点确定了计算节点A的四个交互时延中大于预设时延阈值的交互时延的数量p为3之后,可以在计算节点A上记录三个IO异常事件。该IO异常事件为IO操作超时所产生的事件。

同样的,故障分析节点可以确定分布式存储系统中其余六个节点中每个节点的多个交互时延中大于预设时延阈值的交互时延的数量p,并在相应节点上记录p个IO异常事件。

假设是计算节点A出现了故障,如计算节点A的网卡出现了故障,那么所有向计算节点A发起数据请求的请求节点与计算节点A的交互时延都会比较大,这些请求节点都有可能记录一个IO异常事件。

需要说明的是,该记录过程可以由故障分析节点完成,也可以由第一节点完成,本发明实施例对此不做限定。

步骤404、故障分析节点统计分布式存储系统的n个节点中每个节点上记录的IO异常事件数量。

n为大于1的整数。步骤404的具体过程可以参考步骤304。

步骤405、故障分析节点根据统计的每个节点上记录的IO异常事件数量,为每个节点所属的收发对中的节点投票。

该收发对包括:发起数据请求的请求节点和响应数据请求的响应节点。

按照步骤404,故障分析节点统计完分布式存储系统包括中的七个节点中每个节点上记录的IO异常事件数量之后,根据统计的IO异常事件数量,为每个节点所属的收发对中的节点投票。

以分布式存储系统中的计算节点A为例,故障分析节点统计的计算节点A上记录的IO异常事件数量为3,那么故障分析节点可以为计算节点A所属的三个收发对中每个收发对包括的计算节点A和响应节点分别投票。如第一个收发对包括计算节点A和存储节点CC1,第二个收发对包括计算节点A和存储节点CC2,第三个收发对包括计算节点A和存储节点CC3。三个收发对中的计算节点A均为请求节点,用于发起数据请求,存储节点CC1、存储节点CC2和存储节点CC3均为响应节点,用于响应计算节点A发起的数据请求。故障分析节点根据IO异常事件数量3,为第一个收发对中的计算节点A和存储节点CC1分别投一票,为第二个收发对中的计算节点A和存储节点CC2分别投一票,为第三个收发对中的计算节点A和存储节点CC3分别投一票。

同样的,可以采用相同的方式为分布式存储系统中其余六个节点所属的收发对中的节点投票,最终,可以得到七个节点中每个节点的投票数量,该投票数量大于等于0。当仅是计算节点A出现故障,那么存储节点CC1、存储节点CC2、存储节点CC3和存储节点CC4只有在与计算节点A交互时才会被投一票。

步骤406、故障分析节点根据每个节点获得的投票数量从n个节点中筛选出至少一个节点作为故障节点。

故障分析节点得到每个节点的投票数量后,再根据每个节点获得的投票数量从分布式存储系统的七个节点中筛选出故障节点。步骤406的具体过程可以参考步骤306,在此不再赘述。

综上所述,本发明实施例提供的故障检测方法,由于能够根据统计的每个节点上记录的IO异常事件数量,为每个节点所属的收发对中的节点投票,并根据每个节点获得的投票数量从n个节点中筛选确定故障节点,快速缩小了故障检测范围,加速了定位故障节点的过程,减少了需要进行故障检测的节点的数量,相较于现有技术,无需对较多节点进行故障检测,所以简化了检测故障的过程,提高了检测效率,减小了对用户业务的影响。

需要说明的是,本发明实施例提供的故障检测方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。

本发明实施例提供了一种故障检测装置500,该装置可以用于故障分析节点,该故障分析节点可以为图1所示的元数据节点001、计算节点002或存储节点003,也可以为除元数据节点001、计算节点002和存储节点003之外的运行有用户业务进程的物理服务器或虚拟服务器,如图5-1所示,该装置500可以包括:

统计模块510,用于执行上述实施例中的步骤304或步骤404。

投票模块520,用于执行上述实施例中的步骤305或步骤405。

筛选模块530,用于执行上述实施例中的步骤306或步骤406。

可选的,筛选模块530用于执行上述实施例中的步骤3061和步骤3062。

可选的,投票模块520,用于:

根据统计的第一节点上记录的IO异常事件数量p,为第一节点所属的p个收发对中每个收发对包括的第一节点和响应节点分别投票,第一节点为n个节点中的任一节点,第一节点用于发起数据请求,响应节点用于响应数据请求。

可选的,统计模块510,用于执行上述实施例中的步骤3041、步骤3042和步骤3043。

进一步的,如图5-2所示,该装置500还可以包括:

第一获取模块540,用于执行上述实施例中的步骤301。

第一确定模块550,用于执行上述实施例中的步骤302。

第一记录模块560,用于执行上述实施例中的步骤303。

图5-2中的其他标记含义可以参考图5-1。

进一步的,如图5-3所示,该装置500还可以包括:

第二获取模块570,用于执行上述实施例中的步骤401。

第二确定模块580,用于执行上述实施例中的步骤402。

第二记录模块590,用于执行上述实施例中的步骤403。

图5-3中的其他标记含义可以参考图5-1。

综上所述,本发明实施例提供的故障检测装置,由于该装置能够根据统计的每个节点上记录的IO异常事件数量,为每个节点所属的收发对中的节点投票,并根据每个节点获得的投票数量从n个节点中筛选确定故障节点,快速缩小了故障检测范围,加速了定位故障节点的过程,减少了需要进行故障检测的节点的数量,相较于现有技术,无需对较多节点进行故障检测,所以简化了检测故障的过程,提高了检测效率,减小了对用户业务的影响。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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