一种缓存管理中同步版本方法和装置及其缓存管理系统的制作方法

文档序号:7589110阅读:110来源:国知局
专利名称:一种缓存管理中同步版本方法和装置及其缓存管理系统的制作方法
技术领域
本发明属于信息技术领域,尤其涉及共享缓存管理系统的可靠性。
背景技术
数据缓存技术作为一种重要的I/O性能优化手段被广泛应用于各级存储系统中, 它将未来可能被访问的数据保存在主存中,利用应用I/O负载中普遍存在的数据访问局部 性原理来加速存储系统的I/O性能,屏蔽慢速磁盘设备对应用性能的影响。网络存储应用 模式下,位于IO路径上的后端处理节点上的数据缓存资源,对上层应用的性能有重要的影 响。然而,主存的不可靠性造成了存储性能和可靠性之间的冲突。采用回写 (write-back)方式在接收到应用的写请求后将数据写到主存中即返回应答,在后台最大程 度的延迟写磁盘,这种方式虽然最大化性能,但其可靠性也最差。由于主存的易失性的特 点,在这种情况下如果出现软硬件错误或者断电等异常而导致系统崩溃,会导致数据丢失 和数据不可访问性。为了保证缓存的可靠性,传统采用通写(write-through)方式同步的 把数据写到磁盘,虽然能够保证数据可靠性,但由于磁盘的机械特性,写性能比异步写性能 相差大约一个数量级。在网络存储应用模式中同样存在存储性能和可靠性之间的冲突。在网络存储应 用中,通常采用专有硬件,如NVRAM、缓存磁盘等来解决此冲突,但是需要特殊硬件支持,且 价格昂贵,性价比较低,通用性较差;不符合现在基于通用软硬件存储系统发展的技术趋 势。随着网络延迟的降低和网络带宽的提高,通过网络传输把写数据备份到空闲节点上的 内存,作为写数据缓存的备份。由于数据在另外的节点上保持了备份,而且两个或多个节点 同时出现故障的几率很小,因此可以容忍节点的软硬件失效。当一个节点失效重启后,可以 从备份节点读入数据,保证了数据的可靠性。另一方面,采用网络内存来存储数据,数据写 到网络内存之后即返回写应答,也可以保证较高的数据读写性能。虽然使用网络内存是一 种较好的解决缓存可靠性的方法,但仍存在如下的性能问题(1)资源回收机制效率低由 于可靠性需求,只有主节点把数据真正回写到后端存储上之后,备份节点上的数据才可以 进行释放;若备份节点出现资源紧张,则必须等待主节点的回写完成;(2)数据一致性(同 步机制)开销很大在现有技术中基本采用“索引号+版本号”的版本机制来解决一致性问 题,为每个数据页维持一个版本,管理开销较大,而且对性能影响较大。

发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,为网络存储应用模式中的缓 存管理提供了同步版本机制及利用版本信息的资源回收机制,在保证数据可靠性的同时, 提供高效的数据读写性能,从而打破可靠性和性能的折衷(tradeoff)。根据本发明的一个方面,本发明提供了一种缓存管理中同步版本方法,其中所述 缓存管理将本地节点写向缓存的写请求数据备份到备份节点,所述同步版本方法包括以下
4步骤步骤1,判断全局同步时钟是否到时,如果到时,则在节点之间同步系统版本,使本 地节点和备份节点的系统版本保持一致,所述系统版本包括全局版本号,本地版本号和请 求序号,其中所述全局同步时钟是一个固定时间;步骤2,判断本地同步时钟是否到时,如果到时,则在节点内调整系统版本,将所述 系统版本的本地版本号增加1,请求序号初始化为0,而全局版本号保持不变,其中所述本 地同步时钟是一个固定的短时间;步骤3,在收到写请求时,将所述系统版本的请求序号增加1,并将写请求的开始 版本赋值为当前的系统版本;其中,所述写请求的开始版本包括全局版本号,本地版本号和 请求序号。根据本发明实施例的同步版本方法,在步骤1中的在节点之间同步系统版本包括 以下步骤将系统版本的全局版本号增加1,本地版本号和请求序号初始化为0 ;由本地节点向备份节点发送全局同步请求,备份节点收到全局同步请求,相应地 将其当前系统版本的全局版本号增加1,本地版本号和请求序号初始化为0。根据本发明实施例的同步版本方法,其中,本地同步时钟可根据网络延迟及节点 间的时钟误差来动态调整,一般应大于2毫秒;所述全局同步时钟是所述本地同步时钟的η 倍,η > 0。在本发明的一些实施例中,全局同步时钟设置为30秒;本地同步时钟设置为10 毫秒。根据本发明实施例的同步版本方法,还包括下面的步骤步骤4,在写请求的数据被保存到后端存储后将写请求的结束版本赋值为当前的 系统版本,并被保存在完成列表中;所述写请求的结束版本包括全局版本号,本地版本号和 请求序号,其初始值为0 ;所述完成列表包含一定数量的被后端存储保存的写请求的开始 版本和结束版本信息;步骤5,将所述完成列表由本地节点发送到备份节点,备份节点根据完成列表更新 对应写请求的结束版本。根据本发明的另一方面,本发明提供了一种缓存管理中同步版本装置,其中所述 缓存管理将本地节点写向缓存的写请求数据备份到备份节点,所述同步版本装置包括用于全局同步的部件,判断全局同步时钟是否到时,如果到时,则在节点之间同步 系统版本,使本地节点和备份节点的系统版本保持一致,所述系统版本包括全局版本号,本 地版本号和请求序号,其中所述全局同步时钟是一个固定时间;用于本地同步的部件,判断本地同步时钟是否到时,如果到时,则在节点内调整系 统版本,将所述系统版本的本地版本号增加1,请求序号初始化为0,而全局版本号保持不 变,其中所述本地同步时钟是一个固定的短时间;用于标记写请求开始版本的部件,在收到写请求时,将所述系统版本的请求序号 增加1,并将写请求的开始版本赋值为当前的系统版本;其中,所述写请求的开始版本包括 全局版本号,本地版本号和请求序号。根据本发明实施例的同步版本装置,所述用于全局同步部件还包括用于调整系统 版本的部件,将系统版本的全局版本号增加1,本地版本号和请求序号初始化为0 ;以及
用于同步系统版本的部件,由本地节点向备份节点发送全局同步请求,备份节点 收到全局同步请求,相应地将其当前系统版本的全局版本号增加1,本地版本号和请求序号 初始化为0。根据本发明实施例的同步版本装置,所述本地同步时钟可根据网络延迟及节点间 的时钟误差来动态调整,一般应大于2毫秒;所述全局同步时钟是所述本地同步时钟的η 倍,η > 0。在本发明的一些实施例中,全局同步时钟设置为30秒;本地同步时钟设置为10毫秒。根据本发明实施例的同步版本装置,还包括用于标记写请求的结束版本的部件, 在写请求的数据被保存到后端存储后将写请求的结束版本赋值为当前的系统版本,并将其 保存在完成列表中;所述写请求的结束版本包括全局版本号,本地版本号和请求序号,其初 始值为0 ;所述完成列表包含一定数量的被后端存储保存的写请求的开始版本和结束版本 fn息;用于同步完成列表的部件,将所述完成列表由本地节点发送到备份节点,备份节 点根据完成列表更新对应写请求的结束版本。根据本发明的又一方面,本发明提供了一种缓存管理系统,包括共享缓存装置,用 于为来自数据通信装置的写请求分配缓存资源以及回收缓存资源,和包括如上面所述的同 步版本装置。在一些实施例中,上述缓存管理系统还包括写资源回收装置,所述写资源回收装 置用于接收来自共享缓存装置的回写请求,所述回写请求用于请求将写请求的数据保存到 后端存储;以及用于比较写请求的版本信息,如果写请求的开始版本<写请求的结束版本, 则删除此写请求信息,并直接通知共享缓存装置可回收该写请求占用的资源,否则保存写 请求数据到后端存储,修改此请求的结束版本为当前的系统版本。与现有技术相比,本发明的有益效果在于,把写向缓存的数据备份到集群节点中 的空闲网络缓存,由于集群中两个节点同时出现故障的概率很小,故可以实现写缓存数据 的高可靠性。同时,采用“全局版本号+本地版本号+请求序号”的同步版本机制,在节点 间同步调整全局版本号,在节点内部异步调整本地版本号和请求序号,降低了节点之间的 数据同步开销。而且主节点与备份节点通过在本地比较版本信息可以独自的将缓存数据写 向后端存储系统,灵活有效的回收缓存资源;从而实现系统的高性能。


以下参照附图对本发明实施例作进一步说明,其中图1是根据本发明实施例的版本的结构示意图;图2是根据本发明实施例的缓存管理系统的结构图;图3是根据本发明实施例的缓存管理系统的各装置的工作流程具体实施例方式为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实 施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明, 并不用于限定本发明。
在本发明的实施例中,通过把本地节点写向缓存的数据备份到集群节点中的空闲 网络缓存,来实现写缓存数据的高可靠性。其中,写请求所操作的本地节点也可称为主节 点,而备份写向缓存的数据的空闲节点也可称为备份节点或镜像节点,其中备份节点或镜 像节点可以有多个,其个数可以依据可靠性的级别来配置。例如,在一些实施例中,为了提 高可靠性,主节点可以将所需要备份的缓存数据同时保存到两个备份节点上。在一些实施 例中,为了提高空间利用率,主节点对每个写请求可以随机选择网络中的空闲节点来备份 其写向缓存的数据。在本发明的实施例中采取同步和异步相结合的同步版本方法来实现系统的高性 能。同步方法的核心问题就是将核心部分(小部分)同步化,边缘部分(大部分)异步 化。在本发明的实施例中,提供了一种用于缓存管理的同步版本方法,每隔一个固定时间在 节点之间同步调整系统版本,每个一个固定的短时间在节点内调整系统版本;以及为每个 写请求标记开始版本,其中系统版本和写请求的开始版本采用如图1所示的结构,包括全 局版本号,本地版本号和请求序号;在节点之间同步调整系统版本是指将系统版本的全局 版本号增加1,本地版本号和请求序号初始化为0 ;由本地节点向备份节点发送全局同步请 求,备份节点收到全局同步请求,相应地将其当前系统版本的全局版本号增加1,本地版本 号和请求序号初始化为0 ;在节点内调整系统版本是指将系统版本的本地版本号增加1,请 求序号初始化为0,而全局版本号保持不变。在本发明的一些实施例的同步版本方法还包括在写请求的数据被保存到后端存 储后将写请求的结束版本赋值为当前的系统版本,并保存在完成列表中;所述写请求的结 束版本包括全局版本号,本地版本号和请求序号,其初始值为0 ;所述完成列表包含一定数 量的被后端存储保存的写请求的开始版本和结束版本信息;所述完成列表由本地节点发送 到备份节点,备份节点可以根据完成列表更新对应写请求的结束版本。图1是根据本发明实施例的版本的结构,所述版本由全局版本号101、本地版本号 102、请求序号103组成。在本实施例中,每个进入系统的请求都有两个版本号,(开始版本, 结束版本),其中开始版本指请求进入系统的初始版本,结束版本指请求离开系统的最终版 本。系统版本的全局版本号201,是节点间同步调整的对象。系统版本的全局版本号的 初始化和调整是两个节点完全同步完成的,即每隔一个固定的时间,由缓存节点向备份节 点发送同步请求,进行系统版本的同步,即将系统版本的全局版本号增加1,本地版本号和 请求序号初始化为0。本质上,全局版本号是一个时间概念,全局版本号每隔一个固定时间 (如30秒)就增加1。在其中一个节点上,对于所有写请求,当本节点的当前系统版本的全 局版本号>写请求的全局版本号+2时,意味着该写请求在对方节点所对应的写请求一定 已被写到了磁盘上,即对应的备份缓存已被保存,因此,该请求在本地节点上所占用的资源 就可以释放了。这是由于每隔一个固定的时间,如30秒,系统版本的才进行同步一次,因此 如果当前系统版本的全局版本号如果大于写请求的全局版本号,说明这个写请求在此节点 上已经存在了 30秒;而每个写请求在内存缓存中驻留时间是有限的,操作系统的内存缓存 管理可以保证在一个固定时间范围内(如30秒)将写数据一定写回到非易失性介质(如 磁盘),因此可以释放该写请求所占用的资源。其中,加2的目的是保证边界条件成立,其实 加1也可以。在节点之间每隔30秒对系统版本同步调整一次,而在这30秒内, 无需进行同步,而由每个节点各自进行版本计数,在此过程中,节点上所有请求比较操作完全不需与对 方节点进行通讯,因此可节省同步的开销。另外,本地资源的释放也不依赖于对方节点的响 应。在一些实施例中这个固定时间也可选其他值,例如10秒,20秒,50秒等等。系统版本的全局版本号的同步也使两个节点在后期的写请求能够比较的异步化。 在每次系统版本的全局版本号进行绝对同步调整时(即全局版本号加1),系统版本的本地 版本号202被初始化为0。之后,系统版本的本地版本号202的调整是两个存储节点完全异 步进行的,由各节点独立地进行计算。系统版本的本地版本号202,是节点内版本调整的对象;本质上,本地版本号也是 一个时间概念。在两个节点上,各自的系统版本的本地版本号每隔某一固定的短时间(如 10毫秒)就增加1。对于同一个块地址,当本地节点上写请求的结束版本的本地版本号>写 请求的开始版本的本地版本号+2时,这表示对方节点上的写请求在本地节点的对应请求 一定已被写到了磁盘上,同时也意味着该请求在对方节点上所占用的资源就可以释放了。 在此过程中对方节点需要从本地节点上获取完成列表。不同于现有技术,本地版本号的比 较是在各自节点上独立完成。在现有技术中只有主节点把数据真正回写到后端存储上之 后,备份节点上的数据才可以进行释放;若备份节点出现资源紧张,则必须等待主节点的回 写完成。而在本发明的实施例中主节点与备份节点都可以独自的将缓存数据写向后端存储 系统,灵活有效的释放缓存资源。这是由于一个写请求在两个节点上提交的绝对时间差和 短时间内时钟误差(Timer Skew)是有限的,即不同的机器在一个固定时间段内的时钟误差 及网络传输的时间差肯定是不会超过某个上限值的。互联机制可以保证一个写请求在两个 节点分别进入块设备栈进行处理的绝对时间差小于某一固定的短时间(如10毫秒)。在两 个节点间,通过间断性的同步本地版本号重置(全局版本号调整时)和根据各自本地时钟 调整本地版本号,虽然本地版本号不是绝对同步的,但是相对同步的,通过本地版本号的相 对同步性使能两个节点在后期写请求具有可比性。系统版本的全局版本号的调整与固定时间有关,这个固定时间也可以称为全局同 步时钟;系统版本的本地版本号的调整与固定的短时间有关,这个固定的短时间也可以称 为本地同步时钟。在本发明的一些实施例中,固定的短时间可根据网络延迟及节点间的时 钟误差来动态调整,一般应大于2毫秒;而上述的固定时间是所述固定的短时间的η倍,η > 0。在本实施例中固定时间设置为30秒;固定的短时间设置为10毫秒。系统版本的请求序号203,在每次全局版本号或本地版本号调整时都初始化为0 ; 在每次处理一个写请求时,系统版本的请求序号自动加1 ;同时将该写请求的开始版本复 制为当前系统版本,这样可以确保在每个存储节点上每个写请求可以通过(全局版本号 本地版本号I请求序号)而唯一标识。下面结合表1对本发明一个实施例的同步版本方法的具体过程进行详细介绍,在 本实施例中,每个写请求都有两个版本号,(开始版本,结束版本),其中开始版本指写请求 的初始版本,结束版本指写请求的数据被保存到后端存储后的写请求的版本。表 权利要求
1.一种缓存管理中同步版本方法,其中所述缓存管理将本地节点写向缓存的写请求数 据备份到备份节点,其特征在于所述同步版本方法包括以下步骤步骤1,判断全局同步时钟是否到时,如果到时,则在节点之间同步系统版本,使本地节 点和备份节点的系统版本保持一致,所述系统版本包括全局版本号,本地版本号和请求序 号,其中所述全局同步时钟是一个固定时间;步骤2,判断本地同步时钟是否到时,如果到时,则在节点内调整系统版本,将所述系统 版本的本地版本号增加1,请求序号初始化为0,而全局版本号保持不变,其中所述本地同 步时钟是一个固定的短时间;步骤3,在收到写请求时,将所述系统版本的请求序号增加1,并将写请求的开始版本 赋值为当前的系统版本;其中,所述写请求的开始版本包括全局版本号,本地版本号和请求 序号。
2.根据权利要求1所述的同步版本方法,其特征在于在所述步骤1中,所述在节点之间 同步系统版本包括以下步骤将系统版本的全局版本号增加1,本地版本号和请求序号初始化为0 ;由本地节点向备份节点发送全局同步请求,备份节点收到全局同步请求,相应地将其 当前系统版本的全局版本号增加1,本地版本号和请求序号初始化为0。
3.根据权利要求1所述的同步版本方法,其特征在于所述本地同步时钟可根据网络延 迟及节点间的时钟误差来动态调整,一般应大于2毫秒;所述全局同步时钟是所述本地同 步时钟的η倍,η > 0。
4.根据权利要求1所述的同步版本方法,其特征在于所述全局同步时钟是30秒;所述 本地同步时钟是10毫秒。
5.根据权利要求1所述的同步版本方法,其特征在于还包括下面的步骤步骤4,在写请求的数据被保存到后端存储后将写请求的结束版本赋值为当前的系统 版本,并被保存在完成列表中;所述写请求的结束版本包括全局版本号,本地版本号和请求 序号,其初始值为0 ;所述完成列表包含一定数量的被后端存储保存的写请求的开始版本 和结束版本信息;步骤5,将所述完成列表由本地节点发送到备份节点,备份节点根据完成列表更新对应 写请求的结束版本。
6.一种缓存管理中同步版本装置,其中所述缓存管理将本地节点写向缓存的写请求数 据备份到备份节点,其特征在于所述同步版本装置包括用于全局同步的部件,判断全局同步时钟是否到时,如果到时,则在节点之间同步系统 版本,使本地节点和备份节点的系统版本保持一致,所述系统版本包括全局版本号,本地版 本号和请求序号,其中所述全局同步时钟是一个固定时间;用于本地同步的部件,判断本地同步时钟是否到时,如果到时,则在节点内调整系统版 本,将所述系统版本的本地版本号增加1,请求序号初始化为0,而全局版本号保持不变,其 中所述本地同步时钟是一个固定的短时间;用于标记写请求开始版本的部件,在收到写请求时,将所述系统版本的请求序号增加 1,并将写请求的开始版本赋值为当前的系统版本;其中,所述写请求的开始版本包括全局 版本号,本地版本号和请求序号。
7.根据权利要求6所述的同步版本装置,其特征在于所述用于全局同步部件还包括用 于调整系统版本的部件,将系统版本的全局版本号增加1,本地版本号和请求序号初始化为 0 ;以及用于同步系统版本的部件,由本地节点向备份节点发送全局同步请求,备份节点收到 全局同步请求,相应地将其当前系统版本的全局版本号增加1,本地版本号和请求序号初始 化为0。
8.根据权利要求6所述的同步版本装置,其特征在于所述本地同步时钟可根据网络延 迟及节点间的时钟误差来动态调整,一般应大于2毫秒;所述全局同步时钟是所述本地同 步时钟的η倍,η > 0。
9.根据权利要求6所述的同步版本装置,其特征在于所述全局同步时钟是30秒;所述 本地同步时钟是10毫秒。
10.根据权利要求6所述的同步版本装置,其特征在于还包括用于标记写请求的结束版本的部件,在写请求的数据被保存到后端存储后将写请求的 结束版本赋值为当前的系统版本,并将其保存在完成列表中;所述写请求的结束版本包括 全局版本号,本地版本号和请求序号,其初始值为0 ;所述完成列表包含一定数量的被后端 存储保存的写请求的开始版本和结束版本信息;用于同步完成列表的部件,将所述完成列表由本地节点发送到备份节点,备份节点根 据完成列表更新对应写请求的结束版本。
11.一种缓存管理系统,包括共享缓存装置,用于为写请求分配缓存资源以及回收缓存 资源,其特征在于还包括如权利要求6、7、8、9或10所述的同步版本装置。
12.根据权利要求11所述的缓存管理系统,其特征在于还包括写资源回收装置,用于 接收来自所述共享缓存装置回写请求,所述回写请求用于请求将写请求的数据保存到后端 存储;以及用于比较写请求的版本信息,如果写请求的开始版本 < 写请求的结束版本,则删 除此写请求信息,并直接通知共享缓存装置可回收该写请求占用的资源,否则保存写请求 数据到后端存储,修改此写请求的结束版本为当前的系统版本。
全文摘要
本发明提供一种网络存储中的缓存管理系统通过把本地节点写向缓存的数据备份到集群节点中的空闲网络缓存,来实现写缓存数据的高可靠性。采用“全局版本号+本地版本号+请求序号”的同步版本机制,同步调整全局版本号,异步调整本地版本号和请求序号,降低了节点之间的数据同步开销。而且主节点与备份节点通过在本地比较版本信息可以独自的将缓存数据写向后端存储系统,灵活有效的释放缓存资源;从而实现系统的高性能。
文档编号H04L29/08GK102098344SQ201110041920
公开日2011年6月15日 申请日期2011年2月21日 优先权日2011年2月21日
发明者刘振军, 司成祥, 孟晓烜, 许鲁, 韩晓明 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1