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. We would like to make users of the PlaceVm API be aware of limitation via this KB article.
Symptoms:
1. 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.
2. If there is a single datastore that is compatible for VM placement but its size is > 2PB, the API will return DrsFaults.
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
vpxd.log file, below log line will be seen for every datastore whose size is > 2PB
/var/log/vmware/vpxd.log-------------------------------------------
2021-06-03T15:34:27.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.