首页> 中国专利> 数据存储方法及系统

数据存储方法及系统

摘要

本发明实施例提供一种数据存储方法及系统,包括:接收一个待存储数据的数据块,所述数据块包括密钥和数据本身;采用所述待存储数据的一个数据块中的密钥进行哈希运算,得到哈希值;确定所述哈希值对应的存储区间所在的存储组,所述存储组为将存储系统中各个存储区间按照预设值进行均分得到,且位于同一存储组中的各个存储区间各自所在的物理硬盘互不相同,所述预设值为所有待存储数据各自的数据块个数中的最大值;将所述待存储数据的数据块依次存储在所述存储组的各个存储区间中,其中,所述存储组的一个存储区间存储所述待存储数据的一个数据块。

著录项

  • 公开/公告号CN103370113A

    专利类型发明专利

  • 公开/公告日2013-10-23

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201280002942.2

  • 发明设计人 陈国龙;张烽;许一震;

    申请日2012-12-12

  • 分类号A99Z99/00(20060101);

  • 代理机构11274 北京中博世达专利商标代理有限公司;

  • 代理人申健

  • 地址 518129 中国广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2024-02-19 21:48:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-03-09

    授权

    授权

  • 2013-11-20

    实质审查的生效 IPC(主分类):G06F21/79 申请日:20121212

    实质审查的生效

  • 2013-10-23

    公开

    公开

说明书

技术领域

本发明涉及计算机存储技术领域,尤其涉及一种数据存储方法及系 统。

背景技术

采用容删编码(Erasure code,EC)技术可以将待存储的原始数据分 割成多个数据块,并新增一些数据块用于存放校验信息,这些存储有原始 数据的数据块和存储有校验信息的数据块构成完整的待存储数据,并采用 一定的存储方法存储到不同的存储位置。

现有技术中,提供一种数据存储方法,每个数据块按照(密钥key, value)的格式进行存储,其中,key用于唯一标识一个数据块,value用 于存储原始数据或者校验信息。分别对每个数据块中的key进行哈希运算 得到哈希值,一个哈希值属于一个存储区间(partition),一个所述存储区 间对应一段整数区间,如果所述哈希值落入所述存储区间对应的一段整数 区间中,亦即该哈希值属于所述存储区间,之后,将每个数据块存储在各 自得到的哈希值对应的存储区间中即可。

为了提高数据存储的安全性,同一数据的各个数据块应该尽可能的分 散在不同的存储区间中。然而,采用上述方法对多个数据块中的key进行 哈希运算时,如果得到的哈希值对应的存储区间相同,将会导致多个数据 块被存储在同一个存储区间中,因而降低了数据的安全性,

发明内容

本发明提供一种数据存储方法及系统,可以提高数据存储的安全性。

为了达到上述发明目的,本发明采用如下技术方案:

第一方面,提供一种数据存储方法,包括:

接收一个待存储数据的数据块,所述数据块包括密钥和数据本身;

采用所述待存储数据的一个数据块中的密钥进行哈希运算,得到哈希值;

确定所述哈希值对应的存储区间所在的存储组,所述存储组为将存储系统 中各个存储区间按照预设值进行均分得到,且位于同一存储组中的各个存储区 间各自所在的物理硬盘互不相同,所述预设值为所有待存储数据各自的数据块 个数中的最大值;

将所述待存储数据的数据块依次存储在所述存储组的各个存储区间中,其 中,所述存储组的一个存储区间存储所述待存储数据的一个数据块。

第一方面的第一种实现方式中,所述采用待存储数据的一个数据块中的密 钥进行哈希运算,得到哈希值包括:

采用待存储数据的第一个数据块中的密钥进行哈希运算,得到哈希值,所 述第一个数据块为在所述待存储数据中位置序号排在第一个的数据块。

结合第一方面的第一种实现方式,在第一方面的第二实现方式中,所述存 储组的各个存储区间在逻辑上构成一个分布式哈希表DHT环,所述DHT环上 的一个节点表示一个存储区间;

所述将所述待存储数据的数据块依次存储在所述存储组的各个存储区间中 包括:

从所述DHT环的第一节点开始,将所述待存储数据中各个数据块依次存储 在所述DHT环中所述第一节点及所述第一节点在顺时针或者逆时针方向之后连 续的节点上,其中,所述待存储数据的第一个数据块存储在所述第一节点,所 述第一节点表示所述哈希值对应的存储区间,所述待存储数据中各个数据块是 按照各自在所述待存储数据中的位置序号有序排列的。

第二方面,提供一种数据存储系统,包括:

接收模块,用于接收一个待存储数据的数据块,所述数据块包括密钥和数 据本身;

运算模块,用于采用待存储数据的一个数据块中的密钥进行哈希运算,得 到哈希值;

确定模块,用于确定所述哈希值对应的存储区间所在的存储组,所述存储 组为将存储系统中各个存储区间按照预设值进行均分得到,且位于同一存储组 中的各个存储区间各自所在的物理硬盘互不相同,所述预设值为所有待存储数 据各自的数据块个数中的最大值;

存储模块,用于将所述待存储数据的数据块依次存储在所述存储组的各个 存储区间中,其中,所述存储组的一个存储区间存储所述待存储数据的一个数 据块。

在第二方面的第一种实现方式中,所述运算模块,具体用于采用待存储数 据的第一个数据块中的密钥进行哈希运算,得到哈希值,所述第一个数据块为 在所述待存储数据中位置序号排在第一个的数据块。

结合第二方面的第一种实现方式,在第二方面的第二种实现方式中,所述 存储组的各个存储区间在逻辑上构成一个分布式哈希表DHT环,所述DHT环 上的一个节点表示一个存储区间;

所述存储模块,具体用于从所述DHT环的第一节点开始,将所述待存储数 据中各个数据块依次存储在所述DHT环中所述第一节点及所述第一节点在顺时 针或者逆时针方向之后连续的节点上,其中,所述待存储数据的第一个数据块 存储在所述第一节点,所述第一节点表示所述哈希值对应的存储区间,所述待 存储数据中各个数据块是按照各自在所述待存储数据中的位置序号有序排列 的。

第三方面,提供一种数据存储系统,包括:

接收器,用于接收一个待存储数据的数据块,所述数据块包括密钥和数据 本身;

处理器,用于采用待存储数据的一个数据块中的密钥进行哈希运算,得到 哈希值;

所述处理器,还用于确定所述哈希值对应的存储区间所在的存储组,所述 存储组为将存储系统中各个存储区间按照预设值进行均分得到,且位于同一存 储组中的各个存储区间各自所在的物理硬盘互不相同,所述预设值为所有待存 储数据各自的数据块个数中的最大值;

存储器,用于将所述待存储数据的数据块依次存储在所述存储组的各个存 储区间中,其中,所述存储组的一个存储区间存储所述待存储数据的一个数据 块。

在第三方面的第一种实现方式中,所述处理器,具体用于采用待存储数据 的第一个数据块中的密钥进行哈希运算,得到哈希值,所述第一个数据块为在 所述待存储数据中位置序号排在第一个的数据块。

结合第三方面的第一种实现方式,在第三方面的第二种实现方式中,所述 存储组的各个存储区间在逻辑上构成一个分布式哈希表DHT环,所述DHT环 上的一个节点表示一个存储区间;

所述存储器,具体用于从所述DHT环的第一节点开始,将所述待存储数据 中各个数据块依次存储在所述DHT环中所述第一节点及所述第一节点在顺时针 或者逆时针方向之后连续的节点上,其中,所述待存储数据的第一个数据块存 储在所述第一节点,所述第一节点表示所述哈希值对应的存储区间,所述待存 储数据中各个数据块是按照各自在所述待存储数据中的位置序号有序排列的。

通过上述技术方案,可以将所述待存储数据的数据块依次存储在所述存 储组的各个存储区间中,且所述存储组的一个存储区间存储所述待存储数据的 一个数据块。也就是说,同一数据的各个数据块存储在所述存储组互不相同的 存储区间中,而同一存储组中的各个存储区间各自所在的物理硬盘互不相同, 亦即实现了将同一数据的各个数据分散存储在不同物理硬盘上的存储区间中, 与现有技术同一数据的各个数据块可能被存储在同一个存储区间中相比,本发 明提高了数据存储的安全性。

同时,由于本发明实施例可以将同一数据的各个数据分散存储在不同物理 硬盘上的存储区间中,使得数据的存储位置比较均衡,各个存储区间的存储压 力也比较均衡。可以有效避免现有技术中同一数据的大量数据块集中存放在一 个存储区间中导致该存储区间的存储压力过大的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述 中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付 出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种数据存储方法的流程示意图;

图2a为本发明实施例提供的一种存储区间在逻辑上构成的DHT环的第一 种示意图;

图2b为本发明实施例提供的一种存储区间在逻辑上构成的DHT环的第二 种示意图;

图2c为本发明实施例提供的一种存储区间在逻辑上构成的DHT环的第三 种示意图;

图3为本发明实施例提供的数据存储系统的第一种结构示意图;

图4为本发明实施例提供的数据存储系统的第二种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是 全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造 性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种数据存储方法,采用该方法存储数据时,可以使得 同一待存储数据的数据块存储在互不相同的存储区间中,亦即一个存储区间仅 存储同一待存储数据的一个数据块。可以理解的是,一个存储区间可以存储不 同数据各自的一个数据块。

其中,所述存储区间为物理硬盘上一块真实的存储区域。在整个存储系统 进行初始化时,可以将所有物理硬盘上的存储区域均分成若干个容量大小相等 的存储区间。每个存储区间的容量足够存放一定数量的数据块。

如图1所示,本发明实施例提供的一种数据存储方法,包括如下步骤:

101、接收一个待存储数据的数据块,所述数据块包括密钥和数据。

其中,所述待存储数据可以是通过将待存储的原始数据采用EC技术进行分 割得到,具体过程如下:采用EC技术将待存储的原始数据分割成多个数据 块,并新增一些数据块用于存放校验信息,这些存储有原始数据的数据块 和存储有校验信息的数据块构成完整的待存储数据。

每个数据块均采用(密钥key,value)形式进行存储,其中,key用于唯一 标识所述数据块,value用于存储数据,例如,value存储的可以是原始数据本身, 也可以是验证信息。

102、采用所述待存储数据的一个数据块中的密钥进行哈希运算,得到哈希 值。

其中,一个哈希值只属于一个存储区间。

103、确定所述哈希值对应的存储区间所在的存储组。

其中,所述存储组为将存储系统中各个存储区间按照预设值进行均分得 到,且位于同一存储组中的各个存储区间各自所在的物理硬盘互不相同,所述 预设值为所有待存储数据各自的数据块个数中的最大值。

例如,在将存储系统中各个存储区间进行分组时,由于各个存储区间均有 一个唯一的标识号,在系统进行初始化时,可以将位于同一物理硬盘上的各个 存储区间的标识号设置为彼此间隔大于所述预设值,然后将存储系统中所有存 储区间按照各自标识号进行排序,并将排序后的各个存储区间依次按照所述预 设值划分为多个存储组,这样,可以得到位于同一存储组中的各个存储区间各 自所在的物理硬盘互不相同。

104、将所述待存储数据的数据块依次存储在所述存储组的各个存储区间 中,其中,所述存储组的一个存储区间存储所述待存储数据的一个数据块。

本发明实施例中,可以将所述待存储数据的数据块依次存储在所述存储组 的各个存储区间中,且所述存储组的一个存储区间存储所述待存储数据的一个 数据块。也就是说,同一数据的各个数据块存储在所述存储组互不相同的存储 区间中,而同一存储组中的各个存储区间各自所在的物理硬盘互不相同,亦即 实现了将同一数据的各个数据分散存储在不同物理硬盘上的存储区间中,与现 有技术同一数据的各个数据块可能被存储在同一个存储区间中相比,本发明提 高了数据存储的安全性。

同时,由于本发明实施例可以将同一数据的各个数据分散存储在不同物理 硬盘上的存储区间中,使得数据的存储位置比较均衡,各个存储区间的存储压 力也比较均衡。可以有效避免现有技术中同一数据的大量数据块集中存放在一 个存储区间中导致该存储区间的存储压力过大的问题。

进一步地,上述步骤102具体可以采用如下替代方式执行:采用待存储数 据的第一个数据块中的密钥进行哈希运算,得到哈希值,所述第一个数据块为 在所述待存储数据中位置序号排在第一个的数据块。

本发明实施例中提到的存储系统中的各个存储区间在逻辑上可以构成一个 分布式哈希表(Distributed Hash Table,DHT)环,如图2a所示,该DHT环中包 括12个节点,每个节点表示一个存储区间。图2a中的每个节点存放的数字01-12 分别表示相应存储区间的标识号。如果步骤103中所述预设值为6时,则可以 将12个存储区间分成两个存储组,第一个存储组可以包括标识号为01-06的存 储区间,第二个存储组包括标识号为07-12的存储区间,每个存储组的各个存储 区间在逻辑上也是构成一个DHT环例如图2b表示第一个存储组构成的DHT 环,图2c表示第二个存储组构成的DHT环。

进一步地,上述步骤104具体可以采用如下替代方式执行:从所述DHT环 的第一节点开始,将所述待存储数据中各个数据块依次存储在所述DHT环中所 述第一节点及所述第一节点在顺时针或者逆时针方向之后连续的节点上。

其中,所述待存储数据的第一个数据块存储在所述第一节点,所述第一节 点表示所述哈希值对应的存储区间,所述待存储数据中各个数据块是按照各自 在所述待存储数据中的位置序号有序排列的。

例如,有一个待存储数据包括4个数据块,所述4个数据块按照各自在所 述待存储数据中的位置序号有序排列后的顺序为:数据块1、数据块2、数据块 3、数据块4,数据块1即为所述待存储数据的第一个数据块。如果利用所述第 一个数据块中的密钥进行哈希运算,得出的哈希值为11,那可以得知所述11表 示的存储区间位于第二个存储组,之后,将数据块1、数据块2、数据块3、数 据块4依次存放在图2c所示的11、12、07、08的节点中,或者,将数据块1、 数据块2、数据块3、数据块4依次存放图2c所示的11、10、09、08中。

由于同一个存储组的各个存储区间各自所在的物理硬盘互不相同,因而可 以将所述待存储数据的4个数据块分散存储在不同的物理硬盘上。

需要说明的是,步骤104的替代方式是一种有序存储方式,在数据恢复时, 只需要按照存储区间的顺序依次读出数据既可以恢复各个数据块在整个待存储 数据中的位置。当然,容易想到的是,也可以采用无序存储方式,但是需要保 存各个数据块与存储区间的对应关系,以便于数据恢复时,可以恢复各个数据 块在整个待存储数据中的位置,保证数据的连续性。

可以理解的是,上述实施例是以一个待存储数据为例进行说明的,如果有 多个不同的待存储数据时,由于利用不同的待存储数据各自的一个数据块中的 密钥进行哈希运算时得到的哈希值可能会相同,则多个不同的待存储数据可能 会存放于同一组中,亦即,同一个组的一个存储区间可能会存放多个不同待存 储数据各自的一个数据块。

如图3所示,本发明实施例提供一种数据存储系统,包括:

接收模块31,用于接收一个待存储数据的数据块,所述数据块包括密钥和 数据本身;

有关待存储数据及其数据块的详细描述可以参见步骤101。

运算模块32,用于采用待存储数据的一个数据块中的密钥进行哈希运算, 得到哈希值;

确定模块33,用于确定所述哈希值对应的存储区间所在的存储组,所述存 储组为将存储系统中各个存储区间按照预设值进行均分得到,且位于同一存储 组中的各个存储区间各自所在的物理硬盘互不相同,所述预设值为所有待存储 数据各自的数据块个数中的最大值;

有关存储组的详细描述可以参见步骤103。

存储模块34,用于将所述待存储数据的数据块依次存储在所述存储组的各 个存储区间中,其中,所述存储组的一个存储区间存储所述待存储数据的一个 数据块。有关具体的存储实现过程可以参见步骤104。

本发明实施例中提供的存储系统,可以将所述待存储数据的数据块依次存 储在所述存储组的各个存储区间中,且所述存储组的一个存储区间存储所述待 存储数据的一个数据块。也就是说,同一数据的各个数据块存储在所述存储组 互不相同的存储区间中,而同一存储组中的各个存储区间各自所在的物理硬盘 互不相同,亦即实现了将同一数据的各个数据分散存储在不同物理硬盘上的存 储区间中,与现有技术同一数据的各个数据块可能被存储在同一个存储区间中 相比,本发明提高了数据存储的安全性。

同时,由于本发明实施例可以将同一数据的各个数据分散存储在不同物理 硬盘上的存储区间中,使得数据的存储位置比较均衡,各个存储区间的存储压 力也比较均衡。可以有效避免现有技术中同一数据的大量数据块集中存放在一 个存储区间中导致该存储区间的存储压力过大的问题。

进一步地,所述运算模块,具体用于采用待存储数据的第一个数据块中的 密钥进行哈希运算,得到哈希值,所述第一个数据块为在所述待存储数据中位 置序号排在第一个的数据块。

进一步地,所述存储组的各个存储区间在逻辑上构成一个DHT环,所述 DHT环上的一个节点表示一个存储区间;

所述DHT环可以参见步骤104的替代实行方式中有关DHT环的描述。

所述存储模块,具体用于从所述DHT环的第一节点开始,将所述待存储数 据中各个数据块依次存储在所述DHT环中所述第一节点及所述第一节点在顺时 针或者逆时针方向之后连续的节点上。

其中,所述待存储数据的第一个数据块存储在所述第一节点,所述第一节 点表示所述哈希值对应的存储区间,所述待存储数据中各个数据块是按照各自 在所述待存储数据中的位置序号有序排列的。

如图4所示,本发明实施例还提供一种数据存储系统,包括:总线4000、 驱动电路4001、接收器41,处理器42、存储器43

接收器41,用于接收一个待存储数据的数据块,所述数据块包括密钥和数 据本身;

有关待存储数据及其数据块的详细描述可以参见步骤101。

处理器42,用于采用待存储数据的一个数据块中的密钥进行哈希运算,得 到哈希值;

所述处理器42,还用于确定所述哈希值对应的存储区间所在的存储组,所 述存储组为将存储系统中各个存储区间按照预设值进行均分得到,且位于同一 存储组中的各个存储区间各自所在的物理硬盘互不相同,所述预设值为所有待 存储数据各自的数据块个数中的最大值;

有关存储组的详细描述可以参见步骤103。

存储器43,用于将所述待存储数据的数据块依次存储在所述存储组的各个 存储区间中,其中,所述存储组的一个存储区间存储所述待存储数据的一个数 据块。

有关具体的存储实现过程可以参见步骤104。

本发明实施例中提供的存储系统,可以将所述待存储数据的数据块依次存 储在所述存储组的各个存储区间中,且所述存储组的一个存储区间存储所述待 存储数据的一个数据块。也就是说,同一数据的各个数据块存储在所述存储组 互不相同的存储区间中,而同一存储组中的各个存储区间各自所在的物理硬盘 互不相同,亦即实现了将同一数据的各个数据分散存储在不同物理硬盘上的存 储区间中,与现有技术同一数据的各个数据块可能被存储在同一个存储区间中 相比,本发明提高了数据存储的安全性。

同时,由于本发明实施例可以将同一数据的各个数据分散存储在不同物理 硬盘上的存储区间中,使得数据的存储位置比较均衡,各个存储区间的存储压 力也比较均衡。可以有效避免现有技术中同一数据的大量数据块集中存放在一 个存储区间中导致该存储区间的存储压力过大的问题。

需要说明的是,所述接收器41可以耦合到天线。

其中,驱动电路4001,用于为存储系统中的各个硬件提供驱动使得各个硬 件能够正常工作。

本实施例在具体实现中,存储器43至少包括如下一个或者多个内存设备, 一个只读存储器、一个随机存取存储器或者一个非易失行随机存取存储器,存 储器为处理器提供指令和数据。

其中,所述处理器42可能是一种集成电路芯片,具有信号的处理能力。在 实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者 软件形式的指令完成。这些指令可以通过其中的处理器以配合实现及控制,用 于执行本发明实施例揭示的方法。上述处理器还可以是通用处理器、数字信号 处理器(Digital Signal Processing,DSP)、专用集成电路(application specific  integrated circuit)、现成可编程门阵列(Field Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

其中,上述通用处理器42可以是微处理器或者该处理器也可以是任何常规 的处理器,解码器等。结合本发明实施例所公开的方法的步骤可以直接体现为 硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件 模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦 写可编程存储器、寄存器等本领域成熟的存储介质中。

另外,存储系统中的各个硬件组件通过总线系统4000耦合在一起,其中总 线系统4000除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。 但是为了清楚说明起,在图4中将各种总线都标为总线系统4000。

进一步地,所述处理器42,具体用于采用待存储数据的第一个数据块中的 密钥进行哈希运算,得到哈希值,所述第一个数据块为在所述待存储数据中位 置序号排在第一个的数据块。

进一步地,所述存储组的各个存储区间在逻辑上构成一个DHT环,所述 DHT环上的一个节点表示一个存储区间;

所述DHT环可以参见步骤104的替代实行方式中有关DHT环的描述。

所述存储器43,具体用于从所述DHT环的第一节点开始,将所述待存储数 据中各个数据块依次存储在所述DHT环中所述第一节点及所述第一节点在顺时 针或者逆时针方向之后连续的节点上,其中,所述待存储数据的第一个数据块 存储在所述第一节点,所述第一节点表示所述哈希值对应的存储区间,所述待 存储数据中各个数据块是按照各自在所述待存储数据中的位置序号有序排列 的。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发 明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多 情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或 者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软 件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若 干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备 等)执行本发明各个实施例所述的方法。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到 变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应 以所述权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号