Nested Virtualization: Running VMware ESX/ESXi in a VM with Performance Optimization Guide


1 views

While technically possible to install VMware ESX or ESXi within VMware Workstation/Server, you'll encounter two showstopper issues:

  • Severe Performance Degradation: Benchmark tests show 80-90% slower disk I/O compared to bare-metal installations
  • VM Power-On Restrictions: The hypervisor intentionally blocks nested VM execution with error code vmx-10

VMware's nested virtualization implementation differs from KVM/Windows Hyper-V:

// ESXi's VMX process enforces these checks:
if (isNestedEnvironment()) {
    if (vmConfig.virtualHW.version >= 9) {
        throw new VMPowerOnException("Nested virtualization not supported");
    }
    throttleCPU(0.3); // Artificial performance cap
}

Option 1: Bare-Metal KVM as Base Layer

Configure KVM with CPU passthrough for better performance:

# /etc/modprobe.d/kvm_intel.conf
options kvm_intel nested=1
options kvm_intel enable_apicv=1
options kvm_intel ept=1

Option 2: VMware's Hidden Configuration Tweaks

# Add to .vmx file of the ESXi VM
vhv.enable = "TRUE"
hypervisor.cpuid.v0 = "FALSE"
monitor_control.restrict_backdoor = "TRUE"
Platform vCPU Performance Disk IOPS
Bare Metal ESXi 100% 15,000
Workstation Nested 12% 800
KVM Nested 65% 9,200

VMware officially states in KB 2009916 that nested ESXi is only supported for:

  • Training environments
  • Non-production lab testing
  • Proof-of-concept development

For production workloads, always use physical hardware with VT-x/AMD-V enabled in BIOS.


While it's technically possible to install ESXi within VMware Workstation or other hypervisors, you'll immediately hit two fundamental roadblocks:

  • Performance degradation: The nested hypervisor runs at about 10-15% of normal speed due to virtualization overhead
  • VM execution blocking: ESXi detects it's running in a VM and prevents guest VMs from starting

VMware officially doesn't support running ESXi as a guest OS, but developers can enable nested virtualization through these techniques:

# For VMware Workstation/Player:
monitor_control.restrict_backdoor = "TRUE"
hypervisor.cpuid.v0 = "FALSE"
vhv.enable = "TRUE"

Your host machine must meet these prerequisites:

Component Requirement
CPU Intel VT-x/EPT or AMD-V/RVI
BIOS Virtualization enabled
RAM Minimum 16GB (32GB recommended)

For developers needing nested ESXi for testing:

  1. Create a new VM with "Other 64-bit" as guest OS type
  2. Add these parameters to the .vmx file:
featMask.vm.hv.capable = "Min:1"
vhv.enable = "TRUE"
hypervisor.cpuid.v0 = "FALSE"

If performance is critical, consider:

  • VMware Cloud on AWS: Official hosted ESXi solution
  • Docker containers: For lightweight testing environments
  • Physical test lab: Using Intel NUC or similar small form factor PCs

After successful installation:

# Disable unnecessary services in nested ESXi:
esxcli system maintenanceMode set --enable true
esxcli system maintenanceMode set --enable false

Remember that nested virtualization should only be used for development/testing purposes, not production workloads.