使用连接的客户端closuresiSCSI目标的正确方法是什么?

具有两个DRBD主节点的iSCSI如果两条path并发写入请求,则使用不太合适 。 但我正在考虑将此想法用作ESXi 5.5U2主机的后端存储。

我已经用主/辅助configuration和经典故障转移群集进行了testing。

ESXi在这一点上所做的是检测到一个多path,并且主动使用一条path。 所以在这个星座中,似乎并没有出现并发写IO问题。

现在,在这两种情况下(主要/次要或主要/主要)的问题是:如何closures具有到iSCSI客户端的活动打开连接的iSCSI服务器(iSCSI目标提供程序,采用iSCSI方式)?

我目前在目标服务器上使用CentOS 5。

CO5使用tgtd来提供目标。 令我惊讶的是,正常停止方法失败,如果有连接的客户端。 相反,在这种情况下,强制停止似乎是我需要的。

我想干净地closures一台服务器(我必须停止访问目标,所以我可以切换drbd到次要),然后另一台服务器应该自动变为活动(在这个星座恕我直言,没有什么要做的)。

在这方面的问题:以下是好的,还是我错过了什么?

  1. 强行停止tgtd(将首先脱机的目标)
  2. 将IP拆分为启动器的方向(与用于drbd复制的行不同)
  3. closuresdrbd(使其成为第二)
  4. 重启或关机服务器

是的,我错过了一些东西。 问题仍然是底层协议(SCSI)是一个有状态的协议。 所以,即使我设法closures目标(例如强制停止),它也会使活动发起者处于“挂起”状态。

但是:在我的用例中有一个解决问题的方法。

  1. 在vCenter中禁用到特定iSCSI服务器的所有path。
  2. 这将有序地终止所有打开的iSCSI事务,并将打开另一个path上的另一个服务器的新事务。
  3. 之后,iSCSI-Server可以安全地重新启动,而不会中断客户端。
  4. iSCSI-Server启动并再次运行后,可以通过在vCenter中启用这些path来重新激活原始iSCSIpath。

所以我的问题的正确答案似乎是:

简而言之:没有正确的方法。 你的客户将挂起。

长:这取决于。 如果您之间有一层能够正确地静音/终止iSCSI通信的层,则可以在之后终止目标(即使目标服务器仍然认为连接了启动器客户端)。