一种SSD盘元数据存储方法、装置、控制器及存储介质与流程

文档序号:18162668发布日期:2019-07-13 09:24阅读:317来源:国知局
一种SSD盘元数据存储方法、装置、控制器及存储介质与流程

本申请涉及固态硬盘数据存储技术领域,特别涉及一种ssd盘元数据存储方法、装置、控制器及计算机可读存储介质。



背景技术:

ssd(solidstatedisk,固态硬盘)是一种使用固态电子存储芯片阵列制成的硬盘,由于其相比于机械硬盘拥有更快的存取速度,被广泛应用在各行各业。

元数据,作为描述数据的数据,在ssd盘中也需要占用一定的存储空间,现今在将待保存元数据存储在ssd盘中时,会逐渐占用完所有可用于存储元数据的block,举个例子,假设一共最多有100个block可用于存储元数据,那么在ssd盘数据写入、擦除、再写入的过程中,这100个block会逐渐全部被占用完,直到再次需要保存的元数据没有新block可用时,会清空最先被占用的block中保存的元数据以供再次写入。也就是说,在首次用完所有可用的block后,之后需要保存的新元数据都将会采用新的覆盖旧的形式完成写入,而在此过程中,这100个block都将常态化的处于占用状态,占用状态下将不断磨损存储介质,使得存储介质在长期不间断的磨损下,寿命快速缩短,进而增加更换成本,同时也为数据丢失埋下了隐患。

因此,如何克服现有ssd盘在存储元数据时存在的上述缺陷,提供一种能够尽可能的减少存储介质磨损、延长ssd盘使用寿命的ssd盘元数据存储机制,是本领域技术人员亟待解决的问题。



技术实现要素:

本申请的目的在于提供一种ssd盘元数据存储方法、装置、控制器及计算机可读存储介质,旨在解决现有ssd盘在存储元数据时,由于不对需要使用的block进行管理,使得所有可用于存储元数据的block都将常态化的处于被占用状态,使得对应的存储介质会因为持续被占用而被持续磨损,最终使得该ssd盘的使用寿命快速降低的问题。

为实现上述目的,本申请提供一种ssd盘元数据存储方法,该方法包括:

根据目标ssd盘的总容量计算得到存储一份完整元数据的所需容量;

根据所述所需容量确定所述目标ssd盘的优选容量上限,并将所述优选容量上限设置为所述目标ssd盘已占用列表的容量上限;其中,所述优选容量上限大于等于所述所需容量、小于所述目标ssd盘中可用于存储元数据的总容量,所述已占用列表用于存放存储有元数据的block和统计各所述block中存储的有效元数据大小;

当接收到元数据保存请求时,根据所述元数据保存请求确定与待保存元数据对应的待保存容量,并根据已占用列表确定当前的已占用容量;

判断当前的已占用容量与所述待保存容量的和是否大于所述优选容量上限;

当大于所述优选容量上限时,将所述待保存元数据存储于从可用空block池中选取出的可用空block中,得到新block,并使用所述新block替换最早进入所述已占用列表的、与所述新block中存储的有效元数据数一致的旧block,且将所述旧block清空后添加进所述可用空block池。

可选的,根据所述所需容量确定所述目标ssd盘的优选容量上限,包括:

将所述所需容量设置为所述目标ssd盘的优选容量上限。

可选的,该ssd盘元数据存储方法还包括:

当所述待保存元数据在保存至所述可用空block过程中出现写失败时,重新选取另一个可用空block保存出现所述写失败及之后的待保存元数据,并将出现所述写失败的block标记为异常block,并将所述异常block作为临时block添加进所述已占用列表。

可选的,在将所述待保存元数据存储于从可用空block池中选取出的可用空block中之前,还包括:

获取所述可用空block池中每个可用空block的擦写次数;

对应的,将所述待保存元数据存储于从可用空block池中选取出的可用空block中,包括:

将所述待保存元数据存储于所述可用空block池中擦写次数最少的可用空block中。

为实现上述目的,本申请还提供了一种ssd盘元数据存储装置,包括:

基准所需容量计算单元,用于根据目标ssd盘的总容量计算得到存储一份完整元数据的所需容量;

上限确定及设置单元,用于根据所述所需容量确定所述目标ssd盘的优选容量上限,并将所述优选容量上限设置为所述目标ssd盘已占用列表的容量上限;其中,所述优选容量上限大于等于所述所需容量、小于所述目标ssd盘中可用于存储元数据的总容量,所述已占用列表用于存放存储有元数据的block和统计各所述block中存储的有效元数据大小;

容量参数确定单元,用于当接收到元数据保存请求时,根据所述元数据保存请求确定与待保存元数据对应的待保存容量,并根据已占用列表确定当前的已占用容量;

容量判断单元,用于判断当前的已占用容量与所述待保存容量的和是否大于所述优选容量上限;

block替换单元,用于当大于所述优选容量上限时,将所述待保存元数据存储于从可用空block池中选取出的可用空block中,得到新block,并使用所述新block替换最早进入所述已占用列表的、与所述新block中存储的有效元数据数一致的旧block,且将所述旧block清空后添加进所述可用空block池。

可选的,所述优选容量上限确定及设置单元包括:

最优容量上限设置子单元,用于将所述所需容量设置为所述目标ssd盘的优选容量上限。

可选的,该ssd盘元数据存储装置还包括:

写失败处理单元,用于当所述待保存元数据在保存至所述可用空block过程中出现写失败时,重新选取另一个可用空block保存出现所述写失败及之后的待保存元数据,并将出现所述写失败的block标记为异常block,并将所述异常block作为临时block添加进所述已占用列表。

可选的,该ssd盘元数据存储装置还包括:

擦写次数获取单元,用于在将所述待保存元数据存储于从可用空block池中选取出的可用空block中之前,获取所述可用空block池中每个可用空block的擦写次数;

对应的,所述block替换单元包括:

待保存元数据优选存储子单元,用于将所述待保存元数据存储于所述可用空block池中擦写次数最少的可用空block中。

为实现上述目的,本申请还提供了一种ssd盘元数据存储控制器,该控制器包括:

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

处理器,用于执行所述计算机程序时实现如上述内容所描述的ssd盘元数据存储方法。

为实现上述目的,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述内容所描述的ssd盘元数据存储方法。

根据本申请提供的ssd盘元数据存储方法可以看出,本申请首先根据ssd盘的总容量计算得到存储一份完整元数据的所需大小,这是由于两者之间存在相对固定的换算关系,而一份完整元数据的所需大小是指能够描述该ssd盘存储的所有数据的元数据的大小,也就是说该ssd盘其实最少只需要数量为能存储该所需大小元数据的block即可完成对所有数据的描述,而大于该数量的block则在很大概率上没必要被使用,或者说在被使用的block数大于该数量时,很大概率上存在无效元数据,而无效元数据则是完全没有必要存在的,也没有必要因为无效元数据占用导致block对应的存储介质被磨损,进而降低ssd盘寿命。

因此,本申请根据该所需大小确定出优选容量上限,该优选容量上限用于限制该ssd盘中存储的元数据,使其不会因为没限制而使得所有可用于存储元数据的block都处于占用状态,在已占用列表当前的已占用容量与新来的待保存元数据的待保存大小的和大于该优选容量上限时,就会触发使用新block替换最先存放进该已占用列表中的旧block的操作,而旧block将会在清空后成为新的可用空block添加进可用空block池中。通过本申请提供的技术方案,常态化处于被占用状态的block数量将会得到明显降低,其它block都将因为处于非占用状态而不会增加对应存储介质的磨损程度,使得该ssd盘的使用寿命得以延长。

本申请同时还提供了一种ssd盘元数据存储装置、控制器及计算机可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

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

图1为本申请实施例提供的一种ssd盘元数据存储方法的流程图;

图2为本申请实施例提供的ssd盘元数据存储方法中一种优选的存储待保存元数据的方法的流程图;

图3为本申请实施例提供的一种ssd盘元数据存储装置的结构框图。

具体实施方式

本申请的目的在于提供一种ssd盘元数据存储方法、装置、控制器及计算机可读存储介质,旨在解决现有ssd盘在存储元数据时,由于不对需要使用的block进行管理,使得所有可用于存储元数据的block都将常态化的处于被占用状态,使得对应的存储介质会因为持续被占用而被持续磨损,最终使得该ssd盘的使用寿命快速降低的问题。

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

实施例一

请参见图1,图1为本申请实施例提供的一种ssd盘元数据存储方法的流程图,其包括以下步骤:

s101:根据目标ssd盘的总容量计算得到存储一份完整元数据的所需容量;

元数据(metadata),又称中介数据、中继数据,是一种描述数据的数据(dataaboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。通常在固定的应用场景下,能够将存储在该ssd盘中的所有数据全部进行描述的元数据的大小是固定的,也就是本申请确定出一份完整元数据的所需容量的过程,是根据在目标应用场景下的目标ssd盘的总容量计算得到的,两者之间存在一个相对固定的换算关系,该换算关系的具体参数会根据实际场景的不同灵活调整,同时也会参考出于安全考虑采用的冗余规则(例如raid0方式)和其它可能对所需容量造成影响的因素,此处并不做具体限定。

其中,一份完整的元数据,是指能够描述完存储于该ssd盘中的所有实际数据的元数据,在此之外的元数据都将是因为实际修改而产生的新元数据,新元数据与未修改部分的旧元数据将构成新一份完整的元数据,至于被修改部分的旧元数据将作为无效元数据。

s102:根据所需容量确定目标ssd盘的优选容量上限,并将优选容量上限设置为目标ssd盘已占用列表的容量上限;

在s101的基础上,本步骤旨在根据与一份完整元数据对应的所需容量确定得到该目标ssd盘的优选容量上限,并将该优选容量上限设置为该目标ssd盘已占用列表的容量上限。其中,该优选容量上限大于等于该所需容量、小于该目标ssd盘中可用于存储元数据的总容量,该已占用列表用于存放存储有元数据的block和统计各该block中存储的有效元数据大小,该block按照时间先后顺序依次排列于该已占用列表中。

也就是说,该优选容量上限的取值下限(可以取到)为该所需容量,也就是存储一份完整元数据对应的所需容量,也就是绝对不允许无效元数据的存在;相对的,取值上限(不能取到)为与现有技术一致的可用于存储元数据的总容量。也就是说,根据应用场景下对严格程度要求的不同,使用在此范围内取到的值来约束block的使用的话,都相对于现有技术的使用方式存在有益效果,使存储介质的整体磨损程度得以降低,进而延长该ssd盘的使用寿命。由于容量具体表现为每个block的元数据存储能力和block的数量,因此容量实际可换算为block的数量。

s103:当接收到元数据保存请求时,根据元数据保存请求确定与待保存元数据对应的待保存容量,并根据已占用列表确定当前的已占用容量;

在s102的基础上,本步骤以及后续步骤将对实际有新元数据需要保存时的处理方式进行描述:首先,本步骤用于从接收到的元数据保存请求中提取得到待保存元数据对应的待保存容量,以及根据已占用列表确定当前的已占用容量(也可以理解为当前已存储的有效元数据的大小)。

s104:判断当前的已占用容量与待保存容量的和是否大于优选容量上限;

在s103的基础上,本步骤旨在判断当前的已占用容量与待保存容量的和是否大于该已占用列表的容量上限(即该优选容量上限),以期通过本步骤的判断过结果决定后续采用何种方式存储该待保存元数据。

s105:将待保存元数据存储于从可用空block池中选取出的可用空block中,得到新block,将新block存放进已占用列表的末尾;

本步骤建立在s104的判断结果为当前的已占用容量与待保存容量的和未大于该已占用列表的容量上限的基础上,说明当前已占用列表中存储的有效元数据大小还未超过容量上限,还能够在不替换旧block的情况下支持存储该待保存元数据的新block存入,因此只需要将待保存元数据存储于从可用空block池中选取出的可用空block中,得到新block,并将该新block存放进已占用列表的末尾即可,且在存入后更新有效元数据大小即可。

s106:将待保存元数据存储于从可用空block池中选取出的可用空block中,得到新block,并使用新block替换最早进入已占用列表的、与新block中存储的有效元数据数一致的旧block,且将旧block清空后添加进可用空block池。

本步骤建立在s104的判断结果为当前的已占用容量与待保存容量的和大于该已占用列表的容量上限的基础上,说明根据当前已占用列表中存储的有效元数据的大小已经无法支持在不进行替换的情况下存入新block,因此,本步骤还需要使用新block替换最早进入已占用列表的、与新block中存储的有效元数据数一致的旧block,且将旧block清空后添加进可用空block池。

其中,可用空block池为可用空block的集中存放处,用于存放所有可用于存储元数据的可用空block。

根据本实施例对本申请发明点的描述,可以看出,本申请为了改善现有ssd盘存储元数据机制下存在的技术缺陷,在满足元数据功能完成的基础上,通过为已占用列表设置容量上限的方式让常态化处于占用状态的block的数量得以减少,且这些block都是因为其中存储是有效元数据而必须处于占用状态,尽可能的减少了无效元数据对block的占用,进而减少了对存储介质的磨损,延长了ssd盘的整体使用寿命。

同时,针对在将待保存元数据保存至block的过程中可能出现的写失败情况,本申请也提供了相应的解决方案:当待保存元数据在保存至可用空block过程中出现写失败时,重新选取另一个可用空block保存出现写失败及之后的待保存元数据,并将出现写失败的block标记为异常block,并将异常block作为临时block添加进已占用列表。需要说明的是,由于写失败的出现概率通常较低,因此作为小概率事件的异常block将作为临时block按顺序添加进已占用列表,且由于已占用列表会基于有效元数据大小与容量上限进行比对,异常block中存储的写失败元数据将不会被计数。而该临时block将会在后续的新旧block替换中,在基于相同有效元数据大小的替换规则下逐渐被替换掉,消除现有技术中也不对写失败出现的异常block进行管理造成的不必要磨损问题。

实施例二

请参见图2,图2为本申请实施例提供的ssd盘元数据存储方法中一种优选的存储待保存元数据的方法的流程图,在实施例一的基础上,本实施例旨在挑选最合适用与存储该待保存元数据的可用空block的方式来实现,包括以下步骤:

s201:获取可用空block池中每个可用空block的擦写次数;

按照本申请实施例对可用空block来源的介绍可以看出,可用空block的来源不外乎两种:一种是从未被使用的可用空block,其擦写次数为零;另一种是之前被使用过,但由于替换操作后被清空为可用空block的block,其擦写次数为被执行过的清空次数。

本实施例为了尽可能的延长该目标ssd盘的使用寿命,也就需要在各block的使用上达成尽可能的平衡,使得在轮换使用的方式下,将磨损程度摊平,使得整体磨损程度较低,因此本步骤需要获取每个空block的擦写次数,以便后续步骤基于该擦写次数选取最合适用于存储该待保存元数据的可用空block。

s202:将待保存元数据存储于可用空block池中擦写次数最少的可用空block中。

在s201的基础上,本步骤旨在将待保存元数据存储于可用空block池中擦写次数最少的可用空block中,也就是说,每次选取可用空block时,都选取擦写次数最少的,那么下次再进入可用空block池的block将因为擦写次数的增加不会被再次选取到,进而让可用空block的使用在良好的轮询方式下使得磨损程度整体较低,使得ssd盘的使用寿命得到进一步的延长。

进一步的,为了方便选取擦写次数最少的可用空block,还可以将可用空block池中的可用空block按擦写次数的多少进行排序(例如按从小到大的顺序依次从表的顶部开始排列),得到排序表。每当需要时,就选取排列于排序表顶部的可用空block来存储该待保存元数据。

因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。

实施例三

下面请参见图3,图3为本申请实施例提供的一种ssd盘元数据存储装置的结构框图,该系统可以包括:

基准所需容量计算单元100,用于根据目标ssd盘的总容量计算得到存储一份完整元数据的所需容量;

上限确定及设置单元200,用于根据所需容量确定目标ssd盘的优选容量上限,并将优选容量上限设置为目标ssd盘已占用列表的容量上限;其中,优选容量上限大于等于所需容量、小于目标ssd盘中可用于存储元数据的总容量,已占用列表用于存放存储有元数据的block和统计各block中存储的有效元数据大小;

容量参数确定单元300,用于当接收到元数据保存请求时,根据元数据保存请求确定与待保存元数据对应的待保存容量,并根据已占用列表确定当前的已占用容量;

容量判断单元400,用于判断当前的已占用容量与待保存容量的和是否大于优选容量上限;

block替换单元500,用于当大于优选容量上限时,将待保存元数据存储于从可用空block池中选取出的可用空block中,得到新block,并使用新block替换最早进入已占用列表的、与新block中存储的有效元数据数一致的旧block,且将旧block清空后添加进可用空block池。

其中,该上限确定及设置单元200可以包括:

最优容量上限设置子单元,用于将所需容量设置为目标ssd盘的优选容量上限。

进一步的,该ssd盘元数据存储装置还可以包括:

写失败处理单元,用于当待保存元数据在保存至可用空block过程中出现写失败时,重新选取另一个可用空block保存出现写失败及之后的待保存元数据,并将出现写失败的block标记为异常block,并将异常block作为临时block添加进已占用列表。

更进一步的,该ssd盘元数据存储装置还可以包括:

擦写次数获取单元,用于在将待保存元数据存储于从可用空block池中选取出的可用空block中之前,获取可用空block池中每个可用空block的擦写次数;

对应的,该block替换单元500可以包括:

待保存元数据优选存储子单元,用于将待保存元数据存储于可用空block池中擦写次数最少的可用空block中。

本实施例作为一个对应于上述方法实施例的系统实施例存在,具有方法实施例的全部有益效果,此处不再一一赘述。

基于上述实施例,本申请还提供了一种ssd盘元数据存储控制器,该控制器可以包括存储器和处理器,其中,该存储器中存有计算机程序,该处理器调用该存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然,该控制器还可以包括各种必要的网络接口、电源以及其它零部件等。

本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行终端或处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

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

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

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

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