一种基于高性能存储介质的数据缓存方法及系统与流程

文档序号:12733533阅读:181来源:国知局
一种基于高性能存储介质的数据缓存方法及系统与流程

本发明涉及缓存技术领域,特别涉及一种基于高性能存储介质的数据缓存方法,还涉及一种基于高性能存储介质的数据缓存系统。



背景技术:

缓存技术是为了解决两个交互处理单元之间由于处理速度不同而产生的速度瓶颈。在Linux系统中,读写文件时,内核为了提高读写性能与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存),即使程序运行结束后,Cache Memory也不会自动释放,导致在Linux系统中程序频繁读写文件后,可用物理内存大幅度减少。导致Cache Memory存在技术问题,即在连续读写数据时,缓存空间有限,导致缓存速度降低,以及无掉电保护,容易导致下刷至物理盘的数据不一致以及数据丢失等问题。

因此,如何利用高性能存储介质增加内存缓存空间,提高缓存速度,保证数据完整是本领域技术人员需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种基于高性能存储介质的数据缓存方法,利用高性能存储介质增加内存缓存空间,提高缓存速度,保证数据完整。

本发明提供了一种基于高性能存储介质的数据缓存方法,包括:

获取缓存数据,并将所述缓存数据同时存储至所述内存缓存队列以及所述高性能存储介质中;

建立存储于所述内存缓存队列的缓存数据与存储于所述高性能存储介质的缓存数据的映射位图;

根据所述映射位图进行数据缓存处理。

优选的,在上述基于高性能存储介质的数据缓存方法中,所述根据所述映射位图进行数据缓存处理,包括:

当所述内存缓存队列被写满时,新缓存数据覆盖所述内存缓存队列中未下刷至物理盘的所述缓存数据存储,同时根据所述映射位图在所述高性能存储介质中为所述新缓存数据分配未利用空间。

优选的,在上述基于高性能存储介质的数据缓存方法中,所述根据所述映射位图进行数据缓存处理,包括:

当所述内存缓存队列的缓存数据下刷至物理盘中时,根据所述映射位图标记所述高性能缓存介质中与下刷至所述物理盘中的缓存数据对应的数据为无效数据。

优选的,在上述基于高性能存储介质的数据缓存方法中,所述根据所述映射位图进行数据缓存处理,包括:

当所述内存缓存队列所在系统掉电,且所述内存缓存队列中的缓存数据未下刷至物理盘中时,根据所述映射位图标记所述高性能缓存介质中与所述内存缓存队列中的缓存数据对应的数据为脏数据,并将所述脏数据下刷至所述物理盘中。

优选的,在上述基于高性能存储介质的数据缓存方法中,所述获取缓存数据之后,还包括:

将相邻位置的所述缓存数据进行合并;

根据预设时间内所述缓存数据的统计平均值计算数据切片宽度,按照所述数据切片宽度对合并后的缓存数据进行切片,得到数据切片。

优选的,在上述基于高性能存储介质的数据缓存方法中,所述将所述缓存数据同时存储至所述内存缓存队列以及所述高性能存储介质中之前,还包括:

按照所述数据切片的平均宽度对所述高性能存储介质中的存储空间进行容量划分得到容量切片,以使所述数据切片存入对应的所述容量切片中,所述容量切片的宽度大于或者等于所述数据切片的宽度。

本发明还提供了一种基于高性能存储介质的数据缓存系统,包括:

数据缓存模块,用于获取缓存数据,并将所述缓存数据同时存储至所述内存缓存队列以及所述高性能存储介质中;

映射建立模块,用于建立存储于所述内存缓存队列的缓存数据与存储于所述高性能存储介质的缓存数据的映射位图;

数据处理模块,用于根据所述映射位图进行数据缓存处理。

优选的,在上述基于高性能存储介质的数据缓存系统中,还包括:

数据合并模块,用于将相邻位置的所述缓存数据进行合并;

数据切片模块,用于根据预设时间内所述缓存数据的统计平均值计算数据切片宽度,按照所述数据切片宽度对所述缓存数据进行切片,得到数据切片。

优选的,在上述基于高性能存储介质的数据缓存系统中,还包括:

容量切片模块,用于按照所述数据切片的平均宽度对所述高性能存储介质中的存储空间进行容量划分得到容量切片,以使所述数据切片存入对应的所述容量切片中,所述容量切片的宽度大于或者等于所述数据切片的宽度。

为解决上述技术问题,本发明提供一种基于高性能存储介质的数据缓存方法,包括:获取缓存数据,并将所述缓存数据同时存储至所述内存缓存队列以及所述高性能存储介质中;建立存储于所述内存缓存队列的缓存数据与存储于所述高性能存储介质的缓存数据的映射位图;根据所述映射位图进行数据缓存处理。

由于高性能存储介质的读写速度快,且具有掉电保护等性能,本发明提供的方法将内存缓存与高性能存储介质进行结合,将缓存数据同时缓存至内存缓存队列以及高性能存储介质中,并通过建立内存缓存队列的数据与高性能存储介质的数据的映射位图,来对数据进行缓存处理,不仅能够增加内存缓存空间,还能够提高缓存速度,保证数据完整。

本发明所提供一种基于高性能存储介质的数据缓存系统,具有上述效果。

附图说明

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

图1为本发明实施例所提供的基于高性能存储介质的数据缓存方法的流程图;

图2为本发明实施例所提供的基于高性能存储介质的数据缓存系统的结构框图。

具体实施方式

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

请参考图1,图1为本发明实施例所提供的一种基于高性能存储介质的数据缓存方法,具体可以包括:

步骤S1:获取缓存数据,并将所述缓存数据同时存储至所述内存缓存队列以及所述高性能存储介质中。

其中,由于高性能存储介质优于内存容量,具有比传统硬盘更高的速读写性能和掉电保护的特征,同时将上层的缓存数据,如IO数据块缓存至内存缓存队列以及高性能存储介质中,目的是同时保存两份相同数据,避免数据丢失,保证数据完整性。同时,采用高性能存储介质的目的是加速缓存数据切片的写速率,为了提高数据缓存效率,也可以采用多个高性能存储介质,均在保护范围内。

步骤S2:建立存储于所述内存缓存队列的缓存数据与存储于所述高性能存储介质的缓存数据的映射位图。

其中,数据同时存放在内存队列缓存中和高性能存储介质中,为了表示二者之间数据标记的一致性,建立了此位图映射。

映射位图的作用在不同的应用场景下作用不同,例如,内存缓存队列写满时,由于未下刷至物理盘的脏数据同时存储在内存缓存和高性能存储介质中,利用高性能数据存储介质中的脏数据下刷,不仅新的缓存数据仍能够使用内存缓存队列,使得内存缓存队列中能够给予新缓存数据存储空间,而且保证数据的完整性和内存队列的高效性。当系统掉电后,且内存缓存队列中的脏数据未及时下刷至物理盘中,重新通电后,数据很容易丢失,导致再次下刷至物理盘的数据和内存缓存队列中的脏数据不一致,因此,利用高性能存储介质具有掉电保护功能,通过映射位图将高性能存储介质中与缓存队列中的脏数据对应的数据下刷到物理盘上,从而避免数据不一致的情况,其中,对缓存队列中的脏数据对应的高性能存储介质中的数据确认,依赖于映射位图。除上述情况之外,当内存缓存队列中的脏数据下刷到容量盘后,通过映射位图将以下刷至物理盘的脏数据对应的高性能存储介质中的脏数据进行标记,并通知高性能存储介质可将此部分数据无效,即可以被覆写,从而释放空间。

步骤S3:根据所述映射位图进行数据缓存处理。

需要指出的是,根据映射位图进行数据缓存处理包括但不限于上述几个应用场景,还可以为其它应用场景,均在保护范围内。

由于高性能存储介质的读写速度快,且具有掉电保护等性能,本发明提供的方法将内存缓存与高性能存储介质进行结合,将缓存数据同时缓存至内存缓存队列以及高性能存储介质中,并通过建立内存缓存队列的数据与高性能存储介质的数据的映射位图,来对数据进行缓存处理,不仅能够增加内存缓存空间,还能够提高缓存速度,保证数据完整。

在上述基于高性能存储介质的数据缓存方法的基础上,所述根据所述映射位图进行数据缓存处理,包括:

当所述内存缓存队列被写满时,新缓存数据覆盖所述内存缓存队列中未下刷至物理盘的所述缓存数据存储,同时根据所述映射位图在所述高性能存储介质中为所述新缓存数据分配未利用空间。

其中,新缓存数据如IO数据块,进入缓存队列后在未下刷至物理盘之前成为脏数据,为了避免内存缓存队列中的脏数据丢失,在高性能存储介质中同时缓存新缓存数据。若内存缓存队列写满,内存缓存队列中的脏数据被新缓存数据替代,内存缓存队列中的脏数据消失,此时,高性能存储介质中既保存了脏数据,还保存了新缓存数据,避免了脏数据的丢失,同时释放了内存缓存队列中的空间,使得内存缓存队列中的缓存空间扩大,以便内存缓存队列继续缓存数据,避免客户端因为内存缓存队列写满导致的内存溢出错误和系统无响应问题,优化客户操作体验。

在上述基于高性能存储介质的数据缓存方法的基础上,所述根据所述映射位图进行数据缓存处理,包括:

当所述内存缓存队列的缓存数据下刷至物理盘中时,根据所述映射位图标记所述高性能缓存介质中与下刷至所述物理盘中的缓存数据对应的数据为无效数据。

在上述基于高性能存储介质的数据缓存方法的基础上,所述根据所述映射位图进行数据缓存处理,包括:

当所述内存缓存队列所在系统掉电,且所述内存缓存队列中的缓存数据未下刷至物理盘中时,根据所述映射位图标记所述高性能缓存介质中与所述内存缓存队列中的缓存数据对应的数据为脏数据,并将所述脏数据下刷至所述物理盘中。

所述获取缓存数据之后,还包括:

将相邻位置的所述缓存数据进行合并;

根据预设时间内所述缓存数据的统计平均值计算数据切片宽度,按照所述数据切片宽度对合并后的缓存数据进行切片,得到数据切片。

其中,来自上层的缓存数据如IO数据,首先被合并,合并为连续的IO数据块,目的是能够优化一些随机不连续的小IO数据块。合并后的数据块进行固定大小的数据切片,目的是减少不必要的切片,优化切片效率。将内存缓存空间中的缓存数据表示为<内存偏移地址,数据长度,数据块>,数据切片后的数据块标记为<数据切片编号,偏移地址,数据长度>,二者之间建立索引关系来表示数据的来源和完整性,缓存数据与数据切片的对应关系是1:N的关系,即一个缓存可能被切分为一个或多个数据切片,具体的映射关系需要根据采用的算法确定,基本关系是map(数据块,[切片1,切片2、、、]),由于数据切片宽度已知,得到缓存数据与数据切片的地址对应关系。

在上述基于高性能存储介质的数据缓存方法基础上,所述将所述缓存数据同时存储至所述内存缓存队列以及所述高性能存储介质中之前,还包括:

按照所述数据切片的平均宽度对所述高性能存储介质中的存储空间进行容量划分得到容量切片,以使所述数据切片存入对应的所述容量切片中,所述容量切片的宽度大于或者等于所述数据切片的宽度。

其中,将数据切片与容量切片后的数据块做映射,其映射关系为一对多,即一个数据切片对应一个或多个容量切片,此时的映射关系可以保存为<{容量切片编号集合},数据切片编号,数据>,同时将数据切片对应的数据写入高性能存储介质空间切片编号对应的地址空间内。对高性能存储介质进行容量切片处理的目的是为了充分利用并发写入,降低写入时延。

下面对本发明实施例提供的基于高性能存储介质的数据缓存系统进行介绍,下文描述的基于高性能存储介质的数据缓存系统与方法可相互对应参照。

请参考图2,图2为本发明实施例所提供的基于高性能存储介质的数据缓存系统的结构框图。

本发明还提供一种基于高性能存储介质的数据缓存系统,包括:

数据缓存模块01,用于获取缓存数据,并将所述缓存数据同时存储至所述内存缓存队列以及所述高性能存储介质中;

映射建立模块02,用于建立存储于所述内存缓存队列的缓存数据与存储于所述高性能存储介质的缓存数据的映射位图;

数据处理模块03,用于根据所述映射位图进行数据缓存处理。

进一步的,在上述基于高性能存储介质的数据缓存系统中,还包括:

数据合并模块,用于将相邻位置的所述缓存数据进行合并;

数据切片模块,用于根据预设时间内所述缓存数据的统计平均值计算数据切片宽度,按照所述数据切片宽度对所述缓存数据进行切片,得到数据切片。

进一步的,在上述基于高性能存储介质的数据缓存系统中,还包括:

容量切片模块,用于按照所述数据切片的平均宽度对所述高性能存储介质中的存储空间进行容量划分得到容量切片,以使所述数据切片存入对应的所述容量切片中,所述容量切片的宽度大于或者等于所述数据切片的宽度。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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