让 DRBD 从冷启动到同步状态

让 DRBD 从冷启动到同步状态

我在一个具有嵌入式高可用性 NVMeoF 集群的环境中工作,需要该集群在所有节点冷启动后几分钟内可用,并尝试在该集群上设置 RAID-10。

我使用的旧式基础架构基于 GFS2 和 LVM2。不幸的是,LVM 的 raid-10 选项似乎只允许 GFS2 使用一个日志,而我需要更多日志。我开始使用 DRBD 手动设置一系列 RAID-1 阵列,然后使用 LVM2 设置 RAID-0。我能够毫不费力地完成设置。然而,此时,我遇到了一个问题:如何彻底关闭并重新启动节点以实现无缝数据转换?

我最初的基本尝试导致每个主板在启动时同步率为 0%,并且需要数小时才能重新同步。我在四个节点上分别使用了以下命令,尝试干净地关闭:

vgchange -a n g1 #g1 is the logical volume laid overtop the physical volumes of r0 and r1
vgchange --lockstop

drbdadm down r0 #drbd resource configured as a physical volume
drbdadm down r1 #drbd resource configured as a physical volume

然后对每个电路板进行电源循环,并尝试使用以下命令重新启动:

drbdadm up r0
drbdadm up r1
if [ `hostname` = "appropriate-host" ]; then drbdadm primary --force r0; fi
if [ `hostname` = "appropriate-host2" ]; then drbdadm primary --force r1; fi
vgchange --lockstart
vgchange -asy g1

我注意到,有时,这种方法有效。其他时候,我被告知我的元数据无效,需要重新创建它。运行 drbdadm create-md r0 或 r1 后,通过 drbd 进行的同步从 0% 的起点开始,这需要几个小时,我的努力无法维持。我不确定特定的启动/关闭顺序是否可以让我可靠地避免同步问题;是否有办法强制 DRBD 加快重新同步工作;如果交换到 RAID-01 配置(其中 DRBD 覆盖在两个逻辑卷之上),是否可以确保更可靠的起始配置,从而可以跳过初始同步;或者我是否完全使用了错误的工具来完成这项工作。

ServerOverflow 是否有任何见解可以帮助我完善配置,以实现可靠且干净的启动和关闭?任何帮助都将不胜感激!

相关内容