當前位置:
首頁 > 科技 > 數據不一致,VSS是如何解決的?

數據不一致,VSS是如何解決的?

VSS(VolumeShadow Service)是微軟提供的對應用進行備份恢復的一套框架,主要實現備份、恢復和數據一致性保護,在整體流程中,可分為備份和恢復兩個主要流程。


VSS介紹和場景

VSS能夠讓存儲基設備(比如磁碟、陣列)創建高保真的時間點映像副本,就是映射拷貝(Shadow Copy)。它可以在多卷、或者單個卷上創建映射拷貝,同時不會影響到系統性能。VSS通過協調業務應用軟體、備份程序,以及存儲硬體,從而達到創建高保真映射拷貝的能力。VSS可以應用到以下領域:

A、 快速數據備份和恢復;

B、 針對制定文件的恢復;

C、 磁帶備份、測試和數據挖掘方面;

由於Microsoft在OS中集成了VSS技術,它將各個處理功能模塊化,並針對存儲軟硬體廠商提供相應的開發介面;開發商只需要關注自己的模塊,根據需求設計相關的應用,從而減少了整體設計的難度。


VSS組件描述

VSS整體框架包含了VSS核心模塊、請求者(Requestor)、寫入者(Writer),以及提供者(Provider)。各個模塊之間的關係如下圖所示:

請求者(Requestor)

其主要任務是初始化映射拷貝的創建。由於需求不同,請求者解決的問題各不相同不同,在實際應用中,可能設計不同請求者應用。例如,備份應用處理VSS的備份功能,管理應用處理映射拷貝的創建和使用(像WS2003和Vista本身提供的VSS管理軟體就是此類),同時,也可以設計其他功能應用,來處理專門的業務。如Windows NT備份模塊、備份軟體提供商設計的備份應用,存儲軟硬體提供商設計的管理應用等。

寫入者(Writers)

其主要任務是保證數據的一致性。因為,如果在創建映射拷貝的過程中,應用軟體繼續往磁碟寫入數據,那麼將會出現數據非一致性問題,從而影響該時間點映像的完整性。通過在應用寫入者模塊進行控制處理,來保證數據的一致性,同時也可以達到創建映射拷貝的高效性。

通常,寫入者可能是Windows OS裡面的各種服務模塊,像COM+、DHCP服務、Active Directory服務等,除此之外,資料庫也是常見的寫入者應用。

提供者(Provider)

其主要任務是創建映射拷貝。提供者是創建時間點影響的介面,它可以是基於存儲陣列(硬體模式),或者操作系統(軟體模式)。VSS有不同的提供者,最底層是硬體提供者,中間是軟體提供者,最上面是系統軟體提供者。其中,前面兩個提供者是由第三方硬體或者軟體廠商提供的。

VSS伺服器(VSS Server)

主要任務是協調各個模塊的協作運行,並提供創建卷映射拷貝的方法。VSS提供了兩種創建映射拷貝的方法:

一種是完全拷貝(Clone/Full Copy/Split Mirror),它會創建當前原始數據(Original Data)的全部拷貝;

另外一種是寫時拷貝/差量拷貝(Copy on Write/Differential Copy),它只創建將要被更新的原始數據的拷貝。

因此寫拷貝創建映射拷貝速度快,但是恢複數據時需要使用原始數據。

數據卷(Volumes)

數據卷是指需要備份的數據卷,以及為Writer提供Copy-on-Write文件的數據卷。

VSS創建流程

首先由請求者讓VSS枚舉所在卷上的寫入者應用,並收集元數據(Metadata)。

寫入者可能通過XML文件來描述其組件,並定義其恢復方法。其中,考慮到數據一致性,寫入者需要一些相關處理,比如對於資料庫應用來說,關閉所有打開的事務、回滾事務日誌、以及將緩衝區中的數據寫入下盤等操作,直到所有數據準備好之後,通知VSS可以創建映射拷貝了。

VSS對於請求的卷,查詢是否支持映射拷貝,並由那個提供者提供(硬體還是軟體);因為在請求者管理應用中,會設置卷的映射拷貝屬性以及策略等,所以需要進行查詢和判斷。

請求者通知VSS,要求在該卷上創建映射拷貝。

VSS鎖住寫入者應用,暫時不讓寫入新數據(在某些應用情況下,讀操作請求是可以允許的)。

VSS讓提供者在磁碟上創建當前狀態的映射拷貝(創建映射拷貝的速度,和創建的方法以及提供者的實現相關)。

創建映射拷貝完畢,VSS解鎖寫入者應用。然後寫入者就可以處理隊列中的寫請求,接著VSS會查詢是否這些寫請求在創建映射拷貝期間被保證在隊列中,如果是,則說明數據是一致的,否則說明可能數據一致性有問題,並做相應處理。

備份Agent需要和Provider的CommitSnapshots方法進行配合保證快照數據是應用一致性的,並等待VSSServer調用陣列操作(遠程複製、快照等)實現數據備份。因為應用刷緩存、凍結IO都是由其對應的Writer進行的,所以在整個執行過程中還必須有對應應用的Writer參與刷緩存、凍結IO。

備份Agent對VSSServer提供Freeze和Thaw介面,VSS框架本身是沒有Freeze和Thaw對應介面的。備份Agent封裝的兩個方法主要功能如下:

Freeze: 觸發VSS備份流程,然後在Provider的CommitSnapshots方法中掛起(等待刷緩存、凍結IO等操作)。

Thaw: 解除Provider的CommitSnapshots方法的掛起,讓備份流程執行完畢。

當VSSServer執行保護組時,VSSServer先調用備份Agent的Freeze介面保證快照數據是應用一致性,然後Agent的Thaw介面執行陣列操作(遠程複製、快照等),通知備份完成。

溫馨提示:

求知若渴, 虛心若愚


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 架構師技術聯盟 的精彩文章:

緩存這匹「野馬」,你駕馭得了嗎?
通俗科普光通信技術

TAG:架構師技術聯盟 |