群集服务如何保留磁盘并使磁盘联机

本文介绍 Microsoft 群集服务如何保留和引入由群集服务和相关驱动程序管理的联机磁盘。

适用于: Windows Server 2003
原始 KB 编号: 309186

更多信息

群集服务仅使用 SCSI 协议来管理共享总线上的磁盘。

注意

这并不意味着所有磁盘都属于 SCSI 类型(指定称为 SCSI 的硬件接口),而是意味着存储单元必须能够正确解释和处理 SCSI 协议和命令。

以下命令列表是磁盘在群集环境中时将使用的其他 SCSI 协议功能。

  • reserve:此命令由主机总线适配器发出,用于获取或维护 SCSI 设备的所有权。 保留的设备拒绝来自所有其他主机总线适配器的所有命令,但最初保留的主机总线适配器除外,即发起程序。

  • release:当磁盘资源脱机时,此命令由拥有的主机总线适配器发出;它将释放一个 SCSI 设备以供另一个主机总线适配器保留。

  • reset:此命令会中断目标设备上的预留。 此命令可以是整个总线) 的总线重置 (,也可以是使用存储驱动总线上特定设备的定向重置。 以下过程介绍了服务器群集如何启动并获取对共享磁盘的控制。 此方案假定一次只有一个节点处于打开状态:

启动计算机时,群集磁盘驱动程序 (Clusdisk.sys) 读取以下本地注册表项,以获取群集管理下共享磁盘的签名列表: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusDisk\Parameters \Signatures

获取列表后,群集服务会尝试扫描共享 SCSI 总线上的所有设备,以查找匹配的磁盘签名。

群集中的第一个节点启动时,群集磁盘驱动程序首先标记 (LUN 的所有 LUN:逻辑单元号,SCSI 总线上使用的唯一标识符,用于区分共享相同总线的设备) 与签名密钥匹配为脱机卷的设备。 请注意,这与使群集资源脱机不同。 卷被标记为脱机,以防止多个节点同时具有对卷的写入访问权限。 如果群集是共享磁盘群集,群集服务会将其中一个磁盘指定为仲裁磁盘。 仲裁磁盘是群集服务尝试形成群集时联机的第一个资源。

当形成节点上的群集服务启动时,它首先尝试将指定为仲裁磁盘的物理设备联机。 它在仲裁磁盘上执行磁盘仲裁算法以获取所有权。 仲裁成功后,群集服务向 clusdisk 发送请求,开始向磁盘发送定期保留 (,以维护所有权) 。 然后,群集服务向 clusdisk 发送请求,以取消阻止对仲裁磁盘的访问,并将卷装载到磁盘上。 成功装载卷 () ,完成联机过程,然后群集服务继续执行群集表单过程。 请求从群集磁盘驱动程序传递到 Microsoft 存储驱动程序堆栈,最后传递到特定于与磁盘通信的 HBA 的驱动程序。 它还可能传递给在存储堆栈中运行的任何多路径软件。

在存储控制器/设备驱动程序报告已成功保留设备后,群集服务可确保可从中读取驱动器并将其写入。 磁盘通过所有这些测试后,磁盘资源将被标记为联机,然后群集服务将继续使所有其他资源联机。

群集中的每个节点每三秒为其拥有的任何 LUN 续订一次预留。 例如,如果群集的节点 (失去彼此的网络通信,如果没有通过专用或公用网络) 进行通信,则节点将开始一个称为仲裁的过程来确定仲裁磁盘的所有权。 在群集节点之间完全通信丢失中赢得仲裁磁盘资源的所有权的节点将保持正常运行。 任何无法通信且无法维护或获取仲裁磁盘所有权的节点都将终止群集服务,并且该节点托管的任何资源都将移到群集中的另一个节点。

  1. 当前拥有仲裁磁盘的节点是防御节点。 Defender 假定它正在防范无法与之通信且未收到关闭通知的任何群集节点。 Defender 通过请求每隔三秒在 LUN 上放置一个 SCSI 保留,不断将其预留续订到仲裁。

  2. 所有其他节点 (不拥有仲裁磁盘且无法与拥有仲裁资源的节点通信的节点) 成为具有挑战性的节点。

  3. 当质询程序检测到所有通信丢失时,它会立即请求总线范围的 SCSI 重置以中断任何现有预留。

  4. 请求 SCSI 重置 7 秒后,质询程序会尝试保留仲裁磁盘。 如果 defender 节点处于联机状态并正常运行,则它已保留仲裁磁盘,就像它通常每三秒一次一次一样。 质询程序检测到它无法保留仲裁,并终止群集服务。 如果 Defender 运行不正常,则质询程序可以成功保留仲裁磁盘。 十秒钟后,质询程序将仲裁联机,并获取群集中所有资源的所有权。 如果防御节点失去仲裁设备的所有权,则防御节点上的群集服务将立即终止。

当群集节点使磁盘资源脱机时,它会请求释放 SCSI 保留,然后驱动器将再次对操作系统不可用。 每当某个磁盘资源在群集中脱机时,任何群集节点上的操作系统都将无法访问资源指向 (具有匹配签名) 的磁盘的卷。