固态硬盘数据缓存方法及装置与流程

文档序号:11234017阅读:906来源:国知局
固态硬盘数据缓存方法及装置与流程

本申请涉及存储技术领域,尤其涉及一种固态硬盘数据缓存方法及装置。



背景技术:

固态硬盘(英文:solidstatedrives,缩写:ssd)通常指用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘相同,被广泛应用于各行各业。

固态硬盘不存在寻道时间,在随机读取零散小文件的时候效率较高,加载程序的速度较快。固态硬盘缓存技术即将需要频繁读写的数据缓存到读写速度较为快速的固态硬盘中,加速这类热点数据的读写速度。目前,固态硬盘主控通常采用业务无关性设计,即固态硬盘主控不理解业务数据内容,不预估各种类型数据的数据块大小和访问频率。现有的固态硬盘数据缓存方法通常针对所有数据进行统一处理,使用有限的ram空间对所有主机类型数据进行统一缓存,其中,所有主机类型数据均采用相同方式存储。

然而,在常用特征数据和非常用特征数据同时读写的情况下,现有的固态硬盘数据缓存方法,会造成非常用特征数据与常用特征数据抢占有限的缓存资源,引发常用特征数据与非常用特征数据的缓存数据交叉下刷,促使常用特征数据与非常用特征数据在闪存上交叉存放的概率提升,进一步导致后续垃圾回收(英文:garbagecollection,缩写:gc)机制搬移有效数据量的增加,并且,常用特征数据的缓存命中率低,下刷率较高,容易因为频繁访问元数据而频繁访问闪存,导致固态硬盘的性能降低。



技术实现要素:

本申请提供一种固态硬盘数据缓存方法及装置,以解决现有的固态硬盘数据缓存方法导致固态硬盘的性能降低的问题。

第一方面,本申请实施例提供一种固态硬盘数据缓存方法,包括如下步骤:

检测待缓存数据的数据块大小;

判断所述数据块大小是否小于或等于第一阈值;

如果所述数据块小于或等于第一阈值,查询第一缓存资源池;

判断所述第一缓存资源池的已用缓存区中是否存在与所述待缓存数据相匹配的历史数据;

如果所述第一缓存资源池内不存在与所述待缓存数据相匹配的历史数据,对所述待缓存数据标记时间戳;

将所述待缓存数据缓存至所述第一缓存资源池的空闲缓存区;

如果所述待缓存数据的数据块大于第一阈值,判断所述待缓存数据的数据块大小是否小于或者等于第二阈值;

如果所述待缓存数据的数据块小于或者等于第二阈值,将所述待缓存数据缓存至第二缓存资源池,所述第二缓存资源池的空间配额小于所述第一缓存资源池的空间配额。

结合本申请实施例,在本申请实施例的第一种可实施方式中,将所述待缓存数据缓存至所述第一缓存资源池的空闲缓存区之后,包括:

判断所述空闲缓存区的缓存资源是否小于预设资源阈值;

如果所述空闲缓存区的缓存资源小于预设资源阈值,将所述第一缓存资源池的已用缓存区中时间戳最远的数据下刷至nand-flash存储介质。

结合本申请实施例,在本申请实施例的第二种可实施方式中,判断所述第一缓存资源池的已用缓存区中是否存在与所述待缓存数据相匹配的历史数据之后,包括:

如果所述第一缓存资源池的已用缓存区中存在与所述待缓存数据相匹配的历史数据,将所述待缓存数据缓存至所述第一缓存资源池的已用缓存区,覆盖与所述待缓存数据相匹配的历史数据,同时刷新缓存数据时间戳。

结合本申请实施例,在本申请实施例的第三种可实施方式中,如果所述待缓存数据的数据块大于第一阈值,判断所述待缓存数据的数据块大小是否小于或者等于第二阈值之后,包括:

如果所述待缓存数据的数据块大于第二阈值,将所述待缓存数据写入nand-flash存储介质。

结合本申请实施例,在本申请实施例的第四种可实施方式中,如果所述待缓存数据的数据块小于或者等于第二阈值,将所述待缓存数据缓存至第二缓存资源池,所述第二缓存资源池的空间配额小于所述第一缓存资源池的空间配额之后,包括:

判断所述第二缓存资源池内是否写满一个闪存页;

如果所述第二缓存资源池内写满一个闪存页,将所述第二缓存资源池内的数据下刷至nand-flash存储介质。

第一方面,本申请还提供一种固态硬盘数据缓存装置,包括:

检测单元,用于检测待缓存数据的数据块大小;

第一判断单元,用于判断所述数据块大小是否小于或等于第一阈值;

查询单元,用于如果所述数据块小于或等于第一阈值,查询第一缓存资源池;

第二判断单元,用于判断所述第一缓存资源池的已用缓存区中是否存在与所述待缓存数据相匹配的历史数据;

标记单元,用于如果所述第一缓存资源池内不存在与所述待缓存数据相匹配的历史数据,对所述待缓存数据标记时间戳;

第一缓存单元,用于将所述待缓存数据缓存至所述第一缓存资源池的空闲缓存区;

第三判断单元,用于如果所述待缓存数据的数据块大于第一阈值,判断所述待缓存数据的数据块大小是否小于或者等于第二阈值;

第二缓存单元,用于如果所述待缓存数据的数据块小于或者等于第二阈值,将所述待缓存数据缓存至第二缓存资源池,所述第二缓存资源池的空间配额小于所述第一缓存资源池的空间配额。

结合本申请实施,在本申请实施例的第一种可实施方式中,所述装置还包括:

第四判断单元,用于判断所述空闲缓存区的缓存资源是否小于预设资源阈值;

下刷单元,用于如果所述空闲缓存区的缓存资源小于预设资源阈值,将所述第一缓存资源池的已用缓存区中时间戳最远的数据下刷至nand-flash存储介质。

结合本申请实施,在本申请实施例的第二种可实施方式中,所述装置还包括:

第三缓存单元,用于如果所述第一缓存资源池的已用缓存区中存在与所述待缓存数据相匹配的历史数据,将所述待缓存数据缓存至所述第一缓存资源池的已用缓存区,覆盖与所述待缓存数据相匹配的历史数据,同时刷新缓存数据时间戳。

结合本申请实施,在本申请实施例的第三种可实施方式中,写入单元,用于如果所述待缓存数据的数据块大于第二阈值,将所述待缓存数据写入nand-flash存储介质。

结合本申请实施,在本申请实施例的第四种可实施方式中,所述装置还包括:

第五判断单元,用于判断所述第二缓存资源池内是否写满一个闪存页;

第二下刷单元,用于如果所述第二缓存资源池内写满一个闪存页,将所述第二缓存资源池内的数据下刷至nand-flash存储介质。

由以上技术方案可知,本申请实施例提供的一种固态硬盘数据缓存方法及装置,通过将固态硬盘缓存资源划分为第一缓存资源池和第二缓存资源池,其中,第一缓存资源池压和第二缓存资源池的配额大于第二缓存资源池,在缓存数据时,检测待缓存数据的数据块大小,将数据块小于或等于第一阈值的常用特征数据缓存至第一缓存资源池,将数据块大于第一阈值的非常用特征数据缓存至第二缓存资源池,本方法可将有限的缓存资源尽量分给常用特征数据,从而提升常用特征数据的缓存使用率,减少常用特征数据的下刷率,提升其缓存命中率,从而达到提升固态硬盘性能的目的。

附图说明

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

图1为本申请提供的一种固态硬盘数据缓存方法的示意图。

图2为本申请提供的一种固态硬盘数据缓存方法第一实施例的流程图。

图3为本申请提供的一种固态硬盘数据缓存方法第二实施例的流程图。

图4为本申请提供的一种固态硬盘数据缓存方法第三实施例的流程图。

图5为本申请提供的一种固态硬盘数据缓存方法第四实施例的流程图。

图6为本申提供的一种固态硬盘数据缓存方法请第五实施例的流程图。

图7为本申请提供的一种固态硬盘数据缓存装置第一实施例的流程图。

图8为本申请提供的一种固态硬盘数据缓存装置第二实施例的流程图。

图9为本申请提供的一种固态硬盘数据缓存装置第三实施例的流程图。

图10为本申请提供的一种固态硬盘数据缓存装置第四实施例的流程图。

图11为本申请提供的一种固态硬盘数据缓存装置第五实施例的流程图。

具体实施方式

请参阅图1和图2,本申请第一实施例提供一种固态硬盘数据缓存方法,包括如下步骤:

步骤s101,检测待缓存数据的数据块1的大小。

其中,待缓存数据的数据块大小即数据io的大小,通常情况下,小io数据为文件系统元数据,文件系统元数据的读写频率远远大于数据本身,远超元数据本身在整个数据中的比例(元数据通常占整个数据量的6%左右)。在本实施例中被看作是常用特征数据,从某些方面来讲,常用特征数据在一定程度上表示热点数据,本实施例将读/写频繁的数据都称作常用特征数据,需要使用尽可能多的缓存资源。

大io数据通常是采集回来的视频数据等,在本实施例中可被看作是非常用特征数据,本实施例将读/写相对不频繁的数据称作非常用特征数据,需要使用少量缓存资源。

步骤s102,判断所述数据块1大小是否小于或等于第一阈值。

具体地,本实施例中,第一阈值为8k,即常用特征数据统一指小于等于8k大小的io数据,非常用特征数据统一指大于8k大小的io数据。因此,在检测待缓存数据的数据块大小之后,通过判断数据块大小是否小于或等于8k,来划分待缓存数据是常用特征数据还是非常用特征数据。

步骤s103,如果所述数据块小于或等于第一阈值,查询第一缓存资源池2。

具体地,如果待缓存数据的数据块小于或等于8k,则将该数据划分为常用特征数据。将固态硬盘的缓存资源划分为第一缓存资源池和第二缓存资源池。第一缓存资源池和第二缓存资源池的配额大于第二缓存资源池,本实施例中,第一缓存资源池的配额为总量的90%~95%。在缓存数据时,将数据块小于或等于第一阈值的常用特征数据缓存至第一缓存资源池,将数据块大于第一阈值的非常用特征数据缓存至第二缓存资源池。

步骤s104,判断所述第一缓存资源池的已用缓存区21中是否存在与所述待缓存数据相匹配的历史数据。

上步查询第一缓存资源池的目的在于,确定第一缓存资源池的已用缓存区中是否存在与待缓存数据相匹的历史数据,即判断待缓存数据是否是新数据。

步骤s105,如果所述第一缓存资源池内不存在与所述待缓存数据相匹配的历史数据,对所述待缓存数据标记时间戳。

第一缓存资源池内不存在与所述待缓存数据相匹配的历史数据,即说明待缓存数据是新数据。对所述待缓存数据标记时间戳,使得所缓存的数据具有时间属性。

步骤s106,将所述待缓存数据缓存至所述第一缓存资源池的空闲缓存区22。

第一缓存资源池2包括空闲缓存区22和已用缓存区21,待缓存数据是常用特征数据,并且是新资源,则直接将该数据缓存至第一缓存资源池。

步骤s107,如果所述待缓存数据的数据块大于第一阈值,判断所述待缓存数据的数据块大小是否小于或者等于第二阈值。

例如,待缓存数据的数据块大于8k,说明待缓存数据是非常用特征数据,再判断非常用特征数据的数据块大小,以决定后续对该非常用特征数据的具体处理方法。

步骤s108,如果所述待缓存数据的数据块大于第一阈值,但小于或者等于第二阈值,将所述待缓存数据缓存至第二缓存资源池3,所述第二缓存资源池3的空间配额小于所述第一缓存资源池2的空间配额。

例如,如果待缓存数据的数据块大于8k,小于32k,使用第二缓存资源池缓存该数据。本方法可将有限的缓存资源尽量分给常用特征数据,从而提升常用特征数据的缓存使用率,减少常用特征数据的下刷率,提升其缓存命中率,从而达到提升固态硬盘性能的目的。

请参阅图1和图3,本申请第二实施例提供一种固态硬盘数据缓存方法,与第一实施例的不同之处在于,将所述待缓存数据缓存至所述第一缓存资源池的空闲缓存区之后,包括:

步骤s109,判断所述空闲缓存区的缓存资源是否小于预设资源阈值。

本实施例中,第一缓存资源池采用的数据下刷原则为资源受限原则,又可称为水位控制原则,即在空闲缓存区的缓存资源小于预设资源阈值,即空闲缓存区的缓存资源低于下刷淘汰水位时,将所述第一缓存资源池的已用缓存区中的数据,下刷至nand-flash存储介质,及时释放第一缓存资源池的资源。

步骤s110,如果所述空闲缓存区的缓存资源小于预设资源阈值,将所述第一缓存资源池的已用缓存区中时间戳最远的数据下刷至nand-flash存储介质。

根据已用缓存区中的数据的时间属性,选择最早最老数据11进行下刷,实现第一缓存资源池中资源的释放。

请参阅图1和图4,本申请第三实施例提供一种固态硬盘数据缓存方法,与第一实施例的不同之处在于,判断所述第一缓存资源池的已用缓存区中是否存在与所述待缓存数据相匹配的历史数据之后,包括:

步骤s111,如果所述第一缓存资源池的已用缓存区中存在与所述待缓存数据相匹配的历史数据,将所述待缓存数据缓存至所述第一缓存资源池的已用缓存区,覆盖与所述待缓存数据相匹配的历史数据,同时刷新缓存数据时间戳。

第一缓存资源池的已用缓存区中存在与待缓存数据相匹配的历史数据,即说明待缓存数据不是新数据,此时利用待缓存数据覆盖与所述待缓存数据重复的历史数据,将待缓存数据缓存至所述第一缓存资源池的已用缓存区,减少资源的占用。

请参阅图1和图5,本申请第三实施例提供一种固态硬盘数据缓存方法,与第一实施例的不同之处在于,如果所述待缓存数据的数据块大于第一阈值,判断所述待缓存数据的数据块大小是否小于或者等于第二阈值之后,包括:

步骤s112,如果所述待缓存数据的数据块大于第二阈值,将所述待缓存数据写入nand-flash存储介质。

例如,如果所述待缓存数据的数据块大于32k,则不使用缓存资源缓冲该数据,而是直接将其下刷至nand-flash存储介质,减少对缓存资源的占用。

请参阅图1和图6,本申请第三实施例提供一种固态硬盘数据缓存方法,与第一实施例的不同之处在于,如果所述待缓存数据的数据块小于或者等于第二阈值,将所述待缓存数据缓存至第二缓存资源池,所述第二缓存资源池的空间配额小于所述第一缓存资源池的空间配额之后,包括:

步骤s113,判断所述第二缓存资源池内是否写满一个闪存页。

该步骤中,是否写满一个闪存页,即指是否写满一个flashdiepage。

其中,nand-flash存储介质内部分为chip、die、plane、block、page。chip是指芯片,一个封装好的芯片就是一个chip。

die是晶圆上的小方块,一个芯片里可能封装若干个die,由于nand-flash的工艺不同,由此产生了die的概念,常见的有monodie、adie、bdie等,一个chip包含n个die。

plane是nand-flash能够根据读、写、擦除等命令进行操作的最小单位。一个plane就是一个存储矩阵,一个die包含多个plane,一个plane包含若干个block。

block是nand-flash的最小擦除单位,一个block包含了若干个page。page是nand-flash的最小读写单位,一个page包含若干个byte。每个plane内处于同一地址的page组合称为flashdiepage。

步骤s114,如果所述第二缓存资源池内写满一个闪存页,将所述第二缓存资源池内的数据下刷至nand-flash存储介质4。

本实施例中,针对非常用特征数据,采用及时下刷原则,即新写入第二缓存资源池的非常用特征数据写满一个flashdiepage大小,立即对多余数据12进行下刷,下刷后立即释放第二缓存资源池资源。

由以上技术方案可知,本申请实施例提供的一种固态硬盘数据缓存方法,,通过将固态硬盘缓存资源划分为第一缓存资源池和第二缓存资源池,其中,第一缓存资源池压和第二缓存资源池的配额大于第二缓存资源池,在缓存数据时,检测待缓存数据的数据块大小,将数据块小于或等于第一阈值的常用特征数据缓存至第一缓存资源池,将数据块大于第一阈值的非常用特征数据缓存至第二缓存资源池,本方法可将有限的缓存资源尽量分给常用特征数据,从而提升常用特征数据的缓存使用率,减少常用特征数据的下刷率,提升其缓存命中率,从而达到提升固态硬盘性能的目的。

请参阅图7,为本申请实施例提供的一种固态硬盘数据缓存装置的第一实施例,包括:

检测单元71,用于检测待缓存数据的数据块大小。

第一判断单元72,用于判断所述数据块大小是否小于或等于第一阈值。

查询单元73,用于如果所述数据块小于或等于第一阈值,查询第一缓存资源池。

第二判断单元74,用于判断所述第一缓存资源池的已用缓存区中是否存在与所述待缓存数据相匹配的历史数据。

标记单元75,用于如果所述第一缓存资源池内不存在与所述待缓存数据相匹配的历史数据,对所述待缓存数据标记时间戳。

第一缓存单元76,用于将所述待缓存数据缓存至所述第一缓存资源池的空闲缓存区。

第三判断单元77,用于如果所述待缓存数据的数据块大于第一阈值,判断所述待缓存数据的数据块大小是否小于或者等于第二阈值。

第二缓存单元78,用于如果所述待缓存数据的数据块小于或者等于第二阈值,将所述待缓存数据缓存至第二缓存资源池,所述第二缓存资源池的空间配额小于所述第一缓存资源池的空间配额。

请参阅图8,为本申请实施例提供的一种固态硬盘数据缓存装置的第二实施例,所述装置还包括:

第四判断单元79,用于判断所述空闲缓存区的缓存资源是否小于预设资源阈值。

下刷单元80,用于如果所述空闲缓存区的缓存资源小于预设资源阈值,将所述第一缓存资源池的已用缓存区中时间戳最远的数据下刷至nand-flash存储介质。

请参阅图9,为本申请实施例提供的一种固态硬盘数据缓存装置的第三实施例,所述装置还包括:

第三缓存单元81,用于如果所述第一缓存资源池的已用缓存区中存在与所述待缓存数据相匹配的历史数据,将所述待缓存数据缓存至所述第一缓存资源池的已用缓存区,覆盖与所述待缓存数据相匹配的历史数据,同时刷新缓存数据时间戳。

请参阅图10,为本申请实施例提供的一种固态硬盘数据缓存装置的第四实施例,所述装置还包括:

写入单元82,用于如果所述待缓存数据的数据块大于第二阈值,将所述待缓存数据写入nand-flash存储介质。

请参阅图11,为本申请实施例提供的一种固态硬盘数据缓存装置的第五实施例,所述装置还包括:

第五判断单元83,用于判断所述第二缓存资源池内是否写满一个闪存页。

第二下刷单元84,用于如果所述第二缓存资源池内写满一个闪存页,将所述第二缓存资源池内的数据下刷至nand-flash存储介质。

具体实现中,本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的固态硬盘数据缓存方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的。

本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于固态硬盘数据缓存装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见实施例中的说明即可。

以上所述的本申请实施方式并不构成对本申请保护范围的限定。

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