VMware 快照最佳實踐
VMware vSphere 虛擬機器具備強大的特點,能為軟體提供敏捷、多用途且高效的運作環境。vSphere 其中一項極具實用性的特點,便是能夠建立快照,並在需要時透過這些快照將虛擬機器還原至先前狀態。然而,這項技術仍有其限制。
在這篇文章中,您將了解 VMware 快照及其使用情境。 我們還將引導您了解 VMware 快照的最佳實踐,並說明如何在 VMware vSphere Client 以及透過 PowerCLI 建立快照。
什麼是 VMware 快照?
VMware 快照是虛擬機器的某個時間點的版本,此版本會記錄在相應的虛擬機器檔案中。透過快照,可以將虛擬機器還原至先前某個時間點的狀態,同時保留當時的資料和其他設定。VMware 磁碟快照則是記錄在相應快照檔案中的虛擬磁碟變更日誌。
虛擬機器快照包含:
- 虛擬機器磁碟狀態,即該機器中的磁碟內容。
- 虛擬機器記憶體狀態與虛擬機器電源狀態,即快照建立當下的記憶體佔用量,這使得能夠擷取虛擬機器的電源狀態。
- 虛擬機器設定,包括裝置、虛擬網路卡等。舉例來說,您可以對未安裝第二個虛擬網路介面卡(NIC)的虛擬機器建立快照。若您之後新增了第二個網路介面卡,並還原至該快照,該網路介面卡將會消失,因為快照包含的是配置資訊,而不僅僅是資料和狀態。
虛擬機器備份與快照的比較
備份與快照的主要區別在於:備份是獨立於原始虛擬機器檔案的虛擬機器副本,而快照則依賴於原始虛擬機器。正因如此,即使快照是虛擬機器的某個時間點版本,包含虛擬機器的檔案、狀態和設定,它仍無法作為 vSphere 虛擬機器的備份使用。若將快照用作備份,一旦發生故障,您可能會發現無法還原資料和虛擬機器。
- 快照 取決於用於建立它們的原始虛擬機器檔案。 快照常被稱為差異磁碟,因為它們實質上是一組相對於"基礎"磁碟的差異資訊。由於子磁碟/差異磁碟與其所依賴的基礎磁碟之間存在這種相互關係,它們有時也被稱為快照"鏈"。如果快照所依賴的基礎磁碟被刪除,快照將不包含重建已刪除資料所需的数据。
- 備份 這些是獨立的資料副本,可讓虛擬機器檔案、磁碟以及整個虛擬機器的註冊資訊得以重新建立,且無需依賴生產環境資料或虛擬機器內含的虛擬磁碟。
VMware 快照的使用情境
快照通常用於快速執行"反覆操作"類型的任務,特別是在開發環境中。在虛擬機器上測試特定軟體流程(例如應用程式測試、升級、更新或修補程式)之前,可能會先建立一個快照。如此一來,即可迅速將虛擬機器還原至先前狀態,使其恢復到執行軟體更新、升級等操作之前的狀態。
VMware 不支援在生產環境中運行快照,也不支援快照的長期部署。快照不應長時間保留在系統中,因為若未加以管理,可能會導致效能下降或磁碟空間問題。
雖然快照不等同於備份,但可暫時用來建立備份。例如, NAKIVO 的解決方案 將此技術應用於 VMware 虛擬機器備份。該解決方案會對虛擬機器進行快照,以建立一致的虛擬機器備份,即使虛擬機器正在運行時亦然(在建立 主機層級的虛擬機器備份)。虛擬機器備份成功建立後,快照即會被刪除。
VMware 快照檔案副檔名
在 VMware 的實作中,虛擬機器快照由以下這組檔案構成,共同組成了快照檔案架構:
.vmdk– 基礎虛擬機器磁碟,其中包含原始資料。-00000x.vmdk– delta 磁碟,其中包含虛擬磁碟當前狀態與上次建立快照時虛擬磁碟狀態之間的差異。虛擬磁碟的變更以重做日誌的形式呈現。用於快照的子 VMDK 磁碟中的資料,會透過"寫入時複製"機制以 SPARSE 格式儲存。.vmsd– 快照的資料庫檔案。其中包含快照管理員所使用的快照資訊。該資料庫包含各快照與其子磁碟之間的關聯性。.vmsn– 包含虛擬機器當前狀態(包括記憶體)的檔案。這讓您可以還原至 跑步 還原時虛擬機器的狀態。若建立快照時未包含記憶體,還原至該快照時,虛擬機器的狀態將是 已關機.
預設情況下,VMware 快照檔案的位置是虛擬機器目錄。但您可以透過編輯位置,將快照檔案存儲在其他位置。 VMX 虛擬機的設定檔。此選項在以下情況下可能很有用: 虛擬機的磁碟效能 還不夠。
虛擬機器快照技術是如何運作的?
既然我們已經了解在 VMware 環境中建立快照時會產生哪些檔案,接下來讓我們來探討 vSphere 快照建立背後的運作原理。
- 當我們使用如 VMware vSphere Client 或 PowerCLI, 該請求會透過 VMware API 傳送至伺服器。
- 建立、刪除或還原快照的請求會傳送至執行目標虛擬機器的伺服器。然而,這僅適用於 vCenter Server. 若快照請求是直接傳送至 ESXi 主機,則此步驟將被跳過。
- 如果 擷取虛擬機器的記憶體快照 若此選項已啟用,ESXi 主機會將虛擬機器記憶體寫入磁碟。在此過程中,虛擬機器將會停止運作。
- ESXi 主機會修改虛擬機的快照資料庫檔案(
.vmsd) 以便反映虛擬機器快照管理員中的變更。 - ESXi 主機會呼叫 Virtual DISK API 函式,以對子磁碟檔案進行變更(
-delta.vmdk以及.vmdk) 以及磁碟鏈。
建立快照
建立快照時,系統會保留虛擬磁碟在快照建立當下的狀態,同時停止對 VMDK 檔案的所有寫入操作。為了記錄變更,系統會針對資料儲存庫中包含的每個 VMDK 磁碟建立一個額外的 VMDK 檔案(增量磁碟),並將變更寫入該檔案。若建立多個快照,系統會為每個快照中的每個 VMDK 磁碟建立增量磁碟,用以呈現它們之間的差異。
大量的快照鏈及對應的增量磁碟檔會降低虛擬機器(VM)的儲存效能。當虛擬機器需要讀取資料時,必須依序同時讀取父虛擬磁碟 VMDK 檔及相關的增量 VMDK 檔(VMware 快照檔)。此步驟旨在重建快照檔中記錄的資料變更(虛擬磁碟輸入)歷史紀錄,並為虛擬機器輸出所請求的資料。快照檔會隨時間增長。 若在虛擬機器上執行大量磁碟操作(記錄/刪除資料),快照的增長速度會更快。
您可以建立多個快照、還原至任何快照,並在進行變更後建立新的快照。因此,您可以建立一個快照樹。在下圖中,您可以看到當我們建立 快照 3,恢復為 快照 2,然後建立 快照 3a.
刪除快照
當您刪除快照時,系統會將快照與先前磁碟狀態之間的變更進行合併。差分磁碟中的所有資料(包含已刪除快照的相關資訊)都會寫入原始的 VMDK 磁碟。刪除快照所需的時間,取決於自上次建立快照以來寫入虛擬磁碟的資料量。讓我們來看看在不同情況下,快照是如何被刪除的。
在我們的範例中,如對應的圖表所示,我們有一個基礎磁碟(VMDK)和兩個快照:
- 第一個 VMware 快照檔案的大小為 3.3 GB,而第二個快照的大小為 2.2 GB。
- 快照會使用對應的 delta VMDK 檔案,但為了更方便起見,快照名稱是 快照_1 以及 快照_2 在圖中。
- 該 您現在的位置 此處說明我們虛擬機器的當前狀態(可能是快照之前或之後的狀態)。
刪除最後一個快照
當我們刪除第二個 VMware 快照(即在當前虛擬機器狀態之前,快照鏈中的最後一個快照)時, 快照_2 資料已與母公司合併 快照_2 增量磁碟。第一個快照的大小會增加被刪除的第二個快照的大小(以本例而言為 3.3 GB + 2.2 GB)。
刪除第一個快照
若您刪除了快照鏈中的第一個快照,而您當前的虛擬機器狀態是最後一個快照之後的狀態,會發生什麼情況? 快照_1 資料已寫入基礎磁碟,且 快照_2 將被保留。基礎磁碟大小會增加,增加的數值等於我們即將刪除的第一個 VMware 快照檔案的大小(本例中為 20 GB + 3.3 GB)。VMware 快照檔案(與 快照_2).
刪除所有快照
當您刪除所有快照時,VMware 快照檔案將會被整合,且資料會被提交至基礎磁碟(此時會採用新演算法)。 快照_1 資料會先寫入基礎磁碟。接著 快照_2 資料已寫入基礎磁碟。若您擁有更多快照,後續的所有快照也將執行相同的處理程序。在寫入 VMware 快照檔案中記錄的資料變更後,基礎磁碟的大小將會增加。
在使用 vSphere 5.0 及更早版本的演算法時,VMware 快照檔案會透過先將資料寫入父快照磁碟的方式進行整合(快照_2 至 快照_1 (在我們的範例中),然後所有快照資料都會寫入基礎磁碟。
在當前狀態之後刪除快照
在前三個範例中,虛擬機器狀態(標示為 您現在的位置 (如圖所示)代表鏈中所有快照之後的狀態。在此範例中,虛擬機器的狀態位於第一個快照之後、第二個快照(即本例中的最後一個快照)之前。
當我們刪除最後一個快照時,該快照將被刪除,且不會影響鏈中之前的快照。不會將任何變更寫入 快照_1 以及本範例中的基礎磁碟。如果第二個快照之後還有更多快照(第三、第四、第五等),這些快照的資料(即後續快照檔案的資料)也會連同第二個 VMware 快照檔案的資料一併刪除。
如何刪除 VMware 快照
自 vSphere 6.0 起,刪除快照時會使用快照鏡像驅動程式來執行快照整合。此驅動程式亦用於 VMware 儲存系統 vMotion. 暫時輔助快照磁碟的使用已降至最低,即使沒有輔助磁碟,也能一次完成快照整合。虛擬機器變更會寫入至活躍的 VMDK 磁碟,且在 VMware 快照整合過程中,寫入順序會受到保護。
在整合過程中,寫入操作會同時進行至活躍磁碟與基礎磁碟,並會傳送確認回報。
如何在 VMware vSphere Client 中建立快照
以下操作指南採用 vSphere 6.5 中的新版 HTML5 vSphere 客戶端。此工作流程同樣適用於 vSphere 6.7, vSphere 7.0、7.0U1 及 7.0U2。
- 在您要建立快照的虛擬機器上按右鍵,然後選擇
Snapshots > Take Snapshot.
- 在
Take Snapshot在對話方塊中,您可以為快照命名,並為快照建立說明,以便提供更多詳細資訊。
- ""的核取方塊
Include the virtual machine’s memory這讓我們可以在包含虛擬機器記憶體與不包含虛擬機器記憶體的快照之間進行選擇。讓我們來看看兩者的差異:- 當您選取
Include the virtual machine’s memory快照中會包含虛擬機器的內部狀態快照。若要擷取包含虛擬機器記憶體的快照,虛擬機器必須處於已啟動狀態——否則,此選項將無法選取。透過擷取已啟動虛擬機器的快照,您可以捕捉虛擬機器的即時狀態,並隨時還原至該狀態。 - 若未選取此選項,快照將不會擷取虛擬機器的即時狀態。若需還原至該快照,虛擬機器將被還原,其資料內容雖與快照相同,但系統狀態將處於關機狀態。還原完成後,必須手動開啟虛擬機器。
- 當您選取
- 您可以選擇
Quiesce guest file system若虛擬機器上正在執行寫入操作,可選擇建立"應用程式感知"快照以維持資料一致性。VMware Tools為此目的,必須安裝包括同步驅動程式在內的相關軟體。一個包含快照的快照 靜止選項 適合使用此快照來備份虛擬機器資料。VMware Tools與VMware Snapshot Provider在客體作業系統(Windows 客體)中啟動建立 VSS 快照。Volume Shadow Copy Service(VSS) 寫入器在客體作業系統中接收到請求後,會準備應用程式以建立"應用程式感知型快照"。所有寫入交易都會從虛擬機器記憶體寫入虛擬機器磁碟。當此操作完成時,VSS 寫入器會通知 VMware Tools,表示虛擬機器已準備好進行快照。
註: 當您選取 包含虛擬機器的記憶體 選項,該 Quiesce guest file system 將處於非活動狀態。若虛擬機器已開啟,您可以選擇其中一個選項。
- 點擊
Create建立快照後,您便可在 vCenter 中看到相關任務開始執行Recent Tasks面板。
如何管理 vSphere 快照
- 建立快照後,我們可以透過右鍵點擊並選擇來管理它
Snapshots > Manage Snapshots.
- 在
Manage Snapshots在對話方塊中,我們可以看到虛擬機器上存在的快照,以及相關選項:
Revert– 還原至現有快照。使用此選項可將虛擬機器還原至快照中儲存的狀態。Edit– 編輯快照名稱和描述。Delete– 刪除選取的快照;將快照從"快照管理員"中移除。如果快照的時間點早於您當前的狀態,該快照的資料將與虛擬機器(VM)的父快照磁碟或基礎虛擬磁碟合併。Delete All– 刪除當前虛擬機器的所有快照。
此外,還會顯示其他相關資訊,例如快照名稱、建立時間以及磁碟使用量。
快照警報規則
當快照大小顯著增加時,虛擬機器磁碟的效能將會下降。因此,您應密切關注 VMware 虛擬機器的快照大小,以便在快照對效能造成負面影響之前採取措施,並刪除或整合快照。設定 VMware vSphere 快照警示規則,可讓您在快照大小超過通知設定中設定的適當值時收到通知。讓我們來詳細了解如何在 vSphere Client 中設定 vSphere 快照通知。
我們將設定當快照大小超過 30 GB 時,系統會發送通知。
- 前往
Hosts and Clusters並選取一台虛擬機器。右鍵點擊該虛擬機器,在彈出的選單中,點擊Alarms > New Alarm Definition.
- 該
New Alarm Definition精靈視窗開啟。Name and Targets. 輸入鬧鐘名稱,例如,vSphere snapshot usage. 輸入說明(非必填)。選擇Virtual Machine目標類型。點擊Next在精靈的每個步驟中,請點擊"繼續"。
-
Alarm Rule 1. 請依下列方式設定規則:- 如果
VMware Snapshot Size|is above|30 GB
- 當時
- 觸發警報並 S
how as Warning - 發送email通知:
ON - 主旨: 您可以使用預設的主旨
- Email to:請輸入您的email地址
- 觸發警報並 S
- 如果
-
Reset Rule 1. 您可以像設定警示規則那樣,以類似的方式設定重置規則。當 vSphere 快照不再符合警告或嚴重狀態時,重置規則會負責發送通知訊息。
-
Review. 請檢查您的規則設定。如果一切正確,請按下Create.
若要了解如何在 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 的資料、應用程式和虛擬機器。請下載免費版本,在您的環境中試用本產品。
















