• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 博客專欄

    EEPW首頁 > 博客 > VMware的快照原理

    VMware的快照原理

    發布人:天翼云開發者 時間:2025-01-10 來源:工程師 發布文章

    本文分享自天翼云開發者社區《VMware的快照原理》,作者:m****n

    VMware的快照是基于數據塊的快照。快照也是以一個文件方式存在的,缺省位置和虛擬機在同一目錄下,它是一個Delta文件。每一次的快照就會產生一個新的Delta文件,而以前的Delta文件就進入一個只讀狀態。并且它是以16MB的大小來進行增長的。

    快照文件的最大大小是不可能超過原磁盤文件的大小。

    快照的不同類型:

    1. *-delta.vmdk文件:這是當你對一個VM做一個快照時產生的差異文件,也就是一個redo-log文件。Delta文件是一個針對初始VMDK而產生變化的一個Bitmap。

    2. *.vmsd文件:這個一個是用來存放關于快照的metadata和相關信息的文件。它是一個文本文件,存放一些諸如快照名,UID,磁盤文件名等等。它起始大小是0字節,直到做了第一個快照時才會改變大小。

    3. *.vmsn文件:這是一個快照狀態文件,它存放的是當你做快照時虛擬機的真實運行狀態。它的大小據于你是否選擇保留VM的內存作為快照的一部分相關。

    命令行創建快照 

    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.

    快照的刪除或恢復

    當你刪除一個VM的所有快照時,所有在快照時創建出來的Delta文件被融合回原來的VMDK文件,然后刪除這些Delta文件。但當你只刪除一個快照時,那么只有這個快照會融合回它的上一級快照。

    當你恢復一個快照時,現有的磁盤和內存狀態被丟棄,然后VM被帶回到那個時間點的狀態,而這個快照成為新的父級快照。父級快照不一定就是最新做的快照,它在快照管理器中被標注為“you are here”。

    當你用vmware-cmd來做時,vmware-cmd removesnapshots會刪除所有的快照,vmware-cmd revertsnapshot會復原到最近的快照。若你要刪除或復原到某一個快照時,你不能用命令行而需要用VIC。

    若你復原一個不包含內存狀態的快照,當你將VM啟動時,它將會應用前一個快照。 

    如何找到那些有快照的VM呢?

    到/vmfs/volumes目錄下: 運行 find –iname “*-delta.vmdk” –mtime +7 –ls 可以找到在7天內沒有改變的快照。運行 find –iname “*-delta.vmdk可以找到所有的快照文件。

    如何改變快照文件的缺省位置

    在VM的配置文件VMX中加一句: workingDir=”/vmfs/volumes/Snapvolume/snapshots/”。

    在做Vomtion時,若你的快照文件不在共享存儲位置或新ESX主機不能訪問快照文件時,當遷移做完時,VM會崩潰掉。所以,建議在做Vmotion時,最好先把快照commit掉。

    快照與磁盤空間的關系: 

    當一個VM只有一個快照時,當你刪除或commit快照時,你不需要額外的空間。但當一個VM有多個快照時,當你刪除所有快照時,你需要額外的空間。

    假設你要刪除一個VM的所有快照(snap1,snap2,snap3),首先,snap3將融合進snap2,這將導致snap2增長,接下來,snap2將融合進snap1,這會導致snap1增長。最后,snap1將融合進原來的VMDK,這不需要額外的空間。只有當VMDK文件融合操作完成時,快照才會被刪除,所以當一個有20G大小快照的VM在做commit時潛在地需要額外的20G。

    *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



    關鍵詞: 云計算 快照 VMware

    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 砚山县| 军事| 黑水县| 汪清县| 齐河县| 平湖市| 静宁县| 定兴县| 镇原县| 苍山县| 泸水县| 阿鲁科尔沁旗| 梓潼县| 南涧| 英超| 宕昌县| 邹平县| 攀枝花市| 南投县| 曲周县| 娄烦县| 平舆县| 鄱阳县| 全州县| 辽宁省| 宜兴市| 澜沧| 隆昌县| 英山县| 陵川县| 赞皇县| 庆云县| 金堂县| 黄梅县| 罗山县| 鹤庆县| 五原县| 蓬安县| 深圳市| 波密县| 叶城县|