Change Block Tracking (CBT) is a VMware feature that significantly improves incremental backup performance. CBT was first available in vSphere 4.1 and is used by the Commvault® software to provide incremental backup capability at the Disk level.
When Change Block Tracking is unavailable, backups revert to Cyclic Redundancy Check (CRC) to determine changed blocks. Since the Virtual Server Agent needs to read the entire virtual machine disk, CRC incremental backups may take almost as long as full backups even though the amount of data transferred and stored by an incremental backup is limited to the changed blocks within the virtual disk. Therefore, correcting CBT on the problematic virtual machine is recommended as quickly as possible to take full advantage of incremental backups.
Virtual disk block changes are tracked from outside virtual machines, in the virtualization layer. CBT basically sets a marker when a backup or replication occurs and tracks which disk blocks have been changed. When the next backup or replication occurs, CBT tells Commvault software exactly which blocks have changed. The software then requests transmission of only the blocks that changed since the last backup, or the blocks in use.
When Change Block Tracking is enabled, a –ctk.vmdk file will be created in each virtual machine directory. This file will be a small static file (.5MB for every 10GB .vmdk) which stores block information using sequence numbers for tracking purposes.
Change Block Tracking high level overview
CBT-Based Backup Process Once a snapshot is created, versions of the disks will exist. To identify the disks, managed object reference (moRef) is used to extract VM information such as CPU, memory, disk names and paths.
VixDiskLib is used to read data from disks based on sector boundaries and transfer data based on a multiple of disk sector size. It is also used to take advantage of advanced transport methods SAN and HotAdd.
VixMntapi is used to extract information about guest OS. This allows the mounting of volumes based on OS type to provide file level backup / restores.
Microsoft Hyper-V Change Block Tracking
Changed Block Tracking (CBT) is a mechanism that will enhance the backup performance of VHDX-format disks for Hyper-V virtual machines running on Windows Server 2012 R2 editions. CBT is used to optimize the virtual machine backups by reading only the allocated and modified portions of the virtual disk.
The CBT mechanism is provided by Commvault® Change Block Tracking (CVCBT) driver along with the Virtual Server Agent (VSA) software. The driver is supported on all editions of Windows Server 2012 R2 (Hyper-V Core, Standard and Datacenter editions). The VHDX files can reside on local volumes, cluster shared volumes, or SMB shares. CBT is not supported for backups on remote SMB (Server Message Block Protocol) shares.
Backups of VHD-format disks and virtual machines running on Windows Server 2008 R2 or Windows Server 2012 continue to use the Cyclic Redundancy Check (CRC) mechanism to back up the parts of virtual disks that have changed since the last full backup. With CRC, the amount of data that is transferred to the MediaAgent is less and requires the backup operation to read and compute the CRC checksum against all disk blocks. The time required for the disk I/O operations increases the total time of incremental backups to nearly as long as full backups.
The CVCBT driver is available with the software on each Hyper-V node in a cluster. After enabling CBT backups, when you run the first backup of a CBT enabled subclient, the CVCBT driver is activated and starts tracking the changed blocks on the virtual disks for the given virtual machines. The CBT driver monitors the virtual disks and maintains a bitmap (.cvf) file of the blocks that have changed. During subsequent incremental backups, these bitmap files are read and only the changed data blocks are backed up.