VADP (vSphere Storage APIs - Data Protection,前身叫vStorage API for Data Protection)是VMware的一種備份機制,在2009年五月vSphere 4.0的時候引進VMware。備份機制為透過虛擬機(VM)的快照副本進行,只要第三方備份軟體支援VADP,就可透過VADP的API呼叫ESXi主機,為指定的虛擬機先做快照後備份。
VADP使用virtual disk API和vSphere API來創建與管理VM快照,支援完整與增量備份。同時執行多個第三方軟體如Synology和Veeam做VADP備份,可能會因快照衝突(snapshot conflict)、CBT問題導致備份失敗。故不建議用多套VADP備份軟體來做備份
- 快照衝突:多個備份作業同時對一個VM創建與刪除快照,因VMware一次僅可操作一個快照,所以同時做會出問題。
- CBT(變更區塊追蹤)問題:多個備份軟體同時使用DBT追蹤VM的變更區塊,可能導致CBT標記(epoch)損壞。CBT epoch mismatch detected. Resetting CBT for VM
VADP在完整備份時會將虛擬硬碟*.vmdk全部的data block都存起來,而在vSphere 4.0之後使用CBT (Change Block Tracking)將上次備份之後發生變化的data block拿來做增量備份。對於虛擬硬碟會創建一個*-ctk.vmdk,保存change block的中繼資料。儲存方式會類似:
(offset1, length1),(offset2, length2),(offset3,length3)
偏移量offset代表某虛擬硬碟的位置,length指的應該是修改block的長度。VADP在啟用CBT之後就可以做增量備份。要開啟CBT,VM本身的設定也需要在Host上啟動CBT,在VMware裡面是增加兩個參數:
- ctkEnabled:設定成TRUE整台VM才有CBT
- scsiX:X.ctkEnabled:設定成TRUE可以針對VM上面的虛擬硬碟分別設定
成功開啟CBT的虛擬硬碟vdisk,可以在ESXi Shell裡面看到類似的檔案:
- vmname.vmdk:vdisk的metadata
- vmname-flat.vmdk:thick provision vdisk的data
- vmname-ctk.vmdk:vdisk的CBT (Change Block Tracking)
- vmname-000001.vmdk:vdisk snapshot的metadata
- vmname-000001-delta.vmdk:vdisk snapshot的data
- vmname-000001-ctk.vmdk:vdisk snapshot的CBT
如果沒有啟用CBT,則每次VADP備份都會是完整備份,啟動CBT功能後,雖然第一次是完整備份,但只會備份實際使用的空間,之後的每次備份都是差異備份。這邊要特別注意一點:
- 啟用CBT的時候,該虛擬機不可有快照
若虛擬機已經先有快照,必須要先移除所有快照後才能夠啟動CBT。
參考資料
- VMware資料備份機制的基本架構@iThome:2012年的說明,比較了Guest OS端備份、VCB備份、還有本文的VADP備份
- 與備份有關的VMWare基礎知識 _Part4@世達先進:VMware API與VADP說明
- PPDM:針對已成功完成整合工作的 VM vSphere 報告「需要虛擬機器整合」:另外一套軟體出現快照錯誤的檢查與處理方式
- vSphere 資料存放區和傳輸協定功能概觀@NetApp
- 與備份有關的VMWare基礎知識 _Part5@世達先進:2023年介紹CBT,裡面會有change block的變化塊函數QueryChangedDiskAreas(snapshot, deviceKey, startOffSet, changeID)
- 如何在 VMware 虛擬機器上啟用異動區塊追蹤(CBT)進行備份 by Ivan:要開啟CBT,VM本身的設定也需要在Host上啟動CBT
- 如何在虛擬機器上手動啟動異動區塊追蹤功能@Synology
- 若 Active Backup for Business 所需的虛擬機器服務未正確設定,該如何處理?
- What can I do if the virtual machine services required for Active Backup for Business are not correctly configured?上一篇說明的英文版
- Changed Block Tracking (CBT) on virtual machines:CBT出問題的解決方式
_EOF_
沒有留言:
張貼留言