VSAN.ClomMaxComponentSizeGB explained

In the VSAN Troubleshooting Reference Manual, the following description of VSAN.ClomMaxComponentSizeGB is provided:

By default VSAN.ClomMaxComponentSizeGB is set to 255GB. When Virtual SAN stores virtual machine objects, it creates components whose default size does not exceed 255 GB. If you use physical disks that are smaller than 255GB, then you might see errors similar to the following when you try to deploy a virtual machine:

There is no more space for virtual disk XX. You might be able to continue this session by freeing disk space on the relevant volume and clicking retry.

This is because VMDKs are thin-provisioned on the VSAN datastore. Because the default component size is 255GB, the object will not be able to grow to its full size of 255GB if the physical disk is smaller than 255GB. For example, if a VMDK of 255GB is provisioned (with FTT=1 and SW=1) on a 200GB physical disk, it can’t grow greater than 200GB (because the physical disk size limit). You could get the out of space error shown above if you write more than 200GB data to the VMDK.

In situations like this, one option is to modify VSAN.ClomMaxComponentSizeGB to a size that is approximately 80% of the physical disk size. KB article 2080503 has instructions on how to change this setting.

There are two other options to address this situation too of course. The first is to use Object Space Reservation in the VM Storage Policy and allocate all of the space for the object up front. This means that the VMDK is not thinly provisioned and that its disk space is reserved up front, so VSAN will chunk up the 255GB VMDK into multiple RAID-0 components and distribute them on multiple physical disk drives if necessary. Another way is to use Stripe Width in the VM Storage Policy so that the VMDK object is striped across multiple disk drives.

Now, there are two questions that have recently come up in regard to this setting. One is whether or not it is applicable to All-Flash VSAN configurations, and the second is in relation to what the minimum value this can be set to? These questions arose because there was an all-flash VSAN implementation going ahead, and the SSD sizes chosen for the capacity tier were 200GB. However VSAN.ClomMaxComponentSizeGB could not be tuned to a value less than 180GB, which was only 90% of the physical disk drive.

With regards to all-flash, yes, this is still a consideration. With regards to 90%, that should be fine. 180GB is the minimum allowed value for VSAN.ClomMaxComponentSizeGB, and so long as it is below the physical disk size, it should be OK. If you have disk drives that are smaller than this minimum value, then an alternate approach such as using Stripe Width or Object Space Reservation in the VM Storage Policy should be used.