我們知道,vSAN是一個以Policy為基礎的分散式儲存系統。vSAN會根據Object設定的Policy,把Object下的Component妥善地分散在不同Host上。
Policy指的就是RAID 0/1/5/6,目前常見的有這四種。RAID 5/6由於需要進行erasure coding和XOR操作,會耗費一些計算資源和I/O,所以只有在使用all flash架構時才能設定。
一般來說,Policy除了設定RAID 0/1/5/6,還可以設定FTT(Failures To Tolerate)。RAID設定的目的是調整怎麼對資料進行備份,而FTT則是設定能容忍幾台Host故障。例如,可以設定RAID 1和FTT=2。RAID 1的寫入邏輯是寫多份,由於FTT=2,vSAN會對資料一模一樣地寫三份,這樣才能容忍三個Host掛掉。
Fault Domain
我們把Object下的Component分散在不同的Host目的是為了安全。如果一台Host掛了,資料也不會丟失。但是現在的主機可能是機架式的,這意味著機架掉電會讓整個機架上的Host都掛掉。如果Object下的所有Components都放在同個機架上怎麼辦?
我們可以對一組Host進行Group,這一組Host稱為Fault Domain。這樣一來,如果設定RAID 1和FTT=1,Object下的兩個Component加上Witness就會分散在不同的Fault Domain。注意,vSAN Cluster至少需要三台Host,也就是說如果要設定Fault Domain,至少需要三個Fault Domain。
那接下來有個疑問了,如果我想做Datacenter層級的備份呢?如果Datacenter失火了,我想要兩個Datacenter,並把Component分配在這兩個Datacenter?這時候就需要Stretched Cluster來解決這個問題。
Object如何從異常中恢復
當vSAN偵測到異常事件,例如Host掉電、Disk損壞、網路異常等,vSAN會確認故障的設備存放哪些Component,並嘗試對這些Component進行修復,同時將資料I/O導向健康的Component。
遇到不同的異常事件,vSAN會採取不同的應對方式,優先重建Component。如果無法重建,例如vSAN Cluster只有三個Host且Policy是FTT=1且一個Host掛了,就會標記為無法重建。以下列舉幾個在vSAN中定義的Object狀態:
- Inaccessible
- vSAN的Object無法重建,需要人工干預和排查Root Cause,屬於嚴重錯誤。
- Unassociated
- 當vSAN裡的Object沒有和某一台VM關聯起來,就會被判定為unassociated。
- VMware KB: https://kb.vmware.com/s/article/70726
- Reduce availability
- vSAN正在重建Object使之符合Policy Compliance,短暫時間無法取用Object。有時候可以立即重建,有時候需要等待一段時間(預設值為60分鐘)。
總結
- vSAN是一個以Policy為基礎的分散式儲存系統
- Policy設定包括RAID 0/1/5/6和FTT
- Fault Domain用於提升資料安全
- Stretched Cluster適用於Datacenter層級的備份
- vSAN會自動應對異常事件並嘗試修復Component