第 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 或名称。