有時候,您需要在其中一個客戶虛擬機器(VM)上安裝操作系統更新或安全補丁。然而,更新過程有時可能出錯,導致系統故障、配置數據丟失或某些程序被卸載。Microsoft Hyper-V提供了創建Hyper-V快照的機會,這使您可以在特定時間點保存VM的狀態,並在系統錯誤發生時將系統恢復到其以前的狀態。
在這篇博客文章中,我們將描述如何使用Hyper-V Manager或PowerShell合併Hyper-V快照以及它們的使用方式。但是,要了解如何管理Hyper-V快照,您首先需要了解其背後的技術。
什麼是Hyper-V快照?
A Hyper-V snapshot is a point-in-time copy of a VM, which contains all the information required to restore your data. With the use of Hyper-V snapshots, you can revert the VM to a point when the VM state was captured and the snapshot was taken. Hyper-V snapshot technology is enabled by default when the Hyper-V role is installed on your computer and your first VM is created. Hyper-V snapshots of a selected VM can be taken in any state (Off, Running, Paused, and Saved) and the operation is typically complete in a few seconds.
請注意,Hyper-V快照目前被稱為Hyper-V檢查點,但這兩個術語同樣有效。
Hyper-V快照的類型
Microsoft Hyper-V提供兩種快照類型:
- 生產快照在客戶OS內部應用備份技術來創建VM的數據一致快照。為此,使用Windows Volume Shadow Copy Service(VSS)或Linux文件系統凍結。Hyper-V生產快照可用於捕獲生產環境的狀態,因為它們改善了應用程序和客戶OS的數據一致性。請注意,Hyper-V生產快照不會捕獲VM的內存狀態、有關其CPU活動的信息或硬件配置。
在新的操作系统版本(Windows Server 2016和Windows 10)中,生產檢查點是默認的檢查點類型。但是,您可以在Hyper-V管理器或Windows PowerShell中更改它。
- 標準快照 捕捉虛擬機器的狀態,包括其CPU活動和內存,以及特定時間點的硬件配置。因此,標準的Hyper-V快照允許捕捉應用程序的當前狀態,並將虛擬機器回滾到特定時間點的狀態或條件。它們主要適用於開發和測試場景。創建Hyper-V標準快照不能被認為是可靠的備份策略,因為它們可能會導致一些對VSS不知曉的應用程序造成數據不一致性的問題。
Hyper-V快照的工作原理
正如您所知,Hyper-V虛擬機器存儲在虛擬磁盤中,該磁盤的格式為.vhd(x)文件格式。同時,在這些Hyper-V虛擬機器上創建的快照文件存儲在.avhd(x)文件格式中,並且它們保存在與硬盤映像文件相同的文件夾中。Hyper-V快照基本上是差異虛擬磁盤,每個快照都與相應的父虛擬硬盤具有父子關係。您可以為每個虛擬機器創建多達50個快照。所有Hyper-V快照都以分層次序組織,從而構成檢查點子樹。
然而,問題在於 .avhd(x) 檔案往往會不斷堆積並佔用大量磁碟空間,進而影響 VM 的效能。如果您想要刪除不必要的 .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 快照:從子快照到父快照。因此,重要的是要通過建立它們的創建順序來建立檢查點樹的結構:從最新的到最舊的。
如上所述,每个快照与在其之前创建的另一个快照具有父子关系。它们全部可以以链的形式表示。例如,为一个虚拟硬盘创建了 3 个快照。运行 VM 的主虚拟磁盘充当第一个检查点的父级,该检查点充当第二个检查点的父级,第二个检查点充当第三个检查点的父级。
要建立检查点结构,请执行以下步骤:
- 打开 Hyper-V 管理器。
- 在中央窗格中,选择要合并快照的 VM。
- 在右侧的“操作”部分,单击检查磁盘。
- 选择 .avhd(x) 文件,然后单击确定。
- 接下来,您应该看到虚拟硬盘属性的一般概述,包括其名称、位置和父级的名称。确定所选 .avhd(x) 文件的父级。
- 重复步骤 3-5,对每个 .avhd(x) 文件进行识别以进行合并的顺序。
之後,您可以開始合併 Hyper-V 快照的過程。請注意,您的虛擬機必須關機,以避免在合併操作期間出現任何問題。
要合併 Hyper-V 快照,請按照以下步驟進行:
- 打開 Hyper-V 管理員。
- 選擇所需的虛擬機。
- 點擊編輯磁碟。將打開「編輯虛擬硬碟精靈」。點擊下一步。
- 點擊瀏覽以選擇最新的 .avhdx 檔案。點擊下一步。
- 選擇合併以將存儲在差異磁碟中的更改合併到父磁碟或其他磁碟中。點擊下一步。
- 選擇到父虛擬硬碟並點擊完成。
- 要完全完成合併 Hyper-V 快照的過程,重複步驟 1-5,對每個 .avhd(x) 檔案進行操作,直到所有更改都合併到原始父磁碟中。
- 最後一步是重新啟動虛擬機以採用實施的更改。
使用 PowerShell
在開始合併 Hyper-V 快照之前,請確保您的電腦已啟用 Merge-VHD Cmdlet。如果未啟用,屏幕上將出現以下錯誤:未識別 'Merge-VHD' 作為 cmdlet、函數、腳本檔或可執行的程式名稱。
請檢查名稱的拼寫,或者如果包括路徑,請驗證路徑是否正確,然後重試。
為了解決此問題,以系統管理員身份開啟 PowerShell,並執行以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell
如果一切正確,您應該會看到以下內容:
現在,您已準備好執行 Merge-VHD Cmdlet。請注意,此操作是離線進行的。
要合併 Hyper-V 快照,請運行此 Cmdlet:
Merge-VHD 路徑 = '' 目標路徑 = ''
在這種情況下,從最新的子磁碟開始,數據可以合併到最舊的父磁碟中。在屏幕上,您將看到以下內容:
操作完成後,關閉客戶端 VM 並重新啟動系統。與需要分別合併磁碟鏈的每一層的 Hyper-V 管理器不同,PowerShell 允許您使用單個命令執行此類複雜操作。
為什麼您應該使用 Hyper-V 快照
Hyper-V 快照允許在應用配置更改、安裝新軟件、運行任何操作系統更新、升級安全補丁等之前保存 VM 狀態。如果您即將執行可能更改虛擬基礎架構或存在高風險的操作,請先創建 VM 的 Hyper-V 快照。這將作為安全網,以防出現問題並需要將系統恢復到先前的狀態。
然而,在開發和測試環境中使用 Hyper-V 快照可以獲得最佳效果。它們不是一個有效和可靠的備份替代方案,我們不建議在生產環境中使用它們。相反,請考慮使用功能豐富的 Hyper-V 備份解決方案,其中包括多種數據保護選項,與傳統基礎設施維護相比,可以節省大量時間、金錢和精力。
Source:
https://www.nakivo.com/blog/merge-hyper-v-snapshots-step-step-guide/