存储空间释放方法、装置、终端及计算机可读存储介质与流程

文档序号:17641999发布日期:2019-05-11 00:44阅读:239来源:国知局
存储空间释放方法、装置、终端及计算机可读存储介质与流程

本发明涉及数据存储技术领域,特别涉及一种存储空间释放方法、装置、终端及计算机可读存储介质。



背景技术:

在分布式存储中,本地对象存储位于最底层,其负责将数据实际写入磁盘中。目前在本地对象存储的对象聚合实现方式中,所有的对象均按照时间顺序并以追加写的方式写到一个聚合文件中,其中,聚合文件的大小默认为64mb,超出时会自动切换到一个新的聚合文件。这样一个文件对象最终会分布存储到不同的聚合文件中,一个聚合文件也会包含不同文件对象。

当前在删除一个文件对象时会修改相关聚合文件的元数据,首先将聚合文件中要删除的文件对象对应的数据段置为无效状态,然后判断聚合文件中是否还存在有效数据;若还存在有效数据则对该聚合文件不做处理,此时不会释放该聚合文件对应的存储空间;若不存在有效数据则删除该聚合文件并释放其对应的存储空间。

此时,对象聚合机制会启动一个定时器,定时扫描所有的聚合文件,将有效数据转移到新的聚合文件中,然后删除原有的聚合文件,通过这种方式来实现存储空间的释放。但是对象聚合机制对存储空间的释放比较滞后,因此其在存储空间已写满,删除后需要再立即写入的场景中无法使用。这是因此该机制在数据删除后,对应的存储空间并没有真正的释放,对应再次写入仍然会提示空间不足,因此无法立即写入。



技术实现要素:

本发明的目的是提供一种存储空间释放方法、装置、终端及计算机可读存储介质,能够实现存储空间的立即释放,提高了存储空间的利用率,能够满足多种应用场景的存储需求。

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

当接收到数据删除指令时,根据所述数据删除指令确定待删除数据;

将存储所述待删除数据的聚合文件作为目标聚合文件;

将所述目标聚合文件中所述待删除数据对应的数据段打洞,以释放对应数据段的存储空间。

可选地,所述将所述目标聚合文件中所述待删除数据对应的数据段打洞,包括:

利用fallocate接口将所述目标聚合文件中所述待删除数据对应的数据段打洞。

可选地,在所述将所述目标聚合文件中所述待删除数据对应的数据段打洞之后,还包括:

更新所述目标聚合文件的元数据信息;

判断所述目标聚合文件中是否存在有效数据;

若是,则将更新后的元数据信息存储到数据库中;

若否,则删除所述目标聚合文件,并从所述数据库中删除所述目标聚合文件对应的元数据信息。

可选地,所述更新所述目标聚合文件的元数据信息,包括:

根据打洞数据段修改所述目标聚合文件的元数据信息中有效数据的大小以及存储位置信息。

本发明还提供一种存储空间释放装置,包括:

待删除数据确定模块,用于当接收到数据删除指令时,根据所述数据删除指令确定待删除数据;

目标聚合文件确定模块,用于将存储所述待删除数据的聚合文件作为目标聚合文件;

打洞模块,用于将所述目标聚合文件中所述待删除数据对应的数据段打洞,以释放对应数据段的存储空间。

可选地,所述打洞模块具体为利用fallocate接口将所述目标聚合文件中所述待删除数据对应的数据段打洞的模块。

可选地,所述存储空间释放装置还包括:

更新模块,用于更新所述目标聚合文件的元数据信息;

判断模块,用于判断所述目标聚合文件中是否存在有效数据;

执行模块,用于若所述目标聚合文件中存在有效数据,则将更新后的元数据信息存储到数据库中;若所述目标聚合文件中不存在有效数据,则删除所述目标聚合文件,并从所述数据库中删除所述目标聚合文件对应的元数据信息。

可选地,所述更新模块具体为根据打洞数据段修改所述目标聚合文件的元数据信息中有效数据的大小以及存储位置信息的模块。

本发明还提供一种分布式存储系统,包括:

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

处理器,用于执行所述计算机程序时实现上述所述存储空间释放方法的步骤。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述存储空间释放方法的步骤。

本发明所提供的存储空间释放方法,包括:当接收到数据删除指令时,根据数据删除指令确定待删除数据;将存储待删除数据的聚合文件作为目标聚合文件;将目标聚合文件中待删除数据对应的数据段打洞,以释放对应数据段的存储空间。

可见,该方法在删除数据时,直接将待删除数据在聚合文件中对应的数据段打洞,即可实现存储空间的立即释放;克服了相关技术中通过对象聚合机制删除原有的聚合文件实现存储空间释放,所带来的存储空间的释放滞后,无法适应删除后再立即写入的场景的问题;提高了存储空间的利用率,能够满足多种应用场景的存储需求;本发明还提供了一种存储空间释放装置、终端及计算机可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

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

图1为本发明实施例所提供的存储空间释放方法的流程图;

图2为本发明实施例所提供的存储空间释放装置的结构框图。

具体实施方式

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

目前,相关技术中通过对象聚合机制来实现存储空间的释放。具体过程是:对象聚合机制启动一个定时器,定时扫描所有的聚合文件,将原有聚合文件中的有效数据转移到新的聚合文件中,然后删除原有的聚合文件,通过这种方式来实现存储空间的释放。通过该过程可以看到对象聚合机制对存储空间的释放比较滞后,必须要等到一个聚合文件中不存在有效数据(都删除了或者是剩余的有效数据转移了)时,才能够将该聚合文件对应的存储空间一起释放。因此其在存储空间已写满,删除后需要再立即写入的场景中无法使用。这是因此该机制在数据删除后,对应的存储空间并没有真正的释放,对应再次写入仍然会提示空间不足,因此无法立即写入。本实施例中提出了一种基于创建文件空洞的优化方法,通过对聚合文件上的无效数据段打洞的方式实现立即释放存储空间的目的,同时去掉了复杂的定时回收机制也就是对象聚合机制。具体请参考图1,图1为本发明实施例所提供的存储空间释放方法的流程图;该方法可以包括:

s110、当接收到数据删除指令时,根据数据删除指令确定待删除数据。

本实施例中在用户需要删除数据时,即接收到数据删除指令时,首先要确定其需要删除的数据即待删除数据。具体可以根据数据删除指令确定待删除数据。

s120、将存储待删除数据的聚合文件作为目标聚合文件。

由于数据都是存储在聚合文件中的,因此要将待删除数据删除,必须要确定存储该待删除数据的聚合文件。也就是说,本实施例中的目标聚合文件即为存储有待删除数据的聚合文件。当然,根据分布式存储中聚合文件存储数据的规则可知,本实施例中并不限定目标聚合文件的数量,存储待删除数据的全部聚合文件均为目标聚合文件。

s130、将目标聚合文件中待删除数据对应的数据段打洞,以释放对应数据段的存储空间。

本实施例中将每一个存储有待删除数据的目标聚合文件中待删除数据对应的数据段打洞,以释放对应数据段的存储空间。本实施例中并不对打洞的具体方式进行限定。例如:当存储系统为linux系统时,利用fallocate接口将目标聚合文件中待删除数据对应的数据段打洞。

由于本实施例中将目标聚合文件中待删除数据对应的数据段打洞,释放对应数据段的存储空间,也就是说对应数据段目前为空洞,当一个聚合文件中全部的数据段都变为空洞时,就需要将该聚合文件删除。因此,本实施例中在将目标聚合文件中待删除数据对应的数据段打洞之后需要更新该目标聚合文件中元数据信息,以便判断当前聚合文件是否存在有效数据,还是全部为空洞。具体在将目标聚合文件中待删除数据对应的数据段打洞之后还可以包括:

更新目标聚合文件的元数据信息;

判断目标聚合文件中是否存在有效数据;

若存在有效数据,则将更新后的元数据信息存储到数据库中;

若不存在有效数据,则删除目标聚合文件,并从数据库中删除目标聚合文件对应的元数据信息。

具体的,本实施例中并不对元数据信息记录的内容进行限定。只要可以通过该元数据信息确定其对应的聚合文件中是否还存在有效数据,以及有效数据所处的数据段即可。例如元数据信息中可以仅包含有效数据的大小以及存储的数据段位置信息。

本实施例中在执行完打洞操作后,需要更新目标聚合文件的元数据信息,当目标聚合文件存在多个,则需要更新各个目标聚合文件对应的元数据信息。即优选的,更新目标聚合文件的元数据信息可以包括:根据打洞数据段修改目标聚合文件的元数据信息中有效数据的大小以及存储位置信息。例如,一个聚合文件的大小是64mb,若假设该聚合文件中存满了有效数据,则该聚合文件对应的元数据信息即有效数据为64mb,存储位置为全部数据段。此时需要删除的数据即该聚合文件中第11mb至20mb对应的数据段中的数据,则在将该数据段执行打洞操作后,则该聚合文件对应的元数据信息即有效数据为54mb,存储位置为0至10mb的数据段以及21mb至64mb的数据段。

当然为了元数据信息的可靠性,本实施例中可以在确定将目标聚合文件中待删除数据对应的数据段打洞成功,也就是步骤s130成功执行时,才会更新各个目标聚合文件对应的元数据信息。当然,在确定将目标聚合文件中待删除数据对应的数据段打洞失败,也就是步骤s130执行失败时,不执行打洞失败对应的目标聚合文件的元数据信息。为了用户可以尽快处理该问题,可以在打洞失败时,输出提示信息。可以理解的是,本实施例中并不限定提示信息的输出形式以及内容。例如可以是语音或者是字符输出提示信息。提示信息的内容可以是打洞失败或者是打洞失败以及具体的失败记录信息(以方便用户定位失败原因)。

在更新所述目标聚合文件的元数据信息之后判断目标聚合文件中是否存在有效数据,若仍存在有效数据,则此时不能够将该聚合文件删除,需要将更新后的元数据信息存储到数据库(例如kv数据库)中。当然,也可以是在执行完更新目标聚合文件的元数据信息后无论聚合文件中是否存在有效数据都将更新后的元数据信息存储到数据库中。只是先判断再更新数据库的操作可以避免在目标聚合文件中不存在有效数据时,多执行了一次无用的更新数据库的操作。若目标聚合文件中不存在有效数据,则删除目标聚合文件,并从数据库中删除目标聚合文件对应的元数据信息。

下面通过具体例子说明上述过程,当删除数据时,直接通过linux系统的fallocate接口将数据对应的目标聚合文件中对应的数据段打洞,此时该部分空间会立即释放,然后更新该目标聚合文件的元数据信息并保存到kv数据库中。当删除到该目标聚合文件中的最后一个有效数据对象时,直接删除该目标聚合文件并从数据库中删除其对应的各种信息。

基于上述技术方案,本实施例中不需要相关技术中的对象聚合机制。相关技术中对象聚合机制需要启动定时器,定时检测所有的聚合文件,检测条件需要包括:磁盘剩余可用容量、聚合文件有效数据的百分比、聚合文件的修改时间、集群节点的系统负载等。由于对象聚合机制涉及到数据的读写,会给存储系统带来较大压力并影响前端业务,因此一般在没有业务的时间段(例如凌晨)开始,对满足上述要求的聚合文件先读出有效数据,然后写入最新的聚合文件,最后删除旧的聚合文件并更新元数据信息。可见,相关技术中对象聚合机制仅释放空间滞后,且操作繁琐,对系统资源占用较多。本发明实施例提供的存储空间释放方法,通过对聚合文件上的无效数据段打洞的方式实现立即释放存储空间的目的(避免了相关技术中的滞后问题),同时去掉了复杂的对象聚合机制(提高了系统资源利用率,避免在释放空间时对系统资源的过度占用),使存储系统适用于在存储空间已写满,删除后再立即写入的场景。提高了存储空间的利用率,能够满足多种应用场景的存储需求。

下面对本发明实施例提供的存储空间释放装置、终端及计算机可读存储介质进行介绍,下文描述的存储空间释放装置、终端及计算机可读存储介质与上文描述的存储空间释放方法可相互对应参照。

请参考图2,图2为本发明实施例所提供的存储空间释放装置的结构框图;该装置可以包括:

待删除数据确定模块100,用于当接收到数据删除指令时,根据数据删除指令确定待删除数据;

目标聚合文件确定模块200,用于将存储待删除数据的聚合文件作为目标聚合文件;

打洞模块300,用于将目标聚合文件中待删除数据对应的数据段打洞,以释放对应数据段的存储空间。

基于上述实施例,打洞模块300具体为利用fallocate接口将目标聚合文件中待删除数据对应的数据段打洞的模块。

基于上述任意实施例,该装置还可以包括:

更新模块,用于更新目标聚合文件的元数据信息;

判断模块,用于判断目标聚合文件中是否存在有效数据;

执行模块,用于若目标聚合文件中存在有效数据,则将更新后的元数据信息存储到数据库中;若目标聚合文件中不存在有效数据,则删除目标聚合文件,并从数据库中删除目标聚合文件对应的元数据信息。

基于上述实施例,更新模块具体为根据打洞数据段修改目标聚合文件的元数据信息中有效数据的大小以及存储位置信息的模块。

需要说明的是,基于上述任意实施例,所述装置可以是基于可编程逻辑器件实现的,可编程逻辑器件包括fpga,cpld,单片机等。该可编程逻辑器件可以是在分布式存储系统中。

本发明实施例还提供一种分布式存储系统,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现上述任意实施例所述的存储空间释放方法的步骤。如处理器用于执行计算机程序时实现当接收到数据删除指令时,根据数据删除指令确定待删除数据;将存储待删除数据的聚合文件作为目标聚合文件;将目标聚合文件中待删除数据对应的数据段打洞,以释放对应数据段的存储空间。

本实施例并不对分布式存储系统的规模进行限定。

本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例所述的存储空间释放方法的步骤。如计算机程序被处理器执行时实现当接收到数据删除指令时,根据数据删除指令确定待删除数据;将存储待删除数据的聚合文件作为目标聚合文件;将目标聚合文件中待删除数据对应的数据段打洞,以释放对应数据段的存储空间。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

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

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

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

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

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