2020年1月18日 星期六

(VMWARE vSAN) - VMware vSAN學習過程總結

  • 2019年12月18日上了VMWARE vSAN免費體驗的課程,其實在上體驗課程之前,我就已經有在自學vSAN了,但是還是想多了解老師在講解vSAN的建置、架構有沒有我還不知道或是需要注意的地方,而我在2019年4月左右已有寫一篇簡易的文章,有興趣的人可以先看看。而這篇文章主要是將這次所上的體驗課程消耗一下,並與之前所自學的一起做個總整理。

  • 簡單介紹一下vSAN的架構


※ 硬體最好是有符合VMware所認證過的vSAN兼容性 (尤其是I/O Controller)
 I/O Controller需配置Passthrough Mode
※ 環境需要有ESXI及vCenter Server平台
※ 最少需求建議3台ESXI以上   (預設FTT=1、FTM=RAID1)
※ 每台ESXI最好預留CPU(10%)及RAM(32G)以上的資源,以利於當vSAN正在執行I/O負載時,能有更高的效率來運作
※ 網路環境建議採用10G以上  (vSAN不支援負載平衡,除非採用其它LACP的方式才能達到負載平衡的效果)
補充:在vSAN的環境下,vSphere HA是走vSAN VMKernel的流量,並不是Management VMKernel的流量
※ 每台ESXI需建立VMKernel Port並啟用vSAN服務,讓各台ESXI可以相互通訊vSAN的資料與同步作業
※ 虛擬機器可依照使用者定義Storage Policy的配置來管理 (條帶化Stript、FTT、FTM)
※ 每台ESXI最多5個Disk Group
※ 每一個Disk Group最少需要1顆SSD快取層及1顆HDD(Hybrid)或SSD(All Flash)資料層,最多可以1顆SSD快取層及7顆HDD(Hybrid)或SSD(All Flash)資料層  (快取層SSD建議選用SLC、MLC有較高的寫入次數壽命)
※ 每一個Disk Group快取層/容量層比例為1:10   (快取層600G/容量層6TB)
※ 讀寫部分則是透過緩存及快取來提高效能

  • 我們來看Hybrid Disk Group架構
圖片來源:VMWARE vSAN體驗課程教材

※ 在vSAN Hybrid環境下,快取層會利用70%的空間來做讀取,而30%是用來寫入。在讀取部分,vSAN會檢查緩存層(70%)是否存放欲讀取的資料,若資料剛好在緩存層,可以直接從SSD讀取,若沒有則會從資料層去抓取欲讀取的資料。而在寫入部分,當資料寫入時會先寫至快取層(30%),並不會直接寫入至容量層。
※ Hybrid架構是不支援重複壓縮刪除及RAID5、RAID6

  • 接著我們再看All Flash Disk Group架構
圖片來源:VMWARE vSAN體驗課程教材

※ 在All Flash環境下,100%的空間都會用於讀寫的作業,但是值得注意的是同一時間最多只會使用600G的空間。在讀取部分,若資料不在快取層,則會從資料層來讀取,由於資料層是採用SSD,所以在效能上也比較不會有I/O上的瓶頸發生。而在寫入的部分,可透過以下圖發現,若採用800G的SSD當快取層,則第一次寫入資料會用到其中600G的資料塊,接著下次再寫入時,會再從其它的資料塊來寫入600G的空間,藉此來降低SSD上的Cell磨損,有助於延長壽命。
※ 支援重複壓縮刪除及RAID5、RAID6



在體驗課程中詢問老師問題:
1.由於快取層SSD同一時間只會使用600G空間,那麼一個Disk Group是否可以放超過6TB以上的空間呢??
答:是可以,但是不建議放那麼大的空間,這可能會影響到整體的IOPS,若真的磁碟空間需求大時,可以考慮拆分多個Disk Group即可。
2.Hybrid快取層SSD是否也有600G限制呢??
答:不論是Hybrid或是All Flash都是一樣的。


  • 在vSAN環境下,虛擬機器存儲原則可以說是扮演非常重要的角色,依照使用者的環境配置,藉此讓虛擬機器達到更理想的效能及保護
圖片來源:VMWARE vSAN體驗課程教材

圖片來源:VMWARE vSAN體驗課程教材

  • vSAN環境下的物件
圖片來源:VMWARE vSAN體驗課程教材

  • 在vSAN環境下,當vmdk容量大於255G時,則會自動拆分為2份數據出來,也就是說若是300G的vmdk,在RAID0情況下,則會分成一個255G的vmdk及一個45G的vmdk  (若其中一個vmdk損毀或是遺失,就會造成無法正常讀取)

圖片來源:VMWARE vSAN體驗課程教材

  • 可依虛擬機器針對每個vmdk去自行定義不同的Policy
圖片來源:VMWARE vSAN體驗課程教材

※ 因為這邊範例我先用3台ESXI來做,所以嘗試選擇RAID5的時候,vSAN會自行偵測目前節點數量是否足夠,若檢查到節點數量不足時,就會跳出Alert

  • 接著我們來看重複資料刪除與壓縮的部分,在VMWARE體驗課程教材上有提到若有很多大量的影片檔時,是沒有什麼效果的,反而在文書檔案(TXT、office..等)才有明顯的幫助,另外要注意的是只有All Flash環境下才可以啟用重複資料刪除及壓縮功能
圖片來源:VMWARE vSAN體驗課程教材


  • 來看Swap File Effciency的部分,在vSAN 6.6版以前,Swap預設並不是採用Thin Provision方式來存放,所以若Swap空間很大時,再加上Mirror的話,可是非常耗空間的,而來到vSAN 6.7以後預設才會Thin Provision,當然vSAN 6.6版本以前是可以自行修改為Thin Provision即可
圖片來源:VMWARE vSAN體驗課程教材

圖片來源:VMWARE vSAN體驗課程教材

  • 在vSAN環境下可提供ISCSI目標服務,讓其它伺服器主機可以透過ISCSI來連接vSAN提供的LUN,且還支援Windows Server Failover Cluster (WSFC),另外值得注意的是vSAN所提供的ISCSI Target是不能給其它ESXI來掛載的唷
       參考網址:https://docs.vmware.com/tw/VMware-vSphere/6.5/com.vmware.vsphere.virtualsan.doc/GUID-13ADF2FC-9664-448B-A9F3-31059E8FC80E.html  

圖片來源:VMWARE vSAN體驗課程教材

  • vSAN授權資訊

  • On-Disk Format Version
每個vSAN版本都會對應各至vSphere版本,若有升級On Disk Format需求時,除了要確保是否符合硬體的兼容性外,還要特別確認升級vSAN On Disk Format的要求,另外在升級前務必要注意是否有正在同步佈建的作業以及vSAN健康的狀況

                    https://kb.vmware.com/s/article/2145248

  • 接著我們來看vSAN Storage Policy的部分

站台災難容錯依使用者環境定義是否為Stretched Cluster或是非延伸叢集,並選擇適當的保護需求

※ 定義物件可容許故障的次數以及用於容錯故障的方式,依使用者環境需求,針對虛擬機器來定義適當的效能與保護的配置

PFTT=1,RAID=1  (1個故障 - RAID1)
PFTT=1,RAID=5  (1個故障 - RAID5)
PFTT=2,RAID=1  (2個故障 - RAID1)
PFTT=2,RAID=6  (2個故障 - RAID6)
PFTT=3,RAID=1  (3個故障 - RAID1)









(1) PFTT=1,RAID=1  (1個故障 - RAID1)

環境最少需要3台ESXI主機,vmdk會有2份相同的數據放在各台ESXI主機上,另外還會有一台是Witness用,當遇到一台故障時,若只有3台ESXI主機,這時就無法進行Rebuild作業,所以在一般環境下4台才是最理想的架構


(2) PFTT=1,RAID=5  (1個故障 - RAID5)
環境至少需要4台ESXI主機,此架構沒有所謂見證的角色,而是將數據與奇偶校驗訊息分散在各至的ESXI主機上,與RAID1相比,節省了更多的空間,當然若一台ESXI主機發生故障了,考慮到Rebuild的問題,所以比較理想的架構是5台以上



(3) PFTT=2,RAID=6  (2個故障 - RAID6)
環境至少需要6台ESXI主機,與RAID5相比,一樣是將數據與(多一個)奇偶校驗訊息分散至每台ESXI主機上,而在效能上是會比較差的,但是多了更高的容錯率,同一時間內可允許2台ESXI主機故障,也能保持伺服器的服務,但是考慮到Rebuild的問題,當然比較理想的架構是7台以上



(4) PFTT=2,RAID=1  (2個故障 - RAID1)
環境至少需要5台ESXI主機,有2台擔任見證的角色,因複寫數為2,所以總共會有3份相同的數據放在不同的ESXI主機上,與PFTT=1,RAID1相比,所佔的容量會再多出一份數據出來,但是在同一時間內可允許2台ESXI主機故障,當然考慮到Rebuild的問題,較理想的架構是6台以上


(5) PFTT=3,RAID=1  (3個故障 - RAID1)
環境至少需要7台ESXI主機,有3台主機是擔任見證的角色,由於複寫數為3,所以總共會有4份相同的數據放在不同的ESXI主機上,與PFTT=2,RAID=1相比,容量再多出了一份數據的空間,同一時間內可允許3台ESXI主機故障,當然考慮到Rebuild的問題,較理想的架構是8台以上


※ 這邊是配置每個物件的磁碟量區數量,若設定值為2,則一個vmdk會分成2份數據放至不同的硬碟上,以利於提升效能,但是相對也會耗費更多的系統資源,在一般環境下都是建議採用預設值1即可



※ 這邊可以針對特定的物件自行定義IOPS限制,一般基準為32KB,採用64KB則表示有2個I/O,一般環境下預設採用預設值0即可

※ 定義物件空間保留區,預設都是為精簡佈建為主,若有特定需求可以自行配置

※ Flash Read Cache保留區,可針對特定的虛擬機物件保留一定的Cache空間,但是這個被保留的Cache空間是不會提供給其它的物件來使用,此環境僅支援Hybrid架構,在一般環境下建議預設即可

※ 當vSAN欲進行佈建作業,若遇到vSAN叢集資源不足時,也可以依使用者自行定義是否要強制佈建



1. 那麼我們開始建立vSAN最簡單的環境(三台),首先在vSAN Cluster將ESXI主機都加進來後,每台ESXI主機還需建立VMKernel網路介面卡(啟用vSAN服務)

2. 選擇單一站台叢集

3. 宣告磁碟並配置Disk Group

4. 完成

5. vSAN就建立完成了

6. 再加入一台ESXI主機進來,加入前記得需先配置VMkernel介面卡(vSAN)

7. 宣告磁碟並建立磁碟組

8. 接著我們來看在PFTT=1,RAID1的場景下,若ESXI03主機故障了會發生甚麼事呢??

9. 這邊可以發現物件修復計時器預設是60分鐘(時間可自行定義),也就是當vSAN檢測到主機或是磁碟故障時,導致有數據遺失(損毀),若經過60分鐘後,依然判斷無法正常讀取遺失(損壞數據)就會自行進行Rebuild作業

10. 目前該虛擬機器已變成降級的狀態

11. 我們可以執行立即重新佈建作業  (過程中會幫我們統計大約的時間及需佈建所剩餘的空間)

12. 這邊可以看到ESXI01上的磁碟組正在進行Rebuild作業

13. 原在ESXI01見證的檔案已移轉至ESXI04,則數據將重新佈建在ESXI01主機上

14. 已完成重新佈建的作業

15. 我們再來看若容量層的其中一顆硬碟發生故障了,會發生甚麼事情呢?

16. 這邊可以看到其中一顆硬碟已檢測到狀況不良且無法讀取

17. 等待重新同步佈建完成後,我們來更換ESXI01主機上的故障硬碟

18. 將故障硬碟拔除,並插入新的硬碟

19. 至Storage Device Rescan

20. 這裡可以看到剛剛新插入的硬碟

21. 新增硬碟至Disk Group

22. 新增

23. 新增硬碟至Disk Group完成

24. 接著不要忘記把壞掉所殘留的磁碟移除掉,但是卻發現了不科學的事情

25. 改成登入Flash管理介面試試

26. 因為故障的硬碟已經無法讀取了,所以選擇無資料撤除

27. 已順利移除


28. 那麼我們來看,若快取層的SSD發生故障了,會發生甚麼事情呢?

29. 這邊可以看到已檢測到快取層的SSD故障了

30. 位於故障(SSD)快取層磁碟組底下的容量層資料都會重新佈建到其它可用的磁碟組上

31. 由於磁碟組上的快取層SSD故障,需把整個磁碟組移除掉,並重新建立
(移除前請先務必確認重新佈建資料的作業是否完成)

32. 更換快取層故障的SSD後,開始建立新的磁碟組

33. 磁碟組建立完成

34. 接著我們來看vSAN延伸叢集的架構,在VxRail Stretched Cluster Solution中有提到針對不同的保護機制,就需符合主機的數量。而在延伸叢集中多了一項SFTT原則,而這項原則指的是站內要採用RAID1、RAID5/6..等保護,另外還需要部署一台vSAN Witness才可以,這是為了當兩邊站台網路之間無法相互通訊時,避免導致腦裂的情況發生。因這邊LAB環境資源有限的關係,只能做PFTT=1,SFTT=1;FTM=RAID1(3+3+1)以及PFTT=1,SFTT=1;FTM=RAID5(4+4+1)

35. 這邊我有簡單的整理一下在Stretched Cluster不同的保護機制下,單站點及總站點所佔的容量
     補充:在延伸叢集下,PFTT=0~1、SFTT=0~3
                PFTT代表是否要複製數據至跨站點上 (0=否,1=是)
                SFTT代表數據要多少份 (如SFTT=2就是會有3份數據)

36. Witness可以是第3方公有雲平台或是其它廠區、支援地區等環境,比較值得要注意的是Site與Site之間網路Latency建議是小於5ms,而Site與見證之間的網路Latency是小於200ms即可

參考相關資料:


37. 首先匯入OVA來Deploy一台Witness Appliance

38. 部署Witness Appliance時會有2個網路  (一個是管理、另一個是給vSAN)

39. 其實vSAN_Witness就是一台ESXI系統


40. 接著將Witness主機加進vCenter Server並配置網路

41. 開始配置Stretched Cluster

42. 宣告磁碟並建立磁碟組

43. 配置各站點要存放的網域

44. 在步驟40已有說明Witness主機是不能加至vSAN Cluster內,但是網路還是需要跟vSAN通訊才可以

45. 一樣需要建立磁碟組

46. vSAN Stretched Cluster建立完成

47. 如下圖所示,在PFTT=1,SFTT=1;RAID1環境下,各站點都各有2份數據及1個見證,也就是說總站點會有4份數據及3個見證角色

48. 那麼我們來看在PFTT=1,SFTT=1;RAID1架構時,若當慣用站點發生災難時,會發生甚麼事情呢?

49. 位於已故障的慣用站點虛擬機器會透過vSphere HA移轉至次要站點上並持續運作服務

50. 接著再來看PFTT=1,SFTT=1;RAID5的架構,兩邊站點都各有RAID5的保護,而第3站點則是唯一見證的角色



51. 那麼我們也來看在PFTT=1,SFTT=1;RAID5環境下,當慣用站點發生災難時,會發生甚麼事情呢?

52. 位於已故障的慣用站點虛擬機器也是會透過vSphere HA移轉至次要站點上並持續運作服務

53. 那麼我們來看vSAN在Windows Server Failover Cluster上的場景,由於在Windows Server Failover Cluster功能下可以保護虛擬機器OS層上的服務,就算該虛擬機器故障了,也會透過WSFC功能將服務移轉至其它虛擬機器上並持續運作,所以說可以完全不用依賴vSAN DataStore的保護,並且還節省了在vSAN上的容量開銷   (如:Exchange DAG、SQL AlwaysOn..等)

54. vSAN也有針對比較特殊的環境來提供對應的Solution,若公司環境是屬於分散在各地的縣市外(例如:SI整合維護公司),各站點的環境需求並不多時,也許只需要2台ESXI主機即可應付,這時就可以採用vSAN所提供的ROBO方案

建置前注意事項:
(1) 各分公司站點至少需要2台以上ESXI主機
(2) vCenter Server不能放至分公司的同一個DataCenter環境下
(3) 各分公司都必須部署各至站點的Witness主機
(4) Witness主機一定要可以與各分公司站點的vSAN網路通訊

更多的ROBO資訊參考網址:

55. 那麼就來開始建立vSAN Two Node架構

56. 選擇給予台北分公司的Witness主機

57. 按下完成開始設定

58. 接著配置高雄分公司的vSAN平台

59. 這邊可以看到台北與高雄都有各自的容錯網域

60. 當然只有2台ESXI及1個Witness的情況下,就只能採用PFTT=1;RAID1來保護我們的數據

61. 假如2台ESXI主機已經無法應付台北的需求了,只要License的部分沒問題的話,就可以很方便得加入至vSAN內

62. 另外剛好順便測試一下,因為之前有朋友剛好有問過我,若在ROBO環境下是否可以採用RAID5來保護數據,當時也在忙,且環境也不夠,所以趁這次做起來的Report就順便幫朋友測試一下囉

63. 接著我們來看最後的場景,在單一站點若採用VxRail G系列一定需要注意的地方,由於G系列都是採用2U 4節點的伺服器

64. 若數據都放在左邊這台的話,當這台VxRail伺服器整台故障了(主機板燒毀),就會導致數據的遺失,所以我們需要建立容錯網域來避免這問題的發生

65. 在單一叢集站點上vSAN可以自行建立容錯網域

66. 選擇位於各至伺服器上的ESXI主機

67. 這邊要特別注意一下,就是必須要建立3個以上的容錯網域才可以,因為vSAN最少需求就是要有2台主機來存放數據+1台見證主機

68. 由於我這邊的環境已經到極限了(8台),所以只能從其它容錯網域的主機先拿一台來擔任第3個容錯網域

69. 我們來看在PFTT=1,RAID1環境下,vmdk分別放置在容錯網域01及02上,而見證角色則是為容錯網域03的主機上,藉此避免數據都放置在同一個機架伺服器內

70. 當然較理想的架構還是最好需要3台以上


◎ 結論:在步驟24移除硬碟竟然發生不給移除的情況,雖然說目前可以採用其它方式移除,但是之後推出的vSphere版本已確定不在支援Flash管理介面了,所以希望未來這個問題可以得到解決囉。


沒有留言:

張貼留言