You can specify a desired level of read/write performance for a hard disk by including a vcloud:iops attribute in the OVF Item that represents the disk configuration.

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.

Note:

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.

Specify hard disk IOPS only when you have a well-defined need for a specific level of disk performance, and are confident that all storage profiles that the disk is likely to use can provision the desired level of IOPS. Because requesting a specific IOPS value imposes limitation on the set of storage profiles that a virtual machine can use, it is a best practice to avoid specifying hard disk IOPS in cases where the disk or virtual machine is likely to migrate to environments where an appropriate storage profile is not available.

Prerequisites

This operation requires the rights included in the predefined vApp Author role or an equivalent set of rights.Verify that you are logged in to the vCloud Air Compute Service as an End User.

Verify that the disk can use a storage profile configured to support IOPS. See Configure Storage I/O Control Support in an Organization VDC.

Procedure

  1. Retrieve the hard disk configuration from the virtual machine.
    Make a GET request to the virtual machine's virtualHardwareSection/disks link.
    GET https://vcloud.example.com/api/vApp/vm-4/virtualHardwareSection/disks
    The response to this kind of request is a RasdItemsList element that contains an Item element for each of the virtual machine's hard disks and hard disk controllers.
  2. Verify that the hard disk uses a storage profile that is configured with IOPS support.
    By default, all hard disks defined in the VirtualHardwareSection element of a virtual machine use the storage profile specified for the virtual machine. Some or all of the disks in a virtual machine can override this default and specify their own storage profile.
    1. Determine whether any of the disks override the virtual machine default storage profile.
      All disks that do not use the default storage profile include vcloud:storageProfileOverrideVmDefault and vcloud:storageProfileHref attributes, as shown in this example.
      <Item>
         ...
            <rasd:HostResource
               xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
               vcloud:capacity="10240"
               vcloud:busSubType="lsilogic"
               vcloud:busType="6"
               vcloud:storageProfileOverrideVmDefault="true"
               vcloud:storageProfileHref="https://vcloud.example.com/api/vdcStorageProfile/5">
         ...
      </Item>
      Retrieve the storage profile by making a GET request to the URL in the vcloud:storageProfileHref attribute.
    2. Disks that do not override the default storage profile use the one defined by the virtual machine.
      Retrieve the Vm and examine the response to find its StorageProfile element. Retrieve the storage profile by making a GET request to the URL in the href attribute of the StorageProfile element.
    A storage profile that is configured with IOPS support includes an IopsSettings element like the one shown here:
    <VdcStorageProfile>
       ...   
       <IopsSettings>
          <Enabled>true</Enabled>
          <DiskIopsMax>4000</DiskIopsMax>
          <DiskIopsDefault>1000</DiskIopsDefault>
          <StorageProfileIopsLimit>200000</StorageProfileIopsLimit>
          <DiskIopsPerGbMax>100</DiskIopsPerGbMax>
       </IopsSettings>
    </VdcStorageProfile>
  3. In the VirtualHardwareSection element that you retrieved in Step 1, modify the rasd:HostResource element of the Item that defines the disk for which you want to specify IOPS to add a vcloud:iops attribute.
    The value of the vcloud:iops attribute must be between 200 and 4000, and cannot be greater than the value of DiskIopsMax for the disk's storage profile. See Specify Hard Disk IOPS.

    Request bodies must contain all required elements and attributes, even if you are not changing their values. Because optional elements and attributes typically revert to default values if they are omitted or empty, it is a best practice to include optional elements in request bodies that modify existing objects. Link elements and href attributes from responses do not need to be included in modified sections. Some elements and attributes are read-only and cannot be modified. See the schema reference for details.

  4. Update the section with your modifications.
    1. In the retrieved section, find the Link element where rel="edit".
    2. Make a PUT request to the URL in that link's href attribute value, and supply the modified section as the request body.
    The response to this request is a Task element that tracks the update operation. When the task is complete, the section is updated.

Example: Specify Hard Disk IOPS

This example is similar to the ones shown in Update the Storage Profile for a Virtual Machine and Modify the Hard Disk Configuration of a Virtual Machine but adds a vcloud:iops attribute to the HostResource that defines the disk. For the purpose of this example, assume that the virtual machine's default storage profile is enabled to provide IOPS support and does not place a lower limit on disk IOPS than the one requested.

Request:
PUT https://vcloud.example.com/api/vApp/vm-4/virtualHardwareSection/disks
Content-Type: application/vnd.vmware.vcloud.rasditemslist+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<RasdItemsList
   xmlns="http://www.vmware.com/vcloud/v1.5"
   xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"
   type="application/vnd.vmware.vcloud.rasdItemsList+xml" >
   <Item>
      <rasd:Address>0</rasd:Address>
      <rasd:Description>SCSI Controller</rasd:Description>
      <rasd:ElementName>SCSI Controller 0</rasd:ElementName>
      <rasd:InstanceID>2</rasd:InstanceID>
      <rasd:ResourceSubType>lsilogic</rasd:ResourceSubType>
      <rasd:ResourceType>6</rasd:ResourceType>
   </Item>
   <Item>
      <rasd:AddressOnParent>0</rasd:AddressOnParent>
      <rasd:Description>Hard disk</rasd:Description>
      <rasd:ElementName>Hard disk 1</rasd:ElementName>
      <rasd:HostResource
         xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
         vcloud:capacity="10240"
         vcloud:busSubType="lsilogic"
         vcloud:busType="6"
         vcloud:iops="1500"
      </rasd:HostResource>
      <rasd:InstanceID>2000</rasd:InstanceID>
      <rasd:Parent>2</rasd:Parent>
      <rasd:ResourceType>17</rasd:ResourceType>
   </Item>
   <Item>
      ...
   </Item>
   ...
</RasdItemsList>
Response:
202 Accepted
Content-Type: application/vnd.vmware.vcloud.task+xml
...
<Task ... operation="Updating Virtual Application Linux FTP server (7)" ...>
...
</Task>