Sun Cluster 概念指南(适用于 Solaris OS)

关于故障防护

群集的一个主要问题是引起群集分区的故障(称作群集分割)。发生记忆分裂时,并不是所有节点都可以通信,因此单个节点或节点子集可能会尝试构成单个群集或群集子集。每个子集或分区都可能“认为”它对多主机设备具有唯一访问权和所有权。当多个节点试图对磁盘进行写入操作时,就会发生数据损坏。

故障防护通过以物理方式防止对磁盘的访问,限制了节点对多主机设备的访问。当节点脱离群集时(它或是发生故障,或是分区),故障防护确保了该节点不再能访问磁盘。只有当前成员节点有权访问磁盘,以保持数据的完整性。

磁盘设备服务为使用多主机设备的服务提供了故障转移能力。在当前担当磁盘设备组主节点(属主)的群集成员发生故障或变得无法访问时,一个新的主节点会被选中。此新的主节点使得对磁盘设备组的访问得以继续,而只有微小的中断。在此过程中,旧的主节点必须放弃对设备的访问,然后新的主节点才能启动。然而,当一个成员从群集断开并变得无法访问时,群集无法通知那个节点释放那些将该节点作为主节点的设备。因而,您需要一种方法来使幸存的成员能够从失败的成员那里控制并访问全局设备。

Sun Cluster 系统使用 SCSI 磁盘保留来实现故障防护。使用 SCSI 保留,故障节点就将与多主机设备“隔离”开来,使它们无法访问那些磁盘。

SCSI-2 磁盘保留支持一种保留形式,它或者为所有连接到磁盘的节点都授予访问权(当没有进行任何保留时),或者只允许一个节点(拥有保留的节点)具有访问权。

当群集成员检测到另一个节点不再通过群集互连进行通信时,它启动故障防护措施来避免另一个节点访问共享磁盘。当故障防护发生时,将停止使用被防护节点,并且其控制台上将显示“保留冲突”消息。

如果发现某个节点不再是群集成员,则将在此节点与其他节点所共享的所有磁盘上触发 SCSI 保留。被防护节点可能不会“意识”到它正处于防护状态,当它试图访问这些共享磁盘之中的一个时,它会检测到保留并进入停止使用状态。