VMware的快照原理
本文分享自天翼云開(kāi)發(fā)者社區《VMware的快照原理》,作者:m****n
VMware的快照是基于數據塊的快照??煺找彩且砸粋€(gè)文件方式存在的,缺省位置和虛擬機在同一目錄下,它是一個(gè)Delta文件。每一次的快照就會(huì )產(chǎn)生一個(gè)新的Delta文件,而以前的Delta文件就進(jìn)入一個(gè)只讀狀態(tài)。并且它是以16MB的大小來(lái)進(jìn)行增長(cháng)的。
快照文件的最大大小是不可能超過(guò)原磁盤(pán)文件的大小。
快照的不同類(lèi)型:
1. *-delta.vmdk文件:這是當你對一個(gè)VM做一個(gè)快照時(shí)產(chǎn)生的差異文件,也就是一個(gè)redo-log文件。Delta文件是一個(gè)針對初始VMDK而產(chǎn)生變化的一個(gè)Bitmap。
2. *.vmsd文件:這個(gè)一個(gè)是用來(lái)存放關(guān)于快照的metadata和相關(guān)信息的文件。它是一個(gè)文本文件,存放一些諸如快照名,UID,磁盤(pán)文件名等等。它起始大小是0字節,直到做了第一個(gè)快照時(shí)才會(huì )改變大小。
3. *.vmsn文件:這是一個(gè)快照狀態(tài)文件,它存放的是當你做快照時(shí)虛擬機的真實(shí)運行狀態(tài)。它的大小據于你是否選擇保留VM的內存作為快照的一部分相關(guān)。
命令行創(chuàng )建快照:
vmware-cmd myvm1.vmx createsnapshot snap1 'before upgrade' 1 1".
The options for quiesce and memory are either 1 for yes or 0 for no.
快照的刪除或恢復:
當你刪除一個(gè)VM的所有快照時(shí),所有在快照時(shí)創(chuàng )建出來(lái)的Delta文件被融合回原來(lái)的VMDK文件,然后刪除這些Delta文件。但當你只刪除一個(gè)快照時(shí),那么只有這個(gè)快照會(huì )融合回它的上一級快照。
當你恢復一個(gè)快照時(shí),現有的磁盤(pán)和內存狀態(tài)被丟棄,然后VM被帶回到那個(gè)時(shí)間點(diǎn)的狀態(tài),而這個(gè)快照成為新的父級快照。父級快照不一定就是最新做的快照,它在快照管理器中被標注為“you are here”。
當你用vmware-cmd來(lái)做時(shí),vmware-cmd removesnapshots會(huì )刪除所有的快照,vmware-cmd revertsnapshot會(huì )復原到最近的快照。若你要刪除或復原到某一個(gè)快照時(shí),你不能用命令行而需要用VIC。
若你復原一個(gè)不包含內存狀態(tài)的快照,當你將VM啟動(dòng)時(shí),它將會(huì )應用前一個(gè)快照。
如何找到那些有快照的VM呢?
到/vmfs/volumes目錄下: 運行 find –iname “*-delta.vmdk” –mtime +7 –ls 可以找到在7天內沒(méi)有改變的快照。運行 find –iname “*-delta.vmdk可以找到所有的快照文件。
如何改變快照文件的缺省位置:
在VM的配置文件VMX中加一句: workingDir=”/vmfs/volumes/Snapvolume/snapshots/”。
在做Vomtion時(shí),若你的快照文件不在共享存儲位置或新ESX主機不能訪(fǎng)問(wèn)快照文件時(shí),當遷移做完時(shí),VM會(huì )崩潰掉。所以,建議在做Vmotion時(shí),最好先把快照commit掉。
快照與磁盤(pán)空間的關(guān)系:
當一個(gè)VM只有一個(gè)快照時(shí),當你刪除或commit快照時(shí),你不需要額外的空間。但當一個(gè)VM有多個(gè)快照時(shí),當你刪除所有快照時(shí),你需要額外的空間。
假設你要刪除一個(gè)VM的所有快照(snap1,snap2,snap3),首先,snap3將融合進(jìn)snap2,這將導致snap2增長(cháng),接下來(lái),snap2將融合進(jìn)snap1,這會(huì )導致snap1增長(cháng)。最后,snap1將融合進(jìn)原來(lái)的VMDK,這不需要額外的空間。只有當VMDK文件融合操作完成時(shí),快照才會(huì )被刪除,所以當一個(gè)有20G大小快照的VM在做commit時(shí)潛在地需要額外的20G。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。