3 使用 UUID 装入设备 #
本章介绍使用 UUIDs(全局唯一标识符)而不是设备名称(例如 /dev/sda1
)来识别文件系统设备。从 SUSE Linux Enterprise Server 12 开始,默认在引导加载程序文件和 /etc/fstab
文件中使用 UUID。
3.1 具有 udev 的永久性设备名称 #
从 Linux 内核 2.6 开始,udev
使用永久性设备命名方式,为动态的 /dev
目录提供了一种用户空间解决方案。作为热插拔系统的一部分,在系统中添加或删除设备时会执行 udev
。
使用一个规则列表来针对特定设备属性进行匹配。udev
规则基础设施(在 /etc/udev/rules.d
目录中定义)为所有磁盘设备提供了稳定的名称,无论它们的识别顺序或该设备使用的连接如何。udev
工具检查内核创建的用来根据特定总线、驱动器类型或文件系统应用命名规则的每个相应块设备。有关如何为 udev
定义您自己的规则的信息,请参见 Writing udev Rules(编写 udev 规则)。
和动态的内核提供的设备节点名一起,udev
还在 /dev/disk
目录中维护有指向该设备的永久符号链接的类,该目录进一步按 by-id
、by-label
、by-path
和 by-uuid
子目录分类。
除了 udev
之外的其他程序(如 LVM 或 md
)也可生成 UUID,但它们不在 /dev/disk
中列出。
3.2 了解 UUID #
UUID(全球唯一标识符)是表示文件系统的 128 位数字,在本地系统和其他系统中都是唯一的。它根据系统硬件信息和时戳(做为其种子的一部分)随机生成。UUID 通常用于唯一性标记设备。
使用非永久性的“传统”设备名称(例如 /dev/sda1
)可能在添加储存时导致系统出现无法引导的情况。例如,如果将根 (/
) 指派给 /dev/sda1
,则在挂接 SAN 或将其他硬盘加入系统后,系统可能会将它重新指派给 /dev/sdg1
。在此情况下,需要调整启动加载程序配置和 /etc/fstab
文件,否则系统将无法引导。
避免此问题的一个方法是在引导加载程序和引导设备的 /etc/fstab
文件中使用 UUID。这是自第 12 版以来 SUSE Linux Enterprise 中的默认设置。UUID 是文件系统的一个属性,如果重新格式化驱动器,UUID 会更改。如果不想使用设备名称的 UUID,另一种替代方法是使用 ID 或标签识别设备。
您还可以将 UUID 用做组装与激活软件 RAID 设备的准则。当创建 RAID 时,md
驱动程序会为该设备生成一个 UUID,并将该值储存在 md
超块中。
您可以在 /dev/disk/by-uuid
目录中找到任何块设备的 UUID。UUID 项目示例如下所示:
tux >
ls -og /dev/disk/by-uuid/
lrwxrwxrwx 1 10 Dec 5 07:48 e014e482-1c2d-4d09-84ec-61b3aefde77a -> ../../sda1
3.3 其他信息 #
有关使用 udev
来管理设备的详细信息,请参见第 21 章 “使用 udev
进行动态内核设备管理”。
有关 udev
命令的详细信息,请参见 man 7 udev
。