CN105242879B - 一种数据存储方法以及协议服务器 - Google Patents
一种数据存储方法以及协议服务器 Download PDFInfo
- Publication number
- CN105242879B CN105242879B CN201510646279.5A CN201510646279A CN105242879B CN 105242879 B CN105242879 B CN 105242879B CN 201510646279 A CN201510646279 A CN 201510646279A CN 105242879 B CN105242879 B CN 105242879B
- Authority
- CN
- China
- Prior art keywords
- data
- strip
- mirror image
- image band
- data strip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储方法以及协议服务器,用于解决现有技术对于分布式存储系统的数据保护降低了数据写入速率的技术问题。该方法包括:协议服务器接收第一数据;其中,该第一数据用于更新目的分条的第一数据条带内存储的数据,该目的分条包括N个数据条带以及M个校验条带,该第一数据条带是该K个数据条带中的任一个数据条带;向L个镜像条带所处的存储节点分别发送写入指令,该写入指令包括该第一数据,以及该镜像条带的地址;建立该L个镜像条带与该第一数据条带之间的对应关系;其中,基于该对应关系,该协议服务器能够将对该第一数据条带的读取指令转换为对任一该镜像条带的读取指令。本发明实施例用于数据存储。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种数据存储方法以及协议服务器。
背景技术
在现有的分布式存储系统中,多个存储节点相连形成集群,每个存储节点均具备数据存储功能。分布式存储系统通常提供一台或多台协议服务器(英文全称:Protocolserver)向用户提供标准的服务器信息块(英文全称:Server Message Block,简称:SMB)协议服务功能。
如图1所示,分布式存储系统包括协议服务器和多个存储节点,图1示出了存储节点1至存储节点5,用户程序可以通过如图1所示的协议客户端(英文全称:Protocolclient)访问存储系统,其中,协议客户端与协议服务器通过前端网络相连,分布式存储系统内部各存储节点之间通过后端网络连接,前端网络用于用户业务与分布式存储系统之间进行请求与数据交互,后端网络用于分布式存储系统内部各存储节点之间进行请求与数据交互。
现有技术通常采用前向纠错(英文全称:ForwardErrorCorrection,简称:FEC)的保护方式,使得分布式存储系统具备在存储节点发生故障时也能继续提供数据服务的能力。前向纠错数据保护方式也叫N+M保护方式,其中,N代表存储节点的数量,M代表在不发生数据丢失的前提下,集群所允许的同时发生故障的存储节点数。在N+M保护方式下,协议服务器以分条为单位进行读写,一个分条包括N个数据条带以及M个校验条带,具体地,协议服务器在写入大块数据时,将大块数据分割成长度固定的N个小块数据,根据所述N个小块数据通过算法进行计算,得到M个纠删码,则一个分条中的N个数据条带用于存储所述N个小块数据,M个校验条带用于存储所述M个纠删码,其中,纠删码具有冗余信息,在存储节点发生故障时,可以利用纠删码计算出丢失的数据。
但是,由于纠删码是根据整个分条计算出来的,因此,当在分条的任意一数据条带内新写入数据时,协议服务器需要先从整个分条内的数据以及纠删码读出,并与新写入的数据合并后重新计算纠删码,得到新的分条,并将新的分条的写入存储节点。以图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以及新的纠删码重新写入分条。
由上可知,在现有的N+M保护方式下,协议服务器向分条的一个数据条带内写入新的数据的过程十分繁琐,数据写入速率较慢。
发明内容
本发明提供一种数据存储方法以及协议服务器,用于解决现有技术对于分布式存储系统的数据保护降低了数据写入速率的技术问题。
为了达到上述目的,本发明采用如下的技术方案:
第一方面,提供一种数据存储方法,包括:
协议服务器接收第一数据;其中,所述第一数据用于更新目的分条的第一数据条带内存储的数据,所述目的分条包括N个数据条带以及M个校验条带,所述N个数据条带分别是N个存储节点上特定的存储空间,所述M个校验条带分别是M个存储节点上特定的存储空间,N为大于2的正整数,M为小于N的正整数;所述第一数据条带是所述K个数据条带中的任一个数据条带;
向L个镜像条带所处的存储节点分别发送写入指令,所述写入指令包括所述第一数据,以及所述镜像条带的地址;所述L个镜像条带是至少两个存储节点上特定的存储空间,L为大于1的正整数;
建立所述L个镜像条带与所述第一数据条带之间的对应关系;其中,基于所述对应关系,所述协议服务器能够将对所述第一数据条带的读取指令转换为对任一所述镜像条带的读取指令。
在结合第一方面的第一种可能的实现方式中,在所述建立所述L个镜像条带与所述第一数据条带之间的对应关系之后,所述方法还包括:
接收第二数据;所述第二数据用于更新所述目的分条中的所有数据条带内存储的数据;
将所述第二数据分为N个数据,并根据所述N个数据计算得到M个纠删码;在将所述N个数据写入所述N个数据条带,将所述M个纠删码写入所述M个校验条带后,删除所述L镜像条带内存储的所述第一数据,以及所述对应关系。
结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述删除所述L镜像条带内存储的所述第一数据,以及所述对应关系之后,还包括:
接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
若存在所述第一数据条带与所述L个镜像条带的对应关系,根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;
将所述第一数据返回至所述协议客户端。
结合第一方面至第一方面的第二种可能的实现方式中的任一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述建立所述L个镜像条带与所述第一数据条带之间的对应关系之后,还包括:
接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
读取所述第一数据条带内存储的数据的第一版本号;
根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据的版本号;
根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间晚于所述第一数据条带内存储的数据的写入时间;
读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;并
将所述第一数据返回至所述协议客户端。
结合第一方面至第一方面的第三种可能的实现方式中的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,还包括:
根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间早于所述第一数据条带内存储的数据的写入时间;
读取所述第一数据条带内存储的数据;并
将所述第一数据条带内存储的数据返回至所述协议客户端。
结合第一方面至第一方面的第四种可能的实现方式中的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据,包括:
若所述第一数据条带对应的所述L个镜像条带中的第一镜像条带所处的存储节点发生故障,则根据所述对应关系读取所述第一数据条带对应的所述L个镜像条带中的第二镜像条带内存储的所述第一数据。
第二方面,提供一种协议服务器,包括:
接收单元,用于接收第一数据;其中,所述第一数据用于更新目的分条的第一数据条带内存储的数据,所述目的分条包括N个数据条带以及M个校验条带,所述N个数据条带分别是N个存储节点上特定的存储空间,所述M个校验条带分别是M个存储节点上特定的存储空间,N为大于2的正整数,M为小于N的正整数;所述第一数据条带是所述K个数据条带中的任一个数据条带;
写入单元,用于向L个镜像条带所处的存储节点分别发送写入指令,所述写入指令包括所述第一数据,以及所述镜像条带的地址;所述L个镜像条带是至少两个存储节点上特定的存储空间,L为大于1的正整数;
建立单元,用于建立所述L个镜像条带与所述第一数据条带之间的对应关系;其中,基于所述对应关系,所述协议服务器能够将对所述第一数据条带的读取指令转换为对任一所述镜像条带的读取指令。
在结合第二方面的第一种可能的实现方式中,还包括计算单元以及删除单元;
所述接收单元还用于:接收第二数据;所述第二数据用于更新所述目的分条中的所有数据条带内存储的数据;
所述计算单元用于,将所述第二数据分为N个数据,并根据所述N个数据计算得到M个纠删码;
所述删除单元用于,在所述写入单元将所述N个数据写入所述N个数据条带,将所述M个纠删码写入所述M个校验条带后,删除所述L镜像条带内存储的所述第一数据,以及所述对应关系。
结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,还包括:读取单元以及发送单元;
所述接收单元还用于,接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
所述读取单元,用于在存在所述第一数据条带与所述L个镜像条带的对应关系时,根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;
所述发送单元,用于将所述第一数据返回至所述协议客户端。
结合第二方面至第二方面的第二种可能的实现方式中的任一种可能的实现方式,在第二方面的第三种可能的实现方式中,还包括读取单元和发送单元;
所述接收单元还用于,接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
所述读取单元用于,读取所述第一数据条带内存储的数据的第一版本号;
根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据的版本号;
在根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间晚于所述第一数据条带内存储的数据的写入时间时,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;
所述发送单元用于,将所述第一数据返回至所述协议客户端。
结合第二方面至第二方面的第三种可能的实现方式中的任一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述读取单元还用于,在根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间早于所述第一数据条带内存储的数据的写入时间时,读取所述第一数据条带内存储的数据;
所述发送单元还用于,将所述第一数据条带内存储的数据返回至所述协议客户端。
结合第二方面至第二方面的第四种可能的实现方式中的任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述协议服务器包括的读取单元用于,若所述第一数据条带对应的所述L个镜像条带中的第一镜像条带所处的存储节点发生故障,则根据所述对应关系读取所述第一数据条带对应的所述L个镜像条带中的第二镜像条带内存储的所述第一数据。
采用上述方案,协议服务器接收第一数据,其中,所述第一数据用于更新目的分条的第一数据条带内存储的数据;向L个镜像条带所处的存储节点发送数据写入指令,所述数据写入指令包括所述第一数据,以及所述镜像条带的地址;建立所述L个镜像条带与所述第一数据条带之间的对应关系;所述对应关系用于,所述协议服务器在接收到读取所述第一数据条带的数据读取指令时,根据所述对应关系读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据。也就是说,协议服务器将用于更新第一数据条带的第一数据写入到了L个镜像条带内,并非直接替换所述第一数据条带内存储的数据,这样,所述目的分条中所有的数据条带内的数据未发生改变,从而无需重新计算纠删码,进而无需先将所述目的分条中所有的数据条带内存储的数据读出,以重新计算纠删码,简化了数据写入过程,提高了数据写入速率。并且,所述协议服务器在接收到读取所述第一数据条带的数据读取指令时,可以根据所述对应关系读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据,从而保证了数据读取的正确性。并且,由于L个镜像条带处于至少两个存储节点上,因此,所述L个镜像条带内存储的所述第一数据互为备份,在某一存储节点发生故障后,协议服务器仍然可以从其他存储节点上的镜像条带中读取到所述第一数据,从而实现了对所述第一数据的镜像保护。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种分布式存储系统的结构示意图;
图2为本发明实施例提供的一种数据存储方法的流程示意图;
图3为本发明实施例提供的一种分布式存储系统的结构示意图;
图4为本发明实施例提供的另一种数据存储方法的流程示意图;
图5为本发明实施例提供的一种数据读取方法的流程示意图;
图6为本发明实施例提供的一种协议服务器的结构示意图;
图7为本发明实施例提供的另一种协议服务器的结构示意图;
图8为本发明实施例提供的又一种协议服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供一种数据存储方法,如图2所示,该方法包括:
S201、协议服务器接收第一数据,该第一数据用于更新目的分条的第一数据条带内存储的数据。
其中,该目的分条包括N个数据条带以及M个校验条带,该N个数据条带分别是N个存储节点上特定的存储空间,该M个校验条带分别是M个存储节点上特定的存储空间,K为大于2的正整数,M为小于N的正整数,该第一数据条带是该K个数据条带中的任一个数据条带。
S202、该协议服务器向L个镜像条带所处的存储节点分别发送写入指令,该写入指令包括所述第一数据,以及该镜像条带的地址。
其中,该L个镜像条带是至少两个存储节点上特定的存储空间,L为大于1的正整数。
S203、该协议服务器建立该L个镜像条带与该第一数据条带之间的对应关系。
其中,基于该对应关系,该协议服务器能够将对该第一数据条带的读取指令转换为对任一所述镜像条带的读取指令。
通过上述步骤S201至步骤S203,由于协议服务器在写入该第一数据的过程中,并非直接替换该第一数据条带内存储的数据,这样,该目的分条中所有的数据条带内的数据未发生改变,从而无需重新计算纠删码,也就是说,本发明在写入该第一数据时,无需先将该目的分条中所有的数据条带内存储的数据读出,以重新计算纠删码,从而简化了数据写入过程,提高了数据写入速率。
下面对步骤S201至步骤S203进行详细说明。
具体地,步骤S201中,该协议服务器可以是接收协议客户端发送的该第一数据,示例地,该协议客户端向协议服务器发送写入指令,该写入指令包括该第一数据以及写入地址,该协议服务器在接收到所述数据写入指令后,可以根据该写入地址确定该第一数据是用于更新目的分条的第一数据条带内存储的数据。
示例地,上述步骤S203中,该协议服务器建立的该对应关系可以是,该第一数据条带所处的存储节点的标识,以及该第一数据条带的地址,与各镜像条带所处的存储节点的标识,以及各镜像条带的地址之间的对应关系,以便该协议服务器更够根据该对应关系准确读取到任一镜像条带内存储的数据。
例如,若该第一数据条带是存储节点1上的第一存储空间,镜像条带1是存储节点2上的第二存储空间,镜像条带2是存储节点3上的第三存储空间,则该协议服务器可以建立如下表1所示的对应关系:
表1
存储节点1 | 存储节点2 | 存储节点3 |
第一存储空间 | 第二存储空间 | 第三存储空间 |
进一步地,该协议服务器基于该对应关系,能够在接收到读取该第一数据条带的读取指令时,将该读取指令转换为对任一镜像条带的读取指令,也就是说,在步骤S203之后,若该协议服务器接收到协议客户端发送的读取指令,该数据读取指令用于指示该协议服务器读取该第一数据条带内存储的数据,此时,该协议服务器可以根据该对应关系,读取该第一数据条带对应的任一镜像条带内存储的该第一数据,并将该第一数据返回至该协议客户端。
也就是说,参照上述表1,协议客户端发送的读取指令包括该存储节点1的标识以及该第一存储空间的标识,这样,该协议服务器根据上述表1,可以将该数据读取指令转换为读取镜像条带1的数据读取指令,读取镜像条带1的数据读取指令包括该存储节点2的标识以及第二存储空间的地址。
进一步地,在步骤S203之后,以及该协议服务器接收到读取该第一数据条带的数据读取指令之前,该协议服务器可能接收到用于更新该目的分条所有条带的数据的第二数据,此时,该协议服务器将该第二数据写入该目的分条的一种可能的实现方式为:该协议服务器接收该第二数据,将该第二数据分为N个数据,并根据该N个数据计算得到M个纠删码,并在将该N个数据写入该N个数据条带,将该M个纠删码写入该M个校验条带后,删除该L镜像条带内存储的该第一数据,以及该对应关系。
因此,在本发明实施例的一种优选的实现方式中,该协议服务器接收到协议客户端发送的,读取该第一数据条带的数据读取指令时,可以先确定是否存在该第一数据条带与该L个镜像条带的对应关系,若存在该第一数据条带与该L个镜像条带的对应关系,则根据该对应关系,读取该第一数据条带对应的任一镜像条带内存储的该第一数据,并将该第一数据返回至该协议客户端,若不存在该第一数据条带与该L个镜像条带的对应关系,则读取该第一数据条带内存储的数据,并将该第一数据条带内存储的数据返回至该协议客户端,从而保证了数据读取的正确性。
另外,在步骤S203之后,以及该协议服务器接收到上述第二数据之前,若该协议服务器接收到用于更新该第一条带数据的第三数据,此时,该协议服务器可以根据该对应关系将该第三数据写入该L个镜像条带内,直接覆盖该第一数据,从而保证了在存在第一数据条带与镜像条带的对应关系时,该镜像条带内存储的数据始终为协议服务器写入的最新的数据。
值得说明的是,协议客户端将用于更新第一数据条带内存储的数据的第一数据发送至协议服务器后,可能并不能感知到该协议服务器将该第一数据写入了该L个镜像条带,因此,该协议客户端在需要读取该第一数据时,向该协议服务器发送的数据读取指令中的读取地址,仍然是第一数据条带的地址。
下面说明第一条带中包括的N个数据条带以及L个镜像条带在分布式存储系统中各存储节点上的分布关系。
在本发明实施例一种可能的实现方式中,目的分条的N个数据条带以及M个校验条带分别处于K个不同的存储节点,其中,N+M=K,此时,所述K个存储节点中,可允许M个存储节点发生故障,该L个镜像条带可以处于该K个存储节点中的至少两个存储节点上。
值的说明的是,在本发明实施例的一种可能的实现方式中,目的分条中包括的镜像条带的数目L可以大于或等于该目的分条中校验条带的数目,也就是说,若该目的分条包括M个校验条带,此时,该目的分条中包括的镜像条带的数目L可以大于或等于M,例如L=M+1,这样,对于N+M的保护方式,其允许发生故障的存储节点的数量为M,对于M+1个镜像条带,其允许发生故障的存储节点的数量也为M。如图3所示,目的分条包括数据条带1至数据条带4共四个数据条带以及一个校验条带,其中,数据条带1至数据条带4分别处于存储节点1至存储节点4上,校验条带处于存储节点5上,此时,在保证能正确读取到整个目的分条存储的数据的前提下,允许存储节点1至存储节点5中可以有一个存储节点发生故障,图3所示还示出了镜像条带1和镜像条带2两个镜像条带,由于镜像条带1和镜像条带2分别处于存储节点1和存储节点5上,因此,在保证能正确读取到整个目的分条存储的数据的前提下,同样允许存储节点1至存储节点5中可以有一个存储节点发生故障。
上述只是举例说明,在具体实施过程中,镜像条带的分布可以有其他的方式,例如,该L个镜像条带也可以处于该K个存储节点以外的其他存储节点上。本发明对此不做限定。
下面说明本发明实施例在存储节点发生故障时,对于数据的保护。
具体地,协议服务器根据该对应关系读取该第一数据条带对应的任一镜像条带内存储的该第一数据,具体包括:若该第一数据条带对应的该L个镜像条带中的第一镜像条带所处的存储节点发生故障,则根据该对应关系读取该第一数据条带对应的该L个镜像条带中的第二镜像条带内存储的该第一数据。
这样,由于L个镜像条带处于至少两个存储节点上,因此,所述L个镜像条带内存储的所述第一数据互为备份,在某一存储节点发生故障后,协议服务器仍然可以从其他存储节点上的镜像条带中读取到所述第一数据,从而实现了对所述第一数据的镜像保护。
另外,由于该协议服务器在写入第一数据时,未更新该目的分条的纠删码,因此,该协议服务器在读取该目的分条的第二数据条带内的数据时,若该协议服务器确定该第二数据条带所处的存储节点发生故障,则该协议服务器可以查询该第二数据条带是否存在对应的镜像条带,若存在,则读取该第二数据条带对应的镜像条带内的数据,若不存在,则读取该目的分条的N个数据条带中,除该第二数据条带以外的其他数据条带内存储的数据,以及校验条带内存储的纠删码,并根据该纠删码以及所述其他数据条带内存储的数据,计算得到该第二数据条带内存储的数据,从而保证了在不更新纠删码的情况下,纠删码仍具有数据保护作用。
在以上内容中,协议服务器是通过,在更新所有数据条带内的数据时,删除镜像条带内的数据以及数据条带与镜像条带的对应关系,从而保证镜像条带内存储的数据时协议服务器写入的最新数据,然而,在本发明实施例的另一种可能的实现方式中,协议服务器也可以通过对应每个数据的版本号,确定数据写入时间的先后关系,此时,该协议服务器在接收到协议客户端发送的读取指令后,该读取指令用于指示该协议服务器读取该第一数据条带内存储的数据,可以读取该第一数据条带内存储的数据的第一版本号,并根据该对应关系,读取该第一数据条带对应的任一镜像条带内存储的该第一数据的版本号,并在根据该第一版本号以及该第二版本号,确定该第一数据的写入时间晚于该第一数据条带内存储的数据的写入时间时,读取该第一数据条带对应的任一镜像条带内存储的该第一数据,并将该第一数据返回至该协议客户端。
可选地,该协议服务器在根据该第一版本号以及该第二版本号,确定该第一数据的写入时间早于该第一数据条带内存储的数据的写入时间时,读取该第一数据条带内存储的数据,并将该第一数据条带内存储的数据返回至该协议客户端。
具体地,协议服务器对于写入目的分条的各条带内的数据建立并记录一个对应的版本号,该版本号可以用于表示各数据写入时间的先后关系。
示例地,在步骤S202之后,该协议服务器可以在该L个镜像条带内记录该第一数据的版本号,该第一数据的版本号等于max(ec-stripe-ver,mirror-stripe-ver)+n。
其中,ec-stripe-ver是该目的分条的N个数据条带内存储的数据的版本号的最大值,mirror-stripe-ver是该L个镜像条带内当前存储的数据的版本号的最大值,n为大于0的正数。
并且,该协议服务器在向该目的分条的数据条带内写入数据时,也按照上述方式,记录各数据的版本号,这样,版本号越大,则说明数据写入时间越晚。因此,上述协议服务器根据第一版本号,以及第二版本号,确定该第一数据的写入时间与的先后关系的实现方式具体包括:确定该第一版本号与该第二版本号的数值大小关系,若该第一版本号小于该第二版本号,则确定该第一数据的写入时间晚于该第一数据条带内存储的数据的写入时间,若该第一版本号大于该第二版本号,则确定该第一数据的写入时间早于该第一数据条带内存储的数据的写入时间。
采用本发明实施例提供的一种数据存储方法,协议服务器将用于更新第一数据条带的第一数据写入到了L个镜像条带内,并非直接替换所述第一数据条带内存储的数据,这样,所述目的分条中所有的数据条带内的数据未发生改变,从而无需重新计算纠删码,进而无需先将所述目的分条中所有的数据条带内存储的数据读出,以重新计算纠删码,简化了数据写入过程,提高了数据写入速率。并且,所述协议服务器在接收到读取所述第一数据条带的数据读取指令时,可以根据所述对应关系读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据,从而保证了数据读取的正确性。并且,由于L个镜像条带处于至少两个存储节点上,因此,所述L个镜像条带内存储的所述第一数据互为备份,在某一存储节点发生故障后,协议服务器仍然可以从其他存储节点上的镜像条带中读取到所述第一数据,从而实现了对所述第一数据的镜像保护。
实施例二
为了使本领域的技术人员更加理解本发明提供的一种数据存储方法的技术方案,下面以图3所示的分布式存储系统为例,对本发明实施例提供的数据存储方法进行详细说明,如图3所示,该目的分条的数据条带1至数据条带4分别处于存储节点1至存储节点4上,校验条带处于存储节点5上,镜像条带1和镜像条带2分别处于存储节点1和存储节点5上。基于图3所示的分布式存储系统,本发明实施例提供的数据存储方法如图4所示,包括:
S401、该协议服务器接收数据A,该数据A用于更新该目的分条中所有数据条带内的数据。
其中,该协议服务器可以是接收到协议客户端发送的该数据A。
S402、该协议服务器将数据A划分为4份数据,并根据划分后得到的数据a,数据b,数据c,以及数据d计算得到纠删码e。
示例地,若该数据A的数据大小为512KB,则该协议服务器可以将该数据A划分为数据大小相同的4份数据,也就是说,数据a,数据b,数据c以及数据d的数据大小均为128KB,并且,该协议服务器根据该数据a,数据b,数据c,以及数据d计算得到的纠删码e的数据大小也为128KB。
S403、该协议服务器将该数据a至数据d依次写入该存储节点1至该存储节点4上的数据条带1至数据条带4中,并将该纠删码e写入该存储节点5上的校验条带中。
S404、该协议服务器将该数据A的版本号v分别写入该数据条带1至该数据条带4中。
具体地,若该数据A是初始写入该目的分条的数据,则该数据A的版本号v可以是预设的版本号初始值,例如,该初始值为1,若该数据A不是初始写入该目的分条的数据,则该版本号v可以等于max(ec-stripe-ver,mirror-stripe-ver)+n。
其中,ec-stripe-ver是数据条带1至数据条带4内当前存储的数据的版本号的最大值,mirror-stripe-ver是镜像条带1和镜像条带2内当前存储的数据的版本号的最大值,n为大于0的正数。
另外,在步骤S404中,数据A对应一个版本号v只是本发明实施例的一种可选的实现方式,也就是说,数据a至数据d的版本号相同,均为v,但是,在本发明实施例的另一种可能的实现方式中,数据a至数据d以及纠删码e也可以对应不同的版本号,本发明对此不做限定。
S405、该协议服务器接收写入该目的分条的数据条带1的数据f。
S406、该协议服务器向存储节点1发送第一写入指令,该第一写入指令包括该数据f以及该镜像条带1的地址,并向存储节点5发送第二写入指令,该第二写入指令包括该数据f以及该镜像条带2的地址。
也就是说,该协议服务器将该数据f分别写入该镜像条带1和镜像条带2内。
S407、该协议服务器在该镜像条带1和该镜像条带2内分别写入该数据f的版本号u。
具体地,数据f的版本号u大于所述数据A的版本号v。
S408、该协议服务器建立该数据条带1与该镜像条带1与该镜像条带2的对应关系。
示例地,该对应关系可以是,该存储节点1的标识,以及版本号v,与各镜像条带所处的存储节点的标识,以及数据f的版本号u之间的对应关系。
这样,由于协议服务器在写入该数据f的过程中,并非直接替换数据条带1内存储的数据,这样,该目的分条中所有的数据条带内的数据未发生改变,从而无需重新计算纠删码,也就是说,本发明实施例在写入该数据f时,无需先将该目的分条中所有的数据条带内存储的数据读出,以重新计算纠删码,从而简化了数据写入过程,提高了数据写入速率。
针对上述数据存储方法,本发明实施例还基于图3所示的分布式存储系统提供一种数据读取方法,如图5所示,包括:
S501、协议服务器接收数据读取指令,该数据读取指令用于读取数据条带1内存储的数据。
S502、若该数据条带1不存在对应的镜像条带,则该协议服务器读取该数据条带1内的数据。
S503、若该数据条带1存在对应的镜像条带,则该协议服务器获取该数据条带内存储的版本号v。
S504、该协议服务器获取对应该数据条带的任一镜像条带内存储的版本号u。
S505、若该版本号v大于该版本号u,则该协议服务器在该数据条带1中读取数据。
S506、若该版本号v小于该版本号u,则该协议服务器在对应该数据条带的镜像条带内读取数据。
通过上述步骤S501至步骤S506,该协议服务器在接收到读取数据条带1的数据读取指令时,若该数据条带1对应的镜像条带内存储的是协议服务器最新写入的数据f,则该协议服务器可以根据该对应关系读取该数据条带1对应的任一镜像条带内存储的该数据f,从而保证了数据读取的正确性。并且,由于存储节点1上的镜像条带1,以及存储节点5上的镜像条带2分别存储有该数据f,也就是说,该镜像条带1以及镜像条带2内存储的该数据f互为备份,因此,在某一存储节点发生故障后,协议服务器仍然可以从其他存储节点上的镜像条带中读取到该数据f,从而实现了对该数据f的镜像保护。
需要说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
实施例三
本发明实施例提供一种协议服务器60,用于实施上述实施例一提供的一种数据存储方法,如图6所示,该协议服务器60包括:
接收单元61,用于接收第一数据。
其中,该第一数据用于更新目的分条的第一数据条带内存储的数据,该目的分条包括N个数据条带以及M个校验条带,该N个数据条带分别是N个存储节点上特定的存储空间,所述M个校验条带分别是M个存储节点上特定的存储空间,N为大于2的正整数,M为小于N的正整数;该第一数据条带是该K个数据条带中的任一个数据条带;
写入单元62,用于向L个镜像条带所处的存储节点分别发送写入指令,该写入指令包括该第一数据,以及该镜像条带的地址。
其中,该L个镜像条带是至少两个存储节点上特定的存储空间,L为大于1的正整数。
建立单元63,用于建立该L个镜像条带与该第一数据条带之间的对应关系。
其中,基于该对应关系用于,该协议服务器能够将对该第一数据条带的读取指令转换为对任一所述镜像条带的读取指令。
示例地,该接收单元61接收到的第一数据可以是协议客户端发送至该协议服务器的数据,示例地,该协议客户端向协议服务器发送写入指令,该写入指令包括该第一数据以及写入地址,该协议服务器在接收到该写入指令后,可以根据该写入地址确定该第一数据是用于更新目的分条的第一数据条带内存储的数据。
该协议服务器建立的该对应关系可以是,该第一数据条带所处的存储节点的标识,以及所述第一数据条带的地址,与各镜像条带所处的存储节点的标识,以及各镜像条带的地址之间的对应关系,以便该协议服务器更够根据该对应关系准确读取到任一镜像条带内存储的数据。
可选地,如图7所示,该协议服务器60还包括计算单元64以及删除单元65,该接收单元61还用于:接收第二数据;该第二数据用于更新该目的分条中的所有数据条带内存储的数据;该计算单元64用于,将该第二数据分为N个数据,并根据该N个数据计算得到M个纠删码;该删除单元65用于,在该写入单元将该N个数据写入该N个数据条带,将该M个纠删码写入该M个校验条带后,删除该L镜像条带内存储的该第一数据,以及该对应关系。
在本发明实施例的一种可选的实现方式中,如图7所示,该协议服务器60还包括:读取单元66以及发送单元67,其中,该接收单元61还用于,接收协议客户端发送的读取指令,该读取指令用于指示该协议服务器读取该第一数据条带内存储的数据;该读取单元66用于,在存在该第一数据条带与该L个镜像条带的对应关系时,根据该对应关系,读取该第一数据条带对应的任一镜像条带内存储的该第一数据;该发送单元67用于,将该第一数据返回至该协议客户端。
另外,该协议服务器在接收到上述第二数据之前,若接收到用于更新该第一条带数据的第三数据,此时,该协议服务器可以根据该对应关系将该第三数据写入该L个镜像条带内,直接覆盖该第一数据,从而保证了在存在第一数据条带与镜像条带的对应关系时,该镜像条带内存储的数据始终为协议服务器写入的最新的数据。
这样,由于在第一数据条带存在对应的镜像条带时,该镜像条带内存储的数据始终为协议服务器写入的最新的数据,从而,该协议服务器在接收到读取该第一数据条带内存储的数据的数据读取指令时,可以先查询是否存在对应于该第一数据条带的镜像条带,若存在,则该协议服务器从该镜像条带中读取数据,若不存在,则该协议服务器从该第一数据条带中读取数据,保证了数据读取的正确性。
值的说明的是,协议客户端将用于更新第一数据条带内存储的数据的第一数据发送至协议服务器后,可能并不能感知到该协议服务器将该第一数据写入了该L个镜像条带,因此,该协议客户端在需要读取该第一数据时,向该协议服务器发送的数据读取指令中的读取地址,仍然是第一数据条带的地址。
可选地,该读取单元66还用于,若该第一数据条带对应的该L个镜像条带中的第一镜像条带所处的存储节点发生故障,则根据该对应关系读取该第一数据条带对应的该L个镜像条带中的第二镜像条带内存储的该第一数据。
这样,由于L个镜像条带处于至少两个存储节点上,因此,所述L个镜像条带内存储的所述第一数据互为备份,在某一存储节点发生故障后,协议服务器仍然可以从其他存储节点上的镜像条带中读取到所述第一数据,从而实现了对所述第一数据的镜像保护。
在本发明实施例的另一种可选的实现方式中,该接收单元61还用于,接收协议客户端发送的读取指令;该读取指令用于指示该协议服务器读取该第一数据条带内存储的数据;该读取单元66用于,读取该第一数据条带内存储的数据的第一版本号,并根据该对应关系,读取该第一数据条带对应的任一镜像条带内存储的该第一数据的版本号,并在根据该第一版本号以及该第二版本号,确定该第一数据的写入时间晚于该第一数据条带内存储的数据的写入时间时,读取该第一数据条带对应的任一镜像条带内存储的该第一数据;该发送单元67用于,将该第一数据返回至该协议客户端。
可选地,该读取单元66还用于,在根据该第一版本号以及该第二版本号,确定该第一数据的写入时间早于该第一数据条带内存储的数据的写入时间时,读取该第一数据条带内存储的数据;该发送单元67还用于,将该第一数据条带内存储的数据返回至该协议客户端。
具体地,协议服务器对于写入目的分条的各条带内的数据建立并记录一个对应的版本号,该版本号可以用于表示各数据写入时间的先后关系。
示例地,该协议服务器可以在该L个镜像条带内记录该第一数据的版本号,该第一数据的版本号等于max(ec-stripe-ver,mirror-stripe-ver)+n。
其中,ec-stripe-ver是该目的分条的N个数据条带内存储的数据的版本号的最大值,mirror-stripe-ver是该L个镜像条带内当前存储的数据的版本号的最大值,n为大于0的正数。
并且,该协议服务器在向该目的分条的数据条带内写入数据时,也按照上述方式,记录各数据的版本号,这样,版本号越大,则说明数据写入时间越晚。因此,上述协议服务器根据第一版本号,以及第二版本号,确定该第一数据的写入时间与的先后关系的实现方式具体包括:确定该第一版本号与该第二版本号的数值大小关系,若该第一版本号小于该第二版本号,则确定该第一数据的写入时间晚于该第一数据条带内存储的数据的写入时间,若该第一版本号大于该第二版本号,则确定该第一数据的写入时间早于该第一数据条带内存储的数据的写入时间。
需要说明的是,所属本领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的存储控制器的具体工作过程,可以参考前述方法实施例的对应过程,在此不再赘述。
另外,以上对协议服务器的单元划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,并且,各单元具体的物理实现方式本发明不作限定,例如,在具体实施过程中,图7所示的接收单元61以及发送单元67可以是一收发器,写入单元62以及读取单元66可以是执行数据读写线程的处理器等,本领域的技术人员通过合理的分析推理能够想到的其他实现方式也属于本发明的保护范围之内。
采用本发明实施例提供的协议服务器,由于该协议服务器在写入该第一数据的过程中,并非直接替换该第一数据条带内存储的数据,这样,该目的分条中所有的数据条带内的数据未发生改变,从而无需重新计算纠删码,也就是说,本发明在写入该第一数据时,无需先将该目的分条中所有的数据条带内存储的数据读出,以重新计算纠删码,从而简化了数据写入过程,提高了数据写入速率。并且,该协议服务器在读取该第一数据时,可以根据该对应关系读取该第一数据条带对应的任一镜像条带内存储的该第一数据,从而保证了数据读取的正确性。并且,由于L个镜像条带处于至少两个存储节点上,因此,该L个镜像条带内存储的该第一数据互为备份,在某一存储节点发生故障后,协议服务器仍然可以从其他存储节点上的镜像条带中读取到该第一数据,从而实现了对该第一数据的镜像保护。
实施例四
本发明实施例提供另一种协议服务器80,如图8所示,该协议服务器80包括:
处理器(processor)81、通信接口(Communications Interface)82、存储器(memory)83和通信总线84;其中,所述处理器81、所述通信接口82和所述存储器83通过所述通信总线84完成相互间的通信。
处理器81可能是一个多核中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器83用于存放程序代码,所述程序代码包括计算机操作指令和网络流图。存储器83可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器83也可以是存储器阵列。存储器83还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
所述通信接口82,用于实现这些装置之间的连接通信。
所述处理器81用于执行所述存储器83中的程序代码,以实现以下操作:
接收第一数据;其中,所述第一数据用于更新目的分条的第一数据条带内存储的数据,所述目的分条包括N个数据条带以及M个校验条带,所述N个数据条带分别是N个存储节点上特定的存储空间,所述M个校验条带分别是M个存储节点上特定的存储空间,N为大于2的正整数,M为小于N的正整数;所述第一数据条带是所述K个数据条带中的任一个数据条带;
向L个镜像条带所处的存储节点分别发送写入指令,所述写入指令包括所述第一数据,以及所述镜像条带的地址;所述L个镜像条带是至少两个存储节点上特定的存储空间,L为大于1的正整数;
建立所述L个镜像条带与所述第一数据条带之间的对应关系;其中,基于所述对应关系,所述协议服务器能够将对所述第一数据条带的读取指令转换为对任一所述镜像条带的读取指令。
可选地,在所述建立所述L个镜像条带与所述第一数据条带之间的对应关系之后,所述操作还包括:
接收第二数据;所述第二数据用于更新所述目的分条中的所有数据条带内存储的数据;
将所述第二数据分为N个数据,并根据所述N个数据计算得到M个纠删码;在将所述N个数据写入所述N个数据条带,将所述M个纠删码写入所述M个校验条带后,删除所述L镜像条带内存储的所述第一数据,以及所述对应关系。
可选地,所述删除所述L镜像条带内存储的所述第一数据,以及所述对应关系之后,所述操作还包括:
接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
若存在所述第一数据条带与所述L个镜像条带的对应关系,根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;
将所述第一数据返回至所述协议客户端。
可选地,所述建立所述L个镜像条带与所述第一数据条带之间的对应关系之后,所述操作还包括:
接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
读取所述第一数据条带内存储的数据的第一版本号;
根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据的版本号;
根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间晚于所述第一数据条带内存储的数据的写入时间;
读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;并
将所述第一数据返回至所述协议客户端。
可选地,所述操作还包括:
根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间早于所述第一数据条带内存储的数据的写入时间;
读取所述第一数据条带内存储的数据;并
将所述第一数据条带内存储的数据返回至所述协议客户端。
可选地,所述读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据,具体包括:
若所述第一数据条带对应的所述L个镜像条带中的第一镜像条带所处的存储节点发生故障,则根据所述对应关系读取所述第一数据条带对应的所述L个镜像条带中的第二镜像条带内存储的所述第一数据。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,简称:ROM)、随机存取存储器(英文全称:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
协议服务器接收第一数据;其中,所述第一数据用于更新目的分条的第一数据条带内存储的数据,所述目的分条包括N个数据条带以及M个校验条带,所述N个数据条带分别是N个存储节点上特定的存储空间,所述M个校验条带分别是M个存储节点上特定的存储空间,N为大于2的正整数,M为小于N的正整数;所述第一数据条带是所述N个数据条带中的任一个数据条带;
向L个镜像条带所处的存储节点分别发送写入指令,所述写入指令包括所述第一数据,以及所述镜像条带的地址;所述L个镜像条带是至少两个存储节点上特定的存储空间,L为大于1的正整数;
建立所述L个镜像条带与所述第一数据条带之间的对应关系;其中,基于所述对应关系,所述协议服务器能够将对所述第一数据条带的读取指令转换为对任一所述镜像条带的读取指令;
其中,所述建立所述L个镜像条带与所述第一数据条带之间的对应关系之后,还包括:
接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
读取所述第一数据条带内存储的数据的第一版本号;
根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据的第二版本号;
若根据所述第一版本号以及所述第二版本号确定所述第一数据的写入时间早于所述第一数据条带内存储的数据的写入时间,则读取所述第一数据条带内存储的数据,并将所述第一数据条带内存储的数据返回至所述协议客户端。
2.根据权利要求1所述的方法,其特征在于,在所述建立所述L个镜像条带与所述第一数据条带之间的对应关系之后,所述方法还包括:
接收第二数据;所述第二数据用于更新所述目的分条中的所有数据条带内存储的数据;
将所述第二数据分为N个数据,并根据所述N个数据计算得到M个纠删码;在将所述N个数据写入所述N个数据条带,将所述M个纠删码写入所述M个校验条带后,删除所述L个镜像条带内存储的所述第一数据,以及所述对应关系。
3.根据权利要求2所述的方法,其特征在于,所述删除所述L个镜像条带内存储的所述第一数据,以及所述对应关系之后,还包括:
接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
若存在所述第一数据条带与所述L个镜像条带的对应关系,根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;
将所述第一数据返回至所述协议客户端。
4.根据权利要求1所述的方法,其特征在于,所述根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据的版本号之后,还包括:
若根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间晚于所述第一数据条带内存储的数据的写入时间,则读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据,并将所述第一数据返回至所述协议客户端。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据,包括:
若所述第一数据条带对应的所述L个镜像条带中的第一镜像条带所处的存储节点发生故障,则根据所述对应关系读取所述第一数据条带对应的所述L个镜像条带中的第二镜像条带内存储的所述第一数据。
6.一种协议服务器,其特征在于,包括:
接收单元,用于接收第一数据;其中,所述第一数据用于更新目的分条的第一数据条带内存储的数据,所述目的分条包括N个数据条带以及M个校验条带,所述N个数据条带分别是N个存储节点上特定的存储空间,所述M个校验条带分别是M个存储节点上特定的存储空间,N为大于2的正整数,M为小于N的正整数;所述第一数据条带是所述N个数据条带中的任一个数据条带;
写入单元,用于向L个镜像条带所处的存储节点分别发送写入指令,所述写入指令包括所述第一数据,以及所述镜像条带的地址;所述L个镜像条带是至少两个存储节点上特定的存储空间,L为大于1的正整数;
建立单元,用于建立所述L个镜像条带与所述第一数据条带之间的对应关系;其中,基于所述对应关系,所述协议服务器能够将对所述第一数据条带的读取指令转换为对任一所述镜像条带的读取指令;
所述接收单元还用于,接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
所述协议服务器还包括:读取单元以及发送单元;
所述读取单元用于,读取所述第一数据条带内存储的数据的第一版本号;根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据的第二版本号;在根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间早于所述第一数据条带内存储的数据的写入时间时,读取所述第一数据条带内存储的数据;
所述发送单元用于,将所述第一数据条带内存储的数据返回至所述协议客户端。
7.根据权利要求6所述的协议服务器,其特征在于,还包括计算单元以及删除单元;
所述接收单元还用于:接收第二数据;所述第二数据用于更新所述目的分条中的所有数据条带内存储的数据;
所述计算单元用于,将所述第二数据分为N个数据,并根据所述N个数据计算得到M个纠删码;
所述删除单元用于,在所述写入单元将所述N个数据写入所述N个数据条带,将所述M个纠删码写入所述M个校验条带后,删除所述L个镜像条带内存储的所述第一数据,以及所述对应关系。
8.根据权利要求7所述的协议服务器,其特征在于,还包括:读取单元以及发送单元;
所述接收单元还用于,接收协议客户端发送的读取指令;所述读取指令用于指示所述协议服务器读取所述第一数据条带内存储的数据;
所述读取单元,用于在存在所述第一数据条带与所述L个镜像条带的对应关系时,根据所述对应关系,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;
所述发送单元,用于将所述第一数据返回至所述协议客户端。
9.根据权利要求6所述的协议服务器,其特征在于,
所述读取单元还用于,在根据所述第一版本号以及所述第二版本号,确定所述第一数据的写入时间晚于所述第一数据条带内存储的数据的写入时间时,读取所述第一数据条带对应的任一镜像条带内存储的所述第一数据;
所述发送单元还用于,将所述第一数据返回至所述协议客户端。
10.根据权利要求6至9任一项所述的协议服务器,其特征在于,所述协议服务器包括的读取单元用于,若所述第一数据条带对应的所述L个镜像条带中的第一镜像条带所处的存储节点发生故障,则根据所述对应关系读取所述第一数据条带对应的所述L个镜像条带中的第二镜像条带内存储的所述第一数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510646279.5A CN105242879B (zh) | 2015-09-30 | 2015-09-30 | 一种数据存储方法以及协议服务器 |
CN201811143358.4A CN109445687B (zh) | 2015-09-30 | 2015-09-30 | 一种数据存储方法以及协议服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510646279.5A CN105242879B (zh) | 2015-09-30 | 2015-09-30 | 一种数据存储方法以及协议服务器 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811143358.4A Division CN109445687B (zh) | 2015-09-30 | 2015-09-30 | 一种数据存储方法以及协议服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105242879A CN105242879A (zh) | 2016-01-13 |
CN105242879B true CN105242879B (zh) | 2018-11-06 |
Family
ID=55040542
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811143358.4A Active CN109445687B (zh) | 2015-09-30 | 2015-09-30 | 一种数据存储方法以及协议服务器 |
CN201510646279.5A Active CN105242879B (zh) | 2015-09-30 | 2015-09-30 | 一种数据存储方法以及协议服务器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811143358.4A Active CN109445687B (zh) | 2015-09-30 | 2015-09-30 | 一种数据存储方法以及协议服务器 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109445687B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708651B (zh) | 2016-11-16 | 2020-09-11 | 北京三快在线科技有限公司 | 基于纠删码的部分写入方法及装置、存储介质、设备 |
CN110325958B (zh) * | 2017-10-13 | 2021-09-17 | 华为技术有限公司 | 分布式块存储系统中数据存储方法、装置及计算机可读存储介质 |
CN109726036B (zh) * | 2018-11-21 | 2021-08-20 | 华为技术有限公司 | 一种存储系统中的数据重构方法和装置 |
CN112714910B (zh) * | 2018-12-22 | 2022-12-27 | 华为云计算技术有限公司 | 分布式存储系统及计算机程序产品 |
CN111367863A (zh) * | 2018-12-25 | 2020-07-03 | 深圳市茁壮网络股份有限公司 | 一种文件的部分修改方法及系统 |
CN111367864A (zh) * | 2018-12-25 | 2020-07-03 | 深圳市茁壮网络股份有限公司 | 一种文件的无缝替换方法、读取方法及相关系统 |
EP3889752A4 (en) | 2018-12-25 | 2021-12-01 | Huawei Technologies Co., Ltd. | DATA STORAGE METHOD AND DEVICE IN A DISTRIBUTED STORAGE SYSTEM AND COMPUTER PROGRAM PRODUCT |
CN113835637A (zh) * | 2020-03-19 | 2021-12-24 | 北京奥星贝斯科技有限公司 | 一种数据的写入方法、装置以及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1679000A (zh) * | 2002-06-24 | 2005-10-05 | 网络装置公司 | 在raid数据重建和转移中使用文件系统信息 |
CN101556802A (zh) * | 2009-05-25 | 2009-10-14 | 杭州华三通信技术有限公司 | 一种raid阵列转换的方法及装置 |
CN102662607A (zh) * | 2012-03-29 | 2012-09-12 | 华中科技大学 | 一种raid6级别混合磁盘阵列及其性能加速和可靠性提高方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8402213B2 (en) * | 2008-12-30 | 2013-03-19 | Lsi Corporation | Data redundancy using two distributed mirror sets |
-
2015
- 2015-09-30 CN CN201811143358.4A patent/CN109445687B/zh active Active
- 2015-09-30 CN CN201510646279.5A patent/CN105242879B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1679000A (zh) * | 2002-06-24 | 2005-10-05 | 网络装置公司 | 在raid数据重建和转移中使用文件系统信息 |
CN101556802A (zh) * | 2009-05-25 | 2009-10-14 | 杭州华三通信技术有限公司 | 一种raid阵列转换的方法及装置 |
CN102662607A (zh) * | 2012-03-29 | 2012-09-12 | 华中科技大学 | 一种raid6级别混合磁盘阵列及其性能加速和可靠性提高方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109445687B (zh) | 2022-04-26 |
CN105242879A (zh) | 2016-01-13 |
CN109445687A (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105242879B (zh) | 一种数据存储方法以及协议服务器 | |
CN104636286B (zh) | 用于数据访问的方法和设备 | |
CN110235098B (zh) | 存储系统访问方法及装置 | |
CN113485636B (zh) | 一种数据访问方法、装置和系统 | |
CN105468302B (zh) | 一种处理数据的方法、装置及系统 | |
CN108628541B (zh) | 一种文件存储的方法、装置及存储系统 | |
CN110096220B (zh) | 一种分布式存储系统、数据处理方法和存储节点 | |
EP3051408B1 (en) | Data operating method and device | |
CN108845877B (zh) | 管理内存的方法、装置和系统 | |
CN110018897B (zh) | 数据处理方法、装置及计算设备 | |
CN110199512B (zh) | 存储系统中存储设备的管理方法及装置 | |
EP3779705A1 (en) | Data writing method, client server, and system | |
CN106844108A (zh) | 一种数据存储方法、服务器以及存储系统 | |
CN110187832B (zh) | 一种数据操作的方法、设备和系统 | |
CN109582213A (zh) | 数据重构方法及装置、数据存储系统 | |
CN109918352B (zh) | 存储器系统和存储数据的方法 | |
CN107211003A (zh) | 分布式存储系统及管理元数据的方法 | |
US20140059019A1 (en) | Methods and systems for data cleanup using physical image of files on storage devices | |
CN104317716B (zh) | 分布式节点间的数据传输方法及分布式节点设备 | |
CN110199270B (zh) | 存储系统中存储设备的管理方法及装置 | |
US20190114076A1 (en) | Method and Apparatus for Storing Data in Distributed Block Storage System, and Computer Readable Storage Medium | |
CN110147203A (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN108874314A (zh) | 一种独立冗余磁盘阵列的重构方法及装置 | |
CN109814805A (zh) | 存储系统中分条重组的方法及分条服务器 | |
CN110874345B (zh) | 分布式存储系统中的数据处理方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |