Following situation: I have a Dell PE T320 server which is running the free version of ESXi 7.0 U1 (fresh install, not an upgrade). The boot drive is a RAID1 of two 200GB SAS SSDs, and there's a RAID5 of disk storage for data. On top of that, the server had a intel SSD DC P3600 U.2 NVMe SSD (4k formatted) which was used as fast storage for desktop VMs. This all worked out of the box.
However, since the intel NVME SSD got too small it was replaced with a larger WDC Ultrastar SN200 (also 4k formatted). The problem now is that the new drive does not show up as storage device. I can see it as PCIe device, and it's correctly identified and listed, but it's shown as persistent memory device.
This is what esxcli hardware pci list shows:
0000:09:00.0 Address: 0000:09:00.0 Segment: 0x0000 Bus: 0x09 Slot: 0x00 Function: 0x0 VMkernel Name: vmhba1 Vendor Name: HGST, Inc. Device Name: Ultrastar SN200 Series NVMe SSD Configured Owner: VMkernel Current Owner: VMkernel Vendor ID: 0x1c58 Device ID: 0x0023 SubVendor ID: 0x1c58 SubDevice ID: 0x0023 Device Class: 0x0108 Device Class Name: Non-Volatile memory controller Programming Interface: 0x02 Revision ID: 0x02 Interrupt Line: 0x0f IRQ: 255 Interrupt Vector: 0x00 PCI Pin: 0x00 Spawned Bus: 0x00 Flags: 0x3001 Module ID: 46 Module Name: nvme_pcie Chassis: 0 Physical Slot: 4 Slot Description: PCI4 Device Layer Bus Address: s00000004.00 Passthru Capable: true Parent Device: PCI 0:0:1:1 Dependent Device: PCI 0:9:0:0 Reset Method: Function reset FPT Sharable: true
So the question is how do I tell ESXi that this is, in fact, a storage device?
Well, after some trial and error with a number of enterprise class NVMe drives from different manufacturers I found out that apparently ESXi can't deal with 4k formatted NVMe drives, because when I reformat them with 512k sector size they suddenly become recognized as storage device.
What's makes this even weirder is that for spinning disks ESXi 7.0 has no problems dealing with 4k sector sizes.