设备名称
100%

设备 · 第 3 课

设备名称

学习 Linux 如何命名常见存储设备、分区、逻辑设备和持久设备链接。

Linux 设备名称反映提供接口的内核子系统和驱动程序,并不总是对应硬件上标示的物理连接器。应了解常见模式,但在更改存储前必须查明当前系统上的实际映射。

SCSI 层磁盘名称

通过 SCSI 磁盘层呈现的磁盘通常使用 sd 名称,其中包括许多 SCSI、SATA、USB 存储和虚拟磁盘:

  • /dev/sda:一整块磁盘
  • /dev/sdb:另一整块磁盘
  • /dev/sda3/dev/sda 上的第 3 个分区
  • /dev/sdb1/dev/sdb 上的第 1 个分区

字母反映枚举顺序,而不是持久身份。添加控制器、改变固件顺序或连接设备,都可能改变某块磁盘获得的字母。

按照 sd 命名模式,哪个路径表示 /dev/sdb 上的第 1 个分区?

以数字结尾的名称

有些完整设备名称本身已经包含数字,因此其分区名称使用 p 作为分隔符:

  • /dev/nvme0n1:控制器 0 上的 NVMe 命名空间 1
  • /dev/nvme0n1p2:该命名空间上的第 2 个分区
  • /dev/mmcblk0:一个 MMC 块设备
  • /dev/mmcblk0p1:该设备上的第 1 个分区

NVMe 设备通常不会命名为 /dev/sdX,而是使用 NVMe 子系统的命名惯例。

哪个路径表示 /dev/nvme0n1 的第 2 个分区?

逻辑与虚拟块设备

Linux 还会创建不与物理磁盘一一对应的块设备:

  • /dev/dm-N:设备映射器设备,通常还会在 /dev/mapper/ 下提供描述性链接
  • /dev/mdN:Linux 软件 RAID 阵列
  • /dev/loopN:作为环回块设备连接的普通文件

分区、加密层、RAID、逻辑卷和文件系统会形成一个堆栈。应使用 lsblk 等工具查看父子关系,而不是只根据名称推断堆栈。

哪个位置通常为设备映射器设备提供描述性链接?

持久存储链接

用户空间设备管理会在 /dev/disk/ 下创建链接,常见分组包括:

  • by-id:硬件或传输标识符
  • by-uuid:文件系统 UUID
  • by-label:文件系统标签
  • by-partuuid:分区表 UUID
  • by-path:依赖拓扑的路径

应选择与所需稳定对象相匹配的标识符。文件系统 UUID 标识的是文件系统,而不一定是其下的物理磁盘。克隆文件系统可能复制 UUID,因此依赖它之前应验证唯一性。

在设备特定的配置中,为什么 /dev/disk/by-id/ 链接通常比 /dev/sdX 更合适?

伪设备名称

/dev/null/dev/zero/dev/urandom 等名称表示内核伪设备,而不是物理存储。/dev/null 丢弃写入,并在读取时返回文件结束;/dev/zero 提供零字节;/dev/urandom 则提供内核随机数生成器产生的字节。

/dev/zero 读取会产生什么?

课程已完成

你已完成 设备名称

现在,你可以解读常见 Linux 存储名称,而不会把它们当作永久身份。

  • sdXNUMBER 识别为 sd 磁盘分区。

  • 当完整设备名称已以数字结尾时,使用 pNUMBER

  • 识别设备映射器、RAID 和环回设备等逻辑设备。

  • 根据所需身份选择持久链接。

  • 区分存储名称与内核伪设备。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 设备