如何合併 Hyper-V 快照:逐步指南
有時您需要在某台客體虛擬機器(VM)上安裝作業系統更新或安全性修補程式。然而,更新過程有時可能會出錯,導致系統故障、設定資料遺失,或某些程式被移除。 Microsoft Hyper-V 提供了建立 Hyper-V 快照的功能,讓您能夠儲存虛擬機器在特定時間點的狀態,並在發生系統錯誤時將系統還原至先前狀態。
在這篇部落格文章中,我們將說明如何使用 Hyper-V 管理員 或 PowerShell 及其使用方式。然而,若要學習如何管理 Hyper-V 快照,您首先需要了解其背後的技術原理。
什麼是 Hyper-V 快照?
Hyper-V 快照是虛擬機器的特定時間點副本,其中包含還原資料所需的所有資訊。透過 Hyper-V 快照,您可以將虛擬機器還原至快照擷取時所記錄的狀態。當您的電腦安裝 Hyper-V 角色並建立第一個虛擬機器時,Hyper-V 快照技術預設即為啟用狀態。 選定的虛擬機器可在任何狀態下建立 Hyper-V 快照(關閉, 跑步, 暫停,以及 已儲存) 且此操作通常只需幾秒鐘即可完成。
請注意,Hyper-V 快照目前稱為 Hyper-V 檢查點,但這兩種稱呼均屬正確。
Hyper-V 快照的類型
Microsoft Hyper-V 提供兩種快照類型:
Production snapshots在客體作業系統內應用備份技術,以建立虛擬機器的資料一致性快照。為此,會使用 Windows 卷影複本服務 (VSS) 或 Linux 檔案系統凍結功能。Hyper-V 生產環境快照可用於擷取生產環境的狀態,因為它們能提升應用程式與客體作業系統的資料一致性。請注意,Hyper-V 生產環境快照不會擷取虛擬機器的記憶體狀態、CPU 活動資訊或硬體配置。
在新版作業系統(Windows Server 2016 和 Windows 10)中,生產檢查點是預設的檢查點類型。不過,您可以在 Hyper-V 管理員或 Windows PowerShell 中進行變更。
Standard snapshots擷取虛擬機器在特定時間點的狀態,包括其 CPU 活動、記憶體及硬體配置。因此,標準 Hyper-V 快照可擷取應用程式的當前狀態,並將虛擬機器還原至特定時間點的狀態或條件。此類快照主要適用於開發與測試情境。 建立 Hyper-V 標準快照不能視為可靠的備份策略,因為對於不支援 VSS 的應用程式,這可能會導致某些資料不一致的問題。
Hyper-V 快照的運作原理
如您所知,Hyper-V 虛擬機器儲存於虛擬磁碟中,其檔案格式為 .vhd(x)。同時,在這些 Hyper-V 虛擬機器上建立的快照檔案採用 .avhd(x) 檔案格式,並與硬碟映像檔存放於同一資料夾中。 Hyper-V 快照基本上是差異虛擬磁碟,每個快照與其對應的父虛擬硬碟之間都存在父子關係。您為每台虛擬機器最多可建立 50 個快照。所有 Hyper-V 快照皆以階層式順序組織,從而構成一個檢查點子樹。

然而,問題在於 .avhd(x) 檔案容易堆積如山並佔用大量磁碟空間,進而影響虛擬機器的效能。若要移除不必要的 .avhd(x) 檔案,您需要刪除 Hyper-V 快照。此選項並不表示您實際上會刪除這些快照。 實際上,您只是將 Hyper-V 快照及其所含資料合併至父磁碟或另一個虛擬磁碟中。不建議您直接從電腦中刪除 Hyper-V 快照。在合併 Hyper-V 快照後,所有 .avhd(x) 檔案都會從磁碟中刪除。透過這種方式,您便能在 Hyper-V 主機上釋放出額外的空間。
如何合併 Hyper-V 快照
在我們之前的其中一篇部落格文章中,我們曾介紹過如何 管理 Hyper-V 快照 (建立、套用、重新命名、啟用/停用等)。不過,今天的部落格文章將作為手動合併 Hyper-V 快照的指南。
若要合併 Hyper-V 快照,您需要使用 Hyper-V 管理員或 PowerShell。以下將分別說明這兩種方法。
使用 Hyper-V 管理員
在開始說明如何合併 Hyper-V 快照之前,我們應先確定要合併哪些快照。Hyper-V 快照應依照特定順序進行合併:從子快照到父快照。因此,透過建立快照的建立順序(從最新到最舊)來釐清檢查點樹的結構至關重要。
如前所述,每個快照都與其之前建立的另一個快照存在父子關係。 將所有快照結合起來,可呈現為一條鏈狀結構。例如,針對 1 個虛擬硬碟共建立了 3 個快照。虛擬機器(VM)所運行之主虛擬硬碟作為第一個檢查點的父節點,該檢查點作為第二個檢查點的父節點,而第二個檢查點則作為第三個檢查點的父節點。
欲建立檢查點結構,請執行以下步驟:
- 開啟 Hyper-V 管理員。
- 在中央窗格中,選取您要合併其快照的虛擬機器。
- 在右側的"動作"區段中,點擊
Inspect Disk.
- 選取 .avhd(x) 檔案,然後按一下
OK.
- 接著,您應會看到虛擬硬碟屬性的概覽,其中包含其名稱、位置以及父物件的名稱。請確認所選 .avhd(x) 檔案的父物件。
- 請針對每個 .avhd(x) 檔案重複步驟 3 至 5,並確定其合併順序。

完成上述步驟後,即可開始合併 Hyper-V 快照。請注意,您的虛擬機器必須處於關閉狀態,以避免在合併操作過程中發生任何問題。
若要合併 Hyper-V 快照,請執行以下操作:
- 開啟 Hyper-V 管理員。
- 請選擇所需的虛擬機器。
- 點擊
Edit Disk."編輯虛擬硬碟精靈"將會開啟.點擊Next. - 點擊
Browse以選取最新的 .avhdx 檔案。請按一下Next.
- 選擇
Merge將差異磁碟中儲存的變更合併至父磁碟或另一個磁碟。請按一下Next.
- 選擇
To the parent virtual hard disk然後點擊Finish.
- 要完全完成 Hyper-V 快照的合併程序,請針對每個 .avhd(x) 檔案重複步驟 1 至 5,直到所有變更都已合併至原始父磁碟為止。
- 最後一步是重新啟動虛擬機器,以套用已實施的變更。
使用 PowerShell
在開始合併 Hyper-V 快照之前,請確認您的電腦已啟用 Merge-VHD 指令。若未啟用,螢幕上將顯示以下錯誤訊息:
The term 'Merge-VHD' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
若要解決此問題,請以系統管理員身分開啟 PowerShell,並執行以下指令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell
如果一切正確,您應該會看到以下內容:

現在,您可以執行 Merge-VHD 指令碼了。請注意,此操作將在離線狀態下進行。
若要合併 Hyper-V 快照,請執行此指令碼:
Merge-VHD Path = '' DestinationPath = ''
在此情況下,可以將多個子磁碟的資料(從最新的開始)合併到最舊的父磁碟中。螢幕上將顯示以下內容:

操作完成後,請關閉客體虛擬機器並重新啟動系統。與 Hyper-V 管理員不同,後者需求您分別合併磁碟鏈的每一層,而 PowerShell 則允許您透過單一指令即可執行這項複雜的操作。
為何您應該使用 Hyper-V 快照
Hyper-V 快照可讓您在套用配置變更、安裝新軟體、執行任何作業系統更新、升級安全性修補程式等操作之前,先儲存虛擬機器的狀態。如果您即將執行可能改變虛擬基礎架構的操作,或該操作失敗的風險很高,請事先為您的虛擬機器建立 Hyper-V 快照。若發生意外狀況,您需要將系統還原至先前狀態時,這將作為一道安全網。
然而,Hyper-V 快照在開發與測試環境中使用時效果最佳。它們並非有效且可靠的備份替代方案,我們不建議在生產環境中使用。相反地,建議採用功能齊全的 Hyper-V 備份解決方案,此類方案包含多種資料保護選項,相較於傳統的基礎架構維護,能為您節省大量時間、金錢與精力。