Linux存储设备命名由内核探测顺序和设备类型决定:sda代表SCSI/SATA等直连式块设备,vda用于KVM/QEMU等VirtIO虚拟磁盘,nvme0n1p1表示NVMe控制器下的命名空间及分区,前缀揭示物理性质、接口与环境。

Linux 存储设备命名不是随意的,而是由内核探测顺序和设备类型共同决定的一套可预测规则。理解 sda、vda 和 nvme 这三类前缀,就能快速判断设备物理性质、接口类型和所处环境。
sda 及其变体:通用块设备的主流命名
sda 是最常见的磁盘设备名,代表系统识别到的第一块 SCSI/SATA/SAS/USB 接口的块设备。这里的 “sd” 并非特指 SCSI,而是 Linux 内核沿用的历史命名惯例,如今已泛指绝大多数直连式存储设备。
- 字母 a、b、c… 按内核初始化时的探测顺序分配:主板 SATA0 口接的盘通常是 sda,SATA1 是 sdb,热插拔 U 盘可能变成 sdc 或更后
- 数字后缀表示分区:sda1 是第一块盘的第一个分区,sda2 是第二个分区;MBR 下 1–4 为主/扩展分区号,5 起为逻辑分区(如 sda5)
- 注意:即使你只创建了 sda1 和 sda3,sda2 也会“空缺”,这是正常现象,不代表错误
vda:虚拟化环境中的标准磁盘标识
vda 出现在 KVM/QEMU、OpenStack、部分云平台等基于 VirtIO 驱动的虚拟机中。“vd” 表示 VirtIO-blk 设备,是虚拟化场景下的事实标准命名方式。
- vda 对应第一块虚拟磁盘,vdb 是第二块,以此类推;分区仍用数字后缀,如 vda1、vdb2
- 与 sda 功能完全一致,只是驱动层不同:vda 使用半虚拟化 I/O 路径,性能通常优于模拟 IDE(hdX)或全虚拟化 SCSI
- 某些旧版 Xen 虚拟机会用 xvda,但现代主流云厂商(如阿里云、腾讯云、AWS EC2)默认使用 vda
nvmexnypz:NVMe SSD 的层级化命名结构
NVMe 设备不走传统 SCSI 协议栈,因此命名更精细:/dev/nvme0n1p1 中每个字段都有明确含义:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- nvme0:第 0 号 NVMe 控制器(通常一块主板只有一个控制器,编号从 0 开始)
- n1:该控制器下的第 1 块命名空间(Namespace),普通单盘就是 n1;支持多命名空间的高端盘可能有 n2、n3
- p1:第一个分区(partition),必须带 “p” 分隔符,这是与 sd/vd 最显著的语法差异
- 例如 /dev/nvme0n1p1 是第一块 NVMe 盘的第一个分区;/dev/nvme1n1p2 则是第二块控制器上第一块盘的第二个分区
其他常见前缀与辅助确认方法
除了 sda/vda/nvme,你还可能遇到:
- md0:mdadm 创建的 RAID 阵列设备
- dm-0 或 /dev/mapper/vg-lv:LVM 或加密卷经 Device Mapper 映射后的设备路径
- loop0:挂载 ISO 或容器镜像时生成的回环设备
实际使用中,别死记硬背,推荐用这两个命令快速确认:
- lsblk -f:列出所有块设备及其文件系统、挂载点、UUID,一目了然
- sudo fdisk -l:显示详细分区表,包括磁盘型号、容量、分区类型(MBR/GPT)、起始扇区等
命名背后是硬件拓扑与驱动模型的映射,看清前缀就等于看懂了设备出身。不复杂,但容易忽略细节。

















