Go to main content

Oracle® ZFS Storage Appliance 管理指南,发行版 OS8.8.x

退出打印视图

更新时间: 2021 年 8 月
 
 

级联复制

级联复制允许通过在复制数据包上配置复制操作来复制已复制的数据。可以在同一数据包上创建多个复制操作,以便将数据包复制到多个目标设备。

基本设置

基本的级联复制设置包含一个源、一个或多个中间目标以及一个最终目标。

以下级联复制示例包含源节点 A,在此节点的一个项目上设置了一个操作,以将其复制到节点 B 上的一个数据包。接着,节点 B 上创建了一个操作,以将此数据包复制到节点 C 上的另一个数据包,节点 C 中在此数据包上设置了一个操作,以将其复制到节点 D 上的一个数据包。这样,节点 B 和节点 C 就将副本从节点 A 级联到节点 D,如下图中所示。

image:图中显示级联复制示例配置

如下图中所示,源节点 A 的一个项目上设置了一个操作,以将其复制到节点 B 上的一个数据包。接着,节点 B 上创建了多个操作,以将此数据包复制到节点 C 和节点 D。这样,节点 B 就将副本从节点 A 级联到节点 C 和节点 D

image:图中显示节点 B 将副本从节点 A 级联到节点 C 和 D 的级联复制

仅直接从源接收复制更新的节点(在前面的示例中为节点 B)支持级联配置中的复制反转,在任何其他节点(节点 CD)上禁用反转。在级联复制设置中针对灾难恢复进行规划时,应考虑多目标反转。请参见多目标反转和以下各节中的“将 distant_target 属性用于管理反转”。

级联复制管理

管理级联复制包含两个任务:

  • 在复制数据包下创建操作

  • 配置级联复制调度表

在复制数据包下创建操作

与在项目下创建复制操作类似,可以在复制数据包下创建复制操作。下图显示了如何使用 BUI 在复制数据包下创建操作。

请注意,共享资源级复制不支持级联复制。不能在复制数据包中的共享资源下配置操作,也不能在因共享资源级复制而创建的数据包下配置操作。

image:图中显示使用 BUI 在复制数据包下创建操作

下图显示了如何使用 CLI 在复制数据包下创建操作。

image:图中显示使用 CLI 在复制数据包下创建操作

配置级联复制调度表

每个操作有两个调度表:

  • 配置为项目的一部分的操作上的调度表称为源调度表。

  • 配置为数据包的一部分的操作上的调度表称为级联调度表。

下图显示了如何使用 CLI 在复制操作上配置新级联调度表。

image:图中显示使用 CLI 在复制操作上配置新级联调度表

下图显示了如何使用 BUI 在复制操作上配置新级联调度表。

image:图中显示使用 BUI 在复制操作上配置新级联调度表

可以随时配置这两个调度表,但只有一个调度表生效,具体取决于配置操作的位置。如果由于复制反转或转换导致复制拓扑发生变化,则生效的调度表可能会变化。例如,在复制数据包上执行反转后,在反转的数据包中配置的操作现在配置在项目中,因此它们的源调度表变为有效。同样,在项目上执行复制转换后,过去在项目下配置的操作现在配置在数据包中,因此它们的级联调度表将有效。

下图显示了如何使用 CLI 查看生效的调度表。

image:图中显示如何使用 CLI 查看生效的调度表

下图显示了如何使用 BUI 查看生效的调度表。操作的最左侧调度表选项卡是生效的调度表。

image:图中显示如何使用 BUI 查看生效的调度表

在复制反转过程中创建新操作时,会保留源和级联调度表。请参见反转复制方向多目标反转

after_update 选项可用于级联调度表。设置此项后,将仅在传入更新完成后启动更新。

可以使用 update_cascade_delay 属性指定传入复制更新完成与传出级联更新启动之间的延迟。仅在选择了 after_update 选项时,此属性才有效。

可以按下图所示配置 after_update 选项和 update_cascade_delay 属性。

image:图中显示 CLI 中的设置选项

请注意,连续调度表选项不可用于数据包下的操作,级联复制操作不会创建新复制快照。从源提供新更新时,级联操作使用最新数据包快照向其目标执行复制更新。因此,在未先从源接收更新的情况下,在级联操作上执行更新没有任何效果;将设置成功更新状态,并将更新 last_try 属性。

将 distant_target 属性用于管理反转

在级联复制中,两个节点之间的远距离目标关系在本地目标和远距离目标之间有区别。在因执行复制反转或转换而发生拓扑转换后,distant_target 属性保留此关系。

以下配置方案说明了 distant_target 属性:

  1. 未设置 distant_target 属性且不存在任何多目标反转设置时。在这种情况下,在目标上执行反转时,并非所有操作都将保留。有关更多信息,请参见多目标反转。如下图中所示,节点 AB 不存在远距离目标关系,节点 B 也未配置为潜在源(操作 ABpotential_source=falsedistant_target=false)。

    image:图中显示未设置 distant_target 属性且不存在任何多目标反转设置

    A 发生故障并在 B 上执行反转时,不会创建要对 A{1..3} 执行的操作,如下图中所示。

    image:图中显示 A 发生故障并在 B 上执行反转
  2. 未设置 distant_target 属性但存在多目标反转设置时。在这种情况下,在潜在源上执行反转时,将创建要对多目标反转组中所有目标执行的操作。不存在远距离目标关系,因此在本地目标和远距离目标之间没有区别。节点 A 是源,节点 B 是潜在源,如下图中所示。节点 AB 不存在远距离目标关系(操作 ABpotential_source=truedistant_target=false)。

    image:图中显示未设置 distant_target 属性但存在多目标反转设置

    但是,当节点 A 发生故障并且在执行反转后节点 B 作为新源时,将创建要对 A{1..3} 执行的操作,如下图中所示。

    image:图中显示节点 A0 发生故障并且在反转后节点 B0 作为新源
  3. 设置了 distant_target 属性且存在多目标反转设置时。在这种情况下,在潜在源上执行反转时,不会创建要对远距离源本地的目标执行的操作。节点 A 是源,节点 B 是潜在源,如下图中所示。节点 AB 存在远距离目标关系(操作 ABpotential_source=truedistant_target=true)。

    image:图中显示设置了 distant_target 属性且存在多目标反转设置

    节点 A 发生故障并在节点 B 上执行反转后,节点 B 变为新源。但是,由于 AB 之间存在远距离目标关系,因此不会创建要对 A{1..3} 执行的操作。在 A 恢复后,它将其数据包级联到 A{1..3}

    image:图中显示节点 A 发生故障以及在节点 B 上执行反转后

下图显示了如何使用 CLI 配置远距离目标。

image:图中显示如何使用 CLI 配置远距离目标

下图显示了如何使用 BUI 配置远距离目标。

image:图中显示如何使用 BUI 配置远距离目标

建议在使用级联复制时,通过设置潜在源来配置多目标反转;否则,在执行多个复制反转后,可能无法恢复原始级联配置。此外,只有在设置了潜在源时才能设置远距离目标。有关更多信息,请参见多目标反转

故障情形

级联复制中单个节点发生故障可能会影响多个设备,甚至影响通过复制关系彼此连接的多个数据中心。尽管对级联复制拓扑没有任何限制,但仍存在以下典型故障情形:

  • 原始源故障

  • 中间目标故障

  • 源站点故障

原始源故障

在此情形下,级联链的源发生故障。从此故障恢复需要源上有初始多目标反转配置。通过执行复制反转在目标上启动该过程。反转的目标变为源,并继续向所有其他初始目标和初始源发送增量更新。有关进一步详细信息,请参见多目标反转

如下图中所示,A 是源,A1 是潜在源。A 复制到 A1B。接着,B 复制到 CD,源 A 发生故障。

image:图中显示源 A 发生故障

如下图中所示,在 A1 上执行反转后,它复制到 A(当 A 恢复时)和 B(它接着继续向 CD 发送更新)。

image:图中显示在 A1 上执行反转

中间目标故障

此故障情形属于级联链中的中间节点发生故障。要从此情形恢复,可以通过执行以下重定目标过程来实现。如下图中所示,级联链中的中间节点 B 发生故障。

image:图中显示中间目标故障

如下图中所示,在应用重定目标/绕过过程后,源 A 绕过故障节点 B 并继续向节点 C 发送更新,节点 C 接着向节点 D 发送更新。

image:图中显示源 A 绕过故障节点 B 并继续向节点 C 发送更新,节点 C 接着向节点 D 发送更新

如下图中所示,当 B 恢复后,AB 之间的操作会恢复,而 BC 之间的操作仍被绕过。

image:图中显示 A 与 B 之间的操作会恢复;B 与 C 之间的操作仍被绕过

使用 CLI 绕过故障节点:

  1. 选择要对源上故障节点执行的操作。

  2. 输入 retarget

  3. retarget_mode 属性设置为 bypass

  4. 设置要作为绕过目标的目标,如下图中所示。

    image:图中显示在 CLI 中设置要作为绕过目标的目标
  5. 可以使用绕过操作中所示的 bypassed_id 属性来选择在故障节点恢复后用于执行重定目标恢复的原始操作。可以查看生成的 bypassed_id,如下图中所示。

    image:图中显示在 CLI 中查看 bypassed_id 属性
  6. 以后,当 B 恢复后,使用重定目标/恢复过程恢复原始级联拓扑,如下图中所示。

    image:图中显示 CLI 中的恢复过程

使用 BUI 绕过故障节点:

  1. 在源节点上,选择要对故障节点执行的操作。

  2. 在 Edit Replication Action(编辑复制操作)对话框中,单击 Retarget(重定目标)。

  3. 在 Replication Retarget(复制重定目标)对话框中,将模式设置为 Bypass(绕过)。

  4. 从下拉式列表中选择要作为绕过目标的目标,如下图中所示。

    image:图中显示在 BUI 中从下拉式列表中选择要作为绕过目标的目标
  5. 单击 APPLY(应用)。

  6. 以后,当 B 恢复后,使用恢复过程恢复原始级联拓扑,如下图中所示。

    image:图中显示 BUI 中的恢复过程

源站点故障

在此情形下,源及其所有直接本地目标都不可用,并替换为其中一个远距离目标上的新源。从此情形恢复需要源上有多目标反转配置。有关进一步详细信息,请参见多目标反转。此外,还需要将一些目标配置为远距离目标。有关详细信息,请参阅“将 distant_target 属性用于管理反转”。

如下图中所示,A0B0C0 构成一个多目标反转组,其中 B0C0 是潜在源和远距离目标。A0,B0A0,C0 构成远距离目标关系(A0B0A0C0 应配置为潜在源和远距离目标),而 A1,A2,A3A0 构成本地关系,B1,B2,B3B0 构成本地关系。

image:图中显示源及其所有直接本地目标都不可用,并替换为其中一个远距离目标上的新源。

在此情况下,在 B0 上执行反转时,如下图中所示,将 A1,A2,A3 视为 A0 的本地目标,因此不重新创建要对 A1,A2,A3 执行的操作。由于使用多目标反转的属性,B0C0 发送更新。

image:图中显示执行反转的情况和源站点故障

兼容性注意事项

    配置级联复制时,请遵循以下兼容性规则:

  • 运行的固件低于 OS8.7.0 的节点不能配置为级联复制的一部分。

  • 运行的固件高于 OS8.7.0 的节点可以配置为最终节点。

  • 如果最终节点运行的固件不支持级联复制,这些节点也许可以执行复制反转。但是,它们不能往回向其源执行复制更新。在此类情况下,无法恢复复制关系。

  • 如果最终节点运行的固件不支持级联复制,无法向这些节点执行重定目标。

  • 应用于级联链中运行不同固件的目标的复制兼容性规则适用于任何源和目标。例如,如果目标不支持源使用的某个功能,则从相应源进行的复制更新可能会失败。

  • 系统回滚到不支持级联复制的固件版本会导致销毁所有级联复制操作。

相关主题