Sun Cluster 概念指南 (適用於 Solaris 作業系統)

故障隔離的 Failfast 機制

叢集框架用來確保故障節點無法重新啟動與開始寫入共用儲存體的機制稱為 failfast

叢集成員的節點對於它們有存取權的磁碟,包括法定數目的磁碟,會連續啟用特定的 ioctl,也就是 MHIOCENFAILFAST。 此 ioctl 為磁碟驅動式的指示詞,會讓節點在無法存取已被保留為其他節點之用的磁碟時,有能力自我當機。

MHIOCENFAILFAST ioctl 會使驅動程式檢查由節點發佈給磁碟的每次讀取與寫入的錯誤傳回,以取得 Reservation_Conflict 錯誤碼。 ioctl 會在背景中定期地對磁碟發出測試作業,以檢查 Reservation_Conflict。 如果傳回 Reservation_Conflict,前景與背景的控制流路徑都會當機。

對於 SCSI-2 磁碟而言,保留不是永久性的。節點重新啟動後,這些保留將不再存在。 對於包含永久群組保留 (PGR) 的 SCSI-3 磁碟而言,保留資訊儲存在磁碟上,節點重新啟動後會存留下來。 不管您是否有 SCSI-2 磁碟或 SCSI-3 磁碟,failfast 機制的運作都一樣。

如果節點在叢集中失去與其他節點的連接,並且也不是可達法定容量的分割區,它會被其他節點強制從叢集中移除。 另一可達法定容量之分割區部分的節點,在共用磁碟上放置了保留,且當沒有法定容量的節點嘗試存取共用磁碟時,它會收到保留衝突並且由於 failfast 機制而當機。

在當機之後,該節點可能重新啟動並嘗試重新連結叢集,或者停留在 OpenBootTM PROM (OBP) 提示符號處 (如果叢集由基於 SPARC 的系統組成)。 採用的動作由 auto-boot? 參數的設定所決定。 您可以在基於 SPARC 的叢集中,於 OpenBoot PROM ok 提示符號處,使用 eeprom(1M) 來設定 auto-boot?,或者在基於 x86 的叢集中,於 BIOS 啟動後使用您所選擇執行的 SCSI 公用程式來設定。