为什么 DRBD 基础设施每天要重新同步整个分区几次

为什么 DRBD 基础设施每天要重新同步整个分区几次

我有一个主/辅助 2 节点 DRBD 设置,如下所示

global { usage-count no; }
common { syncer { rate 4M; } }
resource r0 {
        protocol B;
        startup {
                wfc-timeout  15;
                degr-wfc-timeout 60;
        }
        net {
                cram-hmac-alg sha1;
                shared-secret "whateverblahblahblah";
                max-buffers 4096;
                max-epoch-size 4096;
        }
        handlers {
                split-brain "/usr/lib/drbd/notify-split-brain.sh [email protected]";
        }
        on node01.chofert.com {
                device /dev/drbd0;
                disk /dev/sdb1;
                address <public_IP_1>:7788;
                meta-disk internal;
        }
        on node02.chofert.com {
                device /dev/drbd0;
                disk /dev/sdb1;
                address <public_IP_2>:7788;
                meta-disk internal;
        }
}

我转而使用协议 B,因为节点位于不同的网络中,而 B 足以满足我的需求。并且速率限制为 4Mb,因为服务器之间的总带宽为 12Mb(我知道很低,但每天写入的字节数真的很少)。

问题是,可能是由于夜间进程消耗了 CPU,DRBD 大约在 2 小时后崩溃。此后,尽管写入强度很低,但每天至少要进行 2 到 3 次完整分区重新同步。

我的问题是:DRBD 在复制时如何工作?我的意思是为什么我看到的是完整的分区重新同步,而不是只写入了几个字节?

仅仅 1 个部门的差异会影响 DRBD 的正常行为吗?

在节点 1 处进行分区:

Disk /dev/sdb1: 8588 MB, 8588886528 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16775169 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

在节点 2 处进行分区

Disk /dev/sdb1: 8588 MB, 8588886016 bytes
64 heads, 32 sectors/track, 8191 cylinders, total 16775168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

答案1

:(

没人知道?好吧,在我拥有的生产基础设施上进行测试并不容易,但由于每个小细节都很重要,我想我必须以某种方式调整磁盘大小,以消除 1 个扇区不同的麻烦

答案2

好吧我会自己回答:

经过多次测试和工作,我可以确认:DRBD 复制块中涉及的分区/磁盘的几何形状必须完全相同。就这些!因此,如果您使用虚拟环境,最可靠的做法就是直接克隆用于虚拟卷的相同文件。

也许这在 DRBD wiki 的某个地方有明确说明;但我自己没有找到它。

相关内容