2.2. udev 设备命名规则


用户空间设备管理器(udev)子系统允许您为设备分配持久名称定义规则。这些规则存储在带有 .rules 扩展名的文件中。有两个用于存储 udev 规则的主要位置:

  • /usr/lib/udev/rules.d/ 目录包含与安装的软件包附带的默认规则。
  • /etc/udev/rules.d 目录用于自定义 udev 规则。
注意

如果修改了 /usr/lib/udev/rules.d/ 的规则,它将在更新过程中被软件包的规则文件覆盖。因此,任何手动或自定义规则都应添加到 /etc/udev/rules.d 中,在其中保留,直到明确删除为止。在使用前,两个目录中的 udev 规则会被合并。如果 /etc/udev/rules.d 中的规则与 /usr/lib/udev/rules.d/ 中的规则的名称相同,则前者中的规则具有优先权。

这些规则的目的是确保存储设备的识别一致且可预测,即使系统重启和配置发生了改变也是如此。

udev 规则根据与添加、更改或删除设备通知的传入事件定义要执行的操作。这也有助于收集持久性存储属性的值,并直接 udev 根据收集的信息创建 /dev 内容。udev 规则使用键值对以人类可读的格式编写。

对于存储设备,udev 规则控制在 /dev/disk/ 目录中创建符号链接。这些符号链接为存储设备提供用户友好的别名,从而使引用和管理这些设备更为方便。

您可以创建自定义 udev 规则,以指定如何根据序列号、全球名称(WWN)标识符或其他特定于设备的特征来命名设备。通过定义特定的命名规则,您可以精确控制设备如何在系统中被识别。要在 /dev 中为设备创建特定的自定义符号链接,请查看系统中的 udev (7) 手册页。

虽然 udev 规则非常灵活,但了解 udev 限制很重要:

  • 可访问性计时:在 udev 查询时可能无法访问一些存储设备。
  • 基于事件的处理:内核可以随时发送 udev 事件,如果设备无法访问,可能会触发规则处理和链接删除。
  • 处理延迟:事件生成和处理之间可能会有延迟,特别是有多个设备时,从而导致内核检测和链路可用性之间的滞后。
  • 设备可访问性:udev 规则调用的外部程序(如 blkid )可能会短暂打开该设备,使其他任务暂时无法访问它。
  • 链接更新:由 /dev/disk/ 中的 udev 管理的设备名称可能会在主版本间有所变化,需要链接更新。

下表列出了 /dev/disk 中可用的符号链接。

Expand
设备类型Nonpersistent Name (内核名称)持久性 Symlink 名称

真实设备

NVMe (Non-Volatile Memory Express)

/dev/nvme*

/dev/disk/by-id/nvme-<wwid>
/dev/disk/by-id/nvme-<model>_<serial>_<nsid>

SCSI (Small 计算机系统接口)

/dev/sd*, /dev/sr*

/dev/disk/by-id/scsi-<model>_<serial>
/dev/disk/by-id/wwn-<wwn>
/dev/disk/by-id/usb-<vendor>_<model>_<serial>-<instance>
/dev/disk/by-id/ieee1394-<ieee1394_id>
/dev/disk/by-path/ip-<ip_address>:<ip_port>-iscsi-<iqn_name>-lun-<lun_number>
/dev/disk/by-id/scsi-0<vendor>_<model>_<id>
/dev/disk/by-id/scsi-1<t10_vendor_id>
/dev/disk/by-id/scsi-2<eui64_id>
/dev/disk/by-id/scsi-3<naa_regext_id>
/dev/disk/by-id/scsi-3<naa_reg_id>
/dev/disk/by-id/scsi-3<naa_ext_id>
/dev/disk/by-id/scsi-3<naa_local_id>
/dev/disk/by-id/scsi-8<name>
/dev/disk/by-id/scsi-S<vendor>_<model>_<serial>

ata (高级技术附加)/atapi (ATA 数据包接口)

/dev/sd*, /dev/sr*

/dev/disk/by-id/ata-<model>_<serial>
/dev/disk/by-id/wwn-<wwn>

cciss (SCSI-3 支持的Compaq 命令接口)

/dev/cciss*

/dev/disk/by-id/cciss-<model>_<serial>
/dev/cciss/<ccissid>

VirtIO (虚拟输入输出)

/dev/vd*

/dev/disk/by-id/virtio-<serial>

PMEM (持久内存)

/dev/pmem*

/dev/disk/by-id/pmem-<uuid>

MMC (多媒体卡)

/dev/mmcblk*

/dev/disk/by-id/mmc-<name>_<serial>

memstick (Memory Stick)

/dev/msblk*

/dev/disk/by-id/memstick-<name>_<serial>

虚拟设备

loop

/dev/loop*

/dev/disk/by-loop-inode/<id_loop_backing_device>-<id_loop_backing_inode>
/dev/disk/by-loop-ref/<id_loop_backing_filename>

DM (device-mapper)

/dev/dm-*

/dev/mapper/<name>
/dev/disk/by-id/dm-name-<name>
/dev/disk/by-id/dm-uuid-<uuid>
/dev/disk/by-id/wwn-<wwn>

md (多个设备)

/dev/md*

/dev/md/<devname>
/dev/disk/by-id/md-name-<name>
/dev/disk/by-id/md-uuid-<uuid>

分区(位于实际或者虚拟设备之上)

(任何)

(任何)

/dev/disk/by-partuuid/<uuid>
/dev/disk/by-partlabel/<label>
/dev/…​/<persistent_symlink_name>-part<number>

LVM PV (逻辑卷管理器物理卷;在实际或者虚拟设备之上)

(任何)

(任何)

/dev/disk/by-id/lvm-pv-uuid-<pvuuid>

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat