一种随机写方法和装置与流程

文档序号:22343258发布日期:2020-09-25 18:15阅读:128来源:国知局
一种随机写方法和装置与流程

本发明涉及数据存储领域,更具体地,特别是指一种随机写方法和装置。



背景技术:

在数据量指数级增长的信息化时代,快速有效的存储和处理数据成为了研究的重要方向。机械硬盘的速度已经无法满足目前cpu的计算速度,固态硬盘以读写速度快、体积小的优势逐渐成为了主流存储器件,广泛应用到生活中的各个领域,ssd(固态硬盘)的性能也随之受到了重视。但现有技术的固态硬盘随机写的处理速度低、一致性差导致性能不能满足要求。

针对现有技术中固态硬盘随机写的处理速度低、一致性差的问题,目前尚无有效的解决方案。



技术实现要素:

有鉴于此,本发明实施例的目的在于提出一种随机写方法和装置,能够提高固态硬盘随机写的每秒输入输出性能和数据一致性。

基于上述目的,本发明实施例的第一方面提供了一种随机写方法,包括执行以下步骤:

使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元;

使用磨损均衡模块扫描目标超级逻辑单元中的空闲块数量和坏块数量以确定当前剩余固态硬盘数据帧数量;

使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量;

使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数;

再次更新历史加权固态硬盘数据帧数量,并基于再次更新的历史加权固态硬盘数据帧数量和预期每秒读写次数来调整实际每秒读写次数。

在一些实施方式中,使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元包括:

判断固态硬盘中空闲块数量最少的超级逻辑单元的数量是否超过预定阈值;

响应于超过预定阈值,而选择空闲块数量最少的超级逻辑单元作为目标超级逻辑单元。

在一些实施方式中,使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元还包括:

响应于未超过预定阈值,而扫描固态硬盘中是否存在至少一个处于空闲状态的超级逻辑单元;

响应于存在至少一个处于空闲状态的超级逻辑单元,而将其中之一确定为目标超级逻辑单元。

在一些实施方式中,使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量包括:

根据预定的历史平均权重参数为旧的加权固态硬盘数据帧数量加权;

对加权后的旧的加权固态硬盘数据帧数量与标准权重的当前剩余固态硬盘数据帧数量执行归一化的加权平均,获得更新的历史加权固态硬盘数据帧数量。

在一些实施方式中,动态写仲裁包括三个阶段,每个阶段包括空闲块数量、历史加权固态硬盘数据帧数量、和每秒读写次数之间的对应关系;

使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数包括:使用动态写仲裁基于历史加权固态硬盘数据帧数量确定相对应的每秒读写次数所在的阶段作为调整阶段,并基于调整阶段和历史加权固态硬盘数据帧数量确定预期每秒读写次数。

本发明实施例的第二方面提供了一种随机写装置,包括:

处理器;和

存储器,存储有处理器可运行的程序代码,程序代码在被运行时执行以下步骤:

使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元;

使用磨损均衡模块扫描目标超级逻辑单元中的空闲块数量和坏块数量以确定当前剩余固态硬盘数据帧数量;

使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量;

使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数;

再次更新历史加权固态硬盘数据帧数量,并基于再次更新的历史加权固态硬盘数据帧数量和预期每秒读写次数来调整实际每秒读写次数。

在一些实施方式中,使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元包括:

判断固态硬盘中空闲块数量最少的超级逻辑单元的数量是否超过预定阈值;

响应于超过预定阈值,而选择空闲块数量最少的超级逻辑单元作为目标超级逻辑单元。

在一些实施方式中,使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元还包括:

响应于未超过预定阈值,而扫描固态硬盘中是否存在至少一个处于空闲状态的超级逻辑单元;

响应于存在至少一个处于空闲状态的超级逻辑单元,而将其中之一确定为目标超级逻辑单元。

在一些实施方式中,使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量包括:

根据预定的历史平均权重参数为旧的加权固态硬盘数据帧数量加权;

对加权后的旧的加权固态硬盘数据帧数量与标准权重的当前剩余固态硬盘数据帧数量执行归一化的加权平均,获得更新的历史加权固态硬盘数据帧数量。

在一些实施方式中,动态写仲裁包括三个阶段,每个阶段包括空闲块数量、历史加权固态硬盘数据帧数量、和每秒读写次数之间的对应关系;使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数包括:使用动态写仲裁基于历史加权固态硬盘数据帧数量确定相对应的每秒读写次数所在的阶段作为调整阶段,并基于调整阶段和历史加权固态硬盘数据帧数量确定预期每秒读写次数。

本发明具有以下有益技术效果:本发明实施例提供的随机写方法和装置,通过使用磨损均衡模块扫描目标超级逻辑单元中的空闲块数量和坏块数量以确定当前剩余固态硬盘数据帧数量;使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量;使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数;再次更新历史加权固态硬盘数据帧数量,并基于再次更新的历史加权固态硬盘数据帧数量和预期每秒读写次数来调整实际每秒读写次数的技术方案,能够提高固态硬盘随机写的每秒输入输出性能和数据一致性。

附图说明

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

图1为本发明提供的随机写方法的流程示意图;

图2为本发明提供的随机写方法的动态写仲裁曲线图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

基于上述目的,本发明实施例的第一个方面,提出了一种能够提高固态硬盘随机写的每秒输入输出性能和数据一致性方法的一个实施例。图1示出的是本发明提供的随机写方法的流程示意图。

所述的随机写方法,如图1所示,包括执行以下步骤:

步骤s101:使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元;

步骤s103:使用磨损均衡模块扫描目标超级逻辑单元中的空闲块数量和坏块数量以确定当前剩余固态硬盘数据帧数量;

步骤s105:使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量;

步骤s107:使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数;

步骤s109:再次更新历史加权固态硬盘数据帧数量,并基于再次更新的历史加权固态硬盘数据帧数量和预期每秒读写次数来调整实际每秒读写次数。

本发明提出了一种有效提高ssd随机写性能的方法,包含了提高随机写的iops(每秒输入输出数)和一致性。本发明通过将superlun(超级逻辑单元)之间的剩余空间进行平衡之后,利用写仲裁控制方案根据freeblock(空闲块)空间对随机写的iops进行控制,通过lstm(长短期记忆网络)结构的方式计算剩余空间的dataframe(固态硬盘数据帧)数来提高随机写的一致性。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。

在一些实施方式中,使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元包括:

判断固态硬盘中空闲块数量最少的超级逻辑单元的数量是否超过预定阈值;

响应于超过预定阈值,而选择空闲块数量最少的超级逻辑单元作为目标超级逻辑单元。

在一些实施方式中,使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元还包括:

响应于未超过预定阈值,而扫描固态硬盘中是否存在至少一个处于空闲状态的超级逻辑单元;

响应于存在至少一个处于空闲状态的超级逻辑单元,而将其中之一确定为目标超级逻辑单元。

在一些实施方式中,使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量包括:

根据预定的历史平均权重参数为旧的加权固态硬盘数据帧数量加权;

对加权后的旧的加权固态硬盘数据帧数量与标准权重的当前剩余固态硬盘数据帧数量执行归一化的加权平均,获得更新的历史加权固态硬盘数据帧数量。

在一些实施方式中,动态写仲裁包括三个阶段,每个阶段包括空闲块数量、历史加权固态硬盘数据帧数量、和每秒读写次数之间的对应关系;使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数包括:使用动态写仲裁基于历史加权固态硬盘数据帧数量确定相对应的每秒读写次数所在的阶段作为调整阶段,并基于调整阶段和历史加权固态硬盘数据帧数量确定预期每秒读写次数。

根据本发明实施例公开的方法还可以被实现为由cpu执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被cpu执行时,执行本发明实施例公开的方法中限定的上述功能。上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。

下面根据如图2所示的具体实施例进一步阐述本发明的具体实施方式。

第一步:wlm(磨损均衡模块)平衡各个superlun之间的剩余空间过程;

首先是平衡superlun之间的剩余空间,具体实现是首先判断freeblock的数目最少的superlun和freeblock的数目最多的superlun是否超过阈值,该阈值可以设定,当前设定为3个。

如果没有超过该阈值,则继续判断superlun是否处于空闲状态,空闲状态即为暂时没有从该superlun上选取freeblock用来填写数据,哪个superlun处于空闲状态,则选择该superlun,如果有多个superlun处于空闲状态,则选择freeblock数少的superlun。

如果超过该阈值,则跳过对superlun的状态判断,直接选择freeblock数目少的superlun,即从该superlun中选取目的freeblock用来填写数据。

以上为wlm根据freeblock数目平衡各个superlun之间的剩余空间的步骤,平衡后wlm通过freeblock数和坏块表来计算当前的剩余dataframe数发送给lkm(查找管理模块)。

第二步:lkm接收到dataframe数重新计算dataframe数

lkm在接收到wlm收到的dataframe数后借鉴lstm的思想计算出新的dataframe数,减少应为回收出新的block而带来的波动,提高了一致性。

在计算稳态时的空间中,在整个写过程中,block数目是随时变化的,令b1,b2,b3…bn代表block数目变化的情况,根据该block的实际坏块情况,计算剩余的dataframe计数空间为fb1,fb2,fb3…fbn,使用avgfb1,avgfb2,avgfb3…avgfbn来对应bn时的历史平均dataframe计数空间,令avgfb1=fb1,则

avgfbn+1=(βavgfbn+fbn+1)/(β+1)

其中β值的含义是指只保留最近多次的fbn来进行平均,这借鉴了lstm的思想。

具体如何确定β,我们在实际获取了在随机写从调整到稳态过程的freedataframe空间数据,通过计算获得β值使得freedataframe数据在稳态过程中经过上述公式计算后波动较小,与实际的测试情况基本相符。经过对比β值在0.9的时候avgfbn+1波动曲线接近原图并且波动范围小,稳态中avgfbn+1的变化很小。

第三步:根据重新计算的dataframe数avgfbn+1按照图2所示的曲线调整iops。

新的写仲裁方案如图2中实线所示,start_credit_num的含义是写仲裁调控开始介入的freeblock对应dataframe数,steady_num是写仲裁调控下稳态时的freeblock对应dataframe数,forbid_credit_num是开始禁止iops的freeblock对应dataframe数,stop_credit_num是将iops降为0的freeblock对应dataframe数。

调整的过程分为三个阶段,第一个阶段是当第二步中计算的dataframe数avgfbn+1在start_credit_num=144对应dataframe数到forbid_credit_num=24对应dataframe数之间,第二个阶段为forbid_credit_num=24对应dataframe数到stop_credit_num=18对应dataframe数(原方案为16)之间,第三阶段为stop_credit_num=18对应dataframe数以下。

根据dataframe数avgfbn+1来判断剩余空间处于第几个阶段,第一个阶段和第二阶段的iops根据相似三角形性质的对应边成比例,可以得出相应剩余空间对应的iops,第三阶段iops是0。在公式1中β值在0.9的时候avgfbn+1波动曲线接近原图并且波动范围小,稳态中avgfbn+1的变化很小,所以计算的预期iops的波动小,调整时比较平滑,一致性也就提高了。

第四步:根据第三步计算出来的iops进行逐步调整。

第三步计算得到的iops后,需要根据稳态中avgfbn+1与steady_num数量的dataframe数比较进行动态调整。

avgfbn+1接近steady_num数量的dataframe数时,判定为稳态。avgfbn+1大于设定的steady_num,说明稳态情况离我们的预设情况有偏差,则提升预设的iops为(1+δ)*iops,这里暂定δ为5%。当bn小于forbid_credit_num的dataframe空间时,说明预设的iops过高了,需要较小以降低block的消耗速度,将iops降低为(1-ζ)*iops,这里暂定ζ为10%。该方法实现后的一致性从83%提高为93%,性能也提高了10%左右。

从上述实施例可以看出,本发明实施例提供的随机写方法,通过使用磨损均衡模块扫描目标超级逻辑单元中的空闲块数量和坏块数量以确定当前剩余固态硬盘数据帧数量;使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量;使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数;再次更新历史加权固态硬盘数据帧数量,并基于再次更新的历史加权固态硬盘数据帧数量和预期每秒读写次数来调整实际每秒读写次数的技术方案,能够提高固态硬盘随机写的每秒输入输出性能和数据一致性。

需要特别指出的是,上述随机写方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于随机写方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。

基于上述目的,本发明实施例的第二个方面,提出了一种能够提高固态硬盘随机写的每秒输入输出性能和数据一致性装置的一个实施例。随机写装置包括:

处理器;和

存储器,存储有处理器可运行的程序代码,程序代码在被运行时执行以下步骤:

使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元;

使用磨损均衡模块扫描目标超级逻辑单元中的空闲块数量和坏块数量以确定当前剩余固态硬盘数据帧数量;

使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量;

使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数;

再次更新历史加权固态硬盘数据帧数量,并基于再次更新的历史加权固态硬盘数据帧数量和预期每秒读写次数来调整实际每秒读写次数。

在一些实施方式中,使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元包括:

判断固态硬盘中空闲块数量最少的超级逻辑单元的数量是否超过预定阈值;

响应于超过预定阈值,而选择空闲块数量最少的超级逻辑单元作为目标超级逻辑单元。

在一些实施方式中,使用磨损均衡模块以平衡剩余空间的方式在固态硬盘的多个超级逻辑单元中确定一个目标超级逻辑单元还包括:

响应于未超过预定阈值,而扫描固态硬盘中是否存在至少一个处于空闲状态的超级逻辑单元;

响应于存在至少一个处于空闲状态的超级逻辑单元,而将其中之一确定为目标超级逻辑单元。

在一些实施方式中,使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量包括:

根据预定的历史平均权重参数为旧的加权固态硬盘数据帧数量加权;

对加权后的旧的加权固态硬盘数据帧数量与标准权重的当前剩余固态硬盘数据帧数量执行归一化的加权平均,获得更新的历史加权固态硬盘数据帧数量。

在一些实施方式中,动态写仲裁包括三个阶段,每个阶段包括空闲块数量、历史加权固态硬盘数据帧数量、和每秒读写次数之间的对应关系;使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数包括:使用动态写仲裁基于历史加权固态硬盘数据帧数量确定相对应的每秒读写次数所在的阶段作为调整阶段,并基于调整阶段和历史加权固态硬盘数据帧数量确定预期每秒读写次数。

从上述实施例可以看出,本发明实施例提供的随机写装置,通过使用磨损均衡模块扫描目标超级逻辑单元中的空闲块数量和坏块数量以确定当前剩余固态硬盘数据帧数量;使用查找管理模块根据当前剩余固态硬盘数据帧数量以长短期记忆网络的方式迭代更新历史加权固态硬盘数据帧数量;使用动态写仲裁基于历史加权固态硬盘数据帧数量确定调整阶段,并基于调整阶段确定预期每秒读写次数;再次更新历史加权固态硬盘数据帧数量,并基于再次更新的历史加权固态硬盘数据帧数量和预期每秒读写次数来调整实际每秒读写次数的技术方案,能够提高固态硬盘随机写的每秒输入输出性能和数据一致性。

需要特别指出的是,上述随机写装置的实施例采用了所述随机写方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到所述随机写方法的其他实施例中。当然,由于所述随机写方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于所述随机写装置也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。

以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。

应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

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