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