一种基于卷复制的高可用系统以及多服务器数据同步方法
技术领域
本发明涉及计算机数据共享技术领域,特别是一种基于卷复制的高可用系统以及多服务器数据同步方法。
背景技术
现有的主备双机高可用系统基于共享存储,数据只有一份,当存储故障时,会导致数据丢失。且当数据存在逻辑错误或被恶意篡改、误删除等情况下,无法恢复破坏前的数据。
基于DRDB的存储复制方案,将源卷的变化同步到目标卷,使源卷和目标卷保持一致,数据在源卷和目标卷各有一份,解决了数据只有一份的问题,但是在数据同步的过程中,目标端数据无法使用。
而以上两种数据共享方式,都不能解决数据因逻辑错误或者因恶意篡改、误删除等导致的数据丢失或损坏。
名词解释
高可用系统:高可用性H.A.(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。它与被认为是不间断操作的容错技术有所不同。HA系统是目前企业防止核心计算机系统因故障停机的最有效手段。
发明内容
本发明的目的是提供一种基于卷复制的高可用系统以及多服务器数据同步方法,能够实现数据在主备双机之间的共享,可减少数据因误删等导致的数据丢失或损坏。
本发明采取的技术方案为:一种高可用系统,包括至少两个服务器节点,各服务器节点能够在主机工作状态与备机工作状态之间切换,且任意时间仅一个服务器节点工作在主机状态;
各服务器节点分别包括代理模块、磁盘IO接管模块、卷复制模块和高可用模块;
代理模块用于接收来自外部的配置控制信息以及读写操作请求,并响应于配置控制信息对当前服务器进行配置;所述配置控制信息包括主备工作状态配置指令;
磁盘IO接管模块通过代理模块获取所述读写操作请求,并根据读写操作请求,按照预先设置的重定向规则对当前服务器的磁盘卷进行读写操作位置的重定向,生成重定向后的转移关系表,根据转移关系表进行磁盘卷的读写操作;所述转移关系表记载读写操作请求中的原操作位置与重定向后的操作位置之间的对应关系;
磁盘IO接管模块以预设的时间间隔对磁盘卷创建数据快照,并将当前转移关系表保存为与当前数据快照对应的转移关系表;
主机服务器的卷复制模块用于响应于磁盘IO接管模块新生成有数据快照,将所创建的数据快照及其对应的转移关系表,以及变化的扇区数据,传输至备机服务器的卷复制模块;备机服务器的卷复制模块响应于接收到主机服务器传输的数据,保存相应数据快照、转移关系表以及扇区数据,完成数据复制;
高可用模块用于接收来自外部的心跳检测信号,并在当前服务器运行于在线状态时回应所述外部运行状态检测信号。
可选的,高可用系统还包括:
管理端,各服务器节点通过代理模块与管理端通信,以传输配置控制信息;
仲裁端,用于分别以设定的周期向主机服务器节点和备机服务器节点发送心跳检测信号,并响应于主机服务器节点在预设N个周期内未回应心跳检测信号,向管理端发送主备切换指令;
管理端响应于接收到所述主备切换指令,向其中一个正常回应心跳检测信号的备机服务器节点的代理模块发送主备工作状态配置指令,以对相应的备机服务器进行状态切换控制;
相应备机服务器节点的代理模块响应于所述主备工作状态配置指令,将工作状态切换为主机状态。
可选的,所述仲裁端与管理端采用同一计算机设备,定义为管理仲裁端;
各服务器节点通过高可用模块接收心跳检测信号,并在当前设备运行正常的情况下向管理仲裁端回应心跳检测信号;
管理仲裁端根据主机服务器与备机服务器对心跳检测信号的回应,向服务器发送主备工作状态配置指令,以在主机服务器不在线时,将其中一个备机服务器的工作状态切换为主机状态。
可选的,所述主备工作状态配置指令包括卷复制目标备机IP、待复制卷、快照周期;所述配置控制命令还包括卷复制操作控制指令;卷复制操作控制指令包括启动复制、停止复制、暂停复制、反向复制和挂载指令。可使得用户能够在管理端根据需要来操作卷复制过程。
可选的,高可用系统初始化时,主机服务器的卷复制模块响应于代理模块的控制请求,对磁盘卷进行初始复制,根据已配置的备机IP传输至相应备机。
另一方面,本发明还提供一种多服务器数据同步方法,多服务器中包括一个主机服务器和至少一个备机服务器,数据同步方法由主机服务器执行,包括:
接收来自外部的配置控制信息或读写操作请求;
响应于配置控制信息对当前服务器进行配置;
按照配置进行初始复制;
响应于读写操作请求,按照预先配置的重定向规则进行读写操作的重定向,保存重定向前后的操作位置转移关系;
按照操作位置转移关系,对磁盘卷进行读写操作或重定向后的读写操作;
以设定的时间间隔,对磁盘卷创建数据快照,并将当前转移关系表保存为与当前数据快照对应的转移关系表;
将所创建的数据快照及其对应的转移关系表,以及根据转移关系表读取的扇区数据,传输至备机服务器,使得备机服务器能够保存相应数据快照、转移关系表以及扇区数据,进行数据同步。
由于重定向的设计,以及主机和备机均存储了每次创建的数据快照,因此每次读写操作后的数据同步不会覆盖备机原正常的数据,也即本发明的数据同步方法能够解决因人为误删除、黑客攻击、勒索软件加密等导致的数据逻辑错误问题。
初始化时的初始复制之后,本发明方法执行实时复制,当有扇区发生变化时,就会将变化的数据同步到备机。快照实际是一组扇区数据,每次卷复制将上个快照之后的所有发生变化的扇区数据,再加上一个转移关系表同步到备机服务器。
可选的,数据同步方法还包括:
响应于外部心跳检测信号,在当前运行正常的情况下回应心跳检测信号;
响应于外部状态切换指令,将当前工作状态在主机状态与备机状态之间切换。
可选的,数据同步方法还包括反向复制方法,包括:
确定备机最新保存的快照号N;
判断当前服务器是否已有快照号N:若有,则回滚到快照N,然后获取备机在快照号N后变化的扇区数据,写入当前服务器磁盘卷对应的位置;若没有,则获取快照号N与当前服务器最新快照之间的差异数据,然后再获取备机在快照号N后变化的扇区数据,写入当前服务器磁盘卷。写入时,所写入的磁盘卷位置与备机上的扇区位置是相同的。
可选的,每次创建数据快照后,遍历所有已创建的数据快照,将备机未同步的数据快照、转移关系表以及扇区数据,传输至备机服务器。也即本发明的数据同步方法可支持增量同步,同时能够避免因传输中断导致的数据缺失。
可选的,所述重定向规则通过服务器配置信息配置,重定向规则为:
响应于外部读写操作请求,获取读写操作请求中的操作位置信息;
扫描获取磁盘卷上文件系统的有效数据位图信息,将有效数据的块标记为被保护块;
响应于读写操作请求的操作位置为被保护块,将读写操作重定向到被保护块之外的位置,将重定向前后的操作位置对应关系保存至转移关系表。
可选的,所述按照操作位置转移关系,对磁盘卷进行读写操作或重定向后的读写操作包括:
获取读写操作请求中操作位置对应的起始扇区和大小;
从当前转移关系表中读取操作位置对应的转移关系信息;
若存在转移关系,则根据操作位置对应的重定向后位置进行读写操作;
若不存在转移关系,则根据操作位置进行读操作,根据操作位置进行写操作,或查找一个空闲空间,将数据写入该空闲空间,并更新转移关系表。
所述转移关系表可保存在日志卷中。
有益效果
与现有的技术相比,本发明具有以下优点和进步:
1)通过卷复制以及快照的创建实现主备服务器之间的数据同步,实现了数据的多端备份,能够解决单点故障导致的数据丢失问题,当数据出现逻辑损坏时,也能够快速恢复到损坏前的状态,从而解决数据逻辑错误的问题;
2)可以监控主机和备机的业务状态,能够在主机不在线时自动完成业务切换和卷复制方向的切换;
3)在数据多备份的基础上,通过反向复制实现备机到主机的数据同步,支持增量同步,效率较高;
4)主机和备机的数据及历史快照时间点均可以挂载出来查看和使用,互不影响。
附图说明
图1所示为本发明高可用系统的原理示意框图;
图2所示为主备机切换原理示意图;
图3所示为对磁盘进行读写操作的流程示意图。
具体实施方式
以下结合附图和具体实施例进一步描述。
实施例1
本实施例为一种高可用系统,包括至少两个服务器节点,各服务器节点能够在主机工作状态与备机工作状态之间切换,且任意时间仅一个服务器节点工作在主机状态;
各服务器节点分别包括代理模块、磁盘IO接管模块、卷复制模块和高可用模块;
代理模块用于接收来自外部的配置控制信息以及读写操作请求,并响应于配置控制信息对当前服务器进行配置;所述配置控制信息包括主备工作状态配置指令;
磁盘IO接管模块通过代理模块获取所述读写操作请求,并根据读写操作请求,按照预先设置的重定向规则对当前服务器的磁盘卷进行读写操作位置的重定向,生成重定向后的转移关系表,根据转移关系表进行磁盘卷的读写操作;所述转移关系表记载读写操作请求中的原操作位置与重定向后的操作位置之间的对应关系;
磁盘IO接管模块以预设的时间间隔对磁盘卷创建数据快照,并将当前转移关系表保存为与当前数据快照对应的转移关系表;
主机服务器的卷复制模块用于响应于磁盘IO接管模块新生成有数据快照,将所创建的数据快照及其对应的转移关系表,以及变化的扇区数据,传输至备机服务器的卷复制模块;备机服务器的卷复制模块响应于接收到主机服务器传输的数据,保存相应数据快照、转移关系表以及扇区数据,完成数据复制;
高可用模块用于接收来自外部的心跳检测信号,并在当前服务器运行于在线状态时回应所述外部运行状态检测信号。
实施例1-1
参考图1所示,在实施例1的基础上,本实施例高可用系统还包括:
管理端,各服务器节点通过代理模块与管理端通信,以传输配置控制信息;
仲裁端,用于分别以设定的周期向主机服务器节点和备机服务器节点发送心跳检测信号,并响应于主机服务器节点在预设N个周期内未回应心跳检测信号,向管理端发送主备切换指令;
管理端响应于接收到所述主备切换指令,向其中一个正常回应心跳检测信号的备机服务器节点的代理模块发送主备工作状态配置指令,以对相应的备机服务器进行状态切换控制;
相应备机服务器节点的代理模块响应于所述主备工作状态配置指令,将工作状态切换为主机状态。
如图1,仲裁端与管理端采用不同的计算机设备,另外仲裁端与管理端也采用同一计算机设备,定义为管理仲裁端;
各服务器节点通过高可用模块接收心跳检测信号,并在当前设备运行正常的情况下向管理仲裁端回应心跳检测信号;
管理仲裁端根据主机服务器与备机服务器对心跳检测信号的回应,向服务器发送主备工作状态配置指令,以在主机服务器不在线时,将其中一个备机服务器的工作状态切换为主机状态。
主备工作状态配置指令包括卷复制目标备机IP、待复制卷、快照周期;所述配置控制命令还包括卷复制操作控制指令;卷复制操作控制指令包括启动复制、停止复制、暂停复制、反向复制和挂载指令。可使得用户能够在管理端根据需要来操作卷复制过程。
高可用系统初始化时,主机服务器的卷复制模块响应于代理模块的控制请求,对磁盘卷进行初始复制,根据已配置的备机IP传输至相应备机。
实施例1-2
如图1所示,本实施例的高可用系统,包括管理端、仲裁端、服务器主机和服务器备机,一个高可用系统中包括多个服务器备机,以在服务器主机时,将备机中的一个切换为主机工作状态,与其他备机之间进行卷复制。
各服务器分别包括代理模块、磁盘IO接管模块、卷复制模块和高可用模块;
管理端可以安装在单独的机器上,用于对主机和备机,以及对复制任务和高可用规则进行配置和管理;
代理模块用于接收管理端的配置信息及控制命令,调用磁盘IO接管模块、卷复制模块、高可用模块,完成卷复制及高可用切换等;所述配置信息包括备机IP、复制哪个卷到备机,所述控制命令包含启动复制、停止复制、暂停复制、反向复制、挂载;
磁盘IO接管模块通过代理模块获取外部读写操作请求,并根据读写操作请求,按照预先配置的重定向规则对当前服务器的磁盘卷进行读写操作位置的重定向,生成重定向后的转移关系表,根据转移关系表进行磁盘卷的读写操作;所述转移关系表记载读写操作请求中的原操作位置与重定向后的操作位置之间的对应关系;
磁盘IO接管模块是工作在内核中,截获上层应用对本地磁盘卷的读写操作,对当前服务器的磁盘卷进行读写重定向,并定时对磁盘卷创建数据快照,并保存对应的转移关系表;
主机服务器的卷复制模块用于在切换为主机状态后的初始化时响应代理模块的控制请求,对磁盘卷进行初始复制,并在初始化后在每次快照创建后,或扇区数据发生变化时,实时的将快照对应的转移关系表、变化的扇区数据发送到备机的卷复制模块,备机的卷复制模块接收主机发送的数据,写入备机,完成数据复制;利用快照隔离的特点,主机和备机上的快照可以分别用于挂载、审计、验证、分析、测试等,且不影响卷复制模块;
仲裁端用于分别以设定的周期向主机服务器节点和备机服务器节点发送心跳检测信号,当主机服务器节点多个周期内未回应心跳检测信号,向其中一个正常回应心跳检测信号的备机服务器节点发送状态切换指令,完成主备机状态的切换;
高可用模块用于接收仲裁节点发送的运行状态检测信号,并在当前服务器运行于在线状态情况下回应运行状态,运行状态包含但不限于应用运行状态、服务运行状态等。
磁盘IO接管模块接管对磁盘卷的所有IO操作。在windows下,实现方式是生成磁盘/卷过滤驱动,将过滤驱动attach到需要接管的磁盘卷上,之后所有的对磁盘卷的IO都会先经过磁盘/卷过滤驱动,从而实现接管磁盘卷的IO操作;Linux下通过内核模块,通过替换磁盘卷的BIO处理函数从而实现接管卷的IO操作。
磁盘IO接管算法:
开始复制前,扫描卷上文件系统的有效数据,获取卷上有效数据的位图信息,保存初始位图信息,将所有有有效数据的块标记为被保护块。
之后对被保护块的写操作将被重定向到日志卷中,保存转移关系表。
定时创建快照,每创建一个快照,将当前最新的转移关系表复制一份保存成对应快照的转移关系表。
应用及系统读写扇区时,被磁盘IO接管模块接管,根据对应的转移关系表重定向读写操作,参考图3所示:
读:
如果转移关系表中对应的扇区位置被标记为已转移,则从转移后的位置读取数据。
如果转移关系表中对应的位置未标记为转移,则从原位置读取数据。
写:
如果转移关系表中对应的扇区位置被标记为已转移,则将数据写入转移后的位置。
如果转移关系表中对应的扇区位置未标记为转移,原查找一个新的空闲转移位置,将数据写入新的转移位置,将新的转移位置更新到转移关系表中。
卷复制模块遍历所有快照,将快照信息复制到备机,根据快照的转移关系表读取扇区数据并发送到备机,备机保存快照信息、转移关系表及扇区数据。
挂载快照:
遍历快照列表,找到对应的快照转移关系表,通过磁盘IO接管模块生成一个虚拟卷,对该虚拟卷的读写操作根据转移关系表进行重定向,从而实现挂载任意快照的功能。
反向复制:
获取备机当前进度的快照号N,
如果主机已经有快照号N,通知主机回滚到快照N,将备机上新变化的扇区数据发送到主机,主机接收扇区数据写入卷对应的位置。
如果主机没有快照号N,将备份快照N与主机最新快照之间的差异数据发送到主机,再将备机上新变化的数据发送到主机,主机接收数据写入卷。
实施例2
本实施例为一种多服务器数据同步方法,多服务器中包括一个主机服务器和至少一个备机服务器,数据同步方法由实施例1高可用系统中的主机服务器执行,包括:
接收来自外部的配置控制信息或读写操作请求;
响应于配置控制信息对当前服务器进行配置;
按照配置进行初始复制;
响应于读写操作请求,按照预先配置的重定向规则进行读写操作的重定向,保存重定向前后的操作位置转移关系;
按照操作位置转移关系,对磁盘卷进行读写操作或重定向后的读写操作;
以设定的时间间隔,对磁盘卷创建数据快照,并将当前转移关系表保存为与当前数据快照对应的转移关系表;
将所创建的数据快照及其对应的转移关系表,以及根据转移关系表读取的扇区数据,传输至备机服务器,使得备机服务器能够保存相应数据快照、转移关系表以及扇区数据,进行数据同步。
初始复制时,将当前主机存储的所有快照、转移关系表及扇区数据传输给制定的备机,备机IP由配置控制信息给定。
由于重定向的设计,以及主机和备机均存储了每次创建的数据快照,因此每次读写操作后的数据同步不会覆盖备机原正常的数据,也即本发明的数据同步方法能够解决因人为误删除、黑客攻击、勒索软件加密等导致的数据逻辑错误问题。
初始化时的初始复制之后,本发明方法执行实时复制,当有扇区发生变化时,就会将变化的数据同步到备机。快照实际是一组扇区数据,每次卷复制将上个快照之后的所有发生变化的扇区数据,再加上一个转移关系表同步到备机服务器。
数据同步方法还包括:
响应于外部心跳检测信号,在当前运行正常的情况下回应心跳检测信号;
响应于外部状态切换指令,将当前工作状态在主机状态与备机状态之间切换。
可选的,数据同步方法还包括反向复制方法,包括:
确定备机最新保存的快照号N;
判断当前服务器是否已有快照号N:若有,则回滚到快照N,然后获取备机在快照号N后变化的扇区数据,写入当前服务器磁盘卷对应的位置;若没有,则获取快照号N与当前服务器最新快照之间的差异数据,然后再获取备机在快照号N后变化的扇区数据,写入当前服务器磁盘卷。写入时,所写入的磁盘卷位置与备机上的扇区位置是相同的。
每次创建数据快照后,遍历所有已创建的数据快照,将备机未同步的数据快照、转移关系表以及扇区数据,传输至备机服务器。也即本发明的数据同步方法可支持增量同步,同时能够避免因传输中断导致的数据缺失。
所述重定向规则通过服务器配置信息配置,重定向规则为:
响应于外部读写操作请求,获取读写操作请求中的操作位置信息;
扫描获取磁盘卷上文件系统的有效数据位图信息,将有效数据的块标记为被保护块;
响应于读写操作请求的操作位置为被保护块,将读写操作重定向到被保护块之外的位置,将重定向前后的操作位置对应关系保存至转移关系表。
所述按照操作位置转移关系,对磁盘卷进行读写操作或重定向后的读写操作包括:
获取读写操作请求中操作位置对应的起始扇区和大小;
从当前转移关系表中读取操作位置对应的转移关系信息;
若存在转移关系,则根据操作位置对应的重定向后位置进行读写操作;
若不存在转移关系,则根据操作位置进行读操作,根据操作位置进行写操作,或查找一个空闲空间,将数据写入该空闲空间,并更新转移关系表。
所述转移关系表可保存在日志卷中。
通过以上实施例,本发明能够解决以下问题:
1.解决现有的高可用系统不能解决数据逻辑错误的问题;
2.解决现有的高可用系统的备端数据无法用于审计、验证、测试、分析的问题;
3.解决现有的高可用系统,比如MSCS,ORACLE RAC等,只能支持特定应用的问题;
4.解决基于存储复制方案的高可用系统,从备机反向复制数据到主机,需要全量复制的问题,只需要恢复增量数据;
5.主机端的数据及历史快照时间点可以挂载出来查看和使用,备端的数据及历史快照点可以挂载出来查看和使用;
6.当数据出现逻辑损坏时,可以快速恢复到损坏前的状态。
当一台主机出现故障时,业务可自动转移到另外一台主机。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。