PowerScale:一对多或级联复制的 Smartsync 的 SYNCIQ 策略迁移错误
Summary: 迁移被两个错误阻止:一个是源快照与最新快照不匹配,另一个是源快照早于最新。由于扇出或级联设置不匹配。
Symptoms
SmartSync 的 SyncIQ 策略迁移失败,并出现以下两个错误之一:
Error Message: Migration blocked: Source record snapshot (<snapshot-id>) does not match latest dataset snapshot (<snapshot-id>) for the source basepath (<source-base-path>). This source basepath may act as a target for an existing SmartSync policy. Hence, the SIQ policy migration can't proceed unless the two snapshots are identical. Start the SIQ policy to match the latest dataset snapshot (<snapshot-id>) in source.Error Message: Migration blocked: Source record snapshot (<snapshot-id>) is older than the snapshot (<snapshot-id>) associated with the latest dataset (<dataset details>) for the source basepath (<source-base-path>). Replicate to the latest snapshot or above to proceed with the SIQ policy migration.
Cause
当源基本路径具有被 SmartSync 标记为目标数据集的既有数据集时,会发生错误 1。而且,SyncIQ 策略的源记录使用的用于迁移的关联快照与特定源基路径的最新数据集使用的快照不同。
当源基本路径具有未被 SmartSync 标记为目标数据集的既有数据集时,会发生错误 2。并且,SyncIQ 策略的源记录使用的用于迁移的关联快照不大于或等于最新数据集对特定源基路径使用的快照。
Resolution
如果错误已发生,请转至恢复步骤部分。
前瞻性迁移步骤
在迁移作业中尚未显示错误之前要采取的预防措施。在开始迁移作业之前,请执行以下步骤以避免上述错误:
扇出配置 (A → B + A → C)
-
步骤1: 确定您的 SyncIQ 策略 Documentum 交互式交付服务。例如:
- 策略 A → B:
# isi sync policies view <pol_a_b> | head -2 - 策略 A → C:
# isi sync policies view <pol_a_c> | head -2
- 策略 A → B:
-
步骤 2:群集 A 上的源记录目录:
# cd /ifs/.ifsvar/modules/tsm/config/source_records/ -
步骤3: 列出并查看与每个策略 ID 对应的 XML 文件,并记下 latest-snap-id 值:
-
检查 A→B 快照(在下一步中生成的 ID 将是 AX):
# grep '<latest-snap-id>' <pol_a_b_ID>.xml -
检查 A→C 快照(在下一步中,生成的 ID 将是 AY):
# grep '<latest-snap-id>' <pol_a_c_ID>.xml
-
-
步骤4: 比较 latest-snap-id 值。首先使用较旧(较低)latest-snap-id 迁移策略:
如果 A 到 B 快照 (AX) 早于 A 到 C 快照 (AY),例如:AX = snapID 100,AY = snapID150。
然后先将 A 策略迁移到 B策略。
如果 A 到 C 快照 (AY) 早于 A 到 B 快照 (AX),例如:AX = snapID 150,AY = snapID100。
然后首先将 A 迁移到 C 策略。
如果两个策略都使用相同的快照,例如:AX = 100,AY = 100。
可以先迁移任一策略。第二个策略迁移会重复使用数据集。
链式(级联)配置(A → B → C)
-
同步应完全完成,确保策略链中涉及的所有群集都反映相同的数据。
-
在继续迁移之前,禁用链中的所有 SyncIQ 策略。这可防止在迁移过程中触发任何新的增量 SyncIQ 作业。例如,在 A→B→C 链中,同时禁用 A→B 和 B→C 策略。
-
重要提示: 迁移必须始终从根(源)群集开始。对于任何中间群集(例如 3 群集设置中的 B),其源基路径也是另一个 SmartSync 策略目标的所有策略都必须使用与该基路径的最新数据集相同(完全相同的)快照。如果快照不匹配,迁移作业将暂停(而非永久阻止)。恢复步骤部分下面添加的恢复步骤。
在迁移链策略之前,确保 B→C SyncIQ 策略使用基于快照的同步,快照模式与群集 B 上的 A→B 策略生成的快照模式相同。这可确保两个策略在中继群集上共享相同的快照基线。
-
如果 B→C SyncIQ 策略最初不是使用基于快照的同步设置的,请在迁移之前使用以下步骤进行更新:
-
步骤1: 验证 A→B 策略是否使用默认命名模式 SIQ-* 之外的命名模式创建归档目标快照(目标快照归档:应显示 是)。
# isi sync policies view pol_wJ9n-a2b | grep -E "Target Snapshot Archive|Target Snapshot Pattern" Target Snapshot Archive: No Target Snapshot Pattern: SIQ-%{SrcCluster}-%{PolicyName}-%Y-%m-%d_%H-%M-%S如您在上面的示例中所见,Target Snapshot Archive 设置为“No”,并且模式是前缀为 SIQ-* 的默认模式。
-
步骤2: 修改 A→B 策略,以使用默认模式以外的其他模式创建归档快照:
# isi sync policies modify <A_to_B_policy> --target-snapshot-archive True --target-snapshot-pattern 'snapB-%{PolicyName}-%Y-%m-%d'
# isi sync policies view pol_wJ9n-a2b | grep -E "Target Snapshot Archive|Target Snapshot Pattern" Target Snapshot Archive: Yes Target Snapshot Pattern: snapB-%{PolicyName}-%Y-%m-%d -
步骤3: 修改 B→C 策略以使用 --schedule=when-snapshot-taken:
# isi sync policies modify <B_to_C_policy> --schedule=when-snapshot-taken -
步骤4: 触发 A→B 策略的作业,以确保 B→C 策略能够赶上它并重复使用由 A-B> 创建的归档快照;您可以通过运行 reports 命令进行验证。
# isi sync job start <A_to_B_policy>
# isi sync reports list等待 A→B 策略的作业完成,进而触发 B→C 策略的作业。两个作业均完成后,使用以下命令验证由 A→B 策略的最新运行创建的归档快照是否被 B→C 的最新作业重复使用:
# cat /ifs/.ifsvar/modules/tsm/config/target_records/<A_to_B_policy_Id>.xml | grep latest-archive-snap
<latest-archive-snap-alias>621</latest-archive-snap-alias>
<latest-archive-snap>625</latest-archive-snap>
# cat /ifs/.ifsvar/modules/tsm/config/source_records/<B_to_C_policy_Id>.xml | grep latest-snap-id
<latest-snap-id>625</latest-snap-id>
<restore-latest-snap-id>0</restore-latest-snap-id>如上所述,B→C 策略的 latest-snap-id 与 A→B 策略的 latest-archive-snap 相同。这是链式策略迁移成功完成的状态。
-
恢复迁移步骤
如果已尝试迁移,并且迁移作业进入 PAUSED 状态,请执行以下恢复步骤:
扇出配置
当 SyncIQ 策略迁移作业失败并显示错误时,会重新启用相应的 SyncIQ 策略。缓解步骤包括:
- 步骤 1:运行 SyncIQ 策略以跟上进度:
# isi sync job start <policy-name> - 步骤 2:等待新作业运行成功完成并显示在报告输出中:
# isi sync reports list --policy-name <policy-name> - 步骤 3:恢复暂停的 SmartSync 迁移作业:
# isi dm jobs resume <job_id>
链接(级联)配置
当 SyncIQ 策略迁移作业失败并显示错误时,会重新启用相应的 SyncIQ 策略。缓解步骤包括:
- 步骤1: 使用以下命令修改 SyncIQ 策略:
# isi sync policies modify <B_to_C_policy> --schedule=when-snapshot-taken - 步骤2: 使用命令运行 A-B> 智能同步策略(假设上游策略已迁移):
# isi dm policies modify <policy_name> --run-now=yes
它将自动将快照与源基本路径上的最新数据集快照同步。 - 步骤3: 使用以下命令恢复迁移作业:
# isi dm jobs resume <job_id>