一种单载体多目标的缓存系统的缓存管理方法

文档序号:6340374阅读:196来源:国知局
专利名称:一种单载体多目标的缓存系统的缓存管理方法
技术领域
本发明涉及存储系统缓存管理领域,具体涉及一种动态调整多个目标磁盘共享单 一缓存设备的共享比例以保证均衡的性能提升的方法。
背景技术
磁盘以其大容量、低价格等优势一直在计算机系统中占有一席之地,但是其内部 的机械部件却限制了速度的进一步提升,特别是对于不连续的IO数据访问,性能更是远远 跟不上内存的发展。所以,磁盘的访问速度一直是IO密集型应用程序的瓶颈。为了提高磁 盘的读写性能,磁盘厂商在磁盘内部加入了缓存(Cache memory) ,Cache是硬盘控制器上的 一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。受限于 磁盘的硬件结构,其上的缓存容量不可能特别大,所以如果将磁盘Cache从磁盘内部移动 到外部将很容易解决容量的问题。因为不受空间的限制,外置磁盘Cache可以达到几个GB, 甚至几十GB的大小,使用如此大容量的缓存将会大大提高整个系统的IO性能。为了充分 利用大容量的缓存,系统中可以使用多个磁盘设备共享一个缓存设备,如图1所示。在这样一个系统内,用户通过唯一的外置磁盘Cache来加速多个磁盘的访问速 度,此外置Cache同时缓存着多个磁盘的数据,如何保证数据的正确性是一个挑战。在使用 过程中,如何区分用户的IO请求究竟位于哪一个磁盘设备上以及如何将各个磁盘的数据 送到合适的用户缓冲区内都是必须解决的难题。一般利用Linux的Device Mapper机制来管理多个磁盘设备,以其中的高速设备 作为低速设备的Cache来建立一个两级存储系统,以较低的成本获得较高的存储性能。将 所管理的设备分为缓存设备(Cache Device)和磁盘设备(DiskDevice),这些设备对用户 来说都是不可见的,用户不能直接操作缓存设备和磁盘设备。在使用过程中,需要向用户提 供与磁盘设备个数相同、特性相同的伪设备,这些伪设备的使用方式与传统的磁盘设备完 全一样,只是系统自动地将缓存设备融入访问过程,用户会感觉到更快的访问速度,整个系 统的IO性能会得到显著提高。系统整体结构如图2所示,disk 1、disk 2和disk 3是磁盘设备,sharedcache device是缓存设备,这些设备被虚拟成三个伪设备pseudo disk 1、pseudodisk 2和 pseudo disk 3,分别对应三个磁盘设备。缓存设备与磁盘设备是一对多的关系,即一个缓 存设备可以被多个磁盘设备共享,但是任何一个磁盘设备只可使用一个缓存设备。至于设 备,具体则对应于partition,即Linux下的块设备文件/dev/sdal等。对磁盘设备作缓存,本身的思路比较直观,类似于处理器Cache,它将缓存设备按 固定大小划分为许多region,一般地,region的大小为64K 1M,且为2的幂,在系统运行 前决定,一旦运行不可再动态更改。region是缓存设备管理的基本单位,可类比处理器中的 Cache Line。每个region维护相应的状态、必要的锁、tag等信息。region相对于文件系 统的请求是比较大的,文件系统1/0的最小单位一般是512字节(称之为sector),因此文 件系统的一次1/0更多可能是只覆盖了某个region的部分区域,鉴于此,每个region还需要维护若干位图,用来标记其中各个sector的状态。文件系统建立在伪设备上,用户通过文件系统发出的IO请求通过伪设备进入本 发明控制的系统中,对不同伪设备的请求,系统可以对应到不同磁盘设备上。主要的问题是 如何将这些地址对应到缓存设备上,因为缓存设备的容量小于磁盘设备,特别是多个磁盘 设备需要共享同一个缓存设备,所以缓存设备只能保存一小部分磁盘设备上的数据。两者 采用组相连方式映射,如果将所有磁盘的容量看成一个整体映射到共享的缓存设备,那么 每个磁盘设备只能利用其中的固定的缓存空间,而无法根据用户对各个磁盘的使用情况作 出动态调整。

发明内容
为解决磁盘使用过程中频繁程度不同导致的大量缓存空间被浪费,本发明提供了 一种单载体多目标的缓存系统的缓存管理方法。一种单载体多目标的缓存系统的缓存管理方法,过程如下A、用户的读写操作在对应的缓存设备中未命中时,请求分配一个新的缓存块来存 放数据;B、若在其可使用的缓存地址空间中有空闲缓冲块,则直接分配;若无空闲缓冲块, 则进行缓存块不足次数+1操作;C、判断不足次数是否超过预先设定的阈值,若未超过则返回进行缓存替换操作; 若超过则检查其他盘缓存块信息;D、若其他盘也无空闲缓存块,则返回进行缓存替换操作;若有空闲缓冲块,则将所 有盘缓存数据写回各自对应的硬盘;E、根据使用频繁情况重新分配缓冲块空间。本发明的一种优选技术方案在于步骤D中的缓存写回操作可以只写缓存空间不 足磁盘设备和周围相邻的大量空闲缓存块的磁盘设备。本发明为每个磁盘设备分配独立的缓存空间,然后再分别对它们做组相连的映 射,当系统检测出某个磁盘设备需要更大或者更少的缓存空间时,可以自动地对缓存设备 进行再分配,从而使整个系统获得更好的IO性能。


图1为多个磁盘共享一个缓存设备结构2为缓存系统整体结构图3为缓存系统映射方式图4为本发明流程图
具体实施例方式在实现过程中,相当于先将唯一的缓存设备人为地划分为多份(根据需要缓存的 磁盘设备数量及容量确定份数及每份的大小),然后每个磁盘设备对应于其中的一份,系统 保存所有的映射关系。当收到一个IO请求时,首先检测此IO操作属于哪个磁盘设备;根据 此磁盘设备与缓存设备的映射关系可以找到其对应的缓存设备的偏移地址,由于其使用的缓存的大小已经确定,所以可以容易地将此IO的地址信息根据组相连的规则映射到缓存 设备的地址空间中;然后根据缓存设备的地址信息再做进一步的读写操作。整个流程如图4所示。在用户发出的读写操作未在其对应的缓存设备中命中时,需要根据情况分配一个 新的缓存块用来存放这些数据。如果在其可使用的缓存地址空间中有空闲缓冲块的话,直 接分配并写入数据即可;如果没有空闲缓存块,那么需要记录此信息,将空闲缓存块不足的 次数增加一次,这时将要判定此次数是否超过之前定义的一个最大值;如果没有超过,那么 直接返回,对此次读写的数据不做缓存;如果超过了这个阈值,那需要查看系统的整体运行 情况,这个过程需要进行一些加锁的操作,以免数据不一致的情况出现。如果其他磁盘设备 对应的缓存地址空间有较多的空闲缓存块未被使用,那么需要做出调整的动作,特别地,如 果其他磁盘设备根本未被用户使用,那么其空闲缓存块必定很多,更应该将他们分配给空 闲缓存块严重不足的磁盘设备。调整时,因为缓存设备可能存在一些脏数据,直接将它们分配给其他磁盘设备显 然不合适。这时最简单的办法是将所有的脏数据写回各自对应的磁盘设备,然后根据之前 对缓存设备的使用情况进行再分配,使用越频繁则应该分配较大的缓存空间,而使用很少 或者根本未使用缓存空间的,则应该尽量减少其对应的缓存空间,甚至直接将其对应的空 间置为0,这样可以充分发挥缓存设备的作用,使最经常被访问的磁盘设备得到更多的缓存 设备,从而得到更好的性能。在以上实现过程中可以做出一些优化操作,比如在将脏数据刷回各自对应的磁盘 设备时,可以根据情况不将所有的脏数据写回,而只写相关的几个磁盘设备。这里的相关指 的是,如果缓存空间不足的磁盘设备与有大量空闲缓存块的磁盘设备对应的缓存空间相邻 的话,可以只刷新两者临界的那几个脏数据块,然后只在这两者之间进行快速的容量调整。 这样调整的开销将会降到最低,对系统的影响也比较小。
权利要求
1.一种单载体多目标的缓存系统的缓存管理方法,其特征在于过程如下A、用户的读写操作在对应的缓存设备中未命中时,请求分配一个新的缓存块来存放数据;B、若在其可使用的缓存地址空间中有空闲缓冲块,则直接分配;若无空闲缓冲块,则进 行缓存块不足次数+1操作;C、判断不足次数是否超过预先设定的阈值,若未超过则返回进行缓存替换操作;若超 过则检查其他盘缓存块信息;D、若其他盘也无空闲缓存块,则返回进行缓存替换操作;若有空闲缓冲块,则将所有盘 缓存数据写回各自对应的硬盘;E、根据使用频繁情况重新分配缓冲块空间。
2.如权利要求1所述一种单载体多目标的缓存系统的缓存管理方法,其特征在于步 骤D中的缓存写回操作可以只写缓存空间不足磁盘设备和周围相邻的大量空闲缓存块的 磁盘设备。
全文摘要
本发明提供了一种单载体多目标的缓存系统的缓存管理方法,用户的读写操作在对应的缓存设备中未命中时,请求分配一个新的缓存块来存放数据;若在其可使用的缓存地址空间中有空闲缓冲块,则直接分配;若无空闲缓冲块,则进行缓存块不足次数+1操作;判断不足次数是否超过预先设定的阈值,若未超过则返回进行缓存替换操作;若超过则检查其他盘缓存块信息;若其他盘也无空闲缓存块,则返回进行缓存替换操作;若有空闲缓冲块,则将所有盘缓存数据写回各自对应的硬盘;根据使用频繁情况重新分配缓冲块空间。本发明为每个磁盘设备分配独立的缓存空间,然后再分别对它们做组相连的映射,当系统检测出某个磁盘设备需要更大或者更少的缓存空间时,可以自动地对缓存设备进行再分配,从而使整个系统获得更好的IO性能。
文档编号G06F3/06GK102063386SQ20101061179
公开日2011年5月18日 申请日期2010年12月17日 优先权日2010年12月17日
发明者刘新春, 袁清波, 邵宗有 申请人:曙光信息产业(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1