一种存储系统的IO读加速缓存方法和系统技术方案

技术编号:13183775 阅读:82 留言:0更新日期:2016-05-11 15:20
本发明专利技术提供一种存储系统的IO读加速缓存方法和系统,所述方法包括以下步骤:从内存中查找所需数据,若命中,则读取数据并返回;若未命中,则进入固态硬盘中查找所需数据,若命中,则将数据加载到内存中,并将该数据从固态硬盘中删除;若未命中,从磁盘读取所需数据,并将数据加载到内存中。本发明专利技术避免了页面缓存写操作丢数据的缺陷,同时又充分利用了内存的高速访问性能;内存和固态硬盘缓存互斥分级,数据不会同时存在于内存和固态硬盘,因而不会形成重复浪费;从内存淘汰的数据会写入固态硬盘,因而最热的数据保存在内存,次热的数据则保存在固态硬盘,避免了次热数据被从内存淘汰后,再次访问出现不命中的情况。

【技术实现步骤摘要】

本专利技术属于计算机存储
,具体涉及一种存储系统的1读加速缓存方法和系统。
技术介绍
缓存是为了实现数据快速访问而设立的临时存储区。当我们浏览一个web页面,对应的页面文件会被保存在浏览器目录下的缓存目录,再次浏览这个页面时,浏览器从本地缓存目录获取页面文件,避免从远端服务器获取页面文件,因而缩短了访问时间,也减轻了网络负担。与缓存相对应的是存储原始数据的主存储,在web访问时,本地目录是缓存,远端服务器是主存储。缓存在计算机系统中的应用非常广泛,比如web浏览器将web页面缓存在本地;数据库服务器则将数据查找和更新所需的相关信息缓存在内存;操作系统将最近访问的文件数据缓存在内存;CPU将访问过的内存数据缓存在L1/L2缓存中。计算机系统中存在各种各样的缓存技术,这些技术提高了系统的整体性能。数据进入缓存由读/写操作触发,读操作将从主存储中读取的数据写入缓存,以供后续访问;写操作则可能将数据写入缓存,或者更新缓存中已有的数据。在存储系统中,因为机械硬盘价格低廉,依然是目前应用最广的数据存储介质,但其访问速度比较缓慢,并且多年来性能提升并不明显,同时又称为掣肘1性能的关键因素。在这种情况下,各种1缓存技术孕育而生。目前,标准的内核存储栈中存在的缓存机制是页面缓存(pagecache),页面缓存为文件(包括设备文件)提供缓存,页面缓存本质上是一种回写模式(write back)的缓存,因为没有持久化机制,可能导致数据丢失。使用缓存套件时,应用程序需要使用直接读写(Direct10)方式以绕开页面缓存,1请求作用于目标硬盘前被缓存套件捕捉,然后进行处理。显然,写操作不能使用内存作为缓存,否则会存在与页面缓存相同的问题,但是读操作却可以使用。但是,当前存在的缓存套件完全摒弃了对内存的使用,虽然固态硬盘的读性能很好,但对于热数据来说,从固态硬盘访问的速度是远远低于内存的。不管是读操作还是写操作场景,缓存设备大小是有限的,而且缓存设备存储空间一般会远小于主设备,所以,如何在缓存套件中合理使用内存以提高读操作的性能是业界人员值得研究的问题。
技术实现思路
鉴于以上所述现有技术的缺点,本专利技术的目的在于提供一种存储系统的1读加速缓存方法和系统,用于解决现有技术中缓存设备大小受限、数据易丢失、未合理利用内存、缓存速度慢和读操作性能低的问题。为了达到上述目的,本专利技术采取以下技术方案:一种存储系统的1读加速缓存方法,包括以下步骤:从内存中查找所需数据,若命中,则读取数据并返回;若未命中,则进入固态硬盘中查找所需数据,若命中,则将数据加载到内存中,并将该数据从固态硬盘中删除;若未命中,则从磁盘读取所需数据,并将数据加载到内存中。于本专利技术的一实施方式中,当在内存里未命中所需数据时,判断所述内存是否有空闲块;若是,则从固态硬盘读取所需数据,并将该数据加载到内存中;若否,则通过内存的算法选出淘汰块写入固态硬盘中。于本专利技术的一实施方式中,在内存的算法选出淘汰块写入固态硬盘之前,判断固态硬盘是否有空闲块,若是,则将内存的算法选出的淘汰块写入固态硬盘中;若否,则通过固态硬盘的算法选出淘汰块丢弃。于本专利技术的一实施方式中,所述内存的算法和所述固态硬盘的算法均为LRU算法。本专利技术还提供一种存储系统的1读加速缓存系统,安装于主机,主要包括操作模块、Linux内核模块、固态硬盘和磁盘;所述Linux内核模块包括1缓存套件模块、内存和块层接口模块;所述内存用于数据的一级缓存;所述固态硬盘用于数据的二级缓存;所述块层接口模块为所述操作模块提供服务,所述块层接口模块使用一般指令直接访问所述内存,所述块层接口模块使用驱动程序提供的接口访问所述固态硬盘和所述磁盘;所述1缓存套件模块用于读操作时数据的查找、加载和缓存;所述内存、所述固态硬盘和所述磁盘均通过所述块层接口模块发送数据至所述操作模块;所述固态硬盘和所述磁盘通过所述1缓存套件模块加载数据至所述内存;所述内存写数据至所述固态硬盘;所述磁盘通过所述块层接口模块直接写数据至所述操作模块。于本专利技术的一实施方式中,所述1缓存套件模块用于在操作模块访问磁盘时查询所述内存,还用于在所述内存里未命中数据时查询所述固态硬盘,还用于在所述固态硬盘里未命中数据时查询所述磁盘。于本专利技术的一实施方式中,所述1缓存套件模块还用于在所述内存里命中数据时读取所述数据并返回,还用于在所述固态硬盘里命中数据时加载所述数据到所述内存中,还用于在所述磁盘里命中数据时加载所述数据到所述内存中。于本专利技术的一实施方式中,所述1缓存套件模块还用于在所述内存里未命中数据时判断所述内存是否有空闲块;所述内存的LRU算法用于在所述内存无空闲块时选出淘汰块写入所述固态硬盘。于本专利技术的一实施方式中,所述1缓存套件模块还用于在所述淘汰块写入所述固态硬盘前判断所述固态硬盘是否有空闲块,还用于在所述固态硬盘有空闲块时将所述淘汰块写入所述固态硬盘;所述固态硬盘的LRU算法用于在所述固态硬盘无空闲块时从所述固态硬盘中选出淘汰块丢弃。如上所述,本专利技术的一种存储系统的1读加速缓存方法和系统,具有以下有益效果:1.避免了页面缓存写操作丢数据的缺陷,同时又充分利用了内存的高速访问性會K。2.内存和固态硬盘缓存互斥分级,数据不会同时存在于内存和固态硬盘,因而不会形成重复浪费;从内存淘汰的数据会写入固态硬盘,因而最热的数据保存在内存,次热的数据则保存在固态硬盘,避免了次热数据被从内存淘汰后,再次访问出现不命中的情况。【附图说明】图1显示为标准Linux内核存储栈示意图。图2显示为单纯使用固态硬盘作为缓存的存储栈示意图。图3显示为本专利技术存储系统的1读加速缓存系统的框架结构示意图。图4显示为本专利技术存储系统的1读加速缓存系统的存储栈示意图。图5显示为本专利技术存储系统的1读加速缓存方法于一实施例中的读操作流程图。图6显示为本专利技术存储系统的1读加速缓存系统于一实施例中的部署图。元件标号说明I主机11Linux 内核模块12操作模块13固态硬盘14磁盘1111缓存套件模块112内存113块层接口模块SOl ?S12 步骤【具体实施方式】以下通过特定的具体实例说明本专利技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本专利技术的其他优点与功效。本专利技术还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本专利技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本专利技术的基本构想,遂图式中仅显示与本专利技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。在缓存技术下,数据可能会有一份或多份副本,且通常是两份,缓存中的数据称之为缓存副本,而其对应的主存储中的数据称之为主副本。按前文所述,缓存技术的基本原理是将可能被频繁访问的数据缓存到可以更快访问的地方,从而提升访问效率。缓存也可以被用于写加速;在这种情况下,数据先被写入缓存副本,随后再被同步到主副本,因此必须保证缓存副本被更新后,主副本最终可以与其保持一致。另外,如果只更新本文档来自技高网
...

【技术保护点】
一种存储系统的IO读加速缓存方法,其特征在于,包括以下步骤:步骤S1,从内存中查找所需数据,若命中,则读取数据并返回;若未命中,则进入步骤S2;步骤S2,进入固态硬盘中查找所需数据,若命中,则将数据加载到内存中,并将该数据从固态硬盘中删除;若未命中,则进入步骤S3;步骤S3,从磁盘读取所需数据,并将数据加载到内存中。

【技术特征摘要】

【专利技术属性】
技术研发人员:方钰翔
申请(专利权)人:上海爱数信息技术股份有限公司
类型:发明
国别省市:上海;31

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

1