EC2实例挂载EBS卷设备名不匹配 如何识别对应实际存储设备
出现这个问题的核心原因是*Nitro架构的EC2实例会将EBS卷统一映射为NVMe块设备,你在aws ec2 attach-volume中指定的/dev/sd*类设备名仅作为AWS侧的设备挂载标识,不会被RHEL系统直接沿用,因此会出现指定名称和实际设备名不匹配的情况,也无法直接指定NVMe路径作为attach的参数。
准确定位EBS卷对应实际设备名的方法
- 方法1:通过
/dev/disk/by-id软链接映射(无需额外安装工具)
该目录下系统自动生成的软链接直接关联了EBS卷ID和实际设备路径,执行以下命令即可直接对应:
输出中每一行的ID字段会包含你的EBS卷ID(仅需将ID中的ls -l /dev/disk/by-id/ | grep "nvme-Amazon_Elastic_Block_Store_"vol替换为vol-即可和你的卷ID匹配),行尾就是对应的实际NVMe设备名。 - 方法2:通过NVMe工具查询(匹配更直观)
先安装nvme-cli工具:
执行查询命令:sudo dnf install nvme-cli -y
输出中nvme listSerial列的内容就是你的EBS卷ID去掉vol-前缀后的部分,直接对应你挂载的卷即可找到对应的设备路径。 - 方法3:通过容量快速匹配(仅适用于单块新挂载卷的场景)
你本次挂载的EBS卷容量为20G,lsblk输出中无挂载点、容量为20G的nvme5n1就是你刚挂载的卷,若有多块同容量未挂载卷则不建议用该方法。
后续挂载操作
找到对应的设备名(例如本次的nvme5n1)后即可执行常规的格式化、挂载操作,示例如下:
- 格式化卷(按需选择文件系统,以ext4为例,注意不要格式化已有数据的卷):
sudo mkfs.ext4 /dev/nvme5n1 - 挂载到指定目录(以
/mnt/ebs为例):sudo mkdir -p /mnt/ebs sudo mount /dev/nvme5n1 /mnt/ebs - 若需要开机自动挂载,将对应配置写入
/etc/fstab即可。
内容的提问来源于stack exchange,提问作者Asdfg
相关产品推荐
相关产品推荐

