发明名称 一种多控制器间的缓存管理系统
摘要 本发明提供一种多控制器间的缓存管理系统,通过控制器id记录数据块的分布,在单个缓存更新时,同时更新其它控制器的缓存,有效地克服了多控制器节点故障导致缓存数据丢失的缺陷,保证了数据的一致性,当系统中存在N+1个控制器时,能容忍N个控制器同时出现故障,同一数据在缓存中存在多份,并维持一张全局目录表,记录数据块的分布。在单个缓存更新时,同时更新其它控制器的缓存,有效地克服了多控制器节点故障导致缓存数据丢失的缺点,保证了数据的一致性。
申请公布号 CN103116476A 申请公布日期 2013.05.22
申请号 CN201310056734.7 申请日期 2013.02.22
申请人 浪潮电子信息产业股份有限公司 发明人 杨帆
分类号 G06F3/06(2006.01)I;G06F11/14(2006.01)I 主分类号 G06F3/06(2006.01)I
代理机构 代理人
主权项 一种多控制器间的缓存管理系统, 其特征在于同一数据在缓存中存在多份,通过控制器id记录数据块的分布,在单个缓存更新时,同时更新其它控制器的缓存,有效地克服了多控制器节点故障导致缓存数据丢失的缺陷,保证了数据的一致性,当系统中存在N+1个控制器时,能容忍N个控制器同时出现故障,该系统结构包括:缓存管理模块(1)、缓存同步模块(2)、故障处理模块(3),其中:缓存管理模块(1)提供如下功能:磁盘管理功能:所有加入到多控系统缓存管理模块的磁盘对于每台控制器来说都需要创建对应的红黑树用来缓存数据,所有红黑树用链表连接起来,并记录此磁盘所属控制器id,便于确定此磁盘属于哪个控制器,并通知所有控制器,使其他控制器也创建此磁盘的红黑树并记录所属控制器id,从系统中移除磁盘时,需要通知所有控制器释放此结构;缓存数据组织缓存功能:将所有从本控制器或其他控制器发送的数据按照一定规则有序组织并缓存到内存中,每台控制器用链表将所有分配的空闲页挂接在一个链表中,对于所有控制器的每个磁盘,写入的数据都缓存在每台控制器对应磁盘的红黑树上;刷写缓存数据功能:根据磁盘id判断所属本控制器磁盘,刷新本磁盘上的红黑树中缓存数据到磁盘中,并通知所有其他控制器释放此缓存数据,其他磁盘释放对应红黑树的缓存数据,所有释放的缓存移动到空余页链表中;预读功能:在读数据时,如果数据存在于内存中,直接从内存返回数据内容,避免在磁盘上查找的低效率;缓存同步模块(2)提供如下功能:从任意控制器写入数据时,将此缓存数据发送到其余控制器缓存中保存,其余控制器更新自己的缓存,从而保证所有控制器缓存数据一致;从任意控制器读取数据时,如果数据不存在于缓存中,需要根据磁盘所属控制器id来通知此控制器读取实际数据,此控制器将数据读到缓存中后,将此缓存数据发送到其余控制器缓存中保存,其余控制器更新自己的缓存,从而保证所有控制器缓存数据一致;故障处理模块(3)提供如下功能:故障处理:负责通过心跳包检测各个控制器的状态,当某个或某些控制器出现故障时,相邻控制器会接管这些故障控制器磁盘,并更新此磁盘的所属控制器id;新增控制器:向系统新增控制器时,从相邻控制器复制缓存数据,保证缓存数据一致性。
地址 250014 山东省济南市高新区舜雅路1036号