4. SnapMirror异步复制部署与运维
SnapMirror 是 ONTAP 中实现卷级异步复制的核心机制,它把源卷在某个时间点的快照作为传输单元,通过集群间网络把数据块增量地复制到目标卷。理解 SnapMirror 的关键在于:它复制的不是文件,而是快照所代表的一致性数据视图;因此源端每次创建快照并触发更新,目标端就获得一个与源端快照对应的只读副本。异步意味着目标端通常落后源端一个更新周期,RPO 由更新频率决定,而不是由网络带宽单独决定。
关系建立与策略配置
部署的第一步是在源集群与目标集群之间建立集群对等(cluster peer)和 SVM 对等(SVM peer),并确保集群间 LIF 可达、防火墙放行 ICMP 与 11104/11105 端口。随后在目标端创建类型为 DP 的目标卷,容量应不小于源卷的逻辑容量,并预留快照空间。关系建立命令如下:
cluster1::> snapmirror create -source-path svm1:vol_src \
-destination-path svm2:vol_dst -type XDP -policy MirrorAllSnapshots
cluster1::> snapmirror initialize -destination-path svm2:vol_dst
策略决定保留哪些快照以及更新节奏。常用策略有 MirrorAllSnapshots(镜像源端全部快照)、MirrorLatest(仅保留最新快照)和 MirrorAndVault(镜像加归档)。策略中的 Transfer Schedule 控制自动更新频率,例如每 15 分钟一次,则理论 RPO 约为 15 分钟。策略通过 snapmirror policy show 查看,规则字段 SnapMirror Label 必须与源端快照的标签匹配,否则该快照不会被复制。
初始化传输与增量更新
初始化传输(initialize)执行一次基线复制,把源卷当前快照的完整数据块传到目标端。初始化期间目标卷处于 Snapmirrored 状态且不可写,传输进度可用 snapmirror show -fields status,progress 观察。初始化完成后,关系进入 Idle,此时目标端已具备可用的只读副本。后续每次更新只传输自上次基线以来变化的块,因此增量更新通常远快于初始化。
增量更新由 snapmirror update 手动触发,或由策略计划自动触发。更新时源端会先创建带指定标签的快照,再计算差异块并传输。判断更新是否成功,应关注 Last Transfer Size、Last Transfer Duration 和 Lag Time 三个字段:Lag Time 表示目标端落后源端的时间,若持续增长说明更新未按计划完成。常见异常包括网络中断导致 Transferring 卡住、目标卷空间不足导致 Quiesced、以及快照标签不匹配导致无快照可传。
故障切换与故障恢复
当源站点发生故障且短时间内无法恢复时,需要执行故障切换(failover)。操作是在目标端对关系执行 snapmirror break,使目标卷从 Snapmirrored 变为 Broken-off 并转为可读写,随后把业务挂载到目标卷。此时目标卷的数据是最后一次成功更新时的快照视图,因此切换前应确认 Lag Time 在可接受范围内。切换后源端与目标端关系中断,目标端不再接收更新。
源站点修复后执行故障恢复(failback)。若原源卷数据未丢失,可在原目标端执行 snapmirror resync,让关系重新建立并只同步中断期间产生的差异块,避免全量重传。若原源卷已损坏,则需要反向重建关系,把当前生产卷作为新源。恢复完成后关系回到 Idle,可重新按策略计划更新。整个过程中应持续用 snapmirror show 核对 Status、Health 和 Lag Time,确认数据方向与业务挂载点一致。
MirrorAndVault 策略,既保留最新镜像又保留历史归档快照,兼顾快速恢复与误删找回。定期用 snapmirror show -fields lag-time 巡检,Lag Time 超过 RPO 目标即应告警。snapmirror break 前务必确认目标卷空间充足且业务已停止写入源端,否则切换后可能出现数据不一致。resync 前不要对目标卷做额外写入,否则差异计算会失败并触发全量初始化。| 运维动作 | 命令 | 关键观察字段 |
|---|---|---|
| 查看关系状态 | snapmirror show | Status / Health / Lag Time |
| 手动增量更新 | snapmirror update -destination-path svm2:vol_dst | Last Transfer Size / Duration |
| 故障切换 | snapmirror break -destination-path svm2:vol_dst | Status 变为 Broken-off |
| 故障恢复 | snapmirror resync -destination-path svm2:vol_dst | Status 回到 Idle |
综合来看,SnapMirror 异步复制的运维闭环是:先建立对等与关系,再用策略定义 RPO 与保留,通过初始化和增量更新维持副本,最后在故障时 break 接管、在恢复时 resync 回切。把 Lag Time 作为核心健康指标,把策略标签与快照标签对齐作为配置纪律,就能让复制关系长期稳定运行。