如何计算DRBD的进度?

How to calculate progress rate of DRBD?

WinDRBD 的进度仅在同步时可见。但是我想知道如果不同步仍然存在到什么程度。

drbdsetup status foo --v --s 

通过查看详情命令,得到如下内容

foo node-id:2 role:Primary suspended:no
    write-ordering:flush
  volume:1 minor:1 disk:UpToDate backing_dev:\DosDevices\G: quorum:yes
      size:524253532 read:7238338 written:5209825 al-writes:589 bm-writes:198 upper-pending:0 lower-pending:10
      al-suspended:no blocked:no
  Node1 node-id:1 connection:Connected role:Secondary congested:no ap-in-flight:0 rs-in-flight:7168
    volume:1 replication:SyncSource peer-disk:Inconsistent done:85.32 resync-suspended:no
        received:0 sent:1226764 out-of-sync:210484 pending:6 unacked:10 dbdt1:14.99 eta:14

done:85.32

这部分称为进度。

这是怎么计算出来的?

当资源断开连接时,out-of-sync 计数器将在当前为主节点上开始递增。当资源重新连接时,将比较位图(存储在 DRBD 的元数据中)以确定哪些块在断开连接时变为 out-of-sync,并继续在后台重新同步这些块。在后台重新同步期间发生的任何写入都会立即被复制,并且如果该写入碰巧触及作为后台重新同步一部分的块,则会将其从重新同步队列中删除(因为它已被前台复制更新)。