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

文档序号:9489110阅读:来源:国知局
存储节点发生故障后,协议服务器仍然可以从其他存 储节点上的镜像条带中读取到所述第一数据,从而实现了对所述第一数据的镜像保护。
[0093] 另外,由于该协议服务器在写入第一数据时,未更新该目的分条的纠删码,因此, 该协议服务器在读取该目的分条的第二数据条带内的数据时,若该协议服务器确定该第二 数据条带所处的存储节点发生故障,则该协议服务器可以查询该第二数据条带是否存在对 应的镜像条带,若存在,则读取该第二数据条带对应的镜像条带内的数据,若不存在,则读 取该目的分条的N个数据条带中,除该第二数据条带以外的其他数据条带内存储的数据, 以及校验条带内存储的纠删码,并根据该纠删码以及所述其他数据条带内存储的数据,计 算得到该第二数据条带内存储的数据,从而保证了在不更新纠删码的情况下,纠删码仍具 有数据保护作用。
[0094] 在以上内容中,协议服务器是通过,在更新所有数据条带内的数据时,删除镜像条 带内的数据以及数据条带与镜像条带的对应关系,从而保证镜像条带内存储的数据时协议 服务器写入的最新数据,然而,在本发明实施例的另一种可能的实现方式中,协议服务器也 可以通过对应每个数据的版本号,确定数据写入时间的先后关系,此时,该协议服务器在接 收到协议客户端发送的读取指令后,该读取指令用于指示该协议服务器读取该第一数据条 带内存储的数据,可以读取该第一数据条带内存储的数据的第一版本号,并根据该对应关 系,读取该第一数据条带对应的任一镜像条带内存储的该第一数据的版本号,并在根据该 第一版本号以及该第二版本号,确定该第一数据的写入时间晚于该第一数据条带内存储的 数据的写入时间时,读取该第一数据条带对应的任一镜像条带内存储的该第一数据,并将 该第一数据返回至该协议客户端。
[0095] 可选地,该协议服务器在根据该第一版本号以及该第二版本号,确定该第一数据 的写入时间早于该第一数据条带内存储的数据的写入时间时,读取该第一数据条带内存储 的数据,并将该第一数据条带内存储的数据返回至该协议客户端。
[0096] 具体地,协议服务器对于写入目的分条的各条带内的数据建立并记录一个对应的 版本号,该版本号可以用于表示各数据写入时间的先后关系。
[0097] 示例地,在步骤S202之后,该协议服务器可以在该L个镜像条带内记录该第一数 据的版本号,该第一数据的版本号等于max(ec-stripe-ver,mirror-stripe-ver) +n。
[0098] 其中,ec-stripe-ver是该目的分条的N个数据条带内存储的数据的版本号的最 大值,mirror-stripe-ver是该L个镜像条带内当前存储的数据的版本号的最大值,η为大 于〇的正数。
[0099] 并且,该协议服务器在向该目的分条的数据条带内写入数据时,也按照上述方式, 记录各数据的版本号,这样,版本号越大,则说明数据写入时间越晚。因此,上述协议服务器 根据第一版本号,以及第二版本号,确定该第一数据的写入时间与的先后关系的实现方式 具体包括:确定该第一版本号与该第二版本号的数值大小关系,若该第一版本号小于该第 二版本号,则确定该第一数据的写入时间晚于该第一数据条带内存储的数据的写入时间, 若该第一版本号大于该第二版本号,则确定该第一数据的写入时间早于该第一数据条带内 存储的数据的写入时间。
[0100] 采用本发明实施例提供的一种数据存储方法,协议服务器将用于更新第一数据条 带的第一数据写入到了L个镜像条带内,并非直接替换所述第一数据条带内存储的数据, 这样,所述目的分条中所有的数据条带内的数据未发生改变,从而无需重新计算纠删码,进 而无需先将所述目的分条中所有的数据条带内存储的数据读出,以重新计算纠删码,简化 了数据写入过程,提高了数据写入速率。并且,所述协议服务器在接收到读取所述第一数据 条带的数据读取指令时,可以根据所述对应关系读取所述第一数据条带对应的任一镜像条 带内存储的所述第一数据,从而保证了数据读取的正确性。并且,由于L个镜像条带处于至 少两个存储节点上,因此,所述L个镜像条带内存储的所述第一数据互为备份,在某一存储 节点发生故障后,协议服务器仍然可以从其他存储节点上的镜像条带中读取到所述第一数 据,从而实现了对所述第一数据的镜像保护。
[0101] 实施例二
[0102] 为了使本领域的技术人员更加理解本发明提供的一种数据存储方法的技术方案, 下面以图3所示的分布式存储系统为例,对本发明实施例提供的数据存储方法进行详细说 明,如图3所示,该目的分条的数据条带1至数据条带4分别处于存储节点1至存储节点4 上,校验条带处于存储节点5上,镜像条带1和镜像条带2分别处于存储节点1和存储节点 5上。基于图3所示的分布式存储系统,本发明实施例提供的数据存储方法如图4所示,包 括:
[0103]S401、该协议服务器接收数据A,该数据A用于更新该目的分条中所有数据条带内 的数据。
[0104] 其中,该协议服务器可以是接收到协议客户端发送的该数据A。
[0105]S402、该协议服务器将数据A划分为4份数据,并根据划分后得到的数据a,数据 b,数据c,以及数据d计算得到纠删码e。
[0106] 示例地,若该数据A的数据大小为512KB,则该协议服务器可以将该数据A划分 为数据大小相同的4份数据,也就是说,数据a,数据b,数据c以及数据d的数据大小均为 128KB,并且,该协议服务器根据该数据a,数据b,数据c,以及数据d计算得到的纠删码e的 数据大小也为128KB。
[0107]S403、该协议服务器将该数据a至数据d依次写入该存储节点1至该存储节点4 上的数据条带1至数据条带4中,并将该纠删码e写入该存储节点5上的校验条带中。
[0108]S404、该协议服务器将该数据A的版本号v分别写入该数据条带1至该数据条带 4中。
[0109] 具体地,若该数据A是初始写入该目的分条的数据,则该数据A的版本号v可以是 预设的版本号初始值,例如,该初始值为1,若该数据A不是初始写入该目的分条的数据,则 该版本号v可以等于max(ec-stripe-ver,mirror-stripe-ver)+n〇
[0110] 其中,ec-stripe-ver是数据条带1至数据条带4内当前存储的数据的版本号的 最大值,mirror-stripe-ver是镜像条带1和镜像条带2内当前存储的数据的版本号的最 大值,η为大于0的正数。
[0111] 另外,在步骤S404中,数据Α对应一个版本号ν只是本发明实施例的一种可选的 实现方式,也就是说,数据a至数据d的版本号相同,均为V,但是,在本发明实施例的另一种 可能的实现方式中,数据a至数据d以及纠删码e也可以对应不同的版本号,本发明对此不 做限定。
[0112] S405、该协议服务器接收写入该目的分条的数据条带1的数据f。
[0113]S406、该协议服务器向存储节点1发送第一写入指令,该第一写入指令包括该数 据f以及该镜像条带1的地址,并向存储节点5发送第二写入指令,该第二写入指令包括该 数据f以及该镜像条带2的地址。
[0114] 也就是说,该协议服务器将该数据f分别写入该镜像条带1和镜像条带2内。
[0115]S407、该协议服务器在该镜像条带1和该镜像条带2内分别写入该数据f的版本 号u〇
[0116] 具体地,数据f的版本号u大于所述数据A的版本号v。
[0117] S408、该协议服务器建立该数据条带1与该镜像条带1与该镜像条带2的对应关 系。
[0118] 示例地,该对应关系可以是,该存储节点1的标识,以及版本号V,与各镜像条带所 处的存储节点的标识,以及数据f的版本号u之间的对应关系。
[0119] 这样,由于协议服务器在写入该数据f的过程中,并非直接替换数据条带1内存储 的数据,这样,该目的分条中所有的数据条带内的数据未发生改变,从而无需重新计算纠删 码,也就是说,本发明实施例在写入该数据f时,无需先将该目的分条中所有的数据条带内 存储的数据读出,以重新计算纠删码,从而简化了数据写入过程,提高了数据写入速率。
[0120] 针对上述数据存储方法,本发明实施例还基于图3所示的分布式存储系统提供一 种数据读取方法,如图5所示,包括:
[0121] S501、协议服务器接收数据读取指令,该数据读取指令用于读取数据条带1内存 储的数据。
[0122] S502、若该数据条带1不存在对应的镜像条带,则该协议服务器读取该数据条带1 内的数据。
[0123]S503、若该数据条带1存在对应的镜像条带,则该协议服务器获取该数据条带内 存储的版本号V。
[0124]S504、该协议服务器获取对应该数据条带的任一镜像条带内存储的版本号u。
[0125]S505、若该版本号v大于该版本号u,则该协议服务器在该数据条带1中读取数据。
[0126]S506、若该版本号v小于该版本号u,则该协议服务器在对应该数据条带的镜像条 带内读取数据。
[0127] 通过上述步骤S501至步骤S506,该协议服务器在接收到读取数据条带1的数据读 取指令时,若该数据条带1对应的镜像条带内存储的是协议服务器最新写入的数据f,则该 协议服务器可以根据该对应关系读取该数据条带1对应的任一镜像条带内存储的该数据 f,从而保证了数据读取的正确性。并且,由于存储节点1上的镜像条带1,以及存储节点5 上的镜像条带2分别存储有该数据f,也就是说,该镜像条带1以及镜像条带2内存储的该 数据f互为备份,因此,在某一存储节点发生故障后,协议服务器仍然可以从其他存储节点 上的镜像条带中读取到该数据f,从而实现了对该数据f的镜像保护。
[0128] 需要说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动 作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,其次,本 领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并 不一定是本发明所必须的。
[0129] 实施例三
[0130]本发明实施例提供一种协议服务器60,用于实施上述实施例一提供的一种数据存 储方法,如图6所示,该协议服务器60包括:
[0131] 接收单元61,用于接收第一数据。
[0132] 其中,该第一数据用于更新目的分条的第一数据条带内存储的数据,该目的分条 包括N个数据条带以及Μ个校验条带,该N个数据条带分别是N个存储节点上特定的存储 空间,所述Μ个校验条带分别是Μ个存储节点上特定的存储空间,Ν为大于2的正整数,Μ为 小于Ν的正整数;该第一数据条带是该Κ个数据条带中的任一个数据条带;
[0133]写入单元62,用于向L个镜像条带所处的存储节点分别发送写入指令,该写入指 令包括该第一数据,以及该镜像条带的地址。
[0134]其中,该L个镜像条带是至少两个存储节点上特定的存储空间,L为大于1的正整 数。
[0135
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1