多副本機制是超融合軟件常用的數(shù)據(jù)保護方式,可以為存儲數(shù)據(jù)提供冗余保護——即使一個或部分副本異常,系統(tǒng)仍可通過健康副本進行副本恢復。但是,主流實現(xiàn)方式下,這一機制依舊無法避免“副本降級”期間帶來的風險:在副本恢復完成之前,集群整體副本數(shù)依舊少于預期,此時若健康副本同樣遭遇故障或意外離線,將很有可能導致數(shù)據(jù)丟失。為進一步提高數(shù)據(jù)安全性,SMTX OS 5.1 引入了“臨時副本”這一創(chuàng)新機制,保證副本數(shù)據(jù)恢復期間“副本不降級、數(shù)據(jù)不丟失”,滿足關鍵業(yè)務連續(xù)穩(wěn)定運行的需求。
主流多副本保護機制的缺陷
多副本保護機制介紹
多副本技術,顧名思義就是一份數(shù)據(jù)對應多個相同的數(shù)據(jù)副本,多個副本按照既定的規(guī)則放置在不同的設備當中,以避免硬件故障導致的數(shù)據(jù)損壞或丟失。當發(fā)生硬件故障導致集群中一個副本或多個副本離線或損壞時,一方面,健康副本可保證正常 I/O 讀寫;另一方面,系統(tǒng)可通過拷貝健康副本重新生成多個副本,以恢復數(shù)據(jù)的副本級別,實現(xiàn)數(shù)據(jù)冗余保護。

如圖 1 所示:以 2 副本為例,存儲卷(volume)被切分為多個數(shù)據(jù)塊,而每個數(shù)據(jù)塊都擁有 2 個副本。如數(shù)據(jù)塊 A 的兩個副本分別放置在服務器節(jié)點 1 和服務器節(jié)點 2 上。即使任意一臺服務器節(jié)點宕機,至少還有一個副本可以正常訪問,從而達到數(shù)據(jù)冗余保護的目的。
SmartX 超融合基礎架構同樣采用多副本技術為虛擬機提供數(shù)據(jù)冗余保護。它?持配置 2 副本、3 副本共兩種存儲策略,不同的副本策略可以容忍不同級別的硬件損壞。
當前問題
超融合集群除了需要面臨硬件損壞, 還可能面臨諸如硬盤誤操作拔出、服務器節(jié)點意外重啟、存儲網(wǎng)絡閃斷等問題,最終導致硬件的短暫離線(一段時間后重新上線)。這些情況通常會引起副本降級(副本數(shù)量少于預期),而且系統(tǒng)也很難辨別這是一次短暫離線還是永久離線。以 2 副本為例,在發(fā)生副本離線超時后,后臺會自動剔除異常副本,以健康副本來響應正常的 I/O 請求,同時觸發(fā)數(shù)據(jù)恢復來重建缺失的數(shù)據(jù)副本。但在數(shù)據(jù)完成恢復之前,新的數(shù)據(jù)讀寫都只發(fā)生在唯一的健康副本之上。

如圖 2 所示:以 2 副本策略為例,正常情況下,數(shù)據(jù) A 包含 2 個副本,當發(fā)生 I/O 寫入時,副本 1 和副本 2 會同步寫入 I/O。當副本 2 異常下線之后,副本 2 將被剔除,并觸發(fā)數(shù)據(jù)恢復到副本 2’。在數(shù)據(jù)恢復期間,數(shù)據(jù)的變化只寫入了副本 1 (副本降級),直至副本 2’ 重建完成之后,副本 2’’ 才能重新接受寫 I/O(副本級別恢復)。
注:副本 2” 表示完成數(shù)據(jù)恢復的新副本,與未完成數(shù)據(jù)復制的副本 2′ 進行區(qū)分。
在副本降級期間,實際只有 1 副本在工作,一旦出現(xiàn)健康副本受損離線的情況,那么就有很大幾率導致數(shù)據(jù)丟失。下面將通過圖例說明副本降級期間的風險。

如圖 3 所示:當副本 2 發(fā)生異常而無法訪問時,I/O 可以正常寫入并更新到副本 1,同時后臺將觸發(fā)數(shù)據(jù)恢復(通過拷貝副本 1 的數(shù)據(jù)重新生成副本 2’’)。而數(shù)據(jù)恢復是需要一定時間的(時長取決于數(shù)據(jù)量的大小),在數(shù)據(jù)恢復完成之前,副本 2’ 是無法正常訪問的(數(shù)據(jù)不完整)。如果這個時候副本 1 遭遇硬件故障或其他原因的損壞而無法訪問,那么數(shù)據(jù) A 將沒有辦法通過任何可用的副本進行恢復,也無法正常讀寫,大概率導致數(shù)據(jù)丟失的情況發(fā)生。
SmartX 超融合臨時副本技術原理
針對這一以上問題,SMTX OS 5.1 提供了一種創(chuàng)新性的數(shù)據(jù)恢復機制,可有效降低副本降級問題帶來的風險,提高故障場景下的數(shù)據(jù)安全等級。新的處理機制引入“臨時副本”概念,可確保新寫入的數(shù)據(jù)維持副本級別(整個數(shù)據(jù)恢復過程不降級);甚至在數(shù)據(jù)恢復期間發(fā)生其他疊加故障導致所有健康副本異常時,依然允許系統(tǒng)通過特殊的恢復機制進?數(shù)據(jù)修復(支持完全修復和部分修復),從?最大限度地保障數(shù)據(jù)恢復期間的數(shù)據(jù)安全性。
概念定義
- 健康副本:可提供完整讀寫能?的數(shù)據(jù)副本。
- 失敗副本:出現(xiàn)異常、?法提供正常讀寫能?的數(shù)據(jù)副本,可基于臨時副本進?數(shù)據(jù)修復。
- 臨時副本:在健康副本降級期間,負責記錄新數(shù)據(jù)的寫?,不負責數(shù)據(jù)的讀取。
臨時副本運作機制
SMTX OS 5.1 采用臨時副本策略提高異常發(fā)生后數(shù)據(jù)副本的安全性。
- 數(shù)據(jù)組成:當出現(xiàn)副本降級,需要剔除異常副本時,通過分配臨時副本響應寫請求,記錄數(shù)據(jù)恢復期間新寫?的數(shù)據(jù),以保證數(shù)據(jù)副本數(shù)滿?預期(臨時副本數(shù)據(jù) + 健康副本數(shù)據(jù) = 完整副本數(shù)據(jù))。
- 生命周期:數(shù)據(jù)恢復期間,會保留異常副本并標記為失敗副本,每恢復?個健康副本,就移除對應的失敗副本和臨時副本。
- 無損修復:如果在數(shù)據(jù)恢復期間疊加其他故障導致所有副本均出現(xiàn)異常,在失敗副本恢復訪問的情況下,可以通過特殊恢復機制??進?數(shù)據(jù)修復,將臨時副本上的數(shù)據(jù)重放?失敗副本上,形成完整的健康副本。
- 適用場景:臨時副本策略僅能改善因為可恢復故障(由于?絡或者其他原因造成的副本臨時下線)帶來的副本降級。
數(shù)據(jù)恢復
正常數(shù)據(jù)恢復
2 副本或 3 副本數(shù)據(jù)在出現(xiàn)單個副本異常時,會為異常副本分配對應的臨時副本,記錄副本異常后的新寫?的數(shù)據(jù),并使?健康副本作為數(shù)據(jù)源進?數(shù)據(jù)恢復。

如圖 4 所示: 以 2 副本為例,當副本 2 離線無法訪問時,系統(tǒng)將從元數(shù)據(jù)中剔除異常副本,同步觸發(fā)數(shù)據(jù)恢復,并額外創(chuàng)建臨時副本,所有新寫入的數(shù)據(jù)會同步寫入副本 1 和臨時副本(新寫入數(shù)據(jù)維持 2 副本級別,不降級);與此同時數(shù)據(jù)恢復也同時在進行,通過復制副本 1 重新形成副本 2‘,當所有數(shù)據(jù)恢復完成,副本 2’‘ 處于正常狀態(tài),系統(tǒng)會自動刪除臨時副本。
利用臨時副本進行無損修復
在數(shù)據(jù)恢復的過程中,如果不幸,唯一的健康副本也發(fā)生了損壞或下線,那么虛擬機將?法訪問任何副本數(shù)據(jù),也沒有辦法正常進行 I/O。但如果這時候當初離線的失敗副本已經(jīng)重新上線(如機器重新啟動或者網(wǎng)絡恢復等),且數(shù)據(jù)沒有損壞的情況下,系統(tǒng)仍然可以合并失敗副本(首次副本離線前的舊數(shù)據(jù))和臨時副本(離線后寫入的新數(shù)據(jù))進?修復,但虛擬機在數(shù)據(jù)修復期間?法進? I/O,直至修復完成。下面將舉例說明無損修復是如何實現(xiàn)的。

如圖 5 所示: 當副本 2 發(fā)生異常離線,系統(tǒng)自動觸發(fā)數(shù)據(jù)恢復并創(chuàng)建臨時副本,新寫入的數(shù)據(jù)會同時記錄到副本 1 和臨時副本當中,并通過數(shù)據(jù)恢復生成副本 2’。如果在數(shù)據(jù)恢復過程中(副本 2’ 未完全復制完成的情況),發(fā)生疊加故障,副本 1 發(fā)生了損壞或離線時,那么這個時候已經(jīng)沒有任何完整副本可供訪問了,數(shù)據(jù) A 也完全離線了。而系統(tǒng)可對原有的副本 2 的數(shù)據(jù)(已經(jīng)重新上線)和臨時副本(增量數(shù)據(jù))進行數(shù)據(jù)整合,形成完整的數(shù)據(jù)副本 3,此時數(shù)據(jù) A 可以重新上線并接受讀寫請求,同時可重新觸發(fā)數(shù)據(jù)恢復,等待完成數(shù)據(jù)恢復之后,重新形成健康的 2 副本狀態(tài)。
臨時副本機制的限制和影響
限制
臨時副本主要針對硬件短暫離線下的副本降級風險,但對于不可恢復的硬件故障(如磁盤損壞等),臨時副本沒有直接的效果。如要應對此類多個硬件疊加故障的場景,建議采用高級別的副本策略(3 副本策略)進行保護。
影響
- 空間影響:臨時副本的創(chuàng)建會額外占用存儲空間,但是數(shù)據(jù)恢復完成后,這部分空間會自動回收。
- 性能影響:由于虛擬機變化的數(shù)據(jù)會同步寫入臨時副本,因此這一過程對虛擬機的寫入性能會有一定的影響(持續(xù)至數(shù)據(jù)恢復完成)。目前性能影響在可接受的范圍內,而且該功能也在持續(xù)優(yōu)化過程中,后續(xù)版本這部分影響將進一步降低。
原文鏈接:https://www.smartx.com/blog/2023/11/smartx-hci-temp-replica/