Antique nautical chart of Delaware Bay

Tezla Group · Team learning

Virtualization

The full book on Hyper-V and VMware ESXi. Concepts, versions, downloads, design, build, deploy, maintain — everything a Tezla tech needs to design, build, deploy, and maintain client virtualization.

Shared foundations

Concepts, explained

These ideas are identical on both platforms. Learn them once — they pay rent on every job.

Type-1 vs Type-2 hypervisors

A Type-1 (bare-metal) hypervisor runs directly on the hardware and schedules guest VMs itself — no host OS in the path. A Type-2 (hosted) hypervisor runs as an application inside a conventional OS (e.g. VMware Workstation on Windows).

ESXi is a thin Type-1: a ~150 MB VMkernel boots first and owns all hardware — no general-purpose OS underneath. Hyper-V is also Type-1, but layered: the hypervisor boots first, then the management OS (the parent partition, your Windows Server install) boots as a privileged guest on top of it. Child partitions (your VMs) run alongside.

Rule of thumb: production servers always run Type-1. Type-2 is for labs, desktops, and demos.

vCPU, vRAM, and overcommitment

A vCPU is a scheduling share of physical CPU time, not a dedicated core. Start small (1–2 vCPUs) and grow — oversized VMs waste scheduler time and can slow themselves down (the “wide VM” problem).

ESXi reclaims idle memory via ballooning (a VMware Tools driver forces the guest to page out idle RAM). Hyper-V uses Dynamic Memory — VM RAM grows/shrinks between Startup and Maximum RAM based on demand.

Design rule: overcommit CPU freely (3:1–4:1 is normal); keep committed RAM at or below ~80–90% of host RAM. Never plan to depend on ballooning in steady state.

Virtual switches and VLANs

Hyper-V vSwitch (Layer-2, three types): External (binds a physical NIC; VMs reach the LAN), Internal (VMs + management OS only), Private (VM-to-VM only). Features: VLAN tagging, SR-IOV, Switch Embedded Teaming (SET), port mirroring, DHCP guard, router guard.

VMware: Standard switch (vSS) configured per host — fine for 1–2 hosts; Distributed switch (vDS) configured once in vCenter and pushed to all hosts — required for advanced features. Port groups define VLANs + policy; vmkernel adapters (vmk) are the host’s own TCP/IP endpoints, one per traffic type.

MSP pattern: one vSwitch per host on teamed NICs carrying tagged VLANs, with separate networks for Management, VM traffic, storage, and vMotion/Live Migration.

Virtual storage: VHDX, VMDK, thin vs thick

Hyper-V uses VHDX (up to 64 TB; VHD is legacy 2 TB — never use for new VMs). ESXi uses VMDK (up to 62 TB). A VM is just a set of files — that file-based nature is what makes VMs portable, clonable, and backup-friendly.

Thin provisioning starts small and grows as the guest writes (saves space, risks over-provisioning — monitor it). Thick allocates everything up front (VMware: lazy-zeroed vs eager-zeroed; Hyper-V: dynamically expanding vs fixed-size VHDX).

Beyond disks: Storage Spaces Direct / Azure Local (Microsoft’s pooled-local-disk answer to vSAN), vSAN (pools host-local SSDs), traditional SAN (iSCSI/FC) and NAS (SMB3/NFS).

Snapshots are not backups

The single most misunderstood topic. A snapshot (VMware) / checkpoint (Hyper-V) is a point-in-time differencing state — the VM keeps running on a delta disk while the original is frozen. It is a change log, not a copy. The delta grows, performance degrades, and a corrupted delta chain can destroy the VM.

A backup is an independent, restorable copy stored outside production storage, with retention and ideally off-site copies.

Why snapshots aren’t backups: same storage as the VM; they grow and merge (failed merges corrupt chains); no retention policy; VMware warns against keeping them longer than 72 hours. Hyper-V: use production checkpoints (VSS application-consistent) for Windows guests.

Clustering, HA, and live migration

Hyper-V Failover Clustering (2–64 nodes, shared storage): VMs are cluster roles. If a node dies, VMs restart on surviving nodes — that’s HA = automatic restart, with a brief outage. Live Migration moves a running VM between nodes with no perceived downtime.

vSphere HA + vMotion: vMotion = live migration (Storage vMotion moves disks live too). vSphere HA restarts VMs after host failure. DRS automatically vMotions VMs to balance load — Hyper-V has no built-in equivalent.

VMware’s DRS + vMotion ecosystem is more mature and automated; Hyper-V’s Live Migration is free with the OS license and works fine at small scale.

Resource pools

VMware resource pools partition a cluster’s CPU/RAM with shares (relative priority), reservations (guaranteed minimum), and limits (hard ceiling). Carve a cluster into Production / Test / Client-A pools so one noisy workload can’t starve the others.

Hyper-V has no direct equivalent — the closest is per-VM resource metering plus CPU/RAM weights (Set-VMProcessor / Set-VMMemory) and careful VM placement.

For an MSP, VMware resource pools are the cleanest way to guarantee a client’s SLA VMs always get their resources.

Templates and cloning

VMware: build a gold-master VM (Tools + patches + agents, not domain-joined), shut down, Convert to Template. Deploy with Clone to Virtual Machine plus Guest OS Customization Specifications (sysprep answers: unique hostname/SID/IP).

Hyper-V: no native template object — the pattern is a sysprepped reference VHDX stored in a library folder, then New-VM + copy the VHDX + unattend.xml. Script it.

Never clone a domain-joined VM or copy a VHDX without sysprep — duplicate SIDs and machine passwords will haunt you.

Hyper-V

Microsoft’s Type-1 hypervisor, shipping as a role in Windows Server. The cost winner for 1–2 host small-business clusters and Windows-heavy shops.

Versions & editions
ItemStatus (October 2026)
Current Hyper-VWindows Server 2025 Hyper-V role, VM configuration version 12.0. New Gen 2 VMs support up to 2048 vCPUs and 240 TB RAM.
PreviousWindows Server 2022 (config v11.0), 2019 (v10.0) — all supported as guests/hosts on 2025.
Hyper-V Server (free standalone)Discontinued. 2019 was the last release, supported to January 2029. No 2022 or 2025 version will ever ship.
Strategic successorAzure Local (renamed from Azure Stack HCI, Nov 2024). Current: Azure Local 24H2 (based on Server 2025). Subscription: $10/physical core/month ($20.10 with external SAN), 60-day trial; $0 with Windows Server Datacenter + Software Assurance via Azure Hybrid Benefit.
Editions with Hyper-VStandard and Datacenter (role installable on both). No separate Hyper-V SKU.

What changed in Server 2025 Hyper-V: 2048 vCPUs / 240 TB RAM per Gen 2 VM, 4 PB host RAM, GPU partitioning (GPU-P) with live migration + failover clustering, NetworkATC intent-based host networking, native ReFS deduplication/compression, NVMe-oF, Storage Replica compression in all editions, certificate-based live migration for workgroup clusters.

Official download links
ItemWhere to get it
Windows Server 2025 evalMicrosoft Evaluation Center — microsoft.com/en-us/evalcenter/download-windows-server-2025 (180-day eval, registration required). Short link: aka.ms/TryWS2025
Licensed (non-eval) ISOMicrosoft 365 admin center → Billing → Your products (VLSC successor) or Visual Studio subscriptions. Eval media converts via DISM /online /Set-Edition + product key.
Azure Local OSAzure portal → Azure Local → Get started → Download software (subscription with the resource provider registered). 60-day free trial.
Hyper-V Server 2019Microsoft Evaluation Center (archived). Support ends Jan 2029 — do not deploy for new clients.
Windows Admin CenterFree download — aka.ms/WACDownload. Gateway mode for multi-tech access.
Hyper-V Manager + PowerShellInbox: Server Manager → Add Roles/Features → “Hyper-V Management Tools”, or Install-WindowsFeature RSAT-Hyper-V-Tools.

Design: sizing a host

The method: inventory every VM (vCPUs, RAM, disk, IOPS). CPU: sum vCPUs, apply a 3:1–4:1 vCPU:pCPU ratio (2:1 for SQL/latency-sensitive), and size for N+1 — in a 2-host cluster, each host must run all VMs if its partner dies. RAM: sum committed VM RAM + ~8 GB host overhead, keep steady-state ≤80% of physical. Storage: thin-provisioned usage + 12-month growth + 25% free-space buffer. Network: 2× 10 GbE minimum per host (25 GbE preferred), plus 1 GbE for iDRAC/iLO.

Worked example — 10-VM small business, 2-host HA cluster (each host carries the full load alone)
VMvCPURAMDisk (thin)Notes
DC01, DC02 (one per host)2 + 24 + 4 GB80 + 80 GBNever snapshot a DC and roll back — USN rollback risk
File/Print28 GB2 TBThe capacity driver
App server (LOB)416 GB200 GBCheck vendor support statement
SQL Server832 GB500 GBFixed-size VHDX
RDS/broker or web416 GB150 GB
Mgmt/Backup VM28 GB200 GBBackup server VM or proxy
3× utility (Linux/DNS/monitor)2×34×3 GB60×3 GB
Totals32 vCPU108 GB~3.6 TB

Resulting host spec (each of 2, N+1): 32 vCPU at 3:1 → 2× 8-core CPUs. RAM: 108 GB + overhead + headroom → 256 GB (the single most common undersize — do not spec 128 GB here). Storage: ~3.6 TB + 25% buffer → 8× 1.92 TB enterprise SSD in RAID 10 (≈7.6 TB usable). Network: 2× 25 GbE (10 GbE floor) + 1 GbE iDRAC/iLO. Boot: mirrored SSDs, separate from VM storage.

Build: Hyper-V host install & config

Use Server Core for production (smaller attack surface, fewer reboots). Install Windows Server 2025, set a static IP, join the domain, activate. Requires a SLAT-capable CPU with virtualization enabled in BIOS — verify with systeminfo → “Hyper-V Requirements”.

# Enable the Hyper-V role (elevated PowerShell) Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart # External switch on teamed uplinks; management OS keeps access on its VLAN New-VMSwitch -Name "External" -NetAdapterName "Ethernet","Ethernet 2" -EnableEmbeddedTeaming $true -AllowManagementOS $true Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "External" -Access -VlanId 10 New-VMSwitch -Name "Private-Backup" -SwitchType Private # optional isolated switch Get-VMSwitch | Format-Table Name, SwitchType, NetAdapterInterfaceDescription

Host best-practice checklist

  • Server Core; rename host; static IP/DNS; domain join; activate Windows
  • Separate volumes: OS (mirrored), VM storage (CSV/ReFS), ISO/library
  • Antivirus exclusions for Hyper-V paths (C:\ClusterStorage, VHDX/VMCX locations, vmms.exe, vmwp.exe) — AV scanning VM files causes corruption-class incidents
  • Patch hosts on a schedule after a verified backup; use Cluster-Aware Updating for clusters
  • Enable Live Migration (Hyper-V Settings, or Enable-VMMigration); set migration network to the migration VLAN; Kerberos constrained delegation or certificate auth for non-domain
  • Set-VMHost -EnableEnhancedSessionMode $true; enable BitLocker on host volumes if required
  • Document: host local admin password in vault, iDRAC/IPMI creds, switch ports, VLAN map
# Form the failover cluster (2+ nodes, shared storage or S2D ready) Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools Test-Cluster -Node HV01,HV02 # fix all warnings/errors first New-Cluster -Name CLU01 -Node HV01,HV02 -StaticAddress 192.168.10.50 Add-ClusterVirtualMachineRole -VMName WEB01 # makes an existing VM highly available

Daily-driver Hyper-V PowerShell

Get-VM | Format-Table Name,State,Version,Uptime New-VM -Name WEB01 -Generation 2 -MemoryStartupBytes 8GB -NewVHDPath D:\VMs\WEB01.vhdx -NewVHDSizeBytes 100GB -SwitchName External -Path D:\VMs Set-VMProcessor WEB01 -Count 4 ; Set-VMMemory WEB01 -StartupBytes 8GB -DynamicMemoryEnabled $true -MinimumBytes 4GB -MaximumBytes 16GB Add-VMDvdDrive -VMName WEB01 -Path \\fileserver\iso\Win2025.iso Checkpoint-VM -Name WEB01 -SnapshotName "PrePatch" ; Get-VMSnapshot -VMName WEB01 ; Remove-VMSnapshot -VMName WEB01 -Name "PrePatch" Move-VM -Name WEB01 -DestinationHost HV02 # live migration Enable-VMReplication -VMName WEB01 -ReplicaServerName DR-HOST -ReplicaServerPort 443 -AuthenticationType Certificate # Hyper-V Replica Get-VM | Enable-VMResourceMetering ; Measure-VM -Name WEB01 # showback

Command switches are long-stable and vendor-documented; confirm exact syntax against current Microsoft Learn docs before running against production.

Deploy on Hyper-V

Always use Generation 2 (UEFI, Secure Boot, SCSI boot, faster) unless the guest OS is ancient. Generation 1 exists only for legacy OS support. VM hardware version rule: a VM created on Server 2025 (config v12.0) can move to 2022/2019 only if its config version is ≤ the host’s max — upgrading config version is one-way and breaks failback to older hosts. Do not upgrade VM hardware versions during routine patching.

Integration Services are built into modern Windows (nothing to install); for Linux, LIS drivers are in the mainline kernel for current distros. Verify with Get-VMIntegrationService -VMName APP01 — all should show True. They’re also what makes backups application-consistent via VSS.

Template workflow (scripted): build reference VM → sysprep /oobe /generalize /shutdown → copy the VHDX to a library share as WS2025-Template.vhdx (mark read-only) → deploy with Copy-Item + New-VM + unattend.xml.

Maintain: patching, backup, monitoring

Patching: standalone host — patch like any server, monthly, after verifying backups (reboot = all VMs down). Cluster — Cluster-Aware Updating (CAU) drains VMs via Live Migration node by node. Never patch all hosts the same night — one host first, validate, then the rest.

Backup: use host-level, agentless VM backup (Veeam, Altaro, Nakivo) — the software talks to the host via VSS, with RCT (Resilient Change Tracking) for incrementals. The 3-2-1 rule is non-negotiable: 3 copies, 2 media, 1 off-site. Ransomware hunts backups first — immutable/offline copies are the difference between a restore and a ransom.

Monitoring: at minimum, a scheduled PowerShell health report emailed daily — watch CPU wait, memory pressure, storage latency (>20 ms sustained = investigate), checkpoint age (alert >72 h), Integration Services state, free space (alert 75%, act 85%), and backup success per VM. A backup you don’t monitor doesn’t exist.

Top 5 Hyper-V failures

1. Live Migration fails (access denied)

Kerberos constrained delegation not configured (or expired computer account).

Fix: in AD, set constrained delegation (cifs + Microsoft Virtual System Migration Service) on both hosts to each other; or use certificate-based auth. Also check: same vSwitch names on both hosts.

2. VM won’t start after checkpoint ops

AVHDX chain broken — often after a failed merge or manual file moves.

Fix: inspect the chain (Get-VHD), merge manually from the newest AVHDX down (Merge-VHD). Never delete AVHDX files by hand. Prevention: AV exclusions.

3. Network dropouts after teaming/vSwitch changes

SET team misconfigured or the management vNIC lost its VLAN.

Fix: Get-VMSwitchTeam / rebuild the SET team. Keep a local console/iDRAC path so a bad switch config doesn’t lock you out.

4. CSV stuck in redirected access

Storage path or network issue forcing all I/O through the coordinator node.

Fix: check MPIO paths, cluster network metrics (Test-Cluster), storage latency. Redirected mode is a symptom, not the disease.

5. Domain controllers misbehaving

Time-sync fights, or USN rollback from a snapshot restore.

Fix: disable host time sync for DCs holding the PDC emulator (Disable-VMIntegrationService -Name "Time Synchronization"). Never restore a DC from snapshot — keep ≥2 DCs on separate hosts.

ESXi / vSphere

VMware’s thin Type-1 hypervisor — the reference implementation. Wins on clustering maturity, storage, and tooling; Broadcom’s subscription licensing made small-scale justification much harder after 2024.

Broadcom licensing reality (October 2026): perpetual licenses ended January 2024 — everything is subscription-only, per-core. vSphere 9 is bundle-only (VMware vSphere Foundation 9.x or VMware Cloud Foundation 9.x) — you cannot buy “just ESXi + vCenter” anymore, and 9.x has no license keys at all (central subscription management via VCF Operations). A 2025 move to a 72-core-per-server minimum was later reversed back to 16 cores per processor — verify the current minimum on every quote, Broadcom has changed this twice. Broadcom promised an updated vSphere Standard bundle aimed back at plain server virtualization (Sept 2026) — watch this space.
Versions & editions
ItemStatus (October 2026)
CurrentVMware vSphere / ESX 9.0 (GA 2025; VM hardware version 22; 9.0.1 maintenance releases following). What’s new: 1 GB minimum boot-bank, 32 GB minimum system disk, reduced-downtime upgrade with vCenter HA, EVC baselines for current-gen CPUs. Support model moved to 6+1 years with a 3-year major cadence.
PreviousvSphere 8.x (8.0U3f latest patch branch seen; free vSphere Hypervisor 8 reinstated at 8.0U3e). General support ends October 2027 (reported — confirm on the Broadcom lifecycle portal).
EditionsNo standalone vSphere 9 SKU. Only VMware vSphere Foundation 9.x (VVF) (vSphere Enterprise Plus + vCenter Standard + limited operations/vSAN) or VMware Cloud Foundation 9.x (VCF) (adds NSX, full operations/automation, HCX, more vSAN). Both per-core, 16-core minimum per processor.
Free ESXiNone for 9.x. Free hypervisor exists only up to 8.0U3x; 9.0 installs run in 90-day trial mode.
Official download links
ItemWhere to get it
ESXi / vSphere eval & patchesBroadcom Support Portal — support.broadcom.com/web/ecx (login required; new accounts may need export-control/account verification). This is the only official source post-Broadcom.
Free vSphere Hypervisor 8Broadcom Support Portal (search “VMware vSphere Hypervisor 8”). Non-production, no vCenter — not available for 9.x.
vSphere Client (HTML5)No download — served by vCenter Server (https://<vcenter>/ui).
ESXi Host ClientNo download — built into every ESXi host (https://<host-ip>/ui). Enough for single-host management.
VMware PowerCLIPowerShell Gallery: Install-Module -Name VMware.PowerCLI -Scope CurrentUser. New consolidated module for VCF 9: VCF.PowerCLI.
VMware Remote ConsoleBundled with VCF 9.0.1 BOM (v13.0.1) / Broadcom portal. Standalone console for direct VM access.

Design notes (VMware-specific)

The §4 sizing method applies unchanged (3:1–4:1 vCPU:pCPU, RAM ≤80%, N+1 per host). VMware specifics: storage — vSAN needs VVF/VCF entitlement with TiB-per-core allowances; traditional VMFS on iSCSI/FC or NFS datastores remain battle-tested for SMB. Network — use vDS with Network I/O Control shares so a vMotion flood can’t starve VM traffic; separate vmkernel adapters per traffic type (Management, vMotion, vSAN). Boot: 9.0 needs a 32 GB+ system disk (SATADOM/M.2 or SD pair).

Build: ESXi host install & config

Boot the ESXi ISO from the Broadcom portal — use the OEM-customized image (Dell/HPE/Lenovo) so NIC/RAID drivers are inbox. Select the boot disk (≥32 GB for 9.x), set a strong root password. Minimums: x86_64 with NX/XD + Intel VT-x/AMD-V, on the Broadcom HCL.

Management network (DCUI, F2): select NICs → set management VLAN ID → static IPv4 (never DHCP for hosts) → set DNS resolvers — ESXi/vCenter are extremely DNS-sensitive (forward and reverse records for every host and vCenter) → Test Management Network. Enable ESXi Shell/SSH for the build, then disable SSH again after.

# vSwitch + port groups (ESXCLI via SSH or PowerCLI) esxcli network vswitch standard add --vswitch-name=vSwitch1 esxcli network vswitch standard uplink add --uplink-name=vmnic1 --vswitch-name=vSwitch1 esxcli network vswitch standard portgroup add --portgroup-name="VM-Network" --vswitch-name=vSwitch1 esxcli network vswitch standard portgroup set --portgroup-name="VM-Network" --vlan-id=20 # VMkernel adapter for vMotion on its own VLAN esxcli network ip interface add --interface-name=vmk1 --portgroup-name="vMotion-PG" esxcli network ip interface ipv4 set --interface-name=vmk1 --ipv4=192.168.40.11 --netmask=255.255.255.0 --type=static esxcli network ip interface tag add --interface-name=vmk1 --tagname=VMotion # Storage: rescan + list datastores esxcli storage core adapter rescan --all esxcli storage filesystem list

Host best-practice checklist

  • NTP configured to the same source as AD/vCenter (time skew breaks AD auth, HA, and vMotion)
  • DNS forward/reverse correct; hostname = FQDN
  • Scratch/log location persistent (not ramdisk) — redirect to a datastore
  • Disable SSH/ESXi Shell post-build; evaluate Lockdown mode (normal is fine for MSP-managed hosts)
  • Join to vCenter; apply subscription license via VCF Operations (9.x — no license keys); configure vSphere Lifecycle Manager desired image
  • Document: root password in vault, management IPs, vmkernel VLANs, datastore layout

Daily-driver PowerCLI

Install-Module -Name VMware.PowerCLI -Scope CurrentUser # one-time Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false Connect-VIServer vcenter.client.local Get-VMHost | Select Name,ConnectionState,@{N='CPU_GHz';E={[math]::Round($_.CpuTotalMhz/1000)}},MemoryTotalGB New-VM -Name WEB01 -VMHost esxi01.client.local -Datastore DS01 -NumCpu 4 -MemoryGB 8 -DiskGB 100 -NetworkName "VM-Network" -GuestId windows2019srv_64Guest -Cdrom Get-VM WEB01 | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName "VLAN20-Prod" -Confirm:$false New-Snapshot -VM WEB01 -Name "PrePatch" -Description "Before monthly patching" -Quiesce:$true Get-Snapshot -VM * | Where {$_.Created -lt (Get-Date).AddDays(-3)} # find stale snapshots! Move-VM -VM WEB01 -Destination esxi02.client.local # vMotion Get-Datastore | Select Name,CapacityGB,FreeSpaceGB

Command switches are long-stable and vendor-documented; confirm exact syntax against current Broadcom techdocs before running against production.

Deploy on vSphere

New VM: vSphere Client → New Virtual Machine → compute resource → datastore → compatibility (ESXi 9.0 / HW 22 — or lower if the VM must stay portable to 8.x hosts) → guest OS → hardware: 4 vCPU, 8 GB, 120 GB thin VMDK, VMXNET3 adapter, PVSCSI controller, mount ISO → power on via Remote Console.

Hardware choices that matter: VMXNET3 (not E1000) for network, PVSCSI for high-I/O disks, EFI firmware for modern OSes, hardware version matched to your oldest host — a HW-22 VM will not power on under ESXi 8. Keep templates at the lowest HW your fleet supports.

VMware Tools: install from the vSphere Client, or use open-vm-tools (packaged with most Linux distros — preferred on Linux). Verify: VM summary shows “Running, version … (Current)”. Treat outdated Tools like missing patches — automate the check. Tools also enable quiesced snapshots and VSS-consistent backups.

Template workflow (the gold standard): build reference VM → patch fully → install Tools + agents (backup, monitoring, AV) → do not join the domain → shut down → Convert to Template. Deploy: New VM from This Template + Customization Specification (sysprep: hostname pattern, domain join, network). One template per OS; rebuild quarterly.

Maintain: patching, backup, monitoring

Patching: vSphere Lifecycle Manager (vLCM) — define a desired-state image (ESXi version + vendor add-on + firmware) per cluster; vLCM remediates hosts one by one (maintenance mode → vMotion VMs away → apply → reboot → verify). Standalone host: Host Client or esxcli software vib install. VCSA patches via VAMI (https://<vcenter>:5480). Cadence: quarterly minimum; security patches sooner.

Backup: host-level agentless backup via VADP (vStorage APIs for Data Protection) — snapshots the VM, reads changed blocks via CBT (Changed Block Tracking), pulls data via HotAdd or SAN mode. Veeam / Altaro / Nakivo. Same 3-2-1 rule, same immutable-copy warning.

Monitoring: the signals that matter — CPU Ready (%RDY) (>5% sustained = oversubscribed), ballooning (warning) and swap (emergency), datastore latency (GAVG >20 ms = investigate; KAVG high = kernel/HBA, DAVG high = array), snapshot age (>72 h), Tools status, datastore free space, vSphere HA/DRS and vSAN Skyline health. vSphere has the richer native stack (vCenter alarms + VCF Operations).

Top 5 ESXi failures

1. PSOD (purple screen of death)

VMkernel panic — almost always hardware (bad DIMM, overheating) or a buggy driver/VIB.

Fix: record the stop code, check /var/log/vmkernel.log, update firmware + async drivers, reseat/replace DIMMs, check the HCL.

2. vMotion fails partway

CPU incompatibility, vMotion vmkernel misconfigured, or jumbo-frame mismatch.

Fix: enable EVC on the cluster before adding newer hosts (baseline = oldest CPU); verify vMotion vmkernel on both hosts; vmkping between vMotion interfaces.

3. Snapshot consolidation fails / deltas balloon

Snapshot grew beyond free space, or backup left an orphan.

Fix: free datastore space first (consolidation needs room), then Consolidate in the GUI. Stubborn cases: clone the VM (clone collapses the chain). Never delete -delta.vmdk files manually.

4. APD/PDL (All Paths Down / Permanent Device Loss)

Storage fabric hiccup or array issue; VMs freeze.

Fix: check fabric (switches, SFPs, controllers), rescan HBAs, restore paths; PDL requires VM re-registration. Prevention: multipathing (Round Robin), redundant fabrics.

5. vCenter inaccessible / services won’t start

Disk full (the #1 cause — logs fill /storage/log), expired certs, or failed update.

Fix: keep the VCSA file-based backup scheduled, monitor disk, use VAMI (:5480) for service control. Hosts keep running VMs fine without vCenter — don’t panic-reboot hosts.

No fanboy takes

Head to head

Both are excellent hypervisors. The honest differences — and the money.

Platform comparison
CriterionHyper-V (Windows Server 2025)VMware (vSphere 9 / VVF–VCF)Winner
Hypervisor maturity / performanceExcellent; near-parity for general workloadsThe reference implementation; best-in-class scheduler, DRSVMware (narrow)
Live migrationLive Migration — free, solidvMotion (+ Storage vMotion, + DRS auto-balancing)VMware (DRS automation)
High availabilityFailover Clustering + VM restartvSphere HA (+ Proactive HA in VCF)Tie at small scale
Software-defined storageStorage Spaces Direct / Azure Local (needs Datacenter; validated HW for Azure Local)vSAN (mature, but TiB-per-core entitlement)VMware (maturity) / Hyper-V (cost)
NetworkingvSwitch + SET + NetworkATC; SDN via NC (complex)vDS + NSX (in VCF) — most matureVMware
Management toolingHyper-V Manager (thin), WAC (good), PowerShell (excellent)vSphere Client + VCF Operations (excellent), PowerCLI (excellent)VMware
Templates/cloningScripted (no native template object)Native templates + customization specsVMware
Resource governancePer-VM weights onlyResource pools (shares/reservations/limits)VMware
Licensing modelPerpetual per-core Windows Server; Standard 2 VMs / Datacenter unlimitedSubscription per-core bundles (VVF/VCF); no keys in 9.xHyper-V (cost & simplicity)
Small-cluster cost (2 hosts)≈$12k one-time Datacenter (MSRP-ish, confirm) + CALsAnnual subscription, quote-based; historically multiples higherHyper-V
Free/lab option180-day evals; Hyper-V Server 2019 (to 2029)90-day trial on 9.x; free hypervisor only on 8.0U3xHyper-V
Ecosystem/vendor supportSome LOB vendors still say “VMware only”Broadest third-party supportVMware
Cloud/hybrid storyAzure Local + Arc (per-core/mo, can be $0 with SA)VCF private cloud; VMware Cloud on hyperscalersDepends on the client’s cloud
Operational risk (2026)Stable, predictableLicensing volatility under Broadcom; 9.x licensing workflow changeHyper-V
Cost comparison — 2-host cluster (2× 16-core, 256 GB each)
Line itemHyper-V routeVMware routeAzure Local route
Hypervisor/host licenses2× WS2025 Datacenter 16-pack ≈ $12.3k one-time (MSRP reported ≈$6,155/16-pack — confirm with distributor)VVF or VCF subscription, per-core/yr — quote-based (Broadcom publishes no list; budget a multiple of the old perpetual pricing)$10/core/mo → 32 cores = $320/mo ($3,840/yr); $0 host fee with Datacenter+SA
Windows guest licensesIncluded (Datacenter = unlimited)Still needed separately (VVF/VCF covers the hypervisor, not Windows)Optional $23.30/core/mo guest subscription, or own licenses
vCenter / managementIncluded (Hyper-V Manager/WAC free)Included in VVF/VCFAzure portal (included)
Backup (10 VMs)≈$1–3k/yr (Veeam/Altaro, per-VM)SameSame
3-yr software TCO (rough)≈$15–20kQuote-dependent; commonly $30k+ for VVF at this size≈$11.5k (host fees) + guest licensing
Hardware (hosts + switches)Same regardless of hypervisor — $30–50k typical

VMware per-core subscription pricing is not published; the table deliberately gives a formula rather than a fabricated number. Get a written VVF quote per client. Flag the 16-vs-72-core minimum question on every quote.

Recommend Hyper-V when…

  • The client is Windows-heavy (guest-license math dominates)
  • 1–2 hosts; budget is capex-constrained
  • The MSP’s bench is Windows-centric
  • The client wants predictable perpetual licensing
  • Azure hybrid (Arc, Azure Backup) is already in play

This is the default for small business in 2026.

Recommend VMware (VVF/VCF 9.x) when…

  • The client needs DRS-style automation, vSAN, or NSX micro-segmentation
  • 3+ hosts, or compliance/vendor requirements naming VMware
  • The MSP already operates a VMware practice with vCenter
  • Linux-heavy enough that Windows guest licensing doesn’t offset the subscription

Get the subscription quote in writing before promising TCO.

Recommend Azure Local when…

  • The client wants HCI without a SAN and likes opex billing
  • They accept validated hardware + cloud-connected management
  • They already hold Windows Server Datacenter + SA — the host fee drops to $0

The migration-era advice (2026)

Most small VMware shops face the vSphere 8 → 9 subscription jump before October 2027 (reported end of support). For each, price three paths: (a) renew VVF/VCF subscription, (b) rebuild on Hyper-V, (c) Azure Local.

(b) wins on cost for ≤2 hosts almost every time; (a) wins where DRS/vSAN/NSX are load-bearing. Document the decision — the client, not the MSP, owns the licensing risk.

Design it right

The hypervisor is never the most expensive line

Windows guest licenses and backup usually cost more than the hypervisor itself. Size the whole stack — hosts, guests, backup, UPS, and the hardware support contract — before you recommend.