一种存储池的存储空间配额方法、装置、设备及存储介质与流程

文档序号:16465881发布日期:2019-01-02 22:47阅读:426来源:国知局
一种存储池的存储空间配额方法、装置、设备及存储介质与流程

本发明涉及数据存储领域,特别涉及一种存储池的存储空间配额方法、装置、设备及计算机可读存储介质。



背景技术:

随着工作生活中出现的数据量越来越大,分布式块存储技术应运而生。分布式块存储系统能够为it企业、云计算、大数据、虚拟化等客户端提供存储空间。但是,在分布式块存储系统中,由于存储池(dpm,dataprotectionmanager)的总存储空间是有限的,因此在存储数据时需要使用合理的方式为写入的数据分配存储空间,以避免写入数据的总量超过存储池的总存储空间。

现有技术中,通过存储池的各osd(objectstoragedevices,对象存储设备)每隔1秒向mon(monitor,一种用于对整个分布式存储系统进行监控管理的程序)上报一次pg(placementgroup,安置组)的状态消息,mon每隔5秒检查一次存储池状态也即pg的汇总数据状态,当mon检测到存储池写满时,mon为存储池设置full标识并更新osdmap,以便于osd根据osdmap的状态控制存储池停止接收数据。但是由于osd上报pg的状态信息和mon检查存储池的状态信息是存在时间差异的,且osdmap在块存储系统中传播也需要一定的时间,因此mon检测到存储池写满的时刻与osd控制存储池停止接收数据的时刻之间存在较大的延时,在这延时过程中,将由于存储池仍然接收数据而导致存储池写入数据的总量大于存储池的总存储空间,这样将造成客户端对存储池的超额使用,进而提高了分布式块存储系统的维护难度。

因此,如何设置存储池的配额方法,使得存储池写入数据的总量不超过存储池的总存储空间,是本领域技术人员目前需要解决的技术问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种存储池的存储空间配额方法,能够避免存储池写入数据的总量大于存储池的总存储空间,进而提高分布式块存储系统的稳定性;本发明的另一目的是提供一种存储池的存储空间配额装置、设备及计算机可读存储介质,均具有上述有益效果。

为解决上述技术问题,本发明提供一种存储池的存储空间配额方法,包括:

预先根据存储池的总存储空间为每个osd分配额定存储空间;

当所述osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制所述目标osd申请预设存储空间并更新所述目标osd的所述当前存储空间;

当各所述osd申请的所述预设存储空间的总量等于各所述osd对应的所述额定存储空间时,若所述目标osd再次接收到所需空间大于当前存储空间的所述待写入数据,则控制所述存储池停止接收所述待写入数据。

优选地,所述预先根据存储池的总存储空间为每个osd分配额定存储空间具体为:

预先根据所述存储池的所述总存储空间为每个osd平均分配额定存储空间。

优选地,在所述预先根据所述存储池的所述总存储空间为每个osd平均分配额定存储空间之后,进一步包括:

调整各所述osd在osdmap中的权重以控制所述待写入数据均衡分布于各所述osd;

对应的,所述当各所述osd申请的所述预设存储空间的总量等于各所述osd对应的所述额定存储空间时,若所述目标osd再次接收到所需空间大于当前存储空间的所述待写入数据,则控制所述存储池停止接收所述待写入数据具体为:

当所述目标osd申请的所述预设存储空间的总量等于所述目标osd对应的所述额定存储空间时,若所述目标osd再次接收到所需空间大于当前存储空间的所述待写入数据,则控制所述存储池停止接收所述待写入数据。

优选地,所述当所述osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制所述目标osd申请预设存储空间并更新所述目标osd的当前存储空间具体为:

当所述osd中存在目标osd的当前存储空间小于所述待写入数据的所需空间时,根据所述目标osd累计申请的所述预设存储空间,减少所述目标osd当前申请的所述预设存储空间并更新所述目标osd的所述当前存储空间。

优选地,所述当所述osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制所述目标osd申请预设存储空间并更新所述目标osd的所述当前存储空间具体为:

当所述osd中存在目标osd的当前存储空间的阈值小于所述待写入数据的所需空间时,按照预设规则控制所述目标osd申请预设存储空间并更新所述目标osd的所述当前存储空间。

优选地,在所述控制所述存储池停止接收所述待写入数据之前,进一步包括:

为所述存储池设置标识信息。

优选地,在所述控制所述存储池停止接收所述待写入数据之前,进一步包括:

发出提示信息。

为解决上述技术问题,本发明还提供一种存储池的存储空间配额装置,包括:

分配模块,用于预先根据存储池的总存储空间为每个osd分配额定存储空间;

更新模块,用于当所述osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制所述目标osd申请预设存储空间并更新所述目标osd的所述当前存储空间;

控制模块,用于当各所述osd申请的所述预设存储空间的总量等于各所述osd对应的所述额定存储空间时,若所述目标osd再次接收到所需空间大于当前存储空间的所述待写入数据,则控制所述存储池停止接收所述待写入数据。

为解决上述技术问题,本发明还提供一种存储池的存储空间配额设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述任一种存储池的存储空间配额方法的步骤。

为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种存储池的存储空间配额方法的步骤。

本发明提供的一种存储池的存储空间配额方法,通过预先根据存储池的总存储空间为每个osd分配额定存储空间,当osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制目标osd申请预设存储空间并更新目标osd的当前存储空间;并且当各osd申请的预设存储空间的总量等于各osd对应的额定存储空间时,若目标osd再次接收到所需空间大于当前存储空间的待写入数据,则控制存储池停止接收待写入数据;由于目标osd申请的预设存储空间的总量最多为目标osd的额定存储空间,并且避免了osd通过由mon更新的osdmap控制存储池停止接收待写入数据时带来的延时,从而使得存储池的写入数据的总量不超过存储池的总存储空间,进而保障了分布式块存储系统的稳定性,降低了系统的维护难度。

为解决上述技术问题,本发明还提供了一种存储池的存储空间配额装置、设备及计算机可读存储介质,均具有上述有益效果。

附图说明

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

图1为本发明实施例提供的一种存储池的存储空间配额方法的流程图;

图2为本发明实施例提供的一种块存储系统存储数据的过程的示意图;

图3为本发明实施例提供的另一种存储池的存储空间配额方法的流程图;

图4为本发明实施例提供的一种存储池的存储空间配额装置的结构图;

图5为本发明实施例提供的一种存储池的存储空间配额设备的结构图。

具体实施方式

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

本发明实施例的核心是提供一种存储池的存储空间配额方法,能够避免存储池写入数据的总量大于存储池的总存储空间,进而提高分布式块存储系统的稳定性;本发明的另一核心是提供一种存储池的存储空间配额装置、设备及计算机可读存储介质,均具有上述有益效果。

为了使本领域技术人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为本发明实施例提供的一种存储池的存储空间配额方法的流程图;图2为本发明实施例提供的一种块存储系统存储数据的过程的示意图。如图1和图2所示,本实施例提供一种存储池的存储空间配额方法包括:

s10:预先根据存储池的总存储空间为每个osd分配额定存储空间。

需要说明的是,存储池是服务器在其中存储副本、卷影副本和传输日志的一组磁盘。一般的,存储池的总存储空间的大小由各磁盘的容量和磁盘的个数决定。可以理解的是,各osd分别对应一个磁盘,磁盘的容量由磁盘本身的性质决定。预先根据存储池的总存储空间为每个osd分配额定存储空间,也即通过将存储池的总存储空间分配给存储池中的各个pg,然后将各pg分布在各osd上,从而达到为每个osd分配存储空间的目的。需要说明的是,pg是用于放置数据的虚拟组件,是数据进行迁移和改变的最小单位;osd是一种用于提供数据存储服务的虚拟设备。具体的,将各pg分布于osd上的分布规则可以是通过crushrule来定义,根据osd中的pg数量确定出的该osd能够存储的最大数据量,也即额定存储空间。

s20:当osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制目标osd申请预设存储空间并更新目标osd的当前存储空间。

具体的,在将待写入数据写入存储池以便写入磁盘之前,先判断待写入数据的所需空间是否大于目标osd的当前存储空间。需要说明的是,目标osd指的是该存储池对应的所有osd中的一个或多个osd,在本实施例中,目标osd是根据数据的写入规则将待写入数据的一个或多个osd设置为目标osd。若待写入数据的所需空间小于或等于目标osd的当前存储空间,则按照写入规则将待写入数据写入目标osd中。具体的,待写入数据一般是通过object(对象)写入到目标osd中,从而最终下刷到磁盘中。更具体的,当存在待写入数据时,根据存储池的id信息查找到对应的存储池所属的pg,然后根据pgid将待写入数据存储至对应的osd中,以便于osd实时或者根据预设的时间间隔将该待写入数据下刷到磁盘中存储。

当若待写入数据的所需空间大于目标osd的当前存储空间,则按照预设规则控制目标osd申请预设存储空间。具体的,目标osd向mon申请预设存储空间。需要说明的是,目标osd每次申请的预设存储空间均小于目标osd的额定存储空间。在目标osd申请到预设存储空间之后,利更新当前存储空间。具体的,将申请预设存储空间之前的当前存储空间和申请到的预设存储空间之和与待写入数据的所需空间的差值作为当前存储空间。例如,假设目标osd当前存储空间为a,待写入数据的所需空间为b,且b>a,因此,该目标osd申请预设存储空间c,更新目标osd的当前存储空间为a+c,在将该写入数据写入到该目标osd后,再次更新该目标osd的当前存储空间为(a+c-b),将(a+c-b)作为目标osd的当前存储空间。

s30:当各osd申请的预设存储空间的总量等于各osd对应的额定存储空间时,若目标osd再次接收到所需空间大于当前存储空间的待写入数据,则控制存储池停止接收待写入数据。

具体的,存储池中的各osd都将作为目标osd,根据待写入数据的写入情况申请预设存储空间并写入数据,再更新当前存储空间以便再次写入数据。

由于各个osd的额定存储空间不同,且数据写入各osd的分布情况不同,因此需要分别判断各osd申请的预设存储空间的总量是否等于各osd对应的额定存储空间。当某些osd写满数据,但是还存在其他的osd还写满数据时,当存在待写入数据时,将未写满数据的osd设置为目标osd并控制数据写入目标osd中,直至存储池中所有的osd申请的预设存储空间的总量等于各osd对应的额定存储空间,也即当前不存在能够申请的预设存储空间时,若目标osd再次接收到所需空间大于当前存储空间的待写入数据,则控制存储池停止接收待写入数据控制存储池停止接收待写入数据。

本发明实施例提供的一种存储池的存储空间配额方法,通过预先根据存储池的总存储空间为每个osd分配额定存储空间,当osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制目标osd申请预设存储空间并更新目标osd的当前存储空间;并且当各osd申请的预设存储空间的总量等于各osd对应的额定存储空间时,若目标osd再次接收到所需空间大于当前存储空间的待写入数据,则控制存储池停止接收待写入数据;由于目标osd申请的预设存储空间的总量最多为目标osd的额定存储空间,并且避免了osd通过由mon更新的osdmap控制存储池停止接收待写入数据时带来的延时,从而使得存储池的写入数据的总量不超过存储池的总存储空间,进而保障了分布式块存储系统的稳定性,降低了系统的维护难度。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,预先根据存储池的总存储空间为每个osd分配额定存储空间具体为:

预先根据存储池的总存储空间为每个osd平均分配额定存储空间。

具体的,为了降低各osd写入数据的差距较大而导致系统的稳定性不高,在本实施例中,预先根据存储池的总存储空间为每个osd平均分配额定存储空间。

也即,预先根据osd的数量将存储池的总存储空间平均分配给各osd,具体的,存储池将总存储空间分配给存储池内的各pg,以使得各pg具有放置数据的容量,再将各pg按照存放规则均衡地存放于各osd上,以使得各osd分配的额定存储空间是相同的。

可以理解的是,通过预先根据存储池的总存储空间为每个osd平均分配额定存储空间,从而缩短各osd写满数据的时间差,提高分布式块存储系统的稳定性。

需要说明的是,为了更进一步缩短各osd写满数据的时间差值,从而更进一步地提高分布式块存储系统的稳定性,本实施例在上述实施例的基础上做了进一步的优化,具体的,如图3所示的另一种存储池的存储空间配额方法的流程图,在预先根据存储池的总存储空间为每个osd平均分配额定存储空间之后,进一步包括:

s11:调整各osd在osdmap中的权重以控制待写入数据均衡分布于各osd;

对应的,当各osd申请的预设存储空间的总量等于各osd对应的额定存储空间时,若目标osd再次接收到所需空间大于当前存储空间的待写入数据,则控制存储池停止接收待写入数据具体为:

s31:当目标osd申请的预设存储空间的总量等于目标osd对应的额定存储空间时,若目标osd再次接收到所需空间大于当前存储空间的待写入数据,则控制存储池停止接收待写入数据。

可以理解的是,osdmap是反映分布式块存储系统集群中所有osd的信息、所有osd的改变如进程退出、osd节点的加入和退出或者osd节点权重的变化的表。具体的,在预先根据存储池的总存储空间为每个osd平均分配额定存储空间之后,并在将待写入数据写入osd之后,各osd分别更新各对应的当前存储空间。mon根据各osd的当前存储空间调整各osd在osdmap中的权重,以控制待写入数据均衡分布于各osd。

对应的,当目标osd申请的预设存储空间的总量等于目标osd对应的额定存储空间时,若目标osd再次接收到所需空间大于当前存储空间的待写入数据,则控制存储池停止接收待写入数据。

可以理解的是,由于各osd的额定存储空间相同,并且通过控制各osd均衡地写入数据,因此各osd将同步达到申请的预设存储空间的总量等于各osd对应的额定存储空间的情况,因此当目标osd申请的预设存储空间的总量等于目标osd对应的额定存储空间时,则表示其他的各osd当前申请的预设存储空间的总量等于各osd对应的额定存储空间,因此若目标osd再次接收到所需空间大于当前存储空间的待写入数据,则控制存储池停止接收待写入数据。具体的,通过目标osd将当前自身的存储空间已满的通知消息发送给所在存储池中的其他的osd;当各osd均接收到该通知消息之后,再将触发信息发送给mon,以便于mon在接收到触发信息后,控制存储池停止接收待写入数据。

需要说明的是,在写入数据过程中,由于各待写入数据的大小不同,待写入数据的所需空间不同,因此各个osd并不是保持绝对的同步写满数据,一般的,各osd将存在允许范围内的误差,也看作是同步写满数据。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,当osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制目标osd申请预设存储空间并更新目标osd的当前存储空间具体为:

当osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,根据目标osd累计申请的预设存储空间,减少目标osd当前申请的预设存储空间并更新目标osd的当前存储空间。

在本实施例中,为了能够充分利用额定存储空间,本实施例将申请预设存储空间的预设规则设置为随着累计申请预设存储空间的总量增多而减少当前申请的预设存储空间。具体的,随着申请预设存储空间的次数增多,累计申请的预设存储空间的总量增多,申请的预设存储空间的总量将越接近额定存储空间,因此可以设置申请的预设存储空间随着累计申请预设存储空间的总量增多而逐渐减少。

另外,作为优选的实施方式,还可以设置当前申请的预设存储空间的量为额定存储空间与申请的预设存储空间的总量的差值的一半,由于申请的预设存储空间的总量随着每次申请逐渐增多,因此可申请的预设存储空间的剩余量逐渐减少。例如,假设目标osd的额定存储空间为4g,初始情况下申请的预设存储空间的总量为0,因此第一次申请的预设存储空间为(4-0)/2即2g,第二次申请的预设存储空间为(4-2)/2即1g,第三次申请的预设存储空间为(4-2-1)/2即512m,依次类推,直至可申请的存储空间剩余量为0,也即目标osd写入数据的总量等于其额定存储空间。当然,本实施例中也可以将当前申请的预设存储空间的量为额定存储空间与申请的预设存储空间的总量的差值设置为其他比例值,或者采用其他的设置方式,本实施例对此不做限定。

可以理解的是,当目标osd中写入数据的总量等于额定存储空间时,表示当前不能再申请预设存储空间。当再有新的待写入数据时,若新的待写入数据的所需空间大于目标osd的当前存储空间时,由于目标osd的当前存储空间不够而控制存储池停止接收待写入数据,由于目标osd申请的预设存储空间是随着累计申请的预设存储空间的总量逐次减少的,因此目标osd的当前存储空间也较小,从而使得各osd的空闲量较少,进而提高osd的存储资源的使用率,提升分布式块存储系统的性能。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,当osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制目标osd申请预设存储空间并更新目标osd的当前存储空间具体为:

当osd中存在目标osd的当前存储空间的阈值小于待写入数据的所需空间时,按照预设规则控制目标osd申请预设存储空间并更新目标osd的当前存储空间。

具体的,判断目标osd的当前存储空间是否小于待写入数据的所需空间时具体为判断目标osd的当前存储空间的阈值是否小于待写入数据的所需空间。通过预先检测出目标osd的当前存储空间,再根据预设的规则计算出目标osd的当前存储空间的阈值。当osd中存在目标osd的当前存储空间的阈值小于待写入数据的所需空间时,按照预设规则控制目标osd申请预设存储空间,并利用预设存储空间更新当前存储空间。通过判断目标osd的当前存储空间的阈值是否小于待写入数据的所需空间,当目标osd的当前存储空间的阈值小于待写入数据的所需空间时,表示需要申请预设存储空间,通过设置阈值,也即给目标osd缓冲阶段,使得写入数据的过程更加稳定。

需要说明的是,阈值可以是固定值;也可以是根据osd的当前存储空间的预设比例设置当前存储空间的阈值,例如设置该目标osd的存储空间的阈值为当前存储空间的90%;另外,在目标osd申请的预设存储空间的总量等于目标osd的额定存储空间之后,还可以增加当前存储空间的阈值,以使得目标osd的当前存储空间得到充分的利用。

在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,在控制存储池停止接收待写入数据之前,进一步包括:

为存储池设置标识信息。

具体的,在控制存储池停止接收待写入数据之前,通过mon为存储池设置标识信息。具体的,标识信息可以是字符标记信息,也可以是其他类型的标识信息,本实施例对此不做具体的限定。需要说明的是,通过在控制存储池停止接收待写入的数据之前为存储池设置标识信息,通过标识信息可以明确知晓存储池是在当前已写满数据的情况下,才不再写入数据的,从而能够排除区别出存储池因为故障而停止接收待写入的数据信息的情况。也就是说,若当前存储池不再写入数据,可以通过是否存在标识信息判断出存储池是写满数据还是存在存储故障,能够为存储池排除故障原因,提高存储池写入数据的效率。

在控制存储池停止接收待写入数据之前,进一步包括:

发出提示信息。

具体的,提示信息的可以是语音提示信息或指示灯提示信息或图像提示信息,本实施例对此不做限定。可以理解的是,在控制存储池停止接收待写入数据之前发出提示信息,以提示客户端当前的存储池已写满,需要采取相应的措施,例如停止写入数据或者通过购增加磁盘进行存储池扩容的方式增加存储池的总存储空间以便能够继续写入数据,从而避免数据的丢失。

上文对于本发明提供的一种存储池的存储空间配额方法的实施例进行了详细的描述,本发明还提供了一种与该方法对应的存储池的存储空间配额装置、设备及计算机可读存储介质,由于装置、设备及计算机可读存储介质部分的实施例与方法部分的实施例相互照应,因此装置、设备及计算机可读存储介质部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

图4为本发明实施例提供的一种存储池的存储空间配额装置的结构图,如图4所示,一种存储池的存储空间配额装置400包括:

分配模块41,用于预先根据存储池的总存储空间为每个osd分配额定存储空间;

更新模块42,用于当osd中存在目标osd的当前存储空间小于待写入数据的所需空间时,按照预设规则控制目标osd申请预设存储空间并更新目标osd的当前存储空间;

控制模块43,用于当各osd申请的预设存储空间的总量等于各osd对应的额定存储空间时,若目标osd再次接收到所需空间大于当前存储空间的待写入数据,则控制存储池停止接收待写入数据。

本发明实施例提供的存储池的存储空间配额装置,具有上述存储池的存储空间配额方法的有益效果。

图5为本发明实施例提供的一种存储池的存储空间配额设备的结构图,如图5所示,一种存储池的存储空间配额设备500包括:

存储器51,用于存储计算机程序;

处理器52,用于执行计算机程序时实现如上述存储池的存储空间配额方法的步骤。

本发明实施例提供的存储池的存储空间配额设备,具有上述存储池的存储空间配额方法的有益效果。

为解决上述技术问题,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述存储池的存储空间配额方法的步骤。

本发明实施例提供的计算机可读存储介质,具有上述存储池的存储空间配额方法的有益效果。

以上对本发明所提供的存储池的存储空间配额方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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

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