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