VMware 虚拟化编程(9) — VMware 虚拟机的快照
目錄
目錄
前文列表
VMware 虛擬機(jī)的快照
快照的執(zhí)行過程
刪除快照
快照類型
Quiseced Snapshot
前文列表
VMware 虛擬化編程(1) — VMDK/VDDK/VixDiskLib/VADP 概念簡(jiǎn)析
VMware 虛擬化編程(2) — 虛擬磁盤文件類型詳解
VMware 虛擬化編程(3) —VMware vSphere Web Service API 解析
VMware 虛擬化編程(4) — VDDK 安裝
VMware 虛擬化編程(5) — VixDiskLib 虛擬磁盤庫(kù)詳解之一
VMware 虛擬化編程(6) — VixDiskLib 虛擬磁盤庫(kù)詳解之二
VMware 虛擬化編程(7) — VixDiskLib 虛擬磁盤庫(kù)詳解之三
VMware 虛擬化編程(8) — 多線程中的 VixDiskLib
VMware 虛擬機(jī)的快照
在備份和恢復(fù)應(yīng)用程序中,不管是全量備份,還是增量備份,都依賴于 vSphere 中的快照。要備份虛擬機(jī),首先需要?jiǎng)?chuàng)建一個(gè)虛擬機(jī)的快照。快照創(chuàng)建成功之后,就需要找到與快照相關(guān)的虛擬磁盤。虛擬磁盤的快照文件以虛擬磁盤的基本名稱命名,并且在名稱后面追加了唯一的序列字符串,以保證 VMDK 文件的唯一性。如:vdisk-000032.vmdk,其中 vdisk 是虛擬磁盤的基本名稱。在物理文件系統(tǒng)的快照磁盤文件類型如下:
vm_name-000001.vmdk (配置文件): 虛擬機(jī)快照的元數(shù)據(jù)文件,記錄了該次快照相關(guān)文件的信息,其中 000001 表示第一次快照。
vm_name-000001-delta.vmdk (二進(jìn)制文件):稱為快照數(shù)據(jù)文件或者重做日志文件(redo-log)也被稱為子磁盤文件,該文件用于保存快照時(shí)間點(diǎn)后虛擬機(jī)所產(chǎn)生的更改數(shù)據(jù)(即快照數(shù)據(jù))。應(yīng)用了 in-file delta technology 技術(shù),初始大小為 16MB,會(huì)隨著虛擬機(jī)數(shù)據(jù)落盤操作的增多,而按照 16MB 的大小進(jìn)行增長(zhǎng)(降低 SCSI reservation 沖突),并且該文件的大小永遠(yuǎn)不會(huì)超過 Base Disk File 的大小。
vm_name-000001-ctk.vmdk (二進(jìn)制文件):改變追蹤文件,保存了自從上次快照以來的虛擬磁盤文件所發(fā)生變化的數(shù)據(jù)塊偏移量信息。需要開啟 CBT 功能才會(huì)生成該文件。
NOTE:在 vSphere API 的定義中,使用 Datastore 唯一標(biāo)識(shí)作為前綴,結(jié)合虛擬磁盤相對(duì)于 Datastore 根目錄的路徑,以此來標(biāo)識(shí)一塊虛擬磁盤,如:[storageN] VmName/vdisk-NNNNNN.vmdk
要取得虛擬磁盤機(jī)器快照的名稱和相關(guān)配置信息(capacityInKB、changeID 等),可以使用 PropertyCollector 來獲取 VirtualMachine Managed Object 的 config.hardware.device 屬性。在其中找到 VirtualDisk 項(xiàng)的 BackingInfo 屬性,那就是虛擬磁盤的配置信息,有以下類型:
VirtualDiskFlatVer1BackingInfo
VirutalDiskFlagVer2BackingInfo
VirtualDiskRawDiskMappingVer1BackingInfo
VirtualDiskSparseVer1BackingInfo
VirtualDiskSparseVer2BackingInfo
NOTE:VirtualDiskRawDiskMappingVer1BackingInfo 類型的虛擬磁盤是無法創(chuàng)建快照的,所以也無法備份這一類型的虛擬磁盤。
快照的執(zhí)行過程
STEP 1:
STEP 2:
STEP 3:
可以看出 VMware 虛擬機(jī)快照的特性有:
VMware 虛擬機(jī)使用的是鏈?zhǔn)娇煺铡?br />
VMware 虛擬機(jī)快照的 Parent VMDK File 的訪問權(quán)限為 OR 只讀。
快照時(shí)間點(diǎn)之后新落盤的數(shù)據(jù)只會(huì)被寫入到 Child VMDK File 快照數(shù)據(jù)文件中。
快照鏈上的任意快照文件的損壞都會(huì)導(dǎo)致虛擬機(jī)無法正常運(yùn)行。
刪除快照
從創(chuàng)建快照的特性中可以理解,如果希望在刪除一個(gè)快照的同時(shí)保證虛擬機(jī)能夠正常運(yùn)行的話,那么就需要將該快照數(shù)據(jù)文件中的數(shù)據(jù)合并到 Parent VMDK File 中,以此來保證虛擬機(jī)磁盤數(shù)據(jù)的完整性。
刪除虛擬機(jī)快照一般會(huì)是以下兩種情況:
待刪除的虛擬機(jī)快照在快照鏈中:delta vmdk 中的數(shù)據(jù)會(huì)向父快照的 delta vmdk 或基礎(chǔ)虛擬磁盤文件 base vmdk 合并,然后 delta vmdk 被刪除。
待刪除的虛擬機(jī)快照不在快照鏈中(VMware 支持獨(dú)立快照):不需要合并,直接刪除快照數(shù)據(jù)文件。
刪除 VMware 虛擬機(jī)快照的特點(diǎn):
刪除快照過程包括兩個(gè)異步的操作:1. 從 Snapshot Manager 中將快照刪除;2. vmdk 數(shù)據(jù)合并。如果 1 成功而 2 失敗,就會(huì)殘留 delta vmdk 文件,這樣的話就需要手動(dòng)進(jìn)行快照文件的合并。
刪除快照可能會(huì)帶來大量的數(shù)據(jù)寫操作,有時(shí)候可能需要?jiǎng)h除很長(zhǎng)的時(shí)間,并且期間虛擬機(jī)的性能會(huì)受到負(fù)面影響。
自從 vSphere 4 Update 2 開始,優(yōu)化了選擇刪除所有虛擬機(jī)快照的過程,不再是順序向下一層層的合并,而是各層分別直接合并到 Base vmdk 中。
快照類型
崩潰一致快照 (Crash-Consistent Snapshot):是 VMware 虛擬機(jī)的默認(rèn)快照類型,相當(dāng)于電腦突然斷電時(shí)磁盤的狀態(tài),閃存中的數(shù)據(jù)會(huì)丟失掉。
文件系統(tǒng)一致快照 (File-System-Consistent Snapshot):快照時(shí)間點(diǎn)之前,虛擬機(jī)的文件系統(tǒng)會(huì)被凍結(jié),內(nèi)存中的臟數(shù)據(jù)刷盤,快照完成之后,文件系統(tǒng)再解凍。這樣的快照能夠保證文件系統(tǒng)的一致性,即內(nèi)存中的數(shù)據(jù)不會(huì)丟失。
應(yīng)用一致性 (Application-Consistent Snapshot):快照時(shí)間點(diǎn)前,虛擬機(jī)上運(yùn)行的應(yīng)用程序被凍結(jié),內(nèi)存中應(yīng)用程序相關(guān)的所有臟數(shù)據(jù)刷盤,快照完成之后,應(yīng)用程序再被解凍,這樣的快照能夠保證指定應(yīng)用程序的數(shù)據(jù)是完整的,但不會(huì)保證文件系統(tǒng)也是完全一致的。
其中文件系統(tǒng)一致快照和應(yīng)用一致性也統(tǒng)稱為 Quiseced Snapshot。
Quiseced Snapshot
使用 Quiseced Snapshot 需要特殊的環(huán)境配置,主要的實(shí)現(xiàn)方式有兩種:
使用 GuestOS 內(nèi)置的應(yīng)用服務(wù)或 VMware 提供的一致性驅(qū)動(dòng):
版本較新的 Windows GuestOS 提供了 VSS(Volume Shadow Copy Service) 服務(wù),VSS 的 Requester-Writer 能夠?qū)?yīng)用程序和文件系統(tǒng)進(jìn)行凍結(jié)和解凍操作。
對(duì)于版本較老的 Windows GuestOS,VMware 也提供了 SYNC driver 數(shù)據(jù)一致性驅(qū)動(dòng)來支持應(yīng)用程序和文件系統(tǒng)一致性快照;
而 Linux Guest,VMware 提供了僅支持持文件系統(tǒng)一致性的 vmsync kernel module。
使用腳本程序:如果是非 Windows GuestOS,那么就需要編寫針對(duì)指定應(yīng)用程序的腳本來對(duì)其進(jìn)行凍結(jié)和解凍的操作。
NOTE:上述列舉的 VSS、SYNC driver、vmsync kernel module 和腳本,均要依賴 VMware Tools 來調(diào)用,所以即便客戶機(jī)操作系統(tǒng)支持上述功能,仍需安裝 VMware Tools 才能完美支持 Quiseced Snapshot。例如針對(duì) VSS,VMware tools 就提供了 VSS support 功能,它是 VMware tools 和 Windows VSS 之間交互的橋梁。
Quiseced Snapshot 的創(chuàng)建過程:
1. 用戶發(fā)出 Quiesced Snapshot 創(chuàng)建請(qǐng)求給 vCenter,vCenter 再給虛擬機(jī)所在的 ESXi 的 Hostd Service 發(fā)出快照創(chuàng)建請(qǐng)求。
2. ESXi 上的 Hostd Service 將快照創(chuàng)建請(qǐng)求傳遞給 虛擬機(jī) GuestOS 內(nèi)的 VMware tools。
3. VMware tools 以 VSS Requester 的身份通知 VSS,VSS 再通知已經(jīng)被注冊(cè)的文件系統(tǒng)和各應(yīng)用的 VSS writer 執(zhí)行凍結(jié)操作。
4. 一旦完成凍結(jié)和內(nèi)存數(shù)據(jù)落盤,VMware tools 就將完成結(jié)果通知 Hostd Service。
5. Hostd Service 執(zhí)行快照操作。
6. 快照完成后,按照前面的順序再對(duì)文件系統(tǒng)和各應(yīng)用進(jìn)行解凍。
總結(jié)
以上是生活随笔為你收集整理的VMware 虚拟化编程(9) — VMware 虚拟机的快照的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vetur:VSCode下强大的Vue开
- 下一篇: 属狗的是哪年出生(属狗的运势如何)