数据写入方法、装置、存储***、存储介质与控制器
技术领域
本发明涉及存储技术领域,尤其涉及一种数据写入方法、装置、存储***、存储介质与控制器。
背景技术
日志结构合并树(Log Structured Merge Tree,LSM-Tree)是相对应B+树的一种数据结构,其主要是为了克服B+树的大量随机输入输出(Input/Output,I/O)导致性能低的问题,本质是实现读写之前取得平衡,牺牲读性能来大幅度提高写性能。
业界内有很多基于LSM-Tree原理实现的键值(Key-Value,KV)存储引擎,这些存储引擎被广泛应用各种数据存储***中。这些应用实现KV存储引擎的核心思想是将随机I/O转化为顺序I/O写入,再通过存储器将写入的数据整理为局部有序的文件存储到文件***,最后再对多个文件***中的文件进行合并和排序提升读取性能。现有的一种基于LSM-Tree原理实现的KV存储引擎为降低垃圾回收时的写放大,在写入数据时,根据写频率将数据划分为多个流,将写频率相近的数据划分为同一个数据流,将同一个数据流存储在固态硬盘的同一物理块中。
由于物理块中写频率相近的数据的失效时间接近,在垃圾回收时,若物理块中的所有数据或大部分数据成为无效数据,物理块中没有或者只有少量的有效数据,则垃圾回收时没有需要迁移的有效数据,或迁移的有效数据很少,减少了垃圾回收时的写放大。但频繁的写入数据至固态硬盘,产生的无效数据越多,频繁的对固态硬盘中的无效数据进行垃圾回收处理,降低了固态硬盘的使用寿命。
发明内容
本申请提供了一种数据写入方法、装置、存储***、存储介质与控制器,能够延长固态硬盘的寿命。
第一方面,本申请提供了一种数据写入方法,应用于存储***,存储***包括控制器和固态硬盘,数据写入方法包括:控制器获取待写入数据的写频率级别,写频率级别用于表示待写入数据的写频率所在的频率范围,高写频率级别对应的写频率高于低写频率级别对应的写频率;控制器根据待写入数据的写频率级别,设置待写入数据的写盘时延,高写频率级别对应的写盘时延大于低写频率级别对应的写盘时延;控制器确认存储器中存在与待写入数据的关键字相同的旧版本数据时,保存待写入数据至存储器,以及删除存储器中的旧版本数据,待写入数据的关键字用于标识待写入数据;控制器保存待写入数据至存储器后启动计时,在达到写盘时延时,保存待写入数据至固态硬盘。
按照写频率级别设置写盘时延,使得一段时间内高写频率级别的待写入数据写入固态硬盘的次数减少,从而减少数据写入固态硬盘的次数;在存储器中删除待写入数据的关键字相同的旧版本数据,从而实现去冗余,减小保存至固态硬盘的数据量,从而降低了数据保存至固态硬盘过程中的写放大,进而提高固态硬盘的寿命。在存储器中进行数据去冗余,不需要在内存和固态硬盘之间进行数据搬移,从而减小了数据合并的开销。
根据第一方面,在第一方面的第一种可能中,控制器根据待写入数据的写频率级别,设置待写入数据的写盘时延,包括:控制器根据待写入数据的写频率级别,设置待写入数据的写盘权重,高写频率级别对应的写盘权重低于低写频率级别对应的写盘权重;控制器根据写盘权重,设置待写入数据的写盘时延,高写盘权重对应的写盘时延低于低写盘权重对应的写盘时延。通过设置写盘权重这一中间参数,建立写频率级别与写盘时延的关系。
根据第一方面或第一方面的第一种可能,在第一方面的第二种可能中,写频率级别包括第一写频率级别,第一写频率级别对应的写频率低于高写频率级别对应的写频率,第一写频率级别对应的写频率低于或等于最低时延频率阈值,第一写频率级别对应的写盘时延为0。
根据第一方面,在第一方面的第三种可能中,待写入数据包括热待写入数据,热待写入数据的写频率级别高于或等于热数据频率级别阈值。针对存储器中的热数据周期性去除冗余数据,从而达到资源占用和数据检查清理的平衡。
第二方面,本申请提供了一种数据写入方法,应用于存储***,存储***包括控制器和固态硬盘,数据写入方法包括:控制器确认存储器中存在与待写入数据的关键字相同的旧版本数据时,保存待写入数据至存储器,以及删除存储器中的旧版本数据,待写入数据的关键字用于标识待写入数据;控制器统计写盘时延到达时存储器中待写入固态硬盘的所有待写入数据的数据量,所有待写入数据为写频率级别相同的数据;控制器获取与写频率级别对应的写盘量;控制器确认所有待写入数据的数据量是否大于与写频率级别对应的写盘量;控制器在确认所有待写入数据的数据量大于与写频率级别对应的写盘量时,按照所有待写入数据中每个数据写入存储器的时间顺序保存所有待写入数据中的部分数据至固态硬盘,所有待写入数据中的部分数据的数据量与写频率级别对应的写盘量相同。
将大量的同一写频率级别下的待写入数据分批写入固态硬盘,内存中的待写入数据可进行去冗余,从而能够减少写入固态硬盘中的数据量,降低了写放大,从而延长了固态硬盘的寿命,提高固态硬盘的存储利用率。在存储器中进行数据去冗余,不需要在内存和固态硬盘之间进行数据搬移,从而减小了数据合并的开销。
根据第二方面,在第二方面的第一种可能中,上述数据写入方法还包括:控制器接收待写入数据;控制器获取待写入数据的写频率级别,写频率级别用于表示待写入数据的写频率所在的频率范围,高写频率级别对应的写频率高于低写频率级别对应的写频率;控制器根据待写入数据的写频率级别,设置待写入数据的写盘时延,高写频率级别对应的写盘时延大于低写频率级别对应的写盘时延;控制器统计写盘时延到达时存储器中待写入固态硬盘的所有待写入数据的数据量,包括:控制器保存待写入数据至存储器后启动计时,在达到写盘时延时,控制器统计写盘时延到达时存储器中待写入固态硬盘的所有待写入数据的数据量。
按照写频率级别设置写盘时延,使得一段时间内高写频率级别的待写入数据写入固态硬盘的次数减少,从而减少数据写入固态硬盘的次数,避免写盘次数过多对固态硬盘造成的伤害,延长固态硬盘寿命。
根据第二方面的第一种可能,在第二方面的第二种可能中,控制器根据待写入数据的写频率级别,设置待写入数据的写盘时延,包括:控制器根据待写入数据的写频率级别,设置待写入数据的写盘权重,高写频率级别对应的写盘权重低于低写频率级别对应的写盘权重;控制器根据写盘权重,设置待写入数据的写盘时延,高写盘权重对应的写盘时延低于低写盘权重对应的写盘时延。通过设置写盘权重这一中间参数,建立写频率级别与写盘时延的关系。
根据第二方面的第一种可能或第二种可能,在第二方面的第三种可能中,写频率级别包括第一写频率级别,第一写频率级别对应的写频率低于高写频率级别对应的写频率,第一写频率级别对应的写频率低于或等于最低时延频率阈值,第一写频率级别对应的写盘时延为0。
根据第二方面或第二方面的第一种至第三种可能中的任意一种可能,在第二方面的第四种可能中,高写频率级别对应的写盘量小于低写频率级别对应的写盘量。针对高写频率级别的待写入数据,设置较小的写盘量,从而减少一段时间内写入固态硬盘中的数据量,减少写盘对固态硬盘的损伤,进一步提高固态硬盘的寿命。
根据第二方面,在第二方面的第五种可能中,待写入数据包括热待写入数据,热待写入数据的写频率级别高于或等于热数据频率级别阈值。针对存储器中的热数据周期性去除冗余数据,从而达到资源占用和数据检查清理的平衡。
第三方面,本申请提供了一种数据写入装置,包括:第一获取模块,用于获取待写入数据的写频率级别,写频率级别用于表示待写入数据的写频率所在的频率范围,高写频率级别对应的写频率高于低写频率级别对应的写频率;第一设置模块,用于根据待写入数据的写频率级别,设置待写入数据的写盘时延,高写频率级别对应的写盘时延大于低写频率级别对应的写盘时延;第一去冗余模块,用于确认存储器中存在与待写入数据的关键字相同的旧版本数据时,保存待写入数据至存储器,以及删除存储器中的旧版本数据,待写入数据的关键字用于标识待写入数据;第一保存模块,用于保存待写入数据至存储器后启动计时,在达到写盘时延时,保存待写入数据至固态硬盘。
根据第三方面,在第三方面的第一种可能中,第一设置模块具体可用于:根据待写入数据的写频率级别,设置待写入数据的写盘权重,高写频率级别对应的写盘权重低于低写频率级别对应的写盘权重;根据写盘权重,设置待写入数据的写盘时延,高写盘权重对应的写盘时延低于低写盘权重对应的写盘时延。
根据第三方面或第三方面的第一种可能,在第三方面的第二种可能中,写频率级别包括第一写频率级别,第一写频率级别对应的写频率低于高写频率级别对应的写频率,第一写频率级别对应的写频率低于或等于最低时延频率阈值,第一写频率级别对应的写盘时延为0。
根据第三方面,在第三方面的第三种可能中,待写入数据包括热待写入数据,热待写入数据的写频率级别高于或等于热数据频率级别阈值。
第四方面,本申请提供了一种数据写入装置,包括:第二去冗余模块,用于确认存储器中存在与待写入数据的关键字相同的旧版本数据时,保存待写入数据至存储器,以及删除存储器中的旧版本数据,待写入数据的关键字用于标识待写入数据;统计模块,用于统计写盘时延到达时存储器中待写入固态硬盘的所有待写入数据的数据量,所有待写入数据为写频率级别相同的数据;第二获取模块,用于获取与写频率级别对应的写盘量;确认模块,用于确认所有待写入数据的数据量是否大于与写频率级别对应的写盘量;第二保存模块,用于在确认所有待写入数据的数据量大于与写频率级别对应的写盘量时,按照所有待写入数据中每个数据写入存储器的时间顺序保存所有待写入数据中的部分数据至固态硬盘,所有待写入数据中的部分数据的数据量与写频率级别对应的写盘量相同。
根据第四方面,在第四方面的第一种可能中,上述数据写入装置还包括:接收模块,用于接收待写入数据;第三获取模块,用于获取待写入数据的写频率级别,写频率级别用于表示待写入数据的写频率所在的频率范围,高写频率级别对应的写频率高于低写频率级别对应的写频率;第二设置模块,用于根据待写入数据的写频率级别,设置待写入数据的写盘时延,高写频率级别对应的写盘时延大于低写频率级别对应的写盘时延;统计模块具体用于:保存待写入数据至存储器后启动计时,在达到写盘时延时,控制器统计写盘时延到达时存储器中待写入固态硬盘的所有待写入数据的数据量。
根据第四方面的第一种可能,在第四方面的第二种可能中,第二设置模块具体用于:根据待写入数据的写频率级别,设置待写入数据的写盘权重,高写频率级别对应的写盘权重低于低写频率级别对应的写盘权重;根据写盘权重,设置待写入数据的写盘时延,高写盘权重对应的写盘时延低于低写盘权重对应的写盘时延。
根据第四方面的第一种可能或第二种可能,在第四方面的第三种可能中,写频率级别包括第一写频率级别,第一写频率级别对应的写频率低于高写频率级别对应的写频率,第一写频率级别对应的写频率低于或等于最低时延频率阈值,第一写频率级别对应的写盘时延为0。
根据第四方面或第四方面的第一种至第三种可能中的任意一种可能,在第四方面的第四种可能中,高写频率级别对应的写盘量小于低写频率级别对应的写盘量。
根据第四方面,在第四方面的第五种可能中,待写入数据包括热待写入数据,热待写入数据的写频率级别高于或等于热数据频率级别阈值。
第五方面,本申请提供了一种存储***,包括控制器和固态硬盘,控制器包括存储器和处理器,存储器存储有可在处理器上运行的程序,处理器执行程序时实现上述第一方面中任一技术方案的数据写入方法。
第六方面,本申请提供了本申请提供了一种存储***,包括控制器和固态硬盘,控制器包括存储器和处理器,存储器存储有可在处理器上运行的程序,处理器执行程序时实现上述第二方面中任一技术方案的数据写入方法。
第七方面,本申请提供了一种存储介质,存储介质上存储有程序,程序被处理器执行时实现上述第一方面中任一技术方案的数据写入方法。
第八方面,本申请提供了一种存储介质,存储介质上存储有程序,程序被处理器执行时实现上述第二方面中任一技术方案的数据写入方法。
第九方面,本申请提供了一种控制器,包括接口卡、存储器和处理器,接口卡用于接收数据,存储器存储数据和可在处理器上运行的程序,处理器执行程序时,所述控制器实现上述第一方面中任一技术方案的数据写入方法。
第十方面,本申请提供了一种控制器,包括接口卡、存储器和处理器,接口卡用于接收数据,存储器存储数据和可在处理器上运行的程序,处理器执行程序时,所述控制器实现上述第一方面中任一技术方案的数据写入方法。
本申请提供了一种数据写入方法、装置、存储***、存储介质与控制器。在本申请中,可根据待写入数据的写频率级别,设置写盘时延,写盘时延可控制待写入数据何时写入固态硬盘。从而使得一段时间内高写频率级别的待写入数据写入固态硬盘的次数减少,从而减少数据写入固态硬盘的次数;在存储器中删除待写入数据的关键字相同的旧版本数据,从而实现去冗余,减小保存至固态硬盘的数据量,从而降低了数据保存至固态硬盘过程中的写放大,进而提高固态硬盘的寿命。
本申请提供了一种数据写入方法、装置、存储***、存储介质与控制器。在本申请中,在存储器中删除待写入数据的关键字相同的旧版本数据。若同一写频率级别对应的待写入数据的数据量大于该写频率级别对应的写盘量,按照所述所有待写入数据中数据写入存储器的时间顺序保存所有待写入数据中与写盘量的数据量相同的数据至固态硬盘,分次将同一写频率级别对应的待写入数据保存至固态硬盘。在存储器中删除待写入数据的关键字相同的旧版本数据,从而实现去冗余,在去冗余后将待写入数据保存至固态硬盘中,减小保存至固态硬盘的数据量,从而降低了数据保存至固态硬盘过程中的写放大,进而提高固态硬盘的寿命。
附图说明
图1为本发明实施例中一种存储***的结构示意图;
图2为图1中的控制器的结构示例图;
图3为本发明实施例中一种LSM-Tree机制的示意图;
图4为本发明一实施例中一种数据写入方法的流程图;
图5a为本发明实施例中一种写频率级别与写盘权重的函数曲线;
图5b为本发明实施例中一种写盘权重与写盘时延的函数曲线;
图6为本发明实施例中一种对存储器中待写入数据的去冗余排序合并的过程示意图;
图7为本发明实施例中一种待写入数据保存至固态硬盘的示意图;
图8为本发明另一实施例中一种数据写入方法的流程图;
图9为本发明实施例中一种写盘权重与写盘量的函数曲线;
图10为本发明实施例的数据保存至固态硬盘的说明示意图;
图11为本发明一实施例中一种数据写入装置的结构示意图;
图12为本发明另一实施例中一种数据写入装置的结构示意图。
具体实施方式
下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
层级数据库(level database)数据存储采用日志结构合并树(Log-StructuredMerge Tree,LSM-Tree)的结构,将十亿级别规模的Key-Value型数据进行持久化存储,Key-Value型数据为关键字(即key)和值(即value)的组合,所述关键字可以唯一标识所述数据,所述值是指待写入存储***的数据(以下简称为数据)。LSM-Tree将硬盘的随机写转化为顺序写,从而提高了写数据的速度。本发明实施例将LSM-Tree应用于包含固态硬盘(SolidState Disk,SSD)的存储***中。
下面结合图1和图2,对本发明实施例所描述的,将LSM-Tree应用于包含固态硬盘的一种存储***进行介绍。
如图1所示,存储***包括至少一个控制器11和至少一个固态硬盘12。
控制器11通过存储区域网络(storage area network,SAN)与主机(图中未示出)连接。控制器11可以是一种计算设备,如服务器、台式计算机等等。
在控制器11上安装有写入***以及应用程序。控制器11可以接收来自主机的输入输出(I/O)请求。控制器11还可以存储I/O请求中携带的数据,并且将该数据写入固态硬盘12中。控制器11属于***控制器,***控制器是独立的设备,不同于固态硬盘12中的控制芯片。本实施例将固态硬盘12的控制芯片称为固态硬盘控制器。如无特别指明,本实施例中的控制器都是指***控制器。
固态硬盘12是以闪存(英文:flash memory)芯片为存储介质的存储器,又名固态驱动器(Solid State Drive,SSD)。
图2是图1中的控制器11的结构示例图,如图2所示,控制器11包括接口卡110、处理器112、存储器111和接口卡113。
接口卡110,用于和主机通信,用于接收主机发送的指令,控制器11可以通过接口卡110接收主机的写入指令。例如,写入指令包括关键字(即key)和值(即value),关键字是值的标识。举一个具体的例子,值可以是学生的各种信息,关键字可以是该学生的学号,或者其他表示该学生某一方面属性的标识。
接口卡113,用于和固态硬盘12通信,控制器11可以通过接口卡113将写数据指令(包括上面描述的写入指令中的关键字和数据,以及控制器11为所述数据分配的逻辑地址)发送给固态硬盘12存储。
处理器112,是一个中央处理器(英文:central processing unit,CPU)。在本发明实施例中,处理器112可以用于接收来自主机的写入指令或者读取指令并且处理这些指令。处理器112还可以将所述写入指令中的数据发送给固态硬盘12。此外,处理器112,还可以用于在一定条件下执行文件的合并操作。处理器112,还用于为数据分配逻辑地址,保存关键字与分配的逻辑地址之间的对应关系,以用于将来根据关键字与分配的逻辑地址之间的对应关系,读取数据。存储器111,包括易失性存储器,非易失性存储器或其组合。易失性存储器例如为随机访问存储器(random-access memory,RAM)。非易失性存储器例如为软盘、硬盘、固态硬盘(solid state disk,SSD)、光盘等各种可以存储程序代码的机器可读介质。
存储器111具有保电功能,保电功能是指***发生掉电又重新上电时,存储器111中存储的数据也不会丢失。存储器111可以有一个或者多个,用于临时存储从主机接收的数据或从固态硬盘12读取的数据,例如控制器11接收主机发送的多个写入指令时,可以将所述多个写入指令中的数据暂时保存在存储器111中。
此外,存储器111还保存有内存表(即memtable)和不可写内存表(即immutablememtable)。根据LSM-Tree机制,内存表用于存储一段时间内接收的主机发送的写入指令。示例性的,内存表中存储的写入指令可以如表1所示:
Key |
Value |
0001 |
张三 |
0002 |
李四 |
…… |
…… |
0003 |
王五 |
表1
如表1所示,内存表中保存有多组数据。控制器11将数据写入存储器111的内存表中的同时,还会将数据的版本信息保存至内存表中,即内存表中保存的每组数据都包括关键字、值和版本信息。关键字和值已在上面的段落中进行了介绍,这里不再赘述。版本信息是指数据写入的时间信息,或者其他用以标识数据写入的先后顺序的信息。可以理解的是,本实施例中的版本信息(也可以称为版本或时间点)可以精确到月,也可以精确到日、时、分、秒。本实施例并不对版本信息的形式和精确度进行任何限定。另外,只要在这段时间内写入的数据都会保存在内存表中。因此,内存表中包含对应不同关键字的数据。数据的关键字在内存表中按照由小到大的顺序排布,便于后续快速查找数据,控制器11通过对关键字key进行大小排序,将新写的数据写入内存表中的合适的位置上,以保持内存表中存储的数据的关键字Key的有序性排列。
图3为本发明实施例中一种LSM-Tree机制的示意图。如图3所示,根据LSM-Tree机制,主机的应用(即application)通过应用程序编程接口(Application ProgrammingInterface,API)发送写入指令至控制器11,控制器11接收到所述写入指令后,生成日志文件(即LOG),日志文件记录有数据的版本信息(即Version),然后控制器11将数据保存至存储器111中的内存表中。当内存表中保存的所有数据的数据量达到预设阈值时,所述内存表将转化为不可写内存表。不可写内存表不会再接收新的数据,存储器111中会再创建一个新的内存表。所述新的内存表将继续接收数据。因此存储器111中可能保存有一个或多个不可写内存表,但只有一个内存表。每个不可写内存表中的数据是固化的,而内存表可以不断接收新写入的数据。在LSM-Tree机制中,每个不可写内存表中的数据被倾倒(即dump)在一个静态排序表(Static Sorted Table,SST)文件(以下简称为文件)中。可以理解的是,所述固态硬盘12中包含多个文件,每个文件与一个不可写内存表对应。所述文件用于接收由所述不可写内存表倾倒而来的数据。本实施例中的第一文件层级的文件包括直接由不可写内存表倾倒而来的数据,所述第一文件层级的文件也是未经过合并的文件。
下面以一个不可写内存表中的数据被倾倒在一个文件中为例说明其具体过程。首先,控制器11为待倾倒的文件分配文件标识(文件标识是文件的标识的简称),所述文件标识用于唯一指示所述待倾倒的文件。然后,控制器11为所述待倾倒的文件中的数据分配一段逻辑地址,并且保存所述文件标识与保存的逻辑地址之间的对应关系。控制器11将这些数据以及分配的逻辑地址发送给固态硬盘12,固态硬盘12将这些数据写入擦除块中,数据保存在擦除块中的实际地址为数据的物理地址。固态硬盘12记录所述逻辑地址与物理地址之间的对应关系,并且将所述逻辑地址与物理地址之间的对应关系发送给控制器11。控制器11将所述逻辑地址与物理地址之间的对应关系保存在存储器111中。
本发明实施例提供了一种数据写入方法、装置、存储***与存储介质,可应用于分布式数据库形式的固态硬盘与日志结构合并树的***即SSD-LSM存储***中。固态硬盘中包括分为多个文件层级的多个文件。如图3所示,固态硬盘12中包括第一文件层级至第N文件层级,N为大于1的正整数。在需要将数据写入固态硬盘的场景中,先将数据存储入存储器,可以是内存,再将存储器中的数据写入固态硬盘,即倾倒至第一文件层级的文件中。当固态硬盘12中第i文件层级中文件的数据的量达到门限值,将第i层文件层级中文件的数据与第i+1层文件层级中文件的数据合并,将合并后的数据存储在第i+1层文件层级中文件中。需要说明的是,合并两层文件层级中文件的数据只能在相邻的两层文件层级中进行,且可以在后台异步进行。在本发明实施例中,可根据待写入数据的写频率级别,设置写盘时延,写盘时延可控制待写入数据何时写入固态硬盘。从而使得一段时间内高写频率级别的待写入数据写入固态硬盘的次数减少,从而减少数据写入固态硬盘的次数;在存储器中对待写入数据进行去冗余排序合并,减小保存至固态硬盘的数据量,从而降低了数据保存至固态硬盘过程中的写放大,进而提高固态硬盘的寿命。在进行数据查找时,调用的是存储器中的数据和固态硬盘中的数据,因此并不会影响存储数据以及查找数据的功能。
图4为本发明一实施例中一种数据写入方法的流程图。图2所示的数据写入方法可应用于图1所示的存储***,也可应用于图3所示的LSM-Tree机制。如图4所示,数据写入方法可由控制器11执行,具体的,可由控制器11中的处理器112执行,具体可包括以下步骤:
在步骤S201中,控制器获取待写入数据的写频率级别。
其中,待写入数据为等待写入固态硬盘中的数据。比如,若在存储器中发现非空的不可写内存表,则表示存在待写入数据。写频率级别为待写入数据被写入的频率的等级,用于表示待写入数据的写频率所在的频率范围,可根据待写入数据的写频率得到。高写频率级别对应的写频率高于低写频率级别对应的写频率。待写入数据的写频率为待写入数据写入存储器的频率,可在待写入数据每次写入时进行记录,然后利用记录进行统计,从而得到写频率。在一个示例中,写频率级别可为一个写频率区间,不同写频率级别对应的写频率区间完全不重叠。高写频率级别对应的写频率高于低写频率级别对应的写频率。写频率级别越高,写频率级别对应的写频率区间中的写频率越高。即写频率级别越高,写频率级别对应的写频率越高。比如,写频率级别A1高于写频率级别A2,则写频率级别A1对应的写频率区间中的任意一个写频率均高于写频率级别A2对应的写频率区间中的任意一个写频率。待写入数据在写入存储器后,可按照待写入数据的写频率级别,将待写入数据分为多个数据流。同一个数据流中的数据的写频率级别相同,不同数据流中的数据的写频率级别不同。在对待写入数据进行分流的过程中,可记录各待写入数据的写频率级别。
在步骤S202中,控制器根据待写入数据的写频率级别,设置待写入数据的写盘时延。
其中,写盘时延为待写入数据写入固态硬盘前需要等待的时长。比如,写盘时延为5秒,则表示待写入数据在5秒后写入固态硬盘。又比如,写盘时延为0,则可控制待写入数据不需等待,直接写入固态硬盘。
高写频率级别对应的写盘时延大于低写频率级别对应的写盘时延。也就是说,写频率级别越高,写盘时延越大。写频率级别越低,写盘时延越小。
可设定写频率级别与写盘时延的函数关系,将写盘时延设为写频率级别的递增函数。在一种具体实现方式中,控制器根据待写入数据的写频率级别,设置待写入数据的写盘权重,写盘权重随着写频率级别的提高而降低,即高写频率级别对应的写盘权重低于低写频率级别对应的写盘权重。控制器利用写盘权重,设置待写入数据的写盘时延,写盘时延随着写盘权重的降低而增加,即高写盘权重对应的写盘时延低于所述低写盘权重对应的写盘时延。
其中,写盘权重为影响写盘时延的中间参数,写盘权重随着写频率级别的提高而降低。可将写盘权重设置为写频率级别的单向递减函数,比如,图5a为本发明实施例中一种写频率级别与写盘权重的函数曲线,如图5a所示,函数为wi=F_weight(freqi),其中,wi为第i个数据流的写盘权重,freqi为第i个数据流的写频率级别,F_weight()为单向递减函数。可将写盘时延设置为写盘权重的单向递增函数,即写盘时延随着写盘权重的降低而增加。比如,图5b为本发明实施例中一种写盘权重与写盘时延的函数曲线,如图5b所示,Ti=delay_write_ssd(wi),Ti为第i个数据流的写盘时延,wi为第i个数据流的写盘权重,delay_write_ssd()为递减函数。也就是说,写盘权重越高,则该数据流中的待写入数据在写入固态硬盘前需要等待的时延越小。可通过建立写盘权重这一中间参数,先建立写频率级别与写盘权重的关系,再建立写盘时延与写盘权重的关系,最终实现写频率级别与写盘时延之间关系的建立。
在得到写盘时延后,控制器按照写盘时延,将待写入数据保存至固态硬盘,高写频率级别的待写入数据的写盘时延大于低写频率级别的待写入数据的写盘时延。写入存储器的待写入数据初始形成内存表,当内存表中的数据量达到状态改变门限时,内存表转变为不可写内存表。将存储器中的不可写内存表按照设置的写盘时延,保存至固态硬盘。具体的,可利用一次或多次的写入调度,按照写盘时延,将待写入数据保存至固态硬盘。具体的,可按照写盘时延控制待写入数据在哪一次的写入调度中保存至固态硬盘。
通过设置写盘时延,将写频率级别高的待写入数据的写盘时延增大,减少在一段时间内高写频率级别的待写入数据写盘的次数。从而避免写频率级别高的数据高频率写盘对固态硬盘造成的伤害,延长了固态硬盘的寿命。写频率级别不同的待写入数据基于不同的写盘时延,在不同的写入调度中分别将不同写频率级别的待写入数据写入固态硬盘中。在相同的一段时间内,按照本发明实施例中的数据写入方法向固态硬盘中写入数据的次数少于利用现有技术向固态硬盘中写入数据的次数。
在将待写入数据保存至固态硬盘之前,可对存储器中的待写入数据进行去冗余排序合并。对存储器中的待写入数据进行去冗余排序合并的步骤具体可包括步骤S203和步骤S204。
在步骤S203中,控制器确认存储器中存在与待写入数据的关键字相同的旧版本数据时,保存待写入数据至存储器,以及删除存储器中的旧版本数据。
待写入数据的类型为键值,即待写入数据为包括关键字和值的组合,待写入数据的关键字用于标识待写入数据。写入存储器中的待写入数据包括不同时刻写入的数据,因此会出现关键字相同,但值却不同的数据。关键字相同但值却不同即为数据的版本不同。在关键字相同的基础上,先写入存储器中的待写入数据相对于后写入存储器中的待写入数据为旧版本数据。其中,待写入数据的新版本数据为应该保存至固态硬盘的值,与待写入数据的新版本数相比较早写入存储器中的待写入数据旧版本数据可作为失效数据清除。
为了尽量减小将待写入数据保存至固态硬盘过程中的写放大,可将存储器中的待写入数据关键字相同的旧版本数据删除,最终将待写入数据关键字相同的新版本数据保存至固态硬盘。
在一个示例中,将存储器中的待写入数据关键字相同的旧版本数据删除后,控制器还可按照固态硬盘中排序规则,在存储器中控制对经过删除后的待写入数据进行排序。
固态硬盘中的排序规则可以依据存储场景和存储需求设定,比如,排序规则可为关键字中的字母按组成顺序,依次依照字母在字母表中的顺序对数据进行排序。首先按照关键字的开头字母在字母表中的顺序对数据进行排序;若出现开头字母相同的情况,则对比开头字母相同的关键字的第二个字母,按照第二个字母在字母表中的顺序对数据进行排序;以此类推,直至将完成所有数据的排序。在存储器中对经过删除后的待写入数据进行排序使用固态硬盘中的排序规则,可在存储器中进行待写入数据的去冗余排序合并,不需要在存储器和固态硬盘之间进行数据搬移,从而减小了去冗余排序合并的开销。
比如,图6为本发明实施例中一种对存储器中待写入数据的去冗余排序合并的过程示意图。如图6所示,排序规则可以为按照键的开头字母在字母表中的顺序对数据进行排序。存储器中包括不可写内存表0和不可写内存表1,可以得到,不可写内存表0中的键值“Jay”“v3”与不可写内存表1中的“Jay”“v6”的关键字相同。其中,不可写内存表1中的“Jay”“v6”的写入存储器的时间在后,因此合并后得到的新的不可写内存表new中去除冗余数据“Jay”“v3”,保留“Jay”“v6”。且根据所有数据的关键字的开头字母在字母表中的顺序,将数据重新排序。
比如,图7为本发明实施例中一种待写入数据保存至固态硬盘的示意图。如图7所示,在方式①中,将数据流中的数据按照时间先后顺序,写入固态硬盘中的数据块Block0、Block1和Block2中,共占用3个数据块。在方式②中,按照数据流中的数据的写频率级别,将数据分别存在3个数据块Block0、Block1和Block2中,Block0中的数据的写频率级别相同,Block1中的数据的写频率级别相同,Block2中的数据的写频率级别相同。在本发明实施例的方式③中,在存储器中经过对待写入数据的去冗余排序合并后,实际写入固态硬盘的数据只需要占用2个数据块,减少了写入固态硬盘中一个数据块量的数据。能够在保证有效数据即用户层需要写入固态硬件的数据的基础上,减少实际写入固态硬盘的数据,从而降低了写放大。
在存储器中进行待写入数据的去冗余排序合并,可以减少写入固态硬盘的不必要的数据的量,也可以减少写入固态硬盘后的数据的合并的需求,降低了数据写入固态硬盘过程中的写放大,并提高固态硬盘的存储利用率。而且,利用本发明实施例中数据写入的方法,在存储器中进行待写入数据的去冗余排序合并,不需要在存储器和固态硬盘之间进行数据搬移,从而减小了数据合并的开销。
在步骤S204中,控制器保存待写入数据至存储器后启动计时,在达到写盘时延时,保存待写入数据至所述固态硬盘。
在待写入数据保存至存储器后启动计时,在计时达到写盘时延时,将待写入数据写入固态硬盘。计时可采用正计时或倒计时的方式。
在一个示例中,若计时采用倒计时的方式,当写盘时延为0,表示待写入数据不需要等待,则控制器在当前的写入调度中,将写盘时延为0的待写入数据直接写入固态硬盘。
在一个示例中,若计时采用倒计时的方式,当写盘时延非0,则需要等待待写入数据的写盘时延减小至0时,再将待写入数据写入固态硬盘。具体的,控制器在当前写入结束后,在下一次的写入到来前按照调整步长减小待写入数据的写盘时延。写盘时延会随着时间的推移而减小。若在经过一次写入后,写盘时延减小但未减小至0,则在下一次的写入中仍不将待写入数据写入固态硬盘。继续等待下一次的写入,并在此将写盘时延减小。直至在某一次的写入之前,该待写入数据的写盘时延已经减小至0,将写盘时延为0的待写入数据直接保存至固态硬盘。待写入数据保存至固态硬盘可周期性进行,具体的写入时间可由控制器控制,写入的周期可由控制器根据当前工作场景和工作需求设定。比如,写盘时延为6秒,采用倒计时的方式,按照调整步长减小写盘时延的周期为1秒,则调整步长为1秒。也就是说,每经过1秒,写盘时延减小1秒。
比如,在待写入数据写入存储器时根据写频率级别得到的初始的写盘时延为3秒,且预设步长为1秒。由于初始的写盘时延非0,因此,在待写入数据写入存储器后控制器第一次调度的写入机会中并不将待写入数据保存至固态硬盘,而且将写盘时延减小至2秒。在待写入数据写入存储器后控制器第二次调度的写入机会中,写盘时延非0,仍不将待写入数据保存至固态硬盘,而且将写盘时延减小至1秒。在待写入数据写入存储器后控制器第三次调度的写入机会中,写盘时延非0,仍不将待写入数据保存至固态硬盘,而且将写盘时延减小至0。则在待写入数据写入存储器后控制器第四次调度的写入机会中,将待写入数据写入固态硬盘。
根据写盘时延,将不同写盘时延的待写入数据分次写入固态硬盘,使得固态硬盘中的数据块中存储写频率相近的数据,数据块中数据的失效时间相近,从而可整块回收数据块,减少垃圾回收。
需要说明的是,写频率级别包括第一写频率级别,第一写频率级别对应的写频率低于高写频率级别对应的写频率,第一写频率级别对应的写频率低于或等于最低时延频率阈值,第一写频率级别对应的所述写盘时延为0。也就是说,若写频率低于或等于最低时延频率阈值,则该写频率属于第一写频率级别,该写频率对应的写盘时延也为0。若引入写盘权重,也可看做当写盘权重上升至一定阈值时,基于写盘权重得到的写盘时延为0。写盘权重高于该一定阈值时,写盘时延为0,不再变化。
在一个示例中,若引入写盘权重,则可以在每一次的写入调度到来前,将上一次写入调度时待写入数据的写盘权重增加,从而减小写盘时延。需要说明的是,除了根据写频率级别计算的得到的初始的写盘时延外,每一次写入对应的写盘时延是上一次写入对应的写盘时延按照调整步长减小得到的。
在日志结构的合并树存储***中,在存储器中会存在重复的冗余数据。待写入数据首先写入至存储器中,可存储为内存表,当内存表中的待写入数据达到一定量后,内存表变更为不可写内存表,不可写内存表中的内容不可修改。同时会新建内存表用于存储新写入存储器的待写入数据。因此内存表和不可写内存表中可能存在一个或多个数据的多个版本。尤其是在大业务带宽下维护多个不可写内存表的情况下,一个数据出现多个版本的可能性更大。在一个示例中,待写入数据可包括热待写入数据。热待写入数据的写频率级别高于或等于热数据频率级别阈值。热数据频率级别阈值可用于区分热待写入数据和冷待写入数据,写频率级别高于或等于热数据频率级别阈值的待写入数据为热待写入数据,写频率级别低于热数据频率级别阈值的待写入数据为冷待写入数据。热待写入数据中的数据出现多个版本的可能性远远大于冷待写入数据中的数据出现多个版本的可能性。因此,可针对存储器中的热待写入数据进行去冗余排序合并。
所有待写入数据均进行冗余检查,存储***的时延和功耗开销均比较大,存在一定的资源浪费。由于热待写入数据中的数据出现多个版本的可能性远远大于冷待写入数据中的数据出现多个版本的可能性,可只针对热待写入数据进行去冗余。一方面,能够减少写入固态硬盘的无效数据。另一方面,也可以节省一部分存储***的资源。从而达到效率和资源节省的平衡。
图8为本发明另一实施例中一种数据写入方法的流程图。图8所示的数据写入方法是在存储器中进行待写入数据的关键字相同的旧版本数据的删除,利用写频率级别,设置待写入数据的写盘量,从而按照写盘量将待写入数据写入固态硬盘。如图8所示,数据写入方法可由控制器11执行,具体的,可由控制器11中的处理器112执行,具体可包括以下步骤:
在步骤S301中,控制器接收待写入数据。
具体的,控制器接收待写入数据,并将数据写入控制器中的存储器即内存中。
在步骤S302中,控制器获取待写入数据的写频率级别。
其中,写频率级别用于表示待写入数据的写频率所在的频率范围。高写频率级别对应的写频率高于低写频率级别对应的写频率。步骤S302的说明可参见上述实施例中步骤S201的相关说明部分。
在步骤S303中,控制器根据待写入数据的写频率级别,设置待写入数据的写盘时延。
其中,高写频率级别对应的写盘时延大于低写频率级别对应的写盘时延。步骤S303的说明可参见上述实施例中步骤S202的相关说明部分。
在步骤S304中,控制器确认存储器中存在与待写入数据的关键字相同的旧版本数据时,保存待写入数据至存储器,以及删除存储器中的旧版本数据。
其中,待写入数据的关键字用于标识待写入数据。步骤S304的说明可参见上述实施例中步骤203的相关说明部分。
在本发明实施例中,可在存储器中对待写入数据进行去冗余排序合并,减小保存至固态硬盘的数据量,从而降低数据保存至固态硬盘过程中的写放大,并延长了固态硬盘的使用寿命。
在步骤S305中,控制器保存待写入数据至存储器后启动计时,在达到写盘时延时,控制器统计写盘时延到达时存储器中待写入固态硬盘的所有待写入数据的数据量。
其中,所有待写入数据为写频率级别相同的数据。写盘时延的相关说明可参见上述实施例步骤S202和步骤S204的相关说明部分。需要注意的是,本发明实施例中的写盘时延并不限定于根据写频率级别设定。
在一个示例中,待写入数据的时延可根据写频率级别设定。在达到写盘时延时,统计处于同一写频率级别的待写入数据的数据量,便于在后续步骤S307中进行判断流程。
在步骤S306中,控制器获取与写频率级别对应的写盘量。
写盘量为在一次写入中保存入固态硬盘的数据量。比如,写盘量为64个字节,则待写入数据在一次写入中写入固态硬盘的数据量为64个字节。
在一个示例中,高写频率级别对应的写盘量小于低写频率级别对应的写盘量。也就是说,写频率级别越高,写盘量越小。写频率级别越低,写盘量越大。
可设定写频率级别与写盘量的函数关系,将写盘量设为写频率级别的递减函数。在一种具体实现方式中,控制器根据待写入数据的写频率级别,设立待写入数据的写盘权重,高写频率级别对应的写盘权重低于低写频率级别对应的写盘权重。控制器利用写盘权重,设置待写入数据的写盘量,高写盘权重对应的写盘量大于低写盘权重对应的写盘量。
其中,写盘权重为影响写盘量的中间参数,写盘权重随着写频率级别的提高而降低。在一个示例中,可将写盘量设置为写盘权重的单向递增函数,即写盘量随着写盘权重的增加而增加。比如,图9为本发明实施例中一种写盘权重与写盘量的函数曲线,如图9所示,Qi=F_quant(wi),Qi为第i个数据流的写盘量,wi为第i个数据流的写盘权重,F_quant()为单向递增函数。也就是说,写盘权重越大,该数据流中的待写入数据一次能够写入固态硬盘的数据量就越大。可通过建立写盘权重这一中间参数,先建立写频率级别与写盘权重的关系,再建立写盘量与写盘权重的关系,最终实现写频率级别与写盘量之间关系的建立。结合图5a与图9,即可得到写频率级别与写盘量的对应关系。
通过按照写频率级别设置写盘量,将写频率级别高的待写入数据的写盘量减小,减少高写频率级别的待写入数据每次写盘写入的数据量。从而避免写频率级别高的数据大量写盘对固态硬盘造成的伤害,延长了固态硬盘的寿命。写频率级别不同的待写入数据基于不同的写盘量,在不同的写入调度中分别将不同写频率级别的待写入数据写入固态硬盘中。在相同的一段时间内,按照本发明实施例中的数据写入方法向固态硬盘中写入数据的数据量小于利用现有技术向固态硬盘中写入数据的数据量。
在步骤S307中,控制器确认所有待写入数据的数据量是否大于与写频率级别对应的写盘量。
若控制器可按照写盘量,将待写入数据分别保存至固态硬盘。写入存储器的待写入数据初始形成内存表,当内存表中的数据量达到状态改变门限时,内存表转变为不可写内存表。将存储器中的不可写内存表按照设置的写盘量,写入固态硬盘。具体的,可在一次或多次的写入中,按照写盘量,将待写入数据写入固态硬盘。具体的,可按照写盘量控制待写入数据共通过几次的写入保存至固态硬盘,以及待写入数据每一次保存至固态硬盘中的数据的数据量。在得到写盘量后,确认所有待写入数据的数据量对否大于所有待写入数据的写频率级别对应的写盘量。
若所有待写入数据的数据量小于或等于该写频率级别对应的写盘量,则可在当前的写入中,将该写频率级别下的所有待写入数据一次性直接保存至固态硬盘。
在步骤S308中,控制器在确认所有待写入数据的数据量大于与写频率级别对应的写盘量时,按照所有待写入数据中每个数据写入存储器的时间顺序保存所有待写入数据中的部分数据至固态硬盘。
其中,所有待写入数据中的部分数据的数据量与写频率级别对应的写盘量相同。在一个示例中,若同一写频率级别下经过去冗余排序合并的所有待写入数据的数据量大于该写频率级别对应的写盘量,则控制器按照经过去冗余排序合并的所有待写入数据写入存储器的时间先后顺序,将待写入数据分为多次保存入固态硬盘中。比如,在当前的写入调度中,将经过去冗余排序合并的所有待写入数据中与写盘量相等数据量的数据保存至固态硬盘。控制器将经过去冗余排序合并的所有待写入数据中未写入固态硬盘的数据,按照写入存储器的时间先后顺序和写盘量,在下次的写入中保存至固态硬盘。
其中,下次的写入可指当前的写入之后的一次写入,也可以指当前的写入后的多次写入。比如,所有待写入数据按照写入存储器的时间先后顺序排列,包括等大小的数据A1、数据A2、数据A3和数据A4。则所有待写入数据依次写入固态硬盘的顺序为数据A1、数据A2、数据A3和数据A4。设写盘量为两个数据大小,则所有待写入数据可分两次写入固态硬盘。则在第一次写入中,将数据A1和数据A2保存至固态硬盘。在第二次写入中,将数据A3和数据A4保存至固态硬盘。
下面以一具体示例说明数据保存至固态硬盘的整个过程。图10为本发明实施例的数据保存至固态硬盘的说明示意图。如图10所示,待写入数据写入存储器,存储在存储器的内存表或不可写内存表中,在待写入数据写入存储器的过程中,可通过频率感知管理器获取待写入数据的写频率级别。根据待写入数据的写频率级别,将待写入数据划分为热待写入数据和冷待写入数据。利用冗余去除模块对热待写入数据进行冗余去除。利用写入调度器将冷待写入数据的数据流和热待写入数据的数据流写入固态硬盘。在将数据流写入固态硬盘之前,还可利用内存数据预合并模块对数据流中的数据进行合并,将经过合并后的数据写入固态硬盘中的文件。当第一文件层级中的数据量达到门限值时,利用合并模块将第一层文件层级中文件的数据与第二层文件层级中文件的数据合并,并将合并后的数据替换第二层文件层级中文件的原数据。以此类推,直至更新至第N文件层级。
图11为本发明一实施例中一种数据写入装置400的结构示意图。数据写入装置400可位于控制器11中。具体的,如图11所示,数据写入装置400包括第一获取模块401、第一设置模块402、第一去冗余模块403和第一保存模块404。
第一获取模块401,用于获取待写入数据的写频率级别,写频率级别用于表示待写入数据的写频率所在的频率范围,高写频率级别对应的写频率高于低写频率级别对应的写频率。示例性的,第一获取模块401的功能可由处理器112调用存储器111中的程序实现,或者,第一获取模块401的功能也可由控制器11中的接口卡110实现,其实现方式可参见上述实施例中的步骤S201。
第一设置模块402,用于根据待写入数据的写频率级别,设置待写入数据的写盘时延,高写频率级别对应的写盘时延大于低写频率级别对应的写盘时延。示例性的,第一设置模块402的功能可由处理器112调用存储器111中的程序实现,其实现方式可参见上述实施例中的步骤S202。
第一去冗余模块403,用于确认存储器中存在与待写入数据的关键字相同的旧版本数据时,保存待写入数据至存储器,以及删除存储器中的旧版本数据,待写入数据的关键字用于标识待写入数据。示例性的,第一去冗余模块403的功能可由处理器112调用存储器111中的程序实现,其实现方式可参见上述实施例中的步骤S203。
第一保存模块404,用于保存待写入数据至存储器后启动计时,在达到写盘时延时,保存待写入数据至固态硬盘。示例性的,第一保存模块404的功能可由处理器112调用存储器111中的程序实现,或者,第一保存模块404的功能也可由控制器11中的接口卡113实现,其实现方式可参见上述实施例中的步骤S204。
在本发明实施例中,可根据待写入数据的写频率级别,设置写盘时延,写盘时延可控制待写入数据何时写入固态硬盘。从而使得一段时间内高写频率级别的待写入数据写入固态硬盘的次数减少,从而减少数据写入固态硬盘的次数。在存储器中删除待写入数据的关键字相同的旧版本数据,从而实现去冗余,减小保存至固态硬盘的数据量,从而降低了数据保存至固态硬盘过程中的写放大,进而提高固态硬盘的寿命。
在一个示例中,第一设置模块402还用于:根据待写入数据的写频率级别,设置待写入数据的写盘权重,高写频率级别对应的写盘权重低于低写频率级别对应的写盘权重;根据写盘权重,设置待写入数据的写盘时延,高写盘权重对应的写盘时延低于低写盘权重对应的写盘时延。
可选的,写频率级别包括第一写频率级别,第一写频率级别对应的写频率低于高写频率级别对应的写频率,第一写频率级别对应的写频率低于或等于最低时延频率阈值,第一写频率级别对应的写盘时延为0。
可选的,待写入数据包括热待写入数据,热待写入数据的写频率级别高于或等于热数据频率级别阈值。
本发明实施例中的数据写入装置400的上述第一获取模块401、第一设置模块402、第一去冗余模块403和第一保存模块404可分开独立设置并实现各个模块各自的功能,也可将上述所有模块或其中的多个模块集成在一起,以一个控制芯片的方式实现,在此并不限定。
图12为本发明另一实施例中一种数据写入装置500的结构示意图。数据写入装置500可位于控制器11中。具体的,如图12所示,数据写入装置500包括第二去冗余模块501、统计模块502、第二获取模块503、确认模块504和第二保存模块505。
第二去冗余模块501,用于确认存储器中存在与待写入数据的关键字相同的旧版本数据时,保存待写入数据至存储器,以及删除存储器中的旧版本数据,待写入数据的关键字用于标识待写入数据。示例性的,第二去冗余模块501的功能可由处理器112调用存储器111中的程序实现,其实现方式可参见上述实施例中的步骤S304。
统计模块502,用于统计写盘时延到达时存储器中待写入固态硬盘的所有待写入数据的数据量,所有待写入数据为写频率级别相同的数据。示例性的,统计模块502的功能可由处理器112调用存储器111中的程序实现,其实现方式可参见上述实施例中的步骤S305。
第二获取模块503,用于获取与写频率级别对应的写盘量。示例性的,第二获取模块503的功能可由处理器112调用存储器111中的程序实现,或者,第二获取模块503的功能也可由控制器11中的接口卡110实现,其实现方式可参见上述实施例中的步骤S306。
确认模块504,用于确认所有待写入数据的数据量是否大于与写频率级别对应的写盘量。示例性的,确认模块504的功能可由处理器112调用存储器111中的程序实现,其实现方式可参见上述实施例中的步骤S307。
第二保存模块505,用于在确认所有待写入数据的数据量大于与写频率级别对应的写盘量时,按照所有待写入数据中每个数据写入存储器的时间顺序保存所有待写入数据中的部分数据至固态硬盘,所有待写入数据中的部分数据的数据量与写频率级别对应的写盘量相同。示例性的,第二保存模块505的功能可由处理器112调用存储器111中的程序实现,或者,第二保存模块505的功能也可由控制器11中的接口卡113实现,其实现方式可参见上述实施例中的步骤S308。
在本发明实施例中,在存储器中删除待写入数据的关键字相同的旧版本数据。若同一写频率级别对应的待写入数据的数据量大于该写频率级别对应的写盘量,按照所有待写入数据中数据写入存储器的时间顺序保存所有待写入数据中与写盘量的数据量相同的数据至固态硬盘,分次将同一写频率级别对应的待写入数据保存至固态硬盘。在存储器中删除待写入数据的关键字相同的旧版本数据,从而实现去冗余,在去冗余后将待写入数据保存至固态硬盘中,减小保存至固态硬盘的数据量,从而降低了数据保存至固态硬盘过程中的写放大,进而提高固态硬盘的寿命。
可选的,如图12所示,数据写入装置500还可包括接收模块506、第三获取模块507和第二设置模块508。
接收模块506,用于接收待写入数据。示例性的,接收模块506的功能可由处理器112调用存储器111中的程序实现,或者,接收模块506的功能也可由控制器11中的接口卡110和接口卡113实现,其实现方式可参见上述实施例中的步骤S301。
第三获取模块507,用于获取待写入数据的写频率级别,写频率级别用于表示待写入数据的写频率所在的频率范围,高写频率级别对应的写频率高于低写频率级别对应的写频率。示例性的,第三获取模块507的功能可由处理器112调用存储器111中的程序实现,其实现方式可参见上述实施例中的步骤S302。
第二设置模块508,用于根据待写入数据的写频率级别,设置待写入数据的写盘时延,高写频率级别对应的写盘时延大于低写频率级别对应的写盘时延。示例性的,第二设置模块508的功能可由处理器112调用存储器111中的程序实现,或者,第二设置模块508的功能也可由控制器11中的接口卡110实现,其实现方式可参见上述实施例中的步骤S303。
在一个示例中,统计模块502还用于:保存待写入数据至存储器后启动计时,在达到写盘时延时,控制器统计写盘时延到达时存储器中待写入固态硬盘的所有待写入数据的数据量。
在一个示例中,第二设置模块508还用于:根据待写入数据的写频率级别,设置待写入数据的写盘权重,高写频率级别对应的写盘权重低于低写频率级别对应的写盘权重;根据写盘权重,设置待写入数据的写盘时延,高写盘权重对应的写盘时延低于低写盘权重对应的写盘时延。
可选的,写频率级别包括第一写频率级别,第一写频率级别对应的写频率低于高写频率级别对应的写频率,第一写频率级别对应的写频率低于或等于最低时延频率阈值,第一写频率级别对应的写盘时延为0。
可选的,高写频率级别对应的写盘量小于低写频率级别对应的写盘量。
可选的,待写入数据包括热待写入数据,热待写入数据的写频率级别高于或等于热数据频率级别阈值。
本发明实施例中的数据写入装置500的上述第二去冗余模块501、统计模块502、第二获取模块503、确认模块504、第二保存模块505、接收模块506、第三获取模块507和第二设置模块508可分开独立设置并实现各个模块各自的功能,也可将上述所有模块或其中的多个模块集成在一起,以一个控制芯片的方式实现,在此并不限定。
本发明一实施例还提供一种存储介质,该存储介质上存储有程序,该程序被处理器执行时实现上述各个实施例中的数据写入方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。