一种基于分布式存储系统的数据存储方法及装置与流程

文档序号:11254140
一种基于分布式存储系统的数据存储方法及装置与流程

本发明涉及存储技术领域,特别是涉及一种基于分布式存储系统的数据存储方法及装置。



背景技术:

随着科技的发展,分布式存储系统应用的越来越广泛。分布式存储系统采用可扩展的系统结构,将数据分割成多个数据块,分散存储在多台独立的存储节点上分担存储负荷,利用位置服务器定位存储信息,具有较高的可靠性、可用性、扩展性和存取效率。

在现有的分布式存储系统中,为了进一步提高数据可靠性,一般会将每个数据块的多个副本数据分别存储在多个存储节点上。具体存储到哪些存储节点上由哈希算法随机确定。

这种方式存在一定的缺点,因为副本数据存储到哪些存储节点上是随机确定的,如果大部分副本数据都分配到其他存储节点上,则在对副本数据进行存储和访问时都会产生额外的网络开销,增加IO路径长度,影响存储系统的性能。



技术实现要素:

本发明的目的是提供一种基于分布式存储系统的数据存储方法及装置,以节约网络开销,减短IO路径的长度,提高存储系统的性能。

为解决上述技术问题,本发明提供如下技术方案:

一种基于分布式存储系统的数据存储方法,包括:

接收用户发送的针对目标数据的存储请求;

根据所述存储请求,确定分配方案集合;

针对所述分配方案集合中的每个分配方案,如果该分配方案包含本地存储节点,则将该分配方案确定为可选方案;

基于确定的可选方案中的一个可选方案进行所述目标数据的存储。

在本发明的一种具体实施方式中,所述基于确定的可选方案中的一个可选方案进行所述目标数据的存储,包括:

基于确定的可选方案中的存储代价最小的一个可选方案进行所述目标数据的存储。

在本发明的一种具体实施方式中,在所述根据所述存储请求,确定分配方案集合之后,还包括:

如果所述分配方案集合中任意一个分配方案均不包含本地存储节点,则基于所述分配方案集合中的一个分配方案进行所述目标数据的存储。

在本发明的一种具体实施方式中,所述基于所述分配方案集合中的一个分配方案进行所述目标数据的存储,包括:

确定所述分配方案集合中每个分配方案的存储代价;

基于存储代价最小的一个分配方案进行所述目标数据的存储。

在本发明的一种具体实施方式中,所述根据所述存储请求,确定分配方案集合,包括:

根据所述存储请求,基于预设的逻辑存储池,确定分配方案集合,所述逻辑存储池的逻辑存储空间大于预先分配给所述用户的实际存储空间。

一种基于分布式存储系统的数据存储装置,包括:

存储请求接收模块,用于接收用户发送的针对目标数据的存储请求;

分配方案集合确定模块,用于根据所述存储请求,确定分配方案集合;

可选方案确定模块,用于针对所述分配方案集合中的每个分配方案,如果该分配方案包含本地存储节点,则将该分配方案确定为可选方案;

数据存储模块,用于基于确定的可选方案中的一个可选方案进行所述目标数据的存储。

在本发明的一种具体实施方式中,所述数据存储模块,具体用于:

基于确定的可选方案中的存储代价最小的一个可选方案进行所述目标数据的存储。

在本发明的一种具体实施方式中,所述数据存储模块,还用于:

在所述根据所述存储请求,确定分配方案集合之后,如果所述分配方案集合中任意一个分配方案均不包含本地存储节点,则基于所述分配方案集合中的一个分配方案进行所述目标数据的存储。

在本发明的一种具体实施方式中,所述数据存储模块,具体用于:

确定所述分配方案集合中每个分配方案的存储代价;

基于存储代价最小的一个分配方案进行所述目标数据的存储。

在本发明的一种具体实施方式中,所述分配方案集合确定模块,具体用于:

根据所述存储请求,基于预设的逻辑存储池,确定分配方案集合,所述逻辑存储池的逻辑存储空间大于预先分配给所述用户的实际存储空间。

应用本发明实施例所提供的技术方案,首先接收用户发送的针对目标数据的存储请求,然后根据存储请求,确定分配方案集合。针对分配方案集合中的每个分配方案,如果该分配方案包含本地存储节点,则将该分配方案确定为可选方案。基于确定的可选方案中的一个可选方案进行目标数据的存储。在分配方案集合中,优先选择含有本地存储节点的分配方案进行目标数据的存储,增加目标数据的副本数据存储在本地存储节点的概率,从而减少了网络开销,缩短了IO路径长度,提高了存储性能。

附图说明

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

图1为本发明实施例中一种基于分布式存储系统的数据存储方法的实施流程图;

图2为本发明实施例中分配方案示意图;

图3为本发明实施例中逻辑存储空间示意图;

图4为本发明实施例中一种基于分布式存储系统的数据存储装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明实施例中一种基于分布式存储系统的数据存储方法的实施流程图,该方法包括以下步骤:

S101、接收用户发送的针对目标数据的存储请求。

在实际应用中,用户可以根据需要向分布式存储系统发送数据写入请求。分布式存储系统可以将待写入的数据分割成多个数据块,并生成每个数据块对应的副本数据。每个数据块对应的副本数据的个数可以依据预设的副本生成策略或用户指令确定。针对每个数据块,如果该数据块的副本数据有多个,则将该数据块的各个副本数据存储到不同的存储节点中。在本发明实施例中,可以将任意一个数据块作为目标数据。

或者,分布式存储系统在接收到用户针对目标数据的存储请求时,将目标数据对应的副本数据存储到相应的存储节点中。

在接收到用户发送的针对目标数据的存储请求时,可以继续执行步骤S102的操作。

S102、根据存储请求,确定分配方案集合。

在接收到存储请求后,根据该存储请求,可以确定分配方案集合。具体可以使用哈希等随机算法确定一个或多个分配方案,构成分配方案集合。每个分配方案即包含目标数据的副本数据对应的存储节点。

在实际应用中,分布式存储系统中包含多个存储节点,每个存储节点可以包含多个磁盘。可以预先在每个存储节点上为每个用户分配一定大小的实际存储空间,也就是说每个用户在分布式存储系统中能够使用的实际存储空间是固定的。

如图2、图3所示,虚线框内存储空间为预先分配给用户1的实际存储空间,该实际存储空间具体包括:存储节点1中的磁盘1、磁盘2的存储空间,存储节点2中的磁盘1、磁盘2的存储空间,存储节点3中的磁盘1、磁盘2的存储空间。

在进行分配方案的确定时,首先将分配给用户的实际存储空间中存在剩余存储空间的磁盘作为待选磁盘,然后在待选磁盘中选择出要进行分配的磁盘,构成一个分配方案。在一个分配方案中,包含的磁盘需位于不同存储节点上。

例如,在图2所示的分布式存储系统中,分配给用户1的实际存储空间中存在剩余存储空间的磁盘有存储节点1的磁盘1,存储节点2的磁盘1和磁盘2,存储节点3的磁盘2。当前用户1有针对目标数据的存储请求,需要对目标数据进行双副本存储。在这种情况下,确定的分配方案集合可以包含:第一分配方案:存储节点1的磁盘1和存储节点2的磁盘1;第二分配方案:存储节点1的磁盘1和存储节点2的磁盘2;第三分配方案为:存储节点1的磁盘1和存储节点3的磁盘2;第四分配方案为:存储节点2的磁盘1和存储节点3的磁盘2;第五分配方案为:存储节点2的磁盘2和存储节点3的磁盘2。

在本发明的一个实施例中,步骤S102可以为以下步骤:

根据存储请求,基于预设的逻辑存储池,确定分配方案集合,逻辑存储池的逻辑存储空间大于预先分配给用户的实际存储空间。

在本实施例中,可以预先设置一个用于确定分配方案的逻辑存储池,该逻辑存储池的逻辑存储空间大于预先分配给用户的实际存储空间。例如,逻辑存储空间为实际存储空间的正整数倍,如图3所示,逻辑存储空间为预先分配给用户的实际存储空间的两倍。

需要说明的是,用户实际能够使用的存储空间的大小与预先分配给用户的实际存储空间的大小相同。

在接收用户发送的针对目标数据的存储请求后,根据存储请求,基于预设的逻辑存储池,确定分配方案集合。因为逻辑存储池的逻辑存储空间大于预先分配给用户的实际存储空间,所以在根据存储请求,确定出的分配方案的个数大于单纯通过实际存储空间所确定的分配方案的个数。这样更便于选择较优的分配方案。

在步骤S102中确定出分配方案集合后,可执行步骤S103的操作。

S103、针对分配方案集合中的每个分配方案,如果该分配方案包含本地存储节点,则将该分配方案确定为可选方案。

在本发明实施例中,本地存储节点为用户挂载的存储节点。针对分配方案集合中的每个分配方案都进行查询,如果该分配方案包含本地存储节点,则将该分配方案确定为可选方案。例如,请参考图2,如果本地存储节点为存储节点2,那么分配方案集合中含有存储节点2的分配方案即为可选方案。具体的,包括第一分配方案、第二分配方案、第四分配方案和第五分配方案。

确定可选方案后,可以继续执行步骤S104的操作。

S104、基于确定的可选方案中的一个可选方案进行目标数据的存储。

当确定的可选方案为一个时,选择该可选方案进行目标数据的存储;当确定的可选方案至少为两个时,选择其中一个可选方案进行目标数据的存储。进行目标数据的存储过程即为将目标数据对应的副本数据进行存储的过程。

在本发明一种具体实施方式中,步骤S104可以包括以下步骤:

基于确定的可选方案中的存储代价最小的一个可选方案进行目标数据的存储。

在本发明实施方式中,存储代价为进行目标数据的存储时,应用软硬件资源的代价。具体的,在将目标数据的副本数据存储到对应的存储节点时,具有一定的IO路径长度和/或产生一定的网络开销,根据IO路径长度和/或网络开销,可以确定相应的存储代价。例如,可以根据IO路径长度和网络开销的加权和确定相应的存储代价。具体权重可以根据实际情况进行确定和调整,本发明实施例并不限定。

在确定的可选方案中,可以分别计算每个可选方案的存储代价,并选择出存储代价最小的一个可选方案,基于该可选方案进行目标数据的存储。这样可以相应减小网络开销,减小IO路径长度。

应用本发明实施例所提供的方法,首先接收用户发送的针对目标数据的存储请求,然后根据存储请求,确定分配方案集合。针对分配方案集合中的每个分配方案,如果该分配方案包含本地存储节点,则将该分配方案确定为可选方案。基于确定的可选方案中的一个可选方案进行目标数据的存储。在分配方案集合中,优先选择含有本地存储节点的分配方案进行目标数据的存储,增加目标数据的副本数据存储在本地存储节点的概率,从而减少了网络开销,缩短了IO路径长度,提高了存储性能。

在本发明的一个实施例中,在步骤S102根据存储请求,确定分配方案集合之后,还包括以下步骤:

如果分配方案集合中任意一个分配方案均不包含本地存储节点,则基于分配方案集合中的一个分配方案进行目标数据的存储。

在本实施例中,在确定分配方案集合后,对分配方案集合中的每一个分配方案都进行查询,如果查询结果为分配方案集合中的任意一个分配方案均不包含本地存储节点,则在分配方案集合中选择一个分配方案进行目标数据的存储。

对于本实施例,本发明还有若干改进,例如在本发明的另外一个实施例中,上述步骤可以包括以下步骤:

步骤一、确定分配方案集合中每个分配方案的存储代价;

步骤二、基于存储代价最小的一个分配方案进行目标数据的存储。

为便于描述,将上述两个步骤结合起来进行说明。

在确定分配方案集合中不存在含有本地存储节点的分配方案时,先确定分配方案集合中每个分配方案的存储代价,得到存储代价最小的分配方案,然后基于存储代价最小的一个分配方案进行目标数据的存储。这样可以相应减小网络开销,减小IO路径长度。

存储代价的具体确定方法在此不再赘述。

相应于上面的方法实施例,本发明实施例还提供了一种基于分布式存储系统的数据存储装置,下文描述的一种基于分布式存储系统的数据存储装置与上文描述的一种基于分布式存储系统的数据存储方法可相互对应参照。

参见图4所示,该装置包括以下模块:

存储请求接收模块201,用于接收针对目标数据的存储请求;

分配方案集合确定模块202,用于根据存储请求,确定分配方案集合;

可选方案确定模块203,用于针对分配方案集合中的每个分配方案,如果该分配方案包含本地存储节点,则将该分配方案确定为可选方案;

数据存储模块204,用于基于确定的可选方案中的一个可选方案进行目标数据的存储。

应用本发明实施例所提供的装置,首先接收用户发送的针对目标数据的存储请求,然后根据存储请求,确定分配方案集合。针对分配方案集合中的每个分配方案,如果该分配方案包含本地存储节点,则将该分配方案确定为可选方案。基于确定的可选方案中的一个可选方案进行目标数据的存储。在分配方案集合中,优先选择含有本地存储节点的分配方案进行目标数据的存储,增加目标数据的副本数据存储在本地存储节点的概率,从而减少了网络开销,缩短了IO路径长度,提高了存储性能。

在本发明的一种具体实施方式中,数据存储模块204,具体用于:

基于确定的可选方案中的存储代价最小的一个可选方案进行目标数据的存储。

在本发明的一种具体实施方式中,数据存储模块204,还用于:

在根据存储请求,确定分配方案集合之后,如果分配方案集合中任意一个分配方案均不包含本地存储节点,则基于分配方案集合中的一个分配方案进行目标数据的存储。

在本发明的一种具体实施方式中,数据存储模块204,具体用于:

确定分配方案集合中每个分配方案的存储代价;

基于存储代价最小的一个分配方案进行目标数据的存储。

在本发明的一种具体实施方式中,分配方案集合确定模块202,具体用于:

根据存储请求,基于预设的逻辑存储池,确定分配方案集合,逻辑存储池的逻辑存储空间大于预先分配给用户的实际存储空间。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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