vCenter Upgrade Download: ISO and Patch Files for Every 8.0 and 9.x Build

Which vCenter file to download for an upgrade or patch (full VCSA ISO or patch-FP.iso), where it is on the Broadcom portal, and every 8.0 and 9.x build.

Short answer: For a vCenter update within the same major version (for example 8.0 U2 to 8.0 U3k) download the patch ISO (…-patch-FP.iso) from Broadcom Support Portal > My Downloads > Solutions and install it from the VAMI. For a new install or a major upgrade (7.0 to 8.0, 8.0 to 9.0) download the full installer ISO (VMware-VCSA-all-…iso) from My Downloads > Products. The download list below gives every vCenter 7.0, 8.0 and 9.x build with its patch ISO file name.

Which vCenter file do you need?

FileName patternUse it for
Full installer ISOVMware-VCSA-all-<x.y.z>-<build>.isoNew install, major upgrade (7.0 to 8.0, 8.0 to 9.0) and migration. The installer deploys a new appliance and copies the configuration and data from the old one.
Patch ISOVMware-vCenter-Server-Appliance-<version>-<build>-patch-FP.isoUpdate or patch within the same major version (for example 8.0 U2 to 8.0 U3k). Attach it to the appliance CD-ROM and install it from the VAMI or with software-packages.
Update repositoryVMware-vCenter-Server-Appliance-<version>-<build>-updaterepo.zipPublished for some releases. Unzip it on an internal web server and point the VAMI update settings at that URL.

A version appears in the portal only if your account has an entitlement for it, and the portal asks you to sign in first. For the ESXi side of the same upgrade see the ESXi ISO download list.

vCenter download list: every build for 7.0, 8.0 and 9.x

Builds and dates from Broadcom KB 326316, checked on 30 September 2026. The patch ISO names follow Broadcom’s fixed pattern, which I checked against eleven real downloads from 7.0 U1c to 8.0 U3b. A GA release is the base version, so it has only a full installer ISO. Each link opens the Broadcom Support Portal.

vCenter 9.x (9 releases)
ReleaseBuildRelease dateDownload
vCenter 9.1.1.0257128392026-09-03Broadcom portal
vCenter 9.1.0.0300256295302026-07-29Broadcom portal
vCenter 9.1.0.0200255736142026-07-13Broadcom portal
vCenter 9.1.0.0100254179262026-06-05Broadcom portal
vCenter 9.1253709222026-05-12Broadcom portal
vCenter 9.0.2.0100256295252026-07-29Broadcom portal
vCenter 9.0.2.0251480862026-01-20Broadcom portal
vCenter 9.0.1.0249574542025-09-29Broadcom portal
vCenter 9.0.0.0247552302025-06-17Broadcom portal
vCenter 8.0 (28 releases)
ReleaseBuildRelease datePatch ISO
8.0 U3k256004172026-07-29VMware-vCenter-Server-Appliance-8.0.3.01000-25600417-patch-FP.iso
8.0 U3j254133642026-05-27VMware-vCenter-Server-Appliance-8.0.3.00900-25413364-patch-FP.iso
8.0 U3i251973302026-02-24VMware-vCenter-Server-Appliance-8.0.3.00800-25197330-patch-FP.iso
8.0 U3h250927192025-12-15VMware-vCenter-Server-Appliance-8.0.3.00700-25092719-patch-FP.iso
8.0 U3g248536462025-07-29VMware-vCenter-Server-Appliance-8.0.3.00600-24853646-patch-FP.iso
8.0 U3e246743462025-04-11VMware-vCenter-Server-Appliance-8.0.3.00500-24674346-patch-FP.iso
8.0 U3d243228312024-10-21VMware-vCenter-Server-Appliance-8.0.3.00400-24322831-patch-FP.iso
8.0 U3c243051612024-10-09VMware-vCenter-Server-Appliance-8.0.3.00300-24305161-patch-FP.iso
8.0 U3b242623222024-09-17VMware-vCenter-Server-Appliance-8.0.3.00200-24262322-patch-FP.iso
8.0 U3a240911602024-07-18VMware-vCenter-Server-Appliance-8.0.3.00100-24091160-patch-FP.iso
8.0 U3240225152024-06-25VMware-vCenter-Server-Appliance-8.0.3.00000-24022515-patch-FP.iso
8.0 U2f256243212026-08-03VMware-vCenter-Server-Appliance-8.0.2.00600-25624321-patch-FP.iso
8.0 U2e243216532024-10-21VMware-vCenter-Server-Appliance-8.0.2.00500-24321653-patch-FP.iso
8.0 U2d239291362024-06-17VMware-vCenter-Server-Appliance-8.0.2.00400-23929136-patch-FP.iso
8.0 U2c235043902024-03-26VMware-vCenter-Server-Appliance-8.0.2.00300-23504390-patch-FP.iso
8.0 U2b233199932024-03-04VMware-vCenter-Server-Appliance-8.0.2.00200-23319993-patch-FP.iso
8.0 U2a226172212023-10-26VMware-vCenter-Server-Appliance-8.0.2.00100-22617221-patch-FP.iso
8.0 U2223857392023-09-21VMware-vCenter-Server-Appliance-8.0.2.00000-22385739-patch-FP.iso
8.0 U1e240051652024-06-12VMware-vCenter-Server-Appliance-8.0.1.00500-24005165-patch-FP.iso
8.0 U1d223680472023-10-24VMware-vCenter-Server-Appliance-8.0.1.00400-22368047-patch-FP.iso
8.0 U1c220889812023-07-27VMware-vCenter-Server-Appliance-8.0.1.00300-22088981-patch-FP.iso
8.0 U1b218605032023-06-22VMware-vCenter-Server-Appliance-8.0.1.00200-21860503-patch-FP.iso
8.0 U1a218150932023-06-01VMware-vCenter-Server-Appliance-8.0.1.00100-21815093-patch-FP.iso
8.0 U1215604802023-04-18VMware-vCenter-Server-Appliance-8.0.1.00000-21560480-patch-FP.iso
8.0c214573842023-03-30VMware-vCenter-Server-Appliance-8.0.0.10300-21457384-patch-FP.iso
8.0b212160662023-02-14VMware-vCenter-Server-Appliance-8.0.0.10200-21216066-patch-FP.iso
8.0a209203232022-12-16VMware-vCenter-Server-Appliance-8.0.0.10100-20920323-patch-FP.iso
8.0 GA205195282022-10-11Full ISO only
vCenter 7.0 (37 releases)
ReleaseBuildRelease datePatch ISO
7.0 U3w249270112025-09-29VMware-vCenter-Server-Appliance-7.0.3.02500-24927011-patch-FP.iso
7.0 U3v247302812025-05-20VMware-vCenter-Server-Appliance-7.0.3.02400-24730281-patch-FP.iso
7.0 U3u246142102025-04-01VMware-vCenter-Server-Appliance-7.0.3.02300-24614210-patch-FP.iso
7.0 U3t243220182024-10-21VMware-vCenter-Server-Appliance-7.0.3.02200-24322018-patch-FP.iso
7.0 U3s242019902024-09-17VMware-vCenter-Server-Appliance-7.0.3.02100-24201990-patch-FP.iso
7.0 U3r240266152024-06-17VMware-vCenter-Server-Appliance-7.0.3.02000-24026615-patch-FP.iso
7.0 U3q237880362024-05-21VMware-vCenter-Server-Appliance-7.0.3.01900-23788036-patch-FP.iso
7.0 U3p228373222023-12-07VMware-vCenter-Server-Appliance-7.0.3.01800-22837322-patch-FP.iso
7.0 U3o223576132023-09-28VMware-vCenter-Server-Appliance-7.0.3.01700-22357613-patch-FP.iso
7.0 U3n219584062023-07-07VMware-vCenter-Server-Appliance-7.0.3.01600-21958406-patch-FP.iso
7.0 U3m217842362023-06-22VMware-vCenter-Server-Appliance-7.0.3.01500-21784236-patch-FP.iso
7.0 U3l214777062023-03-30VMware-vCenter-Server-Appliance-7.0.3.01400-21477706-patch-FP.iso
7.0 U3k212904092023-02-23VMware-vCenter-Server-Appliance-7.0.3.01300-21290409-patch-FP.iso
7.0 U3j209900772022-12-22VMware-vCenter-Server-Appliance-7.0.3.01200-20990077-patch-FP.iso
7.0 U3i208452002022-12-08VMware-vCenter-Server-Appliance-7.0.3.01100-20845200-patch-FP.iso
7.0 U3h203950992022-09-13VMware-vCenter-Server-Appliance-7.0.3.01000-20395099-patch-FP.iso
7.0 U3g201505882022-07-23VMware-vCenter-Server-Appliance-7.0.3.00800-20150588-patch-FP.iso
7.0 U3f200514732022-07-12VMware-vCenter-Server-Appliance-7.0.3.00700-20051473-patch-FP.iso
7.0 U3e197174032022-05-12VMware-vCenter-Server-Appliance-7.0.3.00600-19717403-patch-FP.iso
7.0 U3d194808662022-03-29VMware-vCenter-Server-Appliance-7.0.3.00500-19480866-patch-FP.iso
7.0 U3c192345702022-01-27VMware-vCenter-Server-Appliance-7.0.3.00300-19234570-patch-FP.iso
7.0 U3a187784582021-10-21VMware-vCenter-Server-Appliance-7.0.3.00100-18778458-patch-FP.iso
7.0 U3187004032021-10-05VMware-vCenter-Server-Appliance-7.0.3.00000-18700403-patch-FP.iso
7.0 U2d184551842021-09-21VMware-vCenter-Server-Appliance-7.0.2.00500-18455184-patch-FP.iso
7.0 U2c183563142021-08-24VMware-vCenter-Server-Appliance-7.0.2.00400-18356314-patch-FP.iso
7.0 U2b179584712021-05-25VMware-vCenter-Server-Appliance-7.0.2.00200-17958471-patch-FP.iso
7.0 U2a179201682021-04-27VMware-vCenter-Server-Appliance-7.0.2.00100-17920168-patch-FP.iso
7.0 U2176948172021-03-09VMware-vCenter-Server-Appliance-7.0.2.00000-17694817-patch-FP.iso
7.0 U1d174911012021-02-02VMware-vCenter-Server-Appliance-7.0.1.00300-17491101-patch-FP.iso
7.0 U1c173275172020-12-17VMware-vCenter-Server-Appliance-7.0.1.00200-17327517-patch-FP.iso
7.0 U1a170049972020-10-22VMware-vCenter-Server-Appliance-7.0.1.00100-17004997-patch-FP.iso
7.0 U1168601382020-10-06VMware-vCenter-Server-Appliance-7.0.1.00000-16860138-patch-FP.iso
7.0.0d167496532020-08-25VMware-vCenter-Server-Appliance-7.0.0.10700-16749653-patch-FP.iso
7.0.0c166200072020-07-30VMware-vCenter-Server-Appliance-7.0.0.10600-16620007-patch-FP.iso
7.0.0b163862922020-06-23VMware-vCenter-Server-Appliance-7.0.0.10400-16386292-patch-FP.iso
7.0.0a161890942020-05-19VMware-vCenter-Server-Appliance-7.0.0.10300-16189094-patch-FP.iso
7.0 GA159524982020-04-02Full ISO only

In VCF 9, SDDC Manager and VCF Operations fleet management usually download the vCenter upgrade bundles through their depot, so you rarely fetch a vCenter file by hand. A standalone vCenter 9 in vSphere Foundation is patched from the VAMI as before.

Full installer ISO file names for vCenter 8.0 and 9.x

Broadcom does not publish a full installer ISO for every patch, so only the releases below have one. The names are confirmed from real downloads. In 8.0 the name uses the update level and the build (8.0.3-24853646); from 9.0 it uses the full four-part version and a dot before the build (9.1.0.0300.25629530). Search the portal for the exact name.

ReleaseFull installer ISO
vCenter 9.1.0.0300VMware-VCSA-all-9.1.0.0300.25629530.iso
vCenter 9.1.0.0200VMware-VCSA-all-9.1.0.0200.25573614.iso
vCenter 9.0 GAVMware-VCSA-all-9.0.0.0.24755230.iso
vCenter 8.0 U3gVMware-VCSA-all-8.0.3-24853646.iso
vCenter 8.0 U3eVMware-VCSA-all-8.0.3-24674346.iso
vCenter 8.0 U3dVMware-VCSA-all-8.0.3-24322831.iso
vCenter 8.0 U3bVMware-VCSA-all-8.0.3-24262322.iso
vCenter 8.0 U3VMware-VCSA-all-8.0.3-24022515.iso
vCenter 8.0 U2cVMware-VCSA-all-8.0.2-23504390.iso
vCenter 8.0 U2aVMware-VCSA-all-8.0.2-22617221.iso
vCenter 8.0 U2VMware-VCSA-all-8.0.2-22385739.iso
vCenter 8.0 U1bVMware-VCSA-all-8.0.1-21860503.iso
vCenter 8.0 GAVMware-VCSA-all-8.0.0-20519528.iso

Before you upgrade vCenter

Install a vCenter patch ISO

  1. Upload the …-patch-FP.iso to a datastore and attach it to the vCenter appliance VM as a CD-ROM (connected).
  2. Open the VAMI at https://<vcenter>:5480, go to Update, choose Check Updates > Check CD ROM, run the pre-update checks, then stage and install.
  3. Or from the appliance shell: software-packages stage --iso, then software-packages install --staged (or software-packages install --iso in one step).

Further reading

VMware Hypervisor Recovery at Boot: Causes and Fixes for ESXi 7, 8 and 9

Why an ESXi host stops at VMware Hypervisor Recovery or No hypervisor found, and how to fix it: KB 324877, Shift+R rollback, repair install.

Short answer: if an ESXi host stops at “VMware Hypervisor Recovery” or reports “No hypervisor found”, the host could not load a valid image from its boot device. First check the firmware boot mode and the boot device itself. If the hang started right after a 7.0 Update 2 upgrade on a UEFI host, apply the boot loader workaround from KB 324877. If the image is damaged, roll back with Shift+R (only if the altbootbank still holds the previous build), or reinstall with “Install ESXi, preserve VMFS datastore” and restore the configuration backup.

What the “VMware Hypervisor Recovery” screen means

ESXi 7.0 and later keep the hypervisor in two boot banks on the boot device. According to the ESXi 7.0 system storage documentation, the layout is a System Boot partition (boot loader and EFI modules), Boot-bank 0 and Boot-bank 1 (ESXi boot modules, mounted as /bootbank and /altbootbank) and ESX-OSData (scratch, VMware Tools locker, core dumps, logs). The active bank holds the running build. The other bank holds the build from before the last update.

Broadcom documents the “VMware Hypervisor Recovery” message in one specific case, KB 324877: a UEFI host hangs at the boot loader showing this message after an ESXi install or upgrade. Broadcom does not publish a general definition of the screen. Treat it, and the related “No hypervisor found” error, as a sign that the host could not boot a working image. Look at the boot loader, the boot bank contents, the boot device and the firmware settings, in that order.

VMware Hypervisor Recovery: cause and fix table

SymptomLikely causeFixSource
UEFI host hangs at “VMware Hypervisor Recovery” right after upgrading to 7.0 Update 27.0 U2 boot loader loads EFI files in a way some firmware does not supportBoot the 7.0 U1 installer and copy its boot loader files to the boot partitionKB 324877
“No hypervisor found”Missing or corrupted ESXi files, failed SD card or disk, boot LUN lost, boot order or boot mode changedCheck boot mode (UEFI vs BIOS) and boot order, check hardware and storage, then reinstallKB 404825
Host fails or misbehaves after a patch or upgradeProblem with the new image in the active bankShift+R rollback to the build in the altbootbankKB 316592
Host silently reverts to the old build after an upgradeFaulty dual SD card RAID mirror, or not enough contiguous space to repartition for the 7.0 layoutMove to supported boot media, or clean install without a datastore on the boot deviceKB 418807, KB 426659
Upgrade precheck reports a vFAT bootbank problem, or PSOD while backing up vFAT partitionsCorrupted vFAT boot bank partitionsRepair the partitions with dosfsckKB 91136 (345227)
“Out of resources” when booting a newer release in legacy BIOS modeImage too large for legacy BIOS bootSwitch to UEFI on the old release first, then upgradeKB 84233 (313152)

UEFI boot hang after ESXi 7.0 Update 2 (KB 324877)

KB 324877 covers ESXi 7.0.x. Broadcom states that the way ESXi 7.0 U2 loads EFI files is not supported by some system firmware. The workaround replaces the boot loader on the system boot partition with the one from the 7.0 U1 installer. In outline:

  1. Boot the host from the ESXi 7.0 U1 installer ISO and open the shell with Alt+F1 (log in as root, no password).
  2. Identify the boot disk with ls /dev/disks and partedUtil getptbl. Partition 1 (systemPartition) is the boot partition.
  3. Back up the existing BOOTx64.EFI, mboot64.efi and safeboot64.efi, then copy the versions from /usr/lib/vmware/bootloader-installer onto the boot partition with mcopy.
  4. Reboot from the disk.

Follow the exact commands in the KB, because the device name differs on every host. This only applies to this 7.0 U2 case. It does not fix a damaged boot bank or a failed boot device.

Shift+R: roll back to the previous bootbank

KB 316592 describes the rollback for ESXi 6.x, 7.x, 8.x and ESX 9.x. Reboot the host and press Shift+R while the hypervisor progress bar is loading, not after it finishes. The KB suggests pressing it repeatedly once the “system is preparing to boot” message appears. ESXi then warns that the current hypervisor will be permanently replaced with the older build. Press Y to confirm and Enter to boot.

Rollback only works if the altbootbank still holds a different, working build. Before you rely on it, check the build= line of both banks from the ESXi Shell:

grep build= /bootbank/boot.cfg /altbootbank/boot.cfg
esxcli software profile get

Limits documented in KB 316592, KB 376175 and KB 386377:

  • Only one previous state (n-1) is kept. Each upgrade or VIB install or removal discards the older copy.
  • After the first reboot following an upgrade, any change that needs another reboot commits the new build to both banks. After that, rollback is gone.
  • In an HA cluster, exiting maintenance mode installs the FDM VIB. After an upgrade to 8.0 this discards the previous build (KB 386377). The workaround is to disable vSphere HA before the upgrade.
  • You cannot roll back from 7.0 to 6.x because the partition layout changed. Rollback between 7.0, 8.0 and 9.0 is possible.
  • Rollback does not revert the tools-light VIB, and it will not help if the boot device itself is failing.

VMware Hypervisor Recovery: “No hypervisor found”

KB 404825 lists the causes: missing or corrupted ESXi files, a failing SD card or disk, a power outage, a boot LUN lost through network or storage problems, a changed boot order, or a changed boot mode. Work through it in this order:

  1. Confirm the firmware is still in UEFI mode and the ESXi device is first in the boot order.
  2. Check the hardware logs (iDRAC, iLO, CIMC and similar) for a failed SD module, M.2 device or disk. For boot from SAN, have the storage team check the LUN and its paths.
  3. Try Shift+R if the other bank has a valid build.
  4. If nothing else works, reinstall ESXi (next section).

ESXi repair install: reinstall without losing VMs

Broadcom does not document a separate “repair” mode. The documented path is to boot the installer and run it over the existing installation. When the installer finds ESXi and a VMFS datastore on the selected disk, KB 392956 lists three options:

  • Upgrade ESXi, preserve VMFS datastore: upgrades the installation and keeps both the settings and the datastore.
  • Install ESXi, preserve VMFS datastore: fresh ESXi install that keeps the datastore. The host configuration is lost.
  • Install ESXi, overwrite VMFS datastore: wipes the installation and the datastore on that disk.

The TechDocs page for ESX 9.0 interactive upgrade adds that if the datastore cannot be preserved, you can only overwrite it or cancel. In that case, back up the datastore first.

A configuration backup can only be restored to the same build, so reinstall from the same build you backed up (KB 313510, KB 413897). If you need a specific ISO, see the download tip linked below.

Boot device causes

SD card and USB boot media

KB 85685 (now 317631) explains why SD/USB boot devices wear out on 7.0 and later: ESX-OSData takes constant writes and the wear cannot be monitored. SD/USB boot is still supported through VCF 9.0 on previously certified servers. Broadcom recommends a persistent device for OSData, or better, an SSD/NVMe boot device (8.x: 32 GB minimum, 128 GB recommended; 9.x: 128 GB minimum). KB 317891 lists the warnings 7.0 U3 and later raise without one. KB 413897 covers the migration: back up, reinstall the same build on the new disk, fix the boot order, restore.

Corrupted vFAT boot banks

If an upgrade precheck reports a vFAT bootbank problem, see the KB 91136 walkthrough linked below. It covers identifying the boot bank partitions with esxcli storage filesystem list and vmkfstools -P, then checking and repairing them with dosfsck in maintenance mode.

Legacy BIOS vs UEFI

KB 84233 (313152) warns that newer releases may fail to boot in legacy BIOS mode, for example with “Out of resources”. Switch to UEFI while still on the old release, reboot, fix any device naming issues, and only then upgrade. An unexpected BIOS/UEFI mode change is also listed as a cause in KB 404825.

Restore the configuration afterwards

After a clean install, restore the configuration bundle as described in KB 313510. The build must match the backup, and the host UUID should match. From 7.0 U2, a TPM-encrypted configuration cannot be force-restored to different hardware. The ESXi Shell workflow is:

# before the failure (or on a healthy host, regularly)
vim-cmd hostsvc/firmware/sync_config
vim-cmd hostsvc/firmware/backup_config

# on the reinstalled host, same build (check with: vmware -vl)
vim-cmd hostsvc/maintenance_mode_enter
# reboot, copy the bundle to /tmp/configBundle.tgz, then:
vim-cmd hostsvc/firmware/restore_config 0

The restore reboots the host automatically. KB 413897 notes that the bundle does not include SSH keys, custom scripts or third-party agents.

Preventing ESXi boot recovery problems

  • Boot from an endurance-rated SSD, NVMe or M.2 RAID device, not SD/USB. At minimum, give OSData a persistent device.
  • Run hosts in UEFI mode and switch before a major upgrade, not during it.
  • Schedule regular configuration backups with vim-cmd hostsvc/firmware/backup_config and keep the matching ISO for each build.
  • Check both boot bank builds before and after an upgrade. If you need a rollback option, validate the new build before any further reboot-requiring change, and consider disabling HA during the upgrade (KB 386377).
  • Do not create extra VMFS datastores on the boot device (KB 426659).

Sources

Related on vdan.cz

VCF 9 Certificate Management: Custom CAs, Auto-Renewal, and Host Onboarding

How a custom CA changes VCF 9 certificate operations: what Fleet Management auto-renews, what stays manual, and how new ESX hosts must be onboarded.

Short answer: In VCF 9, the certificate authority you choose decides who renews each certificate. Certificates signed by a CA configured in VCF Operations (VMCA, Microsoft CA or OpenSSL CA) can be renewed manually or automatically from Fleet Management, 60 days before expiry. Certificates signed by an external CA that you import are yours to renew. And once ESX hosts get CA-signed certificates through Fleet Management, vCenter switches to custom certificate mode, so every new host needs a CA-signed certificate before you commission it.

Part of the series “vCenter and VCF Certificate Management: Diagnosis, Renewal, and Operations”: vCenter Certificate Auto-Renewal: When You Still Need vCert (start here) · STS_INTERNAL_SSL_CERT Explained: What vCert’s LEGACY Result Means · vCenter Certificate Alarm After Renewal? Check the Backup Stores

Where certificate management lives in VCF 9

Fleet-wide certificate work is done in the VCF Operations console. The menu path depends on the version of the documentation you follow:

  • VCF 9.0: Fleet Management > Certificates, then VCF Management (fleet components) or VCF Instances and pick an instance or domain.
  • VCF 9.1: Manage in the top navigation bar, then Fleet management > Certificates in the left pane. The same VCF Management / VCF Instances split applies.

The scope split matters. The CA and the auto-renewal setting are configured separately for VCF management components (VCF Operations, VCF Automation, identity broker, logs, networks, fleet management services) and for each VCF Instance (vCenter, ESX, NSX Manager, SDDC Manager). Three instances means three instance-level CA configurations to keep consistent. The same screens show certificates and Certificate Alerts, and let you generate CSRs, import and replace; 9.1 adds bulk operations.

Configured CA versus imported certificate

This is the distinction that drives the whole operating model. The VCF 9.1 documentation lists three configured CA types:

  • VMCA: the default signing CA, embedded in vCenter.
  • Microsoft CA (AD CS): integrated through the /certsrv web enrollment URL, a least-privileged service account and a certificate template you create on the CA.
  • OpenSSL CA: the CA embedded in SDDC Manager.

Scope is version-specific. The VCF 9.0 “Configure a Certificate Authority” page says that VCF management components support only Microsoft CA, while VCF Instance components support Microsoft CA and OpenSSL. The VCF 9.0 blog adds that the Fleet Management appliance acts as the CA for the management components when you leave them at their defaults. In 9.1, check the supported combinations for your build before you standardise.

Anything else counts as an external CA: a public CA, or an enterprise PKI that is not wired into VCF Operations. The 9.1 documentation is explicit about what that means in practice:

Operation in VCF OperationsConfigured CAExternal CASelf-signed
Generate CSR / importYesYesNo
Manual renewYesNoNo
Auto-renewYesNoNo
Replace with VMCA-signed (9.1.1+)YesYesYes
Auto-replace with VMCA before expiry (9.1.1+)n/aYesNo
Monitor for expiryYesYesYes

Summarised from the VCF 9.1 “Managing Certificates in VMware Cloud Foundation” page.

So an imported certificate is monitored but not renewed. For an external CA the cycle is manual: generate a CSR, have it signed outside VCF, import it (base64 .crt, .cer, .pem, .p7b or .p7c), then use Replace with imported certificate. Expired certificates cannot be replaced, so this must happen before expiry. The 9.1.1 auto-replace with VMCA is a fallback that changes the issuer, which your security team may not accept.

What auto-renewal actually covers

When you use Activate Auto-renewal at the management or instance level, VCF renews TLS certificates that meet two conditions: they were signed by a configured CA, and the component supports non-disruptive certificate (NDC) updates. Renewal starts 60 days before expiry. The 9.0 documentation lists the NDC-managed certificates: ESX SSL, vCenter machine SSL, NSX Manager (local manager and VIP), SDDC Manager, VCF Identity Broker, VCF Operations, VCF Automation, VCF Operations for logs, VCF Operations for networks, and Fleet Management.

Limits to plan around:

  • Microsoft CA and OpenSSL auto-renewal needs the CA configured first. A Microsoft CA must be reachable from VCF Operations and time-synchronised with SDDC Manager.
  • Root and intermediate certificates are never renewed.
  • In 9.1, if a certificate is already inside the 60-day window, renew it manually before you turn auto-renewal on.
  • System-managed certificates, such as internal certificates without a customer-facing API, are renewed by their own component. VCF Operations only monitors them and raises an alert if that renewal fails.
  • vCenter also has its own native auto-renewal (vCenter 8.0 U3h / VCF 9.0.2 and later). According to KB 427937, it renews ESXi certificates 10 days before expiry (vpxd.certmgmt.certs.autoRenewThreshold) and the machine SSL certificate 5 days before, and it does not work when the certificate mode is custom. For VCF, Broadcom recommends configuring the CA in Fleet Management instead. The auto-renewal article in this series covers the vCenter side.

Custom certificate mode and new ESX hosts

This is the part that catches teams during expansion. KB 427937 says that the first time you configure an ESX host with a CA-signed certificate through Fleet Management, vCenter’s vpxd.certmgmt.mode advanced setting changes to custom. As a result, you must apply a CA-signed certificate to new hosts before you commission them. KB 417983 adds that the switch happens even when the replacement certificate comes from VMCA, because vCenter does not allow ESX certificate changes outside custom mode. After the switch, vCenter raises the alarm “When ESXi Certificate Mode is set to custom it is mandatory to add the custom CA certificates to vCenter trusted root store before updating the host certificates”. The KB treats this as expected and says you can reset it to green.

In custom mode, vCenter no longer provisions VMCA certificates to hosts, and certificate management becomes your responsibility (see vSphere 9.0 “Change the ESX Certificate Mode”). If you try to commission a host that still has its default certificate, it can fail validation with Host SSL certificate is not trusted by SDDC Manager / SDDC_TRUST_HOST_SSL_CERT_FAILED (KB 415767, VCF 5.2.x and 9.x). The commissioning documentation states the same rule for deployments done with external ESX certificates: all hosts added later must also use external certificates.

A repeatable onboarding procedure for a fleet in custom mode:

  1. Check the mode on the target vCenter: Configure > Advanced Settings, filter on vpxd.certmgmt.
  2. Prepare the host as usual: DNS forward and reverse records, host name equal to the FQDN, self-signed certificate regenerated for the FQDN.
  3. Issue a certificate for the host from the same CA chain the rest of the domain uses. Include the FQDN in the SAN; in 9.1, VCF Operations requires both the FQDN and the IP in the SAN for certificates it generates or imports.
  4. Install it on the host (/etc/vmware/ssl/rui.crt and rui.key, then restart hostd and vpxa), following “Configure ESX Hosts with Signed Certificates”.
  5. Make sure the issuing root and any intermediates are trusted by vCenter and SDDC Manager, then commission the host.
  6. After the host is added, confirm it appears under the instance in Fleet Management with Show ESX Hosts turned on, and that it falls under auto-renewal if its issuer is a configured CA.

KB 415767 also describes a workaround for environments that moved to external certificates after bring-up: temporarily set the mode back to vmca, commission the host, then revert. The new host then carries a VMCA certificate that you still have to replace, so treat this as an exception.

Certificate ownership matrix

A template to complete for your own fleet. Rows reflect the documented behaviour described above. Where the documentation does not settle a cell for every deployment, the cell says “check your deployment”.

ComponentIssuerRenewal mechanismMonitoringOnboarding procedure
vCenter machine SSLVMCA, Microsoft CA or OpenSSL CA (configured)Fleet Management auto-renewal, 60 days before expiry (NDC)Fleet Management > Certificates, Certificate AlertsReplace with configured CA certificate at instance level
ESX host SSLConfigured CA (mode switches to custom)Fleet Management auto-renewal (NDC)Certificate Alerts, Show ESX Hosts; vCenter host certificate alarmsCA-signed certificate on the host before commissioning
NSX Manager (LM and VIP)Configured CAFleet Management auto-renewal (NDC)Certificate AlertsCheck your deployment
SDDC ManagerConfigured CAFleet Management auto-renewal (NDC)Certificate AlertsCheck your deployment
VCF Operations, Automation, logs, networks, identity broker, Fleet ManagementVCF 9.0: Microsoft CA or Fleet Management default CA; 9.1: check your deploymentManagement-level auto-renewal (NDC)Certificate Alerts (VCF Management)Check your deployment
Any component with an imported external-CA certificateExternal / public CAManual: CSR, sign, import, replace, before expiryExpiry monitoring in VCF OperationsYour PKI process; record the owner and expiry date
System-managed internal certificatesComponent-internalRenewed by the component itselfVCF Operations alerts on failed renewalCheck your deployment

In your own copy, add a named owner and the CA template used for each row. Use the same CA settings (URL, template, service account) in every VCF Instance, and keep imported external-CA certificates to a minimum, because each one is a manual renewal. If the CA wizard fails in VCF 9.0, see the KB 406901 write-up.

Sources

Related on vdan.cz

vCenter Certificate Auto-Renewal: When You Still Need vCert

vCenter 8.0 U3h and VCF 9.0.2 renew VMCA Machine SSL and ESXi certificates automatically. What is covered, which thresholds apply, where vCert fits.

Short answer: Partly. From vCenter 8.0 Update 3h and VCF 9.0.2, vCenter renews VMCA-issued Machine SSL and ESXi host certificates automatically, but only when vpxd.certmgmt.mode is vmca, and only just before expiry: 5 days for Machine SSL, 10 days (configurable) for ESXi. Solution user, STS signing, externally issued and legacy-store certificates are not covered. You still need to know which mechanism owns each certificate, and keep vCert ready for recovery.

Part of the series “vCenter and VCF Certificate Management: Diagnosis, Renewal, and Operations”: this article is the entry point. Troubleshooting: STS_INTERNAL_SSL_CERT Explained: What vCert’s LEGACY Result Means and vCenter Certificate Alarm After Renewal? Check the Backup Stores. Fleet operations: VCF 9 Certificate Management: Custom CAs, Auto-Renewal, and Host Onboarding.

What changed in 8.0 U3h and VCF 9.0.2

Before vCenter 8.0 Update 3h, an expiring VMCA-issued Machine SSL certificate was an administrator task. If nobody acted, the certificate expired and services such as vpxd-svcs and sps stopped starting. Broadcom KB 396907 describes that failure and the manual fix with vCert.

The vCenter 8.0 U3h and VCF 9.0.2 release notes add native auto-renewal for two certificate types:

  • vCenter Machine SSL: extended by 2 years once fewer than 5 days remain.
  • ESXi host SSL: extended by 5 years once fewer than 10 days remain. This applies to hosts that support non-disruptive certificate renewal. The 8.0 U3h notes limit it to ESXi 8.0 Update 3 and later.

Both renewals apply only to certificates that VMCA issues. Both stop working if the vCenter advanced setting vpxd.certmgmt.mode is custom. KB 427937 adds that vCenter services are not restarted during the renewal.

Three renewal mechanisms, not one

“Auto-renewal” can mean three separate things, and they have different thresholds and eligibility rules. Before you trust any of them, check which one owns the certificate in front of you.

MechanismCoversWhen it renewsConditionSource
Native vCenter, Machine SSLvCenter Machine SSL certificate issued by VMCA5 days before expiry; fixed, not configurablevpxd.certmgmt.mode = vmca; vCenter 8.0 U3h+ or VCF 9.0.2+KB 427937, 8.0 U3h and 9.0.2 release notes
Native vCenter, ESXiESXi host certificates issued by VMCA10 days before expiry (8.0 U3h / 9.0.2); configurable via vpxd.certmgmt.certs.autoRenewThresholdvmca mode; host supports non-disruptive renewalKB 427937, release notes
VCF Operations Fleet ManagementVCF components with VMCA, Microsoft CA, OpenSSL or self-signed certificates that support non-disruptive updates60 days before expiryAuto-renewal toggle turned on per VCF Management or per VCF Instance; for Microsoft CA or OpenSSL, a CA configured firstKB 427937, VCF 9.0 TechDocs

One side effect is easy to miss. KB 427937 says that the first time you give an ESXi host a CA-signed certificate through Fleet Management, vCenter switches vpxd.certmgmt.mode to custom. After that, new hosts need a CA-signed certificate before you commission them, and the native vCenter renewal in the first two rows stops applying. Fleet Management and native renewal are alternatives, not layers. Article 4 of this series covers the Fleet Management side.

The ESXi threshold depends on version and source

Published values for the native ESXi renewal threshold differ:

SourceVersionESXi renewal threshold
vCenter 8.0 U3h release notesvCenter 8.0 U3hfewer than 10 days
VCF 9.0.2 vCenter release notesVCF 9.0.2fewer than 10 days
KB 427937vCenter 8.0 U3h, VCF/VVF 9.0.210 days, changeable with vpxd.certmgmt.certs.autoRenewThreshold
“What’s New with vSphere in VCF 9.1” (VMware blog, May 2026)vSphere in VCF 9.130 days, configurable with the same setting

The most likely explanation is that the default changed in 9.1, but I have not found release notes that state this directly. Don’t rely on either number. Check the value your vCenter actually uses:

  1. In the vSphere Client, select the vCenter Server and open Configure > Settings > Advanced Settings.
  2. Filter on vpxd.certmgmt.
  3. Check vpxd.certmgmt.mode. It must be vmca for native renewal.
  4. Check vpxd.certmgmt.certs.autoRenewThreshold (days). Broadcom does not say whether this key is listed when it has never been set. If it is missing, assume the documented default for your version.
  5. While you are there, note vpxd.certmgmt.certs.hardThreshold. TechDocs gives it a default of 30 days and describes it as the point where vCenter raises a red alarm.

Why the alarm fires before renewal is due

KB 427937 says the certificate pre-expiration alarm fires 30 days before expiry by default. KB 397104 ties the Certificate Status alarm to vpxd.cert.threshold and vpxd.certmgmt.certs.hardThreshold, both 30 by default. Native renewal does not start until 5 days (Machine SSL) or 10 days (ESXi, 8.0 U3h / 9.0.2) before expiry. That means a healthy, eligible certificate can keep a red alarm raised for about three weeks before renewal happens.

KB 427937 also says renewal follows the certificate’s expiration date, not the time the alarm fired. You have two options: renew early yourself, or confirm eligibility and let the alarm run its course. What you must not do is assume the alarm will clear on its own. It will not if the certificate is not eligible, for example a solution user certificate (KB 397104). It also will not clear if the certificate that triggers it lives in a store that renewal never touches. Article 3 covers the BACKUP_STORE case.

Where auto-renewal does not help, and vCert does

  • An expired Machine SSL certificate. If the vCenter is below 8.0 U3h, or the certificate already expired while in custom mode, KB 396907 still points to manual replacement with vCert (Manage certificates > Machine SSL certificate) followed by a restart of all services.
  • Solution user certificates. KB 397104 resolves expiring solution user certificates by replacing them, for example with vCert. Native renewal covers only Machine SSL and ESXi.
  • Legacy STS configuration. On vCenters upgraded from 6.x, the STS service can still use the old STS_INTERNAL_SSL_CERT store, and Machine SSL renewal never updates it. See article 1.
  • STS signing certificate. This is a separate certificate with its own failure pattern (“no healthy upstream”). See the STS signing certificate guide.
  • Externally issued certificates. The VCF 9.1 vSphere blog is explicit that certificates from an external CA are not auto-renewed natively. The administrator owns them, or Fleet Management does in VCF.
  • Trust problems and health checks. Stale trusted roots, mismatched trust anchors and certificates left in unused stores do not expire into an outage on a schedule, so no renewal job fixes them. A regular vCert health check (option 1) after each upgrade finds them. The vCert guide explains how to read the report.

The same blog notes that in 9.1 the VMCA root and its solution user certificates are renewed during a vCenter upgrade if the root expires in less than a year. Machine SSL and ESXi certificates are not renewed in that step.

A quick eligibility check

To see what is actually in VECS and when each entry expires, KB 396907 gives this loop. Run it on the vCenter appliance shell:

for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; sudo /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done

Illustrative output (placeholder dates, trimmed):

STORE MACHINE_SSL_CERT
Alias : __MACHINE_CERT
            Not After : <date within 30 days>   <- alarm raised; native renewal at 5 days if mode = vmca
STORE STS_INTERNAL_SSL_CERT
Alias : __MACHINE_CERT
            Not After : <date>                   <- legacy store; not touched by renewal (see article 1)
STORE BACKUP_STORE
Alias : bkp___MACHINE_CERT
            Not After : <past date>              <- old copy; see article 3

For each certificate that expires soon, answer three questions: who issued it (VMCA or external), which mechanism owns it (native, Fleet Management or nobody), and does that mechanism’s condition hold. If the answer to the second question is “nobody”, renew it yourself with vCert, or through Fleet Management in VCF.

So, can you stop renewing manually?

For VMCA-issued Machine SSL and ESXi certificates on a vCenter in vmca mode: mostly yes, provided you accept an alarm that fires weeks before the renewal. For everything else, including VCF components with a custom CA, solution users, STS and legacy stores: no. Those need an owner, a monitor and a tested recovery procedure.

Sources

Related on vdan.cz

STS_INTERNAL_SSL_CERT Explained: What vCert’s LEGACY Result Means

Renewed Machine SSL but port 3128 still shows an old cert? What vCert’s LEGACY STS result means and how to move STS to MACHINE_SSL_CERT.

Short answer: STS_INTERNAL_SSL_CERT is a legacy VECS store that older vCenter releases used for the Security Token Service (STS) TLS listener. After an upgrade, the STS service can still point at that store, so renewing the Machine SSL certificate does not change what STS presents on port 3128. vCert reports this as LEGACY. Broadcom’s fix is to switch the STS configuration to MACHINE_SSL_CERT with vCert, restart vmware-stsd, and then remove the old store (KB 423742, KB 424604).

Part of the series “vCenter and VCF Certificate Management: Diagnosis, Renewal, and Operations”: vCenter Certificate Auto-Renewal: When You Still Need vCert (start here) · vCenter Certificate Alarm After Renewal? Check the Backup Stores · VCF 9 Certificate Management: Custom CAs, Auto-Renewal, and Host Onboarding

The symptom: new Machine SSL certificate, old STS certificate

The usual sequence goes like this. You replace or renew the Machine SSL certificate, the vSphere Client shows the new certificate on 443, and everything looks healthy. Then a vulnerability scanner flags an expired or soon-to-expire certificate on port 3128, or an identity-related compliance check fails. Or you run vCert and the STS configuration check comes back as LEGACY.

Nothing went wrong with the renewal. There are simply two different certificate sources involved, and the one on 443 is not the one STS is using.

Where STS_INTERNAL_SSL_CERT comes from and why it survives upgrades

In vCenter 6.x and earlier, the vmware-stsd service took its TLS certificate from a dedicated VECS store named STS_INTERNAL_SSL_CERT. Upgrades migrate that configuration so that STS keeps working, which means the old store reference can live on for years. Broadcom’s sources describe the origin slightly differently:

  • KB 423742: usually left behind after upgrading from vCenter 5.5 or 6.x to 7.x or 8.x.
  • The vCert KB 385107: the legacy store is present if the system was upgraded from 5.5; greenfield 6.x/7.x deployments use MACHINE_SSL_CERT.
  • KB 316625: found on appliances that were originally Windows vCenter Servers and were later migrated to the VCSA. According to that KB, new 8.x deployments do not have this store.

So the practical rule is simple: if the vCenter has a long upgrade history, check for it. KB 423742 also explains why it causes trouble. Newer vCenter versions do not refresh this store when the Machine SSL certificate is renewed, so the certificate inside it can expire without anyone noticing. On 7.x/8.x, the STS store reference is defined in /usr/lib/vmware-sso/vmware-sts/conf/server.xml (KB 316625). On vCenter 9.0 and later, STS runs on an embedded Tomcat and the reference moved to /usr/lib/vmware-sso/vmware-sts/conf/catalina.properties (KB 438122).

STS TLS certificate vs. STS signing certificate

These two are often confused because both have “STS” in the name. They are different objects with different jobs, and vCert handles them in different menus.

STS TLS (server) certificateSTS signing certificate
PurposeSecures the TLS connection to the STS listenerSigns SAML tokens issued by SSO
Where it livesMACHINE_SSL_CERT (expected) or legacy STS_INTERNAL_SSL_CERT in VECSTenantCredential entries in VMware Directory
Who sees itAnything connecting to port 3128, including scannersServices validating SSO tokens
vCert: check/view5. Check configurations → 2. Check STS server certificate and configuration2. View certificate info → 8. STS signing certificates
vCert: fixSwitch STS to MACHINE_SSL_CERT and restart vmware-stsdReplace the STS signing certificate (Manage certificates)
Symptom when expiredScanner/compliance finding on 3128Login failures, “No Healthy Upstream”

A LEGACY result is about the left column only. If users cannot log in and the vSphere Client shows “No Healthy Upstream”, you are looking at the signing certificate instead; see vCenter STS signing certificate expiration.

How to read the vCert configuration check

If you have not used vCert yet, start with installing and using the vCert tool. The main menu option 1. Check current certificate status checks certificate health, meaning expiry, SAN and key usage. It does not tell you which store STS reads from. That question is answered by 5. Check configurations → 2. Check STS server certificate and configuration. This check does two things (KB 385107):

  1. It checks which VECS store the STS service is configured to use. Anything other than MACHINE_SSL_CERT is reported as LEGACY, and vCert offers to update the configuration and restart the service.
  2. It checks the vmwSTSConnectionStrings attribute in VMware Directory. A standalone vCenter should reference its own hostname; a node in Enhanced Linked Mode should reference localhost. If the value is wrong, vCert prompts you to correct it.

Inspect what port 3128 actually presents

KB 423742 identifies the STS listener as port 3128 and gives this command to run on the appliance:

openssl s_client -connect localhost:3128 -showcerts

For a shorter comparison, you can pipe the output through standard openssl x509 and put it side by side with the Machine SSL certificate on 443. This is plain OpenSSL usage, not a Broadcom-specific procedure:

for p in 443 3128; do
  echo "== port $p"
  openssl s_client -connect localhost:$p </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -enddate
done

To see whether the legacy store exists and what its entry expires, use the VECS listing from KB 424604 / KB 316625:

for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done

Broadcom’s workflow: KB 423742 and KB 424604

There are two KBs, and they cover two stages. KB 423742 (“STS_INTERNAL_SSL_CERT replacement using vCert”) switches the STS configuration interactively through the vCert menu. KB 424604 (“Removing STS_INTERNAL_SSL_CERT from vCenter Server with vCert”) removes the store, with a Lookup Service check first. Both apply to vCenter 7.x and 8.x, and both restart vmware-stsd. Combined, the procedure is:

  1. Take a backup or snapshot. KB 424604 makes an offline snapshot mandatory. In Enhanced Linked Mode, take offline snapshots of all nodes.
  2. Check the Lookup Service with lsdoctor: python lsdoctor.py -l. If it finds stale registrations, run python lsdoctor.py -s (stale configuration left over from 5.x) and then python lsdoctor.py -t (SSL trust mismatch). See the lsdoctor guide, and note that KB 320837 requires a service restart after -s and -t.
  3. Run vCert. Either use the menu (./vCert.py → 5 → 2, then SSO administrator credentials) as in KB 423742, or run the check directly as in KB 424604: python vCert.py --run config/check_config/sts_config/op_check_sts_config.yaml
  4. Answer y to “Update STS server configuration to use the MACHINE_SSL_CERT store?”
  5. Answer y to “Restart service(s) vmware-stsd”.
  6. Validate: port 3128 should now present the Machine SSL certificate, and the vCert check should no longer say LEGACY.

Do not delete the store by hand first. KB 316625 warns that removing STS_INTERNAL_SSL_CERT while server.xml still references it stops STS from starting, and the other vCenter services then fail with it. The configuration change always comes before the removal. That KB (and KB 438122 for vSphere 9.x) documents script and manual alternatives in case vCert is not an option.

Annotated example: before and after

Illustrative example only. Host names and dates are placeholders. The LEGACY line follows the format shown in KB 423742. Your vCert version may word the post-fix line differently.

# BEFORE - vcsa01.lab.local, upgraded from 6.x
== port 443
subject=CN = vcsa01.lab.local
issuer=CN = CA, DC = vsphere, DC = local, ...
notAfter=<new date, e.g. 2028>          <-- renewed Machine SSL, fine
== port 3128
subject=CN = vcsa01.lab.local
issuer=CN = CA, DC = vsphere, DC = local, ...
notAfter=<old date, already past>     <-- what the scanner reports

vCert: 5. Check configurations -> 2. Check STS server certificate and configuration
Checking STS Server Configuration
-----------------------------------------------------------------
Checking VECS store configuration                          LEGACY
                                    ^-- STS reads STS_INTERNAL_SSL_CERT, not MACHINE_SSL_CERT
Update STS server configuration to use the MACHINE_SSL_CERT store? [y/n]: y
Restart service(s) vmware-stsd [y/n]: y

# AFTER
== port 3128
subject=CN = vcsa01.lab.local
notAfter=<same date as port 443>       <-- 3128 and 443 now match
vCert STS check: no longer LEGACY           <-- configuration uses MACHINE_SSL_CERT
vecs-cli store list: no STS_INTERNAL_SSL_CERT entry (after KB 424604 removal)

A short checklist after the change: the 3128 and 443 certificates should have the same expiry date, vmware-stsd should be running, a vSphere Client login should work, and the scanner should be clean on its next pass. KB 423742 also says that once STS uses the Machine SSL store, later Machine SSL renewals carry over to STS as expected. For how renewals themselves are scheduled and monitored, see vCenter Certificate Auto-Renewal: When You Still Need vCert. If an expiry alarm still points at an old certificate after the fix, check the BACKUP_STORE article.

Sources

Related on vdan.cz

vCenter Certificate Alarm After Renewal? Check the Backup Stores

Why a vCenter certificate alarm can point to an old rollback copy in BACKUP_STORE or BACKUP_STORE_H5C, and how to verify and clear it with vCert.

Short answer: the Certificate Status alarm checks every store in VECS, not only the certificates vCenter actively uses. Replacing certificates saves the old ones in BACKUP_STORE and BACKUP_STORE_H5C so you can roll back, and when those copies expire they can raise the alarm. Find out which store and alias the alarm refers to. Confirm the active Machine SSL and solution user certificates are valid. Then use vCert to clear the expired backup entries. Your vCenter version decides which backup store can still raise the alarm.

Part of the series “vCenter and VCF Certificate Management: Diagnosis, Renewal, and Operations”: vCenter Certificate Auto-Renewal: When You Still Need vCert (start here) · STS_INTERNAL_SSL_CERT Explained: What vCert’s LEGACY Result Means · VCF 9 Certificate Management: Custom CAs, Auto-Renewal, and Host Onboarding

Why a renewal leaves certificates behind

A Machine SSL or solution user replacement on the vCenter Server Appliance doesn’t simply discard the old certificate. According to KB 326268, the replacement creates two VECS stores, BACKUP_STORE and BACKUP_STORE_H5C. The old certificates go into them so the change can be reverted. The vSphere documentation describes BACKUP_STORE as the store that supports certificate revert. It keeps only the most recent state, so you can go back one step and no further.

Nothing removes these entries automatically. They keep their original validity dates. The certificate you replaced a year ago still sits in the backup store, and its expiry date keeps getting closer. vCenter watches all VECS stores (KB 318973). When a backup copy nears or passes its expiry date, you can get a Certificate Status alarm even though every certificate vCenter actually uses is fine.

Step 1: find the store the alarm refers to

Before you change anything, find out which certificate raised the alarm. KB 318973 documents the vpxd warning that the expiry check writes. The warning includes the certificate subject and the VECS store name:

grep "will expire on" /var/log/vmware/vpxd/vpxd.log | tail -20

# Message format documented in KB 318973:
# ... opID=CheckCertificateExpiry-... Certificate [Subject: <Certificate Subject>] from store <VECS Store Name> will expire on YYYY-MM-DD HH:MM:SS

If the store is MACHINE_SSL_CERT or a solution user store, the problem is real and you need to renew. If it is BACKUP_STORE or BACKUP_STORE_H5C, read on.

Step 2: compare active and backup certificate expiry

Run this over SSH as root to list the alias and the “Not After” date for every store except TRUSTED_ROOT_CRLS. KBs 318973 and 326268 both use it:

for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not After";done;

To check only the two backup stores:

/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE --text | grep -ie "Alias" -ie "Not After"
/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE_H5C --text | grep -ie "Alias" -ie "Not After"

Compare the results with the active stores. MACHINE_SSL_CERT holds the __MACHINE_CERT alias. The solution user stores are machine, vpxd, vpxd-extension, vsphere-webclient and, depending on the version, hvc and wcp. Backup aliases have a bkp_ prefix, for example bkp___MACHINE_CERT or bkp_vpxd. If the active entries show future dates and only bkp_* entries have expired, the alarm is about a rollback copy.

Menu option 1 in vCert, “Check current certificate status”, gives the same view. It has its own “Checking BACKUP_STORE entries” section. The excerpt below is illustrative and follows the format shown in KB 425134:

# Illustrative example - vcsa01.lab.local, not real output
Checking Machine SSL certificate                 VALID
Checking Solution User certificates:
   machine                                       VALID
   vpxd                                          VALID
   vpxd-extension                                VALID
   vsphere-webclient                             VALID
Checking BACKUP_STORE entries:
   bkp___MACHINE_CERT                            EXPIRED   <-- old rollback copy
   bkp_machine                                   VALID
   bkp_vpxd                                      VALID

Step 3: know how your version behaves

This is where the version matters. The KBs describe it this way:

  • KB 326268 (applies to vCenter 6.x, 7.x, 8.x): from vCenter Server 7.0 Update 3 and in 8.0, an expired certificate in BACKUP_STORE no longer raises the alarm. An expired certificate in BACKUP_STORE_H5C still does, and you have to delete it to clear the alert.
  • KB 425734: vCert can flag BACKUP_STORE certificates that are expiring or expired. The KB says this has no impact on the system. Wait until they expire and then remove them with vCert, or open a support case if you want them removed earlier.
  • KB 445656 (7.x and 8.x): the backup entries are historical, inactive copies. The KB still recommends clearing them with vCert to prevent Certificate Status alarms.
  • KB 425134: expired BACKUP_STORE entries reported by vCert can also appear during vCenter upgrade prechecks. The fix is the same vCert cleanup.

So don’t assume every certificate warning is a false alarm, and don’t assume every one needs a renewal. On 7.0 U3 or 8.0, an alarm that persists while BACKUP_STORE is the only store with expired entries means you should keep looking. Check BACKUP_STORE_H5C and the other stores, and check the store name in vpxd.log. On older builds, an expired BACKUP_STORE entry alone can explain the alarm.

Troubleshooting table: store, active status, action

Store with expired/expiring entryActive Machine SSL / solution usersCan it raise the alarm?Action
MACHINE_SSL_CERT or solution user storeExpired or expiringYes. This is a real issue.Renew first (vCert option 3 or vSphere Client). Leave the backups alone until the new certificates work.
Any backup storeExpired or expiringYesTreat it as a real issue. Fix the active certificates first. The backup is your rollback path.
BACKUP_STOREValidBefore 7.0 U3: yes. 7.0 U3 and 8.0: not for expired entries (KB 326268).Clear the expired entries with vCert 3 → 12. On 7.0 U3/8.0, if the alarm persists, look for another store.
BACKUP_STORE_H5CValidYes, including 7.0 U3 and 8.0 (KB 326268)Clear the expired entries with vCert 3 → 12. vCert cleans this store too when it exists.
BACKUP_STORE, entries only approaching expiryValidReported by vCert. KB 425734 says there is no impact.Wait until they expire and then clear them, or ask Broadcom Support to remove them early.
MACHINE_SSL_CERT, alias __MACHINE_CSRValidYes (KB 318973)This is an old CSR entry. Clear it with vCert 3 → 14 or the KB 318973 command.
TRUSTED_ROOTS, SMS, STS_INTERNAL_SSL_CERT, othersValidYesDifferent cause. See KB 318973 and the STS_INTERNAL_SSL_CERT article.

Step 4: clear the backup stores with vCert

vCert is documented in KB 385107. The menu numbers below are from vCert 6.1.2, the version current in that KB when this post was written. Check them against the version you run. For installation, see my vCert guide.

  1. Take a VAMI file-based backup or a snapshot of the vCenter. In Enhanced Linked Mode, take powered-off snapshots of all vCenter nodes in the SSO domain.
  2. Optional: export the entry you are about to remove (KB 318973):
    /usr/lib/vmware-vmafd/bin/vecs-cli entry getcert --store BACKUP_STORE --alias bkp___MACHINE_CERT --output /root/old_machine.crt
  3. Run ./vCert.py, then choose 3. Manage certificates and then 12. Clear expired certificates in BACKUP_STORE in VECS. KB 385107 says this option clears expired entries in BACKUP_STORE, and in BACKUP_STORE_H5C if that store exists.
  4. Verify the result. Run vCert 1. Check current certificate status again, or rerun the vecs-cli loop. No expired bkp_* entries should remain.
  5. If an alarm still shows after the stores are clean, reset it to green in the vSphere Client. KB 423484 notes that the alarm does not clear by itself after a certificate fix.

If vCert doesn’t clear an entry, KB 326268 gives a manual fallback. List the store, note the alias, and delete that one entry:

/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE
/usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE --alias <cert_alias>

According to the vecs-cli reference, entry delete removes the entry from VECS permanently. Delete only the aliases you identified as expired backup copies. Never delete entries from the active stores, and don’t touch TRUSTED_ROOT_CRLS unless a KB tells you to.

Preventing a repeat

Every Machine SSL or solution user replacement leaves another backup copy behind. Once you have confirmed that the new certificates work, add a backup-store check to your runbook. This matters most when renewal is automated or done in batches, as covered in the auto-renewal article. On VCF 9, fleet-level certificate operations are covered in the custom CA article.

Sources

Related on vdan.cz

ESXi Shell Commands You Actually Use (ESXi 8 and ESX 9)

The ESXi shell commands admins really run over SSH, grouped by task: esxcli, vim-cmd, vmkping, esxtop and agent restarts, checked for ESXi 8 and ESX 9.

Short answer: the ESXi Shell commands you actually use fall into a small set: esxcli for host, network, storage and software state, vim-cmd for VMs when hostd works, vmkping for VMkernel connectivity and MTU tests, esxtop for live performance, and /etc/init.d/hostd restart or /etc/init.d/vpxa restart for stuck management agents. Enable SSH only for troubleshooting. Every esxcli command below exists in ESX 9.0 and in ESXi 8.0 U3 unless noted otherwise.

This is a curated list, grouped by task, not a full reference. For the complete namespace tree see ESXCLI commands for ESXi 8.0 and ESXCLI commands for ESX 9.0. Commands were checked against Broadcom’s ESXCLI Command Reference (8.0.3, 9.0.0 and 9.1.0); non-esxcli commands are taken from the Broadcom KB articles cited in each section. Placeholders: vmk0, vmnic0, datastore1, 10.0.0.10, naa.xxx.

Enable the ESXi Shell and SSH

The ESX Shell is deactivated by default and Broadcom recommends activating it for troubleshooting only. The shell is independent of lockdown mode: if the service is running, you can still log in to it even when the host is in lockdown mode. Two services matter: ESXi Shell (local console, Alt+F1) and SSH (remote, TCP 22).

  • vSphere Client: select the host, Configure > System > Services, select SSH or ESXi Shell, Edit Startup Policy > Start and stop manually, then Start.
  • Host Client: Manage > Services, select TSM (ESXi Shell) or the SSH service, Actions > Start.
  • DCUI: F2 > Troubleshooting Options > Enable ESXi Shell / Enable SSH. The same menu has Modify ESXi Shell and SSH timeouts.

Set a timeout so the service does not stay open. The availability timeout is the advanced option UserVars.ESXiShellTimeOut (seconds, 0 = disabled). To check SSH daemon settings from the shell:

esxcli system settings advanced list -o /UserVars/ESXiShellTimeOut
esxcli system ssh server config list

Sources: KB 311213 (Using ESXi Shell in ESXi), TechDocs Using the ESX Shell (9.0).

Host info and version

TaskCommand
Version and buildvmware -vl
Version, build, update levelesxcli system version get
Hostname and FQDNesxcli system hostname get
Vendor, model, serialesxcli hardware platform get
CPU packages, cores, threadsesxcli hardware cpu global get
Physical memoryesxcli hardware memory get
Uptime (microseconds)esxcli system stats uptime get
Time and NTPesxcli system time get; esxcli system ntp get
Boot deviceesxcli system boot device get
Disk and ramdisk usagedf -h; vdf -h

vmware -v / vmware -vl come from KB 345263 (determining the build number) and KB 323110; df -h and vdf -h (ramdisk usage, useful when /, /tmp or /var/log is full) from KB 318926 (investigating disk space).

Maintenance mode and reboot

esxcli system maintenanceMode get
esxcli system maintenanceMode set --enable true
esxcli system shutdown reboot --reason "Patching"
esxcli system maintenanceMode set --enable false

esxcli system shutdown reboot and poweroff take a --reason; the reference states the host must be in maintenance mode. On vSAN hosts, --vsanmode controls data evacuation; decide it before you enter maintenance mode, not after. Take a configuration backup first (vim-cmd hostsvc/firmware/sync_config then vim-cmd hostsvc/firmware/backup_config, KB 313510; details in Backup and restore ESXi host configuration data).

Networking

TaskCommand
Physical NICs, link, speed, driveresxcli network nic list
NIC details, firmware, driver versionesxcli network nic get -n vmnic0
NIC counters and errorsesxcli network nic stats get -n vmnic0
VMkernel interfaces, MTU, netstackesxcli network ip interface list
vmk IPv4 addressesesxcli network ip interface ipv4 get
vmk service tags (Management, vMotion…)esxcli network ip interface tag get -i vmk0
Routing tableesxcli network ip route ipv4 list
DNS serversesxcli network ip dns server list
Standard vSwitches and port groupsesxcli network vswitch standard list; esxcli network vswitch standard portgroup list
Distributed switches seen by the hostesxcli network vswitch dvs vmware list
VMs with active portsesxcli network vm list
ARP tableesxcli network ip neighbor list
Open connectionsesxcli network ip connection list
Firewall rulesetsesxcli network firewall ruleset list

vmkping and the MTU test

vmkping sends ICMP from a specific VMkernel interface. For a 9000 MTU path, use -d (do not fragment) and a payload of 8972 bytes (9000 minus 28 bytes of IP and ICMP headers); for 1500 use 1472. Add -S vmotion when the vmk is on the vMotion TCP/IP stack.

vmkping -I vmk1 10.0.0.10 -d -s 8972
vmkping -I vmk1 -S vmotion 10.0.0.10 -d -s 8972
vmkping -I vmk0 10.0.0.10 -d -s 1472 -c 3
esxcli network diag ping --host 10.0.0.10 --interface vmk1 --df --size 8972 --count 3

If 1472 works and 8972 fails, something in the path (vSwitch, uplink, physical switch port) is still at 1500. Sources: KB 313061 (testing jumbo frame pings), KB 344313 (testing VMkernel connectivity with vmkping). KB 313061 also lists esxcfg-vswitch -l and esxcfg-vmknic -l for a quick MTU overview.

Storage

TaskCommand
Devices (LUNs, NVMe, local disks)esxcli storage core device list
One deviceesxcli storage core device list -d naa.xxx
Paths and their stateesxcli storage core path list
Multipathing policy per deviceesxcli storage nmp device list
HBAsesxcli storage core adapter list
HBAs, detailed (9.0+)esxcli storage core adapter listdetailed
Rescan all adaptersesxcli storage core adapter rescan --all
Mounted datastores (VMFS, NFS, vSAN)esxcli storage filesystem list
VMFS extents to device mappingesxcli storage vmfs extent list
VAAI statusesxcli storage core device vaai status get -d naa.xxx
Manual UNMAP on VMFSesxcli storage vmfs unmap --volume-label datastore1
NFS v3 / v4.1 mountsesxcli storage nfs list; esxcli storage nfs41 list

Mount an NFS v3 datastore; --connections sets the number of TCP connections (nconnect, see nconnect support in the ESXi NFS client):

esxcli storage nfs add --host 10.0.0.10 --share /export/ds01 --volume-name nfs-ds01 --connections 4
esxcli storage nfs remove --volume-name nfs-ds01

Caution: storage vmfs unmap generates I/O on the array; run it outside peak hours. Do not remove an NFS datastore that still has registered or running VMs.

VMs from the shell

vim-cmd needs a responsive hostd. esxcli vm process works on the running VM world and is the fallback for a VM that ignores power operations.

TaskCommand
List registered VMs and their vmIDsvim-cmd vmsvc/getallvms
Power statevim-cmd vmsvc/power.getstate 12
Power on / guest shutdown / hard offvim-cmd vmsvc/power.on 12; vim-cmd vmsvc/power.shutdown 12; vim-cmd vmsvc/power.off 12
Snapshotsvim-cmd vmsvc/get.snapshot 12
Hung tasks of a VMvim-cmd vmsvc/get.tasklist 12
Register a VMvim-cmd solo/registervm /vmfs/volumes/datastore1/vm01/vm01.vmx
Running VMs with World IDesxcli vm process list
Kill a stuck VMesxcli vm process kill -t soft -w 2750434

Caution: use kill -t soft first, then hard, and force only as a last resort. If esxcli itself does not respond, Broadcom suggests localcli with the same syntax. Sources: KB 308360 (common VM tasks via CLI), KB 308457 (powering off an unresponsive VM).

Services and logs

/etc/init.d/hostd restart
/etc/init.d/vpxa restart
tail -f /var/log/hostd.log
tail -f /var/log/vmkernel.log

Restart hostd or vpxa individually when the host shows as disconnected or not responding in vCenter, then wait 1–2 minutes. Caution: Broadcom warns not to use services.sh restart (or Restart Management Agents in the DCUI) on hosts running vSAN, LACP, NSX, or shared graphics (vGPU, vDGA, vSGA); restart single services instead. Source: KB 320280 (restarting management agents).

TaskCommand
Syslog configurationesxcli system syslog config get
Set remote syslog targetesxcli system syslog config set --loghost udp://10.0.0.10:514
Apply syslog changesesxcli system syslog reload
Write a marker into all logsesxcli system syslog mark --message "start of test"
Advanced settings changed from defaultesxcli system settings advanced list --delta
Core dump targetesxcli system coredump partition get; esxcli system coredump file list

Performance: esxtop basics

Run esxtop in the SSH session and switch views with single keys: c CPU, m memory, n network, d disk adapter, u disk device, v disk per VM, V show only VMs, f fields, h help, q quit.

For support cases, collect batch data to a datastore (-b batch, -a all metrics, -d interval in seconds, -n number of samples). 300 samples at 2 s = 10 minutes:

esxtop -b -a -d 2 -n 300 > /vmfs/volumes/datastore1/esxtop-$(hostname)-$(date +"%FT%H:%M").csv

Make sure the target datastore has free space and is not the one you are troubleshooting. Sources: KB 382249 (using esxtop), KB 370279 (collecting esxtop batch data).

Software and VIBs

TaskCommand
Base image (ESXi version in the image)esxcli software baseimage get
Installed componentsesxcli software component list
Installed VIBsesxcli software vib list
One VIB in detailesxcli software vib get -n <vib-name>
Image profileesxcli software profile get
Host acceptance levelesxcli software acceptance get
Verify VIB signaturesesxcli software vib signature verify
Profiles in an offline depotesxcli software sources profile list -d /vmfs/volumes/datastore1/depot.zip
Dry-run a component installesxcli software component apply -d /vmfs/volumes/datastore1/component.zip --dry-run

--dry-run exists on component apply, vib install, vib remove and profile update; use it before every change. On vLCM-managed clusters, remediate from vCenter instead. A quick check for NSX VIBs before any management-agent restart: esxcli software vib list | grep -E 'nsx|vsipfwlib'.

ESX 9 notes

ESX 9.0 adds two top-level namespaces, licensing and nsx; 9.1 adds memtier. None exist in 8.0 U3, and memtier is not in 9.0.

TaskCommand
License credentials (9.0+)esxcli licensing credential list
License entitlement assignments (9.0+)esxcli licensing entitlement list
Stop NSX services (9.0+)esxcli nsx services stop
Memory tiering status (9.1)esxcli memtier status get
Memory tiering devices (9.1)esxcli memtier device list
Memory tiering configuration (9.1)esxcli memtier config get

Caution: the reference describes esxcli nsx services stop as stopping NSX services with the tn-delete option. It is not a diagnostic command; use it only under an NSX procedure or support guidance. Other 9.0 additions worth knowing: esxcli storage core adapter listdetailed, esxcli nvme auth get and the esxcli vsan dedup namespace. The full diff is in ESXCLI changes from ESXi 8.0 U3 to ESX 9.0 and 9.1.

Full command lists

For the complete list see the full ESX 9.0 ESXCLI list and the ESXCLI 8.0 mindmap.

Sources

Related on vdan.cz

ESXCLI Changes in ESX 9.0 and 9.1: New, Removed and Changed Commands vs ESXi 8.0 U3

ESX 9.0 adds 27 ESXCLI commands and drops 11 vs 8.0 U3 (SLP, WBEM/CIM); 9.1 adds 27 more incl. memtier. Full tables from Broadcom’s reference.

Short answer: compared with ESXi 8.0 U3, the ESX 9.0 ESXCLI reference adds 27 commands and drops 11. The additions are a new licensing namespace, an nsx namespace, NVMe host authentication, duplicate iSCSI sessions and a reorganised vSAN ESA dedup tree. The removals are SLP and WBEM/CIM, which ESX 9.0 no longer ships, plus one deprecated iSER setting. ESX 9.1 adds another 27 commands, led by a new memtier namespace for NVMe memory tiering and iSNS discovery for iSCSI.

Every command and option below comes from Broadcom’s published ESXCLI Command Reference for 8.0.3, 9.0.0 and 9.1.0. I compared the three versions namespace by namespace: 814 commands in 8.0.3, 830 in 9.0.0 and 857 in 9.1.0. What a host actually offers depends on its build and installed VIBs, so check with esxcli --help before you script against a command.

Full lists: ESXCLI commands for ESX 9.0 · ESXi 8.0 · ESXi 7.0 · ESXi shell commands you actually use

ESX 9.0 at a glance

8.0.39.0.09.1.0
Top-level namespaces1618 (+ licensing, nsx)19 (+ memtier)
Commands in the reference814830857
Added vs previous–2727
Removed vs previous–110
Existing commands with changed options–1213

New ESXCLI commands in ESX 9.0

The biggest groups are licensing, which manages license credentials and entitlement assignments on the host for the VCF 9 licensing model, and vSAN ESA dedup. The dedup store commands moved from esxcli vsan dedupstore to esxcli vsan dedup dedupstore, next to new object- and space-level commands. Broadcom’s own description of vsan dedup object create says to use it only to replace a corrupted dedup hash object, following a runbook or KB, or with support. Treat that group as support tooling, not day-to-day commands.

Command (new in 9.0)What it does
esxcli iscsi session duplicate addAdd duplicate sessions on current iSCSI configuration
esxcli iscsi session duplicate listList duplicate sessions on current iSCSI configuration
esxcli iscsi session duplicate removeRemove duplicate sessions on current iSCSI configuration
esxcli licensing credential addAdd a new license credential
esxcli licensing credential listList the installed license credentials
esxcli licensing credential removeRemove an existing license credential
esxcli licensing entitlement addAdds a new license entitlement assignment
esxcli licensing entitlement listLists the license entitlement assignments
esxcli licensing entitlement removeRemoves a license entitlement assignment
esxcli licensing entitlement setUpdates an existing license entitlement assignment
esxcli nsx services stopCLI to stop NSX services with tn-delete option
esxcli nvme auth getGet NVMe host authentication information
esxcli nvme auth setSet NVMe host authentication information
esxcli nvme device log commandeffects getGet NVMe commands supported and effects log
esxcli storage core adapter listdetailedDetailed listing of all HBAs registered with PSA
esxcli vsan dedup dedupstore distribution getGet the dedup store distribution info of vSAN ESA (Express Storage Architecture) cluster
esxcli vsan dedup dedupstore getGet vSAN ESA dedup store view
esxcli vsan dedup dedupstore resync listGet detailed information of vSAN ESA resyncing dedup objects
esxcli vsan dedup dedupstore resync summary getGet summary information of vSAN ESA resyncing dedup objects
esxcli vsan dedup object createCreate a dedup object
esxcli vsan dedup object distribution getGet the chunk objects where the given regular object has data on
esxcli vsan dedup object reference getGet the regular objects whose data the given chunk object holds
esxcli vsan dedup object space getGet vSAN ESA regular object dedup space efficiency information
esxcli vsan dedup space getGet vSAN ESA dedup space efficiency information
esxcli vsan iscsi vip listList configured vSAN iSCSI VIPs
esxcli vsan witness license getGet vSAN witness license info on the host
esxcli vsan witness license setSet vSAN witness license config on the host

ESXCLI commands removed in ESX 9.0

The VCF 9.0 vSphere product support notes explain most of this list. ESX 9.0 removes CIM, the Small Footprint CIM Broker (SFCB), WSMan and the OpenSLP stack, which were deprecated in 8.0, and CIM providers for ESX 8.x and earlier aren’t supported on 9.0. Any script or monitoring check that calls esxcli system slp or esxcli system wbem fails on a 9.0 host. If hardware monitoring relied on CIM, ask the server vendor for a replacement.

Command (gone in 9.0)Replacement / reason
esxcli rdma iser params setWas already marked deprecated in 8.0.3
esxcli system slp getOpenSLP stack removed in ESX 9.0
esxcli system slp searchOpenSLP stack removed in ESX 9.0
esxcli system slp setOpenSLP stack removed in ESX 9.0
esxcli system slp stats getOpenSLP stack removed in ESX 9.0
esxcli system wbem getCIM/SFCB and WSMan removed in ESX 9.0
esxcli system wbem provider listCIM/SFCB and WSMan removed in ESX 9.0
esxcli system wbem provider setCIM/SFCB and WSMan removed in ESX 9.0
esxcli system wbem setCIM/SFCB and WSMan removed in ESX 9.0
esxcli vsan dedupstore distribution getMoved to esxcli vsan dedup dedupstore …
esxcli vsan dedupstore getMoved to esxcli vsan dedup dedupstore …

Existing commands with new or removed options (8.0 U3 → 9.0)

These commands keep their name but their options changed. The removals matter most for scripts. For example, esxcli system health report get no longer lists --all-reports in 9.0.

CommandOptions added in 9.0Options removed
esxcli iscsi adapter discovery statictarget remove--force | -f–
esxcli network ip interface set--urpf | -u–
esxcli network ip netstack set--ip-strong-es | -i–
esxcli nvme device namespace list--namespace | -n–
esxcli storage core adapter list--adapter | -a–
esxcli system health report get–--all-reports
esxcli vsan cluster join--client-network | -n–
esxcli vsan cluster new--client-network | -n–
esxcli vsan cluster unicastagent add--traffic-type | -F–
esxcli vsan debug object list--dedup-obj-type–
esxcli vsan storagepool unmount--evacuation-reason | -r–
esxcli vsan vdx create--backing-type | -b, --fs-type | -t–

New in ESX 9.1: memtier and more

The 9.1 reference adds a top-level memtier namespace to enable, configure and check NVMe memory tiering. The 9.0 reference has no memory-tiering namespace. For what memory tiering is and how it behaves, see NVMe memory tiering in vSphere 9.0. 9.1 also adds iSNS discovery for software iSCSI, NVMe flexible data placement, NFS restore commands and NFSv4.1 Kerberos credential commands. Nothing was removed between 9.0 and 9.1.

Command (new in 9.1)What it does
esxcli iscsi adapter discovery isns addAdd iSNS discovery address
esxcli iscsi adapter discovery isns listList iSNS discovery addresses
esxcli iscsi adapter discovery isns param getGet parameters on iSNS discovery address
esxcli iscsi adapter discovery isns param setSet iSNS discovery parameters
esxcli iscsi adapter discovery isns removeRemove iSNS discovery address
esxcli iscsi adapter isnsparam getGet the iSNS parameters for the iSCSI Host Bus Adapter
esxcli iscsi adapter isnsparam setSet the iSNS parameter for the iSCSI Host Bus Adapter
esxcli licensing registration getShow details about license registration
esxcli memtier config deleteDelete the memory tiering configuration
esxcli memtier config getGet the memory tiering configuration
esxcli memtier config setSet the memory tiering configuration
esxcli memtier device listList memory tiering devices
esxcli memtier disableDisable memory tiering
esxcli memtier enableEnable memory tiering
esxcli memtier status getShow the currently deployed Memory Tiering configuration
esxcli nvme device feature fdp getGet NVMe device feature flexible data placement information
esxcli nvme device feature fdp setSet NVMe device feature flexible data placement information
esxcli rdma device sniffer getGet RDMA device sniffer settings
esxcli rdma device sniffer setSet RDMA device sniffer settings
esxcli storage nfs restoreRestore previously mounted NFSv3 volumes
esxcli storage nfs41 credential getGet NFSv4.1 kerberos default user credentials
esxcli storage nfs41 credential setSet NFSv4.1 kerberos default user credentials
esxcli storage nfs41 credential unsetUnset NFSv4.1 kerberos default user credentials
esxcli storage nfs41 restoreRestore previously mounted NFS41 volumes
esxcli storage osdata getGet OSData information
esxcli vsan dedup scan getGet vSAN ESA dedup scanner information
esxcli vsan maintenancemode recommissionRecommission vSAN node, the command only set vSAN decommission state to non-decommissioned but not set host…

Option changes between 9.0 and 9.1. Note that esxcli vsan vdx create replaced three of its options and esxcli storage core claimrule add lost --if-unset:

CommandOptions added in 9.1Options removed
esxcli nvme device namespace create--anagrpid | -a, --endgid | -e, --lbstm | -l, --nvmsetid | -N, --phl | -P–
esxcli software apply--skip-reserved-vibs-caching–
esxcli software profile install--skip-reserved-vibs-caching–
esxcli software profile update--skip-reserved-vibs-caching–
esxcli storage core claimrule add–--if-unset
esxcli storage nfs param set--force | -f, --resolve-hostname | -r–
esxcli storage nfs41 param set--force | -f, --resolve-hostname | -r–
esxcli system health report get–--filename | -f
esxcli vsan health cluster list--perspective | -p–
esxcli vsan network security set--is-server-cluster | -s, --transition-state | -t–
esxcli vsan trace get--prettyjson | -p–
esxcli vsan trace set--configs | -c–
esxcli vsan vdx create--disk-path | -d--backing-type | -b, --disk-folder | -f, --disk-name | -d

Checking a host yourself

Broadcom notes that the list of commands depends on the system you run it on. To see what a specific host supports, and to compare a host before and after an upgrade, use ESXCLI’s built-in introspection:

# Every namespace and command this host knows
esxcli esxcli command list

# Help for one namespace or command
esxcli licensing --help
esxcli system health report get --help

# Save the list before and after an upgrade, then diff the two files
esxcli esxcli command list > /tmp/esxcli-before.txt

Copy the output files off the host, for example with scp, and compare them with diff. That also catches commands that come from vendor VIBs, which Broadcom’s reference doesn’t list.

What to update in your scripts

  • Remove or guard any call to esxcli system slp … and esxcli system wbem … before you upgrade hosts to 9.0.
  • Change esxcli vsan dedupstore … to esxcli vsan dedup dedupstore ….
  • Check scripts that pass --all-reports to esxcli system health report get (gone in 9.0) or --filename (gone in 9.1).
  • Scripts using esxcli vsan vdx create need the new options on 9.1.
  • On VCF 9 hosts, license through the new esxcli licensing commands (credentials and entitlements).

Sources

Related on vdan.cz

VCF 9 SAP HANA Network Design: Why 6 NICs Matter for vMotion and NFS

SAP HANA on VCF 9 with NFS: why storage needs its own NICs, separate from vMotion. The 2, 4 and 6 NIC models compared on Cisco VIC and HPE Synergy.

Short answer: on VCF 9 hosts that run SAP HANA on NFS, give storage its own pair of physical NICs (vNICs on Cisco UCS), separate from vMotion. The VCF 9.1 Design Library’s 6‑NIC Storage and Workload Separation model does this and also isolates NSX workloads, so I recommend it as the baseline. The 4‑NIC Storage Separation model also isolates NFS storage, but it puts SAP client traffic on the same switch as vMotion. The reason is host maintenance. A vMotion of a 2 TB HANA VM lands on the same receive queues as the NFS log writes of every HANA database on that host, unless storage has a vNIC of its own. HANA commits wait for those log writes. A faster adapter does not change that, and VCF 9 makes it worse by allowing only one vMotion VMkernel adapter per host. You can watch all of it happen in an interactive model: vdan.cz/vcf9-sap-hana-tdi-design.

VCF 9 SAP HANA 6-NIC network model: four parallel vMotions on vmnic0 while the NFS log write on vDS02 stays under 1 ms
6 vNICs, four HANA VMs migrating at once. vMotion saturates vmnic0, the storage vNICs on vDS02 carry only the 16 NFS connections of those four VMs, and the log write stays under 1 ms.

Why vMotion is a HANA problem and not just a network problem

HANA writes its redo log synchronously. A transaction commit returns only after storage has acknowledged the log write, so log write latency turns directly into application response time. The SAP HCMT tool checks this, and the indicative KPI for log write latency is about 1 ms. Under normal load a well built NFS path delivers a few hundred microseconds.

Now migrate a HANA VM with 1 to 2 TB of RAM. On a 40 Gb/s uplink a vMotion runs at 16 to 35 Gb/s for 10 to 20 minutes, including the dirty page iterations at the end. If that traffic shares the network path with storage, the log write latency jumps from sub‑millisecond to several milliseconds, commits stall, and the application servers see timeouts. This is why SAP and the FlexPod CVD separate vMotion from storage in the first place. The interesting part is where the sharing happens, because it is not only bandwidth.

What happens inside the adapter

On a Cisco UCS blade with a VIC, every vNIC in the service profile gets its own set of receive queues. The adapter policy used in the FlexPod TDI design gives each vNIC on a VIC 1380 8 receive queues with a ring of 4096 descriptors and 12 MSI‑X interrupts. On a VIC 15231 the policy is 16 queues, a ring of up to 16384 and 20 interrupts. Three details matter:

  • The adapter spreads incoming flows across the queues with an RSS hash of IP addresses and ports. It does not know what a flow is. One NFS log connection always lands on exactly one queue.
  • Each queue has its own interrupt and is serviced by one CPU core. A queue that receives more than its core can drain fills its ring and the adapter drops packets. That shows up as rx_no_bufs in esxcli network nic stats.
  • Queues belong to the vNIC. Two vNICs on the same physical adapter never compete for queues or cores. They share only the uplink to the IOM or IFM, and that is where QoS can help.

So if vMotion streams and the NFS log flow arrive on the same vNIC, the hash will sooner or later put a vMotion stream on the queue that also carries the log write. Network I/O Control cannot see that. NIOC shares bandwidth between port groups on the uplink, it does not assign queues. Only a separate vNIC does.

One remark for readers on HPE Synergy. The Synergy 6310C is a Broadcom NetXtreme‑E adapter (ESXi driver bnxtnet). A port is split into up to eight FlexNICs that share the ASIC’s pool of queues and interrupt vectors, and RSS defaults to 4 queues per function. A FlexNIC is still a separate function with its own RSS, so the storage FlexNIC does not receive vMotion packets, but the queues behind it are not dedicated in the way a Cisco VIC vNIC’s are, and there are fewer of them. The model treats it that way and I come back to it below.

The four layouts

I modelled the three VCF 9.1 network models and the classic FlexPod TDI layout side by side. Same host, same VIC 1380 with 2 × 40 Gb/s, same traffic: NFS log 1 Gb/s, NFS data 6 Gb/s, SAP client traffic 3.6 Gb/s and management. Every HANA VM on the host mounts its data and log with nconnect, so it brings four NFS connections and two client flows of its own. The number of VMs is the parallel selector: with four VMs the storage class has 16 NFS data connections and the VM class 8 flows, with eight VMs 32 and 16. Then those one to eight HANA B480 VMs with 2 TB RAM are migrated at once. The VCF 9 rows use the single vMotion VMkernel adapter VCF 9 allows, the TDI row uses Multi‑NIC vMotion as the CVD configures it. The numbers are model output, not measurements. The model exists to show the mechanism.

LayoutvNICsStorage isolated from vMotionLog write · idle1× vMotion4× vMotion8× vMotion
VCF 9 Single Distributed Switch2no0.34 ms1.82 ms2.37 ms3.49 ms
VCF 9 Workload Separation4no0.34 ms1.82 ms2.26 ms3.49 ms
VCF 9 Storage + Workload Separation6yes0.34 ms0.35 ms0.88 ms0.83 ms
FlexPod SAP HANA TDI (Multi‑NIC vMotion)7yes0.34 ms0.35 ms0.89 ms0.84 ms

The split is clean. The two layouts that put vMotion and storage on the same vNIC cross the 1 ms KPI with a single migration. The two that give storage its own vNIC stay under it with eight. What remains in the 6 and 7 vNIC rows has two parts: uplink pressure, which is what the UCS QoS policy is for, and the fact that eight VMs bring 32 NFS data connections into the 16 storage queues, so the log flow starts sharing a queue with data connections of other databases. That second part is the argument for more queues on the storage vNIC, and I come back to it with the VIC 15231.

2 NICs: Single Distributed Switch

One vDS, everything on two uplinks, NIOC with storage and VMs at High and vMotion at Low, MTU 9000. It is the simplest model to run and the worst one for HANA. All four traffic classes hash into the same queues of the same vNIC. NIOC holds vMotion at the uplink limit, the queue collision remains.

VCF 9 Single Distributed Switch model with 2 vNICs: vMotion streams overflow the receive queues shared with the NFS log
2 vNICs, four migrations. All 16 vMotion streams enter through vmnic0, they sit in the same queues as the NFS log and the 16 data connections, the rings overflow and the log write is at 2.4 ms.

4 NICs: Workload Separation

Two vDS. The NSX workloads get their own pair, which is good for the VMs. Management, vMotion and storage still share vDS01, so for the HANA log it changes almost nothing. The numbers are within hash luck of the 2‑NIC model. Note the greyed out QoS switch in the screenshot: UCS assigns a QoS class per vNIC, so storage and vMotion on one vNIC cannot be told apart on the uplink either.

VCF 9 Workload Separation model with 4 vNICs: vMotion and NFS log traffic share the same receive queues on vDS01
4 vNICs, four migrations. vDS02 is quiet, vDS01 carries vMotion and the NFS log in the same queues.

4 NICs the other way: Storage Separation

The Design Library also has a 4‑NIC Storage Separation Distributed Switch Model. It uses the same two vDS as Workload Separation but splits them differently: one vDS is dedicated to storage, and the other carries everything else (management, vMotion and workloads). The Design Library lists it for NFS as well as vSAN, so it is a valid option for NetApp NFS datastores. I did not simulate this layout, so it has no row in the table. By the mechanism described above, it protects the HANA log write the way the 6‑NIC model does, because the storage vNICs never receive vMotion packets. It is still not the layout I recommend for HANA. The SAP application server traffic on the NSX segments now shares a vDS, its uplinks and its receive queues with vMotion, so every host evacuation affects the client path instead of the log. If a host has only four ports, Storage Separation is the better of the two 4‑NIC models, but plan for six.

6 NICs: Storage and Workload Separation

Three vDS on three NIC pairs. vDS01 carries management and vMotion, vDS02 carries storage on both uplinks active/active, vDS03 carries the NSX workloads. Storage now has its own pair of vNICs on both fabrics, its own queues and cores and its own UCS QoS class. vMotion shares a pair only with management, which is negligible traffic. The log write stays under 1 ms with eight parallel migrations. What moves the number from 0.35 to about 0.9 ms is not vMotion at all, it is the 32 NFS data connections of eight databases sharing 16 queues with the log flow. This is the layout I would make the baseline for any VCF 9 cluster that hosts HANA.

VCF 9 Storage and Workload Separation model at idle: NFS log and data connections spread over vmnic2 and vmnic3
6 vNICs at idle with one HANA VM. The NFS log and the four data connections spread over vmnic2 and vmnic3, so storage has 16 queues on two fabrics and nothing else in them.

7 NICs: FlexPod SAP HANA TDI

The Cisco CVD layout goes one step further and gives management its own vNIC as well, and it runs vMotion with two VMkernel adapters on two vNICs. A 2 TB VM then migrates in about 11 minutes instead of 22. For the HANA log it behaves like the 6‑NIC layout, because the storage vNICs are separate either way. If you build on FlexPod without VCF, use it. If you build on VCF 9, the 6‑NIC model gets you the same protection for HANA with one vNIC template less.

FlexPod SAP HANA TDI layout with 7 vNICs and Multi-NIC vMotion across both fabrics
7 vNICs per the FlexPod CVD, four migrations with Multi‑NIC vMotion. The streams spread over vmnic1 and vmnic2 on both fabrics, the storage vNICs carry only NFS.

QoS and NIOC are two different things

Separate vNICs alone are not enough. The uplink is still shared, and four parallel migrations will fill it. With a UCS QoS policy that puts the storage vNIC in the platinum class and vMotion in bronze, storage keeps its bandwidth and the log stays under 1 ms. Without it, vMotion takes the whole uplink and even the TDI layout ends up above 4 ms.

FlexPod TDI layout with eight vMotions and UCS QoS disabled: the shared uplink raises NFS log latency
The same TDI layout, eight migrations, QoS off. The queues are still isolated, the uplink is not.

The reverse holds as well. NIOC on the 2 and 4‑NIC models does protect bandwidth, and the model gives it credit for that, but it cannot protect queues. You need both: a vNIC of its own for storage, and a QoS class of its own on the uplink.

Multi-NIC vMotion is currently not supported by VCF 9.x SDDC Manager workflows

On plain vSphere you would give vMotion two VMkernel adapters on two uplinks, so a migration can use both fabrics. vSphere and VVF support Multi-NIC vMotion, but VCF 9.x SDDC Manager requires exactly one VMkernel adapter tagged for vMotion per host. When a host has a second one, SDDC Manager flags it after an inventory sync with the message “Host is not conforming with the requirement of single vmknic for vMotion/management traffic type”. The fix is to remove the second adapter and re-run host commissioning. Broadcom KB 407383 describes the issue. It notes that hosts with multiple vMotion adapters reach far lower vMotion concurrency in VCF 9.x than in vSphere 8.x, and that Load-based Teaming on the single vMotion VMkernel adapter is the exception to that limit.

For HANA hosts this has two consequences. A single migration gets only half the stream helpers and one 40 Gb/s path, about 16 Gb/s in the model, so a 2 TB VM takes about 22 minutes instead of 11. And on the 2 and 4‑NIC layouts every one of those streams enters through the single vNIC that also carries the NFS log, which is why the table above shows the KPI broken from the first migration. The simulator has a Multi‑NIC vMotion switch so you can compare both cases. It is off by default because that is what VCF 9 gives you.

Parallel vMotion during maintenance

vSphere allows up to eight concurrent vMotions per host. With one vMotion adapter on a 40 Gb/s uplink, one 2 TB HANA VM uses about 16 Gb/s and takes about 22 minutes. Two in parallel fill the uplink at about 31 Gb/s and still finish in about 22 minutes, so the second one is free. From there on more parallelism buys nothing: four VMs take about 44 minutes and eight about 89 minutes, the same as running them two at a time. What grows is the impact window on the shared layouts, because every additional VM puts more vMotion streams into the queues the log flow lives in. When you evacuate a host with HANA VMs on VCF 9, two at a time is the sensible limit.

Does a faster adapter fix it?

The first question I got after showing the model was whether a 100 Gb/s adapter makes the discussion go away. The simulator now has three adapters to switch between: the Cisco VIC 1380 with 2 × 40 Gb/s, the Cisco VIC 15231 with 2 × 100 Gb/s and 16 receive queues per vNIC, and the HPE Synergy 6310C with 2 × 50 Gb/s. The table shows the 2 vNIC and 6 vNIC layouts on each, single vMotion adapter, UCS or NIOC bandwidth protection on.

AdapterLayoutIdle1× vMotion4× vMotion8× vMotion2 TB VM, one migration
Cisco VIC 1380 · 2 × 40G · RQ 82 vNIC0.34 ms1.82 ms2.37 ms3.49 ms16 Gb/s · ≈ 22 min
6 vNIC0.34 ms0.35 ms0.88 ms0.83 ms
Cisco VIC 15231 · 2 × 100G · RQ 162 vNIC0.27 ms1.74 ms4.98 ms3.42 ms32 Gb/s · ≈ 11 min
6 vNIC0.27 ms0.27 ms0.71 ms0.71 ms
HPE Synergy 6310C · 2 × 50G · RSS 42 vNIC1.81 ms3.92 ms18.44 ms40.17 ms16 Gb/s · ≈ 22 min
6 vNIC0.34 ms0.34 ms0.87 ms0.87 ms

The VIC 15231 halves the migration time and the wider ring drops far fewer packets, but on the 2 vNIC layout the log write still sits well above the KPI from the first migration. Bandwidth was never the only problem. The vMotion streams still land in the same queues and on the same cores as the log flow, and at 8 Gb/s per stream they fill a core faster than before. On the 6 vNIC layout the 15231 is better in every column, and the 16 storage queues per vNIC are exactly what the 32 NFS connections of eight databases need.

Cisco VIC 15231 with 2 vNICs: vMotion still shares receive queues with the NFS log flow
2 vNICs on a VIC 15231, four migrations. Sixteen queues, a ring of 16384 and a 100G uplink. The vMotion streams still share queues with the NFS log flow, log write at 5.0 ms.
Cisco VIC 15231 with 6 vNICs: four vMotions at 87 Gb/s with the storage vNICs untouched
6 vNICs on a VIC 15231, four migrations at 87 Gb/s. The storage vNICs are untouched and the impact window shrinks to about 16 minutes.

The Synergy 6310C is the other direction. With four RSS queues per FlexNIC, the 2 vNIC layout is above the KPI before any vMotion starts: the log flow of a single HANA VM already shares its queue with NFS data and client traffic. Every migration then lands in the same four queues, and at four and eight migrations the model’s latency formula runs off the scale, so take the direction from those cells and not the digits. The 6 vNIC layout still protects the log, because the storage FlexNIC never sees vMotion packets, but the headroom is smaller than on either VIC. If you run HANA on Synergy, raise the RSS queue count of the storage function from the default and give storage its own FlexNIC pair in Virtual Connect with a bandwidth minimum.

HPE Synergy 6310C with 2 vNICs: four RSS queues per FlexNIC carry vMotion next to the NFS flows
2 vNICs on a Synergy 6310C, four migrations. Four queues per FlexNIC, every one of them carries vMotion next to the NFS flows, and the log write is at 18.4 ms in the model.

Lifecycle note for the VIC 1380: Broadcom KB 391170 lists the UCS VIC 1340 and VIC 1380 as Restricted in ESX 9.0, under both nenic and nfnic. They still work on 9.0 and stay listed in the compatibility guide, but they get no new features or driver enhancements and only best-effort fixes, and Restricted devices are removed in the next major release. The VIC 15231 isn’t in either the Restricted or the End of Life list. If you are planning new HANA hosts for VCF 9, start from the 15231, and check your exact adapter and firmware in the Broadcom Compatibility Guide. The full list is on ESXi 9.0 – Deprecated and unsupported devices.

What I recommend

  • For HANA hosts on VCF 9, use the 6‑NIC Storage and Workload Separation model. If a host has only four ports, Storage Separation is better than Workload Separation because it keeps the NFS log away from vMotion, but SAP client traffic then shares the path with vMotion, so plan for six. On FlexPod without VCF, keep the 7‑vNIC TDI layout from the CVD.
  • Put the storage vNICs in a platinum QoS class in UCS and vMotion in bronze. NIOC is not a substitute on the uplink, and it is no help at all in the queues.
  • Do not buy a faster adapter to avoid the layout decision. A VIC 15231 shortens the maintenance window, it does not separate the queues. Where it does pay off is the storage vNIC: 16 queues for the NFS connections of many databases on one host.
  • Mount HANA data and log with nconnect, or with several mounts. One TCP connection is one queue and one core. Count the connections: eight databases with nconnect=4 are 32 data connections plus their log flows on the storage vNIC.
  • Limit concurrent HANA vMotions per host to two during maintenance windows. With the single vMotion adapter VCF 9 allows, two migrations fill the uplink and a third one only stretches the window.
  • Run HCMT at idle and during a vMotion of one and two HANA VMs, and keep the result as a baseline. On a performance ticket SAP and Broadcom ask about deviations from best practice first.
  • Watch rx_no_bufs on the storage vNICs. If the counter increases during the test, the receive ring is being exhausted. Correlate this with per-queue statistics and traffic load before attributing the drops to RSS/queue contention.

Try it yourself

The interactive model is on this site: vdan.cz/vcf9-sap-hana-tdi-design. You can switch between the four layouts and the three adapters, set one to eight HANA VMs and migrate them in parallel, toggle the UCS QoS policy, nconnect and Multi‑NIC vMotion, move the NFS data and SAP client traffic sliders up to the adapter’s line rate, and re‑roll the RSS hash to see how much of the effect is luck. The numbers update live, including the log write latency, the number of NFS and client connections per layout, the interrupt vector count and the dropped packets on the rings. It is available in Czech and English.

A word on the model: queue capacity, stream rates and the latency formula are illustrative and documented on the page. They are there to explain why the layouts behave differently, not to replace a measurement on your own hardware.

Related on vdan.cz

Sources