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

文档序号:9489110阅读:来源:国知局
] 建立单元63,用于建立该L个镜像条带与该第一数据条带之间的对应关系。
[0136] 其中,基于该对应关系用于,该协议服务器能够将对该第一数据条带的读取指令 转换为对任一所述镜像条带的读取指令。
[0137]示例地,该接收单元61接收到的第一数据可以是协议客户端发送至该协议服务 器的数据,示例地,该协议客户端向协议服务器发送写入指令,该写入指令包括该第一数据 以及写入地址,该协议服务器在接收到该写入指令后,可以根据该写入地址确定该第一数 据是用于更新目的分条的第一数据条带内存储的数据。
[0138]该协议服务器建立的该对应关系可以是,该第一数据条带所处的存储节点的标 识,以及所述第一数据条带的地址,与各镜像条带所处的存储节点的标识,以及各镜像条带 的地址之间的对应关系,以便该协议服务器更够根据该对应关系准确读取到任一镜像条带 内存储的数据。
[0139] 可选地,如图7所示,该协议服务器60还包括计算单元64以及删除单元65,该接 收单元61还用于:接收第二数据;该第二数据用于更新该目的分条中的所有数据条带内存 储的数据;该计算单元64用于,将该第二数据分为Ν个数据,并根据该Ν个数据计算得到Μ 个纠删码;该删除单元65用于,在该数据写入单元将该Ν个数据写入该Ν个数据条带,将该 Μ个纠删码写入该Μ个校验条带后,删除该L镜像条带内存储的该第一数据,以及该对应关 系。
[0140]在本发明实施例的一种可选的实现方式中,如图7所示,该协议服务器60还包括:读取单元66以及发送单元67,其中,该接收单元61还用于,接收协议客户端发送的读取指 令,该读取指令用于指示该协议服务器读取该第一数据条带内存储的数据;该读取单元66 用于,在存在该第一数据条带与该L个镜像条带的对应关系时,根据该对应关系,读取该第 一数据条带对应的任一镜像条带内存储的该第一数据;该发送单元67用于,将该第一数据 返回至该协议客户端。
[0141]另外,该协议服务器在接收到上述第二数据之前,若接收到用于更新该第一条带 数据的第三数据,此时,该协议服务器可以根据该对应关系将该第三数据写入该L个镜像 条带内,直接覆盖该第一数据,从而保证了在存在第一数据条带与镜像条带的对应关系时, 该镜像条带内存储的数据始终为协议服务器写入的最新的数据。
[0142] 这样,由于在第一数据条带存在对应的镜像条带时,该镜像条带内存储的数据始 终为协议服务器写入的最新的数据,从而,该协议服务器在接收到读取该第一数据条带内 存储的数据的数据读取指令时,可以先查询是否存在对应于该第一数据条带的镜像条带, 若存在,则该协议服务器从该镜像条带中读取数据,若不存在,则该协议服务器从该第一数 据条带中读取数据,保证了数据读取的正确性。
[0143] 值的说明的是,协议客户端将用于更新第一数据条带内存储的数据的第一数据发 送至协议服务器后,可能并不能感知到该协议服务器将该第一数据写入了该L个镜像条 带,因此,该协议客户端在需要读取该第一数据时,向该协议服务器发送的数据读取指令中 的读取地址,仍然是第一数据条带的地址。
[0144] 可选地,该读取单元66还用于,若该第一数据条带对应的该L个镜像条带中的第 一镜像条带所处的存储节点发生故障,则根据该对应关系读取该第一数据条带对应的该L 个镜像条带中的第二镜像条带内存储的该第一数据。
[0145] 这样,由于L个镜像条带处于至少两个存储节点上,因此,所述L个镜像条带内存 储的所述第一数据互为备份,在某一存储节点发生故障后,协议服务器仍然可以从其他存 储节点上的镜像条带中读取到所述第一数据,从而实现了对所述第一数据的镜像保护。
[0146] 在本发明实施例的另一种可选的实现方式中,该接收单元61还用于,接收协议客 户端发送的读取指令;该读取指令用于指示该协议服务器读取该第一数据条带内存储的数 据;该读取单元66用于,读取该第一数据条带内存储的数据的第一版本号,并根据该对应 关系,读取该第一数据条带对应的任一镜像条带内存储的该第一数据的版本号,并在根据 该第一版本号以及该第二版本号,确定该第一数据的写入时间晚于该第一数据条带内存储 的数据的写入时间时,读取该第一数据条带对应的任一镜像条带内存储的该第一数据;该 发送单元67用于,将该第一数据返回至该协议客户端。
[0147] 可选地,该读取单元66还用于,在根据该第一版本号以及该第二版本号,确定该 第一数据的写入时间早于该第一数据条带内存储的数据的写入时间时,读取该第一数据条 带内存储的数据;该发送单元67还用于,将该第一数据条带内存储的数据返回至该协议客 户端。
[0148] 具体地,协议服务器对于写入目的分条的各条带内的数据建立并记录一个对应的 版本号,该版本号可以用于表示各数据写入时间的先后关系。
[0149] 示例地,该协议服务器可以在该L个镜像条带内记录该第一数据的版本号,该第 一数据的版本号等于max(ec-stripe-ver,mirror-stripe-ver) +n〇
[0150] 其中,ec-stripe-ver是该目的分条的N个数据条带内存储的数据的版本号的最 大值,mirror-stripe-ver是该L个镜像条带内当前存储的数据的版本号的最大值,η为大 于〇的正数。
[0151] 并且,该协议服务器在向该目的分条的数据条带内写入数据时,也按照上述方式, 记录各数据的版本号,这样,版本号越大,则说明数据写入时间越晚。因此,上述协议服务器 根据第一版本号,以及第二版本号,确定该第一数据的写入时间与的先后关系的实现方式 具体包括:确定该第一版本号与该第二版本号的数值大小关系,若该第一版本号小于该第 二版本号,则确定该第一数据的写入时间晚于该第一数据条带内存储的数据的写入时间, 若该第一版本号大于该第二版本号,则确定该第一数据的写入时间早于该第一数据条带内 存储的数据的写入时间。
[0152] 需要说明的是,所属本领域的技术人员可以清楚地了解到,为描述的方便和简洁, 上述描述的存储控制器的具体工作过程,可以参考前述方法实施例的对应过程,在此不再 赘述。
[0153] 另外,以上对协议服务器的单元划分,仅仅为一种逻辑功能划分,实际实现时可以 有另外的划分方式,并且,各单元具体的物理实现方式本发明不作限定,例如,在具体实施 过程中,图7所示的接收单元61以及发送单元67可以是一收发器,写入单元62以及读取 单元66可以是执行数据读写线程的处理器等,本领域的技术人员通过合理的分析推理能 够想到的其他实现方式也属于本发明的保护范围之内。
[0154] 采用本发明实施例提供的协议服务器,由于该协议服务器在写入该第一数据的过 程中,并非直接替换该第一数据条带内存储的数据,这样,该目的分条中所有的数据条带内 的数据未发生改变,从而无需重新计算纠删码,也就是说,本发明在写入该第一数据时,无 需先将该目的分条中所有的数据条带内存储的数据读出,以重新计算纠删码,从而简化了 数据写入过程,提高了数据写入速率。并且,该协议服务器在读取该第一数据时,可以根据 该对应关系读取该第一数据条带对应的任一镜像条带内存储的该第一数据,从而保证了数 据读取的正确性。并且,由于L个镜像条带处于至少两个存储节点上,因此,该L个镜像条 带内存储的该第一数据互为备份,在某一存储节点发生故障后,协议服务器仍然可以从其 他存储节点上的镜像条带中读取到该第一数据,从而实现了对该第一数据的镜像保护。
[0155] 实施例四
[0156] 本发明实施例提供另一种协议服务器80,如图8所示,该协议服务器80包括:
[0157] 处理器(processor) 81、通信接口(CommunicationsInterface) 82、存储器 (memory) 83和通信总线84 ;其中,所述处理器81、所述通信接口 82和所述存储器83通过 所述通信总线84完成相互间的通信。
[0158] 处理器81可能是一个多核中央处理器CPU,或者是特定集成电路 ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的 一个或多个集成电路。
[0159] 存储器83用于存放程序代码,所述程序代码包括计算机操作指令和网络流图。存 储器83可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory), 例如至少一个磁盘存储器。存储器83也可以是存储器阵列。存储器83还可能被分块,并 且所述块可按一定的规则组合成虚拟卷。
[0160] 所述通信接口 82,用于实现这些装置之间的连接通信。
[0161] 所述处理器81用于执行所述存储器83中的程序代码,以实现以下操作:
[0162] 接收第一数据;其中,所述第一数据用于更新目的分条的第一数据条带内存储的 数据,所述目的分条包括N个数据条带以及Μ个校验条带,所述N个数据条带分别是N个存 储节点上特定的存储空间,所述Μ个校验条带分别是Μ个存储节点上特定的存储空间,Ν为 大于2的正整数,Μ为小于Ν的正整数;所述第一数据条带是所述Κ个数据条带中的任一个 数据条带;
[0163]向L个镜像条带所处的存储节点分别发送写入指令,所述写入指令包括所述第一 数据,以及所述镜像条带的地址;所述L个镜像条带是至少两个存储节点上特定的存储空 间,L为大于1的正整数;
[0164] 建立所述L个镜像条带与所述第一数据条带之间的对应关系;其中,基于所述对 应关系,所述协议服务器能够将对所述第一数据条带的读取指令转换为对任一所述镜像条 带的读取指令。
[0165] 可选地,在所述建立所述L个镜像条带与所述第一数据条带之间的对应关系之 后,所述操作还包括:
[0166] 接收第二数据;所述第二数据用于更新所述目的分条中的所有数据条带内存储的 数据;
[0167] 将所述第二数据分为N个数据,并根据所述N个数据计算得到Μ个纠删码;在将所 述Ν个数据写入所述Ν个数据条带,将所述Μ个纠删码写入所述Μ个校验条带后,删除所述 L镜像条带内存储的所述第一数据,以及所述对应关系。
[0168] 可选地,所述删除所述L镜像条带内存储的所述第一数据,以及所述对应关系之 后,所述操作还包括:
[0169] 接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所 述第一数据条带内存储的数据;
[0170] 若存在所述第一数据条带与所述L个镜像条带的对应关系,根据所述对应关系, 读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;
[0171] 将所述第一数据返回至所述协议客户端。
[0172] 可选地,所述建立所述L个镜像条带与所述第一数据条带之间的对应关系之后, 所述操作还包括:
[0173] 接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所 述第一数据条带内存储的数据;
[0174] 读取所述第一数
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1