块级复制与增量跟踪是什么
块级复制把磁盘按块同步到目标:首轮全量,之后只传发生变化的数据块,因此第二轮以后的耗时不取决于磁盘总容量,而取决于变更量。为了得到可用的目标端,复制必须落在某个一致快照点上——源端通常借助 VSS(Windows)、文件系统冻结或 LVM 快照把写入暂停,让所有块处于同一时刻状态,否则目标系统相当于异常断电后的形态。
基本信息
| 核心机制 | 全量复制加基于变更块的增量复制 |
|---|---|
| 变更跟踪 | 块级变更跟踪(CBT)或脏位图(dirty bitmap) |
| 一致性来源 | VSS 卷影副本、文件系统冻结、LVM 快照、阵列快照 |
| 常用检查 | qemu-img map 看块的分配状态,qemu-img info 看实际占用 |
| 典型工具 | 云厂商主机迁移服务、第三方块复制与持续数据保护产品 |
| 窗口关系 | 增量轮次越多,割接时的追平时间越短 |
典型使用场景
- 整机搬迁:首轮全量拷贝后持续增量同步,割接窗口内只需追平最后一小段
- 容灾复制:把生产磁盘持续复制到异地存储,故障时按最近一致点恢复
- 存储更换:把数据从旧阵列整体搬到新阵列,业务只停很短时间
- 测试数据制备:从生产数据的某个一致点复制一份用于验证
- 备份加速:块级增量替代全量备份,缩短备份窗口
- 迁移演练:用增量轮次估算正式割接窗口是否够用
核对与观察
核对与观察
qemu-img info target.qcow2 # 看虚拟容量与实际占用,判断增量是否在有效推进
qemu-img map --output=json target.qcow2 | head # 查看分配了哪些块,识别是否仍在增长
qemu-img compare source.qcow2 target.qcow2 # 逐块比对,确认无差异(耗时与容量成正比)
# 一致性侧:Windows 用 VSS 创建卷影副本获取同一时刻的块视图
# 一致性侧:Linux 可用 LVM 快照或文件系统冻结,保证跨盘一致
# 增量侧:确认变更块跟踪已开启,否则每轮都要重新扫描全盘
df -h;ls -l target.qcow2 # 观察目标侧空间增长是否符合预期概念与影响对照
| 概念 | 含义 | 失效后果 |
|---|---|---|
| 全量复制 | 首轮把所有已分配块传到目标 | 耗时长,是迁移窗口的主要组成部分 |
| 增量复制 | 只传自上次同步以来变化的块 | 未开启跟踪就要全盘扫描,窗口被无限拉长 |
| 一致快照点 | 某一时刻所有块处于同一状态 | 缺失则目标系统相当于异常断电状态 |
| 冻结时间 | 暂停应用写入的时长 | 过长影响业务,过短则快照不完整 |
| 校验比对 | 复制后逐块或抽样比对 | 不做校验就无法证明目标数据可用 |
| 重放与追平 | 用增量把目标对齐到切换点 | 追平速度决定割接停写窗口的长短 |
一致性快照点是块级复制的核心:业务写入被暂停的时间应当尽量短,把大部分时间花在传输上,而不是花在冻结上。
未开启变更块跟踪就反复做全量扫描:不仅窗口越来越长,频繁大 IO 还会拖慢生产业务,属于典型的隐性故障源。