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 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,此时份数与周期同时生效,先到者触发清理。
建立关系与初始化传输
策略就绪后,在目标集群创建目标 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 show | Healthy / Snapmirrored |
| 策略规则 | snapmirror policy rule show | 标签、优先级、保留份数正确 |
| 目标快照 | snapshot show -vserver svm_dst | 出现对应标签快照 |
| 延迟 | snapmirror show -fields lag-time | 在可接受范围内 |