![为什么 DRBD 基础设施每天要重新同步整个分区几次](https://linux22.com/image/803043/%E4%B8%BA%E4%BB%80%E4%B9%88%20DRBD%20%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD%E6%AF%8F%E5%A4%A9%E8%A6%81%E9%87%8D%E6%96%B0%E5%90%8C%E6%AD%A5%E6%95%B4%E4%B8%AA%E5%88%86%E5%8C%BA%E5%87%A0%E6%AC%A1.png)
我有一个主/辅助 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 的某个地方有明确说明;但我自己没有找到它。