章 5. 鎖定管理

鎖定管理是項常見的叢集基礎結構服務,它提供了一項機制,以讓其它叢集基礎結構元件同步共享資源的存取。在 Red Hat 叢集中,DLM(Distributed Lock Manager)便是鎖定管理程式。
鎖定管理程式負責控制叢集中的資源存取,比方說 GFS 檔案系統的存取。您需要這項機制,因為若缺少鎖定管理程式的話,便沒有能控制您共享儲存裝置存取上的機制,並且叢集中的節點將可能會損毀互相的資料。
顧名思義,DLM 是個散佈式鎖定管理程式,並且執行於各個叢集節點中;鎖定管理會被散佈至叢集中的所有節點上。GFS2 和 CLVM 使用了來自於鎖定管理程式的鎖定。GFS2 使用了來自於鎖定管理程式的鎖定來同步(位於共享儲存裝置上的)檔案系統 metadata 的存取。CLVM 則使用來自於鎖定管理程式的鎖定來同步 LVM 卷冊和卷冊群組的更新(也是在共享儲存裝置上)。此外,rgmanager 使用了 DLM 來同步服務狀態。

5.1. DLM 鎖定模組

DLM 鎖定模組提供了大量的鎖定模式,以及同步與非同步的執行。應用程式會在一項鎖定資源上取得鎖定。鎖定資源與鎖定之間有項一對多的關係:單一鎖定資源能夠有多個與它相聯的鎖定。
鎖定資源可與一項實際的物件相對應,比方說一個檔案、資料結構、資料庫,或是一個可執行的外部常式,不過它不一定非要與它們相對應。您用來與鎖定資源相聯的物件,可判定鎖定的規模。將資料庫中的各項項目鎖定,會被視為是精細規模的鎖定。
DLM 鎖定模組支援:
  • 六種不同資源存取限制的鎖定模式
  • 透過轉換動作來進行鎖定的升級與降級
  • 同步完成鎖定請求
  • 非同步完成
  • 透過鎖定值區塊制訂的全域資料
DLM 自行提供了支援其鎖定功能的機制,比方說管理鎖定流量的節點間通訊,以及在節點失效後重新制訂鎖定,和在節點加入叢集時遷移鎖定的復原協定。然而,DLM 並不會提供實際管理叢集本身的機制。因此,DLM 會被預期在一個叢集中,連同另一個提供了下列最小需求的叢集基礎結構環境聯合運作:
  • 節點乃叢集的一部分。
  • 所有節點皆接受叢集成員並擁有仲裁。
  • 節點上必須有組和 DLM 通訊的 IP 位址。一般來說,DLM 會使用 TCP/IP 來進行節點間的通訊,這會限制一個節點僅能有單一組 IP 位址(儘管您可使用 bonding driver 來進行重複)。DLM 可被配置來使用 SCTP 作為其節點間的傳送工具,這便能允許一個節點擁有多組 IP 位址。
DLM 適用於任何滿足了上述基本需求的任何叢集基礎結構環境。使用開源式或是封閉式的環境取決於使用者。然而,DLM 的主要缺點就是進行測試的不同環境有限。