一种数据存储方法及装置与流程

文档序号:11133489阅读:335来源:国知局
一种数据存储方法及装置与制造工艺

本发明涉及数据存储技术领域,更具体地说,涉及一种数据存储方法及装置。



背景技术:

在数据存储领域,随着SSD(固态硬盘)等高读写性能介质的技术更新,对存储性能要求较高的存储业务逐渐从低读写性能、大容量的传统存储介质转移到SSD等存储介质上。

目前来看,SSD的单位存储价格要远大于机械硬盘等传统存储介质的单位存储价格,因此,对于海量数据存储业务,为了实现其存储的低成本及大容量通常需要基于传统存储介质实现,但是传统存储介质的读写性能较差,无法满足对于海量数据的频繁访问要求。

综上所述,现有技术中提供的数据存储方案存在无法同时实现存储介质的低成本及高读写性能的问题。



技术实现要素:

本发明的目的是提供一种数据存储方法及装置,以解决现有技术中提供的数据存储方案存在无法同时实现存储介质的低成本及高读写性能的问题。

为了实现上述目的,本发明提供如下技术方案:

一种数据存储方法,包括:

将存储介质按照其读写性能划分为不同的存储介质层,并基于每层存储介质层的权重值及预设容量参数计算该存储介质层的数据块大小;

获取待存储数据的热度,并确定与该存储数据的热度对应读写性能的存储介质层为目标存储层;

将所述待存储数据按照所述目标介质层的数据块大小划分为存储数据块,并将该存储数据块存储至所述目标存储层中。

优选的,还包括:

将各层存储介质层中的存储数据块进行哈希计算,得到与每个存储数据块对应的块签名;

将数据块大小相同的所述存储数据块的块签名存储至同一哈希组中。

优选的,还包括:

对各层所述存储介质层中存储的存储数据块进行实时监控;

当任一存储数据块的热度变化且与当前存储介质层的读写性能不对应时,则确定该存储数据块为待迁移数据,并确定与该待迁移数据的当前热度对应读写性能的存储介质为目标迁移层;

判断所述待迁移数据的数据块大小与所述目标迁移层的数据块大小是否相同,如果是,则将所述待迁移数据迁移至所述目标迁移层,如果否,则将所述待迁移数据迁移至所述目标迁移层后重新计算该待迁移数据对应数据块的哈希值,得到对应的块签名,并将该块签名存储至对应哈希组中。

优选的,还包括:

当有新数据需要写入时,确定所述新数据对应的存储介质层为目标写入层,其中,所述新数据的写入包括数据迁移、数据修改及数据写入;

将所述新数据按照所述目标写入层的数据块大小进行合并或者划分,得到与所述目标写入层对应的存储数据块并将其存储至所述目标写入层中。

优选的,得到与所述目标写入层对应的存储数据块并将其存储至所述目标写入层中,包括:

将得到的与所述目标写入层对应的存储数据块进行哈希计算,得到对应的写入数据块签名;

在与所述写入数据块签名对应的哈希组中查找是否存在相同的块签名,如果存在,则将该块签名对应的使用计数加1,如果不存在,则将所述写入数据块签名对应存储数据块存储至所述目标写入层中,并将所述写入数据块签名加入对应哈希组中。

优选的,将所述写入数据块签名加入对应哈希组中之后,还包括:

如果所述新数据的写入为数据修改,则将与所述新数据对应的原存储数据块的使用计数减1。

优选的,还包括:

如果各层存储介质中存在使用计数为0的存储数据块,则将该存储数据块放入LRU链表中。

优选的,还包括:

获取所述存储介质层中各存储数据块对应的元数据;

基于所述元数据计算被修改的存储数据块及新写入的存储数据块的计数和,并确定该计数和与存储数据块总数的比值为元数据脏信息;

当所述元数据脏信息大于对应阈值时,将所述存储介质中各存储数据的元数据更新至对应的存储磁盘。

一种数据存储装置,包括:

划分模块,用于将存储介质按照其读写性能划分为不同的存储介质层,并基于每层存储介质层的权重值及预设容量参数计算该存储介质层的数据块大小;

确定模块,用于获取待存储数据的热度,并确定与该存储数据的热度对应读写性能的存储介质层为目标存储层;

存储模块,用于将所述待存储数据按照所述目标介质层的数据块大小划分为存储数据块,并将该存储数据块存储至所述目标存储层中。

优选的,还包括:

管理模块,用于:将各层存储介质层中的存储数据块进行哈希计算,得到与每个存储数据块对应的块签名;将数据块大小相同的所述存储数据块的块签名存储至同一哈希组中。

本发明提供了一种数据存储方法及装置,其中该方法包括:将存储介质按照其读写性能划分为不同的存储介质层,并基于每层存储介质层的权重值及预设容量参数计算该存储介质层的数据块大小;获取待存储数据的热度,并确定与该存储数据的热度对应读写性能的存储介质层为目标存储层;将所述待存储数据按照所述目标介质层的数据块大小划分为存储数据块,并将该存储数据块存储至所述目标存储层中。通过本申请公开的上述技术特征,利用高读写性能的存储介质层存储对应高热度的待存储数据,由此,保证了对于高热度数据的读写速率;并且,在不同的存储介质层中将存储的数据划分为对应的存储数据块,由此高性能存储介质层具有较小的存储数据块,充分增加了高性能存储介质的空间利用率,对于低读写性能的存储介质划分较大的存储数据块,以减小频繁数据访问带来的性能损耗。可见,本申请中能够充分结合高性能存储介质及低性能存储介质的优点,在一定程度上保证低成本的同时实现了高读写性能。

附图说明

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

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

图2为本发明实施例提供的一种数据存储装置的结构示意图。

具体实施方式

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

请参阅图1,其示出了本发明实施例提供的一种数据存储方法的流程图,可以包括以下步骤:

S11:将存储介质按照其读写性能划分为不同的存储介质层,并基于每层存储介质层的权重值及预设容量参数计算该存储介质层的数据块大小。

其中,按照存储介质的读写性能将其划分为不同的存储介质层,具体可以为将存储介质按照其读写性能的高低分为不同的存储介质层,如可以将存储介质分为三层,包括SSD层、10K转/分钟的SAS机械硬盘层和7.2K转/分钟的SATA机械硬盘层。而计算每层存储介质层的数据块大小时所利用的权重值和预设容量参数可以由工作人员根据实际需要进行确定,对数据块大小的确定是基于存储介质层的读写性能及容量来实现的,一般来说,存储介质层的读写性能越高,划分的数据块大小越小。仍然以上述例子进行说明,当存储介质层第一层至第三层分别为SSD层、10K转/分钟的SAS机械硬盘层和7.2K转/分钟的SATA机械硬盘层时,则计算对应数据块大小的公式可以为:

数据块大小=4k*权重值*容量调整参数

其中存储介质层对应的权重值可以选择三组取值,分别是:

低权重:1(第一层)、2(第二层)、4(第三层)

中权重:2(第一层)、16(第二层)、64(第三层)

高权重:4(第一层)、32(第二层)、128(第三层)

其中,权重的级别可以根据用户业务的io块大小的统计信息决定或由管理员手动设定。具体来说,io块由大至小可分别对应低权重至高权重。

而预设容量参数的作用是根据每层存储介质层的容量对其数据块大小进行调整,具体来说,可以按照下列方式进行设置:

第一层:当容量低于(不包括)100GB时预设容量参数为1/2(权重值为1时预设容量参数取1),当容量介于100GB(包括)到10TB(不包括)之间时预设容量参数为1,当容量高于(包括)10TB时预设容量参数为2;

第二层:当容量低于(不包括)10TB时预设容量参数为1/2(权重值为1时容量参数取1),当容量介于10TB(包括)到100TB(不包括)之间时预设容量参数为1,当容量高于(包括)100TB时预设容量参数为2;

第三层:当容量低于(不包括)50TB时预设容量参数为1/2(权重值为1时容量参数取1),当容量介于50TB(包括)到1EB(不包括)之间时预设容量参数为1,当容量高于(包括)1EB时预设容量参数为2。

S12:获取待存储数据的热度,并确定与该存储数据的热度对应读写性能的存储介质层为目标存储层。

按照待存储数据的热度确定对应的目标存储层,其中,待存储数据的热度可以指该数据的访问率等,具体来说,待存储数据热度越高,则将其对应至读写性能越高的层中,由此,由高读写性能的存储介质层实现高热度数据的存储,保证了其读写速率。

S13:将待存储数据按照目标介质层的数据块大小划分为存储数据块,并将该存储数据块存储至目标存储层中。

将待存储数据划分为存储数据块,已对其实现存储。

通过本申请公开的上述技术特征,利用高读写性能的存储介质层存储对应高热度的待存储数据,由此,保证了对于高热度数据的读写速率;并且,在不同的存储介质层中将存储的数据划分为对应的存储数据块,由此高性能存储介质层具有较小的存储数据块,充分增加了高性能存储介质的空间利用率,对于低读写性能的存储介质划分较大的存储数据块,以减小频繁数据访问带来的性能损耗。可见,本申请中能够充分结合高性能存储介质及低性能存储介质的优点,在一定程度上保证低成本的同时实现了高读写性能。

本发明实施例提供的一种数据存储方法,还可以包括:

将各层存储介质层中的存储数据块进行哈希计算,得到与每个存储数据块对应的块签名;

将数据块大小相同的存储数据块的块签名存储至同一哈希组中。

其中,哈希计算与现有技术中对应概念的含义一致,在此不再赘述。通过对存储数据块的哈希计算,得到对应的块签名,进而将数据块大小相同的存数数据块的块签名存储至同一哈希组中;从而在需要对某一存储数据块进行查询时能够通过对应哈希组实现快速查找。

本发明实施例提供的一种数据存储方法,还可以包括:

对各层存储介质层中存储的存储数据块进行实时监控;

当任一存储数据块的热度变化且与当前存储介质层的读写性能不对应时,则确定该存储数据块为待迁移数据,并确定与该待迁移数据的当前热度对应读写性能的存储介质为目标迁移层;

判断待迁移数据的数据块大小与目标迁移层的数据块大小是否相同,如果是,则将待迁移数据迁移至目标迁移层,如果否,则将待迁移数据迁移至目标迁移层后重新计算该待迁移数据对应数据块的哈希值,得到对应的块签名,并将该块签名存储至对应哈希组中。

当存储数据块的热度发生变化,包括由高热度降至一定低热度或者由低热度升至一定高热度等,与当前所在的存储介质层的读写性能不再具有对应关系时,需要将其迁移至与其当前热度对应的存储介质层中。具体来说,如果其当前所处的存储介质层与目标迁移层的数据块大小一致,则说明其快签名所在的哈希组无需发生变化,则直接进行迁移即可,否则,则需要在迁移完成后重新计算对应哈希值,并将该哈希值作为其快签名存入与目标迁移层的数据块大小对应的哈希组中,而其原来的块签名直接进行删除即可。通过上述方式能够实现冷热数据的交换,由此,能够保证存储介质层的读写性能与存储在其中的存储数据块的热度的对应性,保证了本发明实施例提供的上述方法的顺利实现。

另外,在对存储数据块进行监控后,可以将热度发生变化需要被迁移的数据对应块签名连接到对应的热度上升链表或者热度下降链表中,进而基于这两个链表实现对应存储数据块的迁移。

本发明实施例提供的一种数据存储方法,还可以包括:

当有新数据需要写入时,确定新数据对应的存储介质层为目标写入层,其中,新数据的写入包括数据迁移、数据修改及数据写入;

将新数据按照目标写入层的数据块大小进行合并或者划分,得到与目标写入层对应的存储数据块并将其存储至目标写入层中。

其中,上述新数据的写入包括数据迁移、数据修改及数据写入,即为包括数据迁移过程中将该数据写入到目标迁移层的过程(此时目标迁移层即为目标写入层)、对任一存储介质层中的数据进行修改的过程及写入新的数据的过程。在上述过程中,都需要将需要写入的数据划分与目标写入层的数据块大小相同的存储数据块再进行存储,从而保证了各存储介质层中存储数据块的块大小的维护,进一步保证了本发明实施例提供的上述方法的顺利实现。

其中,对于该写入过程,具体可以包括:

如果新数据的数据块大小等于目标写入层的数据块大小,则直接写入;

如果新数据的数据块大小小于目标写入层的数据块大小,分为三种情况:

1、新数据写入为数据修改,则获取与该新数据对应修改内容部分具有连续物理地址的存储数据块的复制数据,并将该复制与新数据组成与目标写入层数据块大小相同的存储数据块后写入目标写入层;

2、新数据写入为数据写入,则直接将新数据写入目标写入层,并在目标写入层中为该新数据分配目标写入层对应数据块大小的存储资源;

3、新数据写入为数据迁移,则获取与该数据在原存储介质层中具有连续物理地址的存储数据块,并将该存储数据块与新数据组成与目标写入层数据块大小相同的存储数据块后一起迁移至目标写入层;

如果新数据的数据块大小大于目标写入层的数据流大小,分为三种情况:

1、新数据写入为数据修改,则将新数据拆分为与目标写入层对应块大小相同的数据块并写入目标写入层中,如果拆分之后具有比目标写入层对应块大小小的一部分数据,则按照新数据的数据块大小小于目标写入层的数据块大小中的情况1对其进行处理;

2、新数据写入为数据写入,则将新数据拆分为与目标写入层对应块大小相同的数据块并写入目标写入层中,如果拆分之后具有比目标写入层对应块大小小的一部分数据,则按照新数据的数据块大小小于目标写入层的数据块大小中的情况2对其进行处理;

3、新数据写入为数据迁移,则将新数据拆分为与目标写入层对应块大小相同的数据块并写入目标写入层中,如果拆分之后具有比目标写入层对应块大小小的一部分数据,则按照新数据的数据块大小小于目标写入层的数据块大小中的情况3对其进行处理。

本发明实施例提供的一种数据存储方法,得到与目标写入层对应的存储数据块并将其存储至目标写入层中,可以包括:

将得到的与目标写入层对应的存储数据块进行哈希计算,得到对应的写入数据块签名;

在与写入数据块签名对应的哈希组中查找是否存在相同的块签名,如果存在,则将该块签名对应的使用计数加1,如果不存在,则将写入数据块签名对应存储数据块存储至目标写入层中,并将写入数据块签名加入对应哈希组中。

其中,使用计数为有多少用户需要对该数据进行使用,在写入数据块签名对应的哈希组中查找到存在相同的块签名,则说明该数据已经存在,此时,只需将其使用计数加1,即说明增加了一个需要利用该数据的用户即可,如果在写入数据块签名对应的哈希组中未查找到存在相同的块签名,则将实现新数据的存储,并将其对应写入数据块签名加入哈希组中。通过上述步骤,实现数据块的重复删除,并通过使用计数的维护能够使得对于该数据的用户信息进行准确表现。

本发明实施例提供的一种数据存储方法,将写入数据块签名加入对应哈希组中之后,还可以包括:

如果新数据的写入为数据修改,则将与新数据对应的原存储数据块的使用计数减1。

数据修改中,原存储数据的使用计数减1,表示原存储数据的使用用户减1,从而通过对使用计数的维护实现对于该数据的用户信息的准确表现。

本发明实施例提供的一种数据存储方法,还可以包括:

如果各层存储介质中存在使用计数为0的存储数据块,则将该存储数据块放入LRU链表中。

当使用计数为0时,说明一定时间内不再有用户需要对该部分数据进行利用,此时,将该存储数据放入LRU链表中,能够保证对于存储介质层的充分利用。

另外需要说明的是,可以通过del_dup_node数据结构对存储数据块进行描述,该存储结构即为对应存储数据块的元数据,可以包括:块签名、数据块访问热度(即上文中的热度)、物理地址、数据块大小、上次分级(即距离当前时间最近的一次迁移前所在的存储介质层)、当前分级(当前所在的存储介质层)、使用计数、flag标志等。其中,flag标志可以体现存储数据块当前的状态,可以包括迁移前、迁移中、迁移后等。

具体来说,存当需要对存储数据块进行迁移时,存储数据块迁移前对应flag标志为迁移前,而当开始对其进行迁移可以更新元数据中的flag标志为迁移中,在完成对存储数据块的迁移后可以更新元数据中的flag标志为迁移后。并且在对存储数据块实现迁移后,还可以更新该数据块在元数据中的块大小、物理地址、上次分级、当前分级等;该过程需要原子的进行操作。

对应的,本发明实施例提供的一种数据存储方法,还可以包括:

获取存储介质层中各存储数据块对应的元数据;

基于元数据计算被修改的存储数据块及新写入的存储数据块的计数和,并确定该计数和与存储数据块总数的比值为元数据脏信息;

当元数据脏信息大于对应阈值时,将存储介质中各存储数据的元数据更新至对应的存储磁盘。

其中,当元数据脏信息大于对应阈值或者距离上述元数据更新达到预设时间段时,需要对元数据更新至对应存储磁盘。此过程可以通过后台同步线程实现,从而通过元数据的更新保证了数据的一致性。具体来说,将元数据更新至对应存储磁盘为将存储磁盘中不存在的元数据加入,将存储磁盘中存在当前时刻存储介质层不存在的元数据删除,并将对于同一存储数据块将存储磁盘中的元数据更改为当前存储介质中的元数据,实现全部元数据的更新。

本发明实施例还提供了一种数据存储装置,如图2所示,可以包括:

划分模块11,用于将存储介质按照其读写性能划分为不同的存储介质层,并基于每层存储介质层的权重值及预设容量参数计算该存储介质层的数据块大小;

确定模块12,用于获取待存储数据的热度,并确定与该存储数据的热度对应读写性能的存储介质层为目标存储层;

存储模块13,用于将待存储数据按照目标介质层的数据块大小划分为存储数据块,并将该存储数据块存储至目标存储层中。

本发明实施例提供的一种数据存储装置,还可以包括:

管理模块,用于:将各层存储介质层中的存储数据块进行哈希计算,得到与每个存储数据块对应的块签名;将数据块大小相同的存储数据块的块签名存储至同一哈希组中。

本发明实施例提供的一种数据存储装置,还可以包括:

迁移模块,用于:对各层存储介质层中存储的存储数据块进行实时监控;当任一存储数据块的热度变化且与当前存储介质层的读写性能不对应时,则确定该存储数据块为待迁移数据,并确定与该待迁移数据的当前热度对应读写性能的存储介质为目标迁移层;判断待迁移数据的数据块大小与目标迁移层的数据块大小是否相同,如果是,则将待迁移数据迁移至目标迁移层,如果否,则将待迁移数据迁移至目标迁移层后重新计算该待迁移数据对应数据块的哈希值,得到对应的块签名,并将该块签名存储至对应哈希组中。

本发明实施例提供的一种数据存储装置,还可以包括:

写入模块,用于:当有新数据需要写入时,确定新数据对应的存储介质层为目标写入层,其中,新数据的写入包括数据迁移、数据修改及数据写入;将新数据按照目标写入层的数据块大小进行合并或者划分,得到与目标写入层对应的存储数据块并将其存储至目标写入层中。

本发明实施例提供的一种数据存储装置,写入模块可以包括:

签名单元,用于:将得到的与目标写入层对应的存储数据块进行哈希计算,得到对应的写入数据块签名;在与写入数据块签名对应的哈希组中查找是否存在相同的块签名,如果存在,则将该块签名对应的使用计数加1,如果不存在,则将写入数据块签名对应存储数据块存储至目标写入层中,并将写入数据块签名加入对应哈希组中。

本发明实施例提供的一种数据存储装置,写入模块还可以包括:

计数更新单元,用于如果新数据的写入为数据修改,则将与新数据对应的原存储数据块的使用计数减1。

本发明实施例提供的一种数据存储装置,写入模块还可以包括:

处理单元,用于如果各层存储介质中存在使用计数为0的存储数据块,则将该存储数据块放入LRU链表中。

本发明实施例提供的一种数据存储装置,还可以包括:

更新模块,用于:获取存储介质层中各存储数据块对应的元数据;基于元数据计算被修改的存储数据块及新写入的存储数据块的计数和,并确定该计数和与存储数据块总数的比值为元数据脏信息;当元数据脏信息大于对应阈值时,将存储介质中各存储数据的元数据更新至对应的存储磁盘。

本发明实施例提供的一种数据存储装置中相关部分的说明请参见本发明实施例提供的一种数据存储方法中对应部分的详细说明,在此不再赘述。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1