存储对象的空间管理方法、装置、计算机装置及存储介质与流程

文档序号:16399946发布日期:2018-12-25 20:04阅读:221来源:国知局
存储对象的空间管理方法、装置、计算机装置及存储介质与流程

本发明涉及存储技术领域,尤其涉及一种存储对象的空间分配方法、装置、计算机装置及存储介质。

背景技术

在计算机中,通常需要对各类型的文件进行存储,或者对应用程序分配的对象进行存储。此时,需要对文件的存储地址进行分配或者对对象的存储地址进行分配。当可存储空间较大,存储的内容较多时,可能无法及时的为存储对象进行空间分配,因此,亟需一种有效管理和快速分配存储空间的机制。



技术实现要素:

鉴于以上内容,有必要提供一种存储对象的空间管理方法、装置、计算机装置及存储介质,可以提高获取存储对象的存储空间信息的速度,从而能够及时的对新增的存储对象进行存储空间分配。

本发明提供一种存储对象的空间管理方法,所述方法包括:

接收空间管理指令,获取所述空间管理指令指示管理的目标存储空间;

获取所述目标存储空间中的已存储对象、所述已存储对象的存储单元以及空闲存储单元;

在键值数据库中保存所述已存储对象、所述已存储对象的存储单元以及所述空闲存储单元;

若接收到为新增存储对象分配存储空间的指令,根据所述空闲存储单元为所述新增存储对象分配存储空间。

在本发明优选实施中,所述根据所述空闲存储单元为所述新增存储对象分配存储空间,包括:

获取所述新增存储对象的大小以及所述目标存储空间中每个存储单元的大小;

根据所述新增存储对象的大小以及所述目标存储空间中每个存储单元的大小计算待存储单元数量;

根据所述待存储单元数量从所述空闲存储单元中为所述新增存储对象分配连续的存储单元。

在本发明优选实施例中,所述方法还包括:

若检测到所述目标存储中存在已存储对象被释放,在所述键值数据库中更新已释放的存储对象的信息。

在本发明优选实施中,所述键值数据库为leveldb或者rocksdb。

在本发明优选实施中,所述获取所述目标存储空间中已存储对象、所述已存储对象的存储单元以及空闲存储单元,包括:

将所述目标存储空间包含的存储单元进行编号;

获取所述目标存储空间中已存储对象、所述已存储对象的存储单元的编号以及空闲存储单元的编号;

则所述在键值数据库中保存所述已存储对象、所述已存储对象的存储单元以及所述空闲存储单元,包括:

在键值数据库中保存所述已存储对象、所述已存储对象的存储单元的编号以及所述空闲存储单元的编号。

在本发明优选实施例中,所述目标存储空间中的存储单元通过如下方式划分:

获取所述目标存储空间的大小,确定所述目标存储空间进行空间管理的基本单元;

根据所述目标存储空间进行空间管理的基本单元将所述目标存储空间划分为若干存储单元。

在本发明优选实施例中,所述确定所述目标存储空间进行空间管理的基本单元包括:

获取所述目标存储空间的目标存储对象的大小;

根据所述目标存储空间的目标存储对象的大小确定所述目标存储空间进行空间管理的基本单元。

本发明还提供一种存储对象的空间管理装置,所述装置包括:

第一获取模块,用于接收空间管理指令,获取所述空间管理指令指示管理的目标存储空间;

第二获取模块,用于获取所述目标存储空间中的已存储对象、所述已存储对象的存储单元以及空闲存储单元;

保存模块,用于在键值数据库中保存所述已存储对象、所述已存储对象的存储单元以及所述空闲存储单元;

分配模块,用于若接收到为新增存储对象分配存储空间的指令,根据所述空闲存储单元为所述新增存储对象分配存储空间。

在本发明优选实施例中,所述分配模块根据所述空闲存储单元为所述新增存储对象分配存储空间包括:

获取所述新增存储对象的大小以及所述目标存储空间中每个存储单元的大小;

根据所述新增存储对象的大小以及所述目标存储空间中每个存储单元的大小计算待存储单元数量;

根据所述待存储单元数量从所述空闲存储单元中为所述新增存储对象分配连续的存储单元。

在本发明优选实施例中,所述装置还包括:

更新模块,用于若检测到所述目标存储中存在已存储对象被释放,在所述键值数据库中更新已释放的存储对象的信息。

在本发明优选实施例中,所述键值数据库为leveldb或者rocksdb。

在本发明优选实施例中,所述第二获取模块具体用于:

将所述目标存储空间包含的存储单元进行编号;

获取所述目标存储空间中已存储对象、所述已存储对象的存储单元的编号以及空闲存储单元的编号;

则所述保存模块具体用于:

在键值数据库中保存所述已存储对象、所述已存储对象的存储单元的编号以及所述空闲存储单元的编号。

在本发明优选实施例中,所述装置还包括划分模块,所述划分模块用于:

获取所述目标存储空间的大小,确定所述目标存储空间进行空间管理的基本单元;

根据所述目标存储空间进行空间管理的基本单元将所述目标存储空间划分为若干存储单元。

在本发明优选实施例中,所述划分模块确定所述目标存储空间进行空间管理的基本单元包括:

获取所述目标存储空间的目标存储对象的大小;

根据所述目标存储空间的目标存储对象的大小确定所述目标存储空间进行空间管理的基本单元。

本发明还提供一种计算机装置,所述计算机装置包括存储器及处理器,所述存储器用于存储至少一个指令,所述处理器用于执行所述至少一个指令以实现任意实施例中所述的存储对象的空间管理方法。

本发明还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现任意实施例中所述的存储对象的空间管理方法。

由以上技术方案看出,本发明通过接收空间管理指令,获取所述空间管理指令指示管理的目标存储空间;获取所述目标存储空间中的已存储对象、所述已存储对象的存储单元以及空闲存储单元;在键值数据库中保存所述已存储对象、所述已存储对象的存储单元以及所述空闲存储单元;若接收到为新增存储对象分配存储空间的指令,根据所述空闲存储单元为所述新增存储对象分配存储空间。由于将目标存储空间中的存储对象都保存在键值数据库中,由于键值数据库具有查找迅速的特点,所以,可以快速的获取已存储对象的存储空间信息,实现提高获取存储对象的存储空间信息的速度的目的。并且,根据键值数据库能快速获取目标存储空间中的空闲存储单元,所以分配存储空间时,能快速准确的分配存储空间,实现及时的对新增的存储对象进行存储空间分配的目的。

同时,本发明无需将存储对象的存储空间信息记录在内存或硬盘中,不会占用过多内存,避免降低系统性能。

附图说明

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

图1是本发明实施例提供的一种存储对象的空间管理方法的流程图;

图2是本发明实施例提供的存储对象的空间管理装置的功能模块图;

图3是本发明实现存储对象的空间管理方法的较佳实施例的计算机装置的结构示意图。

具体实施方式

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

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

如图1所示,图1为本发明实施例提供的一种存储对象的空间管理方法的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。

s11,接收空间管理指令,获取所述空间管理指令指示管理的目标存储空间。

本发明所述的方法可用于存储空间中对存储对象进行管理。具体的,对存储对象进行管理包括但不限于对存储对象的存储空间信息(也称为地址空间信息)进行保存和为存储对象分配存储空间。

上述目标存储空间是可以进行数据存储的虚拟存储空间或者物理存储空间,例如上述目标存储空间可以为一个或多个磁盘。

s12:获取所述目标存储空间中的已存储对象、所述已存储对象的存储单元以及空闲存储单元。

其中,获取目标存储空间中的已存储对象可以是获取已存储对象在目标存储空间中已存储对象的名称,或者已存储对象的大小等信息。

上述获取已存储对象的存储空间具体可以是获取已存储对象在目标存储空间中所存储的存储地址。

上述空闲存储单元是目标存储空间中没有存放存储对象的存储单元。

获取空闲存储单元具体可以是获取目标存储空间中的没有存放存储对象,且可进行对象存储的存储单元的地址。

通常,对于一个目标存储空间可以划分为若干存储单元,已存储对象可以根据其大小占用一个或多个存储单元。

可选的,在本发明另一实施例中,所述获取所述目标存储空间中已存储对象、所述已存储对象的存储单元以及空闲存储单元,包括:

将所述目标存储空间包含的存储单元进行编号;

获取所述目标存储空间中已存储对象、所述已存储对象的存储单元的编号以及空闲存储单元的编号;

上述存储单元,是目标存储空间中所包括的存储单元。

上述编号可以是数字、字母等形式的编号,用于对每个存储单元进行标识。

则在对目标存储空间包含的存储单元进行编号之后,获取目标存储空间中已存储对象、所述已存储对象的存储单元的编号以及空闲存储单元的编号。

可选的,在本发明另一实施例中,所述目标存储空间中的存储单元通过如下方式划分:

获取所述目标存储空间的大小,确定所述目标存储空间进行空间管理的基本单元;

根据所述目标存储空间进行空间管理的基本单元将所述目标存储空间划分为若干存储单元。

上述获取目标存储空间的大小具体可以是获取目标存储空间的总容量。

上述目标存储空间进行空间管理的基本单元,具体可以是对目标存储空间进行分配、存储等操作时的最小操作单元。

上述目标存储空间进行空间管理的基本单元可以为预设单元,例如,目标存储空间进行空间管理的基本单元为1mb。

上述根据目标存储空间进行空间管理的基本单元将目标存储空间划分为若干存储单元具体是:将目标存储空间划分为若干个存储单元,每个存储单元的大小等于目标存储空间进行空间管理的基本单元。

例如,目标存储空间为一块磁盘,该磁盘的大小为1gb。若该磁盘进行空间管理的基本单元为1mb,则将该磁盘划分为1024个存储单元。

又比如,目标存储空间为一块磁盘,该磁盘的大小为500mb。若该磁盘进行空间存储的基本单元为5mb,则将该磁盘划分为100个存储单元。

则上述将目标存储空间包含的存储单元进行编号可以是对划分后的每个存储单元赋予一个编号。

进一步地,所述确定所述目标存储空间进行空间管理的基本单元包括:

获取所述目标存储空间的目标存储对象的大小;

根据所述目标存储空间的目标存储对象的大小确定所述目标存储空间进行空间管理的基本单元。

上述目标存储对象可以是将要存储在目标存储空间的存储对象。

例如,目标存储对象都为10m以上的数据,则目标存储空间进行空间管理的基本单元可以确定为10m。

在本实施例中,根据目标存储空间的目标存储对象的大小进行基本单元的划分,避免将目标存储空间进行空间管理的基本单元划分的过大或者过小,有利于进行空间管理。

s13:在键值数据库中保存所述已存储对象、所述已存储对象的存储单元以及所述空闲存储单元。

其中,键值数据库,也称为kv(key-value)存储数据库。kv数据库是一种非关系型数据库,键值数据库中的数据按照键值对的形式进行组织、索引和存储。

具体的,可以在键值数据库中记录已存储对象的对象名称,以及已存储对象的存储地址。

由于已存储对象和已存储对象的存储单元是一种一一对应的数据组织形式,因此使用键值数据库进行保存,符合要保存的数据的组织形式。在通过kv数据库进行存储以后,也可以快速的从kv数据库中进行查找。

通过键值数据库对目标存储空间中的已存储对象、已存储对象的存储单元以及空闲存储单元进行保存,不需要在内存中记录,为内存释放了更多的资源,也不需要频繁的去内存中进行查询,提高了系统的性能。并且,根据键值数据库存储数据的特点以及快速查找的特点,可以快速的访问键值数据库中的信息,从而可以快速的获取到目标存储空间中哪些存储单元被占用,哪些存储单元未被占用。

可选的,所述键值数据库为leveldb或者rocksdb。

其中,上述leveldb是一种开源的键值数据库,因此在实际应用中更容易获得,使用leveldb具有低成本高效率的优点。

在leveldb中,key和value都可以是任意长度的字节数组。并且,可以按照key的字典顺序存储,也可以按照其他自定义的顺序存储。在leveldb数据库中,也可以快读的进行数据的查找。

在rocksdb中,key和value都可以是任意长度的字节数组。并且,rocksdb支持高效的查找和范围搜索,支持高负载的随机读、高负载的更新操作或两者的结合。因此,使用rocksdb能支持对于目标存储空间中的存储空间信息的快速读写。

同时,若步骤s12获取所述目标存储空间中已存储对象、所述已存储对象的存储单元以及空闲存储单元,包括:将所述目标存储空间包含的存储单元进行编号;获取所述目标存储空间中已存储对象、所述已存储对象的存储单元的编号以及空闲存储单元的编号;

则步骤s13在键值数据库中保存所述已存储对象、所述已存储对象的存储单元以及所述空闲存储单元,包括:

在键值数据库中保存所述已存储对象、所述已存储对象的存储单元的编号以及所述空闲存储单元的编号。

例如,已存储对象的对象名称为a,a所占用的存储单元的编号为(1,5,8),则将a以及其所占用的存储单元的编号通过key-value的形式保存在键值数据库中,具体的,在键值数据库中可以保存为a->(1,5,8)。并且,保存其他编号的存储单元的存储对象为空。

同时,也可以在kv数据库中保存一个bitmap,通过bitmap记录每个存储单元是否已经存储了存储对象。

具体的,bitmap是一种数据结构,在bitmap中,每一位可以置为0或者1,用来表示一个含义。例如,在kv数据库中保存一个bitmap,其中0表示该位置未被占用(即没有存储任何对象),其中1表示该位置已被占用(即已存储对象)。

s14,若接收到为新增存储对象分配存储空间的指令,根据所述空闲存储单元为所述新增存储对象分配存储空间。

上述新增存储对象是申请在目标存储空间进行存储的存储对象。

由于已经在键值数据库中保存了目标存储空间中已存储的存储单元,以及空闲存储单元,因此可以从键值数据库中直接获得空闲存储单元的信息(如空闲存储单元的编号或者地址),而无需一一查找哪些存储单元为空。

在为新增存储对象分配存储单元时,可以将任意空闲的存储单元分配给新增存储对象。

同时,在将某一个或者多个存储空间分配给新增存储对象之后,可以将新增存储对象以及为其分配的存储单元保存在键值数据库中。

优选的,若接收到存储文件的指令或者接收到运行程序时新建对象的指令,触发为新增存储对象分配存储空间的指令。

由于当要保存文件,或者是运行程序新建对象时,可能需要开辟新的存储空间进行存储。因此,此时为新增存储对象分配存储空间的指令,从而为需要存储的对象分配存储空间。

可选的,在本发明另一实施例中,所述根据所述空闲存储单元为所述新增存储对象分配存储空间,包括:

获取所述新增存储对象的大小以及所述目标存储空间中每个存储单元的大小;

根据所述新增存储对象的大小以及所述目标存储空间中每个存储单元的大小计算待存储单元数量;

根据所述待存储单元数量从所述空闲存储单元中为所述新增存储对象分配连续的存储单元。

上述每个存储单元的大小具体可以是目标存储空间进行空间管理的基本单元的存储单元的大小。因此,根据新增存储对象的大小可以计算存储该新增存储对象一共需要多少个存储单元。

例如,新增存储对象的大小为5mb,目标存储之中每个存储单元的大小为1mb,则存储该新增存储对象需要5个存储单元,即待存储单元数量为5。

在进行存储单元的分配时,可以将连续编号的空闲存储单元分配给新增存储对象。

例如,空闲存储单元的编号为20至30,则在分配时,可以将编号为20至25的存储单元分配给新增存储对象进行存储。

在本实施例中,为新增存储对象分配连续的存储单元有利于提高数据存储和读取的效率。

可选的,在本发明另一实施例中,所述方法还包括:

若检测到所述目标存储中存在已存储对象被释放,在所述键值数据库中更新已释放的存储对象的信息。

其中,存储对象被释放包括存储对象从当前存储位置移除、从目标存储空间中删除。

例如,已存储对象的对象名称为a,a所占用的存储单元的编号为(1,5,8),若检测到已存储对象a被释放之后,将键值数据库中保存的a->(1,5,8)信息删除。

在本实施例中,在已使用的存储空间的存储对象被释放之后,对键值数据库中的信息进行更新,使得键值数据库中始终保存最新的信息,有利于提高获取到的目标存储空间之中存储信息的真实性。

本发明提供的存储对象的空间管理方法通过接收空间管理指令,获取所述空间管理指令指示管理的目标存储空间;获取所述目标存储空间中的已存储对象、所述已存储对象的存储单元以及空闲存储单元;在键值数据库中保存所述已存储对象、所述已存储对象的存储单元以及所述空闲存储单元;若接收到为新增存储对象分配存储空间的指令,根据所述空闲存储单元为所述新增存储对象分配存储空间。由于将目标存储空间中的存储对象都保存在键值数据库中,由于键值数据库具有查找迅速的特点,所以,可以快速的获取已存储对象的存储空间信息,实现提高获取存储对象的存储空间信息的速度的目的。并且,根据键值数据库能快速获取目标存储空间中的空闲存储单元,所以分配存储空间时,能快速准确的分配存储空间,实现及时的对新增的存储对象进行存储空间分配的目的。

同时,本发明无需将存储对象的存储空间信息记录在内存或硬盘中,不会占用过多内存,避免降低系统性能。

如图2所示,图2为本发明实施例提供的存储对象的空间管理装置的功能模块图。所述存储对象的空间管理装置包括第一获取模块210、第二获取模块220、保存模块230、和分配模块240。本发明所称的模块是指一种能够被计算机装置的处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在计算机装置的存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。

第一获取模块210,用于接收空间管理指令,获取所述空间管理指令指示管理的目标存储空间。

本发明所述的装置可用于存储空间中对存储对象进行管理。具体的,对存储对象进行管理包括但不限于对存储对象的存储空间信息(也称为地址空间信息)进行保存和为存储对象分配存储空间。

上述目标存储空间是可以进行数据存储的虚拟存储空间或者物理存储空间,例如上述目标存储空间可以为一个或多个磁盘。

第二获取模块220,用于获取所述目标存储空间中的已存储对象、所述已存储对象的存储单元以及空闲存储单元。

其中,获取目标存储空间中的已存储对象可以是获取已存储对象在目标存储空间中已存储对象的名称,或者已存储对象的大小等信息。

上述获取已存储对象的存储空间具体可以是获取已存储对象在目标存储空间中所存储的存储地址。

上述空闲存储单元是目标存储空间中没有存放存储对象的存储单元。

获取空闲存储单元具体可以是获取目标存储空间中的没有存放存储对象,且可进行对象存储的存储单元的地址。

通常,对于一个目标存储空间可以划分为若干存储单元,已存储对象可以根据其大小占用一个或多个存储单元。

可选的,在本发明另一实施例中,所述第二获取模块具体用于包括:将所述目标存储空间包含的存储单元进行编号;获取所述目标存储空间中已存储对象、所述已存储对象的存储单元的编号以及空闲存储单元的编号;

上述存储单元,是目标存储空间中所包括的存储单元。

上述编号可以是数字、字母等形式的编号,用于对每个存储单元进行标识。

则在对目标存储空间包含的存储单元进行编号之后,获取目标存储空间中已存储对象、所述已存储对象的存储单元的编号以及空闲存储单元的编号。

可选的,在本发明另一实施例中,所述装置还包括:划分模块。划分模块用于对目标存储空间中的存储单元进行划分。

具体的,划分模块可用于:

获取所述目标存储空间的大小,确定所述目标存储空间进行空间管理的基本单元;

根据所述目标存储空间进行空间管理的基本单元将所述目标存储空间划分为若干存储单元。

上述获取目标存储空间的大小具体可以是获取目标存储空间的总容量。

上述目标存储空间进行空间管理的基本单元,具体可以是对目标存储空间进行分配、存储等操作时的最小操作单元。

上述目标存储空间进行空间管理的基本单元可以为预设单元,例如,目标存储空间进行空间管理的基本单元为1mb。

上述根据目标存储空间进行空间管理的基本单元将目标存储空间划分为若干存储单元具体是:将目标存储空间划分为若干个存储单元,每个存储单元的大小等于目标存储空间进行空间管理的基本单元。

例如,目标存储空间为一块磁盘,该磁盘的大小为1gb。若该磁盘进行空间管理的基本单元为1mb,则将该磁盘划分为1024个存储单元。

又比如,目标存储空间为一块磁盘,该磁盘的大小为500mb。若该磁盘进行空间存储的基本单元为5mb,则将该磁盘划分为100个存储单元。

则上述将目标存储空间包含的存储单元进行编号可以是对划分后的每个存储单元赋予一个编号。

进一步地,所述划分模块确定所述目标存储空间进行空间管理的基本单元可包括:

获取所述目标存储空间的目标存储对象的大小;

根据所述目标存储空间的目标存储对象的大小确定所述目标存储空间进行空间管理的基本单元。

上述目标存储对象可以是将要存储在目标存储空间的存储对象。

例如,目标存储对象都为10m以上的数据,则目标存储空间进行空间管理的基本单元可以确定为10m。

在本实施例中,根据目标存储空间的目标存储对象的大小进行基本单元的划分,避免将目标存储空间进行空间管理的基本单元划分的过大或者过小,有利于进行空间管理。

保存模块230,用于在键值数据库中保存所述已存储对象、所述已存储对象的存储单元以及所述空闲存储单元。

其中,键值数据库,也称为kv(key-value)存储数据库。kv数据库是一种非关系型数据库,键值数据库中的数据按照键值对的形式进行组织、索引和存储。

具体的,可以在键值数据库中记录已存储对象的对象名称,以及已存储对象的存储地址。

由于已存储对象和已存储对象的存储单元是一种一一对应的数据组织形式,因此使用键值数据库进行保存,符合要保存的数据的组织形式。在通过kv数据库进行存储以后,也可以快速的从kv数据库中进行查找。

通过键值数据库对目标存储空间中的已存储对象、已存储对象的存储单元以及空闲存储单元进行保存,不需要在内存中记录,为内存释放了更多的资源,也不需要频繁的去内存中进行查询,提高了系统的性能。并且,根据键值数据库存储数据的特点以及快速查找的特点,可以快速的访问键值数据库中的信息,从而可以快速的获取到目标存储空间中哪些存储单元被占用,哪些存储单元未被占用。

可选的,所述键值数据库为leveldb或者rocksdb。

其中,上述leveldb是一种开源的键值数据库,因此在实际应用中更容易获得,使用leveldb具有低成本高效率的优点。

在leveldb中,key和value都可以是任意长度的字节数组。并且,可以按照key的字典顺序存储,也可以按照其他自定义的顺序存储。在leveldb数据库中,也可以快读的进行数据查找。

在rocksdb中,key和value都可以是任意长度的字节数组。并且,rocksdb支持高效的查找和范围搜索,支持高负载的随机读、高负载的更新操作或两者的结合。因此,使用rocksdb能支持对于目标存储空间中的存储空间信息的快速读写。

同时,若第二获取模块具体用于:将所述目标存储空间包含的存储单元进行编号;获取所述目标存储空间中已存储对象、所述已存储对象的存储单元的编号以及空闲存储单元的编号;

则保存模块230具体用于:在键值数据库中保存所述已存储对象、所述已存储对象的存储单元的编号以及所述空闲存储单元的编号。

例如,已存储对象的对象名称为a,a所占用的存储单元的编号为(1,5,8),则将a以及其所占用的存储单元的编号通过key-value的形式保存在键值数据库中,具体的,在键值数据库中可以保存为a->(1,5,8)。并且,保存其他编号的存储单元的存储对象为空。

同时,也可以在kv数据库中保存一个bitmap,通过bitmap记录每个存储单元是否已经存储了存储对象。

具体的,bitmap是一种数据结构,在bitmap中,每一位可以置为0或者1,用来表示一个含义。例如,在kv数据库中保存一个bitmap,其中0表示该位置未被占用(即没有存储任何对象),其中1表示该位置已被占用(即已存储对象)。

分配模块240,用于若接收到为新增存储对象分配存储空间的指令,根据所述空闲存储单元为所述新增存储对象分配存储空间。

上述新增存储对象是申请在目标存储空间进行存储的存储对象。

由于已经在键值数据库中保存了目标存储空间中已存储的存储单元,以及空闲存储单元,因此可以从键值数据库中直接获得空闲存储单元的信息(如空闲存储单元的编号或者地址),而无需一一查找哪些存储单元为空。

在为新增存储对象分配存储单元时,可以将任意空闲的存储单元分配给新增存储对象。

同时,在将某一个或者多个存储空间分配给新增存储对象之后,可以将新增存储对象以及为其分配的存储单元保存在键值数据库中。

优选的,若接收到存储文件的指令或者接收到运行程序时新建对象的指令,触发为新增存储对象分配存储空间的指令。

由于当要保存文件,或者是运行程序新建对象时,可能需要开辟新的存储空间进行存储。因此,此时为新增存储对象分配存储空间的指令,从而为需要存储的对象分配存储空间。

可选的,在本发明另一实施例中,所述分配模块根据所述空闲存储单元为所述新增存储对象分配存储空间,包括:

获取所述新增存储对象的大小以及所述目标存储空间中每个存储单元的大小;

根据所述新增存储对象的大小以及所述目标存储空间中每个存储单元的大小计算待存储单元数量;

根据所述待存储单元数量从所述空闲存储单元中为所述新增存储对象分配连续的存储单元。

上述每个存储单元的大小具体可以是目标存储空间进行空间管理的基本单元的存储单元的大小。因此,根据新增存储对象的大小可以计算存储该新增存储对象一共需要多少个存储单元。

例如,新增存储对象的大小为5mb,目标存储之中每个存储单元的大小为1mb,则存储该新增存储对象需要5个存储单元,即待存储单元数量为5。

在进行存储单元的分配时,可以将连续编号的空闲存储单元分配给新增存储对象。

例如,空闲存储单元的编号为20至30,则在分配时,可以将编号为20至25的存储单元分配给新增存储对象进行存储。

在本实施例中,为新增存储对象分配连续的存储单元有利于提高数据存储和读取的效率。

可选的,在本发明另一实施例中,所述装置还包括更新模块,所述更新模块还用于:

若检测到所述目标存储中存在已存储对象被释放,在所述键值数据库中更新已释放的存储对象的信息。

其中,存储对象被释放包括存储对象从当前存储位置移除、从目标存储空间中删除。

例如,已存储对象的对象名称为a,a所占用的存储单元的编号为(1,5,8),若检测到已存储对象a被释放之后,将键值数据库中保存的a->(1,5,8)信息删除。

在本实施例中,在已使用的存储空间的存储对象被释放之后,对键值数据库中的信息进行更新,使得键值数据库中始终保存最新的信息,有利于提高获取到的目标存储空间之中存储信息的真实性。

本发明提供的存储对象的空间管理装置通过第一获取模块接收空间管理指令,获取所述空间管理指令指示管理的目标存储空间;第二获取模块获取所述目标存储空间中的已存储对象、所述已存储对象的存储单元以及空闲存储单元;保存模块在键值数据库中保存所述已存储对象、所述已存储对象的存储单元以及所述空闲存储单元;若接收到为新增存储对象分配存储空间的指令,分配模块根据所述空闲存储单元为所述新增存储对象分配存储空间。由于将目标存储空间中的存储对象都保存在键值数据库中,由于键值数据库具有查找迅速的特点,所以,可以快速的获取已存储对象的存储空间信息,实现提高获取存储对象的存储空间信息的速度的目的。并且,根据键值数据库能快速获取目标存储空间中的空闲存储单元,所以分配存储空间时,能快速准确的分配存储空间,实现及时的对新增的存储对象进行存储空间分配的目的。

同时,本发明无需将存储对象的存储空间信息记录在内存或硬盘中,不会占用过多内存,避免降低系统性能。

上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。

如图3所示,图3是本发明实现存储对象的空间管理方法的较佳实施例的计算机装置的结构示意图。所述计算机装置包括至少一个发送装置31、至少一个存储器32、至少一个处理器33、至少一个接收装置34以及至少一个通信总线。其中,所述通信总线用于实现这些组件之间的连接通信。

所述计算机装置是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。所述计算机装置还可包括网络设备和/或用户设备。其中,所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloudcomputing)的由大量主机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。

所述计算机装置可以是,但不限于任何一种可与用户通过键盘、触摸板或声控设备等方式进行人机交互的电子产品,例如,平板电脑、智能手机、监控设备等终端。

所述计算机装置所处的网络包括,但不限于互联网、广域网、城域网、局域网、虚拟专用网络(virtualprivatenetwork,vpn)等。

其中,所述接收装置34和所述发送装置31可以是有线发送端口,也可以为无线设备,例如包括天线装置,用于与其他设备进行数据通信。

所述存储器32用于存储程序代码。所述存储器32可以是集成电路中没有实物形式的具有存储功能的电路,如ram(random-accessmemory,随机存取存储器)、fifo(firstinfirstout,先进先出存储器)等。或者,所述存储器32也可以是具有实物形式的存储器,如内存条、tf卡(trans-flashcard)、智能媒体卡(smartmediacard)、安全数字卡(securedigitalcard)、快闪存储器卡(flashcard)等储存设备等等。

所述处理器33可以包括一个或者多个微处理器、数字处理器。所述处理器33可调用存储器32中存储的程序代码以执行相关的功能。例如,图3中所述的各个单元是存储在所述存储器32中的程序代码,并由所述处理器33所执行,以实现一种存储对象的空间管理方法。所述处理器33又称中央处理器(cpu,centralprocessingunit),是一块超大规模的集成电路,是运算核心(core)和控制核心(controlunit)。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

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