一种数据分发方法、数据存储方法、相关装置以及系统的制作方法

文档序号:9217094阅读:250来源:国知局
一种数据分发方法、数据存储方法、相关装置以及系统的制作方法
【技术领域】
[0001] 本发明涉及数据存储领域,尤其涉及一种数据分发方法、数据存储方法、相关装置 以及系统。
【背景技术】
[0002] 现阶段的分布式存储系统越来越多的采用纠删码(EC,ErasUreCode)技术对数据 进行存储。纠删码技术原理是将数据进行分割成m个数据块,并且采用冗余算法对m个数 据块进行校验编码,生成k个校验块,该m个数据块与k个校验块组成一个EC条带。每个 EC条带能容忍k个数据块或者校验块的丢失。
[0003] 在纠删码技术中,数据分发装置对数据进行EC编码,生成m个数据块与k个校验 块后分发给m+k个存储节点。若有多个数据分发装置同时读写相同的EC条带的数据,则需 要使用分布式锁来解决多个数据分发装置之间的冲突问题。
[0004] 但是若采用分布式锁方式来解决多数据分发装置冲突的问题,则当遇到上层应用 在不同数据分发装置分发10的情况时,将导致数据分发装置之间频繁的抢锁和锁切换。由 于锁切换是一种较为费时的操作,因此频繁的锁切换会产生较大的读写时延,不能满足实 际应用的需求。

【发明内容】

[0005] 本发明实施例提供了一种数据分发方法,用于提升分布式存储系统的读写性能。
[0006] 本发明实施例的第一方面提供了一种数据分发方法,应用于分布式存储系统,所 述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分, 所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m 个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所 述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k, 每个存储节点组指定一个主存储节点,所述m、k均为正整数;
[0007] 所述方法包括:
[0008] 接收存储指令,所述存储指令携带待存储的数据;
[0009] 将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所 述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
[0010] 确定所述每个数据段对应的存储节点组;
[0011] 将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节 点上。
[0012] 结合本发明实施例的第一方面,本发明实施例的第一方面的第一种实现方式中, 所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
[0013] 所述将所述待存储的数据划分为P个数据段包括:
[0014] 根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其 中,每个数据段落在一个所述逻辑区域中。
[0015] 结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第 二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起 始地址,所述P个数据段中的第P个数据段的起始地址为所述第P个数据段所落在逻辑区 域的起始地址,2彡p彡P。
[0016] 结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第 三种实现方式还包括:
[0017] 预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
[0018] 所述确定所述每个数据段对应的存储节点组包括:
[0019] 根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数 据段所落在的逻辑区域对应的存储节点组。
[0020] 结合本发明实施例的第一方面的第三种实现方式,本发明实施例的第一方面的第 四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述预先设置并记录所述每个 逻辑区域与所述每个存储节点组的对应关系包括:
[0021] 预先设置并记录所述每个存储节点组对应的key值;
[0022] 根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数 据段所落在的逻辑区域对应的存储节点组包括:
[0023] 根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
[0024] 根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
[0025] 本发明实施例的第二方面提供了一种数据存储方法,适用于分布式存储系统,所 述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分, 所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m 个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所 述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k, 每个存储节点组指定一个主存储节点,所述m、k均为正整数;
[0026] 所述多个存储节点组中的任意一个存储节点组的主存储节点执行所述数据存储 方法,所述方法包括:
[0027] 接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
[0028] 根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第 一数据块和k个第一校验块;
[0029] 将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节 点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中 的任一个。
[0030] 结合本发明实施例的第二方面,本发明实施例的第二方面的第一种实现方式中, 所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠, 所述第一数据段落在一个所述逻辑区域中。
[0031] 结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第 二种实现方式中,在所述将所述第一EC条带分发给m+k个存储节点以执行存储之前,所述 方法还包括:
[0032] 接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述 第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
[0033] 根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第 二数据块和k个第二校验块;
[0034] 所述将所述第一EC条带分发给m+k个存储节点以执行存储具体包括:确定所述第 一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC 条带与所述第二EC条带串行分发给所述m+k个存储节点。
[0035] 结合本发明实施例的第二方面的第二种实现方式,本发明实施例的第二方面的第 三种实现方式中,所述确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所 述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点 以执行存储包括:
[0036] 若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC 条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第 一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储; 或者,
[0037] 若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC 条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第 二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
[0038] 结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第 四种实现方式中,在根据所述第一数据段进行EC编码得到第一EC条带之前还包括:
[0039] 接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述 第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
[0040] 将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行 EC编码得到第一EC条带的步骤。
[0041] 结合本发明实施例的第二方面、第二方面的第一种至第四种实现方式中的任一 项,本发明实施例的第二方面的第五种实现方式中,所述根据所述第一数据段进行EC编码 得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块包括:
[0042] 当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并 对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
[0043] 当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小 补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进 行校验编码得到的k个第一校验块。
[0044] 本发明实施例的第三方面提供了一种数据分发装置,应用于分布式存储系统,所 述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分, 所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m 个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所 述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k, 每个存储节点组指定一个主存储节点,所述m、k均为正整数;
[0045] 所述数据分发装置包括:
[0046] 指令接收模块,用于接收存储指令,所述存储指令携带待存储的数据;
[0047] 数据段划分模块,用于将所述待存储的数据划分为P个数据段,其中,每个数据段 对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
[0048] 节点组确定模块,用于确定所述每个数据段对应的存储节点组;
[0049] 数据段分发模块,用于将所述每个数据段分发到确定的所述每个数据段对应的存 储节点组的主存储节点上。
[0050] 结合本发明实施例的第三方面,本发明实施例的第三方面的第一种实现方式中, 所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
[0051] 所述数据段划分模块具体用于:
[0052] 根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其 中,每个所述数据段落在一个所述逻辑区域中。
[0053] 结合本发明实施例的第三方面的第一种实现方式,本发明实施例的第三方面的第 二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起 始地址,所述P个数据段中的第P个数据段的起始地址为所述第P个数据段所落在逻辑区 域的起始地址,2彡p彡P。
[0054] 结合本发明实施例的第三方面的第一种实现方式,本发明实施例的第三方面的第 三种实现方式中,所述数据分发装置还包括:
[0055] 关系对应模块,用于预先设置并记录所述每个逻辑区域与所述每个存储节点组之 间的对应关系;
[0056] 所述节点组确定模块具体用于:
[0057] 根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数 据段所落在的逻辑区域对应的存储节点组。
[0058] 结合本发明实施例的第三方面的第三种实现方式,本发明实施例的第三方面的第 四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述关系对应模块具体用于:
[0059] 预先设置并记录所述每个存储节点组对应的key值k;
[0060] 所述节点组确定模块具体用于:
[0061] 根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
[0062] 根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
[0063] 本发明实施例的第四方面提供了一种数据存储装置,适用于分布式存储系统,所 述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分, 所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m 个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所 述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k, 每个存储节点组指定一个主存储节点,所述m、k均为正整数;
[0064] 所述数据存储装置部署在所述多个存储节点组中的任意一个存储节点组的主存 储节点上,所述数据存储装置包括:
[0065] 数据接收模块,用于接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为 m个数据块的大小;
[0066] 数据编码模块,用于根据所述第一数据段进行EC编码得到第一EC条带,所述第一 EC条带包括m个第一数据块和k个第一校验块;
[0067] 数据分发模块,用于将所述第一EC条带分发给m+k个存储节点以执行存储,其中, 所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者 k个第一校验块中的任一个。
[0068] 结合本发明实施例的第四方面,本发明实施例的第四方面的第一种实现方式中, 所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠, 所述第一数据段落在一个所述逻辑区域中。
[0069] 结合本发明实施例的第四方面的第一种实现方式,本发明实施例的第四方面的第 二种实现方式中,所述数据接收模块还用于:接收第二数据段,所述第二数据段与所述第一 数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址 存在重叠;
[0070] 所述数据编码模块还用于:根据所述第二数据段进行EC编码得到第二EC条带,所 述第二EC条带包括m个第二数据块和k个第二校验块;
[0071] 所述数据分发模块具体用于:确定所述第一EC条带
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1