張宇


摘要:為了解決VMware vSAN集群中某些節點意外損壞導致集群中部分虛擬機無法正常使用問題,提出了一種基于vSAN集群中損壞節點元數據和現有節點元數據重新恢復用戶損壞數據的方法。在vSAN集群中某個節點的緩存硬盤或容量硬盤損壞率達到策略上限時,或vSAN集群出現突然斷電、網絡故障等特殊情況時,導vSAN節點宕機無法正常使用時可啟用此恢復方法。通獲取宕機節點中緩存硬盤中的緩存鏈表及容量硬盤中組件相關信息來確認用戶損壞數據的范圍,并根據包含用戶損壞數據的現存節點中的相關信息進行重建,進而實現對損壞虛擬機的恢復。實驗結果表明,經該方法在vSAN集群節點損壞硬盤時或節點不可用時,可恢復用戶丟失的重要數據,并且恢復的概率相當高。
關鍵詞:VMware vSAN集群;節點損壞;數據恢復
中圖分類號:TP3 文獻標識碼:A
文章編號:1009-3044(2020)01-0272-02
1VMware vSAN集群介紹
VMware vSAN是企業級存儲虛擬化軟件,可以理解為軟件定義的基于服務器集群搭建的分布式存儲。分布式可以將數據、10訪問分散到多個節點,讓整個存儲系統隨著節點的增多容量和性能線性增加。
VMware vSAN的設計目標是為了解決VMware傳統集群模式下共享存儲無法靈活擴展的問題。隨著企業應用產生的數據越來越多,因此對存儲容量的要求也越來越大,并且在面臨的可擴充性問題和性能方面的壓力也越來越大。VMwarevSAN在兼容VMware傳統模式集群的功能基礎之上、在伸縮性和可靠性方面進行了大量改進,最大的優點是突破了VMware傳統模式集群不可橫向擴展的功能。
1.1VMware vSAN集群結構
VMware vSAN聚合本地本或直接連接數據存儲設備,并創建在vSAN集群的所有主機之間共享的單個存儲池。VMwarevSAN消除了對外部共享存儲的需求,并簡化了存儲配置和虛擬機配置。VMware vSAN是ESXi虛擬機管理程序中包含的分布式軟件層,它與VMware vSphere完全集成。VMware vSAN支持需要共享存儲的VMware vSphere功能,例如高可用性(HAl,vMotion和分布式資源調度程序(DRS)。VM存儲策略使您可以定義虛擬機存儲要求和功能。VMware vSAN群集中的每個主機都可以為群集提供存儲。這些存儲設備組合在一起以創建單個VMware vSAN數據存儲。混合VMware vSAN集群使用SSD(閃存硬盤)硬盤作為緩存層,使用HDD(機械硬盤)硬盤作為容量層。全閃存的VMware vSAN群集將SDD硬盤設備用于緩存層和容量層。該體系結構創建了專為虛擬環境設計的閃存優化,彈性共享數據存儲。VMware vSAN集群架構圖如圖1所示。
1.2 VMware vSAN集群存儲過程
VMware vSAN集群的每個節點中必須包含一個或多個磁盤組,磁盤組是為vSAN集群提供性能和容量的主機和物理設備組上的物理存儲容量單元。磁盤組必須由一塊SSD硬盤和一塊或多塊HDD硬盤組成。用于緩存的磁盤設備不能在磁盤組之間共享,也不用于其他目的,單個緩存設備必須專用于單個磁盤組,在混合集群中,SSD硬盤用于緩存層,HDD硬盤用于存儲容量層。VMware vSAN集群的可用容量是每個節點磁盤組中容量層大小的集合,緩存容量不計算在可用容量內。
vSAN集群以靈活的數據容器也就是對象形式存儲并管理數據,在vSAN集群中對象的類型分為四種,名稱空間對象、交換空間對象、虛擬磁盤對象及虛擬磁盤快照對象。對象又由多個組件組成,并且vSAN集群給對象組件設計了不同的存儲策略來提高讀寫對象數據的性能及安全性,對象的組件才是vSAN集群存儲的最小單元。vSAN集群為了提高性能將對象的不同的組件存儲在不同節點不同磁盤組中的不同容量硬盤或緩存硬盤中。
VMware vSAN集群在存儲過程中為了保證數據不丟修,數據的存放位置就要一定的要求了,一個對象的相同數據的不同組件必須保存在不同的節點上。圖2是vSAN集群的存儲過程架構圖:
2VMware vSAN集群節點損壞分析
VMware vSAN集群至少由三個節點組成,每個節點都有一個或多個磁盤組,每個磁盤組中可以是全緩存硬盤或緩存硬盤加容量硬盤的組合。每個硬盤都是一個獨立的存儲單位,vSAN集群中的最小存儲單位不會跨磁盤組存儲,更不會跨硬盤存儲。因此,當磁盤組中的某個硬盤損壞或某個節點的磁盤組損壞時,只會丟失存儲于這個硬盤或磁盤組中的最小單位數據,但由于vSAN集群存儲過程中將一個對象數據分割成N多個最小單位數據,因此即使丟失部分數據也會影響整個vSAN集群。
2.1磁盤組中硬盤不可用分析
磁盤組中至少有一個或多個緩存硬盤和一個或多個容量硬盤,當有多個緩存硬盤時,其中某個緩存硬盤不可用時不會影響vSAN集群中的數據,只會影響其10性能,當損壞的是唯一的緩存硬盤時,整個磁盤組將不可用,會影響vSAN集群中的數據。當其中某個容量硬盤不可用時,會丟失此容量硬盤中的數據,是否影響vSAN集群中的數據,取決于用戶配置的vSAN集群策略。當vSAN集群策略不允許容量硬盤缺失的情況時,某塊容量硬盤的不可用會導致所有存儲在此容量上的組件數據丟失,從而導致所有包含這些組件的對象數據不可用,最終導致用戶數據丟失。
因此得出結論,vSAN集群中當磁盤組中有硬盤不可用時,有一定的機率會影響vSAN集群中的用戶數據,取決于不可用的硬盤類型以及vSAN集群配置的存儲策略。當損壞的硬盤影響vSAN集群中的數據時,可先檢測不可用的硬盤是否可單獨運行并可以讀取其中的二進制數據,如果可以,則可通過分析損壞硬盤中的組件信息,提取此硬盤中的所有組件數據,最后結合其他可用硬盤中的組件數據合并成不可訪問的對象數據。
2.2 vSAN集群節點不可用分析
當vSAN集群出現突然斷電、網絡故障等特殊情況時會導致vSAN集群各節點之間的元信息不一致,因此會使vSAN集群中的部分節點不可用,而此時由于不可用的節點無法加入到vSAN集群,也無法同步正確的元信息,也就意味著這個節點將永遠被孤立,這個節點的數據也將永遠無法正常使用。從而引發vSAN集群故障,用戶部分或全部數據無法訪問。
因此得出結論,當vSAN的節點不可用時一定會影響vSAN中的用戶數據,并且很大概率會導致vSAN集群癱瘓,所有數據都無法正常使用。當出現vSAN集群癱瘓或vSAN集群節點不可用時,可逐個分析vSAN節點中的磁盤組信息,然后根據磁盤組的信息逐個分析磁盤中的硬盤信息,并根據磁盤的類型,分析并獲取緩存列表及組件位圖等信息。最后匯總獲取的所有信息,并根據對象信息重組相關組件的數據,最后還原成用戶可訪問的數據。
3基于vSAN集群節點損壞分析設計恢復算法
根據vSAN集群節點損壞的深入分析,發現無論是vSAN節點中磁盤組中的部分硬盤不可訪問還是vSAN集群中部分節點不可訪問,都可根據vSAN的存儲結構進行逆向重構,從而恢復用戶不可訪問的重要數據。
3.1 vSAN節點磁盤組硬盤不可用恢復算法設計
當vSAN節點磁盤組中出現硬盤不可用時,如若vSAN集群出現用戶數據丟失的情況,則表明磁盤組中丟失的硬盤比較重要,可先判斷硬盤是否存在物理故障并且檢測能否讀取硬盤的二進制數據,如果可以讀取二進制數據,則判斷不可用磁盤的類型,如果是緩存硬盤,則分析并獲取其中的緩存鏈表,然后根據緩存列表提取各組件緩存的數據,然后分析并獲取此磁盤組中其他的容量盤的組件信息,并手動將組件的緩存數據刷新到對應的組件中。如果不可用的硬盤為容量盤,則分析并獲取其中的組件信息列表,然后分析并獲取此磁盤組中緩存盤的緩存鏈表信息,并根據緩存鏈表信息將組件的緩存數據手動刷新到對應的組件當中。最后分析并獲取vSAN集群中所有節點中所有磁盤組中硬盤的相關信息,并根據組件中包含的對象信息進行組件數據重組,然后生成用戶可訪問的數據。
3.2 vSAN集群節點不可用恢復算法設計
當vSAN集群中出現節點不可用,首先分析不可用節點中磁盤組的相關信息,根據磁盤組信息對磁盤進行分組,然后分析每組硬盤中的緩存硬盤以及容量硬盤,分別獲取緩存硬盤中的緩存鏈表以及容量硬盤中的組件信息列表。接下來根據緩存鏈表獲取組件的緩存數據,根據組件信息列表獲取組件數據,并將組件的緩存數據手動合并到對應的組件數據中去。重復對每個磁盤組中的緩存硬盤和容量硬盤做同樣的步驟。最后統計所有的組件數據,分析組件數據中描述的對象信息,將包含同一對象信息的組件數據根據組件配置信息合并成一個對象數據。合并完所有的對象數據后,將相關聯的對象數據歸類到一起,至此已經是用戶可正常訪問的數據了。
4實驗結果與分析
為驗證本文提出的恢復算法,將測試環境中的vSAN集群中的某個節點手動分離,并選擇不遷移數據。此時vSAN集群中的部分對象將不可見,也就是部分數據會丟失。這時,通過本文提出的恢復算法,分析分離節點中的磁盤組及硬盤信息,并提取各硬盤中存儲的組件數據,最后結合現有節點的組件數據合并成vSAN集群中丟失的對象數據。實驗結果證明本文中提出的恢復算法幾乎能恢復絕大部分的用戶數據。
5結束語
本文在vSAN集群存儲結構分析基礎之上提出了一種解決vSAN集群節點損壞的數據恢復算法,此算法能夠解決vSAN集群中節點損壞導致的用戶數據丟失問題,極大的挽回數據丟失帶來的損失。