Every check, and every gap
48 checks in total. 43 run against a complete RVTools 4.x export; 4 cannot be answered from one at all, and 1 is written but waiting on a column we have not confirmed RVTools exports. All of them are listed, rather than quietly dropped.
Score is what a check adds to a VM's risk total. A VM is high at 55 and medium at 30. Blocker is only ever reached by a blocker-severity finding, never by accumulating score.
Try it freeStorage
N disk(s) use Physical Compatibility Mode RDM (direct LUN passthrough). Cannot be converted online. Remediation: cold migration via backup/restore, or reconfigure app to use in-guest iSCSI initiator.
rdm_physical_mode · reads vDisk · raw, vDisk · rdmCompatibilityMode
- HighIndependent disk mode+35
N disk(s) in independent mode (…). Independent disks are excluded from VMware snapshots, so snapshot-based migration tools -- Veeam, Zerto, HCX -- will skip them silently and the migrated VM will boot with those volumes missing or stale. Copy each one separately, outside the snapshot-based replication, and verify it on the target before cutover.
independent_disk_mode · reads vDisk · diskMode
- HighVery large storage footprint+35
At 100 MB/s: ~N. Use incremental sync (CBT).
very_large_storage · reads vDisk · capacityMib
- MediumVirtual mode RDM+30
N disk(s) use Virtual Compatibility Mode RDM. Convert to VMDK via Storage vMotion (no downtime): Edit Settings > select RDM > Migrate Storage > choose VMFS/NFS datastore.
rdm_virtual_mode · reads vDisk · raw, vDisk · rdmCompatibilityMode
- MediumLarge storage footprint+15
At 100 MB/s: ~N. Schedule maintenance window.
large_storage · reads vDisk · capacityMib · only when very_large_storage has not fired
- MediumHigh disk count+15
Each disk needs mapping & verification. Document controller layout.
high_disk_count · reads vDisk · diskLabel
- LowvSAN-backed storage+5
vSAN uses a distributed object store incompatible with direct VMDK export. Storage vMotion all disks to VMFS/NFS before migration. Staging time: ~N at 100 MB/s.
vsan_backed_storage · reads vDisk · datastore, vDatastore · type
- LowDisks span multiple datastores+5
Datastores: …. Verify all accessible during migration.
disks_span_multiple_datastores · reads vDisk · datastore
- LowElevated disk count+5
Document controller-to-disk mapping before migration.
elevated_disk_count · reads vDisk · diskLabel · only when high_disk_count has not fired
- LowThick-provisioned disks+3
N GB thick-provisioned. Full size transferred even if mostly empty. Convert to thin before migration to reduce transfer time. Note: thick-to-thin conversion invalidates CBT.
thick_provisioned_disks · reads vDisk · thinThick
Compatibility
- HighVirtual TPM configured+35
vTPM state is VMware-specific and cannot migrate. Before migration: (1) Save BitLocker recovery keys, (2) Suspend BitLocker (manage-bde -protectors -disable C:), (3) Remove vTPM dependencies. Recreate vTPM on target post-migration.
vtpm_configured · reads vInfo · vtpm
- HighLegacy Windows guest OS+30
Limited VirtIO support. Proxmox needs driver injection testing. Hyper-V safer for legacy Windows.
legacy_windows_guest_os · reads vInfo · guestOsId
- MediumUncommon guest OS+25
Limited/no support on target platforms. Verify drivers individually or consider P2V rebuild.
uncommon_guest_os · reads vInfo · guestOsId, vInfo · guestOsFull
- MediumLegacy VM hardware version+20
Old guest OS with limited driver support. Upgrade HW version if guest OS supports it.
legacy_hardware_version · reads vInfo · hwVersion
- MediumEnd-of-life Linux distribution+20
No kernel updates available. Verify VirtIO compatibility with existing kernel or plan OS upgrade.
eol_linux_distribution · reads vInfo · guestOsId, vInfo · guestOsFull
- MediumPVSCSI controller+12
Proxmox/KVM uses VirtIO. Windows: inject VirtIO drivers before migration. Linux: VirtIO usually built-in. Hyper-V unaffected.
pvscsi_controller · reads vDisk · controllerType
- LowNVMe controller+10
Virtual NVMe implementations differ across platforms. Test boot after migration.
nvme_controller · reads vDisk · controllerType
- LowLegacy NIC adapter+5
E1000 emulated everywhere at ~1Gbps max. Consider VMXNET3/VirtIO upgrade.
legacy_nic_adapter · reads vNetwork · adapterType
- LowEFI firmware+5
Proxmox requires OVMF; Hyper-V requires Gen2. Configure target for UEFI.
efi_firmware · reads vInfo · firmware
- LowOlder VM hardware version+5
Lacks NVMe/vTPM. Not a blocker; consider post-migration upgrade.
older_hardware_version · reads vInfo · hwVersion · only when legacy_hardware_version has not fired
Compute
- MediumHigh vCPU count+15
Verify target per-VM CPU limit. Reconfigure NUMA topology for target socket layout.
high_vcpu_count · reads vInfo · numCpu
- MediumVery high memory+15
Verify target host has sufficient free RAM. Sensitive to NUMA placement.
very_high_memory · reads vInfo · memoryMib
- MediumCPU affinity configured+15
Core pinning is host-specific. Reconfigure on target for latency-sensitive workloads.
cpu_affinity_configured · reads vCPU · affinity
- MediumResource limits configured+10
Limits/reservations don't auto-transfer. Recreate on target (cgroups / Hyper-V metering).
resource_limits_configured · reads vCPU · limit
- MediumResource reservations configured+10
Limits/reservations don't auto-transfer. Recreate on target (cgroups / Hyper-V metering).
resource_reservations_configured · reads vCPU · reservation
- LowElevated vCPU count+5
Verify NUMA alignment on target host.
elevated_vcpu_count · reads vInfo · numCpu · only when high_vcpu_count has not fired
- LowHigh memory+5
Verify target host capacity.
high_memory · reads vInfo · memoryMib · only when very_high_memory has not fired
Configuration
- HighSnapshot chain deeper than five+40
N snapshot(s) must be consolidated.… Critical: deep chain risks consolidation failure and data corruption.
snapshot_chain_critical · reads vSnapshot · snapName
- HighVM encryption enabled+40
Encrypted VMDKs unreadable without vCenter KMS. Decrypt before migration; apply target-native encryption post.
vm_encryption_enabled · reads vInfo · encrypted
- HighFault Tolerance enabled+35
Disable FT before migration (secondary VM destroyed). Reconfigure HA on target.
fault_tolerance_enabled · reads vInfo · ftState
- HighSnapshot chain of four to five+25
N snapshot(s) must be consolidated.… Deep chain — consolidate during a low-I/O maintenance window.
snapshot_chain_deep · reads vSnapshot · snapName · only when snapshot_chain_critical has not fired
- MediumSnapshot chain of two to three+15
N snapshot(s) must be consolidated.… Consolidate before migration.
snapshot_chain_small · reads vSnapshot · snapName · only when snapshot_chain_critical / snapshot_chain_deep has not fired
- MediumVMware Tools not installed+15
IP detection unreliable. Install target guest agent post-migration (qemu-guest-agent / Hyper-V IC).
vmware_tools_not_installed · reads vInfo · toolsStatus, vInfo · powerState
- LowSingle snapshot present+5
N snapshot(s) must be consolidated.… Single snapshot — consolidate before migration.
snapshot_chain_single · reads vSnapshot · snapName · only when snapshot_chain_critical / snapshot_chain_deep / snapshot_chain_small has not fired
- LowChange Block Tracking disabled+5
No incremental sync available. Enable via Edit Settings > ctkEnabled = true.
cbt_disabled · reads vInfo · cbtEnabled
- LowCD-ROM connected+2
Disconnect CD-ROM before migration. Edit Settings > CD/DVD > uncheck Connected.
cdrom_connected · reads vCD · connected
- LowVMware Tools outdated+0
Outdated but functional. Does not affect migration.
vmware_tools_outdated · reads vInfo · toolsStatus, vInfo · powerState · only when vmware_tools_not_installed has not fired
- LowHot-add enabled+0
Support varies by target. Verify availability post-migration.
hot_add_enabled · reads vCPU · hotAdd
Network
- HighNSX-managed network+35
Microsegmentation, DFW rules, security groups must be manually recreated. Document all NSX policies.
nsx_opaque_network · reads vNetwork · switchName
- LowDistributed switch network+5
VLAN and traffic shaping policies must be recreated on target.
dvswitch_network · reads vNetwork · switchName
- LowDisconnected NICs+0
Configured but disconnected. Verify if needed post-migration.
disconnected_nics · reads vNetwork · connected, vInfo · powerState
Operations
- LowVM is powered off+0
Cold migration is simpler. Verify VM is still needed before including in migration scope.
vm_powered_off · reads vInfo · powerState
Written, but waiting on a column we have not verified
The rule below is implemented and tested. What is not confirmed is whether RVTools actually exports the column it reads. Rather than assume it does and publish a check that silently never fires, it is counted as a gap until a real export proves otherwise. It will start running on its own the moment the column appears.
- MediumEFI with Secure Bootefi_secure_boot
vInfo carries Firmware, but whether RVTools exports a Secure Boot column has not been confirmed against a real export. The rule is written and will run the moment the column appears; until then it is counted as a gap rather than assumed to work. efi_firmware still fires on the same VMs at lower severity.
Checks an RVTools export cannot answer
These are real migration risks. RVTools does not export the data they need, so no tool reading an RVTools file can detect them — including this one. They are published here because a check that cannot run is not the same as a check that passed.
- BlockervGPU / GPU passthroughvgpu_or_gpu_passthrough
RVTools does not export PCI passthrough or vGPU profile data on any sheet. A GPU-attached VM is a genuine migration blocker and this export cannot see one, so the gap is stated rather than the check silently omitted.
- MediumDevice passthroughdevice_passthrough
RVTools has no USB, serial or parallel port sheet, so host-attached devices are not visible in an export.
- LowCustom NUMA topologycustom_numa_topology
RVTools exports no NUMA node count. vCPU.Sockets is a different thing and using it would be inventing a rule that is not in the specification.
- LowDRS rules presentdrs_rules_present
RVTools does not expose per-VM DRS rule membership. Cluster-level DRS settings are in vCluster, but which VMs an affinity rule names is not exported.
Written up in full
Long-form pieces on the failure modes that cost the most time when they are missed. Every check above runs whether or not it has one of these.