数据存储故障诊断方法及系统与流程

文档序号:20773913发布日期:2020-05-19 20:34阅读:327来源:国知局
数据存储故障诊断方法及系统与流程

本申请涉及分布式存储技术领域,具体而言,涉及一种数据存储故障诊断方法及系统。



背景技术:

在互联网、5g时代,大规模分布式存储系统以其海量存储能力、高吞吐量、高可用性和低成本的突出优势取代了集中式存储系统成为主流系统。由于分布式存储系统中存储节点数量庞大,经常会产生各种类型故障,从而导致节点失效情况频发。高可用性和高可靠性的容错手段是分布式存储的重要技术,目前常采用的容错手段包括多副本机制和mds码传统容错技术等。

在分布式存储系统中单个存储节点故障或者资源征用问题会引起存储故障问题,不同故障原因会引起存储读写失败,这些故障通常会以i/o类故障现象表现出来,就像i/o请求过程中在预期的时间范围内没有得到服务的响应,则被认定为已“失败”,而在这个过程中没有能及时区分和分析故障原因,而导致后续冗长的故障排查和分析并可能延长故障恢复期。



技术实现要素:

本申请的实施例提供一种数据存储故障诊断方法及系统,用于解决上述技术缺陷。

本申请实施例提供一种数据存储故障诊断方法,应用于数据存储故障诊断系统,所述数据存储故障诊断系统包括通信连接的分布式存储节点、元数据服务器、数据服务器及客户端,所述方法包括:

所述元数据服务器获取所述存储节点的i/o请求响应情况,并在对i/o请求响应情况进行处理后,将处理后所述存储节点的i/o请求响应情况发送给所述数据服务器;

所述数据服务器将所述存储节点的i/o请求响应情况输入到预先创建的分布式存储节点运行状态模型中,基于分布式存储节点中各个存储节点的i/o请求响应情况及该存储节点所在的链路,计算得到各个存储节点在不同链路中i/o请求响应的函数关系;

所述数据服务器根据各个存储节点在不同链路中i/o请求响应的函数关系,得到在所述分布式存储节点中各个链路上存储节点的健康度,基于存储节点的健康度对存储节点发生i/o类故障的原因进行诊断;

将所述存储节点发生i/o类故障的原因发给所述客户端,由所述客户端进行显示,以便用户了解分布式存储节点的存储故障情况。

上述方法对大型分布式存储集群多存储节点进行自动化健康度监测,并基于健康度对各个存储节点的存储故障进行诊断,以减少采用人工运维所需的劳动力,同时在检测到i/o类故障后,对i/o类故障原因进行快速诊断,可以防止后续冗长的故障排查,并缩短故障恢复时间。

可选地,在本申请的一种可选实施方式中,所述元数据服务器获取所述存储节点的i/o请求响应情况的步骤,包括:

所述元数据服务器通过测试探针遍历不同类型i/o请求所需的存储节点,得到所述分布式存储节点中各个存储节点的i/o请求响应情况。

可选地,在本申请的一种可选实施方式中,测试探针包括:

创建并写入文件的测试探针、写入现有文件的测试探针或删除现有文件的测试探针。

可选地,在本申请的一种可选实施方式中,所述i/o请求响应情况包括i/o类故障,导致所述i/o类故障的原因包括:

存储节点失效;

运行的存储节点中服务进程或线程的中断或失效;

应用程序可见性失效;

因分布式存储机制的冗余性往往遮盖应用程序本身的故障;或,

由于高负载或资源征用导致的响应缓慢。

可选地,在本申请的一种可选实施方式中,所述数据服务器将所述存储节点的i/o请求响应情况输入到预先创建的分布式存储节点运行状态模型中,基于分布式存储节点中各个存储节点的i/o请求响应情况及该存储节点所在的链路,计算得到各个存储节点在不同链路中i/o请求响应的函数关系的步骤,包括:

根据所述存储节点的i/o请求响应情况,分析所述存储节点的运行状况,以表示i/o请求是否成功;

基于不同类型测试探针的监测,确定所述存储节点与客户端之间的可用链路,基于负载均衡,模拟不同存储节点在对应可用链路上的二项式分布概率的函数关系。

本申请实施例还提供一种数据存储故障诊断系统,所述数据存储故障诊断系统包括通信连接的分布式存储节点、元数据服务器、数据服务器及客户端;

所述元数据服务器,用于获取所述存储节点的i/o请求响应情况,并在对i/o请求响应情况进行处理后,将处理后所述存储节点的i/o请求响应情况发送给所述数据服务器;

所述数据服务器,用于将所述存储节点的i/o请求响应情况输入到预先创建的分布式存储节点运行状态模型中,基于分布式存储节点中各个存储节点的i/o请求响应情况及该存储节点所在的链路,计算得到各个存储节点在不同链路中i/o请求响应的函数关系;

所述数据服务器,用于根据各个存储节点在不同链路中i/o请求响应的函数关系,得到在所述分布式存储节点中各个链路上存储节点的健康度,基于存储节点的健康度对存储节点发生i/o类故障的原因进行诊断;

将所述存储节点发生i/o类故障的原因发给所述客户端,由所述客户端进行显示,以便用户了解分布式存储节点的存储故障情况。

可选地,在本申请的一种可选实施方式中,所述元数据服务器,用于通过测试探针遍历不同类型i/o请求所需的存储节点,得到所述分布式存储节点中各个存储节点的i/o请求响应情况。

可选地,在本申请的一种可选实施方式中,测试探针包括:

创建并写入文件的测试探针、写入现有文件的测试探针或删除现有文件的测试探针。

可选地,在本申请的一种可选实施方式中,所述i/o请求响应情况包括i/o类故障,导致所述i/o类故障的原因包括:

存储节点失效;

运行的存储节点中服务进程或线程的中断或失效;

应用程序可见性失效;

因分布式存储机制的冗余性往往遮盖应用程序本身的故障;或,

由于高负载或资源征用导致的响应缓慢。

可选地,在本申请的一种可选实施方式中,所述数据服务器具体用于:

根据所述存储节点的i/o请求响应情况,分析所述存储节点的运行状况,以表示i/o请求是否成功;

基于不同类型测试探针的监测,确定所述存储节点与客户端之间的可用链路,基于负载均衡,模拟不同存储节点在对应可用链路上的二项式分布概率的函数关系。

本申请实施例提供的数据存储故障诊断方法及系统,该方法包括:元数据服务器获取存储节点的i/o请求响应情况;数据服务器将存储节点的i/o请求响应情况输入到预先创建的分布式存储节点运行状态模型中,基于分布式存储节点中各个存储节点的i/o请求响应情况及该存储节点所在的链路,计算得到各个存储节点在不同链路中i/o请求响应的函数关系;数据服务器根据各个存储节点在不同链路中i/o请求响应的函数关系,得到存储节点的健康度,基于存储节点的健康度对存储节点发生i/o类故障的原因进行诊断;将存储节点发生i/o类故障的原因发给客户端。上述方法对大型分布式存储集群多存储节点进行自动化健康度监测,并基于健康度对各个存储节点的存储故障进行诊断,以减少采用人工运维所需的劳动力,同时在检测到i/o类故障后,对i/o类故障原因进行快速诊断,可以防止后续冗长的故障排查,并缩短故障恢复时间。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的数据存储故障诊断系统的框架结构示意图;

图2为本申请实施例提供的存储设备的结构示意图;

图3为本申请实施例提供的数据存储故障诊断方法的流程示意图;

图4为本申请实施例提供的存储节点故障模式的示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

需要说明的是,在不冲突的情况下,本申请的实施例中的特征可以相互结合。

请参照图1,图1为本申请实施例提供的数据存储故障诊断系统10的框架结构示意图,该数据存储故障诊断系统10包括存储节点101、元数据服务器102、数据服务器103及客户端104。存储节点101、元数据服务器102、数据服务器103及客户端104通过网络接入设备(比如,路由器)接入同一通信网络。

存储节点101可以是分布在云端的服务器、物理主机等具有数据存储能力的计算机设备,在本申请实施例中,存储节点101的数量是不固定的,即新存储节点101可以不断加入数据存储故障诊断系统10,也可以从数据存储故障诊断系统10中删除一些之前存在的存储节点101。在本申请实施例中,分布在云端的存储节点101组成一分布式存储系统。

在本申请实施例中,元数据服务器102与存储节点101通信连接,用于获取存储节点101的运行状况,具体地,即获取存储节点101在数据存储操作(包括数据写入、删除等)过程中的i/o类表现(比如,i/o请求延时、i/o请求中断等)。

数据服务器103与元数据服务器102通信连接,用于根据元数据服务器102中的存储节点101的运行状况进行分析,对所有存储节点101的存储故障进行诊断。

客户端104分别与数据服务器103和存储节点101通信连接,通过与存储节点101通信实现数据存储,通过与数据服务器103通信获得各个存储节点101的存储故障状况。

请参照图2,图2给出了一种存储设备200一种结构示意图,在本申请实施例中,该存储设备200可以是存储节点101、元数据服务器102、数据服务器103或客户端104,具体地,存储设备200可以包括存储器210、处理器220及通信单元230。

所述存储器210、处理器220及通信单元230的各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。

其中,所述存储器210可以是,但不限于,随机存取存储器(英文:randomaccessmemory,简称:ram),只读存储器(英文:readonlymemory,简称:rom),可编程只读存储器(英文:programmableread-onlymemory,简称:prom),可擦除只读存储器(英文:erasableprogrammableread-onlymemory,简称:eprom),电可擦除只读存储器(英文:electricerasableprogrammableread-onlymemory,简称:eeprom)等。其中,存储器210用于存储程序,所述处理器220在接收到执行指令后,执行所述程序。所述通信单元230用于通过网络建立存储设备与其它设备之间的通信连接,并用于通过网络进行数据的接收和发送。

应当理解的是,图2所示的结构仅为示意,所述存储设备200还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。

请参照图3,图3为本申请实施例提供的应用于图1中的数据存储故障诊断系统的故障诊断方法的流程图,结合图3,下面对所述方法包括的各个步骤进行详尽的阐述。

步骤s310,元数据服务器获取存储节点的i/o请求响应情况,并在对i/o请求响应情况进行处理后,将处理后存储节点的i/o请求响应情况发送给数据服务器。

经过发明人研究发现,请参照图4,在分布式存储系统中导致i/o类故障包括以下5类原因(模式):

模式一:整个存储节点失效,数据服务器的崩溃可以归为这一类;

模式二:运行的存储组件中服务进程或线程的中断或失效;

模式三:应用程序app可见性失效,包括i/o请求超时等;

模式四:因分布式存储机制的冗余性掩盖应用程序app本身的故障,导致的i/o请求的延迟;

模式五:由于高负载或者资源征用而导致故障缓慢,在此种情况下,由于资源征用,存储系统需要花更多时间为i/o请求服务,却不会导致i/o请求超时(响应缓慢)。

在本申请实施例中,元数据服务器102通过测试探针遍历不同类型i/o请求所需的存储节点,得到分布式存储节点101中各个存储节点的i/o请求响应情况.

具体地,定义一种测试探针(比如,zh-store-pings),用于测量存储节点101的可用性和i/o性能。这种测试探针类似icmp中的ping,对特定i/o请求遍历所有必需的存储节点101。在本申请实施例中,可以设计三种类型的zh-store-ping,三种类型的zh-store-ping分别采用crwr、wrer和rmer代表测试三种不同的i/o请求,其中,crwr:创建并写入文件;wrex:写入现有文件;rmex:删除现有文件。三种类型的zh-store-pings测试所有存储节点101,确保参与i/o请求的操作正确。

在本申请实施例中,zh-store-pings可固定在特定的存储节点101上,元数据服务器102具有全部数据校验信息,为此,zh-store-pings不需要求固定在其他存储节点101上。

在本申请实施例中,元数据服务器102可以通过监视器连续执行zh-store-pings来测量存储设备200(包括存储节点101、元数据服务器102及数据服务器103)的可用性和性能。为了检测所有存储设备200,并减少监控开销,监视器可以仅在客户端104上启用以达到最大检测覆盖率,通过对分布式存储网络进行网络诊断找到隐藏在其中不健康成份,将监视器放置在分布式存储网络中。可以将故障出错检测率降到最低。

步骤s320,数据服务器将存储节点的i/o请求响应情况输入到预先创建的分布式存储节点运行状态模型中,基于分布式存储节点中各个存储节点的i/o请求响应情况及该存储节点所在的链路,计算得到各个存储节点在不同链路中i/o请求响应的函数关系。

在本申请实施例中,对存储节点101的运行状态进行建模,并将存储节点101的运行状态作为概率进行定义,该概率表示采样点xi进行i/o请求成功的可能性,其中,xi从β分布中取样xi~beta(α,β),α和β决定分布形态,同时α和β可以根据历史信息进行更新。

基于zh-store-pings的监测采用客户端104和存储节点101的键值对表示可用的链路,在本申请实施例中,可以使用随机变量yp来表示可用的zh-store-pings链路,yp采用二项分布式表示即yp~binomial(ap,n),其中ap表示可用性路径,n表示发送zh-store-ping探针数量。另外我们利用zh-store-pings对i/o请求成功的实例,如客户端104到目标存储节点存在可用性路径ap,则该目标存储节点的健康度公式可以表示为:

tp=∏i∈pxi

其中,p表示存储节点所在的所有可用链路的集合。

另外,对于分布式存储系统而言,负载均衡会使得采用zh-store-pings进行测试的链路不同,因此,需要考虑负载均衡对链路选择的影响,具体地,链路计算公式可以为:

rosdi=(1-(1-xds1)·(1-xds2))·xosdi

其中,xds1是存储节点x采用链路s1的概率,xds2是存储节点x采用链路s2的概率,xosdi是存储节点x采用目标链路的概率。

上述模型可以用不同类型的测试探针模拟各个存储节点在不同链路中i/o请求响应的函数关系,从而通过这种关系显示出整个分布式存储系统中拓扑链路上所有可用存储节点相关健康度。在考虑负载均衡时,通过该模型可以计算每个存储节点xi在系统中的健康度,每个存储节点xi表示为e[xi|yp1,yp2,yp3,...],其中,观察因子(yp1,yp2,yp3,...)及存储节点观察指数(即每个xi中α和β因子),可以在每次zh-store-pings链路测试中测量采集获得。

步骤s330,数据服务器根据各个存储节点在不同链路中i/o请求响应的函数关系,得到在分布式存储节点中各个链路上存储节点的健康度,基于存储节点的健康度对存储节点发生i/o类故障的原因进行诊断。

基于计算得到的各个存储节点的健康度,可以将该存储节点的健康度带入预先训练好的马可夫预测模型中,对存储节点是否存储故障,及存储节点为存储故障时的具体故障原因进行诊断。

在本申请实施例中,需要对马可夫预测模型进行训练,训练样本可以是存储节点健康度及对应的上面介绍的五种类型的i/o类故障。

步骤s340,将存储节点发生i/o类故障的原因发给客户端,由客户端进行显示,以便用户了解分布式存储节点的存储故障情况。

上述方法大型分布式存储集群多存储节点进行自动化健康度监测,并基于健康度对各个存储节点的存储故障进行诊断,以减少采用人工运维所需的劳动力。实验表明,在上述方法中,若采用每隔5分钟运行一次测试探针,可以预先查明大概95.8%出现故障的根本原因,并且其进行存储节点运行状态监控的开销较小,可以忽略。同时,在检测到i/o类故障后,对i/o类故障原因进行快速诊断,可以防止后续冗长的故障排查,并缩短故障恢复时间。

接下来从系统的角度描述本申请方案,在本申请实施例中,数据存储故障诊断系统10中各个设备实现的功能如下。

元数据服务器102,用于获取存储节点的i/o请求响应情况,并在对i/o请求响应情况进行处理后,将处理后存储节点101的i/o请求响应情况发送给数据服务器102。

在本申请实施例中,所述元数据服务器,用于通过测试探针遍历不同类型i/o请求所需的存储节点,得到所述分布式存储节点中各个存储节点的i/o请求响应情况。

其中,测试探针包括:创建并写入文件的测试探针、写入现有文件的测试探针或删除现有文件的测试探针。

数据服务器103,用于将存储节点101的i/o请求响应情况输入到预先创建的分布式存储节点运行状态模型中,基于分布式存储节点中各个存储节点的i/o请求响应情况及该存储节点所在的链路,计算得到各个存储节点在不同链路中i/o请求响应的函数关系。

在本申请实施例中,数据服务器103具体用于:

根据存储节点的i/o请求响应情况,分析存储节点的运行状况,以表示i/o请求是否成功;

基于不同类型测试探针的监测,确定所述存储节点与客户端之间的可用链路,基于负载均衡,模拟不同存储节点在对应可用链路上的二项式分布概率的函数关系。

数据服务器103,用于根据各个存储节点101在不同链路中i/o请求响应的函数关系,得到在所述分布式存储节点中各个链路上存储节点的健康度,基于存储节点的健康度对存储节点发生i/o类故障的原因进行诊断。

将存储节点101发生i/o类故障的原因发给客户端104,由客户端104进行显示,以便用户了解分布式存储节点的存储故障情况。

本申请实施例提供的数据存储故障诊断方法及系统,该方法包括:元数据服务器获取存储节点的i/o请求响应情况;数据服务器将存储节点的i/o请求响应情况输入到预先创建的分布式存储节点运行状态模型中,基于分布式存储节点中各个存储节点的i/o请求响应情况及该存储节点所在的链路,计算得到各个存储节点在不同链路中i/o请求响应的函数关系;数据服务器根据各个存储节点在不同链路中i/o请求响应的函数关系,得到存储节点的健康度,基于存储节点的健康度对存储节点发生i/o类故障的原因进行诊断;将存储节点发生i/o类故障的原因发给客户端。上述方法对大型分布式存储集群多存储节点进行自动化健康度监测,并基于健康度对各个存储节点的存储故障进行诊断,以减少采用人工运维所需的劳动力,,同时在检测到i/o类故障后,对i/o类故障原因进行快速诊断,可以防止后续冗长的故障排查,并缩短故障恢复时间。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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