如何识别设备名/块设备名?EC2实例挂载卷设备名映射疑问
EC2设备名映射与识别方法
没问题,我来帮你理清这个EC2设备命名的困惑~
首先你猜的完全没错:你在控制台指定的/dev/sdb,在实例内对应的就是lsblk里看到的xvdb。这是AWS EC2虚拟化层的常见命名映射,原因如下:
- 当你通过AWS控制台或API挂载卷时,指定的
/dev/sd*是传统SCSI设备命名,但在使用XEN虚拟化的EC2实例(比如大部分Amazon Linux、CentOS系统)中,内核会把这类设备识别为XEN虚拟块设备,自动映射成/dev/xvd*格式的命名——简单说就是把s换成xv,后面的字母保持不变(sdb → xvdb,sdc → xvdc以此类推)。
接下来给你几个实用的方法,帮你准确识别设备名和对应关系:
用
lsblk快速区分:这个命令会显示设备的大小、挂载点等信息。你可以通过卷的大小来匹配——根卷的大小和你创建实例时选择的根卷规格一致,新增的/dev/sdb(对应xvdb)的大小也和你挂载的卷大小对应,一眼就能区分。比如:lsblk # 输出示例: # xvda 202:0 0 8G 0 disk # └─xvda1 202:1 0 8G 0 part / # xvdb 202:16 0 20G 0 disk这里xvda1是根卷的分区(挂载在/),xvdb就是你新增的20G卷。
用
blkid查看唯一标识:每个格式化过的设备都有唯一的UUID,执行blkid可以看到设备的UUID、文件系统类型,通过这个唯一值能精准确认设备:blkid查看EC2元数据(最准确):EC2实例内置的元数据服务能直接告诉你控制台指定的设备名和实例内实际设备名的对应关系。执行以下命令:
# 查看所有块设备映射 curl http://169.254.169.254/latest/block-device-mapping/ # 查看指定sdb对应的实际设备名 curl http://169.254.169.254/latest/block-device-mapping/sdb这个命令会直接返回
xvdb,是最权威的确认方式。查看
/proc/partitions文件:这个文件记录了内核识别到的所有块设备信息,包括设备号、大小和名称,你可以通过大小匹配来确认:cat /proc/partitions
最后补充个小知识点:如果是较新的EC2实例(比如使用NVMe卷的机型),设备名可能会变成/dev/nvme*格式,但原理是一样的,依然可以通过元数据服务来确认对应关系。
内容的提问来源于stack exchange,提问作者SuicideSheep
相关产品推荐
相关产品推荐

