降低NVMe固态硬盘写放大的方法、装置及计算机设备制造方法及图纸

技术编号:24330973 阅读:31 留言:0更新日期:2020-05-29 19:35
本申请涉及一种降低NVMe固态硬盘写放大的方法、装置、计算机设备及存储介质,其中该方法包括:获取固态硬盘支持的Stream个数、Stream ID以及每个Stream的SGS信息;为每个Stream分配独立的SGS写入点;根据应用程序中应用数据的刷新频率将不同刷新频率的数据绑定到对应的Stream中;根据建立好的绑定关系,为应用程序构建的所有写命令指定Stream ID;根据写命令中指定的Stream ID,将数据写入对应独立的SGS写入点。本发明专利技术利用NVMe的Stream功能将不同刷新频率的数据流进行分离,并为每个Stream建议独立的写入点,使得同一刷新频率的数据只存储到同一个SGS写入点,从而大大降低了SSD的写放大。

【技术实现步骤摘要】
降低NVMe固态硬盘写放大的方法、装置及计算机设备
本专利技术涉及固态硬盘
,特别是涉及一种降低NVMe固态硬盘写放大的方法、装置、计算机设备及存储介质。
技术介绍
目前,NVMe搭配NandFlash存储介质的固态硬盘借助于它的高性能和低功耗优势正渐渐应用于消费级和企业级市场。在某些情况下,主机端可能会有多个应用程序将用户数据写入SSD,不同应用程序的数据流具有不同的刷新频率(冷热程度),每个应用程序的数据可能会被主机拆分成多个命令发给SSD,而且不同应用程序的命令会互相交叉在一起发往SSD,如图1所示。在现有技术中,由于现有固件技术无法有效区分这些命令(数据)的刷新频率,只能按照主机下发命令的顺序将数据写到闪存的物理块中,所以不同刷新频率的数据会写入到同一个物理块,如图1所示。因此,后续随着热数据的频繁刷新会产生很多垃圾块(物理块同时包含有效数据和无效数据),频繁触发垃圾回收任务,这会导致SSD的写放大(闪存写入数据量与主机写入数据量的比值)急剧增大,从而降低SSD的寿命。
技术实现思路
基于此,有必要针对上述技术问题,提供一种可以实现降低NVMe固态硬盘写放大的方法、装置、计算机设备及存储介质。一种降低NVMe固态硬盘写放大的方法,所述方法包括:获取固态硬盘支持的Stream个数、StreamID以及每个Stream的SGS信息;为每个Stream分配独立的SGS写入点;根据应用程序中应用数据的刷新频率将不同刷新频率的数据绑定到对应的Stream中;根据建立好的绑定关系,为应用程序构建的所有写命令指定StreamID;根据写命令中指定的StreamID,将数据写入对应独立的SGS写入点。在其中一个实施例中,所述根据写命令中指定的StreamID,将数据写入对应独立的SGS写入点的步骤还包括:接收主机命令并获得命令的StreamID=DirectiveSpecific;判断Stream_DirectiveSpecific写入点的SGS是否写满;若未写满,则将数据写入Stream_DirectiveSpecific的写入点。在其中一个实施例中,在所述判断Stream_DirectiveSpecific写入点的SGS是否写满的步骤之后还包括:若已写满,则将Stream_DirectiveSpecific写入点的SGS迁移至SGS数据池;从SGS空闲池获得新的SGS作为Stream_DirectiveSpecific的新写入点,并将数据写入所述新写入点。在其中一个实施例中,所述SGS表示固态硬盘为每个Stream预设的闪存写入单元,包括多个物理块,用于存储对应的Stream数据,当所述闪存写入单元的空间用尽时,固态硬盘重新分配SGS大小的闪存写入单元给对应的Stream。一种降低NVMe固态硬盘写放大的装置,所述装置包括:获取模块,所述获取模块用于获取固态硬盘支持的Stream个数、StreamID以及每个Stream的SGS信息;分配模块,所述分配模块用于为每个Stream分配独立的SGS写入点;绑定模块,所述绑定模块用于根据应用程序中应用数据的刷新频率将不同刷新频率的数据绑定到对应的Stream中;指定模块,所述指定模块用于根据建立好的绑定关系,为应用程序构建的所有写命令指定StreamID;写入模块,所述写入模块用于根据写命令中指定的StreamID,将数据写入对应独立的SGS写入点。在其中一个实施例中,所述写入模块还用于:接收主机命令并获得命令的StreamID=DirectiveSpecific;判断Stream_DirectiveSpecific写入点的SGS是否写满;若未写满,则将数据写入Stream_DirectiveSpecific的写入点。在其中一个实施例中,所述写入模块还用于:若已写满,则将Stream_DirectiveSpecific写入点的SGS迁移至SGS数据池;从SGS空闲池获得新的SGS作为Stream_DirectiveSpecific的新写入点,并将数据写入所述新写入点。在其中一个实施例中,所述SGS表示固态硬盘为每个Stream预设的闪存写入单元,包括多个物理块,用于存储对应的Stream数据,当所述闪存写入单元的空间用尽时,固态硬盘重新分配SGS大小的闪存写入单元给对应的Stream。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。上述降低NVMe固态硬盘写放大的方法、装置、计算机设备和存储介质,通过获取固态硬盘支持的Stream个数、StreamID以及每个Stream的SGS信息;为每个Stream分配独立的SGS写入点;根据应用程序中应用数据的刷新频率将不同刷新频率的数据绑定到对应的Stream中;根据建立好的绑定关系,为应用程序构建的所有写命令指定StreamID;根据写命令中指定的StreamID,将数据写入对应独立的SGS写入点。本专利技术利用NVMe的Stream功能将不同刷新频率的数据流进行分离,并为每个Stream建议独立的写入点,使得同一刷新频率的数据只存储到同一个SGS写入点,如此该写入点的SGS中数据会大概率同时失效,大大降低了触发垃圾回收任务的概率,从而大大降低了SSD的写放大。附图说明图1为现有技术中冷热数据不分离情况下数据写入的示意图;图2为一个实施例中降低NVMe固态硬盘写放大的方法的流程示意图;图3为另一个实施例中降低NVMe固态硬盘写放大的方法的流程示意图;图4为再一个实施例中降低NVMe固态硬盘写放大的方法的流程示意图;图5为一个实施例中通过Stream功能区分冷热数据的示意图;图6为一个实施例中基于SGS的写入流程的示意图;图7为一个实施例中降低NVMe固态硬盘写放大的装置的结构框图;图8为一个实施例中计算机设备的内部结构图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。目前,主机端不同应用程序的数据刷新频率不同会交叉发往SSD,现有SSD固件技术无法区分主机下发数据(命令描述了一段连续的LBA,每个LBA携带512B的数据)的刷新频率,会按照主机下发顺序将数据通过闪存写入点写到闪存的物理块中,如图1所示,这里假设一个物理块由4个物理页组成,每个物理页为512B。可以看出物理块1中存储了应用程序1和2的部分数据,物理块2也是如此。由于应用程序1的数据是刷新比较快的,所以很快主机会复写应用程序本文档来自技高网...

【技术保护点】
1.一种降低NVMe固态硬盘写放大的方法,其特征在于,所述方法包括:/n获取固态硬盘支持的Stream个数、Stream ID以及每个Stream的SGS信息;/n为每个Stream分配独立的SGS写入点;/n根据应用程序中应用数据的刷新频率将不同刷新频率的数据绑定到对应的Stream中;/n根据建立好的绑定关系,为应用程序构建的所有写命令指定Stream ID;/n根据写命令中指定的Stream ID,将数据写入对应独立的SGS写入点。/n

【技术特征摘要】
1.一种降低NVMe固态硬盘写放大的方法,其特征在于,所述方法包括:
获取固态硬盘支持的Stream个数、StreamID以及每个Stream的SGS信息;
为每个Stream分配独立的SGS写入点;
根据应用程序中应用数据的刷新频率将不同刷新频率的数据绑定到对应的Stream中;
根据建立好的绑定关系,为应用程序构建的所有写命令指定StreamID;
根据写命令中指定的StreamID,将数据写入对应独立的SGS写入点。


2.根据权利要求1所述的降低NVMe固态硬盘写放大的方法,其特征在于,所述根据写命令中指定的StreamID,将数据写入对应独立的SGS写入点的步骤还包括:
接收主机命令并获得命令的StreamID=DirectiveSpecific;
判断Stream_DirectiveSpecific写入点的SGS是否写满;
若未写满,则将数据写入Stream_DirectiveSpecific的写入点。


3.根据权利要求2所述的降低NVMe固态硬盘写放大的方法,其特征在于,在所述判断Stream_DirectiveSpecific写入点的SGS是否写满的步骤之后还包括:
若已写满,则将Stream_DirectiveSpecific写入点的SGS迁移至SGS数据池;
从SGS空闲池获得新的SGS作为Stream_DirectiveSpecific的新写入点,并将数据写入所述新写入点。


4.根据权利要求1-3任一项所述的降低NVMe固态硬盘写放大的方法,其特征在于,所述SGS表示固态硬盘为每个Stream预设的闪存写入单元,包括多个物理块,用于存储对应的Stream数据,当所述闪存写入单元的空间用尽时,固态硬盘重新分配SGS大小的闪存写入单元给对应的Stream。


5.一种降低NVMe固态硬盘写放大的装置,其特征在于,所述装置包括:
获取模块,所述获取模块用于获取固态硬盘支持的Stream个数、StreamID以及...

【专利技术属性】
技术研发人员:付东松邹一凡张健
申请(专利权)人:深圳忆联信息系统有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1