zoukankan      html  css  js  c++  java
  • VERITAS容灾技术方案

    VERITAS公司优秀解决方案案例
    (作者:《中国计算机用户》 2001年06月19日 11:34)

    清除数据灾难——VERITAS容灾技术方案
    目前,Cluster(HA)的技术越来越成熟,Cluster的部署也越来越普及。Cluster技术确实解决了用户系统的高可用性问题,为业务的良性发展提供了稳定的基石。随着业务的发展,商业环境对服务供应商提出的要求也越来越苛刻,这必将使应用系统及其数据对高可用性的要求走上一个新的台阶。

    一个本地Cluster系统理论上可以提供99.99%以上的高系统可用性,但一旦发生火灾、自然灾害、人为破坏等意外事件,商家将如何应对呢?如果没有必要的准备和应对手段,这样的一次意外对商家来说将是灾难性的。这就要求我们防患于未然,尽早做好必要的准备,以提高自己的抗灾、应对意外的能力。

    对于IT部门来讲,要提高自己的抗灾能力,必要的技术就是建立起一个容灾系统。

    一个容灾系统的实现可以采用不同的技术,而容灾系统的划分,由其最终要达到的效果来决定。从其对系统的保护程度来分,我们可以将容灾系统分为数据容灾和应用容灾。

    所谓数据容灾,就是指建立一个异地的数据系统,该系统是本地关键应用数据的一个实时复制。在本地数据及整个应用系统出现灾难时,系统至少在异地保存有一份可用的关键业务的数据。该数据可以是与本地生产数据的完全实时复制,也可以比本地数据略微落后,但一定是可用的。

    所谓应用容灾,是在数据容灾的基础上,在异地建立一套完整的与本地生产系统相当的备份应用系统(可以是互为备份)。建立这样一个系统是相对比较复杂的,不仅需要一份可用的数据复制,还要有包括网络、主机、应用、甚至IP等资源,以及各资源之间的良好协调。

    这里的技术讨论,主要涉及数据容灾。应用容灾涉及的层面太广,由于没有必要的技术参数,这里暂不作讨论。

    数据容灾技术,又称为异地数据复制技术,按照其实现的技术方式来说,主要可以分为同步传输方式和异步传输方式(各厂商在技术用语上可能有所不同),另外,也有如"半同步"这样的方式。半同步传输方式基本与同步传输方式相同,只是在Read占I/O比重比较大时,相对同步传输方式,可以略微提高I/O的速度。而根据容灾的距离,数据容灾又可以分成远程数据容灾和近程数据容灾方式。下面,我们将主要按同步传输方式和异步传输方式对数据容灾展开讨论,其中也会涉及到远程容灾和近程容灾的概念,并作相应的分析。

    同步数据容灾

    有关同步数据容灾,在传统意义上讲,就是通过容灾软件,一般是指异地数据复制软件,将本地生产数据通过某种机制复制到异地。从广义上讲,同步数据容灾是指在异地建立起一套与本地数据实时同步的异地数据。

    随着新的光纤通道技术FC(Fiber Channel)和SAN技术的发展,在近程异地的同步数据容灾技术上,又多了一种新的、更加可靠的手段,那就是利用VERITAS Volume Manager的镜像功能。在异地通过光纤通道SAN实现异地镜像。

    采用同步传输方式进行异地数据容灾的过程包括:

    1.本地主机系统发出第一个I/O请求A;

    2.主机会对本地磁盘系统发出I/O请求;

    3.本地磁盘系统完成I/O操作,并通知本地主机"I/O完成";

    4.在完成本地I/O操作的同时,本地系统(主机或磁盘系统)会向异地系统发出I/O请求A;

    5.异地系统完全I/O操作,并通知本地系统"I/O完成";

    6.本地主机系统得到"I/O完成"的确认,然后,发出第二个I/O请求B。

    利用同步传输方式建立异地数据容灾,可以保证在本地系统出现灾难时,异地存在一份与本地数据完全一致的数据备份。但利用同步传输方式建立这样一个系统,必须考虑"性能"这个因素。

    采用同步数据传输方式时,从前面的描述来看,本地系统必须等到数据成功地写到异地系统,才能进行下一个I/O操作。一个I/O通过远程链路写到异地系统,涉及到3个技术参数:带宽、距离和中间设备及协议转换的时延。

    ◆带宽

    本地I/O的带宽是100MB/秒,在I/O流量很大的情况下,如果与远程的I/O带宽相对100MB/秒窄得多的话,将会明显拖慢生产系统的I/O,从而影响系统性能。

    ◆距离

    光和电波在线路上传输的速度是30万公里/秒,当距离很长时,这种线路上的延时将会变得很明显。一般说,光电在100米距离的线路上的延时对性能的影响可以忽略不计;在1000公里距离上,允许的最大I/O量在不存在带宽限制时,已经远远低于本地I/O的能力。

    ◆中间链路设备和协议转换的时延

    中间链路设备和协议转换的方式的不同,时延不同,对性能的影响也不同。在对性能影响的分析中,这个因数也应计算在内。

    异步数据容灾
    从前面的分析来看,同步数据容灾一般只能在较短距离内部署(10km-100km),大于这个距离,就没有实际应用价值了。因为即使在1000km距离上,4.5MB的速率足够将数据复制到异地,每个I/O的响应时间也会超过10ms,这种响应速度太慢。

    异步数据容灾主要针对的需求是线路带宽和距离能保证完成数据复制过程同时希望异地数据复制不影响生产系统的性能。考虑异步数据容灾,应该注意到以下几个技术条件和事实。

    1. 带宽必须能保证将本地生产数据基本上完全复制到异地容灾端,还要考虑距离对传输能力的影响。一般说,在1000公里范围内,一条带宽足够的线路能支持的I/O流量最大为120GB/天。

    2. 异地容灾端数据虽然落后,但必须保证该数据库内在的数据完整性(一致性)、可用性,否则,这种数据复制就没有应用价值了。

    3. 异地容灾端数据会比本地生产端数据落后一定时间,这个时间随采用的技术,带宽、距离、数据流特点的不同而不同。

    4. 异步容灾基本不影响本地系统性能。与同步传输方式相比,异步传输方式对带宽和距离的要求低很多,它只要求在某个时间段内能将数据全部复制到异地即可,同时异步传输方式也不会明显影响应用系统的性能。其缺点是在本地生产数据发生灾难时,异地系统上的数据可能是几分钟以前的数据,即最近几分钟内的交易会丢失。

    通过异步传输模式进行异地数据复制的技术包括基于主机逻辑卷的数据复制方式和基于磁盘系统I/O控制器的数据复制方式两种,而事实上,只有基于主机逻辑卷(Volume)、并采用Log技术作技术保障的数据复制方式,才是在应用上有实际意义的方式。而目前市场上的基于磁盘系统I/O控制器的数据复制方式,不能满足前面提到的保证异地容灾端数据(库)的完整性,所以这种方式是没有应用价值的。目前,基于磁盘系统的异步数据复制技术在跟踪未复制数据块时,使用"Bitmap(位图)"和"Timestamp(时间戳)"技术,这两种方式在本地生产数据突然发生灾难时,都不能保证异地容灾数据库的完整性。

    整个I/O和复制的过程如下:

    1.本地主机系统发出第一个I/O请求A到逻辑卷;

    2.逻辑卷对本地磁盘系统发出I/O请求;

    3.在往本地磁盘系统I/O的同时,逻辑卷向本地磁盘系统上的VVR Log发出相同的写请求;

    4.本地磁盘系统完成I/O操作;并通知逻辑卷"I/O完成"。VVR完成针对这个I/O的有关操作,并通知逻辑卷;

    5.逻辑卷向主机确认"I/O完成",然后,主机系统发出第二个I/O请求B。

    首先申明:针对这种方式,这里以VERITAS VVR为例,但并不表示所有基于主机进行复制的其它软件采用同样方式,也不保证其它软件是有应用价值的。

    VERITAS VVR (Volume Replicator)通过基于Volume和Log的复制技术,保证在任何时刻本地系统发生自然灾难时,在异地的数据仍是可用的。

    VERITAS VVR在异步模式下采用了Log技术来跟踪未及时复制的数据块,这个Log是一个先到先服务的堆栈,每一笔I/O处理都会首先被放进这个Log,并按到达先后顺序被复制到异地服务器系统。

    这里,跟踪未及时复制的数据块的Log技术是保证异地数据可用的必要条件。一个数据库的I/O是有严格顺序的,这个顺序是保证数据库完整性的必要条件,一个完整性被破坏的数据库一般是不可用的,比如根本无法启动、打开该数据库,且是无法修复的。本地数据库的完整性是由数据库本身来维护的。当一个数据库被实时复制到异地时,要保证异地数据库的完整性,必然保证在异地磁盘I/O上的I/O顺序和本地I/O顺序完全相同,否则,异地数据库的完整性就无法保证。

    VERITAS VVR采用的I/O控制机制是支持先到先服务的Log技术,因此,不管异地数据比本地数据落后多少时间,都能保证异地数据库数据的一致性。比如:本地系统在12:00时发生自然灾难,由于部分数据未被及时复制到异地,如有10分钟的数据未完成复制,那么在异地系统上存在11:50分钟以前的所有数据,且这个数据库是可用的。

    目前的基于磁盘系统的异地数据复制技术采用Bitmap技术和Timestamp技术,这两种技术都不能保证本地向异地复制数据的顺序严格和本地I/O的顺序相同,所以,这两种方式都不能保证异地数据库的完整性。

    Bitmap(位图)技术记录未被及时复制的数据块的方法是:对于每个数据块(如32KB)用一个Bit来对应,某一个Bit被置为"1"时,表示其对应的数据块已被修改过,正在等待处理(这里是等待被复制)。由此可以看出,当有一块以上的数据块未被及时复制时,系统并无法确认哪一块数据块应该先复制到异地,所以,系统将任选一块,即不按到达的时间先后进行复制。可以看出,这种方式不能根本保证异地数据库数据的完整性、一致性。

    Timestamp方式是对每个未及时传送的数据块盖上一个时间戳。从表面上看,由于时间戳的关系,好像能确定一个数据块被修改的时间顺序了。其实不然:当一个未被及时复制的数据块被第2次修改,并盖上新的时间戳时,数据复制的顺序就被破坏了。例如:

    现在有10块数据块未被复制,编号"1、2、3、4、5、6、7、8、9、10";这时,第3块数据被再次修改,并被盖上一个新的时间戳"11";这时,系统会按这样的次序进行复制:"1、2、(没有3)、4、5、6、7、8、9、10、11"。我们可以看到,在复制进行到"4-10"之间时,异地数据的完整性被破坏。

    事实上,在一个运行繁忙的系统中,出现这种情况的机率极高,甚至每时每刻都处在这种状态之下。所以,本着严格的、对系统可用性负责任的态度,我们认为"Timestamp"的技术虽然比Bitmap技术有一定优势,但实际上也无法保证异地数据的完整性和可用性。

    首先,Bitmap和Timestamp方式的技术弱点是没有log。作为磁盘系统内置的数据复制功能,传统的磁盘管理模式没有考虑在磁盘系统内部开辟出一个磁盘块给磁盘系统控制器本身使用,所以,磁盘系统无法采用log模式进行异步数据复制。

    其次,磁盘系统保留异步传输模式的目的是复制但不是容灾复制。数据复制的目的不仅仅是容灾。数据容灾要求两地时时保持连接,数据复制过程在任一时间都在进行(除非有线路或设备故障)。而非容灾性复制只要求在某一个时间段里将数据复制到异地,复制告一段落后(在某一时刻完全同步),复制工作会暂停。这种复制可能是为一个特殊目的只做一次,如在线业务迁移;也可能每天或每月追加一次。这样,在异地就会存在一份最大损失数据量为1天或1个月的生产数据复制品,其对数据的保障能力,如同磁盘备份。这种方式复制数据的目的包括:1)在异地保存一份备份数据(如同磁带备份异地保存);2)在线业务迁移,当信息中心或其中的一个服务要迁移到另一个地方,又希望少停机(实际上也可用磁带备份和恢复来实现);3)利用与磁盘快照技术结合,为异地开发中心提供一个与生产数据尽量相同的测试数据源。当然,也可用于其它可能的目的。

    综上所述,我们可以看出,虽然基于磁盘系统的异地数据复制功能有异步传输模式,但实际上并不支持异步数据容灾,只有像VERITAS Volume Replicator这样基于先进先出的Log技术的解决方案才真正支持异步数据容灾。

    容灾技术的必要补充
    数据容灾系统保证的是在本地磁盘系统因为如自然灾难等物理侵害造成不可恢复的磁盘系统物理损坏时,在异地仍然保存一份容灾数据。但不管采用何种数据容灾方式,由于异地数据和本地数据是完全同步或基本完全同步的,因此,当本地数据系统被人为破坏或因软件故障而破坏,数据库变成不可用的情况下,异地容灾数据会同时变成不可用的。

    为了保证在以上情况下,数据能够得到有效的恢复,可以通过在备份技术说明中提到的Rollback(Storage Rollback和Checkpoint Rollback)或者备份来实现。其中Rollback是比较有效的恢复手段。

    综上所述,一个有效的完整的容灾方案,必须包括多种技术手段的组合,才能完成,希望这份技术说明对每个用户在规划整个IT系统时有一定的参考价值。

  • 相关阅读:
    线程,委托和同步的技术理顺
    .Net RabbitMQ 初探
    Java学习,使用IDEA中碰见的问题(一)
    log4net 小记
    MVC 根据模板动态生成静态页面
    IIS 的负载均衡【IIS7.0以上才可以使用】---- Application Request Routing(ARR)
    asp.net forms 表单验证 实现跨域共享cookie(即SSO,单点登录(在二级域名下))
    SQL Server 的文件组和文件
    Base64 编码原理
    swfupload 大文件 批量上传
  • 原文地址:https://www.cnblogs.com/shined/p/2364518.html
Copyright © 2011-2022 走看看