When you use vSAN, Horizon 7 defines virtual machine storage requirements, such as capacity, performance, and availability, in the form of default storage policy profiles, which you can modify. Storage is provisioned and automatically configured according to the assigned policies. The default policies that are created during desktop pool creation depend on the type of pool you create.

vSAN offers a storage policy framework so that you can control the behavior of various virtual machine objects that reside on the vSAN datastore. An example of an object in vSAN is a virtual disk (VMDK) file, and there are four characteristics of each object that are controlled through policy:

  • Stripes: Number of disk stripes per object. The number of disk stripes affects how many magnetic disks you have (HDDs).
  • Resiliency: Number of failures to tolerate. The number of host failures to tolerate depends, of course, on the number of hosts you have.
  • Storage Reservation: Object space reservation. Controls how much storage is set aside.
  • Cache Reservation: Flash read-cache reservation.

The stripes and cache reservation settings are used to control performance. The resiliency setting controls availability. The storage provisioning setting control capacity. These settings, taken together, affect how many vSphere hosts and magnetic disks are required.

For example, if you set the number of disk stripes per object to 2, vSAN will stripe the object across at least 2 HDDs. In conjunction with this setting, if you set the number of host failures to tolerate to 1, vSAN will create an additional copy for resiliency and therefore require 4 HDDs. Additionally, setting the number of host failures to tolerate to 1 requires a minimum of 3 ESXi hosts, 2 for resiliency and the third to break the tie in case of partitioning.

Note: If you are deploying Horizon 7 on VMware Cloud on AWS and require guidance on how to set the FTT value as the cluster size grows to 6 hosts and beyond, see the VMware Knowledge Base article https://kb.vmware.com/s/article/76366.
Table 1. Horizon Default Policies and Settings
Policy (as it appears in vCenter Server) Description Number of disk stripes per object Number of failures to tolerate Flash read-cache reservation Object space reservation
FULL_CLONE_DISK_<guid> Dedicated full-clone virtual disk 1 1 0 0
FULL_CLONE_DISK_FLOATING_<guid> Floating full-clone virtual disk 1 0 0 0
OS_DISK_<guid> Dedicated linked-clone OS and disposable disks 1 1 0 0
OS_DISK_FLOATING_<guid> Floating linked-clone OS and disposable disks, floating instant-clone OS and disposable disks 1 1 0 0
PERSISTENT_DISK_<guid> Linked-clone persistent disk 1 1 0 0
REPLICA_DISK_<guid> Linked-clone replica disk, instant-clone replica disk 1 1 0 0
VM_HOME_<guid> VM home directory 1 1 0 0
Note: <guid> indicates the UUID of the Horizon 7 cluster.

Once these policies are created for the virtual machines, they will never be changed by Horizon 7. An administrator can edit the policies created by Horizon 7 by going into vCenter through the vSphere Web client or the vSphere Command-Line Interface (esxcli), with the option to make the changes effective across all existing VMs or to any new VMs. Any new default policies enacted by Horizon 7 will not impact existing desktops pools. Each virtual machine maintains its policy regardless of its physical location in the cluster. If the policy becomes non-compliant because of a host, disk, network failure, or workload changes, vSAN reconfigures the data of the affected virtual machines and load-balances to meet the policies of each virtual machine.

Note: If you inadvertently attempt to use settings that contradict each other, when you attempt to apply the settings, the operation will fail, and an error message might inform you that you do not have enough hosts.