2025年6月29日 星期日

vSphere用VADP備份的快照衝突與CBT

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裡面是增加兩個參數:

  1. ctkEnabled:設定成TRUE整台VM才有CBT
  2. 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。


參考資料

_EOF_

沒有留言:

張貼留言