一种数据存储的方法、装置和系统制造方法及图纸

技术编号:19396682 阅读:31 留言:0更新日期:2018-11-10 05:01
一种数据存储的方法、装置和系统,存储客户端需要将待写入数据存储到分布式存储系统中,管理服务器为待写入数据分配的第一数据单元所对应的存储节点仅为存储节点组中的部分节点,当存储客户端收到管理服务器返回的第一数据单元的状态时,即可确定对待写入数据执行EC编码时需要生成的数据块和校验块的数量,存储客户端将生成的数据块和校验块存储到第一数据单元所在的分区中管理服务器指定的部分存储节点中,从而实现了EC冗余比的动态调整,管理服务器可以根据需要将分区中的部分节点排除出待写入数据存储的范围,降低了数据存储的IO量。

【技术实现步骤摘要】
【国外来华专利技术】一种数据存储的方法、装置和系统
本专利技术涉及IT
,尤其涉及一种数据存储的方法、装置和系统。
技术介绍
现阶段的分布式存储系统越来越多的采用纠删码(ErasureCode,EC)技术对数据进行存储。纠删码技术原理是将数据分割成N个数据块,并且采用冗余算法对N个数据块进行编码,生成M个校验块,该N个数据块与M个校验块称为一个EC条带。其中,数据块或校验块也称为EC块,当丢失的EC块不大于M个时都可以恢复出原始数据,EC条带的冗余比r=M/N或r=M/(N+M)。示例性的,当N等于4,M等于2时,EC条带可以表示为EC4+2。为了保证存储的可靠性,分布式存储系统会将每个EC条带包含的N+M个EC块分配给N+M个存储节点进行存储,N+M个存储节点构成一个存储节点组。这样,即使某个节点出现了故障,也能够根据存储节点组的其他节点中存储的数据将故障节点中存储的EC块恢复出来。可以理解的,采用EC技术的分布式存储系统能够容忍M个存储节点同时出现故障。当存储节点组中的某个存储节点发生故障时,一个新的存储节点会被加入到存储节点组中,替换发生故障的存储节点,在新的存储节点恢复故障节点的数据。当故障节点恢复正常后,再将新的存储节点的数据写回到恢复的节点中。由于存储节点存储的数据量一般比较大,故障节点中的数据的迁移和回迁将会对存储系统的性能造成较大的影响。
技术实现思路
本文描述了一种数据存储的方法、装置和系统,以避免故障节点中数据的迁移和回迁对分布式存储系统的性能造成的影响。第一方面,本专利技术实施例提供了一种数据存储系统,所述数据存储系统包括存储客户端和分布式存储系统,所述分布式存储系统采用纠删码EC技术存储数据,所述分布式存储系统包括管理服务器以及多个存储节点,N+M个存储节点组成的存储节点组对应一个分区,其中,N个存储节点用来存储数据块,M个存储节点用于存储根据数据块生成的校验块,所述N和M为大于2的正整数,所述存储客户端处理来自用户设备的写请求,为待写入数据向所述管理服务器请求分配数据单元,所述管理服务器为所述待写入数据在第一分区中分配第一数据单元,向所述存储客户端返回所述第一数据单元的标识和第一数据单元的状态,其中,所述第一数据单元的状态指示所述第一分区中允许所述存储客户端使用的存储节点,允许所述存储客户端使用的存储节点的数量小于N+M,所述存储客户端根据所述第一数据单元的状态确定需要生成的数据块的数量和校验块的数量,对所述待写入数据执行EC编码,生成所述待写入数据对应的数据块和校验块,生成的数据块的数量和校验块的数量之和等于所述允许所述存储客户端使用的存储节点的数量,所述存储客户端根据第一分区视图和所述第一数据单元的状态,将生成的数据块和校验块存储到所述第一分区中允许所述存储客户端使用的各存储节点中,每个节点存储一个数据块或校验块。存储客户端需要将待写入数据存储到分布式存储系统中,管理服务器为待写入数据分配的第一数据单元所对应的存储节点仅为存储节点组中的部分节点,当存储客户端收到管理服务器返回的第一数据单元的状态时,即可确定对待写入数据执行EC编码时需要生成的数据块和校验块的数量,存储客户端将生成的数据块和校验块存储到第一数据单元所在的分区中管理服务器指定的部分存储节点中,从而实现了EC冗余比的动态调整,减少了EC块的生成数量,管理服务器可以根据需要将分区中的部分节点排除出待写入数据存储的范围,从而降低IO数据量。更进一步的,当分区中存在故障节点时,管理服务器可以主动将故障节点排除,避免存储客户端将EC块写入到故障节点引起的写入失败。存储客户端获取所述第一数据单元的标识,根据所述第一数据单元的标识确定所述第一数据单元所在的分区为所述第一分区,在确定所述第一数据单元所在的分区为第一分区后,查询分区表获得所述第一分区的第一分区视图。在一种可能的实施方式中,所述允许所述存储客户端使用的存储节点为所述管理服务器在所述第一分区中为所述存储客户端指定的存储所述待写入数据的存储节点;或者,在另一种可能的实施方式中,所述第一分区中存在故障节点,所述允许所述存储客户端使用的存储节点为所述第一分区中的非故障节点,所述第一数据单元的状态表示所述管理服务器创建所述第一数据单元时所述第一分区包含的各存储节点的状态。进一步的,当所述允许所述存储客户端使用的存储节点为所述第一分区中的非故障节点时,管理客户端需要生成的数据块的数量等于N减去第一分区中故障节点的数量。管理服务器可以监控分布式存储系统中的各个存储节点的状态,在第一分区中存在故障节点时,可以将故障节点排除出待写入数据存储的范围,降低生成数据块和校验块的数量,避免向第一分区中添加新的存储节点以替代故障节点,也无需将故障节点中的数据进行迁移和回迁。存储客户端根据第一数据单元的状态和第一分区视图,确定第一分区中非故障存储节点列表。存储客户端根据第一数据单元的状态,确定第一数据单元所在的第一分区中非故障存储节点的数量。在一种可能的实施方式中,为了保证数据存储的持久度,需要保证校验块的数量不变,即使分区中存在故障节点,也只是会降低生成数据块的数量,而不会降低生成校验块的数量,此时,生成的数据块的数量等于N减去第一分区中故障节点的数量,生成的校验块的数量等于M。由于校验块的数量M保存不变,存储客户端可以使用第一分区中非故障节点的数量减去M,即可获得需要生成的数据块的数量。校验块M的数量可以由用户预先在数据存储系统中设置,也可以由存储客户端和管理服务器协商确定。在另一种可能的实施方式中,当允许降低数据存储持久度时,可以降低校验块的数量,此时,管理服务器可以在返回给存储客户端的响应消息中携带需要生成的数据块的数量和/或校验块的数量,当响应消息中只携带了需要生成的数据块的数量时,存储客户端使用第一分区中非故障节点的数量减去需要生成的数据块的数量,得到需要生成的校验块的数量;当响应消息中只携带了需要生成的校验块的数量时,存储客户端使用第一分区中非故障节点的数量减去需要生成的校验块的数量,得到需要生成的数据块的数量。所述管理服务器,还用于记录所述第一数据单元的状态。在所述存储客户端执行读操作时,获取待读取数据对应的第二数据单元的状态、所述第二数据单元所在的第二分区的第二分区视图和第二分区状态,所述第二数据单元的状态表示所述管理服务器创建所述第二数据单元时允许所述存储客户端使用的第二分区中存储节点,所述第二分区状态表示第二分区包含的各存储节点当前是否故障;所述存储客户端根据所述第二数据单元的状态、所述第二分区视图和所述第二分区状态,确定存储有所述待读取数据对应的EC块且状态为正常的存储节点列表;所述存储客户端从确定的所述存储节点列表中读取所述待读取数据对应的EC块。上述存储节点当前是否故障表示存储节点是故障节点还是非故障的正常节点。第二数据单元为写入该待读取数据到分布式存储系统时,管理服务器为所述待读取数据分配的数据单元,第二数据单元的状态指示在第二分区中存储有所述待读取数据对应的EC块的存储节点。所述存储客户端处理用户设备发起的读请求,所述读请求中携带数据单元的标识,存储客户端根据所述数据单元的标识确定所述待读取数据所在的第二数据单元的状态和第二分区视图,从而找到存储有待读取数据对应的EC块的本文档来自技高网...

【技术保护点】
1.一种数据存储系统,其特征在于,所述数据存储系统包括存储客户端和分布式存储系统,所述分布式存储系统采用纠删码EC技术存储数据,所述分布式存储系统包括管理服务器以及多个存储节点,N+M个存储节点组成的存储节点组对应一个分区,其中,N个存储节点用来存储数据块,M个存储节点用于存储根据数据块生成的校验块,所述N和M为大于2的正整数,所述存储客户端,用于为待写入数据向所述管理服务器请求分配数据单元;所述管理服务器,用于为所述待写入数据在第一分区中分配第一数据单元,向所述存储客户端返回所述第一数据单元的标识和第一数据单元的状态,其中,所述第一数据单元的状态指示所述第一分区中允许所述存储客户端使用的存储节点,允许所述存储客户端使用的存储节点的数量小于N+M;所述存储客户端,还用于获取所述第一数据单元的标识、所述第一数据单元的状态以及所述第一分区的第一分区视图,其中,所述第一分区视图表示所述第一分区包含的存储节点列表;所述存储客户端,还用于根据所述第一数据单元的状态确定需要生成的数据块的数量和校验块的数量,对所述待写入数据执行EC编码,生成所述待写入数据对应的数据块和校验块,生成的数据块的数量和校验块的数量之和等于所述允许所述存储客户端使用的存储节点的数量;所述存储客户端,还用于根据所述第一分区视图和所述第一数据单元的状态,将生成的数据块和校验块存储到所述第一分区中允许所述存储客户端使用的各存储节点中,每个节点存储一个数据块或校验块。...

【技术特征摘要】
【国外来华专利技术】1.一种数据存储系统,其特征在于,所述数据存储系统包括存储客户端和分布式存储系统,所述分布式存储系统采用纠删码EC技术存储数据,所述分布式存储系统包括管理服务器以及多个存储节点,N+M个存储节点组成的存储节点组对应一个分区,其中,N个存储节点用来存储数据块,M个存储节点用于存储根据数据块生成的校验块,所述N和M为大于2的正整数,所述存储客户端,用于为待写入数据向所述管理服务器请求分配数据单元;所述管理服务器,用于为所述待写入数据在第一分区中分配第一数据单元,向所述存储客户端返回所述第一数据单元的标识和第一数据单元的状态,其中,所述第一数据单元的状态指示所述第一分区中允许所述存储客户端使用的存储节点,允许所述存储客户端使用的存储节点的数量小于N+M;所述存储客户端,还用于获取所述第一数据单元的标识、所述第一数据单元的状态以及所述第一分区的第一分区视图,其中,所述第一分区视图表示所述第一分区包含的存储节点列表;所述存储客户端,还用于根据所述第一数据单元的状态确定需要生成的数据块的数量和校验块的数量,对所述待写入数据执行EC编码,生成所述待写入数据对应的数据块和校验块,生成的数据块的数量和校验块的数量之和等于所述允许所述存储客户端使用的存储节点的数量;所述存储客户端,还用于根据所述第一分区视图和所述第一数据单元的状态,将生成的数据块和校验块存储到所述第一分区中允许所述存储客户端使用的各存储节点中,每个节点存储一个数据块或校验块。2.如权利要求1所述的系统,其特征在于,所述管理服务器,还用于记录所述第一数据单元的状态。3.如权利要求1或2所述的系统,其特征在于,所述存储客户端,还用于执行读操作,获取待读取数据对应的第二数据单元的状态、所述第二数据单元所在的第二分区的第二分区视图和第二分区状态,所述第二数据单元的状态表示所述管理服务器创建所述第二数据单元时允许所述存储客户端使用的第二分区中存储节点,所述第二分区状态表示第二分区包含的各存储节点当前是否故障;所述存储客户端,还用于根据所述第二数据单元的状态、所述第二分区视图和所述第二分区状态,确定存储有所述待读取数据对应的EC块且状态为正常的存储节点列表;所述存储客户端,还用于从确定的所述存储节点列表中读取所述待读取数据对应的EC块。4.如权利要求1-3任一所述的系统,其特征在于,在所述存储客户端为待写入数据向所述管理服务器请求分配数据单元之前,所述存储客户端,还用于根据所述管理服务器返回的第三数据单元的标识,向所述第三数据单元所在的第三分区中包含的各存储节点写入根据待写入数据生成的EC块,当写入失败时,向所述管理服务器请求重新分配数据单元。5.如权利要求1-4任一所述的系统,其特征在于,所述第一分区中存在故障节点,所述允许所述存储客户端使用的存储节点为所述第一分区中的非故障节点,所述第一数据单元的状态表示所述管理服务器创建所述第一数据单元时所述第一分区包含的各存储节点的状态;或者,所述允许所述存储客户端使用的存储节点为所述管理服务器在所述第一分区中为所述存储客户端指定的存储所述待写入数据的存储节点。6.如权利要求1-5任一所述的系统,其特征在于,生成的校验块的数量等于M,生成的数据块的数量等于允许所述存储客户端使用的存储节点的数量减去M。7.如权利要求1-6任一所述的系统,其特征在于,所述管理服务器,还用于根据存在故障节点的分区数量判断是否允许分区降级,如果允许,则在所述第一分区中为所述待写入数据分配所述第一数据单元。8.如权利要求7所述的系统,其特征在于,所述管理服务器,具体用于判断存在故障节点的分区数量与分区总数比值是否大于预设比例,如果是,则确定允许分区降级。9.如权利要求7或8所述的系统,其特征在于,所述管理服务器,还用于在不允许分区降级时,在不存在故障节点的第四分区中为所述待写入数据分配第四数据单元,向所述存储客户端返回所述第四数据单元的标识。10.一种存储客户端,其特征在于,所述存储客户端采用纠删码EC技术向分布式存储系统中存储数据,所述分布式存储系统包括管理服务器以及多个存储节点,N+M个存储节点组成的存储节点组对应一个分区,其中,N个存储节点用来存储数据块,M个存储节点用于存储根据数据块生成的校验块,所述N和M为大于2的正整数,包括:第一发送单元,用于为待写入数据向所述管理服务器请求分配数据单元;获取单元,用于获取所述管理服务器返回的第一数据单元的标识、所述第一数据单元的状态以及所述第一数据单元所在的第一分区的第一分区视图,其中,所述第一分区视图表示所述第一分区包含的存储节点列表,所述第一数据单元的状态指示所述第一分区中允许所述存储客户端使用的存储节点,允许所述存储客户端使用的存储节点的数量小于N+M;处理单元,用于根据所述第一数据单元的状态确定需要生成的数据块的数量和校验块的数量,对所述待写入数据执行EC编码,生成所述待写入数据对应的数据块和校验块,生成的数据块的数量和校验块的数量之和等于所述允许所述存储客户端使用的存储节点的数量;第一发送单元,还用于根据所述第一分区视图和所述第一数据单元的状态,将生成的数据块和校验块存储到所述第一分区中允许所述存储客户端使用的各存储节点中,每个节点存储一个数据块或校验块。11.如权利要求10所述的存储客户端,其特征在于,所述获取单元,还用于在所述存储客户端执行读操作时,获取待读取数据对应的第二数据单元的状态、所述第二数据单元所在的第二分区的第二分区视图和第二分区状态,所述第二数据单元的状态表示所述管理服务器创建所述第二数据单元时允许所述存储客户端使用的第二分区中存储节点,所述第二分区状态表示第二分区包含的各存储节点当前是否故障;所述处理单元,还用于根据所述第二数据单元的状态、所述第二分区视图和所述第二分区状态,确定存储有所述待读取数据对应的EC块且状态为正常的存储节点列表;所述获取单元,还用于从确定的所述存储节点列表中读取所述待读取数据对应的EC块。12.如权利要求10或11所述的存储客户端,其特征在于,在第一发送单元为待写入数据向所述管理服务器请求分配数据单元之前,所述获取单元,还用于获取所述管理服务器返回的第三数据单元的标识;所述第一发送单元,还用于向所述第三数据单元所在的第三分区中包含的各存储节点写入根据待写入数据生成的EC块;当写入失败时,所述第一发送单元向所述管理服务器请求重新分配数据单元。13.一种分布式存储系统中的管理服务器,其特征在于,所述分布式存储系统采用纠删码EC技术存储数据,所述分布式存储系统还包括多个存储节点,N+M个存储节点组成的存储节点组对应一个分区,其中,N个存储节点用来存储数据块,M个存储节点用于存储根据数据块生成的校验块,所述N和M为大于2的正整数,所述管理服务器包括:接收单元,用于接收存储客户端发送的为待写入数据分配数据单元的请求;分配单元,用于为所述待写入数据在第一分区中分配第一数据单元;所述第二发送单元,还用于向所述存储客户端返回所述第一数据单元的标识、第一数据单元的状态以及所述第一分区的第一分区视图,其中,所述第一数据单元的状态指示所述第一分区中允许所述存储客户端使用的存储节点,所述第一分区视图表示所述第一分区包含的存储节点列表,允许所述存储客户端使用的存储节点的数量小于N+M。14.如权利要求13所述的管理服务器,其特征在于,还包括:存储单元,用于记录所述第一数据单元的状态。15.如权利要求14任一所述的管理服务器,其特征在于,所述第一分区中存在故障节点,所述允许所述存储客户端使用的存储节点为所述第一分区中的非故障节点,所述第一数据单元的状态表示所述管理服务器创建所述第一数据单元时所述第一分区包含的各存储节点的状态。16.如权利要求13-15任一所述的管理服务器,其特征在于,所述第二发送单元,还用于在存储客户端执行读操作时,向所述存储客户端返回待读取数据对应的第二数据单元的状态、所述第二数据单元所在的第二分区的第二分区视图和第二分区状态,所述第二数据单元的状态表示所述管理服务器创建所述第二数据单元时允许所述存储客户端使用的第二分区中存储节点,所述第二分区状态表示第二分区包含的各存储节点当前是否故障。17.如权利要求13-16任一所述的管理服务器,其特征在于,在所述存储客户端为待写入数据向所述管理服务器请求分配数据单元之前,所述第二发送单元,还用于向所述存储客户端返回第三数据单元的标识;所述接收单元,还用于在所述存储客户端向所述第三数据单元所在的第三分区中包含的各存储节点写入根据待写入数据生成的EC块失败时,接收所述存储客户端发送的重新分配数据单元的请求。18.如权利要求13-17任一所述的管理服务器,其特征在于,还包括:降级判断单元,用于根据存在故障节点的分区数量判断是否允许分区降级,如果允许,则在所述第一分区中为所述待写入数据分配所述第一数据单元。19.如权利要求18所述的管理服务器,其特征在于,所述降级判断单元,具体用于判断存在故障节点的分区数量与分区总数比值是否大于预设比例,如果是,则确定允许分区降级。20.如权利要求18或19所述的管理服务器,其特征在于,所述分配单元,还用于...

【专利技术属性】
技术研发人员:刘小威伍华涛殷丽慧
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1