1.4 CBT (Changed Block Tracking 塊修改跟蹤)
CBT 是 VMware 在 vSphere 4.0 版本開始為了實現增量備份一個功能。VDAP使用該功能,使得基於它開發的各種虛擬機備份應用能夠做到增量備份。
相對完整備份時將vmdk 全部資料區塊block都保存下來(左圖),基於 CBT 的增量備份只儲存自從上次備份以來發生變化的資料塊block(右圖)。ESXi 對每個開啟了 CBT 功能虛擬機的虛擬磁碟都會創建一個 ctk 檔,用於保存變化區塊中繼資料。該功能將會對磁碟帶來些許性能損失,所以,如果不使用時候,可以關閉它,但一般說來如果該虛擬機器需要進行備份,常態性開啟它對備份帶來好處是顯而易見。
獲取 CBT 變化塊的函數的定義為:
QueryChangedDiskAreas(snapshot, deviceKey, startOffSet, changeID)
其中:
• snapshot 代表當前的快照,也就是“變化”時間段的後端點
• deviceKey 是目標虛擬磁片的 device ID
• startOffSet 是開始獲取變化塊的offset
• changeID 是指“變化”時間段的前端點,即舊有快照的 changeID
其結果類似 “(117768192, 65536),(132120576, 65536),(145096704, 43122688),(265289728, 65536),(958398464, 65536)”,每項的格式為 (offset,length),表示一個發生變化的資料塊。
參考資料:
How do Virtual Machine Snapshots work in VMware
Virtual Volumes – A new way of doing snapshots
VMware Transport Modes: Best practices and troubleshooting
Virtual Disk Transport Methods
How Volume Shadow Copy Service Works