CN105049258B - 网络容灾系统的数据传输方法 - Google Patents
网络容灾系统的数据传输方法 Download PDFInfo
- Publication number
- CN105049258B CN105049258B CN201510501210.3A CN201510501210A CN105049258B CN 105049258 B CN105049258 B CN 105049258B CN 201510501210 A CN201510501210 A CN 201510501210A CN 105049258 B CN105049258 B CN 105049258B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- host node
- slave node
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/22—Arrangements for detecting or preventing errors in the information received using redundant apparatus to increase reliability
Abstract
一种网络容灾系统的数据传输方法,系统包括一个主节点和至少一个备节点,每个节点存储有元数据信息,元数据信息包括该节点上一次进行输出传输涉及到的主节点的信息以及前次写入数据的信息,方法包括:S1、备节点与主节点连接握手,并交换各自的元数据信息;S2、主节点将自身的元数据信息与该备节点的元数据信息进行比较,确定四种复制模式中的一种实现数据传输。本发明在重新握手时自动判断采用何种复制模式,缩短容灾恢复所需要的时间,进一步地,在增量同步时主节点若写入数据并不立马更新数据增量位图,而是等待本轮增量复制结束后将备节点的头指标与主节点的头指标之间的数据转化为数据增量位图后再次进行增量同步,保证备节点数据完整性。
Description
技术领域
本发明涉及数据容灾技术领域,尤其涉及一种网络容灾系统的数据传输方法。
背景技术
随着互联网应用的发展,互联网的使用人数越来越广,用户大量的数据都保存在互联网的服务器上,这一切都对运行在互联网上的应用的可用性和数据存储的可靠性提出了更严格的要求,因为一个应用的故障有可能造成不可估量的损失,而数据的丢失更是会有致命的后果。
例如,2011年4月21日早晨,亚马逊旗下的EC2及RDS服务就出现了网络延迟和连接错误等问题,导致Foursquare、Quora、Reddit Paper.li等网站出现间歇性无法访问。放在EC2上的大型网站有很多,有国外媒体称半个美国互联网受到了影响,此次出现故障的是位于北弗吉尼亚州的数据中心。再例如,1993年,美国世贸中心大楼发生爆炸,爆炸前,约有350家企业在该楼中工作,1年后,再回到世贸大楼的公司变成了150家,有200家企业由于无法存取重要的信息系统而倒闭、消失。“9·11”事件中,由于有1993年爆炸的前车之鉴,在世贸大楼内的一些公司建起了自己的容灾系统,因此,当灾难再次降临时,有一批公司仍可及时地通过自己的容灾系统很快恢复营业。
所以基于数据备份的数据容灾技术近些年来发展非常迅猛,常见的数据容灾备份方式包括两种:
一是主机型,通过网络将应用数据从主节点传输到备节点;二是存储型,使用存储专用软件,无须经过服务器,直接在主机和备机使用的存储之间直接进行数据镜像,这种方式一般是高端存储才能提供的功能。
第一种方式无需专用的高端存储,所以在互联网或者中小企业受到了广泛的欢迎。而主机型网络容灾备份又分基于应用的或者基于磁盘的。基于应用的数据容灾指的是通过某一特定应用的专门容灾软件,将应用的数据(比如数据库的日志系统)截获并发送到远端的备机,然后在远端的备机按照应用的逻辑将数据恢复,这种容灾软件通常只针对特定的应用,适用范围较狭窄;而基于磁盘的数据容灾指的是将主机的磁盘的写操作截获,通过网络同步到备机,并更新到磁盘上,通过这种方式,让主备机磁盘数据块保持一致,这种方式能够适用于所有应用,所以是目前使用得最广的一种数据容灾备份方式。
作为基于磁盘的数据容灾备份,主备机之间通常使用广域网的网络进行数据传输,而广域网的带宽一般都比较小,所以为了保证容灾的可靠性,主备机之间数据传输必须遵循一定的规则,使得在主机进行定期的计划内维护时或者在主机发生故障(计划外)时,备机能够迅速的接管应用和应用数据,从而使用户的访问不受计划内或计划外停机的干扰。这些规则包括:
数据顺序一致性:也就是备机写入数据严格按照主机的数据写入顺序。考虑到广域网内数据传输带宽较小的情况,主备机之间通常采用异步的方式进行传输。保证写入顺序即能保证备机的数据始终处于主机的某一个时间点的状态。在这种状态下,通常在设备上的文件系统或者数据库都是可以正常加载和访问的。这样就能保证在主机发生故障时,备机随时都可以接管应用,使应用不中断。
数据完整性:也就是说主机和备机之间数据差异必须始终是可以追溯的,否则任何一次计划外停机切换就会导致一次数据完全同步来保证初始数据一致,这在广域网下是不可以接受的。
为此,大部分通过磁盘网络镜像的数据容灾软件采用一个队列来保存磁盘的写入记录,它们通过截获磁盘的写记录,将记录按照顺序保存在一个缓冲队列里,然后将缓冲队列里的内容依次发送给远端服务器。这个缓冲队列有的放在磁盘里,有的放在内存中。放到内存中的有可能在主机意外重启后会丢失记录,这时候主备机就必须进行全同步来保证数据重新一致。
当主节点和备节点数据一致,为了对主节点进行维护,我们需要将主节点和备节点的角色进行转换,我们称这种行为为计划内迁移;当主节点发生异常,备节点被变成主节点,并接管应用,我们称这种方式为计划外迁移。当发生计划内或计划外迁移时,两个节点握手后,需要决定他们之间是进行下列那种数据复制方式。而现有技术中在节点之间重新握手时,特别是在计划外迁移的情况下,一般是采用全盘复制的模式,这无疑增加了主节点的业务持续时间,增加了主备节点之间的数据传输量,大大延长了应用恢复所需要的时间,增加了备机数据不完整的时间,因为备机数据不完整容易造成容灾数据不可用的风险。
另外,现有技术中还存在如下缺陷:在增量复制(增量复制是基于bitmap实现)时,主机如果每次接收到外部新写入的数据时,都会立马生成新的bitmap,这样就会导致增量同步一直进行而得不到bitmap为0的时刻,从而导致备机数据一直处于不完整的状态。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种网络容灾系统的数据传输方法。
本发明解决其技术问题所采用的技术方案是:构造一种网络容灾系统的数据传输方法,所述容灾系统包括至少两个节点,所述至少两个节点分为一个主节点和至少一个备节点,每个节点存储有元数据信息,所述元数据信息包括该节点上一次进行输出传输过程中涉及到的主节点的信息以及前次写入数据的信息,
所述方法包括:
S1、每个备节点与主节点连接握手,并交换各自的元数据信息;
S2、针对每个备节点,主节点将自身的元数据信息与该备节点的元数据信息进行比较,确定四种复制模式中的一种实现主节点与该备节点之间的数据传输;其中,所述四种复制模式包括为顺序复制、增量复制、全盘复制、冲突合并。
在本发明所述的网络容灾系统的数据传输方法中,所述元数据信息包括本地主节点信息和前次主节点信息,所述本地主节点信息和前次主节点信息均包括以下字段:
uuid,用于唯一标识一个节点的一次变成主节点的过程;
id,用于唯一标识当前的主节点;
seq,用于记录节点当前写入数据的序列号,且在写入的数据为增量复制中的增量数据时,seq为零。
在本发明所述的网络容灾系统的数据传输方法中,
当一个节点从备节点变成主节点时产生所述本地主节点信息,当一个节点从主节点变成备节点并开始接收其他主节点传输的数据时,将所述本地主节点信息清空;
当一个节点作为备节点并接受其他主节点传输的数据时产生所述前次主节点信息,该前次主节点信息的uuid、id和seq被设置为该其他主节点的本地主节点信息的uuid、id和seq,并在接收到新的数据时更新前次主节点信息的seq的值。
在本发明所述的网络容灾系统的数据传输方法中,所述步骤S2包括:
S21、判断备节点的本地主节点信息是否非空,如果不是,则进入步骤S22,如果是,则进入步骤S23;
S22、如果备节点的本地主节点信息与主节点的前次主节点信息的所有字段均相等,则主节点与备节点之间采用顺序复制;如果备节点的本地主节点信息与主节点的前次主节点信息的UUID和id两个字段相等、或者备节点的前次主节点信息与主节点的本地主节点信息的UUID和id两个字段相等、或者备节点的前次主节点信息与主节点的前次主节点信息的所有字段均相等,则主节点与备节点之间进行冲突合并;其他情况采用全盘复制,结束;
S23、如果备节点的前次主节点信息与主节点的本地主节点信息的UUID和id两个字段相等、或者备节点的前次主节点信息与主节点的前次主节点信息的所有字段均相等,则判断备节点的前次主节点信息的seq字段是否为零,如果是,则主节点与备节点之间采用增量复制,如果不是,则主节点与备节点之间采用顺序复制;其他情况采用全盘复制,结束。
在本发明所述的网络容灾系统的数据传输方法中,每个节点均包括后端数据设备和磁盘缓冲队列,所述磁盘缓冲队列用于顺序存储外部写入的数据,并通过写操作将数据写入本地的后端数据设备的数据块,所述磁盘缓冲队列还存储有与各个节点绑定的多个数据增量位图,所述数据增量位图记录有主节点所有写操作的数据块的位置;
所述顺序复制包括:主节点将磁盘缓冲队列中的数据依次发往备节点;
所述增量复制包括:主节点将备节点的数据增量位图中所指定的后端数据设备的数据块的数据发往备节点。
在本发明所述的网络容灾系统的数据传输方法中,所述磁盘缓冲队列中包括Meta区、DBM区和DATA区,所述Meta区存储有所述元数据信息、一个尾指标和与各个节点绑定的多个头指标;所述DBM区存储有所述的多个数据增量位图;所述DATA区包括多个数据块,用于顺序存储外部写入的数据;
所述数据增量位图包括多个bit位,每一个bit位与后端数据设备中的一个数据块对应,如果一个bit位被置为1,则表示该bit位对应的数据块的数据没有备份到相应的备节点,如果一个bit位被置为0,则表示该bit位对应的数据块的数据备份到相应的备节点;
当DATA区的一个数据块写入数据时,所述尾指标前移一位;当DATA区的一个数据块的数据写入到主节点的后端数据设备时,主节点的头指标前移一位。
在本发明所述的网络容灾系统的数据传输方法中,如果主节点在增量复制结束前写入新的数据,则等待本轮增量复制结束后,根据备节点的头指标与主节点的头指标之间的数据生成新的数据增量位图,并基于新的数据增量位图开始下一轮的增量复制。
在本发明所述的网络容灾系统的数据传输方法中,所述的根据备节点的头指标与主节点的头指标之间的数据生成新的数据增量位图包括:在该备节点的数据增量位图中,将备节点的头指标至主节点的头指标之间的数据块所对应的bit位全部置为1,再将备节点的头指标前移至主节点的头指标的位置。
在本发明所述的网络容灾系统的数据传输方法中,
所述顺序复制为:主节点将Meta区所存储的备节点的头指标所对应的DATA区的数据块中的数据发往备节点,且在收到备节点返回的确认信息后将备节点的头指标前移一位,当备节点的头指标与主节点的头指标所指向的数据块相同时,主节点与该备节点之间的顺序复制结束;
所述增量复制为:主节点在DBM区找到备节点的数据增量位图,将数据增量位图中的数值为1的bit位所对应的数据块的数据发送到备节点,并在接收到备节点返回的确认信息后将对应的bit位清零,当数据增量位图的所有bit位全部为0时,主节点与该备节点之间的增量复制结束;
所述全盘复制为:主节点将备节点的数据增量位图的所有的bit位全部置为1;基于该数据增量位图执行所述增量复制,或者将各个数据块的hash值发送至备节点进行比较,如果hash值相同,则备节点返回确认信息将对应的bit位清零,如果hash值不同,则备节点通知主节点传输对应的数据块的数据,并在接收到数据时返回确认信息将对应的bit位清零;当数据增量位图的所有bit位全部为0时,主节点与该备节点之间的全盘复制结束;
所述冲突合并为:主节点和备节点分别根据各自的DATA区的数据生成数据增量位图,主节点将双方的数据增量位图进行异或运算产生新的数据增量位图,然后基于新的数据增量位图执行所述增量复制。
在本发明所述的网络容灾系统的数据传输方法中,在顺序复制的过程中,如果尾指标指向最小的头指标所指向的数据块的上一个数据块,则停止对该最小的头指标所对应的备节点的顺序复制,根据该最小的头指标与尾指标之间的数据生成该最小的头指标所对应的备节点的数据增量位图,并将该最小的头指标前移至尾指标的位置,且将主节点与该最小的头指标所对应的备节点的复制模式切换到增量复制。
实施本发明的网络容灾系统的数据传输方法,具有以下有益效果:本发明在节点之间重新握手时,通过交换各自的元数据信息判断采用何种复制模式进行数据传输,能有效降低主备节点进行全盘复制的概率,减少主备节点的数据传输量,大大的缩短容灾中应用恢复所需要的时间,减少备机数据不完整的时间,降低因为备机数据不完整而造成容灾数据不可用的风险;
进一步地,在进行增量同步时,主节点若写入数据并不立马更新数据增量位图,而是等待本轮增量复制结束后,将备节点的头指标与主节点的头指标之间的数据转化为数据增量位图数据后再次进行增量同步,如此,在增量复制完成后备节点数据完整性能得到保障,减少增量复制时对上层应用性能的损失。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是磁盘缓冲队列的结构示意图;
图2是本发明的第一实施例的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
容灾系统包括至少两个节点,一般把可以复制的源节点称之为主节点(也称Primary节点),而复制的目的节点(一个或多个)称之为备节点(也称Secondary节点)。通常主节点上的磁盘设备是可读写的,而备节点上的磁盘设备是不可以访问的,直到备节点变成主节点才可以访问。节点主备角色的切换通常有相应的集群软件来自动实现,此处不做赘述。
本发明中,每个节点存储有与其他节点进行数据传输的相关信息的元数据信息,所述元数据信息包括该节点上一次进行输出传输过程中涉及到的主节点的信息以及前次写入数据的信息,
所述方法包括:
S1、每个备节点在与主节点在连接握手时,交换各自的元数据;
S2、针对每个备节点,主节点将自身的元数据与该备节点的元数据进行比较,确定四种复制模式中的一种实现主节点与该备节点之间的数据传输;其中,所述四种复制模式包括为顺序复制、增量复制、全盘复制、冲突合并。
在阐述本发明的具体原理之前,首先介绍磁盘复制中的四种复制模式:顺序复制、增量复制、全盘复制、冲突合并。
每个节点包括保存数据的后端数据设备和保存写记录的磁盘缓冲队列(简称为BWR,Block Write Record)。参考图1,该BWR中包括Meta区、DBM区和DATA区。所述Meta区存储有元数据信息、一个尾指标和与各个节点绑定的多个头指标;所述DBM区存储有与各个节点绑定的多个数据增量位图;所述DATA区包括多个数据块,用于顺序存储外部写入的数据。所有写入到主节点磁盘的数据,最开始都是按照4K(一般操作系统对磁盘操作的最小单位)的数据块保存在BWR的DATA区中,然后再转移到本地的后端数据设备的数据块中。
BWR的DATA区实际上是一个先进先出的队列,当DATA区的一个数据块写入数据时,尾指标前移一位,开始时所有的头指标都指向DATA区的第一个数据块,当数据块依次写入到本地的后端数据设备时,主节点的头指标依次往前移动,当数据块依次写入到备节点或者转化为备节点的数据增量位图时,备节点的头指标往前移动至相应的位置。当尾指标超过磁盘边界时,回到磁盘头部,而当尾指标追上最小的头指标时,表明BWR已满,磁盘的写操作将被挂起,直到BWR有空闲空间为止。例如图1中,图中tail表示尾指标,head-A、head-B、head-C分别表示主节点A、备节点B、备节点C的头指标。head-B是最小的头指标,head-B与tail之间的空间为空闲空间,一旦tail追上head-B则表示BWR满。主节点中DATA区的每个数据块中的数据必须优先写入主节点的后端数据设备的数据块中后才可发往备节点备份,所以head-A必定位于head-B、head-C的前面。
顺序复制:
在顺序复制时,是直接将DATA区的数据块的数据发往备节点。DATA区的数据块无论是写入本地还是备节点,都是根据头指标的指向选择写入的数据块,所以保证了数据的顺序一致性。
对备节点进行顺序复制具体为:主节点首先找到其Meta区所存储的备节点的头指标,确定其头指标所指向的数据块,然后将该数据块中的数据发送到备节点,在收到备节点写入数据的确认信息(ACK)后将备节点的头指标前移一位,然后继续下一个数据块的发送,当备节点的头指标与主节点的头指标所指向的数据块相同时,则判定主节点与该备节点之间的顺序复制结束。
例如,图1中,主节点A本身还有最后一个数据块(head-A和tail之间的数据块)未写入后端数据设备。当前时刻,对于节点B来说,还有head-B和head-A之间的数据块没有进行备份(当然最后随着head-A到达tail,备份的数据也相应增加到tail),对于节点C来说,还有head-C和head-A之间的数据块没有进行备份。
增量复制:
上述提到,DBM区存储有多个数据增量位图(bitmap),其记录有主节点所有写操作的数据块的位置,具体的,每个bitmap包括多个bit位,每一个bit位与后端数据设备中的一个数据块对应,如果一个bit位被置为1,则表示该bit位对应的数据块的数据没有备份到相应的备节点,如果一个bit位被置为0,则表示该bit位对应的数据块的数据备份到相应的备节点。
增量复制即是基于bitmap进行增量同步,增量同步为:将bitmap中的数值为1的bit位所对应的数据块的数据发送到备节点,并在接收到备节点返回的确认信息后将对应的bit位清零,当bitmap的所有bit位全部为0时,代表增量同步结束;
因此,在重新握手时,如果确定采用增量复制,则主节点在DBM区找到备节点的bitmap,然后基于该bitmap进行增量同步即可。
另外,因为bitmap更新比较频繁,所以可以在内存和磁盘中各保存一份,进行增量同步时,读取内存中的bitmap即可,内存中的bitmap定时写到磁盘即可。
全盘复制:
全盘复制有两种实现方式:
第一种方式是,首先将备节点的bitmap的所有的bit位全部置为1,然后基于该bitmap执行所述增量复制中提到的增量同步即可,当bitmap的所有bit位全部为0时,增量同步结束,代表主节点与该备节点之间的全盘复制结束;
第二种方式是,首先将备节点的bitmap的所有的bit位全部置为1,然后将各个数据块的hash值发送至备节点进行比较,如果hash值相同,则备节点返回确认信息将对应的bit位清零,如果hash值不同,则备节点通知主节点传输对应的数据块的数据,并在接收到数据时返回确认信息将对应的bit位清零;当bitmap的所有bit位全部为0时,代表主节点与该备节点之间的全盘复制结束。
冲突合并:
当主节点出现故障而数据没有完全同步到备节点,备节点接管应用时,备节点数据相对于主节点发生了变化,这时候主备节点各自保存了对方没有的数据,我们称之为裂脑(split-brain),这时候可以进行冲突合并。冲突合并相对于全盘复制而言,能够减少非常多的数据传输量。
在冲突合并中,首先用户需要选择丢弃哪边的数据,将哪台服务器作为主节点,然后主节点和备节点分别根据各自的DATA区的数据生成bitmap,主节点将双方的bitmap进行异或运算产生新的bitmap,然后基于新的bitmap执行所述增量复制中的增量同步即可。
可见,冲突合并和全盘复制实质上最终都转化为了增量复制。
从上分析可见,增量复制以及全盘复制是要占用大量资源的,如果每次掉线重新握手都采用全盘复制,则无疑增加了主节点的业务持续时间,增加了主备节点之间的数据传输量,大大延长了应用恢复所需要的时间。而在这些复制模式里,只有顺序复制才能保证数据的完整性,只有完整的数据才是可以被应用访问和使用的。所以应该尽可能多的进行顺序复制,减少其他几种复制的出现概率,以降低容灾数据不可用的概率。
为此,本发明在双方握手时,交换元数据信息(Primary Info,以下简称PI),PI包括以下字段:
uuid,为一个整数,由当前时间参数+随机数生成,它可以唯一标识一个节点的一次变成主节点的过程。
id,用于唯一标识当前的主节点的ID(每个节点都有一个绑定的唯一的ID)。
seq,用于记录当前写入数据的序列号,且在写入的数据为增量复制中的增量数据时,seq为零。
每个节点上保存两个PI,一个是本地主节点信息(Local Primary Info,以下简称LocalPI)、另一个是前次主节点信息(Last Primary Info,以下简称LastPI)。
LocalPI:当一个节点角色从备节点变成主节点时,他会产生一个LocalPI信息,保存生成的uuid,id为该节点的ID,seq为1。当有新的数据写入时,更新当前的seq(每写入一个数据,seq加1)。当一个节点从主节点变成备节点并开始接收其他主节点传输的数据时,将LocalPI清空。
LastPI:当一个节点作为备节点并接收其他主节点传输的数据时,保存对应的主节点的LocalPI中的uuid、ID和、seq到自身的LastPI的相应字段中,并在接收到新的数据时更新LastPI的seq。
步骤S2中,主节点通过对比备节点的LocalPI和LastPI,即可选择四种复制模式中的一种,参考图2:
当一个备节点A和一个主节点B进行连接握手后,备节点A与主节点B交互各自的PI信息(各自的LocalPI和LastPI),主节点B对比自身的两个PI信息(B.LocalPI,B.LastPI)与备节点A的两个PI信息(A.LocalPI,A.LastPI),判断将和备节点A采用何种复制模式,具体包括:
S21、判断备节点的本地主节点信息(A.LocalPI)是否非空,如果不是,则进入步骤S22,如果是,则进入步骤S23;
S22、即A.LocalPI非空,A.LocalPI非空表明节点A在上次关机时作为主节点存在,那么有以下几种情况:
第一种情况:A.localPI.(uuid,id,seq)=B.LastPI.(uuid,id,seq),即备节点的本地主节点信息与主节点的前次主节点信息的所有字段均相等,这种情况表明,节点A在角色变换前是节点B的主节点,且两节点数据一致。这时候节点A、B之间可以进行顺序复制。
第二种情况:A.LocalPI.(uuid,id)=B.LastPI.(uuid,id)或者A.LastPI.(uuid,id)=B.LocalPI.(uuid,id)或者A.lastPI.(uuid,id,seq)=B.lastPI.(uuid,id,seq),即备节点的本地主节点信息与主节点的前次主节点信息的UUID和id两个字段相等、或者备节点的前次主节点信息与主节点的本地主节点信息的UUID和id两个字段相等、或者备节点的前次主节点信息与主节点的前次主节点信息的所有字段均相等。这种情况表明,节点B在变成主节点以节点A作为主节点,或者节点A在变成主节点之前以节点B作为主节点,或者节点A、B拥有共同的主节点且在角色转变时的数据一致。这时,节点A、B应该是发生了裂脑,从而两节点可以进行冲突合并。
除去上述两种情况以外的其他情况采用全盘复制。
S23、即A.LocalPI为空,此时存在以下情况:
A.lastPI.(uuid,id)=B.localPI.(uuid,id)或A.lastPI.(uuid,id,seq)=B.lastPI(uuid,id,seq),即备节点的前次主节点信息与主节点的本地主节点信息的uuid和id两个字段相等、或者备节点的前次主节点信息与主节点的前次主节点信息的所有字段均相等。这种情况表明,节点A一直以节点B为主节点或者节点A、B曾经拥有共同的主节点,且在节点B角色转变时的数据一致,这时候节点A、B之间可以进行正常的顺序复制或者增量复制,取决于A的seq值(或者也可以通过判断节点B上对于节点A的bitmap是否非0实现),如果备节点A的seq值为零或者节点B上对于节点A的bitmap非零(A.lastPI.seq为0或者B.bitmap非0),则主节点与备节点之间采用增量复制,如果备节点A的seq值非零或者节点B上对于节点A的bitmap为零(A.lastPI.seq为0或者B.bitmap为0),则主节点与备节点之间采用顺序复制。
除去上述情况以外的其他情况采用全盘复制。
通过上面的握手判定方式,能够在集群内节点计划内或计划外角色转变时自动进行判别采用何种数据复制模式。例如下列场景:
1)、A、B两节点计划内切换主备,A从主节点变成备节点,B从备节点变成主节点,这时候A、B的PI信息满足步骤S22中的第一种情况,两者可以进行正常的顺序复制。
2)、A、B、C三节点,A为主异常关机,这时候B如果作为主节点接管应用,那么可以比较C.lastPI(uuid,id,seq)是否等于B.lastPI(uuid,id,seq),如果相等,那么他们可以顺序同步,如果不等,则只能进行全盘复制。
优选的,在顺序复制的过程中,如果尾指标指向最小的头指标所指向的数据块的上一个数据块,则停止对该最小的头指标所对应的备节点的顺序复制,根据该最小的头指标与尾指标之间的数据生成该最小的头指标所对应的备节点的数据增量位图保存在DBM中,并将该最小的头指标前移至尾指标的位置,在合适的时候(用户干预或者上层集群管理软件自动判断)对该备节点进行增量同步。最小的头指标的移动,相当于为BWR腾出了空间,这样主机数据就可以继续写入。
另外,针对现有技术中在进行增量复制的时候有新的数据写入时都会重新产生一个bitmap带来的备机数据一直处于不完整的状态的问题。本发明做了如下改进:
如果主节点在增量复制结束前写入新的数据,并不将BWR数据立马转换成bitmap,而是依然保存在BWR中,在写入数据的同时进行增量同步,等待本轮增量复制结束后,再根据备节点的头指标与主节点的头指标之间的数据生成新的bitmap,并基于新的bitmap开始下一轮的增量复制。因此,这段数据增量同步完成后,备节点的数据就处于完整的状态。当然,这时候增量同步有可能也会导致BWR满,此时中止增量同步,并重新生成bitmap即可。
综上所述,本发明在节点之间重新握手时,通过交换各自的元数据信息判断采用何种复制模式进行数据传输,能有效降低主备节点进行全盘复制的概率,减少主备节点的数据传输量,大大的缩短容灾中应用恢复所需要的时间,减少备机数据不完整的时间,降低因为备机数据不完整而造成容灾数据不可用的风险;进一步地,在进行增量同步时,主节点若写入数据并不立马更新数据增量位图,而是等待本轮增量复制结束后,将备节点的头指标与主节点的头指标之间的数据转化为数据增量位图数据后再次进行增量同步,如此,在增量复制完成后备节点数据完整性能得到保障,减少增量复制时对上层应用性能的损失。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (9)
1.一种网络容灾系统的数据传输方法,所述容灾系统包括至少两个节点,所述至少两个节点分为一个主节点和至少一个备节点,其特征在于,每个节点存储有元数据信息,所述元数据信息包括该节点上一次进行输出传输过程中涉及到的主节点的信息以及前次写入数据的信息,
所述方法包括:
S1、每个备节点与主节点连接握手,并交换各自的元数据信息;
S2、针对每个备节点,主节点将自身的元数据信息与该备节点的元数据信息进行比较,确定四种复制模式中的一种实现主节点与该备节点之间的数据传输;其中,所述四种复制模式包括为顺序复制、增量复制、全盘复制、冲突合并;
其中,所述元数据信息包括本地主节点信息和前次主节点信息,所述本地主节点信息和前次主节点信息均包括以下字段:
uuid,用于唯一标识一个节点的一次变成主节点的过程;
id,用于唯一标识当前的主节点;
seq,用于记录节点当前写入数据的序列号,且在写入的数据为增量复制中的增量数据时,seq为零。
2.根据权利要求1所述的网络容灾系统的数据传输方法,其特征在于,
当一个节点从备节点变成主节点时产生所述本地主节点信息,当一个节点从主节点变成备节点并开始接收其他主节点传输的数据时,将所述本地主节点信息清空;
当一个节点作为备节点并接受其他主节点传输的数据时产生所述前次主节点信息,该前次主节点信息的uuid、id和seq被设置为该其他主节点的本地主节点信息的uuid、id和seq,并在接收到新的数据时更新前次主节点信息的seq的值。
3.根据权利要求2所述的网络容灾系统的数据传输方法,其特征在于,所述步骤S2包括:
S21、判断备节点的本地主节点信息是否非空,如果不是,则进入步骤S22,如果是,则进入步骤S23;
S22、如果备节点的本地主节点信息与主节点的前次主节点信息的所有字段均相等,则主节点与备节点之间采用顺序复制;如果备节点的本地主节点信息与主节点的前次主节点信息的UUID和id两个字段相等、或者备节点的前次主节点信息与主节点的本地主节点信息的UUID和id两个字段相等、或者备节点的前次主节点信息与主节点的前次主节点信息的所有字段均相等,则主节点与备节点之间进行冲突合并;其他情况采用全盘复制,结束;
S23、如果备节点的前次主节点信息与主节点的本地主节点信息的UUID和id两个字段相等、或者备节点的前次主节点信息与主节点的前次主节点信息的所有字段均相等,则判断备节点的前次主节点信息的seq字段是否为零,如果是,则主节点与备节点之间采用增量复制,如果不是,则主节点与备节点之间采用顺序复制;其他情况采用全盘复制,结束。
4.根据权利要求1所述的网络容灾系统的数据传输方法,其特征在于,每个节点均包括后端数据设备和磁盘缓冲队列,所述磁盘缓冲队列用于顺序存储外部写入的数据,并通过写操作将数据写入本地的后端数据设备的数据块,所述磁盘缓冲队列还存储有与各个节点绑定的多个数据增量位图,所述数据增量位图记录有主节点所有写操作的数据块的位置;
所述顺序复制包括:主节点将磁盘缓冲队列中的数据依次发往备节点;
所述增量复制包括:主节点将备节点的数据增量位图中所指定的后端数据设备的数据块的数据发往备节点。
5.根据权利要求4所述的网络容灾系统的数据传输方法,其特征在于,所述磁盘缓冲队列中包括Meta区、DBM区和DATA区,所述Meta区存储有所述元数据信息、一个尾指标和与各个节点绑定的多个头指标;所述DBM区存储有所述的多个数据增量位图;所述DATA区包括多个数据块,用于顺序存储外部写入的数据;
所述数据增量位图包括多个bit位,每一个bit位与后端数据设备中的一个数据块对应,如果一个bit位被置为1,则表示该bit位对应的数据块的数据没有备份到相应的备节点,如果一个bit位被置为0,则表示该bit位对应的数据块的数据备份到相应的备节点;
当DATA区的一个数据块写入数据时,所述尾指标前移一位;当DATA区的一个数据块的数据写入到主节点的后端数据设备时,主节点的头指标前移一位。
6.根据权利要求5所述的网络容灾系统的数据传输方法,其特征在于,如果主节点在增量复制结束前写入新的数据,则等待本轮增量复制结束后,根据备节点的头指标与主节点的头指标之间的数据生成新的数据增量位图,并基于新的数据增量位图开始下一轮的增量复制。
7.根据权利要求6所述的网络容灾系统的数据传输方法,其特征在于,所述的根据备节点的头指标与主节点的头指标之间的数据生成新的数据增量位图包括:在该备节点的数据增量位图中,将备节点的头指标至主节点的头指标之间的数据块所对应的bit位全部置为1,再将备节点的头指标前移至主节点的头指标的位置。
8.根据权利要求5所述的网络容灾系统的数据传输方法,其特征在于,
所述顺序复制为:主节点将Meta区所存储的备节点的头指标所对应的DATA区的数据块中的数据发往备节点,且在收到备节点返回的确认信息后将备节点的头指标前移一位,当备节点的头指标与主节点的头指标所指向的数据块相同时,主节点与该备节点之间的顺序复制结束;
所述增量复制为:主节点在DBM区找到备节点的数据增量位图,将数据增量位图中的数值为1的bit位所对应的数据块的数据发送到备节点,并在接收到备节点返回的确认信息后将对应的bit位清零,当数据增量位图的所有bit位全部为0时,主节点与该备节点之间的增量复制结束;
所述全盘复制为:主节点将备节点的数据增量位图的所有的bit位全部置为1;基于该数据增量位图执行所述增量复制,或者将各个数据块的hash值发送至备节点进行比较,如果hash值相同,则备节点返回确认信息将对应的bit位清零,如果hash值不同,则备节点通知主节点传输对应的数据块的数据,并在接收到数据时返回确认信息将对应的bit位清零;当数据增量位图的所有bit位全部为0时,主节点与该备节点之间的全盘复制结束;
所述冲突合并为:主节点和备节点分别根据各自的DATA区的数据生成数据增量位图,主节点将双方的数据增量位图进行异或运算产生新的数据增量位图,然后基于新的数据增量位图执行所述增量复制。
9.根据权利要求5所述的网络容灾系统的数据传输方法,其特征在于,在顺序复制的过程中,如果尾指标指向最小的头指标所指向的数据块的上一个数据块,则停止对该最小的头指标所对应的备节点的顺序复制,根据该最小的头指标与尾指标之间的数据生成该最小的头指标所对应的备节点的数据增量位图,并将该最小的头指标前移至尾指标的位置,且将主节点与该最小的头指标所对应的备节点的复制模式切换到增量复制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510501210.3A CN105049258B (zh) | 2015-08-14 | 2015-08-14 | 网络容灾系统的数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510501210.3A CN105049258B (zh) | 2015-08-14 | 2015-08-14 | 网络容灾系统的数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105049258A CN105049258A (zh) | 2015-11-11 |
CN105049258B true CN105049258B (zh) | 2019-02-26 |
Family
ID=54455480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510501210.3A Active CN105049258B (zh) | 2015-08-14 | 2015-08-14 | 网络容灾系统的数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105049258B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105550230B (zh) * | 2015-12-07 | 2019-07-23 | 北京奇虎科技有限公司 | 分布式存储系统节点故障的侦测方法和装置 |
CN105550229B (zh) * | 2015-12-07 | 2019-05-03 | 北京奇虎科技有限公司 | 分布式存储系统数据修复的方法和装置 |
EP3319258B1 (en) | 2015-12-23 | 2019-11-27 | Huawei Technologies Co., Ltd. | Service take-over method and storage device, and service take-over apparatus |
CN106936641B (zh) * | 2017-03-27 | 2019-10-29 | 迈普通信技术股份有限公司 | 表项管理方法和系统 |
CN108984106B (zh) * | 2017-06-02 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 用于数据复制切换的方法和设备 |
CN108984105B (zh) | 2017-06-02 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 对网络存储设备中的复制任务进行分配的方法和设备 |
CN108881452B (zh) * | 2018-06-27 | 2021-11-16 | 咪咕文化科技有限公司 | 一种数据同步的方法、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1859171A (zh) * | 2005-12-02 | 2006-11-08 | 华为技术有限公司 | 一种网络设备数据管理方法 |
CN1862502A (zh) * | 2006-02-14 | 2006-11-15 | 华为技术有限公司 | 实现主备节点间数据备份的方法和系统 |
US7231502B2 (en) * | 2004-02-04 | 2007-06-12 | Falcon Stor Software, Inc. | Method and system for storing data |
CN101110608A (zh) * | 2007-08-23 | 2008-01-23 | 华为技术有限公司 | 一种主备板数据检测的方法、系统和装置 |
CN101183990A (zh) * | 2007-12-11 | 2008-05-21 | 华为技术有限公司 | 数据备份方法与应用处理系统 |
CN101465768A (zh) * | 2009-01-12 | 2009-06-24 | 上海及第熊软件科技有限公司 | 一种实现网站容灾容错运行的方法与系统 |
US8225059B2 (en) * | 2009-07-30 | 2012-07-17 | Hitachi, Ltd. | Remote copy system and remote copy control method |
-
2015
- 2015-08-14 CN CN201510501210.3A patent/CN105049258B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7231502B2 (en) * | 2004-02-04 | 2007-06-12 | Falcon Stor Software, Inc. | Method and system for storing data |
CN1859171A (zh) * | 2005-12-02 | 2006-11-08 | 华为技术有限公司 | 一种网络设备数据管理方法 |
CN1862502A (zh) * | 2006-02-14 | 2006-11-15 | 华为技术有限公司 | 实现主备节点间数据备份的方法和系统 |
CN101110608A (zh) * | 2007-08-23 | 2008-01-23 | 华为技术有限公司 | 一种主备板数据检测的方法、系统和装置 |
CN101183990A (zh) * | 2007-12-11 | 2008-05-21 | 华为技术有限公司 | 数据备份方法与应用处理系统 |
CN101465768A (zh) * | 2009-01-12 | 2009-06-24 | 上海及第熊软件科技有限公司 | 一种实现网站容灾容错运行的方法与系统 |
US8225059B2 (en) * | 2009-07-30 | 2012-07-17 | Hitachi, Ltd. | Remote copy system and remote copy control method |
Also Published As
Publication number | Publication date |
---|---|
CN105049258A (zh) | 2015-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105049258B (zh) | 网络容灾系统的数据传输方法 | |
US6950915B2 (en) | Data storage subsystem | |
EP1569120B1 (en) | Computer system for recovering data based on priority of the data | |
US7194487B1 (en) | System and method for recording the order of a change caused by restoring a primary volume during ongoing replication of the primary volume | |
US7941622B2 (en) | Point in time remote copy for multiple sites | |
US7694177B2 (en) | Method and system for resynchronizing data between a primary and mirror data storage system | |
CN100383749C (zh) | 远程复制方法及远程复制系统 | |
US20020078296A1 (en) | Method and apparatus for resynchronizing paired volumes via communication line | |
US8285824B2 (en) | Storage system and data replication method that refuses one or more requests for changing the first logical configuration information until the first storage apparatus and second storage apparatus are synchronized | |
US20030074600A1 (en) | Data backup/recovery system | |
CN110807064B (zh) | Rac分布式数据库集群系统中的数据恢复装置 | |
WO2011110542A1 (en) | Buffer disk in flashcopy cascade | |
JP2004334574A (ja) | ストレージの運用管理プログラム、運用管理方法及び管理計算機 | |
JP2005071119A (ja) | 系切替方法、レプリカ作成方法、及びディスク装置 | |
JP2007249776A (ja) | データベース複製プログラム、データベース複製装置およびデータベース複製方法 | |
JP2007241486A (ja) | 記憶装置システム | |
US8527454B2 (en) | Data replication using a shared resource | |
US20070180308A1 (en) | System, method and circuit for mirroring data | |
CN109062727B (zh) | 一种数据同步系统及方法 | |
EP3579501A1 (en) | Message transmission method and device in cluster file system | |
CN105988901A (zh) | 数据复制方法及存储系统 | |
CN110121694A (zh) | 一种日志管理方法、服务器和数据库系统 | |
CN111158955A (zh) | 一种基于卷复制的高可用系统以及多服务器数据同步方法 | |
US20150195167A1 (en) | Availability device, storage area network system with availability device and methods for operation thereof | |
US20060259722A1 (en) | Remote copy system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |