Migration and capacity planning
Migration readiness
vsfleet analyze readiness returns ready, blocked, or unknown from the
health rules over a stored capture, the most recent unless --run
names another. Warning/critical migration findings block;
informational findings are advisories. --fail-on-blockers exits 2 for blockers.
Failed or missing collectors force unknown, with blind vCenters named in
Not evaluated.
What each kind of VM configuration means for readiness:
| Evidence | Finding severity |
|---|---|
| RDM, shared disks, vTPM, PCI/SR-IOV/vGPU passthrough | Blocking warning |
| Firmware/Secure Boot, CPU socket/core topology, CPU/memory reservations and limits, manual MACs, floppies, extension ownership | Informational advisory |
Ordinary VMXNET3 adapters do not count as passthrough. VMs whose
configuration vCenter did not return, such as orphaned VMs, are counted under
Not evaluated and the rest are still checked; a context with no VM
configuration at all, such as an RVTools import, keeps the verdict
unknown.
VM decommission review
vsfleet analyze decommission vm/NAME combines VM safety gates
and stored topology. It reports only and performs no decommissioning action.
blocked: powered-on/suspended VM, snapshots, connected CD-ROM/USB, or inaccessible, orphaned, disconnected, or invalid connection state.unknown: missing evidence, or an unresolved reference of the VM's own: a datastore, network, host or cluster it uses, or the LUN behind a raw device mapping. The message names the reference. A LUN on the VM's host that no datastore maps to does not count.no-blockers: every collected check passed. This does not authorize deletion.
Ownership, backup policy, and application dependencies are not assessed;
check them yourself. --fail-on-blockers exits 2 only for blocked.
Topology and dependency queries
analyze topology, analyze deps, and analyze blast-radius query stored
evidence offline. Each takes a subject as KIND/NAME or KIND NAME, and
deps and blast-radius take --depth (1 to 5). Objects in different
vCenters are treated as the same only when their IDs match, such as a VM's
UUID or a datastore's backing; a match by name alone is marked inferred.
| Confidence | Meaning |
|---|---|
complete |
Required collections answered; all relationships resolved |
partial |
Blind collection, unresolved reference, or reconstructed network |
unknown |
The subject could not be resolved, or no context had the evidence |
An ambiguous name returns every match; narrow it with -n. Captures from
older vsfleet versions give at most partial network results.
Cross-cluster network readiness
vsfleet analyze readiness network SOURCE TARGET compares cluster-reachable
networks offline, with each cluster given as cl/NAME or NAME: VLAN, parent switch, MTU, teaming, security, uplinks, and
host coverage. Matching uses VLAN, then name. JSON separates matched pairs,
source-only gaps, target-only networks, and field differences. Source-only
gaps list affected VMs using topology attachment evidence and confidence.
The table output is the verdict; -o wide adds the comparison behind it, and
-o json always carries both:
| Verdict | Meaning |
|---|---|
ready |
No attached VM loses a source network; no hard mismatch |
blocked |
Attached mapping gap or VLAN, MTU, security, or host-coverage mismatch |
unknown |
Unresolved cluster or blind relevant collection |
Confidence follows the topology rules.
--fail-on-blockers exits 2 for blocked results.
Destination sizing scenarios
vsfleet analyze sizing checks whether stored VMs fit a proposed
destination. It reads one assessment offline and changes nothing. The result
is allocation-based, without a compatibility claim for any hypervisor or
cloud platform.
vsfleet analyze sizing --run pre-migration --cluster cluster-a --cluster cluster-b \
--hosts 3 --host-cores 48 --host-ram-gib 768 --datastore-capacity 60TiB \
--rdm-capacity 2TiB --cpu-ratio 4 --growth-pct 20 --ha-host-failures 1
Inputs
Required: --hosts, --host-cores (usable per host), --host-ram-gib,
and --datastore-capacity (usable, e.g. 40TiB). Scope containing RDMs
also requires --rdm-capacity.
| Option | Default |
|---|---|
--cpu-ratio (vCPU per usable core) |
1 |
--memory-ratio |
1 |
--growth-pct |
0 |
--ha-host-failures |
1 (N-1); 0 disables |
Scope uses -n/-A and repeatable --cluster NAME|CONTEXT/NAME.
Templates are excluded; powered-off VMs need --include-powered-off. Output
lists the excluded VMs and every input, and whether it was given or
defaulted.
Calculations
Output prints each formula with its numbers:
| Dimension | Required | Supply |
|---|---|---|
cpu (vCPU) |
sum(vCPU) x (1 + growth/100) | (hosts - failures) x cores x cpu-ratio |
memory (GiB) |
sum(configured memory) x (1 + growth/100) / memory-ratio | (hosts - failures) x RAM per host |
memory-reservation (GiB) |
sum(VM memory reservations) | (hosts - failures) x RAM per host |
datastore-capacity (GiB) |
sum(provisioned datastore-backed disk) x (1 + growth/100) | target datastore capacity |
rdm-capacity (GiB) |
sum(RDM LUN capacity) x (1 + growth/100) | target RDM capacity |
Verdicts use provisioned size. Shared disks and datastores or LUNs seen from several vCenters count once. Committed and guest-filesystem use are shown for reference, including whether committed use alone would fit.
Verdicts
Each dimension is fit, insufficient, or unknown. Overall precedence is
insufficient > unknown > fit.
A dimension is unknown when an input is missing, the capture is not
complete, or some VM's allocation, disks or datastore were not recorded.
Missing evidence never turns insufficient into something better. --fail-unless-fit returns exit code 2
unless every dimension is fit.
Output also shows oversubscription, the HA allowance, and migration blockers in scope. Storage gets no thin-provisioning or deduplication credit, and CPU reservations are listed but not compared, because target core speed is not an input. Check networks separately with network readiness.
Limits
Sizing uses configured allocations without performance history or rightsizing. It assumes homogeneous hosts and uniform growth, including RDM LUN size. It omits per-host placement, NUMA, fragmentation, storage performance, licensing, and overhead.