何娟娟,李战怀,宋 慧
(西北工业大学计算机学院,西安710129)
双机热备系统中一台主机为工作机(Master机),另一台主机为备份机(Backup机)。系统在正常情况下,工作机为系统提供支持,备份机监视主机的运行情况。当工作机出现异常时,备份机接管服务,主动转为新的工作机,继续支持系统运行。这时,故障节点可以离线维修,当故障节点恢复正常后,重新加入到双机热备系统中运行,变为备份节点,从而保证了系统不间断运行,实现永不停机的功能,对用户来说,只经历了短暂的重启过程。纯软件的双机热备因为没有共享磁盘阵列,所以通过网络在两台主机之间进行实时的数据复制。当主机发生故障时,系统自动将服务切换到备机,并在备机镜像数据的基础上,继续为客户端提供业务服务,实现了不需要共享存储的纯软件高可用系统。该文研究的纯软件双机热备数据同步技术应用背景是基于open flow协议的FCS(flow control system)系统。首先简单介绍了open flow协议的相关知识,以及FCS系统的双机热备架构。之后重点对双机之间的数据同步技术进行了研究,提出了基于链路延迟的主备机文件复制方法以及基于单向哈希的更新文件检索方法。相对传统双机热备数据同步方法,在一定程度上提高了系统性能。
Open flow协议是由斯坦福大学的Nick McKeown教授在论文 OpenFlow:enabling innovation in campus networks中首先提出来的,是一个实现对全网交换机、路由器的数据通路进行控制的协议。open flow标准定义了控制器与交换机之间的交互协议,以及一组交换机操作。这个控制器-交换机协议运行在安全传输层协议(TLS)或无保护TCP连接之上。控制器向交换机发送指令,控制数据包的转发方式,交换机会在链路中断或出现未指定转发指令的数据包时,发送消息通知控制器。转发指令基于流,每个交换机都维护着许多路由表,每个表又包含多个路由记录,每个路由记录包含一个匹配域,定义了流、计数器和指令集。
FCS系统就是,在open flow协议基础之上构建一个虚拟网络,通过对网络的集中控制,实现网络的简单化,虚拟化和可视化。系统主要由支持open flow协议的交换机和open flow控制服务器组成。将原来完全由交换机/路由器控制的报文转发过程,转换为由open flow交换机和open flow控制服务器来共同完成[1]。open flow交换机进行包的转发,open flow控制服务器实现包传送路径的选择及控制,实现数据转发和路由控制的分离,实现了网络配置的柔软性、可控性。通过编程实现以流为单位的路径控制、故障恢复、负载均衡以及网络的虚拟化。为了使控制服务器在发生故障时,网络不会停止工作,通过组建双机集群,一台为工作机,一台为备份机的形式为系统提供服务。由于基于共享磁盘阵列的双机集群系统,存在切换时间长的缺陷,不能满足系统性能需求,故采用纯软件的双机热备架构,系统架构如图1所示。
图1 FCS系统架构
为了记录Master机和Backup机上的文件信息,在Master节点和Backup节点上分别创建一个文件信息表,实时记录本地节点上的文件信息。文件信息表中存放的是文件元数据,包括文件ID标识,文件元数据的更新时刻,文件数据的更新时刻,文件大小等等属性。每次通过比较Master机和Backup机上的文件信息表,判断出发生更新的文件,为了避免每次都把Backup机上的文件信息表通过双机之间的链路传送到Master机端,浪费系统带宽,增加系统开销,这里采用如图2所示的数据结构,在双机每个节点上创建两个文件信息表,一个主文件信息表,一个从文件信息表,分别代表Master机上的文件信息和Backup机上的文件信息。当Master机出现故障宕机后,在Backup机上还存在有Master机上的文件信息,在一定程度上也对数据进行了保护。
图2 节点数据结构
每次同步文件时,要实时对工作机和备份机上的四个文件信息表进行更新维护。
(1)读取Master节点上的文件。
(2)把Master节点上的文件更新情况记录到Master节点上的主文件信息表中。
(3)从Master节点向Backup节点传送数据。
(4)更新Backup节点上的文件信息,使其和Master节点上的文件信息保持同步。
(5)把Backup节点上的文件更新情况记录到Backup节点上的从文件信息表中。
(6)把Master节点上的文件更新情况记录到Backup节点上的主文件信息表中。
(7)把Backup节点上文件的更新结果传送给Master节点。
(8)把Backup节点上文件的更新情况记录到Master节点上的从文件信息表中。
传统双机热备系统中,采用文件更新通知和计时器间隔监视两种方式实时监控工作机上的文件。文件更新通知即一旦有文件发生更新,立即触发对该文件的备份操作;计时器间隔监视即每间隔固定的时间,依次扫描工作机上的主文件信息表和从文件信息表,对二者进行比较,从而判断出发生更新的文件,然后触发对该组文件的备份操作。由用户输入文件优先级的一个阈值,当发生更新的文件的优先级高于该阈值时,采用文件更新通知的方式触发文件备份;当发生更新的文件的优先级低于该阈值时,采用间隔监视的方式触发文件备份。这种传统的文件备份方法没有考虑到主备机对等节点间当前传输链路的传输延迟,很可能在双机之间传输链路已经发生拥塞的情况下,又触发对文件的备份操作,结果这部分文件又都阻塞在双机链路中,影响了主备机间文件复制的连续性。
提出一种基于链路延迟[4]的文件更新通知和间隔监视的切换方法。在链路畅通的情况下,采用文件更新通知的方法触发文件备份确保主备机数据一致性;在链路拥塞的情况下,采用间隔监视的方法,不触发对文件的传送,只把更新文件的信息,记录在工作机上的本地文件信息列表中。在链路恢复畅通的情况下,再触发对更新文件的传送,大大提高了系统效率,并且使系统在保持主备机数据一致性和系统复制性能之间趋于一个平衡点。提供给用户一个接口,由用户指定数据在工作机和备份机之间链路上传输延迟的一个阈值,根据该阈值以及文件数据传输的实时延迟,实现文件更新通知和间隔监视的实时调整。
假设用户输入的链路延迟阈值为T,通过一个资源追踪线程对链路上传输的文件进行追踪,从数据开始在链路上传送到备份机接收到数据的时间差值即为数据链路上文件的传输延迟值Tdelay。
(1)当Tdelay<T时,按照文件更新通知的方法进行主备机间更新文件的监视以及复制;当Tdelay>T时,则自动切换为间隔监视的方法进行主备机间文件的监视和复制。
(2)实时监控数据链路上的网络延迟,当Tdelay<T,则对下一个请求改用文件更新通知方法进行复制,否则,继续采用间隔监视的方法进行文件的监视和复制。
Q=(R1,R2,R3...)代表一系列的文件更新请求,以文件更新通知方法启动工作机和备份机对等节点间的文件监视和复制。资源追踪线程依次记录每个文件的传输延迟,记录在一个线性队列中,当执行文件更新请求Ri时,链路延迟Ti>T,则从Ri+1开始,对后续的连续k个文件更新请求,采用间隔监视的方法进行文件的监视和复制;再以文件更新通知方法处理Ri+k+1文件的更新请求,并计算该请求文件传输的链路延迟,如果Ti+k+1<T,则对后续的文件更新请求采用文件更新通知的方法,否则继续对Ri+k+2开始的k个文件更新请求采用间隔监视的方法进行监视和复制。如此循环执行,直到文件更新请求队列为空[2]。
算法流程如图3所示:
图3 算法流程图
输入:Q=(R1,R2,R3...),T,k
FileUpdateNotify(R)代表采用文件更新通知的方法进行文件的监视和复制。
IntervalNotify(R,Q,k)代表对 Q队列中,从文件R请求开始的k个文件更新请求采用间隔监视的方法进行文件的监视和复制。
基于链路延迟的文件复制方法介于文件更新通知和间隔监视之间。通过对链路延迟的实时监控,在文件更新通知和间隔监视之间切换,在尽力确保主备机数据一致性的基础上,又对系统性能进行一定的改善,同时在一定程度上,确保了主备机间数据复制的连续性。
基于链路延迟的文件复制,文件更新通知,计时器间隔监视三种不同的触发文件备份操作结果对比如表1所示。
表1 三种触发文件备份算法比较
可见,基于链路延迟的文件复制在文件更新通知和计时器间隔监视间取得了很好的权衡,既提高了主备机的数据一致性,又没有大幅度降低系统性能。
当采用间隔监视进行文件复制时,每次都对Master机上的两个主从文件信息表从头至尾进行扫描比较,以检索出发生更新的文件,这在很大程度上影响了系统性能,尤其是当发生更新的文件只有所有文件中很少的一部分时,更是如此。因此提出一种基于单向哈希函数的检索更新文件的方法。
单向哈希函数[3]是一种算法,可以将消息或者文本转化成为一个固定长度的数字签名,称之为哈希值。“单向”即只能通过哈希函数把消息或文本转换成哈希值,却不能从哈希值通过哈希函数,还原出消息或文本。并且两个不同的消息或文本几乎不可能生成相同的哈希值,因此完全可以通过哈希值的相同与否,来判断文本的相同与否。
使用单向哈希函数,对Master机上的主从文件信息表分别计算哈希值H主和H从,当H主等于H从时,说明Master机上的文件信息在该时间间隔内未发生改变,与Backup机上保存的文件信息一致,不需要同步;当H主不等于H从时,说明Master机上存在的文件信息发生了改变。为了进一步精确定位发生改变的文件,把Master机上的主文件信息表和从文件信息表分别分割成两部分,对每一部分再使用单向哈希函数计算哈希值,以此类推,直到文件信息表的每一条记录,具体过程如图4所示。
图4 更新文件检索
任意大小的数据集产生的数字签名都是固定长度的,通过单向哈希函数对数据集产生的数字签名的长度要明显小于数据集的长度。对每个数据集计算数字签名的计算量和数据集的大小成线性比。数字签名的计算是一个迭代过程,可以通过多线程的方式进行,因此对主文件信息表计算数字签名和对从文件信息表计算数字签名的过程可以同步进行。每次当主从文件信息表的数字签名不同时,就对信息表对半切分。因此整个检索更新文件的时间复杂度由原先的O(n)降低到O(logn)。另外对签名的计算是按需进行的,不需要一片连续的存储空间来存储数字签名,因此从时空效率两方面考虑,该方法都比较合理。
在基于open flow协议的FCS系统应用背景下,研究了纯软件双机热备系统的数据同步方法,并且在对传统文件备份时机以及检索更新文件的不足进行分析的基础上,提出了基于链路延迟的文件复制以及基于单向哈希函数的更新文件检索方法。基于链路延迟的文件复制,可以有效保证主备机间文件复制的连续性,并且在保证主备机数据一致性和系统复制性能间取得权衡。基于单向哈希函数的更新文件检索,把检索更新文件的时间复杂度从O(n)降到O(logn),从而节省了很多时间,在很大程度上提高了系统效率。通过以上两点改进,能够高效快速的实现双机热备系统中对等节点上数据的同步。
[1] 王丽君,刘永强,张健.基于OpenFlow的未来互联网试验技术研究[J].电信网技术,2011(6):2-3.
[2] 王彦龙.海量数据保护与容灾关键技术研究[D].西安:西北工业大学,2008:79-82.
[3] Victoria V.Livschitz,West Bloomfield.One-way hash function for distributed data synchronization:United States,US6470329B1[P].2002-10-22.http://www.google.com.hk/patents?hl=zh-CN&lr= &vid=USPAT6470329&id=DbcLAAAAEBAJ&oi=fnd&dq=One-way+hash+function+for+distributed+data+synchronization&printsec=abstract#v=onepage&q=One- way% 20hash% 20function% 20for%20distributed%20data%20synchronization&f=false.
[4] Dale Burr,Robert Bruce Nicholson.Suspension of an asynchronous remote copy pair system having a primary controller and a remote controller:United state,US7890715B2[P].2011-2-15.http://www.google.com.hk/patents?hl=zh-CN&lr= &vid=USPAT7890715&id=dBcdAQAAEBAJ&oi=fnd&dq=Suspension+of+an+asynchronous+remote+copy+pair+system+having+a+primary+controller+and+a+remote+controller&printsec=abstract#v=onepage&q=Suspension%20of%20an%20asynchronous%20remote%20copy% 20pair% 20system% 20having% 20a%20primary%20controller%20and%20a%20remote%20controller&f=false.