#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. Обновлено соответствующим образом