FlashCopy 映射

FlashCopy 功能会在目标卷上创建源卷上所存储数据的时间点拷贝。在基本方式下,FlashCopy 功能会在映射中的目标卷上创建源卷内容的拷贝。 该功能在映射中将源卷和目标卷关联起来。 如果目标卷上存在数据,那么该数据将替换为拷贝的数据。

FlashCopy® 功能会在启动时为卷生成即时拷贝。要创建卷的即时拷贝,必须首先在源卷(被拷贝的磁盘)和目标卷(接收拷贝的磁盘)之间创建映射。 源和目标卷的大小必须相等。

FlashCopy 映射可定义用于在源卷和目标卷之间拷贝数据的关系。在系统中的任何两个卷之间都可以创建映射。 这两个卷不必在同一个 I/O 组或池中。当 FlashCopy 操作启动时,将由源卷构成一个检查点。启动操作发生时,不会拷贝任何数据。 相反,检查点创建一个位图,表示尚未拷贝源卷的任何部分。 位图中的每个位都表示源卷的一个区域。 每个区域都被称为一个颗粒在对目标卷执行读操作时,位图将用于确定是否已拷贝颗粒。 如果已拷贝颗粒,那么将从目标卷读取数据。 如果未拷贝颗粒,那么将从源卷读取数据。

尽管很难为不断更新的数据集生成一致拷贝,但是时间点复制技术有助于解决这一问题。 如果未使用时间点技术来创建数据集复制,而该数据集又在拷贝操作期间发生了更改,那么得到的复制可能会包含不一致的数据。 例如,如果对象引用的拷贝要早于对象本身的拷贝,而该对象又在拷贝之前发生了移动,那么拷贝将包含位于新位置的引用对象,但是拷贝的引用仍将指向先前的位置。 也可以向 FlashCopy 映射指定后台拷贝和清除速率,以控制将更新传播到远程系统的速率。 FlashCopy 映射拷贝速率值在 128 KBps 到 2 GBps 之间,并且可在 FlashCopy 映射处于任何状态时进行更改。

递增 FlashCopy 映射

在递增的 FlashCopy 中,初始映射会将源卷中的所有数据拷贝到目标卷中。 后续 FlashCopy 映射只会拷贝在初始 FlashCopy 后修改的数据,如Figure 1 所示。 此过程会缩短重新创建独立 FlashCopy 映像所需的时间。 只有在创建了 FlashCopy 映射之后,才能将 FlashCopy 映射定义为递增映射。

Figure 1. 差异的递增 FlashCopy
差异的递增 FlashCopy

FlashCopy 伙伴映射

您可以创建一个映射,以便为现有的递增 FlashCopy 映射制作镜像。 所配对的映射被称为伙伴。 一个映射只能有一个伙伴。 例如,如果卷 A 和卷 B 有两个映射(从卷 A 到卷 B 的映射 0 和从卷 B 到卷 A 的映射 1),那么映射 0 和映射 1 是伙伴。

递增 FlashCopy 映射可共享记录更改的元数据。 因此,如果镜像对(伙伴关系)中的某一映射是递增的,那么另一映射也会自动递增并保持递增,直到被删除。

级联 FlashCopy 映射

级联 FlashCopy 功能允许 FlashCopy 目标卷成为另一个 FlashCopy 映射的源卷,如Figure 2 所示。

Figure 2. 级联 FlashCopy 卷
级联 FlashCopy 卷

级联中最多可存在 256 个映射。 如果使用级联映射和多目标映射,那么可以创建一个最多包含 256 个映射的树。

多目标 FlashCopy 映射

最多可从单个源卷中拷贝 256 个目标卷。 源和目标卷之间的每个关系由唯一的映射管理,这样一个卷最多可以成为 256 个映射中的源卷。

可以单独启动和停止一个源中的各个映射。 如果同一源中的多个映射处于活动状态(处于“正在拷贝”或“正在停止”状态),那么这些映射之间存在依赖关系。

例如,如果以下情况为真,那么映射 A 依赖于映射 B:
  • 映射 A 和映射 B 都具有相同的源卷。
  • 映射 A 和映射 B 都处于“正在拷贝”或“正在停止”状态。
  • 映射 B 的启动时间晚于映射 A。
    Note: 如果两个映射在同一个一致性组中并在同一时间启动,那么会在启动该一致性组时在内部决定依赖关系的顺序。
  • 由于映射的拷贝进度小于 100,因此映射 A 没有源的完整拷贝。
  • 由于映射的拷贝进度小于 100,因此不存在来自启动时间早于 A 但晚于 B 的同一源且具有该源的完整拷贝的映射。

另如,如果卷 A 所属的映射依赖于目标卷 B 所属的映射,那么目标卷 A 依赖于目标卷 B。 来自源卷的最近启动的映射的目标卷依赖于源卷,直至创建了该源的完整拷贝(进度为 100%)。

清除速率、拷贝速率和自动删除

创建映射时,您可以指定清除速率。 清除速率用于控制将数据从映射的目标卷拷贝到是目标卷的最新拷贝或是源卷的下一个最旧拷贝的映射的目标卷的速率。 清除速率可用于以下情况:
  • 映射处于“正在停止”状态。
  • 映射处于“正在拷贝”状态,且拷贝率为 0。
  • 映射处于“正在拷贝”状态,且后台拷贝已完成。

您可以使用清除速率来最大限度地缩短映射处于“正在停止”状态的时间。 如果映射尚未完成,那么当映射正在停止时,目标卷处于脱机状态。 目标卷会保持脱机,直到映射重新启动。

也可以在创建映射时指定拷贝速率。 当映射处于“正在拷贝”状态时,拷贝速率可确定指定给后台拷贝进程的优先级。 如果需要针对整个源卷的副本,以便能在删除映射后继续从目标卷对其进行访问,那么必须将源卷上的所有数据都拷贝到目标卷中。

清除速率和拷贝速率的缺省值都是 50。

如果映射已启动且拷贝速率大于零,那么会将未更改的数据拷贝到目标卷中。 更新位图以表明已拷贝数据。 一段时间以后,时间长度取决于由拷贝速率和卷大小所确定的优先级,并会将整个卷拷贝到目标中。 映射将恢复到“空闲或已拷贝”状态,此时您可以随时重新启动映射以在目标中创建新的拷贝。

当映射处于“正在拷贝”状态时,您可以将拷贝速率设置为零并将清除速率设置为非零值,以最大限度地缩短映射处于“正在停止”状态的时间。

如果使用了多个目标映射,那么映射可在将所有源数据都拷贝到目标(进度为 100%)后处于“正在拷贝”状态。 如果尚未 100% 拷贝较早启动且使用相同源磁盘的映射,那么会发生这种情况。

如果拷贝速率为零,那么只会将源上已更改的数据拷贝到目标中。 目标不会包含整个源的拷贝,除非源上的每个数据块都已被覆盖。 如果需要源的临时拷贝,您可以使用该拷贝速率。

您可以随时停止映射。 但是,除非目标卷已包含源卷的完整拷贝,否则当停止映射时,目标将变得不一致,且目标卷将脱机。 目标卷会保持脱机,直到映射重新启动。

您还可以设置 autodelete 属性。 如果将该属性设置为 on,那么当映射变为“空闲或已拷贝”状态且进度为 100% 时会自动删除映射。

FlashCopy 映射状态

在任何点,映射都会处于以下某一状态:
空闲或已拷贝
即使源和目标卷之间存在映射,这两者仍可充当独立卷。 已为源和目标卷启用读写高速缓存功能。

如果映射是递增的,而且后台拷贝已完成,那么映射仅记录源和目标卷之间的差异。 如果至映射被分配到的 I/O 组中的两个节点的连接已丢失,那么源和目标卷将脱机。

正在拷贝
正在进行拷贝。 已在源和目标卷上启用读写高速缓存功能。
已准备
已准备好启动映射。 目标卷处于联机状态,但无法访问。 目标卷无法执行读或写高速缓存操作。 当发生硬件错误时,SCSI 前端无法读写高速缓存。 如果映射是递增的,而且前一映射已完成,那么映射仅记录源和目标卷之间的差异。 如果至映射被分配到的 I/O 组中的两个节点的连接已丢失,那么源和目标卷将脱机。
正在准备
目标卷处于联机状态,但无法访问。 目标卷无法执行读或写高速缓存操作。 当发生硬件错误时,SCSI 前端无法读写高速缓存。 已从高速缓存中清空源卷的所有已更改写入数据。 已从高速缓存中丢弃目标卷的所有读取或写入数据。 如果映射是递增的,而且前一映射已完成,那么映射仅记录源和目标卷之间的差异。 如果至映射被分配到的 I/O 组中的两个节点的连接已丢失,那么源和目标卷将脱机。
已停止
映射已停止,因为您发出了停止命令或是出现了 I/O 错误。 目标卷处于脱机状态,其数据已丢失。 要访问目标卷,必须重新启动或删除映射。 可以访问源卷,而且已启用读写高速缓存功能。 如果映射是递增的,那么映射正在记录针对源卷的写操作。 如果至映射被分配到的 I/O 组中的两个节点的连接已丢失,那么源和目标卷将脱机。
正在停止
映射正在将数据拷贝到另一个映射中。
  • 如果后台拷贝进程已完成,那么在完成停止拷贝进程之后目标卷将联机。
  • 如果后台拷贝进程还未完成,那么会丢弃目标卷高速缓存中的数据。 运行停止拷贝进程时,目标卷将处于脱机状态。
可以对源卷进行 I/O 操作访问。
已暂挂
映射已启动,但还未完成。 对元数据的访问权已丢失,这会导致源和目标卷脱机。 对元数据的访问权恢复之后,映射将返回到 copying 或 stopping 状态,而且源和目标卷将返回到联机状态。 后台拷贝进程将恢复。 如果在暂挂前未清空数据并将数据写入源或目标卷,那么数据将位于高速缓存中,直至映射离开“已暂挂”状态。
注:
  1. 如果 FlashCopy 源卷脱机,那么依赖于该卷的所有 FlashCopy 目标卷也都会脱机。
  2. 如果 FlashCopy 目标卷脱机,那么依赖于该卷的所有 FlashCopy 目标卷也都会脱机。 源卷将保持联机。
启动映射前,必须先准备好。 准备映射可确保将高速缓存中的数据降级到磁盘中,而且磁盘上将存在源的一致拷贝。 高速缓存将进入完全写入方式。 已写入源的数据不会高速缓存到 Lenovo Storage V7000 节点中;会直接将其传递到 MDisk 中。 针对映射的准备操作需要一些时间才能完成;实际时间长度取决于源卷的大小。 必须与操作系统协调准备操作。 根据源卷上数据的类型,操作系统或应用程序软件可能也会对数据写操作进行高速缓存。 在准备和启动映射之前,必须先清空或同步文件系统和应用程序。
Note: 执行 startfcmapstartfcconsistgrp 命令需要一些时间。

如果您不希望使用一致性组,那么系统允许将映射视为独立的实体。 在这种情况下,映射被称为独立映射。 对于以这种方式配置的映射,请使用 prestartfcmapstartfcmap 命令,而不是 prestartfcconsistgrpsvctask startfcconsistgrp 命令。

FlashCopy 映射恢复

您可以启动目标卷是处于 idle_copiedstoppedcopying 状态的另一活动映射的源卷的映射。 如果映射处于 copying 状态,那么 startfcmapprestartfcmap 命令需要使用 restore 参数。 您可以使用相同 FlashCopy 映射或不同 FlashCopy 映射的目标来恢复 FlashCopy 源卷的内容,而无需等待映射成为空闲状态,且不会丢失任何其他 FlashCopy 目标卷的内容。

Veritas Volume Manager

对于 FlashCopy 目标卷,系统会在查询数据中设置一个位以指明这些映射状态,其中的目标卷可以是源卷的精确映像。 设置该位会使 Veritas Volume Manager 能够区分源和目标卷,并提供针对这两个卷的独立访问权。