vSAN的四大Component - CMMDS、DOM、CLOM、LSOM,他們四個從最底層與物理硬碟交互到最上層協同各個Cluster裡的Nodes,彼此各司其職,大致上的交互邏輯如下圖所示,本篇將介紹的是vSAN CMMDS。
vSAN CMMDS(Cluster Monitoring, Membership, and Directory Service)主要運作在ESXi的kernel層。負責在vSAN Cluster和vSAN Node之間,進行探索、維護等監控任務,並管理Cluster裡的各項資源,例如網路、儲存空間、Component數量等。這些Cluster metadata會以key-value形式存在directory中。
由於vSAN是一個分散式儲存系統,directory上面的資料難免會有碰撞和衝突。vSAN CMMDS採取的是master-agent架構,vSAN Cluster會透過Paxos演算法選舉出master node,其他node則為agent。當Object訊息發生異動時,agent會向master node提供更新訊息,由master決定是否要更新。同時,master也會單播(unicast)這些metadata訊息給其他節點。節點彼此間會透過經典的heartbeat傳輸以保證Cluster內的所有node都是健康的。
vSAN CMMDS為最終一致性架構,意思是如果A對一個Object做寫入或修改,同時B讀取Object的metadata時可能會有過期的資訊。一般來說,1毫秒內可以消除這個資訊不對稱的問題。
到目前為止,vSAN CMMDS聽起來像是vSAN內部的一個Backend Service,專門搜集Cluster的metadata然後存著。那麼,vSAN的哪個Component會對CMMDS發出request呢?是DOM(Distribute Object Manager)。我們會在下一篇提到DOM。
更多vSAN相關的文章歡迎參閱我的部落格: https://kaichiachen.github.io/2023/09/15/vsan/ioworkflow_cmmds/