Linux 设备名称反映提供接口的内核子系统和驱动程序,并不总是对应硬件上标示的物理连接器。应了解常见模式,但在更改存储前必须查明当前系统上的实际映射。
设备 · 第 3 课
设备名称
学习 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:文件系统 UUIDby-label:文件系统标签by-partuuid:分区表 UUIDby-path:依赖拓扑的路径
应选择与所需稳定对象相匹配的标识符。文件系统 UUID 标识的是文件系统,而不一定是其下的物理磁盘。克隆文件系统可能复制 UUID,因此依赖它之前应验证唯一性。
在设备特定的配置中,为什么 /dev/disk/by-id/ 链接通常比 /dev/sdX 更合适?
伪设备名称
/dev/null、/dev/zero 和 /dev/urandom 等名称表示内核伪设备,而不是物理存储。/dev/null 丢弃写入,并在读取时返回文件结束;/dev/zero 提供零字节;/dev/urandom 则提供内核随机数生成器产生的字节。
从 /dev/zero 读取会产生什么?
可通过在 Linux 中探索硬件设备,在尝试分区操作前比较设备名称、持久链接和 lsblk 关系。
课程已完成
你已完成 设备名称
现在,你可以解读常见 Linux 存储名称,而不会把它们当作永久身份。
将
sdXNUMBER识别为sd磁盘分区。当完整设备名称已以数字结尾时,使用
pNUMBER。识别设备映射器、RAID 和环回设备等逻辑设备。
根据所需身份选择持久链接。
区分存储名称与内核伪设备。