4. SnapMirror策略与规则配置

SnapMirror 的复制行为不是由单条命令临时决定的,而是由“策略(Policy)”和“规则(Rule)”预先定义。策略是容器,规则是容器内的条目;每条规则描述“第几优先级、匹配什么标签、如何传输、保留多少份快照”。当你在源卷和目标卷之间建立关系时,ONTAP 会按优先级顺序逐条比对源卷的标签,命中第一条规则后即按该规则执行,后续规则不再参与。因此,理解策略与规则,本质上就是理解“标签匹配 + 优先级 + 传输方式 + 保留策略”这四件事如何共同决定一次异步复制的实际行为。

策略、规则与标签的关系

SnapMirror 策略分为两类:内置策略(如 MirrorAllSnapshots、MirrorAndVault、MirrorLatest、Vault、AsyncMirror)和自定义策略。内置策略覆盖常见场景,但生产环境往往需要按业务分级,例如“核心库保留 30 天、日志卷保留 7 天、归档卷只保留最新一份”,这时就需要自定义策略。

规则中的关键字段包括:SnapMirror Label(标签)、传输优先级(Priority)、传输方式(Mirror / Vault / MirrorAndVault)、保留份数(Retention Count)以及可选的保留周期(Retention Period)。标签是连接“快照策略”和“SnapMirror 规则”的桥梁:源卷的快照策略生成带标签的快照,SnapMirror 规则按标签决定哪些快照被复制、复制后保留几份。若源卷快照没有标签,或标签与规则不匹配,则该快照不会被该规则选中。

SnapMirror 策略匹配与异步复制数据流 源集群 / 源 SVM 源卷 vol_app 快照策略:snap_hourly 带标签快照 hourly.2024-06-01_0800 hourly.2024-06-01_0900 daily.2024-06-01_0000 SnapMirror 策略:pol_app_dr 规则1 优先级1 标签 hourly MirrorAndVault · 保留 24 份 规则2 优先级2 标签 daily Vault · 保留 30 份 规则3 优先级3 标签 *(兜底,可选) 目标集群 / 目标 SVM 目标卷 vol_app_dr 类型:DP(只读) 已复制快照 hourly.2024-06-01_0800 hourly.2024-06-01_0900 daily.2024-06-01_0000 标签匹配 异步传输 规则匹配逻辑(按优先级自上而下,命中即停) ① 读取源卷快照标签 hourly / daily / weekly 无标签快照不参与匹配 ② 按优先级比对规则 优先级1 hourly → 命中 优先级2 daily → 命中 ③ 按规则执行传输与保留 MirrorAndVault / Vault 保留份数独立计算 关键约束 · 同一策略内优先级不可重复;标签区分大小写;保留份数按规则独立计算,不跨规则累加。 · 目标卷为 DP 类型,只读;初始化传输完成前关系处于“正在初始化”状态,不可用于故障切换。

创建自定义策略与规则

创建策略使用 snapmirror policy create,随后用 snapmirror policy add-rule 逐条添加规则。以下示例定义一个名为 pol_app_dr 的策略,包含两条规则:hourly 标签走 MirrorAndVault 保留 24 份,daily 标签走 Vault 保留 30 份。

cluster1::> snapmirror policy create -vserver svm_src -policy pol_app_dr -type async-mirror

cluster1::> snapmirror policy add-rule -vserver svm_src -policy pol_app_dr \
  -rule "hourly_rule" -snapmirror-label "hourly" -priority 1 \
  -transfer-priority normal -action mirror-and-vault -retention-count 24

cluster1::> snapmirror policy add-rule -vserver svm_src -policy pol_app_dr \
  -rule "daily_rule" -snapmirror-label "daily" -priority 2 \
  -transfer-priority normal -action vault -retention-count 30

参数含义需要逐项确认:-snapmirror-label 必须与源卷快照策略中定义的标签完全一致;-priority 数值越小优先级越高,同一策略内不可重复;-action 取 mirror(仅镜像最新快照)、vault(仅归档指定标签快照)、mirror-and-vault(先镜像再归档);-retention-count 表示目标端保留的该标签快照份数,超出后最旧的被自动删除。若还需按时间保留,可加 -retention-period,例如 30d,此时份数与周期同时生效,先到者触发清理。

标签命名建议与快照策略保持一致,例如 hourly、daily、weekly、monthly。若源卷快照策略未设置标签,SnapMirror 规则将无法匹配,复制关系虽建立但不会传输任何快照。

建立关系与初始化传输

策略就绪后,在目标集群创建目标 DP 卷,再创建 SnapMirror 关系。目标卷大小应不小于源卷,类型必须为 DP。

cluster2::> volume create -vserver svm_dst -volume vol_app_dr -aggregate aggr_dst \
  -size 500g -type DP

cluster2::> snapmirror create -source-path svm_src:vol_app -destination-path svm_dst:vol_app_dr \
  -type XDP -policy pol_app_dr

cluster2::> snapmirror initialize -destination-path svm_dst:vol_app_dr

snapmirror initialize 触发基线传输,将源卷当前全部数据块复制到目标卷。此阶段关系状态为 Snapmirrored 之前的 Initializing,传输耗时取决于数据量与链路带宽。初始化完成后,关系进入 Snapmirrored 状态,之后按策略规则进行增量异步复制。

验证与日常管理

用 snapmirror show 查看关系健康状态、策略名与 lag time;用 snapmirror policy show 和 snapmirror policy rule show 核对规则优先级与保留份数。若发现某标签快照未复制,优先检查三处:源卷快照是否带该标签、策略中是否存在匹配规则、规则优先级是否被更高优先级规则提前截获。

检查项命令期望结果
关系状态snapmirror showHealthy / Snapmirrored
策略规则snapmirror policy rule show标签、优先级、保留份数正确
目标快照snapshot show -vserver svm_dst出现对应标签快照
延迟snapmirror show -fields lag-time在可接受范围内
修改策略规则后,新规则仅对后续传输生效,已复制到目标端的快照不会自动按新保留份数清理。若需调整历史保留,应通过目标端快照手动删除或等待下一次传输触发保留计算。