VMware SDS 之三:VSAN的體系結構(含VSAN 6.0、6.1版的新內容)

搭建一個VSAN集羣(也可稱爲羣集),至少要三個服務器節點(也即ESXi主機),其中兩個主機存放副本,剩下一個主機存放「見證」(也即Witness,充當仲裁)組件,這樣能夠容許最多一個主機出故障,同時確保虛機無中斷地持續運行(有時須要結合vSphere HA進行重啓)。不過在VSAN 6.1新增的一個特性,也即遠程分支辦公室的場景下,Witness不必定要放在一臺真實的物理服務器上,能夠存放在ESXi虛機上,後面會有詳細描述。注意,本文後面提到的副本(Replicas)數,就是包含原件和鏡像在內的全部的數量,也就是說,n個副本意味着總共n份數據php


須要注意的是,儘管VSAN徹底支持3個主機的配置,但若是可行,建議至少4個主機。這是由於,只有3個主機的VSAN集羣,在發生故障時,有些狀況下,VSAN沒法在羣集中的其餘主機上從新構建(Rebuild)組件(Components)來容許另外一次故障。一樣,在3個主機配置下,VSAN不能在維護模式(Maintenance Mode)期間從主機遷移全部數據。算法


而4個主機的VSAN羣集能夠提供更高的靈活性。VSAN集羣最多時能夠支持64個主機。每臺爲VSAN提供存儲資源的主機至少有一個SSD,及一個HDD。每臺主機至少6GB內存。緩存


下面咱們依次介紹VSAN的配置、磁盤組、vsanDatastore、對象、組件和網絡。服務器


1. VSAN的兩種配置–混合與全閃存
網絡

截止目前,VSAN最新的版本是6.1,是2015年9月發佈的,對應的vSphere版本是ESXi6.0 Update 1分佈式

VSAN 6.0之後,包含兩種配置:ide

(1)混合配置(Hybrid):緩存層爲SSD,持久化層(也稱爲容量層)爲HDD(機械磁盤);性能

(2)全閃存配置(AllFlash):緩存層和持久化層都是SSD;通常選取速度更快、耐久性更好的寫密集型SSD作爲緩存層;選取成本更低、容量更大的讀密集型SSD作爲持久化層。測試

須要注意的是,當咱們計算存儲容量時,只能計算持久化層的存儲。緩存層只是用來作性能加速的。下圖展示了混合配置下的VSAN體系結構圖。網站

 

forum.php?mod=p_w_upload&aid=MzA0MjF8NDc


混合配置和全閃存配置都建議將10% 的已佔用容量」用於緩存層;而後再考慮NumberOfFailuresToTolerate(最大容許的故障數)。例如,用戶計劃置備 1000個虛擬機,每一個虛擬機有 100GB 精簡置備的邏輯地址空間。然而,他們預計一段時間內,每虛擬機佔用的存儲容量平均爲20GB。這樣,已佔用容量就是按照20GB計算,此時20GBx1000x10%=2TB。而不是4TB(即使有兩份副本)。須要注意的是,這個10%不是硬性要求的,主要仍是取決於須要被緩存提速的那部分活躍數據有多少。


在混合配置中,緩存算法會嘗試最大限度提升讀寫性能。緩存的70%爲讀緩存,用於存儲頻繁讀取的磁盤塊,從而最大限度減小對速度緩慢的磁盤的訪問。緩存的30%爲寫緩存,用於執行寫入操做,每一個IO會先寫入緩存層,再批量寫入持久化層。若是可行,系統會合並多個寫操做,並按順序寫入,從而再次最大限度提升磁盤性能。


在全閃存配置中,100% 的緩存都分配給寫入操做,由於持久化層的SSD(固態硬盤)提供的讀取性能綽綽有餘。大量寫入操做保存在緩存中,僅在須要時寫入持久化層的SSD,從而延長持久化層的壽命。常常在寫緩存裏訪問的熱數據仍然留在緩存裏,而不多被訪問的冷數據就Destage(刷)到持久化層的SSD裏。


混合配置下,強烈推薦使用支持直通(Pass-Through)模式的磁盤控制器。若是現有的磁盤控制器不支持直通模式,才考慮使用RAID-0,但須要注意的是,採用RAID-0配置HDD後,若是HDD出故障須要更換時,操做較爲複雜,須要從新配置RAID-0。採用直通模式時,只需簡單地插入新盤。



2. VSAN的磁盤組- DiskGroup

磁盤組是一組盤,每一個磁盤組包含1個SSD作爲緩存層1~7個HDD或者SSD作爲持久化層。緩存層的SSD爲同一個磁盤組內的持久化層盤***能加速。磁盤組這種設計,在混合配置下,同時兼顧了性能和容量。


forum.php?mod=p_w_upload&aid=MzA0MjJ8NzY

 


VSAN集羣中,容許某些主機不提供存儲資源,但通常不建議這麼作。每一個主機最多支持5個磁盤組。若是但願每一個主機使用多塊SSD,就須要建立多個磁盤組。通常而言,用於緩存層SSD的容量相對於持久化層的比率越高,可以用於IO加速的緩存就越多,性能就更有保障。


vmware官網發佈的《VMware Virtual SAN 6.0Performance - Scalability and Best Practices》白皮書中,咱們能夠了解到,測試的配置是:每一個主機有兩個LSIMegaRAID SAS控制器,每一個控制器對應一個磁盤組,每一個磁盤組配置1塊400GB Intel S3700 SSD和4塊900GB 1萬轉的SAS。測試的結果是,從4個到64個主機的不一樣集羣裏:


(1)4K大小IO,隨機,100%讀的時候,64個主機能達到740萬IOPS(平均每一個主機11.56萬IOPS,每一個主機的每一個磁盤組爲5.78萬IOPS);

(2)4K大小IO,隨機,混合讀寫(70%讀30%寫,模擬OLTP應用)的時候,64個主機能達到200多萬IOPS(平均每一個主機3.1萬IOPS,每一個主機的每一個磁盤組爲1.55萬IOPS);


能夠看出,在下圖中,兩個磁盤組相對於一個磁盤組,性能幾乎線性增加。


forum.php?mod=p_w_upload&aid=MzA0MjN8NzF

 

在《VMware Virtual SAN 6.0 Design and Sizing Guide》白皮書裏提到,VMware建議VSAN集羣內的每一個主機使用多個磁盤組。不只是爲了可能提升性能,同時也爲了減少故障域。由於每一個磁盤組的緩存層SSD只會影響該SSD所在的磁盤組的持久化盤,不影響同一主機的其餘磁盤組。


若是 3 節點羣集中每一個主機只有一個磁盤組,當其中一個閃存緩存設備發生故障時,將無處從新構建磁盤組中的組件。

然而,若是每一個主機有多個磁盤組,並且在某個閃存緩存設備發生故障時其餘磁盤組中有充足的容量,VSAN將可以在剩餘磁盤組中從新構建受影響的組件。這是在計劃部署 3 節點 VSAN 羣集時另外一個須要注意的事項。


3. VSAN的存儲池-vsanDatastore

VSAN聚合了集羣內的SSD和HDD,造成一個共享的存儲池,也即vsanDatastore被vSphere集羣使用。這個vsanDatastore能夠隨着主機、磁盤組或盤的增減,動態地在線地擴大或縮小。這爲業務(虛機)的彈性擴展奠基了堅實的基礎。下圖就是3個主機擴展爲4個主機後的vsanDatastore,從4.86TB動態地在線地擴大爲6.48 TB。


forum.php?mod=p_w_upload&aid=MzA0MjR8MGY

咱們知道,以往的傳統存儲劃分LUN給vSphere,作完VMFS格式化後,造成的datastore大小基本都是固定的,隨着業務規模的變化,存儲容量所需的在線調整很難實現,也即擴大和縮小比較複雜。


VSAN不只支持分佈式存儲的在線橫向擴展(Scale Out),也支持縱向擴展(Scale Up)。經過增長主機,提供存儲容量的vsanDatastore能夠在線擴大,同時總體的性能也線性增加。經過添加磁盤組,或者增長HDD,也可以使得vsanDatastore獲得在線擴大,這種在線的縱向擴展無需增長新主機,從而避免了計算資源的浪費。VSAN也支持在線移除磁盤組(建議先設置成維護模式- Maintenance Mode,雖然這不是必須),或者在剩餘空間足夠的狀況下,移除SSD或HDD。下圖能夠查看到,VSAN提供了直觀的圖形界面,進行磁盤組或盤的添加或移除。這位用戶對VSAN存儲管理和維護,提供了極大的靈活性和便利。也爲在線調整存儲的空間和性能,奠基了堅實的基礎。例如,經過增長SSD和磁盤組,或者經過依次將主機設置成維護模式,將主機的SASSSD更換成NVMe SSD(一種PCIe SSD),或者更換成UltraDIMM SSD(插在內存槽上的SSD),實現業務不停頓的狀況下,來在線提高性能。


 

forum.php?mod=p_w_upload&aid=MzA0MjV8ZmM



4. VSAN的對象–Object

須要清楚的是,VSAN不是分佈式文件系統,是分佈式對象存儲系統。VSAN的對象,是指符合SCSI語義的單個存儲塊設備。從概念上講,也能夠被視爲「卷」(Volume),即 Amazon EC2 和 OpenStack 中使用的術語。VSAN的對象取代原來傳統存儲中的LUN,成爲VSAN的主要存儲單元。VSAN的對象是帶有葉子的RAID樹。以下圖所示,這是一顆副本數爲2(也即最大容許故障數FTT=1),條帶數(也即副本橫跨的盤數)爲2的RAID樹,是一個VMDK對象。


forum.php?mod=p_w_upload&aid=MzA0MjZ8NzB


在vsanDatastore上,虛擬機有5種不一樣類型的對象,每一個虛擬機都是由這些對象的部分組合而成。以下圖所示,這些對象是:

VM Home(虛擬機主頁),或稱「名字空間目錄";

VM swap(交換文件對象),若是虛機處於開機狀態;

VMDK(虛擬磁盤),VSAN 5.5時,最大2TB,而VSAN 6.0時最大62TB;

Snapshots(快照),也即增量盤,創建快照以後每一個對象都有;

Memory(vmem,虛擬機內存文件),VSAN5.5時,當快照建立時,虛擬機內存以文件形式存放在VM Home裏。而在VSAN 6.0時,虛擬機內存在vsanDatastore裏實例化爲獨立的對象。


5. VSAN的組件– Components(含Witness)



組件是對象的RAID樹上的葉子,分佈在VSAN集羣中的各個主機上。其實,組件是按照兩種主要的技術分佈的:Striping(條帶),即RAID 0;和Mirroring(鏡像),即RAID 1。注意,RAID的構成和組件的分佈取決於最初建立的存儲策略。下圖是副本爲2,條帶爲2的組件分佈狀況。


forum.php?mod=p_w_upload&aid=MzA0Mjd8OGI


 

每一個組件都是存放在一個特定的「緩存層(SSD)+持久化層(如HDD)"的組合上,也即磁盤組上。組件如同對象同樣,是一個邏輯概念。以混合配置爲例,組件所對應的真實數據,最終都是要落到HDD的。不過,某一時刻,應用對它的讀寫發生在SSD,仍是HDD,取決於寫數據時,SSD的數據是否Destage(刷)到HDD上。或者讀數據時,是否從HDD複製到了SSD。主機的組件不只包括開機狀態下,還包括處於關機狀態下的虛擬機的組件。


VSAN5.5 目前支持每臺主機最多包含 3000 個組件,VSAN 6.0可達9000個組件

容量大於255GB的對象會自動被分爲多個組件。咱們知道,VSAN6.0 如今支持 62TB 的VMDK。然而,考慮到VSAN集羣支持的最大組件數,須要謹慎衡量應用程序是否真的須要這麼大的VMDK。以單個62TBD VMDK爲例,假設副本數爲2時,按照255GB拆分,須要消耗約500個組件。

此外,若是設定的每一個對象的條帶數超過默認值 1,則每一個條帶將計爲一個單獨的組件。

簡而言之,條帶即組件



爲了方便管理員詳細的瞭解VMDK對象各個組件的分佈位置,VMware提供了vSphere Web Client圖形界面,能夠清晰直觀地查看對象的構成和組件的分佈。


forum.php?mod=p_w_upload&aid=MzA0Mjh8MjI

 


須要注意的是,不管組件如何分佈,爲了確保可用性,VSAN毫不會讓不一樣的副本(鏡像)組件共用同一臺主機。

在VSAN 5.5中建立的每一個組件,元數據會佔用額外的2MB空間,此時磁盤格式爲1.0,對應的磁盤文件系統是VMFS-L。而在VSAN 6.0中,若是在磁盤格式 2.0(對應的磁盤文件系統爲VSAN FS)的持久化層上構建組件,則會佔用額外的4MB空間。


介紹Witness(見證)


在前面第4節-VSAN的對象的第一個圖裏,咱們還能夠看到,在組件中,有一個很是特殊的組件是Witness(見證),它只包含元數據,不給虛擬機提供存儲空間,不包含任何實際應用程序數據。見證組件和其餘組件必須位於不一樣的主機上。


在磁盤格式1.0時,見證約佔2MB空間;在磁盤格式2.0時則爲4MB。它作爲必要的仲裁對象,在VSAN集羣出現故障,尤爲是腦裂時,用來輔助判斷哪一個分區可用。在VSAN5.5時,哪一個分區的組件數超過50%,就決定哪一個分區是可用的。

在 VSAN 6.0 中,仲裁計算方式已經改變。規則再也不是「50%以上的組件」。相反,在 6.0 中,每一個組件都有許多votes(投票),能夠是 1 票或更多票。仲裁根據「須要 50% 以上的votes」這一規則計算。這就存在一種可能,也就是即使不使用Witness,組件分佈方式依然能讓 VSAN 保證允許故障數。然而,在VSAN6.0 中,許多對象依然有Witness,例如VM Home仍然使用Witness。


另外,在VSAN 6.1後,Witness作爲見證,不只能夠運行在物理的ESXi主機上,還能夠運行在第三個站點的虛擬機上,或者運行在公有云上,例如,在條件具有的狀況下,也能夠運行在天翼混合雲、或vCloud Air、AWS、Azure、阿里雲等公有云上。VMware已經準備好了特殊的Witness虛擬設備- VirtualSAN Witness Appliance 6.1 的OVA文件。其實就是裝有ESXi的虛機。這爲VSAN 6.1新特性中的兩個,也即(1)VSAN支持存儲雙活(Stretched Cluster)和(2)VSAN支持兩個主機的VSAN集羣(用於ROBO- 遠程或分支辦公室)提供了靈活性,也節省了成本。


6. VSAN的網絡–Network



VSAN 6.0對網絡的要求如圖所示。


forum.php?mod=p_w_upload&aid=MzA0MzF8OTk

 


在已啓用巨型幀的數據中內心,才建議將巨型幀用於VSAN的網絡部署。由於VMware測試發現,使用巨型幀能夠下降CPU利用率,增長吞吐量,然而,這兩項優點帶來的收益並不大,由於vShpere 已經使用 TCP 分段卸載(TSO)和大型接收卸載(LRO)帶來了相似的優點。

VSAN能夠將多個網絡接口聚合在一塊兒使用,以實現網絡的高可用,若是一個網口發生故障,另外一個將接管通訊。


VSAN 同時支持 VDS和VSS。


全閃存配置下,VSAN必須使用萬兆網口。混合配置下,雖然千兆(1Gbps)網口也能支持VSAN,但最佳實踐是建議使用萬兆(10Gbps)網口。若是使用萬兆網口,該網口能夠與其餘類型的網絡流量共享,例如 vMotion。若是在多個類型流量之間共享萬兆網口,則建議使用NIOC(Network I/O Control),用來阻止一種類型流量佔用全部帶寬。NIOC 要求使用分佈式交換機(VDS),NIOC在標準交換機(VSS)上不可用。不過,VMware會在含有VSAN的每一個vSphere版本,都提供 VDS。這意味着,不管部署哪一個版本,均可以配置 NIOC。



VSAN和其餘vSphere類型的流量可使用NIOC的份額(Shares)設置不一樣的QoS目標。下圖中的vMotion流量是一個例子,其餘vSphere類型的流量,如FT,iSCSI,管理,容災,NFS,以及虛機的流量都是相似的。


forum.php?mod=p_w_upload&aid=MzA0MzB8MTk


VMware SDS系列,未完待續……,歡迎持續關注。


本篇文章參考了《VSAN權威指南》、VMware官方網站和VSAN 6.0 Design and Sizing Guide等文章,並獲得了徐炯的幫助。在此一併致謝。

相關文章
相關標籤/搜索