Disk 由於晶圓問題、firmware 問題、driver 問題等等會造成一定機率上的故障。假如一塊硬碟每天的故障機率是 1%,那麼一座有一萬個 disk 的資料中心,每天可能會有 100 塊硬碟損壞。當然,vSAN 對於部分類型的損壞會嘗試自動修復,這樣能大幅減少人力成本,畢竟大部分問題重開機就能解決。
LSOM 是最底層與硬碟打交道的元件,它的 DDH(Degraded Device Handling)服務可以監控硬碟狀態。當 DDH 偵測到 Disk 即將故障或損壞時,會將 Disk 標記為有問題的裝置,讓它不再參與資料的 I/O 流程。更多細節可以參考 VMware KB:https://kb.vmware.com/s/article/2148358
這裡列舉 vSAN 偵測到的硬碟狀態及其原因:
Permanent Disk Loss (PDL) 是一種嚴重的錯誤,需要人工介入。一般情況下是 Host 與 Disk 的連結出了問題,無法連接。可能是 ESXi Host 內部或 Disk 的 bug 導致的。
這種錯誤可以藉由多次 I/O 重試修復。一般是由於 ESXi Host 內部或 SCSI 的 bug,例如 I/O 工作負載突然激增。
Stuck I/O 發生在 ESXi Host 外面,一般由 firmware 或 hardware 的 bug 導致 I/O 無法完成。在 vSAN 7.0 Update 3 以前,Stuck I/O 會使整個 Host 關機。一個 disk 的 I/O 無反應會影響整個 Cluster 處理 I/O 的進程,自動重啟後 I/O 仍會繼續 Stuck。因此,最好手動移除 Disk 再重啟。vSAN 7.0 Update 3 之後,監控平台會提示使用者某個 Disk 發生 Stuck I/O,需要手動重啟 Host。
Unrecovered Read Error (URE) 是 LSOM 遇到 metadata 讀取錯誤時發生的問題。這是由於 Disk 介質的錯誤,能夠自動修復。當 Disk 發生 URE 並且 DDH 開啟時,vSAN 會透過將資料撤出並重建 disk 來處理此錯誤。
當 LSOM 偵測到過多的 High Latency I/O 時會觸發此狀態。
當 LSOM 偵測到以下 Congestion 時,會通知 DOM 降低 I/O 流量直到 Congestion 解除:
最後,當 DDH 偵測到 Disk 的錯誤後,需將 Disk 上的 Object Component 即時撤離,此時需進行 Evacuation 操作。
由於 Disk 發生錯誤,需要將 Disk 上的 Component 撤出到其他 Disk,以確保 Object 能符合使用者設定的 Policy。當然,也可能發生 Evacuate 錯誤,此時需要人工介入。關於 Evacuation 的結果,有以下三種:
更多vSAN相關的文章歡迎參閱我的部落格: https://kaichiachen.github.io/2023/11/18/vsan/physical_disk_states/