When creating a datastore, there are options for choosing the number of replicas, stripes and the over-commit value under the advanced options.
In this article we will outline some of the implications of choosing higher or lower values for stripes and replicas for performance.
Note: At least 2 Replicas are required for the distributed nature of storage to work, e.g. migrations and failover.
It is currently not possible to change the datastore configuration once it has been created.
1. Replicas are mainly used for availability and fault-tolerance and affect the write performance. This is because the system must ensure that all remote paths are synchronised on every write. This has the effect of slowing writes to that of the slowest path, so it is important that all write paths are balanced (e.g. all disks in a datastore should have the same or very similar characteristics).
Replication, however, can increase read throughput when there is heavy read load and the "local read path" policy is disabled. In that case, reads are distributed across all available devices, so the throughput of all paths is aggregated.
Enabling the "local read path" policy will improve read latency, but keep throughput to the limit of the single "local" device, since each read operation will be serviced from one device local to the HV, where a VM is running. The "local read path" policy makes sense for read I/O load that can be efficiently handled by a single replica (note: high performance SSDs can handle more load than slow disks in this case).
2. Stripes increase throughput for reads and writes as it will distribute the I/O to all devices and will aggregate throughput. Striping performance benefits are most evident when using slower devices over a network with enough throughput to aggregate those devices.
Both replication and striping distribute storage across HVs, and thus require a high performance network in order to obtain the aggregate throughput mentioned above. The network could easily become the performance bottleneck in striping or replicated configurations. For example, using a single 1GBps link limits I/O performance to 110 MBytes/sec, independently of the number of devices used in a striping/replication setup.