VSAN Part 22 – Policy Compliance Status

I thought it might be useful to share some of the various VM Storage Policy status that I  have observed whilst testing Virtual SAN (VSAN). I’m sure this is by no means a complete list but as I said, these are the ones that I have come across and I am sure these are the status that you will observe most often too.


When virtual machine storage objects display ‘None’ as the VM Storage Policy column, it means that there is no user defined VM Storage Policy associated or assigned to the virtual machine. In this case, it implies that the policy used by the virtual machine is the default one. Now this isn’t very intuitive, so I’ve asked internally if we can change this to ‘default’ instead of ‘None’. I guess we’ll have to wait and see what will happen with that. This is how it looks:

NoneNot Applicable

A ‘Not Applicable’ state occurs when a VM Storage Policy with certain capabilities is applied to a virtual machine, but that virtual machine resides on storage which does not understand the capabilities. For instance, if I created a VM Storage Policy using VSAN capabilities like Number of Failures To Tolerate, or Number of Disk Stripes per Object, and then applied that policy to a virtual machine which is residing on a VMFS or NFS datastore, the Compliance Status would become ‘Not Applicable’, as shown below:

Not ApplicableOut of Date

This was a compliance state that I observed while doing some inter-operability testing with vSphere Replication and VSAN. When a particular VM Storage Policy was chosen for a replicated virtual machine, and that virtual machine was recovered, it was initially recovered with a compliance state of ‘Out of Date’. The reason for this is because the VM Storage Policy is associated with the virtual machine, but it is not applied to the virtual machine.



This doesn’t need too much of an explanation. Compliant is the status that is observed when the virtual machine storage object (e.g. VMDK/Hard disk) has been configured in such a way as to match the capability requirements placed in the VM Storage Policy. In the example below, a policy with Number of Failures to Tolerate = 1 was configured, and in the Physical Disk Placement tab, we can see both replica components and the witness required to meet this policy requirement. Therefore the object is compliant:

CompliantNot Compliant

And, as you might guess, the ‘Non Compliant’ status is observed when the virtual machine storage object configuration does not meet the requirements placed in the VM Storage Policy. Now, interestingly enough, this is also the status you will observe when the virtual machine storage object is being reconfigured to meet the requirements of the VM Storage Policy. So if you change the policy of a VM on-the-fly (which is also something that VSAN allows you to do), the compliance status shows ‘Not Compliant’. But if you look at the physical disk placement tab underneath, you can observe components in the ‘Not Compliant’ storage object in a state of Reconfiguring. When the reconfiguring completes (assuming there are enough resources and no failures), the compliant status will change to ‘Compliant’.

Not Compliant - ReconfiguringAs I said, these are the compliance status that I have observed during testing. If I come across any others, I will update the post accordingly.

    • You should be able to tell which component resides here by looking at the Virtual Machine > Manage > VM Storage Policy view in the vSphere web client. Here you can see the actual layout of the storage object and which SSDs and HDDs that it is using.

  1. Because Part 7 I can’t comment…
    Force Provisioning
    – I think conflict
    + If this parameter is set to a non-zero value, the object will be provisioned even if the policy specified in the VM Storage Policy is not satisfied by the datastore.
    + However, if there is not enough space in the cluster to satisfy the reservation requirements of at least one replica, the provisioning will fail even if Force Provisioning is turned on.

    – I see conflict.
    + If not enough space datastore, why “the object will be provisioned even if the policy specified in the VM Storage Policy is not satisfied by the datastore.”?
    In attention 2, tell “if there is not enough space in the cluster to satisfy the reservation requirements of at least one replica, the provisioning will fail even if Force Provisioning is turned on.”

    • In part 1, we are not talking about space, rather we are talking about things like stripe width and failures to tolerate – that is what you are over-riding.

      When I talk about ‘enough space’ in part 2, we mean the ability to provision at least one replica, even though multiple replicas may be specified by the ‘Number Of Failures To Tolerate’ parameter. If you cannot find enough space on the datastore for one replica copy of the VMDK, then we cannot provision, even though force-provisioning is chosen.

      • Hi @Cormac,
        Part 1 is talking about when force-provisioning = 1 , FTT=0, striped=0 . When it will create two copy (FTT=1) and each copy striped on 1 disk (Striped=1)?

        • If you have a policy with FTT=1, and you use force provision, it will check if there is enough resources to create both replicas first. If there is enough space to satisfy FTT=1, it will create both replicas. If there is only enough resources for 1 replica, then it will create that ONLY because force provision is set.

          When additional resources become available, the other replica will be created to satisfy the FTT=1 requirement.

  2. Hi @Cormac
    – I read http://cormachogan.com/2013/09/17/vsan-part-9-host-failure-scenarios-vsphere-ha-interop/.
    – I want you help some question. 🙂

    Host-1: running VM
    Host-2: contain replica
    Host-3: contain replica
    Host-4: contain witness

    – How to FDM agent make sure host-1′s isolated/partition/die to reboot VM if it only used network heartbeat but not datastore heartbeat ?

    – If FDM declare the host-1 is unavailable by network heartbeat and restart VM on new host, How about the old instance of this VM on the host-1 ? It’s still running or will be powered off ? Do i need config isolation response on cluster ?

    – host-1,2 and host-3,4 splitted to 2 partition. ( host-1,2 same partition, host-3,4 same partition).
    – Are there differences if the HA master host is esxi-01 or esxi-03 ?

Comments are closed.