0

I have attached the below ebs volumes in my aws ec2 instance

resource "aws_volume_attachment" "dbdata-vol-atch" {
    device_name = "/dev/sdc"
     id          = "xxxx"
    instance_id = "yyyy"
    volume_id   = "zzzz"
}

# module.mongo-vm-instances.aws_volume_attachment.dblog-vol-atch["MongoA"]:
resource "aws_volume_attachment" "dblog-vol-atch" {
    device_name = "/dev/sdd"
     id          = "xxxx"
    instance_id = "yyyy"
    volume_id   = "zzzz"
}

# module.mongo-vm-instances.aws_volume_attachment.dbwsp-vol-atch["MongoA"]:
resource "aws_volume_attachment" "dbwsp-vol-atch" {
    device_name = "/dev/sde"
    id          = "xxxx"
    instance_id = "yyyy"
    volume_id   = "zzzz"
}

But if i check in instance i'm seeing as below and not able to see the device name which i have mentioned in terraform(/dev/sd*)

[ec2-user@MongoA ~]$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme1n1     259:0    0   30G  0 disk
nvme0n1     259:1    0   10G  0 disk
├─nvme0n1p1 259:2    0    1M  0 part
└─nvme0n1p2 259:3    0   10G  0 part /
nvme2n1     259:4    0   50G  0 disk
nvme3n1     259:5    0   30G  0 disk
nvme4n1     259:6    0  500G  0 disk
nvme5n1     259:7    0   30G  0 disk

Tried below but no luck to see the device name

[ec2-user@MongoM-1 ~]$ sudo nvme list
Node             SN                   Model                                    Namespace Usage                      Format           FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     volxxxxxxxxxxxxx Amazon Elastic Block Store               1           0.00   B /  10.74  GB    512   B +  0 B   1.0 
/dev/nvme1n1     volxxxxxxxxxxxxx Amazon Elastic Block Store               1           0.00   B /  32.21  GB    512   B +  0 B   1.0 
/dev/nvme2n1     volxxxxxxxxxxxxx Amazon Elastic Block Store               1           0.00   B /  53.69  GB    512   B +  0 B   1.0 
/dev/nvme3n1     volxxxxxxxxxxxxx Amazon Elastic Block Store               1           0.00   B /  32.21  GB    512   B +  0 B   1.0 
/dev/nvme4n1     volxxxxxxxxxxxxx Amazon Elastic Block Store               1           0.00   B / 536.87  GB    512   B +  0 B   1.0 
/dev/nvme5n1     volxxxxxxxxxxxxx Amazon Elastic Block Store               1           0.00   B /  32.21  GB    512   B +  0 B   1.0 

Could you please advice.Since using that dev name,i have to create a shell script to run mount command for respective device name to respective directory(mount /dev/sdb /data/...etc)

JPNagarajan
  • 802
  • 1
  • 12
  • 32

3 Answers3

1

Looks similar to the SO question: AWS Terraform automation of multiple nvme<x>

Also, you can create a symbolic link for NVMe devices to /dev/* devices using cloud-init, example: https://github.com/leboncoin/terraform-aws-nvme-example/blob/master/scripts/ebs_alias.sh.tpl

Junaid
  • 3,477
  • 1
  • 24
  • 24
0

You can use ebsnvme-id as shown in the docs:

[ec2-user ~]$ sudo /sbin/ebsnvme-id /dev/nvme1n1
Volume ID: vol-01324f611e2463981
/dev/sdf
Marcin
  • 215,873
  • 14
  • 235
  • 294
0

lsblk,nvme helped me to get the mapping device names.Got the results by writing a small for loop as below

for i in $(lsblk|awk '{print $1}'|grep -v p|grep -i  -v name) ; do
ALIAS=$(nvme id-ctrl -v /dev/$i| grep -Po '/dev/(sd[b-z]|xvd[b-z])');
mkfs -t xfs /dev/$i
vol_id=$(blkid -s UUID -o value /dev/$i)
echo $i $ALIAS $vol_id>>/tmp/mnt.log
done

Note: Need to install nvme-cli by using yum -y install nvme-cli to use nvme command

JPNagarajan
  • 802
  • 1
  • 12
  • 32