存储空间回收方法及装置
技术领域
本发明涉及存储技术,尤其涉及一种存储空间回收方法及装置。
背景技术
随着信息科学和技术的不断发展、因特网的广泛应用、云计算的不断普及,需要存储的数据量以令人难以置信的速度迅猛增长,存储***的设计逐渐成为应用***设计需要考虑的问题。业务的***式和不确定性增长给存储***的管理和规划带来了巨大的挑战,对存储***资源的合理分配和利用也提出了更高的要求。
自动精简配置技术是从传统的空间分配方式直接演化而来的一种存储虚拟化技术,它将所有存储空间汇集到精简池(Pool)中进行统一管理,按照固定大小的存储区域(Zone)将空间分块,最终精简池管理的存储区域按需分配给精简卷(Thin LUN)以供业务***使用。
对于自动精简配置技术来说,回收闲置空间是比准确分配空间更难实现的技术。现有技术中提供一种空间回收的方法:精简卷接收到释放空间命令后,会以数据块(Chunk)为单位释放空间。存储区域中包括多个数据块。释放的数据块有可能会分布在不同的存储区域中,存储区域中可能一部分数据块已释放,一部分没有释放。而部分释放的存储区域不能够被精简池回收,只有存储区域中的所有数据块都被释放之后,存储区域变成了完全释放的存储区域,才能被精简池回收。为了将部分释放的存储区域回收至精简池,需要进行数据迁移,将部分释放的存储区域上没有释放的数据块迁移到其它存储区域中上,以使该部分释放的存储区域就变成了完全释放的存储区域,并被精简池回收,以再次分配给精简卷。
上述空间回收方法能够将释放的离散空间回收回精简池。但是,将已释放的离散的存储空间进行迁移会消耗***资源,尤其是如果上层应用在频繁进行数据的写入和空间释放,会导致后台任务频繁进行数据迁移,消耗掉***大量资源,影响到正常业务。
发明内容
本发明实施例提供一种存储空间回收方法及装置,以实现已释放的存储空间的快速回收,提高存储空间回收的效率,降低资源消耗。
本发明实施例提供一种存储空间回收方法,包括:
根据接收到的空间释放指令中携带的释放空间信息,生成待添加的至少一个节点,其中,所述节点用以指示一段连续的存储空间的起始地址和所述存储空间包括的数据块的数量;
将待添加的各所述节点分别添加到回收树中,其中,所述回收树包括至少一个所述节点。
本发明实施例提供一种存储空间回收装置,包括:
节点生成模块,用于根据接收到的空间释放指令中携带的释放空间信息,生成待添加的至少一个节点,其中,所述节点用以指示一段连续的存储空间的起始地址和所述存储空间包括的数据块的数量;
节点添加模块,用于将待添加的各所述节点分别添加到回收树中,其中,所述回收树包括至少一个所述节点。
由上述技术方案可知,本发明实施例提供的存储空间回收方法及装置,根据空间释放指令中携带的释放空间信息生成待添加的至少一个节点,将待添加的各节点分别添加到回收树中。通过回收树的设置,实现了对离散的存储空间进行管理,避免了将已释放的离散的存储空间进行迁移带来的***资源消耗、影响正常IO性能的缺陷,当上层应用在频繁进行数据写入和空间释放时,也不会因后台任务频繁地进行数据迁移而影响正常业务。实现了已释放的存储空间的快速回收,提高了存储空间回收的效率,降低了资源消耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的存储空间回收方法流程图;
图2为本发明实施例二提供的存储空间回收方法流程图;
图3为本发明实施例二提供的一种回收树结构示意图;
图4为本发明实施例二提供的另一种回收树结构示意图;
图5为本发明实施例二提供的再一种回收树结构示意图;
图6为本发明实施例二提供的又一种回收树结构示意图;
图7为本发明实施例三提供的存储空间回收装置结构示意图;
图8为本发明实施例四提供的存储空间回收装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1为本发明实施例一提供的存储空间回收方法流程图。如图1所示,本实施例提供的存储空间回收方法具体可以应用于存储***对存储空间的回收过程,可以通过存储空间回收装置来执行。该存储空间回收装置可以通过软件和/或硬件的方式来实现。该存储空间回收装置可以集成在存储***的控制器中,也可以单独设置,不以本实施例为限。
本实施例提供的存储空间回收方法具体包括:
步骤10、根据接收到的空间释放指令中携带的释放空间信息,生成待添加的至少一个节点,其中,节点用以指示一段连续的存储空间的起始地址和存储空间包括的数据块的数量;
具体地,空间释放指令可以为业务***发送的。业务***在其业务处理过程中需要一定的存储空间,该存储空间从存储***中申请获取。当该业务处理完毕后,需要将该存储空间释放时,生成该空间释放指令。该空间释放指令中携带有释放的存储空间对应的释放空间信息,释放空间信息具体用以指示该存储空间的起始地址和大小等信息。通常在存储空间的释放过程中,以数据块为单位进行。释放的存储空间可以为离散的多个存储空间,每个连续的存储空间中包含的至少一个数据块,当该存储空间中包含有多个数据块时,各数据块是连续的。
节点用以指示一段连续的存储空间的起始地址和存储空间包括的数据块的数量,若在存储***中预先对数据块进行编号,则每个数据块对应于一个唯一的标识。则可以将节点表示为E(a,b),其中,a表示该连续的存储空间中起始的数据块的标识,b表示该连续的存储空间中所包括的数据块的数量。根据空间释放指令中携带的释放空间信息生成待添加的至少一个节点,即若释放的存储空间为多个离散的存储空间时,可以相应地生成多个节点,以分别指示每个连续的存储空间。
步骤20、将待添加的各节点分别添加到回收树中,其中,回收树包括至少一个节点。
具体地,回收树可以为预先生成的、包含有至少一个节点的集合。将生成的节点添加到回收树中,以对已释放的离散的存储空间进行管理。当业务***中有新的业务需要存储空间时,可以将回收树中的存储空间分配给该业务。
本实施例提供的存储空间回收方法,应用在自动精简配置技术中,根据空间释放指令中携带的释放空间信息生成待添加的至少一个节点,将待添加的各节点分别添加到回收树中。通过回收树的设置,通过回收树中的节点对连续的存储空间进行管理,当存在已释放的存储空间时,根据空间释放指令中携带的释放空间信息生成待添加的至少一个节点,并将该生成的至少一个节点添加到回收树中,实现了对离散的存储空间的管理,避免了将已释放的离散的存储空间进行迁移带来的***资源消耗。尤其是当上层应用在频繁进行数据写入和空间释放时,通过本实施例提供的存储空间回收方法实现对已释放的存储空间的快速回收,不会因后台任务频繁地进行数据迁移而影响正常业务,提高了存储空间回收的效率,降低了资源消耗。
实施例二
图2为本发明实施例二提供的存储空间回收方法流程图。如图2所示,本实施例提供的存储空间回收方法在实施例一的基础上,对于每个待添加的节点,步骤20,将待添加的节点添加到回收树中,具体可以包括如下步骤:
步骤201、若回收树中不存在与待添加的节点连续的节点,则将待添加的节点添加到回收树中。
具体地,回收树可以采用B树形式,如图3所示。值得注意的是,本实施例只是提供了一种回收树的表示形式,回收树也可以采用其他形式,可以实现对存储空间的管理即可,不以本实施例为限。
如图3所示的回收树中已存在五个节点,分别为E(20,5)、E(10,5)、E(36,4)、E(0,5)和E(30,5)。具体对回收树的各节点进行查询,以获取对回收树中各节点所指示的存储空间的具体信息。
假设待添加的节点为E(50,1),回收树中不存在与该节点连续的节点,则将该节点添加到回收树中,如图4所示。
在本实施例中,对于每个待添加的节点,步骤20,将待添加的节点添加到回收树中,具体还可以包括如下步骤:
步骤202、若回收树中存在与待添加的节点连续的节点,则根据待添加的节点和与待添加的节点连续的节点生成第一新节点,将第一新节点添加到回收树中,将与待添加的节点连续的节点从回收树中删除。
假设待添加的节点为E(15,1),回收树中存在与该节点连续的节点E(10,5),则可以根据节点E(15,1)和节点E(10,5)生成第一新节点E(10,6),并将回收树中的节点E(10,5)删除。回收树中不存在与该第一新节点E(10,6)连续的节点,则将该第一新节点E(10,6)添加到回收树中,如图5所示。通过将待添加的节点和与该待添加的节点连续的节点的合并处理,可以精简回收树,实现存储空间的实时整合。
再假设待添加的节点为E(35,1),回收树中存在与该节点连续的节点E(30,5)和E(36,4),则可以根据节点E(35,1)、E(36,4)与节点E(30,5)生成第一新节点E(30,10),将该第二新节点E(30,10)添加到回收树中,并将回收树中的节点E(30,5)和E(36,4)删除,如图6所示。
在本实施例中,该存储空间回收方法具体还可以包括如下步骤:
步骤30、若回收树的节点中包含有与预设存储区域的起始地址相同的数据块,且与预设存储区域起始地址相同的数据块为首的连续的数据块所形成的存储空间的容量达到存储区域容量,则确定待回收存储区域并回收;
存储***可以预先将磁盘划分为多个存储区域即为预设存储区域,各预设存储区域的存储区域容量和起始地址为预先设置的,每个预设存储区域中包含的数据块的数量也为预先设置的。例如,每个预设存储区域包含10个数据块,即10个连续的数据块就可以形成一个预设存储区域。
如上述实施例中节点为E(30,10),标识为30的数据块的起始地址与一个存储区域的起始地址相同,且以标识为30为首的连续的数据块的数量为10,即该连续的10个数据块所形成的存储空间的容量达到存储区域容量,则可以确定一个待回收存储区域并回收,具体可以将该待回收存储区域回收到精简池中。
在本实施例中,步骤30中的确定待回收存储区域并回收之后,具体还可以包括如下步骤:
步骤40、若用于确定待回收存储区域的节点中,除去待回收存储区域对应的数据块,不存在剩余的数据块,则将用于确定待回收存储区域的节点从回收树中删除;
如上述节点E(30,10),该节点中除去待回收存储区域对应的10个数据块后,不存在剩余的数据块,则将该节点E(30,10)从回收树中删除。
步骤50、若用于确定待回收存储区域的节点中,除去待回收存储区域对应的数据块还存在剩余的数据块,则根据剩余的数据块生成至少一个第二新节点,将用于确定待回收存储区域的节点从回收树中删除,将各第二新节点分别添加到回收树中。
若用于确定待回收存储区域的节点中除去待回收存储区域对应的数据块还存在剩余的数据块,如回收树中存在节点E(30,15),该节点中的标识为32的数据块的起始地址与一个存储区域的其实地址相同,且以标识为32为首的连续的数据块的数量为10,该连续的10个数据块所形成的存储空间的容量达到存储区域容量,则该连续的10个数据块可以形成一个待回收存储区域并回收。节点E(30,15)中除去用以该待回收存储区域对应的10个数据块后还剩下标识为30、31、42、43和44的5个数据块。其中标识为30和31的两个数据块连续,标识为42、43和44的三个数据块连续。则可以生成两个第二新节点,分别为E(30,2)和E(42,3),将节点E(30,15)从回收树中删除,将两个第二节点E(30,2)和E(42,3)分别添加到回收树中。
通过存储区域的生成及回收,可以适应存储***的精简池对存储区域的管理,提高了***的适应性。
在本实施例中,该存储空间回收方法具体还可以包括如下步骤:
步骤60、当接收到空间申请请求时,若待分配的存储区域的数量低于预设阈值,则将回收树中节点对应的存储空间分配给空间申请请求对应的业务。
具体地,业务***在进行业务处理时需要一定的存储空间,则该业务***向存储***发送IO请求,当接收到该IO请求时,首先将精简卷上的存储空间分配给业务,若精简卷上的存储空间不足,则可以生成并发送该空间申请请求。当接收到该空间申请请求时,首先将精简池中的存储区域进行分配,若精简池中待分配的存储区域的数量低于预设阈值,则将回收树中节点对应的存储空间分配给空间申请请求对应的业务。该存储空间的分配方式灵活易于实现,可以有效地利用离散的存储空间。
在实际的存储空间回收过程中,回收树也需要占用一定的存储空间。回收树所需存储空间的申请及回收过程也可以通过本实施例提供的存储空间的回收和分配方法来实现。
实施例三
图7为本发明实施例三提供的存储空间回收装置结构示意图。如图7所示,本实施例提供的存储空间回收装置具体可以实现本发明任意实施例提供的存储空间回收方法的各个步骤,此不再赘述。
本实施例提供的存储空间回收装置具体包括节点生成模块11和节点添加模块12。节点生成模块11用于根据接收到的空间释放指令中携带的释放空间信息,生成待添加的至少一个节点,其中,节点用以指示一段连续的存储空间的起始地址和存储空间包括的数据块的数量。节点添加模块12用于将待添加的各节点分别添加到回收树13中,其中,回收树13包括至少一个节点。
本实施例提供的存储空间回收装置,节点生成模块11根据接收到的空间释放指令中携带的释放空间信息生成待添加的至少一个节点,节点添加模块12将待添加的各节点分别添加到回收树13中。通过回收树13的设置,通过回收树13中的节点对连续的存储空间进行管理,当存在已释放的存储空间时,根据空间释放指令中携带的释放空间信息生成待添加的至少一个节点,并将该生成的至少一个节点添加到回收树13中,实现了对离散的存储空间的管理,避免了将已释放的离散的存储空间进行迁移带来的***资源消耗。尤其是当上层应用在频繁进行数据写入和空间释放时,通过本实施例提供的存储空间回收装置实现对已释放的存储空间的快速回收,不会因后台任务频繁地进行数据迁移而影响正常业务,提高了存储空间回收的效率,降低了资源消耗。
实施例四
图8为本发明实施例四提供的存储空间回收装置结构示意图。如图8所示,在本实施例中,节点添加模块12具体可以包括第一处理单元121。第一处理单元121用于若回收树13中不存在与待添加的节点连续的节点,则将待添加的节点添加到回收树13中。
在本实施例中,节点添加模块12还可以包括第二处理单元122。第二处理单元122用于若回收树13中存在与待添加的节点连续的节点,则根据待添加的节点和与待添加的节点连续的节点生成第一新节点,将第一新节点添加到回收树13中,将与待添加的节点连续的节点从回收树13中删除。通过第二处理单元122的设置,将待添加的节点和与该待添加的节点连续的节点的合并处理,可以精简回收树13,实现存储空间的实时整合。
在本实施例中,该存储空间回收装置具体还可以包括回收模块14、第一处理模块15和第二处理模块16。回收模块14用于若回收树13的节点中包含有与预设存储区域的起始地址相同的数据块,且与预设存储区域起始地址相同的数据块为首的连续的数据块所形成的存储空间的容量达到存储区域容量,则确定待回收存储区域并回收。第一处理模块15用于若用于确定待回收存储区域的节点中,除去待回收存储区域对应的数据块,不存在剩余的数据块,则将用于确定待回收存储区域的节点从回收树13中删除。第二处理模块16用于若用于确定待回收存储区域的节点中,除去待回收存储区域对应的数据块还存在剩余的数据块,则根据剩余的数据块生成至少一个第二新节点,将用于确定待回收存储区域的节点从回收树13中删除,将各第二新节点分别添加到回收树13中。通过回收模块14的设置,可以实现存储区域的生成及回收,可以适应存储***的精简池对存储区域的管理,提高了***的适应性。
在本实施例中,该存储空间回收装置具体还可以包括空间分配模块17。空间分配模块17用于当接收到空间申请请求时,若待分配的存储区域的数量低于预设阈值,则将回收树13中节点对应的存储空间分配给空间申请请求对应的业务。
本发明实施例提供的存储空间回收方法及装置,通过回收树的设置,通过回收树中的节点对连续的存储空间进行管理,当存在已释放的存储空间时,根据空间释放指令中携带的释放空间信息生成待添加的至少一个节点,并将该生成的至少一个节点添加到回收树中,实现了对离散的存储空间的管理。避免了将已释放的离散的存储空间进行迁移带来的***资源消耗。尤其是当上层应用在频繁进行数据写入和空间释放时,不会因后台任务频繁地进行数据迁移而影响正常业务,提高了存储空间回收的效率,降低了资源消耗。本发明实施例中,提出了一种变长的物理存储空间管理方法,该方法还可以扩展应用到精简池的存储空间的分配和回收过程中。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。