VMware的虛擬機快照深入解析

一、什麼是快照?
快照可保存虛擬機在特定時刻的狀態和數據。
• 狀態包括虛擬機的電源狀態(例如,打開電源、關閉電源、掛起)。
• 數據包括組成虛擬機的所有文件。這包括磁盤、內存和其他設備(例如虛擬網絡接口卡)。
虛擬機提供了多個用於創建和管理快照及快照鏈的操作。通過這些操作,我們可以創建快照、還原到鏈中的任意快照以及移除快照。

二、快照文件
快照由存儲在受支持的存儲設備上的文件組成。“執行快照”操作會創建 .vmdk、-delta.vmdk、.vmsd 和 .vmsn 文件。默認情況下,第一個以及所有增量磁盤與基本 .vmdk 文件存儲在一起。.vmsd 和 .vmsn 文件存儲在虛擬機目錄中。

增量磁盤文件:客戶機操作系統可以寫入的 .vmdk 文件。增量磁盤表示虛擬磁盤的當前狀況和上次執行快照時存在的狀況之間的差異。執行快照時,將保留虛擬磁盤的狀況,從而阻止客戶機操作系統寫入,並會創建增量磁盤或子磁盤。

增量磁盤具有兩個文件,即包含虛擬磁盤相關信息(例如幾何結構和父子關係信息)的較小的描述符文件和包含原始數據的對應文件。
注:如果要在 vSphere Client 中使用數據存儲瀏覽器查看數據存儲,則僅會看到一個條目用於表示這兩個文件。
構成增量磁盤的文件稱爲子磁盤或重做日誌。子磁盤爲稀疏磁盤。稀疏磁盤使用寫入時複製機制,其中虛擬磁盤不包含任何數據,直到通過寫入操作將數據複製到磁盤。此優化可節省存儲空間。粒度是稀疏磁盤使用寫入時複製機制的度量單位。每個粒度均是一個包含虛擬磁盤數據的扇區塊。默認大小爲 128 個扇區或 64 KB。

平面文件
-flat.vmdk 文件,組成基本磁盤的兩個文件之一。平面磁盤包含基本磁盤的原始數據。該文件在數據存儲瀏覽器中不顯示爲單個文件。

數據庫文件
.vmsd 文件,包含虛擬機的快照信息,並且是快照管理器的主要信息源。該文件包含行條目,這些條目定義了快照之間以及每個快照的子磁盤之間的關係。

內存文件
.vmsn 文件,包含虛擬機的活動狀況。通過捕獲虛擬機的內存狀況,可恢復到已打開虛擬機狀況。使用非內存快照,僅能恢復到已關閉虛擬機狀況。創建內存快照需要的時間比創建非內存快照需要的時間長。ESX 主機將內存寫入磁盤所需的時間與配置虛擬機使用的內存量有關。

三、快照原理
快照採用的是“寫時複製(Copy On Write)”的技術,實現原理比較簡單,快照時複製一份原磁盤的索引,指向的實際數據均爲原始磁盤的數據,只有當原鏡像的的數據發生變化時,纔將變化區域的在變化之前的數據複製一份給快照對應位置。所以打快照的時候數據比較小,後面會越來越大。
VMware的虛擬機快照深入解析
虛擬機磁盤採用的是vmdk格式的文件,虛擬機擁有幾個磁盤對虛機做快照就會有幾個vmdk文件,虛擬機快照產生的數據是與虛擬機磁盤數據存放在同一個存儲空間中的,所以存儲位置就是虛擬機本身的存儲位置,即如果虛擬機所在存儲訪問不了,其快照也就無法恢復了。
當我們爲虛擬機創建快照時,當前可寫的VMDK文件變成爲只讀狀態,並且創建一個新文件(稱之爲快照文件)來保存變化的內容(使用in-file delta technology)。
VMware的虛擬機快照深入解析
快照鏈:就是多個快照組成的關係鏈,這些快照按照創建時間排列成鏈
在初始狀態下,快照文件的大小爲16MB,並隨着虛擬機對磁盤文件的寫操作而增長。快照文件按照16MB的大小進行增長以減少SCSI reservation衝突。當虛擬機需要修改原來的磁盤文件的數據塊時,這些修改會被保存到快照文件中。當在快照文件中的已經修改過的數據塊需要被再次修改時,這些修改將覆蓋快照文件中的數據塊,此時,快照文件大小不會改變。因此,快照文件的大小永遠不會超過原來的VMDK文件的大小。
快照文件的變化頻率取決於虛擬機應用的寫的繁忙程度,例如對於Exchange和SQL、ORACLE等應用,快照文件變化比較快。多個快照的情況下,在創建新的快照時,之前的快照文件變成只讀的狀態。

四、虛擬機快照
VMware的虛擬機“快照”功能是對虛擬機磁盤文件VMDK的某個狀態創建副本,當系統出現異常,可以通過恢復快照來保證系統的正常。VMwware的虛擬機快照技術是非常有用的,但是也有需要注意的侷限性。
1、快照並不是非常適合用於數據保護
無論是基於SAN的快照技術,還是建立在文件系統或操作系統中的,快照技術能夠在錯誤出現時讓損失降到最低。但並不是所有的快照技術並非都是面向意外的數據丟失,比如VMware ESX服務器及虛擬化平臺上的快照技術、數據庫的快照。
從根本上來說,VMware的快照比較適合兩種情況:1、將一個虛擬機的磁盤隔離,不再寫入數據,這樣可以進行備份 2、在打補丁和軟件升級時提供一個短期的自動恢復功能。在開發環境中,可能經常會見到利用快照來保存一些實時狀態的鏡像,但是這樣的方式在一個性能敏感的生產環境中是不可取的。
VMware的虛擬機快照深入解析
在這個圖中,虛機可方便的恢復到每次補丁前的狀態
在一個典型的環境中,一個虛擬機的磁盤資源是由位於VMware獨有的VMFS文件系統或NFS存儲上的VMDK文件(virtual machine disk的縮寫)組成,它的大小几乎等同於虛擬機的磁盤資源。所以如果你的Windows 2000 professional有15GB的系統硬盤,那麼在VMFS捲上會出現一個15GB的VMDK文件。
  如果使用hypervisor對虛擬機進行快照,系統會創建第二個VMDK文件(有時叫做redo log),這個文件存儲着進行快照後虛擬機所有寫入的東西,這樣的功能具有幾個明顯的優勢:
  首先,由於快照VMDK文件存儲着對基礎VMDK的寫入操作,實際上基礎VMDK不會被更改。這意味着在快照建立之後如果出現一些錯誤,可以很容易的將這些錯誤“扔掉”,恢復到進行快照之前的基礎磁盤狀態。同樣,由於當快照存在時基礎VMDK並不會被寫入,這樣就可以安全的對基礎VMDK創建副本來進行備份。

2、快照容易消耗大量的存儲空間
當快照創建後虛擬機執行一個讀操作,hypervisor會檢查快照VMDK,查看是否有被讀取的區塊存在。如果有,則從快照中爲虛擬機提供這個區塊,如果沒有,虛擬機還需要去讀取基礎VMDK。如果只有一個快照,這並不是什麼問題,只不過是重複來讀取VMDK。但是如果有大量快照存在,比如在兩週內每天建立一個,那麼hypervisor需要在14個快照文件中查找這個區塊,這就會消耗大量的讀I/O。
  更糟糕的是,沒有完善的機制來阻止這些快照的增長,如果你每天爲一個Windows 2000虛擬機進行快照,大概每天需要消耗2GB的存儲空間,這對大多數虛擬機來說還是非常保守的數字。大體上來說,你需要爲虛擬機配置雙倍的空間來存儲這些更改。
  換個角度來看,實際幾乎所有的快照技術,包括SAN快照,都會消耗很大的存儲空間。但有所不同的是VMware快照沒有自動保護機制,防止VMFS卷被不斷增長的快照填滿。而大部分SAN當分配的快照空間被填滿時會自動刪除最早的快照。一旦VMSF卷被填滿,當前的快照文件就不能再寫入,而虛擬機也可能會崩潰。如果有很多虛擬機,並且快照都存在相同的VMFS捲上,這些虛擬機都可能會崩潰,這是災難性的。
  還有一個潛在的陷阱,hypervisor會通過磁盤停頓進程(disk quiescing)試圖確認快照的應用程序持續狀態,儘管可以在不停頓硬盤的情況下創建快照,但是這時候只能建立crash-consistent快照,如果在crash-consistent快照建立後恢復基礎磁盤,操作系統和應用程序會出現貌似非正常關機時的狀態。磁盤停頓功能讓操作系統和應用程序可以找到合適的停頓點,比如完成寫入,防止數據被損壞。
  根據操作系統在虛擬機中的運行狀況,可以通過不同的方式實現磁盤停頓。這些都需要應用安裝在虛擬機操作系統中的VMware工具包。如果你運行的是一個新近版本的Windows系統,VMware工具將使用微軟的卷影副本服務(VSS)在虛擬機I/O中創建一個臨時的停頓,讓VMware軟件來創建更底層的磁盤快照。
然而,在進行大量磁盤I/O傳輸的虛擬機中,如微軟SQL數據庫平臺或Exchange,卷影副本服務(VSS)可能會需要大量的調試才能工作正常。VSS工作並不是那麼穩定,有時候,這次正常,而下次就可能出現故障。這是惱人的,特別是在希望通過停頓快照來對虛擬機進行更好的備份的時候。

3、快照與磁盤空間利用率
• 如果虛擬機正在運行快照,則其正在對子磁盤或稀疏磁盤進行更改。對該磁盤執行的寫入操作越多,該磁盤就會變得越大,直至達到上限(基礎磁盤大小與少量開銷之和)。
• 在子磁盤的空間要求中,除了其所依賴的父磁盤的空間要求之外還有附加要求。如果虛擬機具有一個帶子磁盤的 10 GB 磁盤,則使用的空間爲 10 GB + 快照的大小 + .vmsn 文件大小 + 開銷。
• 子磁盤會增長得很大,乃至填滿整個數據存儲,但這是因爲包含數據存儲的 LUN 不夠大,無法容納基礎磁盤、已創建的快照數量、相關開銷和已創建的 .vmsn 文件。
• 子磁盤的增長速度直接取決於對磁盤執行的 I/O 量。
• 子磁盤的大小對刪除與子磁盤關聯的快照所用的時間有直接影響。

4、快照整合
快照整合命令將在不違反數據依賴關係的情況下搜索要進行組合的層次結構或增量磁盤。整合後,將移除冗餘磁盤,這樣便可提高虛擬機性能並保存存儲空間。快照整合:把所有的快照整合爲一個快照,整合以後將移除冗餘磁盤,可以提高虛擬機性能.
在只有一個快照時,在刪除快照時不需要額外的空間。因爲要麼直接刪除快照文件,要麼把快照文件和VMDK磁盤文件相合並。(如果一個虛機掛載有多個盤,則對虛機快照則在多個盤上都有快照文件,整合時需要預估每個盤的剩餘空間(空間不夠需要單另掛一個大的盤把數據量包住),而且整合時的操作是串行的。)
但是在有多個快照的情況時,效果就不一樣了。
假設要刪除一個虛擬機的所有快照,該虛擬機有三個快照,snap1、snap2和snap3。首先,snap3的快照文件要被合併到snap2的快照文件 中,導致snap2佔用空間增加。然後,snap2被合併到snap1中,導致snap1佔用的空間增加。最後,snap1合併到VMDK文件中,此時不會增加空間開銷。在合併完成後,快照纔會被刪除。
一種替代的方式是依次刪除快照,這樣就不會增加所需要的空間,只是稍微繁瑣一些。
刪除快照所需要的時間
通 過VI客戶端刪除快照時,VI的狀態欄中顯示的信息可能會產生誤導。通常,狀態欄會很快到達95%完成的狀態,但是會在95%的狀態等待較長的時間一直到 合併完成。VirtualCenter對所有的任務都有15分鐘的超時值,即使後臺還在合併,但是過了15分鐘後,VirtualCenter會報告該操作超時。
一種查看該任務是否完成的方式是通過VI客戶端來瀏覽該虛擬機的datastore。如果該快照對應的delta文件不存在了,則說明該快照被刪除了。
如果快照存在的時間比較長,那麼快照文件就會變得比較大,因此在刪除快照時就需要比較長的時間進行合併。合併的時間取決於虛擬機的繁忙程度,在關機的狀態下合併的速度較快。而ESX服務器後端的磁盤子系統的繁忙程度也會影響合併的時間。
一 個100GB的快照文件可能需要3-6個小時來合併到原來的VMDK文件中。而從ESX3.5開始,由於VMware修改了合併的算法,可能需要更長的時 間來合併(參見VMware文檔Consolidation of large or deeply nested snapshots)。這會影響虛擬機和ESX服務器的性能。因此,建議限制快照的保留時間,當不需要時即刻刪除快照。
快照和metadata鎖對ESX性能的影響
快 照對ESX服務器以及虛擬機的性能影響體現在幾個方面。但創建快照時,虛擬機的活動會暫時停頓一下,此時如果通過ping命令去檢查虛擬機的狀態,可以看 到一些timeout的response。此外,創建快照會導致metadata的更新,爲了避免SCSI Reservations衝突會短時間內對LUN加鎖,從而導致在短暫的時間內,這個LUN將只能由一個ESX服務器進行排他性訪問。
如 果爲虛擬機創建了快照,虛擬機在運行的狀態中,該快照是活躍的。只要快照是活躍的,那麼虛擬機的性能就會下降。因爲ESX服務器對delta文件的寫入方 式不同於VMDK文件,而且效率相對較低。delta文件每次以16MB的大小來增長,它會導致另一種metadata鎖。
最後,刪除或者回滾快照都會創建一個metadata鎖。此外,刪除快照時可能會導致性能比較大的下降,虛擬機越忙越明顯。爲了避免這個問題,快照的刪除最好在非高峯時期。

5、快照的限制
快照可能會影響虛擬機性能,且不支持某些磁盤類型或使用總線共享配置的虛擬機。快照作爲短期解決方案用於捕獲時間點虛擬機狀況很有用,但不適用於長期虛擬機備份。另外要避免多個快照,快照不要保留太長時間。
■VMware 不支持對裸磁盤、RDM 物理模式磁盤或在客戶機中使用 iSCSI 啓動器的客戶機操作系統的快照。
■在執行快照之前必須關閉具有獨立磁盤的虛擬機的電源。不支持具有獨立磁盤的已打開電源或已掛起的虛擬機的快照。
■PCI vSphere Direct Path I/O 設備不支持快照。
■VMware 不支持爲總線共享配置的虛擬機的快照。如果需要使用總線共享,則作爲備用解決方案,請考慮在客戶機操作系統中運行備份軟件。如果虛擬機當前具有快照,並阻止您配置總線共享,請刪除(整合)這些快照。
■快照提供備份解決方案可以使用的磁盤的時間點映像,但快照不是備份和恢復的可靠方法。如果包含虛擬機的文件丟失,則其快照文件也丟失。另外,大量快照將難於管理,佔用大量磁盤空間,並且在出現硬件故障時不受保護。
備份解決方案(如 VMware Data Recovery)使用快照機制來凍結虛擬機的狀況。Data Recovery 備份方法具有可降低快照限制的其他功能。
■快照可能會對虛擬機的性能產生負面影響。性能降低基於快照或快照樹保持原位的時間、樹的深度以及執行快照後虛擬機及其客戶機操作系統發生更改的程度。另外,還可能會看到打開虛擬機電源所花費的時間變長。不要永久從快照運行生產虛擬機。

儘管有很多不足,但如果使用正確,VMware的快照可以說是一個優秀的工具,無論是在主要的升級或打補丁前爲虛擬創建短期的實時副本,還是允許第三方備份軟件對虛擬機執行direct-from-SAN的備份。然而,能有效使用快照功能的前提是理解它們是如何工作的,可能偶爾需要進行一些調試。
另外需要注意的是,如果要在運行關鍵任務的虛擬機應用VMware快照功能,要更加小心謹慎,最好先進行測試。
注:VMWARE推薦單個快照實例的保存時間最長爲72小時。
備份和快照的情況是不一樣的。
• 虛擬機從備份還原的時候必需在還原後纔可以開機
• 虛擬機從快照恢復時,可以保持開機狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章