一种数据分发方法、数据存储方法、相关装置以及系统.pdf

上传人:32 文档编号:6366132 上传时间:2019-06-04 格式:PDF 页数:32 大小:2.24MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510304621.3

申请日:

2015.06.04

公开号:

CN104932953A

公开日:

2015.09.23

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/10申请日:20150604|||公开

IPC分类号:

G06F11/10

主分类号:

G06F11/10

申请人:

华为技术有限公司

发明人:

王道辉; 张烽; 樊伟; 张志乐; 曾永强

地址:

518129广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

深圳市深佳知识产权代理事务所(普通合伙)44285

代理人:

王仲凯

PDF下载: PDF下载
内容摘要

本发明实施例公开了一种数据分发方法,用于提升分布式存储系统的性能。本发明实施例方法包括:数据分发装置接收用户的存储指令,将存储指令指示存储的待存储的数据划分为P个数据段,并确定每个数据段对应的存储节点组,最后将每个数据段分发到对应的存储节点组的主节点上。本发明实施例还提供了相关的数据存储方法、相关装置以及系统。

权利要求书

权利要求书
1.  一种数据分发方法,应用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述方法包括:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。

2.  根据权利要求1所述的数据分发方法,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述将所述待存储的数据划分为P个数据段包括:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个数据段落在一个所述逻辑区域中。

3.  根据权利要求2所述的数据分发方法,其特征在于,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。

4.  根据权利要求2所述的数据分发方法,其特征在于,所述方法还包括:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
所述确定所述每个数据段对应的存储节点组包括:
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所 述每个数据段所落在的逻辑区域对应的存储节点组。

5.  根据权利要求4所述的数据分发方法,其特征在于,每个所述逻辑区域唯一对应一个key值,所述预先设置并记录所述每个逻辑区域与所述每个存储节点组的对应关系包括:
预先设置并记录所述每个存储节点组对应的key值;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组包括:
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。

6.  一种数据存储方法,适用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述多个存储节点组中的任意一个存储节点组的主存储节点执行所述数据存储方法,所述方法包括:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。

7.  根据权利要求6所述的数据存储方法,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。

8.  根据权利要求7所述的数据存储方法,其特征在于,在所述将所述第 一EC条带分发给m+k个存储节点以执行存储之前,所述方法还包括:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
所述将所述第一EC条带分发给m+k个存储节点以执行存储具体包括:确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。

9.  根据权利要求8所述的数据存储方法,其特征在于,所述确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点以执行存储包括:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。

10.  根据权利要求7所述的数据存储方法,其特征在于,在根据所述第一数据段进行EC编码得到第一EC条带之前,所述方法还包括:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。

11.  根据权利要求6至10中任一项所述的数据存储方法,其特征在于,所述根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带 包括m个第一数据块和k个第一校验块包括:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。

12.  一种数据分发装置,应用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述数据分发装置包括:
指令接收模块,用于接收存储指令,所述存储指令携带待存储的数据;
数据段划分模块,用于将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
节点组确定模块,用于确定所述每个数据段对应的存储节点组;
数据段分发模块,用于将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。

13.  根据权利要求12所述的数据分发装置,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述数据段划分模块具体用于:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个所述数据段落在一个所述逻辑区域中。

14.  根据权利要求13所述的数据分发装置,其特征在于,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个 数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。

15.  根据权利要求13所述的数据分发装置,其特征在于,所述数据分发装置还包括:
关系对应模块,用于预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
所述节点组确定模块具体用于:
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。

16.  根据权利要求15所述的数据分发装置,其特征在于,每个所述逻辑区域唯一对应一个key值,所述关系对应模块具体用于:
预先设置并记录所述每个存储节点组对应的key值k;
所述节点组确定模块具体用于:
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。

17.  一种数据存储装置,适用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述数据存储装置部署在所述多个存储节点组中的任意一个存储节点组的主存储节点上,所述数据存储装置包括:
数据接收模块,用于接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
数据编码模块,用于根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
数据分发模块,用于将所述第一EC条带分发给m+k个存储节点以执行 存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。

18.  根据权利要求17所述的数据存储装置,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。

19.  根据权利要求18所述的数据存储装置,其特征在于,所述数据接收模块还用于:接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
所述数据编码模块还用于:根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
所述数据分发模块具体用于:确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。

20.  根据权利要求19所述的数据存储装置,其特征在于,所述数据分发模块具体用于:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,
在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。

21.  根据权利要求18所述的数据存储装置,其特征在于,所述数据接收模块还用于:
确定是否接收到第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
所述数据编码模块还用于:在所述数据接收模块确定接收到所述第三数据段后,将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。

22.  根据权利要求17至21中任一项所述的数据存储装置,其特征在于,所述数据编码模块还用于:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。

23.  一种数据分发装置,其特征在于,所述数据分发装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,所述处理器用于:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。

24.  一种数据存储装置,其特征在于,所述数据存储装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,所述处理器用于:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k 个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。

25.  一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。

26.  一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。

27.  一种分布式存储系统,其特征在于,包括多个存储节点,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述存储系统还包括如权利要求17至22,或权利要求24中任一项所述的数据存储装置。

说明书

说明书一种数据分发方法、数据存储方法、相关装置以及系统
技术领域
本发明涉及数据存储领域,尤其涉及一种数据分发方法、数据存储方法、相关装置以及系统。
背景技术
现阶段的分布式存储系统越来越多的采用纠删码(EC,Erasure Code)技术对数据进行存储。纠删码技术原理是将数据进行分割成m个数据块,并且采用冗余算法对m个数据块进行校验编码,生成k个校验块,该m个数据块与k个校验块组成一个EC条带。每个EC条带能容忍k个数据块或者校验块的丢失。
在纠删码技术中,数据分发装置对数据进行EC编码,生成m个数据块与k个校验块后分发给m+k个存储节点。若有多个数据分发装置同时读写相同的EC条带的数据,则需要使用分布式锁来解决多个数据分发装置之间的冲突问题。
但是若采用分布式锁方式来解决多数据分发装置冲突的问题,则当遇到上层应用在不同数据分发装置分发IO的情况时,将导致数据分发装置之间频繁的抢锁和锁切换。由于锁切换是一种较为费时的操作,因此频繁的锁切换会产生较大的读写时延,不能满足实际应用的需求。
发明内容
本发明实施例提供了一种数据分发方法,用于提升分布式存储系统的读写性能。
本发明实施例的第一方面提供了一种数据分发方法,应用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成 多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述方法包括:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
结合本发明实施例的第一方面,本发明实施例的第一方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述将所述待存储的数据划分为P个数据段包括:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个数据段落在一个所述逻辑区域中。
结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第三种实现方式还包括:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
所述确定所述每个数据段对应的存储节点组包括:
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
结合本发明实施例的第一方面的第三种实现方式,本发明实施例的第一方面的第四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述预 先设置并记录所述每个逻辑区域与所述每个存储节点组的对应关系包括:
预先设置并记录所述每个存储节点组对应的key值;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组包括:
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
本发明实施例的第二方面提供了一种数据存储方法,适用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述多个存储节点组中的任意一个存储节点组的主存储节点执行所述数据存储方法,所述方法包括:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
结合本发明实施例的第二方面,本发明实施例的第二方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第二种实现方式中,在所述将所述第一EC条带分发给m+k个存储节点以执行存储之前,所述方法还包括:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区 域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
所述将所述第一EC条带分发给m+k个存储节点以执行存储具体包括:确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
结合本发明实施例的第二方面的第二种实现方式,本发明实施例的第二方面的第三种实现方式中,所述确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点以执行存储包括:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第四种实现方式中,在根据所述第一数据段进行EC编码得到第一EC条带之前还包括:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
结合本发明实施例的第二方面、第二方面的第一种至第四种实现方式中的任一项,本发明实施例的第二方面的第五种实现方式中,所述根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数 据块和k个第一校验块包括:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例的第三方面提供了一种数据分发装置,应用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述数据分发装置包括:
指令接收模块,用于接收存储指令,所述存储指令携带待存储的数据;
数据段划分模块,用于将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
节点组确定模块,用于确定所述每个数据段对应的存储节点组;
数据段分发模块,用于将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
结合本发明实施例的第三方面,本发明实施例的第三方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述数据段划分模块具体用于:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个所述数据段落在一个所述逻辑区域中。
结合本发明实施例的第三方面的第一种实现方式,本发明实施例的第三 方面的第二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
结合本发明实施例的第三方面的第一种实现方式,本发明实施例的第三方面的第三种实现方式中,所述数据分发装置还包括:
关系对应模块,用于预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
所述节点组确定模块具体用于:
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
结合本发明实施例的第三方面的第三种实现方式,本发明实施例的第三方面的第四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述关系对应模块具体用于:
预先设置并记录所述每个存储节点组对应的key值k;
所述节点组确定模块具体用于:
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
本发明实施例的第四方面提供了一种数据存储装置,适用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述数据存储装置部署在所述多个存储节点组中的任意一个存储节点组的主存储节点上,所述数据存储装置包括:
数据接收模块,用于接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
数据编码模块,用于根据所述第一数据段进行EC编码得到第一EC条带, 所述第一EC条带包括m个第一数据块和k个第一校验块;
数据分发模块,用于将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
结合本发明实施例的第四方面,本发明实施例的第四方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
结合本发明实施例的第四方面的第一种实现方式,本发明实施例的第四方面的第二种实现方式中,所述数据接收模块还用于:接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
所述数据编码模块还用于:根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
所述数据分发模块具体用于:确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
结合本发明实施例的第四方面的第二种实现方式,本发明实施例的第四方面的第三种实现方式中,所述数据分发模块具体用于:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,
在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
结合本发明实施例的第四方面的第一种实现方式,本发明实施例的第四方面的第四种实现方式中,所述数据接收模块还用于:
确定是否接收到第三数据段,所述第三数据段与所述第一数据段落在相 同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
所述数据编码模块还用于:在所述数据接收模块确定接收到所述第三数据段后,将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
结合本发明实施例的第四方面、或第四方面的第一种至第四种实现方式中的任一项,本发明实施例的第四方面的第五种实现方式中,所述数据编码模块还用于:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例的第五方面提供了一种数据分发装置,所述数据分发装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,处理器用于:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
结合本发明实施例的第五方面,本发明实施例的第五方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述处理器还用于:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数 据段,其中,每个数据段落在一个所述逻辑区域中。
结合本发明实施例的第五方面的第一种实现方式,本发明实施例的第五方面的第二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
结合本发明实施例的第五方面的第一种实现方式,本发明实施例的第五方面的第三种实现方式中,所述处理器还用于:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
结合本发明实施例的第五方面的第三种实现方式,本发明实施例的第五方面的第四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述处理器还用于:
预先设置并记录所述每个存储节点组对应的key值;
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
本发明实施例的第六方面提供了一种数据存储装置,所述数据存储装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,所述处理器用于:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
结合本发明实施例的第六方面,本发明实施例的第六方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的 大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
结合本发明实施例的第六方面的第一种实现方式,本发明实施例的第六方面的第二种实现方式中,所述处理器还用于:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
结合本发明实施例的第六方面的第二种实现方式,本发明实施例的第六方面的第三种实现方式中,所述处理器还用于:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
结合本发明实施例的第六方面的第一种实现方式,本发明实施例的第六方面的第四种实现方式中,所述处理器还用于:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
结合本发明实施例的第六方面、第六方面的第一种至第四种实现方式中的任一项,本发明实施例的第六方面的第五种实现方式中,所述处理器还用于:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例的第七方面提供了一种计算机可读介质,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
结合本发明实施例的第七方面,本发明实施例的第七方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述计算机还执行如下方法:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个数据段落在一个所述逻辑区域中。
结合本发明实施例的第七方面的第一种实现方式,本发明实施例的第七方面的第二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
结合本发明实施例的第七方面的第一种实现方式,本发明实施例的第七方面的第三种实现方式中,所述计算机还执行如下方法:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关 系;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
结合本发明实施例的第七方面的第三种实现方式,本发明实施例的第七方面的第四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述计算机还执行如下方法:
预先设置并记录所述每个存储节点组对应的key值;
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
本发明实施例的第八方面提供了一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
结合本发明实施例的第八方面,本发明实施例的第八方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
结合本发明实施例的第八方面的第一种实现方式,本发明实施例的第八方面的第二种实现方式中,所述计算机还执行如下方法:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述 串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
结合本发明实施例的第八方面的第二种实现方式,本发明实施例的第八方面的第三种实现方式中,所述计算机还执行如下方法:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
结合本发明实施例的第八方面的第一种实现方式,本发明实施例的第八方面的第四种实现方式中,所述计算机还执行如下方法:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
结合本发明实施例的第八方面、第八方面的第一种至第四种实现方式中的任一项,本发明实施例的第八方面的第五种实现方式中,所述计算机还执行如下方法:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例的第九方面提供了一种分布式存储系统,包括多个存储节点,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括 数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述存储系统还包括如本发明实施例第四方面、第四方面的第一种至第五种实现方式中的任一项所提供的数据存储装置,或本发明实施例第六方面、第六方面的第一种至第五种实现方式中的任一项所提供的数据存储装置,或本发明实施例第八方面、第八方面的第一种至第五种实现方式中的任一项所提供的计算机可读介质。
本发明实施例提供的数据分发方法中,数据分发装置确定待存储的数据;将所述待存储的数据按照所述存储区域进行划分,得到P个数据段;确定每段数据段对应的节点组;将每段数据段分发到对应的节点组的主节点上。本发明实施例中数据分发装置将待存储的数据划分为预置的大小后分发给分布式存储系统的节点组中的主节点,交由主节点进行EC编码,数据分发装置本身不对数据进行EC编码,这样就不存在多个数据分发装置同时读写相同的EC条带的数据的问题,数据分发装置之间不存在冲突。因此,本发明实施例中数据分发装置之间无需使用分布式锁来解决数据分发装置之间的读写冲突,进而不会因抢锁而造成读写时延,提升了分布式存储系统的读写性能,能够满足实际应用的需求。
附图说明
图1(a)为EC条带的结构图;
图1(b)为本发明实施例中分布式存储系统的一个结构示意图;
图2为本发明实施例中数据分发方法一个实施例流程图;
图3为本发明实施例中数据存储方法一个实施例流程图;
图4为本发明实施例中数据分发装置一个实施例结构图;
图5为本发明实施例中数据存储装置一个实施例结构图;
图6为本发明实施例中数据分发装置另一个实施例结构图;
图7为本发明实施例中数据存储装置另一个实施例结构图。
具体实施方式
本发明实施例提供了一种数据分发方法,用于提升分布式存储系统的性能。本发明实施例还提供了相关的数据存储方法、相关装置以及系统,以下将分别进行描述。
分布式存储系统中包括多个存储节点。上层的数据分发装置将待存储的数据分为多个数据块,然后分发给分布式存储系统的多个存储节点进行存储。将数据分布式存储能够降低数据丢失的风险,提高分布式存储系统的可靠性。其中,数据分发装置可以为客户端、服务器或其他设备。
EC技术原理是将待存储的数据进行分割成m个数据块,并且采用冗余算法对m个数据块进行校验编码,生成k个校验块,该m个数据块与k个校验块组成一条EC条带,EC条带的基本结构请参阅图1(a)。其中,每个数据块或校验块也可以称为一个EC block。每个EC条带能容忍k个EC block的丢失。分布式存储系统使用EC技术进行数据存储时,数据分发装置会根据待存储的数据生成多条EC条带,并将每个EC条带的m+k个EC block分发给分布式存储系统的m+k个存储节点进行存储。这样,当分布式存储系统中有节点故障时,可以根据非故障节点上的EC block将故障节点上存储的EC block恢复出来。除非存储某条EC条带的m+k个存储节点中有多于k个存储节点发生故障,否则该条EC条带的数据可以被数据分发装置完整的读写。因此,采用EC技术存储数据的分布式存储系统具有很高的可靠性。
存储到分布式存储系统中的EC条带可以被数据分发装置取读或改写。值得指出的是,数据分发装置在取读时,只需要取读EC条带中用于存储数据的数据块,但是在改写时,例如对某条EC条带的m个数据块中的第i个数据块进行改写时,该条EC条带的其余数据块无需被改动,但是需要重新生成该条EC条带的校验块。
若有多个数据分发装置同时对一条EC条带范围内的数据进行读写,则会造成读写冲突,需要使用分布式锁来解决多个数据分发装置之间的冲突问题。但是若采用分布式锁方式来解决多数据分发装置冲突的问题,则当遇到上层 应用在不同数据分发装置分发IO的情况时,将导致数据分发装置之间频繁的抢锁和锁切换。由于锁切换是一种较为费时的操作,因此频繁的锁切换会产生较大的读写时延,不能满足实际应用的需求。
本发明实施例致力于提供一种可靠的数据分发方法与数据存储方法,以解决上述问题。首先,本发明实施例中对分布式存储系统中的存储节点进行了分组,具体的,将存储节点分为多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,且每个存储节点组指定一个主存储节点(下文简称主节点),主存储节点负责与数据分发装置进行交互,还负责控制所在的存储节点组的节点进行数据存储。存储节点组中其余的存储节点为备存储节点(下文简称备节点)。其中,m、k均为正整数。其中,不同的存储节点组的存储节点可以重复,例如,存储节点组1的主节点可以是存储节点组2的备节点。图1(b)本发明实施例中分布式存储系统的一个结构示意图。其中,图1(b)仅用于表示分布式存储系统中的存储节点的一种组成结构,分布式存储系统中各个存储节点也可以为其他结构。
存储节点组的维护有很多种方式,例如,可以设置额外的节点组管理模块。该节点组管理模块可以部署在数据分发装置上,也可以部署在存储节点上,本发明实施例中不做限定。其中,节点组管理模块负责维护各个存储节点组,具体的,节点组管理模块可以负责收集各个存储节点组所包括的存储节点、确定主节点,并通过心跳连接实时监控各存储节点的状态。当存储节点状态变化或节点组主节点变更时,节点组管理模块均需要更新收集到的信息。节点组管理模块将收集到的信息告知每个数据分发装置和存储节点进行记录,使得每个数据分发装置和存储节点都能获知每个节点组的信息。节点组管理模块收集到的信息可以简单的表示为表(1)的形式:

表(1)
其中,表(1)仅为节点组管理模块收集到的信息的一种表现形式,节点组管理模块可以用其他形式来表现收集到的信息,本发明实施例中不做限定。
本发明实施例中,数据分发装置将待存储的数据划分为多个数据段,并将每个数据段分发给对应的节点组的主节点,其流程请参阅图2:
201、接收存储指令;
数据分发装置接收用户的存储指令,该存储指令用于指示存储待存储的数据。
202、将待存储的数据划分为P个数据段;
数据分发装置将待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,每个数据段的大小不大于Z,其中Z为m个数据块的大小。
203、确定每个数据段对应的存储节点组;
数据分发装置确定每个数据段对应的存储节点组。具体的确定方法有很多,将在后面的实施例中详述,此处不做限定。
204、将每个数据段分发到对应的存储节点组的主存储节点上。
数据分发装置确定了每个数据段对应的存储节点组之后,将每个数据段分发到该数据段对应的存储节点组的主节点上。
本实施例提供了一种数据分发方法,其中,数据分发装置接收用户的存储指令,将存储指令指示存储的待存储的数据划分为P个数据段,并确定每个数据段对应的存储节点组,最后将每个数据段分发到对应的存储节点组的主节点上。由于本实施例中,数据分发装置直接将划分后的数据段分发给存储节点,不再对待存储的数据进行EC编码,这样就无需采用分布式锁来解决冲突问题,不会产生频繁的锁切换,提高了分布式存储系统的性能。
步骤201中,数据分发装置解析存储指令,可以获得待存储数据的起始地址、大小或其他信息。步骤202中,数据分发装置划分数据段的方法有很多,例如,分布式存储系统的逻辑卷(Logical Volume)可以包括多个逻辑区域,每个逻辑区域的大小均为Z且互不重叠。数据分发装置在进行数据段划分时,可以根据待存储数据的逻辑地址,将落在一个逻辑区域内的数据划分 为一个数据段。例如,若Z为4M,则分布式存储系统的逻辑卷可以分为多个逻辑区域,第一个逻辑区域的逻辑地址为0~4M、第二个逻辑区域的逻辑地址为4M~8M、第三个逻辑区域的逻辑地址为8M~12M……,假设待存储的数据的逻辑地址为5M~12M,则由于5M~8M落在第二个逻辑区域的逻辑地址的范围内,8M~12M落在第三个逻辑区域的逻辑地址的范围内,则数据分发装置将该5M~12M的待存储的数据划分为两个数据段,该两个数据段的逻辑地址分别为5M~8M和8M~12M。
从上一段的例子可以总结出,待存储的数据划分出的P个数据段中,第1个数据段的逻辑地址为该待存储的数据的起始地址,第p个数据段的起始地址为第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
若将分布式存储系统的逻辑卷分为多个逻辑区域,则可以预先设置每个逻辑区域和每个存储节点组的对应关系,这样步骤203中,数据分发装置就可以将每个数据段落在的逻辑区域所对应的存储节点组,确定为该数据段对应的存储节点组。更为具体的,可以为分布式存储系统的每个逻辑区域设置唯一的key值,数据分发装置预先设置并记录每个存储节点组对应的key值。这样,数据分发装置就可以将每个数据段落在的逻辑区域所对应的key值,确定为该数据段对应的key值,然后根据每个数据段的key值和key值与存储节点组的对应关系确定每个数据段对应的存储节点组。
可以理解的,若分布式存储系统上层的多个数据分发装置均采用步骤201至204中所述的方法进行数据分发,则即使是多个数据分发装置分发的数据段,只要分发的数据段落在分布式存储系统的相同的逻辑区域内,就会被分发给相同的节点组的主节点。
主节点接收到数据分发装置分发的数据段后,对接收到的数据段进行EC编码得到EC条带,并将EC条带中的m+k个EC block分配给所在的节点组的m+k个存储节点进行存储。图2所示的实施例中,数据分发装置共分发P个数据段,因此要将P个数据段分发给P个存储节点组的主节点。下面将以其中一个存储节点组的主节点为例进行说明,请参阅图3。
301、接收第一数据段;
主节点接收数据分发装置分发的第一数据段,其中,第一数据段为数据 分发装置分发的P个数据段中的一个数据段。其中,第一数据段的大小不大于Z。
特别的,当步骤302中数据分发装置按照分布式存储系统的逻辑区域来划分数据段时,则:若第一数据段是该P个数据段中的第1个或最后一个数据段,则第一数据段的大小可以小于Z;若第一数据段是该P个数据段中的第2个至(P-1)个数据段中的任意一个数据段,则第一数据段的大小应等于Z。
302、根据第一数据段进行EC编码得到第一EC条带;
主节点根据第一数据段进行EC编码,得到第一EC条带。该第一EC条带中包括m+k个第一EC block,分别为m个第一数据块和k个第一校验块。
303、将m+k个第一EC block分别分发给所在的节点组的m+k个节点以执行存储。
主节点将第一EC条带的m个第一数据块和k个第一校验块分别分发给主节点所在的存储节点组的m+k个存储节点以执行存储,该m+k个存储节点中每个存储节点负责存储一个第一EC block。其中,主节点可以自己存储一个EC block(可以为第一数据块,也可以为第一校验块),然后将剩余的m+k-1个第一EC block发送给m+k-1个备节点存储,每个备节点存储一个第一EC block。主节点也可以不存储第一EC block,直接将m+k个第一EC block发送给m+k个备节点存储,本实施例中不做限定。
图2所示的实施例给出了数据分发装置进行数据分发的方法,本实施例对应的提供了一种数据存储方法,用于存储数据分发装置分发的数据。其中,主节点接收数据分发装置分发的第一数据段,根据第一数据段进行EC编码得到第一EC条带,并将第一EC条带的m+k个数据块分配给m+k个存储节点进行存储。与现有技术相比,本实施例提供的方法将原本由数据分发装置执行的EC编码操作改为由主节点执行,由这样就不存在数据分发装置进行EC编码造成的冲突问题,进而无需采用分布式锁来解决冲突问题,不会产生频繁的锁切换,提高了分布式存储系统的性能。
可以理解的,分布式存储系统中任何一个存储节点组的主节点均可以执行图3所示的实施例提供的数据存储方法。
之前的实施例中提到,分布式存储系统的逻辑卷可以包括多个不重叠的逻辑区域,数据分发装置将落在一个逻辑区域内的数据划分为一个数据段。且存储节点组和逻辑区域存在对应关系。可以理解的,本实施例中主节点接收的第一数据段的逻辑地址,应落在该主节点所在的存储节点组所对应的一个逻辑区域中。可以理解的,不同存储节点组的主节点接收到的数据段的逻辑地址不存在重叠。
其中,主节点在生成EC条带时,还可以生成EC条带对应的版本号。
在实际应用中,主节点在接收到第一数据段时,也可能接收到同一个或另一个数据分发装置分发的数据段。此时主节点进行的EC编码可以被分为如下情况:
情况一:主节点接收第二数据段,其中第二数据段与第一数据段落在相同的逻辑区域且第二数据段的逻辑地址与第一数据段的逻辑地址存在重叠;主节点根据第二数据段进行EC编码得到第二EC条带,其中第二EC条带包括m个第二数据块和k个第二校验块;主节点确定第一EC条带与第二EC条带的串行分发顺序,并根据该串行分发顺序,将第一EC条带与第二EC条带串行分发给该m+k个存储节点。具体的,若主节点先接收了第一数据段,再接收了第二数据段,则主节点先将第一EC条带的m+k个第一EC block分别分发给m+k个存储节点以执行存储,待接收到该m+k个存储节点发送的响应消息之后,再将第二EC条带的m+k个第二EC block分别分发给m+k个存储节点以执行存储,其中,响应消息用于表示第一数据段在该m+k个存储节点上存储成功,第二EC条带的版本号大于第一EC条带的版本号;若主节点先接收了第二数据段,再接收了第一数据段,则主节点先将第二EC条带的m+k个第二EC block分别分发给m+k个存储节点以执行存储,再将第一EC条带的m+k个第一EC block分别分发给m+k个存储节点以执行存储,其中第一EC条带的版本号大于第二EC条带的版本号。
情况二:主节点接收第三数据段,其中第一数据段与第三数据段落在同一个逻辑区域内,且第一数据段与第三数据段的逻辑地址不存在重叠。在这种情况下,主节点将第三数据段合并到第一数据段中,然后将合并后的第一数据段作为步骤302中要编码的第一数据段,然后继续执行步骤302与步骤 303。例如,第一数据段的逻辑地址的范围为4M~5M,第三数据段的逻辑地址的范围为5M~8M,第一数据段与第三数据段的逻辑地址均落在逻辑区域4M~8M中。主节点将第三数据段合并到第一数据段中,然后根据合并后的第一数据段进行EC编码,得到第一EC条带。
情况三:主节点接收第四数据段,其中第一数据段与第四数据段落在不同的逻辑区域内。这种情况一般发生在身为两个或多个存储节点组的主节点的存储节点身上,或对多个逻辑区域对应的同一个存储节点组的主节点身上。这种情况下,第一数据段与第四数据段落在不同的逻辑区域内,因此第一数据段与第四数据段的逻辑地址不存在重叠,主节点只需正常对第一数据段与第四数据段进行编码与数据分发即可,不会造成存储冲突。上述三种情况不仅可以用在主节点同时接收到两个数据段的场景下,也可以用在主节点同时接收到三个或更多个数据段的场景中,本实施例中不做限定。
其中,图2所示的实施例中已经说明了,分布式存储系统的每个逻辑区域对应有唯一的key值,每个数据段所落在的逻辑区域的key值,就是该数据段的key值。由于情况一中,第一数据段与第二数据段落在相同的逻辑区域内,因此第一数据段与第二数据段具有相同的key值;情况二中,第一数据段与第三数据段落在相同的逻辑区域内,因此第一数据段与第三数据段具有相同的key值;情况三中,第一数据段与第四数据段落在不同的逻辑区域内,因此第一数据段与第四数据段具有不同的key值。主节点可以根据数据段的key值判断两个数据段是否落在同一个逻辑区域内。
特别的,可以将数据段的key值作为对应的EC条带的key值,以标识EC条带数据部分的逻辑地址的范围。EC条带的key值可以在EC条带的每个EC block中携带。
步骤302中,主节点根据第一数据段进行EC编码得到第一EC条带。具体的,若第一数据段的大小为Z,则第一数据段可以恰好被分为m个第一数据块,然后主节点对该m个第一数据块进行校验编码得到k个第一校验块,这样就得到了第一EC条带。
若第一数据段的大小小于Z,则第一数据段不足以被分为m个数据块,主节点需要使用已存储的数据将第一数据段的大小补齐为Z,然后将补齐后的 第一数据段作为步骤302中要编码的第一数据段,执行将第一数据段分为m个第一数据块,并对该m个第一数据块进行校验编码得到k个第一校验块的步骤。其中,为了保证第一数据段能够落在一个逻辑区域中,主节点应该从已存储的数据中,选取与第一数据段处于同一逻辑区域的数据来补齐第一数据段。例如,若第一数据段的逻辑地址为5M~8M,落在逻辑区域4M~8M中,则主节点应选取已存储的逻辑地址为4M~5M的数据,将第一数据段补齐为4M~8M。
主节点根据第二、第三、第四数据段进行EC编码的方法与据第一数据段进行EC编码的方法类似,此处不做赘述。
为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行描述。
分布式存储系统上层有数据分发装置A与数据分发装置B。分布式存储系统通过EC条带来存储数据,每个EC条带包括4个数据块和2个校验块。分布式存储系统包括100个存储节点组,每个存储节点组均指定一个主节点。其中存储节点组1包括6个存储节点,主节点为节点A,备节点为节点B、节点C、节点D、节点E和节点F。分布式存储系统的逻辑卷分为多个逻辑区域,每个逻辑区域的大小为4M,即第一个逻辑区域的逻辑地址的范围为0~4M、第二个逻辑区域的逻辑地址的范围为4M~8M、第三个逻辑区域的逻辑地址的范围为8M~12M……,每个逻辑区域对应有唯一的key值,第一个逻辑区域对应的key值为1,第二个逻辑区域对应的key值为2,第三个逻辑区域对应的key值为3……
数据分发装置A接收用户的存储指令,该存储指令中携带有待存储的数据,待存储的数据的逻辑地址为5M~7M。
由于5M~8M落在第二个逻辑区域内,8M~12M落在第三个逻辑区域内,因此数据分发装置A将待存储的数据划分为2个数据段,其中数据段1的逻辑地址为5M~8M,key值为2;数据段2的逻辑地址为8M~12M,key值为3。
数据分发装置A预先设置并记录有key值与存储节点组的对应关系,确定key值2对应存储节点组1,key值3对应存储节点组6。
数据分发装置A将数据段1分发到存储节点组1的主节点(即节点A) 上,将数据段2分发到存储节点组6的主节点上。
节点A接收数据段1,之后还接收了数据分发装置B分发的数据段3,数据段3的逻辑地址为4M~7M。节点A将数据段1的4M~5M部分的数据补齐,然后对补齐后的数据段1进行EC编码,得到EC条带1,EC条带1的key值为2,版本号为1;节点A还将数据段3的7M~8M部分的数据补齐,然后对补齐后的数据段3进行EC编码,得到EC条带3,EC条带3的key值也为2,版本号为2。其中,每条EC条带包括6个EC block,分别为4个数据块和2个校验块。
对于EC条带1,节点A自己存储EC条带1的一个EC block,并将剩余的5个EC block分配给节点B~F存储,使得节点B~F分别存储一个EC条带1的EC block。节点B~F成功存储了EC条带1的EC block后,向节点A发送响应消息,节点A接收到响应消息后,自己存储EC条带2的一个EC block,并将剩余的5个EC block分配给节点B~F存储,使得节点B~F分别存储一个EC条带2的EC block。
上面的方法详细描述了本发明实施例中数据分发与数据存储的方法,下面的实施例将提供相应的装置,以实现上述方法。
本发明实施例提供的数据分发装置的基本结构请参阅图4,包括:
指令接收模块401,用于接收存储指令,其中存储指令携带待存储的数据;
数据段划分模块402,用于将待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,每个数据段的大小不大于Z,Z为m个数据块的大小,P为正整数;
节点组确定模块403,用于确定每个数据段对应的存储节点组;
数据段分发模块404,用于将每个数据段分发到节点组确定模块403确定的每个数据段对应的存储节点组的主存储节点上。
本实施例提供的一种数据分发装置中,指令接收模块401接收用户的存储指令,数据段划分模块402将存储指令指示存储的待存储的数据划分为P个数据段,节点组确定模块403确定每个数据段对应的存储节点组,数据段分发模块404将每个数据段分发到对应的存储节点组的主节点上。由于本实施例中,数据分发装置直接将划分后的数据段分发给存储节点,不再对待存 储的数据进行EC编码,这样就无需采用分布式锁来解决冲突问题,不会产生频繁的锁切换,提高了分布式存储系统的性能。
优选的,作为本发明的又一个实施例,分布式存储系统的逻辑卷分为多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;数据段划分模块402具体用于:
根据待存储的数据的逻辑地址,将待存储的数据划分为P个数据段,其中,每个数据段落在一个逻辑区域中。
优选的,作为本发明的又一个实施例,数据段划分模块402划分的P个数据段中,第1个数据段的起始地址为待存储的数据的起始地址,第p个数据段的起始地址为第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
优选的,作为本发明的又一个实施例,数据分发装置还包括关系对应模块405,用于预先设置并记录每个逻辑区域与每个存储节点组的对应关系;节点组确定模块403具体用于:根据每个逻辑区域与每个存储节点组之间的对应关系,确定每个数据段所落在的逻辑区域对应的存储节点组。其中,关系对应模块405为可选模块,数据分发装置也可以不具有关系对应模块405。
优选的,作为本发明的又一个实施例,分布式存储系统的每个逻辑区域唯一对应一个key值,关系对应模块405具体用于:预先设置并记录存储节点组对应的key值;节点组确定模块403具体用于:根据每个数据段所落在的逻辑区域,确定每个数据段的key值;根据每个数据段的key值确定每个数据段对应的存储节点组。
本发明实施例还提供了相关的数据存储装置,适用于分布式存储系统的任何一个存储节点组的主节点上,其基本结构请参阅图5,包括:
数据接收模块501,用于接收第一数据段,其中,第一数据段的大小不大于Z,Z为m个数据块的大小;
数据编码模块502,用于根据第一数据段进行EC编码得到第一EC条带,其中,第一EC条带包括m个第一数据块和k个第一校验块;
数据分发模块503,用于将第一EC条带分发给m+k个存储节点以执行存储,其中,该m+k个存储节点中的每个存储节点负责存储第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
图4所示的实施例给出了一种数据分发装置,本实施例对应的提供了一种数据存储装置,用于存储数据分发装置分发的数据。主节点的数据存储装置中,数据接收模块501接收数据分发装置分发的第一数据段,数据编码模块502对第一数据段进行EC编码得到第一EC条带,数据分发模块503将第一EC条带的m+k个数据块分配给m+k个存储节点进行存储。与现有技术相比,本实施例将原本由数据分发装置执行的EC编码操作改为由数据存储装置执行,由这样就不存在数据分发装置进行EC编码造成的冲突问题,进而无需采用分布式锁来解决冲突问题,不会产生频繁的锁切换,提高了分布式存储系统的性能。
优选的,作为本发明的又一个实施例,分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠。其中第一数据段落在一个逻辑区域中。
优选的,作为本发明的又一个实施例,数据接收模块501还用于:
接收第二数据段,其中,第二数据段与第一数据段落在相同的逻辑区域且第二数据段的逻辑地址与第一数据段的逻辑地址存在重叠;数据编码模块502还用于:根据第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;数据分发模块503具体用于:确定第一EC条带与第二EC条带的串行分发顺序,并根据该串行分发顺序,将第一EC条带与第二EC条带串行分发给m+k个存储节点以执行存储,其中,该串行分发操作用于规避第一EC条带与第二EC条带在m+k个存储节点上的存储冲突,该m+k个存储节点中的每个存储节点负责存储第一EC条带的m个第一数据块或者k个第一校验块中的任一个,和第二EC条带的m个第二数据块或者k个第二校验块中的任一个。优选的,作为本发明的又一个实施例,数据分发模块503通过如下方法将第一EC条带与第二EC条带串行分发给m+k个存储节点以执行存储:
若第一数据段的接收时间早于第二数据段的接收时间,则先将第一EC条带分发给m+k个存储节点以执行存储;在接收到该m+k个存储节点成功存储第一EC条带的响应消息之后,再将第二EC条带分发给该m+k个存储节点以执行存储;或者,
若第一数据段的接收时间晚于所述第二数据段的接收时间,则先将第二EC条带分发给m+k个存储节点以执行存储;在接收到该m+k个存储节点成功存储第二EC条带的响应消息之后,再将第一EC条带分发给m+k个存储节点以执行存储。
优选的,作为本发明的又一个实施例,数据接收模块501还用于:接收第三数据段,其中,第三数据段与第一数据段落在相同的逻辑区域且第三数据段的逻辑地址与第一数据段的逻辑地址不存在重叠;
数据编码模块502还用于:将第三数据合并到所述第一数据段中,并触发根据第一数据段进行EC编码得到第一EC条带的步骤。
优选的,作为本发明的又一个实施例,数据编码模块502通过如下方法对第一数据段进行EC编码:若第一数据段的大小等于Z,则将第一数据段划分为m个第一数据块,并对m个第一数据块进行校验编码得到的k个第一校验块;若第一数据段的大小小于Z,则使用已存储的数据将第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对m个第一数据块进行校验编码得到的k个第一校验块。
为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行描述。
分布式存储系统上层有数据分发装置A与数据分发装置B。分布式存储系统通过EC条带来存储数据,每个EC条带包括4个数据块和2个校验块。分布式存储系统包括100个存储节点组,每个存储节点组均指定一个主节点。其中存储节点组1包括6个存储节点,主节点为节点A,备节点为节点B、节点C、节点D、节点E和节点F。分布式存储系统的逻辑卷分为多个逻辑区域,每个逻辑区域的大小为4M,即第一个逻辑区域的逻辑地址的范围为0~4M、第二个逻辑区域的逻辑地址的范围为4M~8M、第三个逻辑区域的逻辑地址的范围为8M~12M……,每个逻辑区域对应有唯一的key值,第一个逻辑区域对应的key值为1,第二个逻辑区域对应的key值为2,第三个逻辑区域对应的key值为3……
数据分发装置A的指令接收模块401接收用户的存储指令,该存储指令中携带有待存储的数据,其中待存储的数据的逻辑地址为为5M~7M。
由于5M~8M落在第二个逻辑区域内,8M~12M落在第三个逻辑区域内,因此数据段划分模块402将待存储的数据划分为2个数据段,其中数据段1的逻辑地址为5M~8M,key值为2;数据段2的逻辑地址为8M~12M,key值为3。
节点组确定模块403预先设置并记录有key值与存储节点组的对应关系,确定key值2对应存储节点组1,key值3对应存储节点组6。
数据段分发模块404将数据段1分发到存储节点组1的主节点(即节点A)上,将数据段2分发到存储节点组6的主节点上。
节点A的数据接收模块501接收数据段1,之后还接收了数据分发装置B分发的数据段3,数据段3的逻辑地址为4M~7M。数据编码模块502将数据段1的4M~5M部分的数据补齐,然后对补齐后的数据段1进行EC编码,得到EC条带1,EC条带1的key值为2,版本号为1;数据编码模块502还将数据段3的7M~8M部分的数据补齐,然后对补齐后的数据段3进行EC编码,得到EC条带3,EC条带3的key值也为2,版本号为2。其中,每条EC条带包括6个EC block,分别为4个数据块和2个校验块。
对于EC条带1,数据分发模块503为节点A分配EC条带1的一个EC block,并将剩余的5个EC block分配给节点B~F存储,使得节点B~F分别存储一个EC条带1的EC block。。节点B~F成功存储了EC条带1的EC block后,向节点A发送响应消息,数据分发模块503在节点A接收到响应消息后,自己存储EC条带2的一个EC block,并将剩余的5个EC block分配给节点B~F存储,使得节点B~F分别存储一个EC条带2的EC block。
上面从单元化功能实体的角度对本发明实施例中的数据分发装置进行了描述,下面从硬件处理的角度对本发明实施例中的数据分发装置进行描述,请参阅图6,本发明实施例中的数据分发装置600另一实施例包括:
输入装置601、输出装置602、处理器603和存储器604(其中数据分发装置600中的处理器603的数量可以一个或多个,图6中以一个处理器603为例)。在本发明的一些实施例中,输入装置601、输出装置602、处理器603和存储器604可通过总线或其它方式连接,其中,图6中以通过总线连接为例。
其中,通过调用存储器604存储的操作指令,处理器603用于执行如下步骤:
接收存储指令,所述存储指令携带待存储的数据;
根据所述待存储的数据,将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
本发明的一些实施例中,分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,处理器603还用于执行如下步骤:
根据所述待存储的数据,将所述待存储的数据划分为P个数据段,其中,每个所述数据段落在一个所述逻辑区域中。
本发明的一些实施例中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
本发明的一些实施例中,处理器603还用于执行如下步骤:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
本发明的一些实施例中,每个所述逻辑区域唯一对应一个key值,处理器603还用于执行如下步骤:
预先设置并记录每个存储节点组对应的key值;
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
下面从硬件处理的角度对本发明实施例中的数据存储装置进行描述,请参阅图7,本发明实施例中的数据存储装置700另一实施例包括:
输入装置701、输出装置702、处理器703和存储器704(其中数据存储 装置700中的处理器703的数量可以一个或多个,图7中以一个处理器703为例)。在本发明的一些实施例中,输入装置701、输出装置702、处理器703和存储器704可通过总线或其它方式连接,其中,图7中以通过总线连接为例。
其中,通过调用存储器704存储的操作指令,处理器703用于执行如下步骤:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
本发明的一些实施例中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
本发明的一些实施例中,处理器703还用于执行如下步骤:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
本发明的一些实施例中,处理器703还用于执行如下步骤:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储;
在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储;
在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
本发明的一些实施例中,处理器703还用于执行如下步骤:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
本发明的一些实施例中,处理器703还用于执行如下步骤:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例还提供了一种分布式存储系统,该分布式存储系统包括多个存储节点,该分布式存储系统通过EC条带来存储数据,每个EC条带包括数据部分和校验部分,每个EC条带的数据部分包括m个数据块,每个EC条带的校验部分包括对该m个数据块进行校验编码后得到的k个校验块该多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
该分布式存储系统还包括图5或图7所示的数据存储装置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可 以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

一种数据分发方法、数据存储方法、相关装置以及系统.pdf_第1页
第1页 / 共32页
一种数据分发方法、数据存储方法、相关装置以及系统.pdf_第2页
第2页 / 共32页
一种数据分发方法、数据存储方法、相关装置以及系统.pdf_第3页
第3页 / 共32页
点击查看更多>>
资源描述

《一种数据分发方法、数据存储方法、相关装置以及系统.pdf》由会员分享,可在线阅读,更多相关《一种数据分发方法、数据存储方法、相关装置以及系统.pdf(32页珍藏版)》请在专利查询网上搜索。

本发明实施例公开了一种数据分发方法,用于提升分布式存储系统的性能。本发明实施例方法包括:数据分发装置接收用户的存储指令,将存储指令指示存储的待存储的数据划分为P个数据段,并确定每个数据段对应的存储节点组,最后将每个数据段分发到对应的存储节点组的主节点上。本发明实施例还提供了相关的数据存储方法、相关装置以及系统。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1