The DRS PlaceVm API does not work with datastores larger than 2PB.
search cancel

The DRS PlaceVm API does not work with datastores larger than 2PB.

book

Article ID: 312187

calendar_today

Updated On:

Products

VMware vCenter Server VMware vSphere ESXi VMware vSphere ESX 7.x VMware vSphere ESX 8.x

Issue/Introduction

The publicly available PlaceVm API has a known limitation where datastores larger than 2 Petabyte (PB) will be ignored. This limitation can generate undesired recommendations or generate user visible errors when used in environments with datastores larger than 2PB. Users of the PlaceVm API are made aware of its limitations through this KB article.
  • If there are multiple datastores that can satisfy the request, then all those datastores larger than 2PB will be silently ignored by the API and only the remaining datastores are considered by the algorithm for generating placement recommendations.
  • If there is a single datastore that is compatible for the VM placement but its size is above 2PB, the API will return DrsFaults.
  • OVF/OVA deployments fail while deploying from the cluster level. While deploying from the ESXi host level, the deployment is successful.
Below is an example of the failure seen while deploying a OVF from content library which uses the PlaceVm API internally. In this case, the target cluster had many datastores but only one was compatible, and its size was larger than 2PB.

In the log of the vCenter server service, /var/log/vmware/vpxd/vpxd-<number>.log, entries similar to the following line will be seen for every datastore whose size is > 2PB:
YYYY-MM-DDTHH:MM:SS.912Z warning vpxd[17124] [Originator@6876 sub=sdrsLogger opID=###] Datastore [vim.Datastore:datastore-XXXX,DatastoreName] invalid size: capcaityBytes=9007199254740992, freeBytes=8998305718599680
In addition the content library log /var/log/vmware/content-library/cls.log will contain errors like the following one:
DEBUG    | ########-#######-auto-#####-h5:########-##-##-## | cls-simple-activity-6     | GetVmPlacementActivity         | PlacementResult is (vim.cluster.PlacementResult) {
   dynamicType = null,
   dynamicProperty = null,
   recommendations = null,
   drsFault = (vim.cluster.DrsFaults) {
      dynamicType = null,
      dynamicProperty = null,
      reason = xvmotionPlacement,
      faultsByVm = (vim.cluster.FaultsByVm) [
         (vim.cluster.FaultsByVirtualDisk) {
            dynamicType = null,
            dynamicProperty = null,
            vm = null,
            fault = (vmodl.MethodFault) [
               (vim.fault.StorageVmotionIncompatible) {
                  faultCause = null,
                  faultMessage = (vmodl.LocalizableMessage) [
                     (vmodl.LocalizableMessage) {
                        dynamicType = null,
                        dynamicProperty = null,
                        key = com.vmware.sdrs.datastore.constraint,
                        arg = (vmodl.KeyAnyValue) [
                           (vmodl.KeyAnyValue) {
                              dynamicType = null,
                              dynamicProperty = null,
                              key = arg,
                              value = softconstraint-SOFT_CONSTR_STORAGE_PROFILE
                           }
                        ],
                        message = The datastore is not compatible with the virtual machine because of constraint softconstraint-SOFT_CONSTR_STORAGE_PROFILE violation.


Environment

  • VMware vSphere ESXi 6.x
  • VMware vSphere ESXi 7.0.x
  • VMware vSphere ESXi 8.0.x
  • VMware vCenter Server 6.x
  • VMware vCenter Server 7.0.x
  • VMware vCenter Server 8.0.x

Cause

The PlaceVm API implementation has a known limitation where datastores larger than 2PB are ignored for placement recommendations. Any workflow that uses PlaceVm API such as OVF deployment may return error when the target cluster contains the datastores larger than 2PB.

Resolution

Currently there is not resolution.
To work around this limitation, you can use either of the following 2 options:
 
 

For ESXi versions prior to ESXi 7.0 Update 3q or ESXi 8.0 Update 2b:

Use datastores smaller than 2 Petabyte as a workaround

 

For ESXi versions from ESXi 7.0 Update 3q or ESXi 8.0 Update 2b on:

    1. Login to vSphere Client.
    2. In the Inventory view, open the datastore tab and select the datastore which is greater that 2PB in size.
    3. Review the URL displayed in the address bar of the browser to get the Managed object ID (MoID) and Managed object Number (MoNum) for this datastore:
      • For example the URL might look like this:
        https://<vCenter_IP_or_fqdn>/ui/app/datastore;nav=s/urn:vmomi:Datastore:datastore-24:######-####-####-####-#########/summary
      • In this example the MoID is datastore-24 and the MoNum is 24.
    4. Go in the Hosts & Clusters view.
    5. Select the DRS cluster.
    6. Open the tab Configure > Services> vSphere DRS.
    7. In the upper right-hand side corner of the tab, click on [EDIT...] to bring up the "Edit Cluster Settings" dialog.
    8. In the dialog select the "Advanced Options" interface
    9. Create a new Advanced Option
      • For "Option", use  VmPlacementDatastoreOverride
      • For "Value", use the MoNum found in step 3 (e.g. 24 in the example)
      • Click the [ADD] button to create the new advanced option, then select [OK] to save and exit the dialog

Deployments should work fine for datastore larger than 2 PB after this parameter is updated.

Note: The above setting might not be persistent across the vCenter updates/upgrades. Need to configure again if the parameter is removed from the advanced settings.

Additional Information

Impact/Risks:

  • All the use-cases/workflows which uses PlaceVm API in an environment where datastore sizes is > 2PB will face this issue.
  • vSAN and vVol datastores are impacted by this limitation.