vSphere 4 was released with so many features that it seems we’re still trying to get all of them implemented. One of the most impactful features of is the changed block tracking (CBT) functionality. (CBT is supported with vSphere version 4 virtual machines and higher.)

CBT allows a record of a virtual machine disk file (.VMDK) change to be accessed programmatically. This effectively treats a VMDK file like a block device, similar to that of a storage system. CBT makes data protection mechanisms for vSphere more efficient.

Configure CBT on a virtual machine
In order to configure CBT on a virtual machine, you need to add a configuration parameter called ctkEnabled and set the value to true. The next step is to add a value for each SCSI ID of the virtual machine as scsix:y.ctkEnabled (Figure A).
Figure A

Click the image to enlarge.

The SCSI ID value enables each VMDK to be configured for CBT. Each VMDK has a SCSI ID that is visible in the properties of the virtual machine. The IDs are for four controllers with 16 positions each. This means the minimum ID is SCSI0:0, and the maximum ID is SCSI3:15.

The virtual machine in Figure A has only one virtual machine, but SCSI0:1 has been a pre-emptive entry for CBT to be enabled. This environment is my virtual lab, which rarely has more than two VMDKs assigned to one virtual machine. From a best practice standpoint, it would be a good idea to make virtual machine templates have CBT enabled for the entire virtual machine and a few SCSI IDs (even the VMDKs have not been provisioned yet); this will save the inevitable forgotten step down the road. The other visible indicator of CBT is a new file in the directory of the virtual machine that has the ctk string in the file name.

VMware KB 1020128 has more information on CBT.

What extra steps and best practices have you utilized in enabling CBT? Share your comments.