一种存储空间回收方法及装置与流程

文档序号:19250468发布日期:2019-11-27 20:09阅读:262来源:国知局
一种存储空间回收方法及装置与流程

本发明涉数据处理技术领域,尤其涉及一种存储空间回收方法及装置。



背景技术:

随着科学技术的发展,操作系统的程序代码或重要数据的不断增多,对存储系统的空间需求也越来越大。

目前,常通过nand型flash全闪存储系统来存储操作系统的程序代码或重要数据。由于全闪存储系统中磁盘不断分配,导致全闪存储系统后端磁盘介质即固态硬盘(solidstatedrive,ssd)中所有的空闲数据块全被使用,再有有效数据块写入时,ssd开始读取无效数据块,先擦除或迁移磁盘中存在的无效数据块,再写入新的数据块。通过以上的方式来实现存储空间的反复利用。但是,采用这样的方式易导致全闪存储系统的性能下降,且造成全闪存储系统的io读写效率降低。

因此,如何提高全闪存储系统的性能及全闪存储系统的io读写效率,是本发明亟待解决的问题。



技术实现要素:

有鉴于此,本发明实施例提供一种存储空间回收方法及装置,以解决现有技术中全闪存储系统的性能下降及全闪存储系统的io读写效率降低的问题。

为实现上述目的,本发明实施例提供如下技术方案:

本发明实施例一方面公开了一种存储空间回收方法,所述方法包括:

解析主机端的连接主机和外围设备接口协议中的空间回收命令,并将解析后的空间回收命令转化为空间回收io数据;

查找精简卷中与所述空间回收io数据对应的待清除数据块的逻辑区块地址,并将所述精简卷中与空间回收io数据对应的逻辑区块地址删除;

下发清除命令到固态硬盘,基于所述清除命令擦除固态硬盘上对应所述空间回收命令的待清除数据块,所述待清除数据块中存储待清除数据。

可选的,在解析主机端的连接主机和外围设备接口协议中的空间回收命令,并将解析后的空间回收命令转化为空间回收io数据之后,还包括:

通过操作码对所述空间回收io数据进行标识;

根据所述空间回收io数据的数据结构,在双控制器的缓存中查找与空间回收io数据对应的待清除数据块,所述双控制器包括主控制器和镜像控制器;

按照预设规则对所述待清除数据块进行切块,得到n个子数据块,n为大于等于1的整数;

基于所述操作码清除所述双控制器的缓存中的n个子数据块。

可选的,按照预设规则对所述待清除数据块进行切块,得到n个子数据块,包括:

获取待清除数据块的大小;

根据所述待清理数据块对应的带宽与协议队列深度的比值,确定可处理的空间命令io数据对应的数据块的大小;

基于所述可处理的空间命令io对应的数据块的大小,将所述待清理数据块切块,得到n个子数据块,n为大于等于1的整数。

可选的,所述基于所述操作码清除所述双控制器的缓存中的n个子数据块,包括:

当所述主控制器接收到所述空间回收命令,基于所述操作码清除所述主控制器的缓存中的n个子数据块;

将所述空间回收命令同步至镜像控制器,基于所述操作码清除镜像控制器的缓存中的n个子数据块进行清除。

可选的,还包括:

将所述待清除数据块的逻辑区块地址对应的元数据标记为删除;

擦除所述标识为删除的元数据对应的物理区块地址,以及所述标记为删除的元数据。

本发明实施例另一方面公开了一种存储空间回收装置,所述装置包括:

协议解析模块,用于解析主机端的连接主机和外围设备接口协议中的空间回收命令,并将解析后的空间回收命令转化为空间回收io数据;

自动精简配置模块,用于查找精简卷中与所述空间回收io数据对应的待清除数据的逻辑区块地址,并将所述精简卷中与空间回收io数据对应的逻辑区块地址删除;

空间回收模块,用于下发清除命令到固态硬盘,基于所述清除命令擦除固态硬盘上对应所述空间回收命令的待清除数据块,所述待清除数据块中存储待清除数据。

可选的,还包括:

标识模块,用于通过操作码对所述空间回收io数据进行标识;

查找模块,用于根据所述空间回收io数据的数据结构,在双控制器的缓存中查找与空间回收io数据对应的待清除数据块,所述双控制器包括主控制器和镜像控制器;

切块模块,用于按照预设规则对所述待清除数据块进行切块,得到n个子数据块,n为大于等于1的整数;缓存清除模块,用于基于所述操作码清除双控制器的缓存中的n个子数据块。

可选的,所述切块模块包括:

获取模块,用于获取待清除数据块的大小;

确定模块,用于根据所述待清理数据块对应的带宽与协议队列深度的比值,确定可处理的空间命令io数据对应的数据块的大小;

切块子模块,用于基于所述可处理的空间命令io数据对应的数据块的大小,将所述待清理数据块切块,得到n个子数据块,n为大于等于1的整数。

可选的,所述缓存清除模块包括:

第一缓存清除子模块,用于当所述主控制器接收到所述空间回收命令,基于所述操作码清除所述主控制器的缓存中的n个子数据块;

第二缓存清除子模块,用于将所述空间回收命令同步至镜像控制器,基于所述操作码清除镜像控制器的缓存中的n个子数据块。

可选的,还包括:

标记模块,用于将所述待清除数据块的逻辑区块地址对应的元数据标记为删除;

擦除模块,用于擦除所述标识为删除的元数据对应的物理区块地址,以及所述标记为删除的元数据。

基于上述本发明实施例提供的存储空间回收方法及装置,该方法包括:解析主机端的连接主机和外围设备接口协议中的空间回收命令,并将解析后的空间回收命令转化为空间回收io数据。接着查找精简卷中与空间回收io数据对应的待清除数据的逻辑区块地址,并将精简卷中与空间回收io数据对应的逻辑区块地址删除。然后下发清除命令到固态硬盘,基于清除命令擦除固态硬盘上对应空间回收命令的待清除数据块。在本发明实施例中,通过删除精简卷中与空间回收io数据对应的待清除数据块的逻辑区块地址,以及擦除固态硬盘上对应空间回收命令的待清除数据块,能够实现全闪存储系统的空间回收,以提高全闪存储系统的性能及全闪存储系统的io读写效率。

附图说明

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

图1为本发明实施例提供的一种存储空间回收方法的流程示意图;

图2为本发明实施例提供的一种存储空间回收方法的流程示意图;

图3为本发明实施例提供的一种存储空间回收方法的流程示意图;

图4为本发明实施例提供的按照预设规则对待清除数据块切块的流程示意图;

图5为本发明实施例提供的一种存储空间回收装置的结构框图;

图6为本发明实施例提供的一种存储空间回收装置的结构框图;

图7为本发明实施例提供的一种存储空间回收装置的结构框图。

具体实施方式

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

在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

由上述背景技术可知,在全闪存储系统中,由于操作系统的程序代码或重要数据的不断增多,全闪存储系统中磁盘不断分配,导致全闪存储系统后端磁盘介质即固态硬盘(solidstatedrive,ssd)中所有的空闲数据块全被使用,再有无效数据块写入时,ssd开始读取无效数据块时,先擦除或迁移磁盘中存在的数据块,再写入新的数据块。通过以上的方式来实现存储空间的反复利用。但是,采用这样的方式易导致全闪存储系统的性能下降,且造成全闪存储系统的io读写效率降低。

因此,本发明实施例提供一种存储空间回收方法及装置,通过删除精简卷中与空间回收io数据对应的待清除数据块的逻辑区块地址,以及擦除固态硬盘上对应空间回收命令的待清除数据块,从而提高全闪存储系统的性能及全闪存储系统的io读写效率。

参见图1,为本发明实施例提供的一种存储空间回收方法的流程示意图,该方法包括以下步骤:

步骤s101:解析主机端的连接主机和外围设备接口协议中的空间回收命令,并将解析后的空间回收命令转化为空间回收io数据。

在具体实现步骤s101的过程中,解析主机端的连接主机和外围设备接口协议中的空间回收命令,可将所述空间回收命令转化成操作系统存储io栈上可识别的空间回收io数据。

需要说明的是,所述空间回收命令用于指示全闪存储系统的空间回收unmap功能。

步骤s102:查找精简卷中与所述空间回收io数据对应的待清除数据的逻辑区块地址,并将精简卷中与空间回收io数据对应的逻辑区块地址删除。

需要说明的是,所述精简卷为在全闪存储系统的精简池中允许按照实际写入数据所需的存储容量,自动精简配置相应存储空间的卷。

在具体实现步骤s102的过程中,遍历所述全闪存储系统的精简池中的精简卷,查找与空间回收io数据对应的待清除数据块的逻辑区块地址,自动精简配置的容量统计指令会将精简卷中与空间回收io数据对应的逻辑区块地址(logicalblockaddress,lba)统计,并删除。

需要说明的是,所述逻辑区块地址用于指示存储空间回收io对应的待清除数据块的卷的位置。

步骤s103:下发清除命令到固态硬盘,基于所述清除命令擦除固态硬盘上对应所述空间回收命令的待清除数据块。

在步骤s103中,所述待清除数据块中存储待清除数据。

需要说明的是,所述固态硬盘为全闪存储系统后端磁盘介质。

在具体实现步骤s103的过程中,向ssd下发清除trim命令,以了解ssd上所述空间回收命令的待清除数据块的相应页,并基于所述清除命令擦除固态硬盘上与所述空间回收命令对应的待清除数据的相应页。

需要说明的是,所述待清除数据块存储在n页的块中,n可设置为128。

在本发明实施例中,通过解析主机端的连接主机和外围设备接口协议中的空间回收命令,并将解析后的空间回收命令转化为空间回收io数据。接着查找精简卷中与空间回收io数据对应的待清除数据的逻辑区块地址,并将精简卷中与空间回收io数据对应的逻辑区块地址删除。然后下发清除命令到固态硬盘,基于清除命令擦除固态硬盘上对应空间回收命令的待清除数据块。在本方案中,通过删除精简卷中与空间回收io数据对应的待清除数据块的逻辑区块地址,以及擦除固态硬盘上对应空间回收命令的待清除数据块,能够实现全闪存储系统的空间回收,以提高全闪存储系统的性能及全闪存储系统的io读写效率。

基于上述本发明实施例图1示出的存储空间回收方法,在执行步骤s103下发清除命令到固态硬盘,基于所述清除命令擦除固态硬盘上对应所述空间回收命令的待清除数据块之后,结合图1,参考图2,所述存储空间回收方法还包括:

步骤s104:将所述待清除数据块的逻辑区块地址对应的元数据标记为删除。

需要说明的是,所述元数据用于维护待清除数据的逻辑区块地址与后端存储待清除数据的物理区块地址(physicsblockaddress,pba)的映射关系。

进一步,由于所述全闪存储系统中自动精简配置是随机配置数据存储空间的,所以全闪存储系统可通过元数据来管理写入的数据块。

步骤s105:擦除所述标识为删除的元数据对应的物理区块地址,以及所述标记为删除的元数据。

在步骤s105中,所述物理区块地址用于指示存储待清除数据块的卷在全闪存储系统的精简池中的坐标位置。

在具体实现步骤s105的过程中,异步至操作系统的后端,按照预先制定擦除策略,擦除所述标识为删除的元数据对应的物理区块地址,以及所述标记为删除的元数据。

需要说明的是,所述预先制定擦除策略的过程包括:

计算所述标识为删除的元数据对应的物理区块地址和所述标记为删除的元数据的擦除时间。

获取的全闪存储系统的存储压力,以及所述标识为删除的元数据对应的物理区块地址和所述标记为删除的元数据的使用率。

根据全闪存储系统的存储压力,所述标识为删除的元数据对应的物理区块地址和所述标记为删除的元数据的使用率,以及所述擦除时间,制定擦除策略。

在本发明实施例中,基于预先制定擦除策略的方式删除标识为删除的元数据对应的物理区块地址和标记为删除的元数据,能够避免影响主机端的正常读写,以实现在空闲时进行擦除操作,进一步提高全闪存储系统的存储空间的利用率以及全闪存储系统的使用性能。

基于上述本发明实施例图1和图2示出的存储空间回收方法,在执行步骤s101解析主机端的连接主机和外围设备接口协议中的空间回收命令,并将解析后的空间回收命令转化为空间回收io数据的具体实现过程之后,参考图3,所述存储空间回收方法还包括:

步骤s301:通过操作码对所述空间回收io数据进行标识。

需要说明的是,所述操作码是指对要执行操作的那一部分指令或字段进行规定。

在具体实现步骤s301的过程中,通过操作码对所述空间回收io数据进行标识,以告诉操作系统需要执行的空间回收io数据指令。

步骤s302:根据所述空间回收io数据的数据结构,在双控制器的缓存中查找与空间回收io数据对应的待清除数据块。

在步骤s302中,所述双控制器包括主控制器和镜像控制器。

需要说明的是,所述空间回收io数据的数据结构包括:逻辑单元标识号lunid,逻辑区块地址lba,长度length,偏移量offset。

进一步,需要说明的是,逻辑单元标识号(logicalunitnumberid,lunid),用于指示标识空间回收数据块io数据对应的数据块被写到那个精简卷。长度length,用于指示数据块对应的字符串长度。偏移量offset,用于指示空间回收数据块io数据对应的数据块写入精简卷时距离数据段起始地址的距离。

在具体实现步骤s302中,基于所述逻辑单元标识号、逻辑区块地址、长度length及偏移量offset,确定所述空间回收io数据对应的待清除数据块的具体位置信息,基于所述具体位置信息,在双控制器的缓存中查找与空间回收io数据对应的待清除数据块。

步骤s303:按照预设规则对所述待清除数据块进行切块,得到n个子数据块。

在步骤s303中,n为大于等于1的整数。

步骤s304:基于所述操作码清除所述双控制器的缓存中的n个子数据块。

本发明实施例中,通过ssd中的双控制器进行缓存来提高全闪存储系统的性能,为了保证数据的一致性,需要删除双控制器的缓存中的数据块。

在具体实现步骤s304的过程中,当所述主控制器接收到所述空间回收命令,基于所述操作码清除所述主控制器的缓存中的n个子数据块。将所述空间回收命令同步至镜像控制器,基于所述操作码清除镜像控制器的缓存中的n个子数据块进行清除。

需要说明的是,所述步骤s301-步骤s304可以设置在步骤s101之后,步骤s102之前,也可以设置在步骤s103之后,步骤s104之前,本申请不加以限制,优选的,步骤所述步骤s301-步骤s304可以设置在步骤s101之后,步骤s102之前。

在本发明实施例中,通过清除空间双控制器的缓存中的n个子数据块,能够保障缓存数据块与精简卷中的数据块的一致性,从而提高全闪存储系统空间回收效率。

基于上述本发明实施例图3示出的存储空间回收方法,在执行步骤s303按照预设规则对所述待清除数据块进行切块,得到n个子数据块的过程,如图4所示,包括以下步骤:

步骤s401:获取待清除数据块的大小。

在步骤s401中,待清除数据块可以为全闪存储系统中的无效数据块。

在具体实现步骤s401的过程中,在对全闪存储系统的存储空间回收时,对每一写入的数据块进行无效数据块判断操作,即判断访问每一写入的数据块的逻辑区块地址和物理区块地址时间是否大于预设阈值,从而确定无效数据块,并获取该无效数据块的大小。

比如:假设写入的数据块为f,对数据块f进行无效数据块判断操作,即判断访问数据块f的逻辑区块地址和物理区块地址的时间是否大于6个月,当所述访问数据块f的逻辑区块地址和物理区块地址的时间大于6个月时,确定该数据块为f为无效数据块,即待清除数据块,该预设阈值可设置为6个月,对此本申请不加以限定。

步骤s402:根据所述待清理数据块对应的带宽与协议队列深度的比值,确定可处理的空间命令io数据对应的数据块的大小。

在步骤s402中,所述待清理数据块对应的带宽等于(a/b)*c。a为主机端写入待清除数据块的超时时间,b为单个io处理时延,c为待清理数据块的大小。

需要说明的是,所述单个io处理时延是指数据块中每一io从进行存储处理所产生的时间。所述协议队列深度可在主机端口队列中等待服务的io请求数量,

步骤s403:基于所述可处理的空间命令io对应的数据块的大小,将所述待清理数据块切块,得到n个子数据块。

n为大于等于1的整数。

在本发明实施例中,通过将待清理数据块切块,得到n个子数据块,能够避免由于待清除数据块过大而导致清除效率差,从而提高全闪存储系统的性能及全闪存储系统的io读写效率。

与上述本发明实施例公开的存储空间回收方法相对应,本发明实施例还对应公开了一种存储空间回收装置,如图5所示,所述存储空间回收装置包括:协议解析模块501、自动精简配置模块502和空间回收模块503。

协议解析模块501,用于解析主机端的连接主机和外围设备接口协议中的空间回收命令,并将解析后的空间回收命令转化为空间回收io数据。

自动精简配置模块502,用于查找精简卷中与空间回收io数据对应的待清除数据的逻辑区块地址,并将精简卷中与空间回收io数据对应的逻辑区块地址删除。

空间回收模块503,用于下发清除命令到固态硬盘,基于所述清除命令擦除固态硬盘上对应所述空间回收命令的待清除数据块,所述待清除数据块中存储待清除数据。

需要说明的是,上述本发明实施例公开的存储空间回收装置中的各个单元具体的原理和执行过程,与上述本发明实施存储空间回收方法相同,可参见上述本发明实施例公开的存储空间回收中相应的部分,这里不再进行赘述。

在本发明实施例中,通过协议解析模块解析主机端的连接主机和外围设备接口协议中的空间回收命令,并将解析后的空间回收命令转化为空间回收io数据,在利用自动精简配置模块查找精简卷中与空间回收io数据对应的待清除数据的逻辑区块地址,并将精简卷中与空间回收io数据对应的逻辑区块地址删除。然后通过空间回收模块下发清除命令到固态硬盘,基于清除命令擦除固态硬盘上对应空间回收命令的待清除数据块。在本方案中,通过删除精简卷中与空间回收io数据对应的待清除数据块的逻辑区块地址,以及擦除固态硬盘上对应空间回收命令的待清除数据块,能够实现全闪存储系统的空间回收,以提高全闪存储系统的性能及全闪存储系统的io读写效率。

基于上述图5示出的存储空间回收装置,所述装置还包括:标识模块601、查找模块602、切块模块603和缓存清除模块604,优选的,如图6所示,标识模块601、查找模块602、切块模块603和缓存清除模块604可设置在协议解析模块501之后,自动精简配置模块502之前。

标识模块601,用于通过操作码对所述空间回收io数据进行标识。

查找模块602,用于根据所述空间回收io数据的数据结构,在双控制器的缓存中查找与空间回收io数据对应的待清除数据块,所述双控制器包括主控制器和镜像控制器。

切块模块603,用于按照预设规则对所述待清除数据块进行切块,得到n个子数据块。

需要说明的是,n为大于等于1的整数。

缓存清除模块604,用于基于所述操作码清除双控制器的缓存中的n个子数据块。

在本发明实施例中,通过清除空间双控制器的缓存中的n个子数据块,能够保障缓存数据块与精简卷中的数据块的一致性,从而提高全闪存储系统空间回收效率。

基于上述图6示出的存储空间回收装置,所述切块模块603包括:

获取模块,用于获取待清除数据块的大小。

确定模块,用于根据所述待清理数据块对应的带宽与协议队列深度的比值,确定可处理的空间命令io数据对应的数据块的大小。

切块子模块,用于基于所述可处理的空间命令io数据对应的数据块的大小,将所述待清理数据块切块,得到n个子数据块,n为大于等于1的整数。

在本发明实施例中,通过将待清理数据块切块,得到n个子数据块,能够避免由于待清除数据块过大而导致清除效率差,从而提高全闪存储系统的性能及全闪存储系统的io读写效率。

基于上述图6示出的存储空间回收装置,所述缓存清除模块604包括:

第一缓存清除子模块,用于当所述主控制器接收到所述空间回收命令,基于所述操作码清除所述主控制器的缓存中的n个子数据块;

第二缓存清除子模块,用于将所述空间回收命令同步至镜像控制器,基于所述操作码清除镜像控制器的缓存中的n个子数据块。

在本发明实施例中,通过同步清除主控制器和镜像控制器的缓存中的n个子数据块,能够避免清除缓存效率差的问题,有效提高全闪存储系统的性能。

基于上述图5示出的存储空间回收装置,结合图5,参考图7,示出了本发明实施例提供的一种存储空间回收装置的结构框图,所述装置还包括:

标记模块504,用于将待清除数据的逻辑区块地址对应的元数据标记为删除;

擦除模块505,用于擦除所述标识为删除的元数据对应的物理区块地址,以及所述标记为删除的元数据。

在本发明实施例中,通过异步后端擦除标识为删除的元数据对应的物理区块地址,以及标记为删除的元数据,能够避免影响主机端的正常读写,以实现在空闲时进行擦除操作,进一步提高全闪存储系统的存储空间的利用率以及全闪存储系统的使用性能。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

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

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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