最近有朋友要我帮忙出谋划策。他的客户向他提出了一个在我看来太过理想化的容灾需求,以至于初看起来,我根本不相信谁会为这样的系统投入哪怕一分钱的资金。可那位朋友坚持说,他的客户已经为这个需求划拨了款项,甚至都已经开始进行招标工作了。没办法,人家都已经要招标的项目了,说什么也得认真研究一下啊!谁让咱是个做乙方的呢!
那个需求基本上这样的:
在北京、上海和香港三地,已经建设有三个类似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%,甚至是永远都无法正常工作。


