Modern datacenters and beyond

VMware vSphere / ESXi -- Current Baseline

Why This Matters

Understanding what you are migrating from is as important as understanding what you are migrating to. Every feature comparison, every migration risk assessment, and every PoC acceptance criterion implicitly references the VMware baseline. If the team cannot articulate exactly how DRS decides where to place a VM, or how vMotion iterates memory pages, or why VMFS uses on-disk locking, then evaluating whether OVE, Azure Local, or Swisscom ESC can replicate those behaviors becomes guesswork rather than engineering.

This document captures the VMware vSphere / ESXi platform at the depth required to make precise comparisons. It covers architecture, execution model, resource management, high availability, live migration, storage, networking, licensing, and operational tooling. The final section -- "What to Preserve vs. What to Leave Behind" -- is the most important: it forces the team to distinguish between capabilities that are genuinely load-bearing for the business and capabilities that are simply muscle memory from years of VMware operation.

The current estate runs 5,000+ VMs across a production VMware environment. Everything described here is the implicit contract that any replacement platform must honor, renegotiate, or explicitly retire.


Concepts

1. ESXi Architecture

Overview

VMware ESXi is a Type-1 bare-metal hypervisor built on a proprietary microkernel called the VMkernel. Unlike KVM (which is a Linux kernel module) or Hyper-V (which runs a thin hypervisor beneath a "root partition" running Windows), ESXi's VMkernel is a purpose-built, monolithic kernel that directly manages CPU scheduling, memory management, storage I/O, and network I/O. There is no general-purpose operating system underneath.

  ESXi Host Architecture

  +---------------------------------------------------------------+
  |  Management Plane                                             |
  |  +------------------+  +------------------+  +-------------+  |
  |  |  hostd (C++)     |  |  vpxa (vCenter   |  |  DCUI       |  |
  |  |  (local mgmt     |  |   agent)         |  |  (Direct    |  |
  |  |   API daemon)    |  |                  |  |   Console)  |  |
  |  +------------------+  +------------------+  +-------------+  |
  |  +------------------+  +------------------+  +-------------+  |
  |  |  CIM Agents      |  |  sfcbd (CIM      |  |  SNMP       |  |
  |  |  (hardware       |  |   broker)        |  |  Agent      |  |
  |  |   monitoring)    |  |                  |  |             |  |
  |  +------------------+  +------------------+  +-------------+  |
  |                                                               |
  |  All above run as "Userworlds" -- ESXi user-space processes   |
  +---------------------------------------------------------------+
  |  VM Execution Layer                                           |
  |  +-------------+  +-------------+  +-------------+            |
  |  | VMX Process |  | VMX Process |  | VMX Process |   ...      |
  |  | (VM 1)      |  | (VM 2)      |  | (VM 3)      |            |
  |  |  +-------+  |  |  +-------+  |  |  +-------+  |            |
  |  |  | VMM   |  |  |  | VMM   |  |  |  | VMM   |  |            |
  |  |  +-------+  |  |  +-------+  |  |  +-------+  |            |
  |  +-------------+  +-------------+  +-------------+            |
  +---------------------------------------------------------------+
  |  VMkernel                                                     |
  |  +----------+ +--------+ +--------+ +--------+ +-----------+  |
  |  | CPU      | | Memory | | VMFS / | | vSwitch| | VMkernel  |  |
  |  | Scheduler| | Mgr    | | NFS    | | Net    | | TCP/IP    |  |
  |  +----------+ +--------+ +--------+ +--------+ +-----------+  |
  |  +----------------------------------------------------------+ |
  |  |  Device Drivers (native .vib drivers)                    | |
  |  +----------------------------------------------------------+ |
  +---------------------------------------------------------------+
  |  Hardware: CPU (VT-x/AMD-V), RAM, NICs, HBAs, Local Disk     |
  +---------------------------------------------------------------+

VMkernel

The VMkernel is not Linux. It is a custom, preemptive, multithreaded kernel optimized exclusively for running virtual machines. Key characteristics:

The VMkernel boots from a small boot bank (a USB device, SD card, or local disk partition) containing a compressed image. The boot bank holds two copies of the ESXi image for rollback capability. The VMkernel loads entirely into RAM at boot time -- the boot device is not accessed during normal operation.

Userworlds

Userworlds are ESXi's equivalent of user-space processes. They run in unprivileged mode (Ring 3) and use VMkernel system calls for I/O and resource access. Key userworlds include:

Userworld Purpose
hostd The primary management daemon. Exposes the SOAP/REST API that vCenter and direct clients use. Manages VM lifecycle, resource allocation, and configuration. Written in C++.
vpxa The vCenter agent. Receives instructions from vCenter Server and translates them into local hostd calls. If vCenter is unreachable, vpxa queues operations and replays them when connectivity returns.
rhttpproxy Reverse HTTP proxy. Routes incoming HTTPS connections to the appropriate backend service (hostd, vpxa, MOB, etc.) based on URL path. Listens on port 443.
sfcbd The Small Footprint CIM Broker Daemon. Implements the CIM/WBEM interface for hardware monitoring. Third-party CIM providers (from Dell, HPE, Lenovo) register with sfcbd to expose hardware health data (temperatures, fan speeds, DIMM status, disk health).
vobd VMware Observability Daemon. Aggregates and correlates events from various subsystems.
vmware-usbarbitrator Manages USB passthrough to VMs.

DCUI (Direct Console User Interface)

The DCUI is the text-mode console accessible via the physical server's keyboard/monitor or via IPMI/iLO/iDRAC remote console. It provides minimal configuration capabilities:

The DCUI is intentionally limited. It exists for emergency recovery and initial bootstrapping, not day-to-day administration. In a locked-down production environment, SSH access to the ESXi shell is typically disabled, and all management flows through vCenter.

CIM Agents

The Common Information Model (CIM) layer is how ESXi exposes hardware health information. Server vendors (Dell, HPE, Lenovo, Cisco) ship CIM provider VIBs (vSphere Installation Bundles) that register with sfcbd. These providers talk to the server's BMC (Baseboard Management Controller) and expose standardized CIM classes for:

vCenter consumes this data to show hardware health in the UI and trigger alarms. Without the correct vendor CIM VIBs installed, the ESXi host reports "Unknown" for hardware health. This is a common operational gap -- during upgrades, teams forget to reinstall the vendor-specific VIBs.


2. vCenter Server Architecture

Overview

vCenter Server is the centralized management plane for a vSphere environment. Since vSphere 6.7, the only supported deployment is the vCenter Server Appliance (VCSA) -- a pre-built Photon OS Linux VM running all vCenter services. The Windows-based vCenter installation was deprecated and removed.

  vCenter Server Appliance (VCSA) Internal Architecture

  +---------------------------------------------------------------+
  |  VCSA (Photon OS Linux VM)                                    |
  |                                                               |
  |  +----------------------------------------------------------+ |
  |  |  vSphere Client (HTML5 UI)                               | |
  |  |  Served by envoy reverse proxy on port 443               | |
  |  +----------------------------------------------------------+ |
  |                                                               |
  |  +------------------+  +------------------+  +-------------+  |
  |  |  vpxd            |  |  SSO / STS       |  |  Inventory  |  |
  |  |  (vCenter core   |  |  (VMware         |  |  Service    |  |
  |  |   service,       |  |   Identity       |  |             |  |
  |  |   written in     |  |   Provider)      |  |             |  |
  |  |   Java + C++)    |  |                  |  |             |  |
  |  +------------------+  +------------------+  +-------------+  |
  |                                                               |
  |  +------------------+  +------------------+  +-------------+  |
  |  |  PostgreSQL      |  |  vPostgres       |  |  Content    |  |
  |  |  (embedded DB    |  |  (VMware-        |  |  Library    |  |
  |  |   for vpxd,      |  |   modified       |  |  Service    |  |
  |  |   SSO, etc.)     |  |   PostgreSQL)    |  |             |  |
  |  +------------------+  +------------------+  +-------------+  |
  |                                                               |
  |  +------------------+  +------------------+  +-------------+  |
  |  |  VAMI            |  |  Certificate     |  |  Lookup     |  |
  |  |  (Appliance      |  |  Authority       |  |  Service    |  |
  |  |   Management)    |  |  (VMCA)          |  |             |  |
  |  +------------------+  +------------------+  +-------------+  |
  +---------------------------------------------------------------+

Key Components

vpxd is the core vCenter daemon. It maintains the inventory of all ESXi hosts, VMs, clusters, networks, and datastores. It communicates with each ESXi host via the vpxa agent. vpxd makes all cluster-level decisions: DRS placement, HA failover, storage DRS. The vpxd process stores its state in the embedded PostgreSQL database (historically called the "VCDB").

SSO (Single Sign-On) / STS (Security Token Service) handles authentication. The Platform Services Controller (PSC) was a separate component in vSphere 6.x that housed SSO, the Certificate Authority (VMCA), and the Lookup Service. Starting with vSphere 7.0, the PSC is fully embedded in the VCSA -- there is no external PSC deployment option. SSO supports:

VMCA (VMware Certificate Authority) issues certificates for ESXi hosts, vCenter services, and solution users. By default, VMCA is the root CA. Enterprise deployments typically configure VMCA as a subordinate CA under the organization's PKI root, or replace all certificates with enterprise-issued certs. Certificate management is one of the most operationally painful aspects of vSphere -- expired VMCA certificates can take down the entire management plane.

Inventory Hierarchy

  vCenter Inventory Object Model

  vCenter Server
  |
  +-- Datacenter
  |   |
  |   +-- Cluster (group of ESXi hosts with shared DRS/HA policies)
  |   |   |
  |   |   +-- ESXi Host 1
  |   |   |   +-- VM-A
  |   |   |   +-- VM-B
  |   |   |
  |   |   +-- ESXi Host 2
  |   |   |   +-- VM-C
  |   |   |
  |   |   +-- Resource Pool (optional nesting)
  |   |       +-- RP-Production
  |   |       |   +-- VM-D
  |   |       +-- RP-Development
  |   |           +-- VM-E
  |   |
  |   +-- Standalone ESXi Host (not in a cluster -- no DRS/HA)
  |   |
  |   +-- Datastore Cluster (optional, for Storage DRS)
  |   |   +-- Datastore-1 (VMFS)
  |   |   +-- Datastore-2 (VMFS)
  |   |
  |   +-- VM Folder (organizational hierarchy)
  |   |   +-- Folder: Finance
  |   |   |   +-- VM-F
  |   |   +-- Folder: HR
  |   |       +-- VM-G
  |   |
  |   +-- Network Folder
  |       +-- Distributed vSwitch
  |       +-- Port Groups
  |
  +-- Datacenter 2
      +-- ...

Key points about this hierarchy:

vCenter Availability

vCenter itself is a single VM. If it fails, existing VMs continue running (ESXi hosts operate autonomously), but no management operations are possible -- no vMotion, no DRS rebalancing, no VM power-on to a new host. Options for vCenter availability:

The fact that the management plane is a single VM is a significant architectural difference from Kubernetes-based platforms (OVE, Azure Local) where the control plane is typically a replicated set of processes across multiple nodes.


3. VM Execution Model on ESXi

The VMX Process

Every powered-on VM on ESXi is represented by a VMX process -- a userworld that acts as the VM's "container" in the ESXi process table. The VMX process handles:

  VM Execution Model on ESXi

  +-----------------------------------------------------------+
  |  Guest OS (Windows, Linux, etc.)                          |
  |  Running in VMX non-root mode (Ring 0/3 within VM)        |
  +-----------------------------------------------------------+
        |           |              |              |
        | vCPU      | Virtual      | Virtual      | Virtual
        | execution | Disk I/O     | NIC I/O      | Device
        |           |              |              | I/O
        v           v              v              v
  +-----------------------------------------------------------+
  |  VMM (Virtual Machine Monitor)                            |
  |  One per VM. Runs in VMkernel context (VMX root mode).    |
  |  Handles VM exits, EPT management, interrupt injection.   |
  +-----------------------------------------------------------+
        |                          |              |
        | CPU world               | I/O world     | MKS world
        | scheduling              | scheduling    | (console)
        v                          v              v
  +-----------------------------------------------------------+
  |  VMX Process (Userworld)                                  |
  |  PID visible in esxtop. One per powered-on VM.            |
  |  Handles device emulation, snapshot ops, console.         |
  +-----------------------------------------------------------+
        |
        v
  +-----------------------------------------------------------+
  |  VMkernel                                                 |
  |  CPU scheduler, memory manager, storage stack, net stack  |
  +-----------------------------------------------------------+
        |
        v
  +-----------------------------------------------------------+
  |  Physical Hardware                                        |
  +-----------------------------------------------------------+

The VMM (Virtual Machine Monitor)

The VMM is a per-VM kernel-mode component that runs within VMkernel context. It is the code that actually handles VM exits. When a guest vCPU executes a trapped instruction:

  1. The CPU triggers a VM exit and saves guest state to the VMCS.
  2. Control returns to the VMkernel CPU scheduler.
  3. The VMkernel dispatches to the VMM for that specific VM.
  4. The VMM inspects the exit reason, emulates the instruction or services the event.
  5. The VMM prepares modified guest state and issues VMRESUME.

The VMM also manages:

vmknic (VMkernel Network Interfaces)

VMkernel NICs (vmk0, vmk1, etc.) are the VMkernel's own IP endpoints. They are not guest-visible -- they belong to the hypervisor itself. Each vmknic is associated with a port group on a vSwitch or Distributed vSwitch and is tagged for a specific traffic type:

vmknic Typical Use
vmk0 Management traffic (vCenter <-> host communication, SSH, web UI)
vmk1 vMotion traffic
vmk2 iSCSI / NFS storage traffic
vmk3 vSAN traffic
vmk4 Fault Tolerance logging traffic

The VMkernel TCP/IP stack can be split into multiple named stacks (default stack, vMotion stack, provisioning stack) to provide traffic isolation at the network stack level, not just at the vmknic/VLAN level.


4. Resource Management

DRS (Distributed Resource Scheduler)

DRS is the cluster-level workload balancer. It runs inside vpxd (on vCenter) and makes two types of decisions:

  1. Initial placement: When a VM is powered on, DRS selects the optimal host in the cluster based on available CPU and memory resources, affinity/anti-affinity rules, and host compatibility.
  2. Load balancing (rebalancing): Every 5 minutes (configurable), DRS evaluates the resource utilization imbalance across hosts and generates a set of vMotion recommendations to reduce the imbalance.
DRS Algorithm Internals

DRS calculates a cluster imbalance metric using the standard deviation of host resource utilization. For each host, it computes a "load" score based on:

DRS then generates a set of candidate VM migrations and evaluates each for its migration cost (vMotion overhead, memory size, current activity level) vs. benefit (reduction in cluster imbalance). Migrations are only recommended when the benefit exceeds the cost by a threshold determined by the DRS aggressiveness setting:

DRS Level Behavior
Level 1 (Conservative) Only applies mandatory recommendations (affinity rules, host entering maintenance mode).
Level 2 + Recommendations with significant cluster imbalance improvement.
Level 3 (Default) + Recommendations with moderate improvement. Good balance of stability and efficiency.
Level 4 + Recommendations with incremental improvement. More frequent migrations.
Level 5 (Aggressive) + Even very small improvements justify migration. Can cause "VM thrashing" in volatile workloads.

DRS operates in two modes:

DRS and Affinity Rules

DRS honors three types of rules:

Resource Pools

Resource pools are hierarchical containers within a cluster that partition CPU and memory resources among groups of VMs. They are the primary mechanism for multi-tenant resource governance in vSphere.

  Resource Pool Hierarchy

  Cluster (total: 256 GHz CPU, 2 TB RAM)
  |
  +-- RP: Production (Reservation: 180 GHz, 1.5 TB)
  |   |
  |   +-- RP: Tier-1 (Reservation: 120 GHz, 1 TB)
  |   |   +-- DB Servers
  |   |   +-- Trading Systems
  |   |
  |   +-- RP: Tier-2 (Reservation: 60 GHz, 500 GB)
  |       +-- Web Servers
  |       +-- Batch Jobs
  |
  +-- RP: Development (Limit: 64 GHz, 512 GB, no reservation)
  |   +-- Developer VMs
  |
  +-- RP: Infrastructure (Reservation: 12 GHz, 48 GB)
      +-- vCenter, AD, DNS, Monitoring

Shares, Reservations, and Limits

These three controls operate on both CPU and memory at the VM or resource pool level:

Control Meaning Behavior
Reservation Guaranteed minimum allocation. The hypervisor will not overcommit this portion. Admission control ensures the host has enough unreserved capacity before powering on a VM with a reservation. If 10 VMs each reserve 4 GB, the host must have 40 GB of physical RAM available exclusively for those VMs.
Limit Hard ceiling. The VM cannot consume more than this, even if the host has idle resources. Limits are useful for preventing a runaway process from consuming host resources, but they waste available capacity. A VM hitting its limit will be throttled even on an otherwise idle host.
Shares Relative priority during contention. Only matters when demand exceeds supply. If two VMs both want 8 GHz of CPU but only 10 GHz is available, a VM with 2000 shares gets twice as much as a VM with 1000 shares (6.67 GHz vs. 3.33 GHz). When there is no contention, shares have no effect.

A common misconfiguration is using limits when shares would be appropriate, or failing to set reservations for latency-sensitive workloads. The result is either wasted capacity (limits on idle hosts) or unpredictable performance under load (no reservations for critical VMs).


5. HA and Fault Tolerance

vSphere HA (High Availability)

vSphere HA provides automatic VM restart when an ESXi host fails. It does not prevent downtime -- it detects the failure and restarts the affected VMs on surviving hosts. Typical recovery time is 1-5 minutes depending on VM boot time.

HA Architecture

When HA is enabled on a cluster, all hosts participate in an HA master election. One host becomes the HA master; the rest are HA subordinates.

  HA Failure Detection Decision Matrix

                           Datastore       Datastore
                           Heartbeat OK    Heartbeat MISSING
  +-------------------+------------------+-------------------+
  | Network Heartbeat | Host is alive,   | Host has FAILED.  |
  | MISSING           | network isolated | Restart VMs on    |
  |                   | (network         | surviving hosts.  |
  |                   | partition).      |                   |
  |                   | Apply isolation  |                   |
  |                   | response policy. |                   |
  +-------------------+------------------+-------------------+
  | Network Heartbeat | Normal           | Storage issue,    |
  | OK                | operation.       | not host failure. |
  |                   |                  | Investigate.      |
  +-------------------+------------------+-------------------+

Isolation response determines what happens to VMs on a host that is network-isolated but still running:

The choice depends on whether the VMs can tolerate being unreachable vs. whether split-brain (the same VM running on two hosts) is a worse outcome.

Admission Control

Admission control prevents the cluster from becoming so overloaded that there is not enough spare capacity to restart VMs after a host failure. It answers: "If we lose N hosts, can the surviving hosts run all the VMs that need to be restarted?"

Admission control policies:

Policy Description
Cluster resource percentage Reserve X% of total cluster CPU and memory for HA failover capacity. Default: 25% (sized for one host failure in a 4-host cluster).
Dedicated failover hosts Designate specific hosts as standby. VMs do not run on these hosts during normal operation.
Slot policy Calculate the largest VM "slot" (largest reservation among all VMs), then ensure enough slots exist on surviving hosts. Can be wasteful if one VM has a very large reservation.

Admission control can block VM power-on operations. If powering on a VM would consume failover capacity, vCenter will refuse the operation. This is correct behavior but frustrates operators who do not understand the math. A common (dangerous) reaction is to disable admission control rather than right-sizing reservations.

VM Restart Priority

When HA restarts VMs, it does so in priority order:

  1. Priority 1 (Highest): Infrastructure VMs (vCenter, AD, DNS)
  2. Priority 2: Critical business VMs
  3. Priority 3 (Default): Standard VMs
  4. Priority 4 (Lowest): Development/test VMs

VMs with higher priority are restarted first. If the surviving hosts do not have capacity for all VMs, lower-priority VMs may remain powered off.

vSphere Fault Tolerance (FT)

FT provides zero-downtime protection for a single VM by maintaining a live, lock-step secondary copy on another host. If the primary host fails, the secondary instantly takes over with no VM reboot and no TCP connection loss.

FT Internals

FT uses VMware vLockstep technology:

  1. The primary VM executes on Host A. Every non-deterministic event (interrupts, I/O completions, timer ticks, RDTSC results) is recorded.
  2. These events are streamed over a dedicated FT logging network (vmknic dedicated to FT traffic) to Host B, where a secondary VM replays them in lockstep.
  3. The secondary VM's output (disk writes, network packets) is suppressed -- only the primary's output reaches the external world.
  4. If Host A fails, the secondary on Host B is already at exactly the same execution state. It "goes live" by unsuppressing its output. External clients see a brief pause (typically <1 second) but no TCP connection reset.

Constraints:

Because of these constraints, FT is used sparingly -- typically only for a handful of VMs where even 60 seconds of downtime is unacceptable (e.g., a session broker, a quorum witness, a real-time monitoring gateway).


6. vMotion Internals

vMotion is live migration of a running VM from one ESXi host to another with near-zero downtime. It is the single most important operational capability in a VMware environment -- it enables maintenance windows, load balancing (DRS), and failure avoidance.

vMotion Process Flow

  vMotion Pre-Copy Memory Migration

  Source Host                                  Destination Host
  ===========                                  ================

  Phase 0: Pre-checks
  - Verify CPU compatibility (EVC baseline)
  - Verify network reachability (vMotion vmknic)
  - Verify shared storage access
  - Reserve resources on destination

  Phase 1: Full memory copy (Background)
  +----------------------------------+
  | Copy all VM memory pages ------> |  Copy all pages
  | VM continues running on source   |  to destination
  | ~seconds to minutes depending    |  (network bandwidth
  |  on VM memory size               |   limited)
  +----------------------------------+

  Phase 2: Iterative pre-copy (Background, multiple rounds)
  +----------------------------------+
  | Round 1: Copy dirty pages -----> |  Pages modified during
  | VM continues running on source   |  Phase 1 are re-sent
  +----------------------------------+
  +----------------------------------+
  | Round 2: Copy dirty pages -----> |  Pages modified during
  | (fewer pages each round)         |  Round 1 are re-sent
  +----------------------------------+
  +----------------------------------+
  | Round N: Dirty set small enough  |  Convergence: the
  | for final switchover             |  working set delta is
  +----------------------------------+  now tiny

  Phase 3: Stun-and-switch (Brief VM pause)
  +----------------------------------+
  | STUN VM on source                |
  | Copy final dirty pages --------> |  Last few MB/KB
  | Transfer device state ---------->|  (virtual device
  | Update network (RARP) --------->|   registers, VMCS)
  | UNSTUN VM on destination         |
  +----------------------------------+
  |                                  |  VM now executes here
  |  VM no longer active on source   |
  +----------------------------------+

  Typical stun time: 10-200ms
  Worst case for very active VMs: up to 1 second

Pre-Copy Memory Iteration -- Why It Works

The key insight is that most VMs have a relatively small "hot" working set -- the pages being actively modified at any point in time. Even a VM with 256 GB of allocated RAM might only be dirtying 50-100 MB per second. The iterative pre-copy exploits this:

When pre-copy fails to converge: If the VM is dirtying memory faster than the vMotion link can transfer it (e.g., an in-memory database doing bulk inserts at >10 Gbps equivalent rate), the dirty set never shrinks. vMotion will either:

vMotion Network Requirements

Enhanced vMotion Compatibility (EVC)

vMotion requires that the destination host's CPU is compatible with the source host's CPU -- the VM must not encounter instructions on the destination that were available on the source but are now missing. EVC solves this by masking CPUID features across all hosts in a cluster to a common baseline:

Storage vMotion

Storage vMotion migrates a VM's virtual disk files from one datastore to another while the VM is running. Unlike compute vMotion, it does not require shared storage -- it works by:

  1. Creating a destination disk on the target datastore.
  2. Mirroring all writes to both source and destination disks.
  3. Copying existing data from source to destination in the background.
  4. When the copy is complete, switching the VM's disk pointer to the destination and removing the source.

Storage vMotion and compute vMotion can be performed simultaneously (called cross-host, cross-datastore vMotion), enabling full VM relocation without shared storage.

Cross-vSwitch vMotion

When the source and destination hosts use different virtual switches (e.g., different Distributed vSwitch versions, or Standard vSwitch vs. Distributed vSwitch), vMotion must handle the network switchover. The VM's virtual NIC is disconnected from the source port group and connected to the equivalent port group on the destination. The VM sends a RARP (Reverse ARP) broadcast to update the physical network's MAC-to-port mapping, ensuring traffic reaches the VM at its new location.


7. ESXi Storage Stack

Architecture

The ESXi storage stack is a layered architecture that abstracts physical storage into the logical constructs that VMs consume.

  ESXi Storage Stack Layers

  +----------------------------------------------------------+
  |  VM Layer                                                |
  |  +---------------------------------------------------+   |
  |  |  Virtual Disks (.vmdk files on datastores)        |   |
  |  |  SCSI Controller: pvscsi, LSI Logic, AHCI        |   |
  |  +---------------------------------------------------+   |
  +----------------------------------------------------------+
  |  Filesystem / NFS Layer                                  |
  |  +------------------------+  +------------------------+  |
  |  |  VMFS-6                |  |  NFS Client            |  |
  |  |  (block-based          |  |  (NFS v3 or v4.1)     |  |
  |  |   clustered FS)        |  |  (file-based access)   |  |
  |  +------------------------+  +------------------------+  |
  +----------------------------------------------------------+
  |  VMkernel Storage APIs                                   |
  |  +---------------------------------------------------+   |
  |  |  VAAI (vStorage APIs for Array Integration)       |   |
  |  |  Offloads: full copy, block zeroing, ATS lock     |   |
  |  +---------------------------------------------------+   |
  +----------------------------------------------------------+
  |  Pluggable Storage Architecture (PSA)                    |
  |  +---------------------------------------------------+   |
  |  |  NMP (Native Multipathing Plugin)                 |   |
  |  |  +---------------------------------------------+ |   |
  |  |  |  SATP (Storage Array Type Plugin)            | |   |
  |  |  |  Identifies array type, handles failover     | |   |
  |  |  |  Examples: VMW_SATP_ALUA, VMW_SATP_DEFAULT   | |   |
  |  |  +---------------------------------------------+ |   |
  |  |  +---------------------------------------------+ |   |
  |  |  |  PSP (Path Selection Plugin)                 | |   |
  |  |  |  Chooses active path for I/O                 | |   |
  |  |  |  Examples: VMW_PSP_RR (Round Robin),         | |   |
  |  |  |           VMW_PSP_FIXED, VMW_PSP_MRU         | |   |
  |  |  +---------------------------------------------+ |   |
  |  +---------------------------------------------------+   |
  +----------------------------------------------------------+
  |  Device Drivers (HBA drivers: lpfc, qla2xxx, bnx2fc)    |
  +----------------------------------------------------------+
  |  Physical: FC HBAs, iSCSI NICs, Ethernet (NFS/iSCSI)    |
  +----------------------------------------------------------+

VMFS (Virtual Machine File System)

VMFS is VMware's proprietary clustered filesystem designed for shared block storage (FC SAN, iSCSI SAN). Key characteristics:

VMDK file types:

NFS Datastores

ESXi can mount NFS exports as datastores. NFS datastores store VMDK files as regular files on the NFS server.

NFS eliminates the VMFS locking complexity but introduces NFS server availability as a dependency. NFS performance depends heavily on the NFS server's capability (NetApp, Pure Storage, etc.).

PSA, NMP, SATP, and PSP

The Pluggable Storage Architecture (PSA) is the framework that manages multipathing and path failover for block storage.

NMP (Native Multipathing Plugin) is VMware's built-in implementation of PSA. It uses two sub-plugins:

SATP (Storage Array Type Plugin) identifies the storage array behind a LUN and determines how to handle path failover. ESXi ships with SATPs for all major arrays:

PSP (Path Selection Plugin) determines which available path to use for each I/O operation:

Third-party multipathing plugins (Dell EMC PowerPath/VE, Veritas DMP) can replace NMP entirely, providing array-specific optimizations.

VAAI (vStorage APIs for Array Integration) offloads certain storage operations from ESXi to the array hardware:


8. ESXi Networking Stack

Standard vSwitch

A standard vSwitch is a software Layer 2 switch local to a single ESXi host. It connects:

  Standard vSwitch Architecture

  +------------------------------------------------------------------+
  |  ESXi Host                                                       |
  |                                                                  |
  |  VMs:  [VM-A]   [VM-B]   [VM-C]     VMkernel: [vmk0]  [vmk1]   |
  |          |         |        |                    |        |      |
  |          |  (Port Group:    |        (Port Group: Mgmt)  (PG:   |
  |          |   "Production")  |                            vMotion)|
  |          |         |        |                    |        |      |
  |  +-------+----+----+-------+--------------------+--------+---+  |
  |  |                                                           |  |
  |  |              vSwitch0 (Standard vSwitch)                  |  |
  |  |                                                           |  |
  |  +--------+---------+---------+------------------------------+  |
  |           |         |         |                                  |
  |        [vmnic0]  [vmnic1]  [vmnic2]   (Physical uplinks)        |
  +-----------|---------|---------|----------------------------------+
              |         |         |
       Physical Network (ToR switches)

Standard vSwitch configuration is per-host. Every host must be configured identically if VMs are to vMotion between them. This is a major operational burden at scale -- with 50+ hosts, ensuring consistent standard vSwitch configuration across all hosts is error-prone.

Distributed vSwitch (VDS / dvSwitch)

A Distributed vSwitch is centrally managed from vCenter and spans all hosts in a datacenter (or a subset). Configuration is defined once at the VDS level and pushed to all member hosts automatically.

  Distributed vSwitch Architecture

  +-------------------------------------------------------+
  |  vCenter (VDS Configuration Authority)                 |
  |  Defines: Port groups, VLAN policies, teaming,        |
  |           traffic shaping, security policies           |
  +---+-------------------+-------------------+------------+
      |                   |                   |
  +---v---+           +---v---+           +---v---+
  | Host 1|           | Host 2|           | Host 3|
  | Proxy |           | Proxy |           | Proxy |
  | Switch|           | Switch|           | Switch|
  |       |           |       |           |       |
  | vmnic0|           | vmnic0|           | vmnic0|
  | vmnic1|           | vmnic1|           | vmnic1|
  +-------+           +-------+           +-------+

Each host runs a proxy switch -- the local data-plane instantiation of the VDS. The proxy switch does the actual packet forwarding. vCenter only manages the control plane (configuration). If vCenter fails, the proxy switches continue operating with their last-known configuration.

VDS features beyond standard vSwitch:

Port Groups

Port groups define the network policy for connected endpoints:

NSX and Overlay Networking

VMware NSX (now NSX-T / NSX 4.x) extends the networking stack with:

NSX is a separate licensed product with significant additional cost. If the current environment uses NSX, this creates additional migration complexity because NSX policies, distributed firewall rules, and overlay networks must be replicated or replaced on the target platform.


9. Licensing Model Post-Broadcom

The Broadcom Shift (2024)

Broadcom's acquisition of VMware (completed November 2023) fundamentally changed the licensing model:

Before Broadcom:

After Broadcom:

Cost Impact Analysis

For a financial enterprise running 5,000+ VMs:

Factor Impact
Per-core pricing Modern server CPUs have 32-128 cores per socket. Per-core licensing dramatically increases cost compared to per-socket. A dual-socket server with 2x 64-core CPUs goes from 2 socket licenses to 128 core licenses.
Forced bundling If you only need vSphere and do not use vSAN or NSX, you still pay for VCF or settle for VVF. If you need vSAN or NSX, you must buy VCF.
Subscription conversion Perpetual licenses had predictable total cost of ownership. Subscriptions create ongoing opex with renewal risk. Price increases at renewal are at Broadcom's discretion.
Reduced competition With fewer partners and no competitive SKUs, negotiating leverage is diminished.

This licensing change is the primary business driver for the IaaS platform evaluation. The technical capabilities of vSphere are well-understood and mature. The question is whether the cost/risk profile under Broadcom's model justifies remaining on the platform or migrating to an alternative.


10. Operational Tooling

PowerCLI

VMware PowerCLI is a PowerShell module that provides cmdlets for automating vSphere operations. It is the primary automation tool for VMware administrators.

Key capabilities:

PowerCLI connects to vCenter (or directly to an ESXi host) via the vSphere API (SOAP or REST). All operations available in the UI are available via PowerCLI.

Migration consideration: PowerCLI scripts represent significant institutional automation. Every PowerCLI script is a functional specification of an operational workflow that must be replicated on the target platform (using kubectl/oc for OVE, PowerShell + Azure modules for Azure Local, or the ESC provider's API).

ESXCLI

ESXCLI is the command-line interface available directly on the ESXi host (via SSH or ESXi Shell). It provides low-level host management:

ESXCLI is used for troubleshooting and for operations that are not exposed in vCenter, such as configuring NMP path policies, adjusting storage claim rules, or installing third-party VIBs.

MOB (Managed Object Browser)

The MOB is a web-based interface to the vSphere API object model, accessible at https://<vcenter-or-host>/mob. It exposes the raw managed objects, properties, and methods of the vSphere SDK. It is a debugging and exploration tool -- not meant for production operations, but invaluable for understanding the API structure, checking object IDs, and invoking methods manually during troubleshooting.

vRealize Suite / Aria

VMware's operations management suite was rebranded from "vRealize" to "Aria" in 2023:

Product Purpose
Aria Operations (formerly vRealize Operations / vROps) Capacity planning, performance monitoring, cost analysis, anomaly detection. Collects metrics from vCenter and provides dashboards, alerts, and right-sizing recommendations.
Aria Automation (formerly vRealize Automation / vRA) Self-service VM provisioning portal, infrastructure-as-code blueprints, approval workflows, multi-cloud management.
Aria Operations for Logs (formerly vRealize Log Insight) Centralized log aggregation and analysis for ESXi hosts, vCenter, and VMs.
Aria Operations for Networks (formerly vRealize Network Insight / vRNI) Network flow analysis, microsegmentation planning, and troubleshooting.

Migration consideration: If the environment uses Aria Operations for capacity planning and right-sizing, those reports are the best source of actual VM utilization data for migration planning. Export the data before decommissioning the VMware environment.

esxtop / resxtop

esxtop is ESXi's real-time performance monitoring tool, similar to top on Linux but for the VMkernel. It shows:

esxtop in batch mode (esxtop -b) is the standard method for collecting performance data during troubleshooting. resxtop is the remote equivalent that can be run from a management station.

Key esxtop metrics every VMware admin watches:

Metric Meaning Alarm Threshold
%RDY (CPU Ready) Time a vCPU was ready to execute but no physical core was available. >5% indicates CPU contention.
%CSTP (Co-Stop) Time a vCPU of an SMP VM was artificially halted to keep all vCPUs in sync. >3% indicates over-provisioned vCPUs.
SWCUR (Swap Current) MB of VM memory currently swapped to disk. Any value >0 in production is a problem.
MCTLCUR (Balloon Current) MB of memory reclaimed by the balloon driver. Moderate ballooning is normal; sustained high values indicate memory pressure.
KAVG (Kernel Latency) Average latency in the VMkernel storage stack (ms). >2ms indicates VMkernel queuing.
DAVG (Device Latency) Average latency at the storage device/array level (ms). >20ms for HDD, >1ms for SSD/NVMe indicates array issues.

What to Preserve vs. What to Leave Behind

This section is the most important part of this document. Not every VMware feature is worth replicating. Some features are genuinely load-bearing for the business. Others are VMware-specific constructs that should be deliberately abandoned during migration.

Must Preserve (Business-Critical Capabilities)

VMware Feature Why It Is Essential What to Demand From Replacement
Live migration (vMotion) Enables zero-downtime maintenance, hardware refresh, and load balancing. Without live migration, every host patch requires VM downtime. At 5,000+ VMs, this is non-negotiable. Equivalent live migration with <1s stun time. All candidates claim to support this (KubeVirt live migration, Hyper-V live migration, VMware-based ESC). Validate stun time in PoC with large-memory VMs.
Automatic VM restart on host failure (HA) Hosts fail. VMs must be automatically restarted on surviving hosts without manual intervention. All candidates support this natively (Kubernetes pod rescheduling for OVE, Hyper-V Failover Clustering for Azure Local, vSphere HA for ESC). Validate restart time in PoC.
Resource governance (reservations, limits, quotas) Financial workloads require guaranteed resources. Trading systems cannot be starved by batch jobs. Kubernetes resource requests/limits (OVE), Hyper-V resource controls (Azure Local), vSphere resource pools (ESC). The mechanism differs but the requirement is the same.
Affinity and anti-affinity rules Database clusters must be separated across hosts. Certain workloads must be pinned to specific hardware. Kubernetes node affinity/anti-affinity (OVE), Hyper-V placement rules (Azure Local), DRS rules (ESC).
Centralized management plane Managing 5,000+ VMs requires a single pane of glass for inventory, lifecycle, and monitoring. OpenShift Console (OVE), Azure Arc / Windows Admin Center (Azure Local), vCenter (ESC).
Role-based access control (RBAC) Different teams need different levels of access. Developers see their VMs. Infrastructure admins see everything. Security team has audit-only access. Kubernetes RBAC (OVE), Azure RBAC (Azure Local), vCenter permissions (ESC). All support integration with Active Directory.
VM snapshot for point-in-time recovery Pre-change snapshots are the safety net for patching and application upgrades. All candidates support VM snapshots. Validate that snapshot creation/deletion performance is acceptable.
Storage multipathing SAN connectivity must survive path failures and distribute I/O across paths. Linux DM-Multipath (OVE), Microsoft MPIO (Azure Local), PSA/NMP (ESC).
NUMA-aware scheduling Large VMs (databases, SAP) require local memory access for performance. KVM/libvirt NUMA pinning (OVE), Hyper-V NUMA spanning (Azure Local), VMkernel NUMA scheduling (ESC).
Network isolation (VLANs, segmentation) Regulatory requirement. Production, management, and development networks must be separated. All candidates support VLAN-based isolation. OVE additionally offers namespace-level network policies.

Nice to Have (Operationally Convenient but Not Critical)

VMware Feature Why It Is Convenient Migration Approach
DRS automatic load balancing Reduces manual intervention by automatically rebalancing VMs. OVE: descheduler (less mature, coarser). Azure Local: no direct equivalent; manual placement or scripts. ESC: native DRS. Acceptable to degrade to semi-manual balancing if migration tool handles initial placement well.
Storage DRS (SDRS) Automatically balances VM disk placement across datastores. Less critical with modern all-flash arrays and software-defined storage (Ceph, vSAN). Manual monitoring of datastore utilization is acceptable.
Fault Tolerance (FT) Zero-downtime protection for individual VMs. Used sparingly (typically <10 VMs in the environment). Replace with application-level HA (clustering, replication) rather than hypervisor-level FT.
Content Library Central repository for VM templates with automatic synchronization across sites. Replace with container image registries (OVE), Azure image management (Azure Local), or maintain templates in a file share.
Distributed vSwitch Centrally managed virtual networking across all hosts. OVE uses OVN/OVS managed by NMState. Azure Local uses SDN managed by Network Controller. ESC retains VDS. The operational model changes but the capability is preserved.
vRealize/Aria Operations Capacity planning and performance monitoring. Replace with Prometheus + Grafana (OVE), Azure Monitor (Azure Local), or the ESC provider's monitoring. Export historical data from Aria before decommissioning.
Host Profiles Template-based ESXi host configuration. Replace with Ansible/Terraform for host configuration management. This is actually an improvement over Host Profiles.

Leave Behind (VMware-Specific Lock-In)

VMware Feature Why to Abandon It What Replaces It
VMFS Proprietary clustered filesystem with operational complexity (heap exhaustion, lock contention on busy datastores). No reason to replicate. Ceph/RBD (OVE), Cluster Shared Volumes/Storage Spaces Direct (Azure Local), array-native filesystems.
VMDK format VMware-proprietary disk format. QCOW2 (OVE/KVM), VHDX (Azure Local/Hyper-V). Conversion is well-understood and automated (virt-v2v, MTV, Azure Migrate).
vSphere API / SOAP SDK Tightly coupled automation that only works with VMware. Kubernetes API (OVE), Azure Resource Manager API (Azure Local). Moving to industry-standard APIs is a strategic improvement.
PowerCLI VMware-specific automation tool. kubectl/oc + shell scripts (OVE), PowerShell + Az modules (Azure Local). Script logic is portable; only the cmdlets change.
NSX If in use: expensive overlay networking tied to VMware. OVN (OVE), Azure SDN (Azure Local), or physical network segmentation. Evaluate whether overlay networking is actually needed or was adopted because NSX was bundled.
vSphere Tags / Custom Attributes VMware-specific metadata model. Kubernetes labels/annotations (OVE), Azure tags (Azure Local). More powerful and better integrated with automation in both cases.
vCenter inventory hierarchy (folders, datacenters) Organizational construct that does not map to any other platform. Kubernetes namespaces + labels (OVE), Azure resource groups + subscriptions (Azure Local). Redesign the organizational model for the target platform rather than trying to replicate the vCenter folder tree.
VIB-based extensibility ESXi-specific plugin format for drivers and agents. Standard Linux packages/RPM (OVE), Windows drivers/agents (Azure Local). Moving to standard OS packaging is strictly better.

Key Takeaways

  1. ESXi is a custom microkernel, not Linux. The VMkernel, userworlds, VMFS, and PSA are all proprietary systems with no direct equivalents. Migration is not a "lift and shift" -- it is a platform re-architecture.

  2. vCenter is a single-VM management plane. This is an architectural weakness. Kubernetes-based platforms (OVE) distribute the control plane across multiple nodes. Azure Local uses a distributed Azure Arc management model. Both are more resilient than a single VCSA.

  3. DRS is more sophisticated than anything available on other platforms today. The proportional-share scheduler with cluster-wide imbalance optimization and multi-constraint rule evaluation is mature and well-tested. OVE's descheduler and Azure Local's placement logic are simpler. Teams accustomed to DRS "just handling it" will need to adjust expectations and supplement with manual operations or custom tooling.

  4. vMotion works because of the pre-copy algorithm and dedicated network infrastructure. Any replacement must provide equivalent live migration with acceptable stun times. The PoC must test migration of large-memory, high-change-rate VMs -- not just idle test VMs.

  5. The storage stack (VMFS + PSA + VAAI) is deeply integrated and array-aware. Replacing this means adopting a different storage philosophy: software-defined storage (Ceph for OVE, S2D for Azure Local) or continuing with traditional arrays via different multipathing stacks (Linux DM-Multipath, Microsoft MPIO).

  6. The licensing change is the forcing function. VMware's technical capabilities are not in question. The per-core subscription model, forced bundling, and reduced partner ecosystem create a cost and vendor-risk profile that justifies the enormous effort of migrating 5,000+ VMs.

  7. Institutional knowledge in PowerCLI scripts, esxtop troubleshooting, and ESXCLI procedures is not portable. The team will need to build equivalent operational muscle in the target platform's tooling. Budget for this learning curve.

  8. Not everything deserves to be replicated. VMFS, VIBs, the vSphere SOAP API, and the vCenter folder hierarchy are VMware-specific constructs. Migrating away from them is an opportunity to adopt more modern, standards-based alternatives.


Discussion Guide

These questions should be directed inward -- at your own team -- not at vendors. The answers will shape migration requirements, risk assessment, and the PoC acceptance criteria.

Current Usage Patterns

  1. How many VMs use resource reservations today? If the answer is "almost none," then the team has been relying on implicit resource availability rather than explicit governance. The replacement platform must either replicate the same implicit behavior or the team must adopt explicit resource requests.

  2. What DRS aggressiveness level is configured on each cluster, and has it ever been changed? If DRS is set to Level 3 (default) and has never been tuned, the team may not actually depend on advanced DRS behavior and can accept a simpler placement model.

  3. How many VMs are protected by Fault Tolerance (FT)? If the answer is zero or single digits, FT is not a migration requirement. Those VMs should be moved to application-level HA instead.

  4. What is the current vMotion success rate and average stun time? Pull this from vCenter events or Aria Operations. This establishes the baseline that the replacement platform must match.

  5. How many PowerCLI scripts exist, and who maintains them? Each script is a functional requirement. Inventory them, classify them (provisioning, reporting, compliance, lifecycle), and prioritize which ones must be re-implemented first on the target platform.

Storage Dependencies

  1. What storage arrays are in use, and what VAAI primitives do they support? If the migration moves to software-defined storage (Ceph, S2D), VAAI offloads are no longer relevant. If the migration retains the existing arrays, the replacement's multipathing stack must support them.

  2. Are there VMFS datastores with known heap pressure or lock contention issues? These pain points will not exist on the replacement platform (since VMFS is abandoned), but they may indicate workloads with unusually high metadata I/O that need attention.

  3. How is thin provisioning managed today? If datastores are heavily overprovisioned, the team needs a monitoring plan on the replacement platform to prevent the same problem with different storage.

Networking Dependencies

  1. Is NSX deployed? If yes, the migration scope is dramatically larger. Every NSX distributed firewall rule, logical switch, and load balancer must be replicated or replaced. If no, the migration scope is limited to VLAN-based networking, which all candidates handle.

  2. Are Distributed vSwitches in use, or standard vSwitches? If the environment uses standard vSwitches, the team has already been managing per-host network configuration manually -- the operational model on the replacement platform will feel familiar. If VDS is in use, the team expects centralized network management and should confirm the replacement offers equivalent central control.

  3. What is the current vMotion network bandwidth and MTU configuration? This directly determines whether the replacement platform's live migration will perform comparably. If vMotion runs on a shared 1 GbE management network with MTU 1500, performance expectations are low and easy to exceed. If vMotion runs on dedicated 25 GbE with jumbo frames, the replacement must match that infrastructure investment.

Operational Knowledge

  1. When was the last time the team troubleshot a performance issue using esxtop? If the answer is "weekly," the team has deep VMware troubleshooting skills that will not transfer. Budget training time for the replacement platform's equivalent tools (esxtop -> oc adm top + Prometheus for OVE, esxtop -> Performance Monitor + WAC for Azure Local).

  2. How are ESXi host patches applied today? If the answer is "vSphere Lifecycle Manager (vLCM) with image-based management," the team expects automated, cluster-aware rolling updates. The replacement must offer equivalent capabilities (OpenShift's MachineConfigOperator for OVE, Azure Update Manager for Azure Local).

  3. What CIM providers / hardware monitoring agents are installed? These are vendor-specific and will need to be replaced with the target platform's hardware monitoring approach (Redfish/IPMI polling, vendor management tools, or OS-native hardware agents).

Risk and Governance

  1. Which VMs are running unsupported guest OS versions? VMs running Windows Server 2008, RHEL 6, or other end-of-life guests may have compatibility issues on newer hypervisors. Identify them now and plan for OS upgrades or extended support arrangements.

  2. Are there VMs with physical device passthrough (GPUs, FPGAs, USB devices)? Passthrough VMs require special handling during migration. The replacement platform must support the same passthrough capabilities with compatible IOMMU configuration.

  3. What is the current RBAC model in vCenter, and who are the permission holders? Map the vCenter roles and permissions to the replacement platform's RBAC model. Identify any permissions that do not have a direct equivalent and plan for how to handle the gap.

  4. Are there external systems that integrate with the vSphere API? Backup software (Veeam, Commvault), monitoring tools (SolarWinds, Datadog), CMDB synchronization, and custom portals all integrate via the vSphere API. Each integration point is a migration dependency that must be addressed.

  5. What is the contractual situation with Broadcom? When does the current vSphere license/subscription expire? What is the renewal pricing? This sets the hard deadline for migration and the cost baseline that alternatives must beat.

  6. Does the team have experience with Kubernetes or Linux administration? If the answer is no, OVE requires the largest skill-set pivot. Azure Local requires Windows Server and Azure skills. ESC requires the least change since it remains on VMware. The team's existing skills should influence the candidate ranking.