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

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

Issue/Introduction

The publicly available PlaceVm API has this known limitation where datastores larger than 2PB will be ignored. The 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 request, then all those datastores larger than 2PB will be silently ignored by the API and only the remaining datastores are considered by the algo for generating placement recommendations.
  • If there is a single datastore that is compatible for VM placement but its size is > 2PB, the API will return DrsFaults.
  • OVF/OVA deployment fails while deploying from the cluster level. While deploying from the ESXi host level, the deployment is successful.
Here 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 compatible datastore and its size was > 2PB.

In the /var/log/vmware/vpxd.log file, below log 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=6bbff91e] Datastore [vim.Datastore:datastore-XXXX,DatastoreName] invalid size: capcaityBytes=9007199254740992, freeBytes=8998305718599680

/var/log/vmware/content-library/cls.log


DEBUG    | ko2vddrt-2926659-auto-1qq84-h5:70229914-bd-19-b0 | 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.x
  • VMware vSphere ESXi 8.x
  • VMware vCenter Server Appliance 6.x
  • VMware vCenter Server Appliance 7.x
  • VMware vCenter Server Appliance 8.x

Cause

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

Workaround:
  • For the ESXi versions prior to ESXi 7.0 Update 3q and ESXi 8.0 Update 2b, use a datastore smaller than 2PB.
  • For the ESXi versions ESXi 7.0 Update 3q and ESXi 8.0 Update 2b, follow the below steps:
    • Login to vCenter and select the datastore which is greater that 2PB in size.
    • On the address bar in the browser, get the MoNum for that datastore:
      Eg:  https://vcip/ui/app/datastore;nav=s/urn:vmomi:Datastore:datastore-24:######-####-####-####-#########/summary
      datastore-24 is the MoID for the selected datastore and 24 is the MoNum.
    • Go to the vCenter > Cluster > Configure > vSphere DRS.
    • Edit the settings for DRS.
    • Go to Advanced options.
    • Add the option: VmPlacementDatastoreOverride and value: MoNum (Recorded from the above step)
    • 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:
  1. All the use-cases/workflows which uses PlaceVm API in an environment where datastore sizes is > 2PB will face this issue.
  2. vSAN and vVol datastores are impacted by this limitation.