歡迎光臨
每天分享高質量文章

資料不一致,VSS是如何解決的?

VSS(Volume Shadow 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創建流程


  1. 首先由請求者讓VSS列舉所在捲上的寫入者應用,並收集元資料(Metadata)。

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

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

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

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

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

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

 

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


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

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

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

VSS Server執行保護組時,VSS Server先呼叫備份Agent的Freeze接口保證快照資料是應用一致性,然後Agent的Thaw接口執行陣列操作(遠程複製、快照等),通知備份完成。


推薦閱讀:

OpenStack技術和實戰詳解

溫馨提示:

請搜索“ICT_Architect”“掃一掃”二維碼關註公眾號,點擊原文鏈接獲取更多電子書詳情

求知若渴, 虛心若愚

赞(0)

分享創造快樂