快照使用
編輯html
若是你建立了多於一個的
虛擬機快照,那麼,你將有多個
還原點能夠用於恢復。當你建立了一個快照,那快照些如今可寫的在那個點上就變成了只讀的。使用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負載。這個過程無疑會延長虛擬機的響應時間,而且產生額外的磁盤操做。
若是你只想保存一系列快照當中的最新版本,能夠將它們整合爲單一快照。這種方式能夠幫助提高系統運行速度和管理效率。選擇目標虛擬機,單擊鼠標右鍵,以後選擇整合。你能夠在虛擬機和模板視圖當中查詢虛擬機是否須要整合,而且在列表當中顯示全部須要進行整合的虛擬機。
[1]
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)已經消失。
圖2.若是隻使用損壞或者丟失VMDK文件的VMware快照,那麼沒法重建原始文件。
也許你已經得出告終論:若是包含「SNAPSHOT」的原始VMware快照磁盤或者原始塊丟失,那麼使用增量磁盤當中的部分數據沒法重建任何東西。
VMware快照缺失文件種類決定可否進行恢復
僅僅使用VMware快照文件來恢復丟失的VMDK文件是不可能的,可是根據丟失VMDK文件的不一樣,咱們可能擁有幾種解決方案。一個VMware快照虛擬機磁盤由兩個不一樣的文件組成:VMDK文件——虛擬磁盤的最重要組成部分——保存了全部數據,以及描述符文件——VMX文件——爲虛擬機配置文件提供相關VMware快照磁盤信息。
若是VMDK文件丟失,那麼只能寄但願於保存了VMware快照備份文件,而若是描述符文件丟失,那麼可使用ESXi命令行進行恢復。
[2]
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快照完成確切的時間點上。
[3]
VMware快照出錯的時候
VMware快照還有一個強大的功能,就是若是你虛擬機使用不當,VMware快照能夠幫你去除錯誤。如今,咱們知道VMware快照是什麼以及VMware快照如何工做了,讓咱們來看一下你不該該作的一些事。
VMware快照是時間點,意味着只是臨時的。如今,人們對於臨時的定義不一樣,這就是問題所在。那個增量變化文件記錄着虛擬機的全部改變:若是是一個繁忙的虛擬機,那麼VMware快照的增量變化文件就會變得愈來愈大。那個增量變化文件存放在數據庫服務器中,
VMware快照刪除一個大型的或者長時間的快照是記錄全部變化的增量變化文件應用於本來的
VMDK文件的一個過程。VMware快照對於較小的增量變化文件來講,這個過程相對簡單,可是對於大型的VMware快照來講,這個過程會致使虛擬機暫停或者變化應用到原來的
VMDK會暫停幾秒或者幾分鐘。
VMware快照的利與弊都是牢牢相連的。VMware快照可讓管理員在同一個虛擬機的不一樣時間來回切換——創造一種相似撤銷功能的體驗。但問題是,你擁有了更多的VMware快照,你就會擁有更多的增量變化文件,那麼就會增長損壞的可能性。
VMware中的快照是對VMDK在某個時間點的「拷貝」,這個「拷貝」並非對VMDK文件的複製,而是保持磁盤文件和系統內存在該時間點的狀態,以便在出現故障後虛擬機可以恢復到該時間點。若是對某個虛擬機建立了多個快照,那麼就能夠有多個可恢復的時間點。算法
當咱們爲虛擬機建立的快照時,當前可寫的VMDK文件變成爲只讀狀態,而且建立一個新文件(稱之爲快照文件)來保存變化的內容(使用in-file delta technology)。數據庫
在初始狀態下,快照文件的大小爲16MB,並隨着虛擬機對磁盤文件的寫操做而增加。快照文件按照16MB的大小進行增加以減小SCSI reservation衝突。當虛擬機須要修改原來的磁盤文件的數據塊時,這些修改會被保存到快照文件中。當在快照文件中的已經修改過的數據塊須要被再次修改時,這些修改將覆蓋快照文件中的數據塊,此時,快照文件大小不會改變。所以,快照文件的大小永遠不會超過原來的VMDK文件的大小。後端
快照文件的變化頻率取決於虛擬機應用的寫的繁忙程度,例如對於Exchange和SQL等應用,快照文件變化比較快。多個快照的狀況下,在建立新的快照時,以前的快照文件變成只讀的狀態。安全
不一樣類型的快照文件服務器
*-delta.vmdk文件:該文件就是前面咱們所提到的快照文件,也能夠理解爲redo-log文件。在每建立一個快照時就會產生一個這樣的文件。而在刪除快照或回覆到快照時間點狀態時該文件會被刪除。網絡
*.vmsd文件:該文件用於保存快照的metadata和其它信息。這是一個文本文件,保存瞭如快照顯示名、UID(Unique Identifier)以及磁盤文件名等。在建立快照以前,它的大小是0字節。app
*.vmsn文件:這是快照狀態文件,用於保存建立快照時虛擬機的狀態。這個文件的大小取決於建立快照時是否選擇保存內存的狀態。若是選擇的話,那麼這個文件會比分配給這個虛擬機的內存大小還要大幾兆。工具
建立快照post
快照的建立能夠經過VMware VI客戶端的Snapshot Manager來實現,或者經過ESX服務器的Service Console的命令行vmware-cmd來實現。不管虛擬機是在運行、關機仍是掛起的狀態,均可以建立快照。Snapshot能夠經過VI客戶端直接鏈接到ESX Server或者鏈接到VirtualCenter來管理。
刪除快照或者回滾到快照點狀態
當刪除虛擬機的全部快照時,針對該虛擬機所建立的全部delta文件中的內容將會合併到原來的vmdk文件中,合併完成後再刪除vmdk文件。若是隻選擇刪除一個快照,那麼這個快照的delta文件將和其父快照的delta文件進行合併。若是選擇回滾到某一個快照,那麼當前的磁盤和內存狀態將會被丟棄,並且虛擬機會轉變到revert-to的狀態。不管選擇哪一個快照進行回滾,該快照都會變成當前的父快照,就是說當前運行的虛擬機會在這個快照之下。所以,父快照不必定是最近所建立的快照(在沒有回滾的狀況下,父快照通常都是最近所建立的快照)。在Snapshot Manager中父快照之下通常有「You are here」的標記。
若是選擇回滾的快照不包含內存狀態,那麼該虛擬機將會被關機,在管理員啓動該虛擬機時應用所選擇的快照。若是包含內存狀態的話,那麼虛擬機會短暫的停頓一下,而後回覆到快照時的磁盤和內存狀態。
磁盤空間和刪除多個快照
在建立快照前,全部的寫操做都寫入磁盤文件。可是有了快照以後,磁盤文件保持不變,而寫操做寫入delta文件,同時,若是保存內存狀態的話,vmsn文件還要佔用比該虛擬機稍大一些的空間。
在只有一個快照時,在刪除快照時不須要額外的空間。由於要麼直接刪除快照文件,要麼把快照文件和VMDK磁盤文件相合並。可是在有多個快照的狀況時,效果就不同了。
假設要刪除一個虛擬機的全部快照,該虛擬機有三個快照,snap一、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鎖。此外,刪除快照時可能會致使性能比較大的降低,虛擬機越忙越明顯。爲了不這個問題,快照的刪除最好在非高峯時期。