如何计算DRBD的同步进度率?WinDRBD未同步状态下进度计算方法
WinDRBD与标准Linux版DRBD的同步进度计算逻辑完全一致,done字段的计算规则如下:
核心计算逻辑
DRBD启动同步任务前,会先扫描块设备的位图,统计得出本次需要同步的总差量数据(即同步启动时两个节点数据不一致的总容量,记为初始待同步总大小)。同步过程中通过实时剩余未同步差量计算进度,公式为:
done = ((初始待同步总大小 - 当前out-of-sync值) / 初始待同步总大小) * 100
涉及参数说明
- 初始待同步总大小:仅在同步启动时计算一次,固定不变,单位为KB
- 当前out-of-sync值:输出中实时统计的还未完成同步的差量容量,单位为KB,随同步推进逐步降低
匹配你给出的输出验证
你的输出中done值为85.32,对应未同步占比为14.68%,结合当前out-of-sync:210484可以倒推:
- 本次初始待同步总大小 = 210484 ÷ 14.68% ≈ 143.4万KB
- 已完成同步的差量 = 143.4万KB - 21.05万KB ≈ 122.35万KB
该数值和输出中sent:1226764(已发送的同步数据量)基本匹配,差值为已经发送但还未收到对端确认的在途数据,对应输出中pending、unacked、rs-in-flight统计的容量。
注意事项
该进度是本次同步差量的完成占比,不是整个块设备容量的同步占比:如果两个节点只有10%的数据不一致,这部分数据全部同步完成时done值就会达到100%,和块设备的整体总容量无关。
内容的提问来源于stack exchange,提问作者inding
相关产品推荐
相关产品推荐

