This is a short and sweet thank you post to Supermicro, who after some work on both sides have enabled bootable NVMe disk on my Supermicro X10 DRi-T server motherboard.
This discussion will mean nothing if you don't appreciate a few feeds and Speeds. For the last few years Hard Disks in Personal Computers have normally been attached using the Sata III interface. The reference website is here
Suffice to say that the interface speed is 6Gigabits / second, leading to a theoretical maximum transfer speed of about 560 MBytes/second.
Spinning Disks can manage a sustained transfer rate of (say) upto 200 MB/sec in theory. See this Hitachi Ultrastar datasheet
Actually in practice my 4TB Hitachi Enterprise Drives get upto about 150 MB/second in real life as measured at the Operating System level.
SSD (Solid State Disks) can achieve better
This is the performance of a Samsung 850 EVO M.2 form factor disk using the SATA III interface
But a NVMe disk as shown above can achieve preposterously faster. Conservatively x3 times read speed shown here with a Samsung 960 EVO disk
The NVMe disk connects to your motherboard using a dedicated M.2 type M storage slot, which under the covers should use a PCI express x4 interface.
Using a PCIe Express to M.2 type M converter card I have used the M.2 PCIe disk for over 1 year in my principle workstation and server. But not for booting. On the existing 2010 Supermicro X8DTH Motherboard the M.2 disk is not visible at boot time only after the OS is loaded. Clearly this means the OS can't reside on that disk, the best that you can do is place temporary files and frequently used applications there
NVMe disk support means modifying the BIOS so that it scans for a NVMe disk in a PCIe slot at boot time, and if the OS has been installed there, boots from it.
The BIOS also has to contain base EFI Extended Firmware Interface support and must be able to run in pure EFI mode not legacy.
There are other considerations such as secure boot but this is aside from the main issue: That the BIOS has code to scan for and locate bootable PCIe disk media and boot from it
Since October 2016 I've been trying to get NVMe booting working and a support ticket has been open for some months.
At last I have a working system because the BIOS is now updated to allow NVMe support.
An easy way to check without the need for an OS install is that in the EFI shell that is accessible via the BIOS the command
map -v -t fd
shows that a NVMe disk is detected. To repeat no OS needs to be installed, we just need to prove that the Motherboard can see the NVMe disk at boot time.
The great confusion is that the Microsoft Windows 2012 and 2016 server install program loaded from a USB stick or DVD is able to see the M.2 NVMe disk on installation. Even with the old non NVMe BIOS. Somehow the Windows Installer does its own EFI scan when locating possible target OS installation disks. So the 'install' of the OS goes smoothly, but on first reboot the motherboard can't find the OS you just installed and so it all goes horribly wrong.
Anyway, it is now fixed. So you really can install Windows 2016 server, or Centos Linux, or OS86 based Operating System onto a Solid State disk with 1800 MB/second plus performance.
Now we have the processors, the memory and finally the disk. Time to actually install a production image in the near future.
Thanks Supermicro. Good Job.
Supermicro LED Code 79
M2 U2 and more