VMware 快照最佳實踐

VMware vSphere 虛擬機器具備強大的特點,能為軟體提供敏捷、多功能且高效的運作環境。vSphere 其中一項極具實用性的特點,便是能夠建立快照,並在需要時透過這些快照將虛擬機器還原至先前狀態。然而,這項技術仍有其局限性。

在這篇文章中,您將了解 VMware 快照及其使用情境。 我們還將引導您了解 VMware 快照的最佳實踐,並說明如何在 VMware vSphere Client 以及透過 PowerCLI 建立快照。

NAKIVO for VMware vSphere 備份

NAKIVO for VMware vSphere 備份

為 VMware vSphere 虛擬機器提供全面資料保護及快速還原選項。支援本地、異地及雲端的安全備份目標。具備防勒索軟體功能。

什麼是 VMware 快照?

VMware 快照是虛擬機器的某個時間點版本,此版本會記錄在相應的虛擬機器檔案中。透過快照,可以將虛擬機器還原至先前某個時間點的狀態,並保留當時的資料及其他設定。VMware 磁碟快照則是記錄於相應快照檔案中的虛擬磁碟變更日誌。

虛擬機器快照包含:

  • 虛擬機器磁碟狀態,即該機器中的磁碟內容。
  • 虛擬機器記憶體狀態與虛擬機器電源狀態, 即快照當時的記憶體佔用量,這使得能夠擷取虛擬機器的電源狀態。
  • 虛擬機器設定,包括裝置、虛擬網路卡等。舉例來說,您可以對一台未配備第二張虛擬網路介面卡(Network Interface Controller,簡稱 NIC)的虛擬機器建立快照。若您之後新增第二張網路介面卡,並還原至該快照,該網路介面卡將會消失,因為快照包含的是配置資訊,而不僅僅是資料和狀態。

虛擬機器備份與快照的比較

備份與快照的主要差異在於:備份是獨立於原始虛擬機器檔案的虛擬機器副本,而快照則依賴於原始虛擬機器。正因如此,即使快照是虛擬機器的某個時間點版本,包含該虛擬機器的檔案、狀態及設定,仍無法作為 vSphere 虛擬機器的備份使用。若將快照用作備份,您可能會發現,在發生故障後無法還原資料和虛擬機器。

  • 快照 取決於用於建立它們的來源虛擬機器檔案。 快照也可稱為差異磁碟,因為它們實際上是一組相對於"基礎"磁碟的差異資料。由於子磁碟/差異磁碟與其所依賴的基礎磁碟之間存在這種相互關係,因此有時也被稱為快照"鏈"。如果快照所依賴的基礎磁碟被刪除,快照將不包含重建已刪除資料所需的数据。
  • 備份 這些是獨立的資料副本,可讓虛擬機器檔案、磁碟以及整個虛擬機器的註冊資訊得以重新建立,且無需依賴生產環境資料或虛擬機器中所包含的虛擬磁碟。

VMware 快照的使用情境

快照通常用於快速執行"重複操作"類型的作業,特別是在開發環境中。在虛擬機器上測試特定軟體流程(例如應用程式測試、升級、更新或修補程式)之前,可能會先建立一個快照。如此一來,即可迅速將虛擬機器還原至先前狀態,使其恢復到執行軟體更新、升級等操作之前的狀態。

VMware 不支援在生產環境中運行快照,也不支援快照的長期部署。快照不應長期保留,因為若未加以管理,可能會導致效能下降或磁碟空間問題。

雖然快照不等同於備份,但可暫時用來建立備份。例如, NAKIVO 的解決方案 採用此技術來備份 VMware 虛擬機器。該解決方案會對虛擬機器進行快照,以建立一致的虛擬機器備份,即使虛擬機器正在運行時亦然(在建立 主機層級的虛擬機器備份). 成功建立虛擬機器備份後,快照即會被刪除。

VMware 快照檔案副檔名

在 VMware 的實作中,虛擬機器快照由以下這組檔案構成,這些檔案共同組成了快照檔案架構:

  • .vmdk – 基礎虛擬機器磁碟,其中包含原始資料。
  • -00000x.vmdk – 增量磁碟(delta disk),其中包含虛擬磁碟的當前狀態與上次建立快照時虛擬磁碟狀態之間的差異。虛擬磁碟的變更以重做日誌的形式呈現。用於快照的子 VMDK 磁碟中的資料,會透過"寫入時複製"(Copy-On-Write)機制,以 SPARSE 格式儲存。
  • .vmsd – 快照的資料庫檔案。其中包含快照管理員所使用的快照資訊。該資料庫包含各快照與其子磁碟之間的關聯性。
  • .vmsn – 此檔案包含虛擬機器的當前狀態,包括記憶體。這讓您可以還原至一個 跑步 還原時的虛擬機器狀態。若建立快照時未包含記憶體,還原至該快照後,虛擬機器將恢復至 已關機.

VMware snapshot storage – viewing snapshot files and other VM files

預設情況下,VMware 快照檔案的位置是虛擬機器目錄。但您可以透過編輯一個位置,將快照儲存於虛擬機器中。 VMX 虛擬機器的設定檔。此選項在以下情況下可能派上用場: 虛擬機的磁碟效能 這還不夠。

虛擬機器快照技術是如何運作的?

既然我們已經了解在 VMware 環境中建立快照時會產生哪些檔案,接下來就來探討 vSphere 快照建立背後的運作原理。

  1. 當我們使用如 VMware vSphere ClientPowerCLI, 該請求會透過 VMware API 傳送至伺服器。
  2. 建立、刪除或還原快照的請求會傳送至執行目標虛擬機器的伺服器。然而,這僅適用於 vCenter Server. 若快照請求是直接傳送至 ESXi 主機,則此步驟將被跳過。
  3. 如果該 擷取虛擬機器的記憶體快照 若此選項已啟用,ESXi 主機會將虛擬機器記憶體寫入磁碟。在此過程中,虛擬機器將會停止運作。
  4. ESXi 主機會修改虛擬機器的快照資料庫檔案(.vmsd) 以便反映虛擬機器快照管理員中的變更。
  5. ESXi 主機會呼叫 Virtual DISK API 函式,以對子磁碟檔案進行變更(-delta.vmdk 以及 .vmdk) 以及磁碟鏈。

建立快照

建立快照時,系統會保留虛擬磁碟在擷取快照當下的狀態,同時停止對 VMDK 檔案的所有寫入操作。為了記錄變更,系統會針對資料儲存區中包含的每個 VMDK 磁碟建立一個額外的 VMDK 檔案(增量磁碟),並將變更寫入該檔案。若您建立多個快照,系統會針對每個快照中的每個 VMDK 磁碟建立增量磁碟,用以呈現各快照之間的差異。

大量的快照鏈及對應的增量磁碟檔案會降低虛擬機器的儲存效能。當虛擬機器需要讀取資料時,必須依序同時讀取父虛擬磁碟 VMDK 檔案及相關的增量 VMDK 檔案(VMware 快照檔案)。此步驟旨在重建快照檔案中記錄的資料變更(虛擬磁碟輸入)歷史紀錄,並為虛擬機器輸出所要求的資料。快照檔案會隨時間增長。 若在虛擬機器上執行大量磁碟操作(記錄/刪除資料),快照的增長速度會更快。

您可以建立多個快照、還原至任何快照,並在進行變更後建立新的快照。因此,您可以建立一個快照樹。在下圖中,您可以看到當我們建立時所呈現的快照樹 快照 3, 恢復為 快照 2,然後建立 快照 3a.

A VMware vSphere snapshot tree

刪除快照

當您刪除快照時,系統會將快照與先前磁碟狀態之間的變更進行合併。來自增量磁碟的所有資料(其中包含已刪除快照的相關資訊)都會寫入原始的 VMDK 磁碟中。刪除快照所需的時間,取決於自上次建立快照以來寫入虛擬磁碟的資料量。讓我們來看看在不同情況下,快照是如何被刪除的。

在我們的範例中,如對應圖表所示,我們有一個基礎磁碟(VMDK)和兩個快照:

  • 第一個 VMware 快照檔案的大小為 3.3 GB,而第二個快照的大小為 2.2 GB。
  • 快照會使用對應的 delta VMDK 檔案,但為了更方便起見,快照名稱是 快照_1 以及 快照_2 在圖中。
  • 您目前所在的位置 此處說明我們虛擬機器的當前狀態(可能是快照之前或之後的狀態)。

刪除最後一個快照

當我們刪除第二個 VMware 快照(即在當前虛擬機器狀態之前,快照鏈中的最後一個快照)時,該 快照_2 資料已與母公司合併 快照_2 增量磁碟。第一個快照的大小會增加已刪除的第二個快照的大小(以本例而言為 3.3 GB + 2.2 GB)。

VMware snapshots explained – deleting the last snapshot

刪除第一個快照

當您刪除快照鏈中的第一個快照,而您當前的虛擬機器狀態是最後一個快照之後的狀態時,會發生什麼情況? 快照_1 資料已寫入基礎磁碟,並且 快照_2 將予以保留。基礎磁碟大小會增加,增加的量等於我們即將刪除的第一個 VMware 快照檔案的大小(本例中為 20 GB + 3.3 GB)。VMware 快照檔案本身並無任何變更(與 快照_2).

VMware snapshots explained – deleting the first snapshot

刪除所有快照

當您刪除所有快照時,VMware 快照檔案將會被整合,且資料會被提交至基礎磁碟(此時會採用新演算法)。 快照_1 資料會先寫入基礎磁碟。接著 快照_2 資料已寫入基礎磁碟。若您還有其他快照,系統將對所有後續快照執行相同的處理程序。在寫入 VMware 快照檔案中記錄的資料變更後,基礎磁碟的大小將會增加。

VMware snapshots explained – deleting all snapshots

在使用 vSphere 5.0 及更早版本的演算法時,VMware 快照檔案會透過先將資料寫入父快照磁碟的方式進行整合(快照_2快照_1 (在我們的範例中),然後所有快照資料都會被提交至基礎磁碟。

在當前狀態之後刪除快照

在前三個範例中,虛擬機器的狀態(標示為 您目前所在的位置 (如圖所示)代表鏈中所有快照之後的狀態。在此範例中,虛擬機器的狀態位於第一個快照之後、第二個快照(此處即為最後一個快照)之前。

當我們刪除最後一個快照時,該快照會被刪除,且不會影響鏈中之前的快照。不會將任何變更寫入 快照_1 以及本範例中的基礎磁碟。如果我們在第二個快照之後還有更多快照(第三個、第四個、第五個等),這些快照的資料(即後續快照檔案的資料)也會連同第二個 VMware 快照檔案的資料一併刪除。

VMware snapshots explained – deleting a snapshot after your current state

VMware 快照的刪除方式

自 vSphere 6.0 起,刪除快照時會使用快照鏡像驅動程式來執行快照整合。此驅動程式亦用於 VMware 儲存系統 vMotion. 暫時輔助快照磁碟的使用量已降至最低,即使沒有輔助磁碟,也能在單次處理中完成快照整合。虛擬機器變更會寫入至活躍的 VMDK 磁碟,且在 VMware 快照整合過程中,寫入順序會受到保護。

在整合過程中,寫入操作會同時進行至活躍磁碟與基礎磁碟,並會傳送確認訊息。

VMware snapshots explained – how snapshots are deleted

如何在 VMware vSphere Client 中建立快照

以下操作指南採用 vSphere 6.5 中的新版 HTML5 vSphere 客戶端。此工作流程同樣適用於 vSphere 6.7, vSphere 7.0, 7.0U1 及 7.0U2。

  1. 在您要為其建立快照的虛擬機器上按右鍵,然後選取 Snapshots > Take Snapshot.

How to take snapshot in vCenter

  1. Take Snapshot 在對話方塊中,您可以為快照命名,並為快照建立描述,以便提供更多詳細資訊。
  • ""的核取方塊 Include the virtual machine’s memory 讓我們能夠在包含虛擬機器記憶體與不包含虛擬機器記憶體的快照之間進行選擇。讓我們來看看兩者的差異:
    • 當您選取 Include the virtual machine’s memory, 快照中會包含虛擬機器的內部狀態快照。若要擷取包含虛擬機器記憶體的快照,虛擬機器必須處於已啟動狀態——否則,此選項將無法選取。透過擷取已啟動虛擬機器的快照,您可以捕捉虛擬機器的即時狀態,並隨時還原至該狀態。
    • 若未選取此選項,快照將不會擷取虛擬機器的即時狀態。若您需要還原至該快照,虛擬機器將被還原,其資料內容雖與快照相同,但處於關機狀態。還原完成後,必須手動開啟虛擬機器的電源。
  • 您可以選擇 Quiesce guest file system 若虛擬機器上正在執行寫入操作,可選擇建立"應用程式感知"快照,以維持資料的一致性。
    • VMware Tools, 包括同步驅動程式, 必須安裝才能達成此目的。一個快照包含 靜止選項 適合使用此快照來備份虛擬機器資料。
    • VMware ToolsVMware Snapshot Provider 在客體作業系統(Windows 客體)中啟動建立 VSS 快照。 Volume Shadow Copy Service 在客體作業系統中的 (VSS) 寫入程式接收到請求後,會準備相關資料以建立"應用程式感知型快照"。所有寫入交易都會從虛擬機器記憶體寫入虛擬機器磁碟。當此操作完成後,VSS 寫入程式會通知 VMware Tools,表示該虛擬機器已準備好進行快照。

註: 當您選取 包含虛擬機器的記憶體 選項,該 Quiesce guest file system 將處於非活動狀態。若虛擬機器已開啟電源,您可以選擇其中一個選項。

How to take a snapshot in VMware vSphere Client

  1. 點擊 Create 建立快照後,您便可在 vCenter 中看到相關任務開始執行 Recent Tasks 窗格。

A vSphere snapshot is being created

如何管理 vSphere 快照

  1. 建立快照後,我們可以透過右鍵點擊並選擇來管理它 Snapshots > Manage Snapshots.

Managing vSphere snapshots

  1. Manage Snapshots 在對話方塊中,我們可以看到虛擬機器上現有的快照,以及相關選項:
  • Revert – 還原至現有的快照。使用此選項可將虛擬機器還原至快照中儲存的狀態。
  • Edit – 編輯快照名稱與說明。
  • Delete – 刪除所選的快照;將該快照從"快照管理員"中移除。若快照的時間點早於當前狀態,則該快照的資料將與虛擬機的父快照磁碟或基礎虛擬磁碟合併。
  • Delete All – 刪除當前虛擬機器的所有快照。

此外,還會顯示其他相關資訊,例如快照名稱、建立時間以及磁碟使用量。

A vSphere snapshot has been created

快照警報規則

當快照大小顯著增加時,虛擬機器磁碟的效能便會下降。因此,您應密切留意 VMware 虛擬機器的快照大小,以便在快照對 VMware 效能造成負面影響之前,採取相應措施並刪除或整合快照。設定 VMware vSphere 快照警示規則,可讓您在快照大小超過通知設定中設定的適當數值時收到通知。讓我們來詳細了解如何在 vSphere Client 中設定 vSphere 快照通知。

我們將設定當快照大小超過 30 GB 時,系統會發送通知。

  1. 前往 Hosts and Clusters 並選取一台虛擬機器。右鍵點擊該虛擬機器,在彈出的選單中,點擊 Alarms > New Alarm Definition.

Creating snapshot alarms according to VMware snapshot best practices

  1. New Alarm Definition 精靈視窗開啟。
    1. Name and Targets. 輸入鬧鐘名稱,例如, vSphere snapshot usage. 輸入說明(可選)。選擇 Virtual Machine 目標類型。點擊 Next 在精靈的每個步驟中,請點擊以繼續。

Creating a new vSphere snapshot alarm rule

    1. Alarm Rule 1. 請依下列方式設定規則:
      • IF
        • VMware Snapshot Size | is above | 30 GB
      • 當時
        • 觸發警報並 Show as Warning
        • 發送email通知: ON
        • 主旨: 您可以使用預設的主題
        • 寄至email: 請輸入您的email地址

Configuring a vSphere snapshot alarm rule

    1. Reset Rule 1. 您可以参照設定警報規則的方式來設定重置規則。當 vSphere 快照不再符合警告或嚴重狀態時,重置規則會負責發送通知訊息。

Configuring a reset rule to send notifications

    1. Review. 請檢視您的規則設定。如果一切正確,請按下 Create.

The alarm notification is sent if the VMware snapshot file size is above 30 GB

若要了解如何在 PowerCLI 中使用 vSphere 快照,請參閱下一節。

如何使用 PowerCLI 建立快照

與 vSphere 互動的一種強大方式是透過 使用 PowerCLI. PowerCLI 可用於建立、刪除及還原快照。讓我們來看看執行這些操作的一些基本語法。

使用 PowerCLI 建立快照

若要使用 PowerCLI 建立快照,可採用以下語法:

get-vm testvm | new-snapshot -Memory -quiesce -name "Test snap"

刪除快照

要刪除快照,我們可以將快照名稱儲存到變數中,例如 $snap 並使用它來刪除該快照:

Remove-Snapshot -Snapshot $snap -RemoveChildren

還原至快照

若要還原至已建立的快照,我們可以使用以下語法:

get-vm “testvm" | set-vm -snapshot "Test snap" -confirm:$false

VMware 快照的限制

關於 vSphere 快照,有幾項限制您應知悉。

  • 隨著快照數量隨時間增加,可能會引發一些問題。快照可能變得難以管理,並佔用過多的磁碟空間。此外,它們也無法免受硬體故障的影響。
  • 虛擬機器快照保留時間過長、快照樹過大,或是自上次建立快照以來,虛擬機器及其客體作業系統發生過多變更,都可能對虛擬機器和主機的效能造成負面影響。
  • 原始磁碟和 RDM 實體模式磁碟不支援 VMware 快照。然而,啟用虛擬相容模式的 RDM(原始裝置映射)則支援快照。
  • 獨立磁碟不支援 VMware 快照。若要建立快照,必須先關閉具有獨立磁碟的虛擬機器。若虛擬機器處於開啟或暫停狀態,則不支援建立快照。
  • VMware 不提供針對 PCI vSphere Direct Path I/O 裝置的快照功能。
  • 對於在虛擬機器內使用 iSCSI 發起者的虛擬機器作業系統,VMware 快照功能亦無法使用。
  • 已設定匯流排共用功能的虛擬機器不支援 VMware 快照。
  • 對於使用 2 TB 或更大 VMDK 的虛擬機器而言,與快照相關的操作相當耗時。
  • 不應將快照視為長期資料保護(備份)與還原方法,因為若快照檔案與虛擬機器一同遺失,則無法從快照檔案中恢復資料。

VMware 快照最佳實踐

在處理快照時,請盡量遵循這些 VMware 快照最佳實踐。

  • 請勿將快照用作備份。快照無法作為資料保護與還原的方法,因為快照檔案僅是父虛擬磁碟的變更日誌。
  • 快照鏈中的快照數量不應超過 32 個。為獲得更好的效能,請將快照數量限制在 2 或 3 個。
  • VMware 快照檔案會隨著時間推移而逐漸增大,可能佔用資料儲存區過多空間,並造成儲存開銷。一般建議是不要儲存超過 72 小時的快照。例如,您可以在 PowerCLI 中顯示超過 3 天的快照。

: 顯示超過 72 小時的快照的指令:

Get-VM | Get-Snapshot | Where {$_.Created -lt (Get-Date).AddDays(-3)} | Select-Object VM, Name, Created, SizeMB

  • 不應批量執行刪除操作,因為這可能會將儲存於增量檔案中的所有變更提交至父級 VMware 快照檔案或基礎磁碟 VMDK 檔案。
  • 對於資料變動頻繁且 I/O 負載較高的資料庫伺服器虛擬機器,使用快照時務必格外謹慎,因為快照可能會佔滿整個資料存放區的空間。
  • 在使用依賴快照的第三方解決方案時,請務必定期刪除快照。
  • 若您計畫在虛擬機器磁碟上仍儲存有快照的情況下,增加該磁碟的儲存空間,請務必謹慎。快照可能會受損,進而導致意外的資料遺失。
  • 善用 vCenter 警報和 PowerCLI 指令碼,隨時掌握虛擬機器快照及資料存放區的空間使用狀況。這也能讓您追蹤虛擬機器快照的存留時間。
  • 若您的 vSphere 版本早於 v5.0,請在執行 Storage vMotion 之前刪除所有快照。自 vSphere 5.0 起,Storage vMotion 僅支援具有快照的虛擬機器;若使用較早版本,可能會導致資料遺失或使虛擬機器無法使用。
  • 監控 VMware vSphere 環境,以預防問題並主動加以解決。

結語

快照提供了一種強大的機制,可讓您將 VMware 虛擬機器還原至已知狀態。這包括磁碟上的檔案、記憶體中的資料,以及建立快照時虛擬機器上的配置。特別是在開發環境中,當測試程式碼整合、更新或其他可能需要多次執行才能完成的修改時,使用快照將帶來極大助益。 透過還原至快照,您可以快速且高效地恢復到已知正常運作的狀態。

然而,快照並非備份,僅應存在於開發環境中,而不應出現在生產環境中。此外,不應將快照長期保留在虛擬機器上,因為這可能會導致效能下降及過度佔用磁碟空間。使用 NAKIVO Backup & Replication 用以保護 VMware vSphere 的資料、應用程式及虛擬機器。請下載免費版本,在您的環境中試用本產品。

試試看 NAKIVO Backup & Replication

試試看 NAKIVO Backup & Replication

立即申請免費試用,全面探索本解決方案的所有資料保護功能。15 天免費試用。無任何特點或容量限制。無需提供信用卡資訊。

People also read