CN103246484B - 一种数据存储方法、装置及系统 - Google Patents

一种数据存储方法、装置及系统 Download PDF

Info

Publication number
CN103246484B
CN103246484B CN201310162423.9A CN201310162423A CN103246484B CN 103246484 B CN103246484 B CN 103246484B CN 201310162423 A CN201310162423 A CN 201310162423A CN 103246484 B CN103246484 B CN 103246484B
Authority
CN
China
Prior art keywords
node
block
data block
stored
memory node
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
Application number
CN201310162423.9A
Other languages
English (en)
Other versions
CN103246484A (zh
Inventor
王道辉
程君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NANTONG HANGDA ELECTRONIC TECHNOLOGY Co.,Ltd.
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310162423.9A priority Critical patent/CN103246484B/zh
Publication of CN103246484A publication Critical patent/CN103246484A/zh
Application granted granted Critical
Publication of CN103246484B publication Critical patent/CN103246484B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明的实施例提供一种数据存储方法、装置及系统,应用于计算机领域,能够提高数据安全性。包括:在待存储数据块中提取一个数据块作为基准块,待存储数据块中的数据块的个数小于分布式哈希表DHT环中存储节点标识的个数,DHT环包含有存储节点标识,存储节点标识为物理存储节点标识,或虚拟存储节点标识;获取基准块的哈希值;根据基准哈希值在DHT环上获取对应的基准存储节点标识;以基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储待存储数据块中的每个数据块的存储节点的存储节点标识;将待存储数据块中的每个数据块分别存储至所获取的存储节点标识对应的存储节点上。该数据存储方法、装置及系统用于数据的存储。

Description

一种数据存储方法、装置及系统
技术领域
本发明涉及计算机领域,尤其涉及一种数据存储方法、装置及系统。
背景技术
随着计算机技术以及网络技术的高速发展,需要存储和处理的数据量呈几何倍数的增长,传统的存储方式已经无法满足人们的要求。于是分布式存储技术应运而生。分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络将待存储数据存储在分布式存储系统中的每台机器上的存储空间,并将这些分散的存储资源构成一个虚拟的存储设备呈现给使用者。
EC(ErasureCode,擦除码)建立了一个数学方程来描述一组数字,从而可以检查该组数字准确性并在一个数字丢失的时候可以恢复,被越来越广泛是用于到数据存储领域。
在分布式存储系统中,通过EC技术可以将一个大的数据块分解成多个小的子数据块,并根据这些子数据块生成多个校验块,然后对由子数据块和校验块中的各个数据块分别进行哈希(hash)计算,并根据所述哈希计算的结果将所述子数据块和校验块在DHT(DistributedHashTable,分布式哈希表)环上进行分配,使子数据块和校验块最终存放在分布式存储系统中的存储节点上,所述DHT环是由存储节点对应的存储节点标识逻辑上组成的环。当存储后的数据块出现丢失的情况时,只要丢失或损毁的数据块小于等于校验块个数,就可以通过校验块把丢失的数据块的数据恢复出来,达到数据保护的目的。
但是,由于哈希计算的结果是随机的,子数据块和校验块存在多个数据块存储在同一个存储节点上的可能性,这样,如果这个存储节点标识对应的存储节点出现故障,存储在该存储节点上的几个数据块就会损毁,如果损毁的数据块个数大于校验块个数,就无法进行数据的恢复,因此现有技术中,多个数据块存储到同一个存储节点上的概率较高,导致数据安全性较低。
发明内容
本发明的实施例提供一种数据存储方法、装置及系统,能够提高数据安全性。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种数据存储方法,应用于存储装置,包括:
在待存储数据块中提取一个数据块作为基准块,所述待存储数据块中的数据块的个数小于分布式哈希表DHT环中存储节点标识的个数,所述DHT环包含有存储节点标识,所述存储节点标识为物理存储节点标识,或所述存储节点标识为虚拟存储节点标识;
获取所述基准块的哈希值;
根据所述基准哈希值在所述DHT环上获取对应的基准存储节点标识;
以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识;
将所述待存储数据块中的每个数据块分别存储至所获取的存储节点标识对应的存储节点上。
结合第一方面,在第一种可实现方式中,所述存储节点标识为物理存储节点标识,且所述待存储数据块共m个,所述m为大于等于2的整数,
所述以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识包括:
以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上依次获取m个不同的物理存储节点标识;
其中,所述基准块分配在所述基准存储节点上,所述m个不同的物理存储节点中每两个相邻的物理存储节点在所述DHT环上间隔n个物理存储节点,所述n为大于等于0的整数;
所述将所述待存储数据块中的每个数据块分别存储至所述获取的存储节点标识对应的存储节点上,包括:
将所述m个待存储数据块分别存储到所获取的m个不同的物理存储节点上。
结合第一方面,在第二种可实现方式中,在所述在待存储数据块中提取一个数据块作为基准块之前,所述方法还包括:
将每个物理存储节点在逻辑上划分为至少一个虚拟存储节点,所述虚拟存储节点与所述物理存储节点存在映射关系,所述虚拟存储节点为逻辑上的存储空间;
获取所述虚拟存储节点的虚拟存储节点标识;
根据所述虚拟存储节点标识建立DHT环,所述DHT环的存储节点标识为虚拟存储节点标识。
结合第二种可实现方式,在第三种可实现方式中,当所述每个物理存储节点在逻辑上划分为t个虚拟存储节点,所述t大于等于2,且所述待存储数据块共m个,所述m为大于等于2的整数;
所述以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识包括:
以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上获取m个不同的虚拟存储节点标识,且所述m个不同的虚拟存储节点标识对应的虚拟存储节点中不存在两个以上虚拟存储节点与同一个物理存储节点存在映射关系;
其中,所述基准块分配在所述基准存储节点上,所述m个不同的虚拟存储节点中每两个相邻的虚拟存储节点在所述DHT环上间隔n个虚拟存储节点,所述n为大于等于0的整数;
所述将所述待存储数据块中的每个数据块分别存储至所述获取的存储节点标识对应的存储节点上,包括:
将所述m个待存储数据块分别存储到所获取的m个不同的虚拟存储节点上。
结合第一方面、第一至三种可实现方式,在第四种可实现方式中,在所述在待存储数据块中提取一个数据块作为基准块之前,所述方法还包括:
判断子数据块和校验块的个数之和是否大于所述DHT环中存储节点标识的个数;
当所述子数据块和校验块中未存储的数据块的个数大于所述DHT环中存储节点标识的个数,在所述子数据块和校验块中未存储的数据块中提取等于所述DHT环中存储节点标识的个数的数据块作为所述待存储数据块;
当所述子数据块和校验块中未存储的数据块的个数小于等于所述DHT环中存储节点标识的个数,在所述子数据块和校验块中提取所有未存储的数据块作为所述待存储数据块。
第二方面,提供一种存储装置,包括:
第一提取单元,用于在待存储数据块中提取一个数据块作为基准块,所述待存储数据块中的数据块的个数小于分布式哈希表DHT环中存储节点标识的个数,所述DHT环包含有存储节点标识,所述存储节点标识为物理存储节点标识,或所述存储节点标识为虚拟存储节点标识;
第一获取单元,用于获取所述第一提取单元提取的基准块的哈希值;
处理单元,用于根据所述第一获取单元获取的基准哈希值在所述DHT环上获取对应的基准存储节点标识;
分配单元,用于以所述处理单元得到的基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识;
存储单元,用于将所述待存储数据块中的每个数据块分别存储至所述分配单元获取的存储节点标识对应的存储节点上。
结合第二方面,在第一种可实现方式中,所述存储节点标识为物理存储节点标识,且所述待存储数据块共m个,所述m为大于等于2的整数,
所述分配单元具体用于:
以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上依次获取m个不同的物理存储节点标识;
将所述待存储数据块分别依次分配在所述m个不同的物理存储节点标识上;
所述存储单元具体用于:
将所述m个待存储数据块分别存储到所获取的m个不同的物理存储节点上。
结合第二方面,在第二种可实现方式中,
所述存储装置还包括:
划分单元,用于为每个物理存储节点在逻辑上划分为至少一个虚拟存储节点,所述虚拟存储节点与所述物理存储节点存在映射关系,所述虚拟存储节点为逻辑上的存储空间;
第二获取单元,用于获取所述虚拟存储节点的虚拟存储节点标识;
建立单元,用于根据所述虚拟存储节点标识建立DHT环,所述DHT环的存储节点标识为虚拟存储节点标识。
结合第二种可实现方式,在第四种可实现方式中,
当所述每个物理存储节点在逻辑上划分为t个虚拟存储节点,所述t大于等于2,且所述待存储数据块共m个,所述m为大于等于2的整数;
所述分配单元,具体用于:
以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上获取m个不同的虚拟存储节点标识,且所述m个不同的虚拟存储节点标识对应的虚拟存储节点中不存在两个以上虚拟存储节点与同一个物理存储节点存在映射关系;
其中,所述基准块分配在所述基准存储节点上,所述m个不同的虚拟存储节点中每两个相邻的虚拟存储节点在所述DHT环上间隔n个虚拟存储节点,所述n为大于等于0的整数;
所述存储单元具体用于:
将所述m个待存储数据块分别存储到所获取的m个不同的虚拟存储节点上。
结合第二方面,第一至三种可实现方式,在第四种可实现方式中,所述存储装置还包括:
判断单元,用于在所述在待存储数据块中提取一个数据块作为基准块之前,判断子数据块和校验块的个数之和是否大于所述DHT环中存储节点标识的个数;
第二提取单元,用于在所述子数据块和校验块中未存储的数据块的个数大于所述DHT环中存储节点标识的个数时,在所述子数据块和校验块中未存储的数据块中提取等于所述DHT环中存储节点标识的个数的数据块作为所述待存储数据块;
第三提取单元,用于在所述子数据块和校验块中未存储的数据块的个数小于等于所述DHT环中存储节点标识的个数时,在所述子数据块和校验块中提取所有未存储的数据块作为所述待存储数据块。
第三方面,提供一种数据存储系统,包括:
以上任意所述的存储装置。
本发明的实施例提供一种数据存储方法、装置及系统,所述数据存储方法,应用于存储装置,包括:在待存储数据块中提取一个数据块作为基准块,所述待存储数据块中的数据块的个数小于分布式哈希表DHT环中存储节点标识的个数,所述DHT环包含有存储节点标识,所述存储节点标识为物理存储节点标识,或所述存储节点标识为虚拟存储节点标识;获取所述基准块的哈希值;根据所述基准哈希值在所述DHT环上获取对应的基准存储节点标识;以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识;将所述待存储数据块中的每个数据块分别存储至所获取的存储节点标识对应的存储节点上。这样一来,通过获取基准存储节点标识,然后以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识,使得所述数据块最终存储至不同存储节点上,与现有技术相比,无需通过对所有数据块都进行哈希计算得到的结果来分配数据块,减少了数据存储的随机性,有效降低了多个数据块存储到同一个存储节点上的可能性,因此提高了数据安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据存储方法流程图;
图2为现有技术提供的一种数据存储方法示意图;
图3为本发明实施例提供的一种数据存储方法示意图;
图4为本发明实施例提供的另一种数据存储方法流程图;
图5为本发明实施例提供的另一种数据存储方法示意图;
图6为本发明实施例提供的一种存储装置结构示意图;
图7为本发明实施例提供的另一种存储装置结构示意图;
图8为本发明实施例提供的又一种存储装置结构示意图;
图9为本发明实施例提供的再一种存储装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据存储方法,如图1所示,应用于存储装置,包括:
101、在待存储数据块中提取一个数据块作为基准块。
需要说明的是,所述待存储数据块中的数据块的个数小于分布式哈希表DHT环中存储节点标识的个数,所述DHT环包含有存储节点标识,DHT环上具有逻辑地址和逻辑上的存储节点标识的对应关系。所述存储节点标识为物理存储节点标识,或所述存储节点标识为虚拟存储节点标识。所述一个数据块是按照预设规则指定的数据块,如,待存储数据块中的第一个数据块或最后一个数据块。
在步骤101之前,所述方法还包括:判断子数据块和校验块中未存储的数据块的个数是否大于DHT环中存储节点标识的个数;当所述子数据块和校验块中未存储的数据块的个数大于所述DHT环中存储节点标识的个数,在所述子数据块和校验块中未存储的数据块中提取等于所述DHT环中存储节点标识的个数的数据块作为所述待存储数据块;当所述子数据块和校验块中未存储的数据块的个数小于等于所述DHT环中存储节点标识的个数,在所述子数据块和校验块中提取所有未存储的数据块作为所述待存储数据块。这样可以保证特定数据块的个数小于等于DHT环上的存储节点标识的个数。特别的,由于在实际应用中,子数据块和校验块中未存储的数据块的个数通常小于所述DHT环中存储节点标识的个数,大于所述DHT环中存储节点标识的个数的情况较为少见,上述判断过程一般可以省略。
102、获取所述基准块的哈希值。
哈希计算,也称散列计算,就是把任意长度的输入,又叫做预映射(pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,输出的散列值占用的空间通常远小于输入占用的空间,不同的输入可能会散列成相同的输出,因此不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。在对数据块进行哈希计算时,通常输入该数据块对应的序列数据,输出的为一个较为简短的数值。
103、根据所述基准哈希值在所述DHT环上获取对应的基准存储节点标识。
通常的,哈希值与DHT环上的存储节点标识存在对应关系,每个存储节点标识对应一定范围的哈希值,因此,本发明实施例中可以根据该基准计算得到的哈希值在DHT环上每个存储节点标识对应的哈希值范围进行查询,例如,若该哈希值落入第一存储节点标识对应的哈希值范围,则所述第一存储节点标识作为基准存储节点标识。
104、以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识。
105、将所述待存储数据块中的每个数据块分别存储至所述获取的存储节点标识对应的存储节点上。
这样一来,通过获取基准存储节点标识,然后以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识,使得所述数据块最终存储至不同存储节点上,与现有技术相比,无需通过对所有数据块都进行哈希计算得到的结果来分配数据块,减少了数据存储的随机性,有效降低了多个数据块存储到同一个存储节点上的可能性,因此提高了数据安全性。
需要说明的是,DHT是一种分布式存储方法,所述DHT环是由DHT网络中所有或多个存储节点组成的虚拟的封闭的圆环。现有技术中,所述存储节点仅为物理存储节点,而在本发明实施例中,所述存储节点既可以为物理存储节点,也可以为虚拟存储节点,所述物理存储节点为具有独立运算功能及存储功能的单元,可以为服务器,也可以为设置有CPU(CentralProcessingUnit,中央处理器)的磁盘等等。所述虚拟存储节点为逻辑上的存储空间,可以分布在至少一个磁盘或存储器上。通常的,所述DHT环可以为由物理存储节点标识组成的DHT环,如图2所示,假设通过EC技术将一个大的数据块分解成6小的子数据块,分别为子数据块A1,A2,A3,A4,A5和A6,并根据这些子数据块生成2个校验块,分别为校验块B1和B2,现有技术中,需要对由6个子数据块和2个校验块中的各个数据块分别进行哈希计算,得到8个哈希值,哈希值是比较大的值,通常情况是二进制的32位数,可以为十六进制中0~0XFFFFFFFF的任意一个值;每个物理存储节点标识对应一定范围的哈希值,例如物理存储节点标识N1对应的哈希值范围为0~0X10000000;N2对应的哈希值范围为0X10000001~0X20000000等等。如果某个数据块通过哈希计算得到的哈希值正好落在某个存储节点负责的哈希值范围内,这个数据块就存储在这个节点上。假设子数据块A1,A2,A3,A4,A5和A6通过哈希计算得到的数值分别为0X10000001,0X20000001,0X20000010,0X200001002,0X30000002和0X30000010,校验块B1和B2通过哈希计算得到的数值分别为0X30000010和0X40000100,如图2所示,假设所述DHT环为由物理存储节点标识N1,N2,N3,N4,N5,N6和N7在逻辑上组成的,每个存储节点对应一定的哈希值范围,其中,N1对应的哈希值范围为0~0X10000000;N2对应的哈希值范围为0X10000001~0X20000000;N3对应的哈希值范围为0X20000001~0X30000000;N4对应的哈希值范围为0X30000001~0X40000000;N5对应的哈希值范围为0X40000001~0X50000000;N6对应的哈希值范围为0X50000001~0X60000000;N7对应的哈希值范围为0X60000001~0X70000000,如图2中的DHT环,物理存储节点标识N1和N2之间的哈希值范围与N1对应,物理存储节点N2和N3之间的哈希值范围与N2对应,由于子数据块A1,A2,A3,A4,A5和A6通过哈希计算得到的数值分别为0X00000001,0X10000001,0X10000010,0X100001002,0X20000002和0X20000010,因此获取用于存储A1的存储节点的存储节点标识为N1,获取用于存储A2,A3和A4的存储节点的存储节点标识为N2,获取用于存储A5和A6的存储节点的存储节点标识为N3。同理,由于校验块B1和B2通过哈希计算得到的数值分别为0X30000010和0X40000100,因此获取用于存储B1的存储节点的存储节点标识为N4上,获取用于存储B2的存储节点的存储节点标识为N5上,然后,将每个数据块存储至所获取的存储节点标识对应的存储节点上。
但是,由于哈希计算的结果是随机的,子数据块和校验块存在多个数据块存储到同一个物理存储节点标识上的可能性,如A2,A3和A4同时存储在物理存储节点N2上,这样,如果物理存储节点N2出现故障,存储在该物理存储节点N2上的数据块A2,A3和A4就会损毁,由于损毁的数据块个数大于校验块个数2,就无法进行数据的恢复。
本发明实施例中,仅对基准块进行哈希计算,如图3所示,首先判断子数据块和校验块中未存储的数据块的个数是否大于DHT环中存储节点标识的个数;由于图3中存在子数据块A1,A2,A3,A4,A5和A6以及校验块B1和B2共8个未存储的数据块,DHT环上存在物理存储节点标识N1,N2,N3,N4,N5,N6和N7共7个存储节点标识,分别为N1对应的哈希值范围为0~0X10000000;N2对应的哈希值范围为0X10000001~0X20000000;N3对应的哈希值范围为0X20000001~0X30000000;N4对应的哈希值范围为0X30000001~0X40000000;N5对应的哈希值范围为0X40000001~0X50000000;N6对应的哈希值范围为0X50000001~0X60000000;N7对应的哈希值范围为0X60000001~0X70000000,因此,子数据块和校验块的个数之和大于DHT环中存储节点标识的个数,在所述子数据块和校验块中未存储的数据块中提取等于所述DHT环中存储节点标识的个数的数据块作为所述待存储数据块,即提取7个数据块作为待存储数据块,本实施例假设提取子数据块A1,A2,A3,A4,A5和A6以及校验块B1作为待存储数据块,并且在待存储数据块中提取一个子数据块A1作为基准块,假设子数据块A1通过哈希计算得到的基准哈希值为0X00000001,则可以根据基准哈希值获取基准存储节点标识N1,然后以所述基准存储节点标识N1为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识;即根据预设规则将所述待存储数据块中的数据块分配在存储节点标识上,需要说明的是,所述预设规则可以有多种,如在所述DHT环上以所述起始的存储节点标识为中心,在所述起始的存储节点标识上分配基准块,然后分别向两侧依次分配待存储数据块中其他的数据块,或者先在所述DHT环上的起始的存储节点标识上分配基准块,然后分别顺时针或逆时针依次分配待存储数据块中其他的数据块,本发明对此不作限制。
例如,所述DHT环为由物理存储节点标识组成的DHT环,且所述待存储数据块共m个,所述m为大于等于2的整数,首先,以所述基准存储节点标识为起始存储节点标识,在所述DHT环上依次获取m个不同的物理存储节点标识;将所述待存储数据块分别依次分配在所述m个不同的物理存储节点上;其中,所述基准块分配在所述基准存储节点标识上,所述m个不同的物理存储节点中每两个相邻的物理存储节点在所述DHT环上间隔n个物理存储节点,所述n为大于等于0的整数;将所述m个待存储数据块分别存储到所获取的m个不同的物理存储节点上,即将数据块存储在所获取的物理存储节点标识对应的物理存储节点上。在本实施例中,可以根据预设规则获取存储子数据块A1的物理存储节点的物理存储节点标识为N1,获取用于存储除子数据块A1之外的其他数据块在所述DHT环的不同物理存储节点对应的物理存储节点标识,本实施例假设按照预设规则以基准存储节点标识N1为起始存储节点标识,将其他数据块分别顺时针依次分配在所述DHT环的不同且相邻的存储节点标识上,那么,各个已获取的存储节点标识的标识号为在所述基准存储节点标识N1的标识号1的基础上依次加1,即获取用于存储子数据块A2的物理存储节点的标识为N2,获取用于存储子数据块A3的物理存储节点的标识为N3,获取用于存储子数据块A4的物理存储节点的标识为N4,直到获取用于存储校验块B1的物理存储节点的标识为N7。由于未获取物理存储节点标识的数据块还存在校验块B2,因此可以重复上述步骤,再次进行子数据块和校验块中未存储的数据块的个数是否大于DHT环中存储节点标识的个数的判断,以及基准块的获取等步骤,进行新一轮的存储节点标识的获取。此时,只剩下校验块B2未分配,确定校验块B2为基准块,计算校验块B2的哈希值为0X40000100,落到物理存储节点标识N5对应的哈希值范围内,因此校验块B2可以存储至物理存储节点标识N5上。然后,将所述待存储数据块中的每个数据块分别存储至所获取的存储节点标识对应的存储节点上,即子数据块A1存储在物理存储节点N1上,将子数据块A2存储在物理存储节点N2上,将子数据块A3存储在物理存储节点N3上,将子数据块A4存储在物理存储节点N4上,直到将校验块B1存储在物理存储节点N7上,最终将校验块B2存储在物理存储节点N5上。
需要说明的是,为了简化物理存储节点标识的获取步骤,在进行第二轮物理存储节点标识的获取,在本实施例中即校验块B2的分配时,若判断得到子数据块和校验块中未存储的数据块的个数小于DHT环中存储节点标识的个数,可以仍然按照上一轮物理存储节点标识的获取的顺序依次进行物理存储节点标识的获取,由于存储校验块B1的物理存储节点的物理存储节点标识为N7,那么在DHT环上顺时针获取存储校验块B2的物理存储节点的物理存储节点标识为N1。
采用本发明实施例提供的数据存储方法,无需通过对所有数据块都进行哈希计算得到的结果来分配数据块,降低了数据存储的随机性,由于待存储数据块中的数据块分配在不同的存储节点标识上,有效减少了多个数据块存储到同一个存储节点上的情况,因此提高了数据安全性,即使子数据块和校验块的总个数大于存储节点的个数,最终进行数据存储后,被存储的数据块的分布也较为均匀,子数据块存在多个数据块存储到同一个存储节点上的情况发生的概率减小。例如,图3较图2仅出现一组多个数据块分配到同一个存储节点标识上的情况,相应的,物理存储节点标识为N5的物理存储节点上存储了子数据块A5和校验块B2,即使物理存储节点N5出现故障,存储在该物理存储节点上的子数据块A5和校验块B2被损毁,由于损毁的数据块个数等于校验块个数2,因此进行数据的恢复。所以本发明实施例提供的数据存储方法有效提高了数据安全性。
特别的,当所述DHT环为由虚拟存储节点标识组成的DHT环时,如图4所示,本发明实施例提供另一种数据存储方法,应用于存储装置,包括:
401、生成子数据块和校验块。执行步骤402。
将一个大的数据块分解成子数据块和校验块通常采用EC技术,具体的过程与现有技术相同,本发明对此不再赘述。需要说明的是,根据所述大的数据块的数据重要性的不同,子数据块和校验块可以选择不同的比例,例如:8+2,4+4,数据越重要,校验块所占比重越大。
本实施例假设通过EC技术将一个大的数据块分解成6小的子数据块,分别为子数据块A1,A2,A3,A4,A5和A6,并采用EC技术根据这些子数据块生成2个校验块,分别为校验块B1和B2。
402、为每个物理存储节点设置在逻辑上划分为至少一个虚拟存储节点,所述虚拟存储节点与所述物理存储节点存在映射关系。执行步骤403。
在本实施例中,所述DHT环由虚拟存储节点标识在逻辑上组成。所述虚拟存储节点为逻辑上的存储空间,可以分布在至少一个磁盘或存储器上。
在实际应用中,可以为每个物理存储节点在逻辑上划分几个、几十、上百甚至更多的虚拟存储节点,建立所述虚拟存储节点与所述物理存储节点的映射关系,所述虚拟存储节点到物理存储节点的映射没有固定的规则,所述映射关系可以根据具体情况实时设置,示例的,如表1所示,假设数据存储系统中存在物理存储节点标识为N1至N10的共10个物理存储节点,每个物理存储节点在和逻辑上划分为3个虚拟存储节点,即每个物理存储节点都有3个虚拟存储节点与其存在映射关系,示例的,物理存储节点标识为N1的物理存储节点分别与虚拟存储节点标识为P1、P11和P21的虚拟存储节点存在映射关系,物理存储节点标识为N2的物理存储节点分别与虚拟存储节点标识为P2、P12和P22的虚拟存储节点存在映射关系。根据表1所示的虚拟存储节点对应的虚拟存储节点标识可以建立如图4所示的DHT环。
虚拟存储节点的存在可以方便物理存储节点的故障恢复,同时可以保证数据存储系统中数据分布的均衡。示例的,假设子数据块A1应该分配在虚拟存储节点标识P1上,如表1所示,由于虚拟存储节点标识为P1的虚拟存储节点与物理存储节点标识为N1的物理存储节点存在映射关系,实际存储过程中,子数据块A1应该存储在物理存储节点N1中,但当物理存储节点N1出现故障时,若子数据块A1依然存储在物理存储节点N1中,会形成无效的存储,子数据块A1会损毁或丢失,在该情况下,可以调整物理存储节点与虚拟存储节点的映射关系,如终止P1与N1之间的映射关系,建立P1与N2之间的映射关系,这样,在数据存储过程中,子数据块A1实际存储在了物理存储节点N2,保证了数据的安全,同时也便于对物理存储节点N1的修复。示例的,如表1所示,假设虚拟存储系统中,子数据块A1分配在虚拟存储节点标识P1上,子数据块A2分配在虚拟存储节点标识P11上,则子数据块A1和子数据块A2均存储在物理存储节点N1中,而物理存储节点N2中为空闲,为了保证数据的均衡分布,可以如终止P1与N1之间的映射关系,建立P1与N2之间的映射关系,使得子数据块A2存储在物理存储节点N1中,子数据块A1存储在物理存储节点N2中。
表1
N1 N2 N3 N4 N5 N6 N7 N8 N9 N10
P1 P2 P3 P4 P5 P6 P7 P8 P9 P10
P11 P12 P13 P14 P15 P16 P17 P18 P19 P20
P21 P22 P23 P24 P25 P26 P27 P28 P29 P30
403、判断子数据块和校验块中未存储的数据块的个数是否大于DHT环中存储节点标识的个数。
当所述子数据块和校验块中未存储的数据块的个数大于所述DHT环中存储节点标识的个数,执行步骤408,当所述子数据块和校验块中未存储的数据块的个数小于等于所述DHT环中存储节点标识的个数,执行步骤404。
所述判断过程确保每次进行数据分配时,待存储数据块的个数小于等于存储节点标识的个数,有效地保证了各个节点的负载均衡。
本实施例中,由于数据块分解成6小的子数据块,分别为子数据块A1,A2,A3,A4,A5和A6,并采用EC技术根据这些子数据块生成2个校验块,分别为校验块B1和B2,因此最终子数据块与校验块共8个,而本实施例中的存储系统中的虚拟存储节点标识个数如表1所示共30个,由于8小于30,因此可以执行步骤404。
404、在所述子数据块和校验块中提取所有未存储的数据块作为所述待存储数据块。执行步骤405。
在本实施例中,直接提取子数据块A1,A2,A3,A4,A5和A6,以及校验块B1和B2作为待存储数据块。
405、在待存储数据块中提取数据块作为基准块。执行步骤406。
本实施例假设提取子数据块A1作为基准块。特别的,作为基准块的特定数据块也可以为除首个子数据块A1之外的其他数据块,如首个校验块B1,或者最后一个数据块A6,或者最后一个校验块B2。本发明对此不做限定。
406、根据所述基准块获取基准存储节点标识。执行步骤407。
首先对所述基准块A1进行哈希计算得到基准哈希值,本实施例假设基准哈希值为0X10000001,然后根据所述基准哈希值在DHT环上获取基准存储节点标识,最终得到的基准存储节点标识为P1。
407、以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识。执行步骤409。
假设所述待存储数据块共m个,具体的,可以以所述基准存储节点为起始的存储节点标识,在所述DHT环上获取m个不同的虚拟存储节点标识,且所述m个不同的虚拟存储节点标识对应的虚拟存储节点中不存在两个以上虚拟存储节点与同一个物理存储节点存在映射关系;将所述待存储数据块分别依次分配在所述m个不同的虚拟存储节点标识上,其中,所述基准块分配在所述基准存储节点上,所述m个不同的虚拟存储节点中每两个相邻的虚拟存储节点在所述DHT环上间隔n个虚拟存储节点,所述n为大于等于0的整数;即待存储数据块中每个数据块在DHT环的虚拟存储节点标识上分配时,可以存在固定的间隔,所述间隔数可以根据具体情况设定,如0、1或2等等,所述待存储数据块分配至m个不同虚拟存储节点标识的过程可以看做是待存储数据块中的数据块与所述m个不同虚拟存储节点对应的虚拟存储节点标识建立映射关系的过程,数据块到虚拟存储节点标识的映射的规则可以有多种,本发明对此不做限制,如从基准存储节点位置顺时针顺序往后分配,即每两个相邻的数据块分配的虚拟存储节点标识在DHT环上相邻。
本实施例中,待存储数据块共8个,如图5中,8个不同的存储节点中每两个相邻的存储节点的存储节点在所述DHT环上的间隔为0,即分别依次在所述DHT环获取用于存储8个数据块中每个数据块的不同且相邻的存储节点的存储节点标识:获取用于存储子数据块A1的虚拟存储节点的虚拟存储节点标识为P1,获取用于存储子数据块A2的虚拟存储节点的虚拟存储节点标识为P2,获取用于存储子数据块A3的虚拟存储节点的虚拟存储节点标识为P3,获取用于存储子数据块A4的虚拟存储节点的虚拟存储节点标识为P4,直到获取用于存储校验块B2的虚拟存储节点的虚拟存储节点标识为P8,特别的,所述分别依次获取用于存储所述8个数据块中每个数据块的存储节点的存储节点标识在实际应用中可以看作8个数据块分别依次分配在所述DHT环的不同且相邻的存储节点标识上。
408、在所述子数据块和校验块中未存储的数据块中提取等于所述DHT环中存储节点标识的个数的数据块作为所述待存储数据块。执行步骤405。
409、将所述待存储数据块中的每个数据块分别存储至所述获取的存储节点标识对应的存储节点上。执行步骤403。
将所述m个待存储数据块分别存储到所获取的m个不同的虚拟存储节点上,即将分配在所述m个不同的虚拟存储节点标识上的数据块存储至相应的m个不同的虚拟存储节点上,由于步骤402中建立了所述虚拟存储节点与所述物理存储节点的映射关系,当所述数据块存储至所述m个不同的虚拟存储节点上时,便映射至相应的m个不同的物理存储节点上,因此所述存储至所述m个不同的虚拟存储节点标识上的数据块实际存储在m个不同的物理存储节点上。
由于所述虚拟存储节点到物理存储节点的映射没有固定的规则,虚拟存储节点到物理存储节点的映射关系是和数据块到虚拟存储节点的映射相关的,例如,数据块到虚拟存储节点的映射规则可以是从基准存储节点位置顺时针顺序往后分配,即每两个相邻的数据块分配的虚拟存储节点标识在DHT环上相邻。数据块到虚拟存储节点的映射规则也可以是从基准存储节点标识往后每间隔一个虚拟存储节点标识分配一个数据块,例如将数据块A1~A6分别分配在虚拟存储节点标识P1,P3,P5,P7,P9,P11上,即获取用于存储数据块A1~A6的虚拟存储节点的虚拟存储节点标识P1,P3,P5,P7,P9,P11,那么虚拟存储节点到物理存储节点的映射规则就要保证虚拟存储节点标识对应的虚拟存储节点P1,P3,P5,P7,P9,P11映射到不同的物理存储节点,如P1映射至N1,P3映射至N2,P5映射至N3,P7映射至N4,P9映射至N5,P11映射至N6,根据所述映射关系将分配在不同的虚拟存储节点标识的数据块实际上存储至相应的不同的物理存储节点上。
示例的,假设数据块到虚拟存储节点的映射规则为从基准存储节点位置顺时针顺序往后分配,即每两个相邻的数据块分配的虚拟存储节点标识在DHT环上相邻,若数据存储系统中共t个物理存储节点,每个物理存储节点在逻辑上划分为r个虚拟存储节点,所述t为大于等于2的整数,所述r为大于等于2的整数,任意一个物理存储节点对应的虚拟存储节点的虚拟存储节点标识中相邻的虚拟存储节点标识在所述DHT环相隔t个存储节点标识。如表1所示,数据存储系统中共10个物理存储节点,每个物理存储节点划分为3个虚拟存储节点,则任意一个物理存储节点对应的虚拟存储节点的虚拟存储节点标识中相邻的虚拟存储节点标识在所述DHT环相隔10个存储节点标识。示例的,如图5所示,物理存储节点N1对应的虚拟存储节点的虚拟存储节点标识中相邻的虚拟存储节点标识P1和P11相隔10个存储节点。
特别的,在具体的数据存储过程中,需要对存储的数据块及该数据块的存储位置进行记录,以便于在后续数据提取过程中有效地提取该数据块。
需要说明的是,本发明中术语“多个”表示至少两个。本发明实施例提供的数据存储方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,因此不再赘述。
本发明实施例提供的数据存储方法,通过获取基准存储节点标识,然后以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识,使得所述数据块最终存储至不同存储节点上,与现有技术相比,无需通过对所有数据块都进行哈希计算得到的结果来分配数据块,减少了数据存储的随机性,有效降低了多个数据块存储到同一个存储节点上的可能性,因此提高了数据安全性。同时还为数据的均分和装置的故障恢复提供了便利。
本发明实施例提供一种存储装置60,如图6所示,包括:
第一提取单元601,用于在待存储数据块中提取一个数据块作为基准块,所述待存储数据块中的数据块的个数小于分布式哈希表DHT环中存储节点标识的个数,所述DHT环包含有存储节点标识,所述存储节点标识为物理存储节点标识,或所述存储节点标识为虚拟存储节点标识。
第一获取单元602,用于获取所述第一提取单元601提取的基准块的哈希值。
处理单元603,用于根据所述第一获取单元602获取的基准哈希值在所述DHT环上获取对应的基准存储节点标识。
分配单元604,用于以所述处理单元603得到的基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识。
存储单元605,用于将所述待存储数据块中的每个数据块分别存储至所述分配单元获取的存储节点标识对应的存储节点上。
这样一来,通过处理单元获取基准存储节点标识,然后分配单元以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识,使得所述数据块最终由存储单元存储至不同存储节点上,与现有技术相比,无需通过对所有数据块都进行哈希计算得到的结果来分配数据块,减少了数据存储的随机性,有效降低了多个数据块存储到同一个存储节点上的可能性,因此提高了数据安全性。
进一步的,所述存储节点标识为物理存储节点标识,且所述待存储数据块共m个,所述m为大于等于2的整数,
所述分配单元604具体用于:以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上依次获取m个不同的物理存储节点标识;将所述待存储数据块分别依次分配在所述m个不同的物理存储节点标识上。
所述存储单元605具体用于:将所述m个待存储数据块分别存储到所获取的m个不同的物理存储节点上。
如图7所示,所述存储装置60还包括:
划分单元606,用于为每个物理存储节点在逻辑上划分为至少一个虚拟存储节点,所述虚拟存储节点与所述物理存储节点存在映射关系,所述虚拟存储节点为逻辑上的存储空间。
第二获取单元607,用于获取所述虚拟存储节点的虚拟存储节点标识。
建立单元608,用于根据所述虚拟存储节点标识建立DHT环,所述DHT环的存储节点标识为虚拟存储节点标识。
当所述每个物理存储节点在逻辑上划分为t个虚拟存储节点,所述t大于等于2,且所述待存储数据块共m个,所述m为大于等于2的整数;所述分配单元604,具体用于:
以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上获取m个不同的虚拟存储节点标识,且所述m个不同的虚拟存储节点标识对应的虚拟存储节点中不存在两个以上虚拟存储节点与同一个物理存储节点存在映射关系;
其中,所述基准块分配在所述基准存储节点上,所述m个不同的虚拟存储节点中每两个相邻的虚拟存储节点在所述DHT环上间隔n个虚拟存储节点,所述n为大于等于0的整数。
所述存储单元604具体用于:
将所述m个待存储数据块分别存储到所获取的m个不同的虚拟存储节点上。
特别的,如图8所示,所述存储装置60还包括:
判断单元609,用于在所述在待存储数据块中提取一个数据块作为基准块之前,判断子数据块和校验块的个数之和是否大于所述DHT环中存储节点标识的个数;
第二提取单元610,用于在所述子数据块和校验块中未存储的数据块的个数大于所述DHT环中存储节点标识的个数时,在所述子数据块和校验块中未存储的数据块中提取等于所述DHT环中存储节点标识的个数的数据块作为所述待存储数据块;
第三提取单元611,用于在所述子数据块和校验块中未存储的数据块的个数小于等于所述DHT环中存储节点标识的个数时,在所述子数据块和校验块中提取所有未存储的数据块作为所述待存储数据块。
本发明实施例提供一种数据存储系统,包括:本发明任意实施例所述的存储装置。所述存储装置可以为一个或多个服务器。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例提供一种存储装置70,如图9所示,包括:
处理器701,用于在待存储数据块中提取一个数据块作为基准块,所述待存储数据块中的数据块的个数小于分布式哈希表DHT环中存储节点标识的个数,所述DHT环包含有存储节点标识,所述存储节点标识为物理存储节点标识,或所述存储节点标识为虚拟存储节点标识。
获取所述基准块的哈希值。
根据所述基准哈希值在所述DHT环上获取对应的基准存储节点标识。
以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识。
存储器702,用于将所述待存储数据块中的每个数据块分别存储至所获取的存储节点标识对应的存储节点上。
这样一来,处理器通过获取基准存储节点标识,然后以所述基准存储节点标识为起始的存储节点标识,按照预设规则在DHT环上分别获取用于存储所述待存储数据块中的每个数据块的存储节点的存储节点标识,使得所述数据块最终存储至不同存储节点上,与现有技术相比,无需通过对所有数据块都进行哈希计算得到的结果来分配数据块,减少了数据存储的随机性,有效降低了多个数据块存储到同一个存储节点上的可能性,因此提高了数据安全性。
所述存储节点标识为物理存储节点标识,且所述待存储数据块共m个,所述m为大于等于2的整数,
所述处理器701具体用于:
以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上依次获取m个不同的物理存储节点标识;
其中,所述基准块分配在所述基准存储节点上,所述m个不同的物理存储节点中每两个相邻的物理存储节点在所述DHT环上间隔n个物理存储节点,所述n为大于等于0的整数。
所述存储器702具体用于:
将所述m个待存储数据块分别存储到所获取的m个不同的物理存储节点上。
所述处理器701还用于将每个物理存储节点在逻辑上划分为至少一个虚拟存储节点,所述虚拟存储节点与所述物理存储节点存在映射关系,所述虚拟存储节点为逻辑上的存储空间;获取所述虚拟存储节点的虚拟存储节点标识;根据所述虚拟存储节点标识建立DHT环,所述DHT环的存储节点标识为虚拟存储节点标识。
当所述每个物理存储节点在逻辑上划分为t个虚拟存储节点,所述t大于等于2,且所述待存储数据块共m个,所述m为大于等于2的整数;所述处理器701,具体用于:
以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上获取m个不同的虚拟存储节点标识,且所述m个不同的虚拟存储节点标识对应的虚拟存储节点中不存在两个以上虚拟存储节点与同一个物理存储节点存在映射关系;其中,所述基准块分配在所述基准存储节点上,所述m个不同的虚拟存储节点中每两个相邻的虚拟存储节点在所述DHT环上间隔n个虚拟存储节点,所述n为大于等于0的整数。
所述存储器702具体用于:
将所述m个待存储数据块分别存储到所获取的m个不同的虚拟存储节点上。
所述处理器701还用于判断子数据块和校验块的个数之和是否大于所述DHT环中存储节点标识的个数;当所述子数据块和校验块中未存储的数据块的个数大于所述DHT环中存储节点标识的个数,在所述子数据块和校验块中未存储的数据块中提取等于所述DHT环中存储节点标识的个数的数据块作为所述待存储数据块;当所述子数据块和校验块中未存储的数据块的个数小于等于所述DHT环中存储节点标识的个数,在所述子数据块和校验块中提取所有未存储的数据块作为所述待存储数据块。
本发明实施例提供一种数据存储系统,包括:本发明任意实施例所述的存储装置。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (7)

1.一种数据存储方法,其特征在于,应用于存储装置,包括:
在待存储数据块中提取一个数据块作为基准块,所述待存储数据块中的数据块的个数小于分布式哈希表DHT环中存储节点标识的个数,所述DHT环包含有存储节点标识,所述存储节点标识为物理存储节点标识,或所述存储节点标识为虚拟存储节点标识;
获取所述基准块的哈希值;
根据所述基准哈希值在所述DHT环上获取对应的基准存储节点标识;
当所述存储节点标识为物理存储节点标识,则以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上依次获取m个不同的物理存储节点标识;将所述m个待存储数据块分别存储到所获取的m个不同的物理存储节点上;所述m个不同的物理存储节点中每两个相邻的物理存储节点在所述DHT环上间隔n个物理存储节点;
或者,当每个物理存储节点在逻辑上划分为t个虚拟存储节点,则以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上依次获取m个不同的虚拟存储节点标识,将所述m个待存储数据块分别存储到所获取的m个不同的虚拟存储节点上;所述m个不同的虚拟存储节点标识对应的虚拟存储节点中不存在两个以上虚拟存储节点与同一个物理存储节点存在映射关系;所述m个不同的虚拟存储节点中每两个相邻的虚拟存储节点在所述DHT环上间隔n个虚拟存储节点;
其中,所述待存储数据块共m个,所述基准块分配在所述基准存储节点上,所述m为大于等于2的整数,所述t为大于等于2的整数,所述n为大于等于0的整数。
2.根据权利要求1所述的方法,其特征在于,
在所述在待存储数据块中提取一个数据块作为基准块之前,所述方法还包括:
将每个物理存储节点在逻辑上划分为至少一个虚拟存储节点,所述虚拟存储节点与所述物理存储节点存在映射关系,所述虚拟存储节点为逻辑上的存储空间;
获取所述虚拟存储节点的虚拟存储节点标识;
根据所述虚拟存储节点标识建立DHT环,所述DHT环的存储节点标识为虚拟存储节点标识。
3.根据权利要求1或2所述的方法,其特征在于,在所述在待存储数据块中提取一个数据块作为基准块之前,所述方法还包括:
判断子数据块和校验块的个数之和是否大于所述DHT环中存储节点标识的个数;
当所述子数据块和校验块中未存储的数据块的个数大于所述DHT环中存储节点标识的个数,在所述子数据块和校验块中未存储的数据块中提取等于所述DHT环中存储节点标识的个数的数据块作为所述待存储数据块;
当所述子数据块和校验块中未存储的数据块的个数小于等于所述DHT环中存储节点标识的个数,在所述子数据块和校验块中提取所有未存储的数据块作为所述待存储数据块。
4.一种存储装置,其特征在于,包括:
第一提取单元,用于在待存储数据块中提取一个数据块作为基准块,所述待存储数据块中的数据块的个数小于分布式哈希表DHT环中存储节点标识的个数,所述DHT环包含有存储节点标识,所述存储节点标识为物理存储节点标识,或所述存储节点标识为虚拟存储节点标识;
第一获取单元,用于获取所述第一提取单元提取的基准块的哈希值;
处理单元,用于根据所述第一获取单元获取的基准哈希值在所述DHT环上获取对应的基准存储节点标识;
分配单元,用于当所述存储节点标识为物理存储节点标识,则以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上依次获取m个不同的物理存储节点标识;将所述待存储数据块分别依次分配在所述m个不同的物理存储节点标识上;所述m个不同的物理存储节点中每两个相邻的物理存储节点在所述DHT环上间隔n个物理存储节点;
存储单元,用于将所述m个待存储数据块分别存储到所获取的m个不同的物理存储节点上;
或者,所述分配单元用于,当每个物理存储节点在逻辑上划分为t个虚拟存储节点,以所述基准存储节点标识为起始的存储节点标识,在所述DHT环上依次获取m个不同的虚拟存储节点标识,且所述m个不同的虚拟存储节点标识对应的虚拟存储节点中不存在两个以上虚拟存储节点与同一个物理存储节点存在映射关系;
所述存储单元用于,将所述m个待存储数据块分别存储到所获取的m个不同的虚拟存储节点上;
其中,所述待存储数据块共m个,所述基准块分配在所述基准存储节点上,所述m为大于等于2的整数,所述t为大于等于2的整数,所述n为大于等于0的整数。
5.根据权利要求4所述的存储装置,其特征在于,
所述存储装置还包括:
划分单元,用于为每个物理存储节点在逻辑上划分为至少一个虚拟存储节点,所述虚拟存储节点与所述物理存储节点存在映射关系,所述虚拟存储节点为逻辑上的存储空间;
第二获取单元,用于获取所述虚拟存储节点的虚拟存储节点标识;
建立单元,用于根据所述虚拟存储节点标识建立DHT环,所述DHT环的存储节点标识为虚拟存储节点标识。
6.根据权利要求4或5所述的存储装置,其特征在于,所述存储装置还包括:
判断单元,用于在所述在待存储数据块中提取一个数据块作为基准块之前,判断子数据块和校验块的个数之和是否大于所述DHT环中存储节点标识的个数;
第二提取单元,用于在所述子数据块和校验块中未存储的数据块的个数大于所述DHT环中存储节点标识的个数时,在所述子数据块和校验块中未存储的数据块中提取等于所述DHT环中存储节点标识的个数的数据块作为所述待存储数据块;
第三提取单元,用于在所述子数据块和校验块中未存储的数据块的个数小于等于所述DHT环中存储节点标识的个数时,在所述子数据块和校验块中提取所有未存储的数据块作为所述待存储数据块。
7.一种数据存储系统,其特征在于,包括:
权利要求4至6任意一项权利要求所述的存储装置。
CN201310162423.9A 2013-05-03 2013-05-03 一种数据存储方法、装置及系统 Active CN103246484B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310162423.9A CN103246484B (zh) 2013-05-03 2013-05-03 一种数据存储方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310162423.9A CN103246484B (zh) 2013-05-03 2013-05-03 一种数据存储方法、装置及系统

Publications (2)

Publication Number Publication Date
CN103246484A CN103246484A (zh) 2013-08-14
CN103246484B true CN103246484B (zh) 2016-01-27

Family

ID=48926020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310162423.9A Active CN103246484B (zh) 2013-05-03 2013-05-03 一种数据存储方法、装置及系统

Country Status (1)

Country Link
CN (1) CN103246484B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104050270A (zh) * 2014-06-23 2014-09-17 成都康赛信息技术有限公司 一种基于一致性哈希算法的分布式存储方法
CN104391863A (zh) * 2014-10-23 2015-03-04 中国建设银行股份有限公司 一种数据存储方法及装置
CN104636286B (zh) * 2015-02-06 2018-07-03 华为技术有限公司 用于数据访问的方法和设备
KR102559518B1 (ko) * 2016-09-28 2023-07-26 에스케이하이닉스 주식회사 메모리 제어장치 및 방법
CN108780386B (zh) * 2017-12-20 2020-09-04 华为技术有限公司 一种数据存储的方法、装置和系统
CN110532271A (zh) * 2019-08-30 2019-12-03 北京浪潮数据技术有限公司 基于dht算法实现的分布式存储方法、控制系统及装置
CN113590042B (zh) * 2021-07-29 2024-03-19 杭州宏杉科技股份有限公司 一种数据保护存储方法、装置及设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285925B1 (en) * 2009-07-31 2012-10-09 Amazon Technologies, Inc. Management of object mapping information corresponding to a distributed storage system
US8589637B2 (en) * 2009-10-30 2013-11-19 Cleversafe, Inc. Concurrent set storage in distributed storage network
CN101867527B (zh) * 2010-07-06 2012-08-08 重庆大学 基于物理位置的分层Chord路由方法
CN102866995B (zh) * 2011-07-05 2017-05-24 中兴通讯股份有限公司 对等网络的文件访问方法、管理方法及分布式文件系统
US9460148B2 (en) * 2011-07-06 2016-10-04 International Business Machines Corporation Completing distribution of multi-media content to an accessing device
CN102868782A (zh) * 2012-09-27 2013-01-09 北京邮电大学 一种物理实体连接网络的命名分析方法
CN102970349B (zh) * 2012-11-02 2015-11-25 上海交通大学 一种dht网络的存储负载均衡方法

Also Published As

Publication number Publication date
CN103246484A (zh) 2013-08-14

Similar Documents

Publication Publication Date Title
CN103246484B (zh) 一种数据存储方法、装置及系统
CN107807982B (zh) 一种异构数据库的一致性校验方法及装置
CN106201338A (zh) 数据存储方法及装置
CN102314336B (zh) 一种数据处理方法和系统
US20170083406A1 (en) Method and apparatus for incremental backup
CN104239518A (zh) 重复数据删除方法和装置
CN107229420A (zh) 数据存储方法、读取方法、删除方法和数据操作系统
CN103176833A (zh) 一种基于虚拟机的数据发送方法、接收方法及系统
US20130227244A1 (en) Workload-aware distributed data processing apparatus and method for processing large data based on hardware acceleration
CN103885829A (zh) 一种基于统计的虚拟机跨数据中心动态迁移优化方法
CN103778120B (zh) 全局文件标识生成方法、生成装置及相应的分布式文件系统
CN104216759A (zh) 一种生成虚拟机的逻辑磁盘的方法,及装置
CN111966631A (zh) 一种可快速分发的镜像文件生成方法、系统、设备和介质
CN107205024A (zh) 一种云存储系统中数据去重方法及系统
CN106254270A (zh) 一种队列管理方法及装置
CN106790489A (zh) 并行数据加载方法和系统
CN116610731B (zh) 一种大数据分布式存储方法、装置、电子设备及存储介质
CN103414756B (zh) 一种任务分发方法、分发节点及系统
CN102930004A (zh) 哈希值存储方法、装置及芯片
CN106708445A (zh) 链路选择方法及装置
CN110221778A (zh) 酒店数据的处理方法、系统、存储介质以及电子设备
CN115202589B (zh) 放置组成员选择方法、装置、设备及可读存储介质
US10725877B2 (en) System, method and computer program product for performing a data protection operation
CN107122849B (zh) 基于SparkR的产品检测总完工时间极小化方法
CN108234552B (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20191217

Address after: No.1, floor 3, No.319, zhanggongshan Road, Yuhui District, Bengbu City, Anhui Province

Patentee after: Bengbu guijiu Intellectual Property Service Co., Ltd

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: Huawei Technologies Co., Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201020

Address after: 226000 No. 998 Century Avenue, hi tech Zone, Jiangsu, Nantong

Patentee after: NANTONG HANGDA ELECTRONIC TECHNOLOGY Co.,Ltd.

Address before: No.1, floor 3, No.319, zhanggongshan Road, Yuhui District, Bengbu City, Anhui Province

Patentee before: Bengbu guijiu Intellectual Property Service Co.,Ltd.

TR01 Transfer of patent right