tanxiniao
作者tanxiniao·2012-10-10 14:33
软件架构设计师·ibm

Flashcopy basic concept

字数 2980阅读 4603评论 3赞 1
Flashcopy的基本概念
1. Flashcopy从字面上来讲是“快照”,它是指对一个DS8000的某个逻辑卷,做一个基于某个时间点的数据的指针或者位图的拷贝,那拷贝过来之后呢,它后台还要进行一个叫background的一个真实的拷贝,这是flashcopy的一个功能。那么要想做flashcopy呢,首先必须创建两个卷,一个是source卷,一个是target卷,我们现在讲的flashcopy是standard flashcopy,就是标准的快照,这要求我们创建的这两个卷的大小要一样,或者target卷要比source卷大,不过一般情况下都不会创建比source大很多的target的卷,那么事先创建完两个volume之后呢,要在这两个卷创建flashcopy pair的关系,当这个关系创建好之后,它就是在某个时间点针对source卷来做一个快照,快照之后会生成一个bitmap, 在创建bitmap的时候,实际上source卷是要暂停一下IO,(红皮书上说是置成extended long busy condition)但是非常短,创建完bitmap之后,IO就恢复了。恢复完之后呢,实际上在后台就会有一个进程起来,会进行一个真实的数据块的迁移或者拷贝。这里要说明一下在system z的环境下,flashcopy不单是基于卷的,而且还是基于z的dataset这个级别的,这只是对于标准模式flashcopy,对于flashcopy SE它只指针对卷级别的快照。

如图8-2.png

这张图(如图8-3.png)是说当创建完bitmap之后,我们的源卷和target卷就都可以被IO访问了。

当我们创建了flashcopy这个关系以后,当中间在这个原卷或者这个目标卷发生读写操作的时候,它是怎么来处理的。首先这是一个时间轴,大家会看到在t0时间我有一个对原卷的读操作,原卷的读那不用说了,直接从原卷读。在tx的时候,它要把一个x值写进来,我们说再写进来的时候,首先我根据bitmap值去判断我在t0时刻X位置上的这个track是不是已经拷贝到target卷了,如果没有拷贝到,那么它会把t0的值先写到目标卷上去,更新bitmap,然后再把x写进来。同样的道理,在ty的时候也是一样的。在这个时候你会看到它把上面的值置成0,实际上是做了一个置换,不管它是0-1还是1-0,有个标记,表明我这个track是已经做了拷贝的。大家看,当我到了tz的这个时候,再写一个值z到这里,它会把ty拷贝过来吗?肯定不会,因为快照保存的是当时那个点的状态。
好,我们来读一下它的目标卷,目标卷在读的时候,它会先去找这个bitmap,它在读的时候发现我这的值是1,说明我原卷没有发生改变,那这样的话我的指针直接指到原卷去读。如果我发现我这个bitmap已经做了修改以后,它直接从它的target卷里把数据读出来。
下面我们来看一下background copy的一个原理,当我发出创建Flashcopy的命令之后,实际上就会生成一个bitmap,马上就会生成这个指针或者位图,接下来source卷和target卷就马上恢复IO读写了。在后台会有一个进程,依照bitmap的顺序,不断地从source卷拷贝数据到target卷。这张图蓝色的这块就表示按照顺序,从source卷到target卷拷贝数据。除了这个之外呢,还会有COW的这种操作,也就是说呢,当我target卷按照顺序已经拷贝了这么多了,但是我底下那些没有拷过去的数据块发生写更新了,这个时候,我要先将那些没有拷贝过去的数据拷贝到target卷,更新我的bitmap,然后再在原卷覆盖写。所以说background copy既有后台拷贝的这个动作又结合COW这种方式。当我bitmap里记录的track都从source卷拷贝到target卷纸盒,实际上我的这个flashcopy的关系就结束了,它会自动的进行终止,除非你自己设定persistence的参数。
图3.png


下面我们来看一下flashcopy的这种nocopy的操作。首先当我发出创建flashcopy的命令之后,也会生成一个bitmap,只不过后台没有一个进程,会按照bitmap的顺序做一个从头到尾的拷贝,它发生的只是一个COW的操作。也就是说,当我的原卷的某些track要被覆盖的情况下,我才会把这个track拷贝到target卷。所以说nocopy的这种方式拷贝的数据流要小于background copy。还有呢就是说nocopy这种方式,它的source卷和target卷flashcopy的关系维持的时间会比较长,因为它要等到原卷所有的track都发生更新,也就是说它把原卷的所有track都拷贝到target卷之后,他们的relationship才会终止。

Incremental FlashCopy
我们来看一下flashcopy的一个参数叫做Incremental的flashcopy,Incremental flashcopy从字面上来看,叫做增量的flashcopy的关系。这是针对一个我一个flashcopy建立完成之后,每隔一段时间都会再建立flashcopy的关系,这种情况下如果我的数据拷贝的频率比较频繁的时侯,我可以用增量的flashcopy的关系。增量的flashcopy是说我一个flashcopy关系建立好之后,不需要去删除它,它的关系可以是persistent.但是每隔一段时间,我就会刷新一下flashcopy的关系,但是我刷新之后,我传的数据块都是增量的改变的数据块,不是完全的数据的拷贝。所以叫做增量的flashcopy。
Resynchronize:重新同步,做刷新的动作,只有那些改变了的卷才会从A拷贝到B,它是指从上一次做flashcopy的时间点算起,到这次刷新的时间点为止,改变的数据的数据块拷贝到target卷。

Inband Flashcopy:
这种方式应用的场合比较特殊,是说我有两台ds8000,一个在本地,一个在远端,我在本地的ds8000上发出一条指令,使得我远端的ds8000的一个volume去创建flashcopy,这个的应用主要是在global mirror中。

FRR:

Fast Reverse restore是指对原先就存在的flashcopy的关系,执行这个命令,从target卷把数据块拷贝到source卷,使得source卷和target卷保持数据的同步,实现一个快速的方向颠倒的restore。它有四个参数:1.Record:这个实际就是change recording bitmap;2. Write inhibit to target:是说我target卷要写禁止,默认的情况下,我的target卷在创立完bitmap之后是可以接受写操作的,这里要进行写禁止;3. Persistent:是说我flashcopy建立完成之后要一直保持这个关系。4. Background nocopy:是说我在做快速的restore的时候是以nocopy的方式进行,而不是background的方式拷贝整个数据过去。这样能达到一个快速的颠倒原卷和目标卷的目的。


如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论3 条评论

user2012user2012研发工程师科技公司
2013-08-19 16:29
好。。。。
merryanginemerryangine系统管理员IBM
2013-03-23 20:29
很方便理解,收藏!
LINE2008LINE2008系统工程师北京北鹰吉成科技有限公司
2013-03-15 05:52
谢谢,讲的很好
Ctrl+Enter 发表

作者其他文章

  • Metro mirror
    评论 0 · 赞 3
  • DS8000 copy service for system z
    评论 0 · 赞 0
  • X社区推广