一种缓存数据的方法及装置制造方法及图纸

技术编号:17704860 阅读:34 留言:0更新日期:2018-04-14 17:51
本发明专利技术提供了一种缓存数据的方法及装置,所述的方法包括:S1:接收上层下发的IO数据块,并将IO数据块拆分成若干小数据块;S2:将拆分后的若干小数据块依次访问缓存盘;S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。所述的装置包括:数据拆分模块,用于将IO数据块差分成若干小数据块;数据访问模块,用于实现若干小数据块对于缓存盘的读或写访问;数据封装模块,用于将若干小数据块分装成一个完整的IO数据块。通过对上层下发的IO数据块先做拆分处理,拆分成更小的数据块,再访问缓存盘或磁盘,以此方式提高IO请求的缓存命中率,提升缓存访问速度。

【技术实现步骤摘要】
一种缓存数据的方法及装置
本专利技术涉及计算机
,具体的说是一种缓存数据的方法及装置。
技术介绍
在计算机技术中,缓存的使用比较广泛,cpu和内存之间、存储软件中都有使用。数据缓存是决定设备运行能力的重要决定因素,它不仅直接反应了设备的性能,而且决定着对硬件的选择范围。目前,几款常见的用于Linux系统中的缓存软件的数据调度方法,基本上都未对上层下发的IO数据块做过多的处理,直接利用接收到的IO数据块访问缓存盘或后端机械盘,只是在数据访问的优先级、访问通道等环节进行了优化,对于较大的IO数据块而言,将IO数据块作为整体进行访问的方式,在缓存命中率以及缓存访问速度上不能满足客户的需求。
技术实现思路
为了解决上述问题,提供了一种缓存数据的方法及装置,对上层下发的IO数据块先做拆分处理,拆分成更小的数据块,再访问缓存盘或磁盘,以此方式提高IO请求的缓存命中率,提升缓存访问速度。本专利技术实施例提供了一种缓存数据的方法,所述的方法包括:S1:接收上层下发的IO数据块,并将IO数据块拆分成若干小数据块;S2:将拆分后的若干小数据块依次访问缓存盘;S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。进一步的,步骤S1的具体实现过程为:S11:系统接收到IO访问请求后,将IO数据块拆分成若干小数据块;S12:为每一个小数据块建立链表管理。进一步的,步骤S12的具体实现过程为:S121:创建每一个小数据块的结构体,每一个机构体均包含链表、卷编号、逻辑块地址和扇区数量;S122:获取IO请求的起始逻辑块地址;S123:以IO请求的起始逻辑块地址为边界选取第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;S124:通过上一个小数据块的逻辑块地址和扇区数量,计算出下一个小数据块的起始扇区地址,并在IO中以新计算出的逻辑块地址开始截取新的小数据块;S125:将步骤S124中获取的信息记录到该小数据块对应的链表中;S126:重复步骤S124-S125,直至所有的小数据块建立链表管理信息。进一步的,步骤S123的具体实现过程为:计算IO的起始逻辑块地址和缓存分区的扇区边界是否对齐;若边界对齐,则从IO的起始扇区开始截取一个小数据块作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;若边界不对齐,截取IO起始逻辑块地址到与缓存扇区对齐地址之间的这段数据作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息。进一步的,如果小数据块为读数据,则步骤S2的具体实现过程为:通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;若命中,则把将硬盘的扇区号转换为SSD的扇区号,然后将此小数据块向SSD提交,进行读取;若未命中,则向硬盘驱动提交小数据块,从硬盘读数据,读取完成后,由回调函数启动回写SSD操作,将小数据块的扇区号转换为SSD的扇区号,然后向SSD驱动程序提交,将硬盘读取的数据写入SSD。进一步的,如果小数据块为写数据,则步骤S2的具体实现过程为:通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;若命中,则把小数据块提交到SSD盘,SSD盘在脏数据达到阈值时自动下刷数据;若未命中,则直接把数据提交到后端HDD盘。本专利技术实施例还提供了一种缓存数据的装置,所述的装置包括:数据拆分模块,用于将IO数据块差分成若干小数据块;数据访问模块,用于实现若干小数据块对于缓存盘的读或写访问;数据封装模块,用于将若干小数据块分装成一个完整的IO数据块。
技术实现思路
中提供的效果仅仅是实施例的效果,而不是专利技术所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:1、在生成IO请求提交到缓存盘之前对其进行拆分,在保证数据块信息不丢失的情况下,可以有效缩小数据块的大小,提高缓存加速的性能。2、使用链表对拆分后的小数据块进行管理,可以保证拆分后数据块的唯一性,并增减拆分后数据块的逻辑性和关联性,在处理大块IO读写请求时能有效的提高数据的缓存命中率。3、对于读、写数据采用不同的缓存策略,可以进一步提升缓存速度,减少读、写数据的缓存响应时间。附图说明图1是本专利技术方法流程图;图2是本专利技术装置的原理框图。具体实施方式为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本专利技术进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本专利技术的不同结构。为了简化本专利技术的公开,下文中对特定例子的部件和设置进行描述。此外,本专利技术可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本专利技术省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本专利技术。如图1所示的一种缓存数据的方法,所述的方法包括以下步骤:S1:接收上层下发的IO数据块(bio),并将IO数据块(bio)拆分成若干小数据块(pio),具体实现过程为:S11:当有IO访问请求时,对IO数据块进行拆分,一般拆分成4K大小的数据块(pio)。S12:使用链表对新拆分的数据块进行管理,具体实现过程为:S121:创建pio结构体,结构体中主要包含链表(listnode)、卷编号(lun)、逻辑块地址(lba)、扇区数量(count)等属性。链表使用单链表即可满足要求。S122:获取IO请求的起始逻辑块地址。S123:以IO请求的起始逻辑块地址为边界选取第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息。此处要计算IO的起始lba和缓存分区的扇区边界是否对齐,若边界对齐,则从IO的起始扇区开始截取一个小数据块作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;若边界不对齐,截取IO起始逻辑块地址到与缓存扇区对齐地址之间的这段数据作为第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息。S124:通过上一个小数据块的逻辑块地址和扇区数量,计算出下一个小数据块的起始扇区地址,并在IO中以新计算出的逻辑块地址开始截取新的小数据块。S125:将步骤S124中获取的信息记录到该小数据块对应的链表中。S126:重复步骤S124-S125,直至所有的小数据块建立链表管理信息。S2:将拆分后的若干小数据块依次访问缓存盘。如果小数据块为读数据,则步骤S2的具体实现过程为:通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;若命中,则把将硬盘的扇区号转换为SSD的扇区号,然后将此小数据块向SSD提交,进行读取;若未命中,则向硬盘驱动提交小数据块,从硬盘读数据,读取完成后,由回调函数启动回写SSD操作,将小数据块的扇区号转换为SSD的扇区号,然后向SSD驱动程序提交,将硬盘读取的数据写入SSD。如果小数据块为写数据,则步骤S2的具体实现过程为:通过小数据块的扇区逻辑块地址计算SSD盘数据分区编号,并查询是否命中;若命中,则把小数据块提交到SSD盘,SSD盘在脏数据达到阈值时自动下刷数据;若未命中,则直接把数据提交到后端HDD盘。S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。对于IO请求的起始lba,一本文档来自技高网
...
一种缓存数据的方法及装置

【技术保护点】
一种缓存数据的方法,其特征是:所述的方法包括:S1:接收上层下发的IO数据块,并将IO数据块拆分成若干小数据块;S2:将拆分后的若干小数据块依次访问缓存盘;S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。

【技术特征摘要】
1.一种缓存数据的方法,其特征是:所述的方法包括:S1:接收上层下发的IO数据块,并将IO数据块拆分成若干小数据块;S2:将拆分后的若干小数据块依次访问缓存盘;S3:访问完成后,将拆分后的若干小数据块封装成IO数据块,并通过回调函数提交给上层接口。2.根据权利要求1所述的一种缓存数据的方法,其特征是:步骤S1的具体实现过程为:S11:系统接收到IO访问请求后,将IO数据块拆分成若干小数据块;S12:为每一个小数据块建立链表管理。3.根据权利要求2所述的一种缓存数据的方法,其特征是:步骤S12的具体实现过程为:S121:创建每一个小数据块的结构体,每一个机构体均包含链表、卷编号、逻辑块地址和扇区数量;S122:获取IO请求的起始逻辑块地址;S123:以IO请求的起始逻辑块地址为边界选取第一个小数据块,并记录其卷编号、逻辑块地址和扇区数量三种信息;S124:通过上一个小数据块的逻辑块地址和扇区数量,计算出下一个小数据块的起始扇区地址,并在IO中以新计算出的逻辑块地址开始截取新的小数据块;S125:将步骤S124中获取的信息记录到该小数据块对应的链表中;S126:重复步骤S124-S125,直至所有的小数据块建立链表管理信息。4.根据权利要求3所述的一种缓存数据的方法,其特征是:步骤S123的具体实现过程为:计算IO的起始逻辑块地址和缓存分区的扇区边界是否对齐;若边界对齐,则从I...

【专利技术属性】
技术研发人员:史顺玉
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1