【问题标题】:How to identify the mapping between aws ebs block volume name and the actual device name(rhel) created via terraform?如何识别 aws ebs 块卷名称与通过 terraform 创建的实际设备名称(rhel)之间的映射?
【发布时间】:2021-08-21 10:25:53
【问题描述】:

我在我的 aws ec2 实例中附加了以下 ebs 卷

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"
}

但是,如果我签入实例,我会看到如下所示并且无法看到我在 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

在下面尝试过,但没有看到设备名称

[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 

您能否建议一下。由于使用该开发名称,我必须创建一个 shell 脚本来将各个设备名称的挂载命令运行到各个目录(挂载 /dev/sdb /data/...等)

【问题讨论】:

    标签: amazon-web-services terraform


    【解决方案1】:

    您可以使用ebsnvme-id,如docs所示:

    [ec2-user ~]$ sudo /sbin/ebsnvme-id /dev/nvme1n1
    Volume ID: vol-01324f611e2463981
    /dev/sdf
    

    【讨论】:

    • 这个 ebsnmve-id 在 rhel 中不起作用,如果我们使用 nvme(nvme-cli),我们甚至无法获取 /dev/* 详细信息
    • @JPNagsrajan 对不起。您的问题没有提供您的操作系统的任何详细信息,所以我假设您使用的是标准的 Amazon Linux 2
    • 好的。编辑了问题并添加了 rhel 关键字
    【解决方案2】:

    看起来类似于 SO 问题:AWS Terraform automation of multiple nvme<x>

    此外,您可以使用 cloud-init 为 NVMe 设备创建到 /dev/* 设备的符号链接,例如:https://github.com/leboncoin/terraform-aws-nvme-example/blob/master/scripts/ebs_alias.sh.tpl

    【讨论】:

      【解决方案3】:

      lsblk,nvme 帮助我获取映射设备名称。通过编写如下的小 for 循环得到结果

      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
      

      注意: 需要安装 nvme-cli 使用 yum -y install nvme-cli 才能使用 nvme 命令

      【讨论】:

        【解决方案4】:

        检查您是否安装了 NVMe 驱动程序:

        To confirm that your instance has the NVMe driver
        
        You can confirm that your instance has the NVMe driver and check the driver version using the following command. If the instance has the NVMe driver, the command returns information about the driver.
        
        $ modinfo nvme
        

        https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html#install-nvme-driver.

        【讨论】:

          猜你喜欢
          • 2021-01-23
          • 2022-01-09
          • 2017-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-10
          • 1970-01-01
          • 2019-01-31
          相关资源
          最近更新 更多