You can modify a VDC storage profile to enable support for vCenter Storage I/O Control if that feature is configured in the underlying Provider VDC.

Managed read/write performance in physical storage devices and virtual disks is defined in units called IOPS, which measure read/write operations per second. When an organization VDC storage profile is backed by a Provider VDC storage profile that includes storage devices that are capable of IOPS allocation, you can configure disks that use it to request a specified level of I/O performance. A storage profile configured with IOPS support delivers its default IOPS value to all disks that use it, even disks that are not configured to request a specific IOPS value. A hard disk configured to request a specific IOPS value cannot use a storage profile whose maximum IOPS value is lower than the requested value, or a storage profile that is not configured with IOPS support.

VMware Cloud Director sets an IOPS limit and reservation for every disk that uses an IOPS-enabled storage profile. vSphere is responsible for allocating the IOPS capacity of the underlying datastore across all virtual disks that use the storage profile. IOPS management is primarily intended to ensure that no disk can consume more than its fair share of IOPS. Realized IOPS for a given disk are limited by what the backing LUN can provide, and can be influenced by factors such as read/write block size. While a given storage profile can include a mix of datastores that IOPS-enabled and those that are not, such configurations can interfere with the system's ability to allocate IOPS fairly across all disks that use the storage profile.

The ability of a Provider VDC storage profile to provide IOPS support depends on the configuration of the vSphere datastores that support it. See Configure Storage I/O Control Support in a Provider VDC.

Prerequisites

This operation is restricted to system administrators.

Procedure

  1. Retrieve the XML representation of the VDC in the admin view, and examine the AdminVdc element to find the VdcStorageProfiles element it contains.
    Request:
    GET https://vcloud.example.com/api/admin/vdc/44
    Response:
    <AdminVdc>
       ...
       <VdcStorageProfiles>
          <VdcStorageProfile
             href="https://vcloud.example.com/api/admin/vdcStorageProfile/99"
             name="*"
             type="application/vnd.vmware.admin.vdcStorageProfile+xml"/>
          <VdcStorageProfile
             href="https://vcloud.example.com/api/admin/vdcStorageProfile/128"
             name="bronze"
             type="application/vnd.vmware.admin.vdcStorageProfile+xml"/>
       </VdcStorageProfiles>
       ...
    </AdminVdc>
  2. Retrieve an organization VDC storage profile to discover the provider VDC storage profile that backs it.
    Request:
    GET https://vcloud.example.com/api/admin/vdcStorageProfile/128
    Response:
    <AdminVdcStorageProfile
       xmlns="http://www.vmware.com/vcloud/v1.5"
       name="bronze"
       type="application/vnd.vmware.admin.vdcStorageProfile+xml" ... >
       ...
       <ProviderVdcStorageProfile
          href="https://vcloud.example.com/api/admin/pvdcStorageProfile/101"
          name="Bronze"
          type="application/vnd.vmware.admin.pvdcStorageProfile+xml"/>
    </AdminVdcStorageProfile>
  3. Verify that the provider VDC storage profile can provide IOPS support.
    You can use providerVdcStorageProfile query as shown here, and include a filter expression that specifies the href value of the ProviderVdcStorageProfile. Examine the iopsAllocated and iopsCapacity attributes in the response. Values greater than 0 indicate that the provider VDC storage profile can provide IOPS support:
    GET https://vcloud.example.com/api/query?type=providerVdcStorageProfile&format=records\
    &filter=href==https://vcloud.example.com/api/admin/pvdcStorageProfile/101
    ...
    
    <QueryResultRecords
    ...
       <ProviderVdcStorageProfileRecord
          iopsAllocated="256000"
          iopsCapacity="400000"
       ... />
    </QueryResultRecords>
  4. Make a PUT request to the rel="edit" link from the AdminVdcStorageProfile you retrieved in Step 2 and supply the modified AdminVdcStorageProfile as the request body.
    Supply the Vdc element as the request body.

Example: Add IOPS Support to an Organization VDC Storage Profile

This request adds IOPS support to a storage profile.

Request:
PUT https://vcloud.example.com/api/admin/vdcStorageProfile/128
Content-Type: application/vnd.vmware.admin.vdcStorageProfile+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<AdminVdcStorageProfile
   xmlns="http://www.vmware.com/vcloud/v1.5"
   name="bronze"
   type="application/vnd.vmware.admin.vdcStorageProfile+xml">
   <Link
      rel="edit"
      href="https://vcloud.example.com/api/admin/vdcStorageProfile/128"
      type="application/vnd.vmware.vcloud.vdcStorageProfile+xml" />
   <Enabled>true</Enabled>
   <Units>MB</Units>
   <Limit>1024</Limit>
   <Default>true</Default>
   <IopsSettings>
      <Enabled>true</Enabled>
      <DiskIopsMax>4000</DiskIopsMax>
      <DiskIopsDefault>1000</DiskIopsDefault>
      <StorageProfileIopsLimit>200000</StorageProfileIopsLimit>
      <DiskIopsPerGbMax>100</DiskIopsPerGbMax>
   </IopsSettings>

   <ProviderVdcStorageProfile
      href="https://vcloud.example.com/api/admin/pvdcStorageProfile/101"
      name="Bronze"
      type="application/vnd.vmware.admin.pvdcStorageProfile+xml" />
</AdminVdcStorageProfile>
If the storage profile contains storage pods, this request fails with a message like this one:
BadRequestException: Storage profile n contains storage pod p. Enabing IOPS guarantee is not supported on a storage profile containing storage pods.
This request fails with a BadRequestException if any of the following are true:
  • The storage profile includes one or more storage pods.
  • The storage profile includes one or more VMware Virtual SAN datastores.
  • The value you specified for DiskIopsMax, DiskIopsPerGbMax, or DiskIopsDefault is not in the range allowed by the storage profile.

The response is a Task.

Response:
202 Accepted
Content-Type: application/vnd.vmware.vcloud.task+xml
...
<Task ... >
   ...
</Task>