ESXi host boots fine, but after boot completes the storage controller that was used to load the boot volume disappears.
In this example, the Marvell controller is used for mounting boot volume and with it, a VMFS datastore carved out of a partition on the boot volume.
Both, the boot volume and the local VMFS disappears after the host boots, resulting in inaccessible VMs originating from the local VMFS datastore.
Marvel controller is still listed as a PCI device:
# lspci
0000:05:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9230 PCIe SATA 6Gb/s Controller
# esxcfg-info -a
\==+PCI Device :
|----Segment.........................................0x0000
|----Bus.............................................0x05
|----Slot............................................0x00
|----Function........................................0x00
|----Runtime Owner...................................VM passthru
|----Has Configured Owner............................true
|----Configured Owner................................VM passthru
|----Vendor Id.......................................0x1b4b
|----Device Id.......................................0x9230
|----Sub-Vendor Id...................................0x1028
|----Sub-Device Id...................................0x2261
|----Vendor Name.....................................Marvell Technology Group Ltd.
|----Device Name.....................................######## PCIe SATA 6Gb/s Controller
|----Device Class....................................262
|----Device Class Name...............................SATA controller
|----PIC Line........................................255
|----Old IRQ.........................................255
|----Vector..........................................0
|----PCI Pin.........................................0
|----Spawned Bus.....................................0
|----Flags...........................................12289
However, it is not listed as a storage adapter:
# esxcli storage core adapter list
HBA Name Driver Link State UID Capabilities Description
-------- --------- ---------- -------------------- ------------ -----------
vmhba0 nvme_pcie link-n/a pcie.e300 (0000:##:00.0) KIOXIA Corporation <class> Non-Volatile memory controller
vmhba2 lsi_mr3 link-n/a sas.################ (0000:##:00.0) Broadcom / LSI PERC H755 Front
vmhba3 vmw_ahci link-n/a sata.vmhba3 (0000:00:##.#) Intel Corporation Lewisburg SATA AHCI Controller
vmhba4 vmw_ahci link-n/a sata.vmhba4 (0000:00:##.0) Intel Corporation Lewisburg SATA AHCI Controller
VMware vSphere 7.0.x
VMware vSphere 8.0.x
An administrator tags the Marvell controller as passthru, while the ESXi is in use.
The same controller that was used for boot is now configured as passthru.
While this is done, ESXi continues to work as it is running from host memory.
The next boot works okay, because the device configuration is not in effect until later during the boot cycle.
When device configuration loads, the Marvell controller is marked as passthru device, thus it does not appear as a storage controller.
Any virtual machines from the local datastore may now report as orphaned/inaccessible.
Disable PCI passthrough on the boot controller.
ESXi host > Configure tab > expand Hardware > click PCI Devices.
Locate and select the device and click toggle passthrough
Confirm the adapter is listed under storage adapters, if not re-scan storage controller.
Remove orphaned/inaccessible virtual machines from inventory if any and re-register them.