【技术实现步骤摘要】
数据存储方法、恢复方法、相关装置以及系统
本专利技术涉及数据存储领域,尤其涉及数据存储方法、恢复方法、相关装置以及系统。
技术介绍
现阶段的分布式存储系统越来越多的采用纠删码(EC,ErasureCode)技术对数据进行存储。纠删码技术原理是将数据进行分割成m个数据块,并且采用冗余算法对m个数据块进行校验编码,生成k个校验块,该m个数据块与k个校验块称为一个EC条带。其中,数据块或校验块也称为ECblock,每个EC条带能容忍k个ECblock的丢失。为了保证存储的可靠性,分布式存储系统会将每个EC条带的m+k个ECblock交给m+k个存储节点进行存储。这样,即使某个节点出现了故障,也能够根据其他节点中存储的数据将故障节点中存储的ECblock恢复出来。可以理解的,采用EC技术的分布式存储系统能够容忍k个存储节点同时出现故障。但是,将ECblock写入存储节点需要一定的时间。若用于存储某个EC条带的m+k个存储节点中,有存储节点在写入ECblock时发生了故障,则会出现部分存储节点上有该EC条带的ECblock,而另一部分存储节点没有该EC条带的ECblock的 ...
【技术保护点】
一种数据恢复方法,用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的EC block;每个EC条带对应有key值,且数据部分的地址范围相同的EC条带的key值相同,数据部分的地址范围不同的EC条带的key值不同;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点 ...
【技术特征摘要】
1.一种数据恢复方法,用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;每个EC条带对应有key值,且数据部分的地址范围相同的EC条带的key值相同,数据部分的地址范围不同的EC条带的key值不同;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;在所述任意一个存储节点组的备存储节点中存在故障存储节点时,所述任意一个存储节点组的主存储节点执行所述方法,包括:当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;根据本存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中是否存在与所述第一ECblock的key值相同的第二ECblock;若确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。2.根据权利要求1所述的数据恢复方法,其特征在于,所述依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储包括:将第n个缺失的ECblock发送给所述故障存储节点,其中1≤n≤N;接收所述第n个缺失的ECblock对应的响应消息,所述响应消息由所述故障存储节点发送,所述响应消息用于表示所述故障存储节点成功存储了所述第n个缺失的ECblock;在接收所述故障存储节点对所述第n个缺失的ECblock的响应消息后,若n<N,则n值加1,并再次执行所述将第n个缺失的ECblock发送给所述故障存储节点的步骤。3.根据权利要求2所述的数据恢复方法,其特征在于,所述当前未成功存储的所述缺失的ECblock包括:当前还未发送给所述故障存储节点的所述缺失的ECblock,以及当前已发送给所述故障存储节点但没有接收到对应的响应消息的所述缺失的ECblock。4.根据权利要求1至3中任一项所述的数据恢复方法,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域为k个数据块的大小且互不重叠,每个所述逻辑区域唯一对应一个key值,每个ECblock落在的逻辑区域的key值即为所述ECblock的key值。5.根据权利要求1所述的数据恢复方法,其特征在于,在所述故障存储节点的发生故障之前,所述方法还包括:接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;在接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。6.根据权利要求5所述的数据存储方法,其特征在于:所述准备消息中还包括所述目标EC条带的版本号;所述准备日志中还包括所述目标EC条带的版本号;所述执行消息具体用于指示所述m+k个目标存储节点写入所述准备消息中的目标ECblock和所述目标EC条带的版本号。7.根据权利要求6所述的数据存储方法,其特征在于,所述方法在向所述目标存储节点发送准备消息之后还包括:若检测到所述m+k个目标存储节点中存在故障存储节点,则待所述故障存储节点的故障修复后,判断所述m+k个目标存储节点上的目标EC条带的版本号是否相同,其中,所述m+k个目标存储节点上的所述目标EC条带的版本号包括:已生成准备日志的目标存储节点上的准备日志中目标EC条带的版本号,和/或,没有准备日志的目标存储节点所存储的目标EC条带的版本号;若所述m+k个目标存储节点中的所有目标存储节点上的目标EC条带的版本号相同,则向已生成准备日志的目标存储节点发送执行消息,所述执行消息用于指示目标存储节点写入所述准备日志中的目标ECblock。8.根据权利要求7所述的数据存储方法,其特征在于,所述方法还包括:若所述m+k个目标存储节点中的目标存储节点上的目标EC条带的版本号不相同,则向已生成准备日志的目标存储节点发送删除消息,所述删除消息用于指示目标存储节点删除所述准备日志。9.一种数据恢复装置,用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;每个EC条带对应有key值,且数据部分的地址范围相同的EC条带的key值相同,数据部分的地址范围不同的EC条带的key值不同;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;所述分布式存储系统的任意一个存储节点组的备存储节点中存在故障存储节点,所述数据恢复装置部署在所述故障存储节点所在的存储节点组的主存储节点上,所述数据恢复装置包括:修复消息模块,用于当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;数据计算模块,用于根据所述存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;数据发送模块,用于:依次...
【专利技术属性】
技术研发人员:王道辉,张烽,樊伟,张志乐,曾永强,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。