第 2 章 持久性命名属性


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

传统设备名称

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

持久性命名属性

持久命名属性(PNA)基于存储设备的唯一特性,使其在提供给系统时更稳定且可预测,即使在系统重启后也是如此。PNA 的一个主要好处是其对硬件配置变化的弹性,使其非常适合维护一致的命名约定。使用 PNA 时,您可以在脚本、配置文件和管理工具中引用存储设备,而无需担心意外的名称变化。另外,PNA 通常包括宝贵的元数据,如设备类型或制造商信息,如供应商、型号名称和序列号组合,从而增强了其描述性性以便实现有效设备识别和管理。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 是在系统引导时从 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 使用 MD 组件 UUID 标记其底层设备。

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

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

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

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

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

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

  • 序列字符串

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

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

    实际设备首选 wwids 和序列字符串。对于虚拟设备,首选 UUID 或名称。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat