VMware快照

VMware快照

磁碟“快照”是虛擬機磁碟檔案(VMDK)在某個點及時的複本。系統崩潰或系統異常,你可以通過使用恢復到快照來保持磁碟檔案系統和系統存儲。當升級套用和伺服器及給它們打補丁的時候,快照是救世主。VMware快照是VMware Workstation里的一個特色功能。

快照使用

如果你創建了多於一個的虛擬機快照,那么,你將有多個還原點可以用於恢復。當你創建了一個快照,那快照在現在可寫的那個點上就變成了唯讀的。使用in-file delta技術就能創建新檔案記錄所有的關於原始磁碟檔案的變更(delta)。

檔案大小

快照檔案的大小不能超過原始磁碟檔案的大小。任何時候,一個磁碟塊改變了,就將在delta檔案里創建快照並能隨著改變而更新。如果進行一次快照後,你改變了每個單獨的磁碟存儲塊,這個快照將仍然象原始磁碟檔案那么大。快照檔案最初很小(16MB),不過,隨著對虛擬磁碟檔案的寫入將增大。

16MB的快照空間用於降低SCSI預留衝突。當收到改變原始磁碟上存儲塊的請求,它代替在delta檔案里的改變。如果先前在delta檔案里更改了的磁碟存儲塊再次被更改,由於它簡單地更新在delta檔案里現有的存儲塊,不會增加delta檔案的大小。

增長率

快照的增長率由伺服器上磁碟寫入活動發生次數決定。擁有磁碟寫入增強套用的伺服器,諸如SQL和Exchange伺服器,它們的快照檔案增長很快。另一方面,擁有大部分靜態內容和少量磁碟寫入的伺服器,諸如Web和套用伺服器,它們的快照檔案增長率很低。當你創建許多快照時,新delta檔案被創建並且原先的delta檔案變成唯讀的了。每個擁有大量快照的delta檔案可能變得和原始磁碟檔案一樣大。

快照類型

當你創建一個虛擬機快照時,這是一個特定的檔案。它也是redo-log日誌。delta檔案是在基礎VMDK(虛擬機磁碟)上的變更點陣圖,因此,它不能增長到比VMDK還大。為虛擬機創建每一個快照時,都會創建一個delta檔案。當快照被刪除或在快照管理里被恢復時,這些檔案將自動刪除。

這些檔案用於存儲關於快照的元數據和信息。這個檔案是文本格式的,裡面包括諸如快照顯示名稱、UID(編號)和磁碟檔案名稱等信息。在你沒創建虛擬機快照之前,這個檔案的初始大小為0位元組。這樣說來,只要進行快照,這個檔案就會增大和持續更新。

在快照被移開後,這個檔案不能被完全清除。一旦你刪除了個快照,它將仍然在檔案里為每個快照遺留位置,不過僅增加編號並在“Consolidate Helper”里放置名稱,這可能是用來整合備份*.vmsn file

這是快照狀態檔案,裡面存儲的是使用快照時,一台虛擬機精確的運行狀態。這個檔案大還是小取決於你選擇保留這台虛擬機的存儲作為快照的一部分。如果你選擇保留虛擬機的存儲,那么,這個檔案將比較大,然後分配給虛擬機最大化的RAM。

這個檔案類似於VMware暫停狀態檔案.vmss。虛擬機每個快照都將創建一個.vmss檔案;當移動快照時,這些檔案自動刪除。

創建快照

步驟

你可以通過VMware Infrastructure Client(VI Client)里的Snapshot Manager或直接使用ESX Service控制台上的指令行工具創建快照。使用指令可以啟動或關閉一台虛擬機。當創建快照時也可以暫停虛擬機。如果虛擬機切斷了電源,你將不能選擇對虛擬機存儲進行快照。

流程

通過使用直接連線到一台ESX伺服器或連線到VirtualCenter的VI Client來管理快照。如果你選擇使用命令行界面來代替,創建快照的語法是“vmware-cmd createsnapshot”,例如“vmware-cmd myvm1.vmx createsnapshot snap1 ’before upgrade’ 1 1”。停頓與存儲的選擇是1或0。選擇1將在進行快照前停止檔案系統寫入。選擇1將快照虛擬機存儲狀態進行存儲。如果創建多個快照,一旦新的快照被創建,先前的快照變成唯讀的。

刪除恢復

刪除

當你為一台虛擬機刪除所有快照時,所有創建的delta檔案被合併到虛擬機原先的VMDK磁碟檔案,然後被刪除。如果你選擇只刪除一個單獨的快照,這個快照合併到它的父級快照。如果你選擇恢復一個快照,當前的磁碟和存儲狀態被丟棄,虛擬機恢復到快照時的狀態。無論你恢復哪個快照, 這個快照就成為新的父級快照。然而,這個父級快照通常不是最近的快照。如果你恢復到一個舊的快照,它就變成虛擬機目前狀態的父級快照。在Snapshot Manager里可以看見這個父級快照,在它下面有一個標籤“You are here”。

你能使用VI Client或vmware-cmd命令行工具刪除或恢復快照。VI Client里的Snapshot Manager提供更高的靈活性,也比CLI(命令行界面)更容易使用。VI Client里的“Revert to Snapshot”選項與Snapshot Manager之間的一個重要差別是,恢複選項簡單地恢復到最後一次快照,而Snapshot Manager能靈活地選擇恢復到某一特定的快照。這叫做“Go To in Snapshot Manager”。

恢復

如果你使用vmware-cmd,語法是“vmware-cmd removesnapshots”,這能移除所有快照,而“vmware-cmd revertsnapshot”能恢復到最後一個快照。如果你需要移除或恢復特定的快照,你必須使用VI Client。

如果你恢復一個不包括存儲狀態的快照時,伺服器將斷電,一旦重新啟動,將會使用先前的快照。如果快照包括存儲狀態,虛擬機將暫停,然後回到先前快照的磁碟和存儲狀態。

管理工具

儘管在使用快照的過程當中VMware Tools並不是必須的,但還是強烈推薦使用這種工具。VMware Tools允許作業系統停止——或者減少——磁碟活動,因此可以更加輕鬆地製作快照,而不再需要VMware主機創建PIT複本。

可以通過多種方式檢查快照檔案大小,最為簡單的方式是使用RVTools或者啟用快照大小特性。

還可以在PowerCLI當中執行以下命令:

get-vm | get-snapshot

這種方式可以列出目標vCenter當中的所有快照。

快照包含的潛在問題

如果你嘗試使用vMotion或者Storage vMotion以外的方式來移動虛擬機,那么快照可能會導致一些問題。儘管你可以使用copy命令來複製任何檔案,但是如果在具有快照的虛擬機上使用這種方式將會導致檔案損壞等情況發生。

有幾種類型虛擬機不能為其製作快照。其中包括使用共享SCSI匯流排的虛擬機,比如集群伺服器。並且不能為單獨磁碟製作快照。如果已經啟用physical raw device mapping,則不能為其創建快照,因為底層磁碟由虛擬機進行管理。也就是說,如果不是由VMware主機進行管理,便不能為其創建快照。

如果你運行的是ESXi 4或者之前的版本,那么還需要注意一些其他問題。首先,不能使用Storage vMotion技術遷移一台具有多個快照的虛擬機。最為快速的解決方式是整合所有快照,這意味著不再能夠將虛擬機恢復到多個時間點的狀態。這種限制在vSphere 5當中被移除。另外一種經常發生的問題是當整合大型快照時,會出現主機暫時無回響的情況,但是主機上的虛擬機仍然在正常運行,這種情況持續一段時間之後會自動消失。

儘量避免多個快照

大多數情況下,應該避免為同一台虛擬機創建多個快照;每次為系統創建新的快照,其運行速度都會變慢。每個快照都會建立相應的delta磁碟檔案,如果虛擬機需要讀取多個delta檔案,必然會增加系統的I/O負載。這個過程無疑會延長虛擬機的回響時間,並且產生額外的磁碟操作。

如果你只想保存一系列快照當中的最新版本,可以將它們整合為單一快照。這種方式可以幫助提升系統運行速度和管理效率。選擇目標虛擬機,單擊滑鼠右鍵,之後選擇整合。你可以在虛擬機和模板視圖當中查詢虛擬機是否需要整合,並且在列表當中顯示所有需要進行整合的虛擬機。

VMware快照修復VMDK檔案

VMware快照工作原理

當創建VMware快照時,實際上我們並沒有複製原始磁碟當中的任何數據。而是將原始磁碟設定為VMware快照讀狀態,並且創建一個VMware快照回滾日誌——有時也稱之為增量磁碟,這種增量磁碟其實就是在VMware快照創建之後,針對任何虛擬機寫入操作所產生的占位符。

VMware快照 VMware快照

圖1.增量檔案當中包含的僅僅是快照創建之後的虛擬機變化部分

圖一展示了VMware快照的工作流程。假設磁碟當中包含了一個單詞“SNAPSHOT”,並且每個字母都位於自己的VMware快照磁碟塊當中。當我們創建磁碟VMware快照的時候,原始磁碟變為唯讀狀態,一個新的增量VMDK檔案被創建。這時第二個塊變為“L”,並且“S”被加入到第九個塊當中,這樣就產生了新的單詞“SLAPSHOTS”。
為了保證所有VMware快照檔案都是安全的,我們需要進行一系列操作。我們可以刪除VMware快照,這樣將會簡單地將新的塊合併到原始的VMDK檔案當中,並且將“SLAPSHOTS”提交給虛擬機——或者我們可以回滾到另外一個時間點,比如磁碟剛剛讀入“SNAPSHOT”的時候。每次創建VMware快照的時候,都會創建一個新的增量磁碟,保證我們能夠回滾到VMware快照鏈當中的任何時間點。

VMware快照能否修復VMDK檔案

如果原始VMDK檔案遭到破壞或者被刪除,那么VMware快照管理員就會面臨很多棘手問題。正如圖二所示,包含“SNAPSHOT”的原始VMware快照磁碟已經消失。現在我們手中只剩下了包含字母“L”和“S”的增量磁碟,而指向磁碟的元數據(metadta)已經消失。

VMware快照 VMware快照

圖2.如果只使用損壞或者丟失VMDK檔案的VMware快照,那么無法重建原始檔案。
也許你已經得出了結論:如果包含“SNAPSHOT”的原始VMware快照磁碟或者原始塊丟失,那么使用增量磁碟當中的部分數據無法重建任何東西。

VMware快照缺失檔案種類決定能否進行恢復

僅僅使用VMware快照檔案來恢復丟失的VMDK檔案是不可能的,但是根據丟失VMDK檔案的不同,我們可能擁有幾種解決方案。一個VMware快照虛擬機磁碟由兩個不同的檔案組成:VMDK檔案——虛擬磁碟的最重要組成部分——保存了所有數據,以及描述符檔案——VMX檔案——為虛擬機配置檔案提供相關VMware快照磁碟信息。
如果VMDK檔案丟失,那么只能寄希望於保存了VMware快照備份檔案,而如果描述符檔案丟失,那么可以使用ESXi命令行進行恢復。

VMware快照使用方法

VMware快照可以幫你規避很多麻煩,VMware快照並不是備份。

VMware快照的作用被很多人混淆了作用,VMware快照導致他們陷入無限麻煩中。要理解VMware快照是什麼,我們需要定義VMware快照不是什麼。

VMware快照不是備份,這是毫無疑問的。備份是為能夠在數據丟失和檔案損壞時恢復的長期存儲設計的。撤銷功能對於使用過Office應用程式的很多人來說都很熟悉。這個功能是允許你在工作完成時,可以在你想要選擇的確切的時間點後退一步。但是VMware快照沒有撤銷功能。所以,現在大家知道VMware快照不是什麼了吧。

VMware快照是一個虛擬機的時間點。VMware快照不是一般的自動化項目;VMware快照是在某一時間點上手動創建的,而且VMware快照還可以跳回到這個時間點。當這個“時間點”被創建後,虛擬機繼續運行,管理員可以繼續運行現有的任務。如果升級失敗,管理員可以將虛擬機恢復到升級前的時間點上。這聽起來跟撤銷功能非常相似,你可以恢復到你之前創建的時間點上這一點確實是事實。通常有兩種可用的快照類型:

VMware快照之傳統快照

傳統的VMware快照不會捕捉虛擬機當前記憶體狀態。這種類型的VMware快照常常是快速執行,因為VMware快照不包含活動的項目。運行的虛擬機在創建VMware快照時不需要暫停。如果管理員選擇恢復虛擬機到VMware快照,虛擬機將不得不重新引導就像正常的關機重啟。

VMware快照之快照記憶體狀態

這種類型的VMware快照會在做快照時捕捉虛擬機的記憶體狀態,以及其他活動(磁碟,I/O,網路)。這種VMware快照執行時間較長,但是VMware快照有一個額外的好處:如果你恢復到這個VMware快照時,虛擬機將回到你創建時確切的時間點,如果當你創建VMware快照時這台虛擬機還在運行著任務,那么VMware快照將繼續在你創建VMware快照完成確切的時間點上。

VMware快照問題

VMware快照出錯的時候

VMware快照還有一個強大的功能,就是如果你虛擬機使用不當,VMware快照可以幫你去除錯誤。現在,我們知道VMware快照是什麼以及VMware快照如何工作了,讓我們來看一下你不應該做的一些事。

VMware快照是時間點,意味著只是臨時的。現在,人們對於臨時的定義不同,這就是問題所在。那個增量變化檔案記錄著虛擬機的所有改變:如果是一個繁忙的虛擬機,那么VMware快照的增量變化檔案就會變得越來越大。那個增量變化檔案存放在資料庫伺服器中,

VMware快照刪除一個大型的或者長時間的快照是記錄所有變化的增量變化檔案套用於原本的VMDK檔案的一個過程。VMware快照對於較小的增量變化檔案來說,這個過程相對簡單,但是對於大型的VMware快照來說,這個過程會導致虛擬機暫停或者變化套用到原來的VMDK會暫停幾秒或者幾分鐘。

VMware快照的利與弊都是緊緊相連的。VMware快照可以讓管理員在同一個虛擬機的不同時間來回切換——創造一種類似撤銷功能的體驗。但問題是,你擁有了更多的VMware快照,你就會擁有更多的增量變化檔案,那么就會增加損壞的可能性。

相關詞條

相關搜尋

熱門詞條

聯絡我們