DRBD为什么不重新启动?

我们运行10台服务器,大部分是廉价的申请桌面机器,全部运行CentOS 5.1和Xen。 所有这10台服务器都运行Xen虚拟机。 有人关掉服务器柜的电源,有几台机器炸硬盘,不能再启动。 不用担心,所有的虚拟机磁盘映像在不同的服务器上都有DRBD镜像副本,我只需要在启动这两台服务器时启动这些镜像副本。

我已经replace了每个引导驱动器,并重新安装了CentOS,Xen和DRBD。 但是,在重新启动后,服务器都可以看到他们的本地DRBD设备,但是报告远程链接的状态为“WFConnection”,等待连接。 每个设备报告为“次要/未知”。 我查过了:

  • 每台服务器都configuration了正确的iptables让DRBDstream量通过 – 这是明确的,iptablesconfiguration文件来自中央存储库,并且与机器崩溃前相同。
  • 这不是一个DNS问题,因为每个服务器都有一个固定的IP地址,DRBD.conf直接使用这些IP地址,所以DNS甚至不被使用。 我已经确定新安装使用与原始服务器相同的固定IP地址和主机名。
  • 每台服务器都可以ping通所有使用的IP地址上的另一台,在那里没有问题。 服务器都连接到同一个交换机。

有谁知道为什么DRBD仍然拒绝连接?

如果您有“裂脑”的情况,您可以使用以下命令来解决它:

  1. 确定哪个服务器有最准确的数据(称之为A-调用另一个服务器B)
  2. 在B: drbdadm secondary all; drbdadm -- --discard-my-data connect all drbdadm secondary all; drbdadm -- --discard-my-data connect all
  3. 在答: drbdadm primary all; drbdadm connect all drbdadm primary all; drbdadm connect all

如果发生裂脑情况,我已经configuration了drbd来通知我。 您可以在/etc/drbd.conf中使用处理 程序标题下的split-brain 处理程序执行此操作。

您将不得不手动使分区主drbdadm primary all 。 然后你将需要挂载分区。

你使用心跳吗? 如果是这样,心跳应该照顾你的一切。 运行/usr/lib/heartbeat/hb_takeover

好的,我find了答案。 正如Brent指出的那样,DRBD设备必须是主要的,然后才能从中运行Xen虚拟机。 但是我还没有到那个阶段,不同的机器上的两个DRBD设备拒绝承认另一个存在。 我终于想过在重新启动后检查/ var / log / messages,看到“Split-Brain detected,dropped connection!”这行,这给了我一些Google的帮助,并提供了这些指令:

http://www.drbd.org/users-guide/s-resolve-split-brain.html

事实certificate,这是DRBD无法确定哪台设备是最新设备的解决scheme,因此您必须手动告诉设备使用哪台设备。 如果DRBD能够将问题报告为状态(“SPTBrain”而不是简单的“WFConnection”,也许),那么会很好,因为/ var / log / messages中包含了大量的内容,而且我错过了第一个错误消息我看了几次。