董唯元 山穷水尽疑无路,柳暗花明又一村 最近有朋友要我帮忙出谋划策。他的客户向他提出了一个在我看来太过理想化的容灾需求,以至于初看起来,我根本不相信谁会为这样的系统投入哪怕一分钱的资金。可那位朋友坚持说,他的客户已经为这个需求划拨了款项,甚至都已经开始进行招标工作了。没办法,人家都已经要招标的项目了,说什么也得认真研究一下啊!谁让咱是个做乙方的呢! 那个需求基本上这样的: 在北京、上海和香港三地,已经建设有三个类似IDC机房一样的信息中心。每个信息中心里,都有花样繁多的主机和存储设备。主机平台有IBM AIX,Sun Solaris,HP-UX,Windows和Linux;磁盘阵列有IBM FastT和ESS,EMC CLARiiON和Symmetrix,HDS,还有一些叫不上名字的小品牌。现在客户希望在三地之间,建立起一种统一的数据管理机制,能够让这三个信息中心的数据最大可能的受到保护。简单的说,就是在三个复杂的系统之间进行跨平台的容灾。怎么样,你也觉得这需求有点夸张吧?!如果您还不是十分明白这个需求为什么难以实现,我们不妨更进一步的看看这里面的种种技术陷阱。 图1.常见容灾架构 目前的容灾系统,其工作原理想必大家都已经有所了解了,基本架构都是图1.中显示的模样。在存储系统方面,最为关键的部分就是在两地间建立主机无关的实时数据镜像机制。但是请注意,这里所说的“主机无关”是指数据拷贝过程不通过应用主机完成,数据流甚至不经过应用主机的总线。然而被镜像保护的数据本身,是要受主机的文件系统限制的。在这一点上,主机并不是无关的,相反是大大的相关。简单的说,把数据复制到远端的过程,可以不考虑主机,但是访问和利用已经复制到远端的数据,则需要充分而慎重的考虑主机和应用系统的数据特征。 为了不让那些费尽九牛二虎之力复制到远端的数据变成无用的0/1,磁盘阵列的容灾功能绝不仅仅是数据拷贝那么简单,而是要通过种种手段来保证被复制的数据经过长途跋涉之后,仍然是完全可靠和可用的。这在专业术语上,叫做保证数据一致性。在这一点上,目前还没有一定的规范可循,不同的磁盘阵列厂商具体采用的方法也就不尽相同。这也正是各个磁盘阵列厂商夸耀自己产品的重点所在。当然,这也造成了不同厂家的磁盘阵列产品之间,甚至同一厂家的不同系列产品之间,不能够实现主机无关的数据复制。 有了这些概念之后,让我们再回到前面说到的那个“理想化”需求。要想在三地之间建立主机无关的数据复制,首先就需要保证三地存储设备硬件的可连通。举例来说,如果某地正在使用一台EMC Symmetrix,那么另外两地为了能够与这台Symmetrix实现数据同步,也需要分别配置Symmetrix各一台。另外,由于文件系统的主机相关,三地在存储硬件连通的基础上,还需要保证主机和应用一致。就是说,如果刚才那台Symmetrix上连接的是Sun Solaris的操作系统并运行Oracle数据库,那么另外两地也需要配置Sun Solaris主机和Oracle数据库,才能访问被远程复制的数据。同理,再针对CLARiiON、ESS、FastT……等设备逐一建立容灾系统。 图2.基于磁盘阵列的数据同步将导致复杂的镜像关系 如果真的照此实现三地间的容灾,恐怕这个容灾系统本身就是一个大灾难了。可以想象一下,就算用户有花不完的银子来搭建这个系统,系统管理员每天要面对数不清的远程专用链接、卷组映射关系、应用切换和接管……如果再加上磁盘空间扩展和新增应用这些原本很简单的任务带来的麻烦,系统的正常工作时间应用不会超过20%,甚至是永远都无法正常工作。 那么,既然基于磁盘阵列的数据镜像不可行,我们能否考虑采用基于主机的数据复制呢?答案恐怕还是No!基于主机的数据复制虽然可以绕过磁盘阵列硬件级的连通性,即可以实现不同磁盘阵列间的数据同步,但是仍然无法避免主机操作系统多样性带来的复杂性。系统维护人员仍然需要面对各种各样的数据格式,逐一的建立镜像机制,这其实也是一个彻头彻尾的“Mission Impossible”。 图3.基于主机的数据复制仍然无法避免复杂性 说到这里,我们大致可以得出一个结论。那就是,传统的容灾技术比较适合单一大型机的应用环境,如传统的金融数据中心和电信数据中心等,而在复杂多变的开放式IDC或类似环境中,则显得非常笨拙无力。这也正是笔者在看到那个需求后大惊小怪的原因。然而,还是那句话,技术的进步真是难以预料。随着“911”之后,全球企业用户对容灾系统的关注,一批技术型公司已经把开放式环境中的容灾技术做得越来越像样了。这类技术最早是来自于虚拟存储的附加功能。 虚拟存储技术原本的目的,主要是提高存储系统的利于效率。通过虚拟存储的统一管理,各个前端主机可以透明的使用各个后端存储设备,甚至将数据分散存储在不同设备中。虚拟存储对后端磁盘阵列的管理,颇有点像阵列控制器对后端磁盘的管理。通过中间层次的虚拟化管理,前端应用主机就不必关心后端磁盘阵列的特殊性,而后端磁盘阵列的配置变换和扩展也可以尽可能的不涉及到前端主机。 随着虚拟存储的发展,出现了一些专门提供此类功能的设备,也出现了专门提供虚拟存储设备的产品供应商。然而,仅仅是透明管理磁盘阵列显然难以为用户的存储系统带来很高的附加值,于是乎这些厂商就不约而同的想到了虚拟存储的附加功能。数据快照和远程数据镜像,几乎是所有虚拟存储设备中首批装备的附加功能。借由虚拟存储设备中所提供的远程镜像功能,原则上讲,任何磁盘阵列产品都可以实现主机无关的远程数据复制了,而且完全不受厂商和产品系列的限制。 图4.虚拟存储设备所提供的远程镜像 虚拟存储所提供的远程镜像固然是不错,不过限制和不便依然存在。如果你需要如图4中所示的容灾方案,你就要首先把现有存储系统统统进行虚拟化管理。这显然有点不够方便,也不近人情。要知道,由于虚拟存储的额外管理层所带来的额外系统资源开销和额外故障点,很多用户在考虑虚拟存储时,态度都十分慎重。能不能把虚拟存储中的容灾功能剥离出来,单独应用呢?近来一些厂商在这一领域的新进展,给出了肯定的答案。几天前,笔者见到了美国一个小公司所发布的产品,那款产品就是专门用于容灾系统的设备,其基本工作原理就是将原来虚拟存储中的远程镜像功能剥离出来并进一步完善而成的。 图5.从虚拟存储中剥离出来的专业容灾设备 从图5上看,这种产品的使用模式仍然带有明显的“带外”虚拟存储的痕迹,但是与“带外”虚拟存储最大的不同就是,这一设备并不改变现有SAN的应用和访问模式,完全是“附加”在SAN上的一个功能模块。也就是说,对我们前面提到的那个需求来讲,每个数据中心只要配置一台这样的设备,再把三地间的远程物理链路搭建好,就一切OK啦!两小时内完成容灾系统的搭建,成本投入在十几万元人民币。这不是痴人说梦,不久的将来,就会在你我的眼前实现了。