правильное указание имени устройства для тома EBS при подключении к экземпляру ec2 и последующая идентификация с использованием имени устройства

#amazon-web-services #amazon-ec2 #redhat #rhel #amazon-ebs

#amazon-web-services #amazon-ec2 #redhat #rhel #amazon-ebs

Вопрос:

Я пытаюсь подключить том EBS к экземпляру EC2 (RHEL). Вот как выглядит моя команда 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, который я только что подключил, чтобы я мог подключить его к нужному каталогу?

Ответ №1:

Тома EBS отображаются как блочные устройства NVMe в экземплярах, построенных на системе Nitro.

В более старом типе экземпляра вы можете увидеть что-то вроде:

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

В экземпляре на основе Nitro вы увидите нечто похожее на то, что вы указали выше.

В Amazon Linux AMI более поздней версии, чем версия 2017.09.01, мы предоставляем правило 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
 

Если вы используете AMI Amazon Linux или FreeBSD, используйте 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 " amp;amp; sudo ebsnvme-id -b /dev/$disk; done | grep $DEV | awk '{print $1}'
nvme0n1
 

Дополнительные сведения об именовании устройств см. в документации Amazon EBS и NVMe по экземплярам Linux.

Комментарии:

1. только не на РХЕЛЕ. в RHEL нет символьной ссылки, созданной.

2. Обновлено соответствующим образом