一种数据存储方法以及协议服务器的制造方法

文档序号:9489110阅读:358来源:国知局
一种数据存储方法以及协议服务器的制造方法
【技术领域】
[0001] 本发明涉及计算机领域,尤其涉及一种数据存储方法以及协议服务器。
【背景技术】
[0002] 在现有的分布式存储系统中,多个存储节点相连形成集群,每个存储节点均具备 数据存储功能。分布式存储系统通常提供一台或多台协议服务器(英文全称:Protocol server)向用户提供标准的服务器信息块(英文全称:ServerMessageBlock,简称:SMB) 协议服务功能。
[0003] 如图1所示,分布式存储系统包括协议服务器和多个存储节点,图1示出了存储 节点1至存储节点5,用户程序可以通过如图1所示的协议客户端(英文全称:Protocol client)访问存储系统,其中,协议客户端与协议服务器通过前端网络相连,分布式存储系 统内部各存储节点之间通过后端网络连接,前端网络用于用户业务与分布式存储系统之间 进行请求与数据交互,后端网络用于分布式存储系统内部各存储节点之间进行请求与数据 交互。
[0004] 现有技术通常采用前向纠错(英文全称:ForwardErrorCorrection,简称:FEC) 的保护方式,使得分布式存储系统具备在存储节点发生故障时也能继续提供数据服务的能 力。前向纠错数据保护方式也叫N+M保护方式,其中,N代表存储节点的数量,Μ代表在不发 生数据丢失的前提下,集群所允许的同时发生故障的存储节点数。在Ν+Μ保护方式下,协议 服务器以分条为单位进行读写,一个分条包括Ν个数据条带以及Μ个校验条带,具体地,协 议服务器在写入大块数据时,将大块数据分割成长度固定的Ν个小块数据,根据所述Ν个小 块数据通过算法进行计算,得到Μ个纠删码,则一个分条中的Ν个数据条带用于存储所述Ν 个小块数据,Μ个校验条带用于存储所述Μ个纠删码,其中,纠删码具有冗余信息,在存储节 点发生故障时,可以利用纠删码计算出丢失的数据。
[0005] 但是,由于纠删码是根据整个分条计算出来的,因此,当在分条的任意一数据条带 内新写入数据时,协议服务器需要先从整个分条内的数据以及纠删码读出,并与新写入的 数据合并后重新计算纠删码,得到新的分条,并将新的分条的写入存储节点。以图1举例说 明,图1示出了一个分条,该分条包括数据条带1至数据条带4以及校验条带,其中,数据条 带1至数据条带4存储数据1至数据4,校验条带存储有该分条的纠删码,协议服务器根据 数据1至数据4中的任意三个数据,以及该纠删码,可以计算出第四个数据,此时,若协议服 务器向数据条带3新写入数据5时,需要先将数据条带1至数据条带4中存储的数据1至 数据4,以及校验条带中的纠删码全部读出,再利用数据5替换数据3,根据数据1,数据2, 数据5和数据4重新计算得到新的纠删码,最后将数据1,数据2,数据5和数据4以及新的 纠删码重新写入分条。
[0006] 由上可知,在现有的Ν+Μ保护方式下,协议服务器向分条的一个数据条带内写入 新的数据的过程十分繁琐,数据写入速率较慢。

【发明内容】

[0007] 本发明提供一种数据存储方法以及协议服务器,用于解决现有技术对于分布式存 储系统的数据保护降低了数据写入速率的技术问题。
[0008] 为了达到上述目的,本发明采用如下的技术方案:
[0009] 第一方面,提供一种数据存储方法,包括:
[0010] 协议服务器接收第一数据;其中,所述第一数据用于更新目的分条的第一数据条 带内存储的数据,所述目的分条包括N个数据条带以及Μ个校验条带,所述N个数据条带分 别是Ν个存储节点上特定的存储空间,所述Μ个校验条带分别是Μ个存储节点上特定的存 储空间,Ν为大于2的正整数,Μ为小于Ν的正整数;所述第一数据条带是所述Κ个数据条 带中的任一个数据条带;
[0011]向L个镜像条带所处的存储节点分别发送写入指令,所述写入指令包括所述第一 数据,以及所述镜像条带的地址;所述L个镜像条带是至少两个存储节点上特定的存储空 间,L为大于1的正整数;
[0012] 建立所述L个镜像条带与所述第一数据条带之间的对应关系;其中,基于所述对 应关系,所述协议服务器能够将对所述第一数据条带的读取指令转换为对任一所述镜像条 带的读取指令。
[0013] 在结合第一方面的第一种可能的实现方式中,在所述建立所述L个镜像条带与所 述第一数据条带之间的对应关系之后,所述方法还包括:
[0014] 接收第二数据;所述第二数据用于更新所述目的分条中的所有数据条带内存储的 数据;
[0015] 将所述第二数据分为Ν个数据,并根据所述Ν个数据计算得到Μ个纠删码;在将所 述Ν个数据写入所述Ν个数据条带,将所述Μ个纠删码写入所述Μ个校验条带后,删除所述 L镜像条带内存储的所述第一数据,以及所述对应关系。
[0016] 结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第二种可能 的实现方式中,所述删除所述L镜像条带内存储的所述第一数据,以及所述对应关系之后, 还包括:
[0017] 接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所 述第一数据条带内存储的数据;
[0018] 若存在所述第一数据条带与所述L个镜像条带的对应关系,根据所述对应关系, 读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;
[0019] 将所述第一数据返回至所述协议客户端。
[0020] 结合第一方面至第一方面的第二种可能的实现方式中的任一种可能的实现方式, 在第一方面的第三种可能的实现方式中,所述建立所述L个镜像条带与所述第一数据条带 之间的对应关系之后,还包括:
[0021] 接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所 述第一数据条带内存储的数据;
[0022] 读取所述第一数据条带内存储的数据的第一版本号;
[0023] 根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第 一数据的版本号;
[0024] 根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间晚于所 述第一数据条带内存储的数据的写入时间;
[0025] 读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;并
[0026] 将所述第一数据返回至所述协议客户端。
[0027] 结合第一方面至第一方面的第三种可能的实现方式中的任一种可能的实现方式, 在第一方面的第四种可能的实现方式中,还包括:
[0028] 根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间早于所 述第一数据条带内存储的数据的写入时间;
[0029] 读取所述第一数据条带内存储的数据;并
[0030] 将所述第一数据条带内存储的数据返回至所述协议客户端。
[0031] 结合第一方面至第一方面的第四种可能的实现方式中的任一种可能的实现方式, 在第一方面的第五种可能的实现方式中,所述读取所述第一数据条带对应的任一镜像条带 内存储的所述第一数据,包括:
[0032] 若所述第一数据条带对应的所述L个镜像条带中的第一镜像条带所处的存储节 点发生故障,则根据所述对应关系读取所述第一数据条带对应的所述L个镜像条带中的第 二镜像条带内存储的所述第一数据。
[0033] 第二方面,提供一种协议服务器,包括:
[0034] 接收单元,用于接收第一数据;其中,所述第一数据用于更新目的分条的第一数据 条带内存储的数据,所述目的分条包括N个数据条带以及Μ个校验条带,所述N个数据条带 分别是Ν个存储节点上特定的存储空间,所述Μ个校验条带分别是Μ个存储节点上特定的 存储空间,Ν为大于2的正整数,Μ为小于Ν的正整数;所述第一数据条带是所述Κ个数据 条带中的任一个数据条带;
[0035] 写入单元,用于向L个镜像条带所处的存储节点分别发送写入指令,所述写入指 令包括所述第一数据,以及所述镜像条带的地址;所述L个镜像条带是至少两个存储节点 上特定的存储空间,L为大于1的正整数;
[0036] 建立单元,用于建立所述L个镜像条带与所述第一数据条带之间的对应关系;其 中,基于所述对应关系,所述协议服务器能够将对所述第一数据条带的读取指令转换为对 任一所述镜像条带的读取指令。
[0037] 在结合第二方面的第一种可能的实现方式中,还包括计算单元以及删除单元;
[0038] 所述接收单元还用于:接收第二数据;所述第二数据用于更新所述目的分条中的 所有数据条带内存储的数据;
[0039] 所述计算单元用于,将所述第二数据分为Ν个数据,并根据所述Ν个数据计算得到 Μ个纠删码;
[0040] 所述删除单元用于,在所述数据写入单元将所述Ν个数据写入所述Ν个数据条带, 将所述Μ个纠删码写入所述Μ个校验条带后,删除所述L镜像条带内存储的所述第一数据, 以及所述对应关系。
[0041] 结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第二种可能 的实现方式中,还包括:读取单元以及发送单元;
[0042] 所述接收单元还用于,接收协议客户端发送的读取指令;所述读取指令用于指示 所述协议服务器读取所述第一数据条带内存储的数据;
[0043] 所述读取单元,用于在存在所述第一数据条带与所述L个镜像条带的对应关系 时,根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数 据;
[0044] 所述发送单元,用于将所述第一数据返回至所述协议客户端。
[0045] 结合第二方面至第二方面的第二种可能的实现方式中的任一种可能的实现方式, 在第二方面的第三种可能的实现方式中,还包括读取单元和发送单元;
[0046] 所述接收单元还用于,接收协议客户端发送的读取指令;所述读取指令用于指示 所述协议服务器读取所述第一数据条带内存储的数据;
[0047] 所述读取单元用于,读取所述第一数据条带内存储的数据的第一版本号;
[0048] 根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第 一数据的版本号;
[0049] 在根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间晚于 所述第一数据条带内存储的数据的写入时间时,读取所述第一数据条带对应的任一镜像条 带内存储的所述第一数据;
[0050] 所述发送单元用于,将所述第一数据返回至所述协议客户端。
[0051] 结合第二方面至第二方面的第三种可能的实现方式中的任一种可能的实现方式, 在第二方面的第四种可能的实现方式中,所述读取单元还用于,在根据所述第一版本号以 及所述第二版本号,确定所述第一数据的写入时间早于所述第一数据条带内存储的数据的 写入时间时,读取所述第一数据条带内存储的数据;
[0052] 所述发送单元还用于,将所述第一数据条带内存储的数据返回至所述协议客户 端。
[005
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1