利用 Microsoft 的卷影複本技術進行一致性備份
在備份正在執行應用程式的虛擬或實體機器時,尤其是那些頻繁將資料寫入檔案和資料庫的應用程式,確保備份資料的一致性至關重要。具備一致性的備份資料有助於在還原過程中避免資料損毀或延遲。為此,微軟開發了 VSS 技術。
這篇部落格文章將說明"卷影複本服務"(VSS)是什麼、其運作原理,以及為何這項技術對於備份基於 Windows 的虛擬和實體機器至關重要。
什麼是 VSS?
"卷影複本服務"(VSS)是 Windows 作業系統的原生特點,可協助建立一致且應用程式感知的備份。為了確保備份資料的一致性,系統會執行以下操作:
- VSS 會暫時停止應用程式執行的寫入操作。
- 記憶體中的緩衝區會寫入磁碟,也就是說,這些資料會被沖洗(flushed),而檔案系統則會被凍結。
- 在 Windows 作業系統中,會建立一個卷宗快照,亦稱為影子副本。
"卷影複本"(亦稱為"卷快照服務")是一組 COM(元件物件模型) Windows 中的介面,提供了一套框架,用於為不同應用程式建立一致性備份。VSS 首次隨 Windows XP 和 Windows Server 2003 一起發布。
為何您需要 VSS 技術
應用程式資料的一致性對於虛擬機器和實體伺服器的備份至關重要。一致性可確保在從備份還原後,運行於虛擬或實體機器上的應用程式能完全具有功能性。
若未使用 VSS,所獲得的備份將不具一致性。此類備份僅是將每個區塊以其被複製當下的狀態進行複製而生成。假設某個檔案正被應用程式(例如資料庫或系統應用程式)持續使用。 該應用程式會透過寫入/刪除區塊,持續變更已開啟檔案中的資料。當檔案的前段正在被複製時,檔案其他部分所使用的區塊卻正在發生變化。等到檔案的其他部分被複製到備份儲存庫時,前段的區塊已經發生了變化。您所獲得的將是資料區塊不一致,且無法代表單一特定時間點的備份。
避免這種情況的一種方法是 基於快照的 虛擬機器備份。當備份程序開始時,系統會建立一個快照,也就是虛擬機器的精確副本。在此過程中,所有虛擬機器磁碟(以 .vmdk (VMware 環境中的檔案)會變成唯讀。為了將備份過程中所做的變更儲存至主磁碟,VMware ESXi 會建立一個與主磁碟相連的增量檔案 .vmdk 檔案。在建立增量檔案後,備份軟體便會開始從唯讀 .vmdk 檔案。一旦備份程序完成,差異檔便會與 .vmdk 檔案。
這種方法對於負載不高的檔案系統(例如內部檔案儲存或網頁伺服器)可能效果良好。然而,如果備份程序在某些交易正在執行且 I/O(輸入/輸出)操作正在進行時啟動,可能會導致資料遺失。當您使用 Microsoft SQL Server、Active Directory 或 Exchange Server 等應用程式或資料庫時,無法僅僅關閉檔案後再將資料追加至其中。 此時,"卷影複本服務"(VSS)便能派上用場。這項技術允許在不影響檔案完整性與可用性的前提下,為正在開啟且處於使用中的檔案建立特定時間點的副本。
"卷影複本服務"的運作方式
要了解 VSS 的運作原理,我們首先需要概述構成此特點的各個元件。VSS 的主要元件包括:
- 該 VSS 供應商 是 VSS 的核心組件,負責建立卷的影子副本(快照)。VSS 提供者可以採用軟體或硬體實作。Windows 作業系統內建了基於"寫入時複製"的軟體型 VSS 提供者。硬體提供者通常用於 SAN 儲存(儲存區域網路)。在建立影子副本時,硬體提供者會將此任務卸載給主機作業系統。
- 該 作家 是將資料寫入檔案和資料庫以確保一致性的軟體元件。每個支援 VSS 的應用程式在安裝時,都會將其寫入程式加入作業系統中。提供 VSS 寫入程式的應用程式範例包括 Microsoft SQL Server 和 Exchange Server。
- 該 申請人 這是一個軟體元件,用於指令 VSS 提供者開始或停止運作(建立、刪除或匯入影子副本)。請求者可能是原生 Windows 元件(例如 NTBackup 或 Hyper-V 快照管理員),也可能是第三方應用程式,例如備份軟體。
- 該 VSS 服務 是一個作業系統元件,負責確保所有其他元件能夠相互通訊並協同運作。
快照是在磁碟區層級建立的,而 VSS 是以區塊為單位運作(而檔案也是以區塊為單位)。這就是為什麼您無法對檔案或資料夾建立快照。影子副本可以儲存於同一磁碟區,也可以儲存於其他磁碟區。磁碟區中分配給儲存影子副本的空間稱為"差異區"。
"System Volume Information"資料夾是用來儲存 VSS 影子副本檔案的。這些檔案的識別碼類似 3517271a-d214-3a47-c5ea-01137a4fe675.
VSS 技術可用作 Windows 原生工具,用於儲存磁碟卷宗的特定時間點副本(快照)。透過這些副本,您可以撤銷變更,並將整個卷宗或特定檔案還原至已儲存的狀態。儘管如此,為了更可靠地保護資料,仍建議建立真正的備份並儲存於外部儲存媒體上。
VSS 是一種增量式程序——Windows 可以連續建立多個卷宗快照。 建立第一個影子副本後,VSS 會將資料分割為 16 KB 的區塊,藉此追蹤磁碟上的變更。若磁碟上有變更,該服務會將整個區塊寫入影子副本。因此,無需在每次建立新快照時複製完整的資料集,僅需複製已變更的區塊即可。
VSS 的主要需求與限制:
- 建立 VSS 快照至少需要 300 MB 的磁碟空間。
- 預設情況下,卷快照的最大數量為 64 個。
- Windows 系統會為快照保留 10% 的磁碟空間。
請注意,由備份應用程式觸發的 VSS 快照,通常會在備份工作完成後被刪除。
用於管理 VSS 影子副本的原生工具
您可以使用 Windows 原生工具來管理卷影副本。了解它們如何與快照協同運作,有助於更深入理解 VSS 技術,並排除可能出現的問題(例如,在完成備份後,暫時性 VSS 快照未被刪除)。
雖然 Windows 圖形介面中提供了一些 VSS 選項,但所有選項皆可透過命令列存取,這對我們而言更具實用價值。您可以在 Windows PowerShell 或 CMD 中使用以下兩種 VSS 工具:
vssadmin– 適用於所有自 Windows XP 起(包含 Windows 10)的 Windows 版本,唯 Windows 8 除外。diskshadow– 僅適用於 Windows Server 版本。這是對 vssadmin,這不僅讓您能夠在互動模式下工作,還能建立腳本。
請注意,這兩個工具不同,且運作於不同的情境中。在 vssadmin 無法在 diskshadow 反之亦然。您可以查看使用其他工具建立的快照,但無法對其執行任何操作。
卷影複本服務 (VSS) API 可供備份應用程式使用,以便透過 VSS 建立"應用程式感知"的備份,以確保備份資料的一致性。
執行 Windows 的 VMware 虛擬機器會使用 VMware VSS 元件,作為客體 Windows 作業系統中的 VSS 驅動程式來執行暫停操作。當您 安裝 VMware Tools. 在其他使用情境下,若使用舊版本的 Windows,則會採用 SYNC 驅動程式。以下是 支援的客體作業系統清單 適用於 VMware 環境的應用程式感知靜止系統。
快照是如何建立的
一旦建立陰影副本(卷宗快照),其大小即為 0 位元組。當寫入新資料時,資料會寫入磁碟(通常應存放的位置),但舊資料則會寫入陰影副本,以便您日後還原該舊資料。因此,陰影副本的大小會隨之增加。
在建立快照時,資料寫入主要有兩種方法:
Redirect on write (RoW):將新區塊寫入快照(影子副本),並儲存包含這些區塊應寫入磁碟上哪些位置的元資料。此方法雖能快速寫入資料,但讀取資料的速度較慢。若需回滾至快照建立時的初始狀態,只需刪除快照即可(幾乎瞬間完成),此過程僅需數秒。RoW 方法用於 建立虛擬機器虛擬磁碟的快照 (VMDK) 在 VMware ESXi 和 VMware 工作站中。Copy on Write (CoW):將新區塊寫入磁碟上的指定位置,並將重寫後的區塊內容傳送至快照。寫入速度較慢,但讀取速度很快。先前快照(先前資料狀態)會在幾秒內(幾乎是瞬間)被刪除。VSS 快照採用"寫入一次,讀取多次"(CoW)的方法。
由於有眾多不同的應用程式能夠將資料寫入磁碟,微軟透過 VSS 建立了一個統一的介面,在啟動快照建立程序後,通知所有應用程式即將建立快照。此通知訊息的核心概念是:系統即將建立快照——請停止寫入操作,並將寫入緩衝區的內容寫入磁碟,以使資料進入一致狀態。
建立 VSS 快照的工作流程如下:
- VSS 請求方會檢查其可通訊的可用服務,列舉寫入者,並收集元資料。
- 在彙整完作家名單後,請求方會與 VSS 提供者進行溝通,並告知其欲建立的快照內容以及快照的位置。在大多數情況下,快照會儲存於原始磁碟的同一卷上。在其他情況下,SAN 硬體供應商可為快照建立一個獨立的卷,此類快照稱為儲存快照。
-
備份準備中。此步驟包含查詢 VSS 寫入器的實際狀態(取得元資料後),並為寫入器必須依序執行的關鍵操作進行準備。 寫入器會收到通知,要求其為快照建立做好準備。系統緩衝區將被清空,應用程式亦會被凍結,以確保能建立一致的資料副本。每個寫入器預設必須在分配的 60 秒內完成作業。Microsoft Exchange Server 僅有 20 秒進行此操作(此時間由 Microsoft 設定)。
註: 20 秒是一個很短的時間。如果應用程式無法在這個時間內完成操作,寫入程式會回傳錯誤,且快照將無法建立。如果儲存裝置的效能不足以在這個時間限制內完成操作,您可以嘗試升級硬體來解決此問題。 例如,您可以將 HDD 更換為 SSD 儲存裝置。或者,您可以嘗試將其他工作負載遷移至其他儲存裝置,並僅將專用儲存空間保留給執行 Microsoft Exchange Server 的機器。請檢查日誌以偵測是哪個寫入器在快照建立任務中失敗。
-
如果一切正常,且系統活動已凍結,則 VSS 會通知提供者可以建立影子副本。此時僅有 10 秒鐘的時間來建立快照。在此期間,檔案系統的 I/O 請求將暫時無法處理。這也是您可以建立虛擬機器快照的時機。一旦 10 秒過去,所有寫入者將解除凍結,輸入/輸出 (I/O) 操作也將恢復運作。
註: 如果 VSS 提供者需要超過 10 秒才能提交影子副本,該操作將會失敗。
- VSS 會通知寫入程式,應用程式可以解除 I/O 請求的凍結狀態,並繼續將資料寫入磁碟。如果我們使用備份應用程式,且已建立使用 Windows VSS 服務的備份,則可以刪除該 VSS 快照。此操作可由備份應用程式自行執行。此外,您也可以透過以下方式刪除卷宗快照:
diskshadow或vssadmin.若遇到 VSS 問題,當其他方法無效時,重新啟動電腦通常能解決問題。 部分與時間限制相關的問題(例如,建立快照需在 10 秒內完成),可透過升級硬體(包括磁碟裝置)或降低系統負載來解決。
請嘗試手動建立快照,並確認是否能在 20 秒的時限內完成(以 Exchange Server 為例)。若操作失敗,請重新啟動系統、降低系統負載,然後再次嘗試。
自 Windows Server 2012 起,VSS 便支援 Windows 中的 SMB 檔案分享。VSS 技術對於檔案分享非常有用,因為使用者和應用程式可能會持續寫入檔案,若沒有 VSS,備份檔案分享將是一項挑戰。 NAKIVO Backup & Replication 10.7 支援 檔案分享備份.
"卷影複本服務"在 NAKIVO 解決方案中的運作方式
我們已經探討了 VSS 的基本運作原理。現在,讓我們來看看在使用專用的備份軟體(例如)建立 VMware vSphere 虛擬機器備份時,VSS 技術是如何運作的 NAKIVO Backup & Replication.
簡而言之,卷影複本服務(VSS)的運作方式如下:請求者啟動 VSS 提供者。提供者會將寫入者重定向至日誌檔案中寫入資料,並開始建立快照。當請求者向提供者發送停止訊號(通常是在快照準備就緒後),提供者便會開始將資料從日誌檔案移回卷。
在這種情況下, NAKIVO Backup & Replication 在使用 VSS 備份 VMware vSphere 虛擬機器時,會成為 VSS 請求者。
- 在虛擬機器備份開始之前,NAKIVO 解決方案會透過其 VSS 寫入器寫入資料。
- 當備份開始時, NAKIVO Backup & Replication 要求 VSS 提供者開始運作。在此期間,寫入程序會將資料重定向至日誌檔案,而卷則處於"凍結"狀態。
- NAKIVO Backup & Replication 開始在虛擬機器層建立快照。此過程可能需要幾秒鐘到幾分鐘不等,具體取決於 VMFS 儲存系統的負載。在此期間,寫入器會持續將資料寫入日誌檔案。
- 已成功建立虛擬機器的快照。 NAKIVO Backup & Replication, 作為請求方, 向提供方發出停止運作的訊號。
- VSS 提供者會將變更從日誌檔案移至卷。 NAKIVO Backup & Replication 將虛擬機器快照的資料區塊複製到備份儲存庫。
結論
"卷影複本服務"(VSS)是一項能確保虛擬機器備份一致性的優秀技術,但僅適用於 Windows 系統的機器。若要為 Linux 系統的機器建立一致性備份,您應實施特殊的"凍結前"與"解凍後"腳本。NAKIVO 解決方案亦為 Linux 伺服器和工作站提供自動化的一致性備份功能。




