FlashCopy 功能会在目标卷上创建源卷上所存储数据的时间点拷贝。在基本方式下,FlashCopy 功能会在映射中的目标卷上创建源卷内容的拷贝。 该功能在映射中将源卷和目标卷关联起来。 如果目标卷上存在数据,那么该数据将替换为拷贝的数据。
FlashCopy® 功能会在启动时为卷生成即时拷贝。要创建卷的即时拷贝,必须首先在源卷(被拷贝的磁盘)和目标卷(接收拷贝的磁盘)之间创建映射。 源和目标卷的大小必须相等。
FlashCopy 映射可定义用于在源卷和目标卷之间拷贝数据的关系。在系统中的任何两个卷之间都可以创建映射。 这两个卷不必在同一个 I/O 组或池中。当 FlashCopy 操作启动时,将由源卷构成一个检查点。启动操作发生时,不会拷贝任何数据。 相反,检查点创建一个位图,表示尚未拷贝源卷的任何部分。 位图中的每个位都表示源卷的一个区域。 每个区域都被称为一个颗粒。在对目标卷执行读操作时,位图将用于确定是否已拷贝颗粒。 如果已拷贝颗粒,那么将从目标卷读取数据。 如果未拷贝颗粒,那么将从源卷读取数据。
尽管很难为不断更新的数据集生成一致拷贝,但是时间点复制技术有助于解决这一问题。 如果未使用时间点技术来创建数据集复制,而该数据集又在拷贝操作期间发生了更改,那么得到的复制可能会包含不一致的数据。 例如,如果对象引用的拷贝要早于对象本身的拷贝,而该对象又在拷贝之前发生了移动,那么拷贝将包含位于新位置的引用对象,但是拷贝的引用仍将指向先前的位置。 也可以向 FlashCopy 映射指定后台拷贝和清除速率,以控制将更新传播到远程系统的速率。 FlashCopy 映射拷贝速率值在 128 KBps 到 2 GBps 之间,并且可在 FlashCopy 映射处于任何状态时进行更改。
在递增的 FlashCopy 中,初始映射会将源卷中的所有数据拷贝到目标卷中。 后续 FlashCopy 映射只会拷贝在初始 FlashCopy 后修改的数据,如Figure 1 所示。 此过程会缩短重新创建独立 FlashCopy 映像所需的时间。 只有在创建了 FlashCopy 映射之后,才能将 FlashCopy 映射定义为递增映射。
您可以创建一个映射,以便为现有的递增 FlashCopy 映射制作镜像。 所配对的映射被称为伙伴。 一个映射只能有一个伙伴。 例如,如果卷 A 和卷 B 有两个映射(从卷 A 到卷 B 的映射 0 和从卷 B 到卷 A 的映射 1),那么映射 0 和映射 1 是伙伴。
递增 FlashCopy 映射可共享记录更改的元数据。 因此,如果镜像对(伙伴关系)中的某一映射是递增的,那么另一映射也会自动递增并保持递增,直到被删除。
级联 FlashCopy 功能允许 FlashCopy 目标卷成为另一个 FlashCopy 映射的源卷,如Figure 2 所示。
级联中最多可存在 256 个映射。 如果使用级联映射和多目标映射,那么可以创建一个最多包含 256 个映射的树。
最多可从单个源卷中拷贝 256 个目标卷。 源和目标卷之间的每个关系由唯一的映射管理,这样一个卷最多可以成为 256 个映射中的源卷。
可以单独启动和停止一个源中的各个映射。 如果同一源中的多个映射处于活动状态(处于“正在拷贝”或“正在停止”状态),那么这些映射之间存在依赖关系。
另如,如果卷 A 所属的映射依赖于目标卷 B 所属的映射,那么目标卷 A 依赖于目标卷 B。 来自源卷的最近启动的映射的目标卷依赖于源卷,直至创建了该源的完整拷贝(进度为 100%)。
您可以使用清除速率来最大限度地缩短映射处于“正在停止”状态的时间。 如果映射尚未完成,那么当映射正在停止时,目标卷处于脱机状态。 目标卷会保持脱机,直到映射重新启动。
也可以在创建映射时指定拷贝速率。 当映射处于“正在拷贝”状态时,拷贝速率可确定指定给后台拷贝进程的优先级。 如果需要针对整个源卷的副本,以便能在删除映射后继续从目标卷对其进行访问,那么必须将源卷上的所有数据都拷贝到目标卷中。
清除速率和拷贝速率的缺省值都是 50。
如果映射已启动且拷贝速率大于零,那么会将未更改的数据拷贝到目标卷中。 更新位图以表明已拷贝数据。 一段时间以后,时间长度取决于由拷贝速率和卷大小所确定的优先级,并会将整个卷拷贝到目标中。 映射将恢复到“空闲或已拷贝”状态,此时您可以随时重新启动映射以在目标中创建新的拷贝。
当映射处于“正在拷贝”状态时,您可以将拷贝速率设置为零并将清除速率设置为非零值,以最大限度地缩短映射处于“正在停止”状态的时间。
如果使用了多个目标映射,那么映射可在将所有源数据都拷贝到目标(进度为 100%)后处于“正在拷贝”状态。 如果尚未 100% 拷贝较早启动且使用相同源磁盘的映射,那么会发生这种情况。
如果拷贝速率为零,那么只会将源上已更改的数据拷贝到目标中。 目标不会包含整个源的拷贝,除非源上的每个数据块都已被覆盖。 如果需要源的临时拷贝,您可以使用该拷贝速率。
您可以随时停止映射。 但是,除非目标卷已包含源卷的完整拷贝,否则当停止映射时,目标将变得不一致,且目标卷将脱机。 目标卷会保持脱机,直到映射重新启动。
您还可以设置 autodelete 属性。 如果将该属性设置为 on,那么当映射变为“空闲或已拷贝”状态且进度为 100% 时会自动删除映射。
如果映射是递增的,而且后台拷贝已完成,那么映射仅记录源和目标卷之间的差异。 如果至映射被分配到的 I/O 组中的两个节点的连接已丢失,那么源和目标卷将脱机。
如果您不希望使用一致性组,那么系统允许将映射视为独立的实体。 在这种情况下,映射被称为独立映射。 对于以这种方式配置的映射,请使用 prestartfcmap 和 startfcmap 命令,而不是 prestartfcconsistgrp 和 svctask startfcconsistgrp 命令。
您可以启动目标卷是处于 idle_copied、stopped 或 copying 状态的另一活动映射的源卷的映射。 如果映射处于 copying 状态,那么 startfcmap 和 prestartfcmap 命令需要使用 restore 参数。 您可以使用相同 FlashCopy 映射或不同 FlashCopy 映射的目标来恢复 FlashCopy 源卷的内容,而无需等待映射成为空闲状态,且不会丢失任何其他 FlashCopy 目标卷的内容。
对于 FlashCopy 目标卷,系统会在查询数据中设置一个位以指明这些映射状态,其中的目标卷可以是源卷的精确映像。 设置该位会使 Veritas Volume Manager 能够区分源和目标卷,并提供针对这两个卷的独立访问权。