By design, NVMe drives are intended to provide local access to the machines they are plugged in to; however, the NVMe over Fabric specification seeks to address this very limitation by enabling remote network access to that same device.
This article puts into practice what you learned in Part I and shows how to use NVMe drives in a Linux environment. But, before continuing, you first need to make sure that your physical (or virtual) machine is up to date. Once you verify that to be the case, make sure you're able to see all connected NVMe devices:
$ cat /proc/partitions |grep -e nvme -e major major minor #blocks name 259 0 3907018584 nvme2n1 259 1 3907018584 nvme3n1 259 2 3907018584 nvme0n1 259 3 3907018584 nvme1n1
Those devices also will appear in
$ ls /sys/block/|grep nvme nvme0n1 nvme1n1 nvme2n1 nvme3n1
If you don't see any connected NVMe devices, make sure the kernel module is loaded:
petros@ubu-nvme1:~$ lsmod|grep nvme nvme 32768 0 nvme_core 61440 1 nvme
Next, install the drive management utility called
nvme-cli. This utility is defined and maintained by the very
NVM Express committee that defined the NVMe specification. The nvme-cli
source code is hosted on
systems offer this package in their internal repositories.
Installing it on the latest Ubuntu looks something like this:
petros@ubu-nvme1:~$ sudo add-apt-repository universe petros@ubu-nvme1:~$ sudo apt update && sudo apt install ↪nvme-cli
Using this utility, you're able to list more details of all connected NVMe drives (note: the tabular output below has been reformatted and truncated to better fit here):