掌桥专利:专业的专利平台
掌桥专利
首页

云盘调度方法、系统、电子设备及存储介质

文献发布时间:2024-04-18 19:54:45


云盘调度方法、系统、电子设备及存储介质

技术领域

本申请涉及分布式存储技术领域,尤其涉及一种云盘调度方法、系统、电子设备及存储介质。

背景技术

在基于分布式文件系统构建的分布式块存储系统,其中云盘会按逻辑区域进行分片,管控服务器的一个主要工作就是对云盘及分片进行调度。在分布式块存储的应用场景下,如果云盘或其分片出现问题,会将其调度到其他存储节点上,就会导致异常故障扩散产生级联故障,从而导致大规模存储节点异常进而系统雪崩的问题。

发明内容

本申请实施例提供一种云盘调度方法、系统、电子设备及存储介质,以有效避免异常云盘导致的级联故障。

第一方面,本申请实施例提供了一种云盘调度方法,包括:基于动态更新的故障域,确定云盘分片的目标存储节点;其中,所述故障域包括云盘分片故障域,在第一时间间隔内所述云盘分片故障域中分片域存储节点的数量上限为第一数量阈值;将所述云盘分片调度至所述目标存储节点。

第二方面,本申请实施例提供了一种云盘调度系统,包括:多个存储节点;管控服务器,用于执行本申请任一实施例提供的方法,以将云盘分片调度至目标存储节点上;客户端,从所述管控服务器获取所述目标存储节点的信息,并基于所述目标存储节点对所述云盘分片进行写/读操作。

第三方面,本申请实施例提供一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,处理器在执行计算机程序时实现本申请任一实施例提供的方法。

第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现本申请任一实施例提供的方法。

与现有技术相比,本申请实施例的技术方案具有如下优点:

通过构建动态更新的故障域,从而在时间维度和空间维度实现对调度目的地的范围进行动态限制,一方面可以在存在未知异常云盘分片的情况下,防止异常云盘分片的调度所导致的级联故障,有效避免大规模故障的发生,防止集群雪崩;另一方面,云盘分片故障域中的存储节点动态更新,云盘分片的调度目的地可以根据其调度类型不同,从云盘分片故障域、全局故障域中或全局故障域外的存储节点中进行选择,从而在存在未知异常云盘分片的情况下,进行任一调度类型的正常云盘调度。

进一步地,前述的故障域均可以看作是划定了一个隔离区,通过云盘分片的异常调度,将疑似问题的云盘分片圈定在了一个动态范围内,然后进一步筛选异常云盘分片,定位故障源,进而对其进行故障处理,从而精确筛选定位异常云盘分片进行精准防控。

上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本申请进一步的方面、实施方式和特征将会是容易明白的。

附图说明

在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请公开的一些实施方式,而不应将其视为是对本申请范围的限制。

图1示出本申请实施例提供的云盘调度系统的架构图;

图2示出本申请实施例一提供的云盘调度方法的流程图;

图3示出本申请实施例一提供的令牌桶滑动窗口算法的示意图;

图4示出本申请实施例一中构建云盘故障域的示意图;

图5示出本申请实施例一中构建全局故障域的示意图;

图6示出本申请实施例二提供的云盘调度方法的流程图;

图7示出本申请实施例二中均衡调度的示意图;

图8示出本申请实施例二中容灾操作的示意图;

图9示出本申请实施例三提供的云盘调度方法的流程图;

图10示出本申请实施例三中筛选异常云盘分片的示意图;

图11示出本申请实施例五提供的电子设备的框图。

具体实施方式

在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。

为便于理解本申请实施例的技术方案,以下对本申请实施例的相关技术进行说明,以下相关技术作为可选方案与本申请实施例的技术方案可以进行任意结合,其均属于本申请实施例的保护范围。

应用场景

图1示出本申请实施例提供的云盘调度系统的架构图。如图1所示,该云盘调度系统包括客户端(Client)、管控服务器(Block Master)和多个存储节点(Block Server,也叫做块存储服务器,简称BS)。本申请实施例中,云盘调度系统是一套分布式系统,可以基于公有云块存储为用户提供云盘服务,即本申请实施例的云盘调度系统可以应用于分布式块存储场景中。

示例性地,云盘(device)按逻辑空间进行分片,记为云盘分片(Segment,简称Seg),通常为固定大小的分片,即各云盘分片大小相同。管控服务器负责对云盘进行调度,通过云盘调度算法将该云盘的云盘分片调度到多个存储节点上,例如将云盘分片Seg1、Seg2、Seg3分别调度到不同的存储节点上。客户端通过跟管控服务器交互得到云盘分片所在的位置,即云盘分片所在的存储节点的信息,进而跟该存储节点建立连接,并向该存储节点请求对云盘分片进行的写/读(Input/Output,也可以叫做输入/输出,简称I/O)操作,实现云盘调度。

基于云盘调度的目的不同,云盘分片的调度类型可以包括:异常调度、均衡调度和其他调度。其中,其他调度即为非异常调度和均衡调度的调度。示例性地,异常调度用于故障处理,例如在分布式存储系统中,存储节点可能出现失效或宕机等故障情况,也可能出现网络消息可能丢失或延迟等故障情况,面对这些故障情况,云盘调度需要尽可能快速完成,以便于恢复云盘的正常I/O操作。均衡调度用于各存储节点之间的负载均衡,从而提高服务质量。除了异常调度和均衡调度,还可能有其他调度,如为了运维需求或其他原因,需要对存储节点进行升级、下线或隔离等操作,进而需要主动将该存储节点上的云盘分片调度到其他存储节点上,避免后续影响该存储节点上云盘分片的I/O操作。

级联故障是由于正反馈循环而随时间增加的故障类型。初期由单个存储节点或子系统故障触发,然后它会将负载分散到系统的其他存储节点上,反过来又进一步增加系统其他存储节点故障的可能性,从而导致恶性循环或滚雪球效应。在分布式块存储应用场景下,主要面临如下两类级联故障场景:1)云盘分片在存储节点上进行I/O处理时,会因为代码问题(bug)导致存储节点核心转储(core dump)或者把存储节点的线程挂起(Hang)住等故障情况,从而触发云盘分片的异常调度,即通过对云盘分片的异常调度,将其迁移到其他存储节点上,这样就会污染其他存储节点造成故障扩散,导致大面积的云盘不可用,进而出现系统雪崩;2)由于负载均衡或者运维需要或者其他原因需要将云盘分片调度到一些存储节点上,但是由于代码bug或者其他未知原因会导致云盘分片在加载过程中触发core dump或者线程Hang住,也会导致故障扩散,进而出现系统雪崩。

如果可以明确知道一个云盘分片是否异常,就可以直接限制这个云盘分片的调度,从而避免故障扩散。但是实际上很难做到,因为需要有足够多的观察窗口来收集足够多的信息进行分析才能得到较为准确的结果,而这个代价比较大,而且在分布式系统处理异常过程中是需要能够快速进行自动恢复的处理方式。因此,异常云盘分片的定位较难实现,即哪个云盘分片是异常云盘分片通常都是未知的,即异常云盘分片的场景通常都是未知原因的故障场景。

面对未知原因的故障场景,在处理时机上可分为事前预防和事后处理。其中,在事前预防过程中,可以通过控制故障扩散的速度和范围,来防止异常云盘分片快速扩散导致大面积故障。具体地,通过控制云盘分片的调度频率,可使故障扩散的速度随迁移次数进行指数退避;通过构建故障域来限定调度目的地(即迁移目的地),进而限制故障影响范围。一种实现方式中,可以采用固定故障域来限制故障影响范围,但是固定故障域的大小难以界定。如果故障域小,容易导致不均衡问题,比如将较多云盘分片圈定到小范围上从而形成热点,不利于负载均衡,还容易导致整域故障时的可用性问题,比如导致放在故障域里的云盘分片都不可用。如果故障域大,就会导致受影响的范围变大,起不到隔离的效果。

因此,本申请实施例提供了一种基于动态故障域的云盘调度方法。具体地,为云盘分片构建动态更新的故障域,一方面将目标存储节点的选择范围限制在一定范围内,从而在存在未知异常云盘分片的情况下,防止异常云盘分片的调度所导致的级联故障,有效避免大规模故障的发生,防止集群雪崩;另一方面,在第一时间间隔内云盘分片故障域中的存储节点(叫做分片域存储节点)具有数量上限(第一数量阈值),即在满足该条件下,云盘分片故障域中的存储节点动态更新,从而在存在未知异常云盘分片的情况下,进行任一调度类型的云盘调度。进一步地,在故障扩散的范围得到控制后,就可以在事后处理阶段通过收集更多的信息来精确筛选定位异常云盘分片,从而进行精准防控。

本申请实施例的云盘调度方法可以由管控服务器执行。其中,管控服务器可以包括独立主机的物理服务器,或者包括主机集群承载的虚拟服务器(如云服务器)等。客户端可以通过应用程序接口(Application Programming Interface,API)与管控服务器进行交互,得到云盘分片所在的存储节点的信息,进而跟该存储节点建立连接,并向该存储节点请求对云盘分片进行的I/O操作,实现云盘调度。客户端可以是硬件,如手机、个人电脑、平板电脑、可穿戴设备等电子设备,客户端也可以是安装在上述电子设备中的应用程序(Application,APP)。

本申请实施例提供的云盘调度方法和云盘调度系统可以用于未知原因的故障场景,如未知异常云盘分片的故障场景,且在故障场景下实现上述的异常调度、均衡调度和其他调度。需要说明的是,本申请实施例中提供的上述应用场景或应用示例,是为了便于理解,本申请实施例对云盘调度方法和云盘调度系统的应用不作具体限定。

下面通过实施例一、实施例二和实施例三对本申请实施例的云盘调度方法进行介绍。为了便于理解,在实施例一中主要介绍故障域的动态更新,在实施例二中主要介绍目标存储节点的选择,在实施例三中主要介绍异常云盘分片的定位筛选。

实施例一

图2示出根据本申请实施例的云盘调度方法的流程图。该云盘调度方法可以应用于管控服务器。如图2所示,该云盘调度方法包括:

步骤S201:基于动态更新的故障域,确定云盘分片的目标存储节点;其中,故障域包括云盘分片故障域,在第一时间间隔内云盘分片故障域中分片域存储节点的数量上限为第一数量阈值。

步骤S202:将云盘分片调度至目标存储节点。

云盘(device)按逻辑空间进行分片,记为云盘分片(Segment,简称Seg)。示例性地,各云盘分片大小相同。管控服务器负责对云盘进行调度,其通过云盘调度算法将该云盘的云盘分片调度到某一存储节点上,该存储节点即为该云盘分片此次调度的调度目的地。

对于任一云盘分片,可以为其构建云盘分片故障域,云盘分片故障域中的存储节点即为分片域存储节点,在第一时间间隔内云盘分片故障域中分片域存储节点的数量上限为第一数量阈值。因此,任一云盘分片的云盘分片故障域中的分片域存储节点可以是动态更新的。例如,当某一云盘分片的调度目的地(目标存储节点)满足其云盘分片故障域的入域条件时,调度目的地可以加入该云盘分片的云盘分片故障域;当某一云盘分片满足出域条件时,从该云盘分片的云盘分片故障域中选择分片域存储节点退出该云盘分片的云盘分片故障域。其中,退出云盘分片故障域的分片域存储节点可以是一个、多个或全部。在动态更新云盘分片故障域的过程中,只要满足在第一时间间隔内云盘分片故障域中分片域存储节点的数量上限为第一数量阈值这一条件即可。

因此,基于本申请实施例所构建的云盘分片故障域为动态故障域,从而在时间维度和空间维度实现对调度目的地的范围进行动态限制,一方面可以在存在未知异常云盘分片的情况下,防止异常云盘分片的调度所导致的级联故障,有效避免大规模故障的发生,防止集群雪崩;另一方面,云盘分片故障域中的存储节点动态更新,从而实现任一调度类型的云盘调度。

在一种实施方式中,云盘分片对应有域令牌,用于提供目标存储节点加入云盘分片故障域的入域权限;域令牌的数量上限为第一数量阈值;每隔第二时间间隔,域令牌的数量增加一个。

也就是说,云盘分片故障域的动态更新可以基于令牌桶滑动窗口算法。示例性地,如图3所示,每个云盘分片对应有令牌桶,域令牌的数量上限为第一数量阈值,即令牌桶的大小为第一数量阈值,当域令牌聚集于令牌桶内,相当于入水,当域令牌消耗,相当于令牌桶出水。以一定速率产生域令牌,如T时间后有一个新域令牌产生,可以使得每隔第二时间间隔T,令牌桶内的域令牌的数量增加一个;每个目标存储节点加入云盘分片故障域(简称为入域),则消耗一个域令牌。因此,第一时间间隔即等于第二时间间隔乘以第一数量阈值。

图3中目标存储节点表示为BS1、BS2……BS5。某一云盘分片第一次调度到BS1上,消耗一个域令牌;过一会儿,该云盘分片可能因为异常调度需要从BS1调度走,此次调度到BS2上,再消耗一个域令牌;假设第一数量阈值为4,即令牌桶大小为4,每隔第二时间间隔T产生一个新的域令牌,这样4*T时间内如果该云盘分片进行了4次入域操作,就会消耗完域令牌。当该云盘分片需要再次入域时,由于没有域令牌了,就可以在故障域中选择前4次调度过的目标存储节点作为当前调度的目标存储节点,这样就达到了限制调度范围的作用。随着时间消耗,过了T时间后又产生了一个域令牌,这样当该云盘分片需要再次调度时就能过选择一个新的目标存储节点,从而实现基于令牌桶滑动窗口。

示例性地,第二时间间隔T可以根据故障处理时间进行设定,例如设定每30分钟产生1个域令牌,这样即使在真的发生故障时,也能保障30分钟的故障处理时间,从而尽量减少故障域对日常调度的影响。

本申请实施例的方法中,采用云盘分片为粒度构造云盘分片故障域,即每个云盘分片均对应有其动态故障域,从而可以控制异常云盘分片的故障影响范围。

在一种实施方式中,动态更新基于入域条件实现。具体地,本申请实施例的方法还可以包括:响应于云盘分片满足入域条件,将目标存储节点作为云盘分片的分片域存储节点加入云盘分片的云盘分片故障域;其中,入域条件包括以下任一者:云盘分片的调度类型为异常调度且云盘分片的分片域存储节点的数量未达到第一数量阈值;云盘分片的调度类型为均衡调度,且云盘分片的分片域存储节点的数量达到预设门限值但未达到第一数量阈值。

针对任一云盘分片,如果此次调度满足入域条件,则对此次调度的目标存储节点进行入域操作,即将目标存储节点作为该云盘分片的分片域存储节点加入其云盘分片故障域;如果此次调度未满足入域条件,则不对目标存储节点进行入域操作,从而实现云盘分片故障域的动态更新。

预设门限值小于第一数量阈值,示例性地,预设门限值可以设置为第一数量阈值减1,或者设置为第一数量阈值的一定比例,本申请实施例对此不作限定。由于调度类型有多种,比如异常调度、均衡调度和其他调度。其中,异常调度会触发入域操作,在此之后,如果均衡调度的入域操作不作限制,则可能将异常云盘分片所在的分片域存储节点调度出域,这样就达不到限制异常云盘分片扩散范围的目的。因此动态更新需要针对性地处理均衡调度,当云盘分片故障域里的分片域存储节点的数量达到预设门限值时,均衡调度也将触发入域操作,从而避免将异常云盘分片所在的分片域存储节点调度出域。

在一种实施方式中,动态更新也可以基于出域条件实现。具体地,本申请实施例的方法还可以包括:响应于云盘分片满足出域条件,从云盘分片故障域中选择分片域存储节点退出云盘分片故障域;其中,出域条件包括以下任一者:对云盘分片的安全检查通过;收到对云盘分片故障域的解除指令;云盘分片的域令牌数量大于云盘分片故障域中分片域存储节点的数量。

针对任一云盘分片,如果其云盘分片故障域满足出域条件,则进行出域操作,即从云盘分片故障域中选择分片域存储节点退出云盘分片故障域,从而实现云盘分片故障域的动态更新。其中,所选择的分片域故障节点可以是一个、多个或全部。

出域条件可以包括对云盘分片的安全检查通过。例如:定期(如每5分钟)对云盘分片进行安全检查,包括检查其I/O服务情况,如果服务正常,则安全检查通过,从而可以提前解除云盘分片故障域的限制,使该云盘分片的云盘分片故障域中的全部分片域故障节点退出该云盘分片故障域,进而在建立云盘分片故障域后,能够让正常云盘分片所调度过的存储节点尽快出域。其中,如果当前没有用户请求I/O服务,则可以通过后台模拟I/O服务请求,以进行安全检查。

出域条件可以包括收到对故障域的解除指令,解除指令可以针对云盘分片故障域,也可以针对下文将描述的云盘故障域和全局故障域。例如:在日常运维时如果发现故障域误操作或故障处理完成后,通过运维工具下发解除指令,进而释放该故障域中的全部存储节点。

出域条件可以包括云盘分片的域令牌数量大于云盘分片故障域中分片域存储节点的数量。也就是说,可以基于域令牌的产生速度,逐渐释放云盘分片故障域中的分片域存储节点。

在一种实施方式中,故障域还包括云盘故障域,本申请实施例的方法还可以包括:针对任一云盘,从云盘的多个云盘分片的云盘分片故障域中,选择第二数量阈值的分片域存储节点加入至云盘的云盘故障域。

由于一个云盘有多个云盘分片,每个云盘分片都有各自的云盘分片故障域,这样就可能造成一块云盘异常时影响的范围比较大,因此通过构建云盘故障域来控制单云盘故障的影响范围。具体地,针对任一云盘,可以从该云盘的多个云盘分片的云盘分片故障域中,选择若干个分片域存储节点加入至该云盘的云盘故障域。

在一种实施方式中,从云盘的多个云盘分片的云盘分片故障域中,选择第二数量阈值的分片域存储节点加入至云盘的云盘故障域,包括:按照分片域存储节点所加入的云盘分片故障域的数量从多到少,对多个分片域存储节点进行排序;选择前N个分片域存储节点加入云盘故障域;其中,N等于第二数量阈值。

也就是说,云盘故障域构建过程中考虑存储节点之间的云盘亲和性,通过亲和性实现云盘故障域,即云盘故障域为亲和域。示例性地,如图4所示,云盘包括两个云盘分片,即云盘分片1和云盘分片2。针对每个云盘分片中的各分片域存储节点,基于分片域存储节点加入的云盘分片故障域的数量进行计数,并按照从多到少的顺序排列,然后选择排在前N个的分片域存储节点加入该云盘的云盘故障域,例如云盘分片1和云盘分片2的故障域里都有BS1、BS2和BS3,加入N等于3,则这三个存储节点将排在前N个,那么在构建该云盘的云盘故障域时就会优先选择BS1、BS2和BS3。

在一种实施方式中,故障域还包括全局故障域,本申请实施例的方法还可以包括:基于至少一个云盘的云盘故障域构建全局故障域。

在一个分布式存储系统的全局环境下,存在多个云盘,每个云盘包括多个云盘分片,由于未知原因的故障场景很多,可能会出现不止一块云盘出问题的场景,因此为了防止多云盘异常时的故障扩散,可以构建全局故障域,全局环境下的全局故障域可以基于全局环境下的云盘故障域而构建。

在一种实施方式中,基于至少一个云盘的云盘故障域构建全局故障域,包括:将最先达到第三数量阈值的云盘故障域作为全局故障域。

为了简化算法,在多云盘的全局故障域构建过程中,最先达到第三数量阈值的云盘故障域升级为全局故障域。示例性地,一旦全局故障域中的存储节点数量低于第三数量阈值,则全局故障域消失。因此,基于云盘分片故障域的动态更新,同样实现了全局故障域的动态更新。

示例性地,第一数量阈值、第二数量阈值和第三数量阈值相等,也就是说,云盘分片故障域、云盘故障域和全局故障域的域窗口大小相同,从而简化算法。

下面结合图5介绍一个全局故障域的构建示例。如图5所示,假设第一数量阈值、第二数量阈值和第三数量阈值均为3,即云盘分片故障域、云盘故障域和全局故障域的域窗口大小均为3个存储节点,域令牌的产生速度为1个/30分钟。在全局环境中存在两个云盘,即Device1和Device2,且分别包括两个云盘分片Segment1和Segment2。在云盘Device1中,云盘分片Segment1在90分钟内连续3次异常调度,其调度过的3个目标存储节点BS1、BS2和BS3(即异常调度轨迹)加入到云盘分片Segment1的云盘分片故障域中,从而使Device1的云盘分片Segment1的分片域存储节点达到第一数量阈值。此时,Device1的云盘分片Segment2的分片域存储节点为2个,即BS4和BS5;Device2的云盘分片Segment1的分片域存储节点为2个,即BS3和BS4;Device2的云盘分片Segment2的分片域存储节点为2个,即BS5和BS6。因此,Device1的云盘分片Segment1的云盘分片故障域提升为Device1的云盘故障域,如果这个时候全局故障域还没有,Device1的云盘故障域会进一步提升为全局故障域,即全局故障域中的存储节点为BS1、BS2和BS3。

在一种实施方式中,本申请实施例的方法还可以包括:响应于全局故障域中各第一存储节点所承载的云盘分片的总数量超过第四数量阈值,重新确定全局故障域;其中,第四数量阈值基于全局存储节点所承载的云盘分片的数量平均值而确定。

其中,全局存储节点可以理解为在一个分布式存储系统的全局环境中的任一存储节点。示例性地,计算全局环境下各全局存储节点所承载的云盘分片的数量的平均值,然后将第四数量阈值设置为该平均值的若干倍。当全局故障域中的所有存储节点所承载的云盘分片的总数量超过第四数量阈值,则关闭该全局故障域,根据上述实施例方法,重新构建全局故障域,从而防止过多云盘分片误入少数几个存储节点的情况发生。

实施例二

在实施例二中主要介绍目标存储节点的选择。其中,实施例一中的全部或部分技术方案可以引用至实施例二。图6示出根据本申请实施例的云盘调度方法的流程图。该云盘调度方法可以应用于管控服务器。如图6所示,该云盘调度方法包括:

步骤S601:根据云盘分片的调度类型,从待选存储节点中确定目标存储节点;其中,待选存储节点包括云盘分片的分片域存储节点、全局故障域中的第一存储节点以及全局故障域外的第二存储节点中的至少一种;全局故障域基于多个云盘分片的云盘分片故障域而构建;在第一时间间隔内云盘分片故障域中分片域存储节点的数量上限为第一数量阈值。

步骤S602:将云盘分片调度至目标存储节点。

其中,全局故障域中的存储节点即为第一存储节点,全局故障域外的存储节点即为第二存储节点。全局故障域基于多个云盘分片的云盘分片故障域而构建,例如:从多个云盘分片故障域中的分片域存储节点中选择若干个存储节点,作为全局故障域中的第一存储节点;或者,针对任一云盘,从该云盘的多个云盘分片的云盘分片故障域中,选择部分分片域存储节点加入至该云盘的云盘故障域,然后再从全局环境下的多个云盘的云盘故障域中选择一个作为全局故障域。全局故障域也可采用实施例一中的方法而构建。步骤S602可以采用步骤S201相同或相类似的实施方式,在此不再赘述。

云盘分片的调度类型可以包括异常调度、均衡调度和非异常调度和均衡调度的其他调度。异常调度用于故障处理,均衡调度用于各存储节点之间的负载均衡,其他调度诸如为了运维需求或其他原因,需要对存储节点进行升级、下线或隔离,进而需要主动将该存储节点上的云盘分片调度走。

针对任一云盘分片,可以根据它的调度类型从待选存储节点中确定其调度目的地,即目标存储节点。其中,待选存储节点可以是该云盘分片的云盘分片故障域中的分片域存储节点,也可以是全局故障域中的第一存储节点,还可以是全局故障域外的第二存储节点。例如,当调度类型是异常调度时,可以选择第一存储节点作为目标存储节点;当调度类型是其他调度时,可以选择第二存储节点作为目标存储节点。

基于本申请实施例的方法,通过构建动态更新的故障域,包括云盘分片故障域和全局故障域,云盘分片的调度目的地可以根据其调度类型不同,从云盘分片故障域、全局故障域中或全局故障域外的存储节点中进行选择,从而在存在未知异常云盘分片的情况下,进行任一调度类型的正常云盘调度。

在一种实施方式中,调度类型为异常调度,根据云盘分片的调度类型,从待选存储节点中确定目标存储节点,可以包括:响应于云盘分片的调度类型为异常调度且存在全局故障域,从多个第一存储节点中确定目标存储节点;或者,响应于云盘分片的调度类型为异常调度且不存在全局故障域,从任一待选存储节点中确定目标存储节点;或者,响应于云盘分片的调度类型为异常调度且本次调度为云盘分片的第M次异常调度,从多个第二存储节点中确定目标存储节点,其中,M为第一存储节点的数量的倍数。

示例性地,如果是异常调度,可以先判断是否有全局故障域存在,如果存在,就会从全局故障域里选择目标存储节点;如果不存在,则可以从全局环境下的任一存储节点中选择目标存储节点。其中,为了防止正常云盘分片误入全局故障域而无法退出的情况发生,当本次调度为第M次异常调度时,选择的目标存储节点不考虑第一存储节点,从而提供正常云盘分片退出全局故障域的机会。其中,M为第一存储节点的数量的倍数,即M为第三数量阈值的若干倍。

在一种实施方式中,调度类型为均衡调度,根据云盘分片的调度类型,从待选存储节点中确定目标存储节点,可以包括:响应于云盘分片的调度类型为均衡调度,且云盘分片的分片域存储节点的数量达到第一数量阈值,从云盘分片的分片域存储节点中确定目标存储节点;或者,响应于云盘分片的调度类型为均衡调度,且云盘分片的分片域存储节点的数量未达到第一数量阈值,从多个第二存储节点中确定目标存储节点。

示例性地,如果云盘分片的调度类型为均衡调度,则其调度目的地可以从该云盘分片的分片域存储节点列表中选择,或者从全局故障域外选择。也就是说,故障域的构建并不影响均衡调度。

在一种实施方式中,响应于云盘分片的调度类型为均衡调度,且云盘分片的分片域存储节点的数量未达到第一数量阈值;从多个第二存储节点中确定目标存储节点,包括:响应于云盘分片的分片域存储节点的数量未达到预设门限值,选择所加入的云盘分片故障域数量少的第二存储节点作为目标存储节点;或者,响应于云盘分片的分片域存储节点的数量达到预设门限值,选择与云盘分片的分片域存储节点之间至少跨越两个交换机的第二存储节点作为目标存储节点。

预设门限值小于第一数量阈值,示例性地,预设门限值可以设置为第一数量阈值减1,或者设置为第一数量阈值的一定比例,如60%,本申请实施例对此不作限定。也就是说,针对均衡调度,目标存储节点的选择基于是否达到预设门限值而不同。

具体地,如果云盘分片的分片域存储节点的数量未达到预设门限值,则在选择目标存储节点时需要考虑反亲和措施,即选择所加入的云盘分片故障域数量少的第二存储节点作为目标存储节点。示例性地,如图7所示,由于正常云盘分片可能会因为均衡调度而被调度到异常云盘分片的云盘分片故障域中,从而造成正常云盘分片的震荡,因此,可以基于反亲和措施,按照第二存储节点所加入的云盘分片故障域的数量从少到多,对多个第二存储节点进行排序,选择排在第一个的第二存储节点作为目标存储节点,例如BS1、BS2、BS3所加入的云盘分片故障域的数量均为2,BS0所加入的云盘分片故障域的数量为1,BS-M所加入的云盘分片故障域的数量为0,因此,可以选择BS-M作为此次均衡调度的目标存储节点,从而避免正常云盘分片掉入异常云盘分片的云盘分片故障域。

而如果云盘分片的分片域存储节点的数量达到预设门限值,则需要考虑跨交换机(rack)的容灾操作,即选择与该云盘分片的分片域存储节点之间至少跨越两个交换机的第二存储节点作为目标存储节点,这样即使某个交换机网络异常,在故障域中也能有正常存储节点可作为调度目的地,从而不影响均衡调度的实现。

在一种实施方式中,在云盘分片的域令牌的数量为1的情况下,确定的目标存储节点需要与云盘分片已有的分片域存储节点之间至少跨越两个交换机。

也就是说,任何调度类型都需要考虑跨交换机的容灾操作,以避免某些交换机异常导致整个故障域中的存储节点都受影响。示例性地,如图8所示,假设第一数量阈值为7,即云盘分片故障域的域窗口大小为7个存储节点,当云盘分片故障域中已存在6个存储节点,即BS1、BS2、BS3、BS4、BS5和BS6,在最后一次入域选择存储节点时,所选择的存储节点BS-X需要与已存在的6个存储节点至少跨2个交换机。其中,域令牌的释义和应用可参见实施例一。

在一种实施方式中,调度类型为其他调度,即不是异常调度,也不是均衡调度,根据云盘分片的调度类型,从待选存储节点中确定目标存储节点,可以包括:响应于云盘分片的调度类型不是异常调度和均衡调度,选择所加入的云盘分片故障域数量少的第二存储节点作为目标存储节点。

也就是说,如果云盘分片的调度类型为其他调度,则在选择目标存储节点时需要考虑反亲和措施,按照第二存储节点所加入的云盘分片故障域的数量从少到多,对多个第二存储节点进行排序,选择排在第一个的第二存储节点作为目标存储节点。

根据本申请实施例的方法,由于故障域中的存储节点动态更新,云盘分片的调度目的地可以根据其调度类型不同,从云盘分片故障域、全局故障域中或全局故障域外的存储节点中进行选择,从而在存在未知异常云盘分片的情况下,进行任一调度类型的正常云盘调度。

实施例三

在故障扩散的范围得到控制后,就可以精确筛选定位异常云盘分片,从而进行精准防控了。具体地,基于实施例一和实施例二的方法,如图9所示,本申请实施例的方法还可以包括:

步骤S901:从故障域中的存储节点所承载的云盘分片中,筛选出异常云盘分片和正常云盘分片;

步骤S902:标记异常云盘分片,并将正常云盘分片调度至故障域外的存储节点上。

其中,故障域可以包括云盘分片故障域、云盘故障域或全局故障域。故障域可以看作是划定了一个隔离区,通过云盘分片的异常调度,将疑似问题的云盘分片圈定在了一个动态更新的范围内。在此基础上,可以划定观察区,用于筛选异常云盘分片,定位故障源,进而对其进行故障处理。

示例性地,如图10所示,从隔离区(故障域)挑选云盘分片,即从故障域中的存储节点所承载的云盘分片中挑选部分云盘分片,将其调度到观察区的存储节点上。在观察区中对该云盘分片进行筛查,即如果在观察区中发现该云盘分片异常,如加载失败或I/0操作异常,则将该云盘分片标记为异常云盘分片,并放回隔离区(故障域);如果在观察区中发现该云盘分片正常,如加载成功或I/0操作正常,则确定该云盘分片为正常云盘分片,则将其调度回正常区。其中,正常区即为故障域外的存储节点。如此,便可以通过筛选机制将异常云盘分片找出来并进行精准隔离。

基于上述实施例一、实施例二和实施例三的方法,通过构建动态更新的故障域,从而在时间维度和空间维度实现对调度目的地的范围进行动态限制,一方面可以在存在未知异常云盘分片的情况下,防止异常云盘分片的调度所导致的级联故障,有效避免大规模故障的发生,防止集群雪崩;另一方面,云盘分片故障域中的存储节点动态更新,云盘分片的调度目的地可以根据其调度类型不同,从云盘分片故障域、全局故障域中或全局故障域外的存储节点中进行选择,从而在存在未知异常云盘分片的情况下,进行任一调度类型的正常云盘调度。进一步地,前述的故障域均可以看作是划定了一个隔离区,通过云盘分片的异常调度,将疑似问题的云盘分片圈定在了一个动态范围内,然后进一步筛选异常云盘分片,定位故障源,进而对其进行故障处理,从而精确筛选定位异常云盘分片进行精准防控。

实施例四

与本申请实施例一、实施例二和实施例三提供的方法相对应地,本申请实施例提供一种云盘调度装置,该云盘调度装置可以包括:目标存储节点确定模块,用于基于动态更新的故障域,确定云盘分片的目标存储节点;其中,所述故障域包括云盘分片故障域,在第一时间间隔内所述云盘分片故障域中分片域存储节点的数量上限为第一数量阈值;调度模块,用于将所述云盘分片调度至所述目标存储节点。

在一种实施方式中,所述云盘分片对应有域令牌,用于提供所述目标存储节点加入所述云盘分片故障域的入域权限;所述域令牌的数量上限为所述第一数量阈值;每隔第二时间间隔,所述域令牌的数量增加一个。

在一种实施方式中,在所述云盘分片的域令牌的数量为1的情况下,确定的目标存储节点需要与所述云盘分片已有的分片域存储节点之间至少跨越两个交换机。

在一种实施方式中,该装置还包括云盘分片故障域构建模块,用于响应于所述云盘分片满足入域条件,将所述目标存储节点作为所述云盘分片的分片域存储节点加入所述云盘分片的云盘分片故障域;其中,所述入域条件包括以下任一者:所述云盘分片的调度类型为异常调度且所述云盘分片的分片域存储节点的数量未达到所述第一数量阈值;所述云盘分片的调度类型为均衡调度,且所述云盘分片的分片域存储节点的数量达到预设门限值但未达到所述第一数量阈值。

在一种实施方式中,该装置还包括云盘分片故障域构建模块,用于响应于云盘分片满足出域条件,从所述云盘分片故障域中选择分片域存储节点退出所述云盘分片故障域;其中,所述出域条件包括以下任一者:对所述云盘分片的安全检查通过;收到对所述云盘分片故障域的解除指令;所述云盘分片的域令牌数量大于所述云盘分片故障域中分片域存储节点的数量。

在一种实施方式中,所述故障域还包括云盘故障域,该装置还包括云盘故障域构建模块,用于针对任一云盘,从所述云盘的多个云盘分片的云盘分片故障域中,选择第二数量阈值的分片域存储节点加入至所述云盘的云盘故障域。

在一种实施方式中,云盘故障域构建模块具体用于按照分片域存储节点所加入的云盘分片故障域的数量从多到少,对多个分片域存储节点进行排序;选择前N个分片域存储节点加入所述云盘故障域;其中,N等于所述第二数量阈值。

在一种实施方式中,所述故障域还包括全局故障域,该装置还包括全局故障域构建模块,用于基于至少一个云盘的云盘故障域构建所述全局故障域。

在一种实施方式中,全局故障域构建模块具体用于将最先达到第三数量阈值的云盘故障域作为所述全局故障域。

在一种实施方式中,该装置还包括全局故障域构建模块,用于响应于所述全局故障域中各第一存储节点所承载的云盘分片的总数量超过第四数量阈值,重新确定所述全局故障域;其中,所述第四数量阈值基于全局存储节点所承载的云盘分片的数量平均值而确定。

在一种实施方式中,目标存储节点确定模块具体用于根据所述云盘分片的调度类型,从待选存储节点中确定所述目标存储节点;其中,所述待选存储节点包括所述云盘分片的分片域存储节点、全局故障域中的第一存储节点以及所述全局故障域外的第二存储节点中的至少一种,所述全局故障域基于多个云盘分片的云盘分片故障域而构建。

在一种实施方式中,目标存储节点确定模块具体用于响应于所述云盘分片的调度类型为异常调度且存在所述全局故障域,从多个所述第一存储节点中确定所述目标存储节点;或者,响应于所述云盘分片的调度类型为异常调度且不存在所述全局故障域,从任一待选存储节点中确定所述目标存储节点;或者,响应于所述云盘分片的调度类型为异常调度且本次调度为所述云盘分片的第M次异常调度,从多个所述第二存储节点中确定所述目标存储节点,其中,M为所述第一存储节点的数量的倍数。

在一种实施方式中,目标存储节点确定模块具体用于响应于所述云盘分片的调度类型为均衡调度,且所述云盘分片的分片域存储节点的数量达到所述第一数量阈值,从所述云盘分片的分片域存储节点中确定所述目标存储节点;或者,响应于所述云盘分片的调度类型为均衡调度,且所述云盘分片的分片域存储节点的数量未达到所述第一数量阈值,从多个所述第二存储节点中确定所述目标存储节点。

在一种实施方式中,目标存储节点确定模块具体用于响应于所述云盘分片的分片域存储节点的数量未达到预设门限值,选择所加入的云盘分片故障域数量少的第二存储节点作为所述目标存储节点;或者,响应于所述云盘分片的分片域存储节点的数量达到所述预设门限值,选择与所述云盘分片的分片域存储节点之间至少跨越两个交换机的第二存储节点作为所述目标存储节点。

在一种实施方式中,目标存储节点确定模块具体用于响应于所述云盘分片的调度类型不是异常调度和均衡调度,选择所加入的云盘分片故障域数量少的第二存储节点作为所述目标存储节点。

在一种实施方式中,该装置还包括云盘分片筛选模块,用于从所述故障域中的存储节点所承载的云盘分片中,筛选出异常云盘分片和正常云盘分片;标记所述异常云盘分片,并将所述正常云盘分片调度至所述故障域外的存储节点上。

本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,并具备相应的有益效果,在此不再赘述。

实施例五

图11为用来实现本申请实施例的电子设备的框图。如图11所示,该电子设备包括:存储器1101和处理器1102,存储器1101内存储有可在处理器1102上运行的计算机程序。处理器1102执行该计算机程序时实现上述实施例中的方法。存储器1101和处理器1102的数量可以为一个或多个。

该电子设备还包括:通信接口1103,用于与外界设备进行通信,进行数据交互传输。

如果存储器1101、处理器1102和通信接口1103独立实现,则存储器1101、处理器1102和通信接口1103可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(PeripheralComponent Interconnect,PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选地,在具体实现上,如果存储器1101、处理器1102及通信接口1103集成在一块芯片上,则存储器1101、处理器1102及通信接口1103可以通过内部接口完成相互间的通信。

本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现本申请任一实施例中提供的方法。

本申请实施例还提供了一种芯片,该芯片包括,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请任一实施例提供的方法。

本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请任一实施例提供的方法。

应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。

可选地,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如:静态随机存取存储器(StaticRAM,SRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(DoubleData Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Sync Link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息、用户操作信息等)和数据(包括但不限于用于处理的数据、分析的数据、存储的数据、展示的数据等)等,均为经用户授权或者经过各方充分授权的信息和数据,并且相关信息和数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如:可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。

应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。

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

相关技术
  • 云盘数据处理方法、装置、电子设备及存储介质
  • 资源调度方法、系统及电子设备和存储介质
  • 存储方法、存储系统、电子设备及存储介质
  • 电影拍摄场景的调度方法、装置、电子设备和存储介质
  • 一种任务调度方法、装置、电子设备及存储介质
  • 一种云盘挂载数量调度方法、系统、装置及存储介质
  • 云设备调度方法、装置及系统、电子设备及存储介质
技术分类

06120116381031