第 2 章 持久性命名属性


您识别和管理存储设备的方式确保了系统的稳定性和可预测性。RHEL 10 为此使用两种主要命名方案:传统的设备名称和持久命名属性。

传统设备名称

Linux 内核根据系统出现的顺序或其枚举分配传统设备名称。例如,第一个 SATA 驱动器通常被标记为 /dev/sda,第二个被标记为 /dev/sdb,以此类推。虽然这些名称非常简单,但在添加或删除设备时,它们可能会改变,但会修改硬件配置,或者重启系统。这可能会对脚本和配置文件造成挑战。另外,传统名称缺少有关设备用途或特征的描述性信息。

持久性命名属性

持久性命名属性(PNA)基于存储设备的唯一特性,使其在提供给系统时更加稳定且可预测,即使在系统重启后也是如此。PNA 的一个主要好处是其对硬件配置变化的弹性,使其非常适合维护一致的命名约定。使用 PNA 时,您可以在脚本、配置文件和管理工具中引用存储设备,而无需担心意外的名称变化。另外,PNAs 通常包括宝贵的元数据,如设备类型或制造商信息,如供应商、型号名称和序列号组合,从而增强了其描述性性以便实现有效设备识别和管理。PNA 最终用于在 /dev/disk 目录中创建设备链接来访问各个设备。设备链接名称被构建和管理的方式由 udev 规则驱动。

以下是我们在 /dev/disk/ 中找到的目录列表:

  • 即使系统重启后,包含保持唯一内容的目录:

    • by-id :基于硬件属性,使用 vendor/model/serial_string 组合。
    • by-path* :基于物理硬件放置。对于物理上附加到机器的设备或磁盘,这是它们物理连接到主板上的主机总线的插槽或端口。但是,对于通过网络附加的设备或磁盘,这包含网络地址规格。
    • by-partlabel :基于分配给设备分区的标签。这些标签由用户分配。
    • by-partuuid :基于自动生成的 UUID 的形式的唯一数字。
    • by-uuid :基于自动生成的 UUID 的形式的唯一数字。
  • 包含在当前系统运行时保持唯一内容的目录,但不在系统重启后:

    • by-diskseq: diskseq 为 'disk sequence number',在系统引导时以 1 开始。它将这个数字分配给新附加的磁盘,并在按顺序获得下一个数字后为每个磁盘分配。当系统重启时,计数器会在 1 中重新启动。
  • 包含专门用于循环设备的内容的目录:

    • by-loop-ref
    • by-loop-inode

2.1. 用于识别文件系统和块设备的持久属性

在 RHEL 10 存储中,持久性命名属性(PNA)是为系统重启后存储设备、硬件更改或其他事件提供一致且可靠的命名机制。这些属性用于一致地识别存储设备,即使存储设备被添加、被删除或被重新配置。

PNA 用于识别文件系统和块设备,但它们的用途不同:

用于识别文件系统的持久属性
  • 通用唯一标识符(UUID)

    UUID 主要用于唯一识别存储设备上的文件系统。每个文件系统实例都会自动分配自己的 UUID,即使卸载、重新挂载或者设备被分离并重新附加,这个标识符也会保持不变。

  • 标签

    标签是用户为文件系统分配的名称。虽然它们可以用来识别和引用文件系统,但它们并不像 UUID 那样标准化。由于用户分配文件系统标签,其唯一性取决于其选择。标签通常用作 UUID 的替代方法,用来在配置文件中指定文件系统。

    当您为文件系统分配标签时,它会成为文件系统元数据的一部分。这个标签仍与文件系统关联,即使卸载、重新挂载或者设备被分离并重新附加。

用于识别块设备的持久属性
  • 通用唯一标识符(UUID)

    UUID 可用于识别存储块设备。当存储设备被格式化时,通常会为设备本身分配一个 UUID。此类 UUID 通常会在其他块设备之上生成并分配给虚拟块设备,其中实际设备处于底部级别。例如,基于设备映射器(DM)的设备及其关联的子系统,如逻辑卷管理器(LVM)和 crypt,使用 UUID 进行设备识别,如逻辑卷 UUID (LVUUID)和 crypt UUID。

    此外,基于多设备(MD)的设备分配有 UUID。虚拟设备通常也使用组件 UUID 标记底层设备。例如,LVM 使用物理卷 UUID (PVUUID)标记其底层设备,并使用 MD 组件 UUID 将其底层设备 MD 标记。

    这些 UUID 嵌入到虚拟块设备元数据中,它们用作持久命名属性。它允许您唯一标识块设备,即使您更改了所在的文件系统。也会为设备分区分配 UUID。

    此类 UUID 可以与其他设备 ID 共存。例如:设备堆栈底部的 sda 设备(由其 vendor/model/serial_number 组合或 WWID 来标识)也可以由 LVM 分配 PVUUID。然后,LVM 本身可以在其上面的层中构建卷组(VG)或逻辑卷(LV)。

  • 标签或名称标签或名称也可以分配给特定的块设备。这适用于具有用户分配标签的分区。某些虚拟块设备,如基于设备映射器(DM)的设备和基于多设备(MD)的设备也使用名称来识别设备。
  • 全球标识符(WWID)

    WWID 包括了一组标识符,这些标识符是全局唯一的,它们一般与存储设备或存储组件关联。它们通常用于企业级存储区域网络(SAN),如光纤通道(FC),以识别存储节点 - World Wide Node Name (WWNN)或实际端口/连接到节点上的存储设备 - World Wide Port Name (WWPN)。WWID 确保服务器和 SAN 存储设备之间的一致通信,并帮助管理存储设备的冗余路径。

    其他类型的设备也可能使用 WWID 形式,如 NVME 设备。这些设备不一定需要通过网络或 SAN 访问,它们不一定是企业级设备。

    WWID 格式不会遵循单个标准。例如,SCSI 使用 NAA、T10 和 EUI 等格式。NVME 使用 EUI-64、NGUUID 和 UUID 等格式。

  • 串行字符串

    serial 字符串是制造商分配给每个存储块设备的唯一标识符。它可用于区分存储设备,并可与其他属性(如 UUID 或 WWID)结合使用,以进行设备管理。

    udev 规则 中,因此 /dev/disk/by-id 内容中,"短串字符串"通常代表设备本身报告的实际串行字符串。而"serial 字符串"由多个组件组成,通常为 < bus_type>-<vendor_name>_<model_name>_<short_serial_string>

    wwids 和 serial 字符串是真实设备的首选。对于虚拟设备,首选 UUID 或名称。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat