Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2029774
  • 博文数量: 593
  • 博客积分: 20034
  • 博客等级: 上将
  • 技术积分: 6779
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-06 14:07
文章分类

全部博文(593)

文章存档

2016年(1)

2011年(101)

2010年(80)

2009年(10)

2008年(102)

2007年(16)

2006年(283)

我的朋友

分类: 服务器与存储

2010-09-07 23:01:48

 Global Mirror简介

2004年中,IBM 推出了基于企业存储服务器ESS的全球镜像(Global Mirror, GM,也称为Async PPRC)容灾解决方案,该模式采用异步方式工作,同时利用同步的数据一致性优势和异步的性能/距离优势,并且采用一系列机制保证数据一致性,彻底解决了数据保护/距离/性能之间的矛盾。2004年底推出的DS8000/DS6000系列也支持Global Mirror, 同时,它们还可以同ESS一同交互操作,进行容灾。

该方案是一个三个卷的解决方案,即PPRC-XD A->B , FlashCopy B->C,即可保证卓越的异步容灾能力。同时我们也建议客户使用一个D卷,对于平时进行容灾测试、复制质量测试、备份、数据挖掘、应用测试等,它带来极大的方便和易用性,以及对生产卷最小的干扰性。


下面简单解释一下起工作方式(其中绿色 [第一组] 为生产站点磁盘,橙色[第二组] 和蓝色 [第三组] < FlashCopy目标盘C>为容灾站点磁盘):

1. 绿色和橙色磁盘之间进行PPRC-XD异步操作

2. 绿色磁盘组根据预先设置的时间,生成“一致性组”(Consistency Group),并记录状态

3. 采用PPRC-XD异步操作方式,将且只将“一致性组”记录下来的数据传递从绿色磁盘组传递到橙色磁盘组

4. 3完成后,立刻将橙色磁盘组数据FlashCopy到蓝色磁盘组,进行一致性数据保留

5. 4完成后,回到步骤1
由于有“一致性组”的保护,虽然采用异步方式,一旦每一个“一致性组”数据包传递成功的那一时刻,橙色磁盘组的数据是一致的;由于步骤4,蓝色磁盘组将能够保留最近一次“完全一致性”的数据。一旦出现灾难,客户丢失的是两次生成“一致性组”间隔之间的数据。

ESS/DS8000/DS6000能够每3~5秒生成一次“一致性组”,意味着客户即使采用异步方式,也有可能只丢失3~5秒的数据。一般的异步方式,客户会丢失几个小时以上的数据,并且操作十分繁琐。

2 Global Mirror规划

Global Mirror需要十分仔细地规划,详细内容请参考DS8000 Series Copy Services in Open Environments sg246788. 本文示例的环境及其拓扑图如下,我们用ESS和DS8000分别作为Global Mirror的源和目标,充分展示了Global Mirror的灵活性:


在本文中我们将使用DScli 方式来管理 copy service,我们在图中的Primary Server 和Secondary Server 上都安装了与存储微码相对应的DScli:

2.1 最低要求(微码及其他):
ESS800: 2.4.3.65
DS8000: 6.0.500.52(code bundle)
ESS/DS8000上都要有PPRC license以及fiber channel卡。不可以用ESCON卡。

2.2 在ESS和DS8000上建立相符的ID/PASSWORD
我们在ESS和DS8000建立一个具有admin组权限的ID/PASSWORD: admin/passw0rd
方法:
ESS800: GUI: ESS Specialist->User tab-> Modify Users
DS8000: DScli: mkuser -pw passw0rd -group admin admin

2.3 网络连接:

  • 安装了DScli的server必须跟ESS的copy service server 及DS8000的hmc有网络连接。

  • 生产中心和容灾中心之间的数据连接可以使用多种选择。如下的链路在以前的项目通过了测试,可供我们参考:

    FC-ATM连接方式:
    ESS-->CISCO9509-->CNT UltraEdge-->ATM(40Mb/s SVC 1000KM)
    -->CNT UltraEdge-->CISCO9509-->ESS
    FCIP连接方式:
    ESS-->CISCO9509-->FC/IP Module-->IP Router-->ATM(40Mb/s SVC 1000KM)
    -->IP Router-->FC/IP Module -->CISCO9509-->ESS
    i FCP连接方式:
    ESS-->SAN Router Eclipse 1620-->IP network-->SAN Router Eclipse 1620-->ESS

2.4 PPRC卷大小的考虑问题:

由于在ESS和DS8000中缺省状态下对GB的解释不同:
ESS方式:1GB=109 B=1,000,000,000B
DS缺省方式:1GB= 230 B=1,024*1024*1024B

所以我们要特别小心定义卷:

1.在ESS 上察看 ESS卷大小:
ESS Specialist->Storage Allocation->Open System Storage->Modify VolumesAssignments

2.以该卷大小为准定义在DS8000上卷的大小,使用特殊参数-type ess

dscli> mkfbvol -extpool p4 -cap 40 -type ess 0600-0605
Date/Time: 2006年10月24日 下午02时54分49秒 IBM DSCLI Version: 5.1.600.278 DS: IBM.2107-7547491
CMUC00025I mkfbvol: FB volume 0600 successfully created.
CMUC00025I mkfbvol: FB volume 0601 successfully created.
CMUC00025I mkfbvol: FB volume 0602 successfully created.
CMUC00025I mkfbvol: FB volume 0603 successfully created.
CMUC00025I mkfbvol: FB volume 0604 successfully created.
CMUC00025I mkfbvol: FB volume 0605 successfully created.


可以看到新定义的卷是在 cap (10^9B) 列中存在的。通过这种方式我们可以保证参加Global Mirror的卷大小是完全一致的。

以下是我们在生产中心ESS800和容灾中心DS8000的上LSS和A/B/C/D卷的定义,容量均为40G:

盘 LSS 卷标
A 16/17 1600 1700
B 06/07 0600 0700
C 06/07 0601 0701
D 06/07 0602 0702

3 配置ESS Copy Service Server
启动ESS Specialist:


点击Tools:

选择第二行:Define Copy Services active servers


点击Define Servers:
键入Copy Service ServerA和ServerB的地址:

再定义Client,点击Define Clients, 把所有参加Copy Service的所有ESS的cluster都定义为client, 其中Client1 ClusterBay0 Host Name等处不能乱填,要填入在ESS的hosts文件中定义的host名字(注意:当改变ESS cluster IP地址时,ESS /etc/hosts文件中会保留原来的IP地址的解析,一定要将其删除!):


在所有的ESS上分别定义以上的server和client,然后分别用下图中的Restart来重启Copy Services Server:


配置好后,我们可以通过DScli来调用Copy Services Server了.

4 Global Mirror场景

在本文中我们将探讨在Global Mirror中可能发生的各个阶段的任务。

4.1 建立Global Mirror环境
要建立Global Mirror环境,要做一下几步:
1. 确定PPRC link可用的光纤端口:

  • 下图展示了DS8000光纤卡端口对应ioport的定义,我们使用了I0030 和I0130作为 PPRC path:



  • 下图展示了ESS800光纤卡端口对应ioport的定义,我们使用了I0024 和I00A4作为 PPRC path:

2. 建立从LSSA到LSSB的PPRC PATH
3. 建立从卷A到卷B 的Global Copy 对
-建议等到从卷A到卷B的初始拷贝完成再进行下一步。
4. 建立从卷B到卷C 的FlashCopy 关系
5. 在每个LSS 上建立 Global Mirror session (要使用相同的session ID,这里我们设为1)
6. 在每个LSS 上把所有的卷A 加到 session 中
7. 启动 Global Mirror

4.2 清除Global Mirror环境

1. 终止 Global Mirror session
2. 从 Global Mirror session中删除所有原卷(A)
3. 关闭 Global Mirror session.
4. 在容灾中心DS8000上去掉 B 和 C 卷的FlashCopy关系
5. 在生产中心ESS800上去掉 A 和 B 卷的Global Copy 关系
6. 去掉 PPRC paths.

4.3 生产中心故障或维护,切换到容灾中心

(注意,灾难发生后,我们将用B 卷,如果测试用的D 卷 也是在同一台host上,请先将其umount 文件系统,varyoffvg等等,这样将会避免由于B和D都是来源于A,其pvid相同带来的问题)

1. 终止 Global Mirror session
2. 在容灾中心DS8000上去掉 B 到D 卷的FlashCopy关系(如果我们曾在演习中使用过B 到D 卷的 FlashCopy关系的话)
3. Fail over B -> A. (让B可以被host访问)
4. 检查B 卷的状态是否为revertible(验证 Consistency Group 是否有效)
通常情况下是不会出现Revertible的,所以不用采取额外的步骤,但是如果有的话,请并参照下表采取相应的步骤:

5. 在 B 卷上恢复一致性数据 (B 到 C的反向快速 FlashCopy-FRR ). 并等待它结束
6. 重新建立从卷B到卷C 的FlashCopy 关系(在上一步中会自动去掉卷B到卷C的关系)
7. 在容灾中心的卷B上开始恢复生产。

4.4 生产中心恢复,从容灾中心切换回来

现在将备份站点的数据复制回主站点。注意,如果是容灾演习,请停止主站点的host对A 卷的访问(如umount 文件系统,varyoffvg等等)。
1. 建立从LSSB到LSSA的PPRC PATH
2. Failback Global copy B->A(开始从B到A复制数据)
3. 查询状态:B->A 的增量数据(Global Copy first pass)是否拷贝完成
4. 停止容灾中心的卷B上的应用
5. 查询状态:B->A 的增量数据(Global Copy Out Of Sync Tracks)是否拷贝完成
6. 建立从LSSA到LSSB的PPRC PATH,如果它们不存在的话
7. Fail over A-> B. (让A可以被host访问)
8. Failback Global copy A->B(开始从A到B复制数据)
9. 启动 Global Mirror.
10.在生产中心启动应用

4.5 容灾演习并在容灾中心获得测试用的D卷

Global Mirror的机制允许你快速在如何在备份站点获得计划内的复本(D 卷),它是生产卷(A 卷)的一个快照,可以用来进行容灾测试、复制质量测试、备份、数据挖掘、应用测试等等。在我们的实践中充分体会到它的重要性和易用性,以及对生产卷最小的干扰性。在我们的测试环境中可以在1分多钟的时间内获得一组D 卷组,并恢复Global Mirror 的进程。
我们可以通过执行以下的任务达到此目的:
1. 查询Global Mirror环境并检查环境是否健康
2. 暂停 Global Mirror并等待暂停执行完毕
3. 暂停 Global Copy A -> B.
4. Fail over B -> A. (让B可以被host访问)
5. 在容灾中心去掉 B 到D 卷的FlashCopy关系(如果我们曾在演习中使用过B 到D 卷的FlashCopy关系的话)
6. 在 B 卷上恢复一致性数据 (B 到 C的反向快速 FlashCopy-FRR ).
7. 等待FRR结束
8. 重新建立从卷B到卷C 的FlashCopy 关系(在上一步中会自动去掉卷B到卷C的关系)
9. 重新建立从卷B到卷D 的FlashCopy 关系
10. Failback Global copy A->B(开始从A到B复制数据)
11.恢复 Global Mirror.
12. 在容灾中心的D卷上测试刚才获取的生产数据。

5 实现Global Mirror 的脚本

由于在上节说述各个场景中需要执行多个命令来达到所需要的结果,实现起来比较复杂,作者编写了脚本来实现这些任务,将实现Global Mirror的复杂程度大大降低。

脚本以Windows2003为例,在安装了DScli 后,只要把所附的脚本拷贝到DScli安装目录下的profile目录,并按Global Mirror规划要求修改相应的ESSsource.profile, DS8Ksource.profile, GMconfig.cmd定义文件后, 执行“GM_main_menu.CMD GMconfig.cmd”,GM_main_menu.CMD主程序将会根据选项调用所有其他程序完成Global Mirror环境的建立、清除、生产中心故障或维护,切换到容灾中心、生产中心恢复,从容灾中心回切、容灾演习并在容灾中心获得测试用的D卷等任务。

受篇幅所限,我们将相关脚本放置于IBM技术支持中心的网站上,请在以下网站上 搜索“Global Mirror”,可以找到本文相关的脚本。

阅读(2150) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~