Balance the host
A host that runs out of memory long before its cores are busy wastes licences. I size cores, memory per core and network per core together, and keep a short catalogue of standard host builds.
Every network I design ends at a server, and most of those servers now run virtual machines (VMs). This page covers how I build and run that layer. It starts with the hardware, RAID (redundant array of independent disks) and storage, then VMware vSphere clusters, Hyper-V and KVM (Kernel based Virtual Machine), and the Windows Server services every site depends on.
A server is a balance of cores, memory, input and output, and management. When one of these is out of step with the others, the host wastes money or slows the workloads on it. I size hosts by looking at all four together, not just the core count.
Swipe sideways to see the whole diagram.
The board. Each processor (CPU) has its own memory channels and its own PCIe (Peripheral Component Interconnect Express) lanes for drives and network interface cards (NICs). The two processors talk over a fast interconnect: UPI (Ultra Path Interconnect) on Intel, Infinity Fabric on AMD.
NUMA (non uniform memory access). A core can read the other socket's memory, but the request crosses the interconnect, so it is slower. I keep each virtual machine inside one NUMA node where I can, and I state the largest VM size per node in the server standard.
PCIe placement. A network card or GPU (graphics processing unit) on CPU 1 serving a workload on CPU 0 sends every packet across the interconnect. I check the slot to socket map and put fast cards on the socket that runs the workload.
Out of band management. The BMC (baseboard management controller), called iLO (Integrated Lights-Out) on HPE servers and iDRAC (integrated Dell Remote Access Controller) on Dell, gives remote power, console, sensors and firmware updates even when the operating system is down. It sits only on the out of band network, never on a user network, with central accounts, current firmware and IPMI (Intelligent Platform Management Interface) over the LAN (local area network) turned off.
| Part | What I look at | Typical values in 2026 (indicative) |
|---|---|---|
| Processors | Sockets, cores, threads and clock speed. Simultaneous multithreading adds about 10 to 30 percent, not double. A running VM cannot move live between Intel and AMD hosts, so each cluster uses one processor vendor. | Intel Xeon 6 up to 128 performance cores per socket, AMD EPYC 9005 up to 192 cores |
| Memory | Every channel filled evenly, one DIMM (memory module) per channel for best speed, memory per core. | DDR5 (double data rate 5) memory at up to 6,400 MT/s, 8 or 12 channels per socket |
| PCIe | Lanes per socket and the bandwidth each card needs. A 400G card needs a Gen5 x16 slot, and 800G needs Gen6. | Gen4 x16 about 32 GB/s each way, Gen5 about 63 GB/s, Gen6 about 126 GB/s |
| Network | Speed per host and two ports to two switches. SR-IOV (single root I/O virtualisation) only where the workload needs it, because it bypasses the virtual switch and its firewall. | 2 × 25G for light hosts, 2 × 100G for general hosts, 400G and up for GPU nodes |
| Storage | Boot device, local NVMe (non volatile memory express) drives for caches or vSAN, a host bus adapter (HBA) for Fibre Channel. | NVMe solid state drives (SSDs), 32G or 64G Fibre Channel |
| Offload | SmartNICs and DPUs (data processing units), such as NVIDIA BlueField, take encryption, overlay and storage work off the host cores. | Useful at scale, but one more firmware to keep current |
| Form factor | 1U for dense compute, 2U for general hosts and vSAN, 4U and larger for GPUs or many drives. Power, not space, usually limits how many fit in a rack. | Two or three standard models, not a different server for every project |
| Firmware | BIOS (basic input output system) or UEFI (Unified Extensible Firmware Interface), Secure Boot, TPM 2.0 (Trusted Platform Module), one tested baseline per model. | Managed through the BMC with Redfish, the standard REST (representational state transfer) interface |
A host that runs out of memory long before its cores are busy wastes licences. I size cores, memory per core and network per core together, and keep a short catalogue of standard host builds.
VMware, Windows Server and many databases are licensed per core. More cores per host is not always cheaper, so I compare cost per VM, including licences and power. The VMware subscription model and the alternatives are in the licensing and platform choice part of the private cloud page.
A live migration cannot cross between Intel and AMD processors, so I keep each cluster to one processor vendor and generation family.
RAID (redundant array of independent disks) spreads data across disks so that one failure does not lose it. Each level trades usable space, write speed and protection in a different way. Pick a level, change the disks, then fail one to see what happens.
Swipe sideways to see the whole diagram.
| Usable space | 36 TB of 48 TB |
|---|---|
| Can lose | 1 disk |
| Write penalty | 4 disk operations per write |
| Rebuild reads | 36 TB from 3 disks |
| Rebuild time | about 22 hours |
| Read error risk | about 25% during a rebuild |
Indicative figures. Rebuild time assumes about 150 MB/s, and busy arrays rebuild more slowly. The read error risk assumes enterprise disks rated at one unrecoverable read error in 1015 bits, and counts only the time with no redundancy left.
| Level | How it works | Usable space | Survives | Where I use it |
|---|---|---|---|---|
| RAID 0 | Stripes data across disks with no copy. | All of it | No disk failure | Scratch space only, never data I need to keep. |
| RAID 1 | Mirrors two disks. | Half | One disk | Boot drives and small servers. |
| RAID 5 | Stripes data with one rotating parity block per stripe. | All but one disk | One disk | Small solid state drive sets. I avoid it on large spinning disks because of rebuild risk. |
| RAID 6 | Two parity blocks per stripe. | All but two disks | Any two disks | Large capacity sets and backup targets. |
| RAID 10 | Stripes across mirrored pairs. | Half | One disk in each mirror | Databases and busy workloads that need fast writes. |
A server reaches its storage in one of three ways: disks inside or next to it, files over the network, or blocks over a storage network. The choice decides who can share the data, how it fails over, and what the network must carry. The design depth for pods and data protection is on the private cloud and storage page.
Swipe sideways to see the whole diagram.
DAS (direct attached storage). Disks inside the server or in a shelf cabled to it. It is fast and cheap, but only that server can use it, so a host failure takes the data offline with it. vSAN and other hyperconverged systems pool the local disks of many hosts to get round this.
NAS (network attached storage). A filer shares files over NFS (Network File System) or SMB (Server Message Block). Many clients can use the same share, and the network carries it like any other traffic, so I give it its own VLAN (virtual LAN) and quality of service.
Fibre Channel SAN (storage area network). Block storage over two separate fabrics, A and B, which never connect. Zoning on the switches controls which server sees which array port, and LUN (logical unit number) masking on the array decides which volumes it sees. Multipathing on the host uses both paths.
iSCSI (Internet Small Computer Systems Interface). The same block storage, carried over IP (Internet Protocol) on Ethernet. I use two separate VLANs or switches, jumbo frames end to end, port binding on the hosts and no routing in the storage path. Every hop must carry the same MTU (maximum transmission unit).
A hypervisor shares one physical server between many operating systems. Where it sits decides how fast and how isolated those systems are. Containers solve a different problem: they share one operating system kernel between many applications.
Swipe sideways to see the whole diagram.
Type 1, or bare metal. The hypervisor is the operating system of the server. VMware ESX (called ESXi until VMware Cloud Foundation (VCF) 9), Microsoft Hyper-V and KVM all work this way. Every production platform I design uses a type 1 hypervisor.
Type 2, or hosted. The hypervisor is an application on a normal operating system, such as VMware Workstation or Oracle VirtualBox. Every request crosses one more layer, so I use it for labs and testing, never for production.
Containers. Applications share the host kernel and carry only their own libraries, so they start in seconds and pack densely. Isolation comes from Linux namespaces and cgroups (control groups), which is weaker than a hypervisor boundary, so I often run containers inside VMs. Kubernetes detail is on the private cloud page.
Swipe sideways to see the whole diagram.
Hyper-V. A thin hypervisor sits under everything. The parent partition runs Windows Server and owns the real device drivers. Guest VMs use synthetic devices: a VSC (virtualisation service client) in the guest talks over VMBus to a VSP (virtualisation service provider) in the parent. Hyper-V also runs Azure and Azure Local, the on premises platform that was called Azure Stack HCI (hyperconverged infrastructure).
KVM (Kernel based Virtual Machine). A kernel module turns Linux itself into a type 1 hypervisor. Each VM is a QEMU (Quick Emulator) process scheduled like any other, and virtio drivers give fast disk and network access. libvirt manages it, and KVM is the base for Proxmox VE, OpenStack, Nutanix AHV and OpenShift Virtualization.
| Feature | VMware vSphere | Microsoft Hyper-V | KVM |
|---|---|---|---|
| Management | vCenter | Failover Cluster Manager, System Center Virtual Machine Manager, Windows Admin Center | libvirt, Proxmox VE, OpenStack, oVirt |
| Live migration | vMotion and Storage vMotion | Live Migration and Storage Live Migration | Live migration through libvirt |
| High availability | vSphere HA, DRS (Distributed Resource Scheduler), Fault Tolerance | Failover Clustering with Cluster Shared Volumes | Pacemaker, Proxmox HA, OpenStack instance HA |
| Virtual switch | Standard vSwitch and vSphere Distributed Switch | Hyper-V virtual switch with SET (Switch Embedded Teaming) | Linux bridge or Open vSwitch |
| Replication | vSphere Replication, Site Recovery Manager | Hyper-V Replica, Azure Site Recovery | Storage or tool based |
VMware vSphere joins ESX hosts into clusters managed by vCenter. Two features do most of the work. HA (high availability) restarts VMs when a host dies, and DRS (Distributed Resource Scheduler) moves running VMs to balance the load. Both depend on capacity being held back, which is what admission control protects. Recovery across sites, with replication and tested runbooks, is on the private cloud page.
Swipe sideways to see the whole diagram.
Four hosts form one cluster. The HA agent on each host exchanges heartbeats over the management network, and admission control keeps a quarter of the cluster free as a failover reserve. With four hosts, that is the same as N+1: room to lose one host.
Someone tries to power on another VM. Admission control refuses, because it would eat into the capacity needed to restart VMs after a failure. I never turn admission control off to get round this. The answer is more capacity.
Host 3 stops. The others miss its network heartbeats, then check its datastore heartbeat to tell a dead host from one that is only cut off from the network. An isolated host follows its isolation response instead.
HA restarts host 3's VMs on the other hosts, in restart priority order, from the shared datastores. This is a restart, not a live move: each VM boots again, so services see a short outage.
When host 3 returns, DRS uses vMotion to move VMs back and even out the load, and the reserve is free again. Anti affinity rules keep pairs such as two domain controllers on different hosts.
| Setting | What it does | What I normally choose |
|---|---|---|
| Admission control | Reserves capacity so failed hosts' VMs can restart. Policies: cluster resource percentage, slot policy or dedicated failover hosts. | Cluster resource percentage, worked out from the number of host failures to tolerate. N+1, or N+2 for critical clusters. |
| Host isolation response | What a host does when it can no longer see the management network. | Power off and restart VMs where storage and network can be lost together, otherwise leave powered on. Checked against the storage design. |
| Datastore heartbeating | A second way to tell a failed host from an isolated one. | At least two heartbeat datastores. |
| Restart priority | Order in which VMs restart. | Infrastructure first: domain controllers, DNS (Domain Name System) and DHCP (Dynamic Host Configuration Protocol), then databases, then applications. |
| DRS automation | Manual, partially automated or fully automated, with a migration threshold from 1 to 5. | Fully automated at the default threshold, with VM to VM and VM to host rules for licensing and resilience. |
| VM Component Protection | Restarts VMs whose host has lost their storage: all paths down (APD) or permanent device loss (PDL). | On for block storage, with the response set to restart the VMs on a host that can still see the datastore. |
| vCenter availability | HA keeps restarting VMs without vCenter, but DRS, vMotion and most management stop until it returns. | A file based backup every day from the appliance management interface to a separate server, and a tested restore. |
| Datastores | Where VM files live: VMFS (Virtual Machine File System) on block LUNs, NFS from a NAS, vSAN on the hosts' own drives, or vVols (vSphere Virtual Volumes), which Broadcom has deprecated in VCF 9. | Sized for IOPS (input and output operations per second) and latency as well as capacity. I do not start new designs on vVols. |
| Power management | DPM (Distributed Power Management) powers off hosts DRS does not need when demand is low. | Usually off. The hosts it would save are the ones HA needs when something fails. |
| Fault Tolerance | Keeps a live shadow copy of a VM on another host, so a host failure causes no outage. | Only for small, critical VMs that cannot cluster themselves. It supports up to 8 virtual CPUs (vCPUs) per VM on vSphere 8 and needs its own logging network. |
| Snapshots | A point in time delta file. Not a backup. | Kept for no more than 72 hours, one or two deep, and removed before any change is closed. |
| Templates and the content library | Golden images for new VMs, with customisation on deploy. | One patched template per operating system, rebuilt each month. |
Inside each host a virtual switch connects VMs and VMkernel ports to the physical uplinks. The teaming policy decides which uplink each flow uses, and it must match what the physical switches expect. Most loops and MAC (media access control) flaps I have chased on virtual hosts came from a mismatch here.
Swipe sideways to see the whole diagram.
Route based on originating virtual port. The default. Each VM's virtual port is pinned to one uplink, so the switches see each MAC on one port only. It needs no port channel, which is why I use it as my starting point.
Route based on IP hash. Each flow is hashed across both uplinks, so one VM can use both. The switch side must be a static port channel, spread across a vPC (virtual port channel) or stack pair. LACP (Link Aggregation Control Protocol) needs a link aggregation group on a distributed switch instead. Get this wrong and the switches see MAC flaps.
Route based on physical NIC load. Distributed switch only. When an uplink stays above 75% for 30 seconds, the switch moves a VM port to a quieter uplink. It needs no port channel, so it is my usual choice on a distributed switch.
Explicit failover order. Active and standby uplinks set per port group. I use it for VMkernel traffic so that vMotion prefers one uplink and management the other, and the two only share a link when one fails.
| VMkernel service | What it carries | How I place it |
|---|---|---|
| Management | vCenter, SSH (Secure Shell) and the HA heartbeats. | Its own VLAN, two uplinks, failover order. |
| vMotion | Memory of moving VMs. | Its own VLAN, 10G or faster, jumbo frames if every hop supports them. |
| vSAN | Storage traffic between hosts. | Its own VLAN, 25G or faster, never shared with VM traffic. |
| iSCSI or NFS | Block or file storage. | Two VMkernel ports bound to two uplinks for iSCSI multipathing. |
| Fault Tolerance logging | The live state of VMs protected by Fault Tolerance. | A dedicated fast link. |
| Provisioning and replication | Cold migration, cloning and vSphere Replication. | Separated when volumes are high. |
A standard vSwitch is configured on each host. A vSphere Distributed Switch is configured once in vCenter and adds LACP, load based teaming, NetFlow, port mirroring and Network I/O Control. I use distributed switches on every cluster larger than a lab.
Port groups tag traffic with a VLAN ID (identifier), so the uplinks are 802.1Q trunks carrying only the VLANs that host needs. VLAN 4095 passes tags into the guest, which I keep for appliances such as virtual firewalls.
vMotion only works if the destination host has the same port group and VLAN. A host profile or a distributed switch keeps every host identical.
vMotion moves a running VM to another host with no planned outage. It is what lets me patch hosts during the working day. Storage vMotion does the same for the VM's disk files, and the two can run together when hosts share no storage.
Swipe sideways to see the whole diagram.
vCenter checks that host B can run the VM: compatible processors or a shared EVC (Enhanced vMotion Compatibility) baseline, the same port group and VLAN, access to the VM's storage, and enough free resources.
The VM keeps running on host A while its memory pages copy to host B over the vMotion VMkernel network. This is the pre copy phase, and it is why vMotion needs a fast, dedicated link.
Pages the VM changed during the copy are sent again, in smaller and smaller rounds, until what is left can move almost instantly.
The VM pauses for a moment, usually well under a second, while the last pages and device state move. It then resumes on host B, and TCP (Transmission Control Protocol) sessions carry on.
Host B sends a RARP (Reverse Address Resolution Protocol) frame for the VM's MAC address, so the switches learn its new port at once. An occasional MAC move in the switch log after a vMotion is normal.
Storage vMotion copies the disk files to another datastore while the VM runs, and a mirror driver writes every change to both copies until the switch. Combined with vMotion, a VM can move between hosts that share no storage.
I size a cluster from the demand, not from last year's order. Processor demand depends on how far I overcommit virtual CPUs, while memory is rarely overcommitted in production. Whichever runs out first sets the host count. Change the numbers to see when a cluster becomes memory bound and wastes core licences.
Swipe sideways to see the whole diagram.
| Hosts for processor | 16 |
|---|---|
| Hosts for memory | 23 |
| Clusters | 2, of up to 16 hosts each |
| Hosts with spares | 25 |
| Licensed cores | 3,200 |
Indicative only. Memory includes about 10 percent for hypervisor and VM overhead, and clusters are capped at 16 hosts with their own spare. Real sizing uses measured demand and 12 to 18 months of growth.
| Measure | What it tells me | Where I start (indicative) |
|---|---|---|
| vCPU to core ratio | How far processors are overcommitted. | Up to 4 : 1 for general servers, 1 : 1 for latency sensitive and licensed per vCPU workloads. |
| CPU ready | Time a vCPU waited for a physical core. The clearest sign of contention. | Below 5 percent per vCPU. Above 10 percent, users notice. |
| Co stop | Time a VM with many vCPUs waits for all of them to be scheduled. | Near zero. High values mean the VM has more vCPUs than it needs. |
| Memory reclamation | Order of pressure: page sharing, ballooning, compression, then swapping to disk. | No ballooning or swapping in production. If I see it, the cluster is short of memory. |
| Storage latency | How long reads and writes take, seen per VM and per datastore. | Under 1 ms on all flash, under 20 ms anywhere before I investigate. |
| Rack placement | What losing one rack costs each cluster. | One host from each cluster per rack, so a rack failure costs each cluster only its spare. |
| Largest VM | Whether a VM fits inside one NUMA node. | vCPUs no more than the cores in one socket, memory no more than that socket's memory. |
When users cannot log on, nothing else matters. Active Directory (AD), DNS and DHCP sit under almost every application, so I design them for resilience first. In my home lab, Windows Server runs all three, plus TACACS (Terminal Access Controller Access Control System) for device logins.
Swipe sideways to see the whole diagram.
Logical structure. A forest is the security boundary and holds one schema. Domains inside it trust each other both ways. Organisational units (OUs) group users, computers and servers so that Group Policy and admin rights can be delegated. Five FSMO (flexible single master operation) roles exist: two per forest, schema master and domain naming master, and three per domain, RID (relative identifier) master, PDC (primary domain controller) emulator and infrastructure master. Most organisations need one domain, not several.
Sites and replication. Sites map to IP subnets, so clients find a nearby domain controller. Inside a site, changes replicate within seconds. Between sites they travel over site links, chosen by cost and sent on a schedule, every 180 minutes by default, which I usually shorten. A read only domain controller (RODC) suits sites with weak physical security: it receives changes but never sends them.
Swipe sideways to see the whole diagram.
The laptop asks DNS for the SRV (service locator) record _ldap._tcp.dc._msdcs.example.com, which lists domain controllers, preferring ones in its own site. If DNS points somewhere else, nothing that follows works.
The laptop sends an authentication request with a timestamp encrypted by a key made from the user's password. The KDC (key distribution centre) on the domain controller checks it and returns a TGT (ticket granting ticket), valid for 10 hours by default.
To open a share, the laptop presents its TGT and asks for a ticket for the file server's service principal name, cifs/fs01.example.com. The KDC returns a service ticket encrypted with the file server's own key.
The laptop hands the service ticket to the file server, which decrypts it with its own key. The domain controller is not asked again, which is why Kerberos scales so well.
Tickets carry timestamps, and a clock more than 5 minutes out makes logons fail. Members take time from domain controllers, and the PDC emulator in the forest root domain takes it from a reliable external source over NTP (Network Time Protocol).
AD integrated DNS zones replicate with the directory. Clients point only at internal DNS servers, never at a public resolver as a second choice, or logons will fail at random. Conditional forwarders reach partner and cloud zones.
Two servers in a failover relationship, either load balance or hot standby, so a scope never depends on one server. Routers relay requests from each VLAN with ip helper-address. The DORA (discover, offer, request, acknowledge) exchange is on the networking fundamentals page.
Applied in the order local, site, domain, OU (organisational unit), with the last one winning. Members refresh every 90 minutes with a random offset of up to 30, and domain controllers every 5. gpresult /r shows what really applied.
At least two per domain, more per region, kept as virtual machines on different hosts with anti affinity rules. Never restored from a snapshot, and backed up with a system state backup.
On premises AD synced to Microsoft Entra ID (formerly Azure AD) with Entra Connect or cloud sync, so cloud services use the same accounts. The detail is on the cloud platforms page.
Windows Server Failover Clustering gives stateful services such as SQL Server and file servers a second node, with a quorum witness so a split cluster never runs on both sides at once.
DFS (Distributed File System) Namespaces give users one path to shares held in several sites, and DFS Replication keeps the copies in step. I use replication only for files that change slowly.
Monthly updates are tested in rings through WSUS (Windows Server Update Services), Configuration Manager or Intune, with domain controllers and cluster nodes patched one at a time.
Windows Server has five years of mainstream and five years of extended support. Windows Server 2012 R2, which my lab still runs, left extended support in October 2023, so in production it would be top of the refresh list.
Most network appliances, controllers and cloud images run Linux underneath, and so do most automation tools. These are the commands I reach for first when a Linux host is part of a fault.
| Task | Command | What it tells me |
|---|---|---|
| Addresses and links | ip -br addr, ip link | Interfaces, state and IP addresses at a glance. |
| Routing | ip route, ip route get 10.0.0.5 | The routing table, and which interface and next hop a destination will really use. |
| Neighbours | ip neigh | The ARP (Address Resolution Protocol) table: whether the gateway's MAC address is known. |
| Listening ports | ss -tulpn | Which process listens on which TCP or UDP (User Datagram Protocol) port. |
| DNS | dig example.com, resolvectl status | The answer, which server gave it, and the resolver settings. |
| Path | traceroute -T -p 443 host, mtr host | The path to a service, using TCP when ICMP (Internet Control Message Protocol) is blocked. |
| Path MTU | ping -M do -s 1472 host | Whether a full 1,500 byte packet passes without being fragmented. |
| Capture | tcpdump -ni eth0 port 53 | What really leaves and arrives on the interface. |
| Link detail | ethtool eth0, ethtool -S eth0 | Speed, duplex, driver and error counters. |
| Services and logs | systemctl status sshd, journalctl -u sshd --since today | Whether a service runs, and why it stopped. |
| Firewall | nft list ruleset | The host firewall rules, which often explain a refused connection. |
Linux bonds two NICs in several modes. Mode 1, active backup, needs nothing from the switch. Mode 4, 802.3ad, needs an LACP port channel on the switch side. The same rule as VMware teaming: both ends must agree.
A host can tag traffic itself with a VLAN subinterface such as eth0.20, created with ip link add or through NetworkManager with nmcli. The switch port must then be a trunk.
DNS servers in /etc/resolv.conf, often managed by systemd-resolved, local names in /etc/hosts, and interface settings in NetworkManager or netplan, depending on the distribution.
Virtual faults hide in places a network engineer does not always look: a port group, a teaming policy, a clock. I follow the path from the VM outwards, one layer at a time, and prove each one before moving on. Pick a symptom to see where it usually ends and what I check first.
Swipe sideways to see the whole diagram.
A VM has no network. Inside the guest, ipconfig /all or ip -br addr shows whether it has an address; 169.254 means DHCP never answered. I compare the port group VLAN with the switch, using esxcli network vswitch standard portgroup list or the distributed switch in vCenter, then show interfaces trunk on the switch to confirm the VLAN is allowed on both host ports.
vMotion fails or times out. I test the vMotion network with vmkping -I vmk1 -d -s 8972 to the other host, adding ++netstack=vmotion if vMotion has its own TCP/IP stack. If a 1,472 byte test passes and 8,972 fails, one hop is not set for jumbo frames. Then I check the VLAN on both hosts and processor compatibility or EVC.
A host shows not responding. Its VMs keep running; only management is lost. I check the management address answers, then restart the agents with /etc/init.d/vpxa restart and /etc/init.d/hostd restart, and read /var/log/vpxa.log and /var/log/hostd.log. A full services.sh restart is a last resort.
A VM is slow but the host looks fine. In esxtop, CPU ready (%RDY) above about 5 percent per vCPU or a high co stop (%CSTP) means contention, a balloon (MCTLSZ) or swap (SWCUR) means memory pressure, and DAVG or KAVG show disk latency. The fix is often fewer vCPUs, not more.
Users cannot log on. I check time first with w32tm /query /status, then that the client's DNS points only at domain controllers, then nltest /dsgetdc:example.com to see which one it finds. dcdiag /v and repadmin /replsummary show whether the domain controllers and their replication are healthy.
A datastore is degraded or a VM hangs on disk. esxcli storage core path list shows the state of every path, and esxcli storage nmp device list the multipathing policy. One dead path should cause no outage. If it did, the multipathing or the zoning was wrong. On iSCSI I also check port binding and the MTU on both storage networks.
| Platform | Command | What it tells me |
|---|---|---|
| ESX | esxcli network nic list | Physical NICs, link state, speed and driver. |
| ESX | esxcli network vswitch dvs vmware list | Distributed switches, uplinks and MTU on this host. |
| ESX | esxcli network ip interface ipv4 get | VMkernel ports and their addresses. |
| ESX | esxcli network ip neighbor list | The ARP table seen by the VMkernel ports. |
| ESX | pktcap-uw --uplink vmnic0 -o /tmp/cap.pcap | A packet capture on a physical uplink. |
| ESX | esxtop | Live processor, memory, disk and network contention. |
| ESX | vm-support | A log bundle for the vendor. |
| PowerCLI | Get-VMHost | Select Name,ConnectionState | Every host and whether vCenter can manage it. |
| PowerCLI | Get-VM | Get-Snapshot | Forgotten snapshots that are growing. |
| Windows | Test-NetConnection fs01 -Port 445 | Whether a TCP port answers, without a telnet client. |
| Windows | Resolve-DnsName -Type SRV _ldap._tcp.dc._msdcs.example.com | Which domain controllers DNS offers. |
| Windows | klist | The Kerberos tickets this session holds. |
| Windows | netdom query fsmo | Which domain controllers hold the five FSMO roles. |
| Windows | gpresult /r | Which Group Policy objects applied. |
My general method, starting from the symptom and working layer by layer, is on the troubleshooting page.
Whether it is a new cluster, a consolidation or a move off an old platform, I follow the same path. I agree the outcome, measure what is really running, design for failure and prove it, then hand over something the operations team can keep patched and in support.
Swipe sideways to see the whole diagram.
I start with the reason for the work: hardware or software going out of support, licence cost, a data centre exit or poor performance. I agree measures of success up front, such as cost per VM, recovery time or hosts retired, and who decides what.
Functional requirements say what must run: which workloads, operating systems and integrations. Non functional ones say how well: availability, recovery point and recovery time, performance, growth and security, each with a number I can test.
I collect real data: an RVTools export or a LiveOptics capture of every VM, thirty days of performance history, and dependencies mapped from flow data and workshops with application owners. Most estates have oversized VMs and forgotten servers, so discovery often pays for itself.
I design the host standard, cluster sizes and failure domains, the virtual networking and storage, and the HA, DRS and backup settings. One host per cluster sits in each rack, so losing a rack costs each cluster only its spare.
Hosts are built from one firmware and software baseline. Then I test failure on purpose: pull a host, a storage path and a switch, and watch HA, multipathing and teaming do their work. Workloads move in waves, each with a rollback point.
Operations get runbooks for the common faults, alerts on capacity, CPU ready, snapshots and certificate expiry, and a patching calendar. Hypercare ends only when alerts are quiet, runbooks are proven and a backup has been restored at least once.
Every layer has a support date: server firmware, the hypervisor, vCenter, the guest operating systems and the hardware itself. I keep one register of them and plan upgrades and refreshes well before the dates arrive.
What it must do.
How well it must do it, with a number wherever one can be agreed.
These are typical starting targets for a virtual platform. The client sets the final numbers, and each one is proven in the failover tests before go live.
| Tool or source | What it tells me |
|---|---|
| RVTools | Every VM, host, datastore, snapshot and VMware Tools version, in one spreadsheet. |
| Dell LiveOptics | Measured CPU, memory, disk and network demand over time, for right sizing. |
| vCenter performance charts and VCF Operations | CPU ready, ballooning and latency trends, and capacity forecasts. |
| Azure Migrate or Google Cloud Migration Center | Discovery and sizing when some workloads may move to the cloud. |
| PowerCLI and PowerShell scripts | Custom audits: snapshots, orphaned files and configuration drift. |
| The BMC inventory over Redfish | Hardware models, firmware versions and warranty status. |
Most server and virtualisation faults are a network, storage or capacity problem showing up in a VM. I work outwards from the VM, prove each layer, and always check what changed first.
esxtop for contention, the VMkernel log, and whether HA or DRS acted.| Layer | What I check |
|---|---|
| 1 · Physical | NIC and HBA link state, optics, firmware and the BMC event log, with esxcli network nic list. |
| 2 · Data link | Port group VLANs, trunks, teaming and the MAC table on the switch, with show mac address-table. |
| 3 · Network | VMkernel addresses, gateways and routes with esxcli network ip interface ipv4 get, and DNS. |
| 4 · Transport | MTU and fragmentation with vmkping -d -s 8972, iSCSI and NFS sessions, and firewall ports. |
| 5 to 7 · Application | Services, Kerberos tickets with klist, Group Policy and the application logs. |
My general method is on the troubleshooting page, and the virtual faults I see most are in the troubleshooting section above.
I agree how the platform will be run before the first workload moves, so the operations team owns it from day one.
Who supports the hardware, the hypervisor, the guest operating systems and the applications, with escalation routes to each vendor.
Alerts on host health, capacity, CPU ready, datastore space, snapshot age, backup failures and certificate expiry.
Monthly rings for guests and hosts, with each host put in maintenance mode while DRS moves its VMs away.
Daily backups, a test restore every month, and an immutable copy for ransomware recovery.
Steps for a host failure, storage path loss, vMotion faults, VM restores and domain controller recovery.
Repeat faults get a root cause and a lasting fix, such as one teaming policy applied to every host.
Servers and hypervisors have firm support dates. I plan around them from the start, so upgrades happen on my schedule rather than the vendor's.
I started as a systems engineer, so servers and virtualisation were part of my job long before I designed networks around them. I still run them every week in my lab.
VMware ESXi on three HP servers, two DL160s and an ML110, managed through vCenter with vMotion between them and iLO for remote console. Windows Server 2012 R2 runs Active Directory, DNS, DHCP and TACACS for device logins.
VMware Certified Professional, Data Centre Virtualisation (VCP5). I have also trained in MCITP (Microsoft Certified IT Professional) and MCSE (Microsoft Certified Systems Engineer) for Windows Server.
LAN, WAN (wide area network), VoIP (voice over IP), virtualisation and security across the group, including warehouse, cold chain and temperature monitoring systems at the food depots, linked to the group ERP (enterprise resource planning) system. Over £250k a year saved, with payback in the first year.
As senior infrastructure engineer, integrated infrastructure across a multi site estate and the enterprise data centre, on Cisco, Palo Alto and VMware. Saved £700k a month across support and operations.
Prepared data centre infrastructure for high performance workloads: rack allocation, structured cabling pathways and deployment coordination.
Designed artificial intelligence (AI) ready data centre infrastructure for high density compute clusters, covering network, power, cooling and structured cabling, with the rack layouts the build teams worked from.
Backed by VMware Certified Professional, Data Centre Virtualisation. See all credentials
Every page follows the same idea: how it works, the choices that matter, and where I have used it. The foundations pages explain the basics the others build on.