[vSAN]vSAN的是怎麼做分散式儲存的

我們知道,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
  • Reduce availability
    • vSAN正在重建Object使之符合Policy Compliance,短暫時間無法取用Object。有時候可以立即重建,有時候需要等待一段時間(預設值為60分鐘)。

總結

  • vSAN是一個以Policy為基礎的分散式儲存系統
  • Policy設定包括RAID 0/1/5/6和FTT
  • Fault Domain用於提升資料安全
  • Stretched Cluster適用於Datacenter層級的備份
  • vSAN會自動應對異常事件並嘗試修復Component