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