【技术实现步骤摘要】
数据冗余方法及分布式存储集群
本申请涉及存储
,尤其涉及一种数据冗余方法及分布式存储集群。
技术介绍
在分布式存储集群中,通常采用数据冗余技术来保证数据的可靠性。当前数据冗余技术主要包括:副本技术和纠错码(英文:ErasureCoding,EC)技术。其中,副本技术指将同一数据拷贝多份,分别存储于分布式存储集群的不同故障域。该技术实现简单,但系统的得盘率较低。以2副本(即,同一数据在分布式存储集群中存储2份)为例,得盘率为50%。EC技术是将数据划分为若干数据分片,根据数据分片计算校验分片,然后,将各数据分片和校验分片写入不同故障域。参与同一校验计算的数据分片和计算得到的校验分片组成EC条带。可以看出,该技术在写入数据时,需要进行校验计算,无疑会增大系统开销,影响写入性能。
技术实现思路
有鉴于此,本申请提出一种数据冗余方法及分布式存储集群,用以在保证写入性能的前提下,减少磁盘消耗,提升分布式存储集群的得盘率。为实现上述申请目的,本申请提供了如下技术方案:第一方面,本 ...
【技术保护点】
1.一种数据冗余方法,其特征在于,应用于分布式存储集群,所述分布式存储集群包括至少一个集群节点,每一个集群节点包括至少一块用于存储数据的磁盘,每一块磁盘按照预设Block大小划分为多个Block,所述分布式存储集群配置有至少一个LUN,每一个LUN按照预设Segment大小划分为多个逻辑区间,每一个逻辑区间按照预设Block大小划分为多个子逻辑区间,每一个集群节点针对本节点上的每一块磁盘部署对应的磁盘管理模块,每一个Segment对应一个写入位图,所述写入位图中的每一位用于标识对应子逻辑区间是否写入过数据,每一个Segment还对应一个存储位图,所述存储位图中的每一位用于标 ...
【技术特征摘要】
1.一种数据冗余方法,其特征在于,应用于分布式存储集群,所述分布式存储集群包括至少一个集群节点,每一个集群节点包括至少一块用于存储数据的磁盘,每一块磁盘按照预设Block大小划分为多个Block,所述分布式存储集群配置有至少一个LUN,每一个LUN按照预设Segment大小划分为多个逻辑区间,每一个逻辑区间按照预设Block大小划分为多个子逻辑区间,每一个集群节点针对本节点上的每一块磁盘部署对应的磁盘管理模块,每一个Segment对应一个写入位图,所述写入位图中的每一位用于标识对应子逻辑区间是否写入过数据,每一个Segment还对应一个存储位图,所述存储位图中的每一位用于标识对应子逻辑区间的数据的存储方式,所述分布式存储集群采用N副本方式写入,其中,N大于等于2,所述方法包括:
所述至少一个集群节点中的目标集群节点在监测到未访问目标Segment的时长达到预设时长时,获取所述目标Segment对应的写入位图和存储位图;
所述目标集群节点遍历所述写入位图和所述存储位图,找到写入过数据且存储方式为副本方式的N个第一子逻辑区间;
所述目标集群节点从用于存储所述目标Segment对应数据的N个第一磁盘中,选择目标磁盘;
针对每一个第一子逻辑区间,所述目标集群节点向所述目标磁盘对应的目标磁盘管理模块发送用于读取第一子逻辑区间对应数据的读命令;
所述目标集群节点根据所述目标磁盘管理模块返回的各第一子逻辑区间的数据,计算校验数据;
所述目标集群节点向第二磁盘对应的第二磁盘管理模块发送用于指示将所述校验数据写入所述第二磁盘的写命令,所述第二磁盘为预先指定的用于存储所述目标Segment对应校验数据的磁盘;
所述第二磁盘管理模块从所述第二磁盘中为所述校验数据分配第一Block,并将所述校验数据写入所述第一Block;
针对每一个第一磁盘,所述目标集群节点向第一磁盘对应的第一磁盘管理模块发送用于指示删除指定数据副本的删除命令,以使所述N个第一子逻辑区间对应数据分别存储于N个第一磁盘中。
2.如权利要求1所述的方法,其特征在于,所述针对每一个第一磁盘,所述目标集群节点向第一磁盘对应的第一磁盘管理模块发送用于指示删除指定数据副本的删除命令之后,所述方法还包括:
针对每一个第一子逻辑区间,所述目标集群节点更新第一子逻辑区间在所述存储位图中对应位所标识的存储方式为纠删码方式。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述目标集群节点接收到需要写入所述目标Segment的写请求时,确定所述写请求涉及到的所述目标Segment中的各第二子逻辑区间,将所述写请求拆分成针对每一个第二子逻辑区间的子写请求;
针对每一个第二子逻辑区间执行如下处理:
所述目标集群节点查询所述目标Segment的写入位图,确定第二子逻辑区间是否写入过数据;
如果第二子逻辑区间写入过数据,所述目标集群节点查询所述目标Segment的存储位图,确定该第二子逻辑区间对应数据的存储方式;
如果该第二子逻辑区间对应数据的存储方式为纠删码方式,所述目标集群节点分别向各第一磁盘管理模块发送针对该第二子逻辑区间的子写请求,该子写请求携带待写入该第二子逻辑区间的数据以及纠删码标志;
第一磁盘管理模块在确定子写请求携带纠删码标志时,为该第二子逻辑区间分配第二Block,将数据写入该第二Block,并记录该第二子逻辑区间与第二Block的映射关系;
所述目标集群节点更新该第二子逻辑区间在所述存储位图中对应位所标识的存储方式为副本方式。
4.如权利要求1所述的方法,其特征在于,所述针对每一个第一磁盘,所述目标集群节点向第一磁盘对应的第一磁盘管理模块发送用于指示删除指定数据副本的删除命令,以使所述N个第一子逻辑区间对应数据分别存储于N个第一磁盘中之后,所述方法还包括:
所述第一磁盘管理模块记录已删除数据副本所属第一子逻辑区间与未删除数据副本所在Block的映射关系,并为该映射关系添加关联标记;
所述目标集群节点接收到需要读取所述目标Segment的读请求时,确定所述读请求涉及到的所述目标Segment中的各第三子逻辑区间,将所述读请求拆分成针对每一个第三子逻辑区间的子读请求;
针对每一个第三子逻辑区间执行如下处理:
所述目标集群节点查询所述存储位图,确定第三子逻辑区间对应数据的存储方式;
如果第三子逻辑区间对应数据的存储方式为纠删码方式,所述目标集群节点分别向各第一磁盘管理模块发送针对该第三子逻辑区间的第一子读请求,该第一子读请求不包括关联标记;
第一磁盘管理模块在确定本地记录的该第三子逻辑区间与第三Block的映射关系不存在关联标记时,从所述第三Block读取对应数据返回给所述目标集群节点。
5.如权利要求4所述的方法,其特征在于,所述写命令包括各第一子逻辑区间的起始地址,所述第二磁盘管理模块从所述第二磁盘中为所述校验数据分配第一Block,并将所述校验数据写入所述第一Block之后,所述方法还包括:
所述第二磁盘管理模块记录各第一子逻辑区间与所述第一Block的映射关系,并添加关联标记;
所述目标集群节点分别向各第一磁盘管理模块发送针对第三子逻辑区间的第一子读请求之后,所述方法还包括:
如果未读取到该第三子逻辑区间的数据,所述目标集群节点向各第一磁盘管理模块发送针对该第三子逻辑区间的第二子读请求,所述第二子读请求携带关联标记;
第一磁盘管理模块在确定本地记录的该第三子逻辑区间与第三Block的映射关系存在关联标记时,从所述第三Block读取对应数据返回给所述目标集群节点;
所述目标集群节点向所述第二磁盘管理模块发送针对该第三子逻辑区间的第三子读请求;
所述第二磁盘管理模块根据本地记录的该第三子逻辑区间与第四Block的映射关系,从所述第四Block读取校验数据返回给所述目标集群节点;
所述目标集群节点根据第一磁盘管理模块返回的数据以及第二磁盘管理模块返回的校验数据进行校验计算,得到该第三子逻辑区间对应数据。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述目标集群节点在确定所述N个第一磁盘中存在故障盘时,针对所述目标Segment中已写入数据的每一个第四子逻辑区间执行如下处理:
所述目标集群节点读取第四子逻辑区间对应数据;
所述目标集群节点向各第三磁盘管理模块发送用于指示写入该第四子逻辑区间对应数据的写命令,其中,所述第三磁盘管理模块指第一磁盘和第二磁盘中除故障盘以及返回该第四子逻辑区间对应数据的磁盘之外的磁盘对应的磁盘管理模块;
第三磁盘管理模块在确定本地记录的第四子逻辑区间与第五Block的映射关系存在关联标记时,为该第四子逻辑区间分配第六Block,将该...
【专利技术属性】
技术研发人员:苏伟,
申请(专利权)人:杭州宏杉科技股份有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。