在附加到 ec2 实例时正确指定 EBS 卷的设备名称,并稍后使用设备名称进行识别

Asd*_*dfg 5 redhat rhel amazon-ec2 amazon-ebs amazon-web-services

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

\n
aws ec2 attach-volume --volume-id vol-xxxxxxxxxxxxxxxxx --instance-id i-yyyyyyyyyyyyyyyyy --device /dev/sdf\n{\n    "AttachTime": "2021-12-02T19:30:13.070000+00:00",\n    "Device": "/dev/sdf",\n    "InstanceId": "i-yyyyyyyyyyyyyyyyy ",\n    "State": "attaching",\n    "VolumeId": "vol-xxxxxxxxxxxxxxxxx "\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是的输出lsblk

\n
NAME                   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\nnvme1n1                259:0    0   5G  0 disk\n\xe2\x94\x94\xe2\x94\x80aaaaa-aaa            253:2    0   5G  0 lvm  /logs\nnvme0n1                259:1    0  10G  0 disk\n\xe2\x94\x9c\xe2\x94\x80nvme0n1p1            259:2    0   1M  0 part\n\xe2\x94\x94\xe2\x94\x80nvme0n1p2            259:3    0  10G  0 part /\nnvme3n1                259:4    0  35G  0 disk\n\xe2\x94\x9c\xe2\x94\x80bbbbb-bbb            253:3    0   8G  0 lvm  [SWAP]\n\xe2\x94\x9c\xe2\x94\x80bbbbb-ccc            253:4    0   4G  0 lvm  /var/tmp\n\xe2\x94\x9c\xe2\x94\x80bbbbb-ddd            253:5    0   4G  0 lvm  /var\n\xe2\x94\x9c\xe2\x94\x80bbbbb-eee            253:6    0   4G  0 lvm  /var/log\nnvme2n1                259:5    0   5G  0 disk\n\xe2\x94\x94\xe2\x94\x80ccccc-ffff           253:0    0   5G  0 lvm  /products\nnvme4n1                259:6    0   5G  0 disk\n\xe2\x94\x94\xe2\x94\x80ddddd-gggg           253:1    0   5G  0 lvm  /apps\nnvme5n1                259:7    0  20G  0 disk\n
Run Code Online (Sandbox Code Playgroud)\n

尽管我将设备名称指定为/dev/sdf,但它显示为nvme5n1。这使得我很难识别新附加的 EBS 卷并安装它。

\n

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

\n

有没有办法可以识别我刚刚附加的 EBS 卷的正确名称,以便我可以将其安装到我想要的目录?

\n

Avi*_*Avi 5

EBS 卷在Nitro 系统上构建的实例上作为NVMe块设备公开

\n

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

\n
$ lsblk \nNAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT\nxvda    202:0    0  160G  0 disk \n\xe2\x94\x94\xe2\x94\x80xvda1 202:1    0  160G  0 part /\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
\n

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

\n
\n
$ lsblk \nNAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT\nnvme0n1       259:0    0  120G  0 disk \n\xe2\x94\x9c\xe2\x94\x80nvme0n1p1   259:1    0  120G  0 part /\n\xe2\x94\x94\xe2\x94\x80nvme0n1p128 259:2    0    1M  0 part \n$ ls -l /dev/xvda\nlrwxrwxrwx 1 root root 7 Dec  3 08:59 /dev/xvda -> nvme0n1\n
Run Code Online (Sandbox Code Playgroud)\n
\n

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

\n
\n
$ sudo ebsnvme-id /dev/nvme0n1\nxvda\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
$ DEV=xvda\n$ 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}\'\nnvme0n1\n
Run Code Online (Sandbox Code Playgroud)\n

有关设备命名的更多信息,请参阅Linux 实例上的 Amazon EBS 和 NVMe文档。

\n