SSDCache填充方法及装置制造方法

文档序号:6621856阅读:438来源:国知局
SSD Cache填充方法及装置制造方法
【专利摘要】本发明提供一种SSD?Cache填充方法及装置,应用于存储设备上,该方法包括:将SSD?Cache划分成若干不同大小的块Block;根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。本发明根据业务命令大小选择需要填充的Block大小,尽量减少磁盘的回读次数,提高SSD?Cache的填充速度。
【专利说明】SSD Cache填充方法及装置

【技术领域】
[0001]本发明涉及存储【技术领域】,尤其涉及一种SSD Cache填充方法及装置。

【背景技术】
[0002]目前通用的存储产品中,使用SSD (Solid State Disk,固态硬盘)硬盘作为系统的二级读缓存,来提高阵列的随机读性能,通常将此处的SSD硬盘叫做SSD Cache (高速缓冲存储器)。由于存储设备自身的读缓存通常都比较小,一般只有几百MB到IGB之间,而SSDCache的空间已经达到了 1TB,因此,如果将数据提前读出并填充到SSD Cache,那么,数据被访问时,直接从SSD Cache读取,可以明显缩短响应时间,提高读取性能。
[0003]现有技术方案如图1所示,当数据进入读缓存并且读缓存用尽后,开始填充SSDCache,这提高了 SSD Cache的填充门槛。如图2所示,在填充SSD Cache时,SSD Cache的Block(块,Cache的最小分配单位)大小通常设置为同读缓存的Block大小一致。数据从磁盘写入读缓存,再从读缓存填充到SSD Cache中(图中实线为填充方向示意)。由于上层业务读取的数据块大小不等,所以读缓存的Block中经常存在空洞(即读缓存的某些Block实际填充大小小于N),而填充SSD Cache时则要求数据大小必须为N才能填充成功。因此,在将数据从读缓存填充到SSD Cache时,对于小于N的数据,需要从磁盘回读(图中虚线为回读方向示意),将不足的部分数据补齐,然后填充到SSD Cache。由于SSD Cache的Block大小固定且相同,而业务命令大小不等,必然导致填充SSD Cache时的回读次数增加,增加了磁盘的随机命令数,影响业务性能和填充速度。


【发明内容】

[0004]有鉴于此,本发明提供了一种SSD Cache填充方法,应用于存储设备上,该方法包括:
[0005]将SSD Cache划分成若干不同大小的块Block ;
[0006]根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。
[0007]本发明还提供了一种SSD Cache填充装置,应用于存储设备上,该装置包括:
[0008]Block配置单兀,用于将SSD Cache划分成若干不同大小的块Block ;
[0009]Block填充单元,用于根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。
[0010]本发明根据业务命令大小选择需要填充的Block大小,尽量减少磁盘的回读次数,提高SSD Cache的填充速度。同时,根据业务命令大小的分布趋势,动态调整SSD Cache的不同Block的分配空间,进一步降低了对磁盘的随机命令请求,提高了 SSD Cache的填充速度,达到提高随机读取性能的目的。

【专利附图】

【附图说明】
[0011]图1是现有技术中SSD Cache启动示意图。
[0012]图2是现有技术中SSD Cache填充示意图。
[0013]图3是本发明一种实施方式中SSD Cache填充装置的逻辑结构及其基础硬件环境的示意图。
[0014]图4是本发明一种实施方式中SSD Cache填充方法的流程图。
[0015]图5是本发明一种实施方式中SSD Cache启动不意图。
[0016]图6是本发明一种实施方式中SSD Cache首次填充不意图。
[0017]图7是本发明一种实施方式中SSD Cache 二次填充示意图。
[0018]图8是本发明一种实施方式中SSD Cache动态分配空间不意图。

【具体实施方式】
[0019]以下结合附图对本发明进行详细说明。
[0020]本发明提供一种虚拟化环境下SSD Cache填充装置,以下以软件在计算机中实现为例进行说明,但是本发明并不排除诸如硬件或者逻辑器件等其他实现方式。如图3所示,该装置运行的计算机硬件环境包括CPU、内存、非易失性存储器以及其他硬件。该装置作为计算机上一个逻辑层面的虚拟装置,其通过计算机上的CPU来运行。该装置包括Block配置单元和Block填充单元。请参考图4,该装置的使用和运行过程包括以下步骤:
[0021]步骤101,Block配置单元将SSD Cache划分成若干不同大小的块Block ;
[0022]步骤102,Block填充单元根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。
[0023]本发明通过将SSD Cache划分为多个不同大小的Block,再根据上层业务命令选择与其大小最接近的Block进行填充,以减少对磁盘的随机命令请求,提高了 SSD Cache的填充速度,达到提高随机读取性能的目的。具体实施过程如下。
[0024]如图5所示,在上层业务发送读请求时,若需从磁盘读取数据,则将该数据写入读缓存的同时,启动SSD Cache的填充进程,将数据填充到SSD Cache中。由于读缓存的容量有限,读缓存中始终保存的是上层业务需要用到的最新数据,而数据在写入读缓存的同时,都会写入到SSD Cache中,这里可理解为对读缓存中数据的备份,由于SSD Cache的容量相对比较大,因此,保存了最近上层业务用到的数据(保存的数量取决于SSD Cache的容量),其中,包括当前读缓存中的数据。当上层业务需要读取最近使用过的数据,而该数据不在读缓存中时,向SSD Cache中查找,若SSD Cache有该数据,则从SSD Cache中直接读取。从上述过程可知,写入读缓存的数据必将写入SSD Cache中,而且SSD Cache写入速度比读缓存要慢,因此,本发明将对SSD Cache的填充过程提前,只要开始写入读缓存就启动SSD Cache填充进程,避免了现有技术中必须在读缓存用尽后才能启动SSD Cache,并且需要从读缓存中将数据填充到SSD Cache中的问题,节约了时间,在一定程度上提高了填充速度。
[0025]由于SSD Cache数据填充必须满足待填充数据块大小与Block大小一致的条件,因此,本发明通过将SSD 0&(*6划分成不同大小的趴001^(例如,41(、81(、161(、321(和641(),增加待填充数据块与Block匹配的机率,进而减少从磁盘回读数据的次数,提高填充速度。
[0026]在对SSD Cache进行数据填充时,根据待填充数据块大小选择与该数据块大小最接近的Block进行填充。结合图6介绍SSD Cache数据填充过程。本实施例中,SSD Cache划分的Block大小分别为4K、8K、16K、32K和64Κ。对于大于64K(SSD Cache中划分的最大Block)的数据块,将该数据块按照64K进行分割,选择多个64K Block进行填充,当最后一个Block填充不满时,从磁盘回读;对于小于64K的数据块,则依次判断与其数据块大小最接近的Block进行填充,例如:数据块大小小于等于4K,则将该数据块填充到4K大小的Block中;数据块大小大于4K小于等于8K,则将该数据块填充到8K大小的Block中;以此类推,找到与每一个数据块大小对应的最匹配的Block进行填充。在填充过程中,若数据块大小等于Block大小,则无需从磁盘回读数据;若数据块大小小于Block大小,则Block中剩余空间需从磁盘中回读数据进行填充。例如:数据块大小为12K,则将该数据块填充到16K大小的Block中,剩余4K空间从磁盘回读数据进行填充。
[0027]在具体实现过程中,可通过设置回读标识位记录对应Block是否需要回读,每一个二进制位bit代表一个Block。bit等于O,表示对应Block未填充或已填充不回读;bit等于1,表示对应Block已填充待回读。假设使用一个ITB的SSD Cache,按照极限情况计算,假设8K大小的Block占据了整个SSD Cache空间,并且全部需要回读,则回读标识位占用内存大小为:((1*1024*1024*1024)/8)/(8*1024*1024) = 16MB,所以,在 SSD Cache 初始化时,需预先划定16MB的空间给回读标识位,这些标志位并不会明显占用很大内存空间。
[0028]上述过程为SSD Cache被首次填充的处理过程,同读缓存一样,SSD Cache也存在二次填充的情况,毕竟SSD Cache空间有限,总会被用尽,或者读取的数据块命中现有的Block空间,需要进行二次填充。如图7所示,假设上层业务读取的数据大小为20K,其中一部分数据已存在于16K的Block空间中,这时需要把16K的Block空间释放出来,将20K数据写入32K的Block中,并记录该32K的Block需要回读,从磁盘中回读12K数据填充到32K 的 Block 中。如果 SSD Cache 中的 32K 的 Block 已用完,则使用 LRU(Least RecentlyUsed,近期最少使用算法)进行替换,将最近不用的数据块从Block中移出,填充新的数据块。
[0029]为了进一步提高填充速度,本发明可根据SSD Cache中不同大小Block的使用情况,动态分配存储空间。例如,初始化时,默认按照平均分配的原则,为4K、8K、16K、32K和64Κ的Block分配相同的空间容量。假设SSD Cache的存储空间总容量为Q,则每种Block大小的容量均为Q/5。设置一个定时器,每隔一定时间(比如Is)进行一次填充Block个数的统计。假设当前到达统计时间点,统计4K、8K、16K、32K和64Κ的Block填充个数分别为DX、EX、FX、GX、HX,现以 8KBlock 为例,计算 8K Block 的填充比率为 Zx = Ex/(Dx+Ex+Fx+Gx+Hx),即当前8K Block填充个数占所有Block填充个数的百分比。由于上层应用在不断变化,其读取的数据长度也会不同,导致每一个统计时刻的Block填充比率不同。本发明通过对m次的Block填充比率取平均值,作为计算当前Block存储空间的依据。假设8K Block m次的统计结果分别为:m次统计中有nl次得到的填充比率为Z1,有n2次得到的填充比率为Z2,……,有ni次得到的填充比率为Zi,其中m= (nl+n2+…+ni),则实际填充比率4 =(Zfnl+Z#!^+....+Zwni)/m。根据该填充比率重新为8K大小的Block分配存储空间,存储空间容量为Qy = Q*Zy。同理,计算4K、16K、32K和64Κ的Block填充比率,从而计算出对应的存储空间。可见,当某一种上层业务命令增多时,占用对应Block的数量也会增多,则统计的填充比率增加,从而为该类业务命令分配更多的Block空间。
[0030]在上述填充比率统计过程中,可能存在某一种Block始终未被使用或极少使用的情况,也要为其保留一定比例(例如1% )的空间备用。
[0031]具体的分配策略如图8所示。假设某一时刻统计的各Block的填充比率为:4K为30%,8Κ为30%,16Κ为30%,32Κ为5%,64Κ为5% ; 10秒钟后统计的填充比率为:4Κ为40%,8Κ为50%,16Κ为10%,32Κ为0%,64Κ为0%,则应增加4Κ和8Κ Block的空间,减少16K、32K和64K Block的存储空间。在此段时间内,虽然32K和64K Block未被使用,但仍需预留一部分空间(例如,各1%),在剩余空间中为41(、81(和16K按比例分配。同时,在减少某种Block的空间之前,需检查该Block的空间是否已被全部填充,若某种Block空间已被用完,则按照LRU方式提取需要释放的空间,将里面的数据置为无效,然后再重新划给需要多分配空间的Block。
[0032]本发明根据业务命令大小选择需要填充的Block大小,尽量减少磁盘的回读次数,提高SSD Cache的填充速度。同时,根据业务命令大小的分布趋势,动态调整SSD Cache的不同Block的分配空间,进一步降低了对磁盘的随机命令请求,提高了 SSD Cache的填充速度,达到提高随机读取性能的目的。
[0033]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种SSD Cache填充方法,应用于存储设备上,其特征在于,该方法包括: 将SSD Cache划分成若干不同大小的块Block ; 根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。
2.如权利要求1所述的方法,其特征在于: 为所述不同大小的Block动态分配存储空间。
3.如权利要求2所述的方法,其特征在于: 每一种类型Block的存储空间计算方法相同,具体为:
Qy = Q*Zy
其中, Q为SSD Cache的存储空间总容量; Zy为m次Block填充个数百分比的平均值; Qy为分配的Block存储空间容量; 所述大小相同的Block为同一类型Block ; 所述Block填充个数百分比为预设时间段内当前类型Block的填充个数占所有类型Block填充个数的百分比。
4.如权利要求3所述的方法,其特征在于: 当某类型Block计算得到的Qy为O时,将预设大小的空间容量分配给该类型的Block。
5.如权利要求1所述的方法,其特征在于:在进行Block填充之前,还包括: 在接收到上层业务的读请求,将磁盘中数据写入读缓存时,启动SSD Cache填充。
6.一种SSD Cache填充装置,应用于存储设备上,其特征在于,该装置包括: Block配置单元,用于将SSD Cache划分成若干不同大小的块Block ; Block填充单元,用于根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。
7.如权利要求6所述的装置,其特征在于: 所述Block配置单元进一步用于为所述不同大小的Block动态分配存储空间。
8.如权利要求7所述的装置,其特征在于: 每一种类型Block的存储空间计算方法相同,具体为:
Qy = Q*Zy
其中, Q为SSD Cache的存储空间总容量; Zy为m次Block填充个数百分比的平均值; Qy为分配的Block存储空间容量; 所述大小相同的Block为同一类型Block ; 所述Block填充个数百分比为预设时间段内当前类型Block的填充个数占所有类型Block填充个数的百分比。
9.如权利要求8所述的装置,其特征在于: 当某类型Block计算得到的Qy为O时,将预设大小的空间容量分配给该类型的Block。
10.如权利要求6所述的装置,其特征在于,在所述Block填充单元之前,还包括: 填充启动单元,用于在接收到上层业务的读请求,将磁盘中数据写入读缓存时,启动SSD Cache 填充。
【文档编号】G06F3/06GK104133642SQ201410367728
【公开日】2014年11月5日 申请日期:2014年7月29日 优先权日:2014年7月29日
【发明者】吴会堂, 石岩, 姚婷 申请人:浙江宇视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1