一种sata固态硬盘冷热数据分离的方法及其装置

文档序号:1755024 发布日期:2019-11-29 浏览:1次 >En<

阅读说明:本技术 一种sata固态硬盘冷热数据分离的方法及其装置 (A kind of method and device thereof of the cold and hot data separating of SATA solid state hard disk ) 是由 邹一凡 沈荣娟 张健 于 2019-08-21 设计创作,主要内容包括:本发明涉及一种SATA固态硬盘冷热数据分离的方法及其装置;其中,方法,包括:S1,进行数据流定义,对数据流进行编号,并进行数据流ID绑定;S2,将应用数据与不同的数据流ID进行绑定;S3,应用数据生成多个命令发送至固态硬盘;S4,根据命令的数据流ID将数据缓存到对应的数据池中;S5,当SSD缓存满了,将冷数据刷到闪存的第一物理块,将热数据写到闪存的第二物理块;S6,主机应用层复写热数据,将第二物理块中的热数据写在闪存的第三物理块中,并对第二物理块进行擦除。本发明使缓存中冷热数据分离,使冷热数据写到不同的物理块中,从而降低了垃圾回收任务的触发概率,从而提升了主机的读写性能和SSD寿命。(The present invention relates to a kind of method and device thereof of cold and hot data separating of SATA solid state hard disk;Wherein, method, comprising: S1 carries out stream data definition, flows into row number to data, and carry out data stream ID binding;S2 binds application data from different data flow ID;S3 generates multiple orders using data and is sent to solid state hard disk;S4, according to the data flow ID of order by data buffer storage into corresponding data pool;S5 expires when SSD is cached, cold data is brushed to the first physical block of flash memory, dsc data is write to the second physical block of flash memory;S6, host application layer make carbon copies dsc data, the dsc data in the second physical block are write in the third physical block of flash memory, and is wiped the second physical block.The present invention makes cold and hot data separating in caching, writes cold and hot data in different physical blocks, so that the triggering probability of garbage reclamation task is reduced, to improve readwrite performance and the SSD service life of host.)

一种SATA固态硬盘冷热数据分离的方法及其装置

技术领域

本发明涉及固态硬盘冷热数据分离技术领域,更具体地说是指一种SATA固态硬盘冷热数据分离的方法及其装置。

背景技术

SATA接口搭配NAND闪存的SSD(固态硬盘)在服务器和数据中心业务中仍占据主流地位。在上述业务模型中主机端可能会有多个应用程序将数据写入SSD,不同应用程序的数据流具有不同的冷热属性(刷新频率),每个应用程序的数据可能会被主机拆分成多个命令发给SSD,而且不同应用程序的命令会互相交叉在一起发往SSD;而现有固件技术无法有效区分这些命令(数据)的冷热程度,只能按照主机下发命令的顺序将数据先缓存在缓存中,然后下刷到闪存的物理块中,所以冷热数据会大概率一起写入到同一个物理块,后续随着热数据的频繁刷新会产生很多垃圾块(物理块同时包含有效数据和无效数据),频繁触发垃圾回收任务,这会导致SSD性能和寿命的急剧下降;因此,无法满足需求。

发明内容

本发明的目的在于克服现有技术的缺陷,提供一种SATA固态硬盘冷热数据分离的方法及其装置。

为实现上述目的,本发明采用于下技术方案:

一种SATA固态硬盘冷热数据分离的方法,包括以下步骤:

S1,进行数据流定义,对数据流进行编号,并将编号后的数据流进行数据流ID绑定;

S2,将主机的应用数据与不同的数据流ID进行绑定;

S3,应用数据生成多个命令交叉发送至固态硬盘,其中每个命令的保留字段记录绑定好的数据流ID;

S4,固态硬盘缓存根据命令的数据流ID将数据缓存到对应的数据池中;

S5,当SSD缓存满了,将数据池中的冷数据刷到闪存的第一物理块,将数据池中热数据写到闪存的第二物理块;

S6,主机应用层复写热数据,将第二物理块中的热数据写在闪存的第三物理块中,并对第二物理块进行擦除。

其进一步技术方案为:所述S1中,还包括:获取固态硬盘支持N个数据流,将数据流的ID确定为0-(N-1),数据流在固态硬盘和主机之间进行通信。

其进一步技术方案为:所述“数据流在固态硬盘和主机之间进行通信”的步骤如下:

固态硬盘新定义一个VU命令,该命令用于告知主机固态硬盘支持N个数据流;

主机通过发送VU命令,获取固态硬盘支持的数据流个数N。

其进一步技术方案为:所述S4中,还包括:固态硬盘缓存中定义了N个数据池,分别对应N个数据流。

其进一步技术方案为:所述S5中,所述冷数据为刷新频率较慢的数据,所述热数据为刷新频率较快的数据。

一种SATA固态硬盘冷热数据分离的装置,包括:定义单元,绑定单元,发送记录单元,存储单元,刷写单元,及复写擦除单元;

所述定义单元,用于进行数据流定义,对数据流进行编号,并将编号后的数据流进行数据流ID绑定;

所述绑定单元,用于将主机的应用数据与不同的数据流ID进行绑定;

所述发送记录单元,用于应用数据生成多个命令交叉发送至固态硬盘,其中每个命令的保留字段记录绑定好的数据流ID;

所述存储单元,用于固态硬盘缓存根据命令的数据流ID将数据缓存到对应的数据池中;

所述刷写单元,用于当SSD缓存满了,将数据池中的冷数据刷到闪存的物理块1,将数据池中热数据写到闪存的物理块2;

所述复写擦除单元,用于主机应用层复写热数据,将物理块2中的热数据写在闪存的物理块3中,并对物理块2进行擦除。

其进一步技术方案为:所述定义单元中,还包括:获取固态硬盘支持N个数据流,将数据流的ID确定为0-(N-1),数据流在固态硬盘和主机之间进行通信。

其进一步技术方案为:所述“数据流在固态硬盘和主机之间进行通信”的步骤如下:

固态硬盘新定义一个VU命令,该命令用于告知主机固态硬盘支持N个数据流;

主机通过发送VU命令,获取固态硬盘支持的数据流个数N。

其进一步技术方案为:所述存储单元中,还包括:固态硬盘缓存中定义了N个数据池,分别对应N个数据流。

其进一步技术方案为:所述刷写单元中,所述冷数据为刷新频率较慢的数据,所述热数据为刷新频率较快的数据。

本发明与现有技术相比的有益效果是:SSD固件利用SATA接口协议功能,使缓存中冷热数据分离,能尽量使冷热数据写到不同的物理块中,从而降低了垃圾回收任务的触发概率,从而提升了主机的读写性能和SSD寿命,能够更好地满足需求。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

图1为现有技术的应用示意图;

图2为本发明一种SATA固态硬盘冷热数据分离的方法流程图;

图3为SATA协议写命令格式的示意图;

图4为SATA固态硬盘冷热数据分离的应用示意图一;

图5为SATA固态硬盘冷热数据分离的应用示意图二;

图6为本发明一种SATA固态硬盘冷热数据分离的装置方框图。

具体实施方式

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

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如图1到图6所示的具体实施例,其中,如图1所示的现有技术,主机端不同应用程序的数据(冷热程度不同)会交叉发往SSD,现有SSD固件技术无法区分主机下发数据(命令描述了一段连续的LBA,每个LBA携带512B的数据)的冷热程度,会按照主机下发顺序将数据依次缓存在SSD缓存中,如图1中第1步所示,这里假设一个物理块由4个物理页组成,每个物理页为512B;待SSD缓存满了后将缓存中数据下刷到闪存的物理块中,如图1中第2步所示,可以看出物理块1中存储了应用程序1和2的部分数据,物理块2也是如此;由于应用程序1是热数据,刷新频率比较高,所以后续主机复写应用程序1后,它的新数据(LBA0-LBA3)被写到物理块3中,之前写在物理块1和2中的旧数据被无效掉,见图1第3步,由于闪存的特性:1、物理页为最小的读写单元;2、物理块为最小的擦除单元;3、物理块整体擦除后才能进行写入操作;4、物理块具有有限的擦除次数,即有限的数据写入总量。

如果此时闪存上可用的物理块不够用了,则SSD内部会启动垃圾回收任务,先将物理块1和2中有效的物理页数据(LBA10-LBA13)搬移到新的物理块4中,见图1中第4步,注意,这一步其实是SSD在做额外的读写操作,不仅会大大降低此时主机的读写性能,还会产生写放大,降低闪存的总体寿命,之后将全是无效物理页的物理块1和2擦除掉,见图1中第5步,这样就腾出了空闲的物理块可存储后续主机下入的数据。由此可知,由于现有技术无法区分冷热数据导致频繁的触发垃圾回收任务,造成性能和寿命的双重下降。

其中,如图2至图5所示,本发明公开了一种SATA固态硬盘冷热数据分离的方法,包括以下步骤:

S1,进行数据流定义,对数据流进行编号,并将编号后的数据流进行数据流ID绑定;

S2,将主机的应用数据与不同的数据流ID进行绑定;

S3,应用数据生成多个命令交叉发送至固态硬盘,其中每个命令的保留字段记录绑定好的数据流ID;

S4,固态硬盘缓存根据命令的数据流ID将数据缓存到对应的数据池中;

S5,当SSD缓存满了,将数据池中的冷数据刷到闪存的第一物理块,将数据池中热数据写到闪存的第二物理块;

S6,主机应用层复写热数据,将第二物理块中的热数据写在闪存的第三物理块中,并对第二物理块进行擦除。

其中,现有技术的症结在于主机端的冷热数据交叉存储到SSD的缓存,导致后面闪存物理块中既有冷数据又有热数据,频繁触发垃圾回收,如果能将缓存中的数据进行冷热分离,冷数据集中在一起写到物理块,热数据也集中在一起写到其他物理块,那么物理块中同时包含冷热数据的概率将会大大减少,即大大降低垃圾回收触发的几率。而SSD无法知道数据的冷热程度,如果SSD能知道应用程序的冷热程度,然后SSD缓存根据数据的冷热程度分开存储,缓存满后将相同或相似冷热程度的数据写入到同一个闪存块中,那么后续该闪存块中数据会大概率同时无效或被复写掉,由于没有有效数据残留,所以直接擦除该物理块即可,无需做垃圾回收,能大大提升SSD的性能和寿命。

其中,主机的应用层是最清楚应用数据的冷热程度的,所以本发明的核心是新增一项SATA协议功能:数据流;SSD支持N个数据流,数据流的ID为0-(N-1),数据流在SSD和主机之间的通信。

其中,所述S1中,还包括:获取固态硬盘支持N个数据流,将数据流的ID确定为0-(N-1),数据流在固态硬盘和主机之间进行通信。

进一步地,所述“数据流在固态硬盘和主机之间进行通信”的步骤如下:

固态硬盘新定义一个VU命令,该命令用于告知主机固态硬盘支持N个数据流;

主机通过发送VU命令,获取固态硬盘支持的数据流个数N。

其中,SATA协议支持VU命令,则固态硬盘新定义一个VU命令,该命令的功能是告知主机SSD支持N个数据流,主机通过发送固态硬盘定义的VU命令,获得固态硬盘支持的数据流个数N;由于每个数据流存储冷热程度类似的数据,所以主机的应用层需要自己合理安排每个数据流存储哪些应用程序的数据,而且一旦确定对应关系,应用程序发出的所有命令格式(利用图3中SATA协议写命令格式中的Reserved(保留)字段记录)中需要记录这个数据流的ID;SSD缓存中定义了N(可以根据实际情况灵活配置)个数据池,分别对应N个数据流,SSD接收到命令后将这些命令的数据存到主机命令的数据流ID指定的数据池。

其中,所述S4中,还包括:固态硬盘缓存中定义了N个数据池,分别对应N个数据流。

其中,所述S5中,所述冷数据为刷新频率较慢的数据,所述热数据为刷新频率较快的数据。

其中,图4至图5展示了本发明的一种具体实施例,假设SSD支持2个数据流,ID分别为数据流0和数据流1,则SSD的缓存模块中建立两个数据池:数据池0和数据池1,数据池0专门存储标有数据流ID等于0的数据(命令),数据池1专门存储标有数据流ID等于1的数据(命令);再假设主机有两个应用程序,应用程序1为热数据(刷新频率较快),主机应用层将它绑定到数据流0,应用程序2为冷数据(刷新频率较慢),主机应用层将它绑定到数据流2,主机数据存储到SSD的过程如下:

主机发送VU命令获得固态硬盘支持的数据流个数,然后按照上述绑定关系,将应用数据1绑定到数据流0,应用数据2绑定到数据流1;

应用程序1和2各自生成多个命令交叉发往固态硬盘,其中每个命令的保留(Reserved)字段记录了绑定好的数据流ID;

固态硬盘缓存根据命令的数据流ID将数据缓存到对应的数据池中,数据流ID 0缓存到数据池0,数据流ID 1缓存到数据池1,如图4所示;

当固态硬盘缓存满了之后,首先将数据池1中冷数据刷到闪存的物理块,如此冷数据就能聚集在一起写到物理块1,然后将数据池0中热数据聚集在一起写到物理块2,如图5所示,所以冷热数据是分开存储在不同的物理块中的;

主机应用层复写应用程序1(热数据),最终新数据在物理块3中,而旧数据所在的物理块2中数据全都无效掉;

如果此时固态硬盘内部没有可用的物理块,由于物理块2中没有有效数据,则直接擦除掉即可,无需启动垃圾回收机制,大大提升了性能。

如图6所示,本发明还公开了一种SATA固态硬盘冷热数据分离的装置,包括:定义单元10,绑定单元20,发送记录单元30,存储单元40,刷写单元50,及复写擦除单元60;

所述定义单元10,用于进行数据流定义,对数据流进行编号,并将编号后的数据流进行数据流ID绑定;

所述绑定单元20,用于将主机的应用数据与不同的数据流ID进行绑定;

所述发送记录单元30,用于应用数据生成多个命令交叉发送至固态硬盘,其中每个命令的保留字段记录绑定好的数据流ID;

所述存储单元40,用于固态硬盘缓存根据命令的数据流ID将数据缓存到对应的数据池中;

所述刷写单元50,用于当SSD缓存满了,将数据池中的冷数据刷到闪存的第一物理块,将数据池中热数据写到闪存的第二物理块;

所述复写擦除单元60,用于主机应用层复写热数据,将第二物理块中的热数据写在闪存的第三物理块中,并对第二物理块进行擦除。

其中,所述定义单元10中,还包括:获取固态硬盘支持N个数据流,将数据流的ID确定为0-(N-1),数据流在固态硬盘和主机之间进行通信。

进一步地,所述“数据流在固态硬盘和主机之间进行通信”的步骤如下:

固态硬盘新定义一个VU命令,该命令用于告知主机固态硬盘支持N个数据流;

主机通过发送VU命令,获取固态硬盘支持的数据流个数N。

其中,所述存储单元40中,还包括:固态硬盘缓存中定义了N个数据池,分别对应N个数据流。

其中,所述刷写单元50中,所述冷数据为刷新频率较慢的数据,所述热数据为刷新频率较快的数据。

本发明SSD固件利用SATA接口协议功能,使缓存中冷热数据分离,能尽量使冷热数据写到不同的物理块中,从而降低了垃圾回收任务的触发概率,从而提升了主机的读写性能和SSD寿命,能够更好地满足需求。

上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种处理主机IO和垃圾回收的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类