The versatile advantages of NVMe are becoming increasingly apparent in modern storage systems. You can take advantage of them in the cloud.
Connect to your EC2 instance using an ssh client such as PuTTY, then sudo su.
Install drivers and tools
Make sure your system is up to date and knows how to handle NVMe. On Fedora/RHEL:
# sudo dnf update -y # dnf install nvme* # dnf install nvme-cli nvmetcli # sudo dnf install xfsprogs
Show information about the kernel module nvme:
# modinfo nvme
View block devices
View block devices using:
You may see something like this:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS zram0 252:0 0 1.9G 0 disk [SWAP] nvme0n1 259:0 0 30G 0 disk ├─nvme0n1p1 259:1 0 1M 0 part ├─nvme0n1p2 259:2 0 500M 0 part /boot ├─nvme0n1p3 259:3 0 100M 0 part /boot/efi ├─nvme0n1p4 259:4 0 4M 0 part └─nvme0n1p5 259:5 0 29.4G 0 part /home / nvme1n1 259:6 0 40G 0 disk
nvme1n1 is your new unformatted, unpartitiond vanilla NVMe drive,
You can list all NVMe devices using:
# nvme list
and identify the NVMe Controller responsible for an individual partition (e.g. /dev/nvme1n1):
# sudo nvme id-ctrl -v /dev/nvme1n1
Create a new partition
Create a new partition using fdisk:
# fdisk /dev/nvme1n1
Welcome to fdisk (util-linux 2.37.4). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table.
Follow the on-screen instructions. Use n to create a new partition and w to write it to disk. (For more on how to handle fdisk, see “How to expand an (xfs) EBS volume on AWS EC2“.)
Format the new partition and mount it
You may need to create a new file system on the newly created partition:
# mkfs.xfs /dev/nvme1n1p1
Mount it one-time:
# mount /dev/nvme1n1p1 /var/www/html/
If you would like the volume to mount automatically after each reboot, you need to configure /etc/fstab accordingly. First, make a backup of the original version of the file:
# sudo cp /etc/fstab /etc/fstab.orig
Now you need to figure out the UUID of the new partition to properly reference it:
# blkid (...) /dev/nvme1n1p1: UUID="146de8f2-2f9d-4d3c-9e25-174585ca7fd4" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="ce613f49-01"
Edit /etc/fstab using a text editor of your choice:
# nano /etc/fstab
Enter this line at the end of /etc/fstab (add spaces as you see fit):
UUID=146ce7f2-2f9e-4d2c-9e15-174585ca7fd4 /var/www/html xfs defaults,nofail 0 2
The nofail flag ensures that the system will boot without errors when the volume fails. The first digit represents the file system dump (the system utility dump for backups of an ext2/3/4 fs; xfsdump for xfs), the second is the fsck flag (file system check) for the partition. It determins the order of the file system check at boot time (the root should have 1, the rest should have 2 unless deactivated with 0).
Now you should be able to unmount it:
# sudo umount /var/www/html/
and mount it again based on the /etc/fstab file:
# sudo mount -a
You are done.