Administrators are very familiar with two types of backup: full and incremental. A full backup works by copying the whole content of a disk. Full backup usually used for initial backup, the backup file size is usually almost the same as the content itself and the process could take long time to complete.
On the other hand, incremental backup works by only copying contents that has been modified since last backup. It finds the delta, or the ‘different’ parts of the content, then send it to the backup container. Incremental backup never backup the same parts of contents that has been backed up before, it simply ignores it. Incremental backup ideally used after performing a full backup to catch changes that made after the full backup process is done. It usually performs faster, as there are less items to be copied, and the backup result also smaller in size, saving so much disk space on the backup container. After all, you don’t need to perform full backup again and again, do you? Performing full backups will only fill the disk space with many duplicate contents and of course it is very inefficient.
VMware uses incremental approach for its Virtual Machine backup, and this technology called Changed Block Tracking (CBT). CBT works by comparing disk sectors with the last backup file and locate the blocks that has been modified. These modified blocks are then copied and transferred to the backup container instead of the entire disk sector.
CBT feature is disabled by default to avoid the performance overhead caused by using this feature. However, the overhead is very small compared to the benefit that we will get from utilizing it.
There are few things that must be fulfilled before you can enable CBT on our VM, such as:
- VM host must be running ESX/ESXi 4.0 or later
- The VM itself must using hardware version 7 or later
- RDM in physical compatibility is not supported
- Independent disk (persistent or non-persistent) cannot be used
- VM must not have any snapshot before enabling CBT
- VM must be powered off before enabling CBT
CBT can be enabled on per-VM basis, meaning that enabling CBT on a VM doesn’t enable it for the others. The easiest way to enable CBT is by using vSphere client. Follow these steps below to enable CBT on a VMware VM:
Right click on the powered off VM and select “Edit settings”
- On the Options tab, select General under Advanced on the left pane, then click the “Configuration Parameters” button on the right pane
3. Click on “Add Row” button, then type ctkEnabled on parameter name field with value TRUE. This parameter is required to enable CBT on the VM itself.
4. It is also required to enable CBT on each virtual disk on the VM. Repeat the action in step 3 to enable CBT for each virtual disks but this time the parameter format is scsi[x]:[y].ctkEnabled (replace [x]:[y] with the disk SCSi number) and value TRUE
- Click OK to save your configuration.
Once CBT has been enabled, VMware use “stun-unstun” cycle for the corresponding VM to allow the change tracker filter to be inserted into the VM storage. This can be done by powering off the VM then powering it back on; suspend VM and then resume it; or, create a snapshot on the VM and delete it. You can find the changed block information saved inside the VM directory in the datastore with the name format vmname-ctk.vmdk. Each virtual disk with CBT enabled will have one of this file, and the file size usually stays the same unless the virtual disk size is increased.
Overall, Changed Block Tracking is a very powerful feature that improves backup performance and enables more efficient storage usage. It is now up to the backup software to leverage the benefit of CBT. The most important thing is the backup software doesn’t have to calculate and find the changed blocks on their own anymore, saving more time in executing the backup process. Many good backup softwares have been made to support CBT, including Iperius Backup. With Iperius, it is possible to do incremental backup and keep the changes history; achieving a continuous data protection.