纠删码数据中心机架协同更新方法

文档序号:26004707发布日期:2021-07-23 21:22阅读:97来源:国知局
纠删码数据中心机架协同更新方法

本发明涉及集群存储系统,尤其是涉及一种针对集群存储系统数据更新的纠删码数据中心机架协同更新方法。



背景技术:

数据中心通常由成百上千个存储服务器(也称为节点)构成,以支持大规模的服务,包括数据存储、信息检索等,但是这样大规模的数据中心会使得原本是意外发生的故障成为常态。为应对普遍存在的意外故障,现有系统会通过“备份”和“纠删码”来维持额外的数据冗余,利用预先存储的数据冗余来恢复数据。备份是将数据复制成n份并分别存放于n个不同的节点,出现故障之后,选择未故障的节点中的备份数据进行恢复即可。纠删码则是将文件分为固定大小的数据(称为数据块),将一系列数据块进行编码得到大小相同的冗余块(称为校验块)。纠删码由两个参数k和m进行设置,在编码时,将k个数据块编码成m个校验块,这(k+m)个块组成一个“条带”,当条带中有数据块丢失时,通过对剩余数据块和校验块进行解码则可得到所需数据块。与备份相比,纠删码在保证相同的容错能力的同时,有着更低的存储开销,因此在实际存储系统中有着较好的应用前景。

纠删码虽然存储效率更高,但是会带来大量的更新流量(即更新操作中通过网络传输的数据),因为为保证编码的一致性,对数据块的任何更新都会触发对相应校验块的更新(重新计算校验块),从而扩大存储和网络i/o开销。另一方面,数据中心通常按照层次结构组织节点,首先将一些节点组织成一个机架,这些节点由公共交换机连接,然后交换机通过网络核心互联。这样的层次结构导致带宽多样性的现象,即跨机架的带宽往往比机架内部带宽要稀缺,并会被各种工作负载(例如复制写入)严重消耗。因此,当在数据中心部署纠删码时,抑制机架间的更新流量(即为更新操作而跨机架传输的数据)显然是一个需要解决的关键问题。

考虑基于增量更新校验块,假设{d1,d2,...,dk}和{p1,p2,...,pm}分别代表条带中的k个数据块和m个校验块,那么每个校验块pj可以通过伽罗瓦域算法由k个数据块的线性组合来计算:其中γi,j(1≤i≤k,1≤j≤m)为通过di计算pj时使用的编码系数。若dh被更新为d'h,为保证校验块和数据块的编码一致性,需要重新计算校验块,重新计算后的校验块p'j可以通过公式p'j=pj+γh,j(d'h-dh)得到,这个公式表明新的校验块p'j可以通过旧的校验块pj和数据增量δd=(d'h-dh)(新旧数据块之间的差异)得到,或者和校验增量δp=γh,j(d'h-dh)得到。因此当所拥有的数据增量少于目标机架内校验块的数量时,传送数据增量更新校验块会产生更少的跨机架流量,这样的更新方法称为基于数据增量的更新;当所拥有的数据增量多于目标机架内校验块的数量时,传送校验增量会产生更少的跨机架流量,这样的方法称为基于校验增量的更新。基于数据增量的更新和基于校验增量的更新合称为选择校验更新,其目的是传送适当的增量来减少校验块重计算时产生的跨机架流量。

现有的关于纠删码更新的研究主要集中在减少磁盘查找量、减少校验块更新量以及减少更新流量上。虽然cau可以减少跨机架更新流量,但它降低系统的可靠性(通过延迟校验块的更新),并且没有达到理论上最小的跨机架更新流量。



技术实现要素:

本发明的目的在于针对纠删码数据中心的更新开销大,且会占用稀缺的跨机架带宽等问题,提供在保证系统可靠性的同时,最小化跨机架更新流量,从而减少对跨机架带宽的占用,更快地完成更新过程的一种纠删码数据中心机架协同更新方法。本发明是在特定的机架中(称为收集机架)收集数据增量(旧数据块和新数据块之间的差异),之后选择适当的更新方法更新校验块。

本发明包括以下步骤:

1)数据编码和分发存储阶段:选择满足系统容错能力和编码效率的纠删码,将原始数据划分为固定大小的数据块,对数据块进行编码生成对应校验块,将生成的数据块和校验块按照约束条件分发到不同的节点中进行存储;

2)增量收集阶段:根据条带的更新情况以及校验块的布局,选择适合的机架作为收集机架,并将数据增量发送给收集机架;

3)选择校验更新阶段:系统根据收集机架内数据增量的数量和校验机架内校验块的数量选择基于数据增量的更新或基于校验增量的更新。

在步骤1)中,所述数据编码和分发存储阶段的具体步骤可为:

1.1根据系统的可靠性需求和存储开销需求,选择满足系统容错能力和编码效率的纠删码;

1.2根据纠删码方案的参数设定将原始数据划分为固定大小的数据块;

1.3根据纠删码的编码规则对数据块进行编码生成对应校验块;

1.4将生成的数据块和校验块按照约束条件分发到不同的节点中进行存储,约束条件为满足集群级别的容错,即每个集群至多存储单条带中(n-k)个块,且同一个条带的数据块和校验块不能混合放置于同一个机架中,那么,对于这个条带来说,存有数据块的机架称为数据机架,存有校验块的机架称为校验机架。

在步骤2)中,所述增量收集阶段的具体步骤包括:

2.1当有数据被更新时,系统根据更新信息判断被更新的是哪些条带,并确定其中被更新的数据块;

2.2对于某个有数据更新的条带,找到数据机架其拥有的被更新的数据块数量最多,假设为

2.3找到校验机架对于这个条带来说,其拥有的校验块的数据最多,假设为

2.4若那么选择数据机架作为收集机架;若那么选择校验机架作为收集机架,将最后确定的收集机架用表示;

2.5对于所有数据机架,若其内部节点所存储的数据块有更新,那么将数据增量δd发送给收集机架内的某个节点,默认为收集机架内第一个节点。

在步骤3)中,所述选择校验更新阶段的具体步骤包括:

3.1收集机架接收该条带的所有的数据增量,假设经过增量收集阶段后,收集机架内的数据增量数量为

3.2对每个校验机架rj(1≤j≤m),设其存储的校验块数量为tj,若那么收集机架发送tj个校验增量来更新rj中的tj个校验块(基于校验增量的更新);若那么收集机架发送个数据增量给rj来更新其中的校验块(基于数据增量的更新);

3.3校验机架收到增量之后,使用不同的增量更新方法(基于数据增量的更新或基于校验增量的更新)来更新机架内的校验块。

与现有技术相比,本发明具有以下突出的优点:

1、在数据块更新后,允许机架立刻发起校验块的更新,以保证系统的可靠性;在有数据更新时,本发明单条带地依次进行校验块的更新,其重点是将校验块更新分为两个阶段:增量收集阶段和选择校验更新阶段。在增量收集阶段根据更新情况和校验块的布局选择适合的收集机架,在选择校验更新阶段选择适合的增量更新方法来进一步减少跨机架更新流量。

2、将条带中所有的数据增量收集在单个收集机架中,由这个收集机架发起选择校验更新,借此来最小化跨机架更新流量。以往的工作如cau并不会收集不同机架的数据增量,而是在被更新数据块当前机架中直接发起选择校验更新,会产生较多的跨机架更新流量,占用更多的跨机架带宽。

附图说明

图1为纠删码数据中心中rs(9,6)纠删码存储分布示例图。

图2为基于数据增量的更新和基于校验增量的更新示例图

图3为本发明提出的方法的示例图,分为增量收集阶段和选择校验更新阶段

图4为本发明的原型系统结构示意图,该系统用于在阿里云服务器进行真实云环境的测试。

图5为大规模模拟实验中对不同更新大小的实验结果图。

图6为大规模模拟实验中对不同纠删码参数和不同机架数量的实验结果图。

图7为阿里云服务器真实云环境下测试结果图。

具体实施方式

以下将结合附图对本发明作进一步的说明。

本发明的核心是在纠删码数据中心的集群存储系统中实现保证系统可靠性的同时最小化跨机架更新流量,从而减少对跨机架带宽的占用并加速更新过程。在有数据更新时,本发明单条带地依次进行校验块的更新,其重点是将校验块更新分为两个阶段:增量收集阶段和选择校验更新阶段。在增量收集阶段根据更新情况和校验块的布局选择适合的收集机架,在选择校验更新阶段选择适合的增量更新方法来进一步减少跨机架更新流量。本发明在保证系统可靠性的同时,最小化跨机架更新流量,从而减少对跨机架带宽的占用,更快地完成更新过程。

本发明包括以下步骤:

1)数据编码和分发存储阶段:选择满足系统容错能力和编码效率的纠删码,将原始数据划分为固定大小的数据块,对数据块进行编码生成对应校验块,将生成的数据块和校验块按照约束条件分发到不同的节点中进行存储;

2)增量收集阶段:根据条带的更新情况以及校验块的布局,选择适合的机架作为收集机架,并将数据增量发送给收集机架;

3)选择校验更新阶段:系统根据收集机架内数据增量的数量和校验机架内校验块的数量选择基于数据增量的更新或基于校验增量的更新。

在步骤1)中,所述数据编码和分发存储阶段的具体步骤可为:

1.1根据系统的可靠性需求和存储开销需求,选择满足系统容错能力和编码效率的纠删码;

1.2根据纠删码方案的参数设定将原始数据划分为固定大小的数据块;

1.3根据纠删码的编码规则对数据块进行编码生成对应校验块;

1.4将生成的数据块和校验块按照约束条件分发到不同的节点中进行存储,约束条件为满足集群级别的容错,即每个集群至多存储单条带中(n-k)个块,且同一个条带的数据块和校验块不能混合放置于同一个机架中,那么,对于这个条带来说,存有数据块的机架称为数据机架,存有校验块的机架称为校验机架。

在步骤2)中,所述增量收集阶段的具体步骤包括:

2.1当有数据被更新时,系统根据更新信息判断被更新的是哪些条带,并确定其中被更新的数据块;

2.2对于某个有数据更新的条带,找到数据机架其拥有的被更新的数据块数量最多,假设为

2.3找到校验机架对于这个条带来说,其拥有的校验块的数据最多,假设为

2.4若那么选择数据机架作为收集机架;若那么选择校验机架作为收集机架,将最后确定的收集机架用表示;

2.5对于所有数据机架,若其内部节点所存储的数据块有更新,那么将数据增量δd发送给收集机架内的某个节点,默认为收集机架内第一个节点。

在步骤3)中,所述选择校验更新阶段的具体步骤包括:

3.1收集机架接收该条带的所有的数据增量,假设经过增量收集阶段后,收集机架内的数据增量数量为

3.2对每个校验机架rj(1≤j≤m),设其存储的校验块数量为tj,若那么收集机架发送tj个校验增量来更新rj中的tj个校验块(基于校验增量的更新);若那么收集机架发送个数据增量给rj来更新其中的校验块(基于数据增量的更新);

3.3校验机架收到增量之后,使用不同的增量更新方法(基于数据增量的更新或基于校验增量的更新)来更新机架内的校验块。

本发明系统主要由以下几个模块组成:

1、纠删码方案选择模块:该模块根据系统的可靠性需求和存储开销需求,选择满足系统容错能力和编码效率的纠删码方案。

2、编码模块:该模块根据纠删码方案的参数设定对存储的数据进行编码。将原始数据划分为固定大小的数据块,按照选取的纠删码的编码规则,输入一定数量的数据块为生成校验块。数据块和对应的校验块组成一个条带,存储系统在逻辑上可以看作多个条带的组合。条带按照编码设定存放,同时还要考虑保证集群级别的容错能力。图1给出纠删码数据中心中rs(9,6)纠删码存储分布的示意图,其中每4个节点组织为一个机架,机架之间通过网络核心互联,数据块和校验块共9个块存储集群中,为保证集群级别的容错能力,即保证一整个机架完全失效时,通过其他机架能够恢复出其中的数据,每个机架至多存储3(9-6=3)个块,其中每个机架内部将块存储在不同节点上(即每个节点至多存储每个条带的一个块)。同时本发明适用的场景为同一个条带的数据块和校验块不能混合放置与同一个机架中,否则无法保证本发明的方法能够达到最小的跨机架更新流量。

3、更新决策模块:当出现更新时,该模块将被启动。首先确定哪些条带以及条带中哪些数据块被更新,然后系统依次进行单条带的校验块更新。进行校验块更新时,首先根据数据块的更新情况和校验块的分布,确定收集机架,然后在收集机架中收集所有数据增量(增量收集阶段),收集完成后在收集机架中发起选择校验更新(选择校验更新阶段)。如图2展示选择校验更新的两种更新方法。图2中的(a)图中,机架rx拥有2个数据增量块,机架ry拥有3个待更新的校验块,因数据增量块个数小于校验块个数,所以发起基于数据增量的更新,rx传送2个数据增量块给ry中的节点,由此产生的跨机架流量为2个块;图2中的(b)图中,机架rx拥有3个数据增量块,机架ry拥有2个待更新的校验块,因数据增量块个数大于校验块个数,所以发起基于校验增量的更新,rx传送2个校验增量块给ry中的节点,由此产生的跨机架流量为2个块。图3展示整个更新过程,其中r1、r2和r3为数据机架,它们各自有两个数据块被更新,于是分别拥有2个数据增量块,r4和r5为校验机架,它们各自存有被更新条带的2个校验块,系统根据更新情况和校验块的分布,根据选择收集机架的规则,可以选择r1作为收集机架,也可以选择r4或r5为收集机架,因为它们拥有的块的数量(此时不区分数据块和校验块)相同,图3中选择r1作为收集机架,在增量收集阶段,r1接收r2和r3中的数据增量,于是r1在选择校验更新阶段拥有6个数据增量。在选择校验更新阶段,r1根据选择校验更新的规则,分别向校验机架r4和r5传送2个校验增量块进行校验块的更新。

本发明实现的系统结构原型如图4所示,系统原型包括一个全局协调器,每个机架配有一个代理,机架内每个节点配有一个节点代理(代理服务器)。全局协调器存储元数据信息,包括每个块所在的存储节点标识和条带标识。当有数据更新时,协调器首先识别出更新的数据块以及其所在的节点和条带,并根据本发明提出的更新方法构造更新方案,其次协调器向数据机架和校验机架中节点代理发出指导更新过程的命令(图4中的步骤①)。收到指示命令后,节点代理读取节点内存储的请求块发送给收集机架的收集节点(步骤②),收集节点的节点代理则成为机架代理,收集节点接收到所有的数据增量后,向每个校验机架发起选择校验更新(步骤③)。

以下给出本发明的性能测试:

本发明的性能通过读取msrcambridgetraces[10]文件来模拟获得更新信息,其中记录数据中心13个核心服务器的i/o信息。每个trace文件都由连续的读/写请求组成,每个请求记录请求类型(读或写)、请求数据的起始位置和请求大小等。性能测试主要包括两个部分。第一部分为大规模的模拟测试,该部分测试展示本发明提出的算法在集群存储系统中的表现,测试指标为更新校验块产生的跨机架更新流量。第二部分在阿里云服务器上进行测试以研究其在真实云环境中的性能,实验指标为更新吞吐量。测试采用对比实验方式,参与比较的另外三种更新方法为直接更新、parix[3]和cau。将直接更新设置为比较基准(baseline),这种更新方法为每有1个数据块被更新便会发送m个校验增量块来更新校验块。parix方法对于第一次更新的数据块,将新旧数据块都发送到所有的m个校验块所在节点(校验节点),并将它们保存在一个仅追加的日志中,对于以前更新过的数据块,parix单独将新数据块传输到所有的m个校验节点,为更新一个校验块,每个校验节点从本地存储读取旧的和最新的数据块,以获得新的校验块。cau只通过选择性校验更新来更新校验块。

a.大规模模拟实验

第一部分测试的块大小设置为4kb,纠删码方案为rs(12,4),将200个节点平均分配给10个机架,存储保证满足集群级别的容错能力。

a.1不同更新大小测试实验:

实验选择14个trace文件进行测试,对于每个trace文件,通过其记录的更新信息计算出更细校验块所需跨机架流量,其中7个trace文件记录的更新信息中更新大小较大,另外7个trace文件记录的更新大小较小,实验结果如图5所示。图5显示本发明的方法拥有最小的跨机架更新流量,且在更新大小较大时性能更好。

a.2不同纠删码参数测试实验:

测试中,对于不同纠删码参数分别进行测试,结果如图6中的图(1)所示。在不同纠删码参数的实验结果种与cau、baseline和parix相比,本发明的方法分别平均减少33.3%、54.1%和60.4%的跨机架更新流量。

a.3不同机架数量测试实验:

测试中,对不同机架数量产生的跨机架更新流量进行测试,如图6中的图(2)所示,在不同机架数量的实验结果中,本发明的方法产生的跨机架流量随着机架的增多而增大,但总是拥有最低的跨机架更新流量。

测试中,对于不同纠删码参数和不同机架数量分别进行测试,结果如图6所示。在不同纠删码参数的实验结果种与cau、baseline和parix相比,本发明的方法分别平均减少33.3%、54.1%和60.4%的跨机架更新流量。在不同机架数量的实验结果中,本发明的方法产生的跨机架流量随着机架的增多而增大,但总是拥有最低的跨机架更新流量。

b.阿里云环境实验

第二部分测试的实验环境使用18台ecs.g6.large类型的虚拟服务器,每个虚拟服务器配置有2个虚拟cpu(2.5ghzintelxeonplatinum)和8gb内存,运行的操作系统均为ubuntu18.04,服务器能达到的网络带宽约为3gb/s(iperf测量获得)。在18个服务器中选择1个作为全局协调器,再选择一个作为客户端,其作用为读取trace文件并向全局协调器发起更新请求,剩余16个服务器组成8个机架,每个机架包含2个服务器,纠删码方案为rs(12,4),默认为块大小为4kb。测试从trace文件中挑出4个trace进行测试,其名称在实验结果图的下方标出。在测试中,从客户端发起更新请求开始,记录完成trace文件中每一条更新请求消耗的时间,最多测试trace文件的前1000次更新请求,最后得到总的更新时间,根据总的更新大小和总的更新时间得到更新的吞吐量作为指标来评价更新性能。

b.1跨机架带宽的影响:

图7中的图(1)所示为跨集群带宽分别设置为50mb/s、100mb/s和200mb/s时的更新吞吐量结果。与cau、baseline和parix相比,本发明提出的方法的更新吞吐量分别提高106.8%、88.2%和262.2%

b.2块大小的影响:

该测试评估不同块大小对更新吞吐量的影响,测试中块大小分别设置为4kb、8kb和16kb,测试结果如图7中的图(2)所示。从图中可以观察到,在块较小时,本发明的方法优势较大,与cau、baseline和parix相比,本发明的方法的更新吞吐量分别提高34.2%、101.1%和292.6%。

本发明针对纠删码数据中心的更新开销大,且会占用稀缺的跨机架带宽的问题的提出一种纠删码数据中心的更新方法。现有的关于纠删码更新的研究主要少有针对减少跨机架流量的工作,虽然cau可以减少跨机架更新流量,但它降低系统的可靠性,并且没有达到理论上最小的跨机架更新流量。本发明在保证系统可靠性的同时,最小化跨机架更新流量,从而减少对跨机架带宽的占用,更快地完成更新过程。

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