SSDCACHE填充方法及装置.pdf

上传人:54 文档编号:494037 上传时间:2018-02-19 格式:PDF 页数:12 大小:2.37MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410367728.8

申请日:

2014.07.29

公开号:

CN104133642A

公开日:

2014.11.05

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 3/06申请日:20140729|||公开

IPC分类号:

G06F3/06; G06F12/08

主分类号:

G06F3/06

申请人:

浙江宇视科技有限公司

发明人:

吴会堂; 石岩; 姚婷

地址:

310051 浙江省杭州市滨江区西兴街道江陵路88号10幢南座1-11层

优先权:

专利代理机构:

北京博思佳知识产权代理有限公司 11415

代理人:

林祥

PDF下载: PDF下载
内容摘要

本发明提供一种SSD Cache填充方法及装置,应用于存储设备上,该方法包括:将SSD Cache划分成若干不同大小的块Block;根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。本发明根据业务命令大小选择需要填充的Block大小,尽量减少磁盘的回读次数,提高SSD Cache的填充速度。

权利要求书

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为0时,将预设大小的空间容量分配给该类型的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为0时,将预设大小的空间容量分配给该类型的Block。

10.
  如权利要求6所述的装置,其特征在于,在所述Block填充单元之前,还包括:
填充启动单元,用于在接收到上层业务的读请求,将磁盘中数据写入读缓存时,启动SSD Cache填充。

说明书

SSD Cache填充方法及装置
技术领域
本发明涉及存储技术领域,尤其涉及一种SSD Cache填充方法及装置。
背景技术
目前通用的存储产品中,使用SSD(Solid State Disk,固态硬盘)硬盘作为系统的二级读缓存,来提高阵列的随机读性能,通常将此处的SSD硬盘叫做SSD Cache(高速缓冲存储器)。由于存储设备自身的读缓存通常都比较小,一般只有几百MB到1GB之间,而SSD Cache的空间已经达到了1TB,因此,如果将数据提前读出并填充到SSD Cache,那么,数据被访问时,直接从SSD Cache读取,可以明显缩短响应时间,提高读取性能。
现有技术方案如图1所示,当数据进入读缓存并且读缓存用尽后,开始填充SSD Cache,这提高了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时的回读次数增加,增加了磁盘的随机命令数,影响业务性能和填充速度。
发明内容
有鉴于此,本发明提供了一种SSD Cache填充方法,应用于存储设备上,该方法包括:
将SSD Cache划分成若干不同大小的块Block;
根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。
本发明还提供了一种SSD Cache填充装置,应用于存储设备上,该装置包括:
Block配置单元,用于将SSD Cache划分成若干不同大小的块Block;
Block填充单元,用于根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。
本发明根据业务命令大小选择需要填充的Block大小,尽量减少磁盘的回读次数,提高SSD Cache的填充速度。同时,根据业务命令大小的分布趋势,动态调整SSD Cache的不同Block的分配空间,进一步降低了对磁盘的随机命令请求,提高了SSD Cache的填充速度,达到提高随机读取性能的目的。
附图说明
图1是现有技术中SSD Cache启动示意图。
图2是现有技术中SSD Cache填充示意图。
图3是本发明一种实施方式中SSD Cache填充装置的逻辑结构及其基础硬件环境的示意图。
图4是本发明一种实施方式中SSD Cache填充方法的流程图。
图5是本发明一种实施方式中SSD Cache启动示意图。
图6是本发明一种实施方式中SSD Cache首次填充示意图。
图7是本发明一种实施方式中SSD Cache二次填充示意图。
图8是本发明一种实施方式中SSD Cache动态分配空间示意图。
具体实施方式
以下结合附图对本发明进行详细说明。
本发明提供一种虚拟化环境下SSD Cache填充装置,以下以软件在计算机中实现为例进行说明,但是本发明并不排除诸如硬件或者逻辑器件等其他实现方式。如图3所示,该装置运行的计算机硬件环境包括CPU、内存、非易失性存储器以及其他硬件。该装置作为计算机上一个逻辑层面的虚拟装置,其通过计算机上的CPU来运行。该装置包括Block配置单元和Block填充单元。请参考图4,该装置的使用和运行过程包括以下步骤:
步骤101,Block配置单元将SSD Cache划分成若干不同大小的块Block;
步骤102,Block填充单元根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。
本发明通过将SSD Cache划分为多个不同大小的Block,再根据上层业务命令选择与其大小最接近的Block进行填充,以减少对磁盘的随机命令请求,提高了SSD Cache的填充速度,达到提高随机读取性能的目的。具体实施过程如下。
如图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中的问题,节约了时间,在一定程度上提高了填充速度。
由于SSD Cache数据填充必须满足待填充数据块大小与Block大小一致的条件,因此,本发明通过将SSD Cache划分成不同大小的Block(例如,4K、8K、16K、32K和64K),增加待填充数据块与Block匹配的机率,进而减少从磁盘回读数据的次数,提高填充速度。
在对SSD Cache进行数据填充时,根据待填充数据块大小选择与该数据块大小最接近的Block进行填充。结合图6介绍SSD Cache数据填充过程。本实施例中,SSD Cache划分的Block大小分别为4K、8K、16K、32K和64K。对于大于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空间从磁盘回读数据进行填充。
在具体实现过程中,可通过设置回读标识位记录对应Block是否需要回读,每一个二进制位bit代表一个Block。bit等于0,表示对应Block未填充或已填充不回读;bit等于1,表示对应Block已填充待回读。假设使用一个1TB的SSD Cache,按照极限情况计算,假设8K大小的Block占据了整个 SSD Cache空间,并且全部需要回读,则回读标识位占用内存大小为:((1*1024*1024*1024)/8)/(8*1024*1024)=16MB,所以,在SSD Cache初始化时,需预先划定16MB的空间给回读标识位,这些标志位并不会明显占用很大内存空间。
上述过程为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 Recently Used,近期最少使用算法)进行替换,将最近不用的数据块从Block中移出,填充新的数据块。
为了进一步提高填充速度,本发明可根据SSD Cache中不同大小Block的使用情况,动态分配存储空间。例如,初始化时,默认按照平均分配的原则,为4K、8K、16K、32K和64K的Block分配相同的空间容量。假设SSD Cache的存储空间总容量为Q,则每种Block大小的容量均为Q/5。设置一个定时器,每隔一定时间(比如1s)进行一次填充Block个数的统计。假设当前到达统计时间点,统计4K、8K、16K、32K和64K的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次统计中有n1次得到的填充比率为Z1,有n2次得到的填充比率为Z2,……,有ni次得到的填充比率为Zi,其中m=(n1+n2+…+ni),则实际填充比率Zy=(Z1*n1+Z2*n2+….+Zi*ni)/m。根据该填充比率重新为 8K大小的Block分配存储空间,存储空间容量为Qy=Q*Zy。同理,计算4K、16K、32K和64K的Block填充比率,从而计算出对应的存储空间。可见,当某一种上层业务命令增多时,占用对应Block的数量也会增多,则统计的填充比率增加,从而为该类业务命令分配更多的Block空间。
在上述填充比率统计过程中,可能存在某一种Block始终未被使用或极少使用的情况,也要为其保留一定比例(例如1%)的空间备用。
具体的分配策略如图8所示。假设某一时刻统计的各Block的填充比率为:4K为30%,8K为30%,16K为30%,32K为5%,64K为5%;10秒钟后统计的填充比率为:4K为40%,8K为50%,16K为10%,32K为0%,64K为0%,则应增加4K和8K Block的空间,减少16K、32K和64K Block的存储空间。在此段时间内,虽然32K和64K Block未被使用,但仍需预留一部分空间(例如,各1%),在剩余空间中为4K、8K和16K按比例分配。同时,在减少某种Block的空间之前,需检查该Block的空间是否已被全部填充,若某种Block空间已被用完,则按照LRU方式提取需要释放的空间,将里面的数据置为无效,然后再重新划给需要多分配空间的Block。
本发明根据业务命令大小选择需要填充的Block大小,尽量减少磁盘的回读次数,提高SSD Cache的填充速度。同时,根据业务命令大小的分布趋势,动态调整SSD Cache的不同Block的分配空间,进一步降低了对磁盘的随机命令请求,提高了SSD Cache的填充速度,达到提高随机读取性能的目的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

SSDCACHE填充方法及装置.pdf_第1页
第1页 / 共12页
SSDCACHE填充方法及装置.pdf_第2页
第2页 / 共12页
SSDCACHE填充方法及装置.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《SSDCACHE填充方法及装置.pdf》由会员分享,可在线阅读,更多相关《SSDCACHE填充方法及装置.pdf(12页珍藏版)》请在专利查询网上搜索。

本发明提供一种SSDCache填充方法及装置,应用于存储设备上,该方法包括:将SSDCache划分成若干不同大小的块Block;根据待填充数据块大小,选择与所述待填充数据块大小最接近的Block进行填充,所述待填充数据块大小小于或者等于所述Block大小。本发明根据业务命令大小选择需要填充的Block大小,尽量减少磁盘的回读次数,提高SSDCache的填充速度。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1