vSAN的四大Component - CMMDS、DOM、CLOM、LSOM
這四個組件從最底層與物理硬碟交互到最上層協同各個Cluster裡的Nodes,彼此各司其職。本篇將介紹的是vSAN CLOM。
技術、閱讀、生活
vSAN 的四大組件:CMMDS、DOM、CLOM、LSOM,從最底層與物理硬碟交互到最上層協同各個 Cluster 裡的 Nodes,各司其職。下圖展示了它們的大致交互邏輯,本文將介紹 vSAN 的 CMMDS。
vSAN DOM(Distributed Object Manager)顧名思義,就是負責管理 Object 以及分散 Component。
Component 是由 LSOM 管理,會在下一篇提到。
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主要是以Object的形式作為儲存單位,存的是VM Object,而Block和File兩個常用的儲存單位也經常被大企業或資料中心所用到。vSAN當然也有暴露相關的接口,這裡來聊聊vSAN裡iSCSI存取block storage和Fileservice存取檔案的原理。
首先,SCSI是SAS/SATA的SSD/HDD用於與作業系統溝通的一種interface protocol,本來是需要透過實體接口才能進行存取。後來又制定了可以透過網路TCP/IP來傳送SCSI指令的技術,叫做iSCSI,使得連接距離可以達到無上限,連結的伺服器數量也是無限。
這也是為何vSAN提供此接口的原因。vSAN本質上是一塊專用儲存網路,形成了一個儲存池,外部應用可以隨時取用、擴容等等。像是Thin provision,vSAN加上iSCSI技術,把儲存變成「可路由」的,像普通的網路通信一樣,使得遠在天邊的應用或主機可以直接存取vSAN上的儲存池。
前面說到了 Fault Domain,我們可以把相同機櫃的 host 匡列成同個 Group,這樣 Object 下的 Component 就會被分散在不同機櫃裡。但如果擔心地震、火災等自然災害會讓整個 Datacenter 遭殃,不就會造成永久的 Data loss 嗎?
Stretched Cluster 是一種異地備援機制,可以建立兩個位於不同地區的 Datacenter 作為 Fault Domain。不過由於跨地區,Witness 必須是獨立於 Cluster 之外的 Host,可以是單個,也可以是多個。
我們知道,vSAN是一個以Policy為基礎的分散式儲存系統。vSAN會根據Object設定的Policy,把Object下的Component妥善地分散在不同Host上。
Policy指的就是RAID 0/1/5/6,目前常見的有這四種。RAID 5/6由於需要進行erasure coding和XOR操作,會耗費一些計算資源和I/O,所以只有在使用all flash架構時才能設定。
再讓我們把主題切回vSAN。現在我們有了儲存系統 - Object Storage的基本知識後,我們可以更深入的探討vSAN是怎麼存Object的。
vSAN是一種軟體定義儲存的產品,它的儲存單位是Object。Object是什麼呢?回到Day 06,Object可以理解為一個巨大的資料夾,每個檔案就是一個Object,所以搜索Object資料不用一個個資料夾找。今天我們更深入的來理解所謂的「軟體定義」以及Object/Component在vSAN裡面代表著什麼。
Disk 由於晶圓問題、 firmware 問題、 driver 問題等等會造成一定機率上的故障。如果一塊硬碟每天的故障機率是 1%,那麼一座資料中心假如有一萬個 disk,代表每天有一百塊硬碟損壞。當然, vSAN 對於部分類型損壞會嘗試自動修復,這樣能夠大幅減少許多人力成本,畢竟大部分的問題重開機就能解決。
LSOM 是最底層與硬碟打交道的 component。他的 DDH (Degraded Device Handling) service 可以幫忙監控硬碟狀態,當 DDH 偵測到 disk 即將要故障或損壞事件時,就會把 disk 標記為有問題的裝置,讓它不再參與資料的 I/O 流程。更多細節可以參考 VMware KB:https://kb.vmware.com/s/article/2148358
NVMe 是一種主機與 SSD 之間溝通的協議。前面說到 PCIe 有三層, NVMe 屬於第四層,是協議中的最高層,如下圖所示。
科技日新月異,第一款商用SSD固態硬碟於1991年問世,當時大小只有20MB,然而由於價格太貴,一直到2007年,才開始產生主流需求。在SSD大行其道之前,主要是HDD的天下。到了2022年,SSD單位容量的成本越來越低,所有有興趣想涉略儲存領域的人都必須了解SSD。
SSD和HDD最大的差別就是「介質」的不同。HDD使用「磁」的正負極記錄0和1的資料,而SSD使用的是「電子」正負極代表0和1,這間接影響了尋址的速度。HDD需要一個磁碟頭在磁盤上逐一掃描,而SSD利用電子,能快速定位目標地址,這也說明了為何SSD相較於HDD有這麼大的I/O速度差異。