In a recent VMware environment I was working in, we noticed that our incremental backups was taking a long time (like up to 7-8 hours) to complete. After digging around it was found that VMware actually has a feature built-in since version 4 called Change Block Tracking (CBT). CBT will track any blocks that were changed since the last backup and tag them and stores the information in a -CTK file. The obvious benefit is that now the third party software only backs up the changed block and not the entire VM each time, reducing the amount of data being backed thus speeding up backups and even lowers the CPU utilization on the VM host.
CBT is disabled by default though there are some backup tools that will enable it automatically or you can enable it manually which can easily be done following these steps:
Enable Change Block Tracking (CBT) on a VM
- Power off the VM, then right click on it and select Edit Settings… > Options Tab > General > and click on Configuration Parameters.
- Click on Add Row and add:
ctkEnabled = True
- Then for each virtual disk on your VM, add the following:
scsix:x.ctkEnabled = True
Replacing X with the controller and disk number of each disk. On my virtual machine I have two disks attached:
- Now click on OK and power on the VM.
- When you browse the Datastore for the VM you will see a vmname-CTK.VMDK file for each drive
Requirements to enable Change Block Tracking
- VM needs to be running hardware version 7.0 or newer
- ESXi host much be version 4.0 or newer
- Virtual Disks: Thin, Thick, Virtual RDM are compatible, RDM in physical compatibility mode is NOT supported.
Disable Change Block Tracking (CBT) on a VM
- Power off the VM and re-open Configuration Parameters
ctkEnabled = Trueto
ctkEnabled = False
After enabling CBT in the environment I spoke of above, incremental backups was now only taking 30mins to an 1 hour to complete!
Note: VMware does acknowledges that CBT could lose track of incremental changes in the event of a power failure or hard shutdown.