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

資料不一致,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)

分享創造快樂