2.2. udev 设备命名规则

用户空间设备管理器(udev)子系统允许您为设备分配持久名称定义规则。这些规则存储在 /etc/udev/rules.d/ 目录中带有 .rules 扩展名的文件中。这些规则的目的是确保存储设备的识别一致且可预测,即使系统重启和配置发生了改变也是如此。

udev 规则使用键-值对以人类可读的格式编写。当设备被检测或初始化时,udev 会根据它们的定义顺序来顺序评估这些规则。第一个匹配规则被应用到设备,确定其名称以及其如何在系统中被识别。

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

您可以创建自定义 udev 规则,以指定如何根据序列号、WWN (World Wide Name)标识符或其他特定于设备的特征等各种属性来命名设备。通过定义特定的命名规则,您可以精确控制设备如何在系统中被识别。

udev 规则有两个主要位置:

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

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

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

其它资源

  • udev 手册页