用于raid的缓存管理系统及方法

文档序号:6426239阅读:154来源:国知局
专利名称:用于raid的缓存管理系统及方法
技术领域
本发明涉及计算机硬盘技术领域,特别涉及一种用于独立冗余磁盘阵列 (Redundant Array of Independent Disk, RAID)的缓存管理系统及方法。
背景技术
近年来,计算机网络尤其是多媒体技术的迅猛发展,其应用已拓展和渗透到经济、 政治、社会生活的各个领域,随着其应用范围和层次的不断扩展和提高,对计算机数据信息的存储容量、读写速度和纠错容限能力也不断提出更高的要求。针对这一要求,RAID技术提供了很好的解决方案,并因此获得了迅速的发展和广泛的应用。RAID高速缓存(Cache)技术在最近几年,在磁盘存储技术领域,发展的非常迅速, 作为高端存储,Cache已经是整个存储的核心所在,就是中低端存储,也有很大的Cache存在。Cache能够有效的提高系统的I/O性能,它的原理是将CPU要写入磁盘的数据先写到由RAM构成的Cache中,再由Cache写到磁盘中,或者先将磁盘上的数据读到Cache中, 然后CPU再从Cache中将数据读出。在RAID系统中,Cache是系统内存的一部分,它的速度比硬盘的速度要快的多。因此,Cache部分的设计对整个RAID系统的效率有着重大的影响。Cache容量与下一级存储器相比较,是很小的,它保存的只是下一级存储器内容的一个子集,Cache与下一级存储器之间的内容交换一般是以块为单位的,但在现有技术里存储块在Cache中无法高效的与下一级存储器中的数据进行交换。

发明内容
(一)要解决的技术问题本发明要解决的技术问题是存储块在Cache中如何组织才能高效的与下一级存储器中的数据进行交换。( 二 )技术方案为解决上述技术问题,本发明提供了一种用于RAID的缓存管理系统,包括依次连接的目标器模块、缓存管理模块、RAID核心模块、输入输出调度模块和启动器模块,所述目标器模块,用于接收来自主机的输入输出请求,并将该输入输出请求进行封装,封装后发送至所述缓存管理模块;所述缓存管理模块,用于将经封装后的输入输出请求拆分成若干特征数据条,并根据读写类型逐条判断所述若干特征数据条对应的数据是否命中,将命中的特征数据条发送至所述RAID核心模块,否则,未命中的特征数据条必须等到冲突解决;所述RAID核心模块,用于接收所述命中的特征数据条,并计算所述命中的特征数据条的RAID级别,按照所述RAID级别的高低依次将所述命中的特征数据条发送至所述输入输出调度模块;
所述输入输出调度模块,用于依次接收所述命中的特征数据条,并依次将接收的特征数据条放置于请求队列的队尾,并依次从队头取出特征数据条发送至所述启动器模块;所述启动器模块,用于根据所述特征数据条启动磁盘上的导盘模块,以完成物理硬盘的读写操作。优选地,所述用于RAID的缓存管理系统还包括相互连接的配置终端模块和全局配置模块,所述配置终端模块,用于在所述主机上显示所述全局配置模块的工作状态,并接收来自所述主机的控制命令;所述全局配置模块,用于加载或卸载所述用于RAID的缓存管理系统上的其他模块,并提供所述用于RAID的缓存管理系统上的其他模块的对外接口。本发明还公开了一种利用所述的用于RAID的缓存管理系统的管理方法,包括以下步骤Sl 接收来自主机的输入输出请求,并将该输入输出请求进行封装;S2 将经封装后的输入输出请求拆分成若干特征数据条,并根据读写类型逐条判断所述若干特征数据条对应的数据是否命中,命中的特征数据条执行步骤S3,否则,未命中的特征数据条必须等到冲突解决;S3 计算所述命中的特征数据条的RAID级别;S4 按照所述RAID级别的高低依次将接收的特征数据条放置于请求队列的队尾, 并依次从队头取出特征数据条;S5 根据所述特征数据条启动磁盘上的导盘模块,以完成物理硬盘的读写操作。优选地,步骤S2中判断数据命中的判断方法具体为若为读请求且数据命中,则所述特征数据条对应的地址段所存储的数据为需要读的数据,且所述特征数据条对应的地址段所存储的数据未被写请求更新或读请求数据不命中更新;若为写请求且数据命中,则所述特征数据条对应的地址段存在且未被占用,或者所述特征数据条对应的地址段不存在。优选地,步骤S3中计算RAID级别的算法包括RAIDO、RAID 1、RAID5、RAID6和磁盘簇。优选地,步骤S4中按所述RAID级别由高到低。(三)有益效果本发明不仅能够方便的管理Cache中各个存储块,而且便于与下一级数据交流, 同时有较好的机制能减少磁盘的读写以提高整个系统的效率与性能。


图1是按照本发明一种实施方式的用于RAID的缓存管理系统的结构框图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。本发明的目的在于提供一种用于RAID的缓存管理的系统,该系统可以使Cache方便的与下一级存储系统高效的进行数据交流。图1是按照本发明一种实施方式的用于RAID的缓存管理系统的流程图,包括依次连接的目标器模块1、缓存管理模块2、RAID核心模块3、输入输出调度模块4和启动器模块5,所述目标器模块1,用于接收来自主机8的输入输出请求,并将该输入输出请求进行封装,封装后发送至所述缓存管理模块2 ;所述缓存管理模块2,用于将经封装后的输入输出请求拆分成若干特征数据条,并根据读写类型逐条判断所述若干特征数据条对应的数据是否命中,将命中的特征数据条发送至所述RAID核心模块3,否则,未命中的特征数据条必须等到冲突解决;所述RAID核心模块3,用于接收所述命中的特征数据条,并计算所述命中的特征数据条的RAID级别,按照所述RAID级别的高低依次将所述命中的特征数据条发送至所述输入输出调度模块4;所述输入输出调度模块4,用于依次接收所述命中的特征数据条,并依次将接收的特征数据条放置于请求队列的队尾,并依次从队头取出特征数据条发送至所述启动器模块 5 ;所述启动器模块5,用于根据所述特征数据条启动磁盘上的导盘模块9,以完成物理硬盘10的读写操作。导盘模块负责将Cache中的脏数据即时写入到磁盘,保持Cache缓冲区与磁盘物理数据的一致性。导盘操作分为空闲导盘,强制导盘、主动导盘三种。空闲导盘是指侦测到主机操作系统空闲后,利用空闲时间将脏数据写入到磁盘中的操作。强制导盘是指在Cache 缓冲区已满,或产生Cache冲突时,无法为新的读写请求分配Cache缓冲区时,主机操作系统强制启动的导盘操作,强制倒盘将清空部分Cache缓冲区以满足新的I/O请求。强制倒盘时当前I/O请求被迫挂起,此时主机操作系统性能很低,必须尽量避免强制导盘的发生。 而主动导盘的目的就是为了避免强制导盘的发生,主机操作系统定时检测脏数据比率,如果比率高于预先设置的高限,就启动导盘操作,直到脏数据比率降低到预先设置的低限。所述目标器模块1、缓存管理模块2、RAID核心模块3、输入输出调度模块4和启动器模块5均有各自独立的内核线程,这些线程并行工作,相互之间以异步方式交付请求与响应。各个模块均维护一个内部队列,这个队列用于保存从上级模块发送的请求与从下级模块返回的响应。当队列为空时,内核线程转入睡眠,直至新的请求或者响应到达时被唤醒并且处理它们。这种异步的工作方式保证了各个模块均独立的进行工作,从主机发送的I/ 0请求依次经过各模块以流水线的形式进行处理。本实施方式采用内存作为Cache来缓冲读写请求的数据,这样可有效提高存储系统的I/O性能。将预取的数据放到读Cache中,由于数据访问的时间、空间局部性,这些数据很有可能会被再次利用,这时就可以直接从读Cache中取出数据,无需到实际的存储设备上去读,这样可以极大的缩短系统的响应时间。而写命令的数据放到Cache后,就向ST 模块报告写操作完成,然后再在合适的时候后台执行导盘操作将数据实际写入到磁盘。这样可以提高写请求的响应速度,另外多次写操作可能会重复修改同一个地方,Cache可减少实际写盘操作。Cache的数据组织形式以SU(Stripe Unit,在一块逻辑盘上的连续存储单元, 所述逻辑盘指在内存上划分的逻辑存储块)为基本单位,多个SU组成一个特征数据条 STRIPE (所述特征数据条为由数据映射关系决定的SU的集合,所述数据映射关系指逻辑存储单元与物理存储单元之间的映射关系),每个逻辑盘的数据则以特征数据条STRIPE为单位组织成一个Hash表,使用的hash函数是Jtripeld% HashSize。优选地,所述用于RAID的缓存管理系统还包括相互连接的配置终端模块6和全局配置模块7,所述配置终端模块6,用于在所述主机上显示所述全局配置模块7的工作状态,并接收来自所述主机的控制命令;所述全局配置模块7,用于加载或卸载所述用于RAID的缓存管理系统上的其他模块(其他模块包括所述目标器模块1、缓存管理模块2、RAID核心模块3、输入输出调度模块4、启动器模块5和配置终端模块6),并提供所述用于RAID的缓存管理系统上的其他模块的对外接口,所述对外接口指所述其他模块之间用于数据交互的接口。本发明还公开了一种基于所述的用于RAID的缓存管理系统的管理方法,包括以下步骤Sl 接收来自主机的输入输出请求,并将该输入输出请求进行封装;S2 将经封装后的输入输出请求拆分成若干特征数据条,并根据读写类型逐条判断所述若干特征数据条对应的数据是否命中,命中的特征数据条执行步骤S3,否则,未命中的特征数据条必须等到冲突解决;S3 计算所述命中的特征数据条的RAID级别;S4 按照所述RAID级别的高低依次将接收的特征数据条放置于请求队列的队尾, 并依次从队头取出特征数据条;S5 根据所述特征数据条启动磁盘上的导盘模块,以完成物理硬盘的读写操作。优选地,步骤S2中判断数据命中的判断方法具体为若为读请求且数据命中,则所述特征数据条对应的地址段所存储的数据为需要读的数据,且所述特征数据条对应的地址段所存储的数据未被写请求更新或读请求数据不命中更新;若为写请求且数据命中,则所述特征数据条对应的地址段存在且未被占用,或者所述特征数据条对应的地址段不存在。优选地,步骤S3中计算RAID级别的算法包括RAIDO、RAID 1、RAID5、RAID6和磁盘簇。优选地,步骤S4中按所述RAID级别由高到低。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种用于RAID的缓存管理系统,其特征在于,包括依次连接的目标器模块(1)、缓存管理模块O)、RAID核心模块(3)、输入输出调度模块(4)和启动器模块(5),所述目标器模块(1),用于接收来自主机(8)的输入输出请求,并将该输入输出请求进行封装,封装后发送至所述缓存管理模块O);所述缓存管理模块O),用于将经封装后的输入输出请求拆分成若干特征数据条,并根据读写类型逐条判断所述若干特征数据条对应的数据是否命中,将命中的特征数据条发送至所述RAID核心模块(3),否则,未命中的特征数据条必须等到冲突解决;所述RAID核心模块(3),用于接收所述命中的特征数据条,并计算所述命中的特征数据条的RAID级别,按照所述RAID级别的高低依次将所述命中的特征数据条发送至所述输入输出调度模块⑷;所述输入输出调度模块G),用于依次接收所述命中的特征数据条,并依次将接收的特征数据条放置于请求队列的队尾,并依次从队头取出特征数据条发送至所述启动器模块 (5);所述启动器模块(5),用于根据所述特征数据条启动磁盘上的导盘模块(9),以完成物理硬盘(10)的读写操作。
2.如权利要求1任一项所述的用于RAID的缓存管理系统,其特征在于,所述用于RAID 的缓存管理系统还包括相互连接的配置终端模块(6)和全局配置模块(7),所述配置终端模块(6),用于在所述主机上显示所述全局配置模块(7)的工作状态,并接收来自所述主机的控制命令;所述全局配置模块(7),用于加载或卸载所述用于RAID的缓存管理系统上的其他模块,并提供所述用于RAID的缓存管理系统上的其他模块的对外接口。
3.一种基于权利要求1或2所述的用于RAID的缓存管理系统的管理方法,其特征在于,包括以下步骤51接收来自主机的输入输出请求,并将该输入输出请求进行封装;52将经封装后的输入输出请求拆分成若干特征数据条,并根据读写类型逐条判断所述若干特征数据条对应的数据是否命中,命中的特征数据条执行步骤S3,否则,未命中的特征数据条必须等到冲突解决;53计算所述命中的特征数据条的RAID级别;54按照所述RAID级别的高低依次将接收的特征数据条放置于请求队列的队尾,并依次从队头取出特征数据条;55根据所述特征数据条启动磁盘上的导盘模块,以完成物理硬盘的读写操作。
4.如权利要求3所述的管理方法,其特征在于,步骤S2中判断数据命中的判断方法具体为若为读请求且数据命中,则所述特征数据条对应的地址段所存储的数据为需要读的数据,且所述特征数据条对应的地址段所存储的数据未被写请求更新或读请求数据不命中更新;若为写请求且数据命中,则所述特征数据条对应的地址段存在且未被占用,或者所述特征数据条对应的地址段不存在。
5.如权利要求3所述的用于RAID的缓存管理系统,其特征在于,步骤S3中计算RAID级别的算法包括RAIDO、RAIDl、RAID5、RAID6和磁盘簇。
6.如权利要求3所述的用于RAID的缓存管理系统,其特征在于,步骤S4中按所述RAID 级别由高到低。
全文摘要
本发明涉及计算机硬盘技术领域,特别涉及一种用于RAID的缓存管理系统及方法,该管理系统包括依次连接的目标器模块(1)、缓存管理模块(2)、RAID核心模块(3)、输入输出调度模块(4)和启动器模块(5)。本发明不仅能够方便的管理Cache中各个存储块,而且便于与下一级数据交流,同时有较好的机制能减少磁盘的读写以提高整个系统的效率与性能。
文档编号G06F3/06GK102262511SQ201110159089
公开日2011年11月30日 申请日期2011年6月14日 优先权日2011年6月14日
发明者顾华林, 顾良清 申请人:苏州市易德龙电器有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1