虛機快照解讀
一、什麽是快照?
快照可保存虛擬機在特定時刻的狀態和數據。
狀態包括虛擬機的電源狀態(例如,打開電源、關閉電源、掛起)。
數據包括組成虛擬機的所有文件。這包括磁盤、內存和其他設備(例如虛擬網絡接口卡)。
虛擬機提供了多個用於創建和管理快照及快照鏈的操作。通過這些操作,您可以創建快照、還原到鏈中的任意快照以及移除快照。可以創建層層快照樹。
二、創建快照
創建快照比較簡單
註意:虛擬機內部狀態的轉儲將包括在快照中。內存快照的創建時間要長一些,但其允許虛擬機還原到創建快照時的運行中的狀態。默認情況下此選項處於選中狀態。如果未選中該選項,並且未選中靜默,快照將創建在崩潰後仍保持一致的文件,可用來重新引導虛擬機。
但如果是獨立磁盤,則不能創建內存快照,NBU不能對獨立磁盤的虛機創建備份。
靜默狀態:在生成快照時虛擬機電源已打開,VMware Tools 將讓虛擬機中的文件系統處於靜默狀態。靜默文件系統是使物理或虛擬計算機的磁盤數據進入適合備份的狀態的過程。此過程可能包括將臟緩沖從操作系統內存高速緩存刷新到磁盤,以及其他更高級別的應用程序特定任務。
註意:靜默表示暫停或改變在計算機上運行的進程的狀態,特別是可能會在備份過程中修改存儲在磁盤上的信息的進程,以保證一致的可用備份。內存快照不需要靜默,其主要用於備份。
三、快照命令和文件解析
創建快照時,快照將由以下文件組成:
<vm>-<number>.vmdk 和 <vm>-<number>-delta.vmdk
各個虛擬磁盤的 .vmdk 和 -delta.vmdk 文件的集合在快照生成時連接到虛擬機。這些文件可稱為子磁盤、redo log、或增量鏈接。這些子磁盤稍後可以視為未來子磁盤的父磁盤。在原始父磁盤中,每個子磁盤將構建一個從虛擬磁盤的當前狀態指回原始狀態的 redo log(每次一步)。
註意:
<number> 值在相同快照的所有子磁盤中可能不一致。文件名基於文件名的可用性來選擇。
如果虛擬磁盤的大小大於 2TB,則 redo log 文件為 <vm>-<number>-sesparse.vmdk 格式。
<vm>.vmsd
.vmsd 文件是存儲虛擬機快照信息的數據庫,也是快照管理器信息的主要來源。該文件包含一些行條目,這些條目定義了快照之間以及每個快照的子磁盤之間的關系。
<vm>Snapshot<number>.vmsn
.vmsn 文件包含虛擬機的當前配置(也可包含虛擬機的活動狀態)。捕獲虛擬機的內存狀態允許您還原到打開的虛擬機的狀態。而使用非內存快照時,只能還原到已關閉的虛擬機的狀態。創建內存快照比創建非內存快照需要更長時間。
四、深度解析
哪些產品使用快照功能?
除了可以使用快照管理器創建快照外,許多 VMware 以及第三方產品和功能也使用快照。廣泛使用快照的一些 VMware 產品包括:
VMware Data Recovery
VMware Lab Manager
VMware vCenter 和 VMware Infrastructure Client(快照管理器、Storage vMotion)
註意:以上並不是詳盡的列表。
快照如何工作?
我們的 VMware API 允許 VMware 和第三方產品利用虛擬機及其快照執行操作。以下是可以使用我們的 API 對虛擬機和快照執行的常見操作列表:
CreateSnapshot:創建新的虛擬機快照。作為一個副作用,該操作將更新當前快照。
RemoveSnapshot:移除快照並刪除任何關聯的存儲。
RemoveAllSnapshots:移除所有與虛擬機關聯的快照。如果虛擬機沒有任何快照,則此操作僅會成功返回。
RevertToSnapshot:將虛擬機的執行狀態更改為此快照的狀態。這等同於使用 vSphere/VI Client GUI 時快照管理器下的“轉至”選項。
Consolidate:合並 redo log 的層次結構。該操作僅在 vSphere 5.0 及更高版本中可用。
如下是在 VMware 環境中處理如何創建、移除或恢復快照請求的高級別概述:
創建、移除或恢復虛擬機快照的請求是使用 VMware API 從客戶端發送到服務器。
該請求將轉發到當前托管存在問題的虛擬機的 VMware ESX 主機。
註意:只有在原始請求發送到其他服務器(例如管理 ESX 主機的 vCenter)時才會發生此情況。如果快照包括內存選項,則 ESX 主機會將虛擬機內存寫入磁盤。
註意:在整個寫入內存期間虛擬機將處於停止狀態。無法預先計算停止時間的長度,該時間長度取決於存在問題的磁盤的性能和寫入的內存量。ESXi/ESXi 4.x 和更高版本在寫入內存時的停止時間較短。有關詳細信息,請參見 Taking a snapshot with virtual machine memory stuns the virtual machine while the memory is written to disk (1013163)。如果快照包括靜默選項,則 ESX 主機將請求客戶機操作系統通過 VMware Tools 靜默磁盤。
註意:視客戶機操作系統而定,靜默操作可以通過同步驅動程序、vmsync 模塊或 Microsoft 卷影復制服務 (VSS) 完成。有關靜默的詳細信息,請參見 Troubleshooting Volume Shadow Copy (VSS) quiesce related issues (1007696) 獲取有關 VSS 的信息,或 A virtual machine can freeze under load when you take quiesced snapshots or use custom quiescing scripts (5962168) 獲取有關 SYNC 驅動程序的信息。ESX 主機對虛擬機快照數據庫(
.vmsd
文件)進行相應的更改,這些更改反映在虛擬機的快照管理器中。
註意:移除快照時,快照管理器中的快照實體是在對子磁盤進行更改之前移除的。從子磁盤繼續運行虛擬機時,快照管理器不包含任何快照條目。有關詳細信息,請參見 Committing snapshots when there are no snapshot entries in the snapshot manager (1002310)。ESX 主機會調用與虛擬磁盤 API 函數類似的函數,對子磁盤(
-delta.vmdk
和.vmdk
文件)和磁盤鏈進行更改。
註意:移除快照期間,如果子磁盤很大,則操作可能需要較長時間。這可能導致 VirtualCenter 或 VMware Infrastructure Client 中出現超時錯誤消息。有關超時錯誤消息的詳細信息,請參見 vCenter operation times out with the error:Operation failed since another task is in progress (1004790)。
子磁盤
使用快照創建的子磁盤是稀疏磁盤。稀疏磁盤采用寫入時復制 (COW) 機制,其中虛擬磁盤不包含任何數據,直到通過寫入操作將數據復制到磁盤。此優化可節省存儲空間。粒度是稀疏磁盤使用寫入時復制機制的度量單位。每個粒度均是一個包含虛擬磁盤數據的扇區塊。默認大小為 128 個扇區或 64 KB。
註意:稀疏磁盤通常創建為 VMFSSPARSE 類型。自 vSphere 5.5 開始,對於大小為 2TB 或更大的任意 vmdk,稀疏磁盤的類型均為 SESPARSE。
子磁盤和磁盤使用情況
重要的是要註意以下有關子磁盤空間利用率的要點:
如果虛擬機正在運行快照,則其正在對子磁盤或稀疏磁盤進行更改。對該磁盤執行的寫入操作越多,該磁盤就會變得越大,直至達到上限(基礎磁盤大小與少量開銷之和)。
在子磁盤的空間要求中,除了其所依賴的父磁盤的空間要求之外還有附加要求。如果虛擬機具有一個帶子磁盤的 10 GB 磁盤,則使用的空間為 10 GB + 子磁盤的大小 + .vmsn 文件大小 + 開銷。
子磁盤會增長得很大,乃至填滿整個數據存儲,但這是因為包含數據存儲的 LUN 不夠大,無法容納基礎磁盤、已創建的快照數量、相關開銷和已創建的 .vmsn 文件。
子磁盤的增長速度直接取決於對磁盤執行的 I/O 量。
子磁盤的大小對刪除與子磁盤關聯的快照所用的時間有直接影響。
有關子磁盤和磁盤使用情況的詳細信息,請參見:
No more space for the redo log error when attempting to start a virtual machine (1002103)
A snapshot removal can stop a virtual machine for long time (1002836)
Troubleshooting a datastore or VMFS volume that is full or near capacity (1003412)
磁盤鏈
通常,首次創建快照時,將通過父磁盤創建第一個子磁盤。連續快照將從鏈上的最後一個子磁盤生成新的子磁盤。如果快照鏈中有多個分支,則關系可能會發生更改。
本文出自 “滴水穿石孫傑” 博客,請務必保留此出處http://xjsunjie.blog.51cto.com/999372/1969969
虛機快照解讀