Using RAID 5 or RAID 6 Erasure Coding in VSAN

You can use RAID 5 or RAID 6 erasure coding to protect against data loss and increase storage efficiency.
Erasure coding can provide the same level of data protection as mirroring (RAID 1), while using less storage capacity.

RAID 5 or RAID 6 erasure coding enables vSAN to tolerate the failure of up to two capacity devices in the datastore. You can configure RAID 5 on all-flash clusters with four or more fault domains. You can configure RAID 5 or RAID 6 on all-flash clusters with six or more fault domains.

RAID 5 or RAID 6 erasure coding requires less additional capacity to protect your data than RAID 1 mirroring.
For example, a VM protected by a Primary level of failures to tolerate value of 1 with RAID 1 requires twice the virtual disk size, but with RAID 5 it requires 1.33 times the virtual disk size.
The following table shows a general comparison between RAID 1 and RAID 5 or RAID 6.

Capacity Required to Store and Protect Data at Different RAID Levels:

RAID Configuration          Primary level of Failures to Tolerate     Data Size              Capacity Required
RAID 1 (mirroring)                                                  1                                100 GB                    200 GB
RAID 5 or RAID 6 (erasure coding) with four fault domains 1        100 GB                    133 GB
RAID 1 (mirroring)                                                   2                               100 GB                    300 GB
RAID 5 or RAID 6 (erasure coding) with six fault domains 2          100 GB                     150 GB

RAID 5 or RAID 6 erasure coding is a policy attribute that you can apply to virtual machine components. To use RAID 5, set Failure tolerance method to RAID-5/6 (Erasure Coding) – Capacity and Primary level of failures to tolerate to 1. To use RAID 6, set Failure tolerance method to RAID-5/6 (Erasure Coding) – Capacity and Primary level of failures to tolerate to 2. RAID 5 or RAID 6 erasure coding does not support a Primary level of failures to tolerate value of 3. To use RAID 1, set Failure tolerance method to RAID-1 (Mirroring) – Performance. RAID 1 mirroring requires fewer I/O operations to the storage devices, so it can provide better performance. For example, a cluster resynchronization takes less time to complete with RAID 1.

Note :: In a vSAN stretched cluster, the Failure tolerance method of RAID-5/6 (Erasure Coding) Capacity applies only to the Secondary level of failures to tolerate.

RAID 5 or RAID 6 Design Considerations :

Consider these guidelines when you configure RAID 5 or RAID 6 erasure coding in a vSAN cluster.
>> RAID 5 or RAID 6 erasure coding is available only on all-flash disk groups.
>> On-disk format version 3.0 or later is required to support RAID 5 or RAID 6.
>> You must have a valid license to enable RAID 5/6 on a cluster.
>> You can achieve additional space savings by enabling deduplication and compression on the vSAN cluster.

vSAN SDKs

The vSAN Management SDKs bundle language bindings for accessing the vSAN Management API and creating client applications for automating vSAN management tasks.

The vSAN Management API The vSAN Management API is an extension of the vSphere API. Both vCenter Server and ESXi hosts expose the vSAN Management API. You can use the vSAN Management API to implement the client applications that perform the following tasks:

>>Configure a vSAN cluster – Configure all aspects of a vSAN cluster, such as set up VMkernel networking, claim disks, configure fault domains, enable the deduplication and compression of all flash clusters, and assign the vSAN license.

>>Configure a vSAN stretched cluster – Deploy the vSAN Witness Appliance and configure a vSAN stretched cluster.

>>Upgrade the vSAN on-disk format.

>>Track the vSAN performance.

>>Monitor the vSAN health.

The vSAN Management SDKs are separated into five different programming languages, Java, .NET, Python, Perl, and Ruby.

Each of the five vSAN Management SDKs depends on the vSphere SDK with similar functionality delivered for the corresponding programming language.

You can download these vSphere SDKs from https://code.vmware.com/home or from Github.

1:vSAN Management SDK for Java

2:vSAN Management SDK for .NET

3:vSAN Management SDK for Python

4:vSAN Management SDK for Perl

5:vSAN Management SDK for Ruby

1: Running the Sample Applications The vSAN Management SDK for Java includes sample applications, build and run scripts, and dependent libraries. They are located under the samplecode directory in the SDK. You can use the sample code to get vSAN managed objects on vCenter Server or ESXi hosts.

Before running the sample applications, make sure that you have the vSphere Web Services SDK on your development environment, with the following directory structure:

VMware-vSphere-SDK–build

           SDK

                  vsphere-ws

Then copy the vsan-sdk-java directory at the same level as the vsphere-vs directory in the vSphere Web Services SDK:

VMware-vSphere-SDK–build

         SDK

                vsphere-ws

                vsan-sdk-java

Build the sample applications by running the build.py command. Run the sample applications using the run.sh script on Linux, or the run.bat script on Windows:

./run.sh com.vmware.vsan.samples. <Sample_name>

      –url https://vcenter/host_address/sdk

      –username <username>

      –password  <password>

2:vSAN Management SDK for .NET

The vSAN Management SDK for .NET provides libraries, sample code, and API reference for developing custom .NET clients against the vSAN Management API. The vSAN Management SDK for .NET depends on the vSphere Web Services SDK of similar level. You use the vSphere Web Services SDK for logging in to vCenter Server and for retrieving vCenter Server managed objects.

Building the vSAN C# DLL

You must have the following components to build the vSAN C# DLL:

>> csc.exe. A C# compiler

>> sgen.exe. An XML serializer generator tool

>> wsdl.exe. Web Service Description Language 4.0 for Microsoft .NET

>> Microsoft.Web.Services3.dll

>> .NET Framework 4.0 n Python 2.7.6

To build the vSAN C# DLL, run the following command:

$ python builder.py vsan_wsdl vsanservice_wsdl

This command generates the following DLL files:

>> VsanhealthService.dll

>> VsanhealthService.XmlSerializers.dll

Running the Sample Applications To run the sample applications, run the following command:

.\VsanHealth.exe –username  hostname

–url https://vcneter_name/sdk

–hostName cluster name —ignorecert –disablesso

To view information about the parameters, use –help.

For further references please follow : https://code.vmware.com/web/sdk/6.7U1/vsan-python & https://code.vmware.com/apis/444/vsan

What is Rebalance of Objects in VSAN and how does it work ?

Why do we need rebalance in VSAN cluster?

When any capacity device in your cluster reaches 80 percent utilization, Virtual SAN automatically rebalances the cluster, until the utilization of all capacity devices is below the threshold.

Cluster rebalancing evenly distributes resources across the cluster to maintain consistent performance and availability.

Other operations can initiate cluster rebalancing:

  • If Virtual SAN detects hardware failures on the cluster
  • If Virtual SAN hosts are placed in maintenance mode with the Full data migration option
  • If Virtual SAN hosts are placed in maintenance mode with Ensure accessibility when objects assigned FTT=0 reside on the host.

Note:

To provide enough space for maintenance and reprotection, and to minimize automatic rebalancing events in the Virtual SAN cluster, consider keeping 30-percent capacity available at all times.

Cluster rebalance can be done in two ways :

1: Automatic Rebalance

2: Manual Rebalance

Let us know how the Automatic Rebalance works:

By default, Virtual SAN automatically rebalances the Virtual SAN cluster when a capacity device reaches 80 percent utilization. Rebalancing also occurs when you place a Virtual SAN host in maintenance mode.

Run the following RVC commands to monitor the rebalance operation in the cluster:

  • vsan.check_limits. Verifies whether the disk space utilization is balanced in the cluster.
  • vsan.whatif_host_failures. Analyzes the current capacity utilization per host, interprets whether a single host failure can force the cluster to run out of space for reprotection, and analyzes how a host failure might impact cluster capacity, cache reservation, and cluster components.
    The physical capacity usage shown as the command output is the average usage of all devices in the Virtual SAN cluster.
  • vsan.resync_dashboard. Monitors any rebuild tasks in the cluster.   

You can Manually rebalance through the cluster health check, or by using RVC commands.

If the Virtual SAN disk balance health check fails, you can initiate a manual rebalance in the vSphere Web Client. Under Cluster health, access the Virtual SAN Disk Balance health check, and click the Rebalance Disks button.

Use the following RVC commands to manually rebalance the cluster:

  • vsan.check_limits. Verifies whether any capacity device in the Virtual SAN cluster is approaching the 80 percent threshold limit.
  • vsan.proactive_rebalance [opts]<Path to ClusterComputeResource> –start. Manually starts the rebalance operation. When you run the command, Virtual SAN scans the cluster for the current distribution of components and begins to balance the distribution of components in the cluster. Use the command options to specify how long to run the rebalance operation in the cluster, and how much data to move each hour for each Virtual SAN host. For more information about the command options for managing the rebalance operation in the Virtual SAN cluster, see the RVC Command Reference Guide.
    Because cluster rebalancing generates substantial I/O operations, it can be time-consuming and can affect the performance of virtual machines.

What is Resync of Objects in VSAN?

You can monitor the status of virtual machine objects that are being resynchronized in the Virtual SAN cluster.

The following events trigger resynchronization in the cluster:

  • Editing a virtual machine (VM) storage policy. When you change VM storage policy settings, Virtual SAN might initiate object recreation and subsequent resynchronization of the objects.
    Certain policy changes might cause Virtual SAN to create another version of an object and synchronize it with the previous version. When the synchronization is complete, the original object is discarded.
    Virtual SAN ensures that VMs continue to run and are not interrupted by this process. This process might require additional temporary capacity.
  • Restarting a host after a failure.
  • Recovering hosts from a permanent or long-term failure. If a host is unavailable for more than 60 minutes (by default), Virtual SAN creates copies of data to recover the full policy compliance.
  • Evacuating data by using the Full data migration mode before you place a host in maintenance mode.
  • Exceeding the utilization threshold of a capacity device. Resynchronization is triggered when capacity device utilization in the Virtual SAN cluster that approaches or exceeds the threshold level of 80 percent.

To evaluate the status of objects that are being resynchronized, you can monitor the resynchronization tasks that are currently in progress.

Prerequisites:

Verify that hosts in your Virtual SAN cluster are running ESXi 6.0 or later.

Procedure:

  1. Navigate to the Virtual SAN cluster in the vSphere Web Client.
  2. Select the Monitor tab and click Virtual SAN.
  3. Select Resyncing Components to track the progress of resynchronization of virtual machine objects and the number of bytes that are remaining before the resynchronization is complete.You can also view information about the number of objects that are currently being synchronized in the cluster, the estimated time to finish the resynchronization, the time remaining for the storage objects to fully comply with the assigned storage policy, and so on.If your cluster has connectivity issues, the data on the Resyncing Components page might not get refreshed as expected and the fields might reflect inaccurate information.

Best practices to upgrade VSAN

Before you attempt to upgrade vSAN, verify that your environment meets the vSphere hardware and software requirements.

1: Verify that vSAN 6.6 supports the software and hardware components, drivers, firmware, and storage I/O controllers that you plan on using. Supported items are listed on the VMware Compatibility Guide website at http://www.vmware.com/resources/compatibility/search.php.

2: Verify that you have enough space available to complete the software version upgrade. The amount of disk storage needed for the vCenter Server installation depends on your vCenter Server configuration.

3: Verify that you have enough capacity available to upgrade the disk format. If free space equal to the consumed capacity of the largest disk group is not available, with the space available on disk groups other than the disk groups that are being converted, you must choose Allow reduced redundancy as the data migration option.

4: Verify that you have placed the vSAN hosts in maintenance mode and selected the Ensure data accessibility or Evacuate all data option.

5: Verify that you have backed up your virtual machines.

6: All vSAN disks should be healthy

      >> No disk should be failed or absent

      >> This can be determined via the vSAN Disk Management view in the vSphere Web Client.

7: There should be no inaccessible vSAN objects

     >>Use RVC to determine this: https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/products/vsan/vmware-ruby-vsphere-console-command-reference-for-virtual-san.pdf

8: There should not be any active resync at the start of the upgrade process.

After starting a vSAN Cluster upgrade :

1: Do not attempt to upgrade a cluster by introducing new versions to the cluster and migrating workloads.

2: If you are adding or replacing disks in the midst of an upgrade, ensure that they are formatted with the appropriate legacy on-disk format version : How to format vSAN Disk Groups with a legacy format version (2146221).

Recommendations:

Consider the following recommendations when deploying ESXi hosts for use with vSAN:

1: If ESXi hosts are configured with memory capacity of 512 GB or less, use SATADOM, SD, USB, or hard disk devices as the installation media.
2: If ESXi hosts are configured with memory capacity greater than 512 GB, use a separate magnetic disk or flash device as the installation device. If you are using a separate device, verify that vSAN is not claiming the device.
3: When you boot a vSAN host from a SATADOM device, you must use a single-level cell (SLC) device and the size of the boot device must be at least 16 GB.
4:To ensure your hardware meets the requirements for vSAN, refer to Hardware Requirements for vSAN.

Please check the vSAN upgrade requirements (2145248) : https://kb.vmware.com/s/article/2145248

Remove Disk Partition on VSAN

If you have added a device that contains residual data or partition information, you must remove all preexisting partition information from the device before you can claim it for vSAN use. VMware recommends adding clean devices to disk groups.

When you remove partition information from a device, vSAN deletes the primary partition that includes disk format information and logical partitions from the device.

Prerequisites:

+++++++++++

Verify that the device is not in use by ESXi as boot disk, VMFS datastore, or vSAN.

Procedure:

++++++++

  1. Navigate to the vSAN cluster in the vSphere Web Client.
  2. Click the Configure tab.
  3. Under vSAN, click Disk Management.
  4. Select a host to view the list of available devices.
  5. From the Show drop-down menu at the bottom of the page, select Ineligible.
  6. Select a device from the list, and click the Erase partitions on the selected disks icon
  7. Click OK to confirm.

If vCenter Server is inAccessible from vSphere Web Client below are the steps to manually remove and recreate a vSAN disk group using the ESX Command Line Interface (esxcli).

To remove and recreate a disk group using esxcli commands:

Note: These steps can be data destructive if not followed carefully.

  1. Log in to the ESXi host that owns the disk group as the root user using SSH.
  2. Run this one of these commands to put the host in Maintenance mode. There are 3 options:

    Note: VMware recommends using the ensureObjectAccessibility option. Failure to use this ensureObjectAccessibility mode or evacuateAllData mode may result in data loss.

    • Recommended:
      • Ensure accessibility of data:
        esxcli system maintenanceMode set –enable true -m ensureObjectAccessibility
      • Evacuate data:
        esxcli system maintenanceMode set –enable true -m evacuateAllData
    • Not recommended:
      • Don’t evacuate data:
        esxcli system maintenanceMode set –enable true -m noAction
  3. Record the cache and capacity disk ids in the existing group by running this command:
    esxcli vsan storage list

    Example output of a capacity tier device:
    naa.123456XXXXXXXXXXX:
    Device: naa.123456XXXXXXXXXXX
    Display Name: naa.123456XXXXXXXXXXX
    Is SSD: true
    VSAN UUID: xxxxxxxx-668b-ec68-b632-xxxxxxxxxxxx
    VSAN Disk Group UUID: xxxxxxxx-17c6-6f42-d10b-xxxxxxxxxxxx
    VSAN Disk Group Name: naa.50000XXXXX1245
    Used by this host: true
    In CMMDS: true
    On-disk format version: 5
    Deduplication: true
    Compression: true
    Checksum: 598612359878654763
    Checksum OK: true
    Is Capacity Tier: true
    Encryption: false
    DiskKeyLoaded: false

    Note: For a cache disk:

    • the VSAN UUID and VSAN Disk Group UUID fields will match
    • Output will report: Is Capacity Tier: false
  4. Then remove the disk group

    esxcli vsan storage remove -u uuid

    Note: Always double check the disk group UUID with the command:
    esxcli vsan storage list

  5. If you have replaced physical disks, see the Additional Information section.
  6. Create the disk group, using this command:
    esxcli vsan storage add -s naa.xxxxxx -d naa.xxxxxxx -d naa.xxxxxxxxxx -d naa.xxxxxxxxxxxx

    Where naa.xxxxxx is the NAA ID of the disk device and the disk devices are identified as per these options:

    • -s indicates an SSD.
    • -d indicates a capacity disk.
  7. Run the esxcli vsan storage list command to see the new disk group and verify that all disks are reporting True in CMMDS output.

Storage Policies on vSAN

Throughout the life cycle of the Virtual Machine, profile-driven storage allows the administrator to check whether its underlying storage is still compatible. The reason why this is useful is that if the VM is migrated to a different datastore for whatever reason, the administrator can ensure that it has moved to a datastore that continues to meet its requirements.

However, this not how it works in the case of VM storage policies.With vSAN, the storage quality of service no longer resides with the datastore; instead, it resides with the VM and is enforced by the VM storage policy associated with the VM and the VM disks (VMDKs). Once the policy is pushed down to the storage layer, in this case, vSAN, the underlying storage is then responsible for creating storage for the VM that meets the requirements placed in the policy.

This makes the life bit easy for the administrators.

Storage Policy-Based Management:

Deploying a VSAN datastore is different from the traditional way of mounting LUN from a storage unit or NAS /NFS devices.

In case of VSAN for better performance and availability of the VMs VSAN uses VM storage policy and a storage policy can be attached to individual VMs during deployment of the Virtual Machine.

You can select the capabilities when a VM storage policy is created.

Similarly, if an administrator wants a VM to tolerate two failures using a RAID-1 mirroring configuration, there would need to be three copies of the VMDK, meaning the amount of capacity consumed would be 300% the size of the VMDK. With a RAID-6 implementation, a double parity is implemented, which is also distributed across all the hosts. For RAID-6, there must be a minimum of six hosts in the cluster. RAID-6 also allows a VM to tolerate two failures, but only consumes capacity equivalent to 150% the size of the VMDK.

The number of Disk Stripes Per Object:

When failure tolerance method is set to capacity, each component of the RAID-5 or RAID-6 stripe may also be configured as a RAID-0 stripe.

Storage object configuration when stripe width set is to 2 and failures to tolerate is set to 1 and replication method optimizes for is not set.

Force Provisioning:

If the force provisioning parameter is set to a nonzero value, the object that has this setting in its policy will be provisioned even if the requirements specified in the VM storage policy cannot be satisfied by the vSAN datastore. The VM will be shown as noncompliant in the VM summary tab in and relevant VM storage policy views in the vSphere client. If there is not enough space in the cluster to satisfy the reservation requirements of at least one replica, however, the provisioning will fail even if force provisioning is turned on. When additional resources become available in the cluster, vSAN will bring this object to a compliant state.

Administrators who use this option to force provision virtual machines, you need to understand that although the VM may be provisioned with one replica copy,vSAN may immediately consume these resources to try to satisfy the policy settings of virtual machines.

NOTE: This parameter should be used only when absolutely needed and as an exception.

VASA Vendor Provider:

This uses the vSphere APIs for Storage Awareness (VASA) to surface up the vSAN capabilities to the vCenter Server.

VASA allow storage vendors to publish the capabilities of their storage to vCenter Server, which in turn can display these capabilities in the vSphere Web Client. VASA may also provide information about storage health status, configuration info, capacity and thin provisioning info, and so on. VASA enable VMware to have an end-to-end story regarding storage.

With vSAN, and now VVols, you define the capabilities you want to have for your VM storage in a VM storage policy. This policy information is then pushed down to the storage layer, basically informing it that these are the requirements you have for storage. VASA will then tell you whether the underlying storage (e.g., vSAN) can meet these requirements, effectively communicating compliance information on a per-storage object basis.

Enabling VM Storage Policies

In the initial release of vSAN, VM storage policies could be enabled or disabled via the UI. This option is not available in later releases. However, VM storage policies are automatically enabled on a cluster when vSAN is enabled on the cluster. Although VM storage policies are normally only available with certain vSphere editions, a vSAN license will also provide this feature.

Assigning a VM Storage Policy During VM Provisioning

The assignment of a VM storage policy is done during the VM provisioning. At the point where the vSphere administrator must select a destination datastore, the appropriate policy is selected from the drop-down menu of available VM storage policies. The datastores are then separated into compatible and incompatible datastores, allowing the vSphere administrator to make the appropriate and correct choice for VM placement.

The vSAN datastore is shown as noncompliant when policy cannot be met.

Ruby vSphere Console (RVC): Part 1

The Ruby vSphere Console (RVC) is an interactive command-line console user interface for VMware vSphere and Virtual Center. The Ruby vSphere Console is based on the popular RbVmomi Ruby interface to the vSphere API.

The Ruby vSphere Console comes bundled with the vCenter Server Appliance (VCSA) and the Windows version of vCenter Server. It is free of charge and is fully supported. We recommend deploying a vCenter Server Appliance (minimum version 5.5u1b) to act as a dedicated server for the Ruby vSphere Console and Virtual SAN Observer. This will remove any potential performance or security issues from the primary production vCenter Server. After deploying the vCenter Server Appliance, no additional configuration is required to begin using the Ruby vSphere Console to manage your vSphere infrastructure. To begin using the Ruby vSphere Console, simply ssh to the dedicated vCenter Server Appliance and log in as a privileged user.

Advantages :

++ More detailed Virtual SAN insights vSphere Web Client

++ Cluster view of VSAN while esxcli can only offer host perspective

++ Mass operations via wildcards

++ Works against ESX host directly, even if VC is down

How do you set up ??

To begin using the Ruby vSphere Console to manage your vSphere infrastructure, simply deploy the vCenter Server Appliance and configure network connectivity for the appliance. SSH to the dedicated vCenter Server Appliance and log in as a privileged user. No additional configuration is required to begin.

KB: https://kb.vmware.com/s/article/2007619

Accessing and Logging In Below you will find the steps to log in and begin using the Ruby vSphere Console (RVC):

1. SSH to the VCSA dedicated to RVC and Virtual SAN Observer usage. login as: root VMware vCenter Server Appliance root@x.x.x.x password :

2. Login to the VCSA as a privileged OS user (e.g. root or custom privileged user).

3. Login to RVC using a privileged user from vCenter. Syntax: rvc [options] [username[:password]@]hostname

Eg:

vcsa:~ # rvc root@x.x.x.x
password:
0 /
1 x.x.x.x/
> cd 1
/localhost> ls
0 Test-Datacenter
/localhost>cd 0

I will then proceed by typing ‘cd 0’ and then ‘ls’ to view the contents of my ‘Test-Datacenter’ which will then provide me with 5 more options as seen below.

The vSphere environment is broken up into 5 areas:

++ Storage: vSphere Storage Profiles

++ Computers: ESXi Hosts

++ Networks: Networks and network components

++ Datastores: Datastores and datastore components

++ VMs: Virtual Machines and virtual machine components

/localhost/Test-Datacenter>ls
0 storage
1 computer [host]/
2 network [network]/
3 datastores [datastore]/
4 vms [vm]/
/localhost/Test-Datacenter>

You can use TAB twice to view the namespace

Once you login you can use help command to check the options (add the ‘-help’ parameter to the end of the command OR you can type ‘help’ followed by what is called the command ).For example :

help vsan
help cluster
help host
help vm

Viewing Virtual SAN Datastore Capacity: “show vsanDatastore” Here is an example of using “ls” to list out datastores within the infrastructure and then using “show” to obtain high-level information on the “vsanDatastore”. Notice the capacity and free space of the vsanDatastore.

/localhost/Test-Datacenter/datastores> ls
0 datastore1: 99.21GB 0.7%
1 datastore1 (1): 99.14GB 0.1%
2 vsanDatastore: 700.43GB 17.7% 
/localhost/Test-Datacenter/datastores> show vsanDatastore/
path: /localhost/Test-Datacenter/datastores/vsanDatastore
type: vsan url: ds:///vmfs/volumes/vsan:5207cb725036c9fc-3e560cb2fb96f36d/
multipleHostAccess: true
capacity: 700.43GB
free space: 684.14GB

Virtual SAN RVC Commands Overview: https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/products/vsan/vmware-ruby-vsphere-console-command-reference-for-virtual-san.pdf

Page 14 onwards.

I am working on the rvc commands as of now, and I will update the details in my next post: Ruby vSphere Console (RVC): Part 2

IOPS LIMIT FOR OBJECT

A number of customers have expressed a wish to limit the amount of I/O that a single VM can generate to a VSAN datastore. The main reason for this request is to prevent a high feed VM (or to be more precise, intense IOPS application inside in a VM) from impacting other VMs running on the same datastore. With the introduction of IOPS Limits, implemented via policies, administrators can limit the number of IOPS that a VM can do.

VSAN 6.2 has a new quality of service mechanism which we are referring to as “IOPS limit for object”. Through a policy setting, a customer can set an IOPS limit on a per object basis (typically VMDK) which will guarantee that the object will not be able to exceed this amount of IOPS. This is very useful if you have a virtual machine that might be consuming more than its required share of resources. This policy setting will ensure that there are “guard rails” placed on this virtual machine so it doesn’t impact other VMs, or impact the overall performance of the VSAN datastore.

The screenshot below shows what the new “IOPS limit for object” capability looks like in the VM Storage Policy. Simply select “IOPS limit for object” for your policy, and then select an integer value for the IOPS limit. Any object (VMDK) that has this policy assigned will not be able to generate more than that number of IOPS.

Normalized to 32KB:

++++++++++++++++

The IO size for IOPS Limit is normalized to 32KB. Note that this is a hard limit on the number of IOPS so even if you have enough resources available on the system to do more, this will prevent the VM/VMDK from doing so.

Considerations:

++++++++++++

One thing to consider is that not only is read and write I/O counted towards the limit, but also any snapshot I/O that occurs against the VM/VMDK is added to the IOPS limit.

If the I/O against a particular VM/VMDK rises about the IOPS Limit threshold, i.e. it is set to 10,000 IOPS and we receive the 10,001st I/O, then that I/O is delayed/throttled.