One policy setting that I have yet to discuss in any great detail in my blog posts about VSAN. The ForceProvisioning policy setting, when placed in the VM Storage Policy, allows Virtual SAN to violate the NumberOfFailuresToTolerate (FTT), NumberOfDiskStripesPerObject (SW) and FlashReadCacheReservation (FRCR) policy settings during the initial deployment of a virtual machine.
This can be useful for many reasons. One reason is that it enables the boot-strapping of a vCenter server on a VSAN deployment as highlighted by William Lam in this excellent blog post on the subject. Another reason is that it allows the provisioning of virtual machines with a policy that cannot be met by the current Virtual SAN cluster resources. When the plan is to add these resources in the not too distant future, the VMs can be deployed, and when the new resources become available, VSAN will automatically bring these VMs to compliance without the need for administrator intervention. However, there are some considerations to keep in mind when using Force Provisioning, which is the purpose of this blog post.
Behavior when requirements in a policy cannot be met
Virtual SAN attempts to deploy a VM that it meets all requirements in its VM Storage Policy. If it cannot do this, it will attempt a much simpler placement with requirements reduced to the following:
- NumberOfFailuresToTolerate = 0
- NumberOfDiskStripesPerObject = 1
- FlashReadCacheReservation = 0
This means Virtual SAN will attempt to create an object with just a single mirror. Any ObjectSpaceReservation (OSR) policy setting is still honored.
Virtual SAN does not gracefully decrement the policy requirement to find a placement for an object. It simply reduces the requirements to its lowest possible setting. For example, if an object asks for FTT=2 that can’t be met, Virtual SAN won’t try FTT=1, but instead immediately tries FTT=0 if the ForceProvisioning requirement is set in the policy.
Similarly, if there is a requirement for FTT=1 and SW=10 but Virtual SAN doesn’t have enough capacity devices to accommodate SW=10, then if ForceProvisioning is set it will fall back to using a policy of FTT=0, SW=1, even though a policy of FTT=1, SW=1 may have succeeded.
Behavior when additional resources become available
There is another consideration. Force Provisioning can lead to capacity issues if its behavior is not well understood by administrators. If a number of virtual machines have been force provisioned, but only one replica copy of an object is currently instantiated due to lack of resources (FTT=0), once those resources become available through the addition of new hosts or new disks, Virtual SAN will automatically consume them on behalf of those virtual machines and try to bring the VM compliant with its policy.
Administrators who use this option to force provision virtual machines need to be aware that once additional resources become available in the cluster, Virtual SAN may immediately consume these resources to try to satisfy the policy settings of virtual machines. This will leave less usable capacity than originally thought.
Behavior of non-compliant objects when full data migration occurs
One final special consideration relates to entering Maintenance Mode in full data migration mode. If an object is currently non-compliant due to force provisioning (i.e. FTT=0), then “Full data evacuation” of the object will obviously behave like “Ensure Accessibility”, i.e. the evacuation will allow the object to have reduced availability, exposing it a higher risk. If another failure occurs on the cluster while this host is in maintenance mode, the VM may become inaccessible. This is an important consideration when using force provisioning, and only applies to non-compliant objects.