When we started using the new C5, M5 or T3-class instances (e.g. t3.micro, m5.large, m5d.large, c5.xlarge, etc) we noticed that the disk device names are no longer the classic /dev/sda1
or /dev/xvda
that we were used to for years.
TL;DR
The new root disk name is/dev/nvme0n1
with the partition device names being /dev/nvme0n1p1
, /dev/nvme0n1p2
, etc.
… just in case you’re lazy to read the whole post 🙂
Identifying the disks
Now that the disk names in the OS are no longer the names shown in the web console how do we know which disk is which? That’s even more pressing issue if you launch an M5D instance (e.g. m5d.large) with instance ephemeral disk.
Fortunately there’s an easy way to find out from the Linux command line. Let’s have a look into /dev/disk/by-id/ and see what we find there.
[ec2-user@ip-172-31-16-65 ~]$ ls -l /dev/disk/by-id/ total 0 lrwxrwxrwx 1 ... nvme-Amazon_EC2_NVMe_Instance_Storage_AWS6FA651C934ADD20C4 -> ../../nvme3n1 lrwxrwxrwx 1 ... nvme-Amazon_Elastic_Block_Store_vol08071310dbc3cfa1f -> ../../nvme0n1 lrwxrwxrwx 1 ... nvme-Amazon_Elastic_Block_Store_vol08071310dbc3cfa1f-part1 -> ../../nvme0n1p1 lrwxrwxrwx 1 ... nvme-Amazon_Elastic_Block_Store_vol08071310dbc3cfa1f-part128 -> ../../nvme0n1p128 lrwxrwxrwx 1 ... nvme-Amazon_Elastic_Block_Store_vol0b80ed4fd5b5e9cda -> ../../nvme1n1 lrwxrwxrwx 1 ... nvme-Amazon_Elastic_Block_Store_vol0bbf076a4e81f5789 -> ../../nvme2n1
As we can see the EBS Volume ID is actually displayed as part of the symbolic name – the volume vol-0bbf076a4e81f5789
as displayed in the console screenshot above is our nvme-Amazon_Elastic_Block_Store_vol0bbf076a4e81f5789
device which maps to /dev/nvme2n1
.
The ephemeral instance store partition is apparently nvme-Amazon_EC2_NVMe_Instance_Storage_AWS6FA651C934ADD20C4
which maps to /dev/nvme3n1
.
Partitioning the disks
Now that we know which disk is which we can create the partitions.
[ec2-user@ip-172-31-16-65 ~]$ sudo gdisk /dev/nvme2n1 GPT fdisk (gdisk) version 0.8.6 Creating new GPT entries. Command (? for help): n Partition number (1-128, default 1): First sector (34-16777182, default = 2048) or {+-}size{KMGTP}: Last sector (2048-16777182, default = 16777182) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/nvme2n1. The operation has completed successfully.
That looks good – let’s check if we can see the new partition /dev/nvme2n1p1
:
[ec2-user@ip-172-31-16-65 ~]$ ls -l [...] lrwxrwxrwx 1 root root 15 Oct 2 01:03 /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol0bbf076a4e81f5789-part1 -> ../../nvme2n1p1 brw-rw---- 1 root disk 259, 9 Oct 2 01:03 /dev/nvme2n1p1
Partition created, job done. From now on it’s Linux business as usual – mkfs
, mount
, use 🙂
Leave A Comment