组建EC条带的方法和装置转让专利
申请号 : CN201810999133.2
文献号 : CN110865901B
文献日 : 2021-05-04
发明人 : 吴延赞 , 魏明昌
申请人 : 华为技术有限公司
摘要 :
权利要求 :
1.一种组建纠删码EC条带的方法,其特征在于,应用于分布式存储系统,所述分布式存储系统包括至少两个存储节点,所述至少两个存储节点上部署有N个数据处理模块,N≥2,N是整数;所述N个数据处理模块用于管理分区中的数据块;所述方法包括:获取所述N个数据处理模块中的每个数据处理模块所在的存储节点的标识信息;
根据所述每个数据处理模块所在的存储节点的标识信息,获取待组建EC条带集合中的每个待组建EC条带的列组合;其中,所述待组建EC条带集合包括N列数据块,所述N个数据处理模块中的一个数据处理模块用于管理所述N列数据块中的一列数据块,任意两个所述待组建EC条带的列组合不同;所述待组建EC条带的列组合是所述待组建EC条带包括的数据块所在的列构成的集合,管理同一所述待组建EC条带的任意两列数据块的数据处理模块所在的存储节点不同;
根据所述每个待组建EC条带的列组合,组建所述每个待组建EC条带。
2.根据权利要求1所述的组建EC条带的方法,其特征在于,所述分区包含一个或多个EC条带;所述根据所述每个待组建EC条带的列组合,组建所述每个待组建EC条带,包括:在所述一个或多个EC条带中获取K个EC条带;K≥1,所述K是整数;
将所述K个EC条带中的有效数据块进行重建,得到所述每个待组建EC条带;其中,所述K个EC条带中的有效数据块的个数与所述待组建EC条带集合中的数据块的个数相等,且所述重建前后参与所述重建的有效数据块所在的列相同。
3.根据权利要求2所述的组建EC条带的方法,其特征在于,所述在所述一个或多个EC条带中获取K个EC条带,包括:
根据动态规划算法,在所述一个或多个EC条带中获取所述K个EC条带;其中,所述动态规划算法使得所述K个EC条带中的有效数据块重建后得到所述每个待组建EC条带。
4.根据权利要求3所述的组建EC条带的方法,其特征在于,所述根据动态规划算法,在所述一个或多个EC条带中获取所述K个EC条带,包括:获取所述一个或多个EC条带中的各EC条带中有效数据块所在的列构成的列组合;
根据所述各EC条带中有效数据块所在的列构成的列组合、所述每个待组建EC条带的列组合和所述动态规划算法,在所述一个或多个EC条带中获取所述K个EC条带。
5.根据权利要求4所述的组建EC条带的方法,其特征在于,所述动态规划算法使得所述一个或多个EC条带中参与所述重建的EC条带的个数最大。
6.根据权利要求2至5任一项所述的组建EC条带的方法,其特征在于,在所述将所述K个EC条带中的有效数据块进行重建,得到所述每个待组建EC条带之后,所述方法还包括:同时存储所述每个待组建EC条带的条带信息,其中,所述待组建EC条带的条带信息包括所述待组建EC条带包括的数据块的信息和校验块的信息。
7.根据权利要求1所述的组建EC条带的方法,其特征在于,所述根据所述每个待组建EC条带的列组合,组建所述每个待组建EC条带,包括:获取打散到所述每个数据处理模块的数据块;
根据所述每个待组建EC条带的列组合和所述打散到所述每个数据处理模块的数据块,组建所述每个待组建EC条带。
8.一种存储节点,其特征在于,应用于分布式存储系统,所述分布式存储系统中部署有N个数据处理模块,N≥2,N是整数;所述N个数据处理模块用于管理分区中的数据块;所述存储节点包括:
存储器,用于存储计算机程序;
处理器,用于调用所述计算机程序,以实现以下功能:获取所述N个数据处理模块中的每个数据处理模块所在的存储节点的标识信息;
根据所述每个数据处理模块所在的存储节点的标识信息,获取待组建EC条带集合中的每个待组建EC条带的列组合;其中,所述待组建EC条带集合包括N列数据块,所述N个数据处理模块中的一个数据处理模块用于管理所述N列数据块中的一列数据块,任意两个所述待组建EC条带的列组合不同;所述待组建EC条带的列组合是所述待组建EC条带包括的数据块所在的列构成的集合,管理同一所述待组建EC条带的任意两列数据块的数据处理模块所在的存储节点不同;
根据所述每个待组建EC条带的列组合,组建所述每个待组建EC条带。
9.根据权利要求8所述的存储节点,其特征在于,所述分区包含一个或多个EC条带;所述根据所述每个待组建EC条带的列组合,组建所述每个待组建EC条带,包括:在所述一个或多个EC条带中获取K个EC条带;K≥1,所述K是整数;
将所述K个EC条带中的有效数据块进行重建,得到所述每个待组建EC条带;其中,所述K个EC条带中的有效数据块的个数与所述待组建EC条带集合中的数据块的个数相等,且所述重建前后参与所述重建的有效数据块所在的列相同。
10.根据权利要求9所述的存储节点,其特征在于,所述在所述一个或多个EC条带中获取K个EC条带,包括:
根据动态规划算法,在所述一个或多个EC条带中获取所述K个EC条带;其中,所述动态规划算法使得所述K个EC条带中的有效数据块重建后得到所述每个待组建EC条带。
11.根据权利要求10所述的存储节点,其特征在于,所述根据动态规划算法,在所述一个或多个EC条带中获取所述K个EC条带,包括:获取所述一个或多个EC条带中的各EC条带中有效数据块所在的列构成的列组合;
根据所述各EC条带中有效数据块所在的列构成的列组合、所述每个待组建EC条带的列组合和所述动态规划算法,在所述一个或多个EC条带中获取所述K个EC条带。
12.根据权利要求11所述的存储节点,其特征在于,所述动态规划算法使得所述一个或多个EC条带中参与所述重建的EC条带的个数最大。
13.根据权利要求9至12任一项所述的存储节点,其特征在于,所述存储器还用于,同时存储所述每个待组建EC条带的条带信息,其中,所述待组建EC条带的条带信息包括所述待组建EC条带包括的数据块的信息和校验块的信息。
14.根据权利要求9所述的存储节点,其特征在于,所述根据所述每个待组建EC条带的列组合,组建所述每个待组建EC条带,包括:获取打散到所述每个数据处理模块的数据块;
根据所述每个待组建EC条带的列组合和所述打散到所述每个数据处理模块的数据块,组建所述每个待组建EC条带。
15.一种计算机可读存储介质,其特征在于,包括计算机程序,当所述计算机程序在至少一个存储节点上运行时,所述至少一个存储节点执行权利要求1至7中任一项所述的组建纠删码EC条带的方法。
说明书 :
组建EC条带的方法和装置
技术领域
背景技术
EC条带;然后存储该K个数据块和该M个校验块。其中,数据块是分布式存储系统中存储数据
的基本单位;K≥1,M≥1,K和M均是整数。当K个数据块的其中一个或多个数据块丢失时,利
用M个校验块可以重新计算得到丢失的数据块,从而保证数据的可靠性。
因此,如何组建EC条带,从而提高分布式存储系统的整体性能,成为亟待解决的技术问题。
发明内容
≥2,N是整数;该N个数据处理模块用于管理一个分区中的数据块。该方法包括:获取该N个
数据处理模块中的每个数据处理模块所在的存储节点的标识信息;根据每个数据处理模块
所在的存储节点的标识信息,获取待组建EC条带集合中的每个待组建EC条带的列组合;其
中,待组建EC条带集合包括N列数据块,该N个数据处理模块中的一个数据处理模块用于管
理N列数据块中的一列数据块,任意两个待组建EC条带的列组合不同;待组建EC条带的列组
合是待组建EC条带包括的数据块所在的列构成的集合,管理同一待组建EC条带的任意两列
数据块的数据处理模块所在的存储节点不同;根据每个待组建EC条带的列组合,组建每个
待组建EC条带。本技术方案中,基于“管理同一待组建EC条带的任意两列数据块的数据处理
模块所在的存储节点不同”这一原则组建EC条带。这样,当待组建EC条带集合包括M列校验
块时,在保证数据块的可靠性的同时,可以允许M个存储节点故障。与现有技术相比,有助于
减小冗余数据所占的存储空间,从而提高分布式存储系统的整体性能。
户端。当组建具体是重建时,本申请实施例提供的技术方案的执行主体可以是分布存储系
统中的EC管理模块。其中,EC管理模块具体是与上述分区存在映射关系的EC管理模块。
数;将K个EC条带中的有效数据块进行重建,得到每个待组建EC条带;其中,K个EC条带中的
有效数据块的个数与待组建EC条带集合中的数据块的个数相等,且重建前后参与重建的有
效数据块所在的列相同。该可能的设计中,组建EC条带具体是指重建EC条带。
效数据块重建后得到每个待组建EC条带。
各EC条带中有效数据块所在的列构成的列组合、每个待组建EC条件的列组合和动态规划算
法,在一个或多个EC条带中获取K个EC条带。该可能的设计提供了根据动态规划算法获得该
K个EC条带的一种具体实现方式,当然本申请实施例不限于此。
的条带信息包括待组建EC条带包括的数据块的信息和校验块的信息。也就是说,待组建EC
条带集合中的每个待组建EC条带同时生效,这样,可以降低存储开销。
每个数据处理模块的数据块,组建每个待组建EC条带。该可能的设计中,组建EC条带具体是
指新建EC条带。
EC管理模块。可选的,该装置可以是部署有上述第一方面中的客户端或EC管理模块的存储
节点。
在一个处理模块中。
机程序,以实现客户端或EC管理模块的功能。关于客户端或EC管理模块的功能可以参考上
述第一方面。
装置可以是一个芯片,处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实
现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个
通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可
以位于处理器之外,独立存在。
方面的任一种可能的方法。例如,该计算机可以是至少一个存储节点。
中的有益效果,此处不再赘述。
附图说明
具体实施方式
或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。并且,在本申请的描述
中,除非另有说明,“多个”是指两个或多于两个。另外,为了便于清楚描述本申请实施例的
技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相
同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执
行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
换机21连通。其中,交换机21可以例如但不限于是以太网交换机(ethernet switch),IB交
换机(infiniband switch),PCIe交换机(PCIe switch)等。可以理解的,图1所示的分布式
存储系统仅为一个示例,实际实现时,多个存储节点之间也可以直接进行通信,或通过其他
设备进行通信,本申请对此不进行限定。
222之间均可以通过通信线路连接。其中,通信线路可以包括一通路,用于在上述组件之间
传送信息。通信线路也可以称为I/O总线,具体可以例如但不限于是快速外部设备互连总线
(peripheral component interconnect express,PCIe)等。
编程门阵列FPGA(field-programmable gate array,FPGA),或一个或多个用于控制本申请
方案程序执行的集成电路。通信接口220与处理器之间可以通过通信线路连接。应注意,在
物理实现上,此处的处理器、通信线路、与通信接口中的部分或全部可以集成在一起,当然,
也可以独立设置,本申请对此不进行限定。其中,内存可以用于存储执行本申请方案的计算
机程序,并由处理器来控制执行。处理器用于执行存储器中存储的计算机程序,从而实现本
申请下述实施例提供的方法。可选的,本申请实施例中的计算机程序也可以称之为应用程
序代码,或者计算机执行指令等,本申请实施例对此不作具体限定。
存储器(phase change memory,PCM)、磁阻式随机访问存储器(magnetic random access
memory,MRAM)、阻变式存储器(resistive random access memory,RRAM)。存储控制器可以
是ASIC芯片,也可以是FPGA。此处的存储模块222的物理形态可以是固态硬盘(solid state
drives,SSD),也可以是磁盘(hard disk drive,HDD)等,本申请对此不进行限定。
另外,分布式存储系统中还可以设置有视图管理模块34。
如图1中的CPU)可以调用该计算机程序,从而实现客户端31、EC管理模块32、数据处理模块
33和视图管理模块34中的至少一种所执行的功能。其示意图,如图2所示。
储节点22上。如图3所示,为本申请实施例提供的另一种分布式存储系统的架构示意图。为
了简洁,图3中并未示出存储节点22中的通信接口、处理器、通信线路、存储模块等。
address,LBA)和待写数据,该待写数据包括一个或多个数据块。在本申请实施例中,IO操作
具体是写操作。需要说明的是,本申请实施例中涉及“分区包括的EC条带”。一个分区包括的
EC条带,具体是指该分区中包括的数据块组建得到的EC条带。
对应的EC管理模块32和数据处理模块33。为了便于描述,本文中,将与一个分区存在映射关
系的数据处理模块33所管理的数据块称为该分区中的数据块。
同一个数据处理模块33。具体包括:对于一个数据块来说,先将该数据块打散到某个分区,
再打散到与该分区存在映射关系某个数据处理模块33。
些数据块和校验块、EC条带中的数据块的写入情况、EC条带中的数据块的有效状态等。数据
块的写入情况是指EC条带的列组合;数据块的有效状态是指数据块是有效数据块还是无效
数据块。关于EC条带、EC条带的列组合、有效数据块和无效数据块的描述可参考下文。
模块33之间的映射关系、EC管理模块32与数据处理模块33之间的映射关系、模块(包括客户
端31、EC管理模块32、数据处理模块33和视图管理模块34)与该模块所在的存储节点之间的
映射关系等。另外,视图管理模块34还可以用于向客户端31或EC管理模块推送视图信息。例
如,视图管理模块34可以在视图管理模块34所管理的视图信息更新后,将更新后的视图信
息同步到客户端31;以及,在客户端31启动后,将视图管理模块34所管理的部分或全部视图
信息同步到客户端31;其中,这里的客户端31可以替换为EC管理模块32,从而实现视图管理
模块34向EC管理模块32推送视图信息。
理模块34等。其中,配置文件可以用于记录:分布式存储系统中的分区总数,与每个分区存
在映射关系的EC管理模块32、数据处理模块33的个数,分配算法等。其中,分配算法可以用
于视图管理模块34建立每个模块(包括客户端31、EC管理模块32、数据处理模块33和视图管
理模块34等)与该模块所在的存储节点之间建立映射关系等。
个分区可以与一个或多个EC管理模块33存在映射关系等。
块,本申请实施例对此不作具体限定。可以理解的是,上述功能既可以是硬件设备中的网络
元件,也可以是在专用硬件上运行的软件功能,或者是平台(例如云平台)上实例化的虚拟
化功能。作为一个示例,用于实现上述任一模块的设备的结构示意图可以如图1中所示的存
储节点。
校验块的其中一列校验块。EC条带是同一分区包括的分别由不同数据处理模块管理的至少
一个数据块和至少一个校验块组成的集合;也就是说,对于一个EC条带来说,一个数据处理
模块用于管理该EC条带中的一个数据块或一个校验块。对于一个数据处理模块来说,该数
据处理模块可以管理多个EC条带的属于同一列的数据块或校验块。
模块分别标记为数据处理模块1~5,其中,数据处理模块1~3用于管理数据块,数据处理模
块4~5用于管理校验块。数据处理模块1~3中的一个小方格表示一个数据块,数据处理模
块4~5中的一个小方格表示一个校验块。图4中虚线框中的数据块和校验块构成一个EC条
带。
储节点之间的映射关系等。
打散到分区,再根据分区与数据处理模块之间的映射关系,将打散到一个分区的数据块继
续打散到与该分区存在映射关系的数据处理模块。
请求空闲EC条带,即请求待组建EC条带的数据块和校验块的物理存储空间信息。
生成。物理存储空间信息,是指用于指示物理存储空间的物理存储空间的信息,如物理存储
空间的地址等。
验块的物理存储空间分别是物理存储空间21、22、23、24、25。如果这些物理存储空间中均没
有存储数据,则EC条带1和EC条带2均是空闲EC条带。
EC条带中的每个校验块的物理存储空间中存储校验块。校验块是所存储的数据块经校验得
到的。
可能不同,即可能存在与该分区存在映射关系的部分数据处理模块没有被分配(即打散)数
据块。此时,客户端可以作短时间等待,即等待与该分区存在映射关系的所有数据处理模块
都具有所管理的数据块时,根据该所有数据处理模块所管理的数据块计算校验块,从而组
建EC条带。如果等待超时,客户端可以选择缺列组合,但是客户端需要记录缺列信息。其中,
这里的缺列信息,是指对于某个EC条带来说,因没有数据块被写到所分配的物理存储空间
中而记录的缺列信息。
和校验块构成一个EC条带。携带有“不写”字样的小方格表示不写数据块。由图5可知,EC条
带1包括数据块D1、D2、D3以及校验块P1、Q1。EC条带2包括数据块D4以及校验块P2、Q2。其中,
EC条带2的缺列信息可以是第1列和第3列中不写数据块。
旧数据块被覆盖包括:将旧数据块的索引记录替换为新数据块的索引记录,然后在新物理
存储空间中写入该新数据块。这会导致旧数据块变成垃圾(即无效数据块)。为了提高空间
利用率,可以对无效数据块进行回收。一种无效数据块回收方法是EC条带重建,具体的:将
一个或多个原有的EC条带(即旧EC条带)上的有效数据块重建成新EC条带,并释放该一个或
多个旧EC条带。
变,也就是说,管理该有效数据块的数据处理模块不变。
块D6~D8和校验块P2、Q2。EC条带1中的数据块D2为无效数据块,EC条带2中的数据块D6和D8
为无效数据块。校验块P1、Q1、P2、Q2均无效。EC条带1和EC条带2经重建得到新EC条带(标记
为EC条带3)。EC条带3包括EC条带1、2中的数据块D1、D3和D7,以及数据块D1、D3和D7经校验
得到的检验块P3、Q3。
同的EC条带上。如果旧EC条带上的一部分有效数据块已经生成新EC条带,另外一部分有效
数据尚未生成新EC条带,则可能因尚未生成新EC条带的数据块“咬”住旧EC条带,而导致旧
EC条带不能释放,从而浪费存储空间。并且,如果此时出现异常恢复,则旧EC条带上的已经
生成新EC条带的有效数据块会存在于新旧两个不同EC条带中,无法判断新旧,因此,需要既
存储新EC条带又存储旧EC条带,从而浪费存储空间。
据块D8会“咬”住旧EC条带(具体是EC条带2),使得EC条带2不能释放。并且,如果此时出现异
常恢复,则EC条带2上的已经生成新EC条带的有效数据块D7会存在于EC条带2和EC条带3上。
存储节点上部署有N个数据处理模块,N≥2,N是整数。例如,该分布式存储系统可以如图2所
示。该N个数据处理模块用于管理一个分区中的数据块。图8所示的方法可以包括如下步骤:
数据处理模块。可选的,该N个数据处理模块是与目标分区存在映射关系的所有数据处理模
块。作为一个示例,结合图4,该N个数据处理模块可以是图4中的数据处理模块1~3。
图信息;以及在视图信息更新之后,向客户端和EC管理模块发送更新后的视图信息。客户端
和EC管理模块可以管理(如存储或更新等)所接收到视图信息因此,执行S101时,客户端或
EC管理模块(具体是与目标分区存在映射关系的EC管理模块)可以在自身管理的视图信息
中获得N个数据处理模块中的每个数据处理模块所在的存储节点的标识信息。
系的数据处理模块,执行图7所示的组建条带的方法;或者,客户端可以在接收到一个或多
个IO操作,并将该一个或多个IO操作携带的数据块打散到数据处理模块,然后将打散到与
目标分区存在映射关系的数据处理模块的数据块,发送给与目标分区存在映射关系的EC管
理模块,从而由该EC管理模块执行图7所示的组建条带的方法。
理模块中的一个数据处理模块用于管理N列数据块中的一列数据块,任意两个待组建EC条
带的列组合不同;待组建EC条带的列组合是待组建EC条带包括的数据块所在的列构成的集
合,管理同一待组建EC条带的任意两列数据块的数据处理模块所在的存储节点不同。
数据块,即W=N。若EC条带集合包括多个待组建EC条带,则该多个待组建EC条带中的每个EC
条带包括的数据块的个数均小于N,即W<N。
时,待组建EC条带的列组合是列1~3构成的集合;当待组建EC条带包括的2个数据块,且这2
个数据块所在的列分别是列1、3时,待组建EC条带的列组合是列1和列3构成的集合。
或两个以上的数据块。
条带的任意两列数据块的数据处理模块所在的存储节点不同”这一原则,穷举满足这一原
则的可能的列组合,从而获得待组建EC条带集合包含的各待创建EC条带的列组合,以及待
组建EC条带集合包括的待创建EC条带的个数。
1部署在存储节点1上,数据处理模块2、3部署在存储节点2上,则待组建EC条带集合包括2个
待组建EC条带,且其中一个待组建EC条带包括的数据块所在的列组合是列1、2构成的集合,
另一个待组建EC条带包括的数据块所在的列组合是列1、3构成的集合,如图9所示。另外,作
为对比,现有技术中,如果目标分区包括3列数据块,则该目标分区中的每个EC条带均包括3
列数据块,如图4所示。
条带集合包括M列校验块时,在保证数据块的可靠性的同时,可以允许M个存储节点故障。与
现有技术相比,有助于减小冗余数据所占的存储空间,从而提高分布式存储系统的整体性
能。例如,结合S102中的示例,如果目标分区包括3列数据块,且数据处理模块2、3部署在存
储节点2上时,那么:当需要达到“保证数据块的可靠性且允许2个存储节点故障”这一要求
时,若按照本申请实施例提供的方法组建EC条带,需要2列校验块;而若按照现有技术提供
的方法组建EC条带,则需要3列或更多列校验块。由于校验块的数量越多,冗余数据所占的
存储空间越大,因此,本申请实施例有助于减小冗余数据所占的存储空间,从而提高分布式
存储系统的整体性能。或者说,结合S102中的示例,如果目标分区包括3列数据块,且数据处
理模块2、3部署在存储节点2上时,那么:当目标分区包含2列校验块时,按照本申请实施例
提供的方法组建EC条带,允许2个存储节点故障,因此本申请实施例能够在保证数据的可靠
性的情况下,不降低冗余级别,从而提高分布式存储系统的整体性能。
待组建EC条带。该实现方式可应用于新建EC条带的场景,具体示例可参考图10A或图10B所
示的实施例。
待组建EC条带;其中,该K个EC条带中的有效数据块的个数与待组建EC条带集合中的数据块
的个数相等,且重建前后参与重建的有效数据块所在的列相同。也就是说,对于参数重建的
每个有效数据块来说,该有效数据块在重建前后所在的列不变。该实现方式可应用于重建
EC条带的场景中。具体示例可以参考图11所示的实施例。
中的有效数据块重建后得到该每个待组建EC条带。
EC条带。例如,将“该一个或多个EC条带中的各EC条带中有效数据块所在的列构成的列组
合”和“该每个待组建EC条件的列组合”作为动态规划算法的自变量的取值,将“K个EC条带”
作为动态规划算法的因变量的取值,将“该K个EC条带中的有效数据块的个数与待组建EC条
带集合中的数据块的个数相等,且重建前后参与重建的有效数据块所在的列相同”作为动
态规划算法需要遵循的原则,从而实现在该一个或多个EC条带中获取该K个EC条带。
且还可以求出中间状态的最优值。
记为“0”,1≤n≤N,n是整数。这样,可以通过二进制数表示出每个列组合。
列组合可以表示为“110”,待组建EC条带2的列组合可以表示为“101”。
列的列组合构成的集合是集合U的一个子集或是集合U本身。
CUA中找到K个元素,这K个元素相加得到的值为目标值即“211”。下文中是以在集合CUA中找
到K个元素为例进行说明的。
“100”求和得到。也就是说,CUA中的元素“010”、“001”“100”和“100”求和可以得到目标值
“211”。因此,可以将目标分区中的“第1、3列上的数据块是无效数据块、且第2列上的数据块
是有效数据块”的1个EC条带、“第1、2列上的数据块是无效数据块、且第3列上的数据块是有
效数据块”的1个EC条带,以及“第1列上的数据块是有效数据块、且第2、3列上的数据块是无
效数据块”的2个EC条带,作为所获取到的K个EC条带,此时,K=4。
得“011”这一子问题和需要获得“200”这一子问题。由此可知,本申请实施例中,可以使用动
态规划算法获取K个EC条带,从而重建得到待组建EC条带集合中的每个待组建EC条带。
组建EC条带集合中的每个待组建EC条带。该情况下,由于随着分布式存储系统中的数据的
写入,可能会出现目标分区实际包含的EC条带中存在能够重建待组建EC条带集合中的每个
待组建EC条带,因此,可以等待一段时间,再获取该K个EC条带。
包含)的EC条带中,参与重建的EC条带的个数最大。例如,基于上述示例可知通过CUA中的元
素“010”、“001”、“100”和“100”求和可以得到目标值“211”,此时K=4,下文中将该方案称为
方案1。另外,通过CUA中的元素“011”、“100”和“100”求和也可以得到目标值“211”,此时K=
3,下文中将该方案称为方案2。对比方案1、2可知,使用方案1执行重建EC条带之后,可以释
放更多的旧EC条带,这有助于降低存储开销。因此,“动态规划算法使得目标分区中已存在
的EC条带中,参与重建的EC条带的个数最大”有助于降低存储开销。
过设置动态规划算法的参数,使得动态规划算法输出多组EC条带,后续,EC管理模块可以在
这多组EC条带中选择一组EC条带,从而执行重建EC条带。其中,每组EC条带中的有效数据块
可以重建得到待组建EC条带集合中的每个待组建EC条带。其中,一组EC条带可以认为是该K
个EC条带的一种可能的组合。不同组EC条带中包含的EC条带的个数可以相同,也可以不相
同。例如,基于上文中的示例,可以通过设置动态规划算法的参数,使得动态规划算法所输
出的结果包括:“010、001、100和100”,以及“011、100和100”。
由客户端执行新建EC条带,图10B是由EC管理模块执行新建EC条带。图11是以图8所示的方
法应用于重建EC条带的场景中为例进行说明。
个数据处理模块用于管理一个分区中的数据块。另外,图10A、图10B或图11所示的方法中相
关内容的解释或具体实现方式均可以参考上文。在此统一说明,下文不再赘述。
一分区。目标EC管理模块与目标分区之间存在映射关系。
理模块12、13所在的存储节点是存储节点2。
N个数据处理模块中的一个数据处理模块用于管理N列数据块中的一列数据块,任意两个待
组建EC条带的列组合不同,管理同一待组建EC条带的任意两列数据块的数据处理模块所在
的存储节点不同。
的列组合之间的对应关系可以如表2所示:
数据处理模块11 数据块D1
数据处理模块12 数据块D2、D3
数据处理模块13 数据块D4
执行S201~S203和S204~S207,或者在执行S201~S203的过程中执行S204~S207中的部分
步骤,或者在执行S204~S207的过程中执行S201~S203中的部分步骤。
条带包括的数据块经校验得到的校验块。
校验块的物理存储空间信息,向相应物理存储空间中写入校验块。
等)和校验块的信息(如校验块的标识信息)等。
组建EC条带包括的数据块经校验得到的校验块。具体示例可以参考上述S209。
所包含的校验块的物理存储空间信息,向相应物理存储空间中写入校验块。
块的信息(如校验块的标识信息)等。
信息。
其中,写入情况是指是否在物理存储空间中写入了数据块,可以理解的,如果在物理存储空
间中没有写入数据块,则该数据块是无效数据块。有效状态是指已在物理存储空间中写入
的数据块是否为有效状态。
块。
带中的任意两列条带的列组合不同,管理同一EC条带的任意两列数据块的数据处理模块所
在的存储节点不同。
块的信息(如校验块的标识信息)等。
重建EC条带的,也就是说,待组建EC条带集合中的EC条带(即新EC条带)均生成之后,才会释
放旧EC条带。因此:
提供的方法和本申请实施例提供的方法的对比示意图。图12中,旧EC条带是旧EC条带1、2,
旧EC条带上的有效数据块如空白矩形所示,无效数据块如斜线阴影矩形所示。为了简洁,图
12中没有示出每个EC条带包括的校验块。如果按照现有技术提供的方法重建EC条带,则可
能出现如图12中的(a)所示的情况,即新EC条带1已经生成,但是,未生成新EC条带的数据块
D4“咬”住旧EC条带1,使得旧EC条带1无法释放,同理,数据块D6“咬”住旧EC条带2,使得旧EC
条带2无法释放。此时,需要存储旧EC条带1、2和新EC条带1共3个EC条带。如果按照现有技术
提供的方法重建EC条带,则所重建得到的新EC条带1和新EC条带2如图12中的(b)所示。由于
本申请实施例中,新EC条带1和新EC条带2同时生效,且在新EC条带1、2生效时,会释放旧EC
条带1、2,因此,在完成重建的过程中,要么需要存储旧EC条带1、2共2个EC条带,要么需要存
储新EC条带1、2共2个EC条带。因此,本申请实施例提供的技术方案可以降低存储开销。
图11所示的实施例中描述的待组建EC条带集合中的EC条带为例进行说明。
效数据块是数据块D1、D3;旧EC条带2包括数据块D6~D8和校验块P2、Q2,有效数据块是数据
块D6、D7,那么,各旧EC条带和新EC条带可以如图13A所示。校验块P3、Q3是数据块D1、D2经校
验得到的,校验块P4和Q4是数据块D6、D3经校验得到的。
效数据块是数据块D1;旧EC条带2包括数据块D6、D7和校验块P2、Q2,有效数据块是数据块
D7;旧EC条带3包括数据块D11、D13和校验块P3、Q3,有效数据块是数据块D13;那么,各旧EC
条带和新EC条带可以如图13B所示。其中,校验块P4、Q4是数据块D1、D7、D13经校验得到的。
效数据块是数据块D1;旧EC条带2包括数据块D11~D13和校验块P3、Q3,有效数据块是数据
块D12、D13;旧EC条带3包括数据块D6、D7和校验块P2、Q2,有效数据块是数据块D6;那么,各
旧EC条带和新EC条带可以如图13C所示。校验块P4、Q4是数据块D1、D12经校验得到的,校验
块P5和Q5是数据块D6、D13经校验得到的。
识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或
硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方
式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的
应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能
模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻
辑功能划分,实际实现时可以有另外的划分方式。
式存储系统中的客户端,或者是部署有客户端的存储节点。分布式存储系统包括至少两个
存储节点,至少两个存储节点上部署有N个数据处理模块。N≥2,N是整数;N个数据处理模块
用于管理一个分区中的数据块。客户端和N个数据处理模块中的任意一个或多个数据处理
模块可以部署在同一存储节点上,也可以部署在不同存储节点上。该装置140包括获取单元
1401和组建单元1402。其中,获取单元1401用于获取该N个数据处理模块中的每个数据处理
模块所在的存储节点的标识信息;根据每个数据处理模块所在的存储节点的标识信息,获
取待组建EC条带集合中的每个待组建EC条带的列组合;其中,待组建EC条带集合包括N列数
据块,该N个数据处理模块中的一个数据处理模块用于管理N列数据块中的一列数据块,任
意两个待组建EC条带的列组合不同;待组建EC条带的列组合是待组建EC条带包括的数据块
所在的列构成的集合,管理同一待组建EC条带的任意两列数据块的数据处理模块所在的存
储节点不同;根据每个待组建EC条带的列组合,组建每个待组建EC条带。例如,结合图8,获
取单元1401可以用于执行S101~S102,组建单元1402可以用于执行S103。
例如,结合图10A,组建单元1402可以用于执行S209~S210。
系统中的EC管理模块,或者是部署有EC管理模块的存储节点。分布式存储系统包括至少两
个存储节点,至少两个存储节点上部署有N个数据处理模块。N≥2,N是整数;N个数据处理模
块用于管理一个分区(即与该EC管理模块存在映射关系的分区)中的数据块。其中,EC管理
模块和N个数据处理模块中的任意一个或多个数据处理模块可以部署在同一存储节点上,
也可以部署在不同存储节点上。该装置150包括获取单元1501和组建单元1502。其中,获取
单元1501用于获取该N个数据处理模块中的每个数据处理模块所在的存储节点的标识信
息;根据每个数据处理模块所在的存储节点的标识信息,获取待组建EC条带集合中的每个
待组建EC条带的列组合;其中,待组建EC条带集合包括N列数据块,该N个数据处理模块中的
一个数据处理模块用于管理N列数据块中的一列数据块,任意两个待组建EC条带的列组合
不同;待组建EC条带的列组合是待组建EC条带包括的数据块所在的列构成的集合,管理同
一待组建EC条带的任意两列数据块的数据处理模块所在的存储节点不同;根据每个待组建
EC条带的列组合,组建每个待组建EC条带。例如,结合图8,获取单元1501可以用于执行S101
~S102,组建单元1502可以用于执行S103。
建,得到每个待组建EC条带;其中,该K个EC条带中的有效数据块的个数与待组建EC条带集
合中的数据块的个数相等,且重建前后参与重建的有效数据块所在的列相同。
建EC条带。例如,结合图11,组建单元1502可以用于执行S406。
组建EC条件的列组合和动态规划算法,在一个或多个EC条带中获取该K个EC条带。
块,以及EC管理模块。例如,该客户端可以是图10A中的客户端,该EC管理模块可以是图10A
中的目标EC管理模块。
模块,以及客户端模块。例如,该客户端可以是图10B中的客户端,该EC管理模块可以是图
10B中的目标EC管理模块。又如,该客户端可以是图11中的客户端,该EC管理模块可以是图
11中的目标EC管理模块。
程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或
部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计
算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质
中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机
指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数
字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一
个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机
能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数
据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、
或者半导体介质(例如SSD)等。
现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成
部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求
中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措
施不能组合起来产生良好的效果。
附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修
改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不
脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其
等同技术的范围之内,则本申请也意图包含这些改动和变型在内。