【问题标题】:correctly specifying Device Name for EBS volume while attaching to an ec2 instance and identifying it later using Device name在附加到 ec2 实例并稍后使用设备名称识别它时正确指定 EBS 卷的设备名称
【发布时间】:2022-01-09 07:27:59
【问题描述】:

我正在尝试在 EC2 (RHEL) 实例上附加 EBS 卷。这就是我的 attach-volume 命令的样子:

aws ec2 attach-volume --volume-id vol-xxxxxxxxxxxxxxxxx --instance-id i-yyyyyyyyyyyyyyyyy --device /dev/sdf
{
    "AttachTime": "2021-12-02T19:30:13.070000+00:00",
    "Device": "/dev/sdf",
    "InstanceId": "i-yyyyyyyyyyyyyyyyy ",
    "State": "attaching",
    "VolumeId": "vol-xxxxxxxxxxxxxxxxx "
}

这是lsblk的输出

NAME                   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1                259:0    0   5G  0 disk
└─aaaaa-aaa            253:2    0   5G  0 lvm  /logs
nvme0n1                259:1    0  10G  0 disk
├─nvme0n1p1            259:2    0   1M  0 part
└─nvme0n1p2            259:3    0  10G  0 part /
nvme3n1                259:4    0  35G  0 disk
├─bbbbb-bbb            253:3    0   8G  0 lvm  [SWAP]
├─bbbbb-ccc            253:4    0   4G  0 lvm  /var/tmp
├─bbbbb-ddd            253:5    0   4G  0 lvm  /var
├─bbbbb-eee            253:6    0   4G  0 lvm  /var/log
nvme2n1                259:5    0   5G  0 disk
└─ccccc-ffff           253:0    0   5G  0 lvm  /products
nvme4n1                259:6    0   5G  0 disk
└─ddddd-gggg           253:1    0   5G  0 lvm  /apps
nvme5n1                259:7    0  20G  0 disk

即使我将设备名称指定为/dev/sdf,它仍显示为nvme5n1。这让我很难识别新附加的 EBS 卷并挂载它。

我尝试了aws ec2 attach-volume --volume-id vol-xxxxxxxxxxxxxxxxx --instance-id i-yyyyyyyyyyyyyyyyy --device /dev/nvme5n1,但这给了我一个错误,提示/dev/nvme5n1 不是有效的 EBS 设备名称。

有没有一种方法可以识别我刚刚附加的 EBS 卷的正确名称,以便我可以将它挂载到我想要的目录?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 redhat rhel amazon-ebs


    【解决方案1】:

    EBS 卷在基于Nitro System 构建的实例上公开为NVMe 块设备。

    在较旧的实例类型上,您可能会看到如下内容:

    $ lsblk 
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0  160G  0 disk 
    └─xvda1 202:1    0  160G  0 part /
    

    在基于 Nitro 的实例上,您会看到与上面提供的内容类似的内容。

    对于版本高于 2017.09.01 的 Amazon Linux AMI,我们提供了一个 udev 规则来读取此数据并创建指向块设备映射的符号链接。

    $ lsblk 
    NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    nvme0n1       259:0    0  120G  0 disk 
    ├─nvme0n1p1   259:1    0  120G  0 part /
    └─nvme0n1p128 259:2    0    1M  0 part 
    $ ls -l /dev/xvda
    lrwxrwxrwx 1 root root 7 Dec  3 08:59 /dev/xvda -> nvme0n1
    

    如果您使用的是 Amazon Linux 或 FreeBSD AMI,请使用 sudo ebsnvme-id /dev/nvme0n1 -u 命令获得一致的 NVMe 设备名称。对于其他发行版,请使用sudo ebsnvme-id /dev/nvme0n1 -u 命令确定 NVMe 设备名称。

    $ sudo ebsnvme-id /dev/nvme0n1
    xvda
    

    您可以枚举所有 NVMe 设备并检查具有关联设备名称的设备。也许有类似的东西:

    $ DEV=xvda
    $ lsblk | grep disk | awk '{print $1}' | while read disk; do echo -n "$disk " && sudo ebsnvme-id -b /dev/$disk; done | grep $DEV | awk '{print $1}'
    nvme0n1
    

    有关设备命名的更多信息,请参阅Amazon EBS and NVMe on Linux instances 文档。

    【讨论】:

    • 不在 RHEL 上。 RHEL 上没有创建符号链接。
    • 相应更新
    猜你喜欢
    • 2014-10-05
    • 2012-12-06
    • 2021-08-21
    • 1970-01-01
    • 2019-01-23
    • 2021-06-05
    • 2011-08-10
    • 1970-01-01
    • 2017-02-26
    相关资源
    最近更新 更多