一种基于数据块的高速缓存设计方法
【专利摘要】本发明提供一种基于数据块的高速缓存设计方法,具体步骤如下:1)存储Initiator端通过TCP/IP协议发送读(写)请求;2)存储Target端接收数据读(写)请求;3)在缓存数据结构中查找读(写)请求的数据,如果命中缓存,则直接从缓存读(写)数据并返回,不必从硬盘重新读取;如果未命中缓存,则需要从硬盘读(写)数据,同时将读(写)的数据保留在缓存中,返回;4)存储Target端采用定时轮询等机制将缓存数据刷新到磁盘中。
【专利说明】一种基于数据块的高速缓存设计方法
【技术领域】
[0001]本发明涉及计算机存储软件开发【技术领域】,具体地说是一种基于数据块的高速缓存设计方法。
【背景技术】
[0002]随着信息技术的迅猛发展,对大规模海量数据的存储和管理越来越引起业界的重视,这对存储设备的可用性和可靠性提出了更高的要求。
[0003]目前,磁盘阵列已经成为构建大规模存储系统的基本组成单元,而磁盘阵列能够提供的缓存容量和缓存效率是衡量其性能的重要指标。
[0004]磁盘阵列的缓存机制工作在存储Target端,主流开源存储Target软件不提供独立的缓存功能,或者通过文件系统的缓存机制实现缓存功能。对SAN存储系统而言,通过文件系统的缓存机制延长了数据传输的路径,降低了数据缓存的访问效率。本发明基于数据块设计了一种高速缓存的方法,不必经过文件系统,能够应用在存储Target软件中,实现高效率的数据缓存功能。
【发明内容】
[0005]本发明的目的是提供一种基于数据块的高速缓存设计方法。
[0006]本发明的目的是按以下方式实现的,在Raidx Tree数据结构的基础上,用链表增加数据页之间的关联,快速查找数据块是否命中,方便了对缓存数据进行更新、写穿、镜像操作,其中:
缓存数据的组织方式,
采用Radix Tree数据结构管理缓存数据,将数据指针与long整数键值相关联,用数据块地址作为查询索引,快速定位数据库在缓存中的位置,在缓存容量方面,Radix Tree的容量没有上限,其高度表示了其能够管理的最大数据容量,高度越高,其能够管理的缓存容量越大,在高度为4的Radix Tree中,可缓存的数据容量可达64G ;
刷新缓存数据到硬盘的方式
为了对不同状态的缓存数据进行统一管理,在缓存数据之间建立起双向访问链表,通过链表头可以访问所有状态相同的链表,依据不同的状态进行更新、写穿、镜像操作;
写数据链表表示该数据块已经被修改,在适当的时机直接写入本地磁盘中,该数据链表设计为LRU链表,将最新操作的数据块加到链表的前面,当要刷新数据的时候,从链表的末尾开始刷新;
读数据链表表示该数据块是从磁盘中读取的数据,并且没有被修改,没有必要刷新到硬盘中;如果是双控控制器,要添加镜像链表,表示该数据块等待镜像到另一个控制器中,防止数据丢失;
系统运行流程如下:
I)存储Initiator端通过TCP/IP协议发送读或写请求; 2)存储Target端接收数据读或写请求;
3)在缓存数据结构中查找读或写请求的数据,如果命中缓存,则直接从缓存读或写数据并返回,不必从硬盘重新读取;如果未命中缓存,则需要从硬盘读或写数据,同时将读或写的数据保留在缓存中,返回;
4)存储Target端采用定时轮询等机制将缓存数据刷新到磁盘中。
[0007]本发明的有益效果是:本设计方法适用于存储Target软件,重新定义存储Target的1流程,在Target的1操作流程中加入缓存控制模块,利用本发明中的缓存管理方法,实现缓存的高效访问和管理功能。
【专利附图】
【附图说明】
[0008]图1 是 Raidx Tree 结构图;
图2是缓存数据块链表关系图;
图3是存储Initiator与Target信息交互流程框图。
【具体实施方式】
[0009]参照说明书附图对本发明的基于数据块的高速缓存设计方法作以下详细地说明。
[0010]在Raidx Tree数据结构的基础上,用链表增加数据页之间的关联,该方法能够快速查找数据块是否命中,简洁的数据管理方式也方便了对缓存数据进行更新、写穿、镜像等操作。
[0011]I)缓存数据的组织方式
缓存数据结构最频繁的操作是查找操作,查找的速度直接影响到缓存效率的高低。本发明采用Radix Tree数据结构管理缓存数据,Radix Tree是一种搜索树,它将数据指针与long整数键值相关联,本设计中采用数据块地址作为查询索引,基于该索引,可以快速定位数据库在缓存中的位置。在缓存容量方面,Radix Tree的容量没有上限,其高度表示了其能够管理的最大数据容量,高度越高,其能够管理的缓存容量越大,在高度为4的Radix Tree中,可缓存的数据容量可达64G。
[0012]图1表示一了个高度为4的Radix Tree的数据结构,其中缓存了 7个4k的数据块。
[0013]2)刷新缓存数据到硬盘的方式
为了对不同状态的缓存数据进行统一管理,在缓存数据之间建立起双向访问链表,通过链表头可以访问所有状态相同的链表,依据不同的状态进行更新、写穿、镜像等操作。
[0014]写数据链表表示该数据块已经被修改,在适当的时机可以直接写入本地磁盘中,该数据链表可以设计为LRU链表,将最新操作的数据块加到链表的前面,当要刷新数据的时候,从链表的末尾开始刷新;读数据链表表示该数据块是从磁盘中读取的数据,并且没有被修改,没有必要刷新到硬盘中;如果是双控控制器,可以添加镜像链表,表示该数据块等待镜像到另一个控制器中,防止数据丢失。
[0015]系统运行流程
1、存储Initiator端通过TCP/IP协议发送读(写)请求
2、存储Target端接收数据读(写)请求 3、在缓存数据结构中查找读(写)请求的数据,如果命中缓存,则直接从缓存读(写)数据并返回,不必从硬盘重新读取;如果未命中缓存,则需要从硬盘读(写)数据,同时将读(写)的数据保留在缓存中,返回;
4、存储Target端采用定时轮询等机制将缓存数据刷新到磁盘中。
[0016]除说明书所述的技术特征外,均为本专业技术人员的已知技术。
【权利要求】
1.一种基于数据块的高速缓存设计方法,其特征在于在Raidx Tree数据结构的基础上,用链表增加数据页之间的关联,快速查找数据块是否命中,方便了对缓存数据进行更新、写穿、镜像操作,其中: 缓存数据的组织方式,采用Radix Tree数据结构管理缓存数据,将数据指针与long整数键值相关联,用数据块地址作为查询索引,快速定位数据库在缓存中的位置,在缓存容量方面,Radix Tree的容量没有上限,其高度表示了其能够管理的最大数据容量,高度越高,其能够管理的缓存容量越大,在高度为4的Radix Tree中,可缓存的数据容量可达64G ; 刷新缓存数据到硬盘的方式,为了对不同状态的缓存数据进行统一管理,在缓存数据之间建立起双向访问链表,通过链表头可以访问所有状态相同的链表,依据不同的状态进行更新、写穿、镜像操作; 写数据链表表示该数据块已经被修改,在适当的时机直接写入本地磁盘中,该数据链表设计为LRU链表,将最新操作的数据块加到链表的前面,当要刷新数据的时候,从链表的末尾开始刷新; 读数据链表表示该数据块是从磁盘中读取的数据,并且没有被修改,没有必要刷新到硬盘中;如果是双控控制器,要添加镜像链表,表示该数据块等待镜像到另一个控制器中,防止数据丢失; 具体步骤如下: 1)存储Initiator端通过TCP/IP协议发送读或写请求; 2)存储Target端接收数据读或写请求; 3)在缓存数据结构中查找读或写请求的数据,如果命中缓存,则直接从缓存读或写数据并返回,不必从硬盘重新读取;如果未命中缓存,则需要从硬盘读或写数据,同时将读或写的数据保留在缓存中,返回; 4)存储Target端采用定时轮询等机制将缓存数据刷新到磁盘中。
【文档编号】G06F13/16GK104391653SQ201410598483
【公开日】2015年3月4日 申请日期:2014年10月31日 优先权日:2014年10月31日
【发明者】曹始明, 陈乃阔 申请人:山东超越数控电子有限公司