发明名称 一种多控制器间的缓存同步方法
摘要 本发明提供一种多控制器间的缓存同步方法,系统结构包括:缓存数据版本记录模块(1)、缓存数据版本更新模块(2),缓存数据版本记录模块(1)对多控制器系统中的每个缓存页均定义一个原子计数器wrcount记录连续写的次数,用于表示该缓存单元(页)的数据版本。缓存数据版本更新模块(2)在数据镜像时负责向主控申请计数器值并更新其他镜像保存的wrcount。在主控刷写完数据后通知其他镜像端释放备份数据时,需同时向镜像端传递当前数据版本,只有所传递的计数值大于等于镜像端的值才予以释放。在多控器间的同步方法支持的多控制器的存储系统中,多个缓存数据副本与原本之间的数据一致性,防止多个副本与原本之间由于镜像先后顺序等原因导致的缓存数据丢失问题。
申请公布号 CN103150267B 申请公布日期 2017.02.08
申请号 CN201310055329.3 申请日期 2013.02.21
申请人 郑州云海信息技术有限公司 发明人 王恩东;杨帆;文中领
分类号 G06F3/06(2006.01)I;G06F11/14(2006.01)I 主分类号 G06F3/06(2006.01)I
代理机构 济南信达专利事务所有限公司 37100 代理人 姜明
主权项 一种多控制器间的缓存同步方法, 其特征在于该方法中使用的系统结构包括:缓存数据版本记录模块(1)、缓存数据版本更新模块(2),其中:缓存数据版本记录模块(1)对多控制器系统中的每个缓存页均定义一个原子计数器wrcount记录连续写的次数,用于表示系统中缓存单元的数据版本,其提供的功能是:每个缓存页定义一个计数器记录连续写的次数,用于表示该缓存单元的数据版本,在通知其他控制器镜像端释放备份数据时需同时传递相关页的计数值,只有所传递的计数值大于等于所有镜像端的值才予以释放;缓存数据版本更新模块(2)在数据镜像时负责向主控申请计数器值并更新其他镜像保存的原子计数器wrcount,在主控刷写完数据后通知其他镜像端释放备份数据时,需同时向镜像端传递当前数据版本,只有所传递的计数值大于等于镜像端的值才予以释放,该模块维护一套更新每个控制器缓存页数据版本的规则,用于保证此计数值能够表示所有控制器的缓存单元数据版本的有效性;原子计数器wrcount使用规则为以下四点:一、备份数据作镜像端写操作时,镜像端按以下规则更新计数器值并将更新后的计数器反馈到其他控制器镜像端:在新页申请时向主控制器申请数据版本,初始值为0,之后每连续写,即写的时候页仍呈“脏”dirty状态时,都向主控制器申请此页的数据版本,主控计数申请一次就加1,并通知其他镜像数据更新此数据版本及内容,如果某次写时页已不为“脏”dirty,即已刷写到磁盘,则主控将所有控制器此页的镜像数据计数都重新置1;二、主控端写数据时,每个涉及的缓存页要设置“脏”标记,并且增加原子计数器wrcount计数,并通知其他镜像端更新原子计数器wrcount;更新原子计数器wrcount操作必须在设置“脏”标记操作之后而不是之前进行;释放备份数据前,新备份数据已经覆盖了旧备份数据,释放时根据数据原子计数器wrcount版本判断当前原子计数器wrcount是否大于释放的原子计数器wrcount,如果当前原子计数器wrcount小于等于释放的原子计数器wrcount,则释放备份数据,否则备份数据为新数据不需要释放;如果某一个页面在刷新缓存之前连续写时,不管是近端写还是远端写,都能保证缓存数据的数据版本是最新的,避免误释放较新的缓存数据导致缓存原本与副本数据不一致问题。
地址 450000 河南省郑州市郑东新区心怡路278号16层1601室