一种异常zone自动补齐方法、装置及设备与流程

专利查询12天前  9



1.本技术涉及分布式对象存储技术领域,尤其涉及一种异常zone自动补齐方法、装置及设备。


背景技术:

2.smr(叠瓦式磁记录)是一种新型磁盘技术,相邻磁道之间按序部分重叠,能提高单位存储介质的存储密度,降低存储成本。正是由于smr磁盘物理上的特点,导致了它的读行为虽然与普通hdd(hard disk drive,硬盘驱动器)机械硬盘无异,但是它的写行为却有着巨大的变化,它不支持随机写和原地更新写,因为这样会导致相重叠磁道数据被覆盖。因此smr磁盘仅支持从头到尾的顺序写入。
3.smr磁盘将磁道划分为多个带(band),即连续磁道所构成的壳连续写入的区域,每个区域成为一个需要顺序写入的基本单元。band是smr磁盘物理概念,对应的逻辑概念称为“区域”(zone),一个zone的大小为256mb。
4.由于smr磁盘在价格上有着无法规避的优势,因此分布式对象存储系统必须要支持这种新型磁盘技术。
5.在接收到数据写入指令,需要将一个文件中的数据以m+n形式划分为多个分片并写入多个zone时,以上述多个zone作为一个zg(zonegroup,一组zone的集合)进行存储和管理,如果需要将对象分片写入zg中包含已使用的zone,则首先需要对此zg进行复用,而只有zg内全部zone的写指针位置一致时该zg才可以进行复用,然而网络的高频抖动和服务程序的异常等多种情况都可能会导致zg内各个zone的写指针位置不一致的情况。如果不对上述异常zg中写指针位置与该异常zg中长度最长的zone的写指针位置一致的异常zone进行处理,就无法对上述异常的zg进行复用,从而导致异常zg内部zone空间浪费,使整个存储系统的垃圾容量占比提升,令用户的真正磁盘空间利用率达不到要求。


技术实现要素:

6.本技术提供了一种异常zone自动补齐方法,用于解决因zg内zone的写指针位置不同导致zg无法进行复用的问题。
7.第一方面,本技术提供一种异常zone自动补齐方法,应用于管理节点,包括:
8.到达扫描周期时,对zg缓存中可用zg进行扫描,所述可用zg为未超出复用周期,且包含的多个zone均为处于已上报状态且剩余空间大于预设值的zone的zg,所述已上报状态用于标识对应的zone已完成对象分片写入且所述zone对应的存储节点已完成zone状态上报;
9.根据扫描到的可用zg中多个zone内的写指针位置,筛选出包含异常zone的异常zg,并生成对所述异常zone进行数据补齐的补齐任务;
10.确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将所述补齐任务下发给对应的存储节点;
11.在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,将所述补齐任务从全局zone补齐任务队列移除,并在确定满足复用条件时将所述补齐任务对应的zg加入复用队列。
12.在一种可能实现的方式中,确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将补齐任务下发给对应的存储节点,包括:
13.根据确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列和待下发补齐任务队列;
14.将所述补齐任务下发给对应的存储节点,并将所述补齐任务从所述待下发补齐任务队列移除,添加到已下发补齐任务队列;
15.其中,将所述补齐任务从全局zone补齐任务队列移除时,将所述补齐任务从已下发补齐任务队列移除。
16.在一种可能实现的方式中,该方法还包括:
17.在设定时间内未收到所述存储节点上报的补齐结果,或在设定时间内收到补齐结果且确定数据补齐失败时,将所述补齐任务从所述已下发补齐任务队列移除,添加待下发补齐任务队列,延迟预设时间后再次下发给对应的存储节点。
18.在一种可能实现的方式中,将所述补齐任务下发给对应的存储节点,包括:
19.确定所述补齐任务对应的zone所在的zg未超出复用周期,将所述补齐任务下发给对应的存储节点;
20.确定所述补齐任务对应的zone所在的zg超出复用周期,将所述补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列中移除。
21.在一种可能实现的方式中,在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,包括:
22.确定所述补齐任务对应的zone所在的zg超出复用周期,确定所述全局zone补齐任务队列中是否存在与所述补齐任务对应的zg相同的其余补齐任务,其中同一文件的对象分片所在的zone属于相同zg;
23.确定全局zone补齐任务队列中不存在所述其余补齐任务,延长所述补齐任务对应的zone所在的zg的复用周期。
24.在一种可能实现的方式中,该方法还包括:
25.接收存储节点离线的信息,将与所述存储节点中zone对应的补齐任务添加到延迟清理补齐任务队列;
26.在预设时间内接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列移除;
27.在预设时间内未接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列、全局zone补齐任务队列移除。
28.在一种可能实现的方式中,该方法还包括:
29.接收存储节点删除的信息,将与所述存储节点中zone对应的补齐任务从全局zone补齐任务队列中移除。
30.在一种可能实现的方式中,该方法还包括:
31.对所述待下发补齐任务队列中的补齐任务进行周期性扫描,筛选出超出复用周期的补齐任务,并将所述超出复用周期的补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列移除。
32.在一种可能实现的方式中,该方法还包括:
33.将所述补齐任务下发给对应的存储节点时,将所述补齐任务对应的zone的状态更改为未上报状态;
34.收到存储上报的补齐结果时,将所述补齐任务对应的zone的状态更改为已上报状态。
35.在一种可能实现的方式中,该方法还包括:
36.确定所述已下发补齐任务队列中任一存储节点对应的补齐任务数量到达设定阈值时,待所述任一存储节点对应的补齐任务数量小于设定阈值时向所述任一存储节点下发补齐任务。
37.本技术还提供一种异常zone自动补齐方法,应用于存储节点,包括:
38.接收到管理节点下发的补齐任务,确定所述补齐任务中zone的写指针位置与所述zone实际的写指针位置一致,且所述zone的补齐目标长度大于zone的实际长度时,对所述补齐任务对应的zone进行补齐;
39.确定所述补齐任务已结束,将补齐结果上报给管理节点。
40.第二方面,本技术提供一种异常zone自动补齐装置,应用于管理节点,包括:
41.扫描模块,用于到达扫描周期时,对zg缓存中可用zg进行扫描,所述可用zg为未超出复用周期,且包含的多个zone均为处于已上报状态且剩余空间大于预设值的zone的zg,所述已上报状态用于标识对应的zone已完成对象分片写入且所述zone对应的存储节点已完成zone状态上报;
42.补齐任务生成模块,用于根据扫描到的可用zg中多个zone内的写指针位置,筛选出包含异常zone的异常zg,并生成对所述异常zone进行数据补齐的补齐任务;
43.补齐任务下发模块,用于确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将所述补齐任务下发给对应的存储节点;
44.补齐任务移除模块,用于在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,将所述补齐任务从全局zone补齐任务队列移除,并在确定满足复用条件时将所述补齐任务对应的zg加入复用队列。
45.本技术还提供一种异常zone自动补齐装置,应用于存储节点,包括:
46.补齐任务接收模块,用于接收到管理节点下发的补齐任务,确定所述补齐任务中zone的写指针位置与所述zone实际的写指针位置一致,且所述zone的补齐目标长度大于zone的实际长度时,对所述补齐任务对应的zone进行补齐;
47.补齐结果上报模块,用于确定所述补齐任务已结束,将补齐结果上报给管理节点。
48.第三方面,本技术提供一种异常zone自动补齐设备,应用于管理节点,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时执行以下步骤:
49.到达扫描周期时,对zg缓存中可用zg进行扫描,所述可用zg为未超出复用周期,且
包含的多个zone均为处于已上报状态且剩余空间大于预设值的zone的zg,所述已上报状态用于标识对应的zone已完成对象分片写入且所述zone对应的存储节点已完成zone状态上报;
50.根据扫描到的可用zg中多个zone内的写指针位置,筛选出包含异常zone的异常zg,并生成对所述异常zone进行数据补齐的补齐任务;
51.确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将所述补齐任务下发给对应的存储节点;
52.在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,将所述补齐任务从全局zone补齐任务队列移除,并在确定满足复用条件时将所述补齐任务对应的zg加入复用队列。
53.本技术提供一种异常zone自动补齐设备,应用于存储节点,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时执行以下步骤:
54.接收到管理节点下发的补齐任务,确定所述补齐任务中zone的写指针位置与所述zone实际的写指针位置一致,且所述zone的补齐目标长度大于zone的实际长度时,对所述补齐任务对应的zone进行补齐;
55.确定所述补齐任务已结束,将补齐结果上报给管理节点。
56.第四方面,本技术提供一种计算机可读存储介质,应用于管理节点,其上存储有计算机程序指令,该计算机程序指令被处理器执行时执行上述异常zone自动补齐方法对应的步骤。
57.本技术提供一种计算机可读存储介质,应用于存储节点,其上存储有计算机程序指令,该计算机程序指令被处理器执行时执行上述异常zone自动补齐方法对应的步骤。
58.基于以上本技术提供的异常zone自动补齐方法,本技术具有以下有益效果:
59.可以实现异常zg中的异常zone的快速发现,以及异常zone的精准补齐,解决了由于异常zg的无法复用导致的资源浪费问题,且基于全局zone补齐任务队列在添加时对补齐任务进行去重处理,避免多次扫描到的同一个补齐任务重复地添加到补齐队列中,实现补齐任务的准确和高效补齐。
附图说明
60.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
61.图1为本技术实施例提供的一种系统模块框图;
62.图2为本技术实施例提供的一种zg结构的示意图;
63.图3为本技术实施例提供的一种异常zone自动补齐方法的流程图;
64.图4本技术实施例提供的另一种异常zone自动补齐方法的流程图;
65.图5为本技术实施例提供的一种异常zg成功补齐后再复用逻辑流程图;
66.图6为本技术实施例提供的一种异常zone自动补齐装置的示意图;
67.图7为本技术实施例提供的另一种异常zone自动补齐装置的示意图;
68.图8为本技术实施例提供的一种异常zone自动补齐设备的示意图;
69.图9为本技术实施例提供的另一种异常zone自动补齐设备的示意图。
具体实施方式
70.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
71.本技术实施例描述的应用场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
72.本技术实施例提供的异常zone自动补齐方法应用于图1所示的分布式存储系统中,当sdk客户端申请空间进行文件数据写入时,通过信令流将获取文件数据写入空间的指令发送给管理节点(主),管理节点(主)根据该指令从对应的存储节点(dn)获取与指令对应的可容纳文件数据写入的zone的相关信息,并反馈给sdk客户端,以使sdk客户端将文件数据写入对应的zone中。其中,管理节点(主)同时将信息传输给管理节点(备),以使在管理节点(主)发生异常时,管理节点(备)代替管理节点(主)执行相应的操作。
73.如图2所示,本技术实施例提供了zg结构的示意图,在进行文件数据写入时,一个文件数据可以划分为多个对象,一个对象可以划分为m+n个对象分片,在接收到对象数据写入指令,将对应的m+n个对象分片并写入m+n个zone时,以上述m+n个zone作为一个zg(zonegroup,一组zone的集合)进行存储和管理,其中,一个zg内包含m+n个zone,每个zone分别映射到不同存储节点上的固定smr盘的某个具体zone区域。一个zg在写入m+n个对象分片后,如果包含的各zone内剩余空间大于预设值且使用长度一致、该zg也未超出复用周期,则该zg满足复用条件,可以被复用,即允许再次写入另一个与该zg的复用key相同的对象的m+n个对象分片,上述zg复用key是由bucket、ec类型、和文件类型(大文件/小文件)三个字段组成的。
74.由于现有技术中存在的因异常zg内zone的写指针位置不同,即zone使用长度不同导致异常zg无法进行复用的问题,为解决该问题,本技术实施例提供了一种异常zone自动补齐方法,基于zonegroup(zg:一组zone的集合)支持smr磁盘zone空间数据读写和zg复用的基础上,通过zg补齐的设计,包括:异常zg的快速扫描策略、zone补齐队列设计、zone补齐任务状态异常处理、补齐任务下发流量控制、zg补齐逻辑的设计(包括zone补齐任务封装、下发、补齐任务的处理与补齐结果的上报),来实现异常zg的快速发现和精准快速的zg补齐修复,并将满足复用条件的修复后的zg插入zg复用队列。当下次sdk再次申请空间时,可复用异常补齐后的zg,实现zg剩余空间的再次利用,最终提升整个存储系统空间利用率。并结合补齐任务下发流量控制,保证异常zg快速高效补齐修复的同时不会影响实时读写业务。
75.实施例1
76.如图3所示,本技术实施例提供一种异常zone自动补齐方法,应用于管理节点,该方法包括以下步骤:
77.步骤301,到达扫描周期时,对zg缓存中可用zg进行扫描,所述可用zg为未超出复用周期,且包含的多个zone均为处于已上报状态且剩余空间大于预设值的zone的zg,所述已上报状态用于标识对应的zone已完成对象分片写入且所述zone对应的存储节点已完成zone状态上报;
78.管理节点接收存储节点上报的zone已完成对象分片写入信息后,将该zone的状态更改为已上报状态。
79.上述复用周期为从zone所在的zg的创建时间开始的,预设的时间内的一段时间,例如,zone所在的zg创建后的一天之内。
80.实施中,到达扫描周期后,对管理节点内zg缓存区域中zg中的可用zone进行扫描时以zg为单位进行扫描,为避免补齐任务队列过大占据大量内存空间的问题,进行扫描时扫描到预设个数的异常zg即停止扫描,或者扫描到全局zg缓存的末尾未满足指定个数时按照扫描得到的异常zg的个数进行处理,其中,当出现扫描到指定个数的异常zg时,下一次扫描从上一次扫描结束位置开始,并且每次扫描的异常zg的预设个数和zg扫描周期配置项支持动态调整。
81.同时,为了提高补齐效率,异常zg中异常zone的扫描和实际补齐任务的封装、下发及调度为两个独立的过程。
82.步骤302,根据扫描到的可用zg中多个zone内的写指针位置,筛选出包含异常zone的异常zg,并生成对所述异常zone进行数据补齐的补齐任务;
83.当扫描出zg中多个zone的写指针位置不一致时,确定该zg为异常zg,且异常zg中的与使用空间最多的zone长度不一致的zone为异常zone,并针对每个异常zone生成对应的补齐任务。
84.上述补齐任务中包含异常zone对应的zone的标识(zoneid)、写指针位置、补齐的目标长度、补齐任务触发时间、和所在的异常zg的创建时间,其中,zoneid用于在管理节点与存储节点之间进行流转,使存储节点确定补齐任务的位置,即特定smr磁盘的特定zone上;补齐的目标长度为异常zg内使用空间最多的zone对应的长度;zg创建时间用于异常zg的快速扫描(通过zg创建时间排除超出复用周期的zg,加快扫描速度)、异常zg的判断以及复用周期相关的异常处理机制;补齐任务触发时间用于判断补齐任务是否超时和延时任务的再次下发时机。
85.步骤303,确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将所述补齐任务下发给对应的存储节点;
86.上述全局zone补齐任务队列的主要功能是记录所有的补齐任务,并基于zoneid进行的补齐任务的去重处理,即根据zoneid确定全局zone补齐任务队列中不存在该补齐任务时,才会将该补齐任务添加到全局zone补齐任务队列中;为方便进行去重,全局zone补齐任务队列以zoneid为存储主键,每个zoneid映射一个补齐任务。
87.实施中,每次扫描到的异常zone,都会对应生成补齐任务后全部添加到全局zone补齐任务队列中,且只有该异常zone补齐成功后才会从全局zone补齐任务队列中删除。
88.上述补齐任务的下发是通过存储节点和管理节点之间进行心跳协议交互,并且通过流量控制的方法下发指定数量的补齐任务到对应的存储节点进行实际的zone补齐。
89.步骤304,在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,将
所述补齐任务从全局zone补齐任务队列移除,并在确定满足复用条件时将所述补齐任务对应的zg加入复用队列。
90.上述在设定时间内收到存储节点上报的补齐结果是用于判断补齐任务是否超时,实施中,将补齐任务添加到全局zone补齐任务队列的同时将上述补齐任务对应的补齐任务触发时间设置为初始值;将补齐任务下发给存储节点时,更新上述补齐任务对应的补齐任务触发时间为当前系统时间;如果在设定时间对应的系统时间未收到存储节点上报的补齐结果,则可以判定补齐任务已超时,对应执行对应的任务延时下发处理机制。
91.管理节点基于上报的补齐结果判断当前zg所有zone都已上报且满足复用条件后,将该zg添加到复用队列,以便后续进行zg复用。
92.通过上述方法,可以异常zg中的异常zone的快速发现,以及异常zone的精准补齐,解决了由于异常zg的无法复用导致的资源浪费问题。
93.本技术实施例中还提出了待下发补齐任务队列和已下发补齐任务队列,为保证各个存储节点的补齐任务能够快速被下发,减少每次协议交互时存储节点dnid对应的补齐任务的查找时间,上述待下发补齐任务队列和已下发补齐任务队列都是以dnid作为队列的存储主键,每个dnid映射一个有序的补齐任务列表,其中,dnid为存储节点(datanode)在元数据服务器中的唯一标识。
94.本技术实施例还对上述待下发补齐任务队列进行设置,对于同一次被扫描出来的异常zg中异常zone对应的补齐任务,优先下发zg创建时间早的补齐任务,以保证zg创建时间早的补齐任务先被补齐,减少空间浪费;也可动态配置为优先下发zg创建时间晚的补齐任务,保证最新创建的zg优先被补齐,满足不同场景的补齐需求。
95.实施中,在出现补齐成功、补齐失败或补齐超时中的任一场景时,对应的补齐任务都会从已下发队列移除,并且,当出现补齐失败或补齐超时场景时,还更新对应的补齐任务中任务触发时间为当前时间系统,并将该补齐任务添加到待下发补齐任务队列,延时预设延迟时间后再重新下发。
96.作为一种可选的实施方式,确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将补齐任务下发给对应的存储节点,包括:
97.根据确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列和待下发补齐任务队列;
98.将所述补齐任务下发给对应的存储节点,并将所述补齐任务从所述待下发补齐任务队列移除,添加到已下发补齐任务队列;
99.其中,将所述补齐任务从全局zone补齐任务队列移除时,将所述补齐任务从已下发补齐任务队列移除。
100.上述步骤303中,通过流量控制的方法下发指定数量的补齐任务到对应的存储节点进行实际的zone补齐,包括:
101.每次存储节点和管理节点之间进行心跳协议交互时,只下发指定数量的补齐任务,同时针对已下发任务队列中每个dnid对应的补齐任务列表同时能容纳的最大任务数量设置阈值,当已下发补齐任务队列中某个dnid对应的补齐任务数量到达设定阈值时,停止向该dnid对应的存储节点下发补齐任务,直到该已下发补齐任务队列中该dnid对应的补齐
任务数量减少到小于设定阈值时,再进行补齐任务下发给该dnid对应的存储节点,以保证异常zone快速高效补齐修复的同时不会影响存储节点中实时读写业务,提高整个存储系统容错能力和io均衡水平,且每次补齐任务的下发数量和已下发任务队列中每个dnid对应的补齐任务列表同时能容纳的最大任务数量的配置支持动态调整。
102.作为一种可选的实施方式,该方法还包括:
103.确定所述已下发补齐任务队列中任一存储节点对应的补齐任务数量到达设定阈值时,待所述任一存储节点对应的补齐任务数量小于设定阈值时向所述任一存储节点下发补齐任务。
104.上述步骤304中,作为一种可选的实施方式,该方法还包括:
105.将所述补齐任务下发给对应的存储节点时,将所述补齐任务对应的zone的状态更改为未上报状态;
106.收到存储上报补齐结果时,将所述补齐任务对应的zone的状态更改为已上报状态。
107.实施中,管理节点将补齐任务下发给对应的存储节点时,同时更新补齐任务对应的zone的状态,并在后续存储节点上报补齐结果时,对应更新补齐任务对应的zone的状态,以便在进行zg的扫描时,只对处于zg内全部zone状态为已上报状态的zg进行扫描,加快扫描速度。
108.实施中,由于补齐过程中存在很多异常情况,包括:(1)存储节点离线或者删除,(2)zone对应磁盘出现异常(如磁盘损坏),(3)补齐任务对应的zone所在的zg超出复用周期;如果出现上述异常情况(1)或(2),都会导致zone补齐任务失败或补齐任务超时,如果出现异常情况(3),那么补齐成功后zone所在的zg也无法进行zg复用,为解决以上问题,本技术实施例还提出了针对异常情况的异常处理机制。
109.一、针对上述存储节点离线的异常处理机制
110.本技术实施例中,当存储节点离线时,会导致该存储节点和管理节点之间无法进行心跳协议交互,进而任务无法正常下发给存储节点,此时需要移除补齐任务队列中该存储节点中zone对应的所有补齐任务,但是为了避免因为网络抖动存储节点频繁上下线,导致补齐任务频繁的从补齐任务队列添加和移除,管理节点引入了延迟清理补齐任务队列。
111.作为一种可选的实施方式,该方法还包括:
112.接收存储节点离线的信息,将与所述存储节点中zone对应的补齐任务添加到延迟清理补齐任务队列;
113.在预设时间内接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列移除;
114.在预设时间内未接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列、全局zone补齐任务队列移除。
115.需要注意的是,当存在待下发补齐任务队列和已下发补齐任务队列时,在预设时间内未接收到所述存储节点恢复的信息时,也需要将上述存储节点中zone对应的补齐任务从待下发补齐任务队列和已下发补齐任务队列中移除。
116.二、针对上述存储节点删除的异常处理机制
117.当存在存储节点删除时,同样会导致该存储节点和管理节点之间无法进行心跳协
议交互。但是存储节点删除与离线存在差别,删除动作不会因网络抖动导致的删除抖动,因此当管理节点接收存储节点删除的信息后,立刻移除补齐任务队列中存储节点中zone对应的补齐任务。
118.作为一种可选的实施方式,该方法还包括:
119.接收存储节点删除的信息,将与所述存储节点中zone对应的补齐任务从全局zone补齐任务队列中移除。
120.需要注意的是,当存在待下发补齐任务队列和已下发补齐任务队列时,也需要将上述存储节点中zone对应的补齐任务从待下发补齐任务队列和已下发补齐任务队列中移除。
121.三、针对复用周期相关的补齐任务的异常处理机制
122.为避免zg超出复用周期导致补齐成功的zg也无法复用问题,设计以下复用周期相关的补齐任务异常处理机制,以保证补齐任务的高效、准确并提高异常zg能够再次复用的成功率,同时也避免下发超出复用周期的补齐任务导致系统资源的浪费。
123.1、补齐任务下发时校验zg是否超出复用周期
124.由于补齐任务的下发与异常zg中异常zone的存在时间差,因此在补齐任务下发时根据补齐任务的zg创建时间判断补齐任务中zone所在的zg是否超出复用周期,若超出复用周期,则不再下发该补齐任务,并从该补齐任务从补齐队列中移除,以确保下发的补齐任务中zone所在的zg均在复用周期内。
125.作为一种可选的实施方式,将所述补齐任务下发给对应的存储节点,包括:
126.确定所述补齐任务对应的zone所在的zg未超出复用周期,将所述补齐任务下发给对应的存储节点;
127.确定所述补齐任务对应的zone所在的zg超出复用周期,将所述补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列中移除。
128.2、周期性扫描清理超过复用周期的任务
129.周期性对待下发补齐任务队列进行扫描,根据补齐任务的zg创建时间筛选超出复用周期的补齐任务,同时把超出复用周期的补齐任务从全局zone补齐任务队列和待下发补齐任务队列中移除。
130.作为一种可选的实施方式,该方法还包括:
131.对所述待下发补齐任务队列中的补齐任务进行周期性扫描,筛选出超出复用周期的补齐任务,并将所述超出复用周期的补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列移除。
132.3、调整补齐成功的补齐任务的zg的复用周期
133.由于补齐任务的下发和补齐结果的上报也存在一定的时间差,因此存在下发时补齐任务未超出复用周期,而当补齐结果的上报该补齐任务已超出复用周期。此时,当异常zg内最后一个异常zone结果上报且该异常zg内全部异常zone均补齐成功时,如果该zg已经超出复用周期,再该zg的复用周期延长预设时间,以提高异常zg补齐成功后能够再次复用的成功率,需要注意的是,延长的预设时间是通过修改zg的创建时间来实现的,例如,通过将zg的创建时间延后一小时(比如从昨天7点修改为昨天8点)实现将该zg的复用周期延长一小时,其中,延长的预设时间支持动态调整。
134.作为一种可选的实施方式,在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,包括:
135.确定所述补齐任务对应的zone超出复用周期,确定所述全局zone补齐任务队列中是否存在与所述补齐任务对应的zg相同的其余补齐任务,其中同一文件的对象分片所在的zone属于相同zg;
136.确定全局zone补齐任务队列中不存在所述其余补齐任务,延长所述补齐任务对应的zone所在的zg的复用周期。
137.四、针对补齐失败或补齐超时的任务延时下发处理机制
138.当补齐任务中zone对应存储节点发生异常或zone对应磁盘出现异常(如磁盘损坏)时,会导致补齐失败或补齐超时,针对以上问题,本技术实施例设计了延时任务下发处理机制,避免补齐失败或补齐超时的补齐任务在短时间内重复下发,导致补齐任务多次补齐失败或超时。
139.当管理节点在设定时间内未收到所述存储节点上报的补齐结果,判定该补齐任务发生补齐超时,或者在设定时间内收到补齐结果且确定补齐失败时,将该补齐任务从已下发补齐任务队列中移除,并更新补齐任务中的任务触发时间为当前时间系统后,再将该补齐任务添加到待下发补齐任务队列,以便与首次下发的补齐任务进行区分;并设置预设延迟时间,令该补齐任务在待下发补齐任务队列中延时预设延迟时间后再继续下发,预设延迟时间的配置支持动态调整;其中,为确保首次补齐任务优先下发,待下发补齐任务队列中的补齐任务是按照任务触发时间、zg创建时间等排序key进行排序,管理节点会优先下发首次下发的补齐任务,等首次下发的补齐任务全部下发且延时任务(即补齐超时或补齐失败后再次添加到待下发补齐任务队列中的补齐任务)超过预设延迟时间后,再次下发延时任务。
140.并且,为了避免补齐任务多次失败或超时后,依旧按照原设延迟时间进行延时下发,本技术实施例中还会记录补齐任务对应的下发次数,并根据该下发次数对补齐任务的延迟时间进行调整,或者,删除下发次数超过指定阈值的补齐任务。
141.作为一种可选的实施方式,该方法还包括:
142.在设定时间内未收到所述存储节点上报的补齐结果,或在设定时间内收到补齐结果且确定数据补齐失败时,将所述补齐任务从所述已下发补齐任务队列移除,添加待下发补齐任务队列,延迟预设时间后再次下发给对应的存储节点。
143.上述存储节点异常离线的延迟清理补齐任务队列,避免了因为网络抖动存储节点频繁上下线,导致补齐任务频繁的从补齐任务队列插入和删除;存储节点删除的异常处理机制,保证了补齐任务的及时删除;管理复用周期相关的补齐任务异常处理机制,保证了补齐任务的高效、准确进行,提高异常zg能够再次复用的成功率,同时也避免下发无效的补齐任务导致系统资源的浪费;补齐失败或补齐超时任务的延时下发处理机制,避免了补齐失败或补齐超时的任务在短时间内重复下发,也可以确保首次补齐任务优先下发,提高补齐任务的执行效率。
144.如图4所示,本技术实施例还提供一种异常zone自动补齐方法,应用于存储节点,该方法包括以下步骤:
145.步骤401,接收到管理节点下发的补齐任务,确定所述补齐任务中zone的写指针位
置与所述zone实际的写指针位置一致,且所述zone的补齐目标长度大于zone的实际长度时,对所述补齐任务对应的zone进行补齐;
146.实施中,当存储节点接收到管理节点下发的补齐任务,将该补齐任务添加到待补齐队列中,并轮询从待补齐队列中取出补齐任务进行补齐,并将补齐后的补齐任务添加到补齐任务完成队列,其中,在进行补齐之前,还需要判断该补齐任务是否满足以下条件:
147.1、管理节点下发的补齐任务中zone的写指针位置与存储节点记录的zone的写指针位置一致;
148.2、管理节点下发的补齐任务中zone的补齐目标长度大于存储节点记录的zone的实际长度。
149.如果该补齐任务满足以上补齐条件,则对该补齐任务对应的zone进行补齐,如果不满足以上补齐任务,则不再对该补齐任务对应的zone进行补齐,并向管理节点上报补齐失败的结果。
150.步骤402,确定所述补齐任务已结束,将补齐结果上报给管理节点;
151.上述补齐结果中包括补齐结果状态值(成功/失败)、对应的zoneid、补齐后的zone的长度和zone的当前补齐状态(0:正常,1:补齐过),其中,zone的当前补齐状态用于记录zg中有几个zone有过补齐记录,以便通过zg内补齐zone个数判断该zg可否再进行zg恢复,其中,存储节点还会将上述补齐过的zone的补齐状态进行持久化,当存储节点重启后,补齐过的zone依旧可以被准确记录,用于兼容后续zg恢复功能。
152.如图5所示,本发明实施例提供了异常zg中异常zone从扫描到补齐以及补齐成功后再复用的大致流程,包括:
153.首先基于周期执行的异常zg中异常zone的扫描,发现缓存zg中的异常zg中的异常zone并生成zone补齐任务,将补齐任务添加到全局zone补齐任务队列、待下发补齐任务队列。此时任务触发时间为0,与延时任务进行区分;
154.每次存储节点和管理节点之间进行心跳协议交互时,进行流量控制下发指定数量的补齐任务到对应的存储节点进行实际的zone补齐,此时将该补齐任务从待下发补齐任务队列中移除,更新补齐任务中的任务触发时间为当前系统时间,并将该任务添加到已下发补齐任务队列(基于补齐任务触发时间实现补齐任务的超时判断),同时接收存储节点上报的zone的状态将zg内的异常zone的状态设置为未上报状态,待管理节点上报补齐结果后再重置内的异常zone的状态;
155.存储节点收到补齐任务后按照顺序进行补齐操作,处理完成后存储节点上报补齐结果给管理节点。若数据补齐成功,则将全局zone补齐任务队列和已下发补齐任务队列中的任务删除,待异常zg内部最后一个异常zone的数据补齐成功后将对应的zg插入zg复用队列。
156.当客户端sdk申请空间时,根据空间申请中携带的由bucket、ec类型和文件类型组成的zg复用key在复用队列中检索与所述zg复用key对应的zg,如果未检索到与所述zg复用key对应的zg,则组装一个新的zg并将zg的标识反馈给sdk,如果检索到与所述zg复用key对应的zg,则向sdk反馈检索到的zg的标识以及其对应的存储节点。
157.实施例2
158.以上对本技术中一种异常zone自动补齐方法进行说明,以下对执行上述异常zone
自动补齐方法的装置进行说明。
159.请参阅图6,本技术实施例提供一种异常zone自动补齐装置,应用于管理节点,该装置包括:
160.扫描模块601,用于到达扫描周期时,对zg缓存中可用zg进行扫描,所述可用zg为未超出复用周期,且包含的多个zone均为处于已上报状态且剩余空间大于预设值的zone的zg,所述已上报状态用于标识对应的zone已完成对象分片写入且所述zone对应的存储节点已完成zone状态上报;
161.补齐任务生成模块602,用于根据扫描到的可用zg中多个zone内的写指针位置,筛选出包含异常zone的异常zg,并生成对所述异常zone进行数据补齐的补齐任务;
162.补齐任务下发模块603,用于确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将所述补齐任务下发给对应的存储节点;
163.补齐任务移除模块604,用于在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,将所述补齐任务从全局zone补齐任务队列移除,并在确定满足复用条件时将所述补齐任务对应的zg加入复用队列。
164.可选的,所述补齐任务下发模块用于确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将补齐任务下发给对应的存储节点,包括:
165.根据确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列和待下发补齐任务队列;
166.将所述补齐任务下发给对应的存储节点,并将所述补齐任务从所述待下发补齐任务队列移除,添加到已下发补齐任务队列;
167.其中,将所述补齐任务从全局zone补齐任务队列移除时,将所述补齐任务从已下发补齐任务队列移除。
168.可选的,补齐任务移除模块还用于:
169.在设定时间内未收到所述存储节点上报的补齐结果,或在设定时间内收到补齐结果且确定数据补齐失败时,将所述补齐任务从所述已下发补齐任务队列移除,添加待下发补齐任务队列,延迟预设时间后再次下发给对应的存储节点。
170.可选的,补齐任务下发模块用于将所述补齐任务下发给对应的存储节点,包括:
171.确定所述补齐任务对应的zone所在的zg未超出复用周期,将所述补齐任务下发给对应的存储节点;
172.确定所述补齐任务对应的zone所在的zg超出复用周期,将所述补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列中移除。
173.可选的,补齐任务移除模块在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,还用于:
174.确定所述补齐任务对应的zone所在的zg超出复用周期,确定所述全局zone补齐任务队列中是否存在与所述补齐任务对应的zg相同的其余补齐任务,其中同一文件的对象分片所在的zone属于相同zg;
175.确定全局zone补齐任务队列中不存在所述其余补齐任务,延长所述补齐任务对应
的zone所在的zg的复用周期。
176.可选的,该设备还包括:
177.存储节点离线处理模块,用于接收存储节点离线的信息,将与所述存储节点中zone对应的补齐任务添加到延迟清理补齐任务队列;在预设时间内接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列移除;在预设时间内未接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列、全局zone补齐任务队列移除。
178.可选的,该装置还包括:
179.存储节点删除处理模块,用于接收存储节点删除的信息,将与所述存储节点中zone对应的补齐任务从全局zone补齐任务队列中移除。
180.可选的,该装置还包括:
181.待下发补齐任务队列清理模块,用于对所述待下发补齐任务队列中的补齐任务进行周期性扫描,筛选出超出复用周期的补齐任务,并将所述超出复用周期的补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列移除。
182.可选的,该装置还包括:
183.zone的状态更新模块,用于将所述补齐任务下发给对应的存储节点时,将所述补齐任务对应的zone的状态更改为未上报状态;收到存储上报补齐结果时,将所述补齐任务对应的zone的状态更改为已上报状态。
184.可选的,补齐任务下发模块还用于:
185.确定所述已下发补齐任务队列中任一存储节点对应的补齐任务数量到达设定阈值时,待所述任一存储节点对应的补齐任务数量小于设定阈值时向所述任一存储节点下发补齐任务。
186.请参阅图7,本技术实施例提供一种异常zone自动补齐装置,应用于存储节点,该装置包括:
187.补齐任务接收模块701,用于接收到管理节点下发的补齐任务,确定所述补齐任务中zone的写指针位置与所述zone实际的写指针位置一致,且所述zone的补齐目标长度大于zone的实际长度时,对所述补齐任务对应的zone进行补齐;
188.补齐结果上报模块702,用于确定所述补齐任务已结束,将补齐结果上报给管理节点。
189.实施例3
190.在介绍了本技术示例性实施方式的异常zone自动补齐方法和装置之后,接下来,介绍根据本技术的另一示例性实施方式的设备。
191.所属技术领域的技术人员能够理解,本技术的各个方面可以实现为系统、方法或程序产品。因此,本技术的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
192.在一些可能的实施方式中,根据本技术的设备可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本技术各种示例性实施方式的异常zone自动补齐方法中
的步骤。例如,处理器可以执行如异常zone自动补齐方法中的步骤:
193.到达扫描周期时,对zg缓存中可用zg进行扫描,所述可用zg为未超出复用周期,且包含的多个zone均为处于已上报状态且剩余空间大于预设值的zone的zg,所述已上报状态用于标识对应的zone已完成对象分片写入且所述zone对应的存储节点已完成zone状态上报;
194.根据扫描到的可用zg中多个zone内的写指针位置,筛选出包含异常zone所在的异常zg,并生成对所述异常zone进行数据补齐的补齐任务;
195.确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将所述补齐任务下发给对应的存储节点;
196.在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,将所述补齐任务从全局zone补齐任务队列移除,并在确定满足复用条件时将所述补齐任务对应的zg加入复用队列。
197.下面参照图8来描述根据本技术的这种实施方式的设备800。图8显示的设备800仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
198.如图8所示,设备800以通用设备的形式表现。设备800的组件可以包括但不限于:上述至少一个处理器801、上述至少一个存储器802、连接不同系统组件(包括存储器802和处理器801)的总线803。
199.总线803表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
200.存储器802可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)8021和/或高速缓存存储器8022,还可以进一步包括只读存储器(rom)8023。
201.存储器802还可以包括具有一组(至少一个)程序模块8024的程序/实用工具8025,这样的程序模块8024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
202.设备800也可以与一个或多个外部设备804(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与设备800交互的设备通信,和/或与使得该设备800能与一个或多个其它设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口805进行。并且,设备800还可以通过网络适配器806与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器806通过总线803与用于设备800的其它模块通信。应当理解,尽管图中未示出,可以结合设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
203.可选的,所述处理器用于确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将补齐任务下发给对应的存储节点,包括:
204.根据确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列和待下发补齐任务队列;
205.将所述补齐任务下发给对应的存储节点,并将所述补齐任务从所述待下发补齐任务队列移除,添加到已下发补齐任务队列;
206.其中,将所述补齐任务从全局zone补齐任务队列移除时,将所述补齐任务从已下发补齐任务队列移除。
207.可选的,所述处理器还用于:
208.在设定时间内未收到所述存储节点上报的补齐结果,或在设定时间内收到补齐结果且确定数据补齐失败时,将所述补齐任务从所述已下发补齐任务队列移除,添加待下发补齐任务队列,延迟预设时间后再次下发给对应的存储节点。
209.可选的,所述处理器用于将所述补齐任务下发给对应的存储节点,包括:
210.确定所述补齐任务对应的zone所在的zg未超出复用周期,将所述补齐任务下发给对应的存储节点;
211.确定所述补齐任务对应的zone所在的zg超出复用周期,将所述补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列中移除。
212.可选的,所述处理器用于在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,包括:
213.确定所述补齐任务对应的zone所在的zg超出复用周期,确定所述全局zone补齐任务队列中是否存在与所述补齐任务对应的zg相同的其余补齐任务,其中同一文件的对象分片所在的zone属于相同zg;
214.确定全局zone补齐任务队列中不存在所述其余补齐任务,延长所述补齐任务对应的zone所在的zg的复用周期。
215.可选的,所述处理器还用于:
216.接收存储节点离线的信息,将与所述存储节点中zone对应的补齐任务添加到延迟清理补齐任务队列;
217.在预设时间内接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列移除;
218.在预设时间内未接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列、全局zone补齐任务队列移除。
219.可选的,所述处理器还用于:
220.接收存储节点删除的信息,将与所述存储节点中zone对应的补齐任务从全局zone补齐任务队列中移除。
221.可选的,所述处理器还用于:
222.对所述待下发补齐任务队列中的补齐任务进行周期性扫描,筛选出超出复用周期的补齐任务,并将所述超出复用周期的补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列移除。
223.可选的,所述处理器还用于:
224.将所述补齐任务下发给对应的存储节点时,将所述补齐任务对应的zone的状态更改为未上报状态;
225.收到存储上报的补齐结果时,将所述补齐任务对应的zone的状态更改为已上报状态。
226.可选的,所述处理器还用于:
227.确定所述已下发补齐任务队列中任一存储节点对应的补齐任务数量到达设定阈
值时,待所述任一存储节点对应的补齐任务数量小于设定阈值时向所述任一存储节点下发补齐任务。
228.本技术还提供一种异常zone自动补齐设备,应用于存储节点,在一些可能的实施方式中,根据本技术的设备可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本技术各种示例性实施方式的异常zone自动补齐方法中的步骤。例如,处理器可以执行如异常zone自动补齐方法中的步骤:
229.接收到管理节点下发的补齐任务,确定所述补齐任务中zone的写指针位置与所述zone实际的写指针位置一致,且所述zone的补齐目标长度大于zone的实际长度时,对所述补齐任务对应的zone进行补齐;
230.确定所述补齐任务已结束,将补齐结果上报给管理节点。
231.下面参照图9来描述根据本技术的这种实施方式的设备900。图9显示的设备900仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
232.如图9所示,设备900以通用设备的形式表现。设备900的组件可以包括但不限于:上述至少一个处理器901、上述至少一个存储器902、连接不同系统组件(包括存储器902和处理器901)的总线903。
233.总线903表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
234.存储器902可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)9021和/或高速缓存存储器9022,还可以进一步包括只读存储器(rom)9023。
235.存储器902还可以包括具有一组(至少一个)程序模块9024的程序/实用工具9025,这样的程序模块9024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
236.设备900也可以与一个或多个外部设备904(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与设备900交互的设备通信,和/或与使得该设备900能与一个或多个其它设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口905进行。并且,设备900还可以通过网络适配器906与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器906通过总线903与用于设备900的其它模块通信。应当理解,尽管图中未示出,可以结合设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
237.在一些可能的实施方式中,本技术提供的一种异常zone自动补齐方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本技术各种示例性实施方式的一种异常zone自动补齐方法中的步骤。
238.程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读
存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
239.本技术的实施方式的用于监控的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在设备上运行。然而,本技术的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
240.可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
241.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
242.可以以一种或多种程序设计语言的任意组合来编写用于执行本技术操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行、或者完全在远程设备或服务端上执行。在涉及远程设备的情形中,远程设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户设备,或者,可以连接到外部设备(例如利用因特网服务提供商来通过因特网连接)。
243.应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
244.此外,尽管在附图中以特定顺序描述了本技术方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
245.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
246.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和方框图来描述的。应理解可由计算机程序指令实现流程图和方框图中的每一流程和/或方框、以及流程图和方框图中的流程和方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的装置。
247.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能。
248.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的步骤。
249.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
250.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。

技术特征:
1.一种异常zone自动补齐方法,应用于管理节点,其特征在于,该方法包括:到达扫描周期时,对zg缓存中可用zg进行扫描,所述可用zg为未超出复用周期,且包含的多个zone均为处于已上报状态且剩余空间大于预设值的zone的zg,所述已上报状态用于标识对应的zone已完成对象分片写入且所述zone对应的存储节点已完成zone状态上报;根据扫描到的可用zg中多个zone内的写指针位置,筛选出包含异常zone的异常zg,并生成对所述异常zone进行数据补齐的补齐任务;确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将所述补齐任务下发给对应的存储节点;在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,将所述补齐任务从全局zone补齐任务队列移除,并在确定满足复用条件时将所述补齐任务对应的zg加入复用队列。2.根据权利要求1所述的方法,其特征在于,确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将补齐任务下发给对应的存储节点,包括:根据确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列和待下发补齐任务队列;将所述补齐任务下发给对应的存储节点,并将所述补齐任务从所述待下发补齐任务队列移除,添加到已下发补齐任务队列;其中,将所述补齐任务从全局zone补齐任务队列移除时,将所述补齐任务从已下发补齐任务队列移除。3.根据权利要求2所述的方法,其特征在于,还包括:在设定时间内未收到所述存储节点上报的补齐结果,或在设定时间内收到补齐结果且确定数据补齐失败时,将所述补齐任务从所述已下发补齐任务队列移除,添加待下发补齐任务队列,延迟预设时间后再次下发给对应的存储节点。4.根据权利要求2中所述的方法,其特征在于,将所述补齐任务下发给对应的存储节点,包括:确定所述补齐任务对应的zone所在的zg未超出复用周期,将所述补齐任务下发给对应的存储节点;确定所述补齐任务对应的zone所在的zg超出复用周期,将所述补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列中移除。5.根据权利要求1中所述的方法,其特征在于,在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,包括:确定所述补齐任务对应的zone所在的zg超出复用周期,确定所述全局zone补齐任务队列中是否存在与所述补齐任务对应的zg相同的其余补齐任务,其中同一文件的对象分片所在的zone属于相同zg;确定全局zone补齐任务队列中不存在所述其余补齐任务,延长所述补齐任务对应的zone所在的zg的复用周期。6.根据权利要求1所述的方法,其特征在于,还包括:接收存储节点离线的信息,将与所述存储节点中zone对应的补齐任务添加到延迟清理
补齐任务队列;在预设时间内接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列移除;在预设时间内未接收到所述存储节点恢复的信息,将所述补齐任务从延迟清理补齐任务队列、全局zone补齐任务队列移除。7.根据权利要求1中所述的方法,其特征在于,还包括:接收存储节点删除的信息,将与所述存储节点中zone对应的补齐任务从全局zone补齐任务队列中移除。8.根据权利要求2所述的方法,其特征在于,还包括:对所述待下发补齐任务队列中的补齐任务进行周期性扫描,筛选出超出复用周期的补齐任务,并将所述超出复用周期的补齐任务从所述全局zone补齐任务队列和待下发补齐任务队列移除。9.根据权利要求1所述的方法,其特征在于,还包括:将所述补齐任务下发给对应的存储节点时,将所述补齐任务对应的zone的状态更改为未上报状态;收到存储上报的补齐结果时,将所述补齐任务对应的zone的状态更改为已上报状态。10.根据权利要求2所述的方法,其特征在于,还包括:确定所述已下发补齐任务队列中任一存储节点对应的补齐任务数量到达设定阈值时,待所述任一存储节点对应的补齐任务数量小于设定阈值时向所述任一存储节点下发补齐任务。11.一种异常zone自动补齐方法,应用于存储节点,其特征在于,该方法包括:接收到管理节点下发的补齐任务,确定所述补齐任务中zone的写指针位置与所述zone实际的写指针位置一致,且所述zone的补齐目标长度大于zone的实际长度时,对所述补齐任务对应的zone进行补齐;确定所述补齐任务已结束,将补齐结果上报给管理节点。12.一种异常zone自动补齐装置,应用于管理节点,其特征在于,该方法包括:扫描模块,用于到达扫描周期时,对zg缓存中可用zg进行扫描,所述可用zg为未超出复用周期,且包含的多个zone均为处于已上报状态且剩余空间大于预设值的zone的zg,所述已上报状态用于标识对应的zone已完成对象分片写入且所述zone对应的存储节点已完成zone状态上报;补齐任务生成模块,用于根据扫描到的可用zg中多个zone内的写指针位置,筛选出包含异常zone的异常zg,并生成对所述异常zone进行数据补齐的补齐任务;补齐任务下发模块,用于确定全局zone补齐任务队列中不存在所述补齐任务时,将所述补齐任务添加到全局zone补齐任务队列,并将所述补齐任务下发给对应的存储节点;补齐任务移除模块,用于在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,将所述补齐任务从全局zone补齐任务队列移除,并在确定满足复用条件时将所述补齐任务对应的zg加入复用队列。13.一种异常zone自动补齐装置,应用于存储节点,其特征在于,该方法包括:补齐任务接收模块,用于接收到管理节点下发的补齐任务,确定所述补齐任务中zone
的写指针位置与所述zone实际的写指针位置一致,且所述zone的补齐目标长度大于zone的实际长度时,对所述补齐任务对应的zone进行补齐;补齐结果上报模块,用于确定所述补齐任务已结束,将补齐结果上报给管理节点。14.一种异常zone自动补齐设备,应用于管理节点,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10任一项所述的方法。15.一种异常zone自动补齐设备,应用于存储节点,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求11任一项所述的方法。16.一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至10任一项所述的步骤或11任一项所述的步骤。

技术总结
本申请提供一种异常zone自动补齐方法、装置及设备,该方法包括到达扫描周期时,对ZG缓存中可用ZG进行扫描;根据扫描到的可用ZG中多个zone内的写指针位置,筛选出包含异常zone的异常ZG,并生成补齐任务;确定全局zone补齐任务队列中不存在补齐任务时,将补齐任务添加到全局zone补齐任务队列,并将补齐任务下发给对应的存储节点;在设定时间内收到存储节点上报的补齐结果,确定数据补齐成功时,将补齐任务从全局zone补齐任务队列移除,并在确定满足复用条件时将补齐任务对应的ZG加入复用队列,实现异常zone的补齐,解决了因ZG内zone的写指针位置不同导致ZG无法进行复用的问题。位置不同导致ZG无法进行复用的问题。位置不同导致ZG无法进行复用的问题。


技术研发人员:江文龙 陈松 徐涛 王志豪 罗心 周明伟
受保护的技术使用者:浙江大华技术股份有限公司
技术研发日:2021.11.22
技术公布日:2022/3/7

最新回复(0)